@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,102 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
+
/**
|
|
3
|
+
* Git objects for the owned changes. Patch bodies are produced by the one
|
|
4
|
+
* diff generator (`git/diff.ts`) from two trees in one repository: the
|
|
5
|
+
* upstream side of every owned path and the owned side. Both live in a
|
|
6
|
+
* private bare repository under the project's state directory, so neither
|
|
7
|
+
* the checkout's repository nor the read-only pristine repository receives
|
|
8
|
+
* an object. The store is a cache; deleting it loses nothing.
|
|
9
|
+
*/
|
|
10
|
+
import { join } from 'node:path';
|
|
11
|
+
import { formatPatch, parsePatch } from '../diff/index.js';
|
|
12
|
+
import { diffTrees, git, initRepository, objectFormat, readBlobs, writeBlobs, writeTree, } from '../git/index.js';
|
|
13
|
+
import { invariant } from '../kernel/errors.js';
|
|
14
|
+
import { exists } from '../kernel/fs.js';
|
|
15
|
+
import { hash } from '../kernel/hash.js';
|
|
16
|
+
/**
|
|
17
|
+
* The git blob id of some bytes, as `git hash-object` computes it.
|
|
18
|
+
*
|
|
19
|
+
* @param bytes - The content
|
|
20
|
+
* @param format - The repository's object format
|
|
21
|
+
*/
|
|
22
|
+
export function blobId(bytes, format) {
|
|
23
|
+
const header = Buffer.from(`blob ${bytes.length}\0`);
|
|
24
|
+
return hash(Buffer.concat([header, bytes]), format);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Reads pristine blobs by id.
|
|
28
|
+
*
|
|
29
|
+
* @param pristine - The pristine repository
|
|
30
|
+
* @param blobs - Blob ids
|
|
31
|
+
* @throws An internal error when the repository lacks one
|
|
32
|
+
*/
|
|
33
|
+
export async function readPristineBlobs(pristine, blobs) {
|
|
34
|
+
const found = await readBlobs(pristine.repo, blobs);
|
|
35
|
+
for (const blob of blobs) {
|
|
36
|
+
invariant(found.has(blob), () => `the pristine repository holds blob ${blob}`);
|
|
37
|
+
}
|
|
38
|
+
return found;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The private object store of a project, created on first use with the
|
|
42
|
+
* pristine repository's object format.
|
|
43
|
+
*
|
|
44
|
+
* @param tree - The source tree whose project and pristine repository to use
|
|
45
|
+
*/
|
|
46
|
+
async function objectStore(tree) {
|
|
47
|
+
const store = join(tree.project.paths.stateDir, 'source', 'objects.git');
|
|
48
|
+
if (!(await exists(join(store, 'HEAD')))) {
|
|
49
|
+
await initRepository(store, {
|
|
50
|
+
bare: true,
|
|
51
|
+
objectFormat: await objectFormat(tree.pristine.repo),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return store;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Stores files from disk as blobs, byte for byte.
|
|
58
|
+
*
|
|
59
|
+
* @param store - The repository
|
|
60
|
+
* @param files - Absolute paths
|
|
61
|
+
* @returns Their blob ids, in input order
|
|
62
|
+
*/
|
|
63
|
+
async function storeFiles(store, files) {
|
|
64
|
+
if (files.length === 0)
|
|
65
|
+
return [];
|
|
66
|
+
const output = await git(['hash-object', '-w', '--no-filters', '--stdin-paths'], {
|
|
67
|
+
cwd: store,
|
|
68
|
+
input: `${files.join('\n')}\n`,
|
|
69
|
+
});
|
|
70
|
+
return output.trim().split('\n');
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Writes the upstream and owned sides of entries as two trees.
|
|
74
|
+
*
|
|
75
|
+
* @param tree - The source tree
|
|
76
|
+
* @param entries - The entries to include
|
|
77
|
+
*/
|
|
78
|
+
export async function writeDeltaTrees(tree, entries) {
|
|
79
|
+
const store = await objectStore(tree);
|
|
80
|
+
const upstream = entries.flatMap((entry) => entry.upstream === undefined ? [] : [{ path: entry.path, ...entry.upstream }]);
|
|
81
|
+
const contents = await readPristineBlobs(tree.pristine, upstream.map((entry) => entry.blob));
|
|
82
|
+
const stored = await writeBlobs(store, upstream.map((entry) => contents.get(entry.blob) ?? Buffer.alloc(0)));
|
|
83
|
+
upstream.forEach((entry, index) => {
|
|
84
|
+
invariant(stored[index] === entry.blob, () => `blob of ${entry.path} stores under its id`);
|
|
85
|
+
});
|
|
86
|
+
const owned = entries.flatMap((entry) => entry.file === undefined ? [] : [{ path: entry.path, ...entry.file }]);
|
|
87
|
+
const ids = await storeFiles(store, owned.map((entry) => entry.absolute));
|
|
88
|
+
const before = await writeTree(store, upstream.map((entry) => ({ path: entry.path, oid: entry.blob, mode: entry.mode })));
|
|
89
|
+
const after = await writeTree(store, owned.map((entry, index) => ({ path: entry.path, oid: ids[index] ?? '', mode: entry.mode })));
|
|
90
|
+
return { store, before, after };
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The patch section of every changed path between the two trees, keyed by
|
|
94
|
+
* path, in git's path order. An entry whose owned bytes equal upstream has
|
|
95
|
+
* no section.
|
|
96
|
+
*
|
|
97
|
+
* @param trees - See {@link writeDeltaTrees}
|
|
98
|
+
*/
|
|
99
|
+
export async function diffSections(trees) {
|
|
100
|
+
const patch = parsePatch(await diffTrees(trees.store, trees.before, trees.after));
|
|
101
|
+
return new Map(patch.files.map((file) => [file.path, formatPatch({ ...patch, preamble: [], files: [file] })]));
|
|
102
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
+
/**
|
|
3
|
+
* The previous format of a source-mode project's metadata, and its
|
|
4
|
+
* conversion to the current one. This file is the only place that knows it:
|
|
5
|
+
*
|
|
6
|
+
* - override records carried `schemaVersion`, their own `path` and the
|
|
7
|
+
* archive digest `base.pin` beside the fields a record holds today;
|
|
8
|
+
* - `waivers.json` held the lint waivers and size tiers of the patches the
|
|
9
|
+
* project was first cut from, each with the paths it covered;
|
|
10
|
+
* - `policy.json` held a reviewed decision per `patchPolicy.scopeRules`
|
|
11
|
+
* entry: `retire` it, or `retain` it as a path scope;
|
|
12
|
+
* - `cutover-map.json` and `legacy-manifest.json` authenticated the two;
|
|
13
|
+
* - the merge driver was called `fireforge-authored`.
|
|
14
|
+
*
|
|
15
|
+
* Everything here is a pure function of file content. Nothing is guessed: a
|
|
16
|
+
* file that is neither the current nor the previous format is a problem the
|
|
17
|
+
* caller reports.
|
|
18
|
+
*/
|
|
19
|
+
import { hash } from '../kernel/hash.js';
|
|
20
|
+
import { isRecord, omitKeys, parseJson } from '../kernel/json.js';
|
|
21
|
+
import { s } from '../kernel/schema.js';
|
|
22
|
+
import { MERGE_DRIVER } from './merge.js';
|
|
23
|
+
import { encodeRecord, overrideRecordSchema } from './records.js';
|
|
24
|
+
/** The merge driver's earlier name in `.gitattributes` and git configuration. */
|
|
25
|
+
export const PREVIOUS_MERGE_DRIVER = 'fireforge-authored';
|
|
26
|
+
/** Files of the metadata root that only the previous format read. */
|
|
27
|
+
export const PREVIOUS_METADATA_FILES = [
|
|
28
|
+
'waivers.json',
|
|
29
|
+
'policy.json',
|
|
30
|
+
'cutover-map.json',
|
|
31
|
+
'legacy-manifest.json',
|
|
32
|
+
];
|
|
33
|
+
/**
|
|
34
|
+
* Converts an override record of the previous format to the current bytes.
|
|
35
|
+
*
|
|
36
|
+
* @param text - The record file's content
|
|
37
|
+
* @param path - The engine path the file's location names
|
|
38
|
+
*/
|
|
39
|
+
export function upgradeRecord(text, path) {
|
|
40
|
+
let value;
|
|
41
|
+
try {
|
|
42
|
+
value = parseJson(text);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return { state: 'invalid', problem: 'is not JSON' };
|
|
46
|
+
}
|
|
47
|
+
if (overrideRecordSchema.validate(value).ok)
|
|
48
|
+
return { state: 'current' };
|
|
49
|
+
if (!isRecord(value) || !isRecord(value['base'])) {
|
|
50
|
+
return { state: 'invalid', problem: 'is not an override record' };
|
|
51
|
+
}
|
|
52
|
+
const { schemaVersion, path: recorded, base, ...rest } = value;
|
|
53
|
+
if (schemaVersion !== 1) {
|
|
54
|
+
return { state: 'invalid', problem: `has schemaVersion ${JSON.stringify(schemaVersion)}` };
|
|
55
|
+
}
|
|
56
|
+
if (recorded !== path) {
|
|
57
|
+
return {
|
|
58
|
+
state: 'invalid',
|
|
59
|
+
problem: `names path ${JSON.stringify(recorded)}, not the path of its own location`,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const result = overrideRecordSchema.validate({ ...rest, base: omitKeys(base, 'pin') });
|
|
63
|
+
if (!result.ok) {
|
|
64
|
+
const [issue] = result.issues;
|
|
65
|
+
return {
|
|
66
|
+
state: 'invalid',
|
|
67
|
+
problem: `"${issue?.path ?? ''}" ${issue?.message ?? 'is invalid'}`,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return { state: 'converted', text: encodeRecord(result.value) };
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* A source root's `.gitattributes` with the previous merge driver replaced
|
|
74
|
+
* by the current one, or undefined when it does not name the previous one.
|
|
75
|
+
*
|
|
76
|
+
* @param text - The file's content
|
|
77
|
+
*/
|
|
78
|
+
export function upgradeAttributes(text) {
|
|
79
|
+
const pattern = new RegExp(`(^|\\s)merge=${PREVIOUS_MERGE_DRIVER}(?=\\s|$)`, 'gm');
|
|
80
|
+
const next = text.replace(pattern, `$1merge=${MERGE_DRIVER}`);
|
|
81
|
+
return next === text ? undefined : next;
|
|
82
|
+
}
|
|
83
|
+
const ceiling = s.object({
|
|
84
|
+
rule: s.string({ min: 1 }),
|
|
85
|
+
max: s.int({ min: 0 }),
|
|
86
|
+
reason: s.string({ min: 1 }),
|
|
87
|
+
share: s.enum(['product', 'test']).optional(),
|
|
88
|
+
meta: s.record(s.unknown()).optional(),
|
|
89
|
+
});
|
|
90
|
+
const waiversSchema = s.object({
|
|
91
|
+
schemaVersion: s.literal(1),
|
|
92
|
+
exceptions: s.array(s.object({
|
|
93
|
+
component: s.string({ min: 1 }),
|
|
94
|
+
paths: s.array(s.string({ min: 1 })),
|
|
95
|
+
checks: s.array(s.union(s.string({ min: 1 }), ceiling)),
|
|
96
|
+
tier: s.literal('branding').optional(),
|
|
97
|
+
provenance: s.string().optional(),
|
|
98
|
+
})),
|
|
99
|
+
});
|
|
100
|
+
/**
|
|
101
|
+
* Reads a `waivers.json`.
|
|
102
|
+
*
|
|
103
|
+
* @param text - The file's content
|
|
104
|
+
* @param source - The file's path, for messages
|
|
105
|
+
* @throws `migrate-metadata-invalid` (exit code 2) when it is not the previous format
|
|
106
|
+
*/
|
|
107
|
+
export function parsePreviousWaivers(text, source) {
|
|
108
|
+
const { exceptions } = waiversSchema.parse(parseJson(text, { source }), {
|
|
109
|
+
source,
|
|
110
|
+
code: 'migrate-metadata-invalid',
|
|
111
|
+
});
|
|
112
|
+
return exceptions.map(({ component, paths, checks, tier }) => ({
|
|
113
|
+
component,
|
|
114
|
+
paths,
|
|
115
|
+
checks,
|
|
116
|
+
...(tier === undefined ? {} : { tier }),
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
const policySchema = s.object({
|
|
120
|
+
schemaVersion: s.literal(1),
|
|
121
|
+
status: s.literal('approved'),
|
|
122
|
+
adr: s.string().optional(),
|
|
123
|
+
legacyScopeDigest: s.string().optional(),
|
|
124
|
+
retireCreatedPatchBudgets: s.boolean().optional(),
|
|
125
|
+
createdPatchBudgetReason: s.string().optional(),
|
|
126
|
+
scopeRules: s.array(s.object({
|
|
127
|
+
legacyRule: s.string({ min: 1 }),
|
|
128
|
+
decision: s.enum(['retire', 'retain']),
|
|
129
|
+
reason: s.string({ min: 1 }),
|
|
130
|
+
select: s.array(s.string()).optional(),
|
|
131
|
+
allow: s.array(s.string()).optional(),
|
|
132
|
+
})),
|
|
133
|
+
});
|
|
134
|
+
/** JSON with sorted keys and no whitespace, the form the previous format hashed. */
|
|
135
|
+
function canonical(value) {
|
|
136
|
+
if (value === null || typeof value !== 'object')
|
|
137
|
+
return JSON.stringify(value);
|
|
138
|
+
if (Array.isArray(value))
|
|
139
|
+
return `[${value.map(canonical).join(',')}]`;
|
|
140
|
+
return `{${Object.entries(value)
|
|
141
|
+
.filter(([, item]) => item !== undefined)
|
|
142
|
+
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
|
|
143
|
+
.map(([key, item]) => `${JSON.stringify(key)}:${canonical(item)}`)
|
|
144
|
+
.join(',')}}`;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* The decision a `policy.json` holds for each scope rule, by the rule's
|
|
148
|
+
* index. A decision is bound to its rule by a digest of the rule and its
|
|
149
|
+
* position, so a rule edited since the review has none.
|
|
150
|
+
*
|
|
151
|
+
* @param text - The file's content
|
|
152
|
+
* @param source - The file's path, for messages
|
|
153
|
+
* @param rules - `patchPolicy.scopeRules` as the previous format wrote them
|
|
154
|
+
* @throws `migrate-metadata-invalid` (exit code 2) when it is not the previous format
|
|
155
|
+
*/
|
|
156
|
+
export function parseScopeDecisions(text, source, rules) {
|
|
157
|
+
const policy = policySchema.parse(parseJson(text, { source }), {
|
|
158
|
+
source,
|
|
159
|
+
code: 'migrate-metadata-invalid',
|
|
160
|
+
});
|
|
161
|
+
return rules.map((rule, index) => {
|
|
162
|
+
const id = hash(canonical({ index, rule }));
|
|
163
|
+
const found = policy.scopeRules.find((entry) => entry.legacyRule === id);
|
|
164
|
+
return found === undefined ? undefined : { decision: found.decision, reason: found.reason };
|
|
165
|
+
});
|
|
166
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
+
/**
|
|
3
|
+
* Override records and engine paths. An override record at
|
|
4
|
+
* `<metadataRoot>/overrides/<engine path>.json` is the upstream identity of
|
|
5
|
+
* one upstream file the project touches: the pristine commit, blob and mode
|
|
6
|
+
* the touch started from, the component it belongs to, and whether it is an
|
|
7
|
+
* edit (`override`, with the owned bytes at `<sourceRoot>/<path>`) or an
|
|
8
|
+
* explicit deletion (`delete`, a tombstone with no owned file).
|
|
9
|
+
*/
|
|
10
|
+
import { posix } from 'node:path';
|
|
11
|
+
import { ExitCode, FireForgeError } from '../kernel/errors.js';
|
|
12
|
+
import { stringifyJson } from '../kernel/json.js';
|
|
13
|
+
import { s } from '../kernel/schema.js';
|
|
14
|
+
const objectId = s.string({
|
|
15
|
+
pattern: /^(?:[a-f0-9]{40}|[a-f0-9]{64})$/,
|
|
16
|
+
format: 'a complete lowercase Git object ID',
|
|
17
|
+
});
|
|
18
|
+
/** Component names: they become patch names on export. */
|
|
19
|
+
export const COMPONENT_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9._-]*$/;
|
|
20
|
+
/** The schema of one override record. */
|
|
21
|
+
export const overrideRecordSchema = s
|
|
22
|
+
.object({
|
|
23
|
+
kind: s
|
|
24
|
+
.enum(['override', 'delete'])
|
|
25
|
+
.describe('override: the owned file replaces upstream; delete: upstream is removed'),
|
|
26
|
+
base: s
|
|
27
|
+
.object({
|
|
28
|
+
commit: objectId.describe('The pristine commit the touch started from'),
|
|
29
|
+
blob: objectId.describe('The upstream blob at that commit'),
|
|
30
|
+
mode: s.enum(['100644', '100755']).describe('The upstream mode at that commit'),
|
|
31
|
+
})
|
|
32
|
+
.describe('The upstream identity the touch started from'),
|
|
33
|
+
component: s
|
|
34
|
+
.string({ pattern: COMPONENT_PATTERN, format: 'a component name such as "ui-sidebar"' })
|
|
35
|
+
.describe('The component the change belongs to; one exported patch per component'),
|
|
36
|
+
classification: s
|
|
37
|
+
.enum(['registration', 'exception'])
|
|
38
|
+
.describe('registration: wiring an addition in; exception: a reviewed upstream change'),
|
|
39
|
+
adr: s
|
|
40
|
+
.string({ pattern: /\S/, format: 'a project-relative path' })
|
|
41
|
+
.describe('The decision record approving an exception')
|
|
42
|
+
.optional(),
|
|
43
|
+
})
|
|
44
|
+
.refine((record) => record.classification === 'exception' && record.adr === undefined
|
|
45
|
+
? 'needs "adr" for an exception'
|
|
46
|
+
: undefined);
|
|
47
|
+
/**
|
|
48
|
+
* The bytes of a record file: sorted keys, two-space indent, final newline,
|
|
49
|
+
* so a record is a function of its content.
|
|
50
|
+
*
|
|
51
|
+
* @param record - The record
|
|
52
|
+
*/
|
|
53
|
+
export function encodeRecord(record) {
|
|
54
|
+
return stringifyJson(record, { sortKeys: true });
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The component a path belongs to when none is named: its top directory (or
|
|
58
|
+
* top-level file), without leading dots or other characters a component name
|
|
59
|
+
* cannot start with.
|
|
60
|
+
*
|
|
61
|
+
* @param path - An engine path
|
|
62
|
+
*/
|
|
63
|
+
export function defaultComponent(path) {
|
|
64
|
+
const top = (path.split('/')[0] ?? path).replace(/^[^a-zA-Z0-9]+/, '');
|
|
65
|
+
return top === '' ? 'root' : top;
|
|
66
|
+
}
|
|
67
|
+
/** File names that, under the source root, configure git instead of supplying an engine file. */
|
|
68
|
+
const GIT_CONTROL_NAMES = new Set(['.gitattributes', '.gitignore']);
|
|
69
|
+
/** Top-level engine paths FireForge itself writes. */
|
|
70
|
+
const RESERVED_ENGINE_PATHS = new Set(['mozconfig']);
|
|
71
|
+
/**
|
|
72
|
+
* Why a valid engine path cannot be owned, or undefined.
|
|
73
|
+
*
|
|
74
|
+
* @param path - An engine path
|
|
75
|
+
*/
|
|
76
|
+
export function unownableReason(path) {
|
|
77
|
+
const name = posix.basename(path);
|
|
78
|
+
if (GIT_CONTROL_NAMES.has(name)) {
|
|
79
|
+
return `is named ${name}, which under the source root would configure git for the owned files instead of supplying an engine file`;
|
|
80
|
+
}
|
|
81
|
+
return RESERVED_ENGINE_PATHS.has(path) ? 'is written by FireForge' : undefined;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* A path folded as a case-insensitive file system compares it.
|
|
85
|
+
*
|
|
86
|
+
* @param path - Any path
|
|
87
|
+
*/
|
|
88
|
+
export function foldCase(path) {
|
|
89
|
+
return path.normalize('NFC').toLocaleLowerCase('en-US');
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Why a string cannot be an engine path, or undefined: it must be one
|
|
93
|
+
* canonical relative POSIX spelling with no `.`, `..` or `.git` segment and
|
|
94
|
+
* no backslash or control character.
|
|
95
|
+
*
|
|
96
|
+
* @param path - The candidate
|
|
97
|
+
*/
|
|
98
|
+
export function enginePathProblem(path) {
|
|
99
|
+
if (path === '' || posix.isAbsolute(path) || /^[A-Za-z]:/.test(path)) {
|
|
100
|
+
return 'is not a relative path';
|
|
101
|
+
}
|
|
102
|
+
if (/[\\\p{Cc}]/u.test(path))
|
|
103
|
+
return 'holds a backslash or a control character';
|
|
104
|
+
if (posix.normalize(path) !== path || path.endsWith('/'))
|
|
105
|
+
return 'is not in canonical form';
|
|
106
|
+
if (path.split('/').some((part) => part === '.' || part === '..' || foldCase(part) === '.git')) {
|
|
107
|
+
return 'has a ".", ".." or ".git" segment';
|
|
108
|
+
}
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Refuses a string that is not an engine path.
|
|
113
|
+
*
|
|
114
|
+
* @param path - The candidate, as the user typed it
|
|
115
|
+
* @throws `source-invalid-path` (exit code 8)
|
|
116
|
+
*/
|
|
117
|
+
export function assertEnginePath(path) {
|
|
118
|
+
const problem = enginePathProblem(path);
|
|
119
|
+
if (problem !== undefined) {
|
|
120
|
+
throw new FireForgeError('source-invalid-path', `"${path}" ${problem}.`, {
|
|
121
|
+
exitCode: ExitCode.INVALID_ARGUMENT,
|
|
122
|
+
hint: 'Name the file by its engine path, such as browser/base/jar.mn.',
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* The ancestors of a path, outermost first: `a/b/c` gives `a`, `a/b`.
|
|
128
|
+
*
|
|
129
|
+
* @param path - An engine path
|
|
130
|
+
*/
|
|
131
|
+
export function ancestorsOf(path) {
|
|
132
|
+
const parts = path.split('/');
|
|
133
|
+
return parts.slice(0, -1).map((_, index) => parts.slice(0, index + 1).join('/'));
|
|
134
|
+
}
|
|
135
|
+
/** Code-unit order, which no locale changes. */
|
|
136
|
+
export function compareText(a, b) {
|
|
137
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
138
|
+
}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
+
/**
|
|
3
|
+
* Moving a source-mode checkout to a new pin, the way `git rebase` moves a
|
|
4
|
+
* branch: every owned path is three-way merged from the old pristine file
|
|
5
|
+
* (base), the owned file (ours) and the new pristine file (theirs), and the
|
|
6
|
+
* result is applied in place to the source root, the override records and
|
|
7
|
+
* the pin in `fireforge.json`, in one journal transaction. The user reviews
|
|
8
|
+
* it with `git diff` and undoes it with git.
|
|
9
|
+
*
|
|
10
|
+
* A conflict is left the way git leaves one: text conflict markers in the
|
|
11
|
+
* owned file, and the three versions as unmerged entries in the checkout's
|
|
12
|
+
* index, so `git status` lists it, `git checkout --ours/--theirs` and
|
|
13
|
+
* `git add` resolve it, and a commit is refused until then. Records of
|
|
14
|
+
* conflicted paths already name the new upstream file, so resolving is only
|
|
15
|
+
* a matter of the owned file's content.
|
|
16
|
+
*/
|
|
17
|
+
import { join, relative } from 'node:path';
|
|
18
|
+
import { setConfigValue } from '../config/index.js';
|
|
19
|
+
import { git, gitDir, listTree, objectFormat, status, writeBlobs, } from '../git/index.js';
|
|
20
|
+
import { ExitCode, FireForgeError } from '../kernel/errors.js';
|
|
21
|
+
import { readBytes, toPosixPath } from '../kernel/fs.js';
|
|
22
|
+
import { transaction } from '../kernel/journal.js';
|
|
23
|
+
import { journalOf, withSourceLock } from './edit.js';
|
|
24
|
+
import { mergeContent } from './merge.js';
|
|
25
|
+
import { readPristineBlobs } from './objects.js';
|
|
26
|
+
import { ancestorsOf, compareText, defaultComponent, encodeRecord, } from './records.js';
|
|
27
|
+
import { readSourceTree, recordFile } from './tree.js';
|
|
28
|
+
function same(a, b) {
|
|
29
|
+
return a === undefined || b === undefined
|
|
30
|
+
? a === b
|
|
31
|
+
: a.mode === b.mode && a.bytes.equals(b.bytes);
|
|
32
|
+
}
|
|
33
|
+
function rebased(record, commit, upstream) {
|
|
34
|
+
return {
|
|
35
|
+
...record,
|
|
36
|
+
base: { commit, blob: upstream.oid, mode: upstream.mode },
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function refused(code, message, hint) {
|
|
40
|
+
return new FireForgeError(code, message, { exitCode: ExitCode.CONFIG_ERROR, hint });
|
|
41
|
+
}
|
|
42
|
+
/** Refuses a refresh that would start from anything but a clean, valid checkout at the old pin. */
|
|
43
|
+
async function assertReady(tree, oldPristine, newPristine) {
|
|
44
|
+
const { project, layout } = tree;
|
|
45
|
+
if (project.config.source.pristineCommit !== oldPristine.commit) {
|
|
46
|
+
throw refused('refresh-pin-mismatch', `The project is pinned to ${project.config.source.pristineCommit}, not ${oldPristine.commit}.`, 'Pass the pristine repository of the current pin as the old one.');
|
|
47
|
+
}
|
|
48
|
+
if (newPristine.commit === oldPristine.commit) {
|
|
49
|
+
throw refused('refresh-pin-unchanged', 'The new pin is the current pin.', 'Name another pin.');
|
|
50
|
+
}
|
|
51
|
+
if (tree.problems.length > 0) {
|
|
52
|
+
throw refused('source-invalid', `The owned files must be valid before a rebase:\n${tree.problems
|
|
53
|
+
.map((problem) => ` ${problem.path}: ${problem.message}`)
|
|
54
|
+
.join('\n')}`, 'Run "fireforge verify" and fix what it reports.');
|
|
55
|
+
}
|
|
56
|
+
const configFile = toPosixPath(relative(layout.worktree, project.paths.config));
|
|
57
|
+
const dirty = await status(layout.worktree, {
|
|
58
|
+
paths: [layout.source, layout.metadata, configFile],
|
|
59
|
+
});
|
|
60
|
+
if (dirty.length > 0) {
|
|
61
|
+
throw refused('refresh-dirty', `The source has uncommitted changes:\n${dirty
|
|
62
|
+
.slice(0, 20)
|
|
63
|
+
.map((entry) => ` ${entry.path}`)
|
|
64
|
+
.join('\n')}`, 'Commit or stash them first, so the rebase can be reviewed and undone with git.');
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/** New pristine entries of the owned paths, refusing paths the new tree makes impossible. */
|
|
68
|
+
async function newUpstream(tree, newPristine) {
|
|
69
|
+
const paths = tree.entries.map((entry) => entry.path);
|
|
70
|
+
const wanted = new Set(paths.flatMap((path) => [path, ...ancestorsOf(path)]));
|
|
71
|
+
const entries = new Map((await listTree(newPristine.repo, newPristine.commit, { paths: [...wanted], recursive: false })).map((entry) => [entry.path, entry]));
|
|
72
|
+
const blocked = [];
|
|
73
|
+
for (const path of paths) {
|
|
74
|
+
const entry = entries.get(path);
|
|
75
|
+
const fileAbove = ancestorsOf(path).find((ancestor) => entries.get(ancestor)?.type === 'blob');
|
|
76
|
+
if (fileAbove !== undefined)
|
|
77
|
+
blocked.push(`${path}: upstream now has a file at ${fileAbove}`);
|
|
78
|
+
else if (entry !== undefined && entry.type !== 'blob') {
|
|
79
|
+
blocked.push(`${path}: upstream now has a directory here`);
|
|
80
|
+
}
|
|
81
|
+
else if (entry !== undefined && entry.mode !== '100644' && entry.mode !== '100755') {
|
|
82
|
+
blocked.push(`${path}: upstream now has an entry of mode ${entry.mode} here`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (blocked.length > 0) {
|
|
86
|
+
throw refused('refresh-blocked', `The new pin leaves no place for these owned paths:\n${blocked.map((line) => ` ${line}`).join('\n')}`, 'Move or remove them, commit, and rebase again.');
|
|
87
|
+
}
|
|
88
|
+
return entries;
|
|
89
|
+
}
|
|
90
|
+
/** The merge of an owned upstream path whose three sides are all present and differ. */
|
|
91
|
+
async function mergeThree(cwd, entry, sides, record) {
|
|
92
|
+
const { base, ours, theirs } = sides;
|
|
93
|
+
const mode = ours.mode === theirs.mode
|
|
94
|
+
? ours.mode
|
|
95
|
+
: ours.mode === base.mode
|
|
96
|
+
? theirs.mode
|
|
97
|
+
: theirs.mode === base.mode
|
|
98
|
+
? ours.mode
|
|
99
|
+
: undefined;
|
|
100
|
+
const merged = await mergeContent(cwd, { base: base.bytes, ours: ours.bytes, theirs: theirs.bytes }, { ours: 'local', base: 'old pristine', theirs: 'new pristine' });
|
|
101
|
+
const conflict = (reason, bytes) => ({
|
|
102
|
+
path: entry.path,
|
|
103
|
+
result: { path: entry.path, outcome: 'conflict', reason },
|
|
104
|
+
file: { bytes, mode: mode ?? ours.mode },
|
|
105
|
+
record,
|
|
106
|
+
stages: sides,
|
|
107
|
+
});
|
|
108
|
+
if (!merged.clean)
|
|
109
|
+
return conflict(merged.reason, merged.markers ?? ours.bytes);
|
|
110
|
+
if (mode === undefined)
|
|
111
|
+
return conflict('mode', merged.content);
|
|
112
|
+
if (same({ bytes: merged.content, mode }, theirs)) {
|
|
113
|
+
return {
|
|
114
|
+
path: entry.path,
|
|
115
|
+
result: { path: entry.path, outcome: 'retired' },
|
|
116
|
+
file: null,
|
|
117
|
+
record: null,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
path: entry.path,
|
|
122
|
+
result: { path: entry.path, outcome: 'merged' },
|
|
123
|
+
file: { bytes: merged.content, mode },
|
|
124
|
+
record,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/** Plans one owned path. */
|
|
128
|
+
async function planEntry(tree, entry, sides, upstream, commit) {
|
|
129
|
+
const { path } = entry;
|
|
130
|
+
const { base, ours, theirs } = sides;
|
|
131
|
+
const retired = { path, result: { path, outcome: 'retired' }, file: null, record: null };
|
|
132
|
+
if (entry.record === undefined || base === undefined) {
|
|
133
|
+
if (upstream === undefined || theirs === undefined) {
|
|
134
|
+
return { path, result: { path, outcome: 'kept' } };
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
path,
|
|
138
|
+
result: { path, outcome: 'conflict', reason: 'upstream-collision' },
|
|
139
|
+
record: {
|
|
140
|
+
kind: 'override',
|
|
141
|
+
base: { commit, blob: upstream.oid, mode: theirs.mode },
|
|
142
|
+
component: defaultComponent(path),
|
|
143
|
+
classification: 'registration',
|
|
144
|
+
},
|
|
145
|
+
stages: { base: undefined, ours, theirs },
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
const record = upstream === undefined ? null : rebased(entry.record, commit, upstream);
|
|
149
|
+
if (same(base, theirs))
|
|
150
|
+
return { path, result: { path, outcome: 'kept' }, record };
|
|
151
|
+
// Upstream now holds our side, or our side left upstream alone: nothing is left to own.
|
|
152
|
+
if (same(ours, theirs) || same(base, ours))
|
|
153
|
+
return retired;
|
|
154
|
+
if (ours === undefined || theirs === undefined || record === null) {
|
|
155
|
+
return {
|
|
156
|
+
path,
|
|
157
|
+
result: { path, outcome: 'conflict', reason: 'delete-edit' },
|
|
158
|
+
record,
|
|
159
|
+
stages: sides,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
return mergeThree(tree.layout.worktree, entry, { base, ours, theirs }, record);
|
|
163
|
+
}
|
|
164
|
+
/** Writes the unmerged index entries of the conflicts. */
|
|
165
|
+
async function writeStages(tree, plans) {
|
|
166
|
+
const { worktree, source } = tree.layout;
|
|
167
|
+
const conflicted = plans.filter((plan) => plan.stages !== undefined);
|
|
168
|
+
if (conflicted.length === 0)
|
|
169
|
+
return;
|
|
170
|
+
const zero = '0'.repeat((await objectFormat(worktree)) === 'sha256' ? 64 : 40);
|
|
171
|
+
const lines = [];
|
|
172
|
+
for (const plan of conflicted) {
|
|
173
|
+
const file = `${source}/${plan.path}`;
|
|
174
|
+
const stages = plan.stages ?? { base: undefined, ours: undefined, theirs: undefined };
|
|
175
|
+
const present = [stages.base, stages.ours, stages.theirs].flatMap((side, index) => side === undefined ? [] : [{ side, stage: index + 1 }]);
|
|
176
|
+
const oids = await writeBlobs(worktree, present.map((each) => each.side.bytes));
|
|
177
|
+
lines.push(`0 ${zero}\t${file}\0`);
|
|
178
|
+
present.forEach((each, index) => {
|
|
179
|
+
lines.push(`${each.side.mode} ${oids[index] ?? ''} ${each.stage}\t${file}\0`);
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
await git(['update-index', '-z', '--index-info'], { cwd: worktree, input: lines.join('') });
|
|
183
|
+
}
|
|
184
|
+
async function applyPlans(tx, tree, plans) {
|
|
185
|
+
const { layout, project } = tree;
|
|
186
|
+
for (const plan of plans) {
|
|
187
|
+
const file = join(project.paths.source, plan.path);
|
|
188
|
+
const record = join(layout.worktree, recordFile(layout, plan.path));
|
|
189
|
+
if (plan.file === null)
|
|
190
|
+
await tx.remove(file);
|
|
191
|
+
else if (plan.file !== undefined) {
|
|
192
|
+
await tx.write(file, plan.file.bytes, { mode: plan.file.mode === '100755' ? 0o755 : 0o644 });
|
|
193
|
+
}
|
|
194
|
+
if (plan.record === null)
|
|
195
|
+
await tx.remove(record);
|
|
196
|
+
else if (plan.record !== undefined)
|
|
197
|
+
await tx.write(record, encodeRecord(plan.record));
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Moves a clean source-mode checkout from the old pin to a new one: merges
|
|
202
|
+
* every owned path three ways, applies the result to the owned files and
|
|
203
|
+
* records, and updates `source.pristineCommit` and `firefox` in
|
|
204
|
+
* `fireforge.json`, all in one transaction. Conflicts are left as git
|
|
205
|
+
* leaves them (see the module comment).
|
|
206
|
+
*
|
|
207
|
+
* @param project - A source-mode project at the old pin with no uncommitted source changes
|
|
208
|
+
* @param oldPristine - The pristine repository of the current pin
|
|
209
|
+
* @param newPristine - The pristine repository of the new pin
|
|
210
|
+
* @param firefox - The new pin's release
|
|
211
|
+
* @throws `refresh-pin-mismatch`, `refresh-pin-unchanged`, `refresh-dirty`,
|
|
212
|
+
* `refresh-blocked`, `source-invalid`
|
|
213
|
+
*/
|
|
214
|
+
export function refreshPin(project, oldPristine, newPristine, firefox) {
|
|
215
|
+
// Under the source lock, so no other FireForge writer changes an owned file between the read and the merge.
|
|
216
|
+
return withSourceLock(project, async () => {
|
|
217
|
+
const tree = await readSourceTree(project, oldPristine);
|
|
218
|
+
await assertReady(tree, oldPristine, newPristine);
|
|
219
|
+
const plans = await planRefresh(tree, oldPristine, newPristine);
|
|
220
|
+
const index = join(await gitDir(tree.layout.worktree), 'index');
|
|
221
|
+
await transaction(journalOf(project), 'the rebase', async (tx) => {
|
|
222
|
+
await applyPlans(tx, tree, plans);
|
|
223
|
+
await tx.change([index], () => writeStages(tree, plans));
|
|
224
|
+
await tx.change([project.paths.config], async () => {
|
|
225
|
+
await setConfigValue(project.root, 'source.pristineCommit', newPristine.commit);
|
|
226
|
+
await setConfigValue(project.root, 'firefox', JSON.stringify(firefox));
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
const paths = plans.map((plan) => plan.result);
|
|
230
|
+
return {
|
|
231
|
+
paths,
|
|
232
|
+
conflicts: paths.filter((path) => path.outcome === 'conflict').map((path) => path.path),
|
|
233
|
+
};
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
/** Plans every owned path of the tree against the new pin. */
|
|
237
|
+
async function planRefresh(tree, oldPristine, newPristine) {
|
|
238
|
+
const upstream = await newUpstream(tree, newPristine);
|
|
239
|
+
const oldBlobs = await readPristineBlobs(oldPristine, tree.entries.flatMap((entry) => (entry.upstream === undefined ? [] : [entry.upstream.blob])));
|
|
240
|
+
const newBlobs = await readPristineBlobs(newPristine, tree.entries.flatMap((entry) => {
|
|
241
|
+
const found = upstream.get(entry.path);
|
|
242
|
+
return found === undefined ? [] : [found.oid];
|
|
243
|
+
}));
|
|
244
|
+
const plans = [];
|
|
245
|
+
for (const entry of [...tree.entries].sort((a, b) => compareText(a.path, b.path))) {
|
|
246
|
+
const found = upstream.get(entry.path);
|
|
247
|
+
const sides = {
|
|
248
|
+
base: entry.upstream === undefined
|
|
249
|
+
? undefined
|
|
250
|
+
: {
|
|
251
|
+
bytes: oldBlobs.get(entry.upstream.blob) ?? Buffer.alloc(0),
|
|
252
|
+
mode: entry.upstream.mode,
|
|
253
|
+
},
|
|
254
|
+
ours: entry.file === undefined
|
|
255
|
+
? undefined
|
|
256
|
+
: { bytes: await readBytes(entry.file.absolute), mode: entry.file.mode },
|
|
257
|
+
theirs: found === undefined
|
|
258
|
+
? undefined
|
|
259
|
+
: { bytes: newBlobs.get(found.oid) ?? Buffer.alloc(0), mode: found.mode },
|
|
260
|
+
};
|
|
261
|
+
plans.push(await planEntry(tree, entry, sides, found, newPristine.commit));
|
|
262
|
+
}
|
|
263
|
+
return plans;
|
|
264
|
+
}
|