@hominis/fireforge 0.54.0 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +287 -6
- package/README.md +51 -17
- package/dist/bin/fireforge.js +34 -129
- package/dist/build-info.json +4 -4
- package/dist/src/check/check.js +394 -0
- package/dist/src/check/gate.js +448 -0
- package/dist/src/check/index.js +10 -0
- package/dist/src/check/record.js +155 -0
- package/dist/src/cli/command.js +286 -0
- package/dist/src/cli/output.js +96 -0
- package/dist/src/cli/program.js +231 -0
- package/dist/src/cli/stdio.js +59 -0
- package/dist/src/cli/version.js +99 -0
- package/dist/src/commands/bootstrap.js +17 -102
- package/dist/src/commands/build.js +34 -438
- package/dist/src/commands/check.js +44 -157
- package/dist/src/commands/config.js +50 -226
- package/dist/src/commands/discard.js +38 -215
- package/dist/src/commands/doctor.js +29 -456
- package/dist/src/commands/download.js +35 -499
- package/dist/src/commands/export.js +42 -431
- package/dist/src/commands/furnace.js +220 -0
- package/dist/src/commands/gate.js +127 -0
- package/dist/src/commands/import.js +44 -445
- package/dist/src/commands/index.js +86 -0
- package/dist/src/commands/lint.js +44 -546
- package/dist/src/commands/merge-driver.js +56 -0
- package/dist/src/commands/migrate.js +75 -0
- package/dist/src/commands/override.js +43 -0
- package/dist/src/commands/package.js +48 -77
- package/dist/src/commands/patch.js +221 -0
- package/dist/src/commands/re-export.js +55 -332
- package/dist/src/commands/rebase.js +69 -0
- package/dist/src/commands/register.js +62 -103
- package/dist/src/commands/reset.js +28 -91
- package/dist/src/commands/resolve.js +20 -167
- package/dist/src/commands/restore.js +19 -0
- package/dist/src/commands/run.js +60 -420
- package/dist/src/commands/setup.js +78 -90
- package/dist/src/commands/status.js +44 -413
- package/dist/src/commands/test.js +97 -422
- package/dist/src/commands/token.js +185 -228
- package/dist/src/commands/typecheck.js +59 -208
- package/dist/src/commands/verify.js +28 -334
- package/dist/src/commands/version.js +14 -0
- package/dist/src/commands/watch.js +20 -218
- package/dist/src/commands/wire.js +60 -349
- package/dist/src/commands/workspace.js +117 -0
- package/dist/src/config/edit.js +237 -0
- package/dist/src/config/index.js +15 -0
- package/dist/src/config/load.js +59 -0
- package/dist/src/config/previous.js +404 -0
- package/dist/src/config/schema/build.js +63 -0
- package/dist/src/config/schema/check.js +113 -0
- package/dist/src/config/schema/common.js +71 -0
- package/dist/src/config/schema/export-queue.js +36 -0
- package/dist/src/config/schema/firefox.js +69 -0
- package/dist/src/config/schema/gate.js +199 -0
- package/dist/src/config/schema/identity.js +55 -0
- package/dist/src/config/schema/index.js +45 -0
- package/dist/src/config/schema/lint.js +297 -0
- package/dist/src/config/schema/policy.js +111 -0
- package/dist/src/config/schema/source.js +90 -0
- package/dist/src/config/schema/test.js +17 -0
- package/dist/src/config/schema/toolchains.js +17 -0
- package/dist/src/config/schema/typecheck.js +29 -0
- package/dist/src/config/schema/wire.js +15 -0
- package/dist/src/diff/apply.js +129 -0
- package/dist/src/diff/index.js +16 -0
- package/dist/src/diff/model.js +267 -0
- package/dist/src/diff/query.js +65 -0
- package/dist/src/doctor/index.js +240 -0
- package/dist/src/engine/archive.js +396 -0
- package/dist/src/engine/audit.js +66 -0
- package/dist/src/engine/build.js +150 -0
- package/dist/src/engine/hostLocks.js +66 -0
- package/dist/src/engine/index.js +26 -0
- package/dist/src/engine/installManifests.js +147 -0
- package/dist/src/engine/mach.js +97 -0
- package/dist/src/engine/machHints.js +80 -0
- package/dist/src/engine/mozconfig.js +110 -0
- package/dist/src/engine/objdir.js +124 -0
- package/dist/src/engine/package.js +169 -0
- package/dist/src/engine/pin.js +12 -0
- package/dist/src/engine/pool.js +423 -0
- package/dist/src/engine/pristine.js +281 -0
- package/dist/src/engine/python.js +68 -0
- package/dist/src/engine/resourceGuard.js +582 -0
- package/dist/src/engine/run.js +259 -0
- package/dist/src/engine/smoke.js +204 -0
- package/dist/src/engine/staleness.js +229 -0
- package/dist/src/engine/watch.js +82 -0
- package/dist/src/engine/workspace.js +85 -0
- package/dist/src/furnace/config.js +360 -0
- package/dist/src/furnace/deploy.js +414 -0
- package/dist/src/furnace/diff.js +59 -0
- package/dist/src/furnace/edit.js +64 -0
- package/dist/src/furnace/fragments.js +53 -0
- package/dist/src/furnace/index.js +19 -0
- package/dist/src/furnace/operations.js +283 -0
- package/dist/src/furnace/registration.js +220 -0
- package/dist/src/furnace/scaffold.js +311 -0
- package/dist/src/furnace/typing.js +252 -0
- package/dist/src/furnace/validate.js +662 -0
- package/dist/src/git/apply.js +129 -0
- package/dist/src/git/diff.js +143 -0
- package/dist/src/git/index.js +33 -0
- package/dist/src/git/objects.js +201 -0
- package/dist/src/git/refs.js +85 -0
- package/dist/src/git/repo.js +222 -0
- package/dist/src/git/run.js +242 -0
- package/dist/src/git/status.js +156 -0
- package/dist/src/kernel/errors.js +123 -0
- package/dist/src/kernel/fs.js +515 -0
- package/dist/src/kernel/glob.js +63 -0
- package/dist/src/kernel/hash.js +28 -0
- package/dist/src/kernel/journal.js +524 -0
- package/dist/src/kernel/json-edit.js +198 -0
- package/dist/src/kernel/json.js +101 -0
- package/dist/src/kernel/lock.js +589 -0
- package/dist/src/kernel/log.js +154 -0
- package/dist/src/kernel/process/identity.js +313 -0
- package/dist/src/kernel/process/index.js +8 -0
- package/dist/src/kernel/process/listing.js +128 -0
- package/dist/src/kernel/process/spawn.js +430 -0
- package/dist/src/kernel/process/tree.js +301 -0
- package/dist/src/kernel/schema.js +308 -0
- package/dist/src/kernel/signals.js +171 -0
- package/dist/src/kernel/text.js +151 -0
- package/dist/src/kernel/time.js +83 -0
- package/dist/src/kernel/tty.js +84 -0
- package/dist/src/lint/cache.js +77 -0
- package/dist/src/lint/checkjs.js +400 -0
- package/dist/src/lint/index.js +3 -0
- package/dist/src/lint/input.js +100 -0
- package/dist/src/lint/report.js +107 -0
- package/dist/src/lint/rule.js +41 -0
- package/dist/src/lint/rules/css.js +308 -0
- package/dist/src/lint/rules/javascript.js +299 -0
- package/dist/src/lint/rules/jsdoc.js +249 -0
- package/dist/src/lint/rules/license.js +93 -0
- package/dist/src/lint/rules/policy.js +201 -0
- package/dist/src/lint/rules/registration.js +264 -0
- package/dist/src/lint/rules/size.js +299 -0
- package/dist/src/lint/run.js +126 -0
- package/dist/src/lint/shim.js +323 -0
- package/dist/src/lint/typescript.js +186 -0
- package/dist/src/lint/waivers.js +93 -0
- package/dist/src/mode/changes.js +264 -0
- package/dist/src/mode/diagnose.js +173 -0
- package/dist/src/mode/export.js +147 -0
- package/dist/src/mode/index.js +23 -0
- package/dist/src/mode/migrate.js +181 -0
- package/dist/src/mode/previousWaivers.js +206 -0
- package/dist/src/mode/pristine.js +61 -0
- package/dist/src/mode/rebase.js +197 -0
- package/dist/src/mode/report.js +157 -0
- package/dist/src/mode/setup.js +103 -0
- package/dist/src/mode/tracked.js +116 -0
- package/dist/src/mode/upgrade.js +281 -0
- package/dist/src/mode/watch.js +83 -0
- package/dist/src/mode/workspace.js +189 -0
- package/dist/src/mozbuild/index.js +6 -0
- package/dist/src/mozbuild/jar.js +366 -0
- package/dist/src/mozbuild/mozbuild.js +321 -0
- package/dist/src/mozbuild/paths.js +96 -0
- package/dist/src/mozbuild/references.js +39 -0
- package/dist/src/mozbuild/testManifest.js +343 -0
- package/dist/src/mozbuild/text.js +142 -0
- package/dist/src/project/changes.js +145 -0
- package/dist/src/project/checkout.js +66 -0
- package/dist/src/project/index.js +11 -0
- package/dist/src/project/license.js +119 -0
- package/dist/src/project/project.js +111 -0
- package/dist/src/project/state.js +85 -0
- package/dist/src/project/tracked.js +1 -0
- package/dist/src/queue/apply.js +270 -0
- package/dist/src/queue/attribute.js +159 -0
- package/dist/src/queue/baseline.js +409 -0
- package/dist/src/queue/capture.js +298 -0
- package/dist/src/queue/changes.js +234 -0
- package/dist/src/queue/index.js +50 -0
- package/dist/src/queue/manifest.js +341 -0
- package/dist/src/queue/operations.js +454 -0
- package/dist/src/queue/placement.js +220 -0
- package/dist/src/queue/queue.js +359 -0
- package/dist/src/queue/restore.js +103 -0
- package/dist/src/queue/session.js +685 -0
- package/dist/src/queue/status.js +137 -0
- package/dist/src/register/files.js +39 -0
- package/dist/src/register/index.js +8 -0
- package/dist/src/register/js.js +217 -0
- package/dist/src/register/register.js +359 -0
- package/dist/src/register/wire.js +146 -0
- package/dist/src/source/adopt.js +99 -0
- package/dist/src/source/changes.js +132 -0
- package/dist/src/source/edit.js +278 -0
- package/dist/src/source/export.js +70 -0
- package/dist/src/source/groups.js +131 -0
- package/dist/src/source/index.js +20 -0
- package/dist/src/source/materialize.js +382 -0
- package/dist/src/source/merge.js +255 -0
- package/dist/src/source/objects.js +102 -0
- package/dist/src/source/previous.js +166 -0
- package/dist/src/source/records.js +138 -0
- package/dist/src/source/refresh.js +264 -0
- package/dist/src/source/tree.js +337 -0
- package/dist/src/syntax/css.js +215 -0
- package/dist/src/syntax/fragments.js +63 -0
- package/dist/src/syntax/index.js +10 -0
- package/dist/src/syntax/js.js +270 -0
- package/dist/src/test/classify.js +826 -0
- package/dist/src/test/control.js +236 -0
- package/dist/src/test/host.js +266 -0
- package/dist/src/test/index.js +11 -0
- package/dist/src/test/plan.js +347 -0
- package/dist/src/test/rawLog.js +138 -0
- package/dist/src/test/run.js +404 -0
- package/dist/src/test/verdict.js +420 -0
- package/dist/src/test/xpcshell.js +143 -0
- package/dist/src/tokens/add.js +304 -0
- package/dist/src/tokens/coverage.js +65 -0
- package/dist/src/tokens/css.js +58 -0
- package/dist/src/tokens/index.js +12 -0
- package/dist/src/tokens/lint.js +96 -0
- package/dist/src/tokens/model.js +118 -0
- package/dist/src/tokens/settings.js +87 -0
- package/dist/src/tokens/siblings.js +104 -0
- package/dist/src/typecheck/explain.js +123 -0
- package/dist/src/typecheck/index.js +8 -0
- package/dist/src/typecheck/typecheck.js +332 -0
- package/docs/README.md +23 -28
- package/docs/authoring.md +97 -0
- package/docs/configuration.md +307 -692
- package/docs/exit-codes.md +76 -94
- package/docs/furnace.md +113 -181
- package/docs/gate.md +205 -0
- package/docs/getting-started.md +165 -0
- package/docs/machine-output.md +201 -277
- package/docs/migrating.md +261 -0
- package/docs/patch-workflow.md +163 -653
- package/docs/quality.md +220 -0
- package/docs/source-workflow.md +228 -0
- package/docs/testing.md +101 -712
- package/docs/workspaces.md +187 -0
- package/package.json +22 -30
- package/templates/configs/common.mozconfig +8 -2
- package/templates/configs/darwin.mozconfig +6 -7
- package/templates/configs/linux.mozconfig +5 -8
- package/templates/configs/win32.mozconfig +3 -9
- package/dist/bin/fireforge.d.ts +0 -9
- package/dist/src/cli-usage-error.d.ts +0 -46
- package/dist/src/cli-usage-error.js +0 -81
- package/dist/src/cli.d.ts +0 -41
- package/dist/src/cli.js +0 -380
- package/dist/src/commands/bootstrap-checks.d.ts +0 -16
- package/dist/src/commands/bootstrap-checks.js +0 -66
- package/dist/src/commands/bootstrap.d.ts +0 -10
- package/dist/src/commands/build-prelock.d.ts +0 -20
- package/dist/src/commands/build-prelock.js +0 -50
- package/dist/src/commands/build.d.ts +0 -13
- package/dist/src/commands/check-report.d.ts +0 -41
- package/dist/src/commands/check-report.js +0 -91
- package/dist/src/commands/check-run.d.ts +0 -33
- package/dist/src/commands/check-run.js +0 -112
- package/dist/src/commands/check-steps.d.ts +0 -75
- package/dist/src/commands/check-steps.js +0 -200
- package/dist/src/commands/check.d.ts +0 -32
- package/dist/src/commands/config.d.ts +0 -13
- package/dist/src/commands/declarations-report.d.ts +0 -49
- package/dist/src/commands/declarations-report.js +0 -83
- package/dist/src/commands/destructive-decision.d.ts +0 -19
- package/dist/src/commands/destructive-decision.js +0 -31
- package/dist/src/commands/discard.d.ts +0 -12
- package/dist/src/commands/doctor-check-core.d.ts +0 -110
- package/dist/src/commands/doctor-check-core.js +0 -24
- package/dist/src/commands/doctor-engine-eslint.d.ts +0 -3
- package/dist/src/commands/doctor-engine-eslint.js +0 -17
- package/dist/src/commands/doctor-external-toolchains.d.ts +0 -3
- package/dist/src/commands/doctor-external-toolchains.js +0 -56
- package/dist/src/commands/doctor-furnace-config-sync.d.ts +0 -18
- package/dist/src/commands/doctor-furnace-config-sync.js +0 -295
- package/dist/src/commands/doctor-furnace-jar.d.ts +0 -14
- package/dist/src/commands/doctor-furnace-jar.js +0 -44
- package/dist/src/commands/doctor-furnace.d.ts +0 -8
- package/dist/src/commands/doctor-furnace.js +0 -514
- package/dist/src/commands/doctor-macos-sdk.d.ts +0 -8
- package/dist/src/commands/doctor-macos-sdk.js +0 -158
- package/dist/src/commands/doctor-orphaned-harness.d.ts +0 -41
- package/dist/src/commands/doctor-orphaned-harness.js +0 -98
- package/dist/src/commands/doctor-patch-manifest.d.ts +0 -9
- package/dist/src/commands/doctor-patch-manifest.js +0 -156
- package/dist/src/commands/doctor-post-rebase-audit.d.ts +0 -2
- package/dist/src/commands/doctor-post-rebase-audit.js +0 -108
- package/dist/src/commands/doctor-source-pin.d.ts +0 -29
- package/dist/src/commands/doctor-source-pin.js +0 -91
- package/dist/src/commands/doctor-working-tree.d.ts +0 -27
- package/dist/src/commands/doctor-working-tree.js +0 -89
- package/dist/src/commands/doctor.d.ts +0 -49
- package/dist/src/commands/download.d.ts +0 -11
- package/dist/src/commands/export-adopt-check.d.ts +0 -37
- package/dist/src/commands/export-adopt-check.js +0 -97
- package/dist/src/commands/export-all.d.ts +0 -11
- package/dist/src/commands/export-all.js +0 -361
- package/dist/src/commands/export-flow.d.ts +0 -124
- package/dist/src/commands/export-flow.js +0 -423
- package/dist/src/commands/export-placement-conflicts.d.ts +0 -17
- package/dist/src/commands/export-placement-conflicts.js +0 -75
- package/dist/src/commands/export-placement-gate.d.ts +0 -42
- package/dist/src/commands/export-placement-gate.js +0 -107
- package/dist/src/commands/export-placement-policy.d.ts +0 -22
- package/dist/src/commands/export-placement-policy.js +0 -54
- package/dist/src/commands/export-shared.d.ts +0 -152
- package/dist/src/commands/export-shared.js +0 -396
- package/dist/src/commands/export-staged-registration.d.ts +0 -46
- package/dist/src/commands/export-staged-registration.js +0 -91
- package/dist/src/commands/export.d.ts +0 -13
- package/dist/src/commands/forward-import-remedy.d.ts +0 -31
- package/dist/src/commands/forward-import-remedy.js +0 -62
- package/dist/src/commands/furnace/apply.d.ts +0 -8
- package/dist/src/commands/furnace/apply.js +0 -327
- package/dist/src/commands/furnace/authoring-config.d.ts +0 -13
- package/dist/src/commands/furnace/authoring-config.js +0 -19
- package/dist/src/commands/furnace/chrome-doc-remove.d.ts +0 -14
- package/dist/src/commands/furnace/chrome-doc-remove.js +0 -148
- package/dist/src/commands/furnace/chrome-doc-templates.d.ts +0 -152
- package/dist/src/commands/furnace/chrome-doc-templates.js +0 -331
- package/dist/src/commands/furnace/chrome-doc-tests.d.ts +0 -23
- package/dist/src/commands/furnace/chrome-doc-tests.js +0 -148
- package/dist/src/commands/furnace/chrome-doc.d.ts +0 -87
- package/dist/src/commands/furnace/chrome-doc.js +0 -365
- package/dist/src/commands/furnace/create-browser-test.d.ts +0 -44
- package/dist/src/commands/furnace/create-browser-test.js +0 -179
- package/dist/src/commands/furnace/create-dry-run.d.ts +0 -49
- package/dist/src/commands/furnace/create-dry-run.js +0 -107
- package/dist/src/commands/furnace/create-features.d.ts +0 -24
- package/dist/src/commands/furnace/create-features.js +0 -55
- package/dist/src/commands/furnace/create-mochikit.d.ts +0 -29
- package/dist/src/commands/furnace/create-mochikit.js +0 -75
- package/dist/src/commands/furnace/create-readback.d.ts +0 -22
- package/dist/src/commands/furnace/create-readback.js +0 -32
- package/dist/src/commands/furnace/create-templates.d.ts +0 -119
- package/dist/src/commands/furnace/create-templates.js +0 -283
- package/dist/src/commands/furnace/create-validation.d.ts +0 -6
- package/dist/src/commands/furnace/create-validation.js +0 -59
- package/dist/src/commands/furnace/create-xpcshell.d.ts +0 -27
- package/dist/src/commands/furnace/create-xpcshell.js +0 -80
- package/dist/src/commands/furnace/create.d.ts +0 -24
- package/dist/src/commands/furnace/create.js +0 -407
- package/dist/src/commands/furnace/deploy-fragment-includers.d.ts +0 -59
- package/dist/src/commands/furnace/deploy-fragment-includers.js +0 -120
- package/dist/src/commands/furnace/deploy-named.d.ts +0 -48
- package/dist/src/commands/furnace/deploy-named.js +0 -107
- package/dist/src/commands/furnace/deploy.d.ts +0 -9
- package/dist/src/commands/furnace/deploy.js +0 -218
- package/dist/src/commands/furnace/diff.d.ts +0 -11
- package/dist/src/commands/furnace/diff.js +0 -238
- package/dist/src/commands/furnace/index.d.ts +0 -4
- package/dist/src/commands/furnace/index.js +0 -282
- package/dist/src/commands/furnace/init.d.ts +0 -11
- package/dist/src/commands/furnace/init.js +0 -287
- package/dist/src/commands/furnace/list.d.ts +0 -8
- package/dist/src/commands/furnace/list.js +0 -104
- package/dist/src/commands/furnace/override.d.ts +0 -16
- package/dist/src/commands/furnace/override.js +0 -454
- package/dist/src/commands/furnace/preview.d.ts +0 -19
- package/dist/src/commands/furnace/preview.js +0 -349
- package/dist/src/commands/furnace/refresh.d.ts +0 -10
- package/dist/src/commands/furnace/refresh.js +0 -303
- package/dist/src/commands/furnace/remove-mutations.d.ts +0 -36
- package/dist/src/commands/furnace/remove-mutations.js +0 -168
- package/dist/src/commands/furnace/remove-state.d.ts +0 -20
- package/dist/src/commands/furnace/remove-state.js +0 -60
- package/dist/src/commands/furnace/remove.d.ts +0 -8
- package/dist/src/commands/furnace/remove.js +0 -415
- package/dist/src/commands/furnace/rename-browser-test.d.ts +0 -2
- package/dist/src/commands/furnace/rename-browser-test.js +0 -68
- package/dist/src/commands/furnace/rename-dry-run.d.ts +0 -29
- package/dist/src/commands/furnace/rename-dry-run.js +0 -127
- package/dist/src/commands/furnace/rename-helpers.d.ts +0 -26
- package/dist/src/commands/furnace/rename-helpers.js +0 -85
- package/dist/src/commands/furnace/rename-registrations.d.ts +0 -41
- package/dist/src/commands/furnace/rename-registrations.js +0 -98
- package/dist/src/commands/furnace/rename-xpcshell.d.ts +0 -32
- package/dist/src/commands/furnace/rename-xpcshell.js +0 -95
- package/dist/src/commands/furnace/rename.d.ts +0 -6
- package/dist/src/commands/furnace/rename.js +0 -400
- package/dist/src/commands/furnace/scan.d.ts +0 -14
- package/dist/src/commands/furnace/scan.js +0 -192
- package/dist/src/commands/furnace/status.d.ts +0 -7
- package/dist/src/commands/furnace/status.js +0 -209
- package/dist/src/commands/furnace/sync.d.ts +0 -12
- package/dist/src/commands/furnace/sync.js +0 -145
- package/dist/src/commands/furnace/test-file-name.d.ts +0 -28
- package/dist/src/commands/furnace/test-file-name.js +0 -39
- package/dist/src/commands/furnace/validate-report.d.ts +0 -45
- package/dist/src/commands/furnace/validate-report.js +0 -91
- package/dist/src/commands/furnace/validate.d.ts +0 -8
- package/dist/src/commands/furnace/validate.js +0 -309
- package/dist/src/commands/furnace/validation-output.d.ts +0 -47
- package/dist/src/commands/furnace/validation-output.js +0 -161
- package/dist/src/commands/import.d.ts +0 -11
- package/dist/src/commands/lint-per-patch.d.ts +0 -10
- package/dist/src/commands/lint-per-patch.js +0 -428
- package/dist/src/commands/lint-per-run-checkjs.d.ts +0 -66
- package/dist/src/commands/lint-per-run-checkjs.js +0 -102
- package/dist/src/commands/lint-report.d.ts +0 -25
- package/dist/src/commands/lint-report.js +0 -76
- package/dist/src/commands/lint.d.ts +0 -47
- package/dist/src/commands/manifest.d.ts +0 -38
- package/dist/src/commands/manifest.js +0 -68
- package/dist/src/commands/package.d.ts +0 -11
- package/dist/src/commands/park.d.ts +0 -22
- package/dist/src/commands/park.js +0 -232
- package/dist/src/commands/patch/compact.d.ts +0 -28
- package/dist/src/commands/patch/compact.js +0 -208
- package/dist/src/commands/patch/delete-gap-notice.d.ts +0 -24
- package/dist/src/commands/patch/delete-gap-notice.js +0 -48
- package/dist/src/commands/patch/delete.d.ts +0 -28
- package/dist/src/commands/patch/delete.js +0 -131
- package/dist/src/commands/patch/entry-projection.d.ts +0 -13
- package/dist/src/commands/patch/entry-projection.js +0 -24
- package/dist/src/commands/patch/index.d.ts +0 -16
- package/dist/src/commands/patch/index.js +0 -52
- package/dist/src/commands/patch/lint-ignore-from.d.ts +0 -43
- package/dist/src/commands/patch/lint-ignore-from.js +0 -141
- package/dist/src/commands/patch/lint-ignore.d.ts +0 -42
- package/dist/src/commands/patch/lint-ignore.js +0 -261
- package/dist/src/commands/patch/move-files-adopt.d.ts +0 -33
- package/dist/src/commands/patch/move-files-adopt.js +0 -65
- package/dist/src/commands/patch/move-files-create.d.ts +0 -19
- package/dist/src/commands/patch/move-files-create.js +0 -187
- package/dist/src/commands/patch/move-files-into.d.ts +0 -65
- package/dist/src/commands/patch/move-files-into.js +0 -325
- package/dist/src/commands/patch/move-files-retire.d.ts +0 -39
- package/dist/src/commands/patch/move-files-retire.js +0 -91
- package/dist/src/commands/patch/move-files.d.ts +0 -28
- package/dist/src/commands/patch/move-files.js +0 -224
- package/dist/src/commands/patch/move-size-tier.d.ts +0 -27
- package/dist/src/commands/patch/move-size-tier.js +0 -66
- package/dist/src/commands/patch/patch-context.d.ts +0 -40
- package/dist/src/commands/patch/patch-context.js +0 -51
- package/dist/src/commands/patch/removal-created-files.d.ts +0 -48
- package/dist/src/commands/patch/removal-created-files.js +0 -83
- package/dist/src/commands/patch/removal-dependents.d.ts +0 -63
- package/dist/src/commands/patch/removal-dependents.js +0 -133
- package/dist/src/commands/patch/rename.d.ts +0 -35
- package/dist/src/commands/patch/rename.js +0 -378
- package/dist/src/commands/patch/reorder-projection.d.ts +0 -17
- package/dist/src/commands/patch/reorder-projection.js +0 -49
- package/dist/src/commands/patch/reorder-shift.d.ts +0 -30
- package/dist/src/commands/patch/reorder-shift.js +0 -307
- package/dist/src/commands/patch/reorder.d.ts +0 -34
- package/dist/src/commands/patch/reorder.js +0 -375
- package/dist/src/commands/patch/reserve.d.ts +0 -33
- package/dist/src/commands/patch/reserve.js +0 -152
- package/dist/src/commands/patch/retire.d.ts +0 -34
- package/dist/src/commands/patch/retire.js +0 -133
- package/dist/src/commands/patch/split-plan.d.ts +0 -125
- package/dist/src/commands/patch/split-plan.js +0 -313
- package/dist/src/commands/patch/split-staged.d.ts +0 -108
- package/dist/src/commands/patch/split-staged.js +0 -202
- package/dist/src/commands/patch/split.d.ts +0 -43
- package/dist/src/commands/patch/split.js +0 -367
- package/dist/src/commands/patch/stage.d.ts +0 -34
- package/dist/src/commands/patch/stage.js +0 -153
- package/dist/src/commands/patch/staged-dependency-batch.d.ts +0 -48
- package/dist/src/commands/patch/staged-dependency-batch.js +0 -176
- package/dist/src/commands/patch/staged-dependency-entries.d.ts +0 -44
- package/dist/src/commands/patch/staged-dependency-entries.js +0 -80
- package/dist/src/commands/patch/staged-dependency-from.d.ts +0 -14
- package/dist/src/commands/patch/staged-dependency-from.js +0 -114
- package/dist/src/commands/patch/staged-dependency-remove.d.ts +0 -53
- package/dist/src/commands/patch/staged-dependency-remove.js +0 -117
- package/dist/src/commands/patch/staged-dependency-validate.d.ts +0 -15
- package/dist/src/commands/patch/staged-dependency-validate.js +0 -49
- package/dist/src/commands/patch/staged-dependency.d.ts +0 -22
- package/dist/src/commands/patch/staged-dependency.js +0 -248
- package/dist/src/commands/patch/tier.d.ts +0 -34
- package/dist/src/commands/patch/tier.js +0 -125
- package/dist/src/commands/patch-rename-map.d.ts +0 -30
- package/dist/src/commands/patch-rename-map.js +0 -54
- package/dist/src/commands/pending-resolution.d.ts +0 -15
- package/dist/src/commands/pending-resolution.js +0 -25
- package/dist/src/commands/re-export-adjacent-registrations.d.ts +0 -20
- package/dist/src/commands/re-export-adjacent-registrations.js +0 -75
- package/dist/src/commands/re-export-adjacent.d.ts +0 -111
- package/dist/src/commands/re-export-adjacent.js +0 -267
- package/dist/src/commands/re-export-bulk-scan.d.ts +0 -19
- package/dist/src/commands/re-export-bulk-scan.js +0 -233
- package/dist/src/commands/re-export-drift.d.ts +0 -110
- package/dist/src/commands/re-export-drift.js +0 -358
- package/dist/src/commands/re-export-files.d.ts +0 -15
- package/dist/src/commands/re-export-files.js +0 -307
- package/dist/src/commands/re-export-hunks.d.ts +0 -35
- package/dist/src/commands/re-export-hunks.js +0 -220
- package/dist/src/commands/re-export-lint.d.ts +0 -137
- package/dist/src/commands/re-export-lint.js +0 -303
- package/dist/src/commands/re-export-options.d.ts +0 -29
- package/dist/src/commands/re-export-options.js +0 -191
- package/dist/src/commands/re-export-preflight.d.ts +0 -23
- package/dist/src/commands/re-export-preflight.js +0 -159
- package/dist/src/commands/re-export-purity-scope.d.ts +0 -18
- package/dist/src/commands/re-export-purity-scope.js +0 -137
- package/dist/src/commands/re-export-register.d.ts +0 -12
- package/dist/src/commands/re-export-register.js +0 -99
- package/dist/src/commands/re-export-removed.d.ts +0 -15
- package/dist/src/commands/re-export-removed.js +0 -94
- package/dist/src/commands/re-export-retired-declarations.d.ts +0 -22
- package/dist/src/commands/re-export-retired-declarations.js +0 -113
- package/dist/src/commands/re-export-scan-owner.d.ts +0 -44
- package/dist/src/commands/re-export-scan-owner.js +0 -116
- package/dist/src/commands/re-export-scan.d.ts +0 -72
- package/dist/src/commands/re-export-scan.js +0 -265
- package/dist/src/commands/re-export-single.d.ts +0 -39
- package/dist/src/commands/re-export-single.js +0 -388
- package/dist/src/commands/re-export-stale-registrations.d.ts +0 -39
- package/dist/src/commands/re-export-stale-registrations.js +0 -106
- package/dist/src/commands/re-export-summary.d.ts +0 -28
- package/dist/src/commands/re-export-summary.js +0 -36
- package/dist/src/commands/re-export.d.ts +0 -8
- package/dist/src/commands/rebase/abort.d.ts +0 -7
- package/dist/src/commands/rebase/abort.js +0 -67
- package/dist/src/commands/rebase/confirm.d.ts +0 -42
- package/dist/src/commands/rebase/confirm.js +0 -36
- package/dist/src/commands/rebase/conflict-summary.d.ts +0 -12
- package/dist/src/commands/rebase/conflict-summary.js +0 -37
- package/dist/src/commands/rebase/continue.d.ts +0 -7
- package/dist/src/commands/rebase/continue.js +0 -119
- package/dist/src/commands/rebase/index.d.ts +0 -22
- package/dist/src/commands/rebase/index.js +0 -209
- package/dist/src/commands/rebase/patch-loop.d.ts +0 -15
- package/dist/src/commands/rebase/patch-loop.js +0 -289
- package/dist/src/commands/rebase/summary.d.ts +0 -8
- package/dist/src/commands/rebase/summary.js +0 -47
- package/dist/src/commands/register.d.ts +0 -13
- package/dist/src/commands/reset.d.ts +0 -11
- package/dist/src/commands/resolve.d.ts +0 -36
- package/dist/src/commands/run.d.ts +0 -10
- package/dist/src/commands/setup-support.d.ts +0 -35
- package/dist/src/commands/setup-support.js +0 -386
- package/dist/src/commands/setup.d.ts +0 -11
- package/dist/src/commands/source.d.ts +0 -9
- package/dist/src/commands/source.js +0 -120
- package/dist/src/commands/status-check.d.ts +0 -87
- package/dist/src/commands/status-check.js +0 -161
- package/dist/src/commands/status-json.d.ts +0 -45
- package/dist/src/commands/status-json.js +0 -97
- package/dist/src/commands/status-output.d.ts +0 -23
- package/dist/src/commands/status-output.js +0 -231
- package/dist/src/commands/status-ownership.d.ts +0 -54
- package/dist/src/commands/status-ownership.js +0 -59
- package/dist/src/commands/status-scope.d.ts +0 -37
- package/dist/src/commands/status-scope.js +0 -54
- package/dist/src/commands/status.d.ts +0 -11
- package/dist/src/commands/test-appdir.d.ts +0 -6
- package/dist/src/commands/test-appdir.js +0 -29
- package/dist/src/commands/test-browser-preflight.d.ts +0 -28
- package/dist/src/commands/test-browser-preflight.js +0 -197
- package/dist/src/commands/test-build-furnace.d.ts +0 -21
- package/dist/src/commands/test-build-furnace.js +0 -53
- package/dist/src/commands/test-build-phase.d.ts +0 -29
- package/dist/src/commands/test-build-phase.js +0 -290
- package/dist/src/commands/test-checkjs.d.ts +0 -3
- package/dist/src/commands/test-checkjs.js +0 -35
- package/dist/src/commands/test-control-restore.d.ts +0 -40
- package/dist/src/commands/test-control-restore.js +0 -86
- package/dist/src/commands/test-diagnose.d.ts +0 -23
- package/dist/src/commands/test-diagnose.js +0 -317
- package/dist/src/commands/test-dispatch.d.ts +0 -39
- package/dist/src/commands/test-dispatch.js +0 -281
- package/dist/src/commands/test-furnace-reach.d.ts +0 -37
- package/dist/src/commands/test-furnace-reach.js +0 -132
- package/dist/src/commands/test-harness-env.d.ts +0 -23
- package/dist/src/commands/test-harness-env.js +0 -81
- package/dist/src/commands/test-harness-teardown.d.ts +0 -62
- package/dist/src/commands/test-harness-teardown.js +0 -128
- package/dist/src/commands/test-modes.d.ts +0 -57
- package/dist/src/commands/test-modes.js +0 -158
- package/dist/src/commands/test-multi-verdict.d.ts +0 -61
- package/dist/src/commands/test-multi-verdict.js +0 -112
- package/dist/src/commands/test-orchestrate.d.ts +0 -63
- package/dist/src/commands/test-orchestrate.js +0 -274
- package/dist/src/commands/test-perf-scope.d.ts +0 -50
- package/dist/src/commands/test-perf-scope.js +0 -138
- package/dist/src/commands/test-prelock.d.ts +0 -61
- package/dist/src/commands/test-prelock.js +0 -301
- package/dist/src/commands/test-register.d.ts +0 -4
- package/dist/src/commands/test-register.js +0 -181
- package/dist/src/commands/test-results.d.ts +0 -71
- package/dist/src/commands/test-results.js +0 -79
- package/dist/src/commands/test-run.d.ts +0 -89
- package/dist/src/commands/test-run.js +0 -251
- package/dist/src/commands/test-shards.d.ts +0 -114
- package/dist/src/commands/test-shards.js +0 -272
- package/dist/src/commands/test-stale-gate.d.ts +0 -52
- package/dist/src/commands/test-stale-gate.js +0 -165
- package/dist/src/commands/test-verdict.d.ts +0 -92
- package/dist/src/commands/test-verdict.js +0 -162
- package/dist/src/commands/test.d.ts +0 -22
- package/dist/src/commands/token-coverage.d.ts +0 -5
- package/dist/src/commands/token-coverage.js +0 -170
- package/dist/src/commands/token-lint.d.ts +0 -14
- package/dist/src/commands/token-lint.js +0 -151
- package/dist/src/commands/token-list.d.ts +0 -26
- package/dist/src/commands/token-list.js +0 -153
- package/dist/src/commands/token.d.ts +0 -14
- package/dist/src/commands/tree.d.ts +0 -19
- package/dist/src/commands/tree.js +0 -341
- package/dist/src/commands/typecheck.d.ts +0 -56
- package/dist/src/commands/verify-scope.d.ts +0 -28
- package/dist/src/commands/verify-scope.js +0 -67
- package/dist/src/commands/verify.d.ts +0 -58
- package/dist/src/commands/watch.d.ts +0 -9
- package/dist/src/commands/wire.d.ts +0 -13
- package/dist/src/core/ast-utils.d.ts +0 -73
- package/dist/src/core/ast-utils.js +0 -105
- package/dist/src/core/brand-validation.d.ts +0 -7
- package/dist/src/core/brand-validation.js +0 -14
- package/dist/src/core/branding.d.ts +0 -86
- package/dist/src/core/branding.js +0 -371
- package/dist/src/core/browser-wire.d.ts +0 -48
- package/dist/src/core/browser-wire.js +0 -133
- package/dist/src/core/build-audit-platform.d.ts +0 -67
- package/dist/src/core/build-audit-platform.js +0 -373
- package/dist/src/core/build-audit-registration.d.ts +0 -80
- package/dist/src/core/build-audit-registration.js +0 -181
- package/dist/src/core/build-audit-resolve.d.ts +0 -78
- package/dist/src/core/build-audit-resolve.js +0 -240
- package/dist/src/core/build-audit-skip.d.ts +0 -57
- package/dist/src/core/build-audit-skip.js +0 -112
- package/dist/src/core/build-audit-transforms.d.ts +0 -23
- package/dist/src/core/build-audit-transforms.js +0 -92
- package/dist/src/core/build-audit.d.ts +0 -93
- package/dist/src/core/build-audit.js +0 -633
- package/dist/src/core/build-baseline-types.d.ts +0 -225
- package/dist/src/core/build-baseline-types.js +0 -10
- package/dist/src/core/build-baseline-validate.d.ts +0 -32
- package/dist/src/core/build-baseline-validate.js +0 -173
- package/dist/src/core/build-baseline.d.ts +0 -103
- package/dist/src/core/build-baseline.js +0 -261
- package/dist/src/core/build-jar-escalation.d.ts +0 -61
- package/dist/src/core/build-jar-escalation.js +0 -125
- package/dist/src/core/build-overwrite-guard.d.ts +0 -92
- package/dist/src/core/build-overwrite-guard.js +0 -235
- package/dist/src/core/build-prepare.d.ts +0 -83
- package/dist/src/core/build-prepare.js +0 -414
- package/dist/src/core/build-run-record.d.ts +0 -74
- package/dist/src/core/build-run-record.js +0 -136
- package/dist/src/core/checkjs-support-heads.d.ts +0 -41
- package/dist/src/core/checkjs-support-heads.js +0 -104
- package/dist/src/core/component-source-guard.d.ts +0 -20
- package/dist/src/core/component-source-guard.js +0 -68
- package/dist/src/core/config-mutate.d.ts +0 -16
- package/dist/src/core/config-mutate.js +0 -76
- package/dist/src/core/config-paths.d.ts +0 -16
- package/dist/src/core/config-paths.js +0 -106
- package/dist/src/core/config-state.d.ts +0 -16
- package/dist/src/core/config-state.js +0 -141
- package/dist/src/core/config-validate-build-audit.d.ts +0 -8
- package/dist/src/core/config-validate-build-audit.js +0 -80
- package/dist/src/core/config-validate-check.d.ts +0 -8
- package/dist/src/core/config-validate-check.js +0 -219
- package/dist/src/core/config-validate-file-size.d.ts +0 -15
- package/dist/src/core/config-validate-file-size.js +0 -154
- package/dist/src/core/config-validate-history.d.ts +0 -11
- package/dist/src/core/config-validate-history.js +0 -38
- package/dist/src/core/config-validate-patch-policy.d.ts +0 -7
- package/dist/src/core/config-validate-patch-policy.js +0 -274
- package/dist/src/core/config-validate-test-toolchains.d.ts +0 -8
- package/dist/src/core/config-validate-test-toolchains.js +0 -133
- package/dist/src/core/config-validate-token-scales.d.ts +0 -9
- package/dist/src/core/config-validate-token-scales.js +0 -92
- package/dist/src/core/config-validate.d.ts +0 -11
- package/dist/src/core/config-validate.js +0 -503
- package/dist/src/core/config.d.ts +0 -92
- package/dist/src/core/config.js +0 -169
- package/dist/src/core/coverage-dispatch.d.ts +0 -24
- package/dist/src/core/coverage-dispatch.js +0 -44
- package/dist/src/core/coverage-extend.d.ts +0 -89
- package/dist/src/core/coverage-extend.js +0 -239
- package/dist/src/core/coverage-records.d.ts +0 -107
- package/dist/src/core/coverage-records.js +0 -383
- package/dist/src/core/destructive.d.ts +0 -144
- package/dist/src/core/destructive.js +0 -182
- package/dist/src/core/diff-hunks.d.ts +0 -73
- package/dist/src/core/diff-hunks.js +0 -286
- package/dist/src/core/discard-baseline.d.ts +0 -60
- package/dist/src/core/discard-baseline.js +0 -247
- package/dist/src/core/display-state.d.ts +0 -50
- package/dist/src/core/display-state.js +0 -87
- package/dist/src/core/engine-changes.d.ts +0 -40
- package/dist/src/core/engine-changes.js +0 -95
- package/dist/src/core/engine-precondition.d.ts +0 -42
- package/dist/src/core/engine-precondition.js +0 -60
- package/dist/src/core/engine-session-lock.d.ts +0 -119
- package/dist/src/core/engine-session-lock.js +0 -374
- package/dist/src/core/engine-write-boundary.d.ts +0 -5
- package/dist/src/core/engine-write-boundary.js +0 -41
- package/dist/src/core/export-moved-code-shape.d.ts +0 -98
- package/dist/src/core/export-moved-code-shape.js +0 -220
- package/dist/src/core/file-lock-owner.d.ts +0 -103
- package/dist/src/core/file-lock-owner.js +0 -259
- package/dist/src/core/file-lock-queue.d.ts +0 -67
- package/dist/src/core/file-lock-queue.js +0 -219
- package/dist/src/core/file-lock-shared.d.ts +0 -57
- package/dist/src/core/file-lock-shared.js +0 -117
- package/dist/src/core/file-lock.d.ts +0 -143
- package/dist/src/core/file-lock.js +0 -531
- package/dist/src/core/firefox-archive.d.ts +0 -45
- package/dist/src/core/firefox-archive.js +0 -96
- package/dist/src/core/firefox-cache.d.ts +0 -30
- package/dist/src/core/firefox-cache.js +0 -248
- package/dist/src/core/firefox-download.d.ts +0 -30
- package/dist/src/core/firefox-download.js +0 -152
- package/dist/src/core/firefox-extract.d.ts +0 -42
- package/dist/src/core/firefox-extract.js +0 -248
- package/dist/src/core/firefox-ignorefile.d.ts +0 -17
- package/dist/src/core/firefox-ignorefile.js +0 -30
- package/dist/src/core/firefox.d.ts +0 -66
- package/dist/src/core/firefox.js +0 -121
- package/dist/src/core/forward-registrations.d.ts +0 -33
- package/dist/src/core/forward-registrations.js +0 -16
- package/dist/src/core/furnace-apply-dry-run.d.ts +0 -12
- package/dist/src/core/furnace-apply-dry-run.js +0 -99
- package/dist/src/core/furnace-apply-ftl.d.ts +0 -49
- package/dist/src/core/furnace-apply-ftl.js +0 -210
- package/dist/src/core/furnace-apply-helpers.d.ts +0 -106
- package/dist/src/core/furnace-apply-helpers.js +0 -436
- package/dist/src/core/furnace-apply-output.d.ts +0 -36
- package/dist/src/core/furnace-apply-output.js +0 -111
- package/dist/src/core/furnace-apply-overwrite-warn.d.ts +0 -62
- package/dist/src/core/furnace-apply-overwrite-warn.js +0 -124
- package/dist/src/core/furnace-apply-undeploy-actions.d.ts +0 -10
- package/dist/src/core/furnace-apply-undeploy-actions.js +0 -48
- package/dist/src/core/furnace-apply.d.ts +0 -49
- package/dist/src/core/furnace-apply.js +0 -465
- package/dist/src/core/furnace-checksum-utils.d.ts +0 -25
- package/dist/src/core/furnace-checksum-utils.js +0 -54
- package/dist/src/core/furnace-composed-source.d.ts +0 -76
- package/dist/src/core/furnace-composed-source.js +0 -167
- package/dist/src/core/furnace-config-array-utils.d.ts +0 -11
- package/dist/src/core/furnace-config-array-utils.js +0 -26
- package/dist/src/core/furnace-config-custom.d.ts +0 -15
- package/dist/src/core/furnace-config-custom.js +0 -73
- package/dist/src/core/furnace-config-order.d.ts +0 -8
- package/dist/src/core/furnace-config-order.js +0 -90
- package/dist/src/core/furnace-config-tokens.d.ts +0 -17
- package/dist/src/core/furnace-config-tokens.js +0 -42
- package/dist/src/core/furnace-config-validate-exceptions.d.ts +0 -17
- package/dist/src/core/furnace-config-validate-exceptions.js +0 -122
- package/dist/src/core/furnace-config-validate.d.ts +0 -32
- package/dist/src/core/furnace-config-validate.js +0 -146
- package/dist/src/core/furnace-config.d.ts +0 -139
- package/dist/src/core/furnace-config.js +0 -511
- package/dist/src/core/furnace-constants.d.ts +0 -79
- package/dist/src/core/furnace-constants.js +0 -123
- package/dist/src/core/furnace-css-fragments.d.ts +0 -96
- package/dist/src/core/furnace-css-fragments.js +0 -279
- package/dist/src/core/furnace-dir-entry.d.ts +0 -20
- package/dist/src/core/furnace-dir-entry.js +0 -21
- package/dist/src/core/furnace-fragment-includers.d.ts +0 -56
- package/dist/src/core/furnace-fragment-includers.js +0 -122
- package/dist/src/core/furnace-graph-utils.d.ts +0 -11
- package/dist/src/core/furnace-graph-utils.js +0 -93
- package/dist/src/core/furnace-jsconfig.d.ts +0 -61
- package/dist/src/core/furnace-jsconfig.js +0 -208
- package/dist/src/core/furnace-marker.d.ts +0 -15
- package/dist/src/core/furnace-marker.js +0 -21
- package/dist/src/core/furnace-operation.d.ts +0 -195
- package/dist/src/core/furnace-operation.js +0 -444
- package/dist/src/core/furnace-precondition.d.ts +0 -61
- package/dist/src/core/furnace-precondition.js +0 -67
- package/dist/src/core/furnace-refresh.d.ts +0 -28
- package/dist/src/core/furnace-refresh.js +0 -125
- package/dist/src/core/furnace-registration-ast.d.ts +0 -53
- package/dist/src/core/furnace-registration-ast.js +0 -402
- package/dist/src/core/furnace-registration-jar-inplace.d.ts +0 -12
- package/dist/src/core/furnace-registration-jar-inplace.js +0 -79
- package/dist/src/core/furnace-registration-remove.d.ts +0 -56
- package/dist/src/core/furnace-registration-remove.js +0 -260
- package/dist/src/core/furnace-registration-rename.d.ts +0 -26
- package/dist/src/core/furnace-registration-rename.js +0 -77
- package/dist/src/core/furnace-registration-validate.d.ts +0 -53
- package/dist/src/core/furnace-registration-validate.js +0 -110
- package/dist/src/core/furnace-registration.d.ts +0 -112
- package/dist/src/core/furnace-registration.js +0 -348
- package/dist/src/core/furnace-rollback.d.ts +0 -48
- package/dist/src/core/furnace-rollback.js +0 -170
- package/dist/src/core/furnace-scanner.d.ts +0 -47
- package/dist/src/core/furnace-scanner.js +0 -236
- package/dist/src/core/furnace-stale-export.d.ts +0 -60
- package/dist/src/core/furnace-stale-export.js +0 -125
- package/dist/src/core/furnace-staleness.d.ts +0 -24
- package/dist/src/core/furnace-staleness.js +0 -67
- package/dist/src/core/furnace-state-persist.d.ts +0 -68
- package/dist/src/core/furnace-state-persist.js +0 -116
- package/dist/src/core/furnace-step-errors.d.ts +0 -23
- package/dist/src/core/furnace-step-errors.js +0 -25
- package/dist/src/core/furnace-stories.d.ts +0 -37
- package/dist/src/core/furnace-stories.js +0 -186
- package/dist/src/core/furnace-validate-accessibility.d.ts +0 -39
- package/dist/src/core/furnace-validate-accessibility.js +0 -417
- package/dist/src/core/furnace-validate-checks.d.ts +0 -4
- package/dist/src/core/furnace-validate-checks.js +0 -6
- package/dist/src/core/furnace-validate-compatibility.d.ts +0 -6
- package/dist/src/core/furnace-validate-compatibility.js +0 -295
- package/dist/src/core/furnace-validate-exceptions.d.ts +0 -49
- package/dist/src/core/furnace-validate-exceptions.js +0 -98
- package/dist/src/core/furnace-validate-helpers.d.ts +0 -7
- package/dist/src/core/furnace-validate-helpers.js +0 -4
- package/dist/src/core/furnace-validate-icon-button.d.ts +0 -7
- package/dist/src/core/furnace-validate-icon-button.js +0 -78
- package/dist/src/core/furnace-validate-registration.d.ts +0 -67
- package/dist/src/core/furnace-validate-registration.js +0 -487
- package/dist/src/core/furnace-validate-structure.d.ts +0 -22
- package/dist/src/core/furnace-validate-structure.js +0 -122
- package/dist/src/core/furnace-validate.d.ts +0 -41
- package/dist/src/core/furnace-validate.js +0 -302
- package/dist/src/core/furnace-version-drift.d.ts +0 -57
- package/dist/src/core/furnace-version-drift.js +0 -102
- package/dist/src/core/gecko-dom-types.d.ts +0 -2
- package/dist/src/core/gecko-dom-types.js +0 -17
- package/dist/src/core/git-base.d.ts +0 -101
- package/dist/src/core/git-base.js +0 -162
- package/dist/src/core/git-diff-new-file.d.ts +0 -40
- package/dist/src/core/git-diff-new-file.js +0 -118
- package/dist/src/core/git-diff.d.ts +0 -82
- package/dist/src/core/git-diff.js +0 -539
- package/dist/src/core/git-file-ops.d.ts +0 -108
- package/dist/src/core/git-file-ops.js +0 -280
- package/dist/src/core/git-readonly-index.d.ts +0 -91
- package/dist/src/core/git-readonly-index.js +0 -177
- package/dist/src/core/git-status.d.ts +0 -84
- package/dist/src/core/git-status.js +0 -208
- package/dist/src/core/git.d.ts +0 -114
- package/dist/src/core/git.js +0 -540
- package/dist/src/core/harness-helper-pids.d.ts +0 -98
- package/dist/src/core/harness-helper-pids.js +0 -240
- package/dist/src/core/harness-orphans.d.ts +0 -118
- package/dist/src/core/harness-orphans.js +0 -268
- package/dist/src/core/harness-port-fallback.d.ts +0 -60
- package/dist/src/core/harness-port-fallback.js +0 -96
- package/dist/src/core/harness-port-reservation.d.ts +0 -60
- package/dist/src/core/harness-port-reservation.js +0 -122
- package/dist/src/core/history-log-file.d.ts +0 -61
- package/dist/src/core/history-log-file.js +0 -164
- package/dist/src/core/history-log.d.ts +0 -20
- package/dist/src/core/history-log.js +0 -30
- package/dist/src/core/json-preserving-edit.d.ts +0 -22
- package/dist/src/core/json-preserving-edit.js +0 -199
- package/dist/src/core/launchable-build.d.ts +0 -39
- package/dist/src/core/launchable-build.js +0 -85
- package/dist/src/core/license-headers.d.ts +0 -103
- package/dist/src/core/license-headers.js +0 -318
- package/dist/src/core/line-prefixer.d.ts +0 -18
- package/dist/src/core/line-prefixer.js +0 -34
- package/dist/src/core/lit-template-regions.d.ts +0 -4
- package/dist/src/core/lit-template-regions.js +0 -50
- package/dist/src/core/mach-build-artifacts.d.ts +0 -176
- package/dist/src/core/mach-build-artifacts.js +0 -436
- package/dist/src/core/mach-error-hints.d.ts +0 -24
- package/dist/src/core/mach-error-hints.js +0 -135
- package/dist/src/core/mach-known-noise-filter.d.ts +0 -122
- package/dist/src/core/mach-known-noise-filter.js +0 -257
- package/dist/src/core/mach-mozconfig.d.ts +0 -57
- package/dist/src/core/mach-mozconfig.js +0 -166
- package/dist/src/core/mach-python.d.ts +0 -19
- package/dist/src/core/mach-python.js +0 -131
- package/dist/src/core/mach-resource-shim.d.ts +0 -107
- package/dist/src/core/mach-resource-shim.js +0 -640
- package/dist/src/core/mach.d.ts +0 -284
- package/dist/src/core/mach.js +0 -445
- package/dist/src/core/marionette-port.d.ts +0 -153
- package/dist/src/core/marionette-port.js +0 -474
- package/dist/src/core/marionette-preflight.d.ts +0 -58
- package/dist/src/core/marionette-preflight.js +0 -332
- package/dist/src/core/markdown-table.d.ts +0 -104
- package/dist/src/core/markdown-table.js +0 -265
- package/dist/src/core/mochitest-server-port.d.ts +0 -81
- package/dist/src/core/mochitest-server-port.js +0 -175
- package/dist/src/core/module-resolution-preflight.d.ts +0 -65
- package/dist/src/core/module-resolution-preflight.js +0 -171
- package/dist/src/core/moz-manifest-helpers.d.ts +0 -79
- package/dist/src/core/moz-manifest-helpers.js +0 -163
- package/dist/src/core/moz-manifest-register.d.ts +0 -19
- package/dist/src/core/moz-manifest-register.js +0 -51
- package/dist/src/core/moz-manifest-rules.d.ts +0 -58
- package/dist/src/core/moz-manifest-rules.js +0 -264
- package/dist/src/core/moz-manifest-tokenizers.d.ts +0 -38
- package/dist/src/core/moz-manifest-tokenizers.js +0 -108
- package/dist/src/core/negative-control-compiled.d.ts +0 -46
- package/dist/src/core/negative-control-compiled.js +0 -109
- package/dist/src/core/negative-control-diff.d.ts +0 -51
- package/dist/src/core/negative-control-diff.js +0 -204
- package/dist/src/core/negative-control.d.ts +0 -150
- package/dist/src/core/negative-control.js +0 -399
- package/dist/src/core/objdir-install-manifests.d.ts +0 -73
- package/dist/src/core/objdir-install-manifests.js +0 -226
- package/dist/src/core/objdir-maintenance.d.ts +0 -10
- package/dist/src/core/objdir-maintenance.js +0 -167
- package/dist/src/core/ownership-table.d.ts +0 -53
- package/dist/src/core/ownership-table.js +0 -159
- package/dist/src/core/parent-exit-watchdog.d.ts +0 -62
- package/dist/src/core/parent-exit-watchdog.js +0 -69
- package/dist/src/core/park-store.d.ts +0 -63
- package/dist/src/core/park-store.js +0 -216
- package/dist/src/core/parser-fallback.d.ts +0 -50
- package/dist/src/core/parser-fallback.js +0 -61
- package/dist/src/core/patch-apply-fuzz.d.ts +0 -57
- package/dist/src/core/patch-apply-fuzz.js +0 -125
- package/dist/src/core/patch-apply.d.ts +0 -88
- package/dist/src/core/patch-apply.js +0 -435
- package/dist/src/core/patch-export-coverage.d.ts +0 -49
- package/dist/src/core/patch-export-coverage.js +0 -73
- package/dist/src/core/patch-export-metadata.d.ts +0 -46
- package/dist/src/core/patch-export-metadata.js +0 -47
- package/dist/src/core/patch-export-update.d.ts +0 -55
- package/dist/src/core/patch-export-update.js +0 -95
- package/dist/src/core/patch-export.d.ts +0 -175
- package/dist/src/core/patch-export.js +0 -312
- package/dist/src/core/patch-files.d.ts +0 -17
- package/dist/src/core/patch-files.js +0 -59
- package/dist/src/core/patch-identifier-suggest.d.ts +0 -26
- package/dist/src/core/patch-identifier-suggest.js +0 -135
- package/dist/src/core/patch-lint-binary.d.ts +0 -45
- package/dist/src/core/patch-lint-binary.js +0 -39
- package/dist/src/core/patch-lint-cache.d.ts +0 -78
- package/dist/src/core/patch-lint-cache.js +0 -233
- package/dist/src/core/patch-lint-checkjs-any-import.d.ts +0 -39
- package/dist/src/core/patch-lint-checkjs-any-import.js +0 -63
- package/dist/src/core/patch-lint-checkjs-cache.d.ts +0 -18
- package/dist/src/core/patch-lint-checkjs-cache.js +0 -45
- package/dist/src/core/patch-lint-checkjs-diagnostics.d.ts +0 -17
- package/dist/src/core/patch-lint-checkjs-diagnostics.js +0 -32
- package/dist/src/core/patch-lint-checkjs.d.ts +0 -180
- package/dist/src/core/patch-lint-checkjs.js +0 -611
- package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +0 -43
- package/dist/src/core/patch-lint-chrome-jsdoc.js +0 -90
- package/dist/src/core/patch-lint-code-lines.d.ts +0 -59
- package/dist/src/core/patch-lint-code-lines.js +0 -105
- package/dist/src/core/patch-lint-creators.d.ts +0 -26
- package/dist/src/core/patch-lint-creators.js +0 -45
- package/dist/src/core/patch-lint-cross.d.ts +0 -232
- package/dist/src/core/patch-lint-cross.js +0 -590
- package/dist/src/core/patch-lint-css.d.ts +0 -27
- package/dist/src/core/patch-lint-css.js +0 -228
- package/dist/src/core/patch-lint-diff-tag.d.ts +0 -51
- package/dist/src/core/patch-lint-diff-tag.js +0 -105
- package/dist/src/core/patch-lint-diff.d.ts +0 -42
- package/dist/src/core/patch-lint-diff.js +0 -100
- package/dist/src/core/patch-lint-file-size.d.ts +0 -57
- package/dist/src/core/patch-lint-file-size.js +0 -62
- package/dist/src/core/patch-lint-forward-registration-extended.d.ts +0 -61
- package/dist/src/core/patch-lint-forward-registration-extended.js +0 -265
- package/dist/src/core/patch-lint-forward-registration.d.ts +0 -71
- package/dist/src/core/patch-lint-forward-registration.js +0 -266
- package/dist/src/core/patch-lint-ignore.d.ts +0 -196
- package/dist/src/core/patch-lint-ignore.js +0 -429
- package/dist/src/core/patch-lint-imports.d.ts +0 -5
- package/dist/src/core/patch-lint-imports.js +0 -67
- package/dist/src/core/patch-lint-jsdoc.d.ts +0 -67
- package/dist/src/core/patch-lint-jsdoc.js +0 -471
- package/dist/src/core/patch-lint-module-registration.d.ts +0 -22
- package/dist/src/core/patch-lint-module-registration.js +0 -97
- package/dist/src/core/patch-lint-mozbuild.d.ts +0 -18
- package/dist/src/core/patch-lint-mozbuild.js +0 -192
- package/dist/src/core/patch-lint-observer.d.ts +0 -37
- package/dist/src/core/patch-lint-observer.js +0 -167
- package/dist/src/core/patch-lint-ownership.d.ts +0 -74
- package/dist/src/core/patch-lint-ownership.js +0 -125
- package/dist/src/core/patch-lint-prettier.d.ts +0 -34
- package/dist/src/core/patch-lint-prettier.js +0 -124
- package/dist/src/core/patch-lint-projection.d.ts +0 -25
- package/dist/src/core/patch-lint-projection.js +0 -43
- package/dist/src/core/patch-lint-queue-types.d.ts +0 -60
- package/dist/src/core/patch-lint-queue-types.js +0 -12
- package/dist/src/core/patch-lint-size-thresholds.d.ts +0 -52
- package/dist/src/core/patch-lint-size-thresholds.js +0 -110
- package/dist/src/core/patch-lint-size.d.ts +0 -117
- package/dist/src/core/patch-lint-size.js +0 -331
- package/dist/src/core/patch-lint-staged-registration.d.ts +0 -78
- package/dist/src/core/patch-lint-staged-registration.js +0 -110
- package/dist/src/core/patch-lint-token-scale.d.ts +0 -57
- package/dist/src/core/patch-lint-token-scale.js +0 -286
- package/dist/src/core/patch-lint-unmanaged-companion.d.ts +0 -106
- package/dist/src/core/patch-lint-unmanaged-companion.js +0 -214
- package/dist/src/core/patch-lint.d.ts +0 -191
- package/dist/src/core/patch-lint.js +0 -529
- package/dist/src/core/patch-lock.d.ts +0 -40
- package/dist/src/core/patch-lock.js +0 -129
- package/dist/src/core/patch-manifest-consistency.d.ts +0 -95
- package/dist/src/core/patch-manifest-consistency.js +0 -256
- package/dist/src/core/patch-manifest-files-affected.d.ts +0 -43
- package/dist/src/core/patch-manifest-files-affected.js +0 -77
- package/dist/src/core/patch-manifest-io.d.ts +0 -199
- package/dist/src/core/patch-manifest-io.js +0 -556
- package/dist/src/core/patch-manifest-key-order.d.ts +0 -23
- package/dist/src/core/patch-manifest-key-order.js +0 -60
- package/dist/src/core/patch-manifest-query.d.ts +0 -55
- package/dist/src/core/patch-manifest-query.js +0 -139
- package/dist/src/core/patch-manifest-resolve.d.ts +0 -21
- package/dist/src/core/patch-manifest-resolve.js +0 -35
- package/dist/src/core/patch-manifest-stage.d.ts +0 -46
- package/dist/src/core/patch-manifest-stage.js +0 -96
- package/dist/src/core/patch-manifest-validate.d.ts +0 -20
- package/dist/src/core/patch-manifest-validate.js +0 -240
- package/dist/src/core/patch-manifest.d.ts +0 -12
- package/dist/src/core/patch-manifest.js +0 -13
- package/dist/src/core/patch-order-legal.d.ts +0 -26
- package/dist/src/core/patch-order-legal.js +0 -88
- package/dist/src/core/patch-parse.d.ts +0 -161
- package/dist/src/core/patch-parse.js +0 -347
- package/dist/src/core/patch-policy-content.d.ts +0 -40
- package/dist/src/core/patch-policy-content.js +0 -216
- package/dist/src/core/patch-policy.d.ts +0 -80
- package/dist/src/core/patch-policy.js +0 -394
- package/dist/src/core/patch-registration-refs.d.ts +0 -41
- package/dist/src/core/patch-registration-refs.js +0 -107
- package/dist/src/core/patch-retired.d.ts +0 -57
- package/dist/src/core/patch-retired.js +0 -92
- package/dist/src/core/patch-source-metadata.d.ts +0 -6
- package/dist/src/core/patch-source-metadata.js +0 -12
- package/dist/src/core/patch-subset.d.ts +0 -18
- package/dist/src/core/patch-subset.js +0 -67
- package/dist/src/core/patch-transform.d.ts +0 -61
- package/dist/src/core/patch-transform.js +0 -198
- package/dist/src/core/preflight-wait.d.ts +0 -22
- package/dist/src/core/preflight-wait.js +0 -62
- package/dist/src/core/process-cpu-time.d.ts +0 -12
- package/dist/src/core/process-cpu-time.js +0 -52
- package/dist/src/core/process-owner.d.ts +0 -9
- package/dist/src/core/process-owner.js +0 -43
- package/dist/src/core/rebase-dry-run.d.ts +0 -48
- package/dist/src/core/rebase-dry-run.js +0 -105
- package/dist/src/core/rebase-from-version.d.ts +0 -46
- package/dist/src/core/rebase-from-version.js +0 -71
- package/dist/src/core/rebase-session.d.ts +0 -100
- package/dist/src/core/rebase-session.js +0 -174
- package/dist/src/core/register-browser-content.d.ts +0 -11
- package/dist/src/core/register-browser-content.js +0 -52
- package/dist/src/core/register-browser-test.d.ts +0 -18
- package/dist/src/core/register-browser-test.js +0 -66
- package/dist/src/core/register-module.d.ts +0 -11
- package/dist/src/core/register-module.js +0 -56
- package/dist/src/core/register-result.d.ts +0 -30
- package/dist/src/core/register-result.js +0 -8
- package/dist/src/core/register-scaffold.d.ts +0 -55
- package/dist/src/core/register-scaffold.js +0 -146
- package/dist/src/core/register-shared-css.d.ts +0 -36
- package/dist/src/core/register-shared-css.js +0 -112
- package/dist/src/core/register-xpcshell-test.d.ts +0 -50
- package/dist/src/core/register-xpcshell-test.js +0 -143
- package/dist/src/core/run-log-redact.d.ts +0 -38
- package/dist/src/core/run-log-redact.js +0 -69
- package/dist/src/core/run-log.d.ts +0 -97
- package/dist/src/core/run-log.js +0 -334
- package/dist/src/core/run-profile.d.ts +0 -57
- package/dist/src/core/run-profile.js +0 -137
- package/dist/src/core/shared-ftl.d.ts +0 -28
- package/dist/src/core/shared-ftl.js +0 -49
- package/dist/src/core/signal-critical.d.ts +0 -38
- package/dist/src/core/signal-critical.js +0 -62
- package/dist/src/core/smoke-patterns.d.ts +0 -81
- package/dist/src/core/smoke-patterns.js +0 -176
- package/dist/src/core/state-file.d.ts +0 -60
- package/dist/src/core/state-file.js +0 -71
- package/dist/src/core/status-binary.d.ts +0 -62
- package/dist/src/core/status-binary.js +0 -133
- package/dist/src/core/status-classify.d.ts +0 -96
- package/dist/src/core/status-classify.js +0 -244
- package/dist/src/core/test-changed-prefs.d.ts +0 -30
- package/dist/src/core/test-changed-prefs.js +0 -93
- package/dist/src/core/test-harness-crash.d.ts +0 -251
- package/dist/src/core/test-harness-crash.js +0 -780
- package/dist/src/core/test-harness-infra.d.ts +0 -32
- package/dist/src/core/test-harness-infra.js +0 -69
- package/dist/src/core/test-harness-output.d.ts +0 -45
- package/dist/src/core/test-harness-output.js +0 -119
- package/dist/src/core/test-harness-signature.d.ts +0 -57
- package/dist/src/core/test-harness-signature.js +0 -35
- package/dist/src/core/test-harness-verdict-notes.d.ts +0 -54
- package/dist/src/core/test-harness-verdict-notes.js +0 -48
- package/dist/src/core/test-host-state.d.ts +0 -14
- package/dist/src/core/test-host-state.js +0 -80
- package/dist/src/core/test-path-scope.d.ts +0 -59
- package/dist/src/core/test-path-scope.js +0 -147
- package/dist/src/core/test-profile-files.d.ts +0 -17
- package/dist/src/core/test-profile-files.js +0 -75
- package/dist/src/core/test-raw-log.d.ts +0 -66
- package/dist/src/core/test-raw-log.js +0 -122
- package/dist/src/core/test-run-completeness.d.ts +0 -97
- package/dist/src/core/test-run-completeness.js +0 -191
- package/dist/src/core/test-stale-check.d.ts +0 -213
- package/dist/src/core/test-stale-check.js +0 -396
- package/dist/src/core/test-stale-exempt.d.ts +0 -40
- package/dist/src/core/test-stale-exempt.js +0 -70
- package/dist/src/core/test-stale-symlink.d.ts +0 -12
- package/dist/src/core/test-stale-symlink.js +0 -39
- package/dist/src/core/test-stall-triage.d.ts +0 -51
- package/dist/src/core/test-stall-triage.js +0 -142
- package/dist/src/core/test-xpcshell-retry.d.ts +0 -35
- package/dist/src/core/test-xpcshell-retry.js +0 -31
- package/dist/src/core/token-category.d.ts +0 -54
- package/dist/src/core/token-category.js +0 -299
- package/dist/src/core/token-coverage.d.ts +0 -12
- package/dist/src/core/token-coverage.js +0 -96
- package/dist/src/core/token-dark-mode.d.ts +0 -64
- package/dist/src/core/token-dark-mode.js +0 -186
- package/dist/src/core/token-docs.d.ts +0 -34
- package/dist/src/core/token-docs.js +0 -102
- package/dist/src/core/token-inventory.d.ts +0 -56
- package/dist/src/core/token-inventory.js +0 -114
- package/dist/src/core/token-lint.d.ts +0 -53
- package/dist/src/core/token-lint.js +0 -131
- package/dist/src/core/token-manager.d.ts +0 -87
- package/dist/src/core/token-manager.js +0 -407
- package/dist/src/core/token-scaffold.d.ts +0 -36
- package/dist/src/core/token-scaffold.js +0 -73
- package/dist/src/core/token-sibling-sheets.d.ts +0 -46
- package/dist/src/core/token-sibling-sheets.js +0 -119
- package/dist/src/core/token-variant.d.ts +0 -90
- package/dist/src/core/token-variant.js +0 -327
- package/dist/src/core/toolchain-preflight.d.ts +0 -90
- package/dist/src/core/toolchain-preflight.js +0 -251
- package/dist/src/core/tree-cow.d.ts +0 -16
- package/dist/src/core/tree-cow.js +0 -71
- package/dist/src/core/tree-guard.d.ts +0 -35
- package/dist/src/core/tree-guard.js +0 -194
- package/dist/src/core/tree-store.d.ts +0 -143
- package/dist/src/core/tree-store.js +0 -478
- package/dist/src/core/typecheck-shim.d.ts +0 -90
- package/dist/src/core/typecheck-shim.js +0 -507
- package/dist/src/core/typecheck.d.ts +0 -75
- package/dist/src/core/typecheck.js +0 -433
- package/dist/src/core/wire-destroy.d.ts +0 -25
- package/dist/src/core/wire-destroy.js +0 -126
- package/dist/src/core/wire-dom-fragment.d.ts +0 -44
- package/dist/src/core/wire-dom-fragment.js +0 -139
- package/dist/src/core/wire-init.d.ts +0 -28
- package/dist/src/core/wire-init.js +0 -219
- package/dist/src/core/wire-subscript.d.ts +0 -23
- package/dist/src/core/wire-subscript.js +0 -145
- package/dist/src/core/wire-utils.d.ts +0 -149
- package/dist/src/core/wire-utils.js +0 -338
- package/dist/src/core/xpcshell-appdir.d.ts +0 -157
- package/dist/src/core/xpcshell-appdir.js +0 -299
- package/dist/src/core/xpcshell-profile-dir.d.ts +0 -12
- package/dist/src/core/xpcshell-profile-dir.js +0 -45
- package/dist/src/errors/base.d.ts +0 -217
- package/dist/src/errors/base.js +0 -279
- package/dist/src/errors/build.d.ts +0 -92
- package/dist/src/errors/build.js +0 -166
- package/dist/src/errors/codes.d.ts +0 -74
- package/dist/src/errors/codes.js +0 -74
- package/dist/src/errors/config.d.ts +0 -17
- package/dist/src/errors/config.js +0 -39
- package/dist/src/errors/download.d.ts +0 -66
- package/dist/src/errors/download.js +0 -160
- package/dist/src/errors/furnace.d.ts +0 -20
- package/dist/src/errors/furnace.js +0 -28
- package/dist/src/errors/git.d.ts +0 -65
- package/dist/src/errors/git.js +0 -140
- package/dist/src/errors/patch.d.ts +0 -27
- package/dist/src/errors/patch.js +0 -52
- package/dist/src/errors/rebase.d.ts +0 -42
- package/dist/src/errors/rebase.js +0 -71
- package/dist/src/errors/run.d.ts +0 -16
- package/dist/src/errors/run.js +0 -22
- package/dist/src/index.d.ts +0 -42
- package/dist/src/index.js +0 -32
- package/dist/src/types/cli.d.ts +0 -14
- package/dist/src/types/commands/index.d.ts +0 -6
- package/dist/src/types/commands/index.js +0 -5
- package/dist/src/types/commands/options.d.ts +0 -1367
- package/dist/src/types/commands/options.js +0 -5
- package/dist/src/types/commands/patches.d.ts +0 -352
- package/dist/src/types/commands/patches.js +0 -5
- package/dist/src/types/commands/project.d.ts +0 -51
- package/dist/src/types/commands/project.js +0 -5
- package/dist/src/types/config.d.ts +0 -703
- package/dist/src/types/config.js +0 -15
- package/dist/src/types/furnace.d.ts +0 -415
- package/dist/src/types/furnace.js +0 -26
- package/dist/src/types/index.d.ts +0 -5
- package/dist/src/types/index.js +0 -5
- package/dist/src/types/json.d.ts +0 -22
- package/dist/src/types/json.js +0 -11
- package/dist/src/types/typecheck.d.ts +0 -51
- package/dist/src/types/typecheck.js +0 -14
- package/dist/src/utils/assert.d.ts +0 -34
- package/dist/src/utils/assert.js +0 -61
- package/dist/src/utils/build-info.d.ts +0 -30
- package/dist/src/utils/build-info.js +0 -99
- package/dist/src/utils/child-env.d.ts +0 -28
- package/dist/src/utils/child-env.js +0 -27
- package/dist/src/utils/concurrency.d.ts +0 -8
- package/dist/src/utils/concurrency.js +0 -32
- package/dist/src/utils/elapsed.d.ts +0 -2
- package/dist/src/utils/elapsed.js +0 -23
- package/dist/src/utils/errors.d.ts +0 -39
- package/dist/src/utils/errors.js +0 -67
- package/dist/src/utils/fs.d.ts +0 -113
- package/dist/src/utils/fs.js +0 -337
- package/dist/src/utils/hash.d.ts +0 -12
- package/dist/src/utils/hash.js +0 -16
- package/dist/src/utils/line-dispatch.d.ts +0 -15
- package/dist/src/utils/line-dispatch.js +0 -48
- package/dist/src/utils/logger.d.ts +0 -109
- package/dist/src/utils/logger.js +0 -270
- package/dist/src/utils/machine-output.d.ts +0 -12
- package/dist/src/utils/machine-output.js +0 -33
- package/dist/src/utils/options.d.ts +0 -155
- package/dist/src/utils/options.js +0 -312
- package/dist/src/utils/package-root.d.ts +0 -21
- package/dist/src/utils/package-root.js +0 -70
- package/dist/src/utils/parse.d.ts +0 -117
- package/dist/src/utils/parse.js +0 -214
- package/dist/src/utils/path-glob.d.ts +0 -15
- package/dist/src/utils/path-glob.js +0 -47
- package/dist/src/utils/paths.d.ts +0 -31
- package/dist/src/utils/paths.js +0 -80
- package/dist/src/utils/platform.d.ts +0 -9
- package/dist/src/utils/platform.js +0 -14
- package/dist/src/utils/process-group.d.ts +0 -42
- package/dist/src/utils/process-group.js +0 -190
- package/dist/src/utils/process-input.d.ts +0 -27
- package/dist/src/utils/process-input.js +0 -46
- package/dist/src/utils/process.d.ts +0 -293
- package/dist/src/utils/process.js +0 -593
- package/dist/src/utils/ps-duration.d.ts +0 -31
- package/dist/src/utils/ps-duration.js +0 -70
- package/dist/src/utils/regex.d.ts +0 -39
- package/dist/src/utils/regex.js +0 -109
- package/dist/src/utils/sleep.d.ts +0 -25
- package/dist/src/utils/sleep.js +0 -30
- package/dist/src/utils/stdio-drain.d.ts +0 -28
- package/dist/src/utils/stdio-drain.js +0 -54
- package/dist/src/utils/validation.d.ts +0 -182
- package/dist/src/utils/validation.js +0 -394
- package/docs/lifecycle-invariants.md +0 -523
- package/docs/run-logs.md +0 -122
- package/docs/verification-trees.md +0 -49
- /package/dist/src/{types/cli.js → cli/context.js} +0 -0
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
import type { FurnacePendingRepairOperation } from '../types/furnace.js';
|
|
2
|
-
import { type RollbackJournal } from './furnace-rollback.js';
|
|
3
|
-
/**
|
|
4
|
-
* The signal names the lifecycle wrapper knows how to react to. Spelled out
|
|
5
|
-
* as a literal union (rather than `NodeJS.Signals`) so the public type
|
|
6
|
-
* surface does not depend on the NodeJS global namespace. Consumers of
|
|
7
|
-
* FireForge's published scoped npm package may compile against tsconfigs
|
|
8
|
-
* that omit `@types/node`.
|
|
9
|
-
*/
|
|
10
|
-
export type FurnaceShutdownSignal = 'SIGINT' | 'SIGTERM';
|
|
11
|
-
/**
|
|
12
|
-
* Context handed to a furnace mutation body so it can register the in-flight
|
|
13
|
-
* rollback journal with the lifecycle wrapper. The wrapper uses the registered
|
|
14
|
-
* journal to perform rollback when the process receives SIGINT/SIGTERM mid-run.
|
|
15
|
-
*/
|
|
16
|
-
export interface FurnaceOperationContext {
|
|
17
|
-
/**
|
|
18
|
-
* Registers the rollback journal for the current operation. Must be called
|
|
19
|
-
* once the body has constructed its journal so the signal handler can find
|
|
20
|
-
* it. Calling more than once replaces the prior reference (this is fine for
|
|
21
|
-
* commands that build the journal lazily).
|
|
22
|
-
*/
|
|
23
|
-
registerJournal(journal: RollbackJournal): void;
|
|
24
|
-
/**
|
|
25
|
-
* Registers an extra cleanup callback to run during signal-driven teardown
|
|
26
|
-
* in addition to the journal restore. Used by `furnace preview` to make
|
|
27
|
-
* sure `cleanStories` runs even when the user hits Ctrl+C mid-run. The
|
|
28
|
-
* callback should be best-effort and idempotent: cleanup errors are
|
|
29
|
-
* collected, not re-thrown.
|
|
30
|
-
*/
|
|
31
|
-
registerCleanup(cleanup: () => Promise<void>): void;
|
|
32
|
-
/**
|
|
33
|
-
* Declares that the body has already restored its own journal, so the
|
|
34
|
-
* wrapper's throw-path rollback must not restore it a second time.
|
|
35
|
-
*
|
|
36
|
-
* Bodies that catch-and-restore on their own (the `furnace/*` command
|
|
37
|
-
* bodies, `furnace-apply`) call this from their catch block after the
|
|
38
|
-
* restore, then re-throw. Without it the wrapper would restore the same
|
|
39
|
-
* journal again on the way out. That is harmless for the file writes,
|
|
40
|
-
* which are rename-based and converge, but it would race a second
|
|
41
|
-
* `pendingRepair` write against the state-file lock.
|
|
42
|
-
*/
|
|
43
|
-
markRolledBack(): void;
|
|
44
|
-
}
|
|
45
|
-
/** Options for `runFurnaceMutation`. */
|
|
46
|
-
export interface RunFurnaceMutationOptions {
|
|
47
|
-
/**
|
|
48
|
-
* If true, skip lock acquisition and signal-handler installation entirely.
|
|
49
|
-
* Used by dry-run paths where no engine mutation occurs.
|
|
50
|
-
*
|
|
51
|
-
* Note: a dry-run can overlap with a real mutation because it does not
|
|
52
|
-
* acquire the lock. This is safe because dry-runs only read. However, a
|
|
53
|
-
* dry-run that starts before a real mutation and finishes after it may
|
|
54
|
-
* observe partially-written engine state. Accept this trade-off so that
|
|
55
|
-
* concurrent dry-runs never block each other or a real apply.
|
|
56
|
-
*/
|
|
57
|
-
dryRun?: boolean;
|
|
58
|
-
/**
|
|
59
|
-
* Override the default 30 s furnace-lock timeout.
|
|
60
|
-
*
|
|
61
|
-
* Set from the caller's resolved `--wait-lock` budget, so one flag governs
|
|
62
|
-
* both locks a furnace mutation takes. Before that it was declared and
|
|
63
|
-
* never passed: `furnace deploy --wait-lock 1800` waited 1800 s for the
|
|
64
|
-
* engine session lock and then met `.fireforge/furnace.lock` with a fixed
|
|
65
|
-
* 30 s, which is the worst shape a budget can have: it pays the whole
|
|
66
|
-
* wait and still refuses. Every furnace leaf that takes this lock threads
|
|
67
|
-
* its `--wait-lock` here. When absent, {@link sessionWaitLockMs} supplies
|
|
68
|
-
* the session-wide budget (`FIREFORGE_WAIT_LOCK`).
|
|
69
|
-
*/
|
|
70
|
-
lockTimeoutMs?: number;
|
|
71
|
-
/**
|
|
72
|
-
* If true, skip the pendingRepair pre-flight check. Used by `doctor
|
|
73
|
-
* --repair-furnace` which must be able to mutate the engine even when a
|
|
74
|
-
* pendingRepair marker is set.
|
|
75
|
-
*/
|
|
76
|
-
skipPendingRepairCheck?: boolean;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Converts a resolved `--wait-lock` budget in seconds into the
|
|
80
|
-
* {@link RunFurnaceMutationOptions} slice that applies it to the furnace
|
|
81
|
-
* lock. Undefined in, empty out, so the caller can spread it
|
|
82
|
-
* unconditionally without assigning `undefined` under
|
|
83
|
-
* `exactOptionalPropertyTypes`.
|
|
84
|
-
*
|
|
85
|
-
* A helper rather than three inline spreads: the seconds-to-milliseconds
|
|
86
|
-
* conversion is exactly the kind of thing that gets copied once correctly
|
|
87
|
-
* and once with the factor dropped.
|
|
88
|
-
*
|
|
89
|
-
* @param waitLockSeconds - Resolved budget in seconds, or undefined
|
|
90
|
-
* @returns `{ lockTimeoutMs }`, or `{}` when no budget applies
|
|
91
|
-
*/
|
|
92
|
-
export declare function waitLockMutationOptions(waitLockSeconds: number | undefined): Pick<RunFurnaceMutationOptions, 'lockTimeoutMs'>;
|
|
93
|
-
/**
|
|
94
|
-
* Returns true while a signal-driven rollback is in progress. The bin entry
|
|
95
|
-
* point uses this as a re-entrancy guard so a user mashing Ctrl+C cannot
|
|
96
|
-
* trigger a second rollback that races the first. Exposed for the bin shim
|
|
97
|
-
* (and the test suite). Production callers should not need it.
|
|
98
|
-
*/
|
|
99
|
-
export declare function isSignalRollbackInFlight(): boolean;
|
|
100
|
-
/**
|
|
101
|
-
* Rolls back every in-flight furnace operation and writes a pendingRepair
|
|
102
|
-
* marker for each. Each cleanup callback and journal restore is bounded by a
|
|
103
|
-
* timeout so a stuck I/O operation cannot hang the process indefinitely.
|
|
104
|
-
*/
|
|
105
|
-
export declare function rollbackActiveOperationsForSignal(signal: FurnaceShutdownSignal): Promise<void>;
|
|
106
|
-
/**
|
|
107
|
-
* Resolves the path of the lock directory used to serialize furnace mutations
|
|
108
|
-
* for a given project root. Exposed for tests. Production callers should not
|
|
109
|
-
* touch this directly.
|
|
110
|
-
*/
|
|
111
|
-
export declare function getFurnaceLockPath(root: string): string;
|
|
112
|
-
/**
|
|
113
|
-
* Completes the rollback for a mutation body that owns its journal end to
|
|
114
|
-
* end, then rethrows. Never returns normally.
|
|
115
|
-
*
|
|
116
|
-
* Shaped as a catch-body handler rather than a `withJournalRollback(body)`
|
|
117
|
-
* wrapper on purpose: the eight calling bodies differ in early returns and
|
|
118
|
-
* in what they close over, and converting them to callbacks would
|
|
119
|
-
* restructure control flow through the engine's rollback path for a
|
|
120
|
-
* cosmetic gain.
|
|
121
|
-
*
|
|
122
|
-
* The ordering is the part worth centralising: `markRolledBack()` must run
|
|
123
|
-
* before the restore, so a restore that itself fails does not leave the
|
|
124
|
-
* lifecycle wrapper replaying the same journal on the way out. The
|
|
125
|
-
* original error is rethrown unless the rollback is what failed: the
|
|
126
|
-
* operator needs to know what went wrong, and separately whether the engine
|
|
127
|
-
* could be put back.
|
|
128
|
-
*
|
|
129
|
-
* @param ctx - The furnace operation context from `runFurnaceMutation`
|
|
130
|
-
* @param journal - Rollback journal this body populated
|
|
131
|
-
* @param error - The error the body threw
|
|
132
|
-
* @param options - Project root, pending-repair tag, and message fragments
|
|
133
|
-
* @returns Never, because it always throws
|
|
134
|
-
*/
|
|
135
|
-
export declare function completeJournalRollback(ctx: FurnaceOperationContext, journal: RollbackJournal, error: unknown, options: {
|
|
136
|
-
projectRoot: string;
|
|
137
|
-
operation: FurnacePendingRepairOperation;
|
|
138
|
-
/** Prefix for the restore failure, e.g. `Failed to override component "x"`. */
|
|
139
|
-
failureMessage: string;
|
|
140
|
-
/** Subject recorded on the pending-repair marker, e.g. `component "x"`. */
|
|
141
|
-
subject: string;
|
|
142
|
-
}): Promise<never>;
|
|
143
|
-
/**
|
|
144
|
-
* Forcibly removes the furnace lock directory for every active operation.
|
|
145
|
-
*
|
|
146
|
-
* The bin-layer signal handler calls `process.exit` after rollback, which
|
|
147
|
-
* short-circuits Node's normal unwinding, so `withFileLock`'s `finally { rm
|
|
148
|
-
* }` never runs and the lock directory survives the process. The next
|
|
149
|
-
* FireForge command then has to either wait out the staleness window or
|
|
150
|
-
* have the operator remove the lock manually. This sweeper runs inside
|
|
151
|
-
* the signal-handler pipeline before `process.exit`, so the lock is gone
|
|
152
|
-
* by the time the next command starts.
|
|
153
|
-
*
|
|
154
|
-
* Errors are logged and swallowed: we do not want a slow I/O failure at
|
|
155
|
-
* shutdown to prevent the process from exiting. The doctor-side stale
|
|
156
|
-
* lock check (`src/commands/doctor-furnace.ts`) is the backup path for
|
|
157
|
-
* any lock that escapes this sweep.
|
|
158
|
-
*/
|
|
159
|
-
export declare function forceReleaseFurnaceLocksForActiveOperations(): Promise<void>;
|
|
160
|
-
/**
|
|
161
|
-
* Runs a furnace-mutating body under the apply-wide lock and registers it
|
|
162
|
-
* with the process-wide SIGINT/SIGTERM rollback pathway. The lock prevents
|
|
163
|
-
* two `furnace apply`/`deploy`/`create`/etc. runs from racing on the engine
|
|
164
|
-
* working copy. The CLI entrypoint's global signal handlers consult this
|
|
165
|
-
* registry and invoke rollback (writing a `pendingRepair` marker when needed)
|
|
166
|
-
* if the user hits Ctrl+C mid-run.
|
|
167
|
-
*
|
|
168
|
-
* Dry-run callers should pass `options.dryRun = true` so the wrapper skips
|
|
169
|
-
* the lock entirely (concurrent dry-runs are safe and shouldn't block each
|
|
170
|
-
* other).
|
|
171
|
-
*
|
|
172
|
-
* The body receives a {@link FurnaceOperationContext}. It must call
|
|
173
|
-
* `ctx.registerJournal(journal)` once it has constructed its rollback journal.
|
|
174
|
-
* Bodies that don't manage a journal directly (e.g. apply, which delegates to
|
|
175
|
-
* `applyAllComponents`) can pass an internal callback through.
|
|
176
|
-
*/
|
|
177
|
-
export declare function runFurnaceMutation<T>(root: string, kind: FurnacePendingRepairOperation, body: (ctx: FurnaceOperationContext) => Promise<T>, options?: RunFurnaceMutationOptions): Promise<T>;
|
|
178
|
-
/**
|
|
179
|
-
* Persists an `apply-rollback` (or other operation-kind) `pendingRepair`
|
|
180
|
-
* marker on behalf of a caller that detected a rollback failure outside the
|
|
181
|
-
* signal-handler path (e.g. apply's own catch-around-restore). Exposed so
|
|
182
|
-
* `furnace-apply.ts` can write the marker without taking on a dependency on
|
|
183
|
-
* the lifecycle wrapper's internals.
|
|
184
|
-
*/
|
|
185
|
-
export declare function recordFurnaceRollbackFailure(root: string, operation: FurnacePendingRepairOperation, reason: string): Promise<void>;
|
|
186
|
-
/**
|
|
187
|
-
* Test-only helper: tears down the module-scoped state. Vitest workers may
|
|
188
|
-
* reuse the module across tests, so the test suite must call this between
|
|
189
|
-
* cases that exercise the signal pathway. Not exported from the package
|
|
190
|
-
* entry point.
|
|
191
|
-
*
|
|
192
|
-
* @internal Exported only so tests can reach it. Not part of the public
|
|
193
|
-
* surface.
|
|
194
|
-
*/
|
|
195
|
-
export declare function __resetFurnaceOperationStateForTests(): void;
|
|
@@ -1,444 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { FurnaceError } from '../errors/furnace.js';
|
|
4
|
-
import { assert } from '../utils/assert.js';
|
|
5
|
-
import { toError } from '../utils/errors.js';
|
|
6
|
-
import { verbose, warn } from '../utils/logger.js';
|
|
7
|
-
import { sessionWaitLockMs } from '../utils/options.js';
|
|
8
|
-
import { FIREFORGE_DIR } from './config-paths.js';
|
|
9
|
-
import { readLockStatus, releaseLockIfOwned, withFileLock } from './file-lock.js';
|
|
10
|
-
import { loadFurnaceState, updateFurnaceState } from './furnace-config.js';
|
|
11
|
-
import { restoreRollbackJournal, restoreRollbackJournalOrThrow, } from './furnace-rollback.js';
|
|
12
|
-
/** Sidecar lock filename used to serialize concurrent furnace mutations. */
|
|
13
|
-
const FURNACE_LOCK_FILENAME = 'furnace.lock';
|
|
14
|
-
/**
|
|
15
|
-
* Converts a resolved `--wait-lock` budget in seconds into the
|
|
16
|
-
* {@link RunFurnaceMutationOptions} slice that applies it to the furnace
|
|
17
|
-
* lock. Undefined in, empty out, so the caller can spread it
|
|
18
|
-
* unconditionally without assigning `undefined` under
|
|
19
|
-
* `exactOptionalPropertyTypes`.
|
|
20
|
-
*
|
|
21
|
-
* A helper rather than three inline spreads: the seconds-to-milliseconds
|
|
22
|
-
* conversion is exactly the kind of thing that gets copied once correctly
|
|
23
|
-
* and once with the factor dropped.
|
|
24
|
-
*
|
|
25
|
-
* @param waitLockSeconds - Resolved budget in seconds, or undefined
|
|
26
|
-
* @returns `{ lockTimeoutMs }`, or `{}` when no budget applies
|
|
27
|
-
*/
|
|
28
|
-
export function waitLockMutationOptions(waitLockSeconds) {
|
|
29
|
-
return waitLockSeconds === undefined ? {} : { lockTimeoutMs: waitLockSeconds * 1000 };
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Claims the rollback for one operation, or reports that another path
|
|
33
|
-
* already has it.
|
|
34
|
-
*
|
|
35
|
-
* Must stay synchronous and must be called before the caller's first
|
|
36
|
-
* await. That is what makes the claim atomic against the signal handler.
|
|
37
|
-
*
|
|
38
|
-
* @param operation - The in-flight operation to claim
|
|
39
|
-
* @returns True when the caller now owns the rollback
|
|
40
|
-
*/
|
|
41
|
-
function claimRollback(operation) {
|
|
42
|
-
if (operation.rollbackState !== undefined) {
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
operation.rollbackState = 'in-flight';
|
|
46
|
-
return true;
|
|
47
|
-
}
|
|
48
|
-
const activeOperations = new Map();
|
|
49
|
-
let nextOperationToken = 1;
|
|
50
|
-
let signalRollbackInFlight = false;
|
|
51
|
-
/**
|
|
52
|
-
* Returns true while a signal-driven rollback is in progress. The bin entry
|
|
53
|
-
* point uses this as a re-entrancy guard so a user mashing Ctrl+C cannot
|
|
54
|
-
* trigger a second rollback that races the first. Exposed for the bin shim
|
|
55
|
-
* (and the test suite). Production callers should not need it.
|
|
56
|
-
*/
|
|
57
|
-
export function isSignalRollbackInFlight() {
|
|
58
|
-
return signalRollbackInFlight;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Rolls back every in-flight furnace operation and writes a pendingRepair
|
|
62
|
-
* marker for each. The bin entry point installs SIGINT/SIGTERM handlers that
|
|
63
|
-
* call this and then exit. Calling it directly from inside the library would
|
|
64
|
-
* violate the "process.exit only in bin" invariant. The function is also
|
|
65
|
-
* exposed under this name so the test suite can exercise the teardown path
|
|
66
|
-
* without going through `process.emit` / `process.exit`.
|
|
67
|
-
*/
|
|
68
|
-
/** Maximum time (ms) the signal-driven rollback may take per operation. */
|
|
69
|
-
const SIGNAL_ROLLBACK_TIMEOUT_MS = 15_000;
|
|
70
|
-
/** Races a promise against a deadline, rejecting with a timeout error if the deadline expires. */
|
|
71
|
-
function withTimeout(promise, ms, label) {
|
|
72
|
-
return new Promise((resolve, reject) => {
|
|
73
|
-
const timer = setTimeout(() => {
|
|
74
|
-
reject(new Error(`${label} timed out after ${ms}ms`));
|
|
75
|
-
}, ms);
|
|
76
|
-
promise.then((value) => {
|
|
77
|
-
clearTimeout(timer);
|
|
78
|
-
resolve(value);
|
|
79
|
-
}, (error) => {
|
|
80
|
-
clearTimeout(timer);
|
|
81
|
-
reject(error instanceof Error ? error : new Error(String(error)));
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Rolls back every in-flight furnace operation and writes a pendingRepair
|
|
87
|
-
* marker for each. Each cleanup callback and journal restore is bounded by a
|
|
88
|
-
* timeout so a stuck I/O operation cannot hang the process indefinitely.
|
|
89
|
-
*/
|
|
90
|
-
export async function rollbackActiveOperationsForSignal(signal) {
|
|
91
|
-
// Snapshot the active operations so we don't race with `runFurnaceMutation`
|
|
92
|
-
// clearing slots during normal completion. Filter completed bodies so a
|
|
93
|
-
// body sitting in its finally-block cleanup window is not counted as live
|
|
94
|
-
// work. Counting it would mis-trigger the rollback banner for plain
|
|
95
|
-
// `fireforge run` (which never registers a mutation but can receive
|
|
96
|
-
// SIGTERM).
|
|
97
|
-
const snapshot = [...activeOperations.values()].filter((op) => !op.completed);
|
|
98
|
-
if (snapshot.length === 0) {
|
|
99
|
-
// Nothing to roll back. Stay silent so commands that never mutated (run,
|
|
100
|
-
// watch, test, doctor) don't print an alarming "rolling back mutations"
|
|
101
|
-
// line on Ctrl+C / SIGTERM. Leave `signalRollbackInFlight` false so a
|
|
102
|
-
// subsequent registrant can still trigger the full path.
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
signalRollbackInFlight = true;
|
|
106
|
-
warn(`Received ${signal}; rolling back in-flight furnace mutations…`);
|
|
107
|
-
for (const op of snapshot) {
|
|
108
|
-
// The body may already be rolling back on its own throw path. Claim the
|
|
109
|
-
// operation (or skip it) before the first await so the two paths cannot
|
|
110
|
-
// both restore the same journal.
|
|
111
|
-
if (!claimRollback(op)) {
|
|
112
|
-
verbose(`Rollback for ${op.kind} already in progress; leaving it to the throw path.`);
|
|
113
|
-
continue;
|
|
114
|
-
}
|
|
115
|
-
const cleanupErrors = [];
|
|
116
|
-
// Run extra cleanup callbacks first (e.g. preview's cleanStories), so the
|
|
117
|
-
// engine is in its tidiest possible shape before the journal restore
|
|
118
|
-
// writes the original file contents back over the top.
|
|
119
|
-
for (const cleanup of op.cleanups) {
|
|
120
|
-
try {
|
|
121
|
-
await withTimeout(cleanup(), SIGNAL_ROLLBACK_TIMEOUT_MS, 'Cleanup callback');
|
|
122
|
-
}
|
|
123
|
-
catch (error) {
|
|
124
|
-
cleanupErrors.push(toError(error).message);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
if (!op.journal) {
|
|
128
|
-
// The body had not yet handed us a journal, so there is nothing to
|
|
129
|
-
// roll back. We still write a marker because the body may have started
|
|
130
|
-
// mutating the engine before reaching the registerJournal call.
|
|
131
|
-
const cleanupSuffix = cleanupErrors.length > 0 ? `; cleanup errors: ${cleanupErrors.join('; ')}` : '';
|
|
132
|
-
await persistPendingRepair(op.root, op.kind, `interrupted by ${signal} before any state was captured${cleanupSuffix}`).catch((error) => {
|
|
133
|
-
warn(`Could not persist pending-repair marker: ${toError(error).message}`);
|
|
134
|
-
});
|
|
135
|
-
continue;
|
|
136
|
-
}
|
|
137
|
-
let rollbackError;
|
|
138
|
-
try {
|
|
139
|
-
await withTimeout(restoreRollbackJournal(op.journal), SIGNAL_ROLLBACK_TIMEOUT_MS, 'Rollback journal restore');
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
rollbackError = toError(error).message;
|
|
143
|
-
}
|
|
144
|
-
op.rollbackState = 'done';
|
|
145
|
-
// A clean signal-driven rollback is not itself a repairable problem:
|
|
146
|
-
// preview/apply/deploy/remove were interrupted, but the engine was restored
|
|
147
|
-
// successfully and the next `doctor` run should remain green. Persist a
|
|
148
|
-
// pending-repair marker only when rollback was incomplete or uncertain.
|
|
149
|
-
if (rollbackError || cleanupErrors.length > 0) {
|
|
150
|
-
const reasonParts = [`interrupted by ${signal}`];
|
|
151
|
-
if (rollbackError) {
|
|
152
|
-
reasonParts.push(`automatic rollback failed: ${rollbackError}`);
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
reasonParts.push('automatic rollback succeeded');
|
|
156
|
-
}
|
|
157
|
-
if (cleanupErrors.length > 0) {
|
|
158
|
-
reasonParts.push(`cleanup errors: ${cleanupErrors.join('; ')}`);
|
|
159
|
-
}
|
|
160
|
-
await persistPendingRepair(op.root, op.kind, reasonParts.join('; ')).catch((error) => {
|
|
161
|
-
warn(`Could not persist pending-repair marker: ${toError(error).message}`);
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Rolls back one operation whose body threw, mirroring the signal path.
|
|
168
|
-
*
|
|
169
|
-
* Never throws: the body's own error is what the operator needs to see, so
|
|
170
|
-
* a rollback failure becomes a `pendingRepair` marker plus a warning
|
|
171
|
-
* rather than replacing it. Skips entirely when the body already restored
|
|
172
|
-
* its own journal and said so via `ctx.markRolledBack()`.
|
|
173
|
-
*
|
|
174
|
-
* @param operation - The in-flight operation whose body threw
|
|
175
|
-
*/
|
|
176
|
-
async function rollbackOperationForThrow(operation) {
|
|
177
|
-
if (!claimRollback(operation)) {
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
const cleanupErrors = [];
|
|
181
|
-
// Cleanups before the journal restore, for the same reason the signal path
|
|
182
|
-
// does it in that order: the restore writes original contents back, and it
|
|
183
|
-
// should do so over the tidiest possible tree.
|
|
184
|
-
for (const cleanup of operation.cleanups) {
|
|
185
|
-
try {
|
|
186
|
-
await withTimeout(cleanup(), SIGNAL_ROLLBACK_TIMEOUT_MS, 'Cleanup callback');
|
|
187
|
-
}
|
|
188
|
-
catch (error) {
|
|
189
|
-
cleanupErrors.push(toError(error).message);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
if (!operation.journal) {
|
|
193
|
-
// Nothing was captured, so there is nothing to restore. Unlike the signal
|
|
194
|
-
// path we do not write a pendingRepair marker here: a body that threw
|
|
195
|
-
// before registering a journal is overwhelmingly a refusal raised during
|
|
196
|
-
// pre-flight (a validation failure, a missing file), and marking the root
|
|
197
|
-
// as needing repair would block every later furnace mutation behind a
|
|
198
|
-
// `doctor --repair-furnace` that has nothing to reconcile. Bodies that
|
|
199
|
-
// genuinely mutate before registering a journal are the ones the
|
|
200
|
-
// journal-before-mutation assertions catch.
|
|
201
|
-
operation.rollbackState = 'done';
|
|
202
|
-
if (cleanupErrors.length > 0) {
|
|
203
|
-
warn(`Cleanup after a failed ${operation.kind} reported: ${cleanupErrors.join('; ')}`);
|
|
204
|
-
}
|
|
205
|
-
return;
|
|
206
|
-
}
|
|
207
|
-
let rollbackError;
|
|
208
|
-
try {
|
|
209
|
-
await withTimeout(restoreRollbackJournal(operation.journal), SIGNAL_ROLLBACK_TIMEOUT_MS, 'Rollback journal restore');
|
|
210
|
-
}
|
|
211
|
-
catch (error) {
|
|
212
|
-
rollbackError = toError(error).message;
|
|
213
|
-
}
|
|
214
|
-
operation.rollbackState = 'done';
|
|
215
|
-
if (!rollbackError && cleanupErrors.length === 0) {
|
|
216
|
-
verbose(`Rolled back ${operation.kind} after a failure; engine restored.`);
|
|
217
|
-
return;
|
|
218
|
-
}
|
|
219
|
-
const reasonParts = [`${operation.kind} failed`];
|
|
220
|
-
if (rollbackError) {
|
|
221
|
-
reasonParts.push(`automatic rollback failed: ${rollbackError}`);
|
|
222
|
-
warn(`Automatic rollback after a failed ${operation.kind} did not complete: ${rollbackError}. ` +
|
|
223
|
-
'Run "fireforge doctor --repair-furnace" to reconcile.');
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
reasonParts.push('automatic rollback succeeded');
|
|
227
|
-
}
|
|
228
|
-
if (cleanupErrors.length > 0) {
|
|
229
|
-
reasonParts.push(`cleanup errors: ${cleanupErrors.join('; ')}`);
|
|
230
|
-
}
|
|
231
|
-
await persistPendingRepair(operation.root, operation.kind, reasonParts.join('; ')).catch((error) => {
|
|
232
|
-
warn(`Could not persist pending-repair marker: ${toError(error).message}`);
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
async function persistPendingRepair(root, operation, reason) {
|
|
236
|
-
await updateFurnaceState(root, (state) => ({
|
|
237
|
-
...state,
|
|
238
|
-
pendingRepair: {
|
|
239
|
-
operation,
|
|
240
|
-
timestamp: new Date().toISOString(),
|
|
241
|
-
reason,
|
|
242
|
-
},
|
|
243
|
-
}));
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Resolves the path of the lock directory used to serialize furnace mutations
|
|
247
|
-
* for a given project root. Exposed for tests. Production callers should not
|
|
248
|
-
* touch this directly.
|
|
249
|
-
*/
|
|
250
|
-
export function getFurnaceLockPath(root) {
|
|
251
|
-
return join(root, FIREFORGE_DIR, FURNACE_LOCK_FILENAME);
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* Completes the rollback for a mutation body that owns its journal end to
|
|
255
|
-
* end, then rethrows. Never returns normally.
|
|
256
|
-
*
|
|
257
|
-
* Shaped as a catch-body handler rather than a `withJournalRollback(body)`
|
|
258
|
-
* wrapper on purpose: the eight calling bodies differ in early returns and
|
|
259
|
-
* in what they close over, and converting them to callbacks would
|
|
260
|
-
* restructure control flow through the engine's rollback path for a
|
|
261
|
-
* cosmetic gain.
|
|
262
|
-
*
|
|
263
|
-
* The ordering is the part worth centralising: `markRolledBack()` must run
|
|
264
|
-
* before the restore, so a restore that itself fails does not leave the
|
|
265
|
-
* lifecycle wrapper replaying the same journal on the way out. The
|
|
266
|
-
* original error is rethrown unless the rollback is what failed: the
|
|
267
|
-
* operator needs to know what went wrong, and separately whether the engine
|
|
268
|
-
* could be put back.
|
|
269
|
-
*
|
|
270
|
-
* @param ctx - The furnace operation context from `runFurnaceMutation`
|
|
271
|
-
* @param journal - Rollback journal this body populated
|
|
272
|
-
* @param error - The error the body threw
|
|
273
|
-
* @param options - Project root, pending-repair tag, and message fragments
|
|
274
|
-
* @returns Never, because it always throws
|
|
275
|
-
*/
|
|
276
|
-
export async function completeJournalRollback(ctx, journal, error, options) {
|
|
277
|
-
// This body owns its rollback end to end, so tell the lifecycle wrapper
|
|
278
|
-
// not to restore the same journal again on the way out.
|
|
279
|
-
ctx.markRolledBack();
|
|
280
|
-
try {
|
|
281
|
-
await restoreRollbackJournalOrThrow(journal, options.failureMessage);
|
|
282
|
-
}
|
|
283
|
-
catch (rollbackError) {
|
|
284
|
-
await recordFurnaceRollbackFailure(options.projectRoot, options.operation, `${options.subject}: ${toError(rollbackError).message}`);
|
|
285
|
-
throw rollbackError;
|
|
286
|
-
}
|
|
287
|
-
throw error;
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Forcibly removes the furnace lock directory for every active operation.
|
|
291
|
-
*
|
|
292
|
-
* The bin-layer signal handler calls `process.exit` after rollback, which
|
|
293
|
-
* short-circuits Node's normal unwinding, so `withFileLock`'s `finally { rm
|
|
294
|
-
* }` never runs and the lock directory survives the process. The next
|
|
295
|
-
* FireForge command then has to either wait out the staleness window or
|
|
296
|
-
* have the operator remove the lock manually. This sweeper runs inside
|
|
297
|
-
* the signal-handler pipeline before `process.exit`, so the lock is gone
|
|
298
|
-
* by the time the next command starts.
|
|
299
|
-
*
|
|
300
|
-
* Errors are logged and swallowed: we do not want a slow I/O failure at
|
|
301
|
-
* shutdown to prevent the process from exiting. The doctor-side stale
|
|
302
|
-
* lock check (`src/commands/doctor-furnace.ts`) is the backup path for
|
|
303
|
-
* any lock that escapes this sweep.
|
|
304
|
-
*/
|
|
305
|
-
export async function forceReleaseFurnaceLocksForActiveOperations() {
|
|
306
|
-
const paths = new Set([...activeOperations.values()].map((op) => getFurnaceLockPath(op.root)));
|
|
307
|
-
for (const lockPath of paths) {
|
|
308
|
-
// Ownership-checked, like every other release path. A bare `rm` would
|
|
309
|
-
// delete a lock a different process had acquired in the window between
|
|
310
|
-
// our operation dying and this sweep running. That is the exact race
|
|
311
|
-
// `releaseLock`'s PID verification closes, and the sweeper has no
|
|
312
|
-
// acquisition token to check.
|
|
313
|
-
const removed = await releaseLockIfOwned(lockPath);
|
|
314
|
-
verbose(removed
|
|
315
|
-
? `Removed furnace lock at ${lockPath} during signal teardown`
|
|
316
|
-
: `Left furnace lock at ${lockPath} in place during signal teardown: it is not owned by this process`);
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
/**
|
|
320
|
-
* Runs a furnace-mutating body under the apply-wide lock and registers it
|
|
321
|
-
* with the process-wide SIGINT/SIGTERM rollback pathway. The lock prevents
|
|
322
|
-
* two `furnace apply`/`deploy`/`create`/etc. runs from racing on the engine
|
|
323
|
-
* working copy. The CLI entrypoint's global signal handlers consult this
|
|
324
|
-
* registry and invoke rollback (writing a `pendingRepair` marker when needed)
|
|
325
|
-
* if the user hits Ctrl+C mid-run.
|
|
326
|
-
*
|
|
327
|
-
* Dry-run callers should pass `options.dryRun = true` so the wrapper skips
|
|
328
|
-
* the lock entirely (concurrent dry-runs are safe and shouldn't block each
|
|
329
|
-
* other).
|
|
330
|
-
*
|
|
331
|
-
* The body receives a {@link FurnaceOperationContext}. It must call
|
|
332
|
-
* `ctx.registerJournal(journal)` once it has constructed its rollback journal.
|
|
333
|
-
* Bodies that don't manage a journal directly (e.g. apply, which delegates to
|
|
334
|
-
* `applyAllComponents`) can pass an internal callback through.
|
|
335
|
-
*/
|
|
336
|
-
export async function runFurnaceMutation(root, kind, body, options = {}) {
|
|
337
|
-
if (options.dryRun) {
|
|
338
|
-
// Dry-run: no lock, no signal handler, no journal registration. The body
|
|
339
|
-
// is still given a no-op context so callers can use the same shape.
|
|
340
|
-
return body({
|
|
341
|
-
registerJournal: () => undefined,
|
|
342
|
-
registerCleanup: () => undefined,
|
|
343
|
-
markRolledBack: () => undefined,
|
|
344
|
-
});
|
|
345
|
-
}
|
|
346
|
-
// Pre-flight: refuse to mutate when a previous operation left the engine in
|
|
347
|
-
// a partially-rolled-back state. The user must run `fireforge doctor
|
|
348
|
-
// --repair-furnace` to reconcile before any new mutations can proceed.
|
|
349
|
-
if (!options.skipPendingRepairCheck) {
|
|
350
|
-
const state = await loadFurnaceState(root);
|
|
351
|
-
if (state.pendingRepair) {
|
|
352
|
-
throw new FurnaceError(`A previous "${state.pendingRepair.operation}" left the engine in an inconsistent state ` +
|
|
353
|
-
`(${state.pendingRepair.reason}). Run "fireforge doctor --repair-furnace" to reconcile ` +
|
|
354
|
-
'before running further furnace mutations.');
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
const token = nextOperationToken++;
|
|
358
|
-
const operation = { root, kind, cleanups: [] };
|
|
359
|
-
const lockPath = getFurnaceLockPath(root);
|
|
360
|
-
// An explicit budget wins. Otherwise the session-wide one applies. Naming
|
|
361
|
-
// the lock in the refusal matters: a mutation takes two, and a message
|
|
362
|
-
// that says only "timed out" sends the operator to raise a budget that
|
|
363
|
-
// was already large enough for the other lock.
|
|
364
|
-
const timeoutMs = options.lockTimeoutMs ?? sessionWaitLockMs();
|
|
365
|
-
const lockOptions = {
|
|
366
|
-
...(timeoutMs !== undefined ? { timeoutMs } : {}),
|
|
367
|
-
onTimeoutMessage: `Timed out waiting for the FURNACE lock at ${lockPath} ` +
|
|
368
|
-
`(this is the second of the two locks a furnace mutation takes; the first is the engine session lock). ` +
|
|
369
|
-
'Another fireforge furnace command may be running. ' +
|
|
370
|
-
'Raise the budget with --wait-lock <seconds> or FIREFORGE_WAIT_LOCK, which governs both. ' +
|
|
371
|
-
'If no other process is running, remove the stale lock directory and retry.',
|
|
372
|
-
onStaleLockMessage: (ageMs) => `Removing stale furnace lock (age: ${Math.round(ageMs / 1000)}s). ` +
|
|
373
|
-
'A previous fireforge process may have crashed.',
|
|
374
|
-
};
|
|
375
|
-
return withFileLock(lockPath, async () => {
|
|
376
|
-
// Everything the body does from here is serialized only by the furnace
|
|
377
|
-
// lock, so confirm we are actually inside it before registering as a
|
|
378
|
-
// live mutation. The owner record is best-effort in `withFileLock`
|
|
379
|
-
// (a live holder can legitimately have no readable PID), so the PID
|
|
380
|
-
// half only tightens the check when a record is present. Asserting on
|
|
381
|
-
// its existence would fire on a lock we really do hold.
|
|
382
|
-
const lockStatus = await readLockStatus(lockPath);
|
|
383
|
-
assert(lockStatus.held, 'furnace lock held before the mutation body runs');
|
|
384
|
-
assert(lockStatus.holder === undefined || lockStatus.holder.pid === process.pid, () => `furnace lock is owned by this process ` +
|
|
385
|
-
`(held by PID ${lockStatus.holder?.pid}, we are ${process.pid})`);
|
|
386
|
-
activeOperations.set(token, operation);
|
|
387
|
-
try {
|
|
388
|
-
return await body({
|
|
389
|
-
registerJournal: (journal) => {
|
|
390
|
-
operation.journal = journal;
|
|
391
|
-
},
|
|
392
|
-
registerCleanup: (cleanup) => {
|
|
393
|
-
operation.cleanups.push(cleanup);
|
|
394
|
-
},
|
|
395
|
-
markRolledBack: () => {
|
|
396
|
-
operation.rollbackState = 'done';
|
|
397
|
-
},
|
|
398
|
-
});
|
|
399
|
-
}
|
|
400
|
-
catch (error) {
|
|
401
|
-
// A thrown error leaves the engine mutated exactly as a signal does,
|
|
402
|
-
// so it gets the same treatment. A bare finally here would
|
|
403
|
-
// deregister the operation and mark it completed, removing it from
|
|
404
|
-
// the signal handler's view too, so a body that threw outside its
|
|
405
|
-
// own catch (notably anywhere in `applyAllComponents` outside its
|
|
406
|
-
// two per-component try blocks) would leave the checkout torn with
|
|
407
|
-
// no marker.
|
|
408
|
-
//
|
|
409
|
-
// This runs inside the withFileLock callback, so the furnace lock is
|
|
410
|
-
// still held for the duration of the restore: a competing process
|
|
411
|
-
// cannot start mutating half-way through it.
|
|
412
|
-
await rollbackOperationForThrow(operation);
|
|
413
|
-
throw error;
|
|
414
|
-
}
|
|
415
|
-
finally {
|
|
416
|
-
operation.completed = true;
|
|
417
|
-
activeOperations.delete(token);
|
|
418
|
-
}
|
|
419
|
-
}, lockOptions);
|
|
420
|
-
}
|
|
421
|
-
/**
|
|
422
|
-
* Persists an `apply-rollback` (or other operation-kind) `pendingRepair`
|
|
423
|
-
* marker on behalf of a caller that detected a rollback failure outside the
|
|
424
|
-
* signal-handler path (e.g. apply's own catch-around-restore). Exposed so
|
|
425
|
-
* `furnace-apply.ts` can write the marker without taking on a dependency on
|
|
426
|
-
* the lifecycle wrapper's internals.
|
|
427
|
-
*/
|
|
428
|
-
export async function recordFurnaceRollbackFailure(root, operation, reason) {
|
|
429
|
-
await persistPendingRepair(root, operation, reason);
|
|
430
|
-
}
|
|
431
|
-
/**
|
|
432
|
-
* Test-only helper: tears down the module-scoped state. Vitest workers may
|
|
433
|
-
* reuse the module across tests, so the test suite must call this between
|
|
434
|
-
* cases that exercise the signal pathway. Not exported from the package
|
|
435
|
-
* entry point.
|
|
436
|
-
*
|
|
437
|
-
* @internal Exported only so tests can reach it. Not part of the public
|
|
438
|
-
* surface.
|
|
439
|
-
*/
|
|
440
|
-
export function __resetFurnaceOperationStateForTests() {
|
|
441
|
-
activeOperations.clear();
|
|
442
|
-
nextOperationToken = 1;
|
|
443
|
-
signalRollbackInFlight = false;
|
|
444
|
-
}
|