@hominis/fireforge 0.54.0 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +287 -6
- package/README.md +51 -17
- package/dist/bin/fireforge.js +34 -129
- package/dist/build-info.json +4 -4
- package/dist/src/check/check.js +394 -0
- package/dist/src/check/gate.js +448 -0
- package/dist/src/check/index.js +10 -0
- package/dist/src/check/record.js +155 -0
- package/dist/src/cli/command.js +286 -0
- package/dist/src/cli/output.js +96 -0
- package/dist/src/cli/program.js +231 -0
- package/dist/src/cli/stdio.js +59 -0
- package/dist/src/cli/version.js +99 -0
- package/dist/src/commands/bootstrap.js +17 -102
- package/dist/src/commands/build.js +34 -438
- package/dist/src/commands/check.js +44 -157
- package/dist/src/commands/config.js +50 -226
- package/dist/src/commands/discard.js +38 -215
- package/dist/src/commands/doctor.js +29 -456
- package/dist/src/commands/download.js +35 -499
- package/dist/src/commands/export.js +42 -431
- package/dist/src/commands/furnace.js +220 -0
- package/dist/src/commands/gate.js +127 -0
- package/dist/src/commands/import.js +44 -445
- package/dist/src/commands/index.js +86 -0
- package/dist/src/commands/lint.js +44 -546
- package/dist/src/commands/merge-driver.js +56 -0
- package/dist/src/commands/migrate.js +75 -0
- package/dist/src/commands/override.js +43 -0
- package/dist/src/commands/package.js +48 -77
- package/dist/src/commands/patch.js +221 -0
- package/dist/src/commands/re-export.js +55 -332
- package/dist/src/commands/rebase.js +69 -0
- package/dist/src/commands/register.js +62 -103
- package/dist/src/commands/reset.js +28 -91
- package/dist/src/commands/resolve.js +20 -167
- package/dist/src/commands/restore.js +19 -0
- package/dist/src/commands/run.js +60 -420
- package/dist/src/commands/setup.js +78 -90
- package/dist/src/commands/status.js +44 -413
- package/dist/src/commands/test.js +97 -422
- package/dist/src/commands/token.js +185 -228
- package/dist/src/commands/typecheck.js +59 -208
- package/dist/src/commands/verify.js +28 -334
- package/dist/src/commands/version.js +14 -0
- package/dist/src/commands/watch.js +20 -218
- package/dist/src/commands/wire.js +60 -349
- package/dist/src/commands/workspace.js +117 -0
- package/dist/src/config/edit.js +237 -0
- package/dist/src/config/index.js +15 -0
- package/dist/src/config/load.js +59 -0
- package/dist/src/config/previous.js +404 -0
- package/dist/src/config/schema/build.js +63 -0
- package/dist/src/config/schema/check.js +113 -0
- package/dist/src/config/schema/common.js +71 -0
- package/dist/src/config/schema/export-queue.js +36 -0
- package/dist/src/config/schema/firefox.js +69 -0
- package/dist/src/config/schema/gate.js +199 -0
- package/dist/src/config/schema/identity.js +55 -0
- package/dist/src/config/schema/index.js +45 -0
- package/dist/src/config/schema/lint.js +297 -0
- package/dist/src/config/schema/policy.js +111 -0
- package/dist/src/config/schema/source.js +90 -0
- package/dist/src/config/schema/test.js +17 -0
- package/dist/src/config/schema/toolchains.js +17 -0
- package/dist/src/config/schema/typecheck.js +29 -0
- package/dist/src/config/schema/wire.js +15 -0
- package/dist/src/diff/apply.js +129 -0
- package/dist/src/diff/index.js +16 -0
- package/dist/src/diff/model.js +267 -0
- package/dist/src/diff/query.js +65 -0
- package/dist/src/doctor/index.js +240 -0
- package/dist/src/engine/archive.js +396 -0
- package/dist/src/engine/audit.js +66 -0
- package/dist/src/engine/build.js +150 -0
- package/dist/src/engine/hostLocks.js +66 -0
- package/dist/src/engine/index.js +26 -0
- package/dist/src/engine/installManifests.js +147 -0
- package/dist/src/engine/mach.js +97 -0
- package/dist/src/engine/machHints.js +80 -0
- package/dist/src/engine/mozconfig.js +110 -0
- package/dist/src/engine/objdir.js +124 -0
- package/dist/src/engine/package.js +169 -0
- package/dist/src/engine/pin.js +12 -0
- package/dist/src/engine/pool.js +423 -0
- package/dist/src/engine/pristine.js +281 -0
- package/dist/src/engine/python.js +68 -0
- package/dist/src/engine/resourceGuard.js +582 -0
- package/dist/src/engine/run.js +259 -0
- package/dist/src/engine/smoke.js +204 -0
- package/dist/src/engine/staleness.js +229 -0
- package/dist/src/engine/watch.js +82 -0
- package/dist/src/engine/workspace.js +85 -0
- package/dist/src/furnace/config.js +360 -0
- package/dist/src/furnace/deploy.js +414 -0
- package/dist/src/furnace/diff.js +59 -0
- package/dist/src/furnace/edit.js +64 -0
- package/dist/src/furnace/fragments.js +53 -0
- package/dist/src/furnace/index.js +19 -0
- package/dist/src/furnace/operations.js +283 -0
- package/dist/src/furnace/registration.js +220 -0
- package/dist/src/furnace/scaffold.js +311 -0
- package/dist/src/furnace/typing.js +252 -0
- package/dist/src/furnace/validate.js +662 -0
- package/dist/src/git/apply.js +129 -0
- package/dist/src/git/diff.js +143 -0
- package/dist/src/git/index.js +33 -0
- package/dist/src/git/objects.js +201 -0
- package/dist/src/git/refs.js +85 -0
- package/dist/src/git/repo.js +222 -0
- package/dist/src/git/run.js +242 -0
- package/dist/src/git/status.js +156 -0
- package/dist/src/kernel/errors.js +123 -0
- package/dist/src/kernel/fs.js +515 -0
- package/dist/src/kernel/glob.js +63 -0
- package/dist/src/kernel/hash.js +28 -0
- package/dist/src/kernel/journal.js +524 -0
- package/dist/src/kernel/json-edit.js +198 -0
- package/dist/src/kernel/json.js +101 -0
- package/dist/src/kernel/lock.js +589 -0
- package/dist/src/kernel/log.js +154 -0
- package/dist/src/kernel/process/identity.js +313 -0
- package/dist/src/kernel/process/index.js +8 -0
- package/dist/src/kernel/process/listing.js +128 -0
- package/dist/src/kernel/process/spawn.js +430 -0
- package/dist/src/kernel/process/tree.js +301 -0
- package/dist/src/kernel/schema.js +308 -0
- package/dist/src/kernel/signals.js +171 -0
- package/dist/src/kernel/text.js +151 -0
- package/dist/src/kernel/time.js +83 -0
- package/dist/src/kernel/tty.js +84 -0
- package/dist/src/lint/cache.js +77 -0
- package/dist/src/lint/checkjs.js +400 -0
- package/dist/src/lint/index.js +3 -0
- package/dist/src/lint/input.js +100 -0
- package/dist/src/lint/report.js +107 -0
- package/dist/src/lint/rule.js +41 -0
- package/dist/src/lint/rules/css.js +308 -0
- package/dist/src/lint/rules/javascript.js +299 -0
- package/dist/src/lint/rules/jsdoc.js +249 -0
- package/dist/src/lint/rules/license.js +93 -0
- package/dist/src/lint/rules/policy.js +201 -0
- package/dist/src/lint/rules/registration.js +264 -0
- package/dist/src/lint/rules/size.js +299 -0
- package/dist/src/lint/run.js +126 -0
- package/dist/src/lint/shim.js +323 -0
- package/dist/src/lint/typescript.js +186 -0
- package/dist/src/lint/waivers.js +93 -0
- package/dist/src/mode/changes.js +264 -0
- package/dist/src/mode/diagnose.js +173 -0
- package/dist/src/mode/export.js +147 -0
- package/dist/src/mode/index.js +23 -0
- package/dist/src/mode/migrate.js +181 -0
- package/dist/src/mode/previousWaivers.js +206 -0
- package/dist/src/mode/pristine.js +61 -0
- package/dist/src/mode/rebase.js +197 -0
- package/dist/src/mode/report.js +157 -0
- package/dist/src/mode/setup.js +103 -0
- package/dist/src/mode/tracked.js +116 -0
- package/dist/src/mode/upgrade.js +281 -0
- package/dist/src/mode/watch.js +83 -0
- package/dist/src/mode/workspace.js +189 -0
- package/dist/src/mozbuild/index.js +6 -0
- package/dist/src/mozbuild/jar.js +366 -0
- package/dist/src/mozbuild/mozbuild.js +321 -0
- package/dist/src/mozbuild/paths.js +96 -0
- package/dist/src/mozbuild/references.js +39 -0
- package/dist/src/mozbuild/testManifest.js +343 -0
- package/dist/src/mozbuild/text.js +142 -0
- package/dist/src/project/changes.js +145 -0
- package/dist/src/project/checkout.js +66 -0
- package/dist/src/project/index.js +11 -0
- package/dist/src/project/license.js +119 -0
- package/dist/src/project/project.js +111 -0
- package/dist/src/project/state.js +85 -0
- package/dist/src/project/tracked.js +1 -0
- package/dist/src/queue/apply.js +270 -0
- package/dist/src/queue/attribute.js +159 -0
- package/dist/src/queue/baseline.js +409 -0
- package/dist/src/queue/capture.js +298 -0
- package/dist/src/queue/changes.js +234 -0
- package/dist/src/queue/index.js +50 -0
- package/dist/src/queue/manifest.js +341 -0
- package/dist/src/queue/operations.js +454 -0
- package/dist/src/queue/placement.js +220 -0
- package/dist/src/queue/queue.js +359 -0
- package/dist/src/queue/restore.js +103 -0
- package/dist/src/queue/session.js +685 -0
- package/dist/src/queue/status.js +137 -0
- package/dist/src/register/files.js +39 -0
- package/dist/src/register/index.js +8 -0
- package/dist/src/register/js.js +217 -0
- package/dist/src/register/register.js +359 -0
- package/dist/src/register/wire.js +146 -0
- package/dist/src/source/adopt.js +99 -0
- package/dist/src/source/changes.js +132 -0
- package/dist/src/source/edit.js +278 -0
- package/dist/src/source/export.js +70 -0
- package/dist/src/source/groups.js +131 -0
- package/dist/src/source/index.js +20 -0
- package/dist/src/source/materialize.js +382 -0
- package/dist/src/source/merge.js +255 -0
- package/dist/src/source/objects.js +102 -0
- package/dist/src/source/previous.js +166 -0
- package/dist/src/source/records.js +138 -0
- package/dist/src/source/refresh.js +264 -0
- package/dist/src/source/tree.js +337 -0
- package/dist/src/syntax/css.js +215 -0
- package/dist/src/syntax/fragments.js +63 -0
- package/dist/src/syntax/index.js +10 -0
- package/dist/src/syntax/js.js +270 -0
- package/dist/src/test/classify.js +826 -0
- package/dist/src/test/control.js +236 -0
- package/dist/src/test/host.js +266 -0
- package/dist/src/test/index.js +11 -0
- package/dist/src/test/plan.js +347 -0
- package/dist/src/test/rawLog.js +138 -0
- package/dist/src/test/run.js +404 -0
- package/dist/src/test/verdict.js +420 -0
- package/dist/src/test/xpcshell.js +143 -0
- package/dist/src/tokens/add.js +304 -0
- package/dist/src/tokens/coverage.js +65 -0
- package/dist/src/tokens/css.js +58 -0
- package/dist/src/tokens/index.js +12 -0
- package/dist/src/tokens/lint.js +96 -0
- package/dist/src/tokens/model.js +118 -0
- package/dist/src/tokens/settings.js +87 -0
- package/dist/src/tokens/siblings.js +104 -0
- package/dist/src/typecheck/explain.js +123 -0
- package/dist/src/typecheck/index.js +8 -0
- package/dist/src/typecheck/typecheck.js +332 -0
- package/docs/README.md +23 -28
- package/docs/authoring.md +97 -0
- package/docs/configuration.md +307 -692
- package/docs/exit-codes.md +76 -94
- package/docs/furnace.md +113 -181
- package/docs/gate.md +205 -0
- package/docs/getting-started.md +165 -0
- package/docs/machine-output.md +201 -277
- package/docs/migrating.md +261 -0
- package/docs/patch-workflow.md +163 -653
- package/docs/quality.md +220 -0
- package/docs/source-workflow.md +228 -0
- package/docs/testing.md +101 -712
- package/docs/workspaces.md +187 -0
- package/package.json +22 -30
- package/templates/configs/common.mozconfig +8 -2
- package/templates/configs/darwin.mozconfig +6 -7
- package/templates/configs/linux.mozconfig +5 -8
- package/templates/configs/win32.mozconfig +3 -9
- package/dist/bin/fireforge.d.ts +0 -9
- package/dist/src/cli-usage-error.d.ts +0 -46
- package/dist/src/cli-usage-error.js +0 -81
- package/dist/src/cli.d.ts +0 -41
- package/dist/src/cli.js +0 -380
- package/dist/src/commands/bootstrap-checks.d.ts +0 -16
- package/dist/src/commands/bootstrap-checks.js +0 -66
- package/dist/src/commands/bootstrap.d.ts +0 -10
- package/dist/src/commands/build-prelock.d.ts +0 -20
- package/dist/src/commands/build-prelock.js +0 -50
- package/dist/src/commands/build.d.ts +0 -13
- package/dist/src/commands/check-report.d.ts +0 -41
- package/dist/src/commands/check-report.js +0 -91
- package/dist/src/commands/check-run.d.ts +0 -33
- package/dist/src/commands/check-run.js +0 -112
- package/dist/src/commands/check-steps.d.ts +0 -75
- package/dist/src/commands/check-steps.js +0 -200
- package/dist/src/commands/check.d.ts +0 -32
- package/dist/src/commands/config.d.ts +0 -13
- package/dist/src/commands/declarations-report.d.ts +0 -49
- package/dist/src/commands/declarations-report.js +0 -83
- package/dist/src/commands/destructive-decision.d.ts +0 -19
- package/dist/src/commands/destructive-decision.js +0 -31
- package/dist/src/commands/discard.d.ts +0 -12
- package/dist/src/commands/doctor-check-core.d.ts +0 -110
- package/dist/src/commands/doctor-check-core.js +0 -24
- package/dist/src/commands/doctor-engine-eslint.d.ts +0 -3
- package/dist/src/commands/doctor-engine-eslint.js +0 -17
- package/dist/src/commands/doctor-external-toolchains.d.ts +0 -3
- package/dist/src/commands/doctor-external-toolchains.js +0 -56
- package/dist/src/commands/doctor-furnace-config-sync.d.ts +0 -18
- package/dist/src/commands/doctor-furnace-config-sync.js +0 -295
- package/dist/src/commands/doctor-furnace-jar.d.ts +0 -14
- package/dist/src/commands/doctor-furnace-jar.js +0 -44
- package/dist/src/commands/doctor-furnace.d.ts +0 -8
- package/dist/src/commands/doctor-furnace.js +0 -514
- package/dist/src/commands/doctor-macos-sdk.d.ts +0 -8
- package/dist/src/commands/doctor-macos-sdk.js +0 -158
- package/dist/src/commands/doctor-orphaned-harness.d.ts +0 -41
- package/dist/src/commands/doctor-orphaned-harness.js +0 -98
- package/dist/src/commands/doctor-patch-manifest.d.ts +0 -9
- package/dist/src/commands/doctor-patch-manifest.js +0 -156
- package/dist/src/commands/doctor-post-rebase-audit.d.ts +0 -2
- package/dist/src/commands/doctor-post-rebase-audit.js +0 -108
- package/dist/src/commands/doctor-source-pin.d.ts +0 -29
- package/dist/src/commands/doctor-source-pin.js +0 -91
- package/dist/src/commands/doctor-working-tree.d.ts +0 -27
- package/dist/src/commands/doctor-working-tree.js +0 -89
- package/dist/src/commands/doctor.d.ts +0 -49
- package/dist/src/commands/download.d.ts +0 -11
- package/dist/src/commands/export-adopt-check.d.ts +0 -37
- package/dist/src/commands/export-adopt-check.js +0 -97
- package/dist/src/commands/export-all.d.ts +0 -11
- package/dist/src/commands/export-all.js +0 -361
- package/dist/src/commands/export-flow.d.ts +0 -124
- package/dist/src/commands/export-flow.js +0 -423
- package/dist/src/commands/export-placement-conflicts.d.ts +0 -17
- package/dist/src/commands/export-placement-conflicts.js +0 -75
- package/dist/src/commands/export-placement-gate.d.ts +0 -42
- package/dist/src/commands/export-placement-gate.js +0 -107
- package/dist/src/commands/export-placement-policy.d.ts +0 -22
- package/dist/src/commands/export-placement-policy.js +0 -54
- package/dist/src/commands/export-shared.d.ts +0 -152
- package/dist/src/commands/export-shared.js +0 -396
- package/dist/src/commands/export-staged-registration.d.ts +0 -46
- package/dist/src/commands/export-staged-registration.js +0 -91
- package/dist/src/commands/export.d.ts +0 -13
- package/dist/src/commands/forward-import-remedy.d.ts +0 -31
- package/dist/src/commands/forward-import-remedy.js +0 -62
- package/dist/src/commands/furnace/apply.d.ts +0 -8
- package/dist/src/commands/furnace/apply.js +0 -327
- package/dist/src/commands/furnace/authoring-config.d.ts +0 -13
- package/dist/src/commands/furnace/authoring-config.js +0 -19
- package/dist/src/commands/furnace/chrome-doc-remove.d.ts +0 -14
- package/dist/src/commands/furnace/chrome-doc-remove.js +0 -148
- package/dist/src/commands/furnace/chrome-doc-templates.d.ts +0 -152
- package/dist/src/commands/furnace/chrome-doc-templates.js +0 -331
- package/dist/src/commands/furnace/chrome-doc-tests.d.ts +0 -23
- package/dist/src/commands/furnace/chrome-doc-tests.js +0 -148
- package/dist/src/commands/furnace/chrome-doc.d.ts +0 -87
- package/dist/src/commands/furnace/chrome-doc.js +0 -365
- package/dist/src/commands/furnace/create-browser-test.d.ts +0 -44
- package/dist/src/commands/furnace/create-browser-test.js +0 -179
- package/dist/src/commands/furnace/create-dry-run.d.ts +0 -49
- package/dist/src/commands/furnace/create-dry-run.js +0 -107
- package/dist/src/commands/furnace/create-features.d.ts +0 -24
- package/dist/src/commands/furnace/create-features.js +0 -55
- package/dist/src/commands/furnace/create-mochikit.d.ts +0 -29
- package/dist/src/commands/furnace/create-mochikit.js +0 -75
- package/dist/src/commands/furnace/create-readback.d.ts +0 -22
- package/dist/src/commands/furnace/create-readback.js +0 -32
- package/dist/src/commands/furnace/create-templates.d.ts +0 -119
- package/dist/src/commands/furnace/create-templates.js +0 -283
- package/dist/src/commands/furnace/create-validation.d.ts +0 -6
- package/dist/src/commands/furnace/create-validation.js +0 -59
- package/dist/src/commands/furnace/create-xpcshell.d.ts +0 -27
- package/dist/src/commands/furnace/create-xpcshell.js +0 -80
- package/dist/src/commands/furnace/create.d.ts +0 -24
- package/dist/src/commands/furnace/create.js +0 -407
- package/dist/src/commands/furnace/deploy-fragment-includers.d.ts +0 -59
- package/dist/src/commands/furnace/deploy-fragment-includers.js +0 -120
- package/dist/src/commands/furnace/deploy-named.d.ts +0 -48
- package/dist/src/commands/furnace/deploy-named.js +0 -107
- package/dist/src/commands/furnace/deploy.d.ts +0 -9
- package/dist/src/commands/furnace/deploy.js +0 -218
- package/dist/src/commands/furnace/diff.d.ts +0 -11
- package/dist/src/commands/furnace/diff.js +0 -238
- package/dist/src/commands/furnace/index.d.ts +0 -4
- package/dist/src/commands/furnace/index.js +0 -282
- package/dist/src/commands/furnace/init.d.ts +0 -11
- package/dist/src/commands/furnace/init.js +0 -287
- package/dist/src/commands/furnace/list.d.ts +0 -8
- package/dist/src/commands/furnace/list.js +0 -104
- package/dist/src/commands/furnace/override.d.ts +0 -16
- package/dist/src/commands/furnace/override.js +0 -454
- package/dist/src/commands/furnace/preview.d.ts +0 -19
- package/dist/src/commands/furnace/preview.js +0 -349
- package/dist/src/commands/furnace/refresh.d.ts +0 -10
- package/dist/src/commands/furnace/refresh.js +0 -303
- package/dist/src/commands/furnace/remove-mutations.d.ts +0 -36
- package/dist/src/commands/furnace/remove-mutations.js +0 -168
- package/dist/src/commands/furnace/remove-state.d.ts +0 -20
- package/dist/src/commands/furnace/remove-state.js +0 -60
- package/dist/src/commands/furnace/remove.d.ts +0 -8
- package/dist/src/commands/furnace/remove.js +0 -415
- package/dist/src/commands/furnace/rename-browser-test.d.ts +0 -2
- package/dist/src/commands/furnace/rename-browser-test.js +0 -68
- package/dist/src/commands/furnace/rename-dry-run.d.ts +0 -29
- package/dist/src/commands/furnace/rename-dry-run.js +0 -127
- package/dist/src/commands/furnace/rename-helpers.d.ts +0 -26
- package/dist/src/commands/furnace/rename-helpers.js +0 -85
- package/dist/src/commands/furnace/rename-registrations.d.ts +0 -41
- package/dist/src/commands/furnace/rename-registrations.js +0 -98
- package/dist/src/commands/furnace/rename-xpcshell.d.ts +0 -32
- package/dist/src/commands/furnace/rename-xpcshell.js +0 -95
- package/dist/src/commands/furnace/rename.d.ts +0 -6
- package/dist/src/commands/furnace/rename.js +0 -400
- package/dist/src/commands/furnace/scan.d.ts +0 -14
- package/dist/src/commands/furnace/scan.js +0 -192
- package/dist/src/commands/furnace/status.d.ts +0 -7
- package/dist/src/commands/furnace/status.js +0 -209
- package/dist/src/commands/furnace/sync.d.ts +0 -12
- package/dist/src/commands/furnace/sync.js +0 -145
- package/dist/src/commands/furnace/test-file-name.d.ts +0 -28
- package/dist/src/commands/furnace/test-file-name.js +0 -39
- package/dist/src/commands/furnace/validate-report.d.ts +0 -45
- package/dist/src/commands/furnace/validate-report.js +0 -91
- package/dist/src/commands/furnace/validate.d.ts +0 -8
- package/dist/src/commands/furnace/validate.js +0 -309
- package/dist/src/commands/furnace/validation-output.d.ts +0 -47
- package/dist/src/commands/furnace/validation-output.js +0 -161
- package/dist/src/commands/import.d.ts +0 -11
- package/dist/src/commands/lint-per-patch.d.ts +0 -10
- package/dist/src/commands/lint-per-patch.js +0 -428
- package/dist/src/commands/lint-per-run-checkjs.d.ts +0 -66
- package/dist/src/commands/lint-per-run-checkjs.js +0 -102
- package/dist/src/commands/lint-report.d.ts +0 -25
- package/dist/src/commands/lint-report.js +0 -76
- package/dist/src/commands/lint.d.ts +0 -47
- package/dist/src/commands/manifest.d.ts +0 -38
- package/dist/src/commands/manifest.js +0 -68
- package/dist/src/commands/package.d.ts +0 -11
- package/dist/src/commands/park.d.ts +0 -22
- package/dist/src/commands/park.js +0 -232
- package/dist/src/commands/patch/compact.d.ts +0 -28
- package/dist/src/commands/patch/compact.js +0 -208
- package/dist/src/commands/patch/delete-gap-notice.d.ts +0 -24
- package/dist/src/commands/patch/delete-gap-notice.js +0 -48
- package/dist/src/commands/patch/delete.d.ts +0 -28
- package/dist/src/commands/patch/delete.js +0 -131
- package/dist/src/commands/patch/entry-projection.d.ts +0 -13
- package/dist/src/commands/patch/entry-projection.js +0 -24
- package/dist/src/commands/patch/index.d.ts +0 -16
- package/dist/src/commands/patch/index.js +0 -52
- package/dist/src/commands/patch/lint-ignore-from.d.ts +0 -43
- package/dist/src/commands/patch/lint-ignore-from.js +0 -141
- package/dist/src/commands/patch/lint-ignore.d.ts +0 -42
- package/dist/src/commands/patch/lint-ignore.js +0 -261
- package/dist/src/commands/patch/move-files-adopt.d.ts +0 -33
- package/dist/src/commands/patch/move-files-adopt.js +0 -65
- package/dist/src/commands/patch/move-files-create.d.ts +0 -19
- package/dist/src/commands/patch/move-files-create.js +0 -187
- package/dist/src/commands/patch/move-files-into.d.ts +0 -65
- package/dist/src/commands/patch/move-files-into.js +0 -325
- package/dist/src/commands/patch/move-files-retire.d.ts +0 -39
- package/dist/src/commands/patch/move-files-retire.js +0 -91
- package/dist/src/commands/patch/move-files.d.ts +0 -28
- package/dist/src/commands/patch/move-files.js +0 -224
- package/dist/src/commands/patch/move-size-tier.d.ts +0 -27
- package/dist/src/commands/patch/move-size-tier.js +0 -66
- package/dist/src/commands/patch/patch-context.d.ts +0 -40
- package/dist/src/commands/patch/patch-context.js +0 -51
- package/dist/src/commands/patch/removal-created-files.d.ts +0 -48
- package/dist/src/commands/patch/removal-created-files.js +0 -83
- package/dist/src/commands/patch/removal-dependents.d.ts +0 -63
- package/dist/src/commands/patch/removal-dependents.js +0 -133
- package/dist/src/commands/patch/rename.d.ts +0 -35
- package/dist/src/commands/patch/rename.js +0 -378
- package/dist/src/commands/patch/reorder-projection.d.ts +0 -17
- package/dist/src/commands/patch/reorder-projection.js +0 -49
- package/dist/src/commands/patch/reorder-shift.d.ts +0 -30
- package/dist/src/commands/patch/reorder-shift.js +0 -307
- package/dist/src/commands/patch/reorder.d.ts +0 -34
- package/dist/src/commands/patch/reorder.js +0 -375
- package/dist/src/commands/patch/reserve.d.ts +0 -33
- package/dist/src/commands/patch/reserve.js +0 -152
- package/dist/src/commands/patch/retire.d.ts +0 -34
- package/dist/src/commands/patch/retire.js +0 -133
- package/dist/src/commands/patch/split-plan.d.ts +0 -125
- package/dist/src/commands/patch/split-plan.js +0 -313
- package/dist/src/commands/patch/split-staged.d.ts +0 -108
- package/dist/src/commands/patch/split-staged.js +0 -202
- package/dist/src/commands/patch/split.d.ts +0 -43
- package/dist/src/commands/patch/split.js +0 -367
- package/dist/src/commands/patch/stage.d.ts +0 -34
- package/dist/src/commands/patch/stage.js +0 -153
- package/dist/src/commands/patch/staged-dependency-batch.d.ts +0 -48
- package/dist/src/commands/patch/staged-dependency-batch.js +0 -176
- package/dist/src/commands/patch/staged-dependency-entries.d.ts +0 -44
- package/dist/src/commands/patch/staged-dependency-entries.js +0 -80
- package/dist/src/commands/patch/staged-dependency-from.d.ts +0 -14
- package/dist/src/commands/patch/staged-dependency-from.js +0 -114
- package/dist/src/commands/patch/staged-dependency-remove.d.ts +0 -53
- package/dist/src/commands/patch/staged-dependency-remove.js +0 -117
- package/dist/src/commands/patch/staged-dependency-validate.d.ts +0 -15
- package/dist/src/commands/patch/staged-dependency-validate.js +0 -49
- package/dist/src/commands/patch/staged-dependency.d.ts +0 -22
- package/dist/src/commands/patch/staged-dependency.js +0 -248
- package/dist/src/commands/patch/tier.d.ts +0 -34
- package/dist/src/commands/patch/tier.js +0 -125
- package/dist/src/commands/patch-rename-map.d.ts +0 -30
- package/dist/src/commands/patch-rename-map.js +0 -54
- package/dist/src/commands/pending-resolution.d.ts +0 -15
- package/dist/src/commands/pending-resolution.js +0 -25
- package/dist/src/commands/re-export-adjacent-registrations.d.ts +0 -20
- package/dist/src/commands/re-export-adjacent-registrations.js +0 -75
- package/dist/src/commands/re-export-adjacent.d.ts +0 -111
- package/dist/src/commands/re-export-adjacent.js +0 -267
- package/dist/src/commands/re-export-bulk-scan.d.ts +0 -19
- package/dist/src/commands/re-export-bulk-scan.js +0 -233
- package/dist/src/commands/re-export-drift.d.ts +0 -110
- package/dist/src/commands/re-export-drift.js +0 -358
- package/dist/src/commands/re-export-files.d.ts +0 -15
- package/dist/src/commands/re-export-files.js +0 -307
- package/dist/src/commands/re-export-hunks.d.ts +0 -35
- package/dist/src/commands/re-export-hunks.js +0 -220
- package/dist/src/commands/re-export-lint.d.ts +0 -137
- package/dist/src/commands/re-export-lint.js +0 -303
- package/dist/src/commands/re-export-options.d.ts +0 -29
- package/dist/src/commands/re-export-options.js +0 -191
- package/dist/src/commands/re-export-preflight.d.ts +0 -23
- package/dist/src/commands/re-export-preflight.js +0 -159
- package/dist/src/commands/re-export-purity-scope.d.ts +0 -18
- package/dist/src/commands/re-export-purity-scope.js +0 -137
- package/dist/src/commands/re-export-register.d.ts +0 -12
- package/dist/src/commands/re-export-register.js +0 -99
- package/dist/src/commands/re-export-removed.d.ts +0 -15
- package/dist/src/commands/re-export-removed.js +0 -94
- package/dist/src/commands/re-export-retired-declarations.d.ts +0 -22
- package/dist/src/commands/re-export-retired-declarations.js +0 -113
- package/dist/src/commands/re-export-scan-owner.d.ts +0 -44
- package/dist/src/commands/re-export-scan-owner.js +0 -116
- package/dist/src/commands/re-export-scan.d.ts +0 -72
- package/dist/src/commands/re-export-scan.js +0 -265
- package/dist/src/commands/re-export-single.d.ts +0 -39
- package/dist/src/commands/re-export-single.js +0 -388
- package/dist/src/commands/re-export-stale-registrations.d.ts +0 -39
- package/dist/src/commands/re-export-stale-registrations.js +0 -106
- package/dist/src/commands/re-export-summary.d.ts +0 -28
- package/dist/src/commands/re-export-summary.js +0 -36
- package/dist/src/commands/re-export.d.ts +0 -8
- package/dist/src/commands/rebase/abort.d.ts +0 -7
- package/dist/src/commands/rebase/abort.js +0 -67
- package/dist/src/commands/rebase/confirm.d.ts +0 -42
- package/dist/src/commands/rebase/confirm.js +0 -36
- package/dist/src/commands/rebase/conflict-summary.d.ts +0 -12
- package/dist/src/commands/rebase/conflict-summary.js +0 -37
- package/dist/src/commands/rebase/continue.d.ts +0 -7
- package/dist/src/commands/rebase/continue.js +0 -119
- package/dist/src/commands/rebase/index.d.ts +0 -22
- package/dist/src/commands/rebase/index.js +0 -209
- package/dist/src/commands/rebase/patch-loop.d.ts +0 -15
- package/dist/src/commands/rebase/patch-loop.js +0 -289
- package/dist/src/commands/rebase/summary.d.ts +0 -8
- package/dist/src/commands/rebase/summary.js +0 -47
- package/dist/src/commands/register.d.ts +0 -13
- package/dist/src/commands/reset.d.ts +0 -11
- package/dist/src/commands/resolve.d.ts +0 -36
- package/dist/src/commands/run.d.ts +0 -10
- package/dist/src/commands/setup-support.d.ts +0 -35
- package/dist/src/commands/setup-support.js +0 -386
- package/dist/src/commands/setup.d.ts +0 -11
- package/dist/src/commands/source.d.ts +0 -9
- package/dist/src/commands/source.js +0 -120
- package/dist/src/commands/status-check.d.ts +0 -87
- package/dist/src/commands/status-check.js +0 -161
- package/dist/src/commands/status-json.d.ts +0 -45
- package/dist/src/commands/status-json.js +0 -97
- package/dist/src/commands/status-output.d.ts +0 -23
- package/dist/src/commands/status-output.js +0 -231
- package/dist/src/commands/status-ownership.d.ts +0 -54
- package/dist/src/commands/status-ownership.js +0 -59
- package/dist/src/commands/status-scope.d.ts +0 -37
- package/dist/src/commands/status-scope.js +0 -54
- package/dist/src/commands/status.d.ts +0 -11
- package/dist/src/commands/test-appdir.d.ts +0 -6
- package/dist/src/commands/test-appdir.js +0 -29
- package/dist/src/commands/test-browser-preflight.d.ts +0 -28
- package/dist/src/commands/test-browser-preflight.js +0 -197
- package/dist/src/commands/test-build-furnace.d.ts +0 -21
- package/dist/src/commands/test-build-furnace.js +0 -53
- package/dist/src/commands/test-build-phase.d.ts +0 -29
- package/dist/src/commands/test-build-phase.js +0 -290
- package/dist/src/commands/test-checkjs.d.ts +0 -3
- package/dist/src/commands/test-checkjs.js +0 -35
- package/dist/src/commands/test-control-restore.d.ts +0 -40
- package/dist/src/commands/test-control-restore.js +0 -86
- package/dist/src/commands/test-diagnose.d.ts +0 -23
- package/dist/src/commands/test-diagnose.js +0 -317
- package/dist/src/commands/test-dispatch.d.ts +0 -39
- package/dist/src/commands/test-dispatch.js +0 -281
- package/dist/src/commands/test-furnace-reach.d.ts +0 -37
- package/dist/src/commands/test-furnace-reach.js +0 -132
- package/dist/src/commands/test-harness-env.d.ts +0 -23
- package/dist/src/commands/test-harness-env.js +0 -81
- package/dist/src/commands/test-harness-teardown.d.ts +0 -62
- package/dist/src/commands/test-harness-teardown.js +0 -128
- package/dist/src/commands/test-modes.d.ts +0 -57
- package/dist/src/commands/test-modes.js +0 -158
- package/dist/src/commands/test-multi-verdict.d.ts +0 -61
- package/dist/src/commands/test-multi-verdict.js +0 -112
- package/dist/src/commands/test-orchestrate.d.ts +0 -63
- package/dist/src/commands/test-orchestrate.js +0 -274
- package/dist/src/commands/test-perf-scope.d.ts +0 -50
- package/dist/src/commands/test-perf-scope.js +0 -138
- package/dist/src/commands/test-prelock.d.ts +0 -61
- package/dist/src/commands/test-prelock.js +0 -301
- package/dist/src/commands/test-register.d.ts +0 -4
- package/dist/src/commands/test-register.js +0 -181
- package/dist/src/commands/test-results.d.ts +0 -71
- package/dist/src/commands/test-results.js +0 -79
- package/dist/src/commands/test-run.d.ts +0 -89
- package/dist/src/commands/test-run.js +0 -251
- package/dist/src/commands/test-shards.d.ts +0 -114
- package/dist/src/commands/test-shards.js +0 -272
- package/dist/src/commands/test-stale-gate.d.ts +0 -52
- package/dist/src/commands/test-stale-gate.js +0 -165
- package/dist/src/commands/test-verdict.d.ts +0 -92
- package/dist/src/commands/test-verdict.js +0 -162
- package/dist/src/commands/test.d.ts +0 -22
- package/dist/src/commands/token-coverage.d.ts +0 -5
- package/dist/src/commands/token-coverage.js +0 -170
- package/dist/src/commands/token-lint.d.ts +0 -14
- package/dist/src/commands/token-lint.js +0 -151
- package/dist/src/commands/token-list.d.ts +0 -26
- package/dist/src/commands/token-list.js +0 -153
- package/dist/src/commands/token.d.ts +0 -14
- package/dist/src/commands/tree.d.ts +0 -19
- package/dist/src/commands/tree.js +0 -341
- package/dist/src/commands/typecheck.d.ts +0 -56
- package/dist/src/commands/verify-scope.d.ts +0 -28
- package/dist/src/commands/verify-scope.js +0 -67
- package/dist/src/commands/verify.d.ts +0 -58
- package/dist/src/commands/watch.d.ts +0 -9
- package/dist/src/commands/wire.d.ts +0 -13
- package/dist/src/core/ast-utils.d.ts +0 -73
- package/dist/src/core/ast-utils.js +0 -105
- package/dist/src/core/brand-validation.d.ts +0 -7
- package/dist/src/core/brand-validation.js +0 -14
- package/dist/src/core/branding.d.ts +0 -86
- package/dist/src/core/branding.js +0 -371
- package/dist/src/core/browser-wire.d.ts +0 -48
- package/dist/src/core/browser-wire.js +0 -133
- package/dist/src/core/build-audit-platform.d.ts +0 -67
- package/dist/src/core/build-audit-platform.js +0 -373
- package/dist/src/core/build-audit-registration.d.ts +0 -80
- package/dist/src/core/build-audit-registration.js +0 -181
- package/dist/src/core/build-audit-resolve.d.ts +0 -78
- package/dist/src/core/build-audit-resolve.js +0 -240
- package/dist/src/core/build-audit-skip.d.ts +0 -57
- package/dist/src/core/build-audit-skip.js +0 -112
- package/dist/src/core/build-audit-transforms.d.ts +0 -23
- package/dist/src/core/build-audit-transforms.js +0 -92
- package/dist/src/core/build-audit.d.ts +0 -93
- package/dist/src/core/build-audit.js +0 -633
- package/dist/src/core/build-baseline-types.d.ts +0 -225
- package/dist/src/core/build-baseline-types.js +0 -10
- package/dist/src/core/build-baseline-validate.d.ts +0 -32
- package/dist/src/core/build-baseline-validate.js +0 -173
- package/dist/src/core/build-baseline.d.ts +0 -103
- package/dist/src/core/build-baseline.js +0 -261
- package/dist/src/core/build-jar-escalation.d.ts +0 -61
- package/dist/src/core/build-jar-escalation.js +0 -125
- package/dist/src/core/build-overwrite-guard.d.ts +0 -92
- package/dist/src/core/build-overwrite-guard.js +0 -235
- package/dist/src/core/build-prepare.d.ts +0 -83
- package/dist/src/core/build-prepare.js +0 -414
- package/dist/src/core/build-run-record.d.ts +0 -74
- package/dist/src/core/build-run-record.js +0 -136
- package/dist/src/core/checkjs-support-heads.d.ts +0 -41
- package/dist/src/core/checkjs-support-heads.js +0 -104
- package/dist/src/core/component-source-guard.d.ts +0 -20
- package/dist/src/core/component-source-guard.js +0 -68
- package/dist/src/core/config-mutate.d.ts +0 -16
- package/dist/src/core/config-mutate.js +0 -76
- package/dist/src/core/config-paths.d.ts +0 -16
- package/dist/src/core/config-paths.js +0 -106
- package/dist/src/core/config-state.d.ts +0 -16
- package/dist/src/core/config-state.js +0 -141
- package/dist/src/core/config-validate-build-audit.d.ts +0 -8
- package/dist/src/core/config-validate-build-audit.js +0 -80
- package/dist/src/core/config-validate-check.d.ts +0 -8
- package/dist/src/core/config-validate-check.js +0 -219
- package/dist/src/core/config-validate-file-size.d.ts +0 -15
- package/dist/src/core/config-validate-file-size.js +0 -154
- package/dist/src/core/config-validate-history.d.ts +0 -11
- package/dist/src/core/config-validate-history.js +0 -38
- package/dist/src/core/config-validate-patch-policy.d.ts +0 -7
- package/dist/src/core/config-validate-patch-policy.js +0 -274
- package/dist/src/core/config-validate-test-toolchains.d.ts +0 -8
- package/dist/src/core/config-validate-test-toolchains.js +0 -133
- package/dist/src/core/config-validate-token-scales.d.ts +0 -9
- package/dist/src/core/config-validate-token-scales.js +0 -92
- package/dist/src/core/config-validate.d.ts +0 -11
- package/dist/src/core/config-validate.js +0 -503
- package/dist/src/core/config.d.ts +0 -92
- package/dist/src/core/config.js +0 -169
- package/dist/src/core/coverage-dispatch.d.ts +0 -24
- package/dist/src/core/coverage-dispatch.js +0 -44
- package/dist/src/core/coverage-extend.d.ts +0 -89
- package/dist/src/core/coverage-extend.js +0 -239
- package/dist/src/core/coverage-records.d.ts +0 -107
- package/dist/src/core/coverage-records.js +0 -383
- package/dist/src/core/destructive.d.ts +0 -144
- package/dist/src/core/destructive.js +0 -182
- package/dist/src/core/diff-hunks.d.ts +0 -73
- package/dist/src/core/diff-hunks.js +0 -286
- package/dist/src/core/discard-baseline.d.ts +0 -60
- package/dist/src/core/discard-baseline.js +0 -247
- package/dist/src/core/display-state.d.ts +0 -50
- package/dist/src/core/display-state.js +0 -87
- package/dist/src/core/engine-changes.d.ts +0 -40
- package/dist/src/core/engine-changes.js +0 -95
- package/dist/src/core/engine-precondition.d.ts +0 -42
- package/dist/src/core/engine-precondition.js +0 -60
- package/dist/src/core/engine-session-lock.d.ts +0 -119
- package/dist/src/core/engine-session-lock.js +0 -374
- package/dist/src/core/engine-write-boundary.d.ts +0 -5
- package/dist/src/core/engine-write-boundary.js +0 -41
- package/dist/src/core/export-moved-code-shape.d.ts +0 -98
- package/dist/src/core/export-moved-code-shape.js +0 -220
- package/dist/src/core/file-lock-owner.d.ts +0 -103
- package/dist/src/core/file-lock-owner.js +0 -259
- package/dist/src/core/file-lock-queue.d.ts +0 -67
- package/dist/src/core/file-lock-queue.js +0 -219
- package/dist/src/core/file-lock-shared.d.ts +0 -57
- package/dist/src/core/file-lock-shared.js +0 -117
- package/dist/src/core/file-lock.d.ts +0 -143
- package/dist/src/core/file-lock.js +0 -531
- package/dist/src/core/firefox-archive.d.ts +0 -45
- package/dist/src/core/firefox-archive.js +0 -96
- package/dist/src/core/firefox-cache.d.ts +0 -30
- package/dist/src/core/firefox-cache.js +0 -248
- package/dist/src/core/firefox-download.d.ts +0 -30
- package/dist/src/core/firefox-download.js +0 -152
- package/dist/src/core/firefox-extract.d.ts +0 -42
- package/dist/src/core/firefox-extract.js +0 -248
- package/dist/src/core/firefox-ignorefile.d.ts +0 -17
- package/dist/src/core/firefox-ignorefile.js +0 -30
- package/dist/src/core/firefox.d.ts +0 -66
- package/dist/src/core/firefox.js +0 -121
- package/dist/src/core/forward-registrations.d.ts +0 -33
- package/dist/src/core/forward-registrations.js +0 -16
- package/dist/src/core/furnace-apply-dry-run.d.ts +0 -12
- package/dist/src/core/furnace-apply-dry-run.js +0 -99
- package/dist/src/core/furnace-apply-ftl.d.ts +0 -49
- package/dist/src/core/furnace-apply-ftl.js +0 -210
- package/dist/src/core/furnace-apply-helpers.d.ts +0 -106
- package/dist/src/core/furnace-apply-helpers.js +0 -436
- package/dist/src/core/furnace-apply-output.d.ts +0 -36
- package/dist/src/core/furnace-apply-output.js +0 -111
- package/dist/src/core/furnace-apply-overwrite-warn.d.ts +0 -62
- package/dist/src/core/furnace-apply-overwrite-warn.js +0 -124
- package/dist/src/core/furnace-apply-undeploy-actions.d.ts +0 -10
- package/dist/src/core/furnace-apply-undeploy-actions.js +0 -48
- package/dist/src/core/furnace-apply.d.ts +0 -49
- package/dist/src/core/furnace-apply.js +0 -465
- package/dist/src/core/furnace-checksum-utils.d.ts +0 -25
- package/dist/src/core/furnace-checksum-utils.js +0 -54
- package/dist/src/core/furnace-composed-source.d.ts +0 -76
- package/dist/src/core/furnace-composed-source.js +0 -167
- package/dist/src/core/furnace-config-array-utils.d.ts +0 -11
- package/dist/src/core/furnace-config-array-utils.js +0 -26
- package/dist/src/core/furnace-config-custom.d.ts +0 -15
- package/dist/src/core/furnace-config-custom.js +0 -73
- package/dist/src/core/furnace-config-order.d.ts +0 -8
- package/dist/src/core/furnace-config-order.js +0 -90
- package/dist/src/core/furnace-config-tokens.d.ts +0 -17
- package/dist/src/core/furnace-config-tokens.js +0 -42
- package/dist/src/core/furnace-config-validate-exceptions.d.ts +0 -17
- package/dist/src/core/furnace-config-validate-exceptions.js +0 -122
- package/dist/src/core/furnace-config-validate.d.ts +0 -32
- package/dist/src/core/furnace-config-validate.js +0 -146
- package/dist/src/core/furnace-config.d.ts +0 -139
- package/dist/src/core/furnace-config.js +0 -511
- package/dist/src/core/furnace-constants.d.ts +0 -79
- package/dist/src/core/furnace-constants.js +0 -123
- package/dist/src/core/furnace-css-fragments.d.ts +0 -96
- package/dist/src/core/furnace-css-fragments.js +0 -279
- package/dist/src/core/furnace-dir-entry.d.ts +0 -20
- package/dist/src/core/furnace-dir-entry.js +0 -21
- package/dist/src/core/furnace-fragment-includers.d.ts +0 -56
- package/dist/src/core/furnace-fragment-includers.js +0 -122
- package/dist/src/core/furnace-graph-utils.d.ts +0 -11
- package/dist/src/core/furnace-graph-utils.js +0 -93
- package/dist/src/core/furnace-jsconfig.d.ts +0 -61
- package/dist/src/core/furnace-jsconfig.js +0 -208
- package/dist/src/core/furnace-marker.d.ts +0 -15
- package/dist/src/core/furnace-marker.js +0 -21
- package/dist/src/core/furnace-operation.d.ts +0 -195
- package/dist/src/core/furnace-operation.js +0 -444
- package/dist/src/core/furnace-precondition.d.ts +0 -61
- package/dist/src/core/furnace-precondition.js +0 -67
- package/dist/src/core/furnace-refresh.d.ts +0 -28
- package/dist/src/core/furnace-refresh.js +0 -125
- package/dist/src/core/furnace-registration-ast.d.ts +0 -53
- package/dist/src/core/furnace-registration-ast.js +0 -402
- package/dist/src/core/furnace-registration-jar-inplace.d.ts +0 -12
- package/dist/src/core/furnace-registration-jar-inplace.js +0 -79
- package/dist/src/core/furnace-registration-remove.d.ts +0 -56
- package/dist/src/core/furnace-registration-remove.js +0 -260
- package/dist/src/core/furnace-registration-rename.d.ts +0 -26
- package/dist/src/core/furnace-registration-rename.js +0 -77
- package/dist/src/core/furnace-registration-validate.d.ts +0 -53
- package/dist/src/core/furnace-registration-validate.js +0 -110
- package/dist/src/core/furnace-registration.d.ts +0 -112
- package/dist/src/core/furnace-registration.js +0 -348
- package/dist/src/core/furnace-rollback.d.ts +0 -48
- package/dist/src/core/furnace-rollback.js +0 -170
- package/dist/src/core/furnace-scanner.d.ts +0 -47
- package/dist/src/core/furnace-scanner.js +0 -236
- package/dist/src/core/furnace-stale-export.d.ts +0 -60
- package/dist/src/core/furnace-stale-export.js +0 -125
- package/dist/src/core/furnace-staleness.d.ts +0 -24
- package/dist/src/core/furnace-staleness.js +0 -67
- package/dist/src/core/furnace-state-persist.d.ts +0 -68
- package/dist/src/core/furnace-state-persist.js +0 -116
- package/dist/src/core/furnace-step-errors.d.ts +0 -23
- package/dist/src/core/furnace-step-errors.js +0 -25
- package/dist/src/core/furnace-stories.d.ts +0 -37
- package/dist/src/core/furnace-stories.js +0 -186
- package/dist/src/core/furnace-validate-accessibility.d.ts +0 -39
- package/dist/src/core/furnace-validate-accessibility.js +0 -417
- package/dist/src/core/furnace-validate-checks.d.ts +0 -4
- package/dist/src/core/furnace-validate-checks.js +0 -6
- package/dist/src/core/furnace-validate-compatibility.d.ts +0 -6
- package/dist/src/core/furnace-validate-compatibility.js +0 -295
- package/dist/src/core/furnace-validate-exceptions.d.ts +0 -49
- package/dist/src/core/furnace-validate-exceptions.js +0 -98
- package/dist/src/core/furnace-validate-helpers.d.ts +0 -7
- package/dist/src/core/furnace-validate-helpers.js +0 -4
- package/dist/src/core/furnace-validate-icon-button.d.ts +0 -7
- package/dist/src/core/furnace-validate-icon-button.js +0 -78
- package/dist/src/core/furnace-validate-registration.d.ts +0 -67
- package/dist/src/core/furnace-validate-registration.js +0 -487
- package/dist/src/core/furnace-validate-structure.d.ts +0 -22
- package/dist/src/core/furnace-validate-structure.js +0 -122
- package/dist/src/core/furnace-validate.d.ts +0 -41
- package/dist/src/core/furnace-validate.js +0 -302
- package/dist/src/core/furnace-version-drift.d.ts +0 -57
- package/dist/src/core/furnace-version-drift.js +0 -102
- package/dist/src/core/gecko-dom-types.d.ts +0 -2
- package/dist/src/core/gecko-dom-types.js +0 -17
- package/dist/src/core/git-base.d.ts +0 -101
- package/dist/src/core/git-base.js +0 -162
- package/dist/src/core/git-diff-new-file.d.ts +0 -40
- package/dist/src/core/git-diff-new-file.js +0 -118
- package/dist/src/core/git-diff.d.ts +0 -82
- package/dist/src/core/git-diff.js +0 -539
- package/dist/src/core/git-file-ops.d.ts +0 -108
- package/dist/src/core/git-file-ops.js +0 -280
- package/dist/src/core/git-readonly-index.d.ts +0 -91
- package/dist/src/core/git-readonly-index.js +0 -177
- package/dist/src/core/git-status.d.ts +0 -84
- package/dist/src/core/git-status.js +0 -208
- package/dist/src/core/git.d.ts +0 -114
- package/dist/src/core/git.js +0 -540
- package/dist/src/core/harness-helper-pids.d.ts +0 -98
- package/dist/src/core/harness-helper-pids.js +0 -240
- package/dist/src/core/harness-orphans.d.ts +0 -118
- package/dist/src/core/harness-orphans.js +0 -268
- package/dist/src/core/harness-port-fallback.d.ts +0 -60
- package/dist/src/core/harness-port-fallback.js +0 -96
- package/dist/src/core/harness-port-reservation.d.ts +0 -60
- package/dist/src/core/harness-port-reservation.js +0 -122
- package/dist/src/core/history-log-file.d.ts +0 -61
- package/dist/src/core/history-log-file.js +0 -164
- package/dist/src/core/history-log.d.ts +0 -20
- package/dist/src/core/history-log.js +0 -30
- package/dist/src/core/json-preserving-edit.d.ts +0 -22
- package/dist/src/core/json-preserving-edit.js +0 -199
- package/dist/src/core/launchable-build.d.ts +0 -39
- package/dist/src/core/launchable-build.js +0 -85
- package/dist/src/core/license-headers.d.ts +0 -103
- package/dist/src/core/license-headers.js +0 -318
- package/dist/src/core/line-prefixer.d.ts +0 -18
- package/dist/src/core/line-prefixer.js +0 -34
- package/dist/src/core/lit-template-regions.d.ts +0 -4
- package/dist/src/core/lit-template-regions.js +0 -50
- package/dist/src/core/mach-build-artifacts.d.ts +0 -176
- package/dist/src/core/mach-build-artifacts.js +0 -436
- package/dist/src/core/mach-error-hints.d.ts +0 -24
- package/dist/src/core/mach-error-hints.js +0 -135
- package/dist/src/core/mach-known-noise-filter.d.ts +0 -122
- package/dist/src/core/mach-known-noise-filter.js +0 -257
- package/dist/src/core/mach-mozconfig.d.ts +0 -57
- package/dist/src/core/mach-mozconfig.js +0 -166
- package/dist/src/core/mach-python.d.ts +0 -19
- package/dist/src/core/mach-python.js +0 -131
- package/dist/src/core/mach-resource-shim.d.ts +0 -107
- package/dist/src/core/mach-resource-shim.js +0 -640
- package/dist/src/core/mach.d.ts +0 -284
- package/dist/src/core/mach.js +0 -445
- package/dist/src/core/marionette-port.d.ts +0 -153
- package/dist/src/core/marionette-port.js +0 -474
- package/dist/src/core/marionette-preflight.d.ts +0 -58
- package/dist/src/core/marionette-preflight.js +0 -332
- package/dist/src/core/markdown-table.d.ts +0 -104
- package/dist/src/core/markdown-table.js +0 -265
- package/dist/src/core/mochitest-server-port.d.ts +0 -81
- package/dist/src/core/mochitest-server-port.js +0 -175
- package/dist/src/core/module-resolution-preflight.d.ts +0 -65
- package/dist/src/core/module-resolution-preflight.js +0 -171
- package/dist/src/core/moz-manifest-helpers.d.ts +0 -79
- package/dist/src/core/moz-manifest-helpers.js +0 -163
- package/dist/src/core/moz-manifest-register.d.ts +0 -19
- package/dist/src/core/moz-manifest-register.js +0 -51
- package/dist/src/core/moz-manifest-rules.d.ts +0 -58
- package/dist/src/core/moz-manifest-rules.js +0 -264
- package/dist/src/core/moz-manifest-tokenizers.d.ts +0 -38
- package/dist/src/core/moz-manifest-tokenizers.js +0 -108
- package/dist/src/core/negative-control-compiled.d.ts +0 -46
- package/dist/src/core/negative-control-compiled.js +0 -109
- package/dist/src/core/negative-control-diff.d.ts +0 -51
- package/dist/src/core/negative-control-diff.js +0 -204
- package/dist/src/core/negative-control.d.ts +0 -150
- package/dist/src/core/negative-control.js +0 -399
- package/dist/src/core/objdir-install-manifests.d.ts +0 -73
- package/dist/src/core/objdir-install-manifests.js +0 -226
- package/dist/src/core/objdir-maintenance.d.ts +0 -10
- package/dist/src/core/objdir-maintenance.js +0 -167
- package/dist/src/core/ownership-table.d.ts +0 -53
- package/dist/src/core/ownership-table.js +0 -159
- package/dist/src/core/parent-exit-watchdog.d.ts +0 -62
- package/dist/src/core/parent-exit-watchdog.js +0 -69
- package/dist/src/core/park-store.d.ts +0 -63
- package/dist/src/core/park-store.js +0 -216
- package/dist/src/core/parser-fallback.d.ts +0 -50
- package/dist/src/core/parser-fallback.js +0 -61
- package/dist/src/core/patch-apply-fuzz.d.ts +0 -57
- package/dist/src/core/patch-apply-fuzz.js +0 -125
- package/dist/src/core/patch-apply.d.ts +0 -88
- package/dist/src/core/patch-apply.js +0 -435
- package/dist/src/core/patch-export-coverage.d.ts +0 -49
- package/dist/src/core/patch-export-coverage.js +0 -73
- package/dist/src/core/patch-export-metadata.d.ts +0 -46
- package/dist/src/core/patch-export-metadata.js +0 -47
- package/dist/src/core/patch-export-update.d.ts +0 -55
- package/dist/src/core/patch-export-update.js +0 -95
- package/dist/src/core/patch-export.d.ts +0 -175
- package/dist/src/core/patch-export.js +0 -312
- package/dist/src/core/patch-files.d.ts +0 -17
- package/dist/src/core/patch-files.js +0 -59
- package/dist/src/core/patch-identifier-suggest.d.ts +0 -26
- package/dist/src/core/patch-identifier-suggest.js +0 -135
- package/dist/src/core/patch-lint-binary.d.ts +0 -45
- package/dist/src/core/patch-lint-binary.js +0 -39
- package/dist/src/core/patch-lint-cache.d.ts +0 -78
- package/dist/src/core/patch-lint-cache.js +0 -233
- package/dist/src/core/patch-lint-checkjs-any-import.d.ts +0 -39
- package/dist/src/core/patch-lint-checkjs-any-import.js +0 -63
- package/dist/src/core/patch-lint-checkjs-cache.d.ts +0 -18
- package/dist/src/core/patch-lint-checkjs-cache.js +0 -45
- package/dist/src/core/patch-lint-checkjs-diagnostics.d.ts +0 -17
- package/dist/src/core/patch-lint-checkjs-diagnostics.js +0 -32
- package/dist/src/core/patch-lint-checkjs.d.ts +0 -180
- package/dist/src/core/patch-lint-checkjs.js +0 -611
- package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +0 -43
- package/dist/src/core/patch-lint-chrome-jsdoc.js +0 -90
- package/dist/src/core/patch-lint-code-lines.d.ts +0 -59
- package/dist/src/core/patch-lint-code-lines.js +0 -105
- package/dist/src/core/patch-lint-creators.d.ts +0 -26
- package/dist/src/core/patch-lint-creators.js +0 -45
- package/dist/src/core/patch-lint-cross.d.ts +0 -232
- package/dist/src/core/patch-lint-cross.js +0 -590
- package/dist/src/core/patch-lint-css.d.ts +0 -27
- package/dist/src/core/patch-lint-css.js +0 -228
- package/dist/src/core/patch-lint-diff-tag.d.ts +0 -51
- package/dist/src/core/patch-lint-diff-tag.js +0 -105
- package/dist/src/core/patch-lint-diff.d.ts +0 -42
- package/dist/src/core/patch-lint-diff.js +0 -100
- package/dist/src/core/patch-lint-file-size.d.ts +0 -57
- package/dist/src/core/patch-lint-file-size.js +0 -62
- package/dist/src/core/patch-lint-forward-registration-extended.d.ts +0 -61
- package/dist/src/core/patch-lint-forward-registration-extended.js +0 -265
- package/dist/src/core/patch-lint-forward-registration.d.ts +0 -71
- package/dist/src/core/patch-lint-forward-registration.js +0 -266
- package/dist/src/core/patch-lint-ignore.d.ts +0 -196
- package/dist/src/core/patch-lint-ignore.js +0 -429
- package/dist/src/core/patch-lint-imports.d.ts +0 -5
- package/dist/src/core/patch-lint-imports.js +0 -67
- package/dist/src/core/patch-lint-jsdoc.d.ts +0 -67
- package/dist/src/core/patch-lint-jsdoc.js +0 -471
- package/dist/src/core/patch-lint-module-registration.d.ts +0 -22
- package/dist/src/core/patch-lint-module-registration.js +0 -97
- package/dist/src/core/patch-lint-mozbuild.d.ts +0 -18
- package/dist/src/core/patch-lint-mozbuild.js +0 -192
- package/dist/src/core/patch-lint-observer.d.ts +0 -37
- package/dist/src/core/patch-lint-observer.js +0 -167
- package/dist/src/core/patch-lint-ownership.d.ts +0 -74
- package/dist/src/core/patch-lint-ownership.js +0 -125
- package/dist/src/core/patch-lint-prettier.d.ts +0 -34
- package/dist/src/core/patch-lint-prettier.js +0 -124
- package/dist/src/core/patch-lint-projection.d.ts +0 -25
- package/dist/src/core/patch-lint-projection.js +0 -43
- package/dist/src/core/patch-lint-queue-types.d.ts +0 -60
- package/dist/src/core/patch-lint-queue-types.js +0 -12
- package/dist/src/core/patch-lint-size-thresholds.d.ts +0 -52
- package/dist/src/core/patch-lint-size-thresholds.js +0 -110
- package/dist/src/core/patch-lint-size.d.ts +0 -117
- package/dist/src/core/patch-lint-size.js +0 -331
- package/dist/src/core/patch-lint-staged-registration.d.ts +0 -78
- package/dist/src/core/patch-lint-staged-registration.js +0 -110
- package/dist/src/core/patch-lint-token-scale.d.ts +0 -57
- package/dist/src/core/patch-lint-token-scale.js +0 -286
- package/dist/src/core/patch-lint-unmanaged-companion.d.ts +0 -106
- package/dist/src/core/patch-lint-unmanaged-companion.js +0 -214
- package/dist/src/core/patch-lint.d.ts +0 -191
- package/dist/src/core/patch-lint.js +0 -529
- package/dist/src/core/patch-lock.d.ts +0 -40
- package/dist/src/core/patch-lock.js +0 -129
- package/dist/src/core/patch-manifest-consistency.d.ts +0 -95
- package/dist/src/core/patch-manifest-consistency.js +0 -256
- package/dist/src/core/patch-manifest-files-affected.d.ts +0 -43
- package/dist/src/core/patch-manifest-files-affected.js +0 -77
- package/dist/src/core/patch-manifest-io.d.ts +0 -199
- package/dist/src/core/patch-manifest-io.js +0 -556
- package/dist/src/core/patch-manifest-key-order.d.ts +0 -23
- package/dist/src/core/patch-manifest-key-order.js +0 -60
- package/dist/src/core/patch-manifest-query.d.ts +0 -55
- package/dist/src/core/patch-manifest-query.js +0 -139
- package/dist/src/core/patch-manifest-resolve.d.ts +0 -21
- package/dist/src/core/patch-manifest-resolve.js +0 -35
- package/dist/src/core/patch-manifest-stage.d.ts +0 -46
- package/dist/src/core/patch-manifest-stage.js +0 -96
- package/dist/src/core/patch-manifest-validate.d.ts +0 -20
- package/dist/src/core/patch-manifest-validate.js +0 -240
- package/dist/src/core/patch-manifest.d.ts +0 -12
- package/dist/src/core/patch-manifest.js +0 -13
- package/dist/src/core/patch-order-legal.d.ts +0 -26
- package/dist/src/core/patch-order-legal.js +0 -88
- package/dist/src/core/patch-parse.d.ts +0 -161
- package/dist/src/core/patch-parse.js +0 -347
- package/dist/src/core/patch-policy-content.d.ts +0 -40
- package/dist/src/core/patch-policy-content.js +0 -216
- package/dist/src/core/patch-policy.d.ts +0 -80
- package/dist/src/core/patch-policy.js +0 -394
- package/dist/src/core/patch-registration-refs.d.ts +0 -41
- package/dist/src/core/patch-registration-refs.js +0 -107
- package/dist/src/core/patch-retired.d.ts +0 -57
- package/dist/src/core/patch-retired.js +0 -92
- package/dist/src/core/patch-source-metadata.d.ts +0 -6
- package/dist/src/core/patch-source-metadata.js +0 -12
- package/dist/src/core/patch-subset.d.ts +0 -18
- package/dist/src/core/patch-subset.js +0 -67
- package/dist/src/core/patch-transform.d.ts +0 -61
- package/dist/src/core/patch-transform.js +0 -198
- package/dist/src/core/preflight-wait.d.ts +0 -22
- package/dist/src/core/preflight-wait.js +0 -62
- package/dist/src/core/process-cpu-time.d.ts +0 -12
- package/dist/src/core/process-cpu-time.js +0 -52
- package/dist/src/core/process-owner.d.ts +0 -9
- package/dist/src/core/process-owner.js +0 -43
- package/dist/src/core/rebase-dry-run.d.ts +0 -48
- package/dist/src/core/rebase-dry-run.js +0 -105
- package/dist/src/core/rebase-from-version.d.ts +0 -46
- package/dist/src/core/rebase-from-version.js +0 -71
- package/dist/src/core/rebase-session.d.ts +0 -100
- package/dist/src/core/rebase-session.js +0 -174
- package/dist/src/core/register-browser-content.d.ts +0 -11
- package/dist/src/core/register-browser-content.js +0 -52
- package/dist/src/core/register-browser-test.d.ts +0 -18
- package/dist/src/core/register-browser-test.js +0 -66
- package/dist/src/core/register-module.d.ts +0 -11
- package/dist/src/core/register-module.js +0 -56
- package/dist/src/core/register-result.d.ts +0 -30
- package/dist/src/core/register-result.js +0 -8
- package/dist/src/core/register-scaffold.d.ts +0 -55
- package/dist/src/core/register-scaffold.js +0 -146
- package/dist/src/core/register-shared-css.d.ts +0 -36
- package/dist/src/core/register-shared-css.js +0 -112
- package/dist/src/core/register-xpcshell-test.d.ts +0 -50
- package/dist/src/core/register-xpcshell-test.js +0 -143
- package/dist/src/core/run-log-redact.d.ts +0 -38
- package/dist/src/core/run-log-redact.js +0 -69
- package/dist/src/core/run-log.d.ts +0 -97
- package/dist/src/core/run-log.js +0 -334
- package/dist/src/core/run-profile.d.ts +0 -57
- package/dist/src/core/run-profile.js +0 -137
- package/dist/src/core/shared-ftl.d.ts +0 -28
- package/dist/src/core/shared-ftl.js +0 -49
- package/dist/src/core/signal-critical.d.ts +0 -38
- package/dist/src/core/signal-critical.js +0 -62
- package/dist/src/core/smoke-patterns.d.ts +0 -81
- package/dist/src/core/smoke-patterns.js +0 -176
- package/dist/src/core/state-file.d.ts +0 -60
- package/dist/src/core/state-file.js +0 -71
- package/dist/src/core/status-binary.d.ts +0 -62
- package/dist/src/core/status-binary.js +0 -133
- package/dist/src/core/status-classify.d.ts +0 -96
- package/dist/src/core/status-classify.js +0 -244
- package/dist/src/core/test-changed-prefs.d.ts +0 -30
- package/dist/src/core/test-changed-prefs.js +0 -93
- package/dist/src/core/test-harness-crash.d.ts +0 -251
- package/dist/src/core/test-harness-crash.js +0 -780
- package/dist/src/core/test-harness-infra.d.ts +0 -32
- package/dist/src/core/test-harness-infra.js +0 -69
- package/dist/src/core/test-harness-output.d.ts +0 -45
- package/dist/src/core/test-harness-output.js +0 -119
- package/dist/src/core/test-harness-signature.d.ts +0 -57
- package/dist/src/core/test-harness-signature.js +0 -35
- package/dist/src/core/test-harness-verdict-notes.d.ts +0 -54
- package/dist/src/core/test-harness-verdict-notes.js +0 -48
- package/dist/src/core/test-host-state.d.ts +0 -14
- package/dist/src/core/test-host-state.js +0 -80
- package/dist/src/core/test-path-scope.d.ts +0 -59
- package/dist/src/core/test-path-scope.js +0 -147
- package/dist/src/core/test-profile-files.d.ts +0 -17
- package/dist/src/core/test-profile-files.js +0 -75
- package/dist/src/core/test-raw-log.d.ts +0 -66
- package/dist/src/core/test-raw-log.js +0 -122
- package/dist/src/core/test-run-completeness.d.ts +0 -97
- package/dist/src/core/test-run-completeness.js +0 -191
- package/dist/src/core/test-stale-check.d.ts +0 -213
- package/dist/src/core/test-stale-check.js +0 -396
- package/dist/src/core/test-stale-exempt.d.ts +0 -40
- package/dist/src/core/test-stale-exempt.js +0 -70
- package/dist/src/core/test-stale-symlink.d.ts +0 -12
- package/dist/src/core/test-stale-symlink.js +0 -39
- package/dist/src/core/test-stall-triage.d.ts +0 -51
- package/dist/src/core/test-stall-triage.js +0 -142
- package/dist/src/core/test-xpcshell-retry.d.ts +0 -35
- package/dist/src/core/test-xpcshell-retry.js +0 -31
- package/dist/src/core/token-category.d.ts +0 -54
- package/dist/src/core/token-category.js +0 -299
- package/dist/src/core/token-coverage.d.ts +0 -12
- package/dist/src/core/token-coverage.js +0 -96
- package/dist/src/core/token-dark-mode.d.ts +0 -64
- package/dist/src/core/token-dark-mode.js +0 -186
- package/dist/src/core/token-docs.d.ts +0 -34
- package/dist/src/core/token-docs.js +0 -102
- package/dist/src/core/token-inventory.d.ts +0 -56
- package/dist/src/core/token-inventory.js +0 -114
- package/dist/src/core/token-lint.d.ts +0 -53
- package/dist/src/core/token-lint.js +0 -131
- package/dist/src/core/token-manager.d.ts +0 -87
- package/dist/src/core/token-manager.js +0 -407
- package/dist/src/core/token-scaffold.d.ts +0 -36
- package/dist/src/core/token-scaffold.js +0 -73
- package/dist/src/core/token-sibling-sheets.d.ts +0 -46
- package/dist/src/core/token-sibling-sheets.js +0 -119
- package/dist/src/core/token-variant.d.ts +0 -90
- package/dist/src/core/token-variant.js +0 -327
- package/dist/src/core/toolchain-preflight.d.ts +0 -90
- package/dist/src/core/toolchain-preflight.js +0 -251
- package/dist/src/core/tree-cow.d.ts +0 -16
- package/dist/src/core/tree-cow.js +0 -71
- package/dist/src/core/tree-guard.d.ts +0 -35
- package/dist/src/core/tree-guard.js +0 -194
- package/dist/src/core/tree-store.d.ts +0 -143
- package/dist/src/core/tree-store.js +0 -478
- package/dist/src/core/typecheck-shim.d.ts +0 -90
- package/dist/src/core/typecheck-shim.js +0 -507
- package/dist/src/core/typecheck.d.ts +0 -75
- package/dist/src/core/typecheck.js +0 -433
- package/dist/src/core/wire-destroy.d.ts +0 -25
- package/dist/src/core/wire-destroy.js +0 -126
- package/dist/src/core/wire-dom-fragment.d.ts +0 -44
- package/dist/src/core/wire-dom-fragment.js +0 -139
- package/dist/src/core/wire-init.d.ts +0 -28
- package/dist/src/core/wire-init.js +0 -219
- package/dist/src/core/wire-subscript.d.ts +0 -23
- package/dist/src/core/wire-subscript.js +0 -145
- package/dist/src/core/wire-utils.d.ts +0 -149
- package/dist/src/core/wire-utils.js +0 -338
- package/dist/src/core/xpcshell-appdir.d.ts +0 -157
- package/dist/src/core/xpcshell-appdir.js +0 -299
- package/dist/src/core/xpcshell-profile-dir.d.ts +0 -12
- package/dist/src/core/xpcshell-profile-dir.js +0 -45
- package/dist/src/errors/base.d.ts +0 -217
- package/dist/src/errors/base.js +0 -279
- package/dist/src/errors/build.d.ts +0 -92
- package/dist/src/errors/build.js +0 -166
- package/dist/src/errors/codes.d.ts +0 -74
- package/dist/src/errors/codes.js +0 -74
- package/dist/src/errors/config.d.ts +0 -17
- package/dist/src/errors/config.js +0 -39
- package/dist/src/errors/download.d.ts +0 -66
- package/dist/src/errors/download.js +0 -160
- package/dist/src/errors/furnace.d.ts +0 -20
- package/dist/src/errors/furnace.js +0 -28
- package/dist/src/errors/git.d.ts +0 -65
- package/dist/src/errors/git.js +0 -140
- package/dist/src/errors/patch.d.ts +0 -27
- package/dist/src/errors/patch.js +0 -52
- package/dist/src/errors/rebase.d.ts +0 -42
- package/dist/src/errors/rebase.js +0 -71
- package/dist/src/errors/run.d.ts +0 -16
- package/dist/src/errors/run.js +0 -22
- package/dist/src/index.d.ts +0 -42
- package/dist/src/index.js +0 -32
- package/dist/src/types/cli.d.ts +0 -14
- package/dist/src/types/commands/index.d.ts +0 -6
- package/dist/src/types/commands/index.js +0 -5
- package/dist/src/types/commands/options.d.ts +0 -1367
- package/dist/src/types/commands/options.js +0 -5
- package/dist/src/types/commands/patches.d.ts +0 -352
- package/dist/src/types/commands/patches.js +0 -5
- package/dist/src/types/commands/project.d.ts +0 -51
- package/dist/src/types/commands/project.js +0 -5
- package/dist/src/types/config.d.ts +0 -703
- package/dist/src/types/config.js +0 -15
- package/dist/src/types/furnace.d.ts +0 -415
- package/dist/src/types/furnace.js +0 -26
- package/dist/src/types/index.d.ts +0 -5
- package/dist/src/types/index.js +0 -5
- package/dist/src/types/json.d.ts +0 -22
- package/dist/src/types/json.js +0 -11
- package/dist/src/types/typecheck.d.ts +0 -51
- package/dist/src/types/typecheck.js +0 -14
- package/dist/src/utils/assert.d.ts +0 -34
- package/dist/src/utils/assert.js +0 -61
- package/dist/src/utils/build-info.d.ts +0 -30
- package/dist/src/utils/build-info.js +0 -99
- package/dist/src/utils/child-env.d.ts +0 -28
- package/dist/src/utils/child-env.js +0 -27
- package/dist/src/utils/concurrency.d.ts +0 -8
- package/dist/src/utils/concurrency.js +0 -32
- package/dist/src/utils/elapsed.d.ts +0 -2
- package/dist/src/utils/elapsed.js +0 -23
- package/dist/src/utils/errors.d.ts +0 -39
- package/dist/src/utils/errors.js +0 -67
- package/dist/src/utils/fs.d.ts +0 -113
- package/dist/src/utils/fs.js +0 -337
- package/dist/src/utils/hash.d.ts +0 -12
- package/dist/src/utils/hash.js +0 -16
- package/dist/src/utils/line-dispatch.d.ts +0 -15
- package/dist/src/utils/line-dispatch.js +0 -48
- package/dist/src/utils/logger.d.ts +0 -109
- package/dist/src/utils/logger.js +0 -270
- package/dist/src/utils/machine-output.d.ts +0 -12
- package/dist/src/utils/machine-output.js +0 -33
- package/dist/src/utils/options.d.ts +0 -155
- package/dist/src/utils/options.js +0 -312
- package/dist/src/utils/package-root.d.ts +0 -21
- package/dist/src/utils/package-root.js +0 -70
- package/dist/src/utils/parse.d.ts +0 -117
- package/dist/src/utils/parse.js +0 -214
- package/dist/src/utils/path-glob.d.ts +0 -15
- package/dist/src/utils/path-glob.js +0 -47
- package/dist/src/utils/paths.d.ts +0 -31
- package/dist/src/utils/paths.js +0 -80
- package/dist/src/utils/platform.d.ts +0 -9
- package/dist/src/utils/platform.js +0 -14
- package/dist/src/utils/process-group.d.ts +0 -42
- package/dist/src/utils/process-group.js +0 -190
- package/dist/src/utils/process-input.d.ts +0 -27
- package/dist/src/utils/process-input.js +0 -46
- package/dist/src/utils/process.d.ts +0 -293
- package/dist/src/utils/process.js +0 -593
- package/dist/src/utils/ps-duration.d.ts +0 -31
- package/dist/src/utils/ps-duration.js +0 -70
- package/dist/src/utils/regex.d.ts +0 -39
- package/dist/src/utils/regex.js +0 -109
- package/dist/src/utils/sleep.d.ts +0 -25
- package/dist/src/utils/sleep.js +0 -30
- package/dist/src/utils/stdio-drain.d.ts +0 -28
- package/dist/src/utils/stdio-drain.js +0 -54
- package/dist/src/utils/validation.d.ts +0 -182
- package/dist/src/utils/validation.js +0 -394
- package/docs/lifecycle-invariants.md +0 -523
- package/docs/run-logs.md +0 -122
- package/docs/verification-trees.md +0 -49
- /package/dist/src/{types/cli.js → cli/context.js} +0 -0
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { type CowCapability } from './tree-cow.js';
|
|
2
|
-
/** `.fireforge/tree.json`, which identifies a directory as a verification tree. */
|
|
3
|
-
export interface TreeMarker {
|
|
4
|
-
schemaVersion: 1;
|
|
5
|
-
name: string;
|
|
6
|
-
primaryRoot: string;
|
|
7
|
-
createdAt: string;
|
|
8
|
-
engineHead: string | null;
|
|
9
|
-
/** Hash of the primary engine's tracked + untracked working-tree diff. */
|
|
10
|
-
engineFingerprint?: string | null;
|
|
11
|
-
patchesFingerprint: string | null;
|
|
12
|
-
/**
|
|
13
|
-
* Name of the obj-* directory cloned into this tree, written only after
|
|
14
|
-
* its mozinfo.json was successfully rewritten to the tree's paths and the
|
|
15
|
-
* caller's in-tree reconfigure regenerated the remaining configure output.
|
|
16
|
-
* Its presence is what lets the guard admit build-less `test` in-tree
|
|
17
|
-
* (`tree-guard.ts`). Absent on trees created without `--with-objdir`.
|
|
18
|
-
*/
|
|
19
|
-
clonedObjdir?: string;
|
|
20
|
-
}
|
|
21
|
-
/** One row of `tree list`. */
|
|
22
|
-
export interface TreeListEntry {
|
|
23
|
-
name: string;
|
|
24
|
-
path: string;
|
|
25
|
-
createdAt: string;
|
|
26
|
-
staleness: 'fresh' | 'stale (engine advanced)' | 'stale (engine worktree changed)' | 'stale (patches changed)' | 'unknown';
|
|
27
|
-
}
|
|
28
|
-
/** Absolute trees directory for a primary root. */
|
|
29
|
-
export declare function getTreesDir(primaryRoot: string): string;
|
|
30
|
-
/** Serialises tree create/remove against each other (primary-side sidecar lock). */
|
|
31
|
-
export declare function withTreeLifecycleLock<T>(primaryRoot: string, operation: () => Promise<T>): Promise<T>;
|
|
32
|
-
/**
|
|
33
|
-
* Outcome of reading a tree marker.
|
|
34
|
-
*
|
|
35
|
-
* The three states must stay distinct because they carry opposite safety
|
|
36
|
-
* meanings. `absent` means "this directory is not a tree", which is what
|
|
37
|
-
* lets every mutating command run. `corrupt` means "this directory claims to
|
|
38
|
-
* be a tree but we cannot read the claim". Collapsing it into `absent` (as
|
|
39
|
-
* a bare `undefined` return does) hands a snapshot the full mutating command
|
|
40
|
-
* set on the strength of a file we failed to parse, inverting
|
|
41
|
-
* `tree-guard.ts`'s default-deny design. Deleting one field from a marker is
|
|
42
|
-
* enough to make `reset` runnable inside a clone.
|
|
43
|
-
*/
|
|
44
|
-
export type TreeMarkerRead = {
|
|
45
|
-
kind: 'absent';
|
|
46
|
-
} | {
|
|
47
|
-
kind: 'valid';
|
|
48
|
-
marker: TreeMarker;
|
|
49
|
-
} | {
|
|
50
|
-
kind: 'corrupt';
|
|
51
|
-
reason: string;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Written by a newer FireForge. Distinct from `corrupt` because the remedy
|
|
55
|
-
* is the opposite: upgrade, do not delete.
|
|
56
|
-
*/
|
|
57
|
-
| {
|
|
58
|
-
kind: 'unsupported';
|
|
59
|
-
reason: string;
|
|
60
|
-
};
|
|
61
|
-
/** Absolute path of a root's tree marker. */
|
|
62
|
-
export declare function getTreeMarkerPath(root: string): string;
|
|
63
|
-
/**
|
|
64
|
-
* Reads the tree marker for a project root, distinguishing "not a tree" from
|
|
65
|
-
* "a tree whose marker we could not read". Callers that make a safety
|
|
66
|
-
* decision (the guard hook, the no-nesting refusal) must use this rather
|
|
67
|
-
* than {@link tryReadTreeMarker}.
|
|
68
|
-
*
|
|
69
|
-
* Only ENOENT/ENOTDIR mean `absent`: any other probe failure (EACCES on the
|
|
70
|
-
* `.fireforge` directory, EIO, …) reports `corrupt`, because "we cannot read
|
|
71
|
-
* the marker" is not evidence that there is no marker: a `pathExists`
|
|
72
|
-
* pre-check classifies a tree with an unreadable `.fireforge` as `absent`
|
|
73
|
-
* and hands it the full mutating command set.
|
|
74
|
-
*/
|
|
75
|
-
/**
|
|
76
|
-
* Naming convention for state-file readers:
|
|
77
|
-
* - `readX(): Promise<XRead>` is the tri-state read: absent, corrupt, or
|
|
78
|
-
* valid.
|
|
79
|
-
* - `tryReadX(): Promise<X | undefined>` collapses absent and corrupt.
|
|
80
|
-
*/
|
|
81
|
-
export declare function readTreeMarker(root: string): Promise<TreeMarkerRead>;
|
|
82
|
-
/**
|
|
83
|
-
* Reads the tree marker for a project root, or undefined when it is absent
|
|
84
|
-
* or unreadable.
|
|
85
|
-
*
|
|
86
|
-
* For display and best-effort paths only (`tree list` renders an unreadable
|
|
87
|
-
* marker as staleness 'unknown'). Anything that decides whether a mutation may
|
|
88
|
-
* proceed must call {@link readTreeMarker} and handle `corrupt`.
|
|
89
|
-
*/
|
|
90
|
-
export declare function tryReadTreeMarker(root: string): Promise<TreeMarker | undefined>;
|
|
91
|
-
/**
|
|
92
|
-
* Refuses a build-less in-tree `test` when the objdir preflight found is not
|
|
93
|
-
* the one this tree's marker vouched for as rewritten-and-reconfigured. A
|
|
94
|
-
* mismatch means an objdir appeared in the tree through some path other than
|
|
95
|
-
* `tree create --with-objdir` (manual copy, partial restore), so nothing
|
|
96
|
-
* proves it was relocated, and running against it could consult primary paths.
|
|
97
|
-
* No-op outside a tree. A corrupt marker is already refused by the guard.
|
|
98
|
-
*/
|
|
99
|
-
export declare function assertObjdirMatchesTreeMarker(projectRoot: string, objDir: string | undefined): Promise<void>;
|
|
100
|
-
/** Current primary-side snapshot identity, including dirty source and patch bodies. */
|
|
101
|
-
export declare function computePrimaryFingerprint(primaryRoot: string): Promise<{
|
|
102
|
-
engineHead: string | null;
|
|
103
|
-
engineFingerprint?: string | null;
|
|
104
|
-
patchesFingerprint: string | null;
|
|
105
|
-
}>;
|
|
106
|
-
/** Validates a tree name: one path segment, no traversal. */
|
|
107
|
-
export declare function assertValidTreeName(name: string): void;
|
|
108
|
-
/**
|
|
109
|
-
* Materialises the tree at `treeRoot` from `primaryRoot` using `capability`
|
|
110
|
-
* ('none' = plain copy, already gated on --force-copy by the caller).
|
|
111
|
-
*
|
|
112
|
-
* The engine is cloned one top-level entry at a time so unwanted `obj-*`
|
|
113
|
-
* directories are never traversed or materialised. On a Firefox tree, even
|
|
114
|
-
* CoW-cloning and then deleting an objdir touches metadata for millions of
|
|
115
|
-
* build outputs. With `withObjdir` exactly that objdir is included (after
|
|
116
|
-
* {@link assertCloneSafeObjdir} refuses symlinked or engine-escaping objdirs
|
|
117
|
-
* before any copying), rewritten to the tree, and reconfigured in-tree via
|
|
118
|
-
* the caller-supplied `reconfigure` hook. A fresh `.fireforge/` is created
|
|
119
|
-
* with only `state.json` (when present), the last-build baseline (withObjdir
|
|
120
|
-
* only), and the tree marker.
|
|
121
|
-
*/
|
|
122
|
-
export declare function cloneTree(args: {
|
|
123
|
-
primaryRoot: string;
|
|
124
|
-
treeRoot: string;
|
|
125
|
-
name: string;
|
|
126
|
-
capability: CowCapability;
|
|
127
|
-
createdAt: string;
|
|
128
|
-
withObjdir?: {
|
|
129
|
-
objDir: string;
|
|
130
|
-
reconfigure: (treeEngineDir: string) => Promise<void>;
|
|
131
|
-
};
|
|
132
|
-
}): Promise<TreeMarker>;
|
|
133
|
-
/** Lists trees with staleness against the current primary state. */
|
|
134
|
-
export declare function listTrees(primaryRoot: string): Promise<TreeListEntry[]>;
|
|
135
|
-
/**
|
|
136
|
-
* Removes one tree. Refuses when a live process holds the tree's build
|
|
137
|
-
* or engine-session lock, or when a lock directory exists whose ownership
|
|
138
|
-
* cannot be established (which `--force` overrides). Never deletes a path
|
|
139
|
-
* outside the trees directory (containment check before `rm -rf`).
|
|
140
|
-
*/
|
|
141
|
-
export declare function removeTree(primaryRoot: string, name: string, options?: {
|
|
142
|
-
force?: boolean;
|
|
143
|
-
}): Promise<void>;
|
|
@@ -1,478 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
-
/**
|
|
3
|
-
* Verification-tree storage and lifecycle for `fireforge tree`.
|
|
4
|
-
*
|
|
5
|
-
* A tree is a full project-root CoW snapshot under
|
|
6
|
-
* `.fireforge/trees/<name>`. `getProjectRoot()` walks up from cwd, so
|
|
7
|
-
* every read command (status, lint, typecheck, verify, doctor,
|
|
8
|
-
* `export --dry-run`) runs inside the tree unmodified and its build /
|
|
9
|
-
* engine-session locks key on the tree root automatically. Trees are
|
|
10
|
-
* snapshots by design: there is no merge-back model, mutation commands
|
|
11
|
-
* are refused via the tree marker (see `tree-guard.ts`), and refresh is
|
|
12
|
-
* `tree remove` + `tree create`.
|
|
13
|
-
*/
|
|
14
|
-
import { createHash } from 'node:crypto';
|
|
15
|
-
import { existsSync } from 'node:fs';
|
|
16
|
-
import { cp, lstat, mkdir, readdir, readFile, realpath, rm } from 'node:fs/promises';
|
|
17
|
-
import { basename, join, resolve, sep } from 'node:path';
|
|
18
|
-
import { GeneralError } from '../errors/base.js';
|
|
19
|
-
import { mapWithConcurrency } from '../utils/concurrency.js';
|
|
20
|
-
import { getNodeErrorCode, isProcessAlive, toError } from '../utils/errors.js';
|
|
21
|
-
import { pathExists, readJson, writeJson } from '../utils/fs.js';
|
|
22
|
-
import { sha256Hex } from '../utils/hash.js';
|
|
23
|
-
import { verbose, warn } from '../utils/logger.js';
|
|
24
|
-
import { isObject } from '../utils/validation.js';
|
|
25
|
-
import { getBuildBaselinePath } from './build-baseline.js';
|
|
26
|
-
import { LOCK_PID_FILE, withFileLock } from './file-lock.js';
|
|
27
|
-
import { git } from './git-base.js';
|
|
28
|
-
import { getAllDiff } from './git-diff.js';
|
|
29
|
-
import { attemptMozinfoRewrite } from './mach-build-artifacts.js';
|
|
30
|
-
import { checkDocumentVersion, describeNewerDocument } from './state-file.js';
|
|
31
|
-
import { cloneEntry } from './tree-cow.js';
|
|
32
|
-
const TREE_MARKER_FILENAME = 'tree.json';
|
|
33
|
-
const TREES_DIRNAME = 'trees';
|
|
34
|
-
const TREE_CLONE_CONCURRENCY = 8;
|
|
35
|
-
/**
|
|
36
|
-
* Top-level entries never cloned into a tree: per-tree state must start
|
|
37
|
-
* clean (`.fireforge/`), locks are never inherited, the destructive-
|
|
38
|
-
* operation audit log stays primary-only, and dependency dirs are
|
|
39
|
-
* neither needed nor cheap.
|
|
40
|
-
*/
|
|
41
|
-
function isExcludedRootEntry(name) {
|
|
42
|
-
return (name === '.fireforge' ||
|
|
43
|
-
name === 'node_modules' ||
|
|
44
|
-
name === '.fireforge-history.jsonl' ||
|
|
45
|
-
name.endsWith('.lock'));
|
|
46
|
-
}
|
|
47
|
-
/** Absolute trees directory for a primary root. */
|
|
48
|
-
export function getTreesDir(primaryRoot) {
|
|
49
|
-
return join(primaryRoot, '.fireforge', TREES_DIRNAME);
|
|
50
|
-
}
|
|
51
|
-
/** Serialises tree create/remove against each other (primary-side sidecar lock). */
|
|
52
|
-
export async function withTreeLifecycleLock(primaryRoot, operation) {
|
|
53
|
-
return withFileLock(join(primaryRoot, '.fireforge', 'trees.lock'), operation, {
|
|
54
|
-
timeoutMs: 30_000,
|
|
55
|
-
onTimeoutMessage: 'Another fireforge tree create/remove is in progress. Wait for it to finish, then retry.',
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Validates every field of a tree marker.
|
|
60
|
-
*
|
|
61
|
-
* Checking only `schemaVersion` and `name` and asserting the rest is not
|
|
62
|
-
* enough: the unvalidated fields are consumed unguarded. `primaryRoot`
|
|
63
|
-
* reaches a user-facing refusal message in `tree-guard.ts`, and
|
|
64
|
-
* `engineHead`/`patchesFingerprint` feed the staleness compare, where an
|
|
65
|
-
* `undefined` from a truncated marker reports every tree as stale.
|
|
66
|
-
*/
|
|
67
|
-
/** Schema version this build writes and understands. */
|
|
68
|
-
const TREE_MARKER_SCHEMA_VERSION = 1;
|
|
69
|
-
function isTreeMarker(value) {
|
|
70
|
-
if (!isObject(value))
|
|
71
|
-
return false;
|
|
72
|
-
return (value['schemaVersion'] === TREE_MARKER_SCHEMA_VERSION &&
|
|
73
|
-
typeof value['name'] === 'string' &&
|
|
74
|
-
typeof value['primaryRoot'] === 'string' &&
|
|
75
|
-
typeof value['createdAt'] === 'string' &&
|
|
76
|
-
(typeof value['engineHead'] === 'string' || value['engineHead'] === null) &&
|
|
77
|
-
(value['engineFingerprint'] === undefined ||
|
|
78
|
-
typeof value['engineFingerprint'] === 'string' ||
|
|
79
|
-
value['engineFingerprint'] === null) &&
|
|
80
|
-
(typeof value['patchesFingerprint'] === 'string' || value['patchesFingerprint'] === null) &&
|
|
81
|
-
(value['clonedObjdir'] === undefined || typeof value['clonedObjdir'] === 'string'));
|
|
82
|
-
}
|
|
83
|
-
/** Absolute path of a root's tree marker. */
|
|
84
|
-
export function getTreeMarkerPath(root) {
|
|
85
|
-
return join(root, '.fireforge', TREE_MARKER_FILENAME);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Reads the tree marker for a project root, distinguishing "not a tree" from
|
|
89
|
-
* "a tree whose marker we could not read". Callers that make a safety
|
|
90
|
-
* decision (the guard hook, the no-nesting refusal) must use this rather
|
|
91
|
-
* than {@link tryReadTreeMarker}.
|
|
92
|
-
*
|
|
93
|
-
* Only ENOENT/ENOTDIR mean `absent`: any other probe failure (EACCES on the
|
|
94
|
-
* `.fireforge` directory, EIO, …) reports `corrupt`, because "we cannot read
|
|
95
|
-
* the marker" is not evidence that there is no marker: a `pathExists`
|
|
96
|
-
* pre-check classifies a tree with an unreadable `.fireforge` as `absent`
|
|
97
|
-
* and hands it the full mutating command set.
|
|
98
|
-
*/
|
|
99
|
-
/**
|
|
100
|
-
* Naming convention for state-file readers:
|
|
101
|
-
* - `readX(): Promise<XRead>` is the tri-state read: absent, corrupt, or
|
|
102
|
-
* valid.
|
|
103
|
-
* - `tryReadX(): Promise<X | undefined>` collapses absent and corrupt.
|
|
104
|
-
*/
|
|
105
|
-
export async function readTreeMarker(root) {
|
|
106
|
-
const markerPath = getTreeMarkerPath(root);
|
|
107
|
-
try {
|
|
108
|
-
const raw = await readJson(markerPath);
|
|
109
|
-
// Version first, and reported distinctly. Folding the schemaVersion
|
|
110
|
-
// check into `isTreeMarker` makes a marker from a newer FireForge read
|
|
111
|
-
// as "missing or mistypes a required field", and `tree-guard.ts` is
|
|
112
|
-
// default-deny on corrupt, so the operator is locked out of every
|
|
113
|
-
// mutating command inside the tree by a message claiming the file is
|
|
114
|
-
// malformed when it is merely newer.
|
|
115
|
-
const version = checkDocumentVersion(raw, 'schemaVersion', TREE_MARKER_SCHEMA_VERSION);
|
|
116
|
-
if (version.kind === 'newer') {
|
|
117
|
-
return {
|
|
118
|
-
kind: 'unsupported',
|
|
119
|
-
reason: describeNewerDocument('tree marker', version.found, TREE_MARKER_SCHEMA_VERSION),
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
if (!isTreeMarker(raw)) {
|
|
123
|
-
verbose(`Malformed tree marker at ${markerPath}`);
|
|
124
|
-
return { kind: 'corrupt', reason: 'the marker is missing or mistypes a required field' };
|
|
125
|
-
}
|
|
126
|
-
return { kind: 'valid', marker: raw };
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
const code = getNodeErrorCode(error);
|
|
130
|
-
if (code === 'ENOENT' || code === 'ENOTDIR')
|
|
131
|
-
return { kind: 'absent' };
|
|
132
|
-
verbose(`Unreadable tree marker at ${markerPath}: ${toError(error).message}`);
|
|
133
|
-
return { kind: 'corrupt', reason: `the marker could not be read (${toError(error).message})` };
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Reads the tree marker for a project root, or undefined when it is absent
|
|
138
|
-
* or unreadable.
|
|
139
|
-
*
|
|
140
|
-
* For display and best-effort paths only (`tree list` renders an unreadable
|
|
141
|
-
* marker as staleness 'unknown'). Anything that decides whether a mutation may
|
|
142
|
-
* proceed must call {@link readTreeMarker} and handle `corrupt`.
|
|
143
|
-
*/
|
|
144
|
-
export async function tryReadTreeMarker(root) {
|
|
145
|
-
const state = await readTreeMarker(root);
|
|
146
|
-
return state.kind === 'valid' ? state.marker : undefined;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Refuses a build-less in-tree `test` when the objdir preflight found is not
|
|
150
|
-
* the one this tree's marker vouched for as rewritten-and-reconfigured. A
|
|
151
|
-
* mismatch means an objdir appeared in the tree through some path other than
|
|
152
|
-
* `tree create --with-objdir` (manual copy, partial restore), so nothing
|
|
153
|
-
* proves it was relocated, and running against it could consult primary paths.
|
|
154
|
-
* No-op outside a tree. A corrupt marker is already refused by the guard.
|
|
155
|
-
*/
|
|
156
|
-
export async function assertObjdirMatchesTreeMarker(projectRoot, objDir) {
|
|
157
|
-
const state = await readTreeMarker(projectRoot);
|
|
158
|
-
if (state.kind !== 'valid' || state.marker.clonedObjdir === undefined)
|
|
159
|
-
return;
|
|
160
|
-
if (objDir !== state.marker.clonedObjdir) {
|
|
161
|
-
throw new GeneralError(`This verification tree's marker records "${state.marker.clonedObjdir}" as its cloned build, ` +
|
|
162
|
-
`but the preflight found ${objDir === undefined ? 'no objdir' : `"${objDir}"`}. ` +
|
|
163
|
-
'Only the objdir cloned by tree create --with-objdir is proven to be relocated to this tree. ' +
|
|
164
|
-
'Remove and re-create the tree (fireforge tree remove/create).');
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
/** Current primary-side snapshot identity, including dirty source and patch bodies. */
|
|
168
|
-
export async function computePrimaryFingerprint(primaryRoot) {
|
|
169
|
-
const engineDir = join(primaryRoot, 'engine');
|
|
170
|
-
let engineHead;
|
|
171
|
-
try {
|
|
172
|
-
engineHead = (await git(['rev-parse', 'HEAD'], engineDir)).trim();
|
|
173
|
-
}
|
|
174
|
-
catch {
|
|
175
|
-
// An engine that is missing, unborn, or not a git checkout has no HEAD to
|
|
176
|
-
// fingerprint. `null` is a legal marker value and reads as 'unknown', which
|
|
177
|
-
// `listTrees` renders as staleness 'unknown' rather than a false 'fresh'.
|
|
178
|
-
engineHead = null;
|
|
179
|
-
}
|
|
180
|
-
let engineFingerprint;
|
|
181
|
-
try {
|
|
182
|
-
engineFingerprint = sha256Hex(await getAllDiff(engineDir));
|
|
183
|
-
}
|
|
184
|
-
catch {
|
|
185
|
-
engineFingerprint = null;
|
|
186
|
-
}
|
|
187
|
-
const patchesDir = join(primaryRoot, 'patches');
|
|
188
|
-
let patchesFingerprint = null;
|
|
189
|
-
try {
|
|
190
|
-
if (await pathExists(patchesDir)) {
|
|
191
|
-
const hash = createHash('sha256');
|
|
192
|
-
for (const name of (await readdir(patchesDir))
|
|
193
|
-
.filter((entry) => entry.endsWith('.patch') || entry === 'patches.json')
|
|
194
|
-
.sort()) {
|
|
195
|
-
hash
|
|
196
|
-
.update(name)
|
|
197
|
-
.update('\0')
|
|
198
|
-
.update(await readFile(join(patchesDir, name)))
|
|
199
|
-
.update('\0');
|
|
200
|
-
}
|
|
201
|
-
patchesFingerprint = hash.digest('hex');
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
catch {
|
|
205
|
-
patchesFingerprint = null;
|
|
206
|
-
}
|
|
207
|
-
return { engineHead, engineFingerprint, patchesFingerprint };
|
|
208
|
-
}
|
|
209
|
-
/** Validates a tree name: one path segment, no traversal. */
|
|
210
|
-
export function assertValidTreeName(name) {
|
|
211
|
-
if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(name) || name.includes('..')) {
|
|
212
|
-
throw new GeneralError(`Invalid tree name "${name}". Use a single path segment of letters, digits, ".", "_" or "-".`);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Refuses an objdir that is not a plain directory physically inside
|
|
217
|
-
* `engineDir`. Every `cp` mode `cloneEntry` uses preserves symlinks, so
|
|
218
|
-
* a symlinked `engine/obj-*` would be cloned as a symlink pointing back
|
|
219
|
-
* at the original (primary or fully external) build, and the clone's
|
|
220
|
-
* mozinfo rewrite and `_virtualenvs` removal would then mutate that
|
|
221
|
-
* original through the link. Checks lstat (the entry itself must be a
|
|
222
|
-
* real directory) and realpath containment (a real directory reached
|
|
223
|
-
* through a symlinked parent resolves elsewhere). The rewriter's
|
|
224
|
-
* lexical `resolve()` paths cannot detect either. Also validates the
|
|
225
|
-
* name as a single `obj-*` path segment. Role `'primary'` guards before
|
|
226
|
-
* any copying starts. Role `'cloned'` re-checks the tree's copy before
|
|
227
|
-
* any write goes through it (defense in depth).
|
|
228
|
-
*/
|
|
229
|
-
async function assertCloneSafeObjdir(engineDir, objDir, role) {
|
|
230
|
-
const where = role === 'primary' ? 'engine/' : "the tree's engine/";
|
|
231
|
-
if (!/^obj-[A-Za-z0-9][A-Za-z0-9._-]*$/.test(objDir) || objDir.includes('..')) {
|
|
232
|
-
throw new GeneralError(`Invalid objdir name "${objDir}". Expected a single obj-* path segment of letters, digits, ".", "_" or "-".`);
|
|
233
|
-
}
|
|
234
|
-
const objDirPath = join(engineDir, objDir);
|
|
235
|
-
let stats;
|
|
236
|
-
try {
|
|
237
|
-
stats = await lstat(objDirPath);
|
|
238
|
-
}
|
|
239
|
-
catch (error) {
|
|
240
|
-
throw new GeneralError(`tree create --with-objdir cannot stat ${where}${objDir}: ${toError(error).message}`);
|
|
241
|
-
}
|
|
242
|
-
if (stats.isSymbolicLink() || !stats.isDirectory()) {
|
|
243
|
-
throw new GeneralError(`tree create --with-objdir refuses ${where}${objDir}: it is ${stats.isSymbolicLink() ? 'a symlink' : 'not a directory'}. A cloned symlinked objdir would be rewritten through the link, mutating the ` +
|
|
244
|
-
'original build it points at. Replace it with a real directory or create the tree ' +
|
|
245
|
-
'without --with-objdir.');
|
|
246
|
-
}
|
|
247
|
-
const [realObjDir, realEngineDir] = await Promise.all([
|
|
248
|
-
realpath(objDirPath),
|
|
249
|
-
realpath(engineDir),
|
|
250
|
-
]);
|
|
251
|
-
if (realObjDir !== join(realEngineDir, objDir)) {
|
|
252
|
-
throw new GeneralError(`tree create --with-objdir refuses ${where}${objDir}: it resolves to ${realObjDir}, ` +
|
|
253
|
-
`outside ${realEngineDir}. An objdir reached through a symlink would be rewritten ` +
|
|
254
|
-
'in place, mutating the original build. Replace it with a real directory or create ' +
|
|
255
|
-
'the tree without --with-objdir.');
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Materialises the tree at `treeRoot` from `primaryRoot` using `capability`
|
|
260
|
-
* ('none' = plain copy, already gated on --force-copy by the caller).
|
|
261
|
-
*
|
|
262
|
-
* The engine is cloned one top-level entry at a time so unwanted `obj-*`
|
|
263
|
-
* directories are never traversed or materialised. On a Firefox tree, even
|
|
264
|
-
* CoW-cloning and then deleting an objdir touches metadata for millions of
|
|
265
|
-
* build outputs. With `withObjdir` exactly that objdir is included (after
|
|
266
|
-
* {@link assertCloneSafeObjdir} refuses symlinked or engine-escaping objdirs
|
|
267
|
-
* before any copying), rewritten to the tree, and reconfigured in-tree via
|
|
268
|
-
* the caller-supplied `reconfigure` hook. A fresh `.fireforge/` is created
|
|
269
|
-
* with only `state.json` (when present), the last-build baseline (withObjdir
|
|
270
|
-
* only), and the tree marker.
|
|
271
|
-
*/
|
|
272
|
-
export async function cloneTree(args) {
|
|
273
|
-
const { primaryRoot, treeRoot, name, capability, createdAt, withObjdir } = args;
|
|
274
|
-
if (withObjdir) {
|
|
275
|
-
// Refuse a symlinked/escaping primary objdir before any copying: the
|
|
276
|
-
// clone would carry the symlink and every later write would land in
|
|
277
|
-
// the original build (see assertCloneSafeObjdir).
|
|
278
|
-
await assertCloneSafeObjdir(join(primaryRoot, 'engine'), withObjdir.objDir, 'primary');
|
|
279
|
-
}
|
|
280
|
-
await mkdir(treeRoot, { recursive: true });
|
|
281
|
-
const rootEntries = (await readdir(primaryRoot)).filter((entry) => !isExcludedRootEntry(entry));
|
|
282
|
-
const engineDir = join(treeRoot, 'engine');
|
|
283
|
-
await mapWithConcurrency(rootEntries, TREE_CLONE_CONCURRENCY, async (entry) => {
|
|
284
|
-
if (entry !== 'engine') {
|
|
285
|
-
await cloneEntry(capability, join(primaryRoot, entry), join(treeRoot, entry));
|
|
286
|
-
return;
|
|
287
|
-
}
|
|
288
|
-
const primaryEngineDir = join(primaryRoot, 'engine');
|
|
289
|
-
await mkdir(engineDir, { recursive: true });
|
|
290
|
-
const engineEntries = (await readdir(primaryEngineDir)).filter((engineEntry) => !engineEntry.startsWith('obj-') || engineEntry === withObjdir?.objDir);
|
|
291
|
-
await mapWithConcurrency(engineEntries, TREE_CLONE_CONCURRENCY, async (engineEntry) => {
|
|
292
|
-
await cloneEntry(capability, join(primaryEngineDir, engineEntry), join(engineDir, engineEntry));
|
|
293
|
-
});
|
|
294
|
-
});
|
|
295
|
-
// A selected objdir embeds absolute topsrcdir/topobjdir paths back into
|
|
296
|
-
// the primary tree. It is rewritten below before the marker records it as
|
|
297
|
-
// usable. No other objdir ever enters the snapshot.
|
|
298
|
-
if (await pathExists(engineDir)) {
|
|
299
|
-
// Defensive: never inherit a mid-operation git index lock.
|
|
300
|
-
await rm(join(engineDir, '.git', 'index.lock'), { force: true });
|
|
301
|
-
}
|
|
302
|
-
if (withObjdir) {
|
|
303
|
-
await rewriteClonedObjdir(engineDir, withObjdir.objDir);
|
|
304
|
-
// Regenerate configure output (config.status, backend.mk, Makefile,
|
|
305
|
-
// config/autoconf.mk) against the tree's paths. The mozinfo rewrite
|
|
306
|
-
// alone leaves those naming the primary. A failed reconfigure throws
|
|
307
|
-
// before the marker below records the objdir as usable (fail-closed).
|
|
308
|
-
await withObjdir.reconfigure(engineDir);
|
|
309
|
-
}
|
|
310
|
-
await mkdir(join(treeRoot, '.fireforge'), { recursive: true });
|
|
311
|
-
const stateJson = join(primaryRoot, '.fireforge', 'state.json');
|
|
312
|
-
if (await pathExists(stateJson)) {
|
|
313
|
-
await cp(stateJson, join(treeRoot, '.fireforge', 'state.json'));
|
|
314
|
-
}
|
|
315
|
-
if (withObjdir) {
|
|
316
|
-
// The in-tree stale-build and static-components gates anchor on the
|
|
317
|
-
// last-build baseline. Without the copy they would read `undefined`
|
|
318
|
-
// and degrade to first-build semantics inside a fully built tree.
|
|
319
|
-
const baseline = getBuildBaselinePath(primaryRoot);
|
|
320
|
-
if (await pathExists(baseline)) {
|
|
321
|
-
await cp(baseline, getBuildBaselinePath(treeRoot));
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
const { engineHead, engineFingerprint, patchesFingerprint } = await computePrimaryFingerprint(primaryRoot);
|
|
325
|
-
const marker = {
|
|
326
|
-
schemaVersion: TREE_MARKER_SCHEMA_VERSION,
|
|
327
|
-
name,
|
|
328
|
-
primaryRoot,
|
|
329
|
-
createdAt,
|
|
330
|
-
engineHead,
|
|
331
|
-
engineFingerprint: engineFingerprint ?? null,
|
|
332
|
-
patchesFingerprint,
|
|
333
|
-
...(withObjdir ? { clonedObjdir: withObjdir.objDir } : {}),
|
|
334
|
-
};
|
|
335
|
-
await writeJson(join(treeRoot, '.fireforge', TREE_MARKER_FILENAME), marker);
|
|
336
|
-
return marker;
|
|
337
|
-
}
|
|
338
|
-
/**
|
|
339
|
-
* Points the cloned objdir at the tree: rewrites mozinfo.json's
|
|
340
|
-
* topsrcdir/topobjdir (and an in-tree mozconfig) via the same
|
|
341
|
-
* safe-relocation rewriter `build --rewrite-mozinfo` uses, refusing
|
|
342
|
-
* fail-closed when its safety rules cannot prove the rewrite correct:
|
|
343
|
-
* a tree must never hold an objdir that still names the primary. Before
|
|
344
|
-
* any write, the cloned objdir is re-checked as a real directory inside
|
|
345
|
-
* the tree ({@link assertCloneSafeObjdir}) so no write ever goes through
|
|
346
|
-
* a symlink into the original build. The cloned `_virtualenvs` are
|
|
347
|
-
* removed outright: their scripts carry primary-tree shebang paths, and
|
|
348
|
-
* mach rebuilds venvs in-tree on first use. The configure-generated root
|
|
349
|
-
* files (config.status, backend.mk, Makefile, config/autoconf.mk) still
|
|
350
|
-
* name the primary after this rewrite. They are regenerated by the
|
|
351
|
-
* in-tree `mach configure` the caller supplies to {@link cloneTree},
|
|
352
|
-
* which runs before the marker is written.
|
|
353
|
-
*/
|
|
354
|
-
async function rewriteClonedObjdir(engineDir, objDir) {
|
|
355
|
-
await assertCloneSafeObjdir(engineDir, objDir, 'cloned');
|
|
356
|
-
const rewrite = await attemptMozinfoRewrite(engineDir, objDir);
|
|
357
|
-
if (!rewrite.rewritten) {
|
|
358
|
-
throw new GeneralError(`Cannot keep the cloned build: ${rewrite.reason ?? 'mozinfo.json rewrite refused'}. ` +
|
|
359
|
-
'The objdir would still operate against the primary tree. ' +
|
|
360
|
-
'Re-run tree create without --with-objdir, or rebuild the primary objdir with "fireforge build" and retry.');
|
|
361
|
-
}
|
|
362
|
-
await rm(join(engineDir, objDir, '_virtualenvs'), { recursive: true, force: true });
|
|
363
|
-
}
|
|
364
|
-
/** Lists trees with staleness against the current primary state. */
|
|
365
|
-
export async function listTrees(primaryRoot) {
|
|
366
|
-
const treesDir = getTreesDir(primaryRoot);
|
|
367
|
-
if (!(await pathExists(treesDir)))
|
|
368
|
-
return [];
|
|
369
|
-
const current = await computePrimaryFingerprint(primaryRoot);
|
|
370
|
-
const entries = [];
|
|
371
|
-
for (const name of (await readdir(treesDir)).sort((a, b) => a.localeCompare(b))) {
|
|
372
|
-
if (name.endsWith('.lock'))
|
|
373
|
-
continue;
|
|
374
|
-
const path = join(treesDir, name);
|
|
375
|
-
const marker = await tryReadTreeMarker(path);
|
|
376
|
-
if (!marker) {
|
|
377
|
-
entries.push({ name, path, createdAt: '(no marker)', staleness: 'unknown' });
|
|
378
|
-
continue;
|
|
379
|
-
}
|
|
380
|
-
const staleness = marker.engineHead !== current.engineHead
|
|
381
|
-
? 'stale (engine advanced)'
|
|
382
|
-
: marker.engineFingerprint !== undefined &&
|
|
383
|
-
marker.engineFingerprint !== current.engineFingerprint
|
|
384
|
-
? 'stale (engine worktree changed)'
|
|
385
|
-
: marker.patchesFingerprint !== current.patchesFingerprint
|
|
386
|
-
? 'stale (patches changed)'
|
|
387
|
-
: 'fresh';
|
|
388
|
-
entries.push({ name, path, createdAt: marker.createdAt, staleness });
|
|
389
|
-
}
|
|
390
|
-
return entries;
|
|
391
|
-
}
|
|
392
|
-
/**
|
|
393
|
-
* Classifies a mkdir-style lock directory. Reads the lock's owner file
|
|
394
|
-
* directly (line 1 = PID, the format `file-lock.ts` documents as stable,
|
|
395
|
-
* whose name it shares via {@link LOCK_PID_FILE}) instead of exporting
|
|
396
|
-
* file-lock internals.
|
|
397
|
-
*
|
|
398
|
-
* Liveness comes from the shared {@link isProcessAlive}, which treats EPERM
|
|
399
|
-
* as alive. Returning `false` for EPERM lets a tree whose build lock is held
|
|
400
|
-
* by a live process running under a different uid pass the guard below and
|
|
401
|
-
* get `rm -rf`'d mid-build.
|
|
402
|
-
*
|
|
403
|
-
* The `unknown` state is not theoretical. `withFileLock` takes the lock by
|
|
404
|
-
* creating the directory and only *then* writes the owner file, treating a
|
|
405
|
-
* write failure as non-fatal, so every acquisition passes through a window
|
|
406
|
-
* in which the lock is genuinely held and has no readable PID, and a
|
|
407
|
-
* read-only or full filesystem leaves it that way for the lock's whole life.
|
|
408
|
-
* Reporting that as `free` lets `removeTree` recursively delete a tree out
|
|
409
|
-
* from under a live build. `file-lock.ts` reaches the same conclusion for
|
|
410
|
-
* its own stale recovery, where an unreadable PID falls back to an age-only
|
|
411
|
-
* heuristic rather than assuming the lock is abandoned.
|
|
412
|
-
*/
|
|
413
|
-
async function inspectTreeLock(lockPath) {
|
|
414
|
-
if (!existsSync(lockPath))
|
|
415
|
-
return { kind: 'free' };
|
|
416
|
-
let pidLine;
|
|
417
|
-
try {
|
|
418
|
-
pidLine = (await readFile(join(lockPath, LOCK_PID_FILE), 'utf-8')).split('\n')[0] ?? '';
|
|
419
|
-
}
|
|
420
|
-
catch (error) {
|
|
421
|
-
// A lock cleanly released between the existence probe above and this read
|
|
422
|
-
// leaves no directory behind. That is a release rather than an
|
|
423
|
-
// unreadable owner, and demanding --force for it would be a spurious
|
|
424
|
-
// refusal.
|
|
425
|
-
if (!existsSync(lockPath))
|
|
426
|
-
return { kind: 'free' };
|
|
427
|
-
return {
|
|
428
|
-
kind: 'unknown',
|
|
429
|
-
reason: `its owner record is missing or unreadable (${toError(error).message})`,
|
|
430
|
-
};
|
|
431
|
-
}
|
|
432
|
-
const pid = parseInt(pidLine.trim(), 10);
|
|
433
|
-
if (!Number.isFinite(pid)) {
|
|
434
|
-
return { kind: 'unknown', reason: 'its owner record does not name a process id' };
|
|
435
|
-
}
|
|
436
|
-
return isProcessAlive(pid) ? { kind: 'held', pid } : { kind: 'free' };
|
|
437
|
-
}
|
|
438
|
-
/**
|
|
439
|
-
* Removes one tree. Refuses when a live process holds the tree's build
|
|
440
|
-
* or engine-session lock, or when a lock directory exists whose ownership
|
|
441
|
-
* cannot be established (which `--force` overrides). Never deletes a path
|
|
442
|
-
* outside the trees directory (containment check before `rm -rf`).
|
|
443
|
-
*/
|
|
444
|
-
export async function removeTree(primaryRoot, name, options = {}) {
|
|
445
|
-
assertValidTreeName(name);
|
|
446
|
-
// Both sides resolved: the containment prefix has to be in the same form as
|
|
447
|
-
// the path it guards. `getTreesDir` is a `join`, so on Windows it yields a
|
|
448
|
-
// drive-less path while `resolve` below adds the drive letter, so the
|
|
449
|
-
// prefix test then failed for every tree and refused each removal as an
|
|
450
|
-
// escape.
|
|
451
|
-
const treesDir = resolve(getTreesDir(primaryRoot));
|
|
452
|
-
const treeRoot = resolve(treesDir, name);
|
|
453
|
-
if (!treeRoot.startsWith(treesDir + sep) || basename(treeRoot) !== name) {
|
|
454
|
-
throw new GeneralError(`Refusing to remove "${name}": resolved path escapes the trees directory.`);
|
|
455
|
-
}
|
|
456
|
-
if (!(await pathExists(treeRoot))) {
|
|
457
|
-
throw new GeneralError(`No verification tree named "${name}" exists under ${treesDir}.`);
|
|
458
|
-
}
|
|
459
|
-
for (const lockPath of [
|
|
460
|
-
join(treeRoot, '.fireforge-build.lock'),
|
|
461
|
-
join(treeRoot, '.fireforge', 'engine-session.lock'),
|
|
462
|
-
]) {
|
|
463
|
-
const state = await inspectTreeLock(lockPath);
|
|
464
|
-
if (state.kind === 'held') {
|
|
465
|
-
throw new GeneralError(`Refusing to remove tree "${name}": a live process (pid ${state.pid}) holds ${lockPath}. ` +
|
|
466
|
-
'Wait for it to finish, then retry.');
|
|
467
|
-
}
|
|
468
|
-
if (state.kind === 'unknown' && options.force !== true) {
|
|
469
|
-
throw new GeneralError(`Refusing to remove tree "${name}": ${lockPath} exists but ${state.reason}, so it may be ` +
|
|
470
|
-
'held by a live process. Wait for any in-flight build or test to finish; if none is ' +
|
|
471
|
-
'running, re-run with --force to delete the tree and the stale lock.');
|
|
472
|
-
}
|
|
473
|
-
if (state.kind === 'unknown') {
|
|
474
|
-
warn(`Removing tree "${name}" through ${lockPath}, whose ownership is unknown (--force).`);
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
await rm(treeRoot, { recursive: true, force: true });
|
|
478
|
-
}
|