@hominis/fireforge 0.54.0 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +287 -6
- package/README.md +51 -17
- package/dist/bin/fireforge.js +34 -129
- package/dist/build-info.json +4 -4
- package/dist/src/check/check.js +394 -0
- package/dist/src/check/gate.js +448 -0
- package/dist/src/check/index.js +10 -0
- package/dist/src/check/record.js +155 -0
- package/dist/src/cli/command.js +286 -0
- package/dist/src/cli/output.js +96 -0
- package/dist/src/cli/program.js +231 -0
- package/dist/src/cli/stdio.js +59 -0
- package/dist/src/cli/version.js +99 -0
- package/dist/src/commands/bootstrap.js +17 -102
- package/dist/src/commands/build.js +34 -438
- package/dist/src/commands/check.js +44 -157
- package/dist/src/commands/config.js +50 -226
- package/dist/src/commands/discard.js +38 -215
- package/dist/src/commands/doctor.js +29 -456
- package/dist/src/commands/download.js +35 -499
- package/dist/src/commands/export.js +42 -431
- package/dist/src/commands/furnace.js +220 -0
- package/dist/src/commands/gate.js +127 -0
- package/dist/src/commands/import.js +44 -445
- package/dist/src/commands/index.js +86 -0
- package/dist/src/commands/lint.js +44 -546
- package/dist/src/commands/merge-driver.js +56 -0
- package/dist/src/commands/migrate.js +75 -0
- package/dist/src/commands/override.js +43 -0
- package/dist/src/commands/package.js +48 -77
- package/dist/src/commands/patch.js +221 -0
- package/dist/src/commands/re-export.js +55 -332
- package/dist/src/commands/rebase.js +69 -0
- package/dist/src/commands/register.js +62 -103
- package/dist/src/commands/reset.js +28 -91
- package/dist/src/commands/resolve.js +20 -167
- package/dist/src/commands/restore.js +19 -0
- package/dist/src/commands/run.js +60 -420
- package/dist/src/commands/setup.js +78 -90
- package/dist/src/commands/status.js +44 -413
- package/dist/src/commands/test.js +97 -422
- package/dist/src/commands/token.js +185 -228
- package/dist/src/commands/typecheck.js +59 -208
- package/dist/src/commands/verify.js +28 -334
- package/dist/src/commands/version.js +14 -0
- package/dist/src/commands/watch.js +20 -218
- package/dist/src/commands/wire.js +60 -349
- package/dist/src/commands/workspace.js +117 -0
- package/dist/src/config/edit.js +237 -0
- package/dist/src/config/index.js +15 -0
- package/dist/src/config/load.js +59 -0
- package/dist/src/config/previous.js +404 -0
- package/dist/src/config/schema/build.js +63 -0
- package/dist/src/config/schema/check.js +113 -0
- package/dist/src/config/schema/common.js +71 -0
- package/dist/src/config/schema/export-queue.js +36 -0
- package/dist/src/config/schema/firefox.js +69 -0
- package/dist/src/config/schema/gate.js +199 -0
- package/dist/src/config/schema/identity.js +55 -0
- package/dist/src/config/schema/index.js +45 -0
- package/dist/src/config/schema/lint.js +297 -0
- package/dist/src/config/schema/policy.js +111 -0
- package/dist/src/config/schema/source.js +90 -0
- package/dist/src/config/schema/test.js +17 -0
- package/dist/src/config/schema/toolchains.js +17 -0
- package/dist/src/config/schema/typecheck.js +29 -0
- package/dist/src/config/schema/wire.js +15 -0
- package/dist/src/diff/apply.js +129 -0
- package/dist/src/diff/index.js +16 -0
- package/dist/src/diff/model.js +267 -0
- package/dist/src/diff/query.js +65 -0
- package/dist/src/doctor/index.js +240 -0
- package/dist/src/engine/archive.js +396 -0
- package/dist/src/engine/audit.js +66 -0
- package/dist/src/engine/build.js +150 -0
- package/dist/src/engine/hostLocks.js +66 -0
- package/dist/src/engine/index.js +26 -0
- package/dist/src/engine/installManifests.js +147 -0
- package/dist/src/engine/mach.js +97 -0
- package/dist/src/engine/machHints.js +80 -0
- package/dist/src/engine/mozconfig.js +110 -0
- package/dist/src/engine/objdir.js +124 -0
- package/dist/src/engine/package.js +169 -0
- package/dist/src/engine/pin.js +12 -0
- package/dist/src/engine/pool.js +423 -0
- package/dist/src/engine/pristine.js +281 -0
- package/dist/src/engine/python.js +68 -0
- package/dist/src/engine/resourceGuard.js +582 -0
- package/dist/src/engine/run.js +259 -0
- package/dist/src/engine/smoke.js +204 -0
- package/dist/src/engine/staleness.js +229 -0
- package/dist/src/engine/watch.js +82 -0
- package/dist/src/engine/workspace.js +85 -0
- package/dist/src/furnace/config.js +360 -0
- package/dist/src/furnace/deploy.js +414 -0
- package/dist/src/furnace/diff.js +59 -0
- package/dist/src/furnace/edit.js +64 -0
- package/dist/src/furnace/fragments.js +53 -0
- package/dist/src/furnace/index.js +19 -0
- package/dist/src/furnace/operations.js +283 -0
- package/dist/src/furnace/registration.js +220 -0
- package/dist/src/furnace/scaffold.js +311 -0
- package/dist/src/furnace/typing.js +252 -0
- package/dist/src/furnace/validate.js +662 -0
- package/dist/src/git/apply.js +129 -0
- package/dist/src/git/diff.js +143 -0
- package/dist/src/git/index.js +33 -0
- package/dist/src/git/objects.js +201 -0
- package/dist/src/git/refs.js +85 -0
- package/dist/src/git/repo.js +222 -0
- package/dist/src/git/run.js +242 -0
- package/dist/src/git/status.js +156 -0
- package/dist/src/kernel/errors.js +123 -0
- package/dist/src/kernel/fs.js +515 -0
- package/dist/src/kernel/glob.js +63 -0
- package/dist/src/kernel/hash.js +28 -0
- package/dist/src/kernel/journal.js +524 -0
- package/dist/src/kernel/json-edit.js +198 -0
- package/dist/src/kernel/json.js +101 -0
- package/dist/src/kernel/lock.js +589 -0
- package/dist/src/kernel/log.js +154 -0
- package/dist/src/kernel/process/identity.js +313 -0
- package/dist/src/kernel/process/index.js +8 -0
- package/dist/src/kernel/process/listing.js +128 -0
- package/dist/src/kernel/process/spawn.js +430 -0
- package/dist/src/kernel/process/tree.js +301 -0
- package/dist/src/kernel/schema.js +308 -0
- package/dist/src/kernel/signals.js +171 -0
- package/dist/src/kernel/text.js +151 -0
- package/dist/src/kernel/time.js +83 -0
- package/dist/src/kernel/tty.js +84 -0
- package/dist/src/lint/cache.js +77 -0
- package/dist/src/lint/checkjs.js +400 -0
- package/dist/src/lint/index.js +3 -0
- package/dist/src/lint/input.js +100 -0
- package/dist/src/lint/report.js +107 -0
- package/dist/src/lint/rule.js +41 -0
- package/dist/src/lint/rules/css.js +308 -0
- package/dist/src/lint/rules/javascript.js +299 -0
- package/dist/src/lint/rules/jsdoc.js +249 -0
- package/dist/src/lint/rules/license.js +93 -0
- package/dist/src/lint/rules/policy.js +201 -0
- package/dist/src/lint/rules/registration.js +264 -0
- package/dist/src/lint/rules/size.js +299 -0
- package/dist/src/lint/run.js +126 -0
- package/dist/src/lint/shim.js +323 -0
- package/dist/src/lint/typescript.js +186 -0
- package/dist/src/lint/waivers.js +93 -0
- package/dist/src/mode/changes.js +264 -0
- package/dist/src/mode/diagnose.js +173 -0
- package/dist/src/mode/export.js +147 -0
- package/dist/src/mode/index.js +23 -0
- package/dist/src/mode/migrate.js +181 -0
- package/dist/src/mode/previousWaivers.js +206 -0
- package/dist/src/mode/pristine.js +61 -0
- package/dist/src/mode/rebase.js +197 -0
- package/dist/src/mode/report.js +157 -0
- package/dist/src/mode/setup.js +103 -0
- package/dist/src/mode/tracked.js +116 -0
- package/dist/src/mode/upgrade.js +281 -0
- package/dist/src/mode/watch.js +83 -0
- package/dist/src/mode/workspace.js +189 -0
- package/dist/src/mozbuild/index.js +6 -0
- package/dist/src/mozbuild/jar.js +366 -0
- package/dist/src/mozbuild/mozbuild.js +321 -0
- package/dist/src/mozbuild/paths.js +96 -0
- package/dist/src/mozbuild/references.js +39 -0
- package/dist/src/mozbuild/testManifest.js +343 -0
- package/dist/src/mozbuild/text.js +142 -0
- package/dist/src/project/changes.js +145 -0
- package/dist/src/project/checkout.js +66 -0
- package/dist/src/project/index.js +11 -0
- package/dist/src/project/license.js +119 -0
- package/dist/src/project/project.js +111 -0
- package/dist/src/project/state.js +85 -0
- package/dist/src/project/tracked.js +1 -0
- package/dist/src/queue/apply.js +270 -0
- package/dist/src/queue/attribute.js +159 -0
- package/dist/src/queue/baseline.js +409 -0
- package/dist/src/queue/capture.js +298 -0
- package/dist/src/queue/changes.js +234 -0
- package/dist/src/queue/index.js +50 -0
- package/dist/src/queue/manifest.js +341 -0
- package/dist/src/queue/operations.js +454 -0
- package/dist/src/queue/placement.js +220 -0
- package/dist/src/queue/queue.js +359 -0
- package/dist/src/queue/restore.js +103 -0
- package/dist/src/queue/session.js +685 -0
- package/dist/src/queue/status.js +137 -0
- package/dist/src/register/files.js +39 -0
- package/dist/src/register/index.js +8 -0
- package/dist/src/register/js.js +217 -0
- package/dist/src/register/register.js +359 -0
- package/dist/src/register/wire.js +146 -0
- package/dist/src/source/adopt.js +99 -0
- package/dist/src/source/changes.js +132 -0
- package/dist/src/source/edit.js +278 -0
- package/dist/src/source/export.js +70 -0
- package/dist/src/source/groups.js +131 -0
- package/dist/src/source/index.js +20 -0
- package/dist/src/source/materialize.js +382 -0
- package/dist/src/source/merge.js +255 -0
- package/dist/src/source/objects.js +102 -0
- package/dist/src/source/previous.js +166 -0
- package/dist/src/source/records.js +138 -0
- package/dist/src/source/refresh.js +264 -0
- package/dist/src/source/tree.js +337 -0
- package/dist/src/syntax/css.js +215 -0
- package/dist/src/syntax/fragments.js +63 -0
- package/dist/src/syntax/index.js +10 -0
- package/dist/src/syntax/js.js +270 -0
- package/dist/src/test/classify.js +826 -0
- package/dist/src/test/control.js +236 -0
- package/dist/src/test/host.js +266 -0
- package/dist/src/test/index.js +11 -0
- package/dist/src/test/plan.js +347 -0
- package/dist/src/test/rawLog.js +138 -0
- package/dist/src/test/run.js +404 -0
- package/dist/src/test/verdict.js +420 -0
- package/dist/src/test/xpcshell.js +143 -0
- package/dist/src/tokens/add.js +304 -0
- package/dist/src/tokens/coverage.js +65 -0
- package/dist/src/tokens/css.js +58 -0
- package/dist/src/tokens/index.js +12 -0
- package/dist/src/tokens/lint.js +96 -0
- package/dist/src/tokens/model.js +118 -0
- package/dist/src/tokens/settings.js +87 -0
- package/dist/src/tokens/siblings.js +104 -0
- package/dist/src/typecheck/explain.js +123 -0
- package/dist/src/typecheck/index.js +8 -0
- package/dist/src/typecheck/typecheck.js +332 -0
- package/docs/README.md +23 -28
- package/docs/authoring.md +97 -0
- package/docs/configuration.md +307 -692
- package/docs/exit-codes.md +76 -94
- package/docs/furnace.md +113 -181
- package/docs/gate.md +205 -0
- package/docs/getting-started.md +165 -0
- package/docs/machine-output.md +201 -277
- package/docs/migrating.md +261 -0
- package/docs/patch-workflow.md +163 -653
- package/docs/quality.md +220 -0
- package/docs/source-workflow.md +228 -0
- package/docs/testing.md +101 -712
- package/docs/workspaces.md +187 -0
- package/package.json +22 -30
- package/templates/configs/common.mozconfig +8 -2
- package/templates/configs/darwin.mozconfig +6 -7
- package/templates/configs/linux.mozconfig +5 -8
- package/templates/configs/win32.mozconfig +3 -9
- package/dist/bin/fireforge.d.ts +0 -9
- package/dist/src/cli-usage-error.d.ts +0 -46
- package/dist/src/cli-usage-error.js +0 -81
- package/dist/src/cli.d.ts +0 -41
- package/dist/src/cli.js +0 -380
- package/dist/src/commands/bootstrap-checks.d.ts +0 -16
- package/dist/src/commands/bootstrap-checks.js +0 -66
- package/dist/src/commands/bootstrap.d.ts +0 -10
- package/dist/src/commands/build-prelock.d.ts +0 -20
- package/dist/src/commands/build-prelock.js +0 -50
- package/dist/src/commands/build.d.ts +0 -13
- package/dist/src/commands/check-report.d.ts +0 -41
- package/dist/src/commands/check-report.js +0 -91
- package/dist/src/commands/check-run.d.ts +0 -33
- package/dist/src/commands/check-run.js +0 -112
- package/dist/src/commands/check-steps.d.ts +0 -75
- package/dist/src/commands/check-steps.js +0 -200
- package/dist/src/commands/check.d.ts +0 -32
- package/dist/src/commands/config.d.ts +0 -13
- package/dist/src/commands/declarations-report.d.ts +0 -49
- package/dist/src/commands/declarations-report.js +0 -83
- package/dist/src/commands/destructive-decision.d.ts +0 -19
- package/dist/src/commands/destructive-decision.js +0 -31
- package/dist/src/commands/discard.d.ts +0 -12
- package/dist/src/commands/doctor-check-core.d.ts +0 -110
- package/dist/src/commands/doctor-check-core.js +0 -24
- package/dist/src/commands/doctor-engine-eslint.d.ts +0 -3
- package/dist/src/commands/doctor-engine-eslint.js +0 -17
- package/dist/src/commands/doctor-external-toolchains.d.ts +0 -3
- package/dist/src/commands/doctor-external-toolchains.js +0 -56
- package/dist/src/commands/doctor-furnace-config-sync.d.ts +0 -18
- package/dist/src/commands/doctor-furnace-config-sync.js +0 -295
- package/dist/src/commands/doctor-furnace-jar.d.ts +0 -14
- package/dist/src/commands/doctor-furnace-jar.js +0 -44
- package/dist/src/commands/doctor-furnace.d.ts +0 -8
- package/dist/src/commands/doctor-furnace.js +0 -514
- package/dist/src/commands/doctor-macos-sdk.d.ts +0 -8
- package/dist/src/commands/doctor-macos-sdk.js +0 -158
- package/dist/src/commands/doctor-orphaned-harness.d.ts +0 -41
- package/dist/src/commands/doctor-orphaned-harness.js +0 -98
- package/dist/src/commands/doctor-patch-manifest.d.ts +0 -9
- package/dist/src/commands/doctor-patch-manifest.js +0 -156
- package/dist/src/commands/doctor-post-rebase-audit.d.ts +0 -2
- package/dist/src/commands/doctor-post-rebase-audit.js +0 -108
- package/dist/src/commands/doctor-source-pin.d.ts +0 -29
- package/dist/src/commands/doctor-source-pin.js +0 -91
- package/dist/src/commands/doctor-working-tree.d.ts +0 -27
- package/dist/src/commands/doctor-working-tree.js +0 -89
- package/dist/src/commands/doctor.d.ts +0 -49
- package/dist/src/commands/download.d.ts +0 -11
- package/dist/src/commands/export-adopt-check.d.ts +0 -37
- package/dist/src/commands/export-adopt-check.js +0 -97
- package/dist/src/commands/export-all.d.ts +0 -11
- package/dist/src/commands/export-all.js +0 -361
- package/dist/src/commands/export-flow.d.ts +0 -124
- package/dist/src/commands/export-flow.js +0 -423
- package/dist/src/commands/export-placement-conflicts.d.ts +0 -17
- package/dist/src/commands/export-placement-conflicts.js +0 -75
- package/dist/src/commands/export-placement-gate.d.ts +0 -42
- package/dist/src/commands/export-placement-gate.js +0 -107
- package/dist/src/commands/export-placement-policy.d.ts +0 -22
- package/dist/src/commands/export-placement-policy.js +0 -54
- package/dist/src/commands/export-shared.d.ts +0 -152
- package/dist/src/commands/export-shared.js +0 -396
- package/dist/src/commands/export-staged-registration.d.ts +0 -46
- package/dist/src/commands/export-staged-registration.js +0 -91
- package/dist/src/commands/export.d.ts +0 -13
- package/dist/src/commands/forward-import-remedy.d.ts +0 -31
- package/dist/src/commands/forward-import-remedy.js +0 -62
- package/dist/src/commands/furnace/apply.d.ts +0 -8
- package/dist/src/commands/furnace/apply.js +0 -327
- package/dist/src/commands/furnace/authoring-config.d.ts +0 -13
- package/dist/src/commands/furnace/authoring-config.js +0 -19
- package/dist/src/commands/furnace/chrome-doc-remove.d.ts +0 -14
- package/dist/src/commands/furnace/chrome-doc-remove.js +0 -148
- package/dist/src/commands/furnace/chrome-doc-templates.d.ts +0 -152
- package/dist/src/commands/furnace/chrome-doc-templates.js +0 -331
- package/dist/src/commands/furnace/chrome-doc-tests.d.ts +0 -23
- package/dist/src/commands/furnace/chrome-doc-tests.js +0 -148
- package/dist/src/commands/furnace/chrome-doc.d.ts +0 -87
- package/dist/src/commands/furnace/chrome-doc.js +0 -365
- package/dist/src/commands/furnace/create-browser-test.d.ts +0 -44
- package/dist/src/commands/furnace/create-browser-test.js +0 -179
- package/dist/src/commands/furnace/create-dry-run.d.ts +0 -49
- package/dist/src/commands/furnace/create-dry-run.js +0 -107
- package/dist/src/commands/furnace/create-features.d.ts +0 -24
- package/dist/src/commands/furnace/create-features.js +0 -55
- package/dist/src/commands/furnace/create-mochikit.d.ts +0 -29
- package/dist/src/commands/furnace/create-mochikit.js +0 -75
- package/dist/src/commands/furnace/create-readback.d.ts +0 -22
- package/dist/src/commands/furnace/create-readback.js +0 -32
- package/dist/src/commands/furnace/create-templates.d.ts +0 -119
- package/dist/src/commands/furnace/create-templates.js +0 -283
- package/dist/src/commands/furnace/create-validation.d.ts +0 -6
- package/dist/src/commands/furnace/create-validation.js +0 -59
- package/dist/src/commands/furnace/create-xpcshell.d.ts +0 -27
- package/dist/src/commands/furnace/create-xpcshell.js +0 -80
- package/dist/src/commands/furnace/create.d.ts +0 -24
- package/dist/src/commands/furnace/create.js +0 -407
- package/dist/src/commands/furnace/deploy-fragment-includers.d.ts +0 -59
- package/dist/src/commands/furnace/deploy-fragment-includers.js +0 -120
- package/dist/src/commands/furnace/deploy-named.d.ts +0 -48
- package/dist/src/commands/furnace/deploy-named.js +0 -107
- package/dist/src/commands/furnace/deploy.d.ts +0 -9
- package/dist/src/commands/furnace/deploy.js +0 -218
- package/dist/src/commands/furnace/diff.d.ts +0 -11
- package/dist/src/commands/furnace/diff.js +0 -238
- package/dist/src/commands/furnace/index.d.ts +0 -4
- package/dist/src/commands/furnace/index.js +0 -282
- package/dist/src/commands/furnace/init.d.ts +0 -11
- package/dist/src/commands/furnace/init.js +0 -287
- package/dist/src/commands/furnace/list.d.ts +0 -8
- package/dist/src/commands/furnace/list.js +0 -104
- package/dist/src/commands/furnace/override.d.ts +0 -16
- package/dist/src/commands/furnace/override.js +0 -454
- package/dist/src/commands/furnace/preview.d.ts +0 -19
- package/dist/src/commands/furnace/preview.js +0 -349
- package/dist/src/commands/furnace/refresh.d.ts +0 -10
- package/dist/src/commands/furnace/refresh.js +0 -303
- package/dist/src/commands/furnace/remove-mutations.d.ts +0 -36
- package/dist/src/commands/furnace/remove-mutations.js +0 -168
- package/dist/src/commands/furnace/remove-state.d.ts +0 -20
- package/dist/src/commands/furnace/remove-state.js +0 -60
- package/dist/src/commands/furnace/remove.d.ts +0 -8
- package/dist/src/commands/furnace/remove.js +0 -415
- package/dist/src/commands/furnace/rename-browser-test.d.ts +0 -2
- package/dist/src/commands/furnace/rename-browser-test.js +0 -68
- package/dist/src/commands/furnace/rename-dry-run.d.ts +0 -29
- package/dist/src/commands/furnace/rename-dry-run.js +0 -127
- package/dist/src/commands/furnace/rename-helpers.d.ts +0 -26
- package/dist/src/commands/furnace/rename-helpers.js +0 -85
- package/dist/src/commands/furnace/rename-registrations.d.ts +0 -41
- package/dist/src/commands/furnace/rename-registrations.js +0 -98
- package/dist/src/commands/furnace/rename-xpcshell.d.ts +0 -32
- package/dist/src/commands/furnace/rename-xpcshell.js +0 -95
- package/dist/src/commands/furnace/rename.d.ts +0 -6
- package/dist/src/commands/furnace/rename.js +0 -400
- package/dist/src/commands/furnace/scan.d.ts +0 -14
- package/dist/src/commands/furnace/scan.js +0 -192
- package/dist/src/commands/furnace/status.d.ts +0 -7
- package/dist/src/commands/furnace/status.js +0 -209
- package/dist/src/commands/furnace/sync.d.ts +0 -12
- package/dist/src/commands/furnace/sync.js +0 -145
- package/dist/src/commands/furnace/test-file-name.d.ts +0 -28
- package/dist/src/commands/furnace/test-file-name.js +0 -39
- package/dist/src/commands/furnace/validate-report.d.ts +0 -45
- package/dist/src/commands/furnace/validate-report.js +0 -91
- package/dist/src/commands/furnace/validate.d.ts +0 -8
- package/dist/src/commands/furnace/validate.js +0 -309
- package/dist/src/commands/furnace/validation-output.d.ts +0 -47
- package/dist/src/commands/furnace/validation-output.js +0 -161
- package/dist/src/commands/import.d.ts +0 -11
- package/dist/src/commands/lint-per-patch.d.ts +0 -10
- package/dist/src/commands/lint-per-patch.js +0 -428
- package/dist/src/commands/lint-per-run-checkjs.d.ts +0 -66
- package/dist/src/commands/lint-per-run-checkjs.js +0 -102
- package/dist/src/commands/lint-report.d.ts +0 -25
- package/dist/src/commands/lint-report.js +0 -76
- package/dist/src/commands/lint.d.ts +0 -47
- package/dist/src/commands/manifest.d.ts +0 -38
- package/dist/src/commands/manifest.js +0 -68
- package/dist/src/commands/package.d.ts +0 -11
- package/dist/src/commands/park.d.ts +0 -22
- package/dist/src/commands/park.js +0 -232
- package/dist/src/commands/patch/compact.d.ts +0 -28
- package/dist/src/commands/patch/compact.js +0 -208
- package/dist/src/commands/patch/delete-gap-notice.d.ts +0 -24
- package/dist/src/commands/patch/delete-gap-notice.js +0 -48
- package/dist/src/commands/patch/delete.d.ts +0 -28
- package/dist/src/commands/patch/delete.js +0 -131
- package/dist/src/commands/patch/entry-projection.d.ts +0 -13
- package/dist/src/commands/patch/entry-projection.js +0 -24
- package/dist/src/commands/patch/index.d.ts +0 -16
- package/dist/src/commands/patch/index.js +0 -52
- package/dist/src/commands/patch/lint-ignore-from.d.ts +0 -43
- package/dist/src/commands/patch/lint-ignore-from.js +0 -141
- package/dist/src/commands/patch/lint-ignore.d.ts +0 -42
- package/dist/src/commands/patch/lint-ignore.js +0 -261
- package/dist/src/commands/patch/move-files-adopt.d.ts +0 -33
- package/dist/src/commands/patch/move-files-adopt.js +0 -65
- package/dist/src/commands/patch/move-files-create.d.ts +0 -19
- package/dist/src/commands/patch/move-files-create.js +0 -187
- package/dist/src/commands/patch/move-files-into.d.ts +0 -65
- package/dist/src/commands/patch/move-files-into.js +0 -325
- package/dist/src/commands/patch/move-files-retire.d.ts +0 -39
- package/dist/src/commands/patch/move-files-retire.js +0 -91
- package/dist/src/commands/patch/move-files.d.ts +0 -28
- package/dist/src/commands/patch/move-files.js +0 -224
- package/dist/src/commands/patch/move-size-tier.d.ts +0 -27
- package/dist/src/commands/patch/move-size-tier.js +0 -66
- package/dist/src/commands/patch/patch-context.d.ts +0 -40
- package/dist/src/commands/patch/patch-context.js +0 -51
- package/dist/src/commands/patch/removal-created-files.d.ts +0 -48
- package/dist/src/commands/patch/removal-created-files.js +0 -83
- package/dist/src/commands/patch/removal-dependents.d.ts +0 -63
- package/dist/src/commands/patch/removal-dependents.js +0 -133
- package/dist/src/commands/patch/rename.d.ts +0 -35
- package/dist/src/commands/patch/rename.js +0 -378
- package/dist/src/commands/patch/reorder-projection.d.ts +0 -17
- package/dist/src/commands/patch/reorder-projection.js +0 -49
- package/dist/src/commands/patch/reorder-shift.d.ts +0 -30
- package/dist/src/commands/patch/reorder-shift.js +0 -307
- package/dist/src/commands/patch/reorder.d.ts +0 -34
- package/dist/src/commands/patch/reorder.js +0 -375
- package/dist/src/commands/patch/reserve.d.ts +0 -33
- package/dist/src/commands/patch/reserve.js +0 -152
- package/dist/src/commands/patch/retire.d.ts +0 -34
- package/dist/src/commands/patch/retire.js +0 -133
- package/dist/src/commands/patch/split-plan.d.ts +0 -125
- package/dist/src/commands/patch/split-plan.js +0 -313
- package/dist/src/commands/patch/split-staged.d.ts +0 -108
- package/dist/src/commands/patch/split-staged.js +0 -202
- package/dist/src/commands/patch/split.d.ts +0 -43
- package/dist/src/commands/patch/split.js +0 -367
- package/dist/src/commands/patch/stage.d.ts +0 -34
- package/dist/src/commands/patch/stage.js +0 -153
- package/dist/src/commands/patch/staged-dependency-batch.d.ts +0 -48
- package/dist/src/commands/patch/staged-dependency-batch.js +0 -176
- package/dist/src/commands/patch/staged-dependency-entries.d.ts +0 -44
- package/dist/src/commands/patch/staged-dependency-entries.js +0 -80
- package/dist/src/commands/patch/staged-dependency-from.d.ts +0 -14
- package/dist/src/commands/patch/staged-dependency-from.js +0 -114
- package/dist/src/commands/patch/staged-dependency-remove.d.ts +0 -53
- package/dist/src/commands/patch/staged-dependency-remove.js +0 -117
- package/dist/src/commands/patch/staged-dependency-validate.d.ts +0 -15
- package/dist/src/commands/patch/staged-dependency-validate.js +0 -49
- package/dist/src/commands/patch/staged-dependency.d.ts +0 -22
- package/dist/src/commands/patch/staged-dependency.js +0 -248
- package/dist/src/commands/patch/tier.d.ts +0 -34
- package/dist/src/commands/patch/tier.js +0 -125
- package/dist/src/commands/patch-rename-map.d.ts +0 -30
- package/dist/src/commands/patch-rename-map.js +0 -54
- package/dist/src/commands/pending-resolution.d.ts +0 -15
- package/dist/src/commands/pending-resolution.js +0 -25
- package/dist/src/commands/re-export-adjacent-registrations.d.ts +0 -20
- package/dist/src/commands/re-export-adjacent-registrations.js +0 -75
- package/dist/src/commands/re-export-adjacent.d.ts +0 -111
- package/dist/src/commands/re-export-adjacent.js +0 -267
- package/dist/src/commands/re-export-bulk-scan.d.ts +0 -19
- package/dist/src/commands/re-export-bulk-scan.js +0 -233
- package/dist/src/commands/re-export-drift.d.ts +0 -110
- package/dist/src/commands/re-export-drift.js +0 -358
- package/dist/src/commands/re-export-files.d.ts +0 -15
- package/dist/src/commands/re-export-files.js +0 -307
- package/dist/src/commands/re-export-hunks.d.ts +0 -35
- package/dist/src/commands/re-export-hunks.js +0 -220
- package/dist/src/commands/re-export-lint.d.ts +0 -137
- package/dist/src/commands/re-export-lint.js +0 -303
- package/dist/src/commands/re-export-options.d.ts +0 -29
- package/dist/src/commands/re-export-options.js +0 -191
- package/dist/src/commands/re-export-preflight.d.ts +0 -23
- package/dist/src/commands/re-export-preflight.js +0 -159
- package/dist/src/commands/re-export-purity-scope.d.ts +0 -18
- package/dist/src/commands/re-export-purity-scope.js +0 -137
- package/dist/src/commands/re-export-register.d.ts +0 -12
- package/dist/src/commands/re-export-register.js +0 -99
- package/dist/src/commands/re-export-removed.d.ts +0 -15
- package/dist/src/commands/re-export-removed.js +0 -94
- package/dist/src/commands/re-export-retired-declarations.d.ts +0 -22
- package/dist/src/commands/re-export-retired-declarations.js +0 -113
- package/dist/src/commands/re-export-scan-owner.d.ts +0 -44
- package/dist/src/commands/re-export-scan-owner.js +0 -116
- package/dist/src/commands/re-export-scan.d.ts +0 -72
- package/dist/src/commands/re-export-scan.js +0 -265
- package/dist/src/commands/re-export-single.d.ts +0 -39
- package/dist/src/commands/re-export-single.js +0 -388
- package/dist/src/commands/re-export-stale-registrations.d.ts +0 -39
- package/dist/src/commands/re-export-stale-registrations.js +0 -106
- package/dist/src/commands/re-export-summary.d.ts +0 -28
- package/dist/src/commands/re-export-summary.js +0 -36
- package/dist/src/commands/re-export.d.ts +0 -8
- package/dist/src/commands/rebase/abort.d.ts +0 -7
- package/dist/src/commands/rebase/abort.js +0 -67
- package/dist/src/commands/rebase/confirm.d.ts +0 -42
- package/dist/src/commands/rebase/confirm.js +0 -36
- package/dist/src/commands/rebase/conflict-summary.d.ts +0 -12
- package/dist/src/commands/rebase/conflict-summary.js +0 -37
- package/dist/src/commands/rebase/continue.d.ts +0 -7
- package/dist/src/commands/rebase/continue.js +0 -119
- package/dist/src/commands/rebase/index.d.ts +0 -22
- package/dist/src/commands/rebase/index.js +0 -209
- package/dist/src/commands/rebase/patch-loop.d.ts +0 -15
- package/dist/src/commands/rebase/patch-loop.js +0 -289
- package/dist/src/commands/rebase/summary.d.ts +0 -8
- package/dist/src/commands/rebase/summary.js +0 -47
- package/dist/src/commands/register.d.ts +0 -13
- package/dist/src/commands/reset.d.ts +0 -11
- package/dist/src/commands/resolve.d.ts +0 -36
- package/dist/src/commands/run.d.ts +0 -10
- package/dist/src/commands/setup-support.d.ts +0 -35
- package/dist/src/commands/setup-support.js +0 -386
- package/dist/src/commands/setup.d.ts +0 -11
- package/dist/src/commands/source.d.ts +0 -9
- package/dist/src/commands/source.js +0 -120
- package/dist/src/commands/status-check.d.ts +0 -87
- package/dist/src/commands/status-check.js +0 -161
- package/dist/src/commands/status-json.d.ts +0 -45
- package/dist/src/commands/status-json.js +0 -97
- package/dist/src/commands/status-output.d.ts +0 -23
- package/dist/src/commands/status-output.js +0 -231
- package/dist/src/commands/status-ownership.d.ts +0 -54
- package/dist/src/commands/status-ownership.js +0 -59
- package/dist/src/commands/status-scope.d.ts +0 -37
- package/dist/src/commands/status-scope.js +0 -54
- package/dist/src/commands/status.d.ts +0 -11
- package/dist/src/commands/test-appdir.d.ts +0 -6
- package/dist/src/commands/test-appdir.js +0 -29
- package/dist/src/commands/test-browser-preflight.d.ts +0 -28
- package/dist/src/commands/test-browser-preflight.js +0 -197
- package/dist/src/commands/test-build-furnace.d.ts +0 -21
- package/dist/src/commands/test-build-furnace.js +0 -53
- package/dist/src/commands/test-build-phase.d.ts +0 -29
- package/dist/src/commands/test-build-phase.js +0 -290
- package/dist/src/commands/test-checkjs.d.ts +0 -3
- package/dist/src/commands/test-checkjs.js +0 -35
- package/dist/src/commands/test-control-restore.d.ts +0 -40
- package/dist/src/commands/test-control-restore.js +0 -86
- package/dist/src/commands/test-diagnose.d.ts +0 -23
- package/dist/src/commands/test-diagnose.js +0 -317
- package/dist/src/commands/test-dispatch.d.ts +0 -39
- package/dist/src/commands/test-dispatch.js +0 -281
- package/dist/src/commands/test-furnace-reach.d.ts +0 -37
- package/dist/src/commands/test-furnace-reach.js +0 -132
- package/dist/src/commands/test-harness-env.d.ts +0 -23
- package/dist/src/commands/test-harness-env.js +0 -81
- package/dist/src/commands/test-harness-teardown.d.ts +0 -62
- package/dist/src/commands/test-harness-teardown.js +0 -128
- package/dist/src/commands/test-modes.d.ts +0 -57
- package/dist/src/commands/test-modes.js +0 -158
- package/dist/src/commands/test-multi-verdict.d.ts +0 -61
- package/dist/src/commands/test-multi-verdict.js +0 -112
- package/dist/src/commands/test-orchestrate.d.ts +0 -63
- package/dist/src/commands/test-orchestrate.js +0 -274
- package/dist/src/commands/test-perf-scope.d.ts +0 -50
- package/dist/src/commands/test-perf-scope.js +0 -138
- package/dist/src/commands/test-prelock.d.ts +0 -61
- package/dist/src/commands/test-prelock.js +0 -301
- package/dist/src/commands/test-register.d.ts +0 -4
- package/dist/src/commands/test-register.js +0 -181
- package/dist/src/commands/test-results.d.ts +0 -71
- package/dist/src/commands/test-results.js +0 -79
- package/dist/src/commands/test-run.d.ts +0 -89
- package/dist/src/commands/test-run.js +0 -251
- package/dist/src/commands/test-shards.d.ts +0 -114
- package/dist/src/commands/test-shards.js +0 -272
- package/dist/src/commands/test-stale-gate.d.ts +0 -52
- package/dist/src/commands/test-stale-gate.js +0 -165
- package/dist/src/commands/test-verdict.d.ts +0 -92
- package/dist/src/commands/test-verdict.js +0 -162
- package/dist/src/commands/test.d.ts +0 -22
- package/dist/src/commands/token-coverage.d.ts +0 -5
- package/dist/src/commands/token-coverage.js +0 -170
- package/dist/src/commands/token-lint.d.ts +0 -14
- package/dist/src/commands/token-lint.js +0 -151
- package/dist/src/commands/token-list.d.ts +0 -26
- package/dist/src/commands/token-list.js +0 -153
- package/dist/src/commands/token.d.ts +0 -14
- package/dist/src/commands/tree.d.ts +0 -19
- package/dist/src/commands/tree.js +0 -341
- package/dist/src/commands/typecheck.d.ts +0 -56
- package/dist/src/commands/verify-scope.d.ts +0 -28
- package/dist/src/commands/verify-scope.js +0 -67
- package/dist/src/commands/verify.d.ts +0 -58
- package/dist/src/commands/watch.d.ts +0 -9
- package/dist/src/commands/wire.d.ts +0 -13
- package/dist/src/core/ast-utils.d.ts +0 -73
- package/dist/src/core/ast-utils.js +0 -105
- package/dist/src/core/brand-validation.d.ts +0 -7
- package/dist/src/core/brand-validation.js +0 -14
- package/dist/src/core/branding.d.ts +0 -86
- package/dist/src/core/branding.js +0 -371
- package/dist/src/core/browser-wire.d.ts +0 -48
- package/dist/src/core/browser-wire.js +0 -133
- package/dist/src/core/build-audit-platform.d.ts +0 -67
- package/dist/src/core/build-audit-platform.js +0 -373
- package/dist/src/core/build-audit-registration.d.ts +0 -80
- package/dist/src/core/build-audit-registration.js +0 -181
- package/dist/src/core/build-audit-resolve.d.ts +0 -78
- package/dist/src/core/build-audit-resolve.js +0 -240
- package/dist/src/core/build-audit-skip.d.ts +0 -57
- package/dist/src/core/build-audit-skip.js +0 -112
- package/dist/src/core/build-audit-transforms.d.ts +0 -23
- package/dist/src/core/build-audit-transforms.js +0 -92
- package/dist/src/core/build-audit.d.ts +0 -93
- package/dist/src/core/build-audit.js +0 -633
- package/dist/src/core/build-baseline-types.d.ts +0 -225
- package/dist/src/core/build-baseline-types.js +0 -10
- package/dist/src/core/build-baseline-validate.d.ts +0 -32
- package/dist/src/core/build-baseline-validate.js +0 -173
- package/dist/src/core/build-baseline.d.ts +0 -103
- package/dist/src/core/build-baseline.js +0 -261
- package/dist/src/core/build-jar-escalation.d.ts +0 -61
- package/dist/src/core/build-jar-escalation.js +0 -125
- package/dist/src/core/build-overwrite-guard.d.ts +0 -92
- package/dist/src/core/build-overwrite-guard.js +0 -235
- package/dist/src/core/build-prepare.d.ts +0 -83
- package/dist/src/core/build-prepare.js +0 -414
- package/dist/src/core/build-run-record.d.ts +0 -74
- package/dist/src/core/build-run-record.js +0 -136
- package/dist/src/core/checkjs-support-heads.d.ts +0 -41
- package/dist/src/core/checkjs-support-heads.js +0 -104
- package/dist/src/core/component-source-guard.d.ts +0 -20
- package/dist/src/core/component-source-guard.js +0 -68
- package/dist/src/core/config-mutate.d.ts +0 -16
- package/dist/src/core/config-mutate.js +0 -76
- package/dist/src/core/config-paths.d.ts +0 -16
- package/dist/src/core/config-paths.js +0 -106
- package/dist/src/core/config-state.d.ts +0 -16
- package/dist/src/core/config-state.js +0 -141
- package/dist/src/core/config-validate-build-audit.d.ts +0 -8
- package/dist/src/core/config-validate-build-audit.js +0 -80
- package/dist/src/core/config-validate-check.d.ts +0 -8
- package/dist/src/core/config-validate-check.js +0 -219
- package/dist/src/core/config-validate-file-size.d.ts +0 -15
- package/dist/src/core/config-validate-file-size.js +0 -154
- package/dist/src/core/config-validate-history.d.ts +0 -11
- package/dist/src/core/config-validate-history.js +0 -38
- package/dist/src/core/config-validate-patch-policy.d.ts +0 -7
- package/dist/src/core/config-validate-patch-policy.js +0 -274
- package/dist/src/core/config-validate-test-toolchains.d.ts +0 -8
- package/dist/src/core/config-validate-test-toolchains.js +0 -133
- package/dist/src/core/config-validate-token-scales.d.ts +0 -9
- package/dist/src/core/config-validate-token-scales.js +0 -92
- package/dist/src/core/config-validate.d.ts +0 -11
- package/dist/src/core/config-validate.js +0 -503
- package/dist/src/core/config.d.ts +0 -92
- package/dist/src/core/config.js +0 -169
- package/dist/src/core/coverage-dispatch.d.ts +0 -24
- package/dist/src/core/coverage-dispatch.js +0 -44
- package/dist/src/core/coverage-extend.d.ts +0 -89
- package/dist/src/core/coverage-extend.js +0 -239
- package/dist/src/core/coverage-records.d.ts +0 -107
- package/dist/src/core/coverage-records.js +0 -383
- package/dist/src/core/destructive.d.ts +0 -144
- package/dist/src/core/destructive.js +0 -182
- package/dist/src/core/diff-hunks.d.ts +0 -73
- package/dist/src/core/diff-hunks.js +0 -286
- package/dist/src/core/discard-baseline.d.ts +0 -60
- package/dist/src/core/discard-baseline.js +0 -247
- package/dist/src/core/display-state.d.ts +0 -50
- package/dist/src/core/display-state.js +0 -87
- package/dist/src/core/engine-changes.d.ts +0 -40
- package/dist/src/core/engine-changes.js +0 -95
- package/dist/src/core/engine-precondition.d.ts +0 -42
- package/dist/src/core/engine-precondition.js +0 -60
- package/dist/src/core/engine-session-lock.d.ts +0 -119
- package/dist/src/core/engine-session-lock.js +0 -374
- package/dist/src/core/engine-write-boundary.d.ts +0 -5
- package/dist/src/core/engine-write-boundary.js +0 -41
- package/dist/src/core/export-moved-code-shape.d.ts +0 -98
- package/dist/src/core/export-moved-code-shape.js +0 -220
- package/dist/src/core/file-lock-owner.d.ts +0 -103
- package/dist/src/core/file-lock-owner.js +0 -259
- package/dist/src/core/file-lock-queue.d.ts +0 -67
- package/dist/src/core/file-lock-queue.js +0 -219
- package/dist/src/core/file-lock-shared.d.ts +0 -57
- package/dist/src/core/file-lock-shared.js +0 -117
- package/dist/src/core/file-lock.d.ts +0 -143
- package/dist/src/core/file-lock.js +0 -531
- package/dist/src/core/firefox-archive.d.ts +0 -45
- package/dist/src/core/firefox-archive.js +0 -96
- package/dist/src/core/firefox-cache.d.ts +0 -30
- package/dist/src/core/firefox-cache.js +0 -248
- package/dist/src/core/firefox-download.d.ts +0 -30
- package/dist/src/core/firefox-download.js +0 -152
- package/dist/src/core/firefox-extract.d.ts +0 -42
- package/dist/src/core/firefox-extract.js +0 -248
- package/dist/src/core/firefox-ignorefile.d.ts +0 -17
- package/dist/src/core/firefox-ignorefile.js +0 -30
- package/dist/src/core/firefox.d.ts +0 -66
- package/dist/src/core/firefox.js +0 -121
- package/dist/src/core/forward-registrations.d.ts +0 -33
- package/dist/src/core/forward-registrations.js +0 -16
- package/dist/src/core/furnace-apply-dry-run.d.ts +0 -12
- package/dist/src/core/furnace-apply-dry-run.js +0 -99
- package/dist/src/core/furnace-apply-ftl.d.ts +0 -49
- package/dist/src/core/furnace-apply-ftl.js +0 -210
- package/dist/src/core/furnace-apply-helpers.d.ts +0 -106
- package/dist/src/core/furnace-apply-helpers.js +0 -436
- package/dist/src/core/furnace-apply-output.d.ts +0 -36
- package/dist/src/core/furnace-apply-output.js +0 -111
- package/dist/src/core/furnace-apply-overwrite-warn.d.ts +0 -62
- package/dist/src/core/furnace-apply-overwrite-warn.js +0 -124
- package/dist/src/core/furnace-apply-undeploy-actions.d.ts +0 -10
- package/dist/src/core/furnace-apply-undeploy-actions.js +0 -48
- package/dist/src/core/furnace-apply.d.ts +0 -49
- package/dist/src/core/furnace-apply.js +0 -465
- package/dist/src/core/furnace-checksum-utils.d.ts +0 -25
- package/dist/src/core/furnace-checksum-utils.js +0 -54
- package/dist/src/core/furnace-composed-source.d.ts +0 -76
- package/dist/src/core/furnace-composed-source.js +0 -167
- package/dist/src/core/furnace-config-array-utils.d.ts +0 -11
- package/dist/src/core/furnace-config-array-utils.js +0 -26
- package/dist/src/core/furnace-config-custom.d.ts +0 -15
- package/dist/src/core/furnace-config-custom.js +0 -73
- package/dist/src/core/furnace-config-order.d.ts +0 -8
- package/dist/src/core/furnace-config-order.js +0 -90
- package/dist/src/core/furnace-config-tokens.d.ts +0 -17
- package/dist/src/core/furnace-config-tokens.js +0 -42
- package/dist/src/core/furnace-config-validate-exceptions.d.ts +0 -17
- package/dist/src/core/furnace-config-validate-exceptions.js +0 -122
- package/dist/src/core/furnace-config-validate.d.ts +0 -32
- package/dist/src/core/furnace-config-validate.js +0 -146
- package/dist/src/core/furnace-config.d.ts +0 -139
- package/dist/src/core/furnace-config.js +0 -511
- package/dist/src/core/furnace-constants.d.ts +0 -79
- package/dist/src/core/furnace-constants.js +0 -123
- package/dist/src/core/furnace-css-fragments.d.ts +0 -96
- package/dist/src/core/furnace-css-fragments.js +0 -279
- package/dist/src/core/furnace-dir-entry.d.ts +0 -20
- package/dist/src/core/furnace-dir-entry.js +0 -21
- package/dist/src/core/furnace-fragment-includers.d.ts +0 -56
- package/dist/src/core/furnace-fragment-includers.js +0 -122
- package/dist/src/core/furnace-graph-utils.d.ts +0 -11
- package/dist/src/core/furnace-graph-utils.js +0 -93
- package/dist/src/core/furnace-jsconfig.d.ts +0 -61
- package/dist/src/core/furnace-jsconfig.js +0 -208
- package/dist/src/core/furnace-marker.d.ts +0 -15
- package/dist/src/core/furnace-marker.js +0 -21
- package/dist/src/core/furnace-operation.d.ts +0 -195
- package/dist/src/core/furnace-operation.js +0 -444
- package/dist/src/core/furnace-precondition.d.ts +0 -61
- package/dist/src/core/furnace-precondition.js +0 -67
- package/dist/src/core/furnace-refresh.d.ts +0 -28
- package/dist/src/core/furnace-refresh.js +0 -125
- package/dist/src/core/furnace-registration-ast.d.ts +0 -53
- package/dist/src/core/furnace-registration-ast.js +0 -402
- package/dist/src/core/furnace-registration-jar-inplace.d.ts +0 -12
- package/dist/src/core/furnace-registration-jar-inplace.js +0 -79
- package/dist/src/core/furnace-registration-remove.d.ts +0 -56
- package/dist/src/core/furnace-registration-remove.js +0 -260
- package/dist/src/core/furnace-registration-rename.d.ts +0 -26
- package/dist/src/core/furnace-registration-rename.js +0 -77
- package/dist/src/core/furnace-registration-validate.d.ts +0 -53
- package/dist/src/core/furnace-registration-validate.js +0 -110
- package/dist/src/core/furnace-registration.d.ts +0 -112
- package/dist/src/core/furnace-registration.js +0 -348
- package/dist/src/core/furnace-rollback.d.ts +0 -48
- package/dist/src/core/furnace-rollback.js +0 -170
- package/dist/src/core/furnace-scanner.d.ts +0 -47
- package/dist/src/core/furnace-scanner.js +0 -236
- package/dist/src/core/furnace-stale-export.d.ts +0 -60
- package/dist/src/core/furnace-stale-export.js +0 -125
- package/dist/src/core/furnace-staleness.d.ts +0 -24
- package/dist/src/core/furnace-staleness.js +0 -67
- package/dist/src/core/furnace-state-persist.d.ts +0 -68
- package/dist/src/core/furnace-state-persist.js +0 -116
- package/dist/src/core/furnace-step-errors.d.ts +0 -23
- package/dist/src/core/furnace-step-errors.js +0 -25
- package/dist/src/core/furnace-stories.d.ts +0 -37
- package/dist/src/core/furnace-stories.js +0 -186
- package/dist/src/core/furnace-validate-accessibility.d.ts +0 -39
- package/dist/src/core/furnace-validate-accessibility.js +0 -417
- package/dist/src/core/furnace-validate-checks.d.ts +0 -4
- package/dist/src/core/furnace-validate-checks.js +0 -6
- package/dist/src/core/furnace-validate-compatibility.d.ts +0 -6
- package/dist/src/core/furnace-validate-compatibility.js +0 -295
- package/dist/src/core/furnace-validate-exceptions.d.ts +0 -49
- package/dist/src/core/furnace-validate-exceptions.js +0 -98
- package/dist/src/core/furnace-validate-helpers.d.ts +0 -7
- package/dist/src/core/furnace-validate-helpers.js +0 -4
- package/dist/src/core/furnace-validate-icon-button.d.ts +0 -7
- package/dist/src/core/furnace-validate-icon-button.js +0 -78
- package/dist/src/core/furnace-validate-registration.d.ts +0 -67
- package/dist/src/core/furnace-validate-registration.js +0 -487
- package/dist/src/core/furnace-validate-structure.d.ts +0 -22
- package/dist/src/core/furnace-validate-structure.js +0 -122
- package/dist/src/core/furnace-validate.d.ts +0 -41
- package/dist/src/core/furnace-validate.js +0 -302
- package/dist/src/core/furnace-version-drift.d.ts +0 -57
- package/dist/src/core/furnace-version-drift.js +0 -102
- package/dist/src/core/gecko-dom-types.d.ts +0 -2
- package/dist/src/core/gecko-dom-types.js +0 -17
- package/dist/src/core/git-base.d.ts +0 -101
- package/dist/src/core/git-base.js +0 -162
- package/dist/src/core/git-diff-new-file.d.ts +0 -40
- package/dist/src/core/git-diff-new-file.js +0 -118
- package/dist/src/core/git-diff.d.ts +0 -82
- package/dist/src/core/git-diff.js +0 -539
- package/dist/src/core/git-file-ops.d.ts +0 -108
- package/dist/src/core/git-file-ops.js +0 -280
- package/dist/src/core/git-readonly-index.d.ts +0 -91
- package/dist/src/core/git-readonly-index.js +0 -177
- package/dist/src/core/git-status.d.ts +0 -84
- package/dist/src/core/git-status.js +0 -208
- package/dist/src/core/git.d.ts +0 -114
- package/dist/src/core/git.js +0 -540
- package/dist/src/core/harness-helper-pids.d.ts +0 -98
- package/dist/src/core/harness-helper-pids.js +0 -240
- package/dist/src/core/harness-orphans.d.ts +0 -118
- package/dist/src/core/harness-orphans.js +0 -268
- package/dist/src/core/harness-port-fallback.d.ts +0 -60
- package/dist/src/core/harness-port-fallback.js +0 -96
- package/dist/src/core/harness-port-reservation.d.ts +0 -60
- package/dist/src/core/harness-port-reservation.js +0 -122
- package/dist/src/core/history-log-file.d.ts +0 -61
- package/dist/src/core/history-log-file.js +0 -164
- package/dist/src/core/history-log.d.ts +0 -20
- package/dist/src/core/history-log.js +0 -30
- package/dist/src/core/json-preserving-edit.d.ts +0 -22
- package/dist/src/core/json-preserving-edit.js +0 -199
- package/dist/src/core/launchable-build.d.ts +0 -39
- package/dist/src/core/launchable-build.js +0 -85
- package/dist/src/core/license-headers.d.ts +0 -103
- package/dist/src/core/license-headers.js +0 -318
- package/dist/src/core/line-prefixer.d.ts +0 -18
- package/dist/src/core/line-prefixer.js +0 -34
- package/dist/src/core/lit-template-regions.d.ts +0 -4
- package/dist/src/core/lit-template-regions.js +0 -50
- package/dist/src/core/mach-build-artifacts.d.ts +0 -176
- package/dist/src/core/mach-build-artifacts.js +0 -436
- package/dist/src/core/mach-error-hints.d.ts +0 -24
- package/dist/src/core/mach-error-hints.js +0 -135
- package/dist/src/core/mach-known-noise-filter.d.ts +0 -122
- package/dist/src/core/mach-known-noise-filter.js +0 -257
- package/dist/src/core/mach-mozconfig.d.ts +0 -57
- package/dist/src/core/mach-mozconfig.js +0 -166
- package/dist/src/core/mach-python.d.ts +0 -19
- package/dist/src/core/mach-python.js +0 -131
- package/dist/src/core/mach-resource-shim.d.ts +0 -107
- package/dist/src/core/mach-resource-shim.js +0 -640
- package/dist/src/core/mach.d.ts +0 -284
- package/dist/src/core/mach.js +0 -445
- package/dist/src/core/marionette-port.d.ts +0 -153
- package/dist/src/core/marionette-port.js +0 -474
- package/dist/src/core/marionette-preflight.d.ts +0 -58
- package/dist/src/core/marionette-preflight.js +0 -332
- package/dist/src/core/markdown-table.d.ts +0 -104
- package/dist/src/core/markdown-table.js +0 -265
- package/dist/src/core/mochitest-server-port.d.ts +0 -81
- package/dist/src/core/mochitest-server-port.js +0 -175
- package/dist/src/core/module-resolution-preflight.d.ts +0 -65
- package/dist/src/core/module-resolution-preflight.js +0 -171
- package/dist/src/core/moz-manifest-helpers.d.ts +0 -79
- package/dist/src/core/moz-manifest-helpers.js +0 -163
- package/dist/src/core/moz-manifest-register.d.ts +0 -19
- package/dist/src/core/moz-manifest-register.js +0 -51
- package/dist/src/core/moz-manifest-rules.d.ts +0 -58
- package/dist/src/core/moz-manifest-rules.js +0 -264
- package/dist/src/core/moz-manifest-tokenizers.d.ts +0 -38
- package/dist/src/core/moz-manifest-tokenizers.js +0 -108
- package/dist/src/core/negative-control-compiled.d.ts +0 -46
- package/dist/src/core/negative-control-compiled.js +0 -109
- package/dist/src/core/negative-control-diff.d.ts +0 -51
- package/dist/src/core/negative-control-diff.js +0 -204
- package/dist/src/core/negative-control.d.ts +0 -150
- package/dist/src/core/negative-control.js +0 -399
- package/dist/src/core/objdir-install-manifests.d.ts +0 -73
- package/dist/src/core/objdir-install-manifests.js +0 -226
- package/dist/src/core/objdir-maintenance.d.ts +0 -10
- package/dist/src/core/objdir-maintenance.js +0 -167
- package/dist/src/core/ownership-table.d.ts +0 -53
- package/dist/src/core/ownership-table.js +0 -159
- package/dist/src/core/parent-exit-watchdog.d.ts +0 -62
- package/dist/src/core/parent-exit-watchdog.js +0 -69
- package/dist/src/core/park-store.d.ts +0 -63
- package/dist/src/core/park-store.js +0 -216
- package/dist/src/core/parser-fallback.d.ts +0 -50
- package/dist/src/core/parser-fallback.js +0 -61
- package/dist/src/core/patch-apply-fuzz.d.ts +0 -57
- package/dist/src/core/patch-apply-fuzz.js +0 -125
- package/dist/src/core/patch-apply.d.ts +0 -88
- package/dist/src/core/patch-apply.js +0 -435
- package/dist/src/core/patch-export-coverage.d.ts +0 -49
- package/dist/src/core/patch-export-coverage.js +0 -73
- package/dist/src/core/patch-export-metadata.d.ts +0 -46
- package/dist/src/core/patch-export-metadata.js +0 -47
- package/dist/src/core/patch-export-update.d.ts +0 -55
- package/dist/src/core/patch-export-update.js +0 -95
- package/dist/src/core/patch-export.d.ts +0 -175
- package/dist/src/core/patch-export.js +0 -312
- package/dist/src/core/patch-files.d.ts +0 -17
- package/dist/src/core/patch-files.js +0 -59
- package/dist/src/core/patch-identifier-suggest.d.ts +0 -26
- package/dist/src/core/patch-identifier-suggest.js +0 -135
- package/dist/src/core/patch-lint-binary.d.ts +0 -45
- package/dist/src/core/patch-lint-binary.js +0 -39
- package/dist/src/core/patch-lint-cache.d.ts +0 -78
- package/dist/src/core/patch-lint-cache.js +0 -233
- package/dist/src/core/patch-lint-checkjs-any-import.d.ts +0 -39
- package/dist/src/core/patch-lint-checkjs-any-import.js +0 -63
- package/dist/src/core/patch-lint-checkjs-cache.d.ts +0 -18
- package/dist/src/core/patch-lint-checkjs-cache.js +0 -45
- package/dist/src/core/patch-lint-checkjs-diagnostics.d.ts +0 -17
- package/dist/src/core/patch-lint-checkjs-diagnostics.js +0 -32
- package/dist/src/core/patch-lint-checkjs.d.ts +0 -180
- package/dist/src/core/patch-lint-checkjs.js +0 -611
- package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +0 -43
- package/dist/src/core/patch-lint-chrome-jsdoc.js +0 -90
- package/dist/src/core/patch-lint-code-lines.d.ts +0 -59
- package/dist/src/core/patch-lint-code-lines.js +0 -105
- package/dist/src/core/patch-lint-creators.d.ts +0 -26
- package/dist/src/core/patch-lint-creators.js +0 -45
- package/dist/src/core/patch-lint-cross.d.ts +0 -232
- package/dist/src/core/patch-lint-cross.js +0 -590
- package/dist/src/core/patch-lint-css.d.ts +0 -27
- package/dist/src/core/patch-lint-css.js +0 -228
- package/dist/src/core/patch-lint-diff-tag.d.ts +0 -51
- package/dist/src/core/patch-lint-diff-tag.js +0 -105
- package/dist/src/core/patch-lint-diff.d.ts +0 -42
- package/dist/src/core/patch-lint-diff.js +0 -100
- package/dist/src/core/patch-lint-file-size.d.ts +0 -57
- package/dist/src/core/patch-lint-file-size.js +0 -62
- package/dist/src/core/patch-lint-forward-registration-extended.d.ts +0 -61
- package/dist/src/core/patch-lint-forward-registration-extended.js +0 -265
- package/dist/src/core/patch-lint-forward-registration.d.ts +0 -71
- package/dist/src/core/patch-lint-forward-registration.js +0 -266
- package/dist/src/core/patch-lint-ignore.d.ts +0 -196
- package/dist/src/core/patch-lint-ignore.js +0 -429
- package/dist/src/core/patch-lint-imports.d.ts +0 -5
- package/dist/src/core/patch-lint-imports.js +0 -67
- package/dist/src/core/patch-lint-jsdoc.d.ts +0 -67
- package/dist/src/core/patch-lint-jsdoc.js +0 -471
- package/dist/src/core/patch-lint-module-registration.d.ts +0 -22
- package/dist/src/core/patch-lint-module-registration.js +0 -97
- package/dist/src/core/patch-lint-mozbuild.d.ts +0 -18
- package/dist/src/core/patch-lint-mozbuild.js +0 -192
- package/dist/src/core/patch-lint-observer.d.ts +0 -37
- package/dist/src/core/patch-lint-observer.js +0 -167
- package/dist/src/core/patch-lint-ownership.d.ts +0 -74
- package/dist/src/core/patch-lint-ownership.js +0 -125
- package/dist/src/core/patch-lint-prettier.d.ts +0 -34
- package/dist/src/core/patch-lint-prettier.js +0 -124
- package/dist/src/core/patch-lint-projection.d.ts +0 -25
- package/dist/src/core/patch-lint-projection.js +0 -43
- package/dist/src/core/patch-lint-queue-types.d.ts +0 -60
- package/dist/src/core/patch-lint-queue-types.js +0 -12
- package/dist/src/core/patch-lint-size-thresholds.d.ts +0 -52
- package/dist/src/core/patch-lint-size-thresholds.js +0 -110
- package/dist/src/core/patch-lint-size.d.ts +0 -117
- package/dist/src/core/patch-lint-size.js +0 -331
- package/dist/src/core/patch-lint-staged-registration.d.ts +0 -78
- package/dist/src/core/patch-lint-staged-registration.js +0 -110
- package/dist/src/core/patch-lint-token-scale.d.ts +0 -57
- package/dist/src/core/patch-lint-token-scale.js +0 -286
- package/dist/src/core/patch-lint-unmanaged-companion.d.ts +0 -106
- package/dist/src/core/patch-lint-unmanaged-companion.js +0 -214
- package/dist/src/core/patch-lint.d.ts +0 -191
- package/dist/src/core/patch-lint.js +0 -529
- package/dist/src/core/patch-lock.d.ts +0 -40
- package/dist/src/core/patch-lock.js +0 -129
- package/dist/src/core/patch-manifest-consistency.d.ts +0 -95
- package/dist/src/core/patch-manifest-consistency.js +0 -256
- package/dist/src/core/patch-manifest-files-affected.d.ts +0 -43
- package/dist/src/core/patch-manifest-files-affected.js +0 -77
- package/dist/src/core/patch-manifest-io.d.ts +0 -199
- package/dist/src/core/patch-manifest-io.js +0 -556
- package/dist/src/core/patch-manifest-key-order.d.ts +0 -23
- package/dist/src/core/patch-manifest-key-order.js +0 -60
- package/dist/src/core/patch-manifest-query.d.ts +0 -55
- package/dist/src/core/patch-manifest-query.js +0 -139
- package/dist/src/core/patch-manifest-resolve.d.ts +0 -21
- package/dist/src/core/patch-manifest-resolve.js +0 -35
- package/dist/src/core/patch-manifest-stage.d.ts +0 -46
- package/dist/src/core/patch-manifest-stage.js +0 -96
- package/dist/src/core/patch-manifest-validate.d.ts +0 -20
- package/dist/src/core/patch-manifest-validate.js +0 -240
- package/dist/src/core/patch-manifest.d.ts +0 -12
- package/dist/src/core/patch-manifest.js +0 -13
- package/dist/src/core/patch-order-legal.d.ts +0 -26
- package/dist/src/core/patch-order-legal.js +0 -88
- package/dist/src/core/patch-parse.d.ts +0 -161
- package/dist/src/core/patch-parse.js +0 -347
- package/dist/src/core/patch-policy-content.d.ts +0 -40
- package/dist/src/core/patch-policy-content.js +0 -216
- package/dist/src/core/patch-policy.d.ts +0 -80
- package/dist/src/core/patch-policy.js +0 -394
- package/dist/src/core/patch-registration-refs.d.ts +0 -41
- package/dist/src/core/patch-registration-refs.js +0 -107
- package/dist/src/core/patch-retired.d.ts +0 -57
- package/dist/src/core/patch-retired.js +0 -92
- package/dist/src/core/patch-source-metadata.d.ts +0 -6
- package/dist/src/core/patch-source-metadata.js +0 -12
- package/dist/src/core/patch-subset.d.ts +0 -18
- package/dist/src/core/patch-subset.js +0 -67
- package/dist/src/core/patch-transform.d.ts +0 -61
- package/dist/src/core/patch-transform.js +0 -198
- package/dist/src/core/preflight-wait.d.ts +0 -22
- package/dist/src/core/preflight-wait.js +0 -62
- package/dist/src/core/process-cpu-time.d.ts +0 -12
- package/dist/src/core/process-cpu-time.js +0 -52
- package/dist/src/core/process-owner.d.ts +0 -9
- package/dist/src/core/process-owner.js +0 -43
- package/dist/src/core/rebase-dry-run.d.ts +0 -48
- package/dist/src/core/rebase-dry-run.js +0 -105
- package/dist/src/core/rebase-from-version.d.ts +0 -46
- package/dist/src/core/rebase-from-version.js +0 -71
- package/dist/src/core/rebase-session.d.ts +0 -100
- package/dist/src/core/rebase-session.js +0 -174
- package/dist/src/core/register-browser-content.d.ts +0 -11
- package/dist/src/core/register-browser-content.js +0 -52
- package/dist/src/core/register-browser-test.d.ts +0 -18
- package/dist/src/core/register-browser-test.js +0 -66
- package/dist/src/core/register-module.d.ts +0 -11
- package/dist/src/core/register-module.js +0 -56
- package/dist/src/core/register-result.d.ts +0 -30
- package/dist/src/core/register-result.js +0 -8
- package/dist/src/core/register-scaffold.d.ts +0 -55
- package/dist/src/core/register-scaffold.js +0 -146
- package/dist/src/core/register-shared-css.d.ts +0 -36
- package/dist/src/core/register-shared-css.js +0 -112
- package/dist/src/core/register-xpcshell-test.d.ts +0 -50
- package/dist/src/core/register-xpcshell-test.js +0 -143
- package/dist/src/core/run-log-redact.d.ts +0 -38
- package/dist/src/core/run-log-redact.js +0 -69
- package/dist/src/core/run-log.d.ts +0 -97
- package/dist/src/core/run-log.js +0 -334
- package/dist/src/core/run-profile.d.ts +0 -57
- package/dist/src/core/run-profile.js +0 -137
- package/dist/src/core/shared-ftl.d.ts +0 -28
- package/dist/src/core/shared-ftl.js +0 -49
- package/dist/src/core/signal-critical.d.ts +0 -38
- package/dist/src/core/signal-critical.js +0 -62
- package/dist/src/core/smoke-patterns.d.ts +0 -81
- package/dist/src/core/smoke-patterns.js +0 -176
- package/dist/src/core/state-file.d.ts +0 -60
- package/dist/src/core/state-file.js +0 -71
- package/dist/src/core/status-binary.d.ts +0 -62
- package/dist/src/core/status-binary.js +0 -133
- package/dist/src/core/status-classify.d.ts +0 -96
- package/dist/src/core/status-classify.js +0 -244
- package/dist/src/core/test-changed-prefs.d.ts +0 -30
- package/dist/src/core/test-changed-prefs.js +0 -93
- package/dist/src/core/test-harness-crash.d.ts +0 -251
- package/dist/src/core/test-harness-crash.js +0 -780
- package/dist/src/core/test-harness-infra.d.ts +0 -32
- package/dist/src/core/test-harness-infra.js +0 -69
- package/dist/src/core/test-harness-output.d.ts +0 -45
- package/dist/src/core/test-harness-output.js +0 -119
- package/dist/src/core/test-harness-signature.d.ts +0 -57
- package/dist/src/core/test-harness-signature.js +0 -35
- package/dist/src/core/test-harness-verdict-notes.d.ts +0 -54
- package/dist/src/core/test-harness-verdict-notes.js +0 -48
- package/dist/src/core/test-host-state.d.ts +0 -14
- package/dist/src/core/test-host-state.js +0 -80
- package/dist/src/core/test-path-scope.d.ts +0 -59
- package/dist/src/core/test-path-scope.js +0 -147
- package/dist/src/core/test-profile-files.d.ts +0 -17
- package/dist/src/core/test-profile-files.js +0 -75
- package/dist/src/core/test-raw-log.d.ts +0 -66
- package/dist/src/core/test-raw-log.js +0 -122
- package/dist/src/core/test-run-completeness.d.ts +0 -97
- package/dist/src/core/test-run-completeness.js +0 -191
- package/dist/src/core/test-stale-check.d.ts +0 -213
- package/dist/src/core/test-stale-check.js +0 -396
- package/dist/src/core/test-stale-exempt.d.ts +0 -40
- package/dist/src/core/test-stale-exempt.js +0 -70
- package/dist/src/core/test-stale-symlink.d.ts +0 -12
- package/dist/src/core/test-stale-symlink.js +0 -39
- package/dist/src/core/test-stall-triage.d.ts +0 -51
- package/dist/src/core/test-stall-triage.js +0 -142
- package/dist/src/core/test-xpcshell-retry.d.ts +0 -35
- package/dist/src/core/test-xpcshell-retry.js +0 -31
- package/dist/src/core/token-category.d.ts +0 -54
- package/dist/src/core/token-category.js +0 -299
- package/dist/src/core/token-coverage.d.ts +0 -12
- package/dist/src/core/token-coverage.js +0 -96
- package/dist/src/core/token-dark-mode.d.ts +0 -64
- package/dist/src/core/token-dark-mode.js +0 -186
- package/dist/src/core/token-docs.d.ts +0 -34
- package/dist/src/core/token-docs.js +0 -102
- package/dist/src/core/token-inventory.d.ts +0 -56
- package/dist/src/core/token-inventory.js +0 -114
- package/dist/src/core/token-lint.d.ts +0 -53
- package/dist/src/core/token-lint.js +0 -131
- package/dist/src/core/token-manager.d.ts +0 -87
- package/dist/src/core/token-manager.js +0 -407
- package/dist/src/core/token-scaffold.d.ts +0 -36
- package/dist/src/core/token-scaffold.js +0 -73
- package/dist/src/core/token-sibling-sheets.d.ts +0 -46
- package/dist/src/core/token-sibling-sheets.js +0 -119
- package/dist/src/core/token-variant.d.ts +0 -90
- package/dist/src/core/token-variant.js +0 -327
- package/dist/src/core/toolchain-preflight.d.ts +0 -90
- package/dist/src/core/toolchain-preflight.js +0 -251
- package/dist/src/core/tree-cow.d.ts +0 -16
- package/dist/src/core/tree-cow.js +0 -71
- package/dist/src/core/tree-guard.d.ts +0 -35
- package/dist/src/core/tree-guard.js +0 -194
- package/dist/src/core/tree-store.d.ts +0 -143
- package/dist/src/core/tree-store.js +0 -478
- package/dist/src/core/typecheck-shim.d.ts +0 -90
- package/dist/src/core/typecheck-shim.js +0 -507
- package/dist/src/core/typecheck.d.ts +0 -75
- package/dist/src/core/typecheck.js +0 -433
- package/dist/src/core/wire-destroy.d.ts +0 -25
- package/dist/src/core/wire-destroy.js +0 -126
- package/dist/src/core/wire-dom-fragment.d.ts +0 -44
- package/dist/src/core/wire-dom-fragment.js +0 -139
- package/dist/src/core/wire-init.d.ts +0 -28
- package/dist/src/core/wire-init.js +0 -219
- package/dist/src/core/wire-subscript.d.ts +0 -23
- package/dist/src/core/wire-subscript.js +0 -145
- package/dist/src/core/wire-utils.d.ts +0 -149
- package/dist/src/core/wire-utils.js +0 -338
- package/dist/src/core/xpcshell-appdir.d.ts +0 -157
- package/dist/src/core/xpcshell-appdir.js +0 -299
- package/dist/src/core/xpcshell-profile-dir.d.ts +0 -12
- package/dist/src/core/xpcshell-profile-dir.js +0 -45
- package/dist/src/errors/base.d.ts +0 -217
- package/dist/src/errors/base.js +0 -279
- package/dist/src/errors/build.d.ts +0 -92
- package/dist/src/errors/build.js +0 -166
- package/dist/src/errors/codes.d.ts +0 -74
- package/dist/src/errors/codes.js +0 -74
- package/dist/src/errors/config.d.ts +0 -17
- package/dist/src/errors/config.js +0 -39
- package/dist/src/errors/download.d.ts +0 -66
- package/dist/src/errors/download.js +0 -160
- package/dist/src/errors/furnace.d.ts +0 -20
- package/dist/src/errors/furnace.js +0 -28
- package/dist/src/errors/git.d.ts +0 -65
- package/dist/src/errors/git.js +0 -140
- package/dist/src/errors/patch.d.ts +0 -27
- package/dist/src/errors/patch.js +0 -52
- package/dist/src/errors/rebase.d.ts +0 -42
- package/dist/src/errors/rebase.js +0 -71
- package/dist/src/errors/run.d.ts +0 -16
- package/dist/src/errors/run.js +0 -22
- package/dist/src/index.d.ts +0 -42
- package/dist/src/index.js +0 -32
- package/dist/src/types/cli.d.ts +0 -14
- package/dist/src/types/commands/index.d.ts +0 -6
- package/dist/src/types/commands/index.js +0 -5
- package/dist/src/types/commands/options.d.ts +0 -1367
- package/dist/src/types/commands/options.js +0 -5
- package/dist/src/types/commands/patches.d.ts +0 -352
- package/dist/src/types/commands/patches.js +0 -5
- package/dist/src/types/commands/project.d.ts +0 -51
- package/dist/src/types/commands/project.js +0 -5
- package/dist/src/types/config.d.ts +0 -703
- package/dist/src/types/config.js +0 -15
- package/dist/src/types/furnace.d.ts +0 -415
- package/dist/src/types/furnace.js +0 -26
- package/dist/src/types/index.d.ts +0 -5
- package/dist/src/types/index.js +0 -5
- package/dist/src/types/json.d.ts +0 -22
- package/dist/src/types/json.js +0 -11
- package/dist/src/types/typecheck.d.ts +0 -51
- package/dist/src/types/typecheck.js +0 -14
- package/dist/src/utils/assert.d.ts +0 -34
- package/dist/src/utils/assert.js +0 -61
- package/dist/src/utils/build-info.d.ts +0 -30
- package/dist/src/utils/build-info.js +0 -99
- package/dist/src/utils/child-env.d.ts +0 -28
- package/dist/src/utils/child-env.js +0 -27
- package/dist/src/utils/concurrency.d.ts +0 -8
- package/dist/src/utils/concurrency.js +0 -32
- package/dist/src/utils/elapsed.d.ts +0 -2
- package/dist/src/utils/elapsed.js +0 -23
- package/dist/src/utils/errors.d.ts +0 -39
- package/dist/src/utils/errors.js +0 -67
- package/dist/src/utils/fs.d.ts +0 -113
- package/dist/src/utils/fs.js +0 -337
- package/dist/src/utils/hash.d.ts +0 -12
- package/dist/src/utils/hash.js +0 -16
- package/dist/src/utils/line-dispatch.d.ts +0 -15
- package/dist/src/utils/line-dispatch.js +0 -48
- package/dist/src/utils/logger.d.ts +0 -109
- package/dist/src/utils/logger.js +0 -270
- package/dist/src/utils/machine-output.d.ts +0 -12
- package/dist/src/utils/machine-output.js +0 -33
- package/dist/src/utils/options.d.ts +0 -155
- package/dist/src/utils/options.js +0 -312
- package/dist/src/utils/package-root.d.ts +0 -21
- package/dist/src/utils/package-root.js +0 -70
- package/dist/src/utils/parse.d.ts +0 -117
- package/dist/src/utils/parse.js +0 -214
- package/dist/src/utils/path-glob.d.ts +0 -15
- package/dist/src/utils/path-glob.js +0 -47
- package/dist/src/utils/paths.d.ts +0 -31
- package/dist/src/utils/paths.js +0 -80
- package/dist/src/utils/platform.d.ts +0 -9
- package/dist/src/utils/platform.js +0 -14
- package/dist/src/utils/process-group.d.ts +0 -42
- package/dist/src/utils/process-group.js +0 -190
- package/dist/src/utils/process-input.d.ts +0 -27
- package/dist/src/utils/process-input.js +0 -46
- package/dist/src/utils/process.d.ts +0 -293
- package/dist/src/utils/process.js +0 -593
- package/dist/src/utils/ps-duration.d.ts +0 -31
- package/dist/src/utils/ps-duration.js +0 -70
- package/dist/src/utils/regex.d.ts +0 -39
- package/dist/src/utils/regex.js +0 -109
- package/dist/src/utils/sleep.d.ts +0 -25
- package/dist/src/utils/sleep.js +0 -30
- package/dist/src/utils/stdio-drain.d.ts +0 -28
- package/dist/src/utils/stdio-drain.js +0 -54
- package/dist/src/utils/validation.d.ts +0 -182
- package/dist/src/utils/validation.js +0 -394
- package/docs/lifecycle-invariants.md +0 -523
- package/docs/run-logs.md +0 -122
- package/docs/verification-trees.md +0 -49
- /package/dist/src/{types/cli.js → cli/context.js} +0 -0
|
@@ -0,0 +1,685 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
+
/**
|
|
3
|
+
* Bringing the queue into the engine, and the one resumable session both
|
|
4
|
+
* `import` and `rebase` run.
|
|
5
|
+
*
|
|
6
|
+
* A run replays patches index-only from a tree (`apply.ts`), checks that
|
|
7
|
+
* the engine holds nothing the run would lose, and writes the resulting
|
|
8
|
+
* states of the queue's paths into the engine. A patch that does not apply
|
|
9
|
+
* pauses the session: the engine gets the state before that patch plus the
|
|
10
|
+
* patch's fitting hunks and `.rej` files, and the session (a project state
|
|
11
|
+
* section) records where it stopped and the tree before the failed patch.
|
|
12
|
+
* After the user finishes the change in the engine, the patch is rewritten
|
|
13
|
+
* from the engine against that tree, so its body is exactly its own work
|
|
14
|
+
* even where other patches touch the same files, and the run continues.
|
|
15
|
+
*
|
|
16
|
+
* `import` replays exactly and writes a resolved patch at once. `rebase`
|
|
17
|
+
* (after the engine has moved to a new pin) adds the reduced-context
|
|
18
|
+
* ladder, rewrites every applied patch from the trees it produced, and
|
|
19
|
+
* stamps them with the new pin, all in one queue transaction at the end;
|
|
20
|
+
* until then the queue is untouched, so `--abort` only has to reset the
|
|
21
|
+
* engine (after a recovery snapshot).
|
|
22
|
+
*
|
|
23
|
+
* Each settling of the engine (its files, the `.rej` files, the session and
|
|
24
|
+
* the applied record) is one engine transaction, so an error, a signal or a
|
|
25
|
+
* crash leaves the engine and the session as they were before it or after.
|
|
26
|
+
*/
|
|
27
|
+
import { affectedPaths, parsePatch } from '../diff/index.js';
|
|
28
|
+
import { cleanPaths, reset, saveRecoverySnapshot, status } from '../git/index.js';
|
|
29
|
+
import { defined, ExitCode, FireForgeError } from '../kernel/errors.js';
|
|
30
|
+
import { remove, resolveContained } from '../kernel/fs.js';
|
|
31
|
+
import { transaction } from '../kernel/journal.js';
|
|
32
|
+
import { info, warn } from '../kernel/log.js';
|
|
33
|
+
import { s } from '../kernel/schema.js';
|
|
34
|
+
import { defineStateSection, readState, updateState } from '../project/index.js';
|
|
35
|
+
import { applyWithRejects, replay, sparseTree, statesIn } from './apply.js';
|
|
36
|
+
import { engineHead, engineJournal, engineStates, forgetApplied, locate, projectQueue, readApplied, recordApplied, regeneratePatchBody, sameState, unaccountedPaths, writeStates, } from './baseline.js';
|
|
37
|
+
import { firefoxStamp, sameStamp } from './manifest.js';
|
|
38
|
+
import { loadQueue, mutateQueue, pathsOf, queueError, resolvePatch, } from './queue.js';
|
|
39
|
+
const PATCH_STATUSES = [
|
|
40
|
+
'pending',
|
|
41
|
+
'applied-clean',
|
|
42
|
+
'applied-fuzz',
|
|
43
|
+
'failed',
|
|
44
|
+
'resolved',
|
|
45
|
+
'skipped',
|
|
46
|
+
];
|
|
47
|
+
const sessionPatch = s.object({
|
|
48
|
+
name: s.string({ min: 1 }),
|
|
49
|
+
status: s.enum(PATCH_STATUSES),
|
|
50
|
+
/** The tree after this patch. */
|
|
51
|
+
tree: s.string().optional(),
|
|
52
|
+
fuzz: s.int({ min: 1 }).optional(),
|
|
53
|
+
replaced: s.array(s.string()).optional(),
|
|
54
|
+
conflicts: s.array(s.string()).optional(),
|
|
55
|
+
rejects: s.array(s.string()).optional(),
|
|
56
|
+
message: s.string().optional(),
|
|
57
|
+
});
|
|
58
|
+
const sessionSchema = s
|
|
59
|
+
.object({
|
|
60
|
+
kind: s.enum(['import', 'rebase']),
|
|
61
|
+
startedAt: s.string(),
|
|
62
|
+
/** The engine commit the session applies to. */
|
|
63
|
+
base: s.string(),
|
|
64
|
+
/** The base cut down to the queue's paths. */
|
|
65
|
+
start: s.string(),
|
|
66
|
+
/** The tree after every patch before `index`. */
|
|
67
|
+
tree: s.string(),
|
|
68
|
+
/** The next patch to process; the failed one while paused. */
|
|
69
|
+
index: s.int({ min: 0 }),
|
|
70
|
+
/** The last patch to apply. */
|
|
71
|
+
last: s.int({ min: -1 }),
|
|
72
|
+
/** The stamp a rebase gives the patches it rewrites. */
|
|
73
|
+
firefox: firefoxStamp.optional(),
|
|
74
|
+
patches: s.array(sessionPatch),
|
|
75
|
+
})
|
|
76
|
+
.refine((session) => session.index > session.last + 1 || session.last >= session.patches.length
|
|
77
|
+
? 'must keep index and last within the patch list'
|
|
78
|
+
: undefined);
|
|
79
|
+
const REPAIR = 'fireforge reset';
|
|
80
|
+
const SESSION = defineStateSection('queueSession', sessionSchema, REPAIR);
|
|
81
|
+
/** The same section read without its schema, so a damaged session can still be cleared. */
|
|
82
|
+
const RAW_SESSION = defineStateSection('queueSession', s.unknown(), REPAIR);
|
|
83
|
+
/**
|
|
84
|
+
* The paused or unfinished import or rebase, if any.
|
|
85
|
+
*
|
|
86
|
+
* @param project - A patch-mode project
|
|
87
|
+
* @throws `state-invalid` (exit code 2) when the stored session is damaged
|
|
88
|
+
*/
|
|
89
|
+
export function readSession(project) {
|
|
90
|
+
return readState(project, SESSION);
|
|
91
|
+
}
|
|
92
|
+
/** Stores the session (or, for undefined, forgets it) inside an engine transaction. */
|
|
93
|
+
async function storeSession(tx, project, session) {
|
|
94
|
+
await tx.change([project.paths.state], async () => {
|
|
95
|
+
if (session === undefined)
|
|
96
|
+
await updateState(project, RAW_SESSION, () => undefined);
|
|
97
|
+
else
|
|
98
|
+
await updateState(project, SESSION, () => session);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/** The `.rej` files a session's patches left, engine-relative. */
|
|
102
|
+
function rejectsOf(session) {
|
|
103
|
+
return (session?.patches ?? []).flatMap((entry) => entry.rejects ?? []);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Forgets the session, damaged or not, and removes the `.rej` files it left.
|
|
107
|
+
*
|
|
108
|
+
* @param project - A patch-mode project
|
|
109
|
+
*/
|
|
110
|
+
export async function clearSession(project) {
|
|
111
|
+
const session = await readSession(project).catch(() => undefined);
|
|
112
|
+
for (const entry of session?.patches ?? [])
|
|
113
|
+
await removeRejects(project, entry);
|
|
114
|
+
await updateState(project, RAW_SESSION, () => undefined);
|
|
115
|
+
}
|
|
116
|
+
async function removeRejects(project, entry) {
|
|
117
|
+
for (const reject of entry.rejects ?? []) {
|
|
118
|
+
await remove(await resolveContained(project.paths.engine, reject));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function report(session, queue) {
|
|
122
|
+
const filenames = new Map(queue.patches.map((patch) => [patch.name, patch.filename]));
|
|
123
|
+
return session.patches.slice(0, session.last + 1).map((entry) => ({
|
|
124
|
+
patch: filenames.get(entry.name) ?? entry.name,
|
|
125
|
+
status: entry.status,
|
|
126
|
+
...(entry.fuzz === undefined ? {} : { fuzz: entry.fuzz }),
|
|
127
|
+
...(entry.replaced === undefined ? {} : { replaced: entry.replaced }),
|
|
128
|
+
...(entry.conflicts === undefined ? {} : { conflicts: entry.conflicts }),
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* The Firefox stamp of the project's pin, which a patch gets when it is
|
|
133
|
+
* written from the engine.
|
|
134
|
+
*
|
|
135
|
+
* @param project - A patch-mode project
|
|
136
|
+
*/
|
|
137
|
+
export function stampOf(project) {
|
|
138
|
+
return { product: project.config.firefox.product, version: project.config.firefox.version };
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Refuses to change the queue while an import or rebase is paused: the
|
|
142
|
+
* session names patches and trees the change would invalidate.
|
|
143
|
+
*
|
|
144
|
+
* @param project - A patch-mode project
|
|
145
|
+
* @param action - What was asked, for the message: "re-export"
|
|
146
|
+
* @throws `session-active` (exit code 6)
|
|
147
|
+
*/
|
|
148
|
+
export async function requireNoSession(project, action) {
|
|
149
|
+
const session = await readSession(project);
|
|
150
|
+
if (session === undefined)
|
|
151
|
+
return;
|
|
152
|
+
throw new FireForgeError('session-active', `An ${session.kind} is paused; ${action} has to wait.`, {
|
|
153
|
+
exitCode: ExitCode.PATCH_ERROR,
|
|
154
|
+
hint: `Finish it with "fireforge ${session.kind} --continue", or drop it with "${REPAIR}".`,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
function unexportedError(paths, kind) {
|
|
158
|
+
const shown = paths.slice(0, 20).map((path) => ` ${path}`);
|
|
159
|
+
if (paths.length > shown.length)
|
|
160
|
+
shown.push(` … and ${paths.length - shown.length} more`);
|
|
161
|
+
return queueError('engine-unexported-edits', `The engine holds edits the ${kind} would overwrite:\n${shown.join('\n')}`, `Pass --force to overwrite them (a recovery snapshot keeps them), or drop them with ` +
|
|
162
|
+
`"fireforge discard <path>". Only if they are edits you made and want in the queue, ` +
|
|
163
|
+
`record them first with "fireforge re-export" (or "fireforge export" for files no patch ` +
|
|
164
|
+
`changes).`);
|
|
165
|
+
}
|
|
166
|
+
function pausedError(session, patch, conflicts) {
|
|
167
|
+
const named = conflicts.length === 0 ? '' : `: ${conflicts.join('; ')}`;
|
|
168
|
+
const next = session.kind === 'import'
|
|
169
|
+
? 'then run "fireforge resolve" to rewrite the patch, or "fireforge import --continue" to rewrite it and apply the rest.'
|
|
170
|
+
: 'then run "fireforge rebase --continue", or "fireforge rebase --abort" to give up.';
|
|
171
|
+
return new FireForgeError('patch-failed', `${patch.filename} does not apply${named}`, {
|
|
172
|
+
exitCode: ExitCode.PATCH_ERROR,
|
|
173
|
+
hint: `Finish the change in engine/ (hunks that did not fit are in .rej files), ${next}`,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Writes the run's result into the engine, as one engine transaction: the
|
|
178
|
+
* queue's paths get the target states, paths an earlier queue wrote and this
|
|
179
|
+
* one no longer touches go back to HEAD, and the session and the applied
|
|
180
|
+
* record are stored. While paused on a failed patch, also leaves its fitting
|
|
181
|
+
* hunks and `.rej` files, and then throws `patch-failed`. A finished import
|
|
182
|
+
* forgets its session; a rebase keeps it for `finishRebase`.
|
|
183
|
+
*/
|
|
184
|
+
async function settle(project, queue, session, plan) {
|
|
185
|
+
const engine = project.paths.engine;
|
|
186
|
+
const applied = await readApplied(project, session.base);
|
|
187
|
+
const owned = pathsOf(queue.patches);
|
|
188
|
+
const ownedSet = new Set(owned);
|
|
189
|
+
const earlier = [...applied.keys()].filter((path) => !ownedSet.has(path));
|
|
190
|
+
const paths = [...owned, ...earlier];
|
|
191
|
+
const head = await statesIn(engine, session.base, paths);
|
|
192
|
+
const current = await engineStates(engine, session.start, paths);
|
|
193
|
+
const recorded = (path) => applied.has(path) ? [applied.get(path) ?? null] : [];
|
|
194
|
+
// An earlier queue's output still untouched goes back to HEAD; once edited, it is the user's.
|
|
195
|
+
const behind = earlier.filter((path) => recorded(path).some((state) => sameState(state, current.get(path))));
|
|
196
|
+
const target = new Map([
|
|
197
|
+
...(await statesIn(engine, plan.target, owned)),
|
|
198
|
+
...behind.map((path) => [path, head.get(path) ?? null]),
|
|
199
|
+
]);
|
|
200
|
+
const unaccounted = unaccountedPaths(new Map(owned.map((path) => [path, current.get(path) ?? null])), (path) => [...plan.accepted(path), ...recorded(path)]);
|
|
201
|
+
if (unaccounted.length > 0) {
|
|
202
|
+
if (!plan.force)
|
|
203
|
+
throw unexportedError(unaccounted, session.kind);
|
|
204
|
+
const snapshot = await saveRecoverySnapshot(engine, {
|
|
205
|
+
label: session.kind,
|
|
206
|
+
paths: unaccounted,
|
|
207
|
+
});
|
|
208
|
+
if (snapshot !== undefined)
|
|
209
|
+
warn(`Saved the overwritten edits as ${snapshot.ref}.`);
|
|
210
|
+
}
|
|
211
|
+
const entry = session.patches[session.index];
|
|
212
|
+
const paused = entry?.status === 'failed' && session.index <= session.last
|
|
213
|
+
? queue.patches.find((candidate) => candidate.name === entry.name)
|
|
214
|
+
: undefined;
|
|
215
|
+
const written = await transaction(engineJournal(project), `the ${session.kind}`, async (tx) => {
|
|
216
|
+
for (const reject of plan.dropRejects ?? []) {
|
|
217
|
+
await tx.remove(await resolveContained(engine, reject));
|
|
218
|
+
}
|
|
219
|
+
const changed = await writeStates(tx, engine, target, current);
|
|
220
|
+
if (paused !== undefined && entry !== undefined) {
|
|
221
|
+
const touched = [...paused.files, ...paused.files.map((file) => `${file}.rej`)];
|
|
222
|
+
let rejects = [];
|
|
223
|
+
await tx.change(await Promise.all(touched.map((path) => resolveContained(engine, path))), async () => {
|
|
224
|
+
rejects = (await applyWithRejects(engine, paused)).rejects;
|
|
225
|
+
});
|
|
226
|
+
session.patches[session.index] = { ...entry, rejects: [...rejects] };
|
|
227
|
+
}
|
|
228
|
+
const keep = session.kind === 'rebase' || paused !== undefined;
|
|
229
|
+
await storeSession(tx, project, keep ? session : undefined);
|
|
230
|
+
const edited = earlier.filter((path) => !behind.includes(path));
|
|
231
|
+
await recordApplied(tx, project, {
|
|
232
|
+
base: session.base,
|
|
233
|
+
states: new Map([
|
|
234
|
+
...target,
|
|
235
|
+
...edited.map((path) => [path, head.get(path) ?? null]),
|
|
236
|
+
]),
|
|
237
|
+
head,
|
|
238
|
+
});
|
|
239
|
+
return changed;
|
|
240
|
+
});
|
|
241
|
+
if (paused !== undefined)
|
|
242
|
+
throw pausedError(session, paused, entry?.conflicts ?? []);
|
|
243
|
+
return written;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Replays the session's remaining patches from its tree and settles the
|
|
247
|
+
* engine. Pauses (throws) at a patch that does not apply.
|
|
248
|
+
*/
|
|
249
|
+
async function advance(project, queue, session, options) {
|
|
250
|
+
const byName = new Map(queue.patches.map((patch) => [patch.name, patch]));
|
|
251
|
+
const todo = [];
|
|
252
|
+
for (let index = session.index; index <= session.last; index++) {
|
|
253
|
+
const entry = session.patches[index];
|
|
254
|
+
if (entry === undefined)
|
|
255
|
+
continue;
|
|
256
|
+
const patch = byName.get(entry.name);
|
|
257
|
+
if (patch === undefined)
|
|
258
|
+
session.patches[index] = { name: entry.name, status: 'skipped' };
|
|
259
|
+
else
|
|
260
|
+
todo.push({ index, patch });
|
|
261
|
+
}
|
|
262
|
+
const startTree = session.tree;
|
|
263
|
+
// New-file sections may replace only what upstream has, not what earlier patches made.
|
|
264
|
+
const result = await replay(project.paths.engine, startTree, todo.map((item) => item.patch), { fuzz: options.fuzz, upstream: session.start });
|
|
265
|
+
const later = new Map();
|
|
266
|
+
for (const [position, step] of result.steps.entries()) {
|
|
267
|
+
const item = todo[position];
|
|
268
|
+
if (item === undefined)
|
|
269
|
+
continue;
|
|
270
|
+
session.patches[item.index] = {
|
|
271
|
+
name: item.patch.name,
|
|
272
|
+
status: step.fuzz > 0 ? 'applied-fuzz' : 'applied-clean',
|
|
273
|
+
tree: step.tree,
|
|
274
|
+
...(step.fuzz > 0 ? { fuzz: step.fuzz } : {}),
|
|
275
|
+
...(step.replaced.length > 0 ? { replaced: [...step.replaced] } : {}),
|
|
276
|
+
};
|
|
277
|
+
for (const change of step.changes)
|
|
278
|
+
later.set(change.path, [...(later.get(change.path) ?? []), change.state]);
|
|
279
|
+
}
|
|
280
|
+
const failure = result.failures[0];
|
|
281
|
+
const failed = failure === undefined ? undefined : todo[failure.index];
|
|
282
|
+
if (failure !== undefined && failed !== undefined) {
|
|
283
|
+
session.patches[failed.index] = {
|
|
284
|
+
name: failed.patch.name,
|
|
285
|
+
status: 'failed',
|
|
286
|
+
conflicts: failure.conflicts.map((conflict) => `${conflict.path}: ${conflict.reason}`),
|
|
287
|
+
message: failure.message,
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
session.tree = result.tree;
|
|
291
|
+
session.index = failed?.index ?? session.last + 1;
|
|
292
|
+
const before = await statesIn(project.paths.engine, startTree, pathsOf(queue.patches));
|
|
293
|
+
return settle(project, queue, session, {
|
|
294
|
+
target: result.tree,
|
|
295
|
+
accepted: (path) => [before.get(path) ?? null, ...(later.get(path) ?? [])],
|
|
296
|
+
force: options.force,
|
|
297
|
+
...(options.dropRejects === undefined ? {} : { dropRejects: options.dropRejects }),
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Rewrites the failed patch of a paused session from the engine: the diff,
|
|
302
|
+
* over the patch's files, from the tree before it to the engine's working
|
|
303
|
+
* tree. Marks it resolved and moves the in-memory session past it; the
|
|
304
|
+
* caller stores the session and removes the `.rej` files it returns.
|
|
305
|
+
*
|
|
306
|
+
* @returns The new body and the patch's `.rej` files, or undefined when the
|
|
307
|
+
* session is not paused on a failure
|
|
308
|
+
*/
|
|
309
|
+
async function resolveFailed(project, queue, session) {
|
|
310
|
+
const entry = session.patches[session.index];
|
|
311
|
+
if (entry?.status !== 'failed')
|
|
312
|
+
return undefined;
|
|
313
|
+
const patch = queue.patches.find((candidate) => candidate.name === entry.name);
|
|
314
|
+
if (patch === undefined) {
|
|
315
|
+
throw new FireForgeError('patch-not-found', `The paused patch ${entry.name} is no longer in the queue.`, {
|
|
316
|
+
exitCode: ExitCode.PATCH_ERROR,
|
|
317
|
+
hint: `Run "${REPAIR}" to drop the session, then start again.`,
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
const { body, after } = await regeneratePatchBody(project.paths.engine, {
|
|
321
|
+
before: session.tree,
|
|
322
|
+
paths: patch.files,
|
|
323
|
+
});
|
|
324
|
+
if (session.kind === 'import') {
|
|
325
|
+
if (body.length === 0) {
|
|
326
|
+
throw new FireForgeError('resolve-empty', `The engine holds no change to the files of ${patch.filename}; there is nothing to record.`, {
|
|
327
|
+
exitCode: ExitCode.RESOLUTION_ERROR,
|
|
328
|
+
hint: 'Finish the change in engine/ first, or remove the patch from the queue.',
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
await mutateQueue(project, `the resolution of ${patch.filename}`, (draft) => {
|
|
332
|
+
const row = draft.patches.find((candidate) => candidate.name === patch.name);
|
|
333
|
+
if (row !== undefined) {
|
|
334
|
+
row.body = body;
|
|
335
|
+
row.firefox = stampOf(project);
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
session.patches[session.index] = { name: entry.name, status: 'resolved', tree: after };
|
|
340
|
+
session.tree = after;
|
|
341
|
+
session.index += 1;
|
|
342
|
+
return { patch, body, rejects: entry.rejects ?? [] };
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* After a failed `import`: rewrites the failed patch from the engine, where
|
|
346
|
+
* the user has finished the change, and records it as resolved. The rest of
|
|
347
|
+
* the queue is applied by `import --continue`.
|
|
348
|
+
*
|
|
349
|
+
* @param project - A patch-mode project
|
|
350
|
+
* @throws `no-session` when no import is paused on a failed patch
|
|
351
|
+
*/
|
|
352
|
+
export async function resolvePatchFromEngine(project) {
|
|
353
|
+
const session = await readSession(project);
|
|
354
|
+
if (session !== undefined)
|
|
355
|
+
await requireSameBase(project, session);
|
|
356
|
+
if (session?.kind !== 'import' || session.patches[session.index]?.status !== 'failed') {
|
|
357
|
+
throw new FireForgeError('no-session', 'No import is paused on a failed patch.', {
|
|
358
|
+
exitCode: ExitCode.RESOLUTION_ERROR,
|
|
359
|
+
hint: session?.kind === 'rebase'
|
|
360
|
+
? 'A rebase is paused; finish it with "fireforge rebase --continue".'
|
|
361
|
+
: 'Run "fireforge import" first.',
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
const resolved = defined(await resolveFailed(project, await loadQueue(project), session), 'a session paused on a failed patch resolves it');
|
|
365
|
+
await transaction(engineJournal(project), 'the resolution', async (tx) => {
|
|
366
|
+
for (const reject of resolved.rejects) {
|
|
367
|
+
await tx.remove(await resolveContained(project.paths.engine, reject));
|
|
368
|
+
}
|
|
369
|
+
await storeSession(tx, project, session);
|
|
370
|
+
});
|
|
371
|
+
return {
|
|
372
|
+
patch: resolved.patch.filename,
|
|
373
|
+
files: affectedPaths(parsePatch(resolved.body)),
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
/** Refuses to continue a session whose engine has moved to another commit since it started. */
|
|
377
|
+
async function requireSameBase(project, session) {
|
|
378
|
+
if ((await engineHead(project)) === session.base)
|
|
379
|
+
return;
|
|
380
|
+
throw new FireForgeError('session-stale', `engine/ is no longer at the commit the paused ${session.kind} started on.`, {
|
|
381
|
+
exitCode: ExitCode.PATCH_ERROR,
|
|
382
|
+
hint: session.kind === 'rebase'
|
|
383
|
+
? 'Run "fireforge rebase --abort" and start the rebase again.'
|
|
384
|
+
: `Run "${REPAIR}" and import again.`,
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
function newSession(kind, queue, fields) {
|
|
388
|
+
return {
|
|
389
|
+
kind,
|
|
390
|
+
startedAt: new Date().toISOString(),
|
|
391
|
+
base: fields.base,
|
|
392
|
+
start: fields.start,
|
|
393
|
+
tree: fields.start,
|
|
394
|
+
index: 0,
|
|
395
|
+
last: fields.last,
|
|
396
|
+
...(fields.firefox === undefined ? {} : { firefox: fields.firefox }),
|
|
397
|
+
patches: queue.patches.map((patch) => ({ name: patch.name, status: 'pending' })),
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
async function continueImport(project, force) {
|
|
401
|
+
const session = await readSession(project);
|
|
402
|
+
if (session?.kind !== 'import') {
|
|
403
|
+
throw new FireForgeError('no-session', 'No import is paused.', {
|
|
404
|
+
exitCode: ExitCode.PATCH_ERROR,
|
|
405
|
+
hint: session?.kind === 'rebase'
|
|
406
|
+
? 'A rebase is paused; use "fireforge rebase --continue".'
|
|
407
|
+
: 'Run "fireforge import".',
|
|
408
|
+
});
|
|
409
|
+
}
|
|
410
|
+
await requireSameBase(project, session);
|
|
411
|
+
const dropRejects = rejectsOf(session);
|
|
412
|
+
const resolved = await resolveFailed(project, await loadQueue(project), session);
|
|
413
|
+
if (resolved !== undefined)
|
|
414
|
+
info(`Rewrote ${resolved.patch.filename} from the engine.`);
|
|
415
|
+
const queue = await loadQueue(project);
|
|
416
|
+
const written = await advance(project, queue, session, { fuzz: false, force, dropRejects });
|
|
417
|
+
return { patches: report(session, queue), written };
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Applies the patch queue to the engine: every path the queue touches ends
|
|
421
|
+
* holding what the queue (up to `until`) leaves there. Other engine edits
|
|
422
|
+
* are kept. Edits in the queue's files that no patch accounts for stop the
|
|
423
|
+
* import unless `force`.
|
|
424
|
+
*
|
|
425
|
+
* A patch that does not apply pauses the import (see the module comment)
|
|
426
|
+
* and throws `patch-failed` (exit code 6).
|
|
427
|
+
*
|
|
428
|
+
* @param project - A patch-mode project
|
|
429
|
+
* @param options - See {@link ImportOptions}
|
|
430
|
+
*/
|
|
431
|
+
export async function importQueue(project, options = {}) {
|
|
432
|
+
const force = options.force === true;
|
|
433
|
+
if (options.continue === true)
|
|
434
|
+
return continueImport(project, force);
|
|
435
|
+
const existing = await readSession(project);
|
|
436
|
+
if (existing?.kind === 'rebase') {
|
|
437
|
+
throw new FireForgeError('session-active', 'A rebase is paused.', {
|
|
438
|
+
exitCode: ExitCode.PATCH_ERROR,
|
|
439
|
+
hint: 'Finish it with "fireforge rebase --continue" or drop it with "fireforge rebase --abort".',
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
const queue = await loadQueue(project);
|
|
443
|
+
const pin = stampOf(project);
|
|
444
|
+
const stale = queue.patches.filter((patch) => patch.firefox.version !== pin.version);
|
|
445
|
+
if (stale.length > 0) {
|
|
446
|
+
warn(`${stale.length} patch(es) were last verified against another Firefox than ${pin.version}; ` +
|
|
447
|
+
'after a pin change, "fireforge rebase" brings the queue onto it.');
|
|
448
|
+
}
|
|
449
|
+
const last = options.until === undefined
|
|
450
|
+
? queue.patches.length - 1
|
|
451
|
+
: resolvePatch(queue, options.until).index;
|
|
452
|
+
const projection = await projectQueue(project, queue);
|
|
453
|
+
const failure = projection.failure !== undefined && projection.failure.index <= last
|
|
454
|
+
? projection.failure
|
|
455
|
+
: undefined;
|
|
456
|
+
const reached = failure?.index ?? last + 1;
|
|
457
|
+
const session = newSession('import', queue, {
|
|
458
|
+
base: projection.base,
|
|
459
|
+
start: projection.start,
|
|
460
|
+
last,
|
|
461
|
+
});
|
|
462
|
+
for (const [index, step] of projection.steps.slice(0, reached).entries()) {
|
|
463
|
+
session.patches[index] = {
|
|
464
|
+
name: queue.patches[index]?.name ?? '',
|
|
465
|
+
status: 'applied-clean',
|
|
466
|
+
tree: step.tree,
|
|
467
|
+
};
|
|
468
|
+
}
|
|
469
|
+
if (failure !== undefined) {
|
|
470
|
+
session.patches[failure.index] = {
|
|
471
|
+
name: queue.patches[failure.index]?.name ?? '',
|
|
472
|
+
status: 'failed',
|
|
473
|
+
conflicts: failure.conflicts.map((conflict) => `${conflict.path}: ${conflict.reason}`),
|
|
474
|
+
message: failure.message,
|
|
475
|
+
};
|
|
476
|
+
}
|
|
477
|
+
session.tree = projection.treeBefore(reached);
|
|
478
|
+
session.index = reached;
|
|
479
|
+
const written = await settle(project, queue, session, {
|
|
480
|
+
target: session.tree,
|
|
481
|
+
accepted: (path) => projection.history(path).map((entry) => entry.state),
|
|
482
|
+
force,
|
|
483
|
+
dropRejects: rejectsOf(existing),
|
|
484
|
+
});
|
|
485
|
+
return { patches: report(session, queue), written };
|
|
486
|
+
}
|
|
487
|
+
async function finishRebase(project, session, written) {
|
|
488
|
+
const engine = project.paths.engine;
|
|
489
|
+
const queue = await loadQueue(project);
|
|
490
|
+
const byName = new Map(queue.patches.map((patch) => [patch.name, patch]));
|
|
491
|
+
const bodies = new Map();
|
|
492
|
+
let before = session.start;
|
|
493
|
+
for (const entry of session.patches) {
|
|
494
|
+
const patch = byName.get(entry.name);
|
|
495
|
+
if (entry.tree === undefined || patch === undefined)
|
|
496
|
+
continue;
|
|
497
|
+
const { body } = await regeneratePatchBody(engine, {
|
|
498
|
+
before,
|
|
499
|
+
after: entry.tree,
|
|
500
|
+
paths: patch.files,
|
|
501
|
+
});
|
|
502
|
+
bodies.set(patch.name, body);
|
|
503
|
+
before = entry.tree;
|
|
504
|
+
}
|
|
505
|
+
const stamp = session.firefox ?? stampOf(project);
|
|
506
|
+
await mutateQueue(project, 'the rebase', (draft) => {
|
|
507
|
+
for (const row of draft.patches) {
|
|
508
|
+
const body = bodies.get(row.name);
|
|
509
|
+
if (body === undefined)
|
|
510
|
+
continue;
|
|
511
|
+
row.body = body;
|
|
512
|
+
row.firefox = stamp;
|
|
513
|
+
}
|
|
514
|
+
});
|
|
515
|
+
await clearSession(project);
|
|
516
|
+
const emptied = queue.patches
|
|
517
|
+
.filter((patch) => bodies.get(patch.name)?.length === 0)
|
|
518
|
+
.map((patch) => patch.filename);
|
|
519
|
+
for (const filename of emptied)
|
|
520
|
+
warn(`${filename} is now empty: upstream holds its change.`);
|
|
521
|
+
return { status: 'complete', patches: report(session, queue), written, emptied };
|
|
522
|
+
}
|
|
523
|
+
async function requireRebaseSession(project) {
|
|
524
|
+
const session = await readSession(project);
|
|
525
|
+
if (session?.kind !== 'rebase') {
|
|
526
|
+
throw new FireForgeError('no-session', 'No rebase is paused.', {
|
|
527
|
+
exitCode: ExitCode.PATCH_ERROR,
|
|
528
|
+
hint: session?.kind === 'import'
|
|
529
|
+
? 'An import is paused; use "fireforge import --continue".'
|
|
530
|
+
: 'Run "fireforge rebase".',
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
return session;
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Resets the whole engine to its HEAD (tracked files restored, untracked
|
|
537
|
+
* files removed, ignored files kept) after saving a recovery snapshot, as
|
|
538
|
+
* one engine transaction that also forgets the applied record.
|
|
539
|
+
*
|
|
540
|
+
* @param project - A patch-mode project
|
|
541
|
+
* @param label - What the reset is for, recorded in the snapshot
|
|
542
|
+
* @returns The snapshot ref, or undefined when there was nothing to save
|
|
543
|
+
*/
|
|
544
|
+
export async function resetWorktree(project, label) {
|
|
545
|
+
const engine = project.paths.engine;
|
|
546
|
+
const snapshot = await saveRecoverySnapshot(engine, { label });
|
|
547
|
+
const changed = (await status(engine)).map((entry) => entry.path);
|
|
548
|
+
await transaction(engineJournal(project), `the ${label}`, async (tx) => {
|
|
549
|
+
const paths = await Promise.all(changed.map((path) => locate(engine, path)));
|
|
550
|
+
await tx.change(paths, async () => {
|
|
551
|
+
await reset(engine, 'HEAD', 'hard');
|
|
552
|
+
await cleanPaths(engine);
|
|
553
|
+
});
|
|
554
|
+
await tx.change([project.paths.state], () => forgetApplied(project));
|
|
555
|
+
});
|
|
556
|
+
return snapshot?.ref;
|
|
557
|
+
}
|
|
558
|
+
/**
|
|
559
|
+
* Refuses to start a rebase over engine edits the queue does not account
|
|
560
|
+
* for: the rebase resets the engine. A path may hold its HEAD state, any
|
|
561
|
+
* state the queue leaves it in on the engine's HEAD, or the state the last
|
|
562
|
+
* engine write left it in.
|
|
563
|
+
*/
|
|
564
|
+
async function requireNothingToLose(project, queue) {
|
|
565
|
+
const engine = project.paths.engine;
|
|
566
|
+
const changed = (await status(engine)).map((entry) => entry.path);
|
|
567
|
+
if (changed.length === 0)
|
|
568
|
+
return;
|
|
569
|
+
const projection = await projectQueue(project, queue);
|
|
570
|
+
const owned = new Set(projection.paths);
|
|
571
|
+
const applied = await readApplied(project, projection.base);
|
|
572
|
+
const current = await engineStates(engine, projection.start, changed);
|
|
573
|
+
const unaccounted = unaccountedPaths(current, (path) => [
|
|
574
|
+
...(owned.has(path) ? projection.history(path).map((entry) => entry.state) : []),
|
|
575
|
+
...(applied.has(path) ? [applied.get(path) ?? null] : []),
|
|
576
|
+
]);
|
|
577
|
+
if (unaccounted.length > 0)
|
|
578
|
+
throw unexportedError(unaccounted, 'rebase');
|
|
579
|
+
}
|
|
580
|
+
async function dryRunRebase(project, queue) {
|
|
581
|
+
const engine = project.paths.engine;
|
|
582
|
+
const start = await sparseTree(engine, await engineHead(project), pathsOf(queue.patches));
|
|
583
|
+
const result = await replay(engine, start, queue.patches, { fuzz: true, keepGoing: true });
|
|
584
|
+
const failed = new Map(result.failures.map((failure) => [failure.index, failure]));
|
|
585
|
+
const applied = [...result.steps];
|
|
586
|
+
const patches = queue.patches.map((patch, index) => {
|
|
587
|
+
const failure = failed.get(index);
|
|
588
|
+
if (failure !== undefined) {
|
|
589
|
+
return {
|
|
590
|
+
patch: patch.filename,
|
|
591
|
+
status: 'failed',
|
|
592
|
+
conflicts: failure.conflicts.map((conflict) => `${conflict.path}: ${conflict.reason}`),
|
|
593
|
+
};
|
|
594
|
+
}
|
|
595
|
+
const step = applied.shift();
|
|
596
|
+
const fuzz = step?.fuzz ?? 0;
|
|
597
|
+
return {
|
|
598
|
+
patch: patch.filename,
|
|
599
|
+
status: fuzz > 0 ? 'applied-fuzz' : 'applied-clean',
|
|
600
|
+
...(fuzz > 0 ? { fuzz } : {}),
|
|
601
|
+
...(step !== undefined && step.replaced.length > 0 ? { replaced: step.replaced } : {}),
|
|
602
|
+
};
|
|
603
|
+
});
|
|
604
|
+
return { status: 'dry-run', patches, written: [], emptied: [] };
|
|
605
|
+
}
|
|
606
|
+
/**
|
|
607
|
+
* Moves the queue onto the engine's current HEAD, which the caller has
|
|
608
|
+
* already brought to the new pin (`fireforge download` for the new
|
|
609
|
+
* version). Each patch is applied with the reduced-context ladder; a patch
|
|
610
|
+
* that does not apply pauses the rebase (throws `patch-failed`, exit code
|
|
611
|
+
* 6) for the user to finish in the engine. Once every patch applies, all of
|
|
612
|
+
* them are rewritten from the result and stamped with the configured pin in
|
|
613
|
+
* one queue transaction.
|
|
614
|
+
*
|
|
615
|
+
* A fresh rebase resets the whole engine first, after a recovery snapshot.
|
|
616
|
+
* It refuses an engine holding edits the queue does not account for unless
|
|
617
|
+
* `force` is given.
|
|
618
|
+
*
|
|
619
|
+
* @param project - A patch-mode project
|
|
620
|
+
* @param options - See {@link RebaseOptions}
|
|
621
|
+
*/
|
|
622
|
+
export async function rebaseQueue(project, options = {}) {
|
|
623
|
+
const engine = project.paths.engine;
|
|
624
|
+
if (options.abort === true) {
|
|
625
|
+
const raw = await readState(project, RAW_SESSION);
|
|
626
|
+
const stored = sessionSchema.validate(raw);
|
|
627
|
+
if (raw === undefined || (stored.ok && stored.value.kind !== 'rebase')) {
|
|
628
|
+
throw new FireForgeError('no-session', 'No rebase is paused.', {
|
|
629
|
+
exitCode: ExitCode.PATCH_ERROR,
|
|
630
|
+
hint: '"fireforge status" shows what the engine and the queue hold.',
|
|
631
|
+
});
|
|
632
|
+
}
|
|
633
|
+
await resetWorktree(project, 'rebase-abort');
|
|
634
|
+
await clearSession(project);
|
|
635
|
+
return { status: 'aborted', patches: [], written: [], emptied: [] };
|
|
636
|
+
}
|
|
637
|
+
if (options.continue === true) {
|
|
638
|
+
const session = await requireRebaseSession(project);
|
|
639
|
+
await requireSameBase(project, session);
|
|
640
|
+
let written = [];
|
|
641
|
+
if (session.index <= session.last) {
|
|
642
|
+
const dropRejects = rejectsOf(session);
|
|
643
|
+
await resolveFailed(project, await loadQueue(project), session);
|
|
644
|
+
written = await advance(project, await loadQueue(project), session, {
|
|
645
|
+
fuzz: true,
|
|
646
|
+
force: false,
|
|
647
|
+
dropRejects,
|
|
648
|
+
});
|
|
649
|
+
}
|
|
650
|
+
return finishRebase(project, session, written);
|
|
651
|
+
}
|
|
652
|
+
const existing = await readSession(project);
|
|
653
|
+
if (existing !== undefined) {
|
|
654
|
+
throw new FireForgeError('session-active', `An ${existing.kind} is paused.`, {
|
|
655
|
+
exitCode: ExitCode.PATCH_ERROR,
|
|
656
|
+
hint: `Finish it with "fireforge ${existing.kind} --continue", or drop it with "${REPAIR}".`,
|
|
657
|
+
});
|
|
658
|
+
}
|
|
659
|
+
const queue = await loadQueue(project);
|
|
660
|
+
if (queue.patches.length === 0) {
|
|
661
|
+
throw new FireForgeError('queue-empty', 'The patch queue is empty; there is nothing to rebase.', {
|
|
662
|
+
exitCode: ExitCode.PATCH_ERROR,
|
|
663
|
+
hint: 'Capture a change with "fireforge export" first.',
|
|
664
|
+
});
|
|
665
|
+
}
|
|
666
|
+
const stamp = stampOf(project);
|
|
667
|
+
if (queue.patches.every((patch) => sameStamp(patch.firefox, stamp))) {
|
|
668
|
+
return { status: 'up-to-date', patches: [], written: [], emptied: [] };
|
|
669
|
+
}
|
|
670
|
+
if (options.dryRun === true)
|
|
671
|
+
return dryRunRebase(project, queue);
|
|
672
|
+
const base = await engineHead(project);
|
|
673
|
+
if (options.force !== true)
|
|
674
|
+
await requireNothingToLose(project, queue);
|
|
675
|
+
await resetWorktree(project, 'rebase');
|
|
676
|
+
const start = await sparseTree(engine, base, pathsOf(queue.patches));
|
|
677
|
+
const session = newSession('rebase', queue, {
|
|
678
|
+
base,
|
|
679
|
+
start,
|
|
680
|
+
last: queue.patches.length - 1,
|
|
681
|
+
firefox: stamp,
|
|
682
|
+
});
|
|
683
|
+
const written = await advance(project, queue, session, { fuzz: true, force: true });
|
|
684
|
+
return finishRebase(project, session, written);
|
|
685
|
+
}
|