@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,119 +0,0 @@
|
|
|
1
|
-
import type { LockMode } from './file-lock.js';
|
|
2
|
-
import { type LockStatusSnapshot } from './file-lock.js';
|
|
3
|
-
export interface EngineSessionLockOptions {
|
|
4
|
-
/**
|
|
5
|
-
* Wait up to this many seconds for the engine session lock instead of the
|
|
6
|
-
* ~1 s fail-fast. Enables exponential poll backoff (100 ms → 2 s) and a
|
|
7
|
-
* holder-identified progress line roughly every 5 s. `undefined` keeps the
|
|
8
|
-
* fail-fast behaviour.
|
|
9
|
-
*/
|
|
10
|
-
waitLockSeconds?: number | undefined;
|
|
11
|
-
/**
|
|
12
|
-
* `shared` lets build-less test runs overlap each other; see
|
|
13
|
-
* `file-lock-shared.ts`. Every other caller holds the lock exclusively.
|
|
14
|
-
*/
|
|
15
|
-
mode?: LockMode | undefined;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Formats the notice printed when the wait budget is extended because the
|
|
19
|
-
* queue advanced.
|
|
20
|
-
*
|
|
21
|
-
* Exported for direct unit testing. It names both figures, the requested
|
|
22
|
-
* budget and the one now in force, because they have diverged and an
|
|
23
|
-
* operator comparing the elapsed time against the number they typed would
|
|
24
|
-
* otherwise conclude the timeout is broken.
|
|
25
|
-
*/
|
|
26
|
-
export declare function formatWaitExtendedLine(ahead: number, budgetMs: number, requestedMs: number): string;
|
|
27
|
-
/**
|
|
28
|
-
* Runs `operation` while holding the project's engine-session lock, so only
|
|
29
|
-
* one engine-mutating FireForge command touches `engine/` at a time.
|
|
30
|
-
*/
|
|
31
|
-
export declare function withEngineSessionLock<T>(projectRoot: string, command: string, operation: () => Promise<T>, options?: EngineSessionLockOptions): Promise<T>;
|
|
32
|
-
/**
|
|
33
|
-
* Inspects the project's engine-session lock without acquiring it, backing
|
|
34
|
-
* `fireforge status --lock`.
|
|
35
|
-
*
|
|
36
|
-
* @param projectRoot - Project root containing `.fireforge/`
|
|
37
|
-
* @returns Holder identity, hold duration, and queue depth
|
|
38
|
-
*/
|
|
39
|
-
export declare function readEngineSessionLockStatus(projectRoot: string): Promise<LockStatusSnapshot>;
|
|
40
|
-
/**
|
|
41
|
-
* Renders the engine-session lock snapshot as operator-facing lines.
|
|
42
|
-
* Pure, so the wording is unit-testable without a lock on disk.
|
|
43
|
-
*/
|
|
44
|
-
export declare function formatEngineSessionLockStatus(snapshot: LockStatusSnapshot, holderCpuSeconds?: number): string[];
|
|
45
|
-
/**
|
|
46
|
-
* Captures an opaque token describing the engine's current commit and working
|
|
47
|
-
* tree, for comparison by {@link assertEngineGenerationUnchanged}.
|
|
48
|
-
*
|
|
49
|
-
* A failed probe yields a failure token. Callers must branch on
|
|
50
|
-
* {@link isUnavailableGenerationToken} rather than comparing the token,
|
|
51
|
-
* because a probe failure means "nothing was measured", not "nothing changed".
|
|
52
|
-
*/
|
|
53
|
-
export declare function snapshotEngineGeneration(engineDir: string): Promise<string>;
|
|
54
|
-
/**
|
|
55
|
-
* True when a git failure is the transient index-lock contention shape
|
|
56
|
-
* (`Unable to create '…/.git/index.lock': File exists`) rather than a
|
|
57
|
-
* durable problem with the checkout. Exported for direct unit testing.
|
|
58
|
-
*/
|
|
59
|
-
export declare function isIndexLockError(error: unknown): boolean;
|
|
60
|
-
/**
|
|
61
|
-
* True when a generation token records a failed probe, i.e. nothing was
|
|
62
|
-
* measured, so the token must never be compared (or hashed) as if it
|
|
63
|
-
* described the engine's state.
|
|
64
|
-
*/
|
|
65
|
-
export declare function isUnavailableGenerationToken(token: string): boolean;
|
|
66
|
-
/** Strips the marker prefix off an unavailable token for display. */
|
|
67
|
-
export declare function unavailableGenerationReason(token: string): string;
|
|
68
|
-
/**
|
|
69
|
-
* Engine-relative paths whose working-tree status differs between two
|
|
70
|
-
* generation tokens (both sides of a rename), and whether HEAD moved. An
|
|
71
|
-
* untracked directory keeps git's trailing `/`.
|
|
72
|
-
*/
|
|
73
|
-
export declare function generationDeltaPaths(before: string, after: string): {
|
|
74
|
-
headMoved: boolean;
|
|
75
|
-
paths: string[];
|
|
76
|
-
};
|
|
77
|
-
/**
|
|
78
|
-
* Describes what moved between two generation tokens, in operator terms.
|
|
79
|
-
*
|
|
80
|
-
* A refusal that said only that the engine changed would leave the
|
|
81
|
-
* operator to reconstruct the writer by hand: `find -newermt` against the
|
|
82
|
-
* run window, minus the objdir, minus git's own bookkeeping. Everything
|
|
83
|
-
* needed to answer it is already in the two tokens, so the refusal answers
|
|
84
|
-
* it. Pure and total: an unparseable token yields an empty list rather than
|
|
85
|
-
* an exception, because a diagnostic must never convert a refusal into a
|
|
86
|
-
* crash.
|
|
87
|
-
*
|
|
88
|
-
* @param before - Token captured before the run
|
|
89
|
-
* @param after - Token captured after the run
|
|
90
|
-
* @returns Human-readable lines describing the delta. Empty when nothing
|
|
91
|
-
* could be attributed
|
|
92
|
-
*/
|
|
93
|
-
export declare function describeEngineGenerationDelta(before: string, after: string): string[];
|
|
94
|
-
/**
|
|
95
|
-
* Throws when the engine's generation token differs from `before`, i.e. the
|
|
96
|
-
* engine was mutated by another writer while a test run was in flight.
|
|
97
|
-
*
|
|
98
|
-
* An unmeasurable engine warns rather than throws. `engine/` is not
|
|
99
|
-
* always a git checkout (`fireforge download` extracts a source tarball),
|
|
100
|
-
* so a failed probe is a legitimate state and must not fail the run.
|
|
101
|
-
*
|
|
102
|
-
* It must also not pass silently. A failure token compared for
|
|
103
|
-
* equality like any other would let a git failure that reproduces across
|
|
104
|
-
* both probes (unreadable `.git`, a permissions problem, a corrupt index)
|
|
105
|
-
* take the `after === before` early return and bless a verdict the guard
|
|
106
|
-
* never verified. Two differing failure messages are worse still: they
|
|
107
|
-
* fall through to the mutation branch and report a spurious
|
|
108
|
-
* "engine/ changed". Hence the prefix comparison rather than a token
|
|
109
|
-
* comparison: the token embeds the error message, and two genuine failures
|
|
110
|
-
* rarely phrase it identically.
|
|
111
|
-
*
|
|
112
|
-
* The tolerance is limited to a probe that failed both times:
|
|
113
|
-
* that is the steady state of a non-git `engine/`, and it warns. A one-sided
|
|
114
|
-
* transition is not that state. An `engine/` that was measurable and then
|
|
115
|
-
* was not means the second probe measured nothing about a checkout that
|
|
116
|
-
* demonstrably had something to measure. The reverse means there was never a
|
|
117
|
-
* baseline to compare against. Neither verdict can be trusted, so both throw.
|
|
118
|
-
*/
|
|
119
|
-
export declare function assertEngineGenerationUnchanged(engineDir: string, before: string, tolerateDelta?: (before: string, after: string) => Promise<boolean>): Promise<void>;
|
|
@@ -1,374 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { InconclusiveVerdictError } from '../errors/base.js';
|
|
4
|
-
import { toError } from '../utils/errors.js';
|
|
5
|
-
import { info, warn } from '../utils/logger.js';
|
|
6
|
-
import { MAX_WAIT_LOCK_SECONDS } from '../utils/options.js';
|
|
7
|
-
import { sleep } from '../utils/sleep.js';
|
|
8
|
-
import { formatLockQueuePosition, readLockStatus, withFileLock, } from './file-lock.js';
|
|
9
|
-
import { git } from './git-base.js';
|
|
10
|
-
const ENGINE_SESSION_LOCK_PATH = join('.fireforge', 'engine-session.lock');
|
|
11
|
-
/**
|
|
12
|
-
* How much longer than the requested budget a wait may run while its queue
|
|
13
|
-
* position keeps improving, and the absolute ceiling on that. The ceiling
|
|
14
|
-
* matches `--wait-lock`'s own upper bound: an operator who asked for a wait
|
|
15
|
-
* never gets one longer than the largest wait they could have asked for.
|
|
16
|
-
*/
|
|
17
|
-
const WAIT_EXTENSION_FACTOR = 4;
|
|
18
|
-
const MAX_WAIT_LOCK_MS = MAX_WAIT_LOCK_SECONDS * 1000;
|
|
19
|
-
/**
|
|
20
|
-
* Formats the periodic operator-facing waiting line printed while `--wait-lock`
|
|
21
|
-
* polls a contended engine session lock. The holder identification comes from
|
|
22
|
-
* the lock's owner-metadata lines (`command=…`, `started=…`). An unreadable
|
|
23
|
-
* owner file degrades to the anonymous form.
|
|
24
|
-
*/
|
|
25
|
-
function formatWaitProgressLine(waitedMs, timeoutMs, holder, queue) {
|
|
26
|
-
const progress = `${Math.round(waitedMs / 1000)}s of up to ${Math.round(timeoutMs / 1000)}s`;
|
|
27
|
-
// Queue position: under several concurrent sessions the wait
|
|
28
|
-
// line alone left operators inferring their place from `ps`. It names the
|
|
29
|
-
// ordering rule, because the count is only useful if the grant honours it.
|
|
30
|
-
const position = formatLockQueuePosition(queue);
|
|
31
|
-
if (holder === undefined) {
|
|
32
|
-
return `Waiting for the FireForge engine lock — ${progress}.${position}`;
|
|
33
|
-
}
|
|
34
|
-
const details = holder.metadata.length > 0 ? ` (${holder.metadata.join(', ')})` : '';
|
|
35
|
-
return `Waiting for the FireForge engine lock held by PID ${holder.pid}${details} — ${progress}.${position}`;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Formats the notice printed when the wait budget is extended because the
|
|
39
|
-
* queue advanced.
|
|
40
|
-
*
|
|
41
|
-
* Exported for direct unit testing. It names both figures, the requested
|
|
42
|
-
* budget and the one now in force, because they have diverged and an
|
|
43
|
-
* operator comparing the elapsed time against the number they typed would
|
|
44
|
-
* otherwise conclude the timeout is broken.
|
|
45
|
-
*/
|
|
46
|
-
export function formatWaitExtendedLine(ahead, budgetMs, requestedMs) {
|
|
47
|
-
const position = ahead === 0 ? 'you are now next' : `${ahead} still ahead of you`;
|
|
48
|
-
return (`The queue advanced (${position}), so the engine-lock wait was extended to ` +
|
|
49
|
-
`${Math.round(budgetMs / 1000)}s total (you asked for ` +
|
|
50
|
-
`${Math.round(requestedMs / 1000)}s). A queue that stops moving still ` +
|
|
51
|
-
`gives up on the budget you asked for.`);
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Runs `operation` while holding the project's engine-session lock, so only
|
|
55
|
-
* one engine-mutating FireForge command touches `engine/` at a time.
|
|
56
|
-
*/
|
|
57
|
-
export async function withEngineSessionLock(projectRoot, command, operation, options = {}) {
|
|
58
|
-
// The lock is bypassed under test by default, on purpose: the
|
|
59
|
-
// suite runs many engine-mutating commands in-process, which would either
|
|
60
|
-
// serialise on this lock or deadlock outright.
|
|
61
|
-
// `FIREFORGE_ENABLE_ENGINE_SESSION_LOCK_IN_TEST=1` lets the lock's own
|
|
62
|
-
// tests opt back in. Do not delete this branch. It is the reason the
|
|
63
|
-
// suite completes.
|
|
64
|
-
if (process.env['FIREFORGE_ENABLE_ENGINE_SESSION_LOCK_IN_TEST'] !== '1' &&
|
|
65
|
-
(process.env['NODE_ENV'] === 'test' || process.env['VITEST'] !== undefined)) {
|
|
66
|
-
return operation();
|
|
67
|
-
}
|
|
68
|
-
const { waitLockSeconds } = options;
|
|
69
|
-
return withFileLock(join(projectRoot, ENGINE_SESSION_LOCK_PATH), operation, {
|
|
70
|
-
...(options.mode === 'shared' ? { mode: 'shared' } : {}),
|
|
71
|
-
timeoutMs: waitLockSeconds !== undefined ? waitLockSeconds * 1000 : 1000,
|
|
72
|
-
...(waitLockSeconds !== undefined
|
|
73
|
-
? {
|
|
74
|
-
pollMs: 100,
|
|
75
|
-
pollMaxMs: 2000,
|
|
76
|
-
waitProgressMs: 5000,
|
|
77
|
-
onWaitProgress: ({ waitedMs, timeoutMs, holder, queue }) => {
|
|
78
|
-
info(formatWaitProgressLine(waitedMs, timeoutMs, holder, queue));
|
|
79
|
-
},
|
|
80
|
-
// Announce it. An extension is the moment the budget the
|
|
81
|
-
// operator asked for stops being the budget in force, and a wait
|
|
82
|
-
// that silently outlives its own stated timeout is
|
|
83
|
-
// indistinguishable from a broken one, which is how a downstream
|
|
84
|
-
// fork read it.
|
|
85
|
-
onWaitExtended: ({ ahead, budgetMs }) => {
|
|
86
|
-
info(formatWaitExtendedLine(ahead, budgetMs, waitLockSeconds * 1000));
|
|
87
|
-
},
|
|
88
|
-
// A budget that expires one position from the head pays the whole
|
|
89
|
-
// wait for nothing. While the queue is still moving the wait is
|
|
90
|
-
// working, so each advance renews the budget, up to a hard
|
|
91
|
-
// ceiling so a pathological queue cannot wait forever. The
|
|
92
|
-
// no-flag fail-fast path gets none of this.
|
|
93
|
-
extendWhileAdvancing: {
|
|
94
|
-
maxWaitMs: Math.min(waitLockSeconds * 1000 * WAIT_EXTENSION_FACTOR, MAX_WAIT_LOCK_MS),
|
|
95
|
-
},
|
|
96
|
-
}
|
|
97
|
-
: {}),
|
|
98
|
-
ownerMetadata: [`command=${command}`, `started=${new Date().toISOString()}`],
|
|
99
|
-
// Reason first, remedy second: the no-flag default waits
|
|
100
|
-
// only ~1 s, so contention is the common case and `--wait-lock` is the
|
|
101
|
-
// genuine remedy. withFileLock appends the holder identification from
|
|
102
|
-
// the lock's owner metadata. The leading sentence is a message contract
|
|
103
|
-
// (pinned by engine-session-lock tests). Extend, don't reword.
|
|
104
|
-
onTimeoutMessage: `Another FireForge engine-mutating command is already running. ` +
|
|
105
|
-
`Wait for it to finish, then retry \`${command}\` — or pass --wait-lock [seconds] ` +
|
|
106
|
-
`to wait for the lock (bare --wait-lock waits up to 60 seconds). ` +
|
|
107
|
-
`Set FIREFORGE_WAIT_LOCK=<seconds> to apply a budget to every command in a session.`,
|
|
108
|
-
onStaleLockMessage: (ageMs) => `Removed stale FireForge engine session lock (${Math.round(ageMs / 1000)}s old).`,
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Inspects the project's engine-session lock without acquiring it, backing
|
|
113
|
-
* `fireforge status --lock`.
|
|
114
|
-
*
|
|
115
|
-
* @param projectRoot - Project root containing `.fireforge/`
|
|
116
|
-
* @returns Holder identity, hold duration, and queue depth
|
|
117
|
-
*/
|
|
118
|
-
export async function readEngineSessionLockStatus(projectRoot) {
|
|
119
|
-
return readLockStatus(join(projectRoot, ENGINE_SESSION_LOCK_PATH));
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Renders the engine-session lock snapshot as operator-facing lines.
|
|
123
|
-
* Pure, so the wording is unit-testable without a lock on disk.
|
|
124
|
-
*/
|
|
125
|
-
export function formatEngineSessionLockStatus(snapshot, holderCpuSeconds) {
|
|
126
|
-
const shared = snapshot.sharedHolders !== undefined && snapshot.sharedHolders > 0
|
|
127
|
-
? `Shared holders: ${snapshot.sharedHolders} build-less test run(s) under a shared lock.`
|
|
128
|
-
: undefined;
|
|
129
|
-
if (!snapshot.held) {
|
|
130
|
-
return shared === undefined
|
|
131
|
-
? ['Engine session lock: free (no FireForge engine-mutating command is running).']
|
|
132
|
-
: ['Engine session lock: no exclusive holder.', shared];
|
|
133
|
-
}
|
|
134
|
-
const elapsed = snapshot.heldForMs === undefined
|
|
135
|
-
? 'unknown duration'
|
|
136
|
-
: `${Math.round(snapshot.heldForMs / 1000)}s`;
|
|
137
|
-
const holder = snapshot.holder;
|
|
138
|
-
const identity = holder === undefined
|
|
139
|
-
? 'held by an unidentified process (no readable owner record)'
|
|
140
|
-
: `held by PID ${holder.pid}${holder.alive ? '' : ' (NOT RUNNING — stale lock)'}` +
|
|
141
|
-
(holder.metadata.length > 0 ? ` (${holder.metadata.join(', ')})` : '');
|
|
142
|
-
const lines = [
|
|
143
|
-
`Engine session lock: ${identity}, for ${elapsed}.`,
|
|
144
|
-
`Queue depth: ${snapshot.queueDepth} waiter(s).`,
|
|
145
|
-
...(shared === undefined ? [] : [shared]),
|
|
146
|
-
];
|
|
147
|
-
// Liveness answers "does the process exist". It does not answer "is it
|
|
148
|
-
// getting anywhere". A holder alive for minutes having used a fraction of
|
|
149
|
-
// a second of CPU is the shape of a wedged command, and every waiter
|
|
150
|
-
// behind it inherits the stall. Stated as an observation with its own
|
|
151
|
-
// caveat: a holder blocked on I/O is also idle, and this must not be read
|
|
152
|
-
// as licence to kill anything.
|
|
153
|
-
if (holder?.alive === true && holderCpuSeconds !== undefined) {
|
|
154
|
-
const cpu = `${holderCpuSeconds.toFixed(1)}s`;
|
|
155
|
-
const idle = snapshot.heldForMs !== undefined && snapshot.heldForMs > 60_000 && holderCpuSeconds < 2
|
|
156
|
-
? ' — near-zero CPU over a long hold, which is what a WEDGED command looks like; ' +
|
|
157
|
-
'a holder blocked on I/O looks the same, so confirm before acting'
|
|
158
|
-
: '';
|
|
159
|
-
lines.push(`Holder CPU time: ${cpu}${idle}.`);
|
|
160
|
-
}
|
|
161
|
-
return lines;
|
|
162
|
-
}
|
|
163
|
-
/** Prefix marking a generation token whose probe failed. */
|
|
164
|
-
const UNAVAILABLE_PREFIX = 'unavailable:';
|
|
165
|
-
/**
|
|
166
|
-
* Captures an opaque token describing the engine's current commit and working
|
|
167
|
-
* tree, for comparison by {@link assertEngineGenerationUnchanged}.
|
|
168
|
-
*
|
|
169
|
-
* A failed probe yields a failure token. Callers must branch on
|
|
170
|
-
* {@link isUnavailableGenerationToken} rather than comparing the token,
|
|
171
|
-
* because a probe failure means "nothing was measured", not "nothing changed".
|
|
172
|
-
*/
|
|
173
|
-
export async function snapshotEngineGeneration(engineDir) {
|
|
174
|
-
let lastError;
|
|
175
|
-
for (let attempt = 0; attempt < GENERATION_PROBE_ATTEMPTS; attempt += 1) {
|
|
176
|
-
try {
|
|
177
|
-
const head = (await git(['rev-parse', 'HEAD'], engineDir)).trim();
|
|
178
|
-
const status = await git(['status', '--porcelain=v1', '-z'], engineDir);
|
|
179
|
-
return `${head}\0${status}`;
|
|
180
|
-
}
|
|
181
|
-
catch (error) {
|
|
182
|
-
lastError = error;
|
|
183
|
-
// A contended `.git/index.lock` is transient, not a state: some other
|
|
184
|
-
// writer held the index for the instant we looked. Treating it as
|
|
185
|
-
// "unmeasurable" turns a perfectly good suite into
|
|
186
|
-
// `FAIL reason=inconclusive` on a one-sided probe failure. Anything
|
|
187
|
-
// else (an unreadable `.git`, a non-git `engine/`) is a real state
|
|
188
|
-
// and is reported immediately.
|
|
189
|
-
if (!isIndexLockError(error) || attempt === GENERATION_PROBE_ATTEMPTS - 1)
|
|
190
|
-
break;
|
|
191
|
-
await sleep(GENERATION_PROBE_RETRY_MS);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
return `${UNAVAILABLE_PREFIX}${toError(lastError).message}`;
|
|
195
|
-
}
|
|
196
|
-
/** Probe attempts before an engine generation is declared unmeasurable. */
|
|
197
|
-
const GENERATION_PROBE_ATTEMPTS = 3;
|
|
198
|
-
/** Pause between generation-probe attempts. */
|
|
199
|
-
const GENERATION_PROBE_RETRY_MS = 250;
|
|
200
|
-
/**
|
|
201
|
-
* True when a git failure is the transient index-lock contention shape
|
|
202
|
-
* (`Unable to create '…/.git/index.lock': File exists`) rather than a
|
|
203
|
-
* durable problem with the checkout. Exported for direct unit testing.
|
|
204
|
-
*/
|
|
205
|
-
export function isIndexLockError(error) {
|
|
206
|
-
const message = toError(error).message;
|
|
207
|
-
return /index\.lock/i.test(message);
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* True when a generation token records a failed probe, i.e. nothing was
|
|
211
|
-
* measured, so the token must never be compared (or hashed) as if it
|
|
212
|
-
* described the engine's state.
|
|
213
|
-
*/
|
|
214
|
-
export function isUnavailableGenerationToken(token) {
|
|
215
|
-
return token.startsWith(UNAVAILABLE_PREFIX);
|
|
216
|
-
}
|
|
217
|
-
/** Strips the marker prefix off an unavailable token for display. */
|
|
218
|
-
export function unavailableGenerationReason(token) {
|
|
219
|
-
return token.slice(UNAVAILABLE_PREFIX.length);
|
|
220
|
-
}
|
|
221
|
-
/** How many changed entries the delta names before truncating. */
|
|
222
|
-
const DELTA_ENTRY_LIMIT = 5;
|
|
223
|
-
/**
|
|
224
|
-
* Splits a generation token into its HEAD and porcelain halves. The porcelain
|
|
225
|
-
* body is `-z` output, so it is NUL-separated and never quoted.
|
|
226
|
-
*/
|
|
227
|
-
function splitGenerationToken(token) {
|
|
228
|
-
const separator = token.indexOf('\0');
|
|
229
|
-
if (separator < 0)
|
|
230
|
-
return { head: token, body: '' };
|
|
231
|
-
return { head: token.slice(0, separator), body: token.slice(separator + 1) };
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Parses `git status --porcelain=v1 -z` into `XY path` records.
|
|
235
|
-
*
|
|
236
|
-
* The rename/copy shape needs care: `R`/`C` entries are followed by a
|
|
237
|
-
* second NUL-separated field carrying the original path, and consuming only
|
|
238
|
-
* one desynchronises every record after it, turning a one-file rename into
|
|
239
|
-
* a report that the whole tree moved. Both fields are consumed and the
|
|
240
|
-
* record renders as `orig -> new`.
|
|
241
|
-
*/
|
|
242
|
-
function parsePorcelainRecords(body) {
|
|
243
|
-
const fields = body.split('\0').filter((field) => field.length > 0);
|
|
244
|
-
const records = [];
|
|
245
|
-
for (let i = 0; i < fields.length; i++) {
|
|
246
|
-
const field = fields[i] ?? '';
|
|
247
|
-
// `XY `, two status characters and a space, then the path.
|
|
248
|
-
if (field.length < 4)
|
|
249
|
-
continue;
|
|
250
|
-
const status = field.slice(0, 2);
|
|
251
|
-
const path = field.slice(3);
|
|
252
|
-
if (status.includes('R') || status.includes('C')) {
|
|
253
|
-
const origin = fields[i + 1];
|
|
254
|
-
i += 1;
|
|
255
|
-
records.push(`${status} ${origin ?? '?'} -> ${path}`);
|
|
256
|
-
continue;
|
|
257
|
-
}
|
|
258
|
-
records.push(`${status} ${path}`);
|
|
259
|
-
}
|
|
260
|
-
return records;
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Engine-relative paths whose working-tree status differs between two
|
|
264
|
-
* generation tokens (both sides of a rename), and whether HEAD moved. An
|
|
265
|
-
* untracked directory keeps git's trailing `/`.
|
|
266
|
-
*/
|
|
267
|
-
export function generationDeltaPaths(before, after) {
|
|
268
|
-
const from = splitGenerationToken(before);
|
|
269
|
-
const to = splitGenerationToken(after);
|
|
270
|
-
const beforeRecords = new Set(parsePorcelainRecords(from.body));
|
|
271
|
-
const afterRecords = new Set(parsePorcelainRecords(to.body));
|
|
272
|
-
const paths = new Set();
|
|
273
|
-
for (const record of [...afterRecords, ...beforeRecords]) {
|
|
274
|
-
if (beforeRecords.has(record) && afterRecords.has(record))
|
|
275
|
-
continue;
|
|
276
|
-
for (const path of record.slice(3).split(' -> '))
|
|
277
|
-
paths.add(path);
|
|
278
|
-
}
|
|
279
|
-
return { headMoved: from.head !== to.head, paths: [...paths].sort() };
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Describes what moved between two generation tokens, in operator terms.
|
|
283
|
-
*
|
|
284
|
-
* A refusal that said only that the engine changed would leave the
|
|
285
|
-
* operator to reconstruct the writer by hand: `find -newermt` against the
|
|
286
|
-
* run window, minus the objdir, minus git's own bookkeeping. Everything
|
|
287
|
-
* needed to answer it is already in the two tokens, so the refusal answers
|
|
288
|
-
* it. Pure and total: an unparseable token yields an empty list rather than
|
|
289
|
-
* an exception, because a diagnostic must never convert a refusal into a
|
|
290
|
-
* crash.
|
|
291
|
-
*
|
|
292
|
-
* @param before - Token captured before the run
|
|
293
|
-
* @param after - Token captured after the run
|
|
294
|
-
* @returns Human-readable lines describing the delta. Empty when nothing
|
|
295
|
-
* could be attributed
|
|
296
|
-
*/
|
|
297
|
-
export function describeEngineGenerationDelta(before, after) {
|
|
298
|
-
const lines = [];
|
|
299
|
-
const from = splitGenerationToken(before);
|
|
300
|
-
const to = splitGenerationToken(after);
|
|
301
|
-
if (from.head !== to.head) {
|
|
302
|
-
lines.push(`HEAD moved: ${from.head} -> ${to.head}`);
|
|
303
|
-
}
|
|
304
|
-
const beforeRecords = new Set(parsePorcelainRecords(from.body));
|
|
305
|
-
const afterRecords = new Set(parsePorcelainRecords(to.body));
|
|
306
|
-
const appeared = [...afterRecords].filter((record) => !beforeRecords.has(record)).sort();
|
|
307
|
-
const disappeared = [...beforeRecords].filter((record) => !afterRecords.has(record)).sort();
|
|
308
|
-
const render = (label, records) => {
|
|
309
|
-
if (records.length === 0)
|
|
310
|
-
return;
|
|
311
|
-
const head = records.slice(0, DELTA_ENTRY_LIMIT);
|
|
312
|
-
const truncated = records.length - head.length;
|
|
313
|
-
lines.push(`${label}: ${head.join(', ')}${truncated > 0 ? `, … (+${truncated} more)` : ''}`);
|
|
314
|
-
};
|
|
315
|
-
render('Working-tree entries that appeared', appeared);
|
|
316
|
-
render('Working-tree entries that went away', disappeared);
|
|
317
|
-
return lines;
|
|
318
|
-
}
|
|
319
|
-
/**
|
|
320
|
-
* Throws when the engine's generation token differs from `before`, i.e. the
|
|
321
|
-
* engine was mutated by another writer while a test run was in flight.
|
|
322
|
-
*
|
|
323
|
-
* An unmeasurable engine warns rather than throws. `engine/` is not
|
|
324
|
-
* always a git checkout (`fireforge download` extracts a source tarball),
|
|
325
|
-
* so a failed probe is a legitimate state and must not fail the run.
|
|
326
|
-
*
|
|
327
|
-
* It must also not pass silently. A failure token compared for
|
|
328
|
-
* equality like any other would let a git failure that reproduces across
|
|
329
|
-
* both probes (unreadable `.git`, a permissions problem, a corrupt index)
|
|
330
|
-
* take the `after === before` early return and bless a verdict the guard
|
|
331
|
-
* never verified. Two differing failure messages are worse still: they
|
|
332
|
-
* fall through to the mutation branch and report a spurious
|
|
333
|
-
* "engine/ changed". Hence the prefix comparison rather than a token
|
|
334
|
-
* comparison: the token embeds the error message, and two genuine failures
|
|
335
|
-
* rarely phrase it identically.
|
|
336
|
-
*
|
|
337
|
-
* The tolerance is limited to a probe that failed both times:
|
|
338
|
-
* that is the steady state of a non-git `engine/`, and it warns. A one-sided
|
|
339
|
-
* transition is not that state. An `engine/` that was measurable and then
|
|
340
|
-
* was not means the second probe measured nothing about a checkout that
|
|
341
|
-
* demonstrably had something to measure. The reverse means there was never a
|
|
342
|
-
* baseline to compare against. Neither verdict can be trusted, so both throw.
|
|
343
|
-
*/
|
|
344
|
-
export async function assertEngineGenerationUnchanged(engineDir, before, tolerateDelta) {
|
|
345
|
-
const after = await snapshotEngineGeneration(engineDir);
|
|
346
|
-
const beforeUnavailable = isUnavailableGenerationToken(before);
|
|
347
|
-
const afterUnavailable = isUnavailableGenerationToken(after);
|
|
348
|
-
if (beforeUnavailable && afterUnavailable) {
|
|
349
|
-
warn('Could not verify that engine/ stayed unchanged while the tests ran ' +
|
|
350
|
-
`(${unavailableGenerationReason(after)}). If another writer touched engine/ during the run, ` +
|
|
351
|
-
'this verdict is stale.');
|
|
352
|
-
return;
|
|
353
|
-
}
|
|
354
|
-
if (beforeUnavailable || afterUnavailable) {
|
|
355
|
-
const detail = beforeUnavailable
|
|
356
|
-
? `engine/ could not be probed before the run (${unavailableGenerationReason(before)}) but could be ` +
|
|
357
|
-
'probed afterwards, so there is no baseline to compare against.'
|
|
358
|
-
: `engine/ was probed before the run but could not be probed afterwards ` +
|
|
359
|
-
`(${unavailableGenerationReason(after)}), so nothing was measured to compare against.`;
|
|
360
|
-
throw new InconclusiveVerdictError(`${detail}\n\n` +
|
|
361
|
-
'This test verdict is inconclusive. Restore engine/ to a readable state, then rebuild ' +
|
|
362
|
-
'and rerun the affected tests.');
|
|
363
|
-
}
|
|
364
|
-
if (after === before)
|
|
365
|
-
return;
|
|
366
|
-
// A caller that can prove the delta never reached the runtime under test
|
|
367
|
-
// (a perf sample, see `test-perf-scope.ts`) keeps its verdict.
|
|
368
|
-
if (tolerateDelta !== undefined && (await tolerateDelta(before, after)))
|
|
369
|
-
return;
|
|
370
|
-
const delta = describeEngineGenerationDelta(before, after);
|
|
371
|
-
throw new InconclusiveVerdictError('engine/ changed while `fireforge test` was running, so this test verdict is invalid/inconclusive.\n\n' +
|
|
372
|
-
(delta.length > 0 ? `What moved:\n${delta.map((line) => ` ${line}`).join('\n')}\n\n` : '') +
|
|
373
|
-
'Use one writer per engine checkout, then rebuild and rerun the affected tests.');
|
|
374
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { FurnaceConfig } from '../types/furnace.js';
|
|
2
|
-
/** Checks all component destinations before an apply starts writing. */
|
|
3
|
-
export declare function assertComponentWriteBoundaries(engineDir: string, config: FurnaceConfig, ftlDir: string): Promise<void>;
|
|
4
|
-
/** Resolves the nearest existing parent before any mkdir/copy can write through an alias. */
|
|
5
|
-
export declare function assertEngineWriteBoundary(engineDir: string, directory: string): Promise<void>;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
-
import { realpath } from 'node:fs/promises';
|
|
3
|
-
import { dirname, join, resolve, sep } from 'node:path';
|
|
4
|
-
import { FurnaceError } from '../errors/furnace.js';
|
|
5
|
-
import { getNodeErrorCode } from '../utils/errors.js';
|
|
6
|
-
import { CUSTOM_ELEMENTS_JS, JAR_MN } from './furnace-constants.js';
|
|
7
|
-
/** Checks all component destinations before an apply starts writing. */
|
|
8
|
-
export async function assertComponentWriteBoundaries(engineDir, config, ftlDir) {
|
|
9
|
-
const destinations = new Set([
|
|
10
|
-
ftlDir,
|
|
11
|
-
dirname(JAR_MN),
|
|
12
|
-
dirname(CUSTOM_ELEMENTS_JS),
|
|
13
|
-
...Object.values(config.custom).map((entry) => entry.targetPath),
|
|
14
|
-
...Object.values(config.overrides).map((entry) => entry.basePath),
|
|
15
|
-
]);
|
|
16
|
-
for (const destination of destinations) {
|
|
17
|
-
await assertEngineWriteBoundary(engineDir, join(engineDir, destination));
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
/** Resolves the nearest existing parent before any mkdir/copy can write through an alias. */
|
|
21
|
-
export async function assertEngineWriteBoundary(engineDir, directory) {
|
|
22
|
-
const root = await realpath(engineDir);
|
|
23
|
-
let parent = resolve(directory);
|
|
24
|
-
for (;;) {
|
|
25
|
-
try {
|
|
26
|
-
const canonical = await realpath(parent);
|
|
27
|
-
if (canonical !== root && !canonical.startsWith(root + sep)) {
|
|
28
|
-
throw new FurnaceError(`Engine destination ${directory} resolves outside engine/ (${canonical}). Refusing to write through into component sources or another checkout.`);
|
|
29
|
-
}
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
if (getNodeErrorCode(error) !== 'ENOENT')
|
|
34
|
-
throw error;
|
|
35
|
-
const next = dirname(parent);
|
|
36
|
-
if (next === parent)
|
|
37
|
-
throw error;
|
|
38
|
-
parent = next;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Detects the new-file-plus-moved-code slice shape and names the working
|
|
3
|
-
* sequence through it.
|
|
4
|
-
*
|
|
5
|
-
* A slice that adds new files and moves lines into them from an existing
|
|
6
|
-
* patch has no path through the two refusal flags:
|
|
7
|
-
*
|
|
8
|
-
* - `re-export --refuse-adjacent-unmanaged` refuses while the new files are
|
|
9
|
-
* still unmanaged, and
|
|
10
|
-
* - exporting the new files as their own patch fails cross-patch lint,
|
|
11
|
-
* because at the projected placement the old patch still contains the
|
|
12
|
-
* moved code.
|
|
13
|
-
*
|
|
14
|
-
* Each guard is individually correct. Together they dead-end, and the way out
|
|
15
|
-
* is non-obvious: adopt the new files into the old patch first
|
|
16
|
-
* (`re-export --scan --scan-file`), then split them out into a patch of their
|
|
17
|
-
* own (`patch move-files --create --order N`).
|
|
18
|
-
*
|
|
19
|
-
* This module recognises the shape from evidence FireForge already has (the
|
|
20
|
-
* pending diff's new-file content versus the added lines the existing patches
|
|
21
|
-
* carry), so the refusal can name the sequence instead of leaving the
|
|
22
|
-
* operator to derive it.
|
|
23
|
-
*/
|
|
24
|
-
/** One run of consecutive lines a new file shares with an existing patch. */
|
|
25
|
-
export interface MovedCodeBlock {
|
|
26
|
-
/** New-file path in the pending diff. */
|
|
27
|
-
file: string;
|
|
28
|
-
/** File in the source patch that carries the same run. */
|
|
29
|
-
sourceFile: string;
|
|
30
|
-
/** The matched substantive lines, trimmed, in order. */
|
|
31
|
-
lines: string[];
|
|
32
|
-
}
|
|
33
|
-
/** One existing patch that already carries lines the new files would add. */
|
|
34
|
-
export interface MovedCodeOverlap {
|
|
35
|
-
/** Filename of the patch that still contains the moved lines. */
|
|
36
|
-
sourcePatch: string;
|
|
37
|
-
/** New-file paths in the pending diff whose lines it overlaps. */
|
|
38
|
-
files: string[];
|
|
39
|
-
/** Count of substantive lines inside the matched blocks. */
|
|
40
|
-
sharedLines: number;
|
|
41
|
-
/** The matched blocks, so the claim can be checked line by line. */
|
|
42
|
-
blocks: MovedCodeBlock[];
|
|
43
|
-
}
|
|
44
|
-
/** Minimal queue view this detector needs. */
|
|
45
|
-
export interface MovedCodeQueueEntry {
|
|
46
|
-
filename: string;
|
|
47
|
-
diff: string;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Finds existing patches that still carry a block of substantive lines the
|
|
51
|
-
* pending diff's new files would add, the fingerprint of code moved out of
|
|
52
|
-
* an existing patch into a new file.
|
|
53
|
-
*
|
|
54
|
-
* Pure. Overlaps are returned strongest-first so the message names the
|
|
55
|
-
* most likely source patch.
|
|
56
|
-
*
|
|
57
|
-
* @param pendingDiff - The diff the export would write
|
|
58
|
-
* @param entries - The existing queue's patches
|
|
59
|
-
* @returns Overlaps, or an empty list when the shape is not present
|
|
60
|
-
*/
|
|
61
|
-
export declare function detectMovedCodeOverlaps(pendingDiff: string, entries: readonly MovedCodeQueueEntry[]): MovedCodeOverlap[];
|
|
62
|
-
/** What the placement projection learned about the pending export. */
|
|
63
|
-
export interface MovedCodeAdviceInput {
|
|
64
|
-
/** Result of {@link detectMovedCodeOverlaps}. */
|
|
65
|
-
overlaps: readonly MovedCodeOverlap[];
|
|
66
|
-
/** The filename the pending export would take. */
|
|
67
|
-
newPatchName: string;
|
|
68
|
-
/** The order the pending export would take. */
|
|
69
|
-
insertionOrder: number;
|
|
70
|
-
/**
|
|
71
|
-
* New system modules in the pending diff that no patch registers
|
|
72
|
-
* (`unregistered-system-module` findings on the new patch).
|
|
73
|
-
*/
|
|
74
|
-
unregisteredModules?: readonly string[];
|
|
75
|
-
/**
|
|
76
|
-
* True when every error in the exported content is a missing
|
|
77
|
-
* registration: registering is then the whole fix, and adopt-then-split
|
|
78
|
-
* is not offered at all.
|
|
79
|
-
*/
|
|
80
|
-
registrationResolvesAll?: boolean;
|
|
81
|
-
/**
|
|
82
|
-
* Why adopting the new files into the strongest overlap's source patch
|
|
83
|
-
* would itself be refused (forward imports, size limit). Empty when the
|
|
84
|
-
* adopt is clean.
|
|
85
|
-
*/
|
|
86
|
-
adoptBlockers?: readonly string[];
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Renders the remedy lines appended to a placement refusal: "register
|
|
90
|
-
* first" when new modules lack their moz.build registration, then the
|
|
91
|
-
* adopt-then-split sequence for a real moved-code block, but only when the
|
|
92
|
-
* adopt itself would pass. Each claim names its evidence (the matched
|
|
93
|
-
* lines, the blocking findings) so it can be checked.
|
|
94
|
-
*
|
|
95
|
-
* @param input - See {@link MovedCodeAdviceInput}
|
|
96
|
-
* @returns Detail lines, or an empty list when neither shape is present
|
|
97
|
-
*/
|
|
98
|
-
export declare function formatMovedCodeAdvice(input: MovedCodeAdviceInput): string[];
|