@hominis/fireforge 0.55.0 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +233 -6
- package/README.md +51 -17
- package/dist/bin/fireforge.js +34 -129
- package/dist/build-info.json +4 -4
- package/dist/src/check/check.js +394 -0
- package/dist/src/check/gate.js +448 -0
- package/dist/src/check/index.js +10 -0
- package/dist/src/check/record.js +155 -0
- package/dist/src/cli/command.js +286 -0
- package/dist/src/cli/output.js +96 -0
- package/dist/src/cli/program.js +231 -0
- package/dist/src/cli/stdio.js +59 -0
- package/dist/src/cli/version.js +99 -0
- package/dist/src/commands/bootstrap.js +17 -102
- package/dist/src/commands/build.js +34 -456
- package/dist/src/commands/check.js +44 -157
- package/dist/src/commands/config.js +50 -226
- package/dist/src/commands/discard.js +38 -215
- package/dist/src/commands/doctor.js +29 -456
- package/dist/src/commands/download.js +35 -499
- package/dist/src/commands/export.js +42 -431
- package/dist/src/commands/furnace.js +220 -0
- package/dist/src/commands/gate.js +127 -0
- package/dist/src/commands/import.js +44 -445
- package/dist/src/commands/index.js +86 -0
- package/dist/src/commands/lint.js +44 -546
- package/dist/src/commands/merge-driver.js +56 -0
- package/dist/src/commands/migrate.js +75 -0
- package/dist/src/commands/override.js +43 -0
- package/dist/src/commands/package.js +48 -77
- package/dist/src/commands/patch.js +221 -0
- package/dist/src/commands/re-export.js +55 -359
- package/dist/src/commands/rebase.js +69 -0
- package/dist/src/commands/register.js +62 -103
- package/dist/src/commands/reset.js +28 -91
- package/dist/src/commands/resolve.js +20 -167
- package/dist/src/commands/restore.js +19 -0
- package/dist/src/commands/run.js +60 -382
- package/dist/src/commands/setup.js +78 -90
- package/dist/src/commands/status.js +44 -413
- package/dist/src/commands/test.js +97 -423
- package/dist/src/commands/token.js +185 -228
- package/dist/src/commands/typecheck.js +59 -241
- package/dist/src/commands/verify.js +28 -334
- package/dist/src/commands/version.js +14 -0
- package/dist/src/commands/watch.js +20 -218
- package/dist/src/commands/wire.js +60 -349
- package/dist/src/commands/workspace.js +117 -0
- package/dist/src/config/edit.js +237 -0
- package/dist/src/config/index.js +15 -0
- package/dist/src/config/load.js +59 -0
- package/dist/src/config/previous.js +404 -0
- package/dist/src/config/schema/build.js +63 -0
- package/dist/src/config/schema/check.js +113 -0
- package/dist/src/config/schema/common.js +71 -0
- package/dist/src/config/schema/export-queue.js +36 -0
- package/dist/src/config/schema/firefox.js +69 -0
- package/dist/src/config/schema/gate.js +199 -0
- package/dist/src/config/schema/identity.js +55 -0
- package/dist/src/config/schema/index.js +45 -0
- package/dist/src/config/schema/lint.js +297 -0
- package/dist/src/config/schema/policy.js +111 -0
- package/dist/src/config/schema/source.js +90 -0
- package/dist/src/config/schema/test.js +17 -0
- package/dist/src/config/schema/toolchains.js +17 -0
- package/dist/src/config/schema/typecheck.js +29 -0
- package/dist/src/config/schema/wire.js +15 -0
- package/dist/src/diff/apply.js +129 -0
- package/dist/src/diff/index.js +16 -0
- package/dist/src/diff/model.js +267 -0
- package/dist/src/diff/query.js +65 -0
- package/dist/src/doctor/index.js +240 -0
- package/dist/src/engine/archive.js +396 -0
- package/dist/src/engine/audit.js +66 -0
- package/dist/src/engine/build.js +150 -0
- package/dist/src/engine/hostLocks.js +66 -0
- package/dist/src/engine/index.js +26 -0
- package/dist/src/engine/installManifests.js +147 -0
- package/dist/src/engine/mach.js +97 -0
- package/dist/src/engine/machHints.js +80 -0
- package/dist/src/engine/mozconfig.js +110 -0
- package/dist/src/engine/objdir.js +124 -0
- package/dist/src/engine/package.js +169 -0
- package/dist/src/engine/pin.js +12 -0
- package/dist/src/engine/pool.js +423 -0
- package/dist/src/engine/pristine.js +281 -0
- package/dist/src/engine/python.js +68 -0
- package/dist/src/engine/resourceGuard.js +582 -0
- package/dist/src/engine/run.js +259 -0
- package/dist/src/engine/smoke.js +204 -0
- package/dist/src/engine/staleness.js +229 -0
- package/dist/src/engine/watch.js +82 -0
- package/dist/src/engine/workspace.js +85 -0
- package/dist/src/furnace/config.js +360 -0
- package/dist/src/furnace/deploy.js +414 -0
- package/dist/src/furnace/diff.js +59 -0
- package/dist/src/furnace/edit.js +64 -0
- package/dist/src/furnace/fragments.js +53 -0
- package/dist/src/furnace/index.js +19 -0
- package/dist/src/furnace/operations.js +283 -0
- package/dist/src/furnace/registration.js +220 -0
- package/dist/src/furnace/scaffold.js +311 -0
- package/dist/src/furnace/typing.js +252 -0
- package/dist/src/furnace/validate.js +662 -0
- package/dist/src/git/apply.js +129 -0
- package/dist/src/git/diff.js +143 -0
- package/dist/src/git/index.js +33 -0
- package/dist/src/git/objects.js +201 -0
- package/dist/src/git/refs.js +85 -0
- package/dist/src/git/repo.js +222 -0
- package/dist/src/git/run.js +242 -0
- package/dist/src/git/status.js +156 -0
- package/dist/src/kernel/errors.js +123 -0
- package/dist/src/kernel/fs.js +515 -0
- package/dist/src/kernel/glob.js +63 -0
- package/dist/src/kernel/hash.js +28 -0
- package/dist/src/kernel/journal.js +524 -0
- package/dist/src/kernel/json-edit.js +198 -0
- package/dist/src/kernel/json.js +101 -0
- package/dist/src/kernel/lock.js +589 -0
- package/dist/src/kernel/log.js +154 -0
- package/dist/src/kernel/process/identity.js +313 -0
- package/dist/src/kernel/process/index.js +8 -0
- package/dist/src/kernel/process/listing.js +128 -0
- package/dist/src/kernel/process/spawn.js +430 -0
- package/dist/src/kernel/process/tree.js +301 -0
- package/dist/src/kernel/schema.js +308 -0
- package/dist/src/kernel/signals.js +171 -0
- package/dist/src/kernel/text.js +151 -0
- package/dist/src/kernel/time.js +83 -0
- package/dist/src/kernel/tty.js +84 -0
- package/dist/src/lint/cache.js +77 -0
- package/dist/src/lint/checkjs.js +400 -0
- package/dist/src/lint/index.js +3 -0
- package/dist/src/lint/input.js +100 -0
- package/dist/src/lint/report.js +107 -0
- package/dist/src/lint/rule.js +41 -0
- package/dist/src/lint/rules/css.js +308 -0
- package/dist/src/lint/rules/javascript.js +299 -0
- package/dist/src/lint/rules/jsdoc.js +249 -0
- package/dist/src/lint/rules/license.js +93 -0
- package/dist/src/lint/rules/policy.js +201 -0
- package/dist/src/lint/rules/registration.js +264 -0
- package/dist/src/lint/rules/size.js +299 -0
- package/dist/src/lint/run.js +126 -0
- package/dist/src/lint/shim.js +323 -0
- package/dist/src/lint/typescript.js +186 -0
- package/dist/src/lint/waivers.js +93 -0
- package/dist/src/mode/changes.js +264 -0
- package/dist/src/mode/diagnose.js +173 -0
- package/dist/src/mode/export.js +147 -0
- package/dist/src/mode/index.js +23 -0
- package/dist/src/mode/migrate.js +181 -0
- package/dist/src/mode/previousWaivers.js +206 -0
- package/dist/src/mode/pristine.js +61 -0
- package/dist/src/mode/rebase.js +197 -0
- package/dist/src/mode/report.js +157 -0
- package/dist/src/mode/setup.js +103 -0
- package/dist/src/mode/tracked.js +116 -0
- package/dist/src/mode/upgrade.js +281 -0
- package/dist/src/mode/watch.js +83 -0
- package/dist/src/mode/workspace.js +189 -0
- package/dist/src/mozbuild/index.js +6 -0
- package/dist/src/mozbuild/jar.js +366 -0
- package/dist/src/mozbuild/mozbuild.js +321 -0
- package/dist/src/mozbuild/paths.js +96 -0
- package/dist/src/mozbuild/references.js +39 -0
- package/dist/src/mozbuild/testManifest.js +343 -0
- package/dist/src/mozbuild/text.js +142 -0
- package/dist/src/project/changes.js +145 -0
- package/dist/src/project/checkout.js +66 -0
- package/dist/src/project/index.js +11 -0
- package/dist/src/project/license.js +119 -0
- package/dist/src/project/project.js +111 -0
- package/dist/src/project/state.js +85 -0
- package/dist/src/project/tracked.js +1 -0
- package/dist/src/queue/apply.js +270 -0
- package/dist/src/queue/attribute.js +159 -0
- package/dist/src/queue/baseline.js +409 -0
- package/dist/src/queue/capture.js +298 -0
- package/dist/src/queue/changes.js +234 -0
- package/dist/src/queue/index.js +50 -0
- package/dist/src/queue/manifest.js +341 -0
- package/dist/src/queue/operations.js +454 -0
- package/dist/src/queue/placement.js +220 -0
- package/dist/src/queue/queue.js +359 -0
- package/dist/src/queue/restore.js +103 -0
- package/dist/src/queue/session.js +685 -0
- package/dist/src/queue/status.js +137 -0
- package/dist/src/register/files.js +39 -0
- package/dist/src/register/index.js +8 -0
- package/dist/src/register/js.js +217 -0
- package/dist/src/register/register.js +359 -0
- package/dist/src/register/wire.js +146 -0
- package/dist/src/source/adopt.js +99 -0
- package/dist/src/source/changes.js +132 -0
- package/dist/src/source/edit.js +278 -0
- package/dist/src/source/export.js +70 -0
- package/dist/src/source/groups.js +131 -0
- package/dist/src/source/index.js +20 -0
- package/dist/src/source/materialize.js +382 -0
- package/dist/src/source/merge.js +255 -0
- package/dist/src/source/objects.js +102 -0
- package/dist/src/source/previous.js +166 -0
- package/dist/src/source/records.js +138 -0
- package/dist/src/source/refresh.js +264 -0
- package/dist/src/source/tree.js +337 -0
- package/dist/src/syntax/css.js +215 -0
- package/dist/src/syntax/fragments.js +63 -0
- package/dist/src/syntax/index.js +10 -0
- package/dist/src/syntax/js.js +270 -0
- package/dist/src/test/classify.js +826 -0
- package/dist/src/test/control.js +236 -0
- package/dist/src/test/host.js +266 -0
- package/dist/src/test/index.js +11 -0
- package/dist/src/test/plan.js +347 -0
- package/dist/src/test/rawLog.js +138 -0
- package/dist/src/test/run.js +404 -0
- package/dist/src/test/verdict.js +420 -0
- package/dist/src/test/xpcshell.js +143 -0
- package/dist/src/tokens/add.js +304 -0
- package/dist/src/tokens/coverage.js +65 -0
- package/dist/src/tokens/css.js +58 -0
- package/dist/src/tokens/index.js +12 -0
- package/dist/src/tokens/lint.js +96 -0
- package/dist/src/tokens/model.js +118 -0
- package/dist/src/tokens/settings.js +87 -0
- package/dist/src/tokens/siblings.js +104 -0
- package/dist/src/typecheck/explain.js +123 -0
- package/dist/src/typecheck/index.js +8 -0
- package/dist/src/typecheck/typecheck.js +332 -0
- package/docs/README.md +23 -28
- package/docs/authoring.md +97 -0
- package/docs/configuration.md +307 -766
- package/docs/exit-codes.md +76 -94
- package/docs/furnace.md +111 -221
- package/docs/gate.md +205 -0
- package/docs/getting-started.md +165 -0
- package/docs/machine-output.md +201 -290
- package/docs/migrating.md +261 -0
- package/docs/patch-workflow.md +159 -723
- package/docs/quality.md +220 -0
- package/docs/source-workflow.md +228 -0
- package/docs/testing.md +101 -719
- package/docs/workspaces.md +187 -0
- package/package.json +22 -30
- package/templates/configs/common.mozconfig +8 -2
- package/templates/configs/darwin.mozconfig +6 -7
- package/templates/configs/linux.mozconfig +5 -8
- package/templates/configs/win32.mozconfig +3 -9
- package/dist/bin/fireforge.d.ts +0 -9
- package/dist/src/cli-usage-error.d.ts +0 -46
- package/dist/src/cli-usage-error.js +0 -81
- package/dist/src/cli.d.ts +0 -41
- package/dist/src/cli.js +0 -380
- package/dist/src/commands/bootstrap-checks.d.ts +0 -16
- package/dist/src/commands/bootstrap-checks.js +0 -66
- package/dist/src/commands/bootstrap.d.ts +0 -10
- package/dist/src/commands/build-prelock.d.ts +0 -20
- package/dist/src/commands/build-prelock.js +0 -50
- package/dist/src/commands/build.d.ts +0 -13
- package/dist/src/commands/check-report.d.ts +0 -41
- package/dist/src/commands/check-report.js +0 -98
- package/dist/src/commands/check-run.d.ts +0 -44
- package/dist/src/commands/check-run.js +0 -125
- package/dist/src/commands/check-steps.d.ts +0 -75
- package/dist/src/commands/check-steps.js +0 -200
- package/dist/src/commands/check.d.ts +0 -32
- package/dist/src/commands/config.d.ts +0 -13
- package/dist/src/commands/declarations-report.d.ts +0 -49
- package/dist/src/commands/declarations-report.js +0 -83
- package/dist/src/commands/destructive-decision.d.ts +0 -19
- package/dist/src/commands/destructive-decision.js +0 -31
- package/dist/src/commands/discard.d.ts +0 -12
- package/dist/src/commands/doctor-check-core.d.ts +0 -110
- package/dist/src/commands/doctor-check-core.js +0 -24
- package/dist/src/commands/doctor-engine-eslint.d.ts +0 -3
- package/dist/src/commands/doctor-engine-eslint.js +0 -17
- package/dist/src/commands/doctor-external-toolchains.d.ts +0 -3
- package/dist/src/commands/doctor-external-toolchains.js +0 -56
- package/dist/src/commands/doctor-furnace-config-sync.d.ts +0 -18
- package/dist/src/commands/doctor-furnace-config-sync.js +0 -295
- package/dist/src/commands/doctor-furnace-jar.d.ts +0 -14
- package/dist/src/commands/doctor-furnace-jar.js +0 -44
- package/dist/src/commands/doctor-furnace.d.ts +0 -8
- package/dist/src/commands/doctor-furnace.js +0 -514
- package/dist/src/commands/doctor-macos-sdk.d.ts +0 -8
- package/dist/src/commands/doctor-macos-sdk.js +0 -158
- package/dist/src/commands/doctor-orphaned-harness.d.ts +0 -41
- package/dist/src/commands/doctor-orphaned-harness.js +0 -98
- package/dist/src/commands/doctor-patch-manifest.d.ts +0 -9
- package/dist/src/commands/doctor-patch-manifest.js +0 -156
- package/dist/src/commands/doctor-post-rebase-audit.d.ts +0 -2
- package/dist/src/commands/doctor-post-rebase-audit.js +0 -108
- package/dist/src/commands/doctor-source-pin.d.ts +0 -29
- package/dist/src/commands/doctor-source-pin.js +0 -91
- package/dist/src/commands/doctor-working-tree.d.ts +0 -27
- package/dist/src/commands/doctor-working-tree.js +0 -89
- package/dist/src/commands/doctor.d.ts +0 -49
- package/dist/src/commands/download.d.ts +0 -11
- package/dist/src/commands/export-adopt-check.d.ts +0 -37
- package/dist/src/commands/export-adopt-check.js +0 -97
- package/dist/src/commands/export-all.d.ts +0 -11
- package/dist/src/commands/export-all.js +0 -361
- package/dist/src/commands/export-flow.d.ts +0 -124
- package/dist/src/commands/export-flow.js +0 -423
- package/dist/src/commands/export-placement-conflicts.d.ts +0 -17
- package/dist/src/commands/export-placement-conflicts.js +0 -75
- package/dist/src/commands/export-placement-gate.d.ts +0 -42
- package/dist/src/commands/export-placement-gate.js +0 -107
- package/dist/src/commands/export-placement-policy.d.ts +0 -22
- package/dist/src/commands/export-placement-policy.js +0 -54
- package/dist/src/commands/export-shared.d.ts +0 -152
- package/dist/src/commands/export-shared.js +0 -396
- package/dist/src/commands/export-staged-registration.d.ts +0 -46
- package/dist/src/commands/export-staged-registration.js +0 -91
- package/dist/src/commands/export.d.ts +0 -13
- package/dist/src/commands/forward-import-remedy.d.ts +0 -31
- package/dist/src/commands/forward-import-remedy.js +0 -62
- package/dist/src/commands/furnace/apply.d.ts +0 -8
- package/dist/src/commands/furnace/apply.js +0 -327
- package/dist/src/commands/furnace/authoring-config.d.ts +0 -13
- package/dist/src/commands/furnace/authoring-config.js +0 -19
- package/dist/src/commands/furnace/chrome-doc-remove.d.ts +0 -14
- package/dist/src/commands/furnace/chrome-doc-remove.js +0 -148
- package/dist/src/commands/furnace/chrome-doc-templates.d.ts +0 -152
- package/dist/src/commands/furnace/chrome-doc-templates.js +0 -331
- package/dist/src/commands/furnace/chrome-doc-tests.d.ts +0 -23
- package/dist/src/commands/furnace/chrome-doc-tests.js +0 -148
- package/dist/src/commands/furnace/chrome-doc.d.ts +0 -87
- package/dist/src/commands/furnace/chrome-doc.js +0 -365
- package/dist/src/commands/furnace/create-browser-test.d.ts +0 -44
- package/dist/src/commands/furnace/create-browser-test.js +0 -179
- package/dist/src/commands/furnace/create-dry-run.d.ts +0 -49
- package/dist/src/commands/furnace/create-dry-run.js +0 -107
- package/dist/src/commands/furnace/create-features.d.ts +0 -24
- package/dist/src/commands/furnace/create-features.js +0 -55
- package/dist/src/commands/furnace/create-mochikit.d.ts +0 -29
- package/dist/src/commands/furnace/create-mochikit.js +0 -75
- package/dist/src/commands/furnace/create-readback.d.ts +0 -22
- package/dist/src/commands/furnace/create-readback.js +0 -32
- package/dist/src/commands/furnace/create-templates.d.ts +0 -119
- package/dist/src/commands/furnace/create-templates.js +0 -283
- package/dist/src/commands/furnace/create-validation.d.ts +0 -6
- package/dist/src/commands/furnace/create-validation.js +0 -59
- package/dist/src/commands/furnace/create-xpcshell.d.ts +0 -27
- package/dist/src/commands/furnace/create-xpcshell.js +0 -80
- package/dist/src/commands/furnace/create.d.ts +0 -24
- package/dist/src/commands/furnace/create.js +0 -407
- package/dist/src/commands/furnace/deploy-fragment-includers.d.ts +0 -59
- package/dist/src/commands/furnace/deploy-fragment-includers.js +0 -120
- package/dist/src/commands/furnace/deploy-named.d.ts +0 -48
- package/dist/src/commands/furnace/deploy-named.js +0 -107
- package/dist/src/commands/furnace/deploy.d.ts +0 -9
- package/dist/src/commands/furnace/deploy.js +0 -229
- package/dist/src/commands/furnace/diff.d.ts +0 -11
- package/dist/src/commands/furnace/diff.js +0 -238
- package/dist/src/commands/furnace/index.d.ts +0 -4
- package/dist/src/commands/furnace/index.js +0 -283
- package/dist/src/commands/furnace/init.d.ts +0 -11
- package/dist/src/commands/furnace/init.js +0 -287
- package/dist/src/commands/furnace/list.d.ts +0 -8
- package/dist/src/commands/furnace/list.js +0 -104
- package/dist/src/commands/furnace/override.d.ts +0 -16
- package/dist/src/commands/furnace/override.js +0 -454
- package/dist/src/commands/furnace/preview.d.ts +0 -19
- package/dist/src/commands/furnace/preview.js +0 -349
- package/dist/src/commands/furnace/refresh.d.ts +0 -10
- package/dist/src/commands/furnace/refresh.js +0 -303
- package/dist/src/commands/furnace/remove-mutations.d.ts +0 -36
- package/dist/src/commands/furnace/remove-mutations.js +0 -168
- package/dist/src/commands/furnace/remove-state.d.ts +0 -20
- package/dist/src/commands/furnace/remove-state.js +0 -60
- package/dist/src/commands/furnace/remove.d.ts +0 -8
- package/dist/src/commands/furnace/remove.js +0 -415
- package/dist/src/commands/furnace/rename-browser-test.d.ts +0 -2
- package/dist/src/commands/furnace/rename-browser-test.js +0 -68
- package/dist/src/commands/furnace/rename-dry-run.d.ts +0 -29
- package/dist/src/commands/furnace/rename-dry-run.js +0 -127
- package/dist/src/commands/furnace/rename-helpers.d.ts +0 -26
- package/dist/src/commands/furnace/rename-helpers.js +0 -85
- package/dist/src/commands/furnace/rename-registrations.d.ts +0 -41
- package/dist/src/commands/furnace/rename-registrations.js +0 -98
- package/dist/src/commands/furnace/rename-xpcshell.d.ts +0 -32
- package/dist/src/commands/furnace/rename-xpcshell.js +0 -95
- package/dist/src/commands/furnace/rename.d.ts +0 -6
- package/dist/src/commands/furnace/rename.js +0 -400
- package/dist/src/commands/furnace/scan.d.ts +0 -14
- package/dist/src/commands/furnace/scan.js +0 -192
- package/dist/src/commands/furnace/status.d.ts +0 -7
- package/dist/src/commands/furnace/status.js +0 -209
- package/dist/src/commands/furnace/sync.d.ts +0 -12
- package/dist/src/commands/furnace/sync.js +0 -145
- package/dist/src/commands/furnace/test-file-name.d.ts +0 -28
- package/dist/src/commands/furnace/test-file-name.js +0 -39
- package/dist/src/commands/furnace/validate-report.d.ts +0 -45
- package/dist/src/commands/furnace/validate-report.js +0 -91
- package/dist/src/commands/furnace/validate.d.ts +0 -8
- package/dist/src/commands/furnace/validate.js +0 -309
- package/dist/src/commands/furnace/validation-output.d.ts +0 -47
- package/dist/src/commands/furnace/validation-output.js +0 -161
- package/dist/src/commands/import.d.ts +0 -11
- package/dist/src/commands/lint-per-patch.d.ts +0 -10
- package/dist/src/commands/lint-per-patch.js +0 -428
- package/dist/src/commands/lint-per-run-checkjs.d.ts +0 -66
- package/dist/src/commands/lint-per-run-checkjs.js +0 -102
- package/dist/src/commands/lint-report.d.ts +0 -25
- package/dist/src/commands/lint-report.js +0 -76
- package/dist/src/commands/lint.d.ts +0 -47
- package/dist/src/commands/manifest.d.ts +0 -38
- package/dist/src/commands/manifest.js +0 -68
- package/dist/src/commands/package.d.ts +0 -11
- package/dist/src/commands/park.d.ts +0 -22
- package/dist/src/commands/park.js +0 -232
- package/dist/src/commands/patch/body.d.ts +0 -29
- package/dist/src/commands/patch/body.js +0 -60
- package/dist/src/commands/patch/compact.d.ts +0 -28
- package/dist/src/commands/patch/compact.js +0 -208
- package/dist/src/commands/patch/delete-gap-notice.d.ts +0 -24
- package/dist/src/commands/patch/delete-gap-notice.js +0 -48
- package/dist/src/commands/patch/delete.d.ts +0 -28
- package/dist/src/commands/patch/delete.js +0 -131
- package/dist/src/commands/patch/entry-projection.d.ts +0 -13
- package/dist/src/commands/patch/entry-projection.js +0 -24
- package/dist/src/commands/patch/index.d.ts +0 -16
- package/dist/src/commands/patch/index.js +0 -54
- package/dist/src/commands/patch/lint-ignore-from.d.ts +0 -43
- package/dist/src/commands/patch/lint-ignore-from.js +0 -141
- package/dist/src/commands/patch/lint-ignore.d.ts +0 -42
- package/dist/src/commands/patch/lint-ignore.js +0 -263
- package/dist/src/commands/patch/move-files-adopt.d.ts +0 -33
- package/dist/src/commands/patch/move-files-adopt.js +0 -65
- package/dist/src/commands/patch/move-files-create.d.ts +0 -19
- package/dist/src/commands/patch/move-files-create.js +0 -187
- package/dist/src/commands/patch/move-files-into.d.ts +0 -65
- package/dist/src/commands/patch/move-files-into.js +0 -325
- package/dist/src/commands/patch/move-files-retire.d.ts +0 -39
- package/dist/src/commands/patch/move-files-retire.js +0 -91
- package/dist/src/commands/patch/move-files.d.ts +0 -28
- package/dist/src/commands/patch/move-files.js +0 -224
- package/dist/src/commands/patch/move-size-tier.d.ts +0 -27
- package/dist/src/commands/patch/move-size-tier.js +0 -66
- package/dist/src/commands/patch/patch-context.d.ts +0 -40
- package/dist/src/commands/patch/patch-context.js +0 -51
- package/dist/src/commands/patch/removal-created-files.d.ts +0 -48
- package/dist/src/commands/patch/removal-created-files.js +0 -83
- package/dist/src/commands/patch/removal-dependents.d.ts +0 -63
- package/dist/src/commands/patch/removal-dependents.js +0 -133
- package/dist/src/commands/patch/rename.d.ts +0 -35
- package/dist/src/commands/patch/rename.js +0 -378
- package/dist/src/commands/patch/reorder-projection.d.ts +0 -17
- package/dist/src/commands/patch/reorder-projection.js +0 -49
- package/dist/src/commands/patch/reorder-shift.d.ts +0 -30
- package/dist/src/commands/patch/reorder-shift.js +0 -307
- package/dist/src/commands/patch/reorder.d.ts +0 -34
- package/dist/src/commands/patch/reorder.js +0 -375
- package/dist/src/commands/patch/reserve.d.ts +0 -33
- package/dist/src/commands/patch/reserve.js +0 -152
- package/dist/src/commands/patch/retire.d.ts +0 -34
- package/dist/src/commands/patch/retire.js +0 -133
- package/dist/src/commands/patch/split-plan.d.ts +0 -125
- package/dist/src/commands/patch/split-plan.js +0 -313
- package/dist/src/commands/patch/split-staged.d.ts +0 -108
- package/dist/src/commands/patch/split-staged.js +0 -202
- package/dist/src/commands/patch/split.d.ts +0 -43
- package/dist/src/commands/patch/split.js +0 -367
- package/dist/src/commands/patch/stage.d.ts +0 -34
- package/dist/src/commands/patch/stage.js +0 -153
- package/dist/src/commands/patch/staged-dependency-batch.d.ts +0 -48
- package/dist/src/commands/patch/staged-dependency-batch.js +0 -176
- package/dist/src/commands/patch/staged-dependency-entries.d.ts +0 -44
- package/dist/src/commands/patch/staged-dependency-entries.js +0 -80
- package/dist/src/commands/patch/staged-dependency-from.d.ts +0 -14
- package/dist/src/commands/patch/staged-dependency-from.js +0 -114
- package/dist/src/commands/patch/staged-dependency-remove.d.ts +0 -53
- package/dist/src/commands/patch/staged-dependency-remove.js +0 -114
- package/dist/src/commands/patch/staged-dependency-validate.d.ts +0 -27
- package/dist/src/commands/patch/staged-dependency-validate.js +0 -78
- package/dist/src/commands/patch/staged-dependency.d.ts +0 -22
- package/dist/src/commands/patch/staged-dependency.js +0 -251
- package/dist/src/commands/patch/tier.d.ts +0 -34
- package/dist/src/commands/patch/tier.js +0 -125
- package/dist/src/commands/patch-rename-map.d.ts +0 -30
- package/dist/src/commands/patch-rename-map.js +0 -54
- package/dist/src/commands/pending-resolution.d.ts +0 -15
- package/dist/src/commands/pending-resolution.js +0 -25
- package/dist/src/commands/re-export-adjacent-registrations.d.ts +0 -20
- package/dist/src/commands/re-export-adjacent-registrations.js +0 -75
- package/dist/src/commands/re-export-adjacent.d.ts +0 -111
- package/dist/src/commands/re-export-adjacent.js +0 -285
- package/dist/src/commands/re-export-bulk-scan.d.ts +0 -19
- package/dist/src/commands/re-export-bulk-scan.js +0 -233
- package/dist/src/commands/re-export-drift.d.ts +0 -110
- package/dist/src/commands/re-export-drift.js +0 -358
- package/dist/src/commands/re-export-each.d.ts +0 -46
- package/dist/src/commands/re-export-each.js +0 -110
- package/dist/src/commands/re-export-files.d.ts +0 -15
- package/dist/src/commands/re-export-files.js +0 -307
- package/dist/src/commands/re-export-hunks.d.ts +0 -37
- package/dist/src/commands/re-export-hunks.js +0 -264
- package/dist/src/commands/re-export-lint.d.ts +0 -137
- package/dist/src/commands/re-export-lint.js +0 -303
- package/dist/src/commands/re-export-options.d.ts +0 -29
- package/dist/src/commands/re-export-options.js +0 -192
- package/dist/src/commands/re-export-preflight.d.ts +0 -23
- package/dist/src/commands/re-export-preflight.js +0 -159
- package/dist/src/commands/re-export-purity-scope.d.ts +0 -18
- package/dist/src/commands/re-export-purity-scope.js +0 -137
- package/dist/src/commands/re-export-register.d.ts +0 -12
- package/dist/src/commands/re-export-register.js +0 -99
- package/dist/src/commands/re-export-removed.d.ts +0 -15
- package/dist/src/commands/re-export-removed.js +0 -94
- package/dist/src/commands/re-export-retired-declarations.d.ts +0 -22
- package/dist/src/commands/re-export-retired-declarations.js +0 -113
- package/dist/src/commands/re-export-scan-owner.d.ts +0 -44
- package/dist/src/commands/re-export-scan-owner.js +0 -116
- package/dist/src/commands/re-export-scan.d.ts +0 -72
- package/dist/src/commands/re-export-scan.js +0 -265
- package/dist/src/commands/re-export-single.d.ts +0 -53
- package/dist/src/commands/re-export-single.js +0 -426
- package/dist/src/commands/re-export-stale-registrations.d.ts +0 -39
- package/dist/src/commands/re-export-stale-registrations.js +0 -106
- package/dist/src/commands/re-export-summary.d.ts +0 -44
- package/dist/src/commands/re-export-summary.js +0 -59
- package/dist/src/commands/re-export.d.ts +0 -8
- package/dist/src/commands/rebase/abort.d.ts +0 -7
- package/dist/src/commands/rebase/abort.js +0 -67
- package/dist/src/commands/rebase/confirm.d.ts +0 -42
- package/dist/src/commands/rebase/confirm.js +0 -36
- package/dist/src/commands/rebase/conflict-summary.d.ts +0 -12
- package/dist/src/commands/rebase/conflict-summary.js +0 -37
- package/dist/src/commands/rebase/continue.d.ts +0 -7
- package/dist/src/commands/rebase/continue.js +0 -119
- package/dist/src/commands/rebase/index.d.ts +0 -22
- package/dist/src/commands/rebase/index.js +0 -209
- package/dist/src/commands/rebase/patch-loop.d.ts +0 -15
- package/dist/src/commands/rebase/patch-loop.js +0 -289
- package/dist/src/commands/rebase/summary.d.ts +0 -8
- package/dist/src/commands/rebase/summary.js +0 -47
- package/dist/src/commands/register.d.ts +0 -13
- package/dist/src/commands/reset.d.ts +0 -11
- package/dist/src/commands/resolve.d.ts +0 -36
- package/dist/src/commands/run.d.ts +0 -10
- package/dist/src/commands/setup-support.d.ts +0 -35
- package/dist/src/commands/setup-support.js +0 -386
- package/dist/src/commands/setup.d.ts +0 -11
- package/dist/src/commands/source.d.ts +0 -9
- package/dist/src/commands/source.js +0 -120
- package/dist/src/commands/status-check.d.ts +0 -87
- package/dist/src/commands/status-check.js +0 -161
- package/dist/src/commands/status-json.d.ts +0 -45
- package/dist/src/commands/status-json.js +0 -97
- package/dist/src/commands/status-output.d.ts +0 -23
- package/dist/src/commands/status-output.js +0 -231
- package/dist/src/commands/status-ownership.d.ts +0 -54
- package/dist/src/commands/status-ownership.js +0 -59
- package/dist/src/commands/status-scope.d.ts +0 -37
- package/dist/src/commands/status-scope.js +0 -54
- package/dist/src/commands/status.d.ts +0 -11
- package/dist/src/commands/test-appdir.d.ts +0 -6
- package/dist/src/commands/test-appdir.js +0 -29
- package/dist/src/commands/test-browser-preflight.d.ts +0 -28
- package/dist/src/commands/test-browser-preflight.js +0 -197
- package/dist/src/commands/test-build-furnace.d.ts +0 -21
- package/dist/src/commands/test-build-furnace.js +0 -53
- package/dist/src/commands/test-build-phase.d.ts +0 -34
- package/dist/src/commands/test-build-phase.js +0 -291
- package/dist/src/commands/test-checkjs.d.ts +0 -3
- package/dist/src/commands/test-checkjs.js +0 -35
- package/dist/src/commands/test-control-restore.d.ts +0 -40
- package/dist/src/commands/test-control-restore.js +0 -86
- package/dist/src/commands/test-diagnose.d.ts +0 -23
- package/dist/src/commands/test-diagnose.js +0 -317
- package/dist/src/commands/test-dispatch.d.ts +0 -39
- package/dist/src/commands/test-dispatch.js +0 -281
- package/dist/src/commands/test-furnace-reach.d.ts +0 -37
- package/dist/src/commands/test-furnace-reach.js +0 -132
- package/dist/src/commands/test-harness-env.d.ts +0 -23
- package/dist/src/commands/test-harness-env.js +0 -81
- package/dist/src/commands/test-harness-teardown.d.ts +0 -62
- package/dist/src/commands/test-harness-teardown.js +0 -128
- package/dist/src/commands/test-modes.d.ts +0 -57
- package/dist/src/commands/test-modes.js +0 -158
- package/dist/src/commands/test-multi-verdict.d.ts +0 -61
- package/dist/src/commands/test-multi-verdict.js +0 -112
- package/dist/src/commands/test-orchestrate.d.ts +0 -70
- package/dist/src/commands/test-orchestrate.js +0 -277
- package/dist/src/commands/test-perf-scope.d.ts +0 -50
- package/dist/src/commands/test-perf-scope.js +0 -138
- package/dist/src/commands/test-prelock.d.ts +0 -61
- package/dist/src/commands/test-prelock.js +0 -301
- package/dist/src/commands/test-register.d.ts +0 -4
- package/dist/src/commands/test-register.js +0 -181
- package/dist/src/commands/test-results.d.ts +0 -71
- package/dist/src/commands/test-results.js +0 -79
- package/dist/src/commands/test-run.d.ts +0 -89
- package/dist/src/commands/test-run.js +0 -251
- package/dist/src/commands/test-shards.d.ts +0 -114
- package/dist/src/commands/test-shards.js +0 -272
- package/dist/src/commands/test-stale-gate.d.ts +0 -56
- package/dist/src/commands/test-stale-gate.js +0 -208
- package/dist/src/commands/test-verdict.d.ts +0 -102
- package/dist/src/commands/test-verdict.js +0 -176
- package/dist/src/commands/test.d.ts +0 -22
- package/dist/src/commands/token-coverage.d.ts +0 -5
- package/dist/src/commands/token-coverage.js +0 -170
- package/dist/src/commands/token-lint.d.ts +0 -14
- package/dist/src/commands/token-lint.js +0 -151
- package/dist/src/commands/token-list.d.ts +0 -26
- package/dist/src/commands/token-list.js +0 -153
- package/dist/src/commands/token.d.ts +0 -14
- package/dist/src/commands/tree.d.ts +0 -19
- package/dist/src/commands/tree.js +0 -341
- package/dist/src/commands/typecheck-explain.d.ts +0 -13
- package/dist/src/commands/typecheck-explain.js +0 -100
- package/dist/src/commands/typecheck.d.ts +0 -61
- package/dist/src/commands/verify-scope.d.ts +0 -28
- package/dist/src/commands/verify-scope.js +0 -67
- package/dist/src/commands/verify.d.ts +0 -58
- package/dist/src/commands/watch.d.ts +0 -9
- package/dist/src/commands/wire.d.ts +0 -13
- package/dist/src/core/ast-utils.d.ts +0 -73
- package/dist/src/core/ast-utils.js +0 -105
- package/dist/src/core/brand-validation.d.ts +0 -7
- package/dist/src/core/brand-validation.js +0 -14
- package/dist/src/core/branding.d.ts +0 -86
- package/dist/src/core/branding.js +0 -371
- package/dist/src/core/browser-wire.d.ts +0 -48
- package/dist/src/core/browser-wire.js +0 -133
- package/dist/src/core/build-audit-platform.d.ts +0 -67
- package/dist/src/core/build-audit-platform.js +0 -373
- package/dist/src/core/build-audit-registration.d.ts +0 -80
- package/dist/src/core/build-audit-registration.js +0 -181
- package/dist/src/core/build-audit-resolve.d.ts +0 -78
- package/dist/src/core/build-audit-resolve.js +0 -240
- package/dist/src/core/build-audit-skip.d.ts +0 -57
- package/dist/src/core/build-audit-skip.js +0 -112
- package/dist/src/core/build-audit-transforms.d.ts +0 -23
- package/dist/src/core/build-audit-transforms.js +0 -92
- package/dist/src/core/build-audit.d.ts +0 -93
- package/dist/src/core/build-audit.js +0 -633
- package/dist/src/core/build-baseline-types.d.ts +0 -225
- package/dist/src/core/build-baseline-types.js +0 -10
- package/dist/src/core/build-baseline-validate.d.ts +0 -32
- package/dist/src/core/build-baseline-validate.js +0 -173
- package/dist/src/core/build-baseline.d.ts +0 -103
- package/dist/src/core/build-baseline.js +0 -261
- package/dist/src/core/build-jar-escalation.d.ts +0 -61
- package/dist/src/core/build-jar-escalation.js +0 -125
- package/dist/src/core/build-overwrite-guard.d.ts +0 -92
- package/dist/src/core/build-overwrite-guard.js +0 -235
- package/dist/src/core/build-prepare.d.ts +0 -83
- package/dist/src/core/build-prepare.js +0 -414
- package/dist/src/core/build-run-record.d.ts +0 -74
- package/dist/src/core/build-run-record.js +0 -136
- package/dist/src/core/checkjs-support-heads.d.ts +0 -41
- package/dist/src/core/checkjs-support-heads.js +0 -104
- package/dist/src/core/component-source-guard.d.ts +0 -20
- package/dist/src/core/component-source-guard.js +0 -68
- package/dist/src/core/config-mutate.d.ts +0 -16
- package/dist/src/core/config-mutate.js +0 -76
- package/dist/src/core/config-paths.d.ts +0 -16
- package/dist/src/core/config-paths.js +0 -106
- package/dist/src/core/config-state.d.ts +0 -16
- package/dist/src/core/config-state.js +0 -141
- package/dist/src/core/config-validate-build-audit.d.ts +0 -8
- package/dist/src/core/config-validate-build-audit.js +0 -80
- package/dist/src/core/config-validate-check.d.ts +0 -8
- package/dist/src/core/config-validate-check.js +0 -219
- package/dist/src/core/config-validate-file-size.d.ts +0 -15
- package/dist/src/core/config-validate-file-size.js +0 -154
- package/dist/src/core/config-validate-history.d.ts +0 -11
- package/dist/src/core/config-validate-history.js +0 -38
- package/dist/src/core/config-validate-patch-policy.d.ts +0 -7
- package/dist/src/core/config-validate-patch-policy.js +0 -284
- package/dist/src/core/config-validate-test-toolchains.d.ts +0 -8
- package/dist/src/core/config-validate-test-toolchains.js +0 -133
- package/dist/src/core/config-validate-token-scales.d.ts +0 -9
- package/dist/src/core/config-validate-token-scales.js +0 -125
- package/dist/src/core/config-validate.d.ts +0 -11
- package/dist/src/core/config-validate.js +0 -509
- package/dist/src/core/config.d.ts +0 -92
- package/dist/src/core/config.js +0 -169
- package/dist/src/core/coverage-dispatch.d.ts +0 -24
- package/dist/src/core/coverage-dispatch.js +0 -44
- package/dist/src/core/coverage-extend.d.ts +0 -89
- package/dist/src/core/coverage-extend.js +0 -239
- package/dist/src/core/coverage-records.d.ts +0 -107
- package/dist/src/core/coverage-records.js +0 -383
- package/dist/src/core/destructive.d.ts +0 -144
- package/dist/src/core/destructive.js +0 -182
- package/dist/src/core/dev-profile.d.ts +0 -28
- package/dist/src/core/dev-profile.js +0 -58
- package/dist/src/core/diff-hunks.d.ts +0 -73
- package/dist/src/core/diff-hunks.js +0 -286
- package/dist/src/core/discard-baseline.d.ts +0 -60
- package/dist/src/core/discard-baseline.js +0 -247
- package/dist/src/core/display-state.d.ts +0 -50
- package/dist/src/core/display-state.js +0 -87
- package/dist/src/core/engine-changes.d.ts +0 -40
- package/dist/src/core/engine-changes.js +0 -95
- package/dist/src/core/engine-precondition.d.ts +0 -42
- package/dist/src/core/engine-precondition.js +0 -60
- package/dist/src/core/engine-session-lock.d.ts +0 -119
- package/dist/src/core/engine-session-lock.js +0 -374
- package/dist/src/core/engine-write-boundary.d.ts +0 -5
- package/dist/src/core/engine-write-boundary.js +0 -41
- package/dist/src/core/export-moved-code-shape.d.ts +0 -98
- package/dist/src/core/export-moved-code-shape.js +0 -220
- package/dist/src/core/file-lock-owner.d.ts +0 -103
- package/dist/src/core/file-lock-owner.js +0 -259
- package/dist/src/core/file-lock-queue.d.ts +0 -67
- package/dist/src/core/file-lock-queue.js +0 -219
- package/dist/src/core/file-lock-shared.d.ts +0 -57
- package/dist/src/core/file-lock-shared.js +0 -117
- package/dist/src/core/file-lock.d.ts +0 -143
- package/dist/src/core/file-lock.js +0 -531
- package/dist/src/core/firefox-archive.d.ts +0 -45
- package/dist/src/core/firefox-archive.js +0 -96
- package/dist/src/core/firefox-cache.d.ts +0 -30
- package/dist/src/core/firefox-cache.js +0 -248
- package/dist/src/core/firefox-download.d.ts +0 -30
- package/dist/src/core/firefox-download.js +0 -152
- package/dist/src/core/firefox-extract.d.ts +0 -42
- package/dist/src/core/firefox-extract.js +0 -248
- package/dist/src/core/firefox-ignorefile.d.ts +0 -17
- package/dist/src/core/firefox-ignorefile.js +0 -30
- package/dist/src/core/firefox.d.ts +0 -66
- package/dist/src/core/firefox.js +0 -121
- package/dist/src/core/forward-registrations.d.ts +0 -33
- package/dist/src/core/forward-registrations.js +0 -16
- package/dist/src/core/furnace-apply-dry-run.d.ts +0 -12
- package/dist/src/core/furnace-apply-dry-run.js +0 -99
- package/dist/src/core/furnace-apply-ftl.d.ts +0 -49
- package/dist/src/core/furnace-apply-ftl.js +0 -210
- package/dist/src/core/furnace-apply-helpers.d.ts +0 -106
- package/dist/src/core/furnace-apply-helpers.js +0 -436
- package/dist/src/core/furnace-apply-output.d.ts +0 -36
- package/dist/src/core/furnace-apply-output.js +0 -111
- package/dist/src/core/furnace-apply-overwrite-warn.d.ts +0 -67
- package/dist/src/core/furnace-apply-overwrite-warn.js +0 -131
- package/dist/src/core/furnace-apply-undeploy-actions.d.ts +0 -10
- package/dist/src/core/furnace-apply-undeploy-actions.js +0 -48
- package/dist/src/core/furnace-apply.d.ts +0 -49
- package/dist/src/core/furnace-apply.js +0 -465
- package/dist/src/core/furnace-checksum-utils.d.ts +0 -25
- package/dist/src/core/furnace-checksum-utils.js +0 -54
- package/dist/src/core/furnace-composed-source.d.ts +0 -76
- package/dist/src/core/furnace-composed-source.js +0 -167
- package/dist/src/core/furnace-config-array-utils.d.ts +0 -11
- package/dist/src/core/furnace-config-array-utils.js +0 -26
- package/dist/src/core/furnace-config-custom.d.ts +0 -15
- package/dist/src/core/furnace-config-custom.js +0 -73
- package/dist/src/core/furnace-config-order.d.ts +0 -8
- package/dist/src/core/furnace-config-order.js +0 -90
- package/dist/src/core/furnace-config-tokens.d.ts +0 -17
- package/dist/src/core/furnace-config-tokens.js +0 -42
- package/dist/src/core/furnace-config-validate-exceptions.d.ts +0 -17
- package/dist/src/core/furnace-config-validate-exceptions.js +0 -122
- package/dist/src/core/furnace-config-validate.d.ts +0 -32
- package/dist/src/core/furnace-config-validate.js +0 -167
- package/dist/src/core/furnace-config.d.ts +0 -139
- package/dist/src/core/furnace-config.js +0 -511
- package/dist/src/core/furnace-constants.d.ts +0 -81
- package/dist/src/core/furnace-constants.js +0 -125
- package/dist/src/core/furnace-css-fragments.d.ts +0 -96
- package/dist/src/core/furnace-css-fragments.js +0 -279
- package/dist/src/core/furnace-deploy-owner.d.ts +0 -29
- package/dist/src/core/furnace-deploy-owner.js +0 -116
- package/dist/src/core/furnace-dir-entry.d.ts +0 -20
- package/dist/src/core/furnace-dir-entry.js +0 -21
- package/dist/src/core/furnace-fragment-includers.d.ts +0 -56
- package/dist/src/core/furnace-fragment-includers.js +0 -122
- package/dist/src/core/furnace-graph-utils.d.ts +0 -11
- package/dist/src/core/furnace-graph-utils.js +0 -93
- package/dist/src/core/furnace-jsconfig.d.ts +0 -87
- package/dist/src/core/furnace-jsconfig.js +0 -248
- package/dist/src/core/furnace-marker.d.ts +0 -15
- package/dist/src/core/furnace-marker.js +0 -21
- package/dist/src/core/furnace-operation.d.ts +0 -195
- package/dist/src/core/furnace-operation.js +0 -444
- package/dist/src/core/furnace-precondition.d.ts +0 -61
- package/dist/src/core/furnace-precondition.js +0 -67
- package/dist/src/core/furnace-refresh.d.ts +0 -28
- package/dist/src/core/furnace-refresh.js +0 -125
- package/dist/src/core/furnace-registration-ast.d.ts +0 -53
- package/dist/src/core/furnace-registration-ast.js +0 -402
- package/dist/src/core/furnace-registration-jar-inplace.d.ts +0 -12
- package/dist/src/core/furnace-registration-jar-inplace.js +0 -79
- package/dist/src/core/furnace-registration-remove.d.ts +0 -56
- package/dist/src/core/furnace-registration-remove.js +0 -260
- package/dist/src/core/furnace-registration-rename.d.ts +0 -26
- package/dist/src/core/furnace-registration-rename.js +0 -77
- package/dist/src/core/furnace-registration-validate.d.ts +0 -53
- package/dist/src/core/furnace-registration-validate.js +0 -110
- package/dist/src/core/furnace-registration.d.ts +0 -112
- package/dist/src/core/furnace-registration.js +0 -348
- package/dist/src/core/furnace-rollback.d.ts +0 -48
- package/dist/src/core/furnace-rollback.js +0 -170
- package/dist/src/core/furnace-scanner.d.ts +0 -47
- package/dist/src/core/furnace-scanner.js +0 -236
- package/dist/src/core/furnace-stale-export.d.ts +0 -60
- package/dist/src/core/furnace-stale-export.js +0 -125
- package/dist/src/core/furnace-staleness.d.ts +0 -24
- package/dist/src/core/furnace-staleness.js +0 -67
- package/dist/src/core/furnace-state-persist.d.ts +0 -68
- package/dist/src/core/furnace-state-persist.js +0 -116
- package/dist/src/core/furnace-step-errors.d.ts +0 -23
- package/dist/src/core/furnace-step-errors.js +0 -25
- package/dist/src/core/furnace-stories.d.ts +0 -37
- package/dist/src/core/furnace-stories.js +0 -186
- package/dist/src/core/furnace-tag-map.d.ts +0 -47
- package/dist/src/core/furnace-tag-map.js +0 -182
- package/dist/src/core/furnace-validate-accessibility.d.ts +0 -39
- package/dist/src/core/furnace-validate-accessibility.js +0 -417
- package/dist/src/core/furnace-validate-checks.d.ts +0 -4
- package/dist/src/core/furnace-validate-checks.js +0 -6
- package/dist/src/core/furnace-validate-compatibility.d.ts +0 -6
- package/dist/src/core/furnace-validate-compatibility.js +0 -295
- package/dist/src/core/furnace-validate-exceptions.d.ts +0 -49
- package/dist/src/core/furnace-validate-exceptions.js +0 -98
- package/dist/src/core/furnace-validate-helpers.d.ts +0 -7
- package/dist/src/core/furnace-validate-helpers.js +0 -4
- package/dist/src/core/furnace-validate-icon-button.d.ts +0 -7
- package/dist/src/core/furnace-validate-icon-button.js +0 -78
- package/dist/src/core/furnace-validate-registration.d.ts +0 -67
- package/dist/src/core/furnace-validate-registration.js +0 -487
- package/dist/src/core/furnace-validate-structure.d.ts +0 -22
- package/dist/src/core/furnace-validate-structure.js +0 -122
- package/dist/src/core/furnace-validate.d.ts +0 -41
- package/dist/src/core/furnace-validate.js +0 -331
- package/dist/src/core/furnace-version-drift.d.ts +0 -57
- package/dist/src/core/furnace-version-drift.js +0 -102
- package/dist/src/core/gecko-dom-types.d.ts +0 -2
- package/dist/src/core/gecko-dom-types.js +0 -17
- package/dist/src/core/git-base.d.ts +0 -101
- package/dist/src/core/git-base.js +0 -162
- package/dist/src/core/git-diff-new-file.d.ts +0 -40
- package/dist/src/core/git-diff-new-file.js +0 -118
- package/dist/src/core/git-diff.d.ts +0 -82
- package/dist/src/core/git-diff.js +0 -539
- package/dist/src/core/git-file-ops.d.ts +0 -108
- package/dist/src/core/git-file-ops.js +0 -280
- package/dist/src/core/git-readonly-index.d.ts +0 -91
- package/dist/src/core/git-readonly-index.js +0 -177
- package/dist/src/core/git-status.d.ts +0 -84
- package/dist/src/core/git-status.js +0 -208
- package/dist/src/core/git.d.ts +0 -114
- package/dist/src/core/git.js +0 -540
- package/dist/src/core/harness-helper-pids.d.ts +0 -98
- package/dist/src/core/harness-helper-pids.js +0 -240
- package/dist/src/core/harness-orphans.d.ts +0 -118
- package/dist/src/core/harness-orphans.js +0 -268
- package/dist/src/core/harness-port-fallback.d.ts +0 -60
- package/dist/src/core/harness-port-fallback.js +0 -96
- package/dist/src/core/harness-port-reservation.d.ts +0 -60
- package/dist/src/core/harness-port-reservation.js +0 -122
- package/dist/src/core/history-log-file.d.ts +0 -61
- package/dist/src/core/history-log-file.js +0 -164
- package/dist/src/core/history-log.d.ts +0 -20
- package/dist/src/core/history-log.js +0 -30
- package/dist/src/core/json-preserving-edit.d.ts +0 -22
- package/dist/src/core/json-preserving-edit.js +0 -199
- package/dist/src/core/launchable-build.d.ts +0 -39
- package/dist/src/core/launchable-build.js +0 -85
- package/dist/src/core/license-headers.d.ts +0 -103
- package/dist/src/core/license-headers.js +0 -328
- package/dist/src/core/line-prefixer.d.ts +0 -18
- package/dist/src/core/line-prefixer.js +0 -34
- package/dist/src/core/lit-template-regions.d.ts +0 -4
- package/dist/src/core/lit-template-regions.js +0 -50
- package/dist/src/core/mach-build-artifacts.d.ts +0 -176
- package/dist/src/core/mach-build-artifacts.js +0 -436
- package/dist/src/core/mach-error-hints.d.ts +0 -24
- package/dist/src/core/mach-error-hints.js +0 -135
- package/dist/src/core/mach-known-noise-filter.d.ts +0 -122
- package/dist/src/core/mach-known-noise-filter.js +0 -257
- package/dist/src/core/mach-mozconfig.d.ts +0 -57
- package/dist/src/core/mach-mozconfig.js +0 -166
- package/dist/src/core/mach-python.d.ts +0 -19
- package/dist/src/core/mach-python.js +0 -131
- package/dist/src/core/mach-resource-shim.d.ts +0 -107
- package/dist/src/core/mach-resource-shim.js +0 -640
- package/dist/src/core/mach.d.ts +0 -284
- package/dist/src/core/mach.js +0 -445
- package/dist/src/core/marionette-port.d.ts +0 -153
- package/dist/src/core/marionette-port.js +0 -474
- package/dist/src/core/marionette-preflight.d.ts +0 -58
- package/dist/src/core/marionette-preflight.js +0 -332
- package/dist/src/core/markdown-table.d.ts +0 -104
- package/dist/src/core/markdown-table.js +0 -265
- package/dist/src/core/mochitest-server-port.d.ts +0 -81
- package/dist/src/core/mochitest-server-port.js +0 -175
- package/dist/src/core/module-resolution-preflight.d.ts +0 -65
- package/dist/src/core/module-resolution-preflight.js +0 -171
- package/dist/src/core/moz-manifest-helpers.d.ts +0 -79
- package/dist/src/core/moz-manifest-helpers.js +0 -163
- package/dist/src/core/moz-manifest-register.d.ts +0 -19
- package/dist/src/core/moz-manifest-register.js +0 -51
- package/dist/src/core/moz-manifest-rules.d.ts +0 -58
- package/dist/src/core/moz-manifest-rules.js +0 -264
- package/dist/src/core/moz-manifest-tokenizers.d.ts +0 -38
- package/dist/src/core/moz-manifest-tokenizers.js +0 -108
- package/dist/src/core/negative-control-compiled.d.ts +0 -46
- package/dist/src/core/negative-control-compiled.js +0 -109
- package/dist/src/core/negative-control-diff.d.ts +0 -51
- package/dist/src/core/negative-control-diff.js +0 -167
- package/dist/src/core/negative-control.d.ts +0 -150
- package/dist/src/core/negative-control.js +0 -399
- package/dist/src/core/objdir-install-manifests.d.ts +0 -73
- package/dist/src/core/objdir-install-manifests.js +0 -226
- package/dist/src/core/objdir-maintenance.d.ts +0 -10
- package/dist/src/core/objdir-maintenance.js +0 -167
- package/dist/src/core/ownership-table.d.ts +0 -53
- package/dist/src/core/ownership-table.js +0 -159
- package/dist/src/core/parent-exit-watchdog.d.ts +0 -62
- package/dist/src/core/parent-exit-watchdog.js +0 -69
- package/dist/src/core/park-store.d.ts +0 -63
- package/dist/src/core/park-store.js +0 -216
- package/dist/src/core/parser-fallback.d.ts +0 -50
- package/dist/src/core/parser-fallback.js +0 -61
- package/dist/src/core/patch-apply-fuzz.d.ts +0 -57
- package/dist/src/core/patch-apply-fuzz.js +0 -125
- package/dist/src/core/patch-apply.d.ts +0 -88
- package/dist/src/core/patch-apply.js +0 -435
- package/dist/src/core/patch-export-coverage.d.ts +0 -49
- package/dist/src/core/patch-export-coverage.js +0 -73
- package/dist/src/core/patch-export-metadata.d.ts +0 -46
- package/dist/src/core/patch-export-metadata.js +0 -47
- package/dist/src/core/patch-export-update.d.ts +0 -55
- package/dist/src/core/patch-export-update.js +0 -95
- package/dist/src/core/patch-export.d.ts +0 -175
- package/dist/src/core/patch-export.js +0 -312
- package/dist/src/core/patch-files.d.ts +0 -17
- package/dist/src/core/patch-files.js +0 -59
- package/dist/src/core/patch-identifier-suggest.d.ts +0 -26
- package/dist/src/core/patch-identifier-suggest.js +0 -135
- package/dist/src/core/patch-lint-binary.d.ts +0 -45
- package/dist/src/core/patch-lint-binary.js +0 -39
- package/dist/src/core/patch-lint-cache-checkjs.d.ts +0 -45
- package/dist/src/core/patch-lint-cache-checkjs.js +0 -195
- package/dist/src/core/patch-lint-cache.d.ts +0 -79
- package/dist/src/core/patch-lint-cache.js +0 -247
- package/dist/src/core/patch-lint-checkjs-any-import.d.ts +0 -57
- package/dist/src/core/patch-lint-checkjs-any-import.js +0 -91
- package/dist/src/core/patch-lint-checkjs-cache.d.ts +0 -18
- package/dist/src/core/patch-lint-checkjs-cache.js +0 -45
- package/dist/src/core/patch-lint-checkjs-diagnostics.d.ts +0 -17
- package/dist/src/core/patch-lint-checkjs-diagnostics.js +0 -32
- package/dist/src/core/patch-lint-checkjs-resolve.d.ts +0 -31
- package/dist/src/core/patch-lint-checkjs-resolve.js +0 -86
- package/dist/src/core/patch-lint-checkjs.d.ts +0 -182
- package/dist/src/core/patch-lint-checkjs.js +0 -563
- package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +0 -43
- package/dist/src/core/patch-lint-chrome-jsdoc.js +0 -90
- package/dist/src/core/patch-lint-code-lines.d.ts +0 -59
- package/dist/src/core/patch-lint-code-lines.js +0 -105
- package/dist/src/core/patch-lint-creators.d.ts +0 -26
- package/dist/src/core/patch-lint-creators.js +0 -45
- package/dist/src/core/patch-lint-cross.d.ts +0 -232
- package/dist/src/core/patch-lint-cross.js +0 -590
- package/dist/src/core/patch-lint-css.d.ts +0 -27
- package/dist/src/core/patch-lint-css.js +0 -228
- package/dist/src/core/patch-lint-diff-tag.d.ts +0 -51
- package/dist/src/core/patch-lint-diff-tag.js +0 -105
- package/dist/src/core/patch-lint-diff.d.ts +0 -42
- package/dist/src/core/patch-lint-diff.js +0 -100
- package/dist/src/core/patch-lint-file-size.d.ts +0 -57
- package/dist/src/core/patch-lint-file-size.js +0 -62
- package/dist/src/core/patch-lint-forward-registration-extended.d.ts +0 -61
- package/dist/src/core/patch-lint-forward-registration-extended.js +0 -265
- package/dist/src/core/patch-lint-forward-registration.d.ts +0 -71
- package/dist/src/core/patch-lint-forward-registration.js +0 -266
- package/dist/src/core/patch-lint-ignore.d.ts +0 -196
- package/dist/src/core/patch-lint-ignore.js +0 -429
- package/dist/src/core/patch-lint-imports.d.ts +0 -9
- package/dist/src/core/patch-lint-imports.js +0 -90
- package/dist/src/core/patch-lint-jsdoc.d.ts +0 -67
- package/dist/src/core/patch-lint-jsdoc.js +0 -471
- package/dist/src/core/patch-lint-module-registration.d.ts +0 -22
- package/dist/src/core/patch-lint-module-registration.js +0 -97
- package/dist/src/core/patch-lint-mozbuild.d.ts +0 -18
- package/dist/src/core/patch-lint-mozbuild.js +0 -192
- package/dist/src/core/patch-lint-observer.d.ts +0 -37
- package/dist/src/core/patch-lint-observer.js +0 -167
- package/dist/src/core/patch-lint-ownership.d.ts +0 -74
- package/dist/src/core/patch-lint-ownership.js +0 -125
- package/dist/src/core/patch-lint-prettier.d.ts +0 -34
- package/dist/src/core/patch-lint-prettier.js +0 -124
- package/dist/src/core/patch-lint-projection.d.ts +0 -25
- package/dist/src/core/patch-lint-projection.js +0 -43
- package/dist/src/core/patch-lint-queue-types.d.ts +0 -60
- package/dist/src/core/patch-lint-queue-types.js +0 -12
- package/dist/src/core/patch-lint-size-thresholds.d.ts +0 -52
- package/dist/src/core/patch-lint-size-thresholds.js +0 -110
- package/dist/src/core/patch-lint-size.d.ts +0 -117
- package/dist/src/core/patch-lint-size.js +0 -331
- package/dist/src/core/patch-lint-staged-registration.d.ts +0 -98
- package/dist/src/core/patch-lint-staged-registration.js +0 -128
- package/dist/src/core/patch-lint-token-scale.d.ts +0 -65
- package/dist/src/core/patch-lint-token-scale.js +0 -304
- package/dist/src/core/patch-lint-unmanaged-companion.d.ts +0 -106
- package/dist/src/core/patch-lint-unmanaged-companion.js +0 -214
- package/dist/src/core/patch-lint.d.ts +0 -206
- package/dist/src/core/patch-lint.js +0 -533
- package/dist/src/core/patch-lock.d.ts +0 -40
- package/dist/src/core/patch-lock.js +0 -129
- package/dist/src/core/patch-manifest-consistency.d.ts +0 -95
- package/dist/src/core/patch-manifest-consistency.js +0 -256
- package/dist/src/core/patch-manifest-files-affected.d.ts +0 -43
- package/dist/src/core/patch-manifest-files-affected.js +0 -77
- package/dist/src/core/patch-manifest-io.d.ts +0 -199
- package/dist/src/core/patch-manifest-io.js +0 -556
- package/dist/src/core/patch-manifest-key-order.d.ts +0 -23
- package/dist/src/core/patch-manifest-key-order.js +0 -60
- package/dist/src/core/patch-manifest-query.d.ts +0 -55
- package/dist/src/core/patch-manifest-query.js +0 -139
- package/dist/src/core/patch-manifest-resolve.d.ts +0 -21
- package/dist/src/core/patch-manifest-resolve.js +0 -35
- package/dist/src/core/patch-manifest-stage.d.ts +0 -46
- package/dist/src/core/patch-manifest-stage.js +0 -96
- package/dist/src/core/patch-manifest-validate.d.ts +0 -20
- package/dist/src/core/patch-manifest-validate.js +0 -240
- package/dist/src/core/patch-manifest.d.ts +0 -12
- package/dist/src/core/patch-manifest.js +0 -13
- package/dist/src/core/patch-order-legal.d.ts +0 -26
- package/dist/src/core/patch-order-legal.js +0 -88
- package/dist/src/core/patch-parse.d.ts +0 -176
- package/dist/src/core/patch-parse.js +0 -416
- package/dist/src/core/patch-policy-content.d.ts +0 -40
- package/dist/src/core/patch-policy-content.js +0 -219
- package/dist/src/core/patch-policy.d.ts +0 -80
- package/dist/src/core/patch-policy.js +0 -394
- package/dist/src/core/patch-registration-refs.d.ts +0 -41
- package/dist/src/core/patch-registration-refs.js +0 -107
- package/dist/src/core/patch-retired.d.ts +0 -57
- package/dist/src/core/patch-retired.js +0 -92
- package/dist/src/core/patch-source-metadata.d.ts +0 -6
- package/dist/src/core/patch-source-metadata.js +0 -12
- package/dist/src/core/patch-subset.d.ts +0 -18
- package/dist/src/core/patch-subset.js +0 -67
- package/dist/src/core/patch-transform.d.ts +0 -61
- package/dist/src/core/patch-transform.js +0 -198
- package/dist/src/core/preflight-wait.d.ts +0 -22
- package/dist/src/core/preflight-wait.js +0 -62
- package/dist/src/core/process-cpu-time.d.ts +0 -12
- package/dist/src/core/process-cpu-time.js +0 -52
- package/dist/src/core/process-owner.d.ts +0 -9
- package/dist/src/core/process-owner.js +0 -43
- package/dist/src/core/rebase-dry-run.d.ts +0 -48
- package/dist/src/core/rebase-dry-run.js +0 -105
- package/dist/src/core/rebase-from-version.d.ts +0 -46
- package/dist/src/core/rebase-from-version.js +0 -71
- package/dist/src/core/rebase-session.d.ts +0 -100
- package/dist/src/core/rebase-session.js +0 -174
- package/dist/src/core/register-browser-content.d.ts +0 -11
- package/dist/src/core/register-browser-content.js +0 -52
- package/dist/src/core/register-browser-test.d.ts +0 -18
- package/dist/src/core/register-browser-test.js +0 -66
- package/dist/src/core/register-module.d.ts +0 -11
- package/dist/src/core/register-module.js +0 -56
- package/dist/src/core/register-result.d.ts +0 -30
- package/dist/src/core/register-result.js +0 -8
- package/dist/src/core/register-scaffold.d.ts +0 -55
- package/dist/src/core/register-scaffold.js +0 -146
- package/dist/src/core/register-shared-css.d.ts +0 -36
- package/dist/src/core/register-shared-css.js +0 -112
- package/dist/src/core/register-xpcshell-test.d.ts +0 -50
- package/dist/src/core/register-xpcshell-test.js +0 -143
- package/dist/src/core/run-log-redact.d.ts +0 -38
- package/dist/src/core/run-log-redact.js +0 -69
- package/dist/src/core/run-log.d.ts +0 -97
- package/dist/src/core/run-log.js +0 -334
- package/dist/src/core/run-profile.d.ts +0 -57
- package/dist/src/core/run-profile.js +0 -137
- package/dist/src/core/shared-ftl.d.ts +0 -28
- package/dist/src/core/shared-ftl.js +0 -49
- package/dist/src/core/signal-critical.d.ts +0 -38
- package/dist/src/core/signal-critical.js +0 -62
- package/dist/src/core/smoke-patterns.d.ts +0 -81
- package/dist/src/core/smoke-patterns.js +0 -176
- package/dist/src/core/state-file.d.ts +0 -60
- package/dist/src/core/state-file.js +0 -71
- package/dist/src/core/status-binary.d.ts +0 -62
- package/dist/src/core/status-binary.js +0 -133
- package/dist/src/core/status-classify.d.ts +0 -96
- package/dist/src/core/status-classify.js +0 -244
- package/dist/src/core/test-changed-prefs.d.ts +0 -30
- package/dist/src/core/test-changed-prefs.js +0 -93
- package/dist/src/core/test-harness-crash.d.ts +0 -251
- package/dist/src/core/test-harness-crash.js +0 -780
- package/dist/src/core/test-harness-infra.d.ts +0 -32
- package/dist/src/core/test-harness-infra.js +0 -69
- package/dist/src/core/test-harness-output.d.ts +0 -45
- package/dist/src/core/test-harness-output.js +0 -119
- package/dist/src/core/test-harness-signature.d.ts +0 -57
- package/dist/src/core/test-harness-signature.js +0 -35
- package/dist/src/core/test-harness-verdict-notes.d.ts +0 -54
- package/dist/src/core/test-harness-verdict-notes.js +0 -48
- package/dist/src/core/test-host-state.d.ts +0 -14
- package/dist/src/core/test-host-state.js +0 -80
- package/dist/src/core/test-path-scope.d.ts +0 -59
- package/dist/src/core/test-path-scope.js +0 -147
- package/dist/src/core/test-profile-files.d.ts +0 -17
- package/dist/src/core/test-profile-files.js +0 -75
- package/dist/src/core/test-raw-log.d.ts +0 -66
- package/dist/src/core/test-raw-log.js +0 -122
- package/dist/src/core/test-run-completeness.d.ts +0 -97
- package/dist/src/core/test-run-completeness.js +0 -191
- package/dist/src/core/test-stale-check.d.ts +0 -213
- package/dist/src/core/test-stale-check.js +0 -396
- package/dist/src/core/test-stale-exempt.d.ts +0 -40
- package/dist/src/core/test-stale-exempt.js +0 -70
- package/dist/src/core/test-stale-symlink.d.ts +0 -12
- package/dist/src/core/test-stale-symlink.js +0 -39
- package/dist/src/core/test-stall-triage.d.ts +0 -51
- package/dist/src/core/test-stall-triage.js +0 -142
- package/dist/src/core/test-xpcshell-retry.d.ts +0 -35
- package/dist/src/core/test-xpcshell-retry.js +0 -31
- package/dist/src/core/token-category.d.ts +0 -54
- package/dist/src/core/token-category.js +0 -299
- package/dist/src/core/token-coverage.d.ts +0 -12
- package/dist/src/core/token-coverage.js +0 -96
- package/dist/src/core/token-dark-mode.d.ts +0 -64
- package/dist/src/core/token-dark-mode.js +0 -186
- package/dist/src/core/token-docs.d.ts +0 -34
- package/dist/src/core/token-docs.js +0 -102
- package/dist/src/core/token-inventory.d.ts +0 -56
- package/dist/src/core/token-inventory.js +0 -114
- package/dist/src/core/token-lint.d.ts +0 -53
- package/dist/src/core/token-lint.js +0 -131
- package/dist/src/core/token-manager.d.ts +0 -87
- package/dist/src/core/token-manager.js +0 -407
- package/dist/src/core/token-scaffold.d.ts +0 -36
- package/dist/src/core/token-scaffold.js +0 -73
- package/dist/src/core/token-sibling-sheets.d.ts +0 -46
- package/dist/src/core/token-sibling-sheets.js +0 -119
- package/dist/src/core/token-variant.d.ts +0 -90
- package/dist/src/core/token-variant.js +0 -327
- package/dist/src/core/toolchain-preflight.d.ts +0 -90
- package/dist/src/core/toolchain-preflight.js +0 -251
- package/dist/src/core/tree-cow.d.ts +0 -16
- package/dist/src/core/tree-cow.js +0 -71
- package/dist/src/core/tree-guard.d.ts +0 -35
- package/dist/src/core/tree-guard.js +0 -194
- package/dist/src/core/tree-store.d.ts +0 -143
- package/dist/src/core/tree-store.js +0 -478
- package/dist/src/core/typecheck-explain.d.ts +0 -93
- package/dist/src/core/typecheck-explain.js +0 -213
- package/dist/src/core/typecheck-shim.d.ts +0 -90
- package/dist/src/core/typecheck-shim.js +0 -508
- package/dist/src/core/typecheck.d.ts +0 -97
- package/dist/src/core/typecheck.js +0 -457
- package/dist/src/core/wire-destroy.d.ts +0 -25
- package/dist/src/core/wire-destroy.js +0 -126
- package/dist/src/core/wire-dom-fragment.d.ts +0 -44
- package/dist/src/core/wire-dom-fragment.js +0 -139
- package/dist/src/core/wire-init.d.ts +0 -28
- package/dist/src/core/wire-init.js +0 -219
- package/dist/src/core/wire-subscript.d.ts +0 -23
- package/dist/src/core/wire-subscript.js +0 -145
- package/dist/src/core/wire-utils.d.ts +0 -149
- package/dist/src/core/wire-utils.js +0 -338
- package/dist/src/core/xpcshell-appdir.d.ts +0 -157
- package/dist/src/core/xpcshell-appdir.js +0 -299
- package/dist/src/core/xpcshell-profile-dir.d.ts +0 -12
- package/dist/src/core/xpcshell-profile-dir.js +0 -45
- package/dist/src/errors/base.d.ts +0 -217
- package/dist/src/errors/base.js +0 -279
- package/dist/src/errors/build.d.ts +0 -92
- package/dist/src/errors/build.js +0 -166
- package/dist/src/errors/codes.d.ts +0 -74
- package/dist/src/errors/codes.js +0 -74
- package/dist/src/errors/config.d.ts +0 -17
- package/dist/src/errors/config.js +0 -39
- package/dist/src/errors/download.d.ts +0 -66
- package/dist/src/errors/download.js +0 -160
- package/dist/src/errors/furnace.d.ts +0 -20
- package/dist/src/errors/furnace.js +0 -28
- package/dist/src/errors/git.d.ts +0 -65
- package/dist/src/errors/git.js +0 -140
- package/dist/src/errors/patch.d.ts +0 -27
- package/dist/src/errors/patch.js +0 -52
- package/dist/src/errors/rebase.d.ts +0 -42
- package/dist/src/errors/rebase.js +0 -71
- package/dist/src/errors/run.d.ts +0 -16
- package/dist/src/errors/run.js +0 -22
- package/dist/src/index.d.ts +0 -42
- package/dist/src/index.js +0 -32
- package/dist/src/types/cli.d.ts +0 -14
- package/dist/src/types/commands/index.d.ts +0 -6
- package/dist/src/types/commands/index.js +0 -5
- package/dist/src/types/commands/options.d.ts +0 -1372
- package/dist/src/types/commands/options.js +0 -5
- package/dist/src/types/commands/patches.d.ts +0 -352
- package/dist/src/types/commands/patches.js +0 -5
- package/dist/src/types/commands/project.d.ts +0 -51
- package/dist/src/types/commands/project.js +0 -5
- package/dist/src/types/config.d.ts +0 -732
- package/dist/src/types/config.js +0 -15
- package/dist/src/types/furnace.d.ts +0 -422
- package/dist/src/types/furnace.js +0 -26
- package/dist/src/types/index.d.ts +0 -5
- package/dist/src/types/index.js +0 -5
- package/dist/src/types/json.d.ts +0 -22
- package/dist/src/types/json.js +0 -11
- package/dist/src/types/typecheck.d.ts +0 -51
- package/dist/src/types/typecheck.js +0 -14
- package/dist/src/utils/assert.d.ts +0 -34
- package/dist/src/utils/assert.js +0 -61
- package/dist/src/utils/build-info.d.ts +0 -30
- package/dist/src/utils/build-info.js +0 -99
- package/dist/src/utils/child-env.d.ts +0 -28
- package/dist/src/utils/child-env.js +0 -27
- package/dist/src/utils/concurrency.d.ts +0 -8
- package/dist/src/utils/concurrency.js +0 -32
- package/dist/src/utils/elapsed.d.ts +0 -2
- package/dist/src/utils/elapsed.js +0 -23
- package/dist/src/utils/errors.d.ts +0 -39
- package/dist/src/utils/errors.js +0 -67
- package/dist/src/utils/fs.d.ts +0 -113
- package/dist/src/utils/fs.js +0 -337
- package/dist/src/utils/hash.d.ts +0 -12
- package/dist/src/utils/hash.js +0 -16
- package/dist/src/utils/line-dispatch.d.ts +0 -15
- package/dist/src/utils/line-dispatch.js +0 -48
- package/dist/src/utils/logger.d.ts +0 -109
- package/dist/src/utils/logger.js +0 -270
- package/dist/src/utils/machine-output.d.ts +0 -12
- package/dist/src/utils/machine-output.js +0 -33
- package/dist/src/utils/options.d.ts +0 -155
- package/dist/src/utils/options.js +0 -312
- package/dist/src/utils/package-root.d.ts +0 -21
- package/dist/src/utils/package-root.js +0 -70
- package/dist/src/utils/parse.d.ts +0 -117
- package/dist/src/utils/parse.js +0 -214
- package/dist/src/utils/path-glob.d.ts +0 -15
- package/dist/src/utils/path-glob.js +0 -47
- package/dist/src/utils/paths.d.ts +0 -31
- package/dist/src/utils/paths.js +0 -80
- package/dist/src/utils/platform.d.ts +0 -9
- package/dist/src/utils/platform.js +0 -14
- package/dist/src/utils/process-group.d.ts +0 -42
- package/dist/src/utils/process-group.js +0 -190
- package/dist/src/utils/process-input.d.ts +0 -27
- package/dist/src/utils/process-input.js +0 -46
- package/dist/src/utils/process.d.ts +0 -293
- package/dist/src/utils/process.js +0 -593
- package/dist/src/utils/ps-duration.d.ts +0 -31
- package/dist/src/utils/ps-duration.js +0 -70
- package/dist/src/utils/regex.d.ts +0 -39
- package/dist/src/utils/regex.js +0 -109
- package/dist/src/utils/sleep.d.ts +0 -25
- package/dist/src/utils/sleep.js +0 -30
- package/dist/src/utils/stdio-drain.d.ts +0 -28
- package/dist/src/utils/stdio-drain.js +0 -54
- package/dist/src/utils/validation.d.ts +0 -182
- package/dist/src/utils/validation.js +0 -394
- package/docs/lifecycle-invariants.md +0 -523
- package/docs/run-logs.md +0 -122
- package/docs/verification-trees.md +0 -49
- /package/dist/src/{types/cli.js → cli/context.js} +0 -0
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
-
/**
|
|
3
|
-
* Teardown reaper for the helper processes one mach test dispatch launched.
|
|
4
|
-
*
|
|
5
|
-
* The mochitest harness starts its httpd (`xpcshell … server.js`), the
|
|
6
|
-
* websocket server, ssltunnel and the websocket/process bridge as plain
|
|
7
|
-
* children, and the browser through mozprocess, which puts it in a process
|
|
8
|
-
* group of its own. It logs each launch as `runtests.py | <what> pid: <n>`.
|
|
9
|
-
* When mach dies before its own cleanup runs (a forwarded SIGTERM, a
|
|
10
|
-
* no-output timeout, a harness crash, a supervisor kill), the helpers do not
|
|
11
|
-
* necessarily die with it: the 2026-09-13 incident left the httpd reparented
|
|
12
|
-
* to launchd at 100% CPU for hours after a gate killed the run at its bound.
|
|
13
|
-
*
|
|
14
|
-
* The exec layer already sweeps the dispatch's process group after close.
|
|
15
|
-
* That reaches every helper that stayed in the group, and nothing else: the
|
|
16
|
-
* browser is in its own group, and a helper that re-grouped itself is not.
|
|
17
|
-
* This module closes that gap in two passes:
|
|
18
|
-
*
|
|
19
|
-
* - {@link createHelperPidTracker} collects the announced pids from the
|
|
20
|
-
* streamed output. {@link reapTrackedHarnessPids} runs after mach has
|
|
21
|
-
* exited; a tracked pid still alive at that point is by definition a
|
|
22
|
-
* survivor (its parent is gone), so no age heuristic is needed. Before
|
|
23
|
-
* signalling, each pid is re-read from `ps` and must still be anchored to
|
|
24
|
-
* the objdir and still look like the thing the harness launched: a pid
|
|
25
|
-
* recycled onto an unrelated process between the launch line and
|
|
26
|
-
* teardown is skipped.
|
|
27
|
-
* - Not every helper is announced. mozserve starts `moz-http2` with
|
|
28
|
-
* `start_new_session=True` and logs no pid, so it is in neither the
|
|
29
|
-
* group nor the tracker, and it was the other survivor of the incident.
|
|
30
|
-
* {@link snapshotObjdirHelpers} records which same-objdir helpers existed
|
|
31
|
-
* before the dispatch spawned; after mach exits, a helper-shaped process
|
|
32
|
-
* under THIS checkout's absolute objdir that is not in that baseline and
|
|
33
|
-
* is reparented (its parent, the harness, is gone) is one this dispatch
|
|
34
|
-
* launched, and is reaped too. The absolute-path anchor keeps a sibling
|
|
35
|
-
* checkout's live harness out of it; the baseline keeps a survivor of an
|
|
36
|
-
* earlier run out of it, so the preflight census's report-only posture
|
|
37
|
-
* still decides that one's fate.
|
|
38
|
-
*/
|
|
39
|
-
import { toError } from '../utils/errors.js';
|
|
40
|
-
import { dispatchCompleteLines } from '../utils/line-dispatch.js';
|
|
41
|
-
import { info, verbose } from '../utils/logger.js';
|
|
42
|
-
import { exec } from '../utils/process.js';
|
|
43
|
-
import { isObjdirAnchored, isPidAlive, matchesHarnessHelper, terminateHarnessProcesses, } from './harness-orphans.js';
|
|
44
|
-
/**
|
|
45
|
-
* The launch announcements in `testing/mochitest/runtests.py`. mozlog puts a
|
|
46
|
-
* timestamp and level in front, so the match is unanchored.
|
|
47
|
-
*/
|
|
48
|
-
const HARNESS_PID_LINE = /runtests\.py \| (Server|Websocket server|SSL tunnel|websocket\/process bridge|Application) pid: (\d+)\b/;
|
|
49
|
-
/**
|
|
50
|
-
* Creates a tracker for one dispatch. The two streams are buffered apart so
|
|
51
|
-
* a half-line on one cannot be glued to a half-line on the other.
|
|
52
|
-
*/
|
|
53
|
-
export function createHelperPidTracker() {
|
|
54
|
-
const seen = new Map();
|
|
55
|
-
const partial = { stdout: '', stderr: '' };
|
|
56
|
-
const onLine = (line) => {
|
|
57
|
-
const match = HARNESS_PID_LINE.exec(line);
|
|
58
|
-
if (!match)
|
|
59
|
-
return;
|
|
60
|
-
const pid = Number(match[2]);
|
|
61
|
-
if (!seen.has(pid)) {
|
|
62
|
-
seen.set(pid, { pid, kind: match[1] });
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
return {
|
|
66
|
-
feed(stream, chunk) {
|
|
67
|
-
partial[stream] = dispatchCompleteLines(partial[stream] + chunk, onLine);
|
|
68
|
-
},
|
|
69
|
-
tracked() {
|
|
70
|
-
return [...seen.values()];
|
|
71
|
-
},
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
/** Log prefix for every line this reaper writes. */
|
|
75
|
-
const TEARDOWN_LABEL = 'harness teardown';
|
|
76
|
-
/**
|
|
77
|
-
* Decides whether a `ps` row still describes the process the harness
|
|
78
|
-
* announced. Exported for fixture tests.
|
|
79
|
-
*
|
|
80
|
-
* The helpers must match the census's helper pattern and the objdir anchor.
|
|
81
|
-
* The browser has no helper-shaped name, so the anchor alone attributes it:
|
|
82
|
-
* its binary lives under the objdir (`<objdir>/dist/<App>.app/…`).
|
|
83
|
-
*/
|
|
84
|
-
export function isStillTrackedProcess(tracked, command, objDir) {
|
|
85
|
-
if (!isObjdirAnchored(command, objDir))
|
|
86
|
-
return false;
|
|
87
|
-
return tracked.kind === 'Application' || matchesHarnessHelper(command);
|
|
88
|
-
}
|
|
89
|
-
/** Lists every process. Throws when `ps` is unusable, like the census. */
|
|
90
|
-
async function listAllProcesses() {
|
|
91
|
-
const result = await exec('ps', ['-axo', 'pid=,ppid=,command='], { timeout: 10000 });
|
|
92
|
-
if (result.exitCode !== 0)
|
|
93
|
-
throw new Error(`ps exited ${result.exitCode}`);
|
|
94
|
-
const rows = [];
|
|
95
|
-
for (const line of result.stdout.split('\n')) {
|
|
96
|
-
const match = /^\s*(\d+)\s+(\d+)\s+(.+)$/.exec(line);
|
|
97
|
-
if (match) {
|
|
98
|
-
rows.push({
|
|
99
|
-
pid: Number(match[1]),
|
|
100
|
-
ppid: Number(match[2]),
|
|
101
|
-
command: (match[3] ?? '').trim(),
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return rows;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* A helper-shaped process under this checkout's objdir. The anchor here is
|
|
109
|
-
* the absolute objdir path alone, on purpose: the census's generic `obj-…`
|
|
110
|
-
* fallback would also match a sibling checkout's live harness.
|
|
111
|
-
*/
|
|
112
|
-
function isThisObjdirHelper(command, objDir) {
|
|
113
|
-
return command.includes(objDir) && matchesHarnessHelper(command);
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Records the same-objdir helpers alive before a dispatch spawns anything,
|
|
117
|
-
* so the post-close pass can tell this dispatch's unannounced helpers from
|
|
118
|
-
* an earlier run's survivors. Undefined when `ps` is unusable or no objdir
|
|
119
|
-
* is known; the post-close pass then reaps no unannounced process at all.
|
|
120
|
-
*
|
|
121
|
-
* @param objDir - This project's absolute objdir
|
|
122
|
-
* @returns The pids to leave alone at teardown, or undefined for "no baseline"
|
|
123
|
-
*/
|
|
124
|
-
export async function snapshotObjdirHelpers(objDir) {
|
|
125
|
-
if (process.platform === 'win32' || objDir === undefined)
|
|
126
|
-
return undefined;
|
|
127
|
-
try {
|
|
128
|
-
const rows = await listAllProcesses();
|
|
129
|
-
return new Set(rows.filter((r) => isThisObjdirHelper(r.command, objDir)).map((r) => r.pid));
|
|
130
|
-
}
|
|
131
|
-
catch (error) {
|
|
132
|
-
verbose(`${TEARDOWN_LABEL}: could not snapshot helpers (${toError(error).message}).`);
|
|
133
|
-
return undefined;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Helpers this dispatch launched without announcing them: helper-shaped,
|
|
138
|
-
* under this checkout's objdir, not in the pre-dispatch baseline, and
|
|
139
|
-
* reparented to pid 1 because the harness that started them is gone.
|
|
140
|
-
* Returns nothing when `ps` is unusable rather than guessing. Without a
|
|
141
|
-
* baseline (a snapshot that failed) it also returns nothing: an earlier
|
|
142
|
-
* run's survivor must stay the census's call.
|
|
143
|
-
*/
|
|
144
|
-
async function findUnannouncedSurvivors(objDir, baseline, exclude) {
|
|
145
|
-
if (baseline === undefined)
|
|
146
|
-
return [];
|
|
147
|
-
let rows;
|
|
148
|
-
try {
|
|
149
|
-
rows = await listAllProcesses();
|
|
150
|
-
}
|
|
151
|
-
catch (error) {
|
|
152
|
-
verbose(`${TEARDOWN_LABEL}: could not scan for unannounced helpers (${toError(error).message}).`);
|
|
153
|
-
return [];
|
|
154
|
-
}
|
|
155
|
-
return rows
|
|
156
|
-
.filter((r) => r.ppid === 1 &&
|
|
157
|
-
r.pid !== process.pid &&
|
|
158
|
-
!baseline.has(r.pid) &&
|
|
159
|
-
!exclude.has(r.pid) &&
|
|
160
|
-
isThisObjdirHelper(r.command, objDir))
|
|
161
|
-
.map((r) => ({ pid: r.pid, kind: 'unannounced', command: r.command }));
|
|
162
|
-
}
|
|
163
|
-
/** Reads `pid command` rows for the given pids. Missing pids simply produce no row. */
|
|
164
|
-
async function listCommands(pids) {
|
|
165
|
-
const result = await exec('ps', ['-o', 'pid=,command=', '-p', pids.join(',')], {
|
|
166
|
-
timeout: 10000,
|
|
167
|
-
});
|
|
168
|
-
const rows = new Map();
|
|
169
|
-
// `ps -p` exits 1 when any listed pid is gone, while still printing the
|
|
170
|
-
// rest, so the exit code is not a failure signal here.
|
|
171
|
-
for (const line of result.stdout.split('\n')) {
|
|
172
|
-
const match = /^\s*(\d+)\s+(.+)$/.exec(line);
|
|
173
|
-
if (match)
|
|
174
|
-
rows.set(Number(match[1]), (match[2] ?? '').trim());
|
|
175
|
-
}
|
|
176
|
-
return rows;
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Re-reads the announced pids that are still alive and keeps the ones still
|
|
180
|
-
* attributable to this dispatch. Empty when `ps` is unusable.
|
|
181
|
-
*/
|
|
182
|
-
async function survivingTrackedPids(tracked, objDir) {
|
|
183
|
-
const alive = tracked.filter((entry) => isPidAlive(entry.pid));
|
|
184
|
-
if (alive.length === 0)
|
|
185
|
-
return [];
|
|
186
|
-
let commands;
|
|
187
|
-
try {
|
|
188
|
-
commands = await listCommands(alive.map((entry) => entry.pid));
|
|
189
|
-
}
|
|
190
|
-
catch (error) {
|
|
191
|
-
verbose(`${TEARDOWN_LABEL}: could not read ps for tracked helpers (${toError(error).message}); skipping.`);
|
|
192
|
-
return [];
|
|
193
|
-
}
|
|
194
|
-
const targets = [];
|
|
195
|
-
for (const entry of alive) {
|
|
196
|
-
const command = commands.get(entry.pid);
|
|
197
|
-
if (command === undefined)
|
|
198
|
-
continue; // exited between the probe and ps
|
|
199
|
-
if (!isStillTrackedProcess(entry, command, objDir)) {
|
|
200
|
-
verbose(`${TEARDOWN_LABEL}: PID ${entry.pid} (announced as ${entry.kind}) is now "${command.slice(0, 120)}", ` +
|
|
201
|
-
'not attributable to this run; left alone.');
|
|
202
|
-
continue;
|
|
203
|
-
}
|
|
204
|
-
targets.push(entry);
|
|
205
|
-
}
|
|
206
|
-
return targets;
|
|
207
|
-
}
|
|
208
|
-
function describeTarget(target) {
|
|
209
|
-
const excerpt = target.command === undefined ? '' : ` "${target.command.slice(0, 80)}"`;
|
|
210
|
-
return `${target.kind} ${target.pid}${excerpt}`;
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Terminates every process this dispatch launched that is still alive after
|
|
214
|
-
* mach exited: the announced pids still attributable to the dispatch, and
|
|
215
|
-
* the unannounced same-objdir survivors that appeared since the baseline.
|
|
216
|
-
*
|
|
217
|
-
* Best-effort like the census: a host without `ps` logs at verbose and
|
|
218
|
-
* reaps nothing rather than signalling on the strength of a pid alone.
|
|
219
|
-
*
|
|
220
|
-
* @param tracked - The pids the harness announced during the dispatch
|
|
221
|
-
* @param objDir - This project's absolute objdir, for the anchor rule
|
|
222
|
-
* @param baseline - Same-objdir helpers alive before the dispatch spawned
|
|
223
|
-
* ({@link snapshotObjdirHelpers}); never touched here. Undefined disables
|
|
224
|
-
* the unannounced pass entirely
|
|
225
|
-
* @returns How many survivors are confirmed gone afterwards
|
|
226
|
-
*/
|
|
227
|
-
export async function reapTrackedHarnessPids(tracked, objDir, baseline) {
|
|
228
|
-
if (process.platform === 'win32')
|
|
229
|
-
return 0;
|
|
230
|
-
const targets = await survivingTrackedPids(tracked, objDir);
|
|
231
|
-
if (objDir !== undefined) {
|
|
232
|
-
const known = new Set(tracked.map((t) => t.pid));
|
|
233
|
-
targets.push(...(await findUnannouncedSurvivors(objDir, baseline, known)));
|
|
234
|
-
}
|
|
235
|
-
if (targets.length === 0)
|
|
236
|
-
return 0;
|
|
237
|
-
info(`${TEARDOWN_LABEL}: ${targets.length} harness process(es) outlived mach ` +
|
|
238
|
-
`(${targets.map(describeTarget).join(', ')}); terminating.`);
|
|
239
|
-
return terminateHarnessProcesses(targets, TEARDOWN_LABEL);
|
|
240
|
-
}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Preflight census of orphaned test-harness helper processes.
|
|
3
|
-
*
|
|
4
|
-
* Stopping a long mochitest run mid-flight does not necessarily take its
|
|
5
|
-
* helpers with it. A downstream incident left `xpcshell` (the harness
|
|
6
|
-
* httpd, pegged at 100% CPU), `pywebsocket`, `ssltunnel` and `moz-http2`
|
|
7
|
-
* alive for an hour. Every subsequent run crawled: a three-second suite
|
|
8
|
-
* took six minutes of wall clock and audio-start waits timed out. Nothing
|
|
9
|
-
* in FireForge's output connected the slowness to the survivors.
|
|
10
|
-
* The hour was spent mis-attributing it to the change under test.
|
|
11
|
-
*
|
|
12
|
-
* Visibility alone would have collapsed that hour, which is why the census
|
|
13
|
-
* runs by default and the kill does not. Two rules keep it honest:
|
|
14
|
-
*
|
|
15
|
-
* - The census runs at preflight, before this run spawns anything, so
|
|
16
|
-
* every matching process must be a survivor of an earlier run. No age
|
|
17
|
-
* heuristic is needed, and none is used.
|
|
18
|
-
* - A match must be anchored to a Firefox OBJDIR. `xpcshell` and
|
|
19
|
-
* `server.js` are far too generic on their own. The same rule
|
|
20
|
-
* `mochitest-server-port.ts` applies to the httpd holder applies here,
|
|
21
|
-
* for the same reason. FireForge has no business reporting, let alone
|
|
22
|
-
* terminating, a process it cannot attribute to the harness.
|
|
23
|
-
*
|
|
24
|
-
* `--reap-orphans` (or `test.reapOrphans: "reap"` in `fireforge.json`) opts
|
|
25
|
-
* into termination. Without it the census is report-only, exactly like the
|
|
26
|
-
* `Orphaned harness workers` doctor check (which covers a different shape:
|
|
27
|
-
* reparented Python multiprocessing workers, matched on PPID 1 and
|
|
28
|
-
* accumulated CPU time).
|
|
29
|
-
*
|
|
30
|
-
* The anchoring and termination primitives are exported for the teardown
|
|
31
|
-
* reaper in `harness-helper-pids.ts`, which applies the same objdir rule to
|
|
32
|
-
* the helpers THIS run launched, after mach has exited.
|
|
33
|
-
*/
|
|
34
|
-
/** One surviving harness helper process. */
|
|
35
|
-
export interface OrphanedHarnessProcess {
|
|
36
|
-
pid: number;
|
|
37
|
-
ppid: number;
|
|
38
|
-
/** Raw `ps` ELAPSED column. */
|
|
39
|
-
elapsed: string;
|
|
40
|
-
/** Parsed elapsed seconds since the process started. */
|
|
41
|
-
elapsedSeconds: number;
|
|
42
|
-
command: string;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* True when `command` IS a harness helper: its executable is a helper
|
|
46
|
-
* binary, or an interpreter whose first argument is a helper script.
|
|
47
|
-
*
|
|
48
|
-
* Structural on purpose. Matching the helper names anywhere in the command
|
|
49
|
-
* line is right for the httpd (`xpcshell -g … -f …/server.js`) and wrong for
|
|
50
|
-
* everything that merely mentions such a path: an editor opened on
|
|
51
|
-
* `server.js`, a shell whose command text quotes it, a `grep` over the
|
|
52
|
-
* objdir. Report-only, that would print a misleading `kill`; under the reap
|
|
53
|
-
* posture it would terminate the operator's shell.
|
|
54
|
-
*/
|
|
55
|
-
export declare function matchesHarnessHelper(command: string): boolean;
|
|
56
|
-
/** Objdir provenance: an explicit objdir path, a `obj-…` path segment, or `_tests/`. */
|
|
57
|
-
export declare function isObjdirAnchored(command: string, objDir: string | undefined): boolean;
|
|
58
|
-
/**
|
|
59
|
-
* Scans `ps -axo pid=,ppid=,etime=,command=` output for surviving harness
|
|
60
|
-
* helpers. Pure, so it is fixture-testable without spawning anything.
|
|
61
|
-
*
|
|
62
|
-
* FireForge's own process, its direct children and its ancestors are never
|
|
63
|
-
* candidates: the terminal shell FireForge runs under can carry the helper
|
|
64
|
-
* paths in its own command text, and must never be offered for a kill.
|
|
65
|
-
*
|
|
66
|
-
* @param psOutput - Raw `ps` output
|
|
67
|
-
* @param objDir - Absolute objdir of this project, when known. Widens the
|
|
68
|
-
* provenance test beyond the generic `obj-…` path segment
|
|
69
|
-
* @param selfPid - This process's pid
|
|
70
|
-
*/
|
|
71
|
-
export declare function findOrphanedHarnessProcesses(psOutput: string, objDir?: string, selfPid?: number): OrphanedHarnessProcess[];
|
|
72
|
-
/**
|
|
73
|
-
* Renders the census. Names every process with its elapsed time, because
|
|
74
|
-
* "a leftover harness process exists" and "a leftover harness process has
|
|
75
|
-
* been burning a core for 58 minutes" are different findings.
|
|
76
|
-
*/
|
|
77
|
-
export declare function formatOrphanReport(orphans: readonly OrphanedHarnessProcess[]): string;
|
|
78
|
-
/**
|
|
79
|
-
* Preflight census of surviving harness helpers, run before a test
|
|
80
|
-
* dispatch.
|
|
81
|
-
*
|
|
82
|
-
* Best-effort: a host without a usable `ps` (Windows, a locked-down
|
|
83
|
-
* container) logs at verbose and runs exactly as before. It never refuses a
|
|
84
|
-
* run. Unlike the server-port preflight, a survivor here degrades
|
|
85
|
-
* performance rather than making the run dispatch against the wrong server,
|
|
86
|
-
* so the correct response is to say so loudly rather than to stop.
|
|
87
|
-
*
|
|
88
|
-
* @param objDir - Absolute objdir of this project, when known
|
|
89
|
-
* @param options - `reap` terminates each recognized survivor (SIGTERM,
|
|
90
|
-
* then SIGKILL for anything that stays)
|
|
91
|
-
* @returns The census (empty when nothing was found or nothing could be
|
|
92
|
-
* probed) and how many of them are confirmed gone after reaping (0 in
|
|
93
|
-
* report-only mode)
|
|
94
|
-
*/
|
|
95
|
-
export declare function reportOrphanedHarnessProcesses(objDir: string | undefined, options?: {
|
|
96
|
-
reap?: boolean;
|
|
97
|
-
}): Promise<OrphanCensus>;
|
|
98
|
-
/** Result of {@link reportOrphanedHarnessProcesses}. */
|
|
99
|
-
export interface OrphanCensus {
|
|
100
|
-
orphans: OrphanedHarnessProcess[];
|
|
101
|
-
/** Survivors confirmed gone after the reap. Always 0 in report-only mode. */
|
|
102
|
-
reaped: number;
|
|
103
|
-
}
|
|
104
|
-
/** Liveness probe: `kill(pid, 0)` throws for a pid that is gone. */
|
|
105
|
-
export declare function isPidAlive(pid: number): boolean;
|
|
106
|
-
/**
|
|
107
|
-
* Terminates each entry: SIGTERM first, then SIGKILL for anything still
|
|
108
|
-
* alive after the grace period. Failures are reported, never thrown. A
|
|
109
|
-
* process that exited between the listing and the signal is the common case
|
|
110
|
-
* rather than an error.
|
|
111
|
-
*
|
|
112
|
-
* @param targets - Processes to terminate, already attributed to the harness
|
|
113
|
-
* by the caller (objdir anchor rule)
|
|
114
|
-
* @param label - Prefix for the log lines, naming which path is reaping
|
|
115
|
-
* (`--reap-orphans` at preflight, `teardown` after mach exits)
|
|
116
|
-
* @returns How many targets are confirmed gone afterwards
|
|
117
|
-
*/
|
|
118
|
-
export declare function terminateHarnessProcesses(targets: readonly Pick<OrphanedHarnessProcess, 'pid'>[], label: string): Promise<number>;
|
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
-
/**
|
|
3
|
-
* Preflight census of orphaned test-harness helper processes.
|
|
4
|
-
*
|
|
5
|
-
* Stopping a long mochitest run mid-flight does not necessarily take its
|
|
6
|
-
* helpers with it. A downstream incident left `xpcshell` (the harness
|
|
7
|
-
* httpd, pegged at 100% CPU), `pywebsocket`, `ssltunnel` and `moz-http2`
|
|
8
|
-
* alive for an hour. Every subsequent run crawled: a three-second suite
|
|
9
|
-
* took six minutes of wall clock and audio-start waits timed out. Nothing
|
|
10
|
-
* in FireForge's output connected the slowness to the survivors.
|
|
11
|
-
* The hour was spent mis-attributing it to the change under test.
|
|
12
|
-
*
|
|
13
|
-
* Visibility alone would have collapsed that hour, which is why the census
|
|
14
|
-
* runs by default and the kill does not. Two rules keep it honest:
|
|
15
|
-
*
|
|
16
|
-
* - The census runs at preflight, before this run spawns anything, so
|
|
17
|
-
* every matching process must be a survivor of an earlier run. No age
|
|
18
|
-
* heuristic is needed, and none is used.
|
|
19
|
-
* - A match must be anchored to a Firefox OBJDIR. `xpcshell` and
|
|
20
|
-
* `server.js` are far too generic on their own. The same rule
|
|
21
|
-
* `mochitest-server-port.ts` applies to the httpd holder applies here,
|
|
22
|
-
* for the same reason. FireForge has no business reporting, let alone
|
|
23
|
-
* terminating, a process it cannot attribute to the harness.
|
|
24
|
-
*
|
|
25
|
-
* `--reap-orphans` (or `test.reapOrphans: "reap"` in `fireforge.json`) opts
|
|
26
|
-
* into termination. Without it the census is report-only, exactly like the
|
|
27
|
-
* `Orphaned harness workers` doctor check (which covers a different shape:
|
|
28
|
-
* reparented Python multiprocessing workers, matched on PPID 1 and
|
|
29
|
-
* accumulated CPU time).
|
|
30
|
-
*
|
|
31
|
-
* The anchoring and termination primitives are exported for the teardown
|
|
32
|
-
* reaper in `harness-helper-pids.ts`, which applies the same objdir rule to
|
|
33
|
-
* the helpers THIS run launched, after mach has exited.
|
|
34
|
-
*/
|
|
35
|
-
import { toError } from '../utils/errors.js';
|
|
36
|
-
import { info, verbose, warn } from '../utils/logger.js';
|
|
37
|
-
import { exec } from '../utils/process.js';
|
|
38
|
-
import { parsePsDuration } from '../utils/ps-duration.js';
|
|
39
|
-
import { sleep } from '../utils/sleep.js';
|
|
40
|
-
/**
|
|
41
|
-
* Harness helper binaries, matched on the executable's basename. Every one
|
|
42
|
-
* of these is started by the mochitest/xpcshell harness and is expected to
|
|
43
|
-
* die with it. None of them is a thing a developer runs by hand.
|
|
44
|
-
*/
|
|
45
|
-
const HELPER_BINARY = /^(?:xpcshell|ssltunnel|http3server|moz-http2)(?:\.exe)?$/;
|
|
46
|
-
/** Interpreters the harness runs its helper scripts under. */
|
|
47
|
-
const HELPER_INTERPRETER = /^(?:python[\d.]*|Python|node)(?:\.exe)?$/;
|
|
48
|
-
/** Harness helper scripts, matched on the interpreter's script argument. */
|
|
49
|
-
const HELPER_SCRIPT = /(?:^|[/\\])(?:pywebsocket\w*\.py|websocket_server\.py|websocketprocessbridge\.py|moz-http2\.js|http2_server\.js|httpd\.js|server\.js|runtests\.py|runxpcshelltests\.py)$/;
|
|
50
|
-
function basename(token) {
|
|
51
|
-
const cut = Math.max(token.lastIndexOf('/'), token.lastIndexOf('\\'));
|
|
52
|
-
return cut === -1 ? token : token.slice(cut + 1);
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* True when `command` IS a harness helper: its executable is a helper
|
|
56
|
-
* binary, or an interpreter whose first argument is a helper script.
|
|
57
|
-
*
|
|
58
|
-
* Structural on purpose. Matching the helper names anywhere in the command
|
|
59
|
-
* line is right for the httpd (`xpcshell -g … -f …/server.js`) and wrong for
|
|
60
|
-
* everything that merely mentions such a path: an editor opened on
|
|
61
|
-
* `server.js`, a shell whose command text quotes it, a `grep` over the
|
|
62
|
-
* objdir. Report-only, that would print a misleading `kill`; under the reap
|
|
63
|
-
* posture it would terminate the operator's shell.
|
|
64
|
-
*/
|
|
65
|
-
export function matchesHarnessHelper(command) {
|
|
66
|
-
const [exe, first] = command.trim().split(/\s+/);
|
|
67
|
-
if (exe === undefined)
|
|
68
|
-
return false;
|
|
69
|
-
if (HELPER_BINARY.test(basename(exe)))
|
|
70
|
-
return true;
|
|
71
|
-
if (first === undefined || !HELPER_INTERPRETER.test(basename(exe)))
|
|
72
|
-
return false;
|
|
73
|
-
return HELPER_SCRIPT.test(first);
|
|
74
|
-
}
|
|
75
|
-
/** Objdir provenance: an explicit objdir path, a `obj-…` path segment, or `_tests/`. */
|
|
76
|
-
export function isObjdirAnchored(command, objDir) {
|
|
77
|
-
if (objDir !== undefined && objDir.length > 0 && command.includes(objDir))
|
|
78
|
-
return true;
|
|
79
|
-
if (/[/\\]obj-[^/\\\s]*[/\\]/.test(command))
|
|
80
|
-
return true;
|
|
81
|
-
return /[/\\]_tests[/\\]/.test(command);
|
|
82
|
-
}
|
|
83
|
-
/** Pids of `selfPid` and every ancestor of it, as far as the listing reaches. */
|
|
84
|
-
function ancestorsOf(rows, selfPid) {
|
|
85
|
-
const parentOf = new Map(rows.map((r) => [r.pid, r.ppid]));
|
|
86
|
-
const chain = new Set();
|
|
87
|
-
let cursor = selfPid;
|
|
88
|
-
while (cursor !== undefined && cursor > 0 && !chain.has(cursor)) {
|
|
89
|
-
chain.add(cursor);
|
|
90
|
-
cursor = parentOf.get(cursor);
|
|
91
|
-
}
|
|
92
|
-
return chain;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Scans `ps -axo pid=,ppid=,etime=,command=` output for surviving harness
|
|
96
|
-
* helpers. Pure, so it is fixture-testable without spawning anything.
|
|
97
|
-
*
|
|
98
|
-
* FireForge's own process, its direct children and its ancestors are never
|
|
99
|
-
* candidates: the terminal shell FireForge runs under can carry the helper
|
|
100
|
-
* paths in its own command text, and must never be offered for a kill.
|
|
101
|
-
*
|
|
102
|
-
* @param psOutput - Raw `ps` output
|
|
103
|
-
* @param objDir - Absolute objdir of this project, when known. Widens the
|
|
104
|
-
* provenance test beyond the generic `obj-…` path segment
|
|
105
|
-
* @param selfPid - This process's pid
|
|
106
|
-
*/
|
|
107
|
-
export function findOrphanedHarnessProcesses(psOutput, objDir, selfPid = process.pid) {
|
|
108
|
-
const rows = [];
|
|
109
|
-
for (const line of psOutput.split('\n')) {
|
|
110
|
-
const match = /^\s*(\d+)\s+(\d+)\s+(\S+)\s+(.+)$/.exec(line);
|
|
111
|
-
if (!match)
|
|
112
|
-
continue;
|
|
113
|
-
rows.push({
|
|
114
|
-
pid: Number(match[1]),
|
|
115
|
-
ppid: Number(match[2]),
|
|
116
|
-
elapsed: match[3] ?? '',
|
|
117
|
-
command: (match[4] ?? '').trim(),
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
const excluded = ancestorsOf(rows, selfPid);
|
|
121
|
-
const found = [];
|
|
122
|
-
for (const { pid, ppid, elapsed, command } of rows) {
|
|
123
|
-
if (excluded.has(pid) || ppid === selfPid)
|
|
124
|
-
continue;
|
|
125
|
-
if (!matchesHarnessHelper(command))
|
|
126
|
-
continue;
|
|
127
|
-
if (!isObjdirAnchored(command, objDir))
|
|
128
|
-
continue;
|
|
129
|
-
const elapsedSeconds = parsePsDuration(elapsed);
|
|
130
|
-
found.push({
|
|
131
|
-
pid,
|
|
132
|
-
ppid,
|
|
133
|
-
elapsed,
|
|
134
|
-
elapsedSeconds: Number.isNaN(elapsedSeconds) ? 0 : elapsedSeconds,
|
|
135
|
-
command,
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
return found;
|
|
139
|
-
}
|
|
140
|
-
/** Grace period between SIGTERM and SIGKILL when reaping. */
|
|
141
|
-
const REAP_GRACE_MS = 500;
|
|
142
|
-
/** Wait after SIGKILL before the final liveness probe, so the parent can collect the exit. */
|
|
143
|
-
const KILL_SETTLE_MS = 200;
|
|
144
|
-
/** Longest command excerpt carried into the report line. */
|
|
145
|
-
const COMMAND_EXCERPT_LIMIT = 160;
|
|
146
|
-
/**
|
|
147
|
-
* Renders the census. Names every process with its elapsed time, because
|
|
148
|
-
* "a leftover harness process exists" and "a leftover harness process has
|
|
149
|
-
* been burning a core for 58 minutes" are different findings.
|
|
150
|
-
*/
|
|
151
|
-
export function formatOrphanReport(orphans) {
|
|
152
|
-
const rows = orphans
|
|
153
|
-
.map((p) => ` PID ${p.pid} (up ${p.elapsed}): ${p.command.slice(0, COMMAND_EXCERPT_LIMIT)}`)
|
|
154
|
-
.join('\n');
|
|
155
|
-
const pids = orphans.map((p) => String(p.pid)).join(' ');
|
|
156
|
-
return (`${orphans.length} harness helper process(es) from an EARLIER run are still alive ` +
|
|
157
|
-
`(this preflight runs before the current run spawns anything, so none of these belong to ` +
|
|
158
|
-
`it):\n${rows}\n` +
|
|
159
|
-
`Survivors like these slow every later run without appearing anywhere in its output — a ` +
|
|
160
|
-
`three-second suite taking minutes of wall clock is the usual symptom. Terminate them with ` +
|
|
161
|
-
`"kill ${pids}", re-run with --reap-orphans, or set test.reapOrphans to "reap" in ` +
|
|
162
|
-
`fireforge.json to have FireForge do it at every preflight.`);
|
|
163
|
-
}
|
|
164
|
-
/** Thin exec wrapper for the process listing (tests mock `exec` instead). */
|
|
165
|
-
async function listSystemProcesses() {
|
|
166
|
-
const result = await exec('ps', ['-axo', 'pid=,ppid=,etime=,command='], { timeout: 10000 });
|
|
167
|
-
if (result.exitCode !== 0) {
|
|
168
|
-
throw new Error(`ps exited ${result.exitCode}`);
|
|
169
|
-
}
|
|
170
|
-
return result.stdout;
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Preflight census of surviving harness helpers, run before a test
|
|
174
|
-
* dispatch.
|
|
175
|
-
*
|
|
176
|
-
* Best-effort: a host without a usable `ps` (Windows, a locked-down
|
|
177
|
-
* container) logs at verbose and runs exactly as before. It never refuses a
|
|
178
|
-
* run. Unlike the server-port preflight, a survivor here degrades
|
|
179
|
-
* performance rather than making the run dispatch against the wrong server,
|
|
180
|
-
* so the correct response is to say so loudly rather than to stop.
|
|
181
|
-
*
|
|
182
|
-
* @param objDir - Absolute objdir of this project, when known
|
|
183
|
-
* @param options - `reap` terminates each recognized survivor (SIGTERM,
|
|
184
|
-
* then SIGKILL for anything that stays)
|
|
185
|
-
* @returns The census (empty when nothing was found or nothing could be
|
|
186
|
-
* probed) and how many of them are confirmed gone after reaping (0 in
|
|
187
|
-
* report-only mode)
|
|
188
|
-
*/
|
|
189
|
-
export async function reportOrphanedHarnessProcesses(objDir, options = {}) {
|
|
190
|
-
if (process.platform === 'win32')
|
|
191
|
-
return { orphans: [], reaped: 0 };
|
|
192
|
-
let psOutput;
|
|
193
|
-
try {
|
|
194
|
-
psOutput = await listSystemProcesses();
|
|
195
|
-
}
|
|
196
|
-
catch (error) {
|
|
197
|
-
verbose(`Orphan preflight: could not scan processes (${toError(error).message}); skipping.`);
|
|
198
|
-
return { orphans: [], reaped: 0 };
|
|
199
|
-
}
|
|
200
|
-
const orphans = findOrphanedHarnessProcesses(psOutput, objDir);
|
|
201
|
-
if (orphans.length === 0) {
|
|
202
|
-
verbose('Orphan preflight: no surviving harness helper processes.');
|
|
203
|
-
return { orphans: [], reaped: 0 };
|
|
204
|
-
}
|
|
205
|
-
warn(formatOrphanReport(orphans));
|
|
206
|
-
const reaped = options.reap === true ? await terminateHarnessProcesses(orphans, '--reap-orphans') : 0;
|
|
207
|
-
return { orphans, reaped };
|
|
208
|
-
}
|
|
209
|
-
/** Liveness probe: `kill(pid, 0)` throws for a pid that is gone. */
|
|
210
|
-
export function isPidAlive(pid) {
|
|
211
|
-
try {
|
|
212
|
-
process.kill(pid, 0);
|
|
213
|
-
return true;
|
|
214
|
-
}
|
|
215
|
-
catch {
|
|
216
|
-
return false;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Terminates each entry: SIGTERM first, then SIGKILL for anything still
|
|
221
|
-
* alive after the grace period. Failures are reported, never thrown. A
|
|
222
|
-
* process that exited between the listing and the signal is the common case
|
|
223
|
-
* rather than an error.
|
|
224
|
-
*
|
|
225
|
-
* @param targets - Processes to terminate, already attributed to the harness
|
|
226
|
-
* by the caller (objdir anchor rule)
|
|
227
|
-
* @param label - Prefix for the log lines, naming which path is reaping
|
|
228
|
-
* (`--reap-orphans` at preflight, `teardown` after mach exits)
|
|
229
|
-
* @returns How many targets are confirmed gone afterwards
|
|
230
|
-
*/
|
|
231
|
-
export async function terminateHarnessProcesses(targets, label) {
|
|
232
|
-
let reaped = 0;
|
|
233
|
-
for (const target of targets) {
|
|
234
|
-
try {
|
|
235
|
-
process.kill(target.pid, 'SIGTERM');
|
|
236
|
-
}
|
|
237
|
-
catch (error) {
|
|
238
|
-
verbose(`${label}: SIGTERM to ${target.pid} failed (${toError(error).message}).`);
|
|
239
|
-
continue;
|
|
240
|
-
}
|
|
241
|
-
// Grace period before escalating: the httpd shape in the field
|
|
242
|
-
// incident ignored SIGTERM while spinning, but an ordinary helper exits
|
|
243
|
-
// promptly and must not be SIGKILLed for being slow by a millisecond.
|
|
244
|
-
await sleep(REAP_GRACE_MS);
|
|
245
|
-
if (isPidAlive(target.pid)) {
|
|
246
|
-
try {
|
|
247
|
-
process.kill(target.pid, 'SIGKILL');
|
|
248
|
-
}
|
|
249
|
-
catch (error) {
|
|
250
|
-
verbose(`${label}: SIGKILL to ${target.pid} failed (${toError(error).message}).`);
|
|
251
|
-
}
|
|
252
|
-
// A killed process answers kill(0) until its parent (launchd, for a
|
|
253
|
-
// reparented survivor) has collected it, which takes a moment.
|
|
254
|
-
await sleep(KILL_SETTLE_MS);
|
|
255
|
-
}
|
|
256
|
-
// Counted only when the probe agrees: the verdict line will carry this
|
|
257
|
-
// number, and a SIGKILL that was sent is not the same as a process that
|
|
258
|
-
// is gone.
|
|
259
|
-
if (isPidAlive(target.pid)) {
|
|
260
|
-
warn(`${label}: PID ${target.pid} is still alive after SIGKILL; inspect it by hand.`);
|
|
261
|
-
}
|
|
262
|
-
else {
|
|
263
|
-
reaped += 1;
|
|
264
|
-
info(`${label}: terminated PID ${target.pid}.`);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
return reaped;
|
|
268
|
-
}
|