@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,382 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
+
/**
|
|
3
|
+
* Materialization: bringing an engine checkout of the pristine commit to
|
|
4
|
+
* exactly pristine plus the checkout's owned files, writing only what
|
|
5
|
+
* differs. It runs before every build and test, so an unchanged run reads
|
|
6
|
+
* no file content: the ledger remembers each owned file's signature (size,
|
|
7
|
+
* mtime, ctime and inode) and what was written for it. A signature vouches
|
|
8
|
+
* for content only for a file last modified well before the run that
|
|
9
|
+
* recorded it started, so an edit within the same timestamp tick is never
|
|
10
|
+
* mistaken for no edit; the ctime and inode catch a file replaced or
|
|
11
|
+
* rewritten with its mtime preserved.
|
|
12
|
+
*
|
|
13
|
+
* Ownership rule. Materialization owns exactly two sets of engine paths:
|
|
14
|
+
* the paths its ledger records (what it wrote last time) and the paths the
|
|
15
|
+
* checkout owns now. Every other engine path, including the build's output
|
|
16
|
+
* and files other steps deploy after it (Furnace components), is never
|
|
17
|
+
* read or written. Within its paths it changes an engine file only when the
|
|
18
|
+
* file holds an image it can account for: what the ledger says it wrote,
|
|
19
|
+
* what a later step deployed on top of that ({@link recordDeployment}), or,
|
|
20
|
+
* for a path the ledger does not record, the pristine bytes (or absence,
|
|
21
|
+
* for a path upstream lacks). Anything else is drift someone else made; it
|
|
22
|
+
* is reported and nothing is changed.
|
|
23
|
+
*
|
|
24
|
+
* The engine writes and the ledger update run as one journal transaction,
|
|
25
|
+
* so an error, a signal or a crash leaves the old state or the new one. An
|
|
26
|
+
* interrupted run is undone before the next one looks at the engine.
|
|
27
|
+
*/
|
|
28
|
+
import { join } from 'node:path';
|
|
29
|
+
import { listTree, objectFormat, resolveRevision } from '../git/index.js';
|
|
30
|
+
import { ExitCode, FireForgeError } from '../kernel/errors.js';
|
|
31
|
+
import { listDir, pathInfo, readBytes, walkFiles, writeFile } from '../kernel/fs.js';
|
|
32
|
+
import { recoverJournal, transaction } from '../kernel/journal.js';
|
|
33
|
+
import { readJsonIfExists, stringifyJson } from '../kernel/json.js';
|
|
34
|
+
import { s } from '../kernel/schema.js';
|
|
35
|
+
import { blobId, readPristineBlobs } from './objects.js';
|
|
36
|
+
import { compareText } from './records.js';
|
|
37
|
+
import { readSourceTree } from './tree.js';
|
|
38
|
+
const signatureSchema = s.object({
|
|
39
|
+
size: s.int({ min: 0 }),
|
|
40
|
+
mtimeMs: s.number(),
|
|
41
|
+
ctimeMs: s.number(),
|
|
42
|
+
ino: s.number(),
|
|
43
|
+
});
|
|
44
|
+
const ledgerSchema = s.object({
|
|
45
|
+
pristineCommit: s.string(),
|
|
46
|
+
/** When the run that wrote the ledger started reading files, in epoch milliseconds. */
|
|
47
|
+
readAt: s.number(),
|
|
48
|
+
files: s.record(s.object({
|
|
49
|
+
/** What materialization left at the path; null for a deletion. */
|
|
50
|
+
blob: s.union(s.string(), s.literal(null)),
|
|
51
|
+
mode: s.enum(['100644', '100755']),
|
|
52
|
+
/** The engine file's signature as last seen. */
|
|
53
|
+
engine: signatureSchema.optional(),
|
|
54
|
+
/** The owned file's signature when `blob` was read from it. */
|
|
55
|
+
source: signatureSchema.optional(),
|
|
56
|
+
/** The blob a later step (a component deployment) left at the path over `blob`. */
|
|
57
|
+
deployed: s.string().optional(),
|
|
58
|
+
})),
|
|
59
|
+
});
|
|
60
|
+
const LEDGER = 'source-ledger.json';
|
|
61
|
+
const JOURNAL = 'source-materialize.journal';
|
|
62
|
+
/**
|
|
63
|
+
* How much older than the reading run a file's timestamps must be before its
|
|
64
|
+
* signature vouches for its content: the coarsest timestamp granularity in use
|
|
65
|
+
* (FAT keeps two seconds).
|
|
66
|
+
*/
|
|
67
|
+
const RACY_MS = 2_000;
|
|
68
|
+
/** The facts about a file that stand in for reading it. */
|
|
69
|
+
function signatureOf(file) {
|
|
70
|
+
return { size: file.size, mtimeMs: file.mtimeMs, ctimeMs: file.ctimeMs, ino: file.ino };
|
|
71
|
+
}
|
|
72
|
+
function sameImage(a, b) {
|
|
73
|
+
return a === null || b === null ? a === b : a.blob === b.blob && a.mode === b.mode;
|
|
74
|
+
}
|
|
75
|
+
/** Whether a recorded signature still vouches for the content it was recorded with. */
|
|
76
|
+
function vouches(recorded, now, readAt) {
|
|
77
|
+
return (recorded !== undefined &&
|
|
78
|
+
recorded.size === now.size &&
|
|
79
|
+
recorded.mtimeMs === now.mtimeMs &&
|
|
80
|
+
recorded.ctimeMs === now.ctimeMs &&
|
|
81
|
+
recorded.ino === now.ino &&
|
|
82
|
+
Math.max(now.mtimeMs, now.ctimeMs) < readAt - RACY_MS);
|
|
83
|
+
}
|
|
84
|
+
const ledgerImage = (entry) => entry.blob === null ? null : { blob: entry.blob, mode: entry.mode };
|
|
85
|
+
const deployedImage = (entry) => entry.deployed === undefined ? undefined : { blob: entry.deployed, mode: entry.mode };
|
|
86
|
+
class Planner {
|
|
87
|
+
engine;
|
|
88
|
+
format;
|
|
89
|
+
previous;
|
|
90
|
+
/** Owned bytes read while hashing, reused for the write. */
|
|
91
|
+
bytes = new Map();
|
|
92
|
+
ledger;
|
|
93
|
+
constructor(engine, format, previous, next) {
|
|
94
|
+
this.engine = engine;
|
|
95
|
+
this.format = format;
|
|
96
|
+
this.previous = previous;
|
|
97
|
+
this.ledger = { pristineCommit: next.commit, readAt: next.readAt, files: {} };
|
|
98
|
+
}
|
|
99
|
+
/** The image an owned entry supplies, reading the file only when the ledger can vouch for none. */
|
|
100
|
+
async desired(entry) {
|
|
101
|
+
if (entry.file === undefined)
|
|
102
|
+
return null;
|
|
103
|
+
const known = this.previous.files[entry.path];
|
|
104
|
+
const signature = signatureOf(entry.file);
|
|
105
|
+
if (known !== undefined &&
|
|
106
|
+
known.blob !== null &&
|
|
107
|
+
vouches(known.source, signature, this.previous.readAt)) {
|
|
108
|
+
return { blob: known.blob, mode: entry.file.mode };
|
|
109
|
+
}
|
|
110
|
+
const bytes = await readBytes(entry.file.absolute);
|
|
111
|
+
this.bytes.set(entry.path, bytes);
|
|
112
|
+
return { blob: blobId(bytes, this.format), mode: entry.file.mode };
|
|
113
|
+
}
|
|
114
|
+
/** The engine's image at a path, or what is there instead of a file. */
|
|
115
|
+
async actual(path) {
|
|
116
|
+
const info = await pathInfo(join(this.engine, path));
|
|
117
|
+
if (info === undefined)
|
|
118
|
+
return { image: null };
|
|
119
|
+
if (info.kind === 'directory')
|
|
120
|
+
return 'directory';
|
|
121
|
+
if (info.kind !== 'file')
|
|
122
|
+
return 'other';
|
|
123
|
+
const signature = signatureOf(info);
|
|
124
|
+
const mode = (info.mode & 0o111) !== 0 ? '100755' : '100644';
|
|
125
|
+
const known = this.previous.files[path];
|
|
126
|
+
if (known !== undefined &&
|
|
127
|
+
known.blob !== null &&
|
|
128
|
+
known.mode === mode &&
|
|
129
|
+
vouches(known.engine, signature, this.previous.readAt)) {
|
|
130
|
+
return { image: { blob: known.deployed ?? known.blob, mode }, signature };
|
|
131
|
+
}
|
|
132
|
+
const bytes = await readBytes(join(this.engine, path));
|
|
133
|
+
return { image: { blob: blobId(bytes, this.format), mode }, signature };
|
|
134
|
+
}
|
|
135
|
+
record(path, target, entry, engine = {}) {
|
|
136
|
+
const file = entry?.file;
|
|
137
|
+
const recorded = {
|
|
138
|
+
blob: target?.blob ?? null,
|
|
139
|
+
mode: target?.mode ?? '100644',
|
|
140
|
+
...(engine.signature === undefined ? {} : { engine: engine.signature }),
|
|
141
|
+
...(file === undefined ? {} : { source: signatureOf(file) }),
|
|
142
|
+
...(engine.deployed === undefined ? {} : { deployed: engine.deployed }),
|
|
143
|
+
};
|
|
144
|
+
this.ledger.files[path] = recorded;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/** Pristine images of paths, from the pristine repository. */
|
|
148
|
+
async function pristineImages(pristine, paths) {
|
|
149
|
+
const images = new Map(paths.map((path) => [path, null]));
|
|
150
|
+
if (paths.length === 0)
|
|
151
|
+
return images;
|
|
152
|
+
for (const entry of await listTree(pristine.repo, pristine.commit, {
|
|
153
|
+
paths,
|
|
154
|
+
recursive: false,
|
|
155
|
+
})) {
|
|
156
|
+
if (entry.type === 'blob' && (entry.mode === '100644' || entry.mode === '100755')) {
|
|
157
|
+
images.set(entry.path, { blob: entry.oid, mode: entry.mode });
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return images;
|
|
161
|
+
}
|
|
162
|
+
function refuseBlocked(tree) {
|
|
163
|
+
const blocking = tree.problems.filter((problem) => problem.blocking);
|
|
164
|
+
if (blocking.length === 0)
|
|
165
|
+
return;
|
|
166
|
+
throw new FireForgeError('source-invalid', `The owned files cannot be materialized:\n${blocking
|
|
167
|
+
.map((problem) => ` ${problem.path}: ${problem.message}`)
|
|
168
|
+
.join('\n')}`, { exitCode: ExitCode.CONFIG_ERROR, hint: 'Run "fireforge verify" and fix what it reports.' });
|
|
169
|
+
}
|
|
170
|
+
async function readLedger(stateDir, pristine) {
|
|
171
|
+
const ledger = await readJsonIfExists(join(stateDir, LEDGER), ledgerSchema, {
|
|
172
|
+
code: 'state-invalid',
|
|
173
|
+
exitCode: ExitCode.CONFIG_ERROR,
|
|
174
|
+
hint: 'Run "fireforge workspace repair" to rebuild the workspace.',
|
|
175
|
+
});
|
|
176
|
+
if (ledger !== undefined && ledger.pristineCommit !== pristine.commit) {
|
|
177
|
+
throw new FireForgeError('materialize-pin-mismatch', `The workspace was materialized for pristine commit ${ledger.pristineCommit}, not ${pristine.commit}.`, { exitCode: ExitCode.CONFIG_ERROR, hint: 'Run "fireforge workspace repair".' });
|
|
178
|
+
}
|
|
179
|
+
return ledger;
|
|
180
|
+
}
|
|
181
|
+
/** Plans one path. */
|
|
182
|
+
async function planPath(planner, path, owned, pristine, removing) {
|
|
183
|
+
const target = owned === undefined ? pristine : owned.image;
|
|
184
|
+
const known = planner.previous.files[path];
|
|
185
|
+
const deployed = known === undefined ? undefined : deployedImage(known);
|
|
186
|
+
const accounted = known === undefined
|
|
187
|
+
? [pristine]
|
|
188
|
+
: [ledgerImage(known), ...(deployed === undefined ? [] : [deployed])];
|
|
189
|
+
const actual = await planner.actual(path);
|
|
190
|
+
const entry = owned?.entry;
|
|
191
|
+
const action = owned !== undefined
|
|
192
|
+
? target === null
|
|
193
|
+
? 'remove'
|
|
194
|
+
: 'write'
|
|
195
|
+
: target === null
|
|
196
|
+
? 'remove'
|
|
197
|
+
: 'restore';
|
|
198
|
+
if (actual === 'other')
|
|
199
|
+
return { path, target, action, drift: true, ...(entry && { entry }) };
|
|
200
|
+
if (actual === 'directory') {
|
|
201
|
+
// A directory gives way to a file only when everything in it leaves in this run.
|
|
202
|
+
const inside = await walkFiles(join(planner.engine, path));
|
|
203
|
+
const clears = target !== null && inside.every((file) => removing.has(`${path}/${file}`));
|
|
204
|
+
return { path, target, action, drift: !clears, ...(entry && { entry }) };
|
|
205
|
+
}
|
|
206
|
+
const signature = actual.signature === undefined ? {} : { signature: actual.signature };
|
|
207
|
+
if (sameImage(actual.image, target)) {
|
|
208
|
+
if (owned !== undefined)
|
|
209
|
+
planner.record(path, target, entry, signature);
|
|
210
|
+
return { path, target, action: 'keep', drift: false, ...(entry && { entry }) };
|
|
211
|
+
}
|
|
212
|
+
// The owned bytes are unchanged and the engine holds what a deployment made of them.
|
|
213
|
+
if (owned !== undefined &&
|
|
214
|
+
known !== undefined &&
|
|
215
|
+
deployed !== undefined &&
|
|
216
|
+
sameImage(target, ledgerImage(known)) &&
|
|
217
|
+
sameImage(actual.image, deployed)) {
|
|
218
|
+
planner.record(path, target, entry, { ...signature, deployed: deployed.blob });
|
|
219
|
+
return { path, target, action: 'keep', drift: false, ...(entry && { entry }) };
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
path,
|
|
223
|
+
target,
|
|
224
|
+
action,
|
|
225
|
+
drift: !accounted.some((image) => sameImage(actual.image, image)),
|
|
226
|
+
...(entry && { entry }),
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
/** Removes the directories a removal left empty, deepest first, up to the engine root. */
|
|
230
|
+
async function emptiedDirectories(engineDir, removed) {
|
|
231
|
+
const candidates = new Set();
|
|
232
|
+
for (const path of removed) {
|
|
233
|
+
const parts = path.split('/');
|
|
234
|
+
for (let depth = parts.length - 1; depth > 0; depth--)
|
|
235
|
+
candidates.add(parts.slice(0, depth).join('/'));
|
|
236
|
+
}
|
|
237
|
+
const empty = new Set();
|
|
238
|
+
const ordered = [...candidates].sort((a, b) => b.split('/').length - a.split('/').length);
|
|
239
|
+
for (const directory of ordered) {
|
|
240
|
+
const entries = await listDir(join(engineDir, directory));
|
|
241
|
+
if (entries.every((entry) => empty.has(`${directory}/${entry.name}`)))
|
|
242
|
+
empty.add(directory);
|
|
243
|
+
}
|
|
244
|
+
return ordered.filter((directory) => empty.has(directory));
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Brings an engine checkout of the pristine commit to exactly pristine plus
|
|
248
|
+
* the checkout's owned files: writes owned files that differ, restores the
|
|
249
|
+
* pristine bytes of upstream paths no longer owned, deletes tombstoned paths
|
|
250
|
+
* and created files no longer owned, and keeps executable modes. A run an
|
|
251
|
+
* earlier process left unfinished is undone first. See the module comment
|
|
252
|
+
* for which engine paths it may change.
|
|
253
|
+
*
|
|
254
|
+
* @param project - A source-mode project
|
|
255
|
+
* @param pristine - The pinned pristine repository
|
|
256
|
+
* @param target - The engine and where its ledger and journal live
|
|
257
|
+
* @throws `source-invalid` when an owned path is undefined, `materialize-drift`
|
|
258
|
+
* when an engine file changed outside FireForge, `materialize-pin-mismatch`,
|
|
259
|
+
* `materialize-wrong-engine`, and the journal recovery errors
|
|
260
|
+
*/
|
|
261
|
+
export async function materialize(project, pristine, target) {
|
|
262
|
+
const { engineDir, stateDir } = target;
|
|
263
|
+
await recoverJournal(join(stateDir, JOURNAL));
|
|
264
|
+
const readAt = Date.now();
|
|
265
|
+
const tree = await readSourceTree(project, pristine);
|
|
266
|
+
refuseBlocked(tree);
|
|
267
|
+
if ((await resolveRevision(engineDir, 'HEAD', 'commit')) !== pristine.commit) {
|
|
268
|
+
throw new FireForgeError('materialize-wrong-engine', `${engineDir} is not a checkout of pristine commit ${pristine.commit}.`, { exitCode: ExitCode.GIT_ERROR, hint: 'Run "fireforge workspace repair".' });
|
|
269
|
+
}
|
|
270
|
+
const previous = (await readLedger(stateDir, pristine)) ?? {
|
|
271
|
+
pristineCommit: pristine.commit,
|
|
272
|
+
readAt: 0,
|
|
273
|
+
files: {},
|
|
274
|
+
};
|
|
275
|
+
const planner = new Planner(engineDir, await objectFormat(pristine.repo), previous, {
|
|
276
|
+
commit: pristine.commit,
|
|
277
|
+
readAt,
|
|
278
|
+
});
|
|
279
|
+
const owned = new Map();
|
|
280
|
+
for (const entry of tree.entries)
|
|
281
|
+
owned.set(entry.path, { entry, image: await planner.desired(entry) });
|
|
282
|
+
const leaving = Object.keys(previous.files).filter((path) => !owned.has(path));
|
|
283
|
+
// Owned entries carry their pristine image; a created file has none upstream.
|
|
284
|
+
const upstream = await pristineImages(pristine, leaving);
|
|
285
|
+
for (const entry of tree.entries)
|
|
286
|
+
upstream.set(entry.path, entry.upstream ?? null);
|
|
287
|
+
const paths = [...new Set([...owned.keys(), ...leaving])].sort(compareText);
|
|
288
|
+
const targetOf = (path) => {
|
|
289
|
+
const supplied = owned.get(path);
|
|
290
|
+
return supplied === undefined ? (upstream.get(path) ?? null) : supplied.image;
|
|
291
|
+
};
|
|
292
|
+
const removing = new Set(paths.filter((path) => targetOf(path) === null));
|
|
293
|
+
const steps = [];
|
|
294
|
+
for (const path of paths) {
|
|
295
|
+
steps.push(await planPath(planner, path, owned.get(path), upstream.get(path) ?? null, removing));
|
|
296
|
+
}
|
|
297
|
+
const drifted = steps.filter((step) => step.drift);
|
|
298
|
+
if (drifted.length > 0) {
|
|
299
|
+
throw new FireForgeError('materialize-drift', `Engine files changed outside FireForge; materialization would overwrite them:\n${drifted
|
|
300
|
+
.slice(0, 20)
|
|
301
|
+
.map((step) => ` ${step.path}`)
|
|
302
|
+
.join('\n')}${drifted.length > 20 ? `\n and ${drifted.length - 20} more` : ''}`, { hint: 'Save anything you need from them, then run "fireforge workspace repair".' });
|
|
303
|
+
}
|
|
304
|
+
return apply(planner, steps, { pristine, engineDir, stateDir });
|
|
305
|
+
}
|
|
306
|
+
async function apply(planner, steps, context) {
|
|
307
|
+
const { pristine, engineDir, stateDir } = context;
|
|
308
|
+
const changing = steps.filter((step) => step.action !== 'keep');
|
|
309
|
+
const ledgerPath = join(stateDir, LEDGER);
|
|
310
|
+
if (changing.length === 0) {
|
|
311
|
+
await writeFile(ledgerPath, stringifyJson(planner.ledger, { sortKeys: true }));
|
|
312
|
+
return { written: [], restored: [], removed: [] };
|
|
313
|
+
}
|
|
314
|
+
const restoredBlobs = changing.flatMap((step) => step.action === 'restore' && step.target !== null ? [step.target.blob] : []);
|
|
315
|
+
const pristineBytes = await readPristineBlobs(pristine, restoredBlobs);
|
|
316
|
+
const removals = changing
|
|
317
|
+
.filter((step) => step.target === null)
|
|
318
|
+
.sort((a, b) => b.path.split('/').length - a.path.split('/').length || compareText(a.path, b.path));
|
|
319
|
+
const writes = changing.filter((step) => step.target !== null);
|
|
320
|
+
await transaction(join(stateDir, JOURNAL), 'the materialization', async (tx) => {
|
|
321
|
+
for (const step of removals)
|
|
322
|
+
await tx.remove(join(engineDir, step.path));
|
|
323
|
+
for (const directory of await emptiedDirectories(engineDir, removals.map((step) => step.path))) {
|
|
324
|
+
await tx.remove(join(engineDir, directory));
|
|
325
|
+
}
|
|
326
|
+
for (const step of writes) {
|
|
327
|
+
const target = join(engineDir, step.path);
|
|
328
|
+
if ((await pathInfo(target))?.kind === 'directory')
|
|
329
|
+
await tx.remove(target);
|
|
330
|
+
const bytes = step.entry === undefined
|
|
331
|
+
? pristineBytes.get(step.target?.blob ?? '')
|
|
332
|
+
: (planner.bytes.get(step.path) ?? (await readBytes(step.entry.file?.absolute ?? '')));
|
|
333
|
+
await tx.write(target, bytes ?? Buffer.alloc(0), {
|
|
334
|
+
mode: step.target?.mode === '100755' ? 0o755 : 0o644,
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
for (const step of changing) {
|
|
338
|
+
if (step.entry === undefined)
|
|
339
|
+
continue;
|
|
340
|
+
const info = step.target === null ? undefined : await pathInfo(join(engineDir, step.path));
|
|
341
|
+
planner.record(step.path, step.target, step.entry, info === undefined ? {} : { signature: signatureOf(info) });
|
|
342
|
+
}
|
|
343
|
+
await tx.write(ledgerPath, stringifyJson(planner.ledger, { sortKeys: true }));
|
|
344
|
+
});
|
|
345
|
+
const pathsOf = (action) => changing.filter((step) => step.action === action).map((step) => step.path);
|
|
346
|
+
return { written: pathsOf('write'), restored: pathsOf('restore'), removed: pathsOf('remove') };
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Accepts what a step after materialization (a component deployment) wrote
|
|
350
|
+
* at owned paths of an engine, so the next materialization counts those
|
|
351
|
+
* bytes as accounted for rather than as drift. Paths the ledger does not
|
|
352
|
+
* record are not materialization's and are left out.
|
|
353
|
+
*
|
|
354
|
+
* @param pristine - The pinned pristine repository
|
|
355
|
+
* @param target - The engine and where its ledger lives
|
|
356
|
+
* @param paths - Engine paths the step wrote or removed
|
|
357
|
+
*/
|
|
358
|
+
export async function recordDeployment(pristine, target, paths) {
|
|
359
|
+
const ledger = await readLedger(target.stateDir, pristine);
|
|
360
|
+
if (ledger === undefined)
|
|
361
|
+
return;
|
|
362
|
+
const format = await objectFormat(pristine.repo);
|
|
363
|
+
let changed = false;
|
|
364
|
+
for (const path of paths) {
|
|
365
|
+
const entry = ledger.files[path];
|
|
366
|
+
const absolute = join(target.engineDir, path);
|
|
367
|
+
const info = await pathInfo(absolute);
|
|
368
|
+
if (entry === undefined || entry.blob === null || info?.kind !== 'file')
|
|
369
|
+
continue;
|
|
370
|
+
const blob = blobId(await readBytes(absolute), format);
|
|
371
|
+
const next = { ...entry, engine: signatureOf(info) };
|
|
372
|
+
if (blob === entry.blob)
|
|
373
|
+
delete next.deployed;
|
|
374
|
+
else
|
|
375
|
+
next.deployed = blob;
|
|
376
|
+
ledger.files[path] = next;
|
|
377
|
+
changed = true;
|
|
378
|
+
}
|
|
379
|
+
if (changed) {
|
|
380
|
+
await writeFile(join(target.stateDir, LEDGER), stringifyJson(ledger, { sortKeys: true }));
|
|
381
|
+
}
|
|
382
|
+
}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
+
/**
|
|
3
|
+
* The merge driver for owned files. Two branches that each first-touch one
|
|
4
|
+
* upstream file add it on both sides with no common ancestor in the
|
|
5
|
+
* project's history, so git sees an add/add conflict over the whole file.
|
|
6
|
+
* `<sourceRoot>/.gitattributes` routes owned files through this driver,
|
|
7
|
+
* which merges them against the pristine blob the override record names.
|
|
8
|
+
*
|
|
9
|
+
* Git hands a driver an empty ancestor both for a path missing from the
|
|
10
|
+
* ancestor and for a committed empty file, so the driver asks which commit
|
|
11
|
+
* git took the ancestor from (the `%S` label, Git 2.44 and later) and uses
|
|
12
|
+
* the pristine blob only when that commit lacks the path. When no single
|
|
13
|
+
* commit is named (several merge bases, `git am -3`, a stash, an older Git)
|
|
14
|
+
* the driver merges the empty ancestor as given, which is git's own add/add
|
|
15
|
+
* conflict.
|
|
16
|
+
*/
|
|
17
|
+
import { join, relative } from 'node:path';
|
|
18
|
+
import { getConfig, git, listTree, mergeFile, readBlobs, resolveRevision, setConfig, } from '../git/index.js';
|
|
19
|
+
import { toError } from '../kernel/errors.js';
|
|
20
|
+
import { readBytes, toPosixPath, writeFile } from '../kernel/fs.js';
|
|
21
|
+
import { parseJson } from '../kernel/json.js';
|
|
22
|
+
import { warn } from '../kernel/log.js';
|
|
23
|
+
import { readPristineBlobs } from './objects.js';
|
|
24
|
+
import { overrideRecordSchema } from './records.js';
|
|
25
|
+
import { layoutOf, recordFile } from './tree.js';
|
|
26
|
+
/** The driver's name in `.gitattributes` and git configuration. */
|
|
27
|
+
export const MERGE_DRIVER = 'fireforge';
|
|
28
|
+
/** The oldest Git that passes the ancestor label `%S` to a merge driver. */
|
|
29
|
+
const LABEL_GIT = [2, 44];
|
|
30
|
+
const ABBREVIATED_ID = '[0-9a-f]{4,64}';
|
|
31
|
+
function isText(bytes) {
|
|
32
|
+
if (bytes.includes(0))
|
|
33
|
+
return false;
|
|
34
|
+
try {
|
|
35
|
+
new TextDecoder('utf-8', { fatal: true }).decode(bytes);
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Three-way merges content. A side equal to the base yields the other side;
|
|
44
|
+
* text merges line by line; competing binary edits conflict without markers.
|
|
45
|
+
*
|
|
46
|
+
* @param cwd - A repository whose configuration applies to `git merge-file`
|
|
47
|
+
* @param sides - The base and the two sides
|
|
48
|
+
* @param labels - Names for the conflict markers
|
|
49
|
+
*/
|
|
50
|
+
export async function mergeContent(cwd, sides, labels) {
|
|
51
|
+
const { base, ours, theirs } = sides;
|
|
52
|
+
if (ours.equals(theirs) || theirs.equals(base))
|
|
53
|
+
return { clean: true, content: ours };
|
|
54
|
+
if (ours.equals(base))
|
|
55
|
+
return { clean: true, content: theirs };
|
|
56
|
+
if (![base, ours, theirs].every(isText))
|
|
57
|
+
return { clean: false, reason: 'binary' };
|
|
58
|
+
const merged = await mergeFile(cwd, sides, labels);
|
|
59
|
+
return merged.conflicts === 0
|
|
60
|
+
? { clean: true, content: merged.content }
|
|
61
|
+
: { clean: false, reason: 'content', markers: merged.content };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Whether the git on PATH passes the ancestor label to merge drivers.
|
|
65
|
+
*
|
|
66
|
+
* @param cwd - Any directory git can run in
|
|
67
|
+
*/
|
|
68
|
+
async function gitPassesAncestorLabel(cwd) {
|
|
69
|
+
const version = /(\d+)\.(\d+)/.exec(await git(['--version'], { cwd }));
|
|
70
|
+
const [major, minor] = [Number(version?.[1] ?? 0), Number(version?.[2] ?? 0)];
|
|
71
|
+
return major > LABEL_GIT[0] || (major === LABEL_GIT[0] && minor >= LABEL_GIT[1]);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The shell program git runs as the driver. It finds FireForge where the
|
|
75
|
+
* project installs it (`<project>/node_modules/.bin/fireforge`, in this
|
|
76
|
+
* worktree or else in the main one), else on PATH, so moving or upgrading
|
|
77
|
+
* the tool never leaves a stale path behind.
|
|
78
|
+
* Whatever goes wrong in FireForge, the merge still ends as a conflict with
|
|
79
|
+
* both sides in it: when the driver fails without writing a result, git's
|
|
80
|
+
* own text merge writes the conflict markers instead.
|
|
81
|
+
*/
|
|
82
|
+
const DRIVER_SCRIPT = [
|
|
83
|
+
'd=${1:-.}',
|
|
84
|
+
'shift',
|
|
85
|
+
'f=$d/node_modules/.bin/fireforge',
|
|
86
|
+
'[ -x "$f" ] || f=$(git rev-parse --path-format=absolute --git-common-dir)/../$d/node_modules/.bin/fireforge',
|
|
87
|
+
'[ -x "$f" ] || f=fireforge',
|
|
88
|
+
'cp "$2" "$2.fireforge-ours" || exit 1',
|
|
89
|
+
'"$f" merge-driver run "$@"',
|
|
90
|
+
's=$?',
|
|
91
|
+
'if [ $s -ne 0 ] && cmp -s "$2" "$2.fireforge-ours"; then git merge-file -L ours -L base -L theirs "$2" "$1" "$3"; fi',
|
|
92
|
+
'rm -f "$2.fireforge-ours"',
|
|
93
|
+
'[ $s -eq 0 ]',
|
|
94
|
+
].join('; ');
|
|
95
|
+
/**
|
|
96
|
+
* The driver command line this FireForge configures for a project.
|
|
97
|
+
*
|
|
98
|
+
* @param project - A source-mode project
|
|
99
|
+
*/
|
|
100
|
+
export function mergeDriverCommand(project) {
|
|
101
|
+
const { worktree } = layoutOf(project);
|
|
102
|
+
const dir = toPosixPath(relative(worktree, project.root)) || '.';
|
|
103
|
+
const quoted = `'${dir.replaceAll("'", `'\\''`)}'`;
|
|
104
|
+
return `sh -c '${DRIVER_SCRIPT}' fireforge-merge-driver ${quoted} %O %A %B %P %S`;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Configures the merge driver in the repository's own configuration, shared
|
|
108
|
+
* by all its worktrees, replacing any other command configured for it.
|
|
109
|
+
*
|
|
110
|
+
* @param project - A source-mode project
|
|
111
|
+
*/
|
|
112
|
+
export async function installMergeDriver(project) {
|
|
113
|
+
const { worktree } = layoutOf(project);
|
|
114
|
+
const key = `merge.${MERGE_DRIVER}.driver`;
|
|
115
|
+
const labelSupported = await gitPassesAncestorLabel(worktree);
|
|
116
|
+
const driver = mergeDriverCommand(project);
|
|
117
|
+
if ((await getConfig(worktree, key)) === driver) {
|
|
118
|
+
return { driver, changed: false, labelSupported };
|
|
119
|
+
}
|
|
120
|
+
await setConfig(worktree, `merge.${MERGE_DRIVER}.name`, 'FireForge owned source');
|
|
121
|
+
await setConfig(worktree, key, driver);
|
|
122
|
+
return { driver, changed: true, labelSupported };
|
|
123
|
+
}
|
|
124
|
+
/** The commit `name` resolves to, or undefined. */
|
|
125
|
+
async function commitOf(worktree, name) {
|
|
126
|
+
return resolveRevision(worktree, name, 'commit').catch(() => undefined);
|
|
127
|
+
}
|
|
128
|
+
/** The single parent of a commit; a root or merge commit has none. */
|
|
129
|
+
async function parentOf(worktree, name) {
|
|
130
|
+
const child = await commitOf(worktree, name);
|
|
131
|
+
if (child === undefined)
|
|
132
|
+
return undefined;
|
|
133
|
+
const parents = (await git(['rev-list', '--parents', '-n', '1', child], { cwd: worktree }))
|
|
134
|
+
.trim()
|
|
135
|
+
.split(' ')
|
|
136
|
+
.slice(1);
|
|
137
|
+
return parents.length === 1 ? parents[0] : undefined;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* The ancestor commit named by git's `%S` label: an abbreviated id for a
|
|
141
|
+
* merge with one merge base, `parent of <id> (<subject>)` for a cherry-pick
|
|
142
|
+
* or rebase step, `<id> (<subject>)` for a revert. Other labels name none.
|
|
143
|
+
*/
|
|
144
|
+
async function labelledAncestor(worktree, label) {
|
|
145
|
+
if (new RegExp(`^${ABBREVIATED_ID}$`).test(label))
|
|
146
|
+
return commitOf(worktree, label);
|
|
147
|
+
const picked = new RegExp(`^parent of (${ABBREVIATED_ID}) `).exec(label)?.[1];
|
|
148
|
+
if (picked !== undefined)
|
|
149
|
+
return parentOf(worktree, picked);
|
|
150
|
+
const reverted = new RegExp(`^(${ABBREVIATED_ID}) \\(`).exec(label)?.[1];
|
|
151
|
+
return reverted === undefined ? undefined : commitOf(worktree, reverted);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Whether `path` is absent from the commit git's `%S` label names.
|
|
155
|
+
* Undefined when the label names no single commit or the tree cannot be read.
|
|
156
|
+
*
|
|
157
|
+
* @param worktree - The checkout's top directory
|
|
158
|
+
* @param path - Worktree-relative path
|
|
159
|
+
* @param label - Git's `%S`
|
|
160
|
+
*/
|
|
161
|
+
export async function ancestorAbsent(worktree, path, label) {
|
|
162
|
+
const commit = await labelledAncestor(worktree, label);
|
|
163
|
+
if (commit === undefined)
|
|
164
|
+
return undefined;
|
|
165
|
+
try {
|
|
166
|
+
return (await listTree(worktree, commit, { paths: [path], recursive: false })).length === 0;
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
return undefined;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/** The pristine bytes a first touch of an owned file started from, per the record at HEAD. */
|
|
173
|
+
async function firstTouchBase(project, pristine, path) {
|
|
174
|
+
const layout = layoutOf(project);
|
|
175
|
+
if (!path.startsWith(`${layout.source}/`))
|
|
176
|
+
return undefined;
|
|
177
|
+
const enginePath = path.slice(layout.source.length + 1);
|
|
178
|
+
const spec = `HEAD:${recordFile(layout, enginePath)}`;
|
|
179
|
+
const raw = (await readBlobs(layout.worktree, [spec])).get(spec);
|
|
180
|
+
if (raw === undefined)
|
|
181
|
+
return undefined;
|
|
182
|
+
const record = overrideRecordSchema.parse(parseJson(raw.toString('utf8'), { source: spec }), {
|
|
183
|
+
source: spec,
|
|
184
|
+
});
|
|
185
|
+
const [entry] = await listTree(pristine.repo, pristine.commit, {
|
|
186
|
+
paths: [enginePath],
|
|
187
|
+
recursive: false,
|
|
188
|
+
});
|
|
189
|
+
if (record.base.commit !== pristine.commit ||
|
|
190
|
+
entry?.oid !== record.base.blob ||
|
|
191
|
+
entry.mode !== record.base.mode) {
|
|
192
|
+
throw new Error(`the override record of ${enginePath} is not at the pinned upstream file`);
|
|
193
|
+
}
|
|
194
|
+
return (await readPristineBlobs(pristine, [entry.oid])).get(entry.oid);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Merges one owned file as git's merge driver, leaving the result in the
|
|
198
|
+
* `ours` file.
|
|
199
|
+
*
|
|
200
|
+
* @param project - The source-mode project the file belongs to
|
|
201
|
+
* @param pristine - Resolves the pinned pristine repository, asked only for a first touch
|
|
202
|
+
* @param input - What git passed
|
|
203
|
+
* @returns True for a clean merge, false for a conflict (the driver's exit status)
|
|
204
|
+
*/
|
|
205
|
+
export async function runMergeDriver(project, pristine, input) {
|
|
206
|
+
const worktree = layoutOf(project).worktree;
|
|
207
|
+
let ancestor = await readBytes(input.base);
|
|
208
|
+
if (ancestor.length === 0) {
|
|
209
|
+
try {
|
|
210
|
+
const label = input.label ?? '';
|
|
211
|
+
if (label === '' || label === '%S') {
|
|
212
|
+
throw new Error('this git does not pass the ancestor label (Git 2.44 or later does)');
|
|
213
|
+
}
|
|
214
|
+
const absent = await ancestorAbsent(worktree, input.path, label);
|
|
215
|
+
if (absent === undefined)
|
|
216
|
+
throw new Error(`"${label}" names no single ancestor commit`);
|
|
217
|
+
if (absent)
|
|
218
|
+
ancestor = (await firstTouchBase(project, await pristine(), input.path)) ?? ancestor;
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
warn(`No pristine ancestor for ${input.path}: ${toError(error).message}. Merging as add/add.`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
const merged = await mergeContent(worktree, { base: ancestor, ours: await readBytes(input.ours), theirs: await readBytes(input.theirs) }, { ours: 'ours', base: 'base', theirs: 'theirs' });
|
|
225
|
+
if (merged.clean)
|
|
226
|
+
await writeFile(input.ours, merged.content, { durable: false });
|
|
227
|
+
else if (merged.markers !== undefined) {
|
|
228
|
+
await writeFile(input.ours, merged.markers, { durable: false });
|
|
229
|
+
}
|
|
230
|
+
return merged.clean;
|
|
231
|
+
}
|
|
232
|
+
/** The attributes the source root needs: exact bytes, and this driver. */
|
|
233
|
+
const SOURCE_ATTRIBUTES = ['* -text', `* merge=${MERGE_DRIVER}`];
|
|
234
|
+
/**
|
|
235
|
+
* The source root's `.gitattributes` with every line of
|
|
236
|
+
* {@link SOURCE_ATTRIBUTES} present, or undefined when it already has them.
|
|
237
|
+
*
|
|
238
|
+
* @param current - The file's text, or undefined when absent
|
|
239
|
+
*/
|
|
240
|
+
export function completedAttributes(current) {
|
|
241
|
+
const lines = (current ?? '').split('\n').map((line) => line.trim());
|
|
242
|
+
const missing = SOURCE_ATTRIBUTES.filter((line) => !lines.includes(line));
|
|
243
|
+
if (missing.length === 0)
|
|
244
|
+
return undefined;
|
|
245
|
+
const text = current ?? '';
|
|
246
|
+
return `${text}${text === '' || text.endsWith('\n') ? '' : '\n'}${missing.join('\n')}\n`;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* The absolute path of the source root's `.gitattributes`.
|
|
250
|
+
*
|
|
251
|
+
* @param project - A source-mode project
|
|
252
|
+
*/
|
|
253
|
+
export function attributesFile(project) {
|
|
254
|
+
return join(project.paths.source, '.gitattributes');
|
|
255
|
+
}
|