@hominis/fireforge 0.54.0 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +287 -6
- package/README.md +51 -17
- package/dist/bin/fireforge.js +34 -129
- package/dist/build-info.json +4 -4
- package/dist/src/check/check.js +394 -0
- package/dist/src/check/gate.js +448 -0
- package/dist/src/check/index.js +10 -0
- package/dist/src/check/record.js +155 -0
- package/dist/src/cli/command.js +286 -0
- package/dist/src/cli/output.js +96 -0
- package/dist/src/cli/program.js +231 -0
- package/dist/src/cli/stdio.js +59 -0
- package/dist/src/cli/version.js +99 -0
- package/dist/src/commands/bootstrap.js +17 -102
- package/dist/src/commands/build.js +34 -438
- package/dist/src/commands/check.js +44 -157
- package/dist/src/commands/config.js +50 -226
- package/dist/src/commands/discard.js +38 -215
- package/dist/src/commands/doctor.js +29 -456
- package/dist/src/commands/download.js +35 -499
- package/dist/src/commands/export.js +42 -431
- package/dist/src/commands/furnace.js +220 -0
- package/dist/src/commands/gate.js +127 -0
- package/dist/src/commands/import.js +44 -445
- package/dist/src/commands/index.js +86 -0
- package/dist/src/commands/lint.js +44 -546
- package/dist/src/commands/merge-driver.js +56 -0
- package/dist/src/commands/migrate.js +75 -0
- package/dist/src/commands/override.js +43 -0
- package/dist/src/commands/package.js +48 -77
- package/dist/src/commands/patch.js +221 -0
- package/dist/src/commands/re-export.js +55 -332
- package/dist/src/commands/rebase.js +69 -0
- package/dist/src/commands/register.js +62 -103
- package/dist/src/commands/reset.js +28 -91
- package/dist/src/commands/resolve.js +20 -167
- package/dist/src/commands/restore.js +19 -0
- package/dist/src/commands/run.js +60 -420
- package/dist/src/commands/setup.js +78 -90
- package/dist/src/commands/status.js +44 -413
- package/dist/src/commands/test.js +97 -422
- package/dist/src/commands/token.js +185 -228
- package/dist/src/commands/typecheck.js +59 -208
- package/dist/src/commands/verify.js +28 -334
- package/dist/src/commands/version.js +14 -0
- package/dist/src/commands/watch.js +20 -218
- package/dist/src/commands/wire.js +60 -349
- package/dist/src/commands/workspace.js +117 -0
- package/dist/src/config/edit.js +237 -0
- package/dist/src/config/index.js +15 -0
- package/dist/src/config/load.js +59 -0
- package/dist/src/config/previous.js +404 -0
- package/dist/src/config/schema/build.js +63 -0
- package/dist/src/config/schema/check.js +113 -0
- package/dist/src/config/schema/common.js +71 -0
- package/dist/src/config/schema/export-queue.js +36 -0
- package/dist/src/config/schema/firefox.js +69 -0
- package/dist/src/config/schema/gate.js +199 -0
- package/dist/src/config/schema/identity.js +55 -0
- package/dist/src/config/schema/index.js +45 -0
- package/dist/src/config/schema/lint.js +297 -0
- package/dist/src/config/schema/policy.js +111 -0
- package/dist/src/config/schema/source.js +90 -0
- package/dist/src/config/schema/test.js +17 -0
- package/dist/src/config/schema/toolchains.js +17 -0
- package/dist/src/config/schema/typecheck.js +29 -0
- package/dist/src/config/schema/wire.js +15 -0
- package/dist/src/diff/apply.js +129 -0
- package/dist/src/diff/index.js +16 -0
- package/dist/src/diff/model.js +267 -0
- package/dist/src/diff/query.js +65 -0
- package/dist/src/doctor/index.js +240 -0
- package/dist/src/engine/archive.js +396 -0
- package/dist/src/engine/audit.js +66 -0
- package/dist/src/engine/build.js +150 -0
- package/dist/src/engine/hostLocks.js +66 -0
- package/dist/src/engine/index.js +26 -0
- package/dist/src/engine/installManifests.js +147 -0
- package/dist/src/engine/mach.js +97 -0
- package/dist/src/engine/machHints.js +80 -0
- package/dist/src/engine/mozconfig.js +110 -0
- package/dist/src/engine/objdir.js +124 -0
- package/dist/src/engine/package.js +169 -0
- package/dist/src/engine/pin.js +12 -0
- package/dist/src/engine/pool.js +423 -0
- package/dist/src/engine/pristine.js +281 -0
- package/dist/src/engine/python.js +68 -0
- package/dist/src/engine/resourceGuard.js +582 -0
- package/dist/src/engine/run.js +259 -0
- package/dist/src/engine/smoke.js +204 -0
- package/dist/src/engine/staleness.js +229 -0
- package/dist/src/engine/watch.js +82 -0
- package/dist/src/engine/workspace.js +85 -0
- package/dist/src/furnace/config.js +360 -0
- package/dist/src/furnace/deploy.js +414 -0
- package/dist/src/furnace/diff.js +59 -0
- package/dist/src/furnace/edit.js +64 -0
- package/dist/src/furnace/fragments.js +53 -0
- package/dist/src/furnace/index.js +19 -0
- package/dist/src/furnace/operations.js +283 -0
- package/dist/src/furnace/registration.js +220 -0
- package/dist/src/furnace/scaffold.js +311 -0
- package/dist/src/furnace/typing.js +252 -0
- package/dist/src/furnace/validate.js +662 -0
- package/dist/src/git/apply.js +129 -0
- package/dist/src/git/diff.js +143 -0
- package/dist/src/git/index.js +33 -0
- package/dist/src/git/objects.js +201 -0
- package/dist/src/git/refs.js +85 -0
- package/dist/src/git/repo.js +222 -0
- package/dist/src/git/run.js +242 -0
- package/dist/src/git/status.js +156 -0
- package/dist/src/kernel/errors.js +123 -0
- package/dist/src/kernel/fs.js +515 -0
- package/dist/src/kernel/glob.js +63 -0
- package/dist/src/kernel/hash.js +28 -0
- package/dist/src/kernel/journal.js +524 -0
- package/dist/src/kernel/json-edit.js +198 -0
- package/dist/src/kernel/json.js +101 -0
- package/dist/src/kernel/lock.js +589 -0
- package/dist/src/kernel/log.js +154 -0
- package/dist/src/kernel/process/identity.js +313 -0
- package/dist/src/kernel/process/index.js +8 -0
- package/dist/src/kernel/process/listing.js +128 -0
- package/dist/src/kernel/process/spawn.js +430 -0
- package/dist/src/kernel/process/tree.js +301 -0
- package/dist/src/kernel/schema.js +308 -0
- package/dist/src/kernel/signals.js +171 -0
- package/dist/src/kernel/text.js +151 -0
- package/dist/src/kernel/time.js +83 -0
- package/dist/src/kernel/tty.js +84 -0
- package/dist/src/lint/cache.js +77 -0
- package/dist/src/lint/checkjs.js +400 -0
- package/dist/src/lint/index.js +3 -0
- package/dist/src/lint/input.js +100 -0
- package/dist/src/lint/report.js +107 -0
- package/dist/src/lint/rule.js +41 -0
- package/dist/src/lint/rules/css.js +308 -0
- package/dist/src/lint/rules/javascript.js +299 -0
- package/dist/src/lint/rules/jsdoc.js +249 -0
- package/dist/src/lint/rules/license.js +93 -0
- package/dist/src/lint/rules/policy.js +201 -0
- package/dist/src/lint/rules/registration.js +264 -0
- package/dist/src/lint/rules/size.js +299 -0
- package/dist/src/lint/run.js +126 -0
- package/dist/src/lint/shim.js +323 -0
- package/dist/src/lint/typescript.js +186 -0
- package/dist/src/lint/waivers.js +93 -0
- package/dist/src/mode/changes.js +264 -0
- package/dist/src/mode/diagnose.js +173 -0
- package/dist/src/mode/export.js +147 -0
- package/dist/src/mode/index.js +23 -0
- package/dist/src/mode/migrate.js +181 -0
- package/dist/src/mode/previousWaivers.js +206 -0
- package/dist/src/mode/pristine.js +61 -0
- package/dist/src/mode/rebase.js +197 -0
- package/dist/src/mode/report.js +157 -0
- package/dist/src/mode/setup.js +103 -0
- package/dist/src/mode/tracked.js +116 -0
- package/dist/src/mode/upgrade.js +281 -0
- package/dist/src/mode/watch.js +83 -0
- package/dist/src/mode/workspace.js +189 -0
- package/dist/src/mozbuild/index.js +6 -0
- package/dist/src/mozbuild/jar.js +366 -0
- package/dist/src/mozbuild/mozbuild.js +321 -0
- package/dist/src/mozbuild/paths.js +96 -0
- package/dist/src/mozbuild/references.js +39 -0
- package/dist/src/mozbuild/testManifest.js +343 -0
- package/dist/src/mozbuild/text.js +142 -0
- package/dist/src/project/changes.js +145 -0
- package/dist/src/project/checkout.js +66 -0
- package/dist/src/project/index.js +11 -0
- package/dist/src/project/license.js +119 -0
- package/dist/src/project/project.js +111 -0
- package/dist/src/project/state.js +85 -0
- package/dist/src/project/tracked.js +1 -0
- package/dist/src/queue/apply.js +270 -0
- package/dist/src/queue/attribute.js +159 -0
- package/dist/src/queue/baseline.js +409 -0
- package/dist/src/queue/capture.js +298 -0
- package/dist/src/queue/changes.js +234 -0
- package/dist/src/queue/index.js +50 -0
- package/dist/src/queue/manifest.js +341 -0
- package/dist/src/queue/operations.js +454 -0
- package/dist/src/queue/placement.js +220 -0
- package/dist/src/queue/queue.js +359 -0
- package/dist/src/queue/restore.js +103 -0
- package/dist/src/queue/session.js +685 -0
- package/dist/src/queue/status.js +137 -0
- package/dist/src/register/files.js +39 -0
- package/dist/src/register/index.js +8 -0
- package/dist/src/register/js.js +217 -0
- package/dist/src/register/register.js +359 -0
- package/dist/src/register/wire.js +146 -0
- package/dist/src/source/adopt.js +99 -0
- package/dist/src/source/changes.js +132 -0
- package/dist/src/source/edit.js +278 -0
- package/dist/src/source/export.js +70 -0
- package/dist/src/source/groups.js +131 -0
- package/dist/src/source/index.js +20 -0
- package/dist/src/source/materialize.js +382 -0
- package/dist/src/source/merge.js +255 -0
- package/dist/src/source/objects.js +102 -0
- package/dist/src/source/previous.js +166 -0
- package/dist/src/source/records.js +138 -0
- package/dist/src/source/refresh.js +264 -0
- package/dist/src/source/tree.js +337 -0
- package/dist/src/syntax/css.js +215 -0
- package/dist/src/syntax/fragments.js +63 -0
- package/dist/src/syntax/index.js +10 -0
- package/dist/src/syntax/js.js +270 -0
- package/dist/src/test/classify.js +826 -0
- package/dist/src/test/control.js +236 -0
- package/dist/src/test/host.js +266 -0
- package/dist/src/test/index.js +11 -0
- package/dist/src/test/plan.js +347 -0
- package/dist/src/test/rawLog.js +138 -0
- package/dist/src/test/run.js +404 -0
- package/dist/src/test/verdict.js +420 -0
- package/dist/src/test/xpcshell.js +143 -0
- package/dist/src/tokens/add.js +304 -0
- package/dist/src/tokens/coverage.js +65 -0
- package/dist/src/tokens/css.js +58 -0
- package/dist/src/tokens/index.js +12 -0
- package/dist/src/tokens/lint.js +96 -0
- package/dist/src/tokens/model.js +118 -0
- package/dist/src/tokens/settings.js +87 -0
- package/dist/src/tokens/siblings.js +104 -0
- package/dist/src/typecheck/explain.js +123 -0
- package/dist/src/typecheck/index.js +8 -0
- package/dist/src/typecheck/typecheck.js +332 -0
- package/docs/README.md +23 -28
- package/docs/authoring.md +97 -0
- package/docs/configuration.md +307 -692
- package/docs/exit-codes.md +76 -94
- package/docs/furnace.md +113 -181
- package/docs/gate.md +205 -0
- package/docs/getting-started.md +165 -0
- package/docs/machine-output.md +201 -277
- package/docs/migrating.md +261 -0
- package/docs/patch-workflow.md +163 -653
- package/docs/quality.md +220 -0
- package/docs/source-workflow.md +228 -0
- package/docs/testing.md +101 -712
- package/docs/workspaces.md +187 -0
- package/package.json +22 -30
- package/templates/configs/common.mozconfig +8 -2
- package/templates/configs/darwin.mozconfig +6 -7
- package/templates/configs/linux.mozconfig +5 -8
- package/templates/configs/win32.mozconfig +3 -9
- package/dist/bin/fireforge.d.ts +0 -9
- package/dist/src/cli-usage-error.d.ts +0 -46
- package/dist/src/cli-usage-error.js +0 -81
- package/dist/src/cli.d.ts +0 -41
- package/dist/src/cli.js +0 -380
- package/dist/src/commands/bootstrap-checks.d.ts +0 -16
- package/dist/src/commands/bootstrap-checks.js +0 -66
- package/dist/src/commands/bootstrap.d.ts +0 -10
- package/dist/src/commands/build-prelock.d.ts +0 -20
- package/dist/src/commands/build-prelock.js +0 -50
- package/dist/src/commands/build.d.ts +0 -13
- package/dist/src/commands/check-report.d.ts +0 -41
- package/dist/src/commands/check-report.js +0 -91
- package/dist/src/commands/check-run.d.ts +0 -33
- package/dist/src/commands/check-run.js +0 -112
- package/dist/src/commands/check-steps.d.ts +0 -75
- package/dist/src/commands/check-steps.js +0 -200
- package/dist/src/commands/check.d.ts +0 -32
- package/dist/src/commands/config.d.ts +0 -13
- package/dist/src/commands/declarations-report.d.ts +0 -49
- package/dist/src/commands/declarations-report.js +0 -83
- package/dist/src/commands/destructive-decision.d.ts +0 -19
- package/dist/src/commands/destructive-decision.js +0 -31
- package/dist/src/commands/discard.d.ts +0 -12
- package/dist/src/commands/doctor-check-core.d.ts +0 -110
- package/dist/src/commands/doctor-check-core.js +0 -24
- package/dist/src/commands/doctor-engine-eslint.d.ts +0 -3
- package/dist/src/commands/doctor-engine-eslint.js +0 -17
- package/dist/src/commands/doctor-external-toolchains.d.ts +0 -3
- package/dist/src/commands/doctor-external-toolchains.js +0 -56
- package/dist/src/commands/doctor-furnace-config-sync.d.ts +0 -18
- package/dist/src/commands/doctor-furnace-config-sync.js +0 -295
- package/dist/src/commands/doctor-furnace-jar.d.ts +0 -14
- package/dist/src/commands/doctor-furnace-jar.js +0 -44
- package/dist/src/commands/doctor-furnace.d.ts +0 -8
- package/dist/src/commands/doctor-furnace.js +0 -514
- package/dist/src/commands/doctor-macos-sdk.d.ts +0 -8
- package/dist/src/commands/doctor-macos-sdk.js +0 -158
- package/dist/src/commands/doctor-orphaned-harness.d.ts +0 -41
- package/dist/src/commands/doctor-orphaned-harness.js +0 -98
- package/dist/src/commands/doctor-patch-manifest.d.ts +0 -9
- package/dist/src/commands/doctor-patch-manifest.js +0 -156
- package/dist/src/commands/doctor-post-rebase-audit.d.ts +0 -2
- package/dist/src/commands/doctor-post-rebase-audit.js +0 -108
- package/dist/src/commands/doctor-source-pin.d.ts +0 -29
- package/dist/src/commands/doctor-source-pin.js +0 -91
- package/dist/src/commands/doctor-working-tree.d.ts +0 -27
- package/dist/src/commands/doctor-working-tree.js +0 -89
- package/dist/src/commands/doctor.d.ts +0 -49
- package/dist/src/commands/download.d.ts +0 -11
- package/dist/src/commands/export-adopt-check.d.ts +0 -37
- package/dist/src/commands/export-adopt-check.js +0 -97
- package/dist/src/commands/export-all.d.ts +0 -11
- package/dist/src/commands/export-all.js +0 -361
- package/dist/src/commands/export-flow.d.ts +0 -124
- package/dist/src/commands/export-flow.js +0 -423
- package/dist/src/commands/export-placement-conflicts.d.ts +0 -17
- package/dist/src/commands/export-placement-conflicts.js +0 -75
- package/dist/src/commands/export-placement-gate.d.ts +0 -42
- package/dist/src/commands/export-placement-gate.js +0 -107
- package/dist/src/commands/export-placement-policy.d.ts +0 -22
- package/dist/src/commands/export-placement-policy.js +0 -54
- package/dist/src/commands/export-shared.d.ts +0 -152
- package/dist/src/commands/export-shared.js +0 -396
- package/dist/src/commands/export-staged-registration.d.ts +0 -46
- package/dist/src/commands/export-staged-registration.js +0 -91
- package/dist/src/commands/export.d.ts +0 -13
- package/dist/src/commands/forward-import-remedy.d.ts +0 -31
- package/dist/src/commands/forward-import-remedy.js +0 -62
- package/dist/src/commands/furnace/apply.d.ts +0 -8
- package/dist/src/commands/furnace/apply.js +0 -327
- package/dist/src/commands/furnace/authoring-config.d.ts +0 -13
- package/dist/src/commands/furnace/authoring-config.js +0 -19
- package/dist/src/commands/furnace/chrome-doc-remove.d.ts +0 -14
- package/dist/src/commands/furnace/chrome-doc-remove.js +0 -148
- package/dist/src/commands/furnace/chrome-doc-templates.d.ts +0 -152
- package/dist/src/commands/furnace/chrome-doc-templates.js +0 -331
- package/dist/src/commands/furnace/chrome-doc-tests.d.ts +0 -23
- package/dist/src/commands/furnace/chrome-doc-tests.js +0 -148
- package/dist/src/commands/furnace/chrome-doc.d.ts +0 -87
- package/dist/src/commands/furnace/chrome-doc.js +0 -365
- package/dist/src/commands/furnace/create-browser-test.d.ts +0 -44
- package/dist/src/commands/furnace/create-browser-test.js +0 -179
- package/dist/src/commands/furnace/create-dry-run.d.ts +0 -49
- package/dist/src/commands/furnace/create-dry-run.js +0 -107
- package/dist/src/commands/furnace/create-features.d.ts +0 -24
- package/dist/src/commands/furnace/create-features.js +0 -55
- package/dist/src/commands/furnace/create-mochikit.d.ts +0 -29
- package/dist/src/commands/furnace/create-mochikit.js +0 -75
- package/dist/src/commands/furnace/create-readback.d.ts +0 -22
- package/dist/src/commands/furnace/create-readback.js +0 -32
- package/dist/src/commands/furnace/create-templates.d.ts +0 -119
- package/dist/src/commands/furnace/create-templates.js +0 -283
- package/dist/src/commands/furnace/create-validation.d.ts +0 -6
- package/dist/src/commands/furnace/create-validation.js +0 -59
- package/dist/src/commands/furnace/create-xpcshell.d.ts +0 -27
- package/dist/src/commands/furnace/create-xpcshell.js +0 -80
- package/dist/src/commands/furnace/create.d.ts +0 -24
- package/dist/src/commands/furnace/create.js +0 -407
- package/dist/src/commands/furnace/deploy-fragment-includers.d.ts +0 -59
- package/dist/src/commands/furnace/deploy-fragment-includers.js +0 -120
- package/dist/src/commands/furnace/deploy-named.d.ts +0 -48
- package/dist/src/commands/furnace/deploy-named.js +0 -107
- package/dist/src/commands/furnace/deploy.d.ts +0 -9
- package/dist/src/commands/furnace/deploy.js +0 -218
- package/dist/src/commands/furnace/diff.d.ts +0 -11
- package/dist/src/commands/furnace/diff.js +0 -238
- package/dist/src/commands/furnace/index.d.ts +0 -4
- package/dist/src/commands/furnace/index.js +0 -282
- package/dist/src/commands/furnace/init.d.ts +0 -11
- package/dist/src/commands/furnace/init.js +0 -287
- package/dist/src/commands/furnace/list.d.ts +0 -8
- package/dist/src/commands/furnace/list.js +0 -104
- package/dist/src/commands/furnace/override.d.ts +0 -16
- package/dist/src/commands/furnace/override.js +0 -454
- package/dist/src/commands/furnace/preview.d.ts +0 -19
- package/dist/src/commands/furnace/preview.js +0 -349
- package/dist/src/commands/furnace/refresh.d.ts +0 -10
- package/dist/src/commands/furnace/refresh.js +0 -303
- package/dist/src/commands/furnace/remove-mutations.d.ts +0 -36
- package/dist/src/commands/furnace/remove-mutations.js +0 -168
- package/dist/src/commands/furnace/remove-state.d.ts +0 -20
- package/dist/src/commands/furnace/remove-state.js +0 -60
- package/dist/src/commands/furnace/remove.d.ts +0 -8
- package/dist/src/commands/furnace/remove.js +0 -415
- package/dist/src/commands/furnace/rename-browser-test.d.ts +0 -2
- package/dist/src/commands/furnace/rename-browser-test.js +0 -68
- package/dist/src/commands/furnace/rename-dry-run.d.ts +0 -29
- package/dist/src/commands/furnace/rename-dry-run.js +0 -127
- package/dist/src/commands/furnace/rename-helpers.d.ts +0 -26
- package/dist/src/commands/furnace/rename-helpers.js +0 -85
- package/dist/src/commands/furnace/rename-registrations.d.ts +0 -41
- package/dist/src/commands/furnace/rename-registrations.js +0 -98
- package/dist/src/commands/furnace/rename-xpcshell.d.ts +0 -32
- package/dist/src/commands/furnace/rename-xpcshell.js +0 -95
- package/dist/src/commands/furnace/rename.d.ts +0 -6
- package/dist/src/commands/furnace/rename.js +0 -400
- package/dist/src/commands/furnace/scan.d.ts +0 -14
- package/dist/src/commands/furnace/scan.js +0 -192
- package/dist/src/commands/furnace/status.d.ts +0 -7
- package/dist/src/commands/furnace/status.js +0 -209
- package/dist/src/commands/furnace/sync.d.ts +0 -12
- package/dist/src/commands/furnace/sync.js +0 -145
- package/dist/src/commands/furnace/test-file-name.d.ts +0 -28
- package/dist/src/commands/furnace/test-file-name.js +0 -39
- package/dist/src/commands/furnace/validate-report.d.ts +0 -45
- package/dist/src/commands/furnace/validate-report.js +0 -91
- package/dist/src/commands/furnace/validate.d.ts +0 -8
- package/dist/src/commands/furnace/validate.js +0 -309
- package/dist/src/commands/furnace/validation-output.d.ts +0 -47
- package/dist/src/commands/furnace/validation-output.js +0 -161
- package/dist/src/commands/import.d.ts +0 -11
- package/dist/src/commands/lint-per-patch.d.ts +0 -10
- package/dist/src/commands/lint-per-patch.js +0 -428
- package/dist/src/commands/lint-per-run-checkjs.d.ts +0 -66
- package/dist/src/commands/lint-per-run-checkjs.js +0 -102
- package/dist/src/commands/lint-report.d.ts +0 -25
- package/dist/src/commands/lint-report.js +0 -76
- package/dist/src/commands/lint.d.ts +0 -47
- package/dist/src/commands/manifest.d.ts +0 -38
- package/dist/src/commands/manifest.js +0 -68
- package/dist/src/commands/package.d.ts +0 -11
- package/dist/src/commands/park.d.ts +0 -22
- package/dist/src/commands/park.js +0 -232
- package/dist/src/commands/patch/compact.d.ts +0 -28
- package/dist/src/commands/patch/compact.js +0 -208
- package/dist/src/commands/patch/delete-gap-notice.d.ts +0 -24
- package/dist/src/commands/patch/delete-gap-notice.js +0 -48
- package/dist/src/commands/patch/delete.d.ts +0 -28
- package/dist/src/commands/patch/delete.js +0 -131
- package/dist/src/commands/patch/entry-projection.d.ts +0 -13
- package/dist/src/commands/patch/entry-projection.js +0 -24
- package/dist/src/commands/patch/index.d.ts +0 -16
- package/dist/src/commands/patch/index.js +0 -52
- package/dist/src/commands/patch/lint-ignore-from.d.ts +0 -43
- package/dist/src/commands/patch/lint-ignore-from.js +0 -141
- package/dist/src/commands/patch/lint-ignore.d.ts +0 -42
- package/dist/src/commands/patch/lint-ignore.js +0 -261
- package/dist/src/commands/patch/move-files-adopt.d.ts +0 -33
- package/dist/src/commands/patch/move-files-adopt.js +0 -65
- package/dist/src/commands/patch/move-files-create.d.ts +0 -19
- package/dist/src/commands/patch/move-files-create.js +0 -187
- package/dist/src/commands/patch/move-files-into.d.ts +0 -65
- package/dist/src/commands/patch/move-files-into.js +0 -325
- package/dist/src/commands/patch/move-files-retire.d.ts +0 -39
- package/dist/src/commands/patch/move-files-retire.js +0 -91
- package/dist/src/commands/patch/move-files.d.ts +0 -28
- package/dist/src/commands/patch/move-files.js +0 -224
- package/dist/src/commands/patch/move-size-tier.d.ts +0 -27
- package/dist/src/commands/patch/move-size-tier.js +0 -66
- package/dist/src/commands/patch/patch-context.d.ts +0 -40
- package/dist/src/commands/patch/patch-context.js +0 -51
- package/dist/src/commands/patch/removal-created-files.d.ts +0 -48
- package/dist/src/commands/patch/removal-created-files.js +0 -83
- package/dist/src/commands/patch/removal-dependents.d.ts +0 -63
- package/dist/src/commands/patch/removal-dependents.js +0 -133
- package/dist/src/commands/patch/rename.d.ts +0 -35
- package/dist/src/commands/patch/rename.js +0 -378
- package/dist/src/commands/patch/reorder-projection.d.ts +0 -17
- package/dist/src/commands/patch/reorder-projection.js +0 -49
- package/dist/src/commands/patch/reorder-shift.d.ts +0 -30
- package/dist/src/commands/patch/reorder-shift.js +0 -307
- package/dist/src/commands/patch/reorder.d.ts +0 -34
- package/dist/src/commands/patch/reorder.js +0 -375
- package/dist/src/commands/patch/reserve.d.ts +0 -33
- package/dist/src/commands/patch/reserve.js +0 -152
- package/dist/src/commands/patch/retire.d.ts +0 -34
- package/dist/src/commands/patch/retire.js +0 -133
- package/dist/src/commands/patch/split-plan.d.ts +0 -125
- package/dist/src/commands/patch/split-plan.js +0 -313
- package/dist/src/commands/patch/split-staged.d.ts +0 -108
- package/dist/src/commands/patch/split-staged.js +0 -202
- package/dist/src/commands/patch/split.d.ts +0 -43
- package/dist/src/commands/patch/split.js +0 -367
- package/dist/src/commands/patch/stage.d.ts +0 -34
- package/dist/src/commands/patch/stage.js +0 -153
- package/dist/src/commands/patch/staged-dependency-batch.d.ts +0 -48
- package/dist/src/commands/patch/staged-dependency-batch.js +0 -176
- package/dist/src/commands/patch/staged-dependency-entries.d.ts +0 -44
- package/dist/src/commands/patch/staged-dependency-entries.js +0 -80
- package/dist/src/commands/patch/staged-dependency-from.d.ts +0 -14
- package/dist/src/commands/patch/staged-dependency-from.js +0 -114
- package/dist/src/commands/patch/staged-dependency-remove.d.ts +0 -53
- package/dist/src/commands/patch/staged-dependency-remove.js +0 -117
- package/dist/src/commands/patch/staged-dependency-validate.d.ts +0 -15
- package/dist/src/commands/patch/staged-dependency-validate.js +0 -49
- package/dist/src/commands/patch/staged-dependency.d.ts +0 -22
- package/dist/src/commands/patch/staged-dependency.js +0 -248
- package/dist/src/commands/patch/tier.d.ts +0 -34
- package/dist/src/commands/patch/tier.js +0 -125
- package/dist/src/commands/patch-rename-map.d.ts +0 -30
- package/dist/src/commands/patch-rename-map.js +0 -54
- package/dist/src/commands/pending-resolution.d.ts +0 -15
- package/dist/src/commands/pending-resolution.js +0 -25
- package/dist/src/commands/re-export-adjacent-registrations.d.ts +0 -20
- package/dist/src/commands/re-export-adjacent-registrations.js +0 -75
- package/dist/src/commands/re-export-adjacent.d.ts +0 -111
- package/dist/src/commands/re-export-adjacent.js +0 -267
- package/dist/src/commands/re-export-bulk-scan.d.ts +0 -19
- package/dist/src/commands/re-export-bulk-scan.js +0 -233
- package/dist/src/commands/re-export-drift.d.ts +0 -110
- package/dist/src/commands/re-export-drift.js +0 -358
- package/dist/src/commands/re-export-files.d.ts +0 -15
- package/dist/src/commands/re-export-files.js +0 -307
- package/dist/src/commands/re-export-hunks.d.ts +0 -35
- package/dist/src/commands/re-export-hunks.js +0 -220
- package/dist/src/commands/re-export-lint.d.ts +0 -137
- package/dist/src/commands/re-export-lint.js +0 -303
- package/dist/src/commands/re-export-options.d.ts +0 -29
- package/dist/src/commands/re-export-options.js +0 -191
- package/dist/src/commands/re-export-preflight.d.ts +0 -23
- package/dist/src/commands/re-export-preflight.js +0 -159
- package/dist/src/commands/re-export-purity-scope.d.ts +0 -18
- package/dist/src/commands/re-export-purity-scope.js +0 -137
- package/dist/src/commands/re-export-register.d.ts +0 -12
- package/dist/src/commands/re-export-register.js +0 -99
- package/dist/src/commands/re-export-removed.d.ts +0 -15
- package/dist/src/commands/re-export-removed.js +0 -94
- package/dist/src/commands/re-export-retired-declarations.d.ts +0 -22
- package/dist/src/commands/re-export-retired-declarations.js +0 -113
- package/dist/src/commands/re-export-scan-owner.d.ts +0 -44
- package/dist/src/commands/re-export-scan-owner.js +0 -116
- package/dist/src/commands/re-export-scan.d.ts +0 -72
- package/dist/src/commands/re-export-scan.js +0 -265
- package/dist/src/commands/re-export-single.d.ts +0 -39
- package/dist/src/commands/re-export-single.js +0 -388
- package/dist/src/commands/re-export-stale-registrations.d.ts +0 -39
- package/dist/src/commands/re-export-stale-registrations.js +0 -106
- package/dist/src/commands/re-export-summary.d.ts +0 -28
- package/dist/src/commands/re-export-summary.js +0 -36
- package/dist/src/commands/re-export.d.ts +0 -8
- package/dist/src/commands/rebase/abort.d.ts +0 -7
- package/dist/src/commands/rebase/abort.js +0 -67
- package/dist/src/commands/rebase/confirm.d.ts +0 -42
- package/dist/src/commands/rebase/confirm.js +0 -36
- package/dist/src/commands/rebase/conflict-summary.d.ts +0 -12
- package/dist/src/commands/rebase/conflict-summary.js +0 -37
- package/dist/src/commands/rebase/continue.d.ts +0 -7
- package/dist/src/commands/rebase/continue.js +0 -119
- package/dist/src/commands/rebase/index.d.ts +0 -22
- package/dist/src/commands/rebase/index.js +0 -209
- package/dist/src/commands/rebase/patch-loop.d.ts +0 -15
- package/dist/src/commands/rebase/patch-loop.js +0 -289
- package/dist/src/commands/rebase/summary.d.ts +0 -8
- package/dist/src/commands/rebase/summary.js +0 -47
- package/dist/src/commands/register.d.ts +0 -13
- package/dist/src/commands/reset.d.ts +0 -11
- package/dist/src/commands/resolve.d.ts +0 -36
- package/dist/src/commands/run.d.ts +0 -10
- package/dist/src/commands/setup-support.d.ts +0 -35
- package/dist/src/commands/setup-support.js +0 -386
- package/dist/src/commands/setup.d.ts +0 -11
- package/dist/src/commands/source.d.ts +0 -9
- package/dist/src/commands/source.js +0 -120
- package/dist/src/commands/status-check.d.ts +0 -87
- package/dist/src/commands/status-check.js +0 -161
- package/dist/src/commands/status-json.d.ts +0 -45
- package/dist/src/commands/status-json.js +0 -97
- package/dist/src/commands/status-output.d.ts +0 -23
- package/dist/src/commands/status-output.js +0 -231
- package/dist/src/commands/status-ownership.d.ts +0 -54
- package/dist/src/commands/status-ownership.js +0 -59
- package/dist/src/commands/status-scope.d.ts +0 -37
- package/dist/src/commands/status-scope.js +0 -54
- package/dist/src/commands/status.d.ts +0 -11
- package/dist/src/commands/test-appdir.d.ts +0 -6
- package/dist/src/commands/test-appdir.js +0 -29
- package/dist/src/commands/test-browser-preflight.d.ts +0 -28
- package/dist/src/commands/test-browser-preflight.js +0 -197
- package/dist/src/commands/test-build-furnace.d.ts +0 -21
- package/dist/src/commands/test-build-furnace.js +0 -53
- package/dist/src/commands/test-build-phase.d.ts +0 -29
- package/dist/src/commands/test-build-phase.js +0 -290
- package/dist/src/commands/test-checkjs.d.ts +0 -3
- package/dist/src/commands/test-checkjs.js +0 -35
- package/dist/src/commands/test-control-restore.d.ts +0 -40
- package/dist/src/commands/test-control-restore.js +0 -86
- package/dist/src/commands/test-diagnose.d.ts +0 -23
- package/dist/src/commands/test-diagnose.js +0 -317
- package/dist/src/commands/test-dispatch.d.ts +0 -39
- package/dist/src/commands/test-dispatch.js +0 -281
- package/dist/src/commands/test-furnace-reach.d.ts +0 -37
- package/dist/src/commands/test-furnace-reach.js +0 -132
- package/dist/src/commands/test-harness-env.d.ts +0 -23
- package/dist/src/commands/test-harness-env.js +0 -81
- package/dist/src/commands/test-harness-teardown.d.ts +0 -62
- package/dist/src/commands/test-harness-teardown.js +0 -128
- package/dist/src/commands/test-modes.d.ts +0 -57
- package/dist/src/commands/test-modes.js +0 -158
- package/dist/src/commands/test-multi-verdict.d.ts +0 -61
- package/dist/src/commands/test-multi-verdict.js +0 -112
- package/dist/src/commands/test-orchestrate.d.ts +0 -63
- package/dist/src/commands/test-orchestrate.js +0 -274
- package/dist/src/commands/test-perf-scope.d.ts +0 -50
- package/dist/src/commands/test-perf-scope.js +0 -138
- package/dist/src/commands/test-prelock.d.ts +0 -61
- package/dist/src/commands/test-prelock.js +0 -301
- package/dist/src/commands/test-register.d.ts +0 -4
- package/dist/src/commands/test-register.js +0 -181
- package/dist/src/commands/test-results.d.ts +0 -71
- package/dist/src/commands/test-results.js +0 -79
- package/dist/src/commands/test-run.d.ts +0 -89
- package/dist/src/commands/test-run.js +0 -251
- package/dist/src/commands/test-shards.d.ts +0 -114
- package/dist/src/commands/test-shards.js +0 -272
- package/dist/src/commands/test-stale-gate.d.ts +0 -52
- package/dist/src/commands/test-stale-gate.js +0 -165
- package/dist/src/commands/test-verdict.d.ts +0 -92
- package/dist/src/commands/test-verdict.js +0 -162
- package/dist/src/commands/test.d.ts +0 -22
- package/dist/src/commands/token-coverage.d.ts +0 -5
- package/dist/src/commands/token-coverage.js +0 -170
- package/dist/src/commands/token-lint.d.ts +0 -14
- package/dist/src/commands/token-lint.js +0 -151
- package/dist/src/commands/token-list.d.ts +0 -26
- package/dist/src/commands/token-list.js +0 -153
- package/dist/src/commands/token.d.ts +0 -14
- package/dist/src/commands/tree.d.ts +0 -19
- package/dist/src/commands/tree.js +0 -341
- package/dist/src/commands/typecheck.d.ts +0 -56
- package/dist/src/commands/verify-scope.d.ts +0 -28
- package/dist/src/commands/verify-scope.js +0 -67
- package/dist/src/commands/verify.d.ts +0 -58
- package/dist/src/commands/watch.d.ts +0 -9
- package/dist/src/commands/wire.d.ts +0 -13
- package/dist/src/core/ast-utils.d.ts +0 -73
- package/dist/src/core/ast-utils.js +0 -105
- package/dist/src/core/brand-validation.d.ts +0 -7
- package/dist/src/core/brand-validation.js +0 -14
- package/dist/src/core/branding.d.ts +0 -86
- package/dist/src/core/branding.js +0 -371
- package/dist/src/core/browser-wire.d.ts +0 -48
- package/dist/src/core/browser-wire.js +0 -133
- package/dist/src/core/build-audit-platform.d.ts +0 -67
- package/dist/src/core/build-audit-platform.js +0 -373
- package/dist/src/core/build-audit-registration.d.ts +0 -80
- package/dist/src/core/build-audit-registration.js +0 -181
- package/dist/src/core/build-audit-resolve.d.ts +0 -78
- package/dist/src/core/build-audit-resolve.js +0 -240
- package/dist/src/core/build-audit-skip.d.ts +0 -57
- package/dist/src/core/build-audit-skip.js +0 -112
- package/dist/src/core/build-audit-transforms.d.ts +0 -23
- package/dist/src/core/build-audit-transforms.js +0 -92
- package/dist/src/core/build-audit.d.ts +0 -93
- package/dist/src/core/build-audit.js +0 -633
- package/dist/src/core/build-baseline-types.d.ts +0 -225
- package/dist/src/core/build-baseline-types.js +0 -10
- package/dist/src/core/build-baseline-validate.d.ts +0 -32
- package/dist/src/core/build-baseline-validate.js +0 -173
- package/dist/src/core/build-baseline.d.ts +0 -103
- package/dist/src/core/build-baseline.js +0 -261
- package/dist/src/core/build-jar-escalation.d.ts +0 -61
- package/dist/src/core/build-jar-escalation.js +0 -125
- package/dist/src/core/build-overwrite-guard.d.ts +0 -92
- package/dist/src/core/build-overwrite-guard.js +0 -235
- package/dist/src/core/build-prepare.d.ts +0 -83
- package/dist/src/core/build-prepare.js +0 -414
- package/dist/src/core/build-run-record.d.ts +0 -74
- package/dist/src/core/build-run-record.js +0 -136
- package/dist/src/core/checkjs-support-heads.d.ts +0 -41
- package/dist/src/core/checkjs-support-heads.js +0 -104
- package/dist/src/core/component-source-guard.d.ts +0 -20
- package/dist/src/core/component-source-guard.js +0 -68
- package/dist/src/core/config-mutate.d.ts +0 -16
- package/dist/src/core/config-mutate.js +0 -76
- package/dist/src/core/config-paths.d.ts +0 -16
- package/dist/src/core/config-paths.js +0 -106
- package/dist/src/core/config-state.d.ts +0 -16
- package/dist/src/core/config-state.js +0 -141
- package/dist/src/core/config-validate-build-audit.d.ts +0 -8
- package/dist/src/core/config-validate-build-audit.js +0 -80
- package/dist/src/core/config-validate-check.d.ts +0 -8
- package/dist/src/core/config-validate-check.js +0 -219
- package/dist/src/core/config-validate-file-size.d.ts +0 -15
- package/dist/src/core/config-validate-file-size.js +0 -154
- package/dist/src/core/config-validate-history.d.ts +0 -11
- package/dist/src/core/config-validate-history.js +0 -38
- package/dist/src/core/config-validate-patch-policy.d.ts +0 -7
- package/dist/src/core/config-validate-patch-policy.js +0 -274
- package/dist/src/core/config-validate-test-toolchains.d.ts +0 -8
- package/dist/src/core/config-validate-test-toolchains.js +0 -133
- package/dist/src/core/config-validate-token-scales.d.ts +0 -9
- package/dist/src/core/config-validate-token-scales.js +0 -92
- package/dist/src/core/config-validate.d.ts +0 -11
- package/dist/src/core/config-validate.js +0 -503
- package/dist/src/core/config.d.ts +0 -92
- package/dist/src/core/config.js +0 -169
- package/dist/src/core/coverage-dispatch.d.ts +0 -24
- package/dist/src/core/coverage-dispatch.js +0 -44
- package/dist/src/core/coverage-extend.d.ts +0 -89
- package/dist/src/core/coverage-extend.js +0 -239
- package/dist/src/core/coverage-records.d.ts +0 -107
- package/dist/src/core/coverage-records.js +0 -383
- package/dist/src/core/destructive.d.ts +0 -144
- package/dist/src/core/destructive.js +0 -182
- package/dist/src/core/diff-hunks.d.ts +0 -73
- package/dist/src/core/diff-hunks.js +0 -286
- package/dist/src/core/discard-baseline.d.ts +0 -60
- package/dist/src/core/discard-baseline.js +0 -247
- package/dist/src/core/display-state.d.ts +0 -50
- package/dist/src/core/display-state.js +0 -87
- package/dist/src/core/engine-changes.d.ts +0 -40
- package/dist/src/core/engine-changes.js +0 -95
- package/dist/src/core/engine-precondition.d.ts +0 -42
- package/dist/src/core/engine-precondition.js +0 -60
- package/dist/src/core/engine-session-lock.d.ts +0 -119
- package/dist/src/core/engine-session-lock.js +0 -374
- package/dist/src/core/engine-write-boundary.d.ts +0 -5
- package/dist/src/core/engine-write-boundary.js +0 -41
- package/dist/src/core/export-moved-code-shape.d.ts +0 -98
- package/dist/src/core/export-moved-code-shape.js +0 -220
- package/dist/src/core/file-lock-owner.d.ts +0 -103
- package/dist/src/core/file-lock-owner.js +0 -259
- package/dist/src/core/file-lock-queue.d.ts +0 -67
- package/dist/src/core/file-lock-queue.js +0 -219
- package/dist/src/core/file-lock-shared.d.ts +0 -57
- package/dist/src/core/file-lock-shared.js +0 -117
- package/dist/src/core/file-lock.d.ts +0 -143
- package/dist/src/core/file-lock.js +0 -531
- package/dist/src/core/firefox-archive.d.ts +0 -45
- package/dist/src/core/firefox-archive.js +0 -96
- package/dist/src/core/firefox-cache.d.ts +0 -30
- package/dist/src/core/firefox-cache.js +0 -248
- package/dist/src/core/firefox-download.d.ts +0 -30
- package/dist/src/core/firefox-download.js +0 -152
- package/dist/src/core/firefox-extract.d.ts +0 -42
- package/dist/src/core/firefox-extract.js +0 -248
- package/dist/src/core/firefox-ignorefile.d.ts +0 -17
- package/dist/src/core/firefox-ignorefile.js +0 -30
- package/dist/src/core/firefox.d.ts +0 -66
- package/dist/src/core/firefox.js +0 -121
- package/dist/src/core/forward-registrations.d.ts +0 -33
- package/dist/src/core/forward-registrations.js +0 -16
- package/dist/src/core/furnace-apply-dry-run.d.ts +0 -12
- package/dist/src/core/furnace-apply-dry-run.js +0 -99
- package/dist/src/core/furnace-apply-ftl.d.ts +0 -49
- package/dist/src/core/furnace-apply-ftl.js +0 -210
- package/dist/src/core/furnace-apply-helpers.d.ts +0 -106
- package/dist/src/core/furnace-apply-helpers.js +0 -436
- package/dist/src/core/furnace-apply-output.d.ts +0 -36
- package/dist/src/core/furnace-apply-output.js +0 -111
- package/dist/src/core/furnace-apply-overwrite-warn.d.ts +0 -62
- package/dist/src/core/furnace-apply-overwrite-warn.js +0 -124
- package/dist/src/core/furnace-apply-undeploy-actions.d.ts +0 -10
- package/dist/src/core/furnace-apply-undeploy-actions.js +0 -48
- package/dist/src/core/furnace-apply.d.ts +0 -49
- package/dist/src/core/furnace-apply.js +0 -465
- package/dist/src/core/furnace-checksum-utils.d.ts +0 -25
- package/dist/src/core/furnace-checksum-utils.js +0 -54
- package/dist/src/core/furnace-composed-source.d.ts +0 -76
- package/dist/src/core/furnace-composed-source.js +0 -167
- package/dist/src/core/furnace-config-array-utils.d.ts +0 -11
- package/dist/src/core/furnace-config-array-utils.js +0 -26
- package/dist/src/core/furnace-config-custom.d.ts +0 -15
- package/dist/src/core/furnace-config-custom.js +0 -73
- package/dist/src/core/furnace-config-order.d.ts +0 -8
- package/dist/src/core/furnace-config-order.js +0 -90
- package/dist/src/core/furnace-config-tokens.d.ts +0 -17
- package/dist/src/core/furnace-config-tokens.js +0 -42
- package/dist/src/core/furnace-config-validate-exceptions.d.ts +0 -17
- package/dist/src/core/furnace-config-validate-exceptions.js +0 -122
- package/dist/src/core/furnace-config-validate.d.ts +0 -32
- package/dist/src/core/furnace-config-validate.js +0 -146
- package/dist/src/core/furnace-config.d.ts +0 -139
- package/dist/src/core/furnace-config.js +0 -511
- package/dist/src/core/furnace-constants.d.ts +0 -79
- package/dist/src/core/furnace-constants.js +0 -123
- package/dist/src/core/furnace-css-fragments.d.ts +0 -96
- package/dist/src/core/furnace-css-fragments.js +0 -279
- package/dist/src/core/furnace-dir-entry.d.ts +0 -20
- package/dist/src/core/furnace-dir-entry.js +0 -21
- package/dist/src/core/furnace-fragment-includers.d.ts +0 -56
- package/dist/src/core/furnace-fragment-includers.js +0 -122
- package/dist/src/core/furnace-graph-utils.d.ts +0 -11
- package/dist/src/core/furnace-graph-utils.js +0 -93
- package/dist/src/core/furnace-jsconfig.d.ts +0 -61
- package/dist/src/core/furnace-jsconfig.js +0 -208
- package/dist/src/core/furnace-marker.d.ts +0 -15
- package/dist/src/core/furnace-marker.js +0 -21
- package/dist/src/core/furnace-operation.d.ts +0 -195
- package/dist/src/core/furnace-operation.js +0 -444
- package/dist/src/core/furnace-precondition.d.ts +0 -61
- package/dist/src/core/furnace-precondition.js +0 -67
- package/dist/src/core/furnace-refresh.d.ts +0 -28
- package/dist/src/core/furnace-refresh.js +0 -125
- package/dist/src/core/furnace-registration-ast.d.ts +0 -53
- package/dist/src/core/furnace-registration-ast.js +0 -402
- package/dist/src/core/furnace-registration-jar-inplace.d.ts +0 -12
- package/dist/src/core/furnace-registration-jar-inplace.js +0 -79
- package/dist/src/core/furnace-registration-remove.d.ts +0 -56
- package/dist/src/core/furnace-registration-remove.js +0 -260
- package/dist/src/core/furnace-registration-rename.d.ts +0 -26
- package/dist/src/core/furnace-registration-rename.js +0 -77
- package/dist/src/core/furnace-registration-validate.d.ts +0 -53
- package/dist/src/core/furnace-registration-validate.js +0 -110
- package/dist/src/core/furnace-registration.d.ts +0 -112
- package/dist/src/core/furnace-registration.js +0 -348
- package/dist/src/core/furnace-rollback.d.ts +0 -48
- package/dist/src/core/furnace-rollback.js +0 -170
- package/dist/src/core/furnace-scanner.d.ts +0 -47
- package/dist/src/core/furnace-scanner.js +0 -236
- package/dist/src/core/furnace-stale-export.d.ts +0 -60
- package/dist/src/core/furnace-stale-export.js +0 -125
- package/dist/src/core/furnace-staleness.d.ts +0 -24
- package/dist/src/core/furnace-staleness.js +0 -67
- package/dist/src/core/furnace-state-persist.d.ts +0 -68
- package/dist/src/core/furnace-state-persist.js +0 -116
- package/dist/src/core/furnace-step-errors.d.ts +0 -23
- package/dist/src/core/furnace-step-errors.js +0 -25
- package/dist/src/core/furnace-stories.d.ts +0 -37
- package/dist/src/core/furnace-stories.js +0 -186
- package/dist/src/core/furnace-validate-accessibility.d.ts +0 -39
- package/dist/src/core/furnace-validate-accessibility.js +0 -417
- package/dist/src/core/furnace-validate-checks.d.ts +0 -4
- package/dist/src/core/furnace-validate-checks.js +0 -6
- package/dist/src/core/furnace-validate-compatibility.d.ts +0 -6
- package/dist/src/core/furnace-validate-compatibility.js +0 -295
- package/dist/src/core/furnace-validate-exceptions.d.ts +0 -49
- package/dist/src/core/furnace-validate-exceptions.js +0 -98
- package/dist/src/core/furnace-validate-helpers.d.ts +0 -7
- package/dist/src/core/furnace-validate-helpers.js +0 -4
- package/dist/src/core/furnace-validate-icon-button.d.ts +0 -7
- package/dist/src/core/furnace-validate-icon-button.js +0 -78
- package/dist/src/core/furnace-validate-registration.d.ts +0 -67
- package/dist/src/core/furnace-validate-registration.js +0 -487
- package/dist/src/core/furnace-validate-structure.d.ts +0 -22
- package/dist/src/core/furnace-validate-structure.js +0 -122
- package/dist/src/core/furnace-validate.d.ts +0 -41
- package/dist/src/core/furnace-validate.js +0 -302
- package/dist/src/core/furnace-version-drift.d.ts +0 -57
- package/dist/src/core/furnace-version-drift.js +0 -102
- package/dist/src/core/gecko-dom-types.d.ts +0 -2
- package/dist/src/core/gecko-dom-types.js +0 -17
- package/dist/src/core/git-base.d.ts +0 -101
- package/dist/src/core/git-base.js +0 -162
- package/dist/src/core/git-diff-new-file.d.ts +0 -40
- package/dist/src/core/git-diff-new-file.js +0 -118
- package/dist/src/core/git-diff.d.ts +0 -82
- package/dist/src/core/git-diff.js +0 -539
- package/dist/src/core/git-file-ops.d.ts +0 -108
- package/dist/src/core/git-file-ops.js +0 -280
- package/dist/src/core/git-readonly-index.d.ts +0 -91
- package/dist/src/core/git-readonly-index.js +0 -177
- package/dist/src/core/git-status.d.ts +0 -84
- package/dist/src/core/git-status.js +0 -208
- package/dist/src/core/git.d.ts +0 -114
- package/dist/src/core/git.js +0 -540
- package/dist/src/core/harness-helper-pids.d.ts +0 -98
- package/dist/src/core/harness-helper-pids.js +0 -240
- package/dist/src/core/harness-orphans.d.ts +0 -118
- package/dist/src/core/harness-orphans.js +0 -268
- package/dist/src/core/harness-port-fallback.d.ts +0 -60
- package/dist/src/core/harness-port-fallback.js +0 -96
- package/dist/src/core/harness-port-reservation.d.ts +0 -60
- package/dist/src/core/harness-port-reservation.js +0 -122
- package/dist/src/core/history-log-file.d.ts +0 -61
- package/dist/src/core/history-log-file.js +0 -164
- package/dist/src/core/history-log.d.ts +0 -20
- package/dist/src/core/history-log.js +0 -30
- package/dist/src/core/json-preserving-edit.d.ts +0 -22
- package/dist/src/core/json-preserving-edit.js +0 -199
- package/dist/src/core/launchable-build.d.ts +0 -39
- package/dist/src/core/launchable-build.js +0 -85
- package/dist/src/core/license-headers.d.ts +0 -103
- package/dist/src/core/license-headers.js +0 -318
- package/dist/src/core/line-prefixer.d.ts +0 -18
- package/dist/src/core/line-prefixer.js +0 -34
- package/dist/src/core/lit-template-regions.d.ts +0 -4
- package/dist/src/core/lit-template-regions.js +0 -50
- package/dist/src/core/mach-build-artifacts.d.ts +0 -176
- package/dist/src/core/mach-build-artifacts.js +0 -436
- package/dist/src/core/mach-error-hints.d.ts +0 -24
- package/dist/src/core/mach-error-hints.js +0 -135
- package/dist/src/core/mach-known-noise-filter.d.ts +0 -122
- package/dist/src/core/mach-known-noise-filter.js +0 -257
- package/dist/src/core/mach-mozconfig.d.ts +0 -57
- package/dist/src/core/mach-mozconfig.js +0 -166
- package/dist/src/core/mach-python.d.ts +0 -19
- package/dist/src/core/mach-python.js +0 -131
- package/dist/src/core/mach-resource-shim.d.ts +0 -107
- package/dist/src/core/mach-resource-shim.js +0 -640
- package/dist/src/core/mach.d.ts +0 -284
- package/dist/src/core/mach.js +0 -445
- package/dist/src/core/marionette-port.d.ts +0 -153
- package/dist/src/core/marionette-port.js +0 -474
- package/dist/src/core/marionette-preflight.d.ts +0 -58
- package/dist/src/core/marionette-preflight.js +0 -332
- package/dist/src/core/markdown-table.d.ts +0 -104
- package/dist/src/core/markdown-table.js +0 -265
- package/dist/src/core/mochitest-server-port.d.ts +0 -81
- package/dist/src/core/mochitest-server-port.js +0 -175
- package/dist/src/core/module-resolution-preflight.d.ts +0 -65
- package/dist/src/core/module-resolution-preflight.js +0 -171
- package/dist/src/core/moz-manifest-helpers.d.ts +0 -79
- package/dist/src/core/moz-manifest-helpers.js +0 -163
- package/dist/src/core/moz-manifest-register.d.ts +0 -19
- package/dist/src/core/moz-manifest-register.js +0 -51
- package/dist/src/core/moz-manifest-rules.d.ts +0 -58
- package/dist/src/core/moz-manifest-rules.js +0 -264
- package/dist/src/core/moz-manifest-tokenizers.d.ts +0 -38
- package/dist/src/core/moz-manifest-tokenizers.js +0 -108
- package/dist/src/core/negative-control-compiled.d.ts +0 -46
- package/dist/src/core/negative-control-compiled.js +0 -109
- package/dist/src/core/negative-control-diff.d.ts +0 -51
- package/dist/src/core/negative-control-diff.js +0 -204
- package/dist/src/core/negative-control.d.ts +0 -150
- package/dist/src/core/negative-control.js +0 -399
- package/dist/src/core/objdir-install-manifests.d.ts +0 -73
- package/dist/src/core/objdir-install-manifests.js +0 -226
- package/dist/src/core/objdir-maintenance.d.ts +0 -10
- package/dist/src/core/objdir-maintenance.js +0 -167
- package/dist/src/core/ownership-table.d.ts +0 -53
- package/dist/src/core/ownership-table.js +0 -159
- package/dist/src/core/parent-exit-watchdog.d.ts +0 -62
- package/dist/src/core/parent-exit-watchdog.js +0 -69
- package/dist/src/core/park-store.d.ts +0 -63
- package/dist/src/core/park-store.js +0 -216
- package/dist/src/core/parser-fallback.d.ts +0 -50
- package/dist/src/core/parser-fallback.js +0 -61
- package/dist/src/core/patch-apply-fuzz.d.ts +0 -57
- package/dist/src/core/patch-apply-fuzz.js +0 -125
- package/dist/src/core/patch-apply.d.ts +0 -88
- package/dist/src/core/patch-apply.js +0 -435
- package/dist/src/core/patch-export-coverage.d.ts +0 -49
- package/dist/src/core/patch-export-coverage.js +0 -73
- package/dist/src/core/patch-export-metadata.d.ts +0 -46
- package/dist/src/core/patch-export-metadata.js +0 -47
- package/dist/src/core/patch-export-update.d.ts +0 -55
- package/dist/src/core/patch-export-update.js +0 -95
- package/dist/src/core/patch-export.d.ts +0 -175
- package/dist/src/core/patch-export.js +0 -312
- package/dist/src/core/patch-files.d.ts +0 -17
- package/dist/src/core/patch-files.js +0 -59
- package/dist/src/core/patch-identifier-suggest.d.ts +0 -26
- package/dist/src/core/patch-identifier-suggest.js +0 -135
- package/dist/src/core/patch-lint-binary.d.ts +0 -45
- package/dist/src/core/patch-lint-binary.js +0 -39
- package/dist/src/core/patch-lint-cache.d.ts +0 -78
- package/dist/src/core/patch-lint-cache.js +0 -233
- package/dist/src/core/patch-lint-checkjs-any-import.d.ts +0 -39
- package/dist/src/core/patch-lint-checkjs-any-import.js +0 -63
- package/dist/src/core/patch-lint-checkjs-cache.d.ts +0 -18
- package/dist/src/core/patch-lint-checkjs-cache.js +0 -45
- package/dist/src/core/patch-lint-checkjs-diagnostics.d.ts +0 -17
- package/dist/src/core/patch-lint-checkjs-diagnostics.js +0 -32
- package/dist/src/core/patch-lint-checkjs.d.ts +0 -180
- package/dist/src/core/patch-lint-checkjs.js +0 -611
- package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +0 -43
- package/dist/src/core/patch-lint-chrome-jsdoc.js +0 -90
- package/dist/src/core/patch-lint-code-lines.d.ts +0 -59
- package/dist/src/core/patch-lint-code-lines.js +0 -105
- package/dist/src/core/patch-lint-creators.d.ts +0 -26
- package/dist/src/core/patch-lint-creators.js +0 -45
- package/dist/src/core/patch-lint-cross.d.ts +0 -232
- package/dist/src/core/patch-lint-cross.js +0 -590
- package/dist/src/core/patch-lint-css.d.ts +0 -27
- package/dist/src/core/patch-lint-css.js +0 -228
- package/dist/src/core/patch-lint-diff-tag.d.ts +0 -51
- package/dist/src/core/patch-lint-diff-tag.js +0 -105
- package/dist/src/core/patch-lint-diff.d.ts +0 -42
- package/dist/src/core/patch-lint-diff.js +0 -100
- package/dist/src/core/patch-lint-file-size.d.ts +0 -57
- package/dist/src/core/patch-lint-file-size.js +0 -62
- package/dist/src/core/patch-lint-forward-registration-extended.d.ts +0 -61
- package/dist/src/core/patch-lint-forward-registration-extended.js +0 -265
- package/dist/src/core/patch-lint-forward-registration.d.ts +0 -71
- package/dist/src/core/patch-lint-forward-registration.js +0 -266
- package/dist/src/core/patch-lint-ignore.d.ts +0 -196
- package/dist/src/core/patch-lint-ignore.js +0 -429
- package/dist/src/core/patch-lint-imports.d.ts +0 -5
- package/dist/src/core/patch-lint-imports.js +0 -67
- package/dist/src/core/patch-lint-jsdoc.d.ts +0 -67
- package/dist/src/core/patch-lint-jsdoc.js +0 -471
- package/dist/src/core/patch-lint-module-registration.d.ts +0 -22
- package/dist/src/core/patch-lint-module-registration.js +0 -97
- package/dist/src/core/patch-lint-mozbuild.d.ts +0 -18
- package/dist/src/core/patch-lint-mozbuild.js +0 -192
- package/dist/src/core/patch-lint-observer.d.ts +0 -37
- package/dist/src/core/patch-lint-observer.js +0 -167
- package/dist/src/core/patch-lint-ownership.d.ts +0 -74
- package/dist/src/core/patch-lint-ownership.js +0 -125
- package/dist/src/core/patch-lint-prettier.d.ts +0 -34
- package/dist/src/core/patch-lint-prettier.js +0 -124
- package/dist/src/core/patch-lint-projection.d.ts +0 -25
- package/dist/src/core/patch-lint-projection.js +0 -43
- package/dist/src/core/patch-lint-queue-types.d.ts +0 -60
- package/dist/src/core/patch-lint-queue-types.js +0 -12
- package/dist/src/core/patch-lint-size-thresholds.d.ts +0 -52
- package/dist/src/core/patch-lint-size-thresholds.js +0 -110
- package/dist/src/core/patch-lint-size.d.ts +0 -117
- package/dist/src/core/patch-lint-size.js +0 -331
- package/dist/src/core/patch-lint-staged-registration.d.ts +0 -78
- package/dist/src/core/patch-lint-staged-registration.js +0 -110
- package/dist/src/core/patch-lint-token-scale.d.ts +0 -57
- package/dist/src/core/patch-lint-token-scale.js +0 -286
- package/dist/src/core/patch-lint-unmanaged-companion.d.ts +0 -106
- package/dist/src/core/patch-lint-unmanaged-companion.js +0 -214
- package/dist/src/core/patch-lint.d.ts +0 -191
- package/dist/src/core/patch-lint.js +0 -529
- package/dist/src/core/patch-lock.d.ts +0 -40
- package/dist/src/core/patch-lock.js +0 -129
- package/dist/src/core/patch-manifest-consistency.d.ts +0 -95
- package/dist/src/core/patch-manifest-consistency.js +0 -256
- package/dist/src/core/patch-manifest-files-affected.d.ts +0 -43
- package/dist/src/core/patch-manifest-files-affected.js +0 -77
- package/dist/src/core/patch-manifest-io.d.ts +0 -199
- package/dist/src/core/patch-manifest-io.js +0 -556
- package/dist/src/core/patch-manifest-key-order.d.ts +0 -23
- package/dist/src/core/patch-manifest-key-order.js +0 -60
- package/dist/src/core/patch-manifest-query.d.ts +0 -55
- package/dist/src/core/patch-manifest-query.js +0 -139
- package/dist/src/core/patch-manifest-resolve.d.ts +0 -21
- package/dist/src/core/patch-manifest-resolve.js +0 -35
- package/dist/src/core/patch-manifest-stage.d.ts +0 -46
- package/dist/src/core/patch-manifest-stage.js +0 -96
- package/dist/src/core/patch-manifest-validate.d.ts +0 -20
- package/dist/src/core/patch-manifest-validate.js +0 -240
- package/dist/src/core/patch-manifest.d.ts +0 -12
- package/dist/src/core/patch-manifest.js +0 -13
- package/dist/src/core/patch-order-legal.d.ts +0 -26
- package/dist/src/core/patch-order-legal.js +0 -88
- package/dist/src/core/patch-parse.d.ts +0 -161
- package/dist/src/core/patch-parse.js +0 -347
- package/dist/src/core/patch-policy-content.d.ts +0 -40
- package/dist/src/core/patch-policy-content.js +0 -216
- package/dist/src/core/patch-policy.d.ts +0 -80
- package/dist/src/core/patch-policy.js +0 -394
- package/dist/src/core/patch-registration-refs.d.ts +0 -41
- package/dist/src/core/patch-registration-refs.js +0 -107
- package/dist/src/core/patch-retired.d.ts +0 -57
- package/dist/src/core/patch-retired.js +0 -92
- package/dist/src/core/patch-source-metadata.d.ts +0 -6
- package/dist/src/core/patch-source-metadata.js +0 -12
- package/dist/src/core/patch-subset.d.ts +0 -18
- package/dist/src/core/patch-subset.js +0 -67
- package/dist/src/core/patch-transform.d.ts +0 -61
- package/dist/src/core/patch-transform.js +0 -198
- package/dist/src/core/preflight-wait.d.ts +0 -22
- package/dist/src/core/preflight-wait.js +0 -62
- package/dist/src/core/process-cpu-time.d.ts +0 -12
- package/dist/src/core/process-cpu-time.js +0 -52
- package/dist/src/core/process-owner.d.ts +0 -9
- package/dist/src/core/process-owner.js +0 -43
- package/dist/src/core/rebase-dry-run.d.ts +0 -48
- package/dist/src/core/rebase-dry-run.js +0 -105
- package/dist/src/core/rebase-from-version.d.ts +0 -46
- package/dist/src/core/rebase-from-version.js +0 -71
- package/dist/src/core/rebase-session.d.ts +0 -100
- package/dist/src/core/rebase-session.js +0 -174
- package/dist/src/core/register-browser-content.d.ts +0 -11
- package/dist/src/core/register-browser-content.js +0 -52
- package/dist/src/core/register-browser-test.d.ts +0 -18
- package/dist/src/core/register-browser-test.js +0 -66
- package/dist/src/core/register-module.d.ts +0 -11
- package/dist/src/core/register-module.js +0 -56
- package/dist/src/core/register-result.d.ts +0 -30
- package/dist/src/core/register-result.js +0 -8
- package/dist/src/core/register-scaffold.d.ts +0 -55
- package/dist/src/core/register-scaffold.js +0 -146
- package/dist/src/core/register-shared-css.d.ts +0 -36
- package/dist/src/core/register-shared-css.js +0 -112
- package/dist/src/core/register-xpcshell-test.d.ts +0 -50
- package/dist/src/core/register-xpcshell-test.js +0 -143
- package/dist/src/core/run-log-redact.d.ts +0 -38
- package/dist/src/core/run-log-redact.js +0 -69
- package/dist/src/core/run-log.d.ts +0 -97
- package/dist/src/core/run-log.js +0 -334
- package/dist/src/core/run-profile.d.ts +0 -57
- package/dist/src/core/run-profile.js +0 -137
- package/dist/src/core/shared-ftl.d.ts +0 -28
- package/dist/src/core/shared-ftl.js +0 -49
- package/dist/src/core/signal-critical.d.ts +0 -38
- package/dist/src/core/signal-critical.js +0 -62
- package/dist/src/core/smoke-patterns.d.ts +0 -81
- package/dist/src/core/smoke-patterns.js +0 -176
- package/dist/src/core/state-file.d.ts +0 -60
- package/dist/src/core/state-file.js +0 -71
- package/dist/src/core/status-binary.d.ts +0 -62
- package/dist/src/core/status-binary.js +0 -133
- package/dist/src/core/status-classify.d.ts +0 -96
- package/dist/src/core/status-classify.js +0 -244
- package/dist/src/core/test-changed-prefs.d.ts +0 -30
- package/dist/src/core/test-changed-prefs.js +0 -93
- package/dist/src/core/test-harness-crash.d.ts +0 -251
- package/dist/src/core/test-harness-crash.js +0 -780
- package/dist/src/core/test-harness-infra.d.ts +0 -32
- package/dist/src/core/test-harness-infra.js +0 -69
- package/dist/src/core/test-harness-output.d.ts +0 -45
- package/dist/src/core/test-harness-output.js +0 -119
- package/dist/src/core/test-harness-signature.d.ts +0 -57
- package/dist/src/core/test-harness-signature.js +0 -35
- package/dist/src/core/test-harness-verdict-notes.d.ts +0 -54
- package/dist/src/core/test-harness-verdict-notes.js +0 -48
- package/dist/src/core/test-host-state.d.ts +0 -14
- package/dist/src/core/test-host-state.js +0 -80
- package/dist/src/core/test-path-scope.d.ts +0 -59
- package/dist/src/core/test-path-scope.js +0 -147
- package/dist/src/core/test-profile-files.d.ts +0 -17
- package/dist/src/core/test-profile-files.js +0 -75
- package/dist/src/core/test-raw-log.d.ts +0 -66
- package/dist/src/core/test-raw-log.js +0 -122
- package/dist/src/core/test-run-completeness.d.ts +0 -97
- package/dist/src/core/test-run-completeness.js +0 -191
- package/dist/src/core/test-stale-check.d.ts +0 -213
- package/dist/src/core/test-stale-check.js +0 -396
- package/dist/src/core/test-stale-exempt.d.ts +0 -40
- package/dist/src/core/test-stale-exempt.js +0 -70
- package/dist/src/core/test-stale-symlink.d.ts +0 -12
- package/dist/src/core/test-stale-symlink.js +0 -39
- package/dist/src/core/test-stall-triage.d.ts +0 -51
- package/dist/src/core/test-stall-triage.js +0 -142
- package/dist/src/core/test-xpcshell-retry.d.ts +0 -35
- package/dist/src/core/test-xpcshell-retry.js +0 -31
- package/dist/src/core/token-category.d.ts +0 -54
- package/dist/src/core/token-category.js +0 -299
- package/dist/src/core/token-coverage.d.ts +0 -12
- package/dist/src/core/token-coverage.js +0 -96
- package/dist/src/core/token-dark-mode.d.ts +0 -64
- package/dist/src/core/token-dark-mode.js +0 -186
- package/dist/src/core/token-docs.d.ts +0 -34
- package/dist/src/core/token-docs.js +0 -102
- package/dist/src/core/token-inventory.d.ts +0 -56
- package/dist/src/core/token-inventory.js +0 -114
- package/dist/src/core/token-lint.d.ts +0 -53
- package/dist/src/core/token-lint.js +0 -131
- package/dist/src/core/token-manager.d.ts +0 -87
- package/dist/src/core/token-manager.js +0 -407
- package/dist/src/core/token-scaffold.d.ts +0 -36
- package/dist/src/core/token-scaffold.js +0 -73
- package/dist/src/core/token-sibling-sheets.d.ts +0 -46
- package/dist/src/core/token-sibling-sheets.js +0 -119
- package/dist/src/core/token-variant.d.ts +0 -90
- package/dist/src/core/token-variant.js +0 -327
- package/dist/src/core/toolchain-preflight.d.ts +0 -90
- package/dist/src/core/toolchain-preflight.js +0 -251
- package/dist/src/core/tree-cow.d.ts +0 -16
- package/dist/src/core/tree-cow.js +0 -71
- package/dist/src/core/tree-guard.d.ts +0 -35
- package/dist/src/core/tree-guard.js +0 -194
- package/dist/src/core/tree-store.d.ts +0 -143
- package/dist/src/core/tree-store.js +0 -478
- package/dist/src/core/typecheck-shim.d.ts +0 -90
- package/dist/src/core/typecheck-shim.js +0 -507
- package/dist/src/core/typecheck.d.ts +0 -75
- package/dist/src/core/typecheck.js +0 -433
- package/dist/src/core/wire-destroy.d.ts +0 -25
- package/dist/src/core/wire-destroy.js +0 -126
- package/dist/src/core/wire-dom-fragment.d.ts +0 -44
- package/dist/src/core/wire-dom-fragment.js +0 -139
- package/dist/src/core/wire-init.d.ts +0 -28
- package/dist/src/core/wire-init.js +0 -219
- package/dist/src/core/wire-subscript.d.ts +0 -23
- package/dist/src/core/wire-subscript.js +0 -145
- package/dist/src/core/wire-utils.d.ts +0 -149
- package/dist/src/core/wire-utils.js +0 -338
- package/dist/src/core/xpcshell-appdir.d.ts +0 -157
- package/dist/src/core/xpcshell-appdir.js +0 -299
- package/dist/src/core/xpcshell-profile-dir.d.ts +0 -12
- package/dist/src/core/xpcshell-profile-dir.js +0 -45
- package/dist/src/errors/base.d.ts +0 -217
- package/dist/src/errors/base.js +0 -279
- package/dist/src/errors/build.d.ts +0 -92
- package/dist/src/errors/build.js +0 -166
- package/dist/src/errors/codes.d.ts +0 -74
- package/dist/src/errors/codes.js +0 -74
- package/dist/src/errors/config.d.ts +0 -17
- package/dist/src/errors/config.js +0 -39
- package/dist/src/errors/download.d.ts +0 -66
- package/dist/src/errors/download.js +0 -160
- package/dist/src/errors/furnace.d.ts +0 -20
- package/dist/src/errors/furnace.js +0 -28
- package/dist/src/errors/git.d.ts +0 -65
- package/dist/src/errors/git.js +0 -140
- package/dist/src/errors/patch.d.ts +0 -27
- package/dist/src/errors/patch.js +0 -52
- package/dist/src/errors/rebase.d.ts +0 -42
- package/dist/src/errors/rebase.js +0 -71
- package/dist/src/errors/run.d.ts +0 -16
- package/dist/src/errors/run.js +0 -22
- package/dist/src/index.d.ts +0 -42
- package/dist/src/index.js +0 -32
- package/dist/src/types/cli.d.ts +0 -14
- package/dist/src/types/commands/index.d.ts +0 -6
- package/dist/src/types/commands/index.js +0 -5
- package/dist/src/types/commands/options.d.ts +0 -1367
- package/dist/src/types/commands/options.js +0 -5
- package/dist/src/types/commands/patches.d.ts +0 -352
- package/dist/src/types/commands/patches.js +0 -5
- package/dist/src/types/commands/project.d.ts +0 -51
- package/dist/src/types/commands/project.js +0 -5
- package/dist/src/types/config.d.ts +0 -703
- package/dist/src/types/config.js +0 -15
- package/dist/src/types/furnace.d.ts +0 -415
- package/dist/src/types/furnace.js +0 -26
- package/dist/src/types/index.d.ts +0 -5
- package/dist/src/types/index.js +0 -5
- package/dist/src/types/json.d.ts +0 -22
- package/dist/src/types/json.js +0 -11
- package/dist/src/types/typecheck.d.ts +0 -51
- package/dist/src/types/typecheck.js +0 -14
- package/dist/src/utils/assert.d.ts +0 -34
- package/dist/src/utils/assert.js +0 -61
- package/dist/src/utils/build-info.d.ts +0 -30
- package/dist/src/utils/build-info.js +0 -99
- package/dist/src/utils/child-env.d.ts +0 -28
- package/dist/src/utils/child-env.js +0 -27
- package/dist/src/utils/concurrency.d.ts +0 -8
- package/dist/src/utils/concurrency.js +0 -32
- package/dist/src/utils/elapsed.d.ts +0 -2
- package/dist/src/utils/elapsed.js +0 -23
- package/dist/src/utils/errors.d.ts +0 -39
- package/dist/src/utils/errors.js +0 -67
- package/dist/src/utils/fs.d.ts +0 -113
- package/dist/src/utils/fs.js +0 -337
- package/dist/src/utils/hash.d.ts +0 -12
- package/dist/src/utils/hash.js +0 -16
- package/dist/src/utils/line-dispatch.d.ts +0 -15
- package/dist/src/utils/line-dispatch.js +0 -48
- package/dist/src/utils/logger.d.ts +0 -109
- package/dist/src/utils/logger.js +0 -270
- package/dist/src/utils/machine-output.d.ts +0 -12
- package/dist/src/utils/machine-output.js +0 -33
- package/dist/src/utils/options.d.ts +0 -155
- package/dist/src/utils/options.js +0 -312
- package/dist/src/utils/package-root.d.ts +0 -21
- package/dist/src/utils/package-root.js +0 -70
- package/dist/src/utils/parse.d.ts +0 -117
- package/dist/src/utils/parse.js +0 -214
- package/dist/src/utils/path-glob.d.ts +0 -15
- package/dist/src/utils/path-glob.js +0 -47
- package/dist/src/utils/paths.d.ts +0 -31
- package/dist/src/utils/paths.js +0 -80
- package/dist/src/utils/platform.d.ts +0 -9
- package/dist/src/utils/platform.js +0 -14
- package/dist/src/utils/process-group.d.ts +0 -42
- package/dist/src/utils/process-group.js +0 -190
- package/dist/src/utils/process-input.d.ts +0 -27
- package/dist/src/utils/process-input.js +0 -46
- package/dist/src/utils/process.d.ts +0 -293
- package/dist/src/utils/process.js +0 -593
- package/dist/src/utils/ps-duration.d.ts +0 -31
- package/dist/src/utils/ps-duration.js +0 -70
- package/dist/src/utils/regex.d.ts +0 -39
- package/dist/src/utils/regex.js +0 -109
- package/dist/src/utils/sleep.d.ts +0 -25
- package/dist/src/utils/sleep.js +0 -30
- package/dist/src/utils/stdio-drain.d.ts +0 -28
- package/dist/src/utils/stdio-drain.js +0 -54
- package/dist/src/utils/validation.d.ts +0 -182
- package/dist/src/utils/validation.js +0 -394
- package/docs/lifecycle-invariants.md +0 -523
- package/docs/run-logs.md +0 -122
- package/docs/verification-trees.md +0 -49
- /package/dist/src/{types/cli.js → cli/context.js} +0 -0
|
@@ -1,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
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Live queue state around a contended lock: how many are queued and how many
|
|
3
|
-
* are ahead of you. Waiters are granted the lock in arrival order, so `ahead`
|
|
4
|
-
* is the number of grants that happen before yours.
|
|
5
|
-
*/
|
|
6
|
-
export interface LockQueueState {
|
|
7
|
-
/** Live waiters currently queued for the lock, including this process. */
|
|
8
|
-
depth: number;
|
|
9
|
-
/** Live waiters that arrived before this process. */
|
|
10
|
-
ahead: number;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* A ticket not refreshed for this long is skipped when the queue is read.
|
|
14
|
-
* Six heartbeats of slack: long enough that a loaded host never skips a
|
|
15
|
-
* waiter that is merely slow, short enough that a stopped waiter does not
|
|
16
|
-
* hold the head of the queue for more than half a minute.
|
|
17
|
-
*/
|
|
18
|
-
export declare const WAITER_STALE_MS = 30000;
|
|
19
|
-
/** Sibling directory holding the waiter tickets of a lock. */
|
|
20
|
-
export declare function lockWaitersDir(lockPath: string): string;
|
|
21
|
-
/**
|
|
22
|
-
* This process's view of itself in the queue: its wait start, and its ticket
|
|
23
|
-
* when it holds one. Without a ticket the position falls back to comparing
|
|
24
|
-
* wait starts, which is what a waiter whose registration failed can know.
|
|
25
|
-
*/
|
|
26
|
-
export interface QueueSelf {
|
|
27
|
-
startedAt: number;
|
|
28
|
-
ticket?: string | undefined;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Reads the live waiter queue around `lockPath`.
|
|
32
|
-
*
|
|
33
|
-
* Advisory and fail-open: an unreadable registry reports an empty queue
|
|
34
|
-
* rather than failing whatever asked. The caller's own ticket always counts
|
|
35
|
-
* as live, since this process knows it is waiting.
|
|
36
|
-
*
|
|
37
|
-
* @param lockPath - The lock directory whose queue to inspect
|
|
38
|
-
* @param self - This waiter, to compute `ahead`
|
|
39
|
-
*/
|
|
40
|
-
export declare function readLockQueue(lockPath: string, self?: QueueSelf): Promise<LockQueueState>;
|
|
41
|
-
/** A waiter's place in the queue, from joining it to leaving it. */
|
|
42
|
-
export interface WaiterRegistration {
|
|
43
|
-
/** Ticket name, or `undefined` when registration failed. */
|
|
44
|
-
ticket: string | undefined;
|
|
45
|
-
/** Refreshes the ticket when a heartbeat is due. Never throws. */
|
|
46
|
-
heartbeat: () => Promise<void>;
|
|
47
|
-
/** Leaves the queue. Always safe to call. */
|
|
48
|
-
deregister: () => Promise<void>;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Takes a ticket in the lock's waiter queue.
|
|
52
|
-
*
|
|
53
|
-
* Never fails the acquisition: a registry that cannot be written yields a
|
|
54
|
-
* registration without a ticket, and the waiter falls back to contending
|
|
55
|
-
* for the lock without queue order, which is how every waiter behaved
|
|
56
|
-
* before tickets decided the grant.
|
|
57
|
-
*
|
|
58
|
-
* @param lockPath - The contended lock directory
|
|
59
|
-
* @param startedAt - When this waiter started waiting (its arrival time)
|
|
60
|
-
*/
|
|
61
|
-
export declare function registerWaiter(lockPath: string, startedAt: number): Promise<WaiterRegistration>;
|
|
62
|
-
/**
|
|
63
|
-
* Renders the queue position for a wait line, with the ordering rule, so the
|
|
64
|
-
* reader knows the count is a promise and not a snapshot. Empty when nothing
|
|
65
|
-
* is queued.
|
|
66
|
-
*/
|
|
67
|
-
export declare function formatLockQueuePosition(queue: LockQueueState | undefined): string;
|