@hominis/fireforge 0.54.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 +287 -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 -438
- 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 -332
- 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 -420
- package/dist/src/commands/setup.js +78 -90
- package/dist/src/commands/status.js +44 -413
- package/dist/src/commands/test.js +97 -422
- package/dist/src/commands/token.js +185 -228
- package/dist/src/commands/typecheck.js +59 -208
- 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 -692
- package/docs/exit-codes.md +76 -94
- package/docs/furnace.md +113 -181
- package/docs/gate.md +205 -0
- package/docs/getting-started.md +165 -0
- package/docs/machine-output.md +201 -277
- package/docs/migrating.md +261 -0
- package/docs/patch-workflow.md +163 -653
- package/docs/quality.md +220 -0
- package/docs/source-workflow.md +228 -0
- package/docs/testing.md +101 -712
- 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 -91
- package/dist/src/commands/check-run.d.ts +0 -33
- package/dist/src/commands/check-run.js +0 -112
- 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 -218
- 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 -282
- 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/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 -52
- 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 -261
- 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 -117
- package/dist/src/commands/patch/staged-dependency-validate.d.ts +0 -15
- package/dist/src/commands/patch/staged-dependency-validate.js +0 -49
- package/dist/src/commands/patch/staged-dependency.d.ts +0 -22
- package/dist/src/commands/patch/staged-dependency.js +0 -248
- 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 -267
- 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-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 -35
- package/dist/src/commands/re-export-hunks.js +0 -220
- 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 -191
- 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 -39
- package/dist/src/commands/re-export-single.js +0 -388
- 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 -28
- package/dist/src/commands/re-export-summary.js +0 -36
- 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 -29
- package/dist/src/commands/test-build-phase.js +0 -290
- 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 -63
- package/dist/src/commands/test-orchestrate.js +0 -274
- 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 -52
- package/dist/src/commands/test-stale-gate.js +0 -165
- package/dist/src/commands/test-verdict.d.ts +0 -92
- package/dist/src/commands/test-verdict.js +0 -162
- 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.d.ts +0 -56
- 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 -274
- 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 -92
- package/dist/src/core/config-validate.d.ts +0 -11
- package/dist/src/core/config-validate.js +0 -503
- 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/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 -62
- package/dist/src/core/furnace-apply-overwrite-warn.js +0 -124
- 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 -146
- 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 -79
- package/dist/src/core/furnace-constants.js +0 -123
- 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-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 -61
- package/dist/src/core/furnace-jsconfig.js +0 -208
- 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-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 -302
- 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 -318
- 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 -204
- 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.d.ts +0 -78
- package/dist/src/core/patch-lint-cache.js +0 -233
- package/dist/src/core/patch-lint-checkjs-any-import.d.ts +0 -39
- package/dist/src/core/patch-lint-checkjs-any-import.js +0 -63
- 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.d.ts +0 -180
- package/dist/src/core/patch-lint-checkjs.js +0 -611
- 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 -5
- package/dist/src/core/patch-lint-imports.js +0 -67
- 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 -78
- package/dist/src/core/patch-lint-staged-registration.js +0 -110
- package/dist/src/core/patch-lint-token-scale.d.ts +0 -57
- package/dist/src/core/patch-lint-token-scale.js +0 -286
- 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 -191
- package/dist/src/core/patch-lint.js +0 -529
- 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 -161
- package/dist/src/core/patch-parse.js +0 -347
- package/dist/src/core/patch-policy-content.d.ts +0 -40
- package/dist/src/core/patch-policy-content.js +0 -216
- 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-shim.d.ts +0 -90
- package/dist/src/core/typecheck-shim.js +0 -507
- package/dist/src/core/typecheck.d.ts +0 -75
- package/dist/src/core/typecheck.js +0 -433
- 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 -1367
- 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 -703
- package/dist/src/types/config.js +0 -15
- package/dist/src/types/furnace.d.ts +0 -415
- 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
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
+
/**
|
|
3
|
+
* Launching the built browser: interactively, or as a smoke start that
|
|
4
|
+
* watches the console for a fixed window and judges what it saw.
|
|
5
|
+
*
|
|
6
|
+
* Profiles: desktop `mach run` has no profile option of its own, so a profile
|
|
7
|
+
* reaches Firefox as the program parameter `-profile <dir>`. A temporary
|
|
8
|
+
* profile is created, seeded and removed here, because the one mach can mint
|
|
9
|
+
* lives in the object directory and is never removed.
|
|
10
|
+
*/
|
|
11
|
+
import { tmpdir } from 'node:os';
|
|
12
|
+
import { join } from 'node:path';
|
|
13
|
+
import { ExitCode, FireForgeError, toError } from '../kernel/errors.js';
|
|
14
|
+
import { appendText, listDir, makeTempDir, readText, readTextIfExists, remove, writeFile, } from '../kernel/fs.js';
|
|
15
|
+
import { info, verbose, warn } from '../kernel/log.js';
|
|
16
|
+
import { isProcessAlive, listProcesses } from '../kernel/process/index.js';
|
|
17
|
+
import { onShutdown } from '../kernel/signals.js';
|
|
18
|
+
import { withDisplay } from './hostLocks.js';
|
|
19
|
+
import { runMach } from './mach.js';
|
|
20
|
+
import { requireBuilt } from './objdir.js';
|
|
21
|
+
import { compileAllowlist, createSmokeScan, parseAllowlistFile, smokeFailure, } from './smoke.js';
|
|
22
|
+
const PROFILE_PREFIX = 'fireforge-run-profile-';
|
|
23
|
+
const OWNER_MARKER = '.fireforge-run-owner';
|
|
24
|
+
/** The prefs mach writes into profiles it creates; one passed with `-profile` gets none of them. */
|
|
25
|
+
const SEEDED_PREFS = 'user_pref("browser.shell.checkDefaultBrowser", false);\n' +
|
|
26
|
+
'user_pref("browser.aboutConfig.showWarning", false);\n';
|
|
27
|
+
/**
|
|
28
|
+
* Removes temporary profiles whose FireForge was killed before it could.
|
|
29
|
+
* A browser can outlive its FireForge, so a profile some running process
|
|
30
|
+
* names on its command line is still in use.
|
|
31
|
+
*/
|
|
32
|
+
async function sweepAbandonedProfiles(root) {
|
|
33
|
+
const profiles = (await listDir(root).catch(() => [])).filter((entry) => entry.name.startsWith(PROFILE_PREFIX));
|
|
34
|
+
if (profiles.length === 0)
|
|
35
|
+
return;
|
|
36
|
+
const commands = (await listProcesses(['pid', 'command'])).map((row) => row.command);
|
|
37
|
+
for (const entry of profiles) {
|
|
38
|
+
const dir = join(root, entry.name);
|
|
39
|
+
// Without a readable marker nothing proves the directory abandoned.
|
|
40
|
+
const pid = Number((await readTextIfExists(join(dir, OWNER_MARKER)).catch(() => ''))?.trim());
|
|
41
|
+
if (!Number.isSafeInteger(pid) || pid <= 0 || pid === process.pid || isProcessAlive(pid)) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (commands.some((command) => command.includes(dir)))
|
|
45
|
+
continue;
|
|
46
|
+
await remove(dir).catch((error) => {
|
|
47
|
+
verbose(`Could not remove abandoned run profile ${dir}: ${toError(error).message}`);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Chooses the profile. A named or default profile is launched with
|
|
53
|
+
* `-purgecaches`: a front-end build keeps the build id a profile's startup
|
|
54
|
+
* cache is keyed on, so without it a reused profile runs the chrome scripts
|
|
55
|
+
* an earlier build cached.
|
|
56
|
+
*/
|
|
57
|
+
async function chooseProfile(options) {
|
|
58
|
+
const none = () => Promise.resolve();
|
|
59
|
+
if (options.profile !== undefined) {
|
|
60
|
+
return {
|
|
61
|
+
args: ['-profile', options.profile, '-purgecaches'],
|
|
62
|
+
kept: options.profile,
|
|
63
|
+
dispose: none,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const fresh = options.tempProfile === true ||
|
|
67
|
+
options.smokeExit !== undefined ||
|
|
68
|
+
options.screenshot !== undefined;
|
|
69
|
+
if (!fresh)
|
|
70
|
+
return { args: ['-purgecaches'], dispose: none };
|
|
71
|
+
await sweepAbandonedProfiles(tmpdir());
|
|
72
|
+
const dir = await makeTempDir(PROFILE_PREFIX);
|
|
73
|
+
// The marker goes in first, so a directory left by a killed run can be proven abandoned.
|
|
74
|
+
await writeFile(join(dir, OWNER_MARKER), `${process.pid}\n`, { durable: false });
|
|
75
|
+
await writeFile(join(dir, 'user.js'), SEEDED_PREFS, { durable: false });
|
|
76
|
+
verbose(`Temporary run profile: ${dir}`);
|
|
77
|
+
let removed;
|
|
78
|
+
const dispose = () => {
|
|
79
|
+
removed ??= remove(dir).catch((error) => {
|
|
80
|
+
warn(`Could not remove the temporary run profile ${dir}: ${toError(error).message}`);
|
|
81
|
+
});
|
|
82
|
+
return removed;
|
|
83
|
+
};
|
|
84
|
+
// An interrupt ends the process before a `finally` runs.
|
|
85
|
+
const disarm = onShutdown('restore', dispose);
|
|
86
|
+
return {
|
|
87
|
+
args: ['-profile', dir],
|
|
88
|
+
async dispose() {
|
|
89
|
+
disarm();
|
|
90
|
+
await dispose();
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
async function readAllowlist(options) {
|
|
95
|
+
const allow = compileAllowlist(options.consoleAllow ?? []);
|
|
96
|
+
if (options.consoleAllowFile === undefined)
|
|
97
|
+
return allow;
|
|
98
|
+
let body;
|
|
99
|
+
try {
|
|
100
|
+
body = await readText(options.consoleAllowFile);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
throw new FireForgeError('invalid-argument', `Cannot read the allowlist file ${options.consoleAllowFile}: ${toError(error).message}`, { exitCode: ExitCode.INVALID_ARGUMENT, cause: error });
|
|
104
|
+
}
|
|
105
|
+
return [...allow, ...parseAllowlistFile(body, options.consoleAllowFile)];
|
|
106
|
+
}
|
|
107
|
+
/** A sink appending console lines to a file, in order, without blocking the stream. */
|
|
108
|
+
async function openCapture(path) {
|
|
109
|
+
if (path === undefined)
|
|
110
|
+
return { line: () => undefined, close: () => Promise.resolve() };
|
|
111
|
+
await writeFile(path, '', { durable: false });
|
|
112
|
+
let buffer = '';
|
|
113
|
+
let failed = false;
|
|
114
|
+
let writing = Promise.resolve();
|
|
115
|
+
const flush = () => {
|
|
116
|
+
const text = buffer;
|
|
117
|
+
buffer = '';
|
|
118
|
+
writing = writing.then(async () => {
|
|
119
|
+
if (failed || text === '')
|
|
120
|
+
return;
|
|
121
|
+
try {
|
|
122
|
+
await appendText(path, text);
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
failed = true;
|
|
126
|
+
warn(`Console capture to ${path} stopped: ${toError(error).message}`);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
return {
|
|
131
|
+
line(line) {
|
|
132
|
+
const idle = buffer === '';
|
|
133
|
+
buffer += `${line}\n`;
|
|
134
|
+
// One append per burst of lines: a write is queued when the buffer starts filling.
|
|
135
|
+
if (idle)
|
|
136
|
+
queueMicrotask(flush);
|
|
137
|
+
},
|
|
138
|
+
async close() {
|
|
139
|
+
flush();
|
|
140
|
+
await writing;
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function reportSmoke(smoke, windowSeconds) {
|
|
145
|
+
const seconds = (smoke.elapsedMs / 1000).toFixed(1);
|
|
146
|
+
info(`Smoke start: ${seconds}s of a ${windowSeconds}s window` +
|
|
147
|
+
(smoke.timedOut ? ', browser still running and terminated' : ', browser exited by itself'));
|
|
148
|
+
info(` Console errors: ${smoke.errors.length} (${smoke.allowedErrors} more allowed)`);
|
|
149
|
+
for (const entry of smoke.entries) {
|
|
150
|
+
const cap = entry.maxHits === undefined ? '' : `/${entry.maxHits}`;
|
|
151
|
+
const stale = entry.hits === 0 ? ' (never matched)' : '';
|
|
152
|
+
info(` ${entry.hits}${cap} ${entry.origin} ${entry.source}${stale}`);
|
|
153
|
+
}
|
|
154
|
+
for (const over of smoke.overCap) {
|
|
155
|
+
warn(`Allowed pattern "${over.source}" (${over.origin}) matched ${over.hits} lines, over its cap of ${over.maxHits}.`);
|
|
156
|
+
}
|
|
157
|
+
for (const line of smoke.errors.slice(0, 10))
|
|
158
|
+
warn(` ${line}`);
|
|
159
|
+
if (smoke.errors.length > 10)
|
|
160
|
+
warn(` and ${smoke.errors.length - 10} more.`);
|
|
161
|
+
}
|
|
162
|
+
async function launch(workspace, options, profile) {
|
|
163
|
+
const headless = options.headless === true || options.screenshot !== undefined;
|
|
164
|
+
const machArgs = [
|
|
165
|
+
'run',
|
|
166
|
+
...(headless ? ['--headless'] : []),
|
|
167
|
+
...profile.args,
|
|
168
|
+
...(options.screenshot === undefined ? [] : ['--screenshot', options.screenshot]),
|
|
169
|
+
...(options.args ?? []),
|
|
170
|
+
];
|
|
171
|
+
const kept = profile.kept === undefined ? {} : { profile: profile.kept };
|
|
172
|
+
const shot = options.screenshot === undefined ? {} : { screenshot: options.screenshot };
|
|
173
|
+
if (options.smokeExit === undefined) {
|
|
174
|
+
// The browser's output is shown on stderr: stdout carries the command's result.
|
|
175
|
+
const capture = await openCapture(options.captureConsole);
|
|
176
|
+
let exitCode;
|
|
177
|
+
try {
|
|
178
|
+
({ exitCode } = await runMach(workspace, machArgs, { onLine: capture.line, hints: false }));
|
|
179
|
+
}
|
|
180
|
+
finally {
|
|
181
|
+
await capture.close();
|
|
182
|
+
}
|
|
183
|
+
// 130 and 143: the operator closed it with Ctrl+C, or it was asked to stop.
|
|
184
|
+
if (exitCode !== 0 && exitCode !== 130 && exitCode !== 143) {
|
|
185
|
+
throw new FireForgeError('browser-exited', `The browser exited ${exitCode}`, {
|
|
186
|
+
exitCode: ExitCode.BUILD_ERROR,
|
|
187
|
+
hint: 'Its output above names the cause; --capture-console <file> keeps a copy of it.',
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
return { exitCode, ...kept, ...shot };
|
|
191
|
+
}
|
|
192
|
+
const scan = createSmokeScan(await readAllowlist(options));
|
|
193
|
+
const capture = await openCapture(options.captureConsole);
|
|
194
|
+
const startedAt = Date.now();
|
|
195
|
+
let exit;
|
|
196
|
+
try {
|
|
197
|
+
exit = await runMach(workspace, machArgs, {
|
|
198
|
+
timeoutMs: options.smokeExit * 1000,
|
|
199
|
+
hints: false,
|
|
200
|
+
onLine: (line) => {
|
|
201
|
+
scan.line(line);
|
|
202
|
+
capture.line(line);
|
|
203
|
+
},
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
finally {
|
|
207
|
+
await capture.close();
|
|
208
|
+
}
|
|
209
|
+
const smoke = { ...scan.report(), elapsedMs: Date.now() - startedAt, timedOut: exit.timedOut };
|
|
210
|
+
reportSmoke(smoke, options.smokeExit);
|
|
211
|
+
const failure = smokeFailure(smoke, exit);
|
|
212
|
+
if (failure !== undefined)
|
|
213
|
+
throw failure;
|
|
214
|
+
return { exitCode: exit.exitCode, smoke, ...kept, ...shot };
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Launches the workspace's built browser.
|
|
218
|
+
*
|
|
219
|
+
* Without `smokeExit` the browser runs until it is closed. With it the run is
|
|
220
|
+
* a smoke start: the console is scanned for `smokeExit` seconds, then the
|
|
221
|
+
* browser's process tree is terminated.
|
|
222
|
+
*
|
|
223
|
+
* A launch with a window holds the host's display lock, so two sessions
|
|
224
|
+
* never put a browser on screen at once.
|
|
225
|
+
*
|
|
226
|
+
* @param workspace - The workspace holding the build
|
|
227
|
+
* @param options - See {@link RunOptions}
|
|
228
|
+
* @throws `build-missing` when nothing is built; `smoke-console-errors` (exit
|
|
229
|
+
* code 12) when a smoke start saw unallowed errors; `smoke-launch-failed`
|
|
230
|
+
* (exit code 13) when its browser left before the window elapsed;
|
|
231
|
+
* `browser-exited` (exit code 5) when a plain launch ended abnormally
|
|
232
|
+
*/
|
|
233
|
+
export async function runBrowser(workspace, options = {}) {
|
|
234
|
+
if (options.profile !== undefined && options.tempProfile === true) {
|
|
235
|
+
throw new FireForgeError('invalid-argument', 'A named profile and a temporary profile cannot both be asked for', { exitCode: ExitCode.INVALID_ARGUMENT });
|
|
236
|
+
}
|
|
237
|
+
if (options.smokeExit !== undefined) {
|
|
238
|
+
if (process.platform === 'win32') {
|
|
239
|
+
throw new FireForgeError('invalid-argument', 'A smoke start needs process groups to end the browser, which Windows does not have', { exitCode: ExitCode.INVALID_ARGUMENT });
|
|
240
|
+
}
|
|
241
|
+
if (!Number.isFinite(options.smokeExit) || options.smokeExit <= 0) {
|
|
242
|
+
throw new FireForgeError('invalid-argument', 'The smoke window must be a positive number of seconds', {
|
|
243
|
+
exitCode: ExitCode.INVALID_ARGUMENT,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
await requireBuilt(workspace);
|
|
248
|
+
const profile = await chooseProfile(options);
|
|
249
|
+
try {
|
|
250
|
+
const body = () => launch(workspace, options, profile);
|
|
251
|
+
const headless = options.headless === true || options.screenshot !== undefined;
|
|
252
|
+
return headless
|
|
253
|
+
? await body()
|
|
254
|
+
: await withDisplay(workspace.project.host, options.waitMs, body);
|
|
255
|
+
}
|
|
256
|
+
finally {
|
|
257
|
+
await profile.dispose();
|
|
258
|
+
}
|
|
259
|
+
}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
+
/**
|
|
3
|
+
* What a smoke start reads from the browser's console: which lines are
|
|
4
|
+
* runtime errors, which of those the project allows, and the judgement over
|
|
5
|
+
* one run's lines. Pure; launching and timing are `run.ts`.
|
|
6
|
+
*
|
|
7
|
+
* Error patterns are anchored at the start of the line: Firefox prints these
|
|
8
|
+
* prefixes at column zero, and the same words inside an unrelated message
|
|
9
|
+
* must not count.
|
|
10
|
+
*/
|
|
11
|
+
import { ExitCode, FireForgeError, toError } from '../kernel/errors.js';
|
|
12
|
+
import { splitLines } from '../kernel/text.js';
|
|
13
|
+
const ERROR_PATTERNS = [
|
|
14
|
+
/^\s*JavaScript error:/i,
|
|
15
|
+
/^\s*console\.error:/i,
|
|
16
|
+
/^\s*\[JavaScript (Error|Warning)\]/i,
|
|
17
|
+
// A fatal IPC assertion in the parent process.
|
|
18
|
+
/^\s*###!!! \[Parent\]/,
|
|
19
|
+
// A chrome:// or resource:// URL that resolves to nothing. Outside
|
|
20
|
+
// automation Gecko only prints this; under a test harness the same defect
|
|
21
|
+
// crashes the process that opened the channel.
|
|
22
|
+
/^\s*Missing chrome or resource URLs?:/,
|
|
23
|
+
];
|
|
24
|
+
/**
|
|
25
|
+
* Whether a console line is a runtime error of the browser.
|
|
26
|
+
*
|
|
27
|
+
* @param line - One output line
|
|
28
|
+
*/
|
|
29
|
+
export function isSmokeError(line) {
|
|
30
|
+
return ERROR_PATTERNS.some((pattern) => pattern.test(line));
|
|
31
|
+
}
|
|
32
|
+
/** mach's own log lines carry an elapsed-time prefix; they prove mach ran, not the browser. */
|
|
33
|
+
const MACH_LOG_LINE = /^\s*\d+:\d{2}\.\d{2} /;
|
|
34
|
+
/**
|
|
35
|
+
* Whether a line is output of the browser rather than of mach.
|
|
36
|
+
*
|
|
37
|
+
* @param line - One output line
|
|
38
|
+
*/
|
|
39
|
+
export function isBrowserLine(line) {
|
|
40
|
+
return line.trim() !== '' && !MACH_LOG_LINE.test(line);
|
|
41
|
+
}
|
|
42
|
+
function invalid(message, cause) {
|
|
43
|
+
return new FireForgeError('invalid-argument', message, {
|
|
44
|
+
exitCode: ExitCode.INVALID_ARGUMENT,
|
|
45
|
+
...(cause === undefined ? {} : { cause }),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function compile(source, origin, maxHits) {
|
|
49
|
+
try {
|
|
50
|
+
return {
|
|
51
|
+
pattern: new RegExp(source),
|
|
52
|
+
source,
|
|
53
|
+
origin,
|
|
54
|
+
...(maxHits === undefined ? {} : { maxHits }),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
throw invalid(`Invalid allowlist pattern at ${origin}: ${toError(error).message}`, error);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Compiles allowlist patterns given on the command line.
|
|
63
|
+
*
|
|
64
|
+
* @param sources - Regular expressions
|
|
65
|
+
* @throws `invalid-argument` (exit code 8) naming the pattern that does not compile
|
|
66
|
+
*/
|
|
67
|
+
export function compileAllowlist(sources) {
|
|
68
|
+
return sources.map((source, index) => compile(source, `--console-allow #${index + 1}`, undefined));
|
|
69
|
+
}
|
|
70
|
+
const MAX_HITS = /^#\s*max-hits:\s*(\S+)\s*$/i;
|
|
71
|
+
/**
|
|
72
|
+
* Parses an allowlist file: one regular expression per line, blank lines and
|
|
73
|
+
* `#` comments skipped. A `# max-hits: N` comment caps the entry that follows
|
|
74
|
+
* it; one that no entry follows is an error, never a silently dropped cap.
|
|
75
|
+
*
|
|
76
|
+
* @param body - The file's text
|
|
77
|
+
* @param path - Its path, for origins and messages
|
|
78
|
+
* @throws `invalid-argument` (exit code 8) naming the line at fault
|
|
79
|
+
*/
|
|
80
|
+
export function parseAllowlistFile(body, path) {
|
|
81
|
+
const entries = [];
|
|
82
|
+
let pending;
|
|
83
|
+
const orphan = () => {
|
|
84
|
+
if (pending !== undefined) {
|
|
85
|
+
throw invalid(`The max-hits directive at ${pending.at} is not followed by an entry`);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
for (const [index, raw] of splitLines(body).entries()) {
|
|
89
|
+
const line = raw.trim();
|
|
90
|
+
const at = `${path}:${index + 1}`;
|
|
91
|
+
if (line === '') {
|
|
92
|
+
orphan();
|
|
93
|
+
}
|
|
94
|
+
else if (line.startsWith('#')) {
|
|
95
|
+
const value = MAX_HITS.exec(line)?.[1];
|
|
96
|
+
if (value === undefined)
|
|
97
|
+
continue;
|
|
98
|
+
if (!/^[1-9]\d*$/.test(value)) {
|
|
99
|
+
throw invalid(`The max-hits directive at ${at} needs a positive integer (got "${value}")`);
|
|
100
|
+
}
|
|
101
|
+
pending = { maxHits: Number(value), at };
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
entries.push(compile(line, at, pending?.maxHits));
|
|
105
|
+
pending = undefined;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
orphan();
|
|
109
|
+
return entries;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Starts the scan of one run's console.
|
|
113
|
+
*
|
|
114
|
+
* @param allowlist - The project's allowed patterns
|
|
115
|
+
* @returns `line` for each output line, and `report` for the result so far
|
|
116
|
+
*/
|
|
117
|
+
export function createSmokeScan(allowlist) {
|
|
118
|
+
const hits = allowlist.map(() => 0);
|
|
119
|
+
const errors = [];
|
|
120
|
+
let allowedErrors = 0;
|
|
121
|
+
let browserLines = 0;
|
|
122
|
+
return {
|
|
123
|
+
line(line) {
|
|
124
|
+
if (isBrowserLine(line))
|
|
125
|
+
browserLines += 1;
|
|
126
|
+
// The first matching entry is credited, whether or not the line is an
|
|
127
|
+
// error: the count is what an operator tunes a cap against.
|
|
128
|
+
const index = allowlist.findIndex((entry) => entry.pattern.test(line));
|
|
129
|
+
if (index !== -1)
|
|
130
|
+
hits[index] = (hits[index] ?? 0) + 1;
|
|
131
|
+
if (!isSmokeError(line))
|
|
132
|
+
return;
|
|
133
|
+
if (index === -1)
|
|
134
|
+
errors.push(line);
|
|
135
|
+
else
|
|
136
|
+
allowedErrors += 1;
|
|
137
|
+
},
|
|
138
|
+
report() {
|
|
139
|
+
const entries = allowlist.map((entry, index) => ({
|
|
140
|
+
source: entry.source,
|
|
141
|
+
origin: entry.origin,
|
|
142
|
+
hits: hits[index] ?? 0,
|
|
143
|
+
...(entry.maxHits === undefined ? {} : { maxHits: entry.maxHits }),
|
|
144
|
+
}));
|
|
145
|
+
return {
|
|
146
|
+
errors: [...errors],
|
|
147
|
+
allowedErrors,
|
|
148
|
+
browserLines,
|
|
149
|
+
entries,
|
|
150
|
+
overCap: entries.flatMap((entry) => entry.maxHits !== undefined && entry.hits > entry.maxHits
|
|
151
|
+
? [{ ...entry, maxHits: entry.maxHits }]
|
|
152
|
+
: []),
|
|
153
|
+
};
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* The judgement over a smoke start, or undefined for a pass. Console errors
|
|
159
|
+
* outrank everything: a browser that printed one and then lived out its
|
|
160
|
+
* window still failed. A browser that left before the window elapsed failed
|
|
161
|
+
* to launch, unless it left cleanly having shown a console. A window that
|
|
162
|
+
* elapsed without one line from the browser proves no start either.
|
|
163
|
+
*
|
|
164
|
+
* @param report - What the console held
|
|
165
|
+
* @param exit - How the browser ended
|
|
166
|
+
* @returns `smoke-console-errors` (exit code 12) or `smoke-launch-failed` (exit code 13)
|
|
167
|
+
*/
|
|
168
|
+
export function smokeFailure(report, exit) {
|
|
169
|
+
if (report.errors.length > 0 || report.overCap.length > 0) {
|
|
170
|
+
const parts = [
|
|
171
|
+
...(report.errors.length > 0 ? [`${report.errors.length} console error(s)`] : []),
|
|
172
|
+
...(report.overCap.length > 0
|
|
173
|
+
? [
|
|
174
|
+
`${report.overCap.length} allowlist entr${report.overCap.length === 1 ? 'y' : 'ies'} over the max-hits cap`,
|
|
175
|
+
]
|
|
176
|
+
: []),
|
|
177
|
+
];
|
|
178
|
+
return new FireForgeError('smoke-console-errors', `The smoke start saw ${parts.join(' and ')}`, {
|
|
179
|
+
exitCode: ExitCode.SMOKE_EXIT_FAILURE,
|
|
180
|
+
hint: 'Fix the errors, or allow an expected line with --console-allow <regex>.',
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
if (exit.timedOut) {
|
|
184
|
+
if (report.browserLines > 0)
|
|
185
|
+
return undefined;
|
|
186
|
+
return new FireForgeError('smoke-launch-failed', 'The smoke window elapsed without a line from the browser, so nothing shows it started', {
|
|
187
|
+
exitCode: ExitCode.SMOKE_LAUNCH_FAILURE,
|
|
188
|
+
hint: 'mach may still have been preparing (a first run sets up its environment), or the browser ' +
|
|
189
|
+
'is waiting on a dialog such as a locked profile: retry with a longer --smoke-exit, or run ' +
|
|
190
|
+
'without it to watch the window.',
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
const clean = exit.exitCode === 0 || exit.exitCode === 130 || exit.exitCode === 143;
|
|
194
|
+
if (clean && report.browserLines > 0)
|
|
195
|
+
return undefined;
|
|
196
|
+
return new FireForgeError('smoke-launch-failed', clean
|
|
197
|
+
? `The browser exited ${exit.exitCode} before the smoke window elapsed without printing anything`
|
|
198
|
+
: `The browser exited ${exit.exitCode} before the smoke window elapsed`, {
|
|
199
|
+
exitCode: ExitCode.SMOKE_LAUNCH_FAILURE,
|
|
200
|
+
hint: clean
|
|
201
|
+
? 'A silent early exit means the launch never reached a window: look for a locked profile or a startup-crash streak.'
|
|
202
|
+
: 'Read the output above for the crash or startup error.',
|
|
203
|
+
});
|
|
204
|
+
}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
+
/**
|
|
3
|
+
* Whether a workspace's build still matches its engine. The one answer
|
|
4
|
+
* `test`, `run` and `package` all ask for.
|
|
5
|
+
*
|
|
6
|
+
* A successful build records a baseline in the workspace's state: a snapshot
|
|
7
|
+
* of the engine's working tree as a git tree (kept alive by a ref in the
|
|
8
|
+
* engine's repository), a second one for the last full build, and the digest
|
|
9
|
+
* of the mozconfig. Staleness is the diff from those snapshots to the working
|
|
10
|
+
* tree now, read through what each changed path means to the build:
|
|
11
|
+
*
|
|
12
|
+
* - compiled sources and build definitions reach the browser only through a
|
|
13
|
+
* full build, so they are compared with the last full build;
|
|
14
|
+
* - packaged front-end files are compared with the last build of any kind,
|
|
15
|
+
* and do not count while the object directory serves them by symlink;
|
|
16
|
+
* - a `jar.mn` needs a full build only when the build backend has never
|
|
17
|
+
* seen it, or when it installs outside the default chrome root; an entry
|
|
18
|
+
* added to a known manifest is installed by a UI build;
|
|
19
|
+
* - anything else (tests, documentation) never makes a build stale.
|
|
20
|
+
*/
|
|
21
|
+
import { join } from 'node:path';
|
|
22
|
+
import { captureWorktree, changedPaths, commitTree, readBlobs, resolveRevision, updateRef, } from '../git/index.js';
|
|
23
|
+
import { exists, readTextIfExists } from '../kernel/fs.js';
|
|
24
|
+
import { hash } from '../kernel/hash.js';
|
|
25
|
+
import { s } from '../kernel/schema.js';
|
|
26
|
+
import { defineStateSection, readState, updateState } from '../project/index.js';
|
|
27
|
+
import { deliveryOf, readInstallIndex } from './installManifests.js';
|
|
28
|
+
import { renderMozconfig } from './mozconfig.js';
|
|
29
|
+
import { findBrowserBinary, movedFrom } from './objdir.js';
|
|
30
|
+
const baselineSection = defineStateSection('build', s.object({
|
|
31
|
+
kind: s.enum(['full', 'ui']),
|
|
32
|
+
builtAt: s.string(),
|
|
33
|
+
/** Commit wrapping the engine's working tree as the last build saw it. */
|
|
34
|
+
tree: s.string({ min: 1 }),
|
|
35
|
+
/** The same for the last full build. */
|
|
36
|
+
fullTree: s.string({ min: 1 }),
|
|
37
|
+
/** SHA-256 of the mozconfig the object directory was configured with. */
|
|
38
|
+
mozconfig: s.string({ min: 1 }),
|
|
39
|
+
}), 'fireforge build');
|
|
40
|
+
const COMPILED_EXTENSIONS = new Set('c cc cpp cxx h hh hpp m mm rs idl webidl ipdl ipdlh yaml yml s S asm inc tbl def'.split(' '));
|
|
41
|
+
const COMPILED_NAMES = new Set(['Bindings.conf', 'Cargo.toml', 'Cargo.lock', 'components.conf']);
|
|
42
|
+
/** Files the build backend is generated from. */
|
|
43
|
+
const BACKEND_NAMES = new Set(['moz.build', 'moz.configure', 'Makefile.in', 'mozbuild.in']);
|
|
44
|
+
const BACKEND_EXTENSIONS = new Set(['mozbuild', 'configure']);
|
|
45
|
+
/** Directories whose compiled sources never reach the browser binary. */
|
|
46
|
+
const NON_RUNTIME_SEGMENTS = new Set(['test', 'tests', 'gtest', 'testing', 'taskcluster']);
|
|
47
|
+
const PACKAGED_EXTENSIONS = new Set('js mjs jsm css ftl xhtml xul html properties'.split(' '));
|
|
48
|
+
const PACKAGED_FRAGMENTS = ['/app/profile/', '/chrome/', '/locales/'];
|
|
49
|
+
/**
|
|
50
|
+
* Whether a path belongs to the test tree rather than the browser: a test
|
|
51
|
+
* directory, the harness tree, or a file named like a test.
|
|
52
|
+
*
|
|
53
|
+
* @param path - Engine-relative path
|
|
54
|
+
*/
|
|
55
|
+
export function isTestPath(path) {
|
|
56
|
+
if (/(?:^|\/)(?:test|tests|testing)\//.test(path))
|
|
57
|
+
return true;
|
|
58
|
+
return /^(?:browser|test)_.+\.(?:js|toml|ini)$/.test(path.slice(path.lastIndexOf('/') + 1));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* How a changed engine path bears on the build, by its name alone.
|
|
62
|
+
*
|
|
63
|
+
* @param path - Engine-relative path
|
|
64
|
+
* @returns Undefined for a path no build consumes
|
|
65
|
+
*/
|
|
66
|
+
export function buildInputClass(path) {
|
|
67
|
+
const name = path.slice(path.lastIndexOf('/') + 1);
|
|
68
|
+
const extension = name.includes('.') ? name.slice(name.lastIndexOf('.') + 1) : '';
|
|
69
|
+
if (name === 'jar.mn')
|
|
70
|
+
return 'jar';
|
|
71
|
+
if (BACKEND_NAMES.has(name) || BACKEND_EXTENSIONS.has(extension))
|
|
72
|
+
return 'full';
|
|
73
|
+
if (COMPILED_EXTENSIONS.has(extension) || COMPILED_NAMES.has(name)) {
|
|
74
|
+
return path.split('/').some((segment) => NON_RUNTIME_SEGMENTS.has(segment))
|
|
75
|
+
? undefined
|
|
76
|
+
: 'full';
|
|
77
|
+
}
|
|
78
|
+
if (PACKAGED_EXTENSIONS.has(extension) ||
|
|
79
|
+
PACKAGED_FRAGMENTS.some((part) => path.includes(part))) {
|
|
80
|
+
return 'ui';
|
|
81
|
+
}
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
/** A jar declaration that installs under another base directory: `[dir] name.jar:` at column zero. */
|
|
85
|
+
const REDIRECTED_JAR = /^\[[^\]]*\]\s*[^\s[\]]+\.jar:\s*$/m;
|
|
86
|
+
const digest = (text) => hash(text);
|
|
87
|
+
/**
|
|
88
|
+
* Snapshots the engine as a build is about to read it: what a successful
|
|
89
|
+
* build then records, so an edit made while the build ran is not taken as
|
|
90
|
+
* built.
|
|
91
|
+
*
|
|
92
|
+
* @param workspace - The workspace
|
|
93
|
+
*/
|
|
94
|
+
export async function snapshotEngine(workspace) {
|
|
95
|
+
const { engineDir } = workspace;
|
|
96
|
+
const head = await resolveRevision(engineDir, 'HEAD', 'commit');
|
|
97
|
+
const tree = await commitTree(engineDir, await captureWorktree(engineDir), {
|
|
98
|
+
message: 'fireforge build input',
|
|
99
|
+
parents: head === undefined ? [] : [head],
|
|
100
|
+
});
|
|
101
|
+
const mozconfig = digest((await readTextIfExists(join(engineDir, 'mozconfig'))) ?? '');
|
|
102
|
+
return { tree, mozconfig };
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Records that a build of the workspace succeeded, as the baseline
|
|
106
|
+
* {@link buildStaleness} measures from.
|
|
107
|
+
*
|
|
108
|
+
* @param workspace - The workspace
|
|
109
|
+
* @param kind - Which build ran
|
|
110
|
+
* @param snapshot - The engine as the build started reading it
|
|
111
|
+
* @returns The baseline as recorded
|
|
112
|
+
*/
|
|
113
|
+
export async function recordBuild(workspace, kind, snapshot) {
|
|
114
|
+
const { engineDir } = workspace;
|
|
115
|
+
const { tree, mozconfig } = snapshot;
|
|
116
|
+
await updateRef(engineDir, 'refs/fireforge/build/last', tree);
|
|
117
|
+
if (kind === 'full')
|
|
118
|
+
await updateRef(engineDir, 'refs/fireforge/build/full', tree);
|
|
119
|
+
const recorded = await updateState(workspace, baselineSection, (previous) => ({
|
|
120
|
+
kind,
|
|
121
|
+
builtAt: new Date().toISOString(),
|
|
122
|
+
tree,
|
|
123
|
+
// A UI build on top of nothing recorded can only follow a full build made elsewhere.
|
|
124
|
+
fullTree: kind === 'full' ? tree : (previous?.fullTree ?? tree),
|
|
125
|
+
mozconfig,
|
|
126
|
+
}));
|
|
127
|
+
return recorded;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* The baseline of a workspace's last successful build.
|
|
131
|
+
*
|
|
132
|
+
* @param workspace - The workspace
|
|
133
|
+
*/
|
|
134
|
+
export function readBuildBaseline(workspace) {
|
|
135
|
+
return readState(workspace, baselineSection);
|
|
136
|
+
}
|
|
137
|
+
function stale(needs, why, paths = []) {
|
|
138
|
+
return { state: 'stale', paths: [...paths].sort(), needs, why };
|
|
139
|
+
}
|
|
140
|
+
/** The changed `jar.mn` files that a UI build cannot install. */
|
|
141
|
+
async function escalatingJars(engineDir, jars, fullTree) {
|
|
142
|
+
if (jars.length === 0)
|
|
143
|
+
return [];
|
|
144
|
+
const known = await readBlobs(engineDir, jars.map((path) => `${fullTree}:${path}`));
|
|
145
|
+
const escalating = [];
|
|
146
|
+
for (const path of jars) {
|
|
147
|
+
const text = await readTextIfExists(join(engineDir, path));
|
|
148
|
+
// Removed: the backend still installs its entries. New: it has no install manifest yet.
|
|
149
|
+
if (text === undefined || !known.has(`${fullTree}:${path}`) || REDIRECTED_JAR.test(text)) {
|
|
150
|
+
escalating.push(path);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return escalating;
|
|
154
|
+
}
|
|
155
|
+
/** The changed front-end files the object directory does not already serve. */
|
|
156
|
+
async function unserved(workspace, paths) {
|
|
157
|
+
if (paths.length === 0)
|
|
158
|
+
return [];
|
|
159
|
+
const { engineDir, objDir } = workspace;
|
|
160
|
+
const index = await readInstallIndex(engineDir, objDir);
|
|
161
|
+
const remaining = [];
|
|
162
|
+
for (const path of paths) {
|
|
163
|
+
if (!(await exists(join(engineDir, path)))) {
|
|
164
|
+
// A deleted file is served by nothing; whether it was ever packaged is all that matters.
|
|
165
|
+
if (!isTestPath(path))
|
|
166
|
+
remaining.push(path);
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
const delivery = index === undefined ? 'unlisted' : await deliveryOf(index, engineDir, path);
|
|
170
|
+
if (delivery === 'live' || delivery === 'at-test')
|
|
171
|
+
continue;
|
|
172
|
+
if (delivery === 'unlisted' && isTestPath(path))
|
|
173
|
+
continue;
|
|
174
|
+
remaining.push(path);
|
|
175
|
+
}
|
|
176
|
+
return remaining;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Whether the workspace's development build matches its engine.
|
|
180
|
+
*
|
|
181
|
+
* @param workspace - The workspace
|
|
182
|
+
* @returns `fresh`, or what changed and the smallest build that catches up
|
|
183
|
+
*/
|
|
184
|
+
export async function buildStaleness(workspace) {
|
|
185
|
+
const { engineDir, objDir, project } = workspace;
|
|
186
|
+
const baseline = await readBuildBaseline(workspace);
|
|
187
|
+
if (baseline === undefined)
|
|
188
|
+
return stale('full', 'no build of this workspace is recorded');
|
|
189
|
+
if ((await findBrowserBinary(objDir, project.config.binaryName)) === undefined) {
|
|
190
|
+
return stale('full', 'the object directory holds no launchable browser');
|
|
191
|
+
}
|
|
192
|
+
if ((await movedFrom(workspace)) !== undefined) {
|
|
193
|
+
return stale('full', 'the object directory was configured at another path and cannot be used here');
|
|
194
|
+
}
|
|
195
|
+
if (digest(await renderMozconfig(workspace)) !== baseline.mozconfig) {
|
|
196
|
+
return stale('full', 'the build configuration (configs/ or the identity) changed', [
|
|
197
|
+
'mozconfig',
|
|
198
|
+
]);
|
|
199
|
+
}
|
|
200
|
+
for (const snapshot of [baseline.tree, baseline.fullTree]) {
|
|
201
|
+
if ((await resolveRevision(engineDir, snapshot, 'commit')) === undefined) {
|
|
202
|
+
return stale('full', "the engine's repository does not hold the recorded build");
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
const now = await captureWorktree(engineDir);
|
|
206
|
+
const sinceFull = await changedPaths(engineDir, baseline.fullTree, now);
|
|
207
|
+
const sinceLast = baseline.tree === baseline.fullTree
|
|
208
|
+
? sinceFull
|
|
209
|
+
: await changedPaths(engineDir, baseline.tree, now);
|
|
210
|
+
const compiled = sinceFull.filter((path) => buildInputClass(path) === 'full');
|
|
211
|
+
const jars = await escalatingJars(engineDir, sinceFull.filter((path) => buildInputClass(path) === 'jar'), baseline.fullTree);
|
|
212
|
+
if (compiled.length > 0 || jars.length > 0) {
|
|
213
|
+
const what = [
|
|
214
|
+
...(compiled.length > 0 ? [`${compiled.length} compiled source or build definition`] : []),
|
|
215
|
+
...(jars.length > 0 ? [`${jars.length} jar.mn the build backend must regenerate for`] : []),
|
|
216
|
+
];
|
|
217
|
+
return stale('full', `${what.join(' and ')} changed since the last full build`, [
|
|
218
|
+
...compiled,
|
|
219
|
+
...jars,
|
|
220
|
+
]);
|
|
221
|
+
}
|
|
222
|
+
const frontEnd = [
|
|
223
|
+
...sinceLast.filter((path) => buildInputClass(path) === 'jar'),
|
|
224
|
+
...(await unserved(workspace, sinceLast.filter((path) => buildInputClass(path) === 'ui'))),
|
|
225
|
+
];
|
|
226
|
+
return frontEnd.length === 0
|
|
227
|
+
? { state: 'fresh' }
|
|
228
|
+
: stale('ui', `${frontEnd.length} packaged front-end file(s) changed since the last build`, frontEnd);
|
|
229
|
+
}
|