@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,181 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
+
/**
|
|
3
|
+
* Moving a patch-mode project to source mode: the queue is replayed onto the
|
|
4
|
+
* pristine commit, the resulting tree is adopted as owned files and override
|
|
5
|
+
* records, and `fireforge.json` takes the `mode` and `source` keys plus what
|
|
6
|
+
* the manifest carried per patch (tier, waivers) and the created-file groups
|
|
7
|
+
* that keep each patch's files together in an export.
|
|
8
|
+
*
|
|
9
|
+
* The conversion is in place and needs a committed git tree: everything
|
|
10
|
+
* written is undone on failure, and afterwards `git` is the undo.
|
|
11
|
+
*/
|
|
12
|
+
import { join, relative } from 'node:path';
|
|
13
|
+
import { CONFIG_FILE, configSchema, readConfigDocument } from '../config/index.js';
|
|
14
|
+
import { listTree, status as gitStatus } from '../git/index.js';
|
|
15
|
+
import { defined, ExitCode, FireForgeError } from '../kernel/errors.js';
|
|
16
|
+
import { remove, toPosixPath, writeFile } from '../kernel/fs.js';
|
|
17
|
+
import { isRecord, stringifyJson } from '../kernel/json.js';
|
|
18
|
+
import { loadProject } from '../project/index.js';
|
|
19
|
+
import { readQueue, replayQueue, requirePatchMode } from '../queue/index.js';
|
|
20
|
+
import { adoptTrees, installMergeDriver, requireSourceMode, sourceChanges, } from '../source/index.js';
|
|
21
|
+
import { ownedTree } from './export.js';
|
|
22
|
+
import { pinnedPristine } from './pristine.js';
|
|
23
|
+
const SOURCE_ROOT = 'src';
|
|
24
|
+
const METADATA_ROOT = '.fireforge-sources';
|
|
25
|
+
const ancestors = (path) => {
|
|
26
|
+
const parts = path.split('/').slice(0, -1);
|
|
27
|
+
return parts.map((_, index) => parts.slice(0, index + 1).join('/'));
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* The globs that select each patch's created files: `<dir>/**` for the
|
|
31
|
+
* shallowest directory the project itself created whose files all belong to
|
|
32
|
+
* that patch, else the file. A directory upstream has is never claimed
|
|
33
|
+
* whole, so a file created there later is not swept into the group.
|
|
34
|
+
*/
|
|
35
|
+
function createdGlobs(owners, upstream) {
|
|
36
|
+
const directoryOwners = new Map();
|
|
37
|
+
for (const [path, owner] of owners) {
|
|
38
|
+
for (const directory of ancestors(path)) {
|
|
39
|
+
directoryOwners.set(directory, (directoryOwners.get(directory) ?? new Set()).add(owner));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const globs = new Map();
|
|
43
|
+
for (const [path, owner] of owners) {
|
|
44
|
+
const whole = ancestors(path).find((directory) => !upstream.has(directory) && directoryOwners.get(directory)?.size === 1);
|
|
45
|
+
globs.set(owner, (globs.get(owner) ?? new Set()).add(whole === undefined ? path : `${whole}/**`));
|
|
46
|
+
}
|
|
47
|
+
return new Map([...globs].sort(([a], [b]) => (a < b ? -1 : 1)).map(([owner, set]) => [owner, [...set].sort()]));
|
|
48
|
+
}
|
|
49
|
+
function section(document, key) {
|
|
50
|
+
const value = document[key];
|
|
51
|
+
return isRecord(value) ? value : {};
|
|
52
|
+
}
|
|
53
|
+
/** The source-mode `fireforge.json` document for the migrated project. */
|
|
54
|
+
function migratedConfig(document, queue, adopted, pristine) {
|
|
55
|
+
const ownerOf = (path) => queue.patches.find((patch) => patch.files.includes(path))?.name;
|
|
56
|
+
const createdOwners = new Map(adopted.created.flatMap((path) => {
|
|
57
|
+
const owner = ownerOf(path);
|
|
58
|
+
return owner === undefined ? [] : [[path, owner]];
|
|
59
|
+
}));
|
|
60
|
+
const tiers = new Map(queue.patches.flatMap((patch) => patch.tier === undefined ? [] : [[patch.name, patch.tier]]));
|
|
61
|
+
const upstreamOwners = new Set([...adopted.overridden, ...adopted.deleted].map((path) => ownerOf(path)));
|
|
62
|
+
// A patch that changed upstream files and created others becomes two
|
|
63
|
+
// groups, and two groups may not share an ID.
|
|
64
|
+
const createdGroup = (patch) => upstreamOwners.has(patch) ? `${patch}-created` : patch;
|
|
65
|
+
const groups = [...createdGlobs(createdOwners, pristine.directories)].map(([name, paths]) => ({
|
|
66
|
+
name: createdGroup(name),
|
|
67
|
+
paths,
|
|
68
|
+
...(tiers.has(name) ? { tier: tiers.get(name) } : {}),
|
|
69
|
+
}));
|
|
70
|
+
const componentTiers = Object.fromEntries([...tiers].filter(([name]) => upstreamOwners.has(name)));
|
|
71
|
+
const created = new Set(createdOwners.values());
|
|
72
|
+
const waivers = queue.patches.flatMap((patch) => [
|
|
73
|
+
...(upstreamOwners.has(patch.name) ? [patch.name] : []),
|
|
74
|
+
...(created.has(patch.name) ? [createdGroup(patch.name)] : []),
|
|
75
|
+
].flatMap((group) => (patch.lintIgnore ?? []).map((entry) => typeof entry === 'string'
|
|
76
|
+
? { group, rule: entry, reason: `Carried over from patch ${patch.name}` }
|
|
77
|
+
: {
|
|
78
|
+
group,
|
|
79
|
+
rule: entry.rule,
|
|
80
|
+
max: entry.max,
|
|
81
|
+
reason: entry.reason,
|
|
82
|
+
...(entry.share === undefined ? {} : { share: entry.share }),
|
|
83
|
+
})));
|
|
84
|
+
const exportQueue = {
|
|
85
|
+
...section(document, 'exportQueue'),
|
|
86
|
+
...(groups.length === 0 ? {} : { groups }),
|
|
87
|
+
...(Object.keys(componentTiers).length === 0 ? {} : { componentTiers }),
|
|
88
|
+
};
|
|
89
|
+
const patchLint = {
|
|
90
|
+
...section(document, 'patchLint'),
|
|
91
|
+
...(waivers.length === 0 ? {} : { waivers }),
|
|
92
|
+
};
|
|
93
|
+
return {
|
|
94
|
+
...document,
|
|
95
|
+
mode: 'source',
|
|
96
|
+
source: { root: SOURCE_ROOT, metadataRoot: METADATA_ROOT, pristineCommit: pristine.commit },
|
|
97
|
+
...(Object.keys(exportQueue).length === 0 ? {} : { exportQueue }),
|
|
98
|
+
...(Object.keys(patchLint).length === 0 ? {} : { patchLint }),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
async function assertCommitted(project) {
|
|
102
|
+
const worktree = project.checkout.worktree;
|
|
103
|
+
const refuse = (message) => new FireForgeError('migrate-needs-clean-tree', message, {
|
|
104
|
+
exitCode: ExitCode.GIT_ERROR,
|
|
105
|
+
hint: 'Commit the project first: git is the undo of a migration.',
|
|
106
|
+
});
|
|
107
|
+
if (worktree === undefined)
|
|
108
|
+
throw refuse('The project is not in a git repository.');
|
|
109
|
+
const inside = toPosixPath(relative(worktree, project.root));
|
|
110
|
+
const dirty = await gitStatus(worktree, inside === '' ? {} : { paths: [inside] });
|
|
111
|
+
if (dirty.length > 0) {
|
|
112
|
+
throw refuse(`The project has ${dirty.length} uncommitted change(s), such as ${dirty[0]?.path ?? ''}.`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Converts a patch-mode project to source mode, in place, and proves the
|
|
117
|
+
* result: the tree re-derived from the written owned files and records must
|
|
118
|
+
* equal the tree the queue replays to. `patches/` is removed; `export`
|
|
119
|
+
* writes it again as generated output.
|
|
120
|
+
*
|
|
121
|
+
* @param project - A committed patch-mode project whose pin has been downloaded
|
|
122
|
+
* @throws `patch-mode-required`, `pristine-missing`, `queue-does-not-apply`,
|
|
123
|
+
* `migrate-needs-clean-tree`, `adopt-destination-not-empty`,
|
|
124
|
+
* `migrate-mismatch` (exit code 6) when the result does not reproduce the queue
|
|
125
|
+
*/
|
|
126
|
+
export async function migrate(project) {
|
|
127
|
+
const patches = requirePatchMode(project);
|
|
128
|
+
const { root } = project;
|
|
129
|
+
await assertCommitted(project);
|
|
130
|
+
const pristine = await pinnedPristine(project);
|
|
131
|
+
const queue = await readQueue(patches.paths.patches);
|
|
132
|
+
const tree = await replayQueue(pristine.repo, pristine.commit, queue.dir);
|
|
133
|
+
const { document, text } = await readConfigDocument(root);
|
|
134
|
+
const configPath = join(root, CONFIG_FILE);
|
|
135
|
+
let adopted;
|
|
136
|
+
let migrated;
|
|
137
|
+
try {
|
|
138
|
+
adopted = await adoptTrees(pristine, { repo: pristine.repo, tree }, {
|
|
139
|
+
destination: root,
|
|
140
|
+
sourceRoot: SOURCE_ROOT,
|
|
141
|
+
metadataRoot: METADATA_ROOT,
|
|
142
|
+
ownerOf: (path) => ({
|
|
143
|
+
component: defined(queue.patches.find((patch) => patch.files.includes(path))?.name, 'a path the replay changed is in a patch'),
|
|
144
|
+
}),
|
|
145
|
+
});
|
|
146
|
+
// Listing a directory's entries proves the directory and every ancestor of it.
|
|
147
|
+
const upstream = await listTree(pristine.repo, pristine.commit, {
|
|
148
|
+
paths: [...new Set(adopted.created.flatMap(ancestors))].map((directory) => `${directory}/`),
|
|
149
|
+
recursive: false,
|
|
150
|
+
});
|
|
151
|
+
const config = migratedConfig(document, queue, adopted, {
|
|
152
|
+
commit: pristine.commit,
|
|
153
|
+
directories: new Set(upstream.flatMap((entry) => ancestors(entry.path))),
|
|
154
|
+
});
|
|
155
|
+
configSchema.parse(config, { source: configPath, code: 'config-invalid' });
|
|
156
|
+
await writeFile(configPath, stringifyJson(config));
|
|
157
|
+
migrated = requireSourceMode(await loadProject(root, { FIREFORGE_HOME: project.host.root }));
|
|
158
|
+
const derived = await ownedTree(pristine, await sourceChanges(migrated, pristine));
|
|
159
|
+
if (derived !== tree) {
|
|
160
|
+
throw new FireForgeError('migrate-mismatch', 'The owned files and records written do not reproduce the tree the patch queue replays to.', { exitCode: ExitCode.PATCH_ERROR, hint: 'Nothing was kept. Report this.' });
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
// A source or metadata root that was refused as occupied holds nothing of ours to undo.
|
|
165
|
+
const occupied = error instanceof FireForgeError && error.code === 'adopt-destination-not-empty';
|
|
166
|
+
if (!occupied) {
|
|
167
|
+
await remove(join(root, SOURCE_ROOT));
|
|
168
|
+
await remove(join(root, METADATA_ROOT));
|
|
169
|
+
await writeFile(configPath, text);
|
|
170
|
+
}
|
|
171
|
+
throw error;
|
|
172
|
+
}
|
|
173
|
+
await remove(patches.paths.patches);
|
|
174
|
+
await installMergeDriver(migrated);
|
|
175
|
+
return {
|
|
176
|
+
created: [...adopted.created],
|
|
177
|
+
overridden: [...adopted.overridden],
|
|
178
|
+
deleted: [...adopted.deleted],
|
|
179
|
+
pristineCommit: pristine.commit,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
+
/**
|
|
3
|
+
* Placing the waivers of the previous format on groups. A previous waiver
|
|
4
|
+
* named the paths one patch had held; a current one names a group, so each
|
|
5
|
+
* check goes to the groups that hold exactly those paths:
|
|
6
|
+
*
|
|
7
|
+
* - A size check measured the upstream changes of the waiver's component,
|
|
8
|
+
* which is a group by the same name.
|
|
9
|
+
* - Any other check applied per path. Upstream paths are in their
|
|
10
|
+
* component's group. Created paths are reached through the declared
|
|
11
|
+
* `exportQueue.groups` they fill completely; the rest get a group of their
|
|
12
|
+
* own, named after the component, so the waiver reaches them and no other
|
|
13
|
+
* file. Files a Furnace component deploys are in that component's group,
|
|
14
|
+
* which no configuration can split.
|
|
15
|
+
*
|
|
16
|
+
* A check is never placed where it would reach a file the previous waiver
|
|
17
|
+
* did not cover: it is a blocker, or, where only a person can decide to
|
|
18
|
+
* waive the wider group, it is left out and reported.
|
|
19
|
+
*/
|
|
20
|
+
import { LINT_RULE_IDS } from '../config/index.js';
|
|
21
|
+
import { isRecord } from '../kernel/json.js';
|
|
22
|
+
import { exportedPatchName } from '../source/index.js';
|
|
23
|
+
/** Rules that measure a whole group rather than judge one path. */
|
|
24
|
+
const SIZE_RULES = new Set(['large-patch-lines', 'large-patch-files']);
|
|
25
|
+
/**
|
|
26
|
+
* The groups a per-path check of one waiver lands on, or the reason it
|
|
27
|
+
* cannot be placed. Creates the waiver's own group of created files when it
|
|
28
|
+
* needs one.
|
|
29
|
+
*/
|
|
30
|
+
function perPathGroups(waiver, owned, plan) {
|
|
31
|
+
const covered = new Set(waiver.paths);
|
|
32
|
+
const inside = (group) => (owned.members.get(group) ?? []).every((path) => covered.has(path));
|
|
33
|
+
const live = waiver.paths.flatMap((path) => owned.entries.get(path) ?? []);
|
|
34
|
+
const upstream = new Set(live.filter((entry) => entry.kind !== 'create').map((entry) => entry.group));
|
|
35
|
+
const widened = [...upstream].filter((group) => !inside(group));
|
|
36
|
+
if (widened.length > 0) {
|
|
37
|
+
return {
|
|
38
|
+
blocker: `covers some upstream paths of component ${widened.join(', ')} and not others; a waiver names a whole group`,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const whole = new Set();
|
|
42
|
+
const partial = new Set();
|
|
43
|
+
const loose = [];
|
|
44
|
+
for (const entry of live.filter((candidate) => candidate.kind === 'create')) {
|
|
45
|
+
const fixed = owned.declared.has(entry.group) || owned.furnace.has(entry.group);
|
|
46
|
+
if (fixed && inside(entry.group))
|
|
47
|
+
whole.add(entry.group);
|
|
48
|
+
else if (owned.furnace.has(entry.group))
|
|
49
|
+
partial.add(entry.group);
|
|
50
|
+
else
|
|
51
|
+
loose.push(entry.path);
|
|
52
|
+
}
|
|
53
|
+
if (loose.length === 0)
|
|
54
|
+
return { groups: [...upstream, ...whole], partial: [...partial] };
|
|
55
|
+
const name = exportedPatchName(waiver.component);
|
|
56
|
+
if (!plan.groups.some((group) => group.name === name)) {
|
|
57
|
+
const unsafe = loose.find((path) => /[*?]/.test(path));
|
|
58
|
+
if (unsafe !== undefined)
|
|
59
|
+
return { blocker: `covers ${unsafe}, which a glob cannot name literally` };
|
|
60
|
+
if (owned.taken.has(name)) {
|
|
61
|
+
return {
|
|
62
|
+
blocker: `needs a group "${name}" for the created files it covers, and that ID is taken; declare an exportQueue.groups entry holding exactly those files`,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
owned.taken.add(name);
|
|
66
|
+
plan.groups.push({ name, paths: [...loose].sort() });
|
|
67
|
+
plan.converted.push({
|
|
68
|
+
key: `waivers.json ${waiver.component}`,
|
|
69
|
+
message: `its ${loose.length} created file(s) are now exportQueue group "${name}", which its waivers name`,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return { groups: [...upstream, ...whole, name], partial: [...partial] };
|
|
73
|
+
}
|
|
74
|
+
function placeWaiver(waiver, owned, plan) {
|
|
75
|
+
const at = `waivers.json ${waiver.component}`;
|
|
76
|
+
const isComponent = owned.components.has(waiver.component);
|
|
77
|
+
const add = (entry) => {
|
|
78
|
+
const same = (other) => other.group === entry.group && other.rule === entry.rule && other.share === entry.share;
|
|
79
|
+
if (!plan.waivers.some(same))
|
|
80
|
+
plan.waivers.push(entry);
|
|
81
|
+
};
|
|
82
|
+
if (waiver.tier !== undefined && isComponent) {
|
|
83
|
+
plan.componentTiers[waiver.component] = waiver.tier;
|
|
84
|
+
plan.converted.push({ key: `${at} tier`, message: 'is now exportQueue.componentTiers' });
|
|
85
|
+
}
|
|
86
|
+
else if (waiver.tier !== undefined) {
|
|
87
|
+
plan.removed.push({
|
|
88
|
+
key: `${at} tier`,
|
|
89
|
+
message: 'the tier bounded the upstream changes of the component, which has none',
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
for (const [index, check] of waiver.checks.entries()) {
|
|
93
|
+
const key = `${at} checks[${index}]`;
|
|
94
|
+
const rule = typeof check === 'string' ? check : check.rule;
|
|
95
|
+
if (!LINT_RULE_IDS.includes(rule)) {
|
|
96
|
+
plan.blockers.push({ key, message: `waives "${rule}", which is not a lint rule` });
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
const entry = (group) => typeof check === 'string'
|
|
100
|
+
? { group, rule, reason: `Carried over from ${waiver.component}` }
|
|
101
|
+
: {
|
|
102
|
+
group,
|
|
103
|
+
rule,
|
|
104
|
+
max: check.max,
|
|
105
|
+
reason: check.reason,
|
|
106
|
+
...(check.share === undefined ? {} : { share: check.share }),
|
|
107
|
+
};
|
|
108
|
+
if (typeof check !== 'string' && check.meta !== undefined) {
|
|
109
|
+
plan.removed.push({
|
|
110
|
+
key: `${key}.meta`,
|
|
111
|
+
message: `a waiver holds no notes besides its reason; it held ${JSON.stringify(check.meta)}`,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
if (SIZE_RULES.has(rule)) {
|
|
115
|
+
if (isComponent)
|
|
116
|
+
add(entry(waiver.component));
|
|
117
|
+
else {
|
|
118
|
+
plan.removed.push({
|
|
119
|
+
key,
|
|
120
|
+
message: `"${rule}" bounded the upstream changes of the component, which has none`,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
const placed = perPathGroups(waiver, owned, plan);
|
|
126
|
+
if ('blocker' in placed) {
|
|
127
|
+
plan.blockers.push({ key, message: placed.blocker });
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (placed.groups.length + placed.partial.length === 0) {
|
|
131
|
+
plan.removed.push({ key, message: `"${rule}" covered paths the project no longer owns` });
|
|
132
|
+
}
|
|
133
|
+
for (const group of placed.groups)
|
|
134
|
+
add(entry(group));
|
|
135
|
+
for (const group of placed.partial) {
|
|
136
|
+
plan.manual.push({
|
|
137
|
+
key,
|
|
138
|
+
message: `"${rule}" covered some files of Furnace component ${group} and not others; a waiver names a whole group. ` +
|
|
139
|
+
`It was not carried over: add ${JSON.stringify(entry(group))} to patchLint.waivers to waive the whole component, or fix what lint reports`,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Places every previous waiver on the groups of the project's owned paths.
|
|
146
|
+
*
|
|
147
|
+
* @param previous - The waivers of the previous format
|
|
148
|
+
* @param status - The owned paths and their groups
|
|
149
|
+
* @param declared - The names of the declared `exportQueue.groups`
|
|
150
|
+
* @param components - The files each Furnace component deploys
|
|
151
|
+
*/
|
|
152
|
+
export function placeWaivers(previous, status, declared, components = []) {
|
|
153
|
+
const plan = {
|
|
154
|
+
waivers: [],
|
|
155
|
+
componentTiers: {},
|
|
156
|
+
groups: [],
|
|
157
|
+
converted: [],
|
|
158
|
+
removed: [],
|
|
159
|
+
manual: [],
|
|
160
|
+
blockers: [],
|
|
161
|
+
};
|
|
162
|
+
const deployed = components.flatMap((component) => component.paths.map((path) => ({ path, kind: 'create', group: component.id })));
|
|
163
|
+
// A path the source root owns stays the source root's.
|
|
164
|
+
const entries = new Map([...deployed, ...status.owned].map((entry) => [entry.path, entry]));
|
|
165
|
+
const members = new Map();
|
|
166
|
+
for (const entry of entries.values()) {
|
|
167
|
+
members.set(entry.group, [...(members.get(entry.group) ?? []), entry.path]);
|
|
168
|
+
}
|
|
169
|
+
const owned = {
|
|
170
|
+
entries,
|
|
171
|
+
members,
|
|
172
|
+
components: new Set(status.groups.filter((group) => group.kind === 'component').map((group) => group.id)),
|
|
173
|
+
declared,
|
|
174
|
+
furnace: new Set(components.map((component) => component.id)),
|
|
175
|
+
taken: new Set([...status.groups, ...components].map((group) => group.id)),
|
|
176
|
+
};
|
|
177
|
+
for (const waiver of previous)
|
|
178
|
+
placeWaiver(waiver, owned, plan);
|
|
179
|
+
return plan;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* A `fireforge.json` document with a placement merged into `patchLint` and
|
|
183
|
+
* `exportQueue`.
|
|
184
|
+
*
|
|
185
|
+
* @param document - The document in the current format
|
|
186
|
+
* @param plan - From {@link placeWaivers}
|
|
187
|
+
*/
|
|
188
|
+
export function withWaivers(document, plan) {
|
|
189
|
+
const object = (value) => (isRecord(value) ? value : {});
|
|
190
|
+
const list = (value) => (Array.isArray(value) ? value : []);
|
|
191
|
+
const lint = object(document['patchLint']);
|
|
192
|
+
const queue = object(document['exportQueue']);
|
|
193
|
+
const tiers = { ...object(queue['componentTiers']), ...plan.componentTiers };
|
|
194
|
+
const exportQueue = {
|
|
195
|
+
...queue,
|
|
196
|
+
...(plan.groups.length === 0 ? {} : { groups: [...plan.groups, ...list(queue['groups'])] }),
|
|
197
|
+
...(Object.keys(tiers).length === 0 ? {} : { componentTiers: tiers }),
|
|
198
|
+
};
|
|
199
|
+
return {
|
|
200
|
+
...document,
|
|
201
|
+
...(plan.waivers.length === 0
|
|
202
|
+
? {}
|
|
203
|
+
: { patchLint: { ...lint, waivers: [...list(lint['waivers']), ...plan.waivers] } }),
|
|
204
|
+
...(Object.keys(exportQueue).length === 0 ? {} : { exportQueue }),
|
|
205
|
+
};
|
|
206
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
+
import { ensurePristine, findPristine, installProjectEngine, pinKey, } from '../engine/index.js';
|
|
3
|
+
import { isRepository } from '../git/index.js';
|
|
4
|
+
import { ExitCode, FireForgeError } from '../kernel/errors.js';
|
|
5
|
+
/**
|
|
6
|
+
* The pristine repository of the project's pin, from the host store. A
|
|
7
|
+
* source-mode project also pins the commit, and a store that imported the
|
|
8
|
+
* archive as another commit is refused.
|
|
9
|
+
*
|
|
10
|
+
* @param project - The project
|
|
11
|
+
* @throws `pristine-missing` (exit code 3) when the host never downloaded the pin,
|
|
12
|
+
* `pristine-commit-mismatch` (exit code 2)
|
|
13
|
+
*/
|
|
14
|
+
export async function pinnedPristine(project) {
|
|
15
|
+
const pristine = await findPristine(project.host, project.config.firefox);
|
|
16
|
+
if (pristine === undefined) {
|
|
17
|
+
throw new FireForgeError('pristine-missing', `This host has no pristine source for ${pinKey(project.config.firefox)}.`, { exitCode: ExitCode.DOWNLOAD_ERROR, hint: 'Run "fireforge download".' });
|
|
18
|
+
}
|
|
19
|
+
const pinned = project.config.source?.pristineCommit;
|
|
20
|
+
if (pinned !== undefined && pinned !== pristine.commit) {
|
|
21
|
+
throw new FireForgeError('pristine-commit-mismatch', `The pristine source of ${pinKey(project.config.firefox)} is commit ${pristine.commit}, not the pinned ${pinned}.`, {
|
|
22
|
+
exitCode: ExitCode.CONFIG_ERROR,
|
|
23
|
+
hint: 'The pin and the archive disagree: check firefox.version and source.pristineCommit.',
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return pristine;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Refuses a patch-mode project whose `engine/` has not been downloaded yet.
|
|
30
|
+
*
|
|
31
|
+
* @param project - A patch-mode project
|
|
32
|
+
* @throws `engine-missing` (exit code 1)
|
|
33
|
+
*/
|
|
34
|
+
export async function requireEngine(project) {
|
|
35
|
+
if (await isRepository(project.paths.engine))
|
|
36
|
+
return;
|
|
37
|
+
throw new FireForgeError('engine-missing', `There is no Firefox source at ${project.paths.engine}`, { exitCode: ExitCode.GENERAL_ERROR, hint: 'Run "fireforge download" first.' });
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Fetches the pinned Firefox: imports it into the host pristine store when
|
|
41
|
+
* the host lacks it and, in patch mode, makes `engine/` a checkout of it.
|
|
42
|
+
* A source-mode project needs no engine of its own; its workspaces are
|
|
43
|
+
* checked out of the store when leased.
|
|
44
|
+
*
|
|
45
|
+
* @param project - The project
|
|
46
|
+
* @param options - `force` replaces an existing `engine/`; `waitMs` is for the engine lock
|
|
47
|
+
* @returns The pristine repository, and the engine install in patch mode
|
|
48
|
+
*/
|
|
49
|
+
export async function download(project, options = {}) {
|
|
50
|
+
const pristine = await ensurePristine(project.host, project.config.firefox, {
|
|
51
|
+
...(options.onProgress === undefined ? {} : { onProgress: options.onProgress }),
|
|
52
|
+
expectCommit: project.config.source?.pristineCommit,
|
|
53
|
+
});
|
|
54
|
+
if (project.mode === 'source')
|
|
55
|
+
return { pristine };
|
|
56
|
+
const engine = await installProjectEngine(project, pristine, {
|
|
57
|
+
force: options.force === true,
|
|
58
|
+
waitMs: options.waitMs,
|
|
59
|
+
});
|
|
60
|
+
return { pristine, engine };
|
|
61
|
+
}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
+
/**
|
|
3
|
+
* Moving a project to a new Firefox pin.
|
|
4
|
+
*
|
|
5
|
+
* Source mode merges every owned path three ways against the new pristine
|
|
6
|
+
* commit and leaves conflicts as markers; `source.refreshPin` writes the new
|
|
7
|
+
* pin with the merge, in one transaction.
|
|
8
|
+
*
|
|
9
|
+
* Patch mode replaces `engine/` with a checkout of the new pin, writes the
|
|
10
|
+
* pin, and re-applies the queue with reduced context, rewriting every patch
|
|
11
|
+
* against the new source. A patch that does not apply pauses the rebase
|
|
12
|
+
* (`--continue`, `--abort`). The pin the rebase left is recorded in the
|
|
13
|
+
* project state until the rebase completes, and an abort goes back to it:
|
|
14
|
+
* `fireforge.json`, a checkout of that pin in `engine/`, and the queue
|
|
15
|
+
* applied.
|
|
16
|
+
*/
|
|
17
|
+
import { inferFirefoxProduct, setConfigValue, } from '../config/index.js';
|
|
18
|
+
import { ensurePristine, installProjectEngine, withEngineLock } from '../engine/index.js';
|
|
19
|
+
import { ExitCode, FireForgeError } from '../kernel/errors.js';
|
|
20
|
+
import { exists } from '../kernel/fs.js';
|
|
21
|
+
import { s } from '../kernel/schema.js';
|
|
22
|
+
import { defineStateSection, loadProject, readState, updateState, } from '../project/index.js';
|
|
23
|
+
import { importQueue, queueStatus, rebaseQueue, replayQueue, requirePatchMode, } from '../queue/index.js';
|
|
24
|
+
import { refreshPin } from '../source/index.js';
|
|
25
|
+
import { pinnedPristine } from './pristine.js';
|
|
26
|
+
function usage(message, hint) {
|
|
27
|
+
return new FireForgeError('invalid-argument', message, {
|
|
28
|
+
exitCode: ExitCode.INVALID_ARGUMENT,
|
|
29
|
+
...(hint === undefined ? {} : { hint }),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/** The `firefox` block of the new pin: the current one's download policy, the new release. */
|
|
33
|
+
function newPin(project, options) {
|
|
34
|
+
const current = project.config.firefox;
|
|
35
|
+
const inferred = inferFirefoxProduct(options.to);
|
|
36
|
+
const product = options.product ??
|
|
37
|
+
(inferred === 'firefox-beta' && current.product === 'firefox-devedition'
|
|
38
|
+
? current.product
|
|
39
|
+
: inferred);
|
|
40
|
+
return {
|
|
41
|
+
version: options.to,
|
|
42
|
+
product,
|
|
43
|
+
allowUnverifiedDownload: current.allowUnverifiedDownload,
|
|
44
|
+
...(options.sha256 === undefined ? {} : { sha256: options.sha256 }),
|
|
45
|
+
...(options.candidate === undefined ? {} : { candidate: options.candidate }),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function progress(options) {
|
|
49
|
+
return options.onProgress === undefined ? {} : { onProgress: options.onProgress };
|
|
50
|
+
}
|
|
51
|
+
/** The pin as `fireforge.json` holds it: defaults are not written out. */
|
|
52
|
+
function pinDocument(pin) {
|
|
53
|
+
const { allowUnverifiedDownload, ...rest } = pin;
|
|
54
|
+
return { ...rest, ...(allowUnverifiedDownload ? { allowUnverifiedDownload } : {}) };
|
|
55
|
+
}
|
|
56
|
+
async function rebaseSource(project, options) {
|
|
57
|
+
if ([options.continue, options.abort, options.dryRun, options.force].includes(true)) {
|
|
58
|
+
throw usage('A source-mode rebase is one merge: it has nothing to continue, abort, dry-run or force.', 'Resolve the conflict markers and commit; "git restore" and "git clean" undo the merge.');
|
|
59
|
+
}
|
|
60
|
+
if (options.to === undefined)
|
|
61
|
+
throw usage('rebase needs the new version: --to <version>.');
|
|
62
|
+
const pin = newPin(project, { ...options, to: options.to });
|
|
63
|
+
const current = await pinnedPristine(project);
|
|
64
|
+
const next = await ensurePristine(project.host, pin, progress(options));
|
|
65
|
+
const result = await refreshPin(project, current, next, pinDocument(pin));
|
|
66
|
+
return {
|
|
67
|
+
status: result.conflicts.length > 0 ? 'conflicts' : 'complete',
|
|
68
|
+
pin: { version: pin.version, product: pin.product },
|
|
69
|
+
entries: result.paths.map((path) => ({
|
|
70
|
+
subject: path.path,
|
|
71
|
+
outcome: path.reason === undefined ? path.outcome : `${path.outcome} (${path.reason})`,
|
|
72
|
+
})),
|
|
73
|
+
conflicts: [...result.conflicts],
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/** The `firefox` block a patch-mode rebase moved away from, as `fireforge.json` held it. */
|
|
77
|
+
const originSection = defineStateSection('rebaseOrigin', s.object({ firefox: s.string({ min: 1 }) }), 'fireforge rebase --abort');
|
|
78
|
+
const reload = async (project) => requirePatchMode(await loadProject(project.root, { FIREFORGE_HOME: project.host.root }));
|
|
79
|
+
/** Puts a patch-mode project's engine and configuration on a new pin. */
|
|
80
|
+
async function movePin(project, pin, options) {
|
|
81
|
+
if (await exists(project.paths.engine)) {
|
|
82
|
+
const status = await withEngineLock(project, { command: 'rebase', mode: 'shared', waitMs: options.waitMs }, () => queueStatus(project));
|
|
83
|
+
if (status.session !== undefined) {
|
|
84
|
+
throw new FireForgeError('session-active', `A ${status.session.kind} is paused.`, {
|
|
85
|
+
exitCode: ExitCode.PATCH_ERROR,
|
|
86
|
+
hint: `Finish it with "fireforge ${status.session.kind} --continue" or drop it with "fireforge rebase --abort".`,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
const unexported = status.paths.filter((path) => path.state === 'modified' || path.state === 'unmanaged');
|
|
90
|
+
if (unexported.length > 0 && options.force !== true) {
|
|
91
|
+
throw new FireForgeError('engine-unexported-edits', `engine/ holds ${unexported.length} edit(s) no patch has, such as ${unexported[0]?.path ?? ''}; a rebase replaces the engine.`, {
|
|
92
|
+
exitCode: ExitCode.PATCH_ERROR,
|
|
93
|
+
hint: 'Capture them with "fireforge export" or "fireforge re-export", drop them with "fireforge discard", or pass --force (a recovery snapshot keeps them).',
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const interrupted = await readState(project, originSection);
|
|
98
|
+
if (interrupted !== undefined) {
|
|
99
|
+
throw new FireForgeError('rebase-interrupted', `A rebase away from ${interrupted.firefox} did not finish.`, {
|
|
100
|
+
exitCode: ExitCode.PATCH_ERROR,
|
|
101
|
+
hint: 'Go back to that version with "fireforge rebase --abort", or finish with "fireforge rebase --continue".',
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
const pristine = await ensurePristine(project.host, pin, progress(options));
|
|
105
|
+
await updateState(project, originSection, () => ({
|
|
106
|
+
firefox: JSON.stringify(pinDocument(project.config.firefox)),
|
|
107
|
+
}));
|
|
108
|
+
await installProjectEngine(project, pristine, { force: true, waitMs: options.waitMs });
|
|
109
|
+
await setConfigValue(project.root, 'firefox', JSON.stringify(pinDocument(pin)));
|
|
110
|
+
return reload(project);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Takes an aborted rebase back to the pin it started from: the configuration,
|
|
114
|
+
* a checkout of that pin, and the queue applied to it. A rebase that changed
|
|
115
|
+
* no pin has nothing to go back to.
|
|
116
|
+
*/
|
|
117
|
+
async function restoreOrigin(project, options) {
|
|
118
|
+
const origin = await readState(project, originSection);
|
|
119
|
+
if (origin === undefined)
|
|
120
|
+
return project;
|
|
121
|
+
await setConfigValue(project.root, 'firefox', origin.firefox);
|
|
122
|
+
const restored = await reload(project);
|
|
123
|
+
const pristine = await ensurePristine(restored.host, restored.config.firefox, progress(options));
|
|
124
|
+
await installProjectEngine(restored, pristine, { force: true, waitMs: options.waitMs });
|
|
125
|
+
await withEngineLock(restored, { command: 'rebase', waitMs: options.waitMs }, () => importQueue(restored));
|
|
126
|
+
await updateState(restored, originSection, () => undefined);
|
|
127
|
+
return restored;
|
|
128
|
+
}
|
|
129
|
+
async function rebasePatches(project, options) {
|
|
130
|
+
const resuming = options.continue === true || options.abort === true;
|
|
131
|
+
if (resuming && options.to !== undefined) {
|
|
132
|
+
throw usage('--to starts a rebase; --continue and --abort act on the paused one.');
|
|
133
|
+
}
|
|
134
|
+
const pin = options.to === undefined ? undefined : newPin(project, { ...options, to: options.to });
|
|
135
|
+
if (pin !== undefined && options.dryRun === true) {
|
|
136
|
+
const pristine = await ensurePristine(project.host, pin, progress(options));
|
|
137
|
+
const failure = await replayQueue(pristine.repo, pristine.commit, project.paths.patches).then(() => undefined, (error) => {
|
|
138
|
+
if (error instanceof FireForgeError && error.code === 'queue-does-not-apply')
|
|
139
|
+
return error;
|
|
140
|
+
throw error;
|
|
141
|
+
});
|
|
142
|
+
return {
|
|
143
|
+
status: 'dry-run',
|
|
144
|
+
pin: { version: pin.version, product: pin.product },
|
|
145
|
+
entries: [],
|
|
146
|
+
conflicts: failure === undefined ? [] : [failure.message],
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
const target = pin === undefined ? project : await movePin(project, pin, options);
|
|
150
|
+
const result = await withEngineLock(target, { command: 'rebase', waitMs: options.waitMs }, () => rebaseQueue(target, {
|
|
151
|
+
...(options.continue === true ? { continue: true } : {}),
|
|
152
|
+
...(options.abort === true ? { abort: true } : {}),
|
|
153
|
+
...(options.dryRun === true ? { dryRun: true } : {}),
|
|
154
|
+
...(options.force === true ? { force: true } : {}),
|
|
155
|
+
})).catch(async (error) => {
|
|
156
|
+
// A rebase interrupted before its queue was applied has no paused session, only its origin.
|
|
157
|
+
const unapplied = options.abort === true &&
|
|
158
|
+
error instanceof FireForgeError &&
|
|
159
|
+
error.code === 'no-session' &&
|
|
160
|
+
(await readState(target, originSection)) !== undefined;
|
|
161
|
+
if (!unapplied)
|
|
162
|
+
throw error;
|
|
163
|
+
return { status: 'aborted', patches: [], written: [], emptied: [] };
|
|
164
|
+
});
|
|
165
|
+
const settled = options.abort === true ? await restoreOrigin(target, options) : target;
|
|
166
|
+
if (result.status === 'complete' || result.status === 'up-to-date') {
|
|
167
|
+
await updateState(target, originSection, () => undefined);
|
|
168
|
+
}
|
|
169
|
+
const { version, product } = settled.config.firefox;
|
|
170
|
+
return {
|
|
171
|
+
status: result.status,
|
|
172
|
+
pin: { version, product },
|
|
173
|
+
entries: result.patches.map((patch) => ({
|
|
174
|
+
subject: patch.patch,
|
|
175
|
+
outcome: result.emptied.includes(patch.patch) ? 'emptied' : patch.status,
|
|
176
|
+
})),
|
|
177
|
+
conflicts: result.patches.flatMap((patch) => patch.conflicts === undefined || patch.conflicts.length === 0 ? [] : [patch.patch]),
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Moves the project to a new Firefox pin (see the module comment).
|
|
182
|
+
*
|
|
183
|
+
* @param project - The project
|
|
184
|
+
* @param options - See {@link RebaseOptions}
|
|
185
|
+
* @throws `invalid-argument` for options the mode has no meaning for; the
|
|
186
|
+
* download errors of the engine module; in patch mode the paused-session
|
|
187
|
+
* error naming the patch that did not apply, `engine-unexported-edits`;
|
|
188
|
+
* in source mode `refresh-dirty` and `refresh-pin-unchanged`
|
|
189
|
+
*/
|
|
190
|
+
export async function rebase(project, options = {}) {
|
|
191
|
+
if (options.to === project.config.firefox.version && options.product === undefined) {
|
|
192
|
+
throw usage(`The project is already on Firefox ${options.to}.`);
|
|
193
|
+
}
|
|
194
|
+
return project.mode === 'source'
|
|
195
|
+
? rebaseSource(project, options)
|
|
196
|
+
: rebasePatches(project, options);
|
|
197
|
+
}
|