@hominis/fireforge 0.55.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 +233 -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 -456
- 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 -359
- 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 -382
- package/dist/src/commands/setup.js +78 -90
- package/dist/src/commands/status.js +44 -413
- package/dist/src/commands/test.js +97 -423
- package/dist/src/commands/token.js +185 -228
- package/dist/src/commands/typecheck.js +59 -241
- 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 -766
- package/docs/exit-codes.md +76 -94
- package/docs/furnace.md +111 -221
- package/docs/gate.md +205 -0
- package/docs/getting-started.md +165 -0
- package/docs/machine-output.md +201 -290
- package/docs/migrating.md +261 -0
- package/docs/patch-workflow.md +159 -723
- package/docs/quality.md +220 -0
- package/docs/source-workflow.md +228 -0
- package/docs/testing.md +101 -719
- 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 -98
- package/dist/src/commands/check-run.d.ts +0 -44
- package/dist/src/commands/check-run.js +0 -125
- 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 -229
- 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 -283
- 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/body.d.ts +0 -29
- package/dist/src/commands/patch/body.js +0 -60
- 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 -54
- 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 -263
- 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 -114
- package/dist/src/commands/patch/staged-dependency-validate.d.ts +0 -27
- package/dist/src/commands/patch/staged-dependency-validate.js +0 -78
- package/dist/src/commands/patch/staged-dependency.d.ts +0 -22
- package/dist/src/commands/patch/staged-dependency.js +0 -251
- 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 -285
- 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-each.d.ts +0 -46
- package/dist/src/commands/re-export-each.js +0 -110
- 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 -37
- package/dist/src/commands/re-export-hunks.js +0 -264
- 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 -192
- 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 -53
- package/dist/src/commands/re-export-single.js +0 -426
- 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 -44
- package/dist/src/commands/re-export-summary.js +0 -59
- 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 -34
- package/dist/src/commands/test-build-phase.js +0 -291
- 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 -70
- package/dist/src/commands/test-orchestrate.js +0 -277
- 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 -56
- package/dist/src/commands/test-stale-gate.js +0 -208
- package/dist/src/commands/test-verdict.d.ts +0 -102
- package/dist/src/commands/test-verdict.js +0 -176
- 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-explain.d.ts +0 -13
- package/dist/src/commands/typecheck-explain.js +0 -100
- package/dist/src/commands/typecheck.d.ts +0 -61
- 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 -284
- 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 -125
- package/dist/src/core/config-validate.d.ts +0 -11
- package/dist/src/core/config-validate.js +0 -509
- 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/dev-profile.d.ts +0 -28
- package/dist/src/core/dev-profile.js +0 -58
- 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 -67
- package/dist/src/core/furnace-apply-overwrite-warn.js +0 -131
- 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 -167
- 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 -81
- package/dist/src/core/furnace-constants.js +0 -125
- 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-deploy-owner.d.ts +0 -29
- package/dist/src/core/furnace-deploy-owner.js +0 -116
- 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 -87
- package/dist/src/core/furnace-jsconfig.js +0 -248
- 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-tag-map.d.ts +0 -47
- package/dist/src/core/furnace-tag-map.js +0 -182
- 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 -331
- 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 -328
- 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 -167
- 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-checkjs.d.ts +0 -45
- package/dist/src/core/patch-lint-cache-checkjs.js +0 -195
- package/dist/src/core/patch-lint-cache.d.ts +0 -79
- package/dist/src/core/patch-lint-cache.js +0 -247
- package/dist/src/core/patch-lint-checkjs-any-import.d.ts +0 -57
- package/dist/src/core/patch-lint-checkjs-any-import.js +0 -91
- 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-resolve.d.ts +0 -31
- package/dist/src/core/patch-lint-checkjs-resolve.js +0 -86
- package/dist/src/core/patch-lint-checkjs.d.ts +0 -182
- package/dist/src/core/patch-lint-checkjs.js +0 -563
- 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 -9
- package/dist/src/core/patch-lint-imports.js +0 -90
- 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 -98
- package/dist/src/core/patch-lint-staged-registration.js +0 -128
- package/dist/src/core/patch-lint-token-scale.d.ts +0 -65
- package/dist/src/core/patch-lint-token-scale.js +0 -304
- 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 -206
- package/dist/src/core/patch-lint.js +0 -533
- 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 -176
- package/dist/src/core/patch-parse.js +0 -416
- package/dist/src/core/patch-policy-content.d.ts +0 -40
- package/dist/src/core/patch-policy-content.js +0 -219
- 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-explain.d.ts +0 -93
- package/dist/src/core/typecheck-explain.js +0 -213
- package/dist/src/core/typecheck-shim.d.ts +0 -90
- package/dist/src/core/typecheck-shim.js +0 -508
- package/dist/src/core/typecheck.d.ts +0 -97
- package/dist/src/core/typecheck.js +0 -457
- 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 -1372
- 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 -732
- package/dist/src/types/config.js +0 -15
- package/dist/src/types/furnace.d.ts +0 -422
- 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,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[];
|
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
-
/**
|
|
3
|
-
* Detects the new-file-plus-moved-code slice shape and names the working
|
|
4
|
-
* sequence through it.
|
|
5
|
-
*
|
|
6
|
-
* A slice that adds new files and moves lines into them from an existing
|
|
7
|
-
* patch has no path through the two refusal flags:
|
|
8
|
-
*
|
|
9
|
-
* - `re-export --refuse-adjacent-unmanaged` refuses while the new files are
|
|
10
|
-
* still unmanaged, and
|
|
11
|
-
* - exporting the new files as their own patch fails cross-patch lint,
|
|
12
|
-
* because at the projected placement the old patch still contains the
|
|
13
|
-
* moved code.
|
|
14
|
-
*
|
|
15
|
-
* Each guard is individually correct. Together they dead-end, and the way out
|
|
16
|
-
* is non-obvious: adopt the new files into the old patch first
|
|
17
|
-
* (`re-export --scan --scan-file`), then split them out into a patch of their
|
|
18
|
-
* own (`patch move-files --create --order N`).
|
|
19
|
-
*
|
|
20
|
-
* This module recognises the shape from evidence FireForge already has (the
|
|
21
|
-
* pending diff's new-file content versus the added lines the existing patches
|
|
22
|
-
* carry), so the refusal can name the sequence instead of leaving the
|
|
23
|
-
* operator to derive it.
|
|
24
|
-
*/
|
|
25
|
-
import { extractAddedLinesPerFile } from './patch-lint-diff.js';
|
|
26
|
-
/**
|
|
27
|
-
* Lines too generic to be evidence of a move: closing braces, blank
|
|
28
|
-
* lines, bare keywords, import punctuation. Requiring substance keeps the
|
|
29
|
-
* detector from firing on every patch that happens to contain a `}`.
|
|
30
|
-
*/
|
|
31
|
-
function isSubstantiveLine(line) {
|
|
32
|
-
const trimmed = line.trim();
|
|
33
|
-
if (trimmed.length < 12)
|
|
34
|
-
return false;
|
|
35
|
-
if (/^[)\]};,]+$/.test(trimmed))
|
|
36
|
-
return false;
|
|
37
|
-
if (trimmed.startsWith('//') || trimmed.startsWith('*') || trimmed.startsWith('/*'))
|
|
38
|
-
return false;
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Minimum run of consecutive substantive lines, in the same order in both
|
|
43
|
-
* the new file and the source patch, before a block counts as moved code.
|
|
44
|
-
* Matching scattered single lines instead let a large unrelated patch
|
|
45
|
-
* "share" a dozen common statements with any new module and sent operators
|
|
46
|
-
* down an adopt-then-split sequence through a patch that only carried a
|
|
47
|
-
* `<script>` line for the file.
|
|
48
|
-
*/
|
|
49
|
-
const MOVED_CODE_BLOCK_THRESHOLD = 3;
|
|
50
|
-
function substantiveSequences(diff) {
|
|
51
|
-
const sequences = new Map();
|
|
52
|
-
for (const [file, lines] of extractAddedLinesPerFile(diff)) {
|
|
53
|
-
const substantive = lines.map((line) => line.trim()).filter(isSubstantiveLine);
|
|
54
|
-
if (substantive.length > 0)
|
|
55
|
-
sequences.set(file, substantive);
|
|
56
|
-
}
|
|
57
|
-
return sequences;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Longest-first, non-overlapping runs of `pending` that appear contiguously
|
|
61
|
-
* in one of `sources`' files. Anchored on exact line matches, so the work
|
|
62
|
-
* is bounded by the number of shared lines, not the product of the sizes.
|
|
63
|
-
*/
|
|
64
|
-
function findBlocks(file, pending, sources) {
|
|
65
|
-
const positions = new Map();
|
|
66
|
-
for (const [sourceFile, lines] of sources) {
|
|
67
|
-
lines.forEach((line, index) => {
|
|
68
|
-
const list = positions.get(line) ?? [];
|
|
69
|
-
list.push([sourceFile, index]);
|
|
70
|
-
positions.set(line, list);
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
const blocks = [];
|
|
74
|
-
let i = 0;
|
|
75
|
-
while (i < pending.length) {
|
|
76
|
-
let best;
|
|
77
|
-
for (const [sourceFile, start] of positions.get(pending[i] ?? '') ?? []) {
|
|
78
|
-
const source = sources.get(sourceFile) ?? [];
|
|
79
|
-
let length = 0;
|
|
80
|
-
while (i + length < pending.length &&
|
|
81
|
-
start + length < source.length &&
|
|
82
|
-
pending[i + length] === source[start + length]) {
|
|
83
|
-
length += 1;
|
|
84
|
-
}
|
|
85
|
-
if (best === undefined || length > best.length)
|
|
86
|
-
best = { sourceFile, length };
|
|
87
|
-
}
|
|
88
|
-
if (best !== undefined && best.length >= MOVED_CODE_BLOCK_THRESHOLD) {
|
|
89
|
-
blocks.push({ file, sourceFile: best.sourceFile, lines: pending.slice(i, i + best.length) });
|
|
90
|
-
i += best.length;
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
i += 1;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return blocks;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Finds existing patches that still carry a block of substantive lines the
|
|
100
|
-
* pending diff's new files would add, the fingerprint of code moved out of
|
|
101
|
-
* an existing patch into a new file.
|
|
102
|
-
*
|
|
103
|
-
* Pure. Overlaps are returned strongest-first so the message names the
|
|
104
|
-
* most likely source patch.
|
|
105
|
-
*
|
|
106
|
-
* @param pendingDiff - The diff the export would write
|
|
107
|
-
* @param entries - The existing queue's patches
|
|
108
|
-
* @returns Overlaps, or an empty list when the shape is not present
|
|
109
|
-
*/
|
|
110
|
-
export function detectMovedCodeOverlaps(pendingDiff, entries) {
|
|
111
|
-
const pending = substantiveSequences(pendingDiff);
|
|
112
|
-
if (pending.size === 0)
|
|
113
|
-
return [];
|
|
114
|
-
const overlaps = [];
|
|
115
|
-
for (const entry of entries) {
|
|
116
|
-
const sources = substantiveSequences(entry.diff);
|
|
117
|
-
if (sources.size === 0)
|
|
118
|
-
continue;
|
|
119
|
-
const blocks = [...pending].flatMap(([file, lines]) => findBlocks(file, lines, sources));
|
|
120
|
-
if (blocks.length === 0)
|
|
121
|
-
continue;
|
|
122
|
-
overlaps.push({
|
|
123
|
-
sourcePatch: entry.filename,
|
|
124
|
-
files: [...new Set(blocks.map((block) => block.file))].sort(),
|
|
125
|
-
sharedLines: blocks.reduce((sum, block) => sum + block.lines.length, 0),
|
|
126
|
-
blocks,
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
return overlaps.sort((a, b) => b.sharedLines - a.sharedLines || a.sourcePatch.localeCompare(b.sourcePatch));
|
|
130
|
-
}
|
|
131
|
-
/** Lines shown per matched block, and blocks shown per overlap. */
|
|
132
|
-
const SHOWN_BLOCK_LINES = 4;
|
|
133
|
-
const SHOWN_BLOCKS = 3;
|
|
134
|
-
/** Renders the matched blocks of one overlap, capped, as detail lines. */
|
|
135
|
-
function formatMatchedBlocks(overlap) {
|
|
136
|
-
const lines = [];
|
|
137
|
-
for (const block of overlap.blocks.slice(0, SHOWN_BLOCKS)) {
|
|
138
|
-
lines.push(` ${block.file} ← ${overlap.sourcePatch} (${block.sourceFile}), ${block.lines.length} line(s):`);
|
|
139
|
-
for (const line of block.lines.slice(0, SHOWN_BLOCK_LINES))
|
|
140
|
-
lines.push(` | ${line}`);
|
|
141
|
-
if (block.lines.length > SHOWN_BLOCK_LINES) {
|
|
142
|
-
lines.push(` | … ${block.lines.length - SHOWN_BLOCK_LINES} more`);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
if (overlap.blocks.length > SHOWN_BLOCKS) {
|
|
146
|
-
lines.push(` … ${overlap.blocks.length - SHOWN_BLOCKS} more block(s)`);
|
|
147
|
-
}
|
|
148
|
-
return lines;
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Renders the remedy lines appended to a placement refusal: "register
|
|
152
|
-
* first" when new modules lack their moz.build registration, then the
|
|
153
|
-
* adopt-then-split sequence for a real moved-code block, but only when the
|
|
154
|
-
* adopt itself would pass. Each claim names its evidence (the matched
|
|
155
|
-
* lines, the blocking findings) so it can be checked.
|
|
156
|
-
*
|
|
157
|
-
* @param input - See {@link MovedCodeAdviceInput}
|
|
158
|
-
* @returns Detail lines, or an empty list when neither shape is present
|
|
159
|
-
*/
|
|
160
|
-
export function formatMovedCodeAdvice(input) {
|
|
161
|
-
const lines = [];
|
|
162
|
-
const unregistered = input.unregisteredModules ?? [];
|
|
163
|
-
if (unregistered.length > 0) {
|
|
164
|
-
lines.push('', `Register first: ${unregistered.join(', ')} ${unregistered.length === 1 ? 'is a new system module' : 'are new system modules'} ` +
|
|
165
|
-
'no patch registers in moz.build. Add the moz.build line in the patch that owns that ' +
|
|
166
|
-
'moz.build; when its line is already in the working tree but unexported, declare it as a ' +
|
|
167
|
-
'staged registration on that patch, re-run this export, then re-export that patch.' +
|
|
168
|
-
(input.registrationResolvesAll === true
|
|
169
|
-
? ' The exported content has no other cross-patch error, so once registered the new ' +
|
|
170
|
-
'files need no adoption into another patch.'
|
|
171
|
-
: ''));
|
|
172
|
-
}
|
|
173
|
-
const strongest = input.overlaps[0];
|
|
174
|
-
if (strongest === undefined || input.registrationResolvesAll === true)
|
|
175
|
-
return lines;
|
|
176
|
-
const blockers = input.adoptBlockers ?? [];
|
|
177
|
-
const claim = `${strongest.sharedLines} substantive line(s) the new file(s) would add, in ` +
|
|
178
|
-
`${strongest.blocks.length} matching block(s), are still carried by ${strongest.sourcePatch}:`;
|
|
179
|
-
if (blockers.length > 0) {
|
|
180
|
-
lines.push('', claim, ...formatMatchedBlocks(strongest), `Adopting the new files into ${strongest.sourcePatch} first (adopt-then-split) would be refused too, so it is not offered:`, ...blockers.map((blocker) => ` - ${blocker}`));
|
|
181
|
-
return lines;
|
|
182
|
-
}
|
|
183
|
-
const adopt = formatAdoptThenSplitRemedy(strongest, input.newPatchName, input.insertionOrder);
|
|
184
|
-
if (unregistered.length > 0) {
|
|
185
|
-
adopt.splice(1, 0, 'Only if the export still fails once those modules are registered:');
|
|
186
|
-
}
|
|
187
|
-
lines.push(...adopt, `Matched lines: ${claim}`, ...formatMatchedBlocks(strongest));
|
|
188
|
-
return lines;
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Renders the adopt-then-split remedy for the strongest overlap, as lines
|
|
192
|
-
* appended to the refusal's detail list.
|
|
193
|
-
*
|
|
194
|
-
* @param strongest - The strongest overlap {@link detectMovedCodeOverlaps} found
|
|
195
|
-
* @param newPatchName - The filename the pending export would take
|
|
196
|
-
* @param insertionOrder - The order the pending export would take
|
|
197
|
-
* @returns Detail lines
|
|
198
|
-
*/
|
|
199
|
-
function formatAdoptThenSplitRemedy(strongest, newPatchName, insertionOrder) {
|
|
200
|
-
const fileArgs = strongest.files.map((file) => `--scan-file ${file}`).join(' ');
|
|
201
|
-
const moveArgs = strongest.files.map((file) => `--file ${file}`).join(' ');
|
|
202
|
-
// `patch move-files --create` takes the new patch's name, not a
|
|
203
|
-
// filename: strip the order prefix and the `.patch` suffix so the
|
|
204
|
-
// suggested command is copy-pasteable.
|
|
205
|
-
const suggestedName = newPatchName.replace(/^\d+-/, '').replace(/\.patch$/, '');
|
|
206
|
-
return [
|
|
207
|
-
'',
|
|
208
|
-
`This looks like a new-file + moved-code slice: ${strongest.sharedLines} substantive ` +
|
|
209
|
-
`line(s) the new file(s) would add are still carried by ${strongest.sourcePatch}. ` +
|
|
210
|
-
'Exporting them as their own patch cannot pass cross-patch lint while the source patch ' +
|
|
211
|
-
'still owns the same code, and re-exporting cannot adopt them while they are unmanaged — ' +
|
|
212
|
-
'each guard is right, and together they dead-end.',
|
|
213
|
-
'Working sequence (adopt, then split):',
|
|
214
|
-
` 1. fireforge re-export ${strongest.sourcePatch} --scan ${fileArgs}`,
|
|
215
|
-
` 2. fireforge patch move-files ${strongest.sourcePatch} ${suggestedName} --create --order ${insertionOrder} ${moveArgs}`,
|
|
216
|
-
'Step 1 adopts the new files into the patch that already owns the moved lines; step 2 ' +
|
|
217
|
-
'splits them back out as one transaction, so the queue is never in a state where two ' +
|
|
218
|
-
'patches own the same code.',
|
|
219
|
-
];
|
|
220
|
-
}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Filename of a lock directory's owner record, relative to the lock dir.
|
|
3
|
-
*
|
|
4
|
-
* Re-exported by `file-lock.ts` so external readers (`tree-store.ts`) share
|
|
5
|
-
* the constant instead of re-spelling `'pid'`. The file format is
|
|
6
|
-
* documented on {@link readLockOwner}.
|
|
7
|
-
*/
|
|
8
|
-
export declare const LOCK_PID_FILE = "pid";
|
|
9
|
-
/**
|
|
10
|
-
* Owner record read back from a lock directory's PID file.
|
|
11
|
-
*
|
|
12
|
-
* `token` is the per-acquisition UUID written on line 2 of the PID file,
|
|
13
|
-
* `acquiredAtMs` the wall-clock time the record was written (diagnostic),
|
|
14
|
-
* and `startTick` the writer's boot-relative start tick (liveness). Records
|
|
15
|
-
* from releases before a field was introduced parse with it `undefined`.
|
|
16
|
-
* Readers must treat that as "unknown", never as a mismatch.
|
|
17
|
-
*/
|
|
18
|
-
export type LockOwner = {
|
|
19
|
-
present: false;
|
|
20
|
-
} | {
|
|
21
|
-
present: true;
|
|
22
|
-
pid: number;
|
|
23
|
-
token?: string;
|
|
24
|
-
acquiredAtMs?: number;
|
|
25
|
-
startTick?: number;
|
|
26
|
-
metadata: string[];
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* Reads the owner PID (line 1), acquisition token (line 2), the mechanical
|
|
30
|
-
* `acquired-at-ms=` / `start-tick=` lines (when present), and diagnostic
|
|
31
|
-
* metadata (the remaining lines 3+) from a lock directory's PID file.
|
|
32
|
-
* Returns `{ present: false }` when the PID file is missing, unreadable, or
|
|
33
|
-
* the PID does not parse as a finite integer (caller falls back to the
|
|
34
|
-
* age-only staleness heuristic).
|
|
35
|
-
*
|
|
36
|
-
* File format note: external readers do `parseInt(content.trim(), 10)`,
|
|
37
|
-
* which parses the leading digits of a multi-line file, so the token and
|
|
38
|
-
* mechanical lines stay compatible.
|
|
39
|
-
*
|
|
40
|
-
* @param lockPath - Lock directory whose owner record to read
|
|
41
|
-
* @returns The parsed owner record, or `{ present: false }`
|
|
42
|
-
*/
|
|
43
|
-
export declare function readLockOwner(lockPath: string): Promise<LockOwner>;
|
|
44
|
-
/**
|
|
45
|
-
* Stamps this process's ownership (PID, per-acquisition token, acquisition
|
|
46
|
-
* time, own start tick, diagnostic metadata) into a lock directory it has
|
|
47
|
-
* just created, and reads the record back to prove it landed.
|
|
48
|
-
*
|
|
49
|
-
* The write is fatal rather than best-effort. Stale recovery could fall
|
|
50
|
-
* back to the age heuristic, but that heuristic reaps any owner-less lock
|
|
51
|
-
* after five minutes, and the build lock legitimately holds for hours. A
|
|
52
|
-
* holder whose record failed to write would be reaped mid-build and a
|
|
53
|
-
* second process would enter the critical section. On
|
|
54
|
-
* failure the just-created lock directory is removed (nothing else can own
|
|
55
|
-
* it yet) and a {@link GeneralError} names the cause.
|
|
56
|
-
*
|
|
57
|
-
* @param lockPath - Lock directory this process has just `mkdir`'d
|
|
58
|
-
* @param token - Per-acquisition UUID, later checked by release
|
|
59
|
-
* @param ownerMetadata - Extra human-diagnostic lines (see `FileLockOptions.ownerMetadata`)
|
|
60
|
-
* @throws {GeneralError} When the record cannot be written or does not read back as written
|
|
61
|
-
*/
|
|
62
|
-
export declare function writeLockOwner(lockPath: string, token: string, ownerMetadata: readonly string[] | undefined): Promise<void>;
|
|
63
|
-
/**
|
|
64
|
-
* Boot-relative start tick of a process, where the platform exposes it
|
|
65
|
-
* cheaply.
|
|
66
|
-
*
|
|
67
|
-
* Linux only: field 22 of `/proc/<pid>/stat`, in USER_HZ since boot.
|
|
68
|
-
* Elsewhere (macOS, Windows) obtaining a start time means spawning
|
|
69
|
-
* `ps`/`wmic` per probe, which is not worth paying on every poll of a
|
|
70
|
-
* contended lock. Those platforms return `undefined` and liveness stays
|
|
71
|
-
* PID-only.
|
|
72
|
-
*
|
|
73
|
-
* Not converted to wall-clock time via `/proc/stat` `btime`, on purpose:
|
|
74
|
-
* on current kernels `btime` is derived from the realtime clock and moves
|
|
75
|
-
* with every clock step, so a wall-clock comparison against a recorded
|
|
76
|
-
* acquisition time misjudges a live holder as a reused PID after NTP steps
|
|
77
|
-
* the clock forward, and reaps a lock that is in use.
|
|
78
|
-
*
|
|
79
|
-
* @param pid - Process to look up
|
|
80
|
-
* @param procRoot - procfs mount, overridable for tests
|
|
81
|
-
* @returns Start tick, or `undefined` when unobtainable
|
|
82
|
-
*/
|
|
83
|
-
export declare function readProcessStartTick(pid: number, procRoot?: string): number | undefined;
|
|
84
|
-
/**
|
|
85
|
-
* Whether the process named by a lock's owner record is the same process
|
|
86
|
-
* that acquired the lock, not merely a live process wearing its PID.
|
|
87
|
-
*
|
|
88
|
-
* `isProcessAlive` answers "does this PID exist". After a holder crashes,
|
|
89
|
-
* the kernel may hand its PID to a long-lived daemon, and a PID-only check
|
|
90
|
-
* then honours the dead lock until the waiter's timeout. Where the record
|
|
91
|
-
* carries the writer's start tick and the candidate's own tick is cheaply
|
|
92
|
-
* obtainable (see {@link readProcessStartTick}), the two must be equal: a
|
|
93
|
-
* different tick is a different process. Records without a start tick, and
|
|
94
|
-
* platforms without one, keep the PID-only answer.
|
|
95
|
-
*
|
|
96
|
-
* @param owner - Owner record fields that identify the holder
|
|
97
|
-
* @param procRoot - procfs mount, overridable for tests
|
|
98
|
-
* @returns True when the original holder is still running (or cannot be proven gone)
|
|
99
|
-
*/
|
|
100
|
-
export declare function isLockOwnerAlive(owner: {
|
|
101
|
-
pid: number;
|
|
102
|
-
startTick?: number | undefined;
|
|
103
|
-
}, procRoot?: string): boolean;
|
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: EUPL-1.2
|
|
2
|
-
/**
|
|
3
|
-
* Owner record of a `withFileLock` directory: the file that says which
|
|
4
|
-
* process holds the lock, so stale recovery can tell a dead holder from a
|
|
5
|
-
* slow one and release can refuse to remove a lock it no longer owns.
|
|
6
|
-
*
|
|
7
|
-
* Split out of `file-lock.ts` so the record's format, its write-and-verify
|
|
8
|
-
* contract, and the PID-reuse guard live in one place with their own tests.
|
|
9
|
-
*/
|
|
10
|
-
import { readFileSync } from 'node:fs';
|
|
11
|
-
import { readFile, rm, writeFile } from 'node:fs/promises';
|
|
12
|
-
import { join } from 'node:path';
|
|
13
|
-
import { GeneralError } from '../errors/base.js';
|
|
14
|
-
import { isProcessAlive, toError } from '../utils/errors.js';
|
|
15
|
-
import { verbose } from '../utils/logger.js';
|
|
16
|
-
import { sleep } from '../utils/sleep.js';
|
|
17
|
-
/**
|
|
18
|
-
* Filename of a lock directory's owner record, relative to the lock dir.
|
|
19
|
-
*
|
|
20
|
-
* Re-exported by `file-lock.ts` so external readers (`tree-store.ts`) share
|
|
21
|
-
* the constant instead of re-spelling `'pid'`. The file format is
|
|
22
|
-
* documented on {@link readLockOwner}.
|
|
23
|
-
*/
|
|
24
|
-
export const LOCK_PID_FILE = 'pid';
|
|
25
|
-
/**
|
|
26
|
-
* Prefix of the mechanical owner-record line that carries the acquisition
|
|
27
|
-
* wall time. It lives among the metadata lines (line 3 onward) so older
|
|
28
|
-
* readers, which treat everything past line 2 as free-form diagnostics,
|
|
29
|
-
* still parse the record. The current reader lifts it out of `metadata`.
|
|
30
|
-
* Diagnostic only. See {@link START_TICK_PREFIX} for the liveness field.
|
|
31
|
-
*/
|
|
32
|
-
const ACQUIRED_AT_PREFIX = 'acquired-at-ms=';
|
|
33
|
-
/**
|
|
34
|
-
* Prefix of the owner-record line carrying the holder's own process start
|
|
35
|
-
* tick (`/proc/self/stat` field 22, in USER_HZ since boot). Written only
|
|
36
|
-
* where procfs exposes it (Linux). Boot-relative ticks are what the
|
|
37
|
-
* PID-reuse guard compares: unlike a wall-clock time they are immune to
|
|
38
|
-
* the clock being stepped by NTP/chrony/`date -s` between acquisition and
|
|
39
|
-
* probe, and a process's start tick never changes for its lifetime, so the
|
|
40
|
-
* comparison is exact rather than a tolerance window.
|
|
41
|
-
*/
|
|
42
|
-
const START_TICK_PREFIX = 'start-tick=';
|
|
43
|
-
/**
|
|
44
|
-
* How many times the post-write read-back is retried when the read itself
|
|
45
|
-
* errors (not when the record is absent or differs). An on-access scanner
|
|
46
|
-
* on Windows briefly holding the just-written file (`EBUSY`), or a FUSE
|
|
47
|
-
* mount's momentary `EIO`, must not be indistinguishable from "the record
|
|
48
|
-
* never landed": that verdict releases a lock this process has correctly
|
|
49
|
-
* acquired and aborts the run before it starts.
|
|
50
|
-
*/
|
|
51
|
-
const READ_BACK_ATTEMPTS = 5;
|
|
52
|
-
/** Pause between read-back attempts. */
|
|
53
|
-
const READ_BACK_RETRY_MS = 20;
|
|
54
|
-
/**
|
|
55
|
-
* Parses the on-disk record text. Returns `undefined` when the PID line
|
|
56
|
-
* does not parse as a finite integer.
|
|
57
|
-
*/
|
|
58
|
-
function parseLockOwnerRecord(pidContent) {
|
|
59
|
-
const [pidLine, tokenLine, ...trailingLines] = pidContent.split('\n');
|
|
60
|
-
const pid = parseInt((pidLine ?? '').trim(), 10);
|
|
61
|
-
if (!Number.isFinite(pid))
|
|
62
|
-
return undefined;
|
|
63
|
-
const metadata = [];
|
|
64
|
-
let acquiredAtMs;
|
|
65
|
-
let startTick;
|
|
66
|
-
for (const rawLine of trailingLines) {
|
|
67
|
-
const line = rawLine.trim();
|
|
68
|
-
if (line.length === 0)
|
|
69
|
-
continue;
|
|
70
|
-
if (line.startsWith(ACQUIRED_AT_PREFIX)) {
|
|
71
|
-
const parsed = Number.parseInt(line.slice(ACQUIRED_AT_PREFIX.length), 10);
|
|
72
|
-
if (Number.isFinite(parsed))
|
|
73
|
-
acquiredAtMs ??= parsed;
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
if (line.startsWith(START_TICK_PREFIX)) {
|
|
77
|
-
const parsed = Number.parseInt(line.slice(START_TICK_PREFIX.length), 10);
|
|
78
|
-
if (Number.isFinite(parsed))
|
|
79
|
-
startTick ??= parsed;
|
|
80
|
-
continue;
|
|
81
|
-
}
|
|
82
|
-
metadata.push(line);
|
|
83
|
-
}
|
|
84
|
-
const token = tokenLine?.trim();
|
|
85
|
-
const owner = { present: true, pid, metadata };
|
|
86
|
-
if (token !== undefined && token.length > 0)
|
|
87
|
-
owner.token = token;
|
|
88
|
-
if (acquiredAtMs !== undefined)
|
|
89
|
-
owner.acquiredAtMs = acquiredAtMs;
|
|
90
|
-
if (startTick !== undefined)
|
|
91
|
-
owner.startTick = startTick;
|
|
92
|
-
return owner;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Reads the owner PID (line 1), acquisition token (line 2), the mechanical
|
|
96
|
-
* `acquired-at-ms=` / `start-tick=` lines (when present), and diagnostic
|
|
97
|
-
* metadata (the remaining lines 3+) from a lock directory's PID file.
|
|
98
|
-
* Returns `{ present: false }` when the PID file is missing, unreadable, or
|
|
99
|
-
* the PID does not parse as a finite integer (caller falls back to the
|
|
100
|
-
* age-only staleness heuristic).
|
|
101
|
-
*
|
|
102
|
-
* File format note: external readers do `parseInt(content.trim(), 10)`,
|
|
103
|
-
* which parses the leading digits of a multi-line file, so the token and
|
|
104
|
-
* mechanical lines stay compatible.
|
|
105
|
-
*
|
|
106
|
-
* @param lockPath - Lock directory whose owner record to read
|
|
107
|
-
* @returns The parsed owner record, or `{ present: false }`
|
|
108
|
-
*/
|
|
109
|
-
export async function readLockOwner(lockPath) {
|
|
110
|
-
try {
|
|
111
|
-
const owner = parseLockOwnerRecord(await readFile(join(lockPath, LOCK_PID_FILE), 'utf-8'));
|
|
112
|
-
if (owner !== undefined)
|
|
113
|
-
return owner;
|
|
114
|
-
}
|
|
115
|
-
catch {
|
|
116
|
-
// PID file missing or unreadable. Treat as absent.
|
|
117
|
-
}
|
|
118
|
-
return { present: false };
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Reads the just-written record back, retrying a read error a few times
|
|
122
|
-
* before giving up. A missing or malformed record is returned as-is (the
|
|
123
|
-
* caller treats it as a failed write). Only errno-level failures retry.
|
|
124
|
-
*/
|
|
125
|
-
async function readBackLockOwner(lockPath) {
|
|
126
|
-
let lastError;
|
|
127
|
-
for (let attempt = 0; attempt < READ_BACK_ATTEMPTS; attempt++) {
|
|
128
|
-
try {
|
|
129
|
-
return parseLockOwnerRecord(await readFile(join(lockPath, LOCK_PID_FILE), 'utf-8'));
|
|
130
|
-
}
|
|
131
|
-
catch (error) {
|
|
132
|
-
lastError = error;
|
|
133
|
-
if (attempt < READ_BACK_ATTEMPTS - 1)
|
|
134
|
-
await sleep(READ_BACK_RETRY_MS);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
throw new Error(`owner record could not be read back: ${toError(lastError).message}`);
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Stamps this process's ownership (PID, per-acquisition token, acquisition
|
|
141
|
-
* time, own start tick, diagnostic metadata) into a lock directory it has
|
|
142
|
-
* just created, and reads the record back to prove it landed.
|
|
143
|
-
*
|
|
144
|
-
* The write is fatal rather than best-effort. Stale recovery could fall
|
|
145
|
-
* back to the age heuristic, but that heuristic reaps any owner-less lock
|
|
146
|
-
* after five minutes, and the build lock legitimately holds for hours. A
|
|
147
|
-
* holder whose record failed to write would be reaped mid-build and a
|
|
148
|
-
* second process would enter the critical section. On
|
|
149
|
-
* failure the just-created lock directory is removed (nothing else can own
|
|
150
|
-
* it yet) and a {@link GeneralError} names the cause.
|
|
151
|
-
*
|
|
152
|
-
* @param lockPath - Lock directory this process has just `mkdir`'d
|
|
153
|
-
* @param token - Per-acquisition UUID, later checked by release
|
|
154
|
-
* @param ownerMetadata - Extra human-diagnostic lines (see `FileLockOptions.ownerMetadata`)
|
|
155
|
-
* @throws {GeneralError} When the record cannot be written or does not read back as written
|
|
156
|
-
*/
|
|
157
|
-
export async function writeLockOwner(lockPath, token, ownerMetadata) {
|
|
158
|
-
const metadata = ownerMetadata
|
|
159
|
-
?.map((line) => line.replace(/\r?\n/g, ' ').trim())
|
|
160
|
-
.filter((line) => line.length > 0 &&
|
|
161
|
-
!line.startsWith(ACQUIRED_AT_PREFIX) &&
|
|
162
|
-
!line.startsWith(START_TICK_PREFIX)) ?? [];
|
|
163
|
-
const ownStartTick = readProcessStartTick(process.pid);
|
|
164
|
-
const mechanicalLines = [
|
|
165
|
-
`${ACQUIRED_AT_PREFIX}${Date.now()}`,
|
|
166
|
-
...(ownStartTick === undefined ? [] : [`${START_TICK_PREFIX}${ownStartTick}`]),
|
|
167
|
-
];
|
|
168
|
-
const record = `${process.pid}\n${token}\n${[...mechanicalLines, ...metadata].map((line) => `${line}\n`).join('')}`;
|
|
169
|
-
let failure;
|
|
170
|
-
try {
|
|
171
|
-
await writeFile(join(lockPath, LOCK_PID_FILE), record, 'utf-8');
|
|
172
|
-
const readBack = await readBackLockOwner(lockPath);
|
|
173
|
-
if (readBack !== undefined && readBack.pid === process.pid && readBack.token === token) {
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
failure = new Error('owner record did not read back as written');
|
|
177
|
-
}
|
|
178
|
-
catch (error) {
|
|
179
|
-
failure = error;
|
|
180
|
-
}
|
|
181
|
-
try {
|
|
182
|
-
await rm(lockPath, { recursive: true, force: true });
|
|
183
|
-
}
|
|
184
|
-
catch (cleanupError) {
|
|
185
|
-
verbose(`Could not remove unowned lock ${lockPath}: ${toError(cleanupError).message}`);
|
|
186
|
-
}
|
|
187
|
-
throw new GeneralError(`Could not record ownership of lock ${lockPath}: ${toError(failure).message}. ` +
|
|
188
|
-
'The lock was released without running the operation — a lock with no readable owner ' +
|
|
189
|
-
'would be reaped as stale after five minutes and a second process could enter the ' +
|
|
190
|
-
'critical section. Check permissions and free space on the lock directory, then retry.', failure);
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Boot-relative start tick of a process, where the platform exposes it
|
|
194
|
-
* cheaply.
|
|
195
|
-
*
|
|
196
|
-
* Linux only: field 22 of `/proc/<pid>/stat`, in USER_HZ since boot.
|
|
197
|
-
* Elsewhere (macOS, Windows) obtaining a start time means spawning
|
|
198
|
-
* `ps`/`wmic` per probe, which is not worth paying on every poll of a
|
|
199
|
-
* contended lock. Those platforms return `undefined` and liveness stays
|
|
200
|
-
* PID-only.
|
|
201
|
-
*
|
|
202
|
-
* Not converted to wall-clock time via `/proc/stat` `btime`, on purpose:
|
|
203
|
-
* on current kernels `btime` is derived from the realtime clock and moves
|
|
204
|
-
* with every clock step, so a wall-clock comparison against a recorded
|
|
205
|
-
* acquisition time misjudges a live holder as a reused PID after NTP steps
|
|
206
|
-
* the clock forward, and reaps a lock that is in use.
|
|
207
|
-
*
|
|
208
|
-
* @param pid - Process to look up
|
|
209
|
-
* @param procRoot - procfs mount, overridable for tests
|
|
210
|
-
* @returns Start tick, or `undefined` when unobtainable
|
|
211
|
-
*/
|
|
212
|
-
export function readProcessStartTick(pid, procRoot = '/proc') {
|
|
213
|
-
try {
|
|
214
|
-
const stat = readFileSync(join(procRoot, String(pid), 'stat'), 'utf-8');
|
|
215
|
-
// `comm` (field 2) is parenthesised and may itself contain spaces or
|
|
216
|
-
// parentheses, so split only what follows the last closing paren:
|
|
217
|
-
// field 3 (state) is then index 0 and field 22 (starttime) index 19.
|
|
218
|
-
const startTick = Number.parseInt(stat
|
|
219
|
-
.slice(stat.lastIndexOf(')') + 1)
|
|
220
|
-
.trim()
|
|
221
|
-
.split(/\s+/)[19] ?? '', 10);
|
|
222
|
-
return Number.isFinite(startTick) ? startTick : undefined;
|
|
223
|
-
}
|
|
224
|
-
catch {
|
|
225
|
-
return undefined;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Whether the process named by a lock's owner record is the same process
|
|
230
|
-
* that acquired the lock, not merely a live process wearing its PID.
|
|
231
|
-
*
|
|
232
|
-
* `isProcessAlive` answers "does this PID exist". After a holder crashes,
|
|
233
|
-
* the kernel may hand its PID to a long-lived daemon, and a PID-only check
|
|
234
|
-
* then honours the dead lock until the waiter's timeout. Where the record
|
|
235
|
-
* carries the writer's start tick and the candidate's own tick is cheaply
|
|
236
|
-
* obtainable (see {@link readProcessStartTick}), the two must be equal: a
|
|
237
|
-
* different tick is a different process. Records without a start tick, and
|
|
238
|
-
* platforms without one, keep the PID-only answer.
|
|
239
|
-
*
|
|
240
|
-
* @param owner - Owner record fields that identify the holder
|
|
241
|
-
* @param procRoot - procfs mount, overridable for tests
|
|
242
|
-
* @returns True when the original holder is still running (or cannot be proven gone)
|
|
243
|
-
*/
|
|
244
|
-
export function isLockOwnerAlive(owner, procRoot) {
|
|
245
|
-
if (!isProcessAlive(owner.pid))
|
|
246
|
-
return false;
|
|
247
|
-
if (owner.startTick === undefined)
|
|
248
|
-
return true;
|
|
249
|
-
const currentStartTick = readProcessStartTick(owner.pid, procRoot);
|
|
250
|
-
if (currentStartTick === undefined)
|
|
251
|
-
return true;
|
|
252
|
-
if (currentStartTick !== owner.startTick) {
|
|
253
|
-
verbose(`Lock owner PID ${owner.pid} started at tick ${currentStartTick}, but the ` +
|
|
254
|
-
`record was written by a process started at tick ${owner.startTick} — the PID was ` +
|
|
255
|
-
'reused; treating the holder as dead');
|
|
256
|
-
return false;
|
|
257
|
-
}
|
|
258
|
-
return true;
|
|
259
|
-
}
|