@hominis/fireforge 0.55.0 → 0.60.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 +233 -6
- package/README.md +51 -17
- package/dist/bin/fireforge.js +34 -129
- package/dist/build-info.json +4 -4
- package/dist/src/check/check.js +394 -0
- package/dist/src/check/gate.js +448 -0
- package/dist/src/check/index.js +10 -0
- package/dist/src/check/record.js +155 -0
- package/dist/src/cli/command.js +286 -0
- package/dist/src/cli/output.js +96 -0
- package/dist/src/cli/program.js +231 -0
- package/dist/src/cli/stdio.js +59 -0
- package/dist/src/cli/version.js +99 -0
- package/dist/src/commands/bootstrap.js +17 -102
- package/dist/src/commands/build.js +34 -456
- package/dist/src/commands/check.js +44 -157
- package/dist/src/commands/config.js +50 -226
- package/dist/src/commands/discard.js +38 -215
- package/dist/src/commands/doctor.js +29 -456
- package/dist/src/commands/download.js +35 -499
- package/dist/src/commands/export.js +42 -431
- package/dist/src/commands/furnace.js +220 -0
- package/dist/src/commands/gate.js +127 -0
- package/dist/src/commands/import.js +44 -445
- package/dist/src/commands/index.js +86 -0
- package/dist/src/commands/lint.js +44 -546
- package/dist/src/commands/merge-driver.js +56 -0
- package/dist/src/commands/migrate.js +75 -0
- package/dist/src/commands/override.js +43 -0
- package/dist/src/commands/package.js +48 -77
- package/dist/src/commands/patch.js +221 -0
- package/dist/src/commands/re-export.js +55 -359
- package/dist/src/commands/rebase.js +69 -0
- package/dist/src/commands/register.js +62 -103
- package/dist/src/commands/reset.js +28 -91
- package/dist/src/commands/resolve.js +20 -167
- package/dist/src/commands/restore.js +19 -0
- package/dist/src/commands/run.js +60 -382
- package/dist/src/commands/setup.js +78 -90
- package/dist/src/commands/status.js +44 -413
- package/dist/src/commands/test.js +97 -423
- package/dist/src/commands/token.js +185 -228
- package/dist/src/commands/typecheck.js +59 -241
- package/dist/src/commands/verify.js +28 -334
- package/dist/src/commands/version.js +14 -0
- package/dist/src/commands/watch.js +20 -218
- package/dist/src/commands/wire.js +60 -349
- package/dist/src/commands/workspace.js +117 -0
- package/dist/src/config/edit.js +237 -0
- package/dist/src/config/index.js +15 -0
- package/dist/src/config/load.js +59 -0
- package/dist/src/config/previous.js +404 -0
- package/dist/src/config/schema/build.js +63 -0
- package/dist/src/config/schema/check.js +113 -0
- package/dist/src/config/schema/common.js +71 -0
- package/dist/src/config/schema/export-queue.js +36 -0
- package/dist/src/config/schema/firefox.js +69 -0
- package/dist/src/config/schema/gate.js +199 -0
- package/dist/src/config/schema/identity.js +55 -0
- package/dist/src/config/schema/index.js +45 -0
- package/dist/src/config/schema/lint.js +297 -0
- package/dist/src/config/schema/policy.js +111 -0
- package/dist/src/config/schema/source.js +90 -0
- package/dist/src/config/schema/test.js +17 -0
- package/dist/src/config/schema/toolchains.js +17 -0
- package/dist/src/config/schema/typecheck.js +29 -0
- package/dist/src/config/schema/wire.js +15 -0
- package/dist/src/diff/apply.js +129 -0
- package/dist/src/diff/index.js +16 -0
- package/dist/src/diff/model.js +267 -0
- package/dist/src/diff/query.js +65 -0
- package/dist/src/doctor/index.js +240 -0
- package/dist/src/engine/archive.js +396 -0
- package/dist/src/engine/audit.js +66 -0
- package/dist/src/engine/build.js +150 -0
- package/dist/src/engine/hostLocks.js +66 -0
- package/dist/src/engine/index.js +26 -0
- package/dist/src/engine/installManifests.js +147 -0
- package/dist/src/engine/mach.js +97 -0
- package/dist/src/engine/machHints.js +80 -0
- package/dist/src/engine/mozconfig.js +110 -0
- package/dist/src/engine/objdir.js +124 -0
- package/dist/src/engine/package.js +169 -0
- package/dist/src/engine/pin.js +12 -0
- package/dist/src/engine/pool.js +423 -0
- package/dist/src/engine/pristine.js +281 -0
- package/dist/src/engine/python.js +68 -0
- package/dist/src/engine/resourceGuard.js +582 -0
- package/dist/src/engine/run.js +259 -0
- package/dist/src/engine/smoke.js +204 -0
- package/dist/src/engine/staleness.js +229 -0
- package/dist/src/engine/watch.js +82 -0
- package/dist/src/engine/workspace.js +85 -0
- package/dist/src/furnace/config.js +360 -0
- package/dist/src/furnace/deploy.js +414 -0
- package/dist/src/furnace/diff.js +59 -0
- package/dist/src/furnace/edit.js +64 -0
- package/dist/src/furnace/fragments.js +53 -0
- package/dist/src/furnace/index.js +19 -0
- package/dist/src/furnace/operations.js +283 -0
- package/dist/src/furnace/registration.js +220 -0
- package/dist/src/furnace/scaffold.js +311 -0
- package/dist/src/furnace/typing.js +252 -0
- package/dist/src/furnace/validate.js +662 -0
- package/dist/src/git/apply.js +129 -0
- package/dist/src/git/diff.js +143 -0
- package/dist/src/git/index.js +33 -0
- package/dist/src/git/objects.js +201 -0
- package/dist/src/git/refs.js +85 -0
- package/dist/src/git/repo.js +222 -0
- package/dist/src/git/run.js +242 -0
- package/dist/src/git/status.js +156 -0
- package/dist/src/kernel/errors.js +123 -0
- package/dist/src/kernel/fs.js +515 -0
- package/dist/src/kernel/glob.js +63 -0
- package/dist/src/kernel/hash.js +28 -0
- package/dist/src/kernel/journal.js +524 -0
- package/dist/src/kernel/json-edit.js +198 -0
- package/dist/src/kernel/json.js +101 -0
- package/dist/src/kernel/lock.js +589 -0
- package/dist/src/kernel/log.js +154 -0
- package/dist/src/kernel/process/identity.js +313 -0
- package/dist/src/kernel/process/index.js +8 -0
- package/dist/src/kernel/process/listing.js +128 -0
- package/dist/src/kernel/process/spawn.js +430 -0
- package/dist/src/kernel/process/tree.js +301 -0
- package/dist/src/kernel/schema.js +308 -0
- package/dist/src/kernel/signals.js +171 -0
- package/dist/src/kernel/text.js +151 -0
- package/dist/src/kernel/time.js +83 -0
- package/dist/src/kernel/tty.js +84 -0
- package/dist/src/lint/cache.js +77 -0
- package/dist/src/lint/checkjs.js +400 -0
- package/dist/src/lint/index.js +3 -0
- package/dist/src/lint/input.js +100 -0
- package/dist/src/lint/report.js +107 -0
- package/dist/src/lint/rule.js +41 -0
- package/dist/src/lint/rules/css.js +308 -0
- package/dist/src/lint/rules/javascript.js +299 -0
- package/dist/src/lint/rules/jsdoc.js +249 -0
- package/dist/src/lint/rules/license.js +93 -0
- package/dist/src/lint/rules/policy.js +201 -0
- package/dist/src/lint/rules/registration.js +264 -0
- package/dist/src/lint/rules/size.js +299 -0
- package/dist/src/lint/run.js +126 -0
- package/dist/src/lint/shim.js +323 -0
- package/dist/src/lint/typescript.js +186 -0
- package/dist/src/lint/waivers.js +93 -0
- package/dist/src/mode/changes.js +264 -0
- package/dist/src/mode/diagnose.js +173 -0
- package/dist/src/mode/export.js +147 -0
- package/dist/src/mode/index.js +23 -0
- package/dist/src/mode/migrate.js +181 -0
- package/dist/src/mode/previousWaivers.js +206 -0
- package/dist/src/mode/pristine.js +61 -0
- package/dist/src/mode/rebase.js +197 -0
- package/dist/src/mode/report.js +157 -0
- package/dist/src/mode/setup.js +103 -0
- package/dist/src/mode/tracked.js +116 -0
- package/dist/src/mode/upgrade.js +281 -0
- package/dist/src/mode/watch.js +83 -0
- package/dist/src/mode/workspace.js +189 -0
- package/dist/src/mozbuild/index.js +6 -0
- package/dist/src/mozbuild/jar.js +366 -0
- package/dist/src/mozbuild/mozbuild.js +321 -0
- package/dist/src/mozbuild/paths.js +96 -0
- package/dist/src/mozbuild/references.js +39 -0
- package/dist/src/mozbuild/testManifest.js +343 -0
- package/dist/src/mozbuild/text.js +142 -0
- package/dist/src/project/changes.js +145 -0
- package/dist/src/project/checkout.js +66 -0
- package/dist/src/project/index.js +11 -0
- package/dist/src/project/license.js +119 -0
- package/dist/src/project/project.js +111 -0
- package/dist/src/project/state.js +85 -0
- package/dist/src/project/tracked.js +1 -0
- package/dist/src/queue/apply.js +270 -0
- package/dist/src/queue/attribute.js +159 -0
- package/dist/src/queue/baseline.js +409 -0
- package/dist/src/queue/capture.js +298 -0
- package/dist/src/queue/changes.js +234 -0
- package/dist/src/queue/index.js +50 -0
- package/dist/src/queue/manifest.js +341 -0
- package/dist/src/queue/operations.js +454 -0
- package/dist/src/queue/placement.js +220 -0
- package/dist/src/queue/queue.js +359 -0
- package/dist/src/queue/restore.js +103 -0
- package/dist/src/queue/session.js +685 -0
- package/dist/src/queue/status.js +137 -0
- package/dist/src/register/files.js +39 -0
- package/dist/src/register/index.js +8 -0
- package/dist/src/register/js.js +217 -0
- package/dist/src/register/register.js +359 -0
- package/dist/src/register/wire.js +146 -0
- package/dist/src/source/adopt.js +99 -0
- package/dist/src/source/changes.js +132 -0
- package/dist/src/source/edit.js +278 -0
- package/dist/src/source/export.js +70 -0
- package/dist/src/source/groups.js +131 -0
- package/dist/src/source/index.js +20 -0
- package/dist/src/source/materialize.js +382 -0
- package/dist/src/source/merge.js +255 -0
- package/dist/src/source/objects.js +102 -0
- package/dist/src/source/previous.js +166 -0
- package/dist/src/source/records.js +138 -0
- package/dist/src/source/refresh.js +264 -0
- package/dist/src/source/tree.js +337 -0
- package/dist/src/syntax/css.js +215 -0
- package/dist/src/syntax/fragments.js +63 -0
- package/dist/src/syntax/index.js +10 -0
- package/dist/src/syntax/js.js +270 -0
- package/dist/src/test/classify.js +826 -0
- package/dist/src/test/control.js +236 -0
- package/dist/src/test/host.js +266 -0
- package/dist/src/test/index.js +11 -0
- package/dist/src/test/plan.js +347 -0
- package/dist/src/test/rawLog.js +138 -0
- package/dist/src/test/run.js +404 -0
- package/dist/src/test/verdict.js +420 -0
- package/dist/src/test/xpcshell.js +143 -0
- package/dist/src/tokens/add.js +304 -0
- package/dist/src/tokens/coverage.js +65 -0
- package/dist/src/tokens/css.js +58 -0
- package/dist/src/tokens/index.js +12 -0
- package/dist/src/tokens/lint.js +96 -0
- package/dist/src/tokens/model.js +118 -0
- package/dist/src/tokens/settings.js +87 -0
- package/dist/src/tokens/siblings.js +104 -0
- package/dist/src/typecheck/explain.js +123 -0
- package/dist/src/typecheck/index.js +8 -0
- package/dist/src/typecheck/typecheck.js +332 -0
- package/docs/README.md +23 -28
- package/docs/authoring.md +97 -0
- package/docs/configuration.md +307 -766
- package/docs/exit-codes.md +76 -94
- package/docs/furnace.md +111 -221
- package/docs/gate.md +205 -0
- package/docs/getting-started.md +165 -0
- package/docs/machine-output.md +201 -290
- package/docs/migrating.md +261 -0
- package/docs/patch-workflow.md +159 -723
- package/docs/quality.md +220 -0
- package/docs/source-workflow.md +228 -0
- package/docs/testing.md +101 -719
- package/docs/workspaces.md +187 -0
- package/package.json +22 -30
- package/templates/configs/common.mozconfig +8 -2
- package/templates/configs/darwin.mozconfig +6 -7
- package/templates/configs/linux.mozconfig +5 -8
- package/templates/configs/win32.mozconfig +3 -9
- package/dist/bin/fireforge.d.ts +0 -9
- package/dist/src/cli-usage-error.d.ts +0 -46
- package/dist/src/cli-usage-error.js +0 -81
- package/dist/src/cli.d.ts +0 -41
- package/dist/src/cli.js +0 -380
- package/dist/src/commands/bootstrap-checks.d.ts +0 -16
- package/dist/src/commands/bootstrap-checks.js +0 -66
- package/dist/src/commands/bootstrap.d.ts +0 -10
- package/dist/src/commands/build-prelock.d.ts +0 -20
- package/dist/src/commands/build-prelock.js +0 -50
- package/dist/src/commands/build.d.ts +0 -13
- package/dist/src/commands/check-report.d.ts +0 -41
- package/dist/src/commands/check-report.js +0 -98
- package/dist/src/commands/check-run.d.ts +0 -44
- package/dist/src/commands/check-run.js +0 -125
- package/dist/src/commands/check-steps.d.ts +0 -75
- package/dist/src/commands/check-steps.js +0 -200
- package/dist/src/commands/check.d.ts +0 -32
- package/dist/src/commands/config.d.ts +0 -13
- package/dist/src/commands/declarations-report.d.ts +0 -49
- package/dist/src/commands/declarations-report.js +0 -83
- package/dist/src/commands/destructive-decision.d.ts +0 -19
- package/dist/src/commands/destructive-decision.js +0 -31
- package/dist/src/commands/discard.d.ts +0 -12
- package/dist/src/commands/doctor-check-core.d.ts +0 -110
- package/dist/src/commands/doctor-check-core.js +0 -24
- package/dist/src/commands/doctor-engine-eslint.d.ts +0 -3
- package/dist/src/commands/doctor-engine-eslint.js +0 -17
- package/dist/src/commands/doctor-external-toolchains.d.ts +0 -3
- package/dist/src/commands/doctor-external-toolchains.js +0 -56
- package/dist/src/commands/doctor-furnace-config-sync.d.ts +0 -18
- package/dist/src/commands/doctor-furnace-config-sync.js +0 -295
- package/dist/src/commands/doctor-furnace-jar.d.ts +0 -14
- package/dist/src/commands/doctor-furnace-jar.js +0 -44
- package/dist/src/commands/doctor-furnace.d.ts +0 -8
- package/dist/src/commands/doctor-furnace.js +0 -514
- package/dist/src/commands/doctor-macos-sdk.d.ts +0 -8
- package/dist/src/commands/doctor-macos-sdk.js +0 -158
- package/dist/src/commands/doctor-orphaned-harness.d.ts +0 -41
- package/dist/src/commands/doctor-orphaned-harness.js +0 -98
- package/dist/src/commands/doctor-patch-manifest.d.ts +0 -9
- package/dist/src/commands/doctor-patch-manifest.js +0 -156
- package/dist/src/commands/doctor-post-rebase-audit.d.ts +0 -2
- package/dist/src/commands/doctor-post-rebase-audit.js +0 -108
- package/dist/src/commands/doctor-source-pin.d.ts +0 -29
- package/dist/src/commands/doctor-source-pin.js +0 -91
- package/dist/src/commands/doctor-working-tree.d.ts +0 -27
- package/dist/src/commands/doctor-working-tree.js +0 -89
- package/dist/src/commands/doctor.d.ts +0 -49
- package/dist/src/commands/download.d.ts +0 -11
- package/dist/src/commands/export-adopt-check.d.ts +0 -37
- package/dist/src/commands/export-adopt-check.js +0 -97
- package/dist/src/commands/export-all.d.ts +0 -11
- package/dist/src/commands/export-all.js +0 -361
- package/dist/src/commands/export-flow.d.ts +0 -124
- package/dist/src/commands/export-flow.js +0 -423
- package/dist/src/commands/export-placement-conflicts.d.ts +0 -17
- package/dist/src/commands/export-placement-conflicts.js +0 -75
- package/dist/src/commands/export-placement-gate.d.ts +0 -42
- package/dist/src/commands/export-placement-gate.js +0 -107
- package/dist/src/commands/export-placement-policy.d.ts +0 -22
- package/dist/src/commands/export-placement-policy.js +0 -54
- package/dist/src/commands/export-shared.d.ts +0 -152
- package/dist/src/commands/export-shared.js +0 -396
- package/dist/src/commands/export-staged-registration.d.ts +0 -46
- package/dist/src/commands/export-staged-registration.js +0 -91
- package/dist/src/commands/export.d.ts +0 -13
- package/dist/src/commands/forward-import-remedy.d.ts +0 -31
- package/dist/src/commands/forward-import-remedy.js +0 -62
- package/dist/src/commands/furnace/apply.d.ts +0 -8
- package/dist/src/commands/furnace/apply.js +0 -327
- package/dist/src/commands/furnace/authoring-config.d.ts +0 -13
- package/dist/src/commands/furnace/authoring-config.js +0 -19
- package/dist/src/commands/furnace/chrome-doc-remove.d.ts +0 -14
- package/dist/src/commands/furnace/chrome-doc-remove.js +0 -148
- package/dist/src/commands/furnace/chrome-doc-templates.d.ts +0 -152
- package/dist/src/commands/furnace/chrome-doc-templates.js +0 -331
- package/dist/src/commands/furnace/chrome-doc-tests.d.ts +0 -23
- package/dist/src/commands/furnace/chrome-doc-tests.js +0 -148
- package/dist/src/commands/furnace/chrome-doc.d.ts +0 -87
- package/dist/src/commands/furnace/chrome-doc.js +0 -365
- package/dist/src/commands/furnace/create-browser-test.d.ts +0 -44
- package/dist/src/commands/furnace/create-browser-test.js +0 -179
- package/dist/src/commands/furnace/create-dry-run.d.ts +0 -49
- package/dist/src/commands/furnace/create-dry-run.js +0 -107
- package/dist/src/commands/furnace/create-features.d.ts +0 -24
- package/dist/src/commands/furnace/create-features.js +0 -55
- package/dist/src/commands/furnace/create-mochikit.d.ts +0 -29
- package/dist/src/commands/furnace/create-mochikit.js +0 -75
- package/dist/src/commands/furnace/create-readback.d.ts +0 -22
- package/dist/src/commands/furnace/create-readback.js +0 -32
- package/dist/src/commands/furnace/create-templates.d.ts +0 -119
- package/dist/src/commands/furnace/create-templates.js +0 -283
- package/dist/src/commands/furnace/create-validation.d.ts +0 -6
- package/dist/src/commands/furnace/create-validation.js +0 -59
- package/dist/src/commands/furnace/create-xpcshell.d.ts +0 -27
- package/dist/src/commands/furnace/create-xpcshell.js +0 -80
- package/dist/src/commands/furnace/create.d.ts +0 -24
- package/dist/src/commands/furnace/create.js +0 -407
- package/dist/src/commands/furnace/deploy-fragment-includers.d.ts +0 -59
- package/dist/src/commands/furnace/deploy-fragment-includers.js +0 -120
- package/dist/src/commands/furnace/deploy-named.d.ts +0 -48
- package/dist/src/commands/furnace/deploy-named.js +0 -107
- package/dist/src/commands/furnace/deploy.d.ts +0 -9
- package/dist/src/commands/furnace/deploy.js +0 -229
- package/dist/src/commands/furnace/diff.d.ts +0 -11
- package/dist/src/commands/furnace/diff.js +0 -238
- package/dist/src/commands/furnace/index.d.ts +0 -4
- package/dist/src/commands/furnace/index.js +0 -283
- package/dist/src/commands/furnace/init.d.ts +0 -11
- package/dist/src/commands/furnace/init.js +0 -287
- package/dist/src/commands/furnace/list.d.ts +0 -8
- package/dist/src/commands/furnace/list.js +0 -104
- package/dist/src/commands/furnace/override.d.ts +0 -16
- package/dist/src/commands/furnace/override.js +0 -454
- package/dist/src/commands/furnace/preview.d.ts +0 -19
- package/dist/src/commands/furnace/preview.js +0 -349
- package/dist/src/commands/furnace/refresh.d.ts +0 -10
- package/dist/src/commands/furnace/refresh.js +0 -303
- package/dist/src/commands/furnace/remove-mutations.d.ts +0 -36
- package/dist/src/commands/furnace/remove-mutations.js +0 -168
- package/dist/src/commands/furnace/remove-state.d.ts +0 -20
- package/dist/src/commands/furnace/remove-state.js +0 -60
- package/dist/src/commands/furnace/remove.d.ts +0 -8
- package/dist/src/commands/furnace/remove.js +0 -415
- package/dist/src/commands/furnace/rename-browser-test.d.ts +0 -2
- package/dist/src/commands/furnace/rename-browser-test.js +0 -68
- package/dist/src/commands/furnace/rename-dry-run.d.ts +0 -29
- package/dist/src/commands/furnace/rename-dry-run.js +0 -127
- package/dist/src/commands/furnace/rename-helpers.d.ts +0 -26
- package/dist/src/commands/furnace/rename-helpers.js +0 -85
- package/dist/src/commands/furnace/rename-registrations.d.ts +0 -41
- package/dist/src/commands/furnace/rename-registrations.js +0 -98
- package/dist/src/commands/furnace/rename-xpcshell.d.ts +0 -32
- package/dist/src/commands/furnace/rename-xpcshell.js +0 -95
- package/dist/src/commands/furnace/rename.d.ts +0 -6
- package/dist/src/commands/furnace/rename.js +0 -400
- package/dist/src/commands/furnace/scan.d.ts +0 -14
- package/dist/src/commands/furnace/scan.js +0 -192
- package/dist/src/commands/furnace/status.d.ts +0 -7
- package/dist/src/commands/furnace/status.js +0 -209
- package/dist/src/commands/furnace/sync.d.ts +0 -12
- package/dist/src/commands/furnace/sync.js +0 -145
- package/dist/src/commands/furnace/test-file-name.d.ts +0 -28
- package/dist/src/commands/furnace/test-file-name.js +0 -39
- package/dist/src/commands/furnace/validate-report.d.ts +0 -45
- package/dist/src/commands/furnace/validate-report.js +0 -91
- package/dist/src/commands/furnace/validate.d.ts +0 -8
- package/dist/src/commands/furnace/validate.js +0 -309
- package/dist/src/commands/furnace/validation-output.d.ts +0 -47
- package/dist/src/commands/furnace/validation-output.js +0 -161
- package/dist/src/commands/import.d.ts +0 -11
- package/dist/src/commands/lint-per-patch.d.ts +0 -10
- package/dist/src/commands/lint-per-patch.js +0 -428
- package/dist/src/commands/lint-per-run-checkjs.d.ts +0 -66
- package/dist/src/commands/lint-per-run-checkjs.js +0 -102
- package/dist/src/commands/lint-report.d.ts +0 -25
- package/dist/src/commands/lint-report.js +0 -76
- package/dist/src/commands/lint.d.ts +0 -47
- package/dist/src/commands/manifest.d.ts +0 -38
- package/dist/src/commands/manifest.js +0 -68
- package/dist/src/commands/package.d.ts +0 -11
- package/dist/src/commands/park.d.ts +0 -22
- package/dist/src/commands/park.js +0 -232
- package/dist/src/commands/patch/body.d.ts +0 -29
- package/dist/src/commands/patch/body.js +0 -60
- package/dist/src/commands/patch/compact.d.ts +0 -28
- package/dist/src/commands/patch/compact.js +0 -208
- package/dist/src/commands/patch/delete-gap-notice.d.ts +0 -24
- package/dist/src/commands/patch/delete-gap-notice.js +0 -48
- package/dist/src/commands/patch/delete.d.ts +0 -28
- package/dist/src/commands/patch/delete.js +0 -131
- package/dist/src/commands/patch/entry-projection.d.ts +0 -13
- package/dist/src/commands/patch/entry-projection.js +0 -24
- package/dist/src/commands/patch/index.d.ts +0 -16
- package/dist/src/commands/patch/index.js +0 -54
- package/dist/src/commands/patch/lint-ignore-from.d.ts +0 -43
- package/dist/src/commands/patch/lint-ignore-from.js +0 -141
- package/dist/src/commands/patch/lint-ignore.d.ts +0 -42
- package/dist/src/commands/patch/lint-ignore.js +0 -263
- package/dist/src/commands/patch/move-files-adopt.d.ts +0 -33
- package/dist/src/commands/patch/move-files-adopt.js +0 -65
- package/dist/src/commands/patch/move-files-create.d.ts +0 -19
- package/dist/src/commands/patch/move-files-create.js +0 -187
- package/dist/src/commands/patch/move-files-into.d.ts +0 -65
- package/dist/src/commands/patch/move-files-into.js +0 -325
- package/dist/src/commands/patch/move-files-retire.d.ts +0 -39
- package/dist/src/commands/patch/move-files-retire.js +0 -91
- package/dist/src/commands/patch/move-files.d.ts +0 -28
- package/dist/src/commands/patch/move-files.js +0 -224
- package/dist/src/commands/patch/move-size-tier.d.ts +0 -27
- package/dist/src/commands/patch/move-size-tier.js +0 -66
- package/dist/src/commands/patch/patch-context.d.ts +0 -40
- package/dist/src/commands/patch/patch-context.js +0 -51
- package/dist/src/commands/patch/removal-created-files.d.ts +0 -48
- package/dist/src/commands/patch/removal-created-files.js +0 -83
- package/dist/src/commands/patch/removal-dependents.d.ts +0 -63
- package/dist/src/commands/patch/removal-dependents.js +0 -133
- package/dist/src/commands/patch/rename.d.ts +0 -35
- package/dist/src/commands/patch/rename.js +0 -378
- package/dist/src/commands/patch/reorder-projection.d.ts +0 -17
- package/dist/src/commands/patch/reorder-projection.js +0 -49
- package/dist/src/commands/patch/reorder-shift.d.ts +0 -30
- package/dist/src/commands/patch/reorder-shift.js +0 -307
- package/dist/src/commands/patch/reorder.d.ts +0 -34
- package/dist/src/commands/patch/reorder.js +0 -375
- package/dist/src/commands/patch/reserve.d.ts +0 -33
- package/dist/src/commands/patch/reserve.js +0 -152
- package/dist/src/commands/patch/retire.d.ts +0 -34
- package/dist/src/commands/patch/retire.js +0 -133
- package/dist/src/commands/patch/split-plan.d.ts +0 -125
- package/dist/src/commands/patch/split-plan.js +0 -313
- package/dist/src/commands/patch/split-staged.d.ts +0 -108
- package/dist/src/commands/patch/split-staged.js +0 -202
- package/dist/src/commands/patch/split.d.ts +0 -43
- package/dist/src/commands/patch/split.js +0 -367
- package/dist/src/commands/patch/stage.d.ts +0 -34
- package/dist/src/commands/patch/stage.js +0 -153
- package/dist/src/commands/patch/staged-dependency-batch.d.ts +0 -48
- package/dist/src/commands/patch/staged-dependency-batch.js +0 -176
- package/dist/src/commands/patch/staged-dependency-entries.d.ts +0 -44
- package/dist/src/commands/patch/staged-dependency-entries.js +0 -80
- package/dist/src/commands/patch/staged-dependency-from.d.ts +0 -14
- package/dist/src/commands/patch/staged-dependency-from.js +0 -114
- package/dist/src/commands/patch/staged-dependency-remove.d.ts +0 -53
- package/dist/src/commands/patch/staged-dependency-remove.js +0 -114
- package/dist/src/commands/patch/staged-dependency-validate.d.ts +0 -27
- package/dist/src/commands/patch/staged-dependency-validate.js +0 -78
- package/dist/src/commands/patch/staged-dependency.d.ts +0 -22
- package/dist/src/commands/patch/staged-dependency.js +0 -251
- package/dist/src/commands/patch/tier.d.ts +0 -34
- package/dist/src/commands/patch/tier.js +0 -125
- package/dist/src/commands/patch-rename-map.d.ts +0 -30
- package/dist/src/commands/patch-rename-map.js +0 -54
- package/dist/src/commands/pending-resolution.d.ts +0 -15
- package/dist/src/commands/pending-resolution.js +0 -25
- package/dist/src/commands/re-export-adjacent-registrations.d.ts +0 -20
- package/dist/src/commands/re-export-adjacent-registrations.js +0 -75
- package/dist/src/commands/re-export-adjacent.d.ts +0 -111
- package/dist/src/commands/re-export-adjacent.js +0 -285
- package/dist/src/commands/re-export-bulk-scan.d.ts +0 -19
- package/dist/src/commands/re-export-bulk-scan.js +0 -233
- package/dist/src/commands/re-export-drift.d.ts +0 -110
- package/dist/src/commands/re-export-drift.js +0 -358
- package/dist/src/commands/re-export-each.d.ts +0 -46
- package/dist/src/commands/re-export-each.js +0 -110
- package/dist/src/commands/re-export-files.d.ts +0 -15
- package/dist/src/commands/re-export-files.js +0 -307
- package/dist/src/commands/re-export-hunks.d.ts +0 -37
- package/dist/src/commands/re-export-hunks.js +0 -264
- package/dist/src/commands/re-export-lint.d.ts +0 -137
- package/dist/src/commands/re-export-lint.js +0 -303
- package/dist/src/commands/re-export-options.d.ts +0 -29
- package/dist/src/commands/re-export-options.js +0 -192
- package/dist/src/commands/re-export-preflight.d.ts +0 -23
- package/dist/src/commands/re-export-preflight.js +0 -159
- package/dist/src/commands/re-export-purity-scope.d.ts +0 -18
- package/dist/src/commands/re-export-purity-scope.js +0 -137
- package/dist/src/commands/re-export-register.d.ts +0 -12
- package/dist/src/commands/re-export-register.js +0 -99
- package/dist/src/commands/re-export-removed.d.ts +0 -15
- package/dist/src/commands/re-export-removed.js +0 -94
- package/dist/src/commands/re-export-retired-declarations.d.ts +0 -22
- package/dist/src/commands/re-export-retired-declarations.js +0 -113
- package/dist/src/commands/re-export-scan-owner.d.ts +0 -44
- package/dist/src/commands/re-export-scan-owner.js +0 -116
- package/dist/src/commands/re-export-scan.d.ts +0 -72
- package/dist/src/commands/re-export-scan.js +0 -265
- package/dist/src/commands/re-export-single.d.ts +0 -53
- package/dist/src/commands/re-export-single.js +0 -426
- package/dist/src/commands/re-export-stale-registrations.d.ts +0 -39
- package/dist/src/commands/re-export-stale-registrations.js +0 -106
- package/dist/src/commands/re-export-summary.d.ts +0 -44
- package/dist/src/commands/re-export-summary.js +0 -59
- package/dist/src/commands/re-export.d.ts +0 -8
- package/dist/src/commands/rebase/abort.d.ts +0 -7
- package/dist/src/commands/rebase/abort.js +0 -67
- package/dist/src/commands/rebase/confirm.d.ts +0 -42
- package/dist/src/commands/rebase/confirm.js +0 -36
- package/dist/src/commands/rebase/conflict-summary.d.ts +0 -12
- package/dist/src/commands/rebase/conflict-summary.js +0 -37
- package/dist/src/commands/rebase/continue.d.ts +0 -7
- package/dist/src/commands/rebase/continue.js +0 -119
- package/dist/src/commands/rebase/index.d.ts +0 -22
- package/dist/src/commands/rebase/index.js +0 -209
- package/dist/src/commands/rebase/patch-loop.d.ts +0 -15
- package/dist/src/commands/rebase/patch-loop.js +0 -289
- package/dist/src/commands/rebase/summary.d.ts +0 -8
- package/dist/src/commands/rebase/summary.js +0 -47
- package/dist/src/commands/register.d.ts +0 -13
- package/dist/src/commands/reset.d.ts +0 -11
- package/dist/src/commands/resolve.d.ts +0 -36
- package/dist/src/commands/run.d.ts +0 -10
- package/dist/src/commands/setup-support.d.ts +0 -35
- package/dist/src/commands/setup-support.js +0 -386
- package/dist/src/commands/setup.d.ts +0 -11
- package/dist/src/commands/source.d.ts +0 -9
- package/dist/src/commands/source.js +0 -120
- package/dist/src/commands/status-check.d.ts +0 -87
- package/dist/src/commands/status-check.js +0 -161
- package/dist/src/commands/status-json.d.ts +0 -45
- package/dist/src/commands/status-json.js +0 -97
- package/dist/src/commands/status-output.d.ts +0 -23
- package/dist/src/commands/status-output.js +0 -231
- package/dist/src/commands/status-ownership.d.ts +0 -54
- package/dist/src/commands/status-ownership.js +0 -59
- package/dist/src/commands/status-scope.d.ts +0 -37
- package/dist/src/commands/status-scope.js +0 -54
- package/dist/src/commands/status.d.ts +0 -11
- package/dist/src/commands/test-appdir.d.ts +0 -6
- package/dist/src/commands/test-appdir.js +0 -29
- package/dist/src/commands/test-browser-preflight.d.ts +0 -28
- package/dist/src/commands/test-browser-preflight.js +0 -197
- package/dist/src/commands/test-build-furnace.d.ts +0 -21
- package/dist/src/commands/test-build-furnace.js +0 -53
- package/dist/src/commands/test-build-phase.d.ts +0 -34
- package/dist/src/commands/test-build-phase.js +0 -291
- package/dist/src/commands/test-checkjs.d.ts +0 -3
- package/dist/src/commands/test-checkjs.js +0 -35
- package/dist/src/commands/test-control-restore.d.ts +0 -40
- package/dist/src/commands/test-control-restore.js +0 -86
- package/dist/src/commands/test-diagnose.d.ts +0 -23
- package/dist/src/commands/test-diagnose.js +0 -317
- package/dist/src/commands/test-dispatch.d.ts +0 -39
- package/dist/src/commands/test-dispatch.js +0 -281
- package/dist/src/commands/test-furnace-reach.d.ts +0 -37
- package/dist/src/commands/test-furnace-reach.js +0 -132
- package/dist/src/commands/test-harness-env.d.ts +0 -23
- package/dist/src/commands/test-harness-env.js +0 -81
- package/dist/src/commands/test-harness-teardown.d.ts +0 -62
- package/dist/src/commands/test-harness-teardown.js +0 -128
- package/dist/src/commands/test-modes.d.ts +0 -57
- package/dist/src/commands/test-modes.js +0 -158
- package/dist/src/commands/test-multi-verdict.d.ts +0 -61
- package/dist/src/commands/test-multi-verdict.js +0 -112
- package/dist/src/commands/test-orchestrate.d.ts +0 -70
- package/dist/src/commands/test-orchestrate.js +0 -277
- package/dist/src/commands/test-perf-scope.d.ts +0 -50
- package/dist/src/commands/test-perf-scope.js +0 -138
- package/dist/src/commands/test-prelock.d.ts +0 -61
- package/dist/src/commands/test-prelock.js +0 -301
- package/dist/src/commands/test-register.d.ts +0 -4
- package/dist/src/commands/test-register.js +0 -181
- package/dist/src/commands/test-results.d.ts +0 -71
- package/dist/src/commands/test-results.js +0 -79
- package/dist/src/commands/test-run.d.ts +0 -89
- package/dist/src/commands/test-run.js +0 -251
- package/dist/src/commands/test-shards.d.ts +0 -114
- package/dist/src/commands/test-shards.js +0 -272
- package/dist/src/commands/test-stale-gate.d.ts +0 -56
- package/dist/src/commands/test-stale-gate.js +0 -208
- package/dist/src/commands/test-verdict.d.ts +0 -102
- package/dist/src/commands/test-verdict.js +0 -176
- package/dist/src/commands/test.d.ts +0 -22
- package/dist/src/commands/token-coverage.d.ts +0 -5
- package/dist/src/commands/token-coverage.js +0 -170
- package/dist/src/commands/token-lint.d.ts +0 -14
- package/dist/src/commands/token-lint.js +0 -151
- package/dist/src/commands/token-list.d.ts +0 -26
- package/dist/src/commands/token-list.js +0 -153
- package/dist/src/commands/token.d.ts +0 -14
- package/dist/src/commands/tree.d.ts +0 -19
- package/dist/src/commands/tree.js +0 -341
- package/dist/src/commands/typecheck-explain.d.ts +0 -13
- package/dist/src/commands/typecheck-explain.js +0 -100
- package/dist/src/commands/typecheck.d.ts +0 -61
- package/dist/src/commands/verify-scope.d.ts +0 -28
- package/dist/src/commands/verify-scope.js +0 -67
- package/dist/src/commands/verify.d.ts +0 -58
- package/dist/src/commands/watch.d.ts +0 -9
- package/dist/src/commands/wire.d.ts +0 -13
- package/dist/src/core/ast-utils.d.ts +0 -73
- package/dist/src/core/ast-utils.js +0 -105
- package/dist/src/core/brand-validation.d.ts +0 -7
- package/dist/src/core/brand-validation.js +0 -14
- package/dist/src/core/branding.d.ts +0 -86
- package/dist/src/core/branding.js +0 -371
- package/dist/src/core/browser-wire.d.ts +0 -48
- package/dist/src/core/browser-wire.js +0 -133
- package/dist/src/core/build-audit-platform.d.ts +0 -67
- package/dist/src/core/build-audit-platform.js +0 -373
- package/dist/src/core/build-audit-registration.d.ts +0 -80
- package/dist/src/core/build-audit-registration.js +0 -181
- package/dist/src/core/build-audit-resolve.d.ts +0 -78
- package/dist/src/core/build-audit-resolve.js +0 -240
- package/dist/src/core/build-audit-skip.d.ts +0 -57
- package/dist/src/core/build-audit-skip.js +0 -112
- package/dist/src/core/build-audit-transforms.d.ts +0 -23
- package/dist/src/core/build-audit-transforms.js +0 -92
- package/dist/src/core/build-audit.d.ts +0 -93
- package/dist/src/core/build-audit.js +0 -633
- package/dist/src/core/build-baseline-types.d.ts +0 -225
- package/dist/src/core/build-baseline-types.js +0 -10
- package/dist/src/core/build-baseline-validate.d.ts +0 -32
- package/dist/src/core/build-baseline-validate.js +0 -173
- package/dist/src/core/build-baseline.d.ts +0 -103
- package/dist/src/core/build-baseline.js +0 -261
- package/dist/src/core/build-jar-escalation.d.ts +0 -61
- package/dist/src/core/build-jar-escalation.js +0 -125
- package/dist/src/core/build-overwrite-guard.d.ts +0 -92
- package/dist/src/core/build-overwrite-guard.js +0 -235
- package/dist/src/core/build-prepare.d.ts +0 -83
- package/dist/src/core/build-prepare.js +0 -414
- package/dist/src/core/build-run-record.d.ts +0 -74
- package/dist/src/core/build-run-record.js +0 -136
- package/dist/src/core/checkjs-support-heads.d.ts +0 -41
- package/dist/src/core/checkjs-support-heads.js +0 -104
- package/dist/src/core/component-source-guard.d.ts +0 -20
- package/dist/src/core/component-source-guard.js +0 -68
- package/dist/src/core/config-mutate.d.ts +0 -16
- package/dist/src/core/config-mutate.js +0 -76
- package/dist/src/core/config-paths.d.ts +0 -16
- package/dist/src/core/config-paths.js +0 -106
- package/dist/src/core/config-state.d.ts +0 -16
- package/dist/src/core/config-state.js +0 -141
- package/dist/src/core/config-validate-build-audit.d.ts +0 -8
- package/dist/src/core/config-validate-build-audit.js +0 -80
- package/dist/src/core/config-validate-check.d.ts +0 -8
- package/dist/src/core/config-validate-check.js +0 -219
- package/dist/src/core/config-validate-file-size.d.ts +0 -15
- package/dist/src/core/config-validate-file-size.js +0 -154
- package/dist/src/core/config-validate-history.d.ts +0 -11
- package/dist/src/core/config-validate-history.js +0 -38
- package/dist/src/core/config-validate-patch-policy.d.ts +0 -7
- package/dist/src/core/config-validate-patch-policy.js +0 -284
- package/dist/src/core/config-validate-test-toolchains.d.ts +0 -8
- package/dist/src/core/config-validate-test-toolchains.js +0 -133
- package/dist/src/core/config-validate-token-scales.d.ts +0 -9
- package/dist/src/core/config-validate-token-scales.js +0 -125
- package/dist/src/core/config-validate.d.ts +0 -11
- package/dist/src/core/config-validate.js +0 -509
- package/dist/src/core/config.d.ts +0 -92
- package/dist/src/core/config.js +0 -169
- package/dist/src/core/coverage-dispatch.d.ts +0 -24
- package/dist/src/core/coverage-dispatch.js +0 -44
- package/dist/src/core/coverage-extend.d.ts +0 -89
- package/dist/src/core/coverage-extend.js +0 -239
- package/dist/src/core/coverage-records.d.ts +0 -107
- package/dist/src/core/coverage-records.js +0 -383
- package/dist/src/core/destructive.d.ts +0 -144
- package/dist/src/core/destructive.js +0 -182
- package/dist/src/core/dev-profile.d.ts +0 -28
- package/dist/src/core/dev-profile.js +0 -58
- package/dist/src/core/diff-hunks.d.ts +0 -73
- package/dist/src/core/diff-hunks.js +0 -286
- package/dist/src/core/discard-baseline.d.ts +0 -60
- package/dist/src/core/discard-baseline.js +0 -247
- package/dist/src/core/display-state.d.ts +0 -50
- package/dist/src/core/display-state.js +0 -87
- package/dist/src/core/engine-changes.d.ts +0 -40
- package/dist/src/core/engine-changes.js +0 -95
- package/dist/src/core/engine-precondition.d.ts +0 -42
- package/dist/src/core/engine-precondition.js +0 -60
- package/dist/src/core/engine-session-lock.d.ts +0 -119
- package/dist/src/core/engine-session-lock.js +0 -374
- package/dist/src/core/engine-write-boundary.d.ts +0 -5
- package/dist/src/core/engine-write-boundary.js +0 -41
- package/dist/src/core/export-moved-code-shape.d.ts +0 -98
- package/dist/src/core/export-moved-code-shape.js +0 -220
- package/dist/src/core/file-lock-owner.d.ts +0 -103
- package/dist/src/core/file-lock-owner.js +0 -259
- package/dist/src/core/file-lock-queue.d.ts +0 -67
- package/dist/src/core/file-lock-queue.js +0 -219
- package/dist/src/core/file-lock-shared.d.ts +0 -57
- package/dist/src/core/file-lock-shared.js +0 -117
- package/dist/src/core/file-lock.d.ts +0 -143
- package/dist/src/core/file-lock.js +0 -531
- package/dist/src/core/firefox-archive.d.ts +0 -45
- package/dist/src/core/firefox-archive.js +0 -96
- package/dist/src/core/firefox-cache.d.ts +0 -30
- package/dist/src/core/firefox-cache.js +0 -248
- package/dist/src/core/firefox-download.d.ts +0 -30
- package/dist/src/core/firefox-download.js +0 -152
- package/dist/src/core/firefox-extract.d.ts +0 -42
- package/dist/src/core/firefox-extract.js +0 -248
- package/dist/src/core/firefox-ignorefile.d.ts +0 -17
- package/dist/src/core/firefox-ignorefile.js +0 -30
- package/dist/src/core/firefox.d.ts +0 -66
- package/dist/src/core/firefox.js +0 -121
- package/dist/src/core/forward-registrations.d.ts +0 -33
- package/dist/src/core/forward-registrations.js +0 -16
- package/dist/src/core/furnace-apply-dry-run.d.ts +0 -12
- package/dist/src/core/furnace-apply-dry-run.js +0 -99
- package/dist/src/core/furnace-apply-ftl.d.ts +0 -49
- package/dist/src/core/furnace-apply-ftl.js +0 -210
- package/dist/src/core/furnace-apply-helpers.d.ts +0 -106
- package/dist/src/core/furnace-apply-helpers.js +0 -436
- package/dist/src/core/furnace-apply-output.d.ts +0 -36
- package/dist/src/core/furnace-apply-output.js +0 -111
- package/dist/src/core/furnace-apply-overwrite-warn.d.ts +0 -67
- package/dist/src/core/furnace-apply-overwrite-warn.js +0 -131
- package/dist/src/core/furnace-apply-undeploy-actions.d.ts +0 -10
- package/dist/src/core/furnace-apply-undeploy-actions.js +0 -48
- package/dist/src/core/furnace-apply.d.ts +0 -49
- package/dist/src/core/furnace-apply.js +0 -465
- package/dist/src/core/furnace-checksum-utils.d.ts +0 -25
- package/dist/src/core/furnace-checksum-utils.js +0 -54
- package/dist/src/core/furnace-composed-source.d.ts +0 -76
- package/dist/src/core/furnace-composed-source.js +0 -167
- package/dist/src/core/furnace-config-array-utils.d.ts +0 -11
- package/dist/src/core/furnace-config-array-utils.js +0 -26
- package/dist/src/core/furnace-config-custom.d.ts +0 -15
- package/dist/src/core/furnace-config-custom.js +0 -73
- package/dist/src/core/furnace-config-order.d.ts +0 -8
- package/dist/src/core/furnace-config-order.js +0 -90
- package/dist/src/core/furnace-config-tokens.d.ts +0 -17
- package/dist/src/core/furnace-config-tokens.js +0 -42
- package/dist/src/core/furnace-config-validate-exceptions.d.ts +0 -17
- package/dist/src/core/furnace-config-validate-exceptions.js +0 -122
- package/dist/src/core/furnace-config-validate.d.ts +0 -32
- package/dist/src/core/furnace-config-validate.js +0 -167
- package/dist/src/core/furnace-config.d.ts +0 -139
- package/dist/src/core/furnace-config.js +0 -511
- package/dist/src/core/furnace-constants.d.ts +0 -81
- package/dist/src/core/furnace-constants.js +0 -125
- package/dist/src/core/furnace-css-fragments.d.ts +0 -96
- package/dist/src/core/furnace-css-fragments.js +0 -279
- package/dist/src/core/furnace-deploy-owner.d.ts +0 -29
- package/dist/src/core/furnace-deploy-owner.js +0 -116
- package/dist/src/core/furnace-dir-entry.d.ts +0 -20
- package/dist/src/core/furnace-dir-entry.js +0 -21
- package/dist/src/core/furnace-fragment-includers.d.ts +0 -56
- package/dist/src/core/furnace-fragment-includers.js +0 -122
- package/dist/src/core/furnace-graph-utils.d.ts +0 -11
- package/dist/src/core/furnace-graph-utils.js +0 -93
- package/dist/src/core/furnace-jsconfig.d.ts +0 -87
- package/dist/src/core/furnace-jsconfig.js +0 -248
- package/dist/src/core/furnace-marker.d.ts +0 -15
- package/dist/src/core/furnace-marker.js +0 -21
- package/dist/src/core/furnace-operation.d.ts +0 -195
- package/dist/src/core/furnace-operation.js +0 -444
- package/dist/src/core/furnace-precondition.d.ts +0 -61
- package/dist/src/core/furnace-precondition.js +0 -67
- package/dist/src/core/furnace-refresh.d.ts +0 -28
- package/dist/src/core/furnace-refresh.js +0 -125
- package/dist/src/core/furnace-registration-ast.d.ts +0 -53
- package/dist/src/core/furnace-registration-ast.js +0 -402
- package/dist/src/core/furnace-registration-jar-inplace.d.ts +0 -12
- package/dist/src/core/furnace-registration-jar-inplace.js +0 -79
- package/dist/src/core/furnace-registration-remove.d.ts +0 -56
- package/dist/src/core/furnace-registration-remove.js +0 -260
- package/dist/src/core/furnace-registration-rename.d.ts +0 -26
- package/dist/src/core/furnace-registration-rename.js +0 -77
- package/dist/src/core/furnace-registration-validate.d.ts +0 -53
- package/dist/src/core/furnace-registration-validate.js +0 -110
- package/dist/src/core/furnace-registration.d.ts +0 -112
- package/dist/src/core/furnace-registration.js +0 -348
- package/dist/src/core/furnace-rollback.d.ts +0 -48
- package/dist/src/core/furnace-rollback.js +0 -170
- package/dist/src/core/furnace-scanner.d.ts +0 -47
- package/dist/src/core/furnace-scanner.js +0 -236
- package/dist/src/core/furnace-stale-export.d.ts +0 -60
- package/dist/src/core/furnace-stale-export.js +0 -125
- package/dist/src/core/furnace-staleness.d.ts +0 -24
- package/dist/src/core/furnace-staleness.js +0 -67
- package/dist/src/core/furnace-state-persist.d.ts +0 -68
- package/dist/src/core/furnace-state-persist.js +0 -116
- package/dist/src/core/furnace-step-errors.d.ts +0 -23
- package/dist/src/core/furnace-step-errors.js +0 -25
- package/dist/src/core/furnace-stories.d.ts +0 -37
- package/dist/src/core/furnace-stories.js +0 -186
- package/dist/src/core/furnace-tag-map.d.ts +0 -47
- package/dist/src/core/furnace-tag-map.js +0 -182
- package/dist/src/core/furnace-validate-accessibility.d.ts +0 -39
- package/dist/src/core/furnace-validate-accessibility.js +0 -417
- package/dist/src/core/furnace-validate-checks.d.ts +0 -4
- package/dist/src/core/furnace-validate-checks.js +0 -6
- package/dist/src/core/furnace-validate-compatibility.d.ts +0 -6
- package/dist/src/core/furnace-validate-compatibility.js +0 -295
- package/dist/src/core/furnace-validate-exceptions.d.ts +0 -49
- package/dist/src/core/furnace-validate-exceptions.js +0 -98
- package/dist/src/core/furnace-validate-helpers.d.ts +0 -7
- package/dist/src/core/furnace-validate-helpers.js +0 -4
- package/dist/src/core/furnace-validate-icon-button.d.ts +0 -7
- package/dist/src/core/furnace-validate-icon-button.js +0 -78
- package/dist/src/core/furnace-validate-registration.d.ts +0 -67
- package/dist/src/core/furnace-validate-registration.js +0 -487
- package/dist/src/core/furnace-validate-structure.d.ts +0 -22
- package/dist/src/core/furnace-validate-structure.js +0 -122
- package/dist/src/core/furnace-validate.d.ts +0 -41
- package/dist/src/core/furnace-validate.js +0 -331
- package/dist/src/core/furnace-version-drift.d.ts +0 -57
- package/dist/src/core/furnace-version-drift.js +0 -102
- package/dist/src/core/gecko-dom-types.d.ts +0 -2
- package/dist/src/core/gecko-dom-types.js +0 -17
- package/dist/src/core/git-base.d.ts +0 -101
- package/dist/src/core/git-base.js +0 -162
- package/dist/src/core/git-diff-new-file.d.ts +0 -40
- package/dist/src/core/git-diff-new-file.js +0 -118
- package/dist/src/core/git-diff.d.ts +0 -82
- package/dist/src/core/git-diff.js +0 -539
- package/dist/src/core/git-file-ops.d.ts +0 -108
- package/dist/src/core/git-file-ops.js +0 -280
- package/dist/src/core/git-readonly-index.d.ts +0 -91
- package/dist/src/core/git-readonly-index.js +0 -177
- package/dist/src/core/git-status.d.ts +0 -84
- package/dist/src/core/git-status.js +0 -208
- package/dist/src/core/git.d.ts +0 -114
- package/dist/src/core/git.js +0 -540
- package/dist/src/core/harness-helper-pids.d.ts +0 -98
- package/dist/src/core/harness-helper-pids.js +0 -240
- package/dist/src/core/harness-orphans.d.ts +0 -118
- package/dist/src/core/harness-orphans.js +0 -268
- package/dist/src/core/harness-port-fallback.d.ts +0 -60
- package/dist/src/core/harness-port-fallback.js +0 -96
- package/dist/src/core/harness-port-reservation.d.ts +0 -60
- package/dist/src/core/harness-port-reservation.js +0 -122
- package/dist/src/core/history-log-file.d.ts +0 -61
- package/dist/src/core/history-log-file.js +0 -164
- package/dist/src/core/history-log.d.ts +0 -20
- package/dist/src/core/history-log.js +0 -30
- package/dist/src/core/json-preserving-edit.d.ts +0 -22
- package/dist/src/core/json-preserving-edit.js +0 -199
- package/dist/src/core/launchable-build.d.ts +0 -39
- package/dist/src/core/launchable-build.js +0 -85
- package/dist/src/core/license-headers.d.ts +0 -103
- package/dist/src/core/license-headers.js +0 -328
- package/dist/src/core/line-prefixer.d.ts +0 -18
- package/dist/src/core/line-prefixer.js +0 -34
- package/dist/src/core/lit-template-regions.d.ts +0 -4
- package/dist/src/core/lit-template-regions.js +0 -50
- package/dist/src/core/mach-build-artifacts.d.ts +0 -176
- package/dist/src/core/mach-build-artifacts.js +0 -436
- package/dist/src/core/mach-error-hints.d.ts +0 -24
- package/dist/src/core/mach-error-hints.js +0 -135
- package/dist/src/core/mach-known-noise-filter.d.ts +0 -122
- package/dist/src/core/mach-known-noise-filter.js +0 -257
- package/dist/src/core/mach-mozconfig.d.ts +0 -57
- package/dist/src/core/mach-mozconfig.js +0 -166
- package/dist/src/core/mach-python.d.ts +0 -19
- package/dist/src/core/mach-python.js +0 -131
- package/dist/src/core/mach-resource-shim.d.ts +0 -107
- package/dist/src/core/mach-resource-shim.js +0 -640
- package/dist/src/core/mach.d.ts +0 -284
- package/dist/src/core/mach.js +0 -445
- package/dist/src/core/marionette-port.d.ts +0 -153
- package/dist/src/core/marionette-port.js +0 -474
- package/dist/src/core/marionette-preflight.d.ts +0 -58
- package/dist/src/core/marionette-preflight.js +0 -332
- package/dist/src/core/markdown-table.d.ts +0 -104
- package/dist/src/core/markdown-table.js +0 -265
- package/dist/src/core/mochitest-server-port.d.ts +0 -81
- package/dist/src/core/mochitest-server-port.js +0 -175
- package/dist/src/core/module-resolution-preflight.d.ts +0 -65
- package/dist/src/core/module-resolution-preflight.js +0 -171
- package/dist/src/core/moz-manifest-helpers.d.ts +0 -79
- package/dist/src/core/moz-manifest-helpers.js +0 -163
- package/dist/src/core/moz-manifest-register.d.ts +0 -19
- package/dist/src/core/moz-manifest-register.js +0 -51
- package/dist/src/core/moz-manifest-rules.d.ts +0 -58
- package/dist/src/core/moz-manifest-rules.js +0 -264
- package/dist/src/core/moz-manifest-tokenizers.d.ts +0 -38
- package/dist/src/core/moz-manifest-tokenizers.js +0 -108
- package/dist/src/core/negative-control-compiled.d.ts +0 -46
- package/dist/src/core/negative-control-compiled.js +0 -109
- package/dist/src/core/negative-control-diff.d.ts +0 -51
- package/dist/src/core/negative-control-diff.js +0 -167
- package/dist/src/core/negative-control.d.ts +0 -150
- package/dist/src/core/negative-control.js +0 -399
- package/dist/src/core/objdir-install-manifests.d.ts +0 -73
- package/dist/src/core/objdir-install-manifests.js +0 -226
- package/dist/src/core/objdir-maintenance.d.ts +0 -10
- package/dist/src/core/objdir-maintenance.js +0 -167
- package/dist/src/core/ownership-table.d.ts +0 -53
- package/dist/src/core/ownership-table.js +0 -159
- package/dist/src/core/parent-exit-watchdog.d.ts +0 -62
- package/dist/src/core/parent-exit-watchdog.js +0 -69
- package/dist/src/core/park-store.d.ts +0 -63
- package/dist/src/core/park-store.js +0 -216
- package/dist/src/core/parser-fallback.d.ts +0 -50
- package/dist/src/core/parser-fallback.js +0 -61
- package/dist/src/core/patch-apply-fuzz.d.ts +0 -57
- package/dist/src/core/patch-apply-fuzz.js +0 -125
- package/dist/src/core/patch-apply.d.ts +0 -88
- package/dist/src/core/patch-apply.js +0 -435
- package/dist/src/core/patch-export-coverage.d.ts +0 -49
- package/dist/src/core/patch-export-coverage.js +0 -73
- package/dist/src/core/patch-export-metadata.d.ts +0 -46
- package/dist/src/core/patch-export-metadata.js +0 -47
- package/dist/src/core/patch-export-update.d.ts +0 -55
- package/dist/src/core/patch-export-update.js +0 -95
- package/dist/src/core/patch-export.d.ts +0 -175
- package/dist/src/core/patch-export.js +0 -312
- package/dist/src/core/patch-files.d.ts +0 -17
- package/dist/src/core/patch-files.js +0 -59
- package/dist/src/core/patch-identifier-suggest.d.ts +0 -26
- package/dist/src/core/patch-identifier-suggest.js +0 -135
- package/dist/src/core/patch-lint-binary.d.ts +0 -45
- package/dist/src/core/patch-lint-binary.js +0 -39
- package/dist/src/core/patch-lint-cache-checkjs.d.ts +0 -45
- package/dist/src/core/patch-lint-cache-checkjs.js +0 -195
- package/dist/src/core/patch-lint-cache.d.ts +0 -79
- package/dist/src/core/patch-lint-cache.js +0 -247
- package/dist/src/core/patch-lint-checkjs-any-import.d.ts +0 -57
- package/dist/src/core/patch-lint-checkjs-any-import.js +0 -91
- package/dist/src/core/patch-lint-checkjs-cache.d.ts +0 -18
- package/dist/src/core/patch-lint-checkjs-cache.js +0 -45
- package/dist/src/core/patch-lint-checkjs-diagnostics.d.ts +0 -17
- package/dist/src/core/patch-lint-checkjs-diagnostics.js +0 -32
- package/dist/src/core/patch-lint-checkjs-resolve.d.ts +0 -31
- package/dist/src/core/patch-lint-checkjs-resolve.js +0 -86
- package/dist/src/core/patch-lint-checkjs.d.ts +0 -182
- package/dist/src/core/patch-lint-checkjs.js +0 -563
- package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +0 -43
- package/dist/src/core/patch-lint-chrome-jsdoc.js +0 -90
- package/dist/src/core/patch-lint-code-lines.d.ts +0 -59
- package/dist/src/core/patch-lint-code-lines.js +0 -105
- package/dist/src/core/patch-lint-creators.d.ts +0 -26
- package/dist/src/core/patch-lint-creators.js +0 -45
- package/dist/src/core/patch-lint-cross.d.ts +0 -232
- package/dist/src/core/patch-lint-cross.js +0 -590
- package/dist/src/core/patch-lint-css.d.ts +0 -27
- package/dist/src/core/patch-lint-css.js +0 -228
- package/dist/src/core/patch-lint-diff-tag.d.ts +0 -51
- package/dist/src/core/patch-lint-diff-tag.js +0 -105
- package/dist/src/core/patch-lint-diff.d.ts +0 -42
- package/dist/src/core/patch-lint-diff.js +0 -100
- package/dist/src/core/patch-lint-file-size.d.ts +0 -57
- package/dist/src/core/patch-lint-file-size.js +0 -62
- package/dist/src/core/patch-lint-forward-registration-extended.d.ts +0 -61
- package/dist/src/core/patch-lint-forward-registration-extended.js +0 -265
- package/dist/src/core/patch-lint-forward-registration.d.ts +0 -71
- package/dist/src/core/patch-lint-forward-registration.js +0 -266
- package/dist/src/core/patch-lint-ignore.d.ts +0 -196
- package/dist/src/core/patch-lint-ignore.js +0 -429
- package/dist/src/core/patch-lint-imports.d.ts +0 -9
- package/dist/src/core/patch-lint-imports.js +0 -90
- package/dist/src/core/patch-lint-jsdoc.d.ts +0 -67
- package/dist/src/core/patch-lint-jsdoc.js +0 -471
- package/dist/src/core/patch-lint-module-registration.d.ts +0 -22
- package/dist/src/core/patch-lint-module-registration.js +0 -97
- package/dist/src/core/patch-lint-mozbuild.d.ts +0 -18
- package/dist/src/core/patch-lint-mozbuild.js +0 -192
- package/dist/src/core/patch-lint-observer.d.ts +0 -37
- package/dist/src/core/patch-lint-observer.js +0 -167
- package/dist/src/core/patch-lint-ownership.d.ts +0 -74
- package/dist/src/core/patch-lint-ownership.js +0 -125
- package/dist/src/core/patch-lint-prettier.d.ts +0 -34
- package/dist/src/core/patch-lint-prettier.js +0 -124
- package/dist/src/core/patch-lint-projection.d.ts +0 -25
- package/dist/src/core/patch-lint-projection.js +0 -43
- package/dist/src/core/patch-lint-queue-types.d.ts +0 -60
- package/dist/src/core/patch-lint-queue-types.js +0 -12
- package/dist/src/core/patch-lint-size-thresholds.d.ts +0 -52
- package/dist/src/core/patch-lint-size-thresholds.js +0 -110
- package/dist/src/core/patch-lint-size.d.ts +0 -117
- package/dist/src/core/patch-lint-size.js +0 -331
- package/dist/src/core/patch-lint-staged-registration.d.ts +0 -98
- package/dist/src/core/patch-lint-staged-registration.js +0 -128
- package/dist/src/core/patch-lint-token-scale.d.ts +0 -65
- package/dist/src/core/patch-lint-token-scale.js +0 -304
- package/dist/src/core/patch-lint-unmanaged-companion.d.ts +0 -106
- package/dist/src/core/patch-lint-unmanaged-companion.js +0 -214
- package/dist/src/core/patch-lint.d.ts +0 -206
- package/dist/src/core/patch-lint.js +0 -533
- package/dist/src/core/patch-lock.d.ts +0 -40
- package/dist/src/core/patch-lock.js +0 -129
- package/dist/src/core/patch-manifest-consistency.d.ts +0 -95
- package/dist/src/core/patch-manifest-consistency.js +0 -256
- package/dist/src/core/patch-manifest-files-affected.d.ts +0 -43
- package/dist/src/core/patch-manifest-files-affected.js +0 -77
- package/dist/src/core/patch-manifest-io.d.ts +0 -199
- package/dist/src/core/patch-manifest-io.js +0 -556
- package/dist/src/core/patch-manifest-key-order.d.ts +0 -23
- package/dist/src/core/patch-manifest-key-order.js +0 -60
- package/dist/src/core/patch-manifest-query.d.ts +0 -55
- package/dist/src/core/patch-manifest-query.js +0 -139
- package/dist/src/core/patch-manifest-resolve.d.ts +0 -21
- package/dist/src/core/patch-manifest-resolve.js +0 -35
- package/dist/src/core/patch-manifest-stage.d.ts +0 -46
- package/dist/src/core/patch-manifest-stage.js +0 -96
- package/dist/src/core/patch-manifest-validate.d.ts +0 -20
- package/dist/src/core/patch-manifest-validate.js +0 -240
- package/dist/src/core/patch-manifest.d.ts +0 -12
- package/dist/src/core/patch-manifest.js +0 -13
- package/dist/src/core/patch-order-legal.d.ts +0 -26
- package/dist/src/core/patch-order-legal.js +0 -88
- package/dist/src/core/patch-parse.d.ts +0 -176
- package/dist/src/core/patch-parse.js +0 -416
- package/dist/src/core/patch-policy-content.d.ts +0 -40
- package/dist/src/core/patch-policy-content.js +0 -219
- package/dist/src/core/patch-policy.d.ts +0 -80
- package/dist/src/core/patch-policy.js +0 -394
- package/dist/src/core/patch-registration-refs.d.ts +0 -41
- package/dist/src/core/patch-registration-refs.js +0 -107
- package/dist/src/core/patch-retired.d.ts +0 -57
- package/dist/src/core/patch-retired.js +0 -92
- package/dist/src/core/patch-source-metadata.d.ts +0 -6
- package/dist/src/core/patch-source-metadata.js +0 -12
- package/dist/src/core/patch-subset.d.ts +0 -18
- package/dist/src/core/patch-subset.js +0 -67
- package/dist/src/core/patch-transform.d.ts +0 -61
- package/dist/src/core/patch-transform.js +0 -198
- package/dist/src/core/preflight-wait.d.ts +0 -22
- package/dist/src/core/preflight-wait.js +0 -62
- package/dist/src/core/process-cpu-time.d.ts +0 -12
- package/dist/src/core/process-cpu-time.js +0 -52
- package/dist/src/core/process-owner.d.ts +0 -9
- package/dist/src/core/process-owner.js +0 -43
- package/dist/src/core/rebase-dry-run.d.ts +0 -48
- package/dist/src/core/rebase-dry-run.js +0 -105
- package/dist/src/core/rebase-from-version.d.ts +0 -46
- package/dist/src/core/rebase-from-version.js +0 -71
- package/dist/src/core/rebase-session.d.ts +0 -100
- package/dist/src/core/rebase-session.js +0 -174
- package/dist/src/core/register-browser-content.d.ts +0 -11
- package/dist/src/core/register-browser-content.js +0 -52
- package/dist/src/core/register-browser-test.d.ts +0 -18
- package/dist/src/core/register-browser-test.js +0 -66
- package/dist/src/core/register-module.d.ts +0 -11
- package/dist/src/core/register-module.js +0 -56
- package/dist/src/core/register-result.d.ts +0 -30
- package/dist/src/core/register-result.js +0 -8
- package/dist/src/core/register-scaffold.d.ts +0 -55
- package/dist/src/core/register-scaffold.js +0 -146
- package/dist/src/core/register-shared-css.d.ts +0 -36
- package/dist/src/core/register-shared-css.js +0 -112
- package/dist/src/core/register-xpcshell-test.d.ts +0 -50
- package/dist/src/core/register-xpcshell-test.js +0 -143
- package/dist/src/core/run-log-redact.d.ts +0 -38
- package/dist/src/core/run-log-redact.js +0 -69
- package/dist/src/core/run-log.d.ts +0 -97
- package/dist/src/core/run-log.js +0 -334
- package/dist/src/core/run-profile.d.ts +0 -57
- package/dist/src/core/run-profile.js +0 -137
- package/dist/src/core/shared-ftl.d.ts +0 -28
- package/dist/src/core/shared-ftl.js +0 -49
- package/dist/src/core/signal-critical.d.ts +0 -38
- package/dist/src/core/signal-critical.js +0 -62
- package/dist/src/core/smoke-patterns.d.ts +0 -81
- package/dist/src/core/smoke-patterns.js +0 -176
- package/dist/src/core/state-file.d.ts +0 -60
- package/dist/src/core/state-file.js +0 -71
- package/dist/src/core/status-binary.d.ts +0 -62
- package/dist/src/core/status-binary.js +0 -133
- package/dist/src/core/status-classify.d.ts +0 -96
- package/dist/src/core/status-classify.js +0 -244
- package/dist/src/core/test-changed-prefs.d.ts +0 -30
- package/dist/src/core/test-changed-prefs.js +0 -93
- package/dist/src/core/test-harness-crash.d.ts +0 -251
- package/dist/src/core/test-harness-crash.js +0 -780
- package/dist/src/core/test-harness-infra.d.ts +0 -32
- package/dist/src/core/test-harness-infra.js +0 -69
- package/dist/src/core/test-harness-output.d.ts +0 -45
- package/dist/src/core/test-harness-output.js +0 -119
- package/dist/src/core/test-harness-signature.d.ts +0 -57
- package/dist/src/core/test-harness-signature.js +0 -35
- package/dist/src/core/test-harness-verdict-notes.d.ts +0 -54
- package/dist/src/core/test-harness-verdict-notes.js +0 -48
- package/dist/src/core/test-host-state.d.ts +0 -14
- package/dist/src/core/test-host-state.js +0 -80
- package/dist/src/core/test-path-scope.d.ts +0 -59
- package/dist/src/core/test-path-scope.js +0 -147
- package/dist/src/core/test-profile-files.d.ts +0 -17
- package/dist/src/core/test-profile-files.js +0 -75
- package/dist/src/core/test-raw-log.d.ts +0 -66
- package/dist/src/core/test-raw-log.js +0 -122
- package/dist/src/core/test-run-completeness.d.ts +0 -97
- package/dist/src/core/test-run-completeness.js +0 -191
- package/dist/src/core/test-stale-check.d.ts +0 -213
- package/dist/src/core/test-stale-check.js +0 -396
- package/dist/src/core/test-stale-exempt.d.ts +0 -40
- package/dist/src/core/test-stale-exempt.js +0 -70
- package/dist/src/core/test-stale-symlink.d.ts +0 -12
- package/dist/src/core/test-stale-symlink.js +0 -39
- package/dist/src/core/test-stall-triage.d.ts +0 -51
- package/dist/src/core/test-stall-triage.js +0 -142
- package/dist/src/core/test-xpcshell-retry.d.ts +0 -35
- package/dist/src/core/test-xpcshell-retry.js +0 -31
- package/dist/src/core/token-category.d.ts +0 -54
- package/dist/src/core/token-category.js +0 -299
- package/dist/src/core/token-coverage.d.ts +0 -12
- package/dist/src/core/token-coverage.js +0 -96
- package/dist/src/core/token-dark-mode.d.ts +0 -64
- package/dist/src/core/token-dark-mode.js +0 -186
- package/dist/src/core/token-docs.d.ts +0 -34
- package/dist/src/core/token-docs.js +0 -102
- package/dist/src/core/token-inventory.d.ts +0 -56
- package/dist/src/core/token-inventory.js +0 -114
- package/dist/src/core/token-lint.d.ts +0 -53
- package/dist/src/core/token-lint.js +0 -131
- package/dist/src/core/token-manager.d.ts +0 -87
- package/dist/src/core/token-manager.js +0 -407
- package/dist/src/core/token-scaffold.d.ts +0 -36
- package/dist/src/core/token-scaffold.js +0 -73
- package/dist/src/core/token-sibling-sheets.d.ts +0 -46
- package/dist/src/core/token-sibling-sheets.js +0 -119
- package/dist/src/core/token-variant.d.ts +0 -90
- package/dist/src/core/token-variant.js +0 -327
- package/dist/src/core/toolchain-preflight.d.ts +0 -90
- package/dist/src/core/toolchain-preflight.js +0 -251
- package/dist/src/core/tree-cow.d.ts +0 -16
- package/dist/src/core/tree-cow.js +0 -71
- package/dist/src/core/tree-guard.d.ts +0 -35
- package/dist/src/core/tree-guard.js +0 -194
- package/dist/src/core/tree-store.d.ts +0 -143
- package/dist/src/core/tree-store.js +0 -478
- package/dist/src/core/typecheck-explain.d.ts +0 -93
- package/dist/src/core/typecheck-explain.js +0 -213
- package/dist/src/core/typecheck-shim.d.ts +0 -90
- package/dist/src/core/typecheck-shim.js +0 -508
- package/dist/src/core/typecheck.d.ts +0 -97
- package/dist/src/core/typecheck.js +0 -457
- package/dist/src/core/wire-destroy.d.ts +0 -25
- package/dist/src/core/wire-destroy.js +0 -126
- package/dist/src/core/wire-dom-fragment.d.ts +0 -44
- package/dist/src/core/wire-dom-fragment.js +0 -139
- package/dist/src/core/wire-init.d.ts +0 -28
- package/dist/src/core/wire-init.js +0 -219
- package/dist/src/core/wire-subscript.d.ts +0 -23
- package/dist/src/core/wire-subscript.js +0 -145
- package/dist/src/core/wire-utils.d.ts +0 -149
- package/dist/src/core/wire-utils.js +0 -338
- package/dist/src/core/xpcshell-appdir.d.ts +0 -157
- package/dist/src/core/xpcshell-appdir.js +0 -299
- package/dist/src/core/xpcshell-profile-dir.d.ts +0 -12
- package/dist/src/core/xpcshell-profile-dir.js +0 -45
- package/dist/src/errors/base.d.ts +0 -217
- package/dist/src/errors/base.js +0 -279
- package/dist/src/errors/build.d.ts +0 -92
- package/dist/src/errors/build.js +0 -166
- package/dist/src/errors/codes.d.ts +0 -74
- package/dist/src/errors/codes.js +0 -74
- package/dist/src/errors/config.d.ts +0 -17
- package/dist/src/errors/config.js +0 -39
- package/dist/src/errors/download.d.ts +0 -66
- package/dist/src/errors/download.js +0 -160
- package/dist/src/errors/furnace.d.ts +0 -20
- package/dist/src/errors/furnace.js +0 -28
- package/dist/src/errors/git.d.ts +0 -65
- package/dist/src/errors/git.js +0 -140
- package/dist/src/errors/patch.d.ts +0 -27
- package/dist/src/errors/patch.js +0 -52
- package/dist/src/errors/rebase.d.ts +0 -42
- package/dist/src/errors/rebase.js +0 -71
- package/dist/src/errors/run.d.ts +0 -16
- package/dist/src/errors/run.js +0 -22
- package/dist/src/index.d.ts +0 -42
- package/dist/src/index.js +0 -32
- package/dist/src/types/cli.d.ts +0 -14
- package/dist/src/types/commands/index.d.ts +0 -6
- package/dist/src/types/commands/index.js +0 -5
- package/dist/src/types/commands/options.d.ts +0 -1372
- package/dist/src/types/commands/options.js +0 -5
- package/dist/src/types/commands/patches.d.ts +0 -352
- package/dist/src/types/commands/patches.js +0 -5
- package/dist/src/types/commands/project.d.ts +0 -51
- package/dist/src/types/commands/project.js +0 -5
- package/dist/src/types/config.d.ts +0 -732
- package/dist/src/types/config.js +0 -15
- package/dist/src/types/furnace.d.ts +0 -422
- package/dist/src/types/furnace.js +0 -26
- package/dist/src/types/index.d.ts +0 -5
- package/dist/src/types/index.js +0 -5
- package/dist/src/types/json.d.ts +0 -22
- package/dist/src/types/json.js +0 -11
- package/dist/src/types/typecheck.d.ts +0 -51
- package/dist/src/types/typecheck.js +0 -14
- package/dist/src/utils/assert.d.ts +0 -34
- package/dist/src/utils/assert.js +0 -61
- package/dist/src/utils/build-info.d.ts +0 -30
- package/dist/src/utils/build-info.js +0 -99
- package/dist/src/utils/child-env.d.ts +0 -28
- package/dist/src/utils/child-env.js +0 -27
- package/dist/src/utils/concurrency.d.ts +0 -8
- package/dist/src/utils/concurrency.js +0 -32
- package/dist/src/utils/elapsed.d.ts +0 -2
- package/dist/src/utils/elapsed.js +0 -23
- package/dist/src/utils/errors.d.ts +0 -39
- package/dist/src/utils/errors.js +0 -67
- package/dist/src/utils/fs.d.ts +0 -113
- package/dist/src/utils/fs.js +0 -337
- package/dist/src/utils/hash.d.ts +0 -12
- package/dist/src/utils/hash.js +0 -16
- package/dist/src/utils/line-dispatch.d.ts +0 -15
- package/dist/src/utils/line-dispatch.js +0 -48
- package/dist/src/utils/logger.d.ts +0 -109
- package/dist/src/utils/logger.js +0 -270
- package/dist/src/utils/machine-output.d.ts +0 -12
- package/dist/src/utils/machine-output.js +0 -33
- package/dist/src/utils/options.d.ts +0 -155
- package/dist/src/utils/options.js +0 -312
- package/dist/src/utils/package-root.d.ts +0 -21
- package/dist/src/utils/package-root.js +0 -70
- package/dist/src/utils/parse.d.ts +0 -117
- package/dist/src/utils/parse.js +0 -214
- package/dist/src/utils/path-glob.d.ts +0 -15
- package/dist/src/utils/path-glob.js +0 -47
- package/dist/src/utils/paths.d.ts +0 -31
- package/dist/src/utils/paths.js +0 -80
- package/dist/src/utils/platform.d.ts +0 -9
- package/dist/src/utils/platform.js +0 -14
- package/dist/src/utils/process-group.d.ts +0 -42
- package/dist/src/utils/process-group.js +0 -190
- package/dist/src/utils/process-input.d.ts +0 -27
- package/dist/src/utils/process-input.js +0 -46
- package/dist/src/utils/process.d.ts +0 -293
- package/dist/src/utils/process.js +0 -593
- package/dist/src/utils/ps-duration.d.ts +0 -31
- package/dist/src/utils/ps-duration.js +0 -70
- package/dist/src/utils/regex.d.ts +0 -39
- package/dist/src/utils/regex.js +0 -109
- package/dist/src/utils/sleep.d.ts +0 -25
- package/dist/src/utils/sleep.js +0 -30
- package/dist/src/utils/stdio-drain.d.ts +0 -28
- package/dist/src/utils/stdio-drain.js +0 -54
- package/dist/src/utils/validation.d.ts +0 -182
- package/dist/src/utils/validation.js +0 -394
- package/docs/lifecycle-invariants.md +0 -523
- package/docs/run-logs.md +0 -122
- package/docs/verification-trees.md +0 -49
- /package/dist/src/{types/cli.js → cli/context.js} +0 -0
package/docs/configuration.md
CHANGED
|
@@ -2,805 +2,346 @@
|
|
|
2
2
|
|
|
3
3
|
# Configuration
|
|
4
4
|
|
|
5
|
-
`fireforge.json` at the
|
|
6
|
-
`furnace.json` holds component configuration. This file covers the settings
|
|
7
|
-
whose behavior needs more than a schema line, plus the environment variables
|
|
8
|
-
FireForge reads.
|
|
9
|
-
|
|
10
|
-
## `firefox`, the source pin
|
|
11
|
-
|
|
12
|
-
`firefox.version`, together with `firefox.product` and optionally
|
|
13
|
-
`firefox.sha256` and `firefox.candidate`, is the source pin that
|
|
14
|
-
`fireforge download` resolves an archive from. `fireforge source set` writes
|
|
15
|
-
it.
|
|
16
|
-
|
|
17
|
-
The pin lives in `fireforge.json` next to hand-maintained policy sections,
|
|
18
|
-
which is worth knowing when you revert that file. Running
|
|
19
|
-
`git checkout -- fireforge.json` after an accidental reformat also reverts an
|
|
20
|
-
uncommitted pin, and the tree is then building a different version than the
|
|
21
|
-
config claims.
|
|
22
|
-
|
|
23
|
-
`fireforge source set`, `fireforge config <key> <value>` and `furnace init`
|
|
24
|
-
edit `fireforge.json` in place. Only the values that change
|
|
25
|
-
are rewritten. Indentation, key order, and objects or arrays kept on one
|
|
26
|
-
line stay as they are, so a pin move is a diff of the `firefox` block alone.
|
|
27
|
-
New keys follow the layout of the object they land in.
|
|
28
|
-
|
|
29
|
-
`fireforge doctor`'s "Source pin matches engine" check compares the pin with
|
|
30
|
-
the engine's committed `browser/config/version.txt`. That file never carries
|
|
31
|
-
the `esr` suffix, so a trailing `esr` is dropped from the pin for this
|
|
32
|
-
comparison (a `153.4.0esr` pin matches `153.4.0`). The comparison with the
|
|
33
|
-
version the last download recorded keeps the full pin.
|
|
34
|
-
|
|
35
|
-
### Archive integrity: `firefox.sha256` and `firefox.allowUnverifiedDownload`
|
|
36
|
-
|
|
37
|
-
Every fresh download is checked against Mozilla's published `SHA256SUMS` for
|
|
38
|
-
the release. A mismatch fails the download and discards the archive. The
|
|
39
|
-
check also fails closed when the published digest cannot be obtained at all:
|
|
40
|
-
a 404, a captive portal answering with an HTML page, a dropped connection, or
|
|
41
|
-
a timeout. TLS alone is thin trust for the artifact that becomes the git
|
|
42
|
-
baseline every patch is built on, and "the checksum host was unreachable" is
|
|
43
|
-
exactly the condition someone positioned on the network can arrange.
|
|
44
|
-
|
|
45
|
-
- `firefox.sha256` pins the digest. It takes precedence over the published
|
|
46
|
-
file and is the right answer for reproducible builds and offline mirrors:
|
|
47
|
-
obtain it out of band, and the download verifies with no network beyond the
|
|
48
|
-
archive itself.
|
|
49
|
-
- `firefox.allowUnverifiedDownload: true` accepts a download when the
|
|
50
|
-
published digest is unavailable, with a loud warning. This disables the
|
|
51
|
-
integrity check for that case, so the archive is trusted on TLS alone. Use
|
|
52
|
-
it only for a mirror you already trust, and prefer pinning `sha256`
|
|
53
|
-
instead. A digest that is fetched and does not match is rejected either
|
|
54
|
-
way. The setting is ignored when `sha256` is set.
|
|
55
|
-
|
|
56
|
-
`fireforge doctor` reports the pin beside what the checkout actually is (the
|
|
57
|
-
engine's own `browser/config/version.txt` and the version the last download
|
|
58
|
-
recorded) and warns when they disagree. It is a report, not a lock, since a
|
|
59
|
-
tree may legitimately be mid-migration. `product`, `sha256` and `candidate`
|
|
60
|
-
have no recorded counterpart on disk, so the check does not claim to have
|
|
61
|
-
verified them.
|
|
62
|
-
|
|
63
|
-
## External toolchains
|
|
64
|
-
|
|
65
|
-
Projects with generated asset prerequisites can declare opt-in
|
|
66
|
-
`externalToolchains`. `fireforge doctor` reports missing required tools as
|
|
67
|
-
errors and missing optional tools as warnings.
|
|
68
|
-
|
|
69
|
-
Seasonal branding on macOS, for example, can declare Apple's Icon Composer
|
|
70
|
-
tool at
|
|
71
|
-
`/Applications/Xcode.app/Contents/Applications/Icon Composer.app/Contents/Executables/ictool`,
|
|
72
|
-
plus `actool` via `xcrun`, `sips`, and `iconutil`.
|
|
73
|
-
|
|
74
|
-
On macOS, `fireforge doctor` also checks that the bootstrapped clang
|
|
75
|
-
(`~/.mozbuild/clang`, or under `MOZBUILD_STATE_PATH`) can link against the
|
|
76
|
-
SDK the build will use. That is the SDK `engine/mozconfig` selects with
|
|
77
|
-
`--with-macos-sdk`, resolved by sourcing the mozconfig the way mach does,
|
|
78
|
-
or `xcrun --show-sdk-path` when it names none. The check links a trivial C
|
|
79
|
-
program through the toolchain's lld in a temp directory. When that fails, it
|
|
80
|
-
reports a warning with clang's first error and lists the SDKs installed
|
|
81
|
-
under the mozbuild state directory, the Command Line Tools and the active
|
|
82
|
-
Xcode. An Xcode update can ship an SDK the pinned toolchain cannot read, and
|
|
83
|
-
`mach configure` then dies at its linker probe with nothing but `config.log`
|
|
84
|
-
saying why. The check does nothing on other platforms and when no clang has
|
|
85
|
-
been bootstrapped.
|
|
5
|
+
A project is configured by `fireforge.json` at its root, and its components by `furnace.json` beside it. Both are checked against a schema on every command: a wrong type or value names the key path, and an unknown key is refused with the nearest known key. Invalid configuration exits 2.
|
|
86
6
|
|
|
87
|
-
|
|
7
|
+
Read and change `fireforge.json` through the schema:
|
|
88
8
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
lint instead of throwing at runtime. The same shim backs
|
|
96
|
-
`fireforge typecheck`.
|
|
97
|
-
|
|
98
|
-
- `patchLint.checkJsExtraShim` adds members to the structured shim globals
|
|
99
|
-
via TypeScript interface merging, for example
|
|
100
|
-
`interface ChromeUtilsShim { newApi(): any }`.
|
|
101
|
-
- `patchLint.checkJsTestFiles: true` extends the pass to patch-owned test
|
|
102
|
-
`.js` files (`browser_*`, `test_*`, `xpcshell_*`, and `/test/` paths). Each
|
|
103
|
-
one is checked as its own small script-scope program against a loose
|
|
104
|
-
built-in harness shim.
|
|
105
|
-
- `patchLint.checkJsTestShim` points at a project `.d.ts` whose typed
|
|
106
|
-
declarations (a real `TestUtils` interface, say) override the loose
|
|
107
|
-
baseline, so calls to harness members that do not exist fail at export
|
|
108
|
-
time.
|
|
109
|
-
- `patchLint.litTypes: true` (default off, requires `checkJs`) types Lit in
|
|
110
|
-
the per-patch programs' shim, as `typecheck.litTypes` does for the
|
|
111
|
-
project pass (see [`typecheck`](#typecheck)). Set both to the same value,
|
|
112
|
-
so a widget class has Lit's members, such as `updateComplete`, and a
|
|
113
|
-
closed member list in both passes.
|
|
114
|
-
- `patchLint.prettier` (`'off'`, `'warning'` or `'error'`, default `'off'`)
|
|
115
|
-
runs the project's configured Prettier over patch-owned `.sys.mjs`
|
|
116
|
-
modules. It runs from inside `engine/`, so `engine/.prettierrc*` and
|
|
117
|
-
`engine/.prettierignore` decide the outcome. The same command run from the
|
|
118
|
-
repo root can report a false pass when the root `.prettierignore` excludes
|
|
119
|
-
`engine/`. Prettier is resolved from `engine/node_modules`, then the
|
|
120
|
-
project's, then `npx --no-install`. Left at `'off'`, formatting is out of
|
|
121
|
-
scope for the per-patch tier, and no other tier checks `.sys.mjs`
|
|
122
|
-
formatting either.
|
|
123
|
-
- `patchLint.forwardRegistration` (`'support-files'` or `'extended'`,
|
|
124
|
-
default `'support-files'`) picks which carriers the `forward-registration`
|
|
125
|
-
queue rule checks for a line naming a file that only a later patch
|
|
126
|
-
creates. The default checks test-manifest `support-files`. `'extended'`
|
|
127
|
-
also checks:
|
|
128
|
-
- jar.mn pair lines (the source in parentheses, relative to the jar.mn);
|
|
129
|
-
- moz.build path tokens (a quoted string with a `.` or `/`, relative to
|
|
130
|
-
the moz.build);
|
|
131
|
-
- test-manifest section headers and `head`;
|
|
132
|
-
- `customElements.js` `chrome://<pkg>/content/…` URLs, resolved through
|
|
133
|
-
the jar.mn lines the same queue adds.
|
|
134
|
-
|
|
135
|
-
A line whose target cannot be resolved without the build system is left
|
|
136
|
-
alone: a `%` or `@AB_CD@` substitution, `**`, `!`, a path that leaves the
|
|
137
|
-
tree, or a chrome URL no queue jar.mn line packages. Each finding prints
|
|
138
|
-
the same paste-and-run `patch staged-dependency --add --kind registration`
|
|
139
|
-
command as the `support-files` arm, ending in a `--reason '<why …>'`
|
|
140
|
-
placeholder to fill in. Each finding also carries the declaration as
|
|
141
|
-
structured `stagedDeclarations`, so a `lint --per-patch --report` file
|
|
142
|
-
can be applied with one `patch staged-dependency <patch> --add --from
|
|
143
|
-
<report>` per patch instead of one call per edge. The setting is opt-in because a queue
|
|
144
|
-
that was never checked for these carriers can carry many such edges, and a new error would red a
|
|
145
|
-
`--max-warnings 0` gate on install. The same census is on the public API as
|
|
146
|
-
`findForwardRegistrations(patchesDir, { scope })`, which defaults to
|
|
147
|
-
`'extended'`, for a consumer that keeps its own ratchet over these edges.
|
|
148
|
-
|
|
149
|
-
- `patchLint.fileSizeThresholds` tunes the `file-too-large` line counts per
|
|
150
|
-
file class:
|
|
151
|
-
|
|
152
|
-
```json
|
|
153
|
-
{
|
|
154
|
-
"patchLint": {
|
|
155
|
-
"fileSizeThresholds": {
|
|
156
|
-
"general": { "notice": 500, "warning": 800, "error": 900 },
|
|
157
|
-
"test": { "warning": 1500 }
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
Every field is optional and merges over the defaults (general
|
|
164
|
-
`500/750/900`, test `1200/1400/1600`). The merged triple has to satisfy
|
|
165
|
-
`notice <= warning <= error`, which is validated at config load. Under
|
|
166
|
-
the recommended gate posture `--max-warnings 0`, the `warning` band
|
|
167
|
-
is a hard failure rather than a soft limit, which is what these thresholds
|
|
168
|
-
exist to let you move. A notice is the design target: advisory, and it
|
|
169
|
-
never fails `--max-warnings 0`. Only the error band suggests splitting.
|
|
170
|
-
|
|
171
|
-
- `patchLint.fileSizeMetric` (`'raw'` or `'code'`, default `'raw'`) picks
|
|
172
|
-
what `file-too-large` counts. `'raw'` counts every line, the way `wc -l`
|
|
173
|
-
does. `'code'` blanks comments with acorn's tokenizer (module first, then
|
|
174
|
-
script, since chrome subscripts are scripts) and counts the lines left
|
|
175
|
-
non-blank, so JSDoc and blank lines do not count. A file acorn cannot
|
|
176
|
-
tokenize is counted in raw lines, the upper bound, and a
|
|
177
|
-
`file-size-unparsed` notice names it. Every message says which unit it
|
|
178
|
-
counted ("lines" or "code lines"). The counter is on the public API as
|
|
179
|
-
`countCodeLines(content)`, next to `resolveFileSizeThresholds` and
|
|
180
|
-
`isTestFile`.
|
|
181
|
-
|
|
182
|
-
- `patchLint.patchSizeThresholds` tunes `large-patch-lines` and
|
|
183
|
-
`large-patch-files` per tier (`general`, `test`, `branding`), each with a
|
|
184
|
-
`lines` and a `files` triple:
|
|
185
|
-
|
|
186
|
-
```json
|
|
187
|
-
{
|
|
188
|
-
"patchLint": {
|
|
189
|
-
"patchSizeThresholds": {
|
|
190
|
-
"general": {
|
|
191
|
-
"lines": { "notice": 1000, "warning": 2000, "error": 4000 },
|
|
192
|
-
"files": { "notice": 8, "warning": 12, "error": 24 }
|
|
193
|
-
},
|
|
194
|
-
"branding": { "files": { "error": 90 } }
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
Every field is optional and merges over the defaults, and each merged
|
|
201
|
-
triple has to satisfy `notice <= warning <= error`. The line defaults are
|
|
202
|
-
general `800/1500/3000`, test `1500/3000/6000` and branding
|
|
203
|
-
`8000/18000/30000`. Files warn above 5 (general, test) or 60 (branding).
|
|
204
|
-
The files triple has no notice or error band unless you set one: an unset
|
|
205
|
-
`files.notice` follows `files.warning`, and an unset `files.error` never
|
|
206
|
-
fires. The `branding` tier applies to a patch whose files all sit under
|
|
207
|
-
`browser/branding/` (plus `browser/moz.configure` and
|
|
208
|
-
`browser/confvars.sh`), or one marked `"tier": "branding"` in
|
|
209
|
-
`patches.json` (`re-export --tier branding`). A patch whose files are all
|
|
210
|
-
tests takes the `test` tier, and wins over branding.
|
|
211
|
-
`getPatchSizeThresholds(tier, config)` returns the configured values.
|
|
212
|
-
|
|
213
|
-
- `patchLint.patchSizeMetric` (`'diff'` or `'addedCode'`, default `'diff'`)
|
|
214
|
-
picks what `large-patch-lines` counts. `'diff'` counts every non-binary
|
|
215
|
-
line of the unified diff, headers and context included. `'addedCode'`
|
|
216
|
-
counts only added lines that are neither blank nor comment, judged on
|
|
217
|
-
each file's post-image in `engine/` (a hunk can start inside a block
|
|
218
|
-
comment). Comments are recognised per file kind: JS through acorn, CSS
|
|
219
|
-
block comments, `<!-- -->` in markup, and whole-line `#` comments in
|
|
220
|
-
manifests, `moz.build`, Fluent and similar. In CSS it also skips lines
|
|
221
|
-
inside a Furnace `@fireforge-include` … `@fireforge-end-include`
|
|
222
|
-
expansion: they are a copy of a shared fragment. Under `'addedCode'`, a
|
|
223
|
-
general-tier patch that carries tests counts per class: lines in test
|
|
224
|
-
files against the test tier's `lines`, everything else against the
|
|
225
|
-
general tier's, each with its own finding.
|
|
226
|
-
|
|
227
|
-
- `patchLint.patchSizeRegistrationFiles` lists globs whose files count
|
|
228
|
-
toward neither `large-patch-lines` nor `large-patch-files`, for example
|
|
229
|
-
`["jar.mn", "moz.build", "components.conf", "*.toml", "jsconfig*.json"]`.
|
|
230
|
-
A glob without a `/` matches the basename, one with a `/` the
|
|
231
|
-
engine-relative path; `*` stays within a path segment and `**` crosses
|
|
232
|
-
segments. Default: none.
|
|
233
|
-
|
|
234
|
-
- `patchLint.tokenScales` (default unset) puts property families on a token
|
|
235
|
-
scale. In every CSS file a patch creates, a declaration of a governed
|
|
236
|
-
property must resolve to the scale (`token-scale`, an error):
|
|
237
|
-
|
|
238
|
-
```json
|
|
239
|
-
{
|
|
240
|
-
"patchLint": {
|
|
241
|
-
"tokenScales": [
|
|
242
|
-
{
|
|
243
|
-
"properties": ["gap", "row-gap", "column-gap", "padding*", "margin*"],
|
|
244
|
-
"prefix": "--mybrowser-space-",
|
|
245
|
-
"allowLiterals": ["0", "auto", "*%", "1px"],
|
|
246
|
-
"allow": ["--mybrowser-page-padding"]
|
|
247
|
-
},
|
|
248
|
-
{ "properties": ["z-index"], "prefix": "--mybrowser-z-" }
|
|
249
|
-
]
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
`properties` takes exact names or a `*`-suffixed prefix. Each value atom
|
|
255
|
-
must be a `var()` of a `prefix` token or of an `allow` name (exact, or
|
|
256
|
-
`*`-suffixed such as `--moz-*`), a literal matching `allowLiterals` (`*`
|
|
257
|
-
is a wildcard), or a CSS-wide keyword (`inherit`, `initial`, `unset`,
|
|
258
|
-
`revert`, `revert-layer`). A `var()` fallback is held to the same scale,
|
|
259
|
-
so `var(--mybrowser-gap, 7px)` fails on `7px`. `calc()`, `min()`, `max()`
|
|
260
|
-
and `clamp()` are transparent. Files the patch modifies rather than
|
|
261
|
-
creates are not checked, and a line carrying
|
|
262
|
-
`fireforge-ignore: token-scale` is skipped. Declarations inside
|
|
263
|
-
descriptor at-rules (`@font-face`, `@counter-style`, `@property`,
|
|
264
|
-
`@font-feature-values`, `@font-palette-values`, `@page` and its margin
|
|
265
|
-
boxes) are descriptors, not properties, and are not judged.
|
|
266
|
-
|
|
267
|
-
A scale also takes:
|
|
268
|
-
|
|
269
|
-
- `prefix` as a list (`["--mybrowser-space-", "--mybrowser-gap-"]`) for a
|
|
270
|
-
scale whose steps are spelled more than one way.
|
|
271
|
-
- `allowInCalc`: literals legal only inside a math function, such as the
|
|
272
|
-
unitless multiplier in `calc(var(--mybrowser-space-2) * 2)`, without
|
|
273
|
-
also passing a bare `2`. Same wildcard syntax as `allowLiterals`.
|
|
274
|
-
- `offsetCap`: the px a declaration may subtract from the scale's tokens
|
|
275
|
-
inside a math function (`calc(var(--mybrowser-space-4) - 1px)`), summed
|
|
276
|
-
over the declaration. A px value anywhere else still fails.
|
|
277
|
-
- `exclude`: engine-relative globs of files the scale does not govern,
|
|
278
|
-
such as a vendored minified sheet, so its patch needs no patch-wide
|
|
279
|
-
waiver.
|
|
280
|
-
- `minFiles`: the fewest patch-created stylesheets (outside `exclude`)
|
|
281
|
-
that must declare one of the scale's properties. Under it the queue
|
|
282
|
-
fails `token-scale-vacuous` (an error on `fireforge.json` in
|
|
283
|
-
`lint --per-patch`), so a scale that matches nothing, or a scan set a
|
|
284
|
-
move emptied, cannot pass by judging nothing. A `--patches` run does
|
|
285
|
-
not judge the floor.
|
|
286
|
-
- `allowValues`: reviewed declarations accepted as written, as
|
|
287
|
-
`{ "property": "margin-inline-start", "value": "-3px", "reason": "…" }`.
|
|
288
|
-
A declaration whose property and value match an entry (whitespace runs
|
|
289
|
-
collapsed) passes in every file the scale governs, so a reviewed raw
|
|
290
|
-
value can move to another sheet without an `exclude` for it. The
|
|
291
|
-
property must be one the scale governs, and `reason` is required.
|
|
292
|
-
|
|
293
|
-
An unknown key in a scale is refused.
|
|
9
|
+
```sh
|
|
10
|
+
npx fireforge config get firefox.version
|
|
11
|
+
npx fireforge config get gate.lanes[0].files
|
|
12
|
+
npx fireforge config set build.jobs 12
|
|
13
|
+
npx fireforge config set patchLint.rules '{"jsdoc-class-method": "warning"}'
|
|
14
|
+
```
|
|
294
15
|
|
|
295
|
-
|
|
16
|
+
`config set` reads the value as JSON when the key accepts that (`4`, `true`, `["a"]`) and as text otherwise, validates the whole file with the change, and rewrites only the changed value, keeping the rest of the file's layout.
|
|
296
17
|
|
|
297
|
-
`
|
|
298
|
-
as whole projects. `typecheck.extraShim` and `typecheck.projectOverrides`
|
|
299
|
-
add declarations to the Firefox-globals shim, for every project or for one.
|
|
300
|
-
When `patchLint.checkJs` is on, the same command also runs the per-patch
|
|
301
|
-
checkJs pass that `export` enforces, so a green `typecheck` means
|
|
302
|
-
export-clean types.
|
|
303
|
-
|
|
304
|
-
`--project <path>` checks one jsconfig instead of the configured list,
|
|
305
|
-
with every other setting of the block: `extraShim`, `litTypes`,
|
|
306
|
-
`undefinedIdentifiers`, and the `projectOverrides` entry for that project.
|
|
307
|
-
A `projectOverrides` key matches the project by the file it names, so
|
|
308
|
-
`./a/jsconfig.json` and an absolute path both find the `a/jsconfig.json`
|
|
309
|
-
entry.
|
|
310
|
-
|
|
311
|
-
The two passes see different programs. The project pass checks each
|
|
312
|
-
project's files with all of the project's roots and the shim settings
|
|
313
|
-
above. A per-patch program checks only a patch-created `.sys.mjs` module,
|
|
314
|
-
in one program with the queue's other patch-owned modules, or a
|
|
315
|
-
patch-created test script, in its own program (see below). A
|
|
316
|
-
patch-modified upstream file, a widget `.mjs` and a chrome script are not
|
|
317
|
-
checked per patch at all. `fireforge typecheck --explain <file>` runs no
|
|
318
|
-
check and prints both views of one file:
|
|
319
|
-
|
|
320
|
-
- each configured project, whether it lists the file as a root, and its
|
|
321
|
-
`litTypes`, effective extra shim (naming the `projectOverrides` entry
|
|
322
|
-
that set it) and `undefinedIdentifiers`;
|
|
323
|
-
- whether a per-patch program checks it: the patches that create or modify
|
|
324
|
-
it, the program it is a root of or why it has none, and for a test its
|
|
325
|
-
heads; the shim settings; the modules its imports can resolve to; and
|
|
326
|
-
each `resource:`/`chrome:` import with what it resolves to, or `any`.
|
|
327
|
-
|
|
328
|
-
The file may be given relative to the project root, relative to `engine/`,
|
|
329
|
-
or as an absolute path. With `--project`, only that project is shown.
|
|
330
|
-
`re-export` ends a run that wrote a patch with per-patch checkJs files with
|
|
331
|
-
a line saying the project pass is still owed.
|
|
332
|
-
|
|
333
|
-
Project build info is written in `.fireforge/typecheck/`, outside `engine/`,
|
|
334
|
-
with a key covering the shim, TypeScript version, compiler options and
|
|
335
|
-
FireForge version. Diagnostics always use a fresh project
|
|
336
|
-
program: prior incremental diagnostic state is never restored. Cached and
|
|
337
|
-
`--no-cache` runs therefore check the same complete file set. `--no-cache`
|
|
338
|
-
also disables build-info writes. A jsconfig's own `incremental` and
|
|
339
|
-
`tsBuildInfoFile` are ignored.
|
|
340
|
-
|
|
341
|
-
`typecheck.litTypes: true` (default off) types Lit in the
|
|
342
|
-
shim: `LitElement` and the helpers of
|
|
343
|
-
`chrome://global/content/vendor/lit.all.mjs`, and `MozLitElement` of
|
|
344
|
-
`chrome://global/content/lit-utils.mjs`. The element classes carry closed
|
|
345
|
-
member lists, as `Cu` does, so a misspelt member of a widget host is an
|
|
346
|
-
error rather than `any`. Template helpers and directives stay loose. It is
|
|
347
|
-
off by default because a reactive property declared only in
|
|
348
|
-
`static properties` or `static queries` then needs a declaration to be
|
|
349
|
-
known. The shim declares the global type
|
|
350
|
-
`MozLitElementWith<Extra>`: a widget casts its base to it, and its
|
|
351
|
-
instances carry `Extra` beside MozLitElement's members. A query getter
|
|
352
|
-
cannot be declared any other way: a class field redefines the getter
|
|
353
|
-
MozLitElement installs and throws, and a constructor declaration reads it
|
|
354
|
-
before `renderRoot` exists.
|
|
355
|
-
|
|
356
|
-
```js
|
|
357
|
-
const Base = /** @type {MozLitElementWith<{ input: HTMLInputElement }>} */ (MozLitElement);
|
|
358
|
-
export class MozSearch extends Base {
|
|
359
|
-
static queries = { input: 'input' };
|
|
360
|
-
}
|
|
361
|
-
```
|
|
18
|
+
`config set` does not change `mode`, because the mode moves together with the `source` block and the files that hold the owned changes; it fails with the code `config-mode-switch` (exit 8) and names the route. `fireforge migrate` converts a patch-mode project to source mode. Going back is `fireforge export`, then a hand edit that sets `mode` to `patches` and removes `source` ([source-workflow.md](source-workflow.md#coming-from-patch-mode-going-back)).
|
|
362
19
|
|
|
363
|
-
|
|
364
|
-
`litTypes`, `MozLitElementWith<Extra>` is `any`, as the base is, so the
|
|
365
|
-
same source checks with and without it. A project shim can add members by
|
|
366
|
-
merging `interface LitElementShimMembers`; a jsconfig `paths` entry that maps these
|
|
367
|
-
URLs to real sources takes precedence.
|
|
368
|
-
|
|
369
|
-
Per-patch checkJs gives each test script its own program. A
|
|
370
|
-
test's `resource:///` and `chrome://` imports (including a
|
|
371
|
-
`typeof import("…")` cast) resolve to the modules the queue creates up to
|
|
372
|
-
the test's own patch, so a test of an earlier patch's module is checked
|
|
373
|
-
against its real types. A module a later patch creates, an upstream module
|
|
374
|
-
and a basename two patches create still type as `any`, and an implicit-any
|
|
375
|
-
finding on such an import names it. A type-member reference through such
|
|
376
|
-
an import, `import("…").Type` or `typeof import("…").member`, types as
|
|
377
|
-
`any` too, in every per-patch program. In the project pass the same
|
|
378
|
-
reference is an error ("Namespace '"resource:*"' has no exported member")
|
|
379
|
-
unless the project's jsconfig `paths` resolve the URL, as the entries
|
|
380
|
-
Furnace maintains do for `chrome://global/content/elements/` (see
|
|
381
|
-
[`furnace.md`](furnace.md#typed-cross-module-imports)).
|
|
382
|
-
|
|
383
|
-
Both project and per-patch checkJs provide Gecko DOM constructor
|
|
384
|
-
`isInstance(value)` predicates with instance narrowing, plus
|
|
385
|
-
`MouseEvent.MOZ_SOURCE_PEN`. These declarations retain normal DOM member
|
|
386
|
-
checking; they do not turn constructors or instances into `any`.
|
|
20
|
+
Paths are project-relative unless the table says engine-relative (a path inside Firefox, such as `browser/base/content/browser.js`). Neither kind may be absolute or climb out with `..`. Globs use `*` within one path segment and `**` across segments.
|
|
387
21
|
|
|
388
|
-
##
|
|
22
|
+
## Identity and mode
|
|
389
23
|
|
|
390
|
-
|
|
391
|
-
|
|
24
|
+
| Key | Type | Default | Meaning |
|
|
25
|
+
| --------------- | ------------------------------------------------------- | ------------------------ | ----------------------------------------------------------------------------------------------- |
|
|
26
|
+
| `name` | string | required | Display name of the browser |
|
|
27
|
+
| `vendor` | string | required | Vendor or company name |
|
|
28
|
+
| `appId` | string | required | Application ID in reverse-domain form, such as `org.mybrowser.browser` |
|
|
29
|
+
| `binaryName` | string | required | Executable name: a lowercase letter, then lowercase letters, digits and hyphens |
|
|
30
|
+
| `license` | `EUPL-1.2` \| `MPL-2.0` \| `0BSD` \| `GPL-2.0-or-later` | `EUPL-1.2` | SPDX identifier of the project license; the license header lint expects on created files |
|
|
31
|
+
| `markerComment` | string | `binaryName` in capitals | Marker appended as a comment to lines FireForge writes into upstream files, such as `MYBROWSER` |
|
|
32
|
+
| `mode` | `patches` \| `source` | `patches` | Where owned changes live: a patch queue, or tracked files under `source.root` |
|
|
392
33
|
|
|
393
|
-
|
|
394
|
-
a new patch must fill an existing gap or take the number right after the
|
|
395
|
-
range's last patch. A patch that has to leave the queue without opening a
|
|
396
|
-
gap is removed with `patch retire`, which keeps its order as a retired slot.
|
|
397
|
-
An order a peer has claimed but not exported yet is held with `patch
|
|
398
|
-
reserve`, so a later order can be exported without a gap in between (see
|
|
399
|
-
[`patch-workflow.md`](patch-workflow.md#queue-maintenance)).
|
|
34
|
+
The identity strings are substituted into the mozconfig templates (`${name}`, `${vendor}`, `${appId}`, `${binaryName}`), so they refuse control characters. `fireforge setup` proposes the same default license and writes `license` explicitly.
|
|
400
35
|
|
|
401
|
-
|
|
36
|
+
## `source`
|
|
402
37
|
|
|
403
|
-
|
|
404
|
-
`verify` and `lint --per-patch` report them (as `patch-policy/<code>` in
|
|
405
|
-
lint), at the severity `mutationMode` implies. Mutating commands do not
|
|
406
|
-
evaluate them, because those commands check a projected manifest before
|
|
407
|
-
any body exists.
|
|
38
|
+
Present exactly when `mode` is `source` ([source-workflow.md](source-workflow.md)).
|
|
408
39
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
"upstreamAllowlist": [
|
|
415
|
-
"browser/moz.configure",
|
|
416
|
-
{ "path": "**/jar.mn", "addOnly": true },
|
|
417
|
-
{ "path": "**/moz.build", "addOnly": true }
|
|
418
|
-
],
|
|
419
|
-
"scopeRules": [
|
|
420
|
-
{ "filenamePattern": "-tests\\.patch$", "files": ["**/test/**", "**/tests/**", "**/*.toml"] }
|
|
421
|
-
],
|
|
422
|
-
"verifyDocumentPaths": true
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
```
|
|
40
|
+
| Key | Type | Default | Meaning |
|
|
41
|
+
| ----------------------- | ------ | -------- | ---------------------------------------------------------------------- |
|
|
42
|
+
| `source.root` | string | required | Directory whose files supply the engine files of the same path (`src`) |
|
|
43
|
+
| `source.metadataRoot` | string | required | Directory holding the override records (`.fireforge-sources`) |
|
|
44
|
+
| `source.pristineCommit` | string | required | Commit the pinned Firefox archive imports as |
|
|
426
45
|
|
|
427
|
-
|
|
428
|
-
non-reserved patch may modify (`upstream-allowlist`). A file is upstream
|
|
429
|
-
when no patch in the queue creates it, so fork-owned files never need an
|
|
430
|
-
entry. A patch in a `reservedRanges` band is exempt: its allowlist entry's
|
|
431
|
-
`files` already governs it. Globs are anchored engine-relative paths: `*`
|
|
432
|
-
stays within a segment, `**` spans segments, so `*.toml` matches only a
|
|
433
|
-
top-level file and `**/*.toml` matches one anywhere.
|
|
434
|
-
- An object entry with `addOnly: true` puts matching files in
|
|
435
|
-
registration-only mode (`add-only`): the patch may only add lines, every
|
|
436
|
-
non-blank added line must contain the marker (the entry's `marker`, else
|
|
437
|
-
`addOnlyMarker`, matched case-insensitively), and deleting the file or
|
|
438
|
-
changing it as binary is refused. When several entries match a file, any
|
|
439
|
-
add-only one makes it add-only.
|
|
440
|
-
- An add-only entry's `retiredPaths` lists paths whose registrations a
|
|
441
|
-
patch may remove, for a reviewed retirement. A removed line that contains
|
|
442
|
-
one of them (a plain substring, such as `fxa/fxa-logo.svg`) is not counted
|
|
443
|
-
as a removal; any other removal still fails `add-only`. `retiredPaths` on
|
|
444
|
-
an entry without `addOnly` is refused.
|
|
445
|
-
- `scopeRules` limits a class of patch to the files its globs name
|
|
446
|
-
(`scope`). A rule selects patches by `category`, `filenamePattern` (a
|
|
447
|
-
regular expression over the patch filename), or both. The example keeps a
|
|
448
|
-
`-tests` patch to test directories and test manifests.
|
|
449
|
-
- `verifyDocumentPaths: true` requires each reserved allowlist entry's `adr`
|
|
450
|
-
and `documentation` path to exist under the project root
|
|
451
|
-
(`reserved-document-missing`).
|
|
46
|
+
`root` and `metadataRoot` are canonical relative directories, neither inside the other, and outside `engine`, `.git`, `.fireforge`, `node_modules`, `patches`, `secrets`, `components` and `configs`.
|
|
452
47
|
|
|
453
|
-
## `
|
|
48
|
+
## `firefox`
|
|
49
|
+
|
|
50
|
+
The pin: which Firefox release the project builds on.
|
|
51
|
+
|
|
52
|
+
| Key | Type | Default | Meaning |
|
|
53
|
+
| --------------------------------- | -------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
|
54
|
+
| `firefox.version` | string | required | Firefox release, such as `140.9.0esr` or `147.0b1` |
|
|
55
|
+
| `firefox.product` | `firefox` \| `firefox-esr` \| `firefox-beta` \| `firefox-devedition` | required | Product the version belongs to; an `esr` version pairs with `firefox-esr`, a beta with `firefox-beta` or `firefox-devedition` |
|
|
56
|
+
| `firefox.sha256` | string | | Pinned SHA-256 of the source archive; wins over the `SHA256SUMS` Mozilla publishes |
|
|
57
|
+
| `firefox.allowUnverifiedDownload` | boolean | `false` | Accept a download whose published digest cannot be fetched, trusting TLS alone; ignored with `sha256` |
|
|
58
|
+
| `firefox.candidate` | string | | Release-candidate build directory, such as `build2`, for pre-release verification |
|
|
59
|
+
|
|
60
|
+
Change the pin with `fireforge rebase --to <version>`, which also moves the project's changes.
|
|
454
61
|
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
something that is not this checkout's own, relying on the engine
|
|
467
|
-
harness's own busy-port fallback, so sibling checkouts can run browser suites
|
|
468
|
-
at once. `--auto-ports` does the same for one invocation. See
|
|
469
|
-
[`testing.md`](testing.md#shared-browsers-ports-and-host-state).
|
|
470
|
-
|
|
471
|
-
`test.lockMode` is `"exclusive"` (default) or `"shared"`. `"shared"` lets a
|
|
472
|
-
build-less run that applies no negative control and uses auto ports hold the
|
|
473
|
-
engine-session lock shared, so peers' build-less runs on the same objdir
|
|
474
|
-
overlap while builds, re-exports and every other writer still hold it alone.
|
|
475
|
-
`--shared-lock` does the same for one invocation. See
|
|
476
|
-
[`testing.md`](testing.md#concurrency).
|
|
477
|
-
|
|
478
|
-
`test.furnaceApply` is `"all"` (default), `"reached"` or `"none"`: which
|
|
479
|
-
components a `test --build` deploys before building. `--furnace-apply` does
|
|
480
|
-
the same for one invocation. See
|
|
481
|
-
[`testing.md`](testing.md#furnace-components-in-a-pre-test-build).
|
|
482
|
-
|
|
483
|
-
## `history`
|
|
484
|
-
|
|
485
|
-
`history.path` is where FireForge appends its patch history log, relative to
|
|
486
|
-
the project root (default `.fireforge/history.jsonl`). The log records
|
|
487
|
-
structural patch operations (staged dependencies, splits, renames, export
|
|
488
|
-
orders, re-exports that change a patch's file list) as one JSON object per
|
|
489
|
-
line. FireForge never reads it back; it is an audit trail only. Each record
|
|
490
|
-
carries `invocationId` (shared by every record one command writes), `pid`,
|
|
491
|
-
`ppid`, and `sessionId` when the environment sets `FIREFORGE_SESSION_ID`, so
|
|
492
|
-
a session sharing the checkout can select its own lines.
|
|
493
|
-
|
|
494
|
-
If a log exists at `patches/.fireforge-history.jsonl`, inside the tracked
|
|
495
|
-
queue, the next append moves it to `history.path`; when both files exist, its
|
|
496
|
-
records are appended to the `history.path` file rather than either being
|
|
497
|
-
overwritten. Setting `history.path` to `patches/.fireforge-history.jsonl`
|
|
498
|
-
keeps the log at that location.
|
|
62
|
+
## `build`
|
|
63
|
+
|
|
64
|
+
| Key | Type | Default | Meaning |
|
|
65
|
+
| -------------------------------- | ----------- | -------- | --------------------------------------------------------------------------- |
|
|
66
|
+
| `build.jobs` | integer ≥ 1 | mach's | Parallel jobs for `mach build`; `build -j` overrides it |
|
|
67
|
+
| `build.release.overlay` | path | required | Captured mozconfig fragment appended last for a release build |
|
|
68
|
+
| `build.release.secrets.variable` | string | required | Environment variable the release build receives the secrets directory in |
|
|
69
|
+
| `build.release.secrets.files` | array | required | File names that must be in that directory; a release missing one is refused |
|
|
70
|
+
| `build.release.outputs` | array | | Paths in the release object directory to collect, such as `dist/*.dmg` |
|
|
71
|
+
|
|
72
|
+
`fireforge package --release` builds with `build.release` in an object directory of its own, emptied first, and leaves the development build alone. The secrets directory is set per host as `releaseSecrets` in `~/.fireforge/host.json`; the release build gets it in the environment variable `secrets.variable` names, and a release whose secrets are declared is refused while that directory is unset or lacks one of `secrets.files`.
|
|
499
73
|
|
|
500
74
|
## `buildAudit`
|
|
501
75
|
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
76
|
+
After a build, FireForge warns about front-end files that changed since the previous build and that nothing packages: such a file builds without complaint and is simply absent from the browser.
|
|
77
|
+
|
|
78
|
+
| Key | Type | Default | Meaning |
|
|
79
|
+
| -------------------------------- | ------ | -------- | ---------------------------------------------------------- |
|
|
80
|
+
| `buildAudit.unpackaged[].path` | path | required | Engine-relative path, exact or with `*` inside one segment |
|
|
81
|
+
| `buildAudit.unpackaged[].reason` | string | required | Why the file is never packaged |
|
|
82
|
+
|
|
83
|
+
## `test`
|
|
84
|
+
|
|
85
|
+
| Key | Type | Default | Meaning |
|
|
86
|
+
| ----------------------------- | ----------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
|
87
|
+
| `test.mochitestPorts` | `fixed` \| `auto` | `fixed` | `auto` lets a run proceed while another workspace holds the Marionette port or, where the harness can move, a server port |
|
|
88
|
+
| `test.harnessFailurePatterns` | array | | Regular expressions of output lines meaning the browser failed before any test ran; such a run reads `crash`, not `no-tests` |
|
|
89
|
+
|
|
90
|
+
## `patchLint`
|
|
91
|
+
|
|
92
|
+
The quality rules over owned changes ([quality.md](quality.md)).
|
|
93
|
+
|
|
94
|
+
| Key | Type | Default | Meaning |
|
|
95
|
+
| -------------------------------------- | ----------------------------- | --------- | ------------------------------------------------------------------------------------------ |
|
|
96
|
+
| `patchLint.rules` | map of rule ID to severity | | `off`, `notice`, `warning` or `error` per rule, replacing its default |
|
|
97
|
+
| `patchLint.waivers` | array | | Waivers per group of owned changes, beside those a patch manifest carries |
|
|
98
|
+
| `patchLint.waivers[].group` | string | required | The group: a patch or component name such as `ui-sidebar`, or the full group ID |
|
|
99
|
+
| `patchLint.waivers[].rule` | rule ID | required | The rule waived |
|
|
100
|
+
| `patchLint.waivers[].max` | integer ≥ 0 | | Largest measurement still waived; without it the rule is waived at any size |
|
|
101
|
+
| `patchLint.waivers[].reason` | string | required | Why the waiver exists |
|
|
102
|
+
| `patchLint.waivers[].share` | `product` \| `test` | | Share of the group a `large-patch-lines` ceiling bounds; needs `max` |
|
|
103
|
+
| `patchLint.checkJs` | boolean | `false` | Type-check created modules (`checkjs-type-error`) |
|
|
104
|
+
| `patchLint.checkJsStrict` | boolean | `false` | Run checkJs with `strict` and `noImplicitAny`; needs `checkJs` |
|
|
105
|
+
| `patchLint.checkJsCompilerOptions` | object | | Overrides after the strict preset; needs `checkJsStrict` (see below) |
|
|
106
|
+
| `patchLint.checkJsExtraShim` | path | | `.d.ts` added to the Firefox globals shim for checkJs |
|
|
107
|
+
| `patchLint.checkJsTestFiles` | boolean | `false` | Also check created test scripts, each as its own program; needs `checkJs` |
|
|
108
|
+
| `patchLint.checkJsTestShim` | path | | `.d.ts` of typed harness declarations; needs `checkJsTestFiles` |
|
|
109
|
+
| `patchLint.litTypes` | boolean | `false` | Type Lit in the checkJs shim with closed member lists; needs `checkJs` |
|
|
110
|
+
| `patchLint.undefinedIdentifiers` | `off` \| `warning` \| `error` | `warning` | How checkJs reports undefined identifiers |
|
|
111
|
+
| `patchLint.rawColorAllowlist` | array | | Paths (exact or basename) exempt from `raw-color-value` |
|
|
112
|
+
| `patchLint.fileSizeThresholds` | object | | `file-too-large` bands per file class (`general`, `test`), merged over the defaults |
|
|
113
|
+
| `patchLint.fileSizeMetric` | `raw` \| `code` | `raw` | What `file-too-large` counts: every line, or lines carrying code |
|
|
114
|
+
| `patchLint.patchSizeThresholds` | object | | Size bands per tier (`general`, `test`, `branding`), each with `lines` and `files` |
|
|
115
|
+
| `patchLint.patchSizeMetric` | `diff` \| `addedCode` | `diff` | What `large-patch-lines` counts: every diff line, or added lines carrying code |
|
|
116
|
+
| `patchLint.patchSizeRegistrationFiles` | array | | Globs of registration files neither patch-size rule counts |
|
|
117
|
+
| `patchLint.tokenScales` | array | | CSS property families whose values in created stylesheets must be scale tokens (see below) |
|
|
118
|
+
|
|
119
|
+
**Size bands.** Each band object takes `notice`, `warning` and `error` (integers ≥ 1); what you leave out keeps the default, and the result must stay ordered `notice ≤ warning ≤ error`. The defaults are in [quality.md](quality.md#rules).
|
|
510
120
|
|
|
511
121
|
```json
|
|
512
122
|
{
|
|
513
|
-
"
|
|
514
|
-
"
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
}
|
|
519
|
-
]
|
|
123
|
+
"patchLint": {
|
|
124
|
+
"fileSizeThresholds": { "general": { "warning": 800, "error": 1000 } },
|
|
125
|
+
"patchSizeThresholds": {
|
|
126
|
+
"general": { "lines": { "warning": 2000 }, "files": { "warning": 8 } }
|
|
127
|
+
}
|
|
520
128
|
}
|
|
521
129
|
}
|
|
522
130
|
```
|
|
523
131
|
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
132
|
+
**`checkJsCompilerOptions`** takes the booleans `strictNullChecks`, `strictFunctionTypes`, `strictBindCallApply`, `noImplicitThis`, `useUnknownInCatchVariables`, `strictPropertyInitialization`, `noUnusedLocals`, `noUnusedParameters`, and `paths`, a module-resolution mapping with engine-relative targets (each pattern may hold one `*`).
|
|
133
|
+
|
|
134
|
+
**`tokenScales[]`** entries:
|
|
135
|
+
|
|
136
|
+
| Key | Type | Meaning |
|
|
137
|
+
| --------------- | ------------------------- | -------------------------------------------------------------------------------- |
|
|
138
|
+
| `properties` | array, required | CSS properties governed: exact names or `*`-suffixed prefixes such as `padding*` |
|
|
139
|
+
| `prefix` | string or array, required | Custom-property prefix of the scale tokens, such as `--mybrowser-space-` |
|
|
140
|
+
| `allowLiterals` | array | Literal values accepted without a token; `*` is a wildcard |
|
|
141
|
+
| `allow` | array | Further custom properties accepted: exact names or `*`-suffixed prefixes |
|
|
142
|
+
| `allowInCalc` | array | Literal values accepted only inside `calc()`, `min()`, `max()` or `clamp()` |
|
|
143
|
+
| `offsetCap` | number ≥ 0 | Largest total px a declaration may subtract from scale tokens in a math function |
|
|
144
|
+
| `exclude` | array | Engine-relative globs of files the scale skips |
|
|
145
|
+
| `minFiles` | integer ≥ 1 | Fewest created stylesheets that must declare a governed property |
|
|
146
|
+
| `allowValues` | array | Reviewed declarations accepted as written: `{ "property", "value", "reason" }` |
|
|
147
|
+
|
|
148
|
+
## `patchPolicy`
|
|
149
|
+
|
|
150
|
+
Which upstream files owned changes may touch, and how the patch queue is ordered ([quality.md](quality.md#policy), [patch-workflow.md](patch-workflow.md#queue-operations-patch)).
|
|
151
|
+
|
|
152
|
+
| Key | Type | Default | Meaning |
|
|
153
|
+
| ------------------------------------------------------ | ----------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
154
|
+
| `patchPolicy.ranges` | array | required | Order bands owned by categories: `{ "from", "to", "category" }`, inclusive, not overlapping |
|
|
155
|
+
| `patchPolicy.reservedRanges` | array | | Order bands for listed exceptional patches: `{ "from", "to", "allowed" }` |
|
|
156
|
+
| `patchPolicy.reservedRanges[].allowed[].filename` | string | required | Group ID of the exception: the patch file name allowed in the range, or in source mode the component |
|
|
157
|
+
| `patchPolicy.reservedRanges[].allowed[].files` | array | | Exact upstream files the exception may change outside the allowlist; any when absent |
|
|
158
|
+
| `patchPolicy.reservedRanges[].allowed[].adr` | path | | Decision record documenting the exception |
|
|
159
|
+
| `patchPolicy.reservedRanges[].allowed[].documentation` | path | | Documentation of the exception |
|
|
160
|
+
| `patchPolicy.filenamePattern` | string | | Regular expression with named captures `order`, `category` and `slug` every patch file name must match |
|
|
161
|
+
| `patchPolicy.requireDescription` | boolean | `false` | An empty patch description is a violation |
|
|
162
|
+
| `patchPolicy.allowGaps` | boolean | `true` | Allow unoccupied orders within a category range |
|
|
163
|
+
| `patchPolicy.mutationMode` | `error` \| `warn` | `error` | How queue operations treat a policy problem they would add: `error` refuses it; `warn` reports it and lowers the policy lint rules to warnings |
|
|
164
|
+
| `patchPolicy.upstreamAllowlist` | array | | Globs, or entries `{ "path", "addOnly", "marker", "retiredPaths" }`, naming the upstream files owned changes may modify |
|
|
165
|
+
| `patchPolicy.addOnlyMarker` | string | | Marker for `addOnly` entries that set none |
|
|
166
|
+
| `patchPolicy.scopeRules` | array | | `{ "group", "files" }`: groups whose ID matches the `group` regular expression touch only files matching `files` |
|
|
167
|
+
| `patchPolicy.verifyDocumentPaths` | boolean | `false` | Require the `adr` and `documentation` paths of reserved exceptions to exist |
|
|
168
|
+
|
|
169
|
+
## `typecheck`
|
|
170
|
+
|
|
171
|
+
| Key | Type | Default | Meaning |
|
|
172
|
+
| -------------------------------- | ----------------------------- | --------- | ----------------------------------------------------------------------------------------------------------- |
|
|
173
|
+
| `typecheck.projects` | array | required | `jsconfig.json` or `tsconfig.json` files checked whole; a path under `engine/` names the workspace's engine |
|
|
174
|
+
| `typecheck.extraShim` | path | | `.d.ts` added to the Firefox globals shim of every project |
|
|
175
|
+
| `typecheck.projectOverrides` | map | | Per project (keyed as in `projects`): another `.d.ts` instead of `extraShim`, or `null` for none |
|
|
176
|
+
| `typecheck.undefinedIdentifiers` | `off` \| `warning` \| `error` | `warning` | How undefined identifiers are reported |
|
|
177
|
+
| `typecheck.litTypes` | boolean | `false` | Type Lit in the shim with closed member lists |
|
|
545
178
|
|
|
546
179
|
## `check`
|
|
547
180
|
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
181
|
+
The composed static check ([quality.md](quality.md#check)).
|
|
182
|
+
|
|
183
|
+
| Key | Type | Default | Meaning |
|
|
184
|
+
| ---------------------------- | ---------------- | -------- | ------------------------------------------------------------------------------------- |
|
|
185
|
+
| `check.skip` | array | | Built-in steps this project never runs |
|
|
186
|
+
| `check.status.failOn` | array | all | Status codes that fail the status step |
|
|
187
|
+
| `check.status.allow` | array | | Status codes the status step accepts |
|
|
188
|
+
| `check.maxWarnings.lint` | integer ≥ 0 | | Warnings the lint step tolerates |
|
|
189
|
+
| `check.maxWarnings.furnace` | integer ≥ 0 | | Warnings the furnace-validate step tolerates |
|
|
190
|
+
| `check.extraSteps[].name` | string | required | Step name: lowercase letters, digits and dashes, not a built-in step's name |
|
|
191
|
+
| `check.extraSteps[].command` | array | required | Argument vector run from the project root; the step passes on exit 0 |
|
|
192
|
+
| `check.extraSteps[].timeout` | integer ≥ 1 | `600` | Seconds before the step is killed and fails |
|
|
193
|
+
| `check.extraSteps[].engine` | boolean | `false` | The step reads the engine: it runs holding the workspace, with `FIREFORGE_ENGINE` set |
|
|
194
|
+
| `check.extraSteps[].after` | array | | Steps that must finish first, whatever their outcome |
|
|
195
|
+
| `check.minTokenCoverage` | integer 0 to 100 | | Percentage below which the token-coverage step fails |
|
|
196
|
+
| `check.failOnSkipped` | boolean | `false` | Fail when a built-in step is skipped for having nothing to run |
|
|
197
|
+
| `check.lintReport` | path | | File the lint step writes its JSON report to (`FIREFORGE_CHECK_LINT_REPORT`) |
|
|
198
|
+
|
|
199
|
+
## `gate`
|
|
200
|
+
|
|
201
|
+
What `fireforge gate` runs besides `check`. [gate.md](gate.md) explains each entry with an example.
|
|
202
|
+
|
|
203
|
+
| Key | Type | Default | Meaning |
|
|
204
|
+
| ------------------------------- | ----------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------- |
|
|
205
|
+
| `gate.build` | `ui` \| `full` | `ui` | The build the gate runs; a workspace that needs a full build gets one either way |
|
|
206
|
+
| `gate.documents` | array | | Globs of paths that change nothing the gate tests; a pattern without a slash matches a file name at any depth |
|
|
207
|
+
| `gate.lanes[].id` | string | required | Lane ID: lowercase letters, digits, `.`, `_`, `-` |
|
|
208
|
+
| `gate.lanes[].files` | array | required | Engine-relative globs or literal paths of the tests |
|
|
209
|
+
| `gate.lanes[].exclude` | array | | Tests left out of `files` |
|
|
210
|
+
| `gate.lanes[].dispatch` | `shards` \| `one-browser` \| `standalone` | `shards` | A browser per file, one browser for all, or a restart between files |
|
|
211
|
+
| `gate.lanes[].headed` | boolean | `false` | Runs with a visible window, holding the display |
|
|
212
|
+
| `gate.lanes[].env` | map | | Harness environment; a value starting `{artifacts}` names a path in the lane's output directory |
|
|
213
|
+
| `gate.lanes[].uploadDir` | boolean | `false` | Gives the harness a `MOZ_UPLOAD_DIR` in the lane's output directory |
|
|
214
|
+
| `gate.lanes[].machArgs` | array | | `--setpref=<name>=<value>` arguments whose value names no path |
|
|
215
|
+
| `gate.lanes[].validate.command` | array | required | Argument vector run after a clean harness exit: `node <script>` or a committed script; `{artifacts}` expands |
|
|
216
|
+
| `gate.stress[]` | lane keys, plus `repeat` | | A lane run `repeat` (integer ≥ 1, required) times; every repetition must pass |
|
|
217
|
+
| `gate.controls[].id` | string | required | Control ID |
|
|
218
|
+
| `gate.controls[].diff` | path | required | Committed diff holding the mutation |
|
|
219
|
+
| `gate.controls[].test` | engine path | required | Test that must catch it |
|
|
220
|
+
| `gate.controls[].assertions` | array | required | Labels of the reds it must produce, every one and no other |
|
|
221
|
+
| `gate.runs[].id` | string | required | Run ID |
|
|
222
|
+
| `gate.runs[].smokeExit` | integer ≥ 1 | required | Seconds the console is watched before the browser is ended |
|
|
223
|
+
| `gate.runs[].headless` | boolean | `false` | Starts without a window |
|
|
224
|
+
| `gate.runs[].args` | array | | Arguments for the browser |
|
|
225
|
+
| `gate.runs[].consoleAllowFile` | path | | Committed file of console line patterns the smoke start accepts |
|
|
226
|
+
| `gate.runs[].validate.command` | array | required | As on a lane |
|
|
227
|
+
| `gate.acceptance[].id` | string | required | Acceptance ID |
|
|
228
|
+
| `gate.acceptance[].reason` | string | required | What the person decides |
|
|
229
|
+
| `gate.acceptance[].evidence` | array | | `lane:<id>`, `stress:<id>`, `control:<id>` or `run:<id>` entries whose outputs the person looks at; each must be declared |
|
|
230
|
+
|
|
231
|
+
IDs are unique within each list.
|
|
232
|
+
|
|
233
|
+
## `exportQueue`
|
|
234
|
+
|
|
235
|
+
How a source-mode `export` groups created files into patches ([source-workflow.md](source-workflow.md#writing-a-patch-queue-export)).
|
|
236
|
+
|
|
237
|
+
| Key | Type | Default | Meaning |
|
|
238
|
+
| ---------------------------- | ----------- | --------- | ---------------------------------------------------------------------- |
|
|
239
|
+
| `exportQueue.groups[].name` | string | required | The group's ID and patch name: lowercase words joined by hyphens |
|
|
240
|
+
| `exportQueue.groups[].paths` | array | required | Engine-relative globs; a created file joins the first group it matches |
|
|
241
|
+
| `exportQueue.groups[].tier` | `branding` | | Size tier written into the generated queue for the group's patch |
|
|
242
|
+
| `exportQueue.componentTiers` | map | | Size tier (`branding`) per component of upstream changes |
|
|
243
|
+
| `exportQueue.maxGroupBytes` | integer ≥ 1 | `1048576` | Byte budget of a directory group for created files no group matches |
|
|
244
|
+
|
|
245
|
+
## `wire`
|
|
246
|
+
|
|
247
|
+
| Key | Type | Default | Meaning |
|
|
248
|
+
| ------------------- | ----------- | ------------------------------------ | -------------------------------------------------------------------- |
|
|
249
|
+
| `wire.subscriptDir` | engine path | `browser/base/content` | Directory of wired chrome subscripts |
|
|
250
|
+
| `wire.domTarget` | engine path | `browser/base/content/browser.xhtml` | Top-level chrome document that wired DOM fragments are included into |
|
|
251
|
+
|
|
252
|
+
## `externalToolchains`
|
|
253
|
+
|
|
254
|
+
Tools the project needs beyond what Firefox's own build needs, in named groups. `fireforge doctor` looks for each tool and reports one row per tool, naming the toolchain and the tool.
|
|
255
|
+
|
|
256
|
+
| Key | Type | Default | Meaning |
|
|
257
|
+
| --------------------------------------- | ------- | -------- | ------------------------------------------------------------------------------------- |
|
|
258
|
+
| `externalToolchains[].name` | string | required | Toolchain name, such as `seasonal-branding` |
|
|
259
|
+
| `externalToolchains[].tools` | array | required | The tools it needs, at least one |
|
|
260
|
+
| `externalToolchains[].tools[].name` | string | required | Tool name, and what is looked up when no `path` is set |
|
|
261
|
+
| `externalToolchains[].tools[].path` | string | | Executable path, absolute or project-relative; the tool is found when the path exists |
|
|
262
|
+
| `externalToolchains[].tools[].xcrun` | boolean | | Find the tool with `xcrun -find <name>` instead of on `PATH` |
|
|
263
|
+
| `externalToolchains[].tools[].required` | boolean | `true` | A missing tool fails `doctor`; with `false` it is a warning |
|
|
264
|
+
|
|
265
|
+
A tool is looked for in one place: at `path` when set, else through `xcrun` when `xcrun` is true, else on `PATH`.
|
|
552
266
|
|
|
553
267
|
```json
|
|
554
268
|
{
|
|
555
|
-
"
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
"
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
{ "name": "policy-audit", "command": "npm run audit:policy", "timeout": 600 },
|
|
565
|
-
{ "name": "invariants", "command": "node check-invariants.mjs", "cwd": "tools" }
|
|
566
|
-
]
|
|
567
|
-
}
|
|
269
|
+
"externalToolchains": [
|
|
270
|
+
{
|
|
271
|
+
"name": "seasonal-branding",
|
|
272
|
+
"tools": [
|
|
273
|
+
{ "name": "actool", "xcrun": true },
|
|
274
|
+
{ "name": "pngquant", "required": false }
|
|
275
|
+
]
|
|
276
|
+
}
|
|
277
|
+
]
|
|
568
278
|
}
|
|
569
279
|
```
|
|
570
280
|
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
`
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
`:root[data-theme="light"]:not([data-private])` is matched and written
|
|
630
|
-
through, with a warning naming the selector. The qualifier carries meaning,
|
|
631
|
-
but silently skipping half the mirror is the worse failure.
|
|
632
|
-
- A token already present in the target block is reported with its location
|
|
633
|
-
(`already exists in :root[…] (line N), unchanged`) rather than as a bare
|
|
634
|
-
no-op.
|
|
635
|
-
|
|
636
|
-
### Reading the token file
|
|
637
|
-
|
|
638
|
-
`token add --category` refuses a category that the tokens CSS does not
|
|
639
|
-
declare, so `token list` exists to name the categories without you
|
|
640
|
-
hand-parsing a `= Category =` banner out of the file.
|
|
641
|
-
|
|
642
|
-
- `fireforge token list [--category <name>] [--json]` reports each category
|
|
643
|
-
banner with the tokens declared under it, in file order. Declarations above
|
|
644
|
-
the first banner are reported under `(no category)` rather than dropped,
|
|
645
|
-
and a banner with no tokens is still listed, since `token add` accepts it.
|
|
646
|
-
An unknown `--category` is refused by naming the ones that exist, because a
|
|
647
|
-
filter that printed nothing would read as "this category is empty".
|
|
648
|
-
- `fireforge token show <token-name> [--json]` reports the owning category
|
|
649
|
-
and the value the token takes in every block that declares it: the base
|
|
650
|
-
`:root`, the dark `@media` mirror, and each `:root[variant]`, with the line
|
|
651
|
-
of each. The leading `--` is optional, and if you include it, pass the `--`
|
|
652
|
-
separator first (`fireforge token show -- --my-token`).
|
|
653
|
-
|
|
654
|
-
Only the base `:root` block owns a token, so `token list` reports it once.
|
|
655
|
-
The dark and variant blocks mirror it and appear in `token show`.
|
|
656
|
-
|
|
657
|
-
### Checking the token file
|
|
658
|
-
|
|
659
|
-
`fireforge token lint [--json]` exits non-zero on either of two findings:
|
|
660
|
-
|
|
661
|
-
- `token-lockstep`: a themed override block (the dark `@media` mirror, a
|
|
662
|
-
`:root[variant]` block) declares a token with the project's token prefix
|
|
663
|
-
that the base `:root` does not declare. Every other theme would resolve
|
|
664
|
-
it to nothing. Overrides of non-prefixed properties (a `--moz-*` platform
|
|
665
|
-
variable) are left alone.
|
|
666
|
-
- `token-undeclared`: a `var(--<prefix>…)` in the tokens CSS, or in any CSS
|
|
667
|
-
file a patch in the queue touches, names a token no block of the tokens
|
|
668
|
-
CSS declares. A property declared in the same file, and the `furnace.json`
|
|
669
|
-
`tokenAllowlist` and `runtimeVariables` names, are exempt. A
|
|
670
|
-
reference with a fallback (`var(--x, 0)`) is optional and not reported,
|
|
671
|
-
and a token a sibling sheet declares counts as declared. Sheets are
|
|
672
|
-
siblings when one queue document links both (`<link rel="stylesheet">`,
|
|
673
|
-
`<html:link>` or `<?xml-stylesheet?>`, in markup or a Lit template; a
|
|
674
|
-
`chrome://` URL resolves through the queue's jar.mn lines, a relative
|
|
675
|
-
one beside the document), when one `@import`s the other, or when
|
|
676
|
-
`furnace.json` `tokenSiblingSheets` pairs them:
|
|
677
|
-
`{ "browser/themes/**/panel*.css": ["browser/base/content/host.css"] }`
|
|
678
|
-
(a partner is a path or a glob over the queue's sheets).
|
|
679
|
-
|
|
680
|
-
The prefix is `furnace.json` `tokenPrefix`, else `--<binaryName>-`.
|
|
681
|
-
|
|
682
|
-
## Smoke runs
|
|
683
|
-
|
|
684
|
-
For unattended smoke checks, `fireforge run --smoke-exit <s> --headless`
|
|
685
|
-
launches the browser headless. A headed smoke window on a shared desktop
|
|
686
|
-
absorbs live input, which contaminates the console capture, so headed
|
|
687
|
-
non-CI launches print a warning saying so. Exit codes 12 and 13 separate a
|
|
688
|
-
console regression from a launch failure. See
|
|
689
|
-
[`exit-codes.md`](exit-codes.md).
|
|
690
|
-
|
|
691
|
-
A smoke run starts on a fresh temporary profile by default.
|
|
692
|
-
The step exists to prove what the build does on a clean start. The
|
|
693
|
-
developer's `obj-*/tmp/profile-default` carries whatever the last session
|
|
694
|
-
left (a pre-reset database, a restored hand-made applet), and those reds
|
|
695
|
-
say nothing about the tree. FireForge creates the directory under the OS
|
|
696
|
-
temp dir, seeds the two prefs `mach run` writes into profiles it makes
|
|
697
|
-
itself (`browser.shell.checkDefaultBrowser` and
|
|
698
|
-
`browser.aboutConfig.showWarning`), and passes it to Firefox as
|
|
699
|
-
`-profile`. The directory is removed when the run ends. That includes a
|
|
700
|
-
failed run and a SIGINT/SIGTERM, which the signal handler removes after
|
|
701
|
-
the browser tree has shut down. A FireForge that was SIGKILLed cannot clean
|
|
702
|
-
up after itself, so the next `run` removes any temporary profile whose
|
|
703
|
-
owning process is gone.
|
|
704
|
-
|
|
705
|
-
- `--profile <path>` launches with a named profile directory and leaves it
|
|
706
|
-
in place. Under `--smoke-exit` it replaces the fresh default. Firefox also
|
|
707
|
-
gets `-purgecaches`, which discards the profile's startup
|
|
708
|
-
cache of compiled chrome scripts. That cache is keyed on the build id, and
|
|
709
|
-
a `build --ui` does not change it, so without the purge a kept profile runs
|
|
710
|
-
the chrome scripts an earlier build cached. `--no-purge-caches` keeps the
|
|
711
|
-
cache. mach's `profile-default` has its `startupCache/` removed before
|
|
712
|
-
every run and after every `build --ui`, and a temporary profile starts
|
|
713
|
-
without one.
|
|
714
|
-
- `--temp-profile` gives a plain `run` the same fresh, removed-afterwards
|
|
715
|
-
profile.
|
|
716
|
-
- Arguments after `--` go to the browser, after the profile ones. A headed
|
|
717
|
-
session on a kept profile that a chrome-context Marionette client drives
|
|
718
|
-
is `fireforge run --profile <dir> -- -marionette -remote-allow-system-access`,
|
|
719
|
-
with `marionette.port` set in the profile's `user.js` so peers' harnesses
|
|
720
|
-
keep 2828. The objdir app launched directly gets neither `-purgecaches`
|
|
721
|
-
nor the startup-cache cleanup, so it can serve a widget script an earlier
|
|
722
|
-
launch cached.
|
|
723
|
-
|
|
724
|
-
After a build, mach leaves a `.purgecaches` file in the app directory
|
|
725
|
-
(`dist/bin/browser`, and `Contents/Resources/browser` in the macOS bundle).
|
|
726
|
-
The next launch of the objdir app purges the startup cache of whichever
|
|
727
|
-
profile it starts on and deletes the file. Only that first launch purges: a
|
|
728
|
-
test harness or a direct launch can consume it, and every reused profile
|
|
729
|
-
started after it keeps its cache. `fireforge build --ui` says so in one
|
|
730
|
-
line at the end, since a UI build keeps the build id that cache is keyed
|
|
731
|
-
on. Start other reused profiles with `-purgecaches`.
|
|
732
|
-
|
|
733
|
-
A smoke run whose browser exits with a clean status before the window
|
|
734
|
-
elapses, without printing any console output, fails with exit 13.
|
|
735
|
-
Lines from mach's own log (the timestamped command echo) do not
|
|
736
|
-
count as output. A launch that exits silently never reached a window: a
|
|
737
|
-
stale `.parentlock`, or a profile whose run of SIGTERM-ended smoke runs
|
|
738
|
-
counts as a startup-crash streak (`toolkit.startup.recent_crashes`).
|
|
739
|
-
|
|
740
|
-
A plain `run` without either flag keeps mach's `profile-default`. `mach run`'s
|
|
741
|
-
desktop parser has no `--profile` option (its `--profile/-P` belongs to the
|
|
742
|
-
Android parser), so the profile is always passed as a program parameter.
|
|
743
|
-
With an explicit profile, mach neither writes its `runprefs` from
|
|
744
|
-
`~/.mozbuild/machrc` nor accepts `--setpref`.
|
|
745
|
-
|
|
746
|
-
The allowlist (`--console-allow-file`) is count-blind by default: a line that
|
|
747
|
-
matches an entry never counts, however often it fires. A `# max-hits: N`
|
|
748
|
-
comment directly above an entry (other comments may sit between) caps how
|
|
749
|
-
many lines that entry may match in one run. The attribution block prints
|
|
750
|
-
capped entries as `hits×/N`, and an entry that fires past its ceiling is
|
|
751
|
-
reported and fails the run with exit 12, the same as an unallowed error. A
|
|
752
|
-
directive with no entry after it is refused rather than silently ignored.
|
|
753
|
-
|
|
754
|
-
## Lock waits
|
|
755
|
-
|
|
756
|
-
Every FireForge command that mutates the engine takes the engine-session
|
|
757
|
-
lock, and some take a second subsystem lock as well. Contention fails fast
|
|
758
|
-
after about a second by default.
|
|
759
|
-
|
|
760
|
-
`--wait-lock [seconds]` (bare flag means 60, valid range 1 to 86400, a day) replaces
|
|
761
|
-
that with a bounded wait, and the budget covers every lock the command takes.
|
|
762
|
-
For `furnace apply`, `deploy` and `sync` that means the furnace lock as well
|
|
763
|
-
as the engine-session lock. The furnace leaves that take only the furnace lock
|
|
764
|
-
(`create`, `remove`, `rename`, `refresh`, `scan`, `override`, `preview`, and
|
|
765
|
-
`chrome-doc create`/`remove`) apply the flag to that lock. While waiting, a
|
|
766
|
-
progress line roughly every 5 seconds identifies the holder by PID, command
|
|
767
|
-
and start time.
|
|
768
|
-
|
|
769
|
-
Commands that take no lock accept `--wait-lock` and ignore it, so a scripted
|
|
770
|
-
sequence can append the flag everywhere without a usage error killing the
|
|
771
|
-
run.
|
|
772
|
-
|
|
773
|
-
`FIREFORGE_WAIT_LOCK=<seconds>` applies the same budget to every command in a
|
|
774
|
-
session, using the same bounds as the flag. It is the fallback whenever the
|
|
775
|
-
flag is absent, including for the furnace lock a build's pre-build apply and
|
|
776
|
-
`doctor --repair-furnace` take. An explicit `--wait-lock` always wins.
|
|
777
|
-
|
|
778
|
-
Without either, a writer such as `re-export`, `export` or a `patch` verb waits
|
|
779
|
-
about one second for the engine-session lock and then exits 15 (lock timeout)
|
|
780
|
-
while a peer's `build` or `test` holds it. `re-export --dry-run` takes no lock,
|
|
781
|
-
so a clean preview says nothing about whether the writing run will get one. On
|
|
782
|
-
an engine several sessions share, pass `--wait-lock <seconds>` to every writing
|
|
783
|
-
command, or set `FIREFORGE_WAIT_LOCK` once so every command of the session
|
|
784
|
-
waits its turn.
|
|
785
|
-
|
|
786
|
-
Waiters are granted a lock in arrival order: the progress line's "You are
|
|
787
|
-
next" or "N ahead of you" is the order the lock will actually be handed out.
|
|
788
|
-
A waiter that crashed, was killed, or is stopped drops out of the queue
|
|
789
|
-
instead of blocking it.
|
|
790
|
-
|
|
791
|
-
`fireforge status --lock` reports the current holder and queue depth.
|
|
281
|
+
## `furnace.json`
|
|
282
|
+
|
|
283
|
+
The component configuration ([furnace.md](furnace.md)). It is created with `version` and `componentPrefix` the first time a Furnace command writes it; edits rewrite only the changed values.
|
|
284
|
+
|
|
285
|
+
| Key | Type | Default | Meaning |
|
|
286
|
+
| ---------------------- | ------------- | ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
287
|
+
| `version` | `1` | `1` | Format version |
|
|
288
|
+
| `componentPrefix` | string | required | Prefix every custom component name starts with (`moz-` when Furnace creates the file) |
|
|
289
|
+
| `stock` | array | `[]` | Stock components the project composes |
|
|
290
|
+
| `overrides` | map | `{}` | Overrides of stock components, by tag (see below) |
|
|
291
|
+
| `custom` | map | `{}` | Custom components, by tag (see below) |
|
|
292
|
+
| `ftlBasePath` | path | `toolkit/locales/en-US/toolkit/global` | Engine directory localized components deploy their `.ftl` into |
|
|
293
|
+
| `typecheckJsconfig` | path or array | | `jsconfig.json` files whose chrome-module `paths` Furnace maintains |
|
|
294
|
+
| `typecheckTagMap` | path | | `.d.ts` file Furnace writes with the `HTMLElementTagNameMap` entries |
|
|
295
|
+
| `validationExceptions` | array | | Reviewed validation warnings: `{ "component", "check", "reason", "tag"?, "file"? }` (a tag or a file, not both) |
|
|
296
|
+
| `minComponents` | integer ≥ 1 | | Fewest components a full validation judges |
|
|
297
|
+
| `optInChecks` | array | | Checks that run only when listed: `icon-button-label` |
|
|
298
|
+
| `tokenFile` | path | `browser/themes/shared/<binaryName>-tokens.css` | Engine path of the design-token file |
|
|
299
|
+
| `tokenPrefix` | string | `--<binaryName>-` | Custom-property prefix of the project tokens |
|
|
300
|
+
| `tokenAllowlist` | array | | Custom properties from elsewhere that stylesheets may reference |
|
|
301
|
+
| `platformPrefixes` | array | `["--moz-"]` | Prefixes of platform-owned custom properties |
|
|
302
|
+
| `runtimeVariables` | array | | Runtime state channels set from script, accepted as references |
|
|
303
|
+
| `tokenHostDocuments` | array | | Documents that load the token file |
|
|
304
|
+
| `tokenSiblingSheets` | map | | Sheet glob to the sheets that load beside it |
|
|
305
|
+
|
|
306
|
+
A `custom.<tag>` entry:
|
|
307
|
+
|
|
308
|
+
| Key | Type | Meaning |
|
|
309
|
+
| ----------------- | ---------------------- | ---------------------------------------------------------------------------------------- |
|
|
310
|
+
| `description` | string, required | What the component is |
|
|
311
|
+
| `targetPath` | path, required | Engine directory the component deploys into |
|
|
312
|
+
| `register` | boolean, required | List the element in `customElements.js` |
|
|
313
|
+
| `localized` | boolean, required | The component uses Fluent strings |
|
|
314
|
+
| `kind` | `element` \| `library` | `library`: base classes and helpers with no element of its own (needs `register: false`) |
|
|
315
|
+
| `composes` | array | Components it renders in its template; known names, without cycles |
|
|
316
|
+
| `keyboardCovered` | boolean | Keyboard activation comes from a wrapped native element |
|
|
317
|
+
| `sharedFtl` | string | An existing feature Fluent file the component shares; needs `localized` |
|
|
318
|
+
|
|
319
|
+
An `overrides.<tag>` entry:
|
|
320
|
+
|
|
321
|
+
| Key | Type | Meaning |
|
|
322
|
+
| ------------- | -------------------- | --------------------------------------------- |
|
|
323
|
+
| `type` | `css-only` \| `full` | `css-only` deploys only stylesheets |
|
|
324
|
+
| `description` | string | Why it is overridden |
|
|
325
|
+
| `basePath` | path | Engine directory the stock component lives in |
|
|
326
|
+
| `baseVersion` | string | Firefox version the override was taken from |
|
|
327
|
+
| `baseCommit` | string | Commit it was taken from |
|
|
328
|
+
|
|
329
|
+
A name may appear once across `stock`, `overrides` and `custom`.
|
|
330
|
+
|
|
331
|
+
## Host configuration
|
|
332
|
+
|
|
333
|
+
`~/.fireforge/host.json` (under `$FIREFORGE_HOME` when set) configures the host, not a project ([workspaces.md](workspaces.md#host-locks)):
|
|
334
|
+
|
|
335
|
+
| Key | Type | Default | Meaning |
|
|
336
|
+
| ---------------- | ----------- | ------- | --------------------------------------------------------------- |
|
|
337
|
+
| `buildSlots` | integer ≥ 1 | `1` | How many compiles may run at once on this host |
|
|
338
|
+
| `releaseSecrets` | string | | Absolute directory holding the secret files release builds read |
|
|
792
339
|
|
|
793
340
|
## Environment variables
|
|
794
341
|
|
|
795
|
-
| Variable
|
|
796
|
-
|
|
|
797
|
-
| `
|
|
798
|
-
| `
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
| `FIREFORGE_GIT_ADD_TIMEOUT_MS` | Timeout for the monolithic `git add -A` baseline pass (default 10 min). For slow or loaded filesystems. |
|
|
802
|
-
| `FIREFORGE_GIT_ADD_CHUNK_TIMEOUT_MS` | Timeout for the chunked `git add -- <dir>` fallback (default 30 min). Paired with the above. |
|
|
803
|
-
|
|
804
|
-
`CLAUDECODE` is read by mozbuild, not by FireForge. `fireforge test
|
|
805
|
-
--full-output` unsets it for test dispatches only. See
|
|
806
|
-
[`testing.md`](testing.md#output-verbosity).
|
|
342
|
+
| Variable | Meaning |
|
|
343
|
+
| --------------------- | --------------------------------------------------------------------------------------------------------- |
|
|
344
|
+
| `FIREFORGE_HOME` | Where host state lives instead of `~/.fireforge` |
|
|
345
|
+
| `FIREFORGE_WAIT_LOCK` | Default for `--wait-lock <seconds>`: how long a command waits for a lock or workspace (default two hours) |
|
|
346
|
+
|
|
347
|
+
FireForge sets `FIREFORGE_PROJECT_ROOT`, `FIREFORGE_OWNED_PATHS`, `FIREFORGE_CHECK_LINT_REPORT` and `FIREFORGE_ENGINE` for `check.extraSteps` ([quality.md](quality.md#extra-steps)). Gate validators get `FIREFORGE_PROJECT_ROOT` and `FIREFORGE_ENGINE` ([gate.md](gate.md#lanes)). Other `FIREFORGE_*` names are reserved for its own processes.
|