@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,60 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
-
/**
|
|
3
|
-
* Shared engine precondition ladder for commands that read or mutate
|
|
4
|
-
* `engine/` through git.
|
|
5
|
-
*
|
|
6
|
-
* The rungs matter in order. Skipping the unborn-HEAD guard and going
|
|
7
|
-
* straight to enumerating working-tree status makes the whole ~300k-file
|
|
8
|
-
* Firefox tree read as untracked, so an engine left half-initialised by an
|
|
9
|
-
* interrupted `download` produces a nonsensical result instead of an
|
|
10
|
-
* actionable refusal.
|
|
11
|
-
*
|
|
12
|
-
* The remediation wording lives here once so the callers cannot drift apart.
|
|
13
|
-
*/
|
|
14
|
-
import { GeneralError } from '../errors/base.js';
|
|
15
|
-
import { pathExists } from '../utils/fs.js';
|
|
16
|
-
import { getHead, isGitRepository, isMissingHeadError } from './git.js';
|
|
17
|
-
/** Remediation for an engine whose baseline commit was never created. */
|
|
18
|
-
const UNBORN_HEAD_REMEDIATION = 'Engine repository has no baseline commit yet — a previous "fireforge download" was ' +
|
|
19
|
-
'interrupted before git created the initial Firefox source commit. ' +
|
|
20
|
-
// No terminating period: the suffix below supplies its own punctuation, and
|
|
21
|
-
// hardcoding one here rendered as "…cleanly., then retry the rebase."
|
|
22
|
-
'Re-run "fireforge download --force" to recreate the baseline repository cleanly';
|
|
23
|
-
/**
|
|
24
|
-
* Asserts only that the engine checkout exists.
|
|
25
|
-
*
|
|
26
|
-
* The first rung of {@link assertEngineGitReady}. Most callers want exactly
|
|
27
|
-
* this rung and no more: `build`, `run`, `test`, `package`, `watch`,
|
|
28
|
-
* `import` and `bootstrap` never run git against the engine and each has its
|
|
29
|
-
* own richer follow-up gate, so promoting them to the full three-rung ladder
|
|
30
|
-
* would refuse runs that work today.
|
|
31
|
-
*
|
|
32
|
-
* @param engineDir - Absolute path to the engine checkout
|
|
33
|
-
*/
|
|
34
|
-
export async function assertEngineExists(engineDir) {
|
|
35
|
-
if (!(await pathExists(engineDir))) {
|
|
36
|
-
throw new GeneralError('Firefox source not found. Run "fireforge download" first.');
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Asserts that `engineDir` exists, is a git repository, and has a baseline
|
|
41
|
-
* commit, in that order, so the operator gets the most specific applicable
|
|
42
|
-
* remediation rather than a downstream git error.
|
|
43
|
-
*
|
|
44
|
-
* @param engineDir - Absolute path to the engine checkout
|
|
45
|
-
* @param options - Optional per-command message tailoring
|
|
46
|
-
*/
|
|
47
|
-
export async function assertEngineGitReady(engineDir, options = {}) {
|
|
48
|
-
await assertEngineExists(engineDir);
|
|
49
|
-
if (!(await isGitRepository(engineDir))) {
|
|
50
|
-
throw new GeneralError('Engine directory is not a git repository. Run "fireforge download" to initialize.');
|
|
51
|
-
}
|
|
52
|
-
try {
|
|
53
|
-
await getHead(engineDir);
|
|
54
|
-
}
|
|
55
|
-
catch (headError) {
|
|
56
|
-
if (!isMissingHeadError(headError))
|
|
57
|
-
throw headError;
|
|
58
|
-
throw new GeneralError(`${UNBORN_HEAD_REMEDIATION}${options.unbornHeadSuffix ?? '.'}`);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import type { LockMode } from './file-lock.js';
|
|
2
|
-
import { type LockStatusSnapshot } from './file-lock.js';
|
|
3
|
-
export interface EngineSessionLockOptions {
|
|
4
|
-
/**
|
|
5
|
-
* Wait up to this many seconds for the engine session lock instead of the
|
|
6
|
-
* ~1 s fail-fast. Enables exponential poll backoff (100 ms → 2 s) and a
|
|
7
|
-
* holder-identified progress line roughly every 5 s. `undefined` keeps the
|
|
8
|
-
* fail-fast behaviour.
|
|
9
|
-
*/
|
|
10
|
-
waitLockSeconds?: number | undefined;
|
|
11
|
-
/**
|
|
12
|
-
* `shared` lets build-less test runs overlap each other; see
|
|
13
|
-
* `file-lock-shared.ts`. Every other caller holds the lock exclusively.
|
|
14
|
-
*/
|
|
15
|
-
mode?: LockMode | undefined;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Formats the notice printed when the wait budget is extended because the
|
|
19
|
-
* queue advanced.
|
|
20
|
-
*
|
|
21
|
-
* Exported for direct unit testing. It names both figures, the requested
|
|
22
|
-
* budget and the one now in force, because they have diverged and an
|
|
23
|
-
* operator comparing the elapsed time against the number they typed would
|
|
24
|
-
* otherwise conclude the timeout is broken.
|
|
25
|
-
*/
|
|
26
|
-
export declare function formatWaitExtendedLine(ahead: number, budgetMs: number, requestedMs: number): string;
|
|
27
|
-
/**
|
|
28
|
-
* Runs `operation` while holding the project's engine-session lock, so only
|
|
29
|
-
* one engine-mutating FireForge command touches `engine/` at a time.
|
|
30
|
-
*/
|
|
31
|
-
export declare function withEngineSessionLock<T>(projectRoot: string, command: string, operation: () => Promise<T>, options?: EngineSessionLockOptions): Promise<T>;
|
|
32
|
-
/**
|
|
33
|
-
* Inspects the project's engine-session lock without acquiring it, backing
|
|
34
|
-
* `fireforge status --lock`.
|
|
35
|
-
*
|
|
36
|
-
* @param projectRoot - Project root containing `.fireforge/`
|
|
37
|
-
* @returns Holder identity, hold duration, and queue depth
|
|
38
|
-
*/
|
|
39
|
-
export declare function readEngineSessionLockStatus(projectRoot: string): Promise<LockStatusSnapshot>;
|
|
40
|
-
/**
|
|
41
|
-
* Renders the engine-session lock snapshot as operator-facing lines.
|
|
42
|
-
* Pure, so the wording is unit-testable without a lock on disk.
|
|
43
|
-
*/
|
|
44
|
-
export declare function formatEngineSessionLockStatus(snapshot: LockStatusSnapshot, holderCpuSeconds?: number): string[];
|
|
45
|
-
/**
|
|
46
|
-
* Captures an opaque token describing the engine's current commit and working
|
|
47
|
-
* tree, for comparison by {@link assertEngineGenerationUnchanged}.
|
|
48
|
-
*
|
|
49
|
-
* A failed probe yields a failure token. Callers must branch on
|
|
50
|
-
* {@link isUnavailableGenerationToken} rather than comparing the token,
|
|
51
|
-
* because a probe failure means "nothing was measured", not "nothing changed".
|
|
52
|
-
*/
|
|
53
|
-
export declare function snapshotEngineGeneration(engineDir: string): Promise<string>;
|
|
54
|
-
/**
|
|
55
|
-
* True when a git failure is the transient index-lock contention shape
|
|
56
|
-
* (`Unable to create '…/.git/index.lock': File exists`) rather than a
|
|
57
|
-
* durable problem with the checkout. Exported for direct unit testing.
|
|
58
|
-
*/
|
|
59
|
-
export declare function isIndexLockError(error: unknown): boolean;
|
|
60
|
-
/**
|
|
61
|
-
* True when a generation token records a failed probe, i.e. nothing was
|
|
62
|
-
* measured, so the token must never be compared (or hashed) as if it
|
|
63
|
-
* described the engine's state.
|
|
64
|
-
*/
|
|
65
|
-
export declare function isUnavailableGenerationToken(token: string): boolean;
|
|
66
|
-
/** Strips the marker prefix off an unavailable token for display. */
|
|
67
|
-
export declare function unavailableGenerationReason(token: string): string;
|
|
68
|
-
/**
|
|
69
|
-
* Engine-relative paths whose working-tree status differs between two
|
|
70
|
-
* generation tokens (both sides of a rename), and whether HEAD moved. An
|
|
71
|
-
* untracked directory keeps git's trailing `/`.
|
|
72
|
-
*/
|
|
73
|
-
export declare function generationDeltaPaths(before: string, after: string): {
|
|
74
|
-
headMoved: boolean;
|
|
75
|
-
paths: string[];
|
|
76
|
-
};
|
|
77
|
-
/**
|
|
78
|
-
* Describes what moved between two generation tokens, in operator terms.
|
|
79
|
-
*
|
|
80
|
-
* A refusal that said only that the engine changed would leave the
|
|
81
|
-
* operator to reconstruct the writer by hand: `find -newermt` against the
|
|
82
|
-
* run window, minus the objdir, minus git's own bookkeeping. Everything
|
|
83
|
-
* needed to answer it is already in the two tokens, so the refusal answers
|
|
84
|
-
* it. Pure and total: an unparseable token yields an empty list rather than
|
|
85
|
-
* an exception, because a diagnostic must never convert a refusal into a
|
|
86
|
-
* crash.
|
|
87
|
-
*
|
|
88
|
-
* @param before - Token captured before the run
|
|
89
|
-
* @param after - Token captured after the run
|
|
90
|
-
* @returns Human-readable lines describing the delta. Empty when nothing
|
|
91
|
-
* could be attributed
|
|
92
|
-
*/
|
|
93
|
-
export declare function describeEngineGenerationDelta(before: string, after: string): string[];
|
|
94
|
-
/**
|
|
95
|
-
* Throws when the engine's generation token differs from `before`, i.e. the
|
|
96
|
-
* engine was mutated by another writer while a test run was in flight.
|
|
97
|
-
*
|
|
98
|
-
* An unmeasurable engine warns rather than throws. `engine/` is not
|
|
99
|
-
* always a git checkout (`fireforge download` extracts a source tarball),
|
|
100
|
-
* so a failed probe is a legitimate state and must not fail the run.
|
|
101
|
-
*
|
|
102
|
-
* It must also not pass silently. A failure token compared for
|
|
103
|
-
* equality like any other would let a git failure that reproduces across
|
|
104
|
-
* both probes (unreadable `.git`, a permissions problem, a corrupt index)
|
|
105
|
-
* take the `after === before` early return and bless a verdict the guard
|
|
106
|
-
* never verified. Two differing failure messages are worse still: they
|
|
107
|
-
* fall through to the mutation branch and report a spurious
|
|
108
|
-
* "engine/ changed". Hence the prefix comparison rather than a token
|
|
109
|
-
* comparison: the token embeds the error message, and two genuine failures
|
|
110
|
-
* rarely phrase it identically.
|
|
111
|
-
*
|
|
112
|
-
* The tolerance is limited to a probe that failed both times:
|
|
113
|
-
* that is the steady state of a non-git `engine/`, and it warns. A one-sided
|
|
114
|
-
* transition is not that state. An `engine/` that was measurable and then
|
|
115
|
-
* was not means the second probe measured nothing about a checkout that
|
|
116
|
-
* demonstrably had something to measure. The reverse means there was never a
|
|
117
|
-
* baseline to compare against. Neither verdict can be trusted, so both throw.
|
|
118
|
-
*/
|
|
119
|
-
export declare function assertEngineGenerationUnchanged(engineDir: string, before: string, tolerateDelta?: (before: string, after: string) => Promise<boolean>): Promise<void>;
|
|
@@ -1,374 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { InconclusiveVerdictError } from '../errors/base.js';
|
|
4
|
-
import { toError } from '../utils/errors.js';
|
|
5
|
-
import { info, warn } from '../utils/logger.js';
|
|
6
|
-
import { MAX_WAIT_LOCK_SECONDS } from '../utils/options.js';
|
|
7
|
-
import { sleep } from '../utils/sleep.js';
|
|
8
|
-
import { formatLockQueuePosition, readLockStatus, withFileLock, } from './file-lock.js';
|
|
9
|
-
import { git } from './git-base.js';
|
|
10
|
-
const ENGINE_SESSION_LOCK_PATH = join('.fireforge', 'engine-session.lock');
|
|
11
|
-
/**
|
|
12
|
-
* How much longer than the requested budget a wait may run while its queue
|
|
13
|
-
* position keeps improving, and the absolute ceiling on that. The ceiling
|
|
14
|
-
* matches `--wait-lock`'s own upper bound: an operator who asked for a wait
|
|
15
|
-
* never gets one longer than the largest wait they could have asked for.
|
|
16
|
-
*/
|
|
17
|
-
const WAIT_EXTENSION_FACTOR = 4;
|
|
18
|
-
const MAX_WAIT_LOCK_MS = MAX_WAIT_LOCK_SECONDS * 1000;
|
|
19
|
-
/**
|
|
20
|
-
* Formats the periodic operator-facing waiting line printed while `--wait-lock`
|
|
21
|
-
* polls a contended engine session lock. The holder identification comes from
|
|
22
|
-
* the lock's owner-metadata lines (`command=…`, `started=…`). An unreadable
|
|
23
|
-
* owner file degrades to the anonymous form.
|
|
24
|
-
*/
|
|
25
|
-
function formatWaitProgressLine(waitedMs, timeoutMs, holder, queue) {
|
|
26
|
-
const progress = `${Math.round(waitedMs / 1000)}s of up to ${Math.round(timeoutMs / 1000)}s`;
|
|
27
|
-
// Queue position: under several concurrent sessions the wait
|
|
28
|
-
// line alone left operators inferring their place from `ps`. It names the
|
|
29
|
-
// ordering rule, because the count is only useful if the grant honours it.
|
|
30
|
-
const position = formatLockQueuePosition(queue);
|
|
31
|
-
if (holder === undefined) {
|
|
32
|
-
return `Waiting for the FireForge engine lock — ${progress}.${position}`;
|
|
33
|
-
}
|
|
34
|
-
const details = holder.metadata.length > 0 ? ` (${holder.metadata.join(', ')})` : '';
|
|
35
|
-
return `Waiting for the FireForge engine lock held by PID ${holder.pid}${details} — ${progress}.${position}`;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Formats the notice printed when the wait budget is extended because the
|
|
39
|
-
* queue advanced.
|
|
40
|
-
*
|
|
41
|
-
* Exported for direct unit testing. It names both figures, the requested
|
|
42
|
-
* budget and the one now in force, because they have diverged and an
|
|
43
|
-
* operator comparing the elapsed time against the number they typed would
|
|
44
|
-
* otherwise conclude the timeout is broken.
|
|
45
|
-
*/
|
|
46
|
-
export function formatWaitExtendedLine(ahead, budgetMs, requestedMs) {
|
|
47
|
-
const position = ahead === 0 ? 'you are now next' : `${ahead} still ahead of you`;
|
|
48
|
-
return (`The queue advanced (${position}), so the engine-lock wait was extended to ` +
|
|
49
|
-
`${Math.round(budgetMs / 1000)}s total (you asked for ` +
|
|
50
|
-
`${Math.round(requestedMs / 1000)}s). A queue that stops moving still ` +
|
|
51
|
-
`gives up on the budget you asked for.`);
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Runs `operation` while holding the project's engine-session lock, so only
|
|
55
|
-
* one engine-mutating FireForge command touches `engine/` at a time.
|
|
56
|
-
*/
|
|
57
|
-
export async function withEngineSessionLock(projectRoot, command, operation, options = {}) {
|
|
58
|
-
// The lock is bypassed under test by default, on purpose: the
|
|
59
|
-
// suite runs many engine-mutating commands in-process, which would either
|
|
60
|
-
// serialise on this lock or deadlock outright.
|
|
61
|
-
// `FIREFORGE_ENABLE_ENGINE_SESSION_LOCK_IN_TEST=1` lets the lock's own
|
|
62
|
-
// tests opt back in. Do not delete this branch. It is the reason the
|
|
63
|
-
// suite completes.
|
|
64
|
-
if (process.env['FIREFORGE_ENABLE_ENGINE_SESSION_LOCK_IN_TEST'] !== '1' &&
|
|
65
|
-
(process.env['NODE_ENV'] === 'test' || process.env['VITEST'] !== undefined)) {
|
|
66
|
-
return operation();
|
|
67
|
-
}
|
|
68
|
-
const { waitLockSeconds } = options;
|
|
69
|
-
return withFileLock(join(projectRoot, ENGINE_SESSION_LOCK_PATH), operation, {
|
|
70
|
-
...(options.mode === 'shared' ? { mode: 'shared' } : {}),
|
|
71
|
-
timeoutMs: waitLockSeconds !== undefined ? waitLockSeconds * 1000 : 1000,
|
|
72
|
-
...(waitLockSeconds !== undefined
|
|
73
|
-
? {
|
|
74
|
-
pollMs: 100,
|
|
75
|
-
pollMaxMs: 2000,
|
|
76
|
-
waitProgressMs: 5000,
|
|
77
|
-
onWaitProgress: ({ waitedMs, timeoutMs, holder, queue }) => {
|
|
78
|
-
info(formatWaitProgressLine(waitedMs, timeoutMs, holder, queue));
|
|
79
|
-
},
|
|
80
|
-
// Announce it. An extension is the moment the budget the
|
|
81
|
-
// operator asked for stops being the budget in force, and a wait
|
|
82
|
-
// that silently outlives its own stated timeout is
|
|
83
|
-
// indistinguishable from a broken one, which is how a downstream
|
|
84
|
-
// fork read it.
|
|
85
|
-
onWaitExtended: ({ ahead, budgetMs }) => {
|
|
86
|
-
info(formatWaitExtendedLine(ahead, budgetMs, waitLockSeconds * 1000));
|
|
87
|
-
},
|
|
88
|
-
// A budget that expires one position from the head pays the whole
|
|
89
|
-
// wait for nothing. While the queue is still moving the wait is
|
|
90
|
-
// working, so each advance renews the budget, up to a hard
|
|
91
|
-
// ceiling so a pathological queue cannot wait forever. The
|
|
92
|
-
// no-flag fail-fast path gets none of this.
|
|
93
|
-
extendWhileAdvancing: {
|
|
94
|
-
maxWaitMs: Math.min(waitLockSeconds * 1000 * WAIT_EXTENSION_FACTOR, MAX_WAIT_LOCK_MS),
|
|
95
|
-
},
|
|
96
|
-
}
|
|
97
|
-
: {}),
|
|
98
|
-
ownerMetadata: [`command=${command}`, `started=${new Date().toISOString()}`],
|
|
99
|
-
// Reason first, remedy second: the no-flag default waits
|
|
100
|
-
// only ~1 s, so contention is the common case and `--wait-lock` is the
|
|
101
|
-
// genuine remedy. withFileLock appends the holder identification from
|
|
102
|
-
// the lock's owner metadata. The leading sentence is a message contract
|
|
103
|
-
// (pinned by engine-session-lock tests). Extend, don't reword.
|
|
104
|
-
onTimeoutMessage: `Another FireForge engine-mutating command is already running. ` +
|
|
105
|
-
`Wait for it to finish, then retry \`${command}\` — or pass --wait-lock [seconds] ` +
|
|
106
|
-
`to wait for the lock (bare --wait-lock waits up to 60 seconds). ` +
|
|
107
|
-
`Set FIREFORGE_WAIT_LOCK=<seconds> to apply a budget to every command in a session.`,
|
|
108
|
-
onStaleLockMessage: (ageMs) => `Removed stale FireForge engine session lock (${Math.round(ageMs / 1000)}s old).`,
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Inspects the project's engine-session lock without acquiring it, backing
|
|
113
|
-
* `fireforge status --lock`.
|
|
114
|
-
*
|
|
115
|
-
* @param projectRoot - Project root containing `.fireforge/`
|
|
116
|
-
* @returns Holder identity, hold duration, and queue depth
|
|
117
|
-
*/
|
|
118
|
-
export async function readEngineSessionLockStatus(projectRoot) {
|
|
119
|
-
return readLockStatus(join(projectRoot, ENGINE_SESSION_LOCK_PATH));
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Renders the engine-session lock snapshot as operator-facing lines.
|
|
123
|
-
* Pure, so the wording is unit-testable without a lock on disk.
|
|
124
|
-
*/
|
|
125
|
-
export function formatEngineSessionLockStatus(snapshot, holderCpuSeconds) {
|
|
126
|
-
const shared = snapshot.sharedHolders !== undefined && snapshot.sharedHolders > 0
|
|
127
|
-
? `Shared holders: ${snapshot.sharedHolders} build-less test run(s) under a shared lock.`
|
|
128
|
-
: undefined;
|
|
129
|
-
if (!snapshot.held) {
|
|
130
|
-
return shared === undefined
|
|
131
|
-
? ['Engine session lock: free (no FireForge engine-mutating command is running).']
|
|
132
|
-
: ['Engine session lock: no exclusive holder.', shared];
|
|
133
|
-
}
|
|
134
|
-
const elapsed = snapshot.heldForMs === undefined
|
|
135
|
-
? 'unknown duration'
|
|
136
|
-
: `${Math.round(snapshot.heldForMs / 1000)}s`;
|
|
137
|
-
const holder = snapshot.holder;
|
|
138
|
-
const identity = holder === undefined
|
|
139
|
-
? 'held by an unidentified process (no readable owner record)'
|
|
140
|
-
: `held by PID ${holder.pid}${holder.alive ? '' : ' (NOT RUNNING — stale lock)'}` +
|
|
141
|
-
(holder.metadata.length > 0 ? ` (${holder.metadata.join(', ')})` : '');
|
|
142
|
-
const lines = [
|
|
143
|
-
`Engine session lock: ${identity}, for ${elapsed}.`,
|
|
144
|
-
`Queue depth: ${snapshot.queueDepth} waiter(s).`,
|
|
145
|
-
...(shared === undefined ? [] : [shared]),
|
|
146
|
-
];
|
|
147
|
-
// Liveness answers "does the process exist". It does not answer "is it
|
|
148
|
-
// getting anywhere". A holder alive for minutes having used a fraction of
|
|
149
|
-
// a second of CPU is the shape of a wedged command, and every waiter
|
|
150
|
-
// behind it inherits the stall. Stated as an observation with its own
|
|
151
|
-
// caveat: a holder blocked on I/O is also idle, and this must not be read
|
|
152
|
-
// as licence to kill anything.
|
|
153
|
-
if (holder?.alive === true && holderCpuSeconds !== undefined) {
|
|
154
|
-
const cpu = `${holderCpuSeconds.toFixed(1)}s`;
|
|
155
|
-
const idle = snapshot.heldForMs !== undefined && snapshot.heldForMs > 60_000 && holderCpuSeconds < 2
|
|
156
|
-
? ' — near-zero CPU over a long hold, which is what a WEDGED command looks like; ' +
|
|
157
|
-
'a holder blocked on I/O looks the same, so confirm before acting'
|
|
158
|
-
: '';
|
|
159
|
-
lines.push(`Holder CPU time: ${cpu}${idle}.`);
|
|
160
|
-
}
|
|
161
|
-
return lines;
|
|
162
|
-
}
|
|
163
|
-
/** Prefix marking a generation token whose probe failed. */
|
|
164
|
-
const UNAVAILABLE_PREFIX = 'unavailable:';
|
|
165
|
-
/**
|
|
166
|
-
* Captures an opaque token describing the engine's current commit and working
|
|
167
|
-
* tree, for comparison by {@link assertEngineGenerationUnchanged}.
|
|
168
|
-
*
|
|
169
|
-
* A failed probe yields a failure token. Callers must branch on
|
|
170
|
-
* {@link isUnavailableGenerationToken} rather than comparing the token,
|
|
171
|
-
* because a probe failure means "nothing was measured", not "nothing changed".
|
|
172
|
-
*/
|
|
173
|
-
export async function snapshotEngineGeneration(engineDir) {
|
|
174
|
-
let lastError;
|
|
175
|
-
for (let attempt = 0; attempt < GENERATION_PROBE_ATTEMPTS; attempt += 1) {
|
|
176
|
-
try {
|
|
177
|
-
const head = (await git(['rev-parse', 'HEAD'], engineDir)).trim();
|
|
178
|
-
const status = await git(['status', '--porcelain=v1', '-z'], engineDir);
|
|
179
|
-
return `${head}\0${status}`;
|
|
180
|
-
}
|
|
181
|
-
catch (error) {
|
|
182
|
-
lastError = error;
|
|
183
|
-
// A contended `.git/index.lock` is transient, not a state: some other
|
|
184
|
-
// writer held the index for the instant we looked. Treating it as
|
|
185
|
-
// "unmeasurable" turns a perfectly good suite into
|
|
186
|
-
// `FAIL reason=inconclusive` on a one-sided probe failure. Anything
|
|
187
|
-
// else (an unreadable `.git`, a non-git `engine/`) is a real state
|
|
188
|
-
// and is reported immediately.
|
|
189
|
-
if (!isIndexLockError(error) || attempt === GENERATION_PROBE_ATTEMPTS - 1)
|
|
190
|
-
break;
|
|
191
|
-
await sleep(GENERATION_PROBE_RETRY_MS);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
return `${UNAVAILABLE_PREFIX}${toError(lastError).message}`;
|
|
195
|
-
}
|
|
196
|
-
/** Probe attempts before an engine generation is declared unmeasurable. */
|
|
197
|
-
const GENERATION_PROBE_ATTEMPTS = 3;
|
|
198
|
-
/** Pause between generation-probe attempts. */
|
|
199
|
-
const GENERATION_PROBE_RETRY_MS = 250;
|
|
200
|
-
/**
|
|
201
|
-
* True when a git failure is the transient index-lock contention shape
|
|
202
|
-
* (`Unable to create '…/.git/index.lock': File exists`) rather than a
|
|
203
|
-
* durable problem with the checkout. Exported for direct unit testing.
|
|
204
|
-
*/
|
|
205
|
-
export function isIndexLockError(error) {
|
|
206
|
-
const message = toError(error).message;
|
|
207
|
-
return /index\.lock/i.test(message);
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* True when a generation token records a failed probe, i.e. nothing was
|
|
211
|
-
* measured, so the token must never be compared (or hashed) as if it
|
|
212
|
-
* described the engine's state.
|
|
213
|
-
*/
|
|
214
|
-
export function isUnavailableGenerationToken(token) {
|
|
215
|
-
return token.startsWith(UNAVAILABLE_PREFIX);
|
|
216
|
-
}
|
|
217
|
-
/** Strips the marker prefix off an unavailable token for display. */
|
|
218
|
-
export function unavailableGenerationReason(token) {
|
|
219
|
-
return token.slice(UNAVAILABLE_PREFIX.length);
|
|
220
|
-
}
|
|
221
|
-
/** How many changed entries the delta names before truncating. */
|
|
222
|
-
const DELTA_ENTRY_LIMIT = 5;
|
|
223
|
-
/**
|
|
224
|
-
* Splits a generation token into its HEAD and porcelain halves. The porcelain
|
|
225
|
-
* body is `-z` output, so it is NUL-separated and never quoted.
|
|
226
|
-
*/
|
|
227
|
-
function splitGenerationToken(token) {
|
|
228
|
-
const separator = token.indexOf('\0');
|
|
229
|
-
if (separator < 0)
|
|
230
|
-
return { head: token, body: '' };
|
|
231
|
-
return { head: token.slice(0, separator), body: token.slice(separator + 1) };
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Parses `git status --porcelain=v1 -z` into `XY path` records.
|
|
235
|
-
*
|
|
236
|
-
* The rename/copy shape needs care: `R`/`C` entries are followed by a
|
|
237
|
-
* second NUL-separated field carrying the original path, and consuming only
|
|
238
|
-
* one desynchronises every record after it, turning a one-file rename into
|
|
239
|
-
* a report that the whole tree moved. Both fields are consumed and the
|
|
240
|
-
* record renders as `orig -> new`.
|
|
241
|
-
*/
|
|
242
|
-
function parsePorcelainRecords(body) {
|
|
243
|
-
const fields = body.split('\0').filter((field) => field.length > 0);
|
|
244
|
-
const records = [];
|
|
245
|
-
for (let i = 0; i < fields.length; i++) {
|
|
246
|
-
const field = fields[i] ?? '';
|
|
247
|
-
// `XY `, two status characters and a space, then the path.
|
|
248
|
-
if (field.length < 4)
|
|
249
|
-
continue;
|
|
250
|
-
const status = field.slice(0, 2);
|
|
251
|
-
const path = field.slice(3);
|
|
252
|
-
if (status.includes('R') || status.includes('C')) {
|
|
253
|
-
const origin = fields[i + 1];
|
|
254
|
-
i += 1;
|
|
255
|
-
records.push(`${status} ${origin ?? '?'} -> ${path}`);
|
|
256
|
-
continue;
|
|
257
|
-
}
|
|
258
|
-
records.push(`${status} ${path}`);
|
|
259
|
-
}
|
|
260
|
-
return records;
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Engine-relative paths whose working-tree status differs between two
|
|
264
|
-
* generation tokens (both sides of a rename), and whether HEAD moved. An
|
|
265
|
-
* untracked directory keeps git's trailing `/`.
|
|
266
|
-
*/
|
|
267
|
-
export function generationDeltaPaths(before, after) {
|
|
268
|
-
const from = splitGenerationToken(before);
|
|
269
|
-
const to = splitGenerationToken(after);
|
|
270
|
-
const beforeRecords = new Set(parsePorcelainRecords(from.body));
|
|
271
|
-
const afterRecords = new Set(parsePorcelainRecords(to.body));
|
|
272
|
-
const paths = new Set();
|
|
273
|
-
for (const record of [...afterRecords, ...beforeRecords]) {
|
|
274
|
-
if (beforeRecords.has(record) && afterRecords.has(record))
|
|
275
|
-
continue;
|
|
276
|
-
for (const path of record.slice(3).split(' -> '))
|
|
277
|
-
paths.add(path);
|
|
278
|
-
}
|
|
279
|
-
return { headMoved: from.head !== to.head, paths: [...paths].sort() };
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Describes what moved between two generation tokens, in operator terms.
|
|
283
|
-
*
|
|
284
|
-
* A refusal that said only that the engine changed would leave the
|
|
285
|
-
* operator to reconstruct the writer by hand: `find -newermt` against the
|
|
286
|
-
* run window, minus the objdir, minus git's own bookkeeping. Everything
|
|
287
|
-
* needed to answer it is already in the two tokens, so the refusal answers
|
|
288
|
-
* it. Pure and total: an unparseable token yields an empty list rather than
|
|
289
|
-
* an exception, because a diagnostic must never convert a refusal into a
|
|
290
|
-
* crash.
|
|
291
|
-
*
|
|
292
|
-
* @param before - Token captured before the run
|
|
293
|
-
* @param after - Token captured after the run
|
|
294
|
-
* @returns Human-readable lines describing the delta. Empty when nothing
|
|
295
|
-
* could be attributed
|
|
296
|
-
*/
|
|
297
|
-
export function describeEngineGenerationDelta(before, after) {
|
|
298
|
-
const lines = [];
|
|
299
|
-
const from = splitGenerationToken(before);
|
|
300
|
-
const to = splitGenerationToken(after);
|
|
301
|
-
if (from.head !== to.head) {
|
|
302
|
-
lines.push(`HEAD moved: ${from.head} -> ${to.head}`);
|
|
303
|
-
}
|
|
304
|
-
const beforeRecords = new Set(parsePorcelainRecords(from.body));
|
|
305
|
-
const afterRecords = new Set(parsePorcelainRecords(to.body));
|
|
306
|
-
const appeared = [...afterRecords].filter((record) => !beforeRecords.has(record)).sort();
|
|
307
|
-
const disappeared = [...beforeRecords].filter((record) => !afterRecords.has(record)).sort();
|
|
308
|
-
const render = (label, records) => {
|
|
309
|
-
if (records.length === 0)
|
|
310
|
-
return;
|
|
311
|
-
const head = records.slice(0, DELTA_ENTRY_LIMIT);
|
|
312
|
-
const truncated = records.length - head.length;
|
|
313
|
-
lines.push(`${label}: ${head.join(', ')}${truncated > 0 ? `, … (+${truncated} more)` : ''}`);
|
|
314
|
-
};
|
|
315
|
-
render('Working-tree entries that appeared', appeared);
|
|
316
|
-
render('Working-tree entries that went away', disappeared);
|
|
317
|
-
return lines;
|
|
318
|
-
}
|
|
319
|
-
/**
|
|
320
|
-
* Throws when the engine's generation token differs from `before`, i.e. the
|
|
321
|
-
* engine was mutated by another writer while a test run was in flight.
|
|
322
|
-
*
|
|
323
|
-
* An unmeasurable engine warns rather than throws. `engine/` is not
|
|
324
|
-
* always a git checkout (`fireforge download` extracts a source tarball),
|
|
325
|
-
* so a failed probe is a legitimate state and must not fail the run.
|
|
326
|
-
*
|
|
327
|
-
* It must also not pass silently. A failure token compared for
|
|
328
|
-
* equality like any other would let a git failure that reproduces across
|
|
329
|
-
* both probes (unreadable `.git`, a permissions problem, a corrupt index)
|
|
330
|
-
* take the `after === before` early return and bless a verdict the guard
|
|
331
|
-
* never verified. Two differing failure messages are worse still: they
|
|
332
|
-
* fall through to the mutation branch and report a spurious
|
|
333
|
-
* "engine/ changed". Hence the prefix comparison rather than a token
|
|
334
|
-
* comparison: the token embeds the error message, and two genuine failures
|
|
335
|
-
* rarely phrase it identically.
|
|
336
|
-
*
|
|
337
|
-
* The tolerance is limited to a probe that failed both times:
|
|
338
|
-
* that is the steady state of a non-git `engine/`, and it warns. A one-sided
|
|
339
|
-
* transition is not that state. An `engine/` that was measurable and then
|
|
340
|
-
* was not means the second probe measured nothing about a checkout that
|
|
341
|
-
* demonstrably had something to measure. The reverse means there was never a
|
|
342
|
-
* baseline to compare against. Neither verdict can be trusted, so both throw.
|
|
343
|
-
*/
|
|
344
|
-
export async function assertEngineGenerationUnchanged(engineDir, before, tolerateDelta) {
|
|
345
|
-
const after = await snapshotEngineGeneration(engineDir);
|
|
346
|
-
const beforeUnavailable = isUnavailableGenerationToken(before);
|
|
347
|
-
const afterUnavailable = isUnavailableGenerationToken(after);
|
|
348
|
-
if (beforeUnavailable && afterUnavailable) {
|
|
349
|
-
warn('Could not verify that engine/ stayed unchanged while the tests ran ' +
|
|
350
|
-
`(${unavailableGenerationReason(after)}). If another writer touched engine/ during the run, ` +
|
|
351
|
-
'this verdict is stale.');
|
|
352
|
-
return;
|
|
353
|
-
}
|
|
354
|
-
if (beforeUnavailable || afterUnavailable) {
|
|
355
|
-
const detail = beforeUnavailable
|
|
356
|
-
? `engine/ could not be probed before the run (${unavailableGenerationReason(before)}) but could be ` +
|
|
357
|
-
'probed afterwards, so there is no baseline to compare against.'
|
|
358
|
-
: `engine/ was probed before the run but could not be probed afterwards ` +
|
|
359
|
-
`(${unavailableGenerationReason(after)}), so nothing was measured to compare against.`;
|
|
360
|
-
throw new InconclusiveVerdictError(`${detail}\n\n` +
|
|
361
|
-
'This test verdict is inconclusive. Restore engine/ to a readable state, then rebuild ' +
|
|
362
|
-
'and rerun the affected tests.');
|
|
363
|
-
}
|
|
364
|
-
if (after === before)
|
|
365
|
-
return;
|
|
366
|
-
// A caller that can prove the delta never reached the runtime under test
|
|
367
|
-
// (a perf sample, see `test-perf-scope.ts`) keeps its verdict.
|
|
368
|
-
if (tolerateDelta !== undefined && (await tolerateDelta(before, after)))
|
|
369
|
-
return;
|
|
370
|
-
const delta = describeEngineGenerationDelta(before, after);
|
|
371
|
-
throw new InconclusiveVerdictError('engine/ changed while `fireforge test` was running, so this test verdict is invalid/inconclusive.\n\n' +
|
|
372
|
-
(delta.length > 0 ? `What moved:\n${delta.map((line) => ` ${line}`).join('\n')}\n\n` : '') +
|
|
373
|
-
'Use one writer per engine checkout, then rebuild and rerun the affected tests.');
|
|
374
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { FurnaceConfig } from '../types/furnace.js';
|
|
2
|
-
/** Checks all component destinations before an apply starts writing. */
|
|
3
|
-
export declare function assertComponentWriteBoundaries(engineDir: string, config: FurnaceConfig, ftlDir: string): Promise<void>;
|
|
4
|
-
/** Resolves the nearest existing parent before any mkdir/copy can write through an alias. */
|
|
5
|
-
export declare function assertEngineWriteBoundary(engineDir: string, directory: string): Promise<void>;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
-
import { realpath } from 'node:fs/promises';
|
|
3
|
-
import { dirname, join, resolve, sep } from 'node:path';
|
|
4
|
-
import { FurnaceError } from '../errors/furnace.js';
|
|
5
|
-
import { getNodeErrorCode } from '../utils/errors.js';
|
|
6
|
-
import { CUSTOM_ELEMENTS_JS, JAR_MN } from './furnace-constants.js';
|
|
7
|
-
/** Checks all component destinations before an apply starts writing. */
|
|
8
|
-
export async function assertComponentWriteBoundaries(engineDir, config, ftlDir) {
|
|
9
|
-
const destinations = new Set([
|
|
10
|
-
ftlDir,
|
|
11
|
-
dirname(JAR_MN),
|
|
12
|
-
dirname(CUSTOM_ELEMENTS_JS),
|
|
13
|
-
...Object.values(config.custom).map((entry) => entry.targetPath),
|
|
14
|
-
...Object.values(config.overrides).map((entry) => entry.basePath),
|
|
15
|
-
]);
|
|
16
|
-
for (const destination of destinations) {
|
|
17
|
-
await assertEngineWriteBoundary(engineDir, join(engineDir, destination));
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
/** Resolves the nearest existing parent before any mkdir/copy can write through an alias. */
|
|
21
|
-
export async function assertEngineWriteBoundary(engineDir, directory) {
|
|
22
|
-
const root = await realpath(engineDir);
|
|
23
|
-
let parent = resolve(directory);
|
|
24
|
-
for (;;) {
|
|
25
|
-
try {
|
|
26
|
-
const canonical = await realpath(parent);
|
|
27
|
-
if (canonical !== root && !canonical.startsWith(root + sep)) {
|
|
28
|
-
throw new FurnaceError(`Engine destination ${directory} resolves outside engine/ (${canonical}). Refusing to write through into component sources or another checkout.`);
|
|
29
|
-
}
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
if (getNodeErrorCode(error) !== 'ENOENT')
|
|
34
|
-
throw error;
|
|
35
|
-
const next = dirname(parent);
|
|
36
|
-
if (next === parent)
|
|
37
|
-
throw error;
|
|
38
|
-
parent = next;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|