@intentius/chant 0.13.1 → 0.15.1
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/dist/audit/catalog.d.ts +45 -5
- package/dist/audit/catalog.d.ts.map +1 -1
- package/dist/audit/proof.d.ts +3 -0
- package/dist/audit/proof.d.ts.map +1 -1
- package/dist/audit/report-model.d.ts +4 -1
- package/dist/audit/report-model.d.ts.map +1 -1
- package/dist/audit/report.d.ts +3 -0
- package/dist/audit/report.d.ts.map +1 -1
- package/dist/audit/rules-doc.d.ts +8 -2
- package/dist/audit/rules-doc.d.ts.map +1 -1
- package/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/lexicon-rolling-upgrade.d.ts +37 -0
- package/dist/cli/commands/lexicon-rolling-upgrade.d.ts.map +1 -0
- package/dist/cli/commands/lexicon-surface-diff.d.ts +48 -0
- package/dist/cli/commands/lexicon-surface-diff.d.ts.map +1 -0
- package/dist/cli/commands/lint.d.ts.map +1 -1
- package/dist/cli/commands/pinned-upgrade.d.ts +41 -0
- package/dist/cli/commands/pinned-upgrade.d.ts.map +1 -0
- package/dist/cli/handlers/build.d.ts.map +1 -1
- package/dist/cli/handlers/components.d.ts +39 -0
- package/dist/cli/handlers/components.d.ts.map +1 -0
- package/dist/cli/handlers/dev.d.ts +3 -0
- package/dist/cli/handlers/dev.d.ts.map +1 -1
- package/dist/cli/handlers/graph.d.ts +4 -2
- package/dist/cli/handlers/graph.d.ts.map +1 -1
- package/dist/cli/handlers/misc.d.ts.map +1 -1
- package/dist/cli/handlers/run.d.ts +49 -0
- package/dist/cli/handlers/run.d.ts.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/registry.d.ts +35 -0
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/codegen/fetch.d.ts +22 -0
- package/dist/codegen/fetch.d.ts.map +1 -1
- package/dist/codegen/lexicon-regen.d.ts +110 -0
- package/dist/codegen/lexicon-regen.d.ts.map +1 -0
- package/dist/codegen/pinned-upgrade.d.ts +153 -0
- package/dist/codegen/pinned-upgrade.d.ts.map +1 -0
- package/dist/codegen/rolling-upgrade.d.ts +138 -0
- package/dist/codegen/rolling-upgrade.d.ts.map +1 -0
- package/dist/codegen/surface-snapshot.d.ts +173 -0
- package/dist/codegen/surface-snapshot.d.ts.map +1 -0
- package/dist/codegen/version-bump.d.ts +21 -0
- package/dist/codegen/version-bump.d.ts.map +1 -0
- package/dist/components/auto-release.d.ts +93 -0
- package/dist/components/auto-release.d.ts.map +1 -0
- package/dist/components/builders.d.ts +37 -0
- package/dist/components/builders.d.ts.map +1 -0
- package/dist/components/capability-plugin-loader.d.ts +111 -0
- package/dist/components/capability-plugin-loader.d.ts.map +1 -0
- package/dist/components/capability-plugin-schema.d.ts +24 -0
- package/dist/components/capability-plugin-schema.d.ts.map +1 -0
- package/dist/components/capability-plugin.d.ts +85 -0
- package/dist/components/capability-plugin.d.ts.map +1 -0
- package/dist/components/capability.d.ts +89 -0
- package/dist/components/capability.d.ts.map +1 -0
- package/dist/components/cli-support.d.ts +204 -0
- package/dist/components/cli-support.d.ts.map +1 -0
- package/dist/components/component.d.ts +179 -0
- package/dist/components/component.d.ts.map +1 -0
- package/dist/components/config-defaults.d.ts +41 -0
- package/dist/components/config-defaults.d.ts.map +1 -0
- package/dist/components/discover.d.ts +60 -0
- package/dist/components/discover.d.ts.map +1 -0
- package/dist/components/driver-output.d.ts +20 -0
- package/dist/components/driver-output.d.ts.map +1 -0
- package/dist/components/driver.d.ts +209 -0
- package/dist/components/driver.d.ts.map +1 -0
- package/dist/components/index.d.ts +22 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/manifest-persistence.d.ts +79 -0
- package/dist/components/manifest-persistence.d.ts.map +1 -0
- package/dist/components/pilots/alb-ecs.pilot.d.ts +27 -0
- package/dist/components/pilots/alb-ecs.pilot.d.ts.map +1 -0
- package/dist/components/pilots/dynamodb.pilot.d.ts +22 -0
- package/dist/components/pilots/dynamodb.pilot.d.ts.map +1 -0
- package/dist/components/pilots/jar-emr.pilot.d.ts +37 -0
- package/dist/components/pilots/jar-emr.pilot.d.ts.map +1 -0
- package/dist/components/pilots/lambda.pilot.d.ts +35 -0
- package/dist/components/pilots/lambda.pilot.d.ts.map +1 -0
- package/dist/components/pilots/neo4j-fanout.pilot.d.ts +17 -0
- package/dist/components/pilots/neo4j-fanout.pilot.d.ts.map +1 -0
- package/dist/components/pilots/project.d.ts +13 -0
- package/dist/components/pilots/project.d.ts.map +1 -0
- package/dist/components/presets/ecs-fargate.d.ts +59 -0
- package/dist/components/presets/ecs-fargate.d.ts.map +1 -0
- package/dist/components/presets/index.d.ts +29 -0
- package/dist/components/presets/index.d.ts.map +1 -0
- package/dist/components/presets/lambda.d.ts +35 -0
- package/dist/components/presets/lambda.d.ts.map +1 -0
- package/dist/components/presets/single-host-compose.d.ts +43 -0
- package/dist/components/presets/single-host-compose.d.ts.map +1 -0
- package/dist/components/registry.d.ts +29 -0
- package/dist/components/registry.d.ts.map +1 -0
- package/dist/components/starter-plugin.d.ts +51 -0
- package/dist/components/starter-plugin.d.ts.map +1 -0
- package/dist/components/temporal-codegen-loader.d.ts +27 -0
- package/dist/components/temporal-codegen-loader.d.ts.map +1 -0
- package/dist/components/verbs/__tests__/mock-cloud-executor.d.ts +35 -0
- package/dist/components/verbs/__tests__/mock-cloud-executor.d.ts.map +1 -0
- package/dist/components/verbs/__tests__/mock-process-runner.d.ts +45 -0
- package/dist/components/verbs/__tests__/mock-process-runner.d.ts.map +1 -0
- package/dist/components/verbs/__tests__/mock-sbom-generator.d.ts +33 -0
- package/dist/components/verbs/__tests__/mock-sbom-generator.d.ts.map +1 -0
- package/dist/components/verbs/bom-writer.d.ts +155 -0
- package/dist/components/verbs/bom-writer.d.ts.map +1 -0
- package/dist/components/verbs/build-archive.d.ts +205 -0
- package/dist/components/verbs/build-archive.d.ts.map +1 -0
- package/dist/components/verbs/build.d.ts +150 -0
- package/dist/components/verbs/build.d.ts.map +1 -0
- package/dist/components/verbs/cloud-executor.d.ts +88 -0
- package/dist/components/verbs/cloud-executor.d.ts.map +1 -0
- package/dist/components/verbs/component-bom.d.ts +103 -0
- package/dist/components/verbs/component-bom.d.ts.map +1 -0
- package/dist/components/verbs/index.d.ts +49 -0
- package/dist/components/verbs/index.d.ts.map +1 -0
- package/dist/components/verbs/license-policy.d.ts +56 -0
- package/dist/components/verbs/license-policy.d.ts.map +1 -0
- package/dist/components/verbs/lockfile-sbom-generator.d.ts +81 -0
- package/dist/components/verbs/lockfile-sbom-generator.d.ts.map +1 -0
- package/dist/components/verbs/process-runner.d.ts +64 -0
- package/dist/components/verbs/process-runner.d.ts.map +1 -0
- package/dist/components/verbs/reproducibility.d.ts +80 -0
- package/dist/components/verbs/reproducibility.d.ts.map +1 -0
- package/dist/components/verbs/sbom-generator.d.ts +157 -0
- package/dist/components/verbs/sbom-generator.d.ts.map +1 -0
- package/dist/components/verbs/sbom.d.ts +79 -0
- package/dist/components/verbs/sbom.d.ts.map +1 -0
- package/dist/components/verbs/shell.d.ts +35 -0
- package/dist/components/verbs/shell.d.ts.map +1 -0
- package/dist/components/verbs/sign.d.ts +222 -0
- package/dist/components/verbs/sign.d.ts.map +1 -0
- package/dist/components/verbs/stub.d.ts +18 -0
- package/dist/components/verbs/stub.d.ts.map +1 -0
- package/dist/components/verbs/tool-sbom-generator.d.ts +51 -0
- package/dist/components/verbs/tool-sbom-generator.d.ts.map +1 -0
- package/dist/components/verbs/verify.d.ts +106 -0
- package/dist/components/verbs/verify.d.ts.map +1 -0
- package/dist/components/verbs/vex.d.ts +65 -0
- package/dist/components/verbs/vex.d.ts.map +1 -0
- package/dist/components/verbs/vuln-gate.d.ts +91 -0
- package/dist/components/verbs/vuln-gate.d.ts.map +1 -0
- package/dist/components/verbs/vuln-scan.d.ts +116 -0
- package/dist/components/verbs/vuln-scan.d.ts.map +1 -0
- package/dist/components/verbs/wait-verify.d.ts +85 -0
- package/dist/components/verbs/wait-verify.d.ts.map +1 -0
- package/dist/config.d.ts +205 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/lexicon.d.ts +78 -0
- package/dist/lexicon.d.ts.map +1 -1
- package/dist/lifecycle/build-ledger-store.d.ts +121 -0
- package/dist/lifecycle/build-ledger-store.d.ts.map +1 -0
- package/dist/lifecycle/build-ledger.d.ts +225 -0
- package/dist/lifecycle/build-ledger.d.ts.map +1 -0
- package/dist/lifecycle/git.d.ts +84 -0
- package/dist/lifecycle/git.d.ts.map +1 -1
- package/dist/lifecycle/index.d.ts +5 -0
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/oras-referrer-lookup.d.ts +41 -0
- package/dist/lifecycle/oras-referrer-lookup.d.ts.map +1 -0
- package/dist/lifecycle/release-ledger.d.ts +122 -0
- package/dist/lifecycle/release-ledger.d.ts.map +1 -0
- package/dist/lifecycle/status.d.ts +150 -0
- package/dist/lifecycle/status.d.ts.map +1 -0
- package/dist/lint/component-checks.d.ts +95 -0
- package/dist/lint/component-checks.d.ts.map +1 -0
- package/dist/lint/engine.d.ts +23 -0
- package/dist/lint/engine.d.ts.map +1 -1
- package/dist/lint/presets/strict.json +8 -1
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.d.ts +10 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.d.ts +3 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.d.ts +3 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.d.ts.map +1 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.d.ts +4 -0
- package/dist/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.d.ts.map +1 -0
- package/dist/lint/rules/comp/comp001-publishes-never-applies.d.ts +20 -0
- package/dist/lint/rules/comp/comp001-publishes-never-applies.d.ts.map +1 -0
- package/dist/lint/rules/comp/comp002-dangling-wiring-ref.d.ts +28 -0
- package/dist/lint/rules/comp/comp002-dangling-wiring-ref.d.ts.map +1 -0
- package/dist/lint/rules/comp/comp003-mutating-no-rollback.d.ts +39 -0
- package/dist/lint/rules/comp/comp003-mutating-no-rollback.d.ts.map +1 -0
- package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts +37 -0
- package/dist/lint/rules/comp/comp004-gate-needs-temporal.d.ts.map +1 -0
- package/dist/lint/rules/comp/comp005-capability-kind-is-noun.d.ts +43 -0
- package/dist/lint/rules/comp/comp005-capability-kind-is-noun.d.ts.map +1 -0
- package/dist/lint/rules/comp/comp006-shell-needs-reason.d.ts +22 -0
- package/dist/lint/rules/comp/comp006-shell-needs-reason.d.ts.map +1 -0
- package/dist/lint/rules/comp/comp007-composition-sprawl.d.ts +33 -0
- package/dist/lint/rules/comp/comp007-composition-sprawl.d.ts.map +1 -0
- package/dist/lint/rules/comp/index.d.ts +18 -0
- package/dist/lint/rules/comp/index.d.ts.map +1 -0
- package/dist/lint/rules/comp/support.d.ts +71 -0
- package/dist/lint/rules/comp/support.d.ts.map +1 -0
- package/dist/lsp/lexicon-providers.d.ts.map +1 -1
- package/dist/op/activity-registry.d.ts +11 -6
- package/dist/op/activity-registry.d.ts.map +1 -1
- package/dist/op/activity-runtime.d.ts +24 -0
- package/dist/op/activity-runtime.d.ts.map +1 -0
- package/dist/op/builders.d.ts +59 -0
- package/dist/op/builders.d.ts.map +1 -1
- package/dist/op/index.d.ts +2 -1
- package/dist/op/index.d.ts.map +1 -1
- package/dist/ownership.d.ts +20 -14
- package/dist/ownership.d.ts.map +1 -1
- package/package.json +14 -1
- package/src/audit/catalog.test.ts +74 -22
- package/src/audit/catalog.ts +74 -471
- package/src/audit/proof.ts +4 -2
- package/src/audit/report-html.test.ts +14 -7
- package/src/audit/report-model.ts +20 -9
- package/src/audit/report.test.ts +36 -13
- package/src/audit/report.ts +2 -0
- package/src/audit/rules-doc.test.ts +8 -6
- package/src/audit/rules-doc.ts +13 -5
- package/src/cli/commands/audit.ts +23 -18
- package/src/cli/commands/component-lint.test.ts +158 -0
- package/src/cli/commands/doctor.test.ts +116 -2
- package/src/cli/commands/doctor.ts +46 -0
- package/src/cli/commands/lexicon-rolling-upgrade.ts +198 -0
- package/src/cli/commands/lexicon-surface-diff.test.ts +104 -0
- package/src/cli/commands/lexicon-surface-diff.ts +185 -0
- package/src/cli/commands/lint.ts +142 -1
- package/src/cli/commands/pinned-upgrade.ts +204 -0
- package/src/cli/handlers/build.ts +58 -1
- package/src/cli/handlers/components.test.ts +504 -0
- package/src/cli/handlers/components.ts +404 -0
- package/src/cli/handlers/dev.ts +60 -1
- package/src/cli/handlers/graph.ts +47 -2
- package/src/cli/handlers/misc.ts +45 -1
- package/src/cli/handlers/run.test.ts +967 -3
- package/src/cli/handlers/run.ts +618 -11
- package/src/cli/main.test.ts +66 -0
- package/src/cli/main.ts +105 -2
- package/src/cli/registry.ts +35 -0
- package/src/codegen/fetch.test.ts +84 -3
- package/src/codegen/fetch.ts +76 -2
- package/src/codegen/lexicon-regen.test.ts +298 -0
- package/src/codegen/lexicon-regen.ts +545 -0
- package/src/codegen/pinned-upgrade.test.ts +399 -0
- package/src/codegen/pinned-upgrade.ts +423 -0
- package/src/codegen/rolling-upgrade.test.ts +333 -0
- package/src/codegen/rolling-upgrade.ts +320 -0
- package/src/codegen/surface-snapshot.test.ts +461 -0
- package/src/codegen/surface-snapshot.ts +546 -0
- package/src/codegen/version-bump.test.ts +47 -0
- package/src/codegen/version-bump.ts +39 -0
- package/src/components/README.md +130 -0
- package/src/components/SPRAWL-VALIDATION.md +181 -0
- package/src/components/__fixtures__/alb-ecs-service.json +51 -0
- package/src/components/__fixtures__/dynamodb-infra.json +32 -0
- package/src/components/__fixtures__/emr-job-consumer.json +26 -0
- package/src/components/__fixtures__/jar-lib-producer.json +16 -0
- package/src/components/__fixtures__/lambda-image-processor.json +28 -0
- package/src/components/__fixtures__/neo4j-fanout.json +34 -0
- package/src/components/__fixtures__/single-host-compose.json +29 -0
- package/src/components/auto-release.test.ts +217 -0
- package/src/components/auto-release.ts +216 -0
- package/src/components/builders.test.ts +45 -0
- package/src/components/builders.ts +71 -0
- package/src/components/capability-plugin-loader.ts +218 -0
- package/src/components/capability-plugin-schema.ts +56 -0
- package/src/components/capability-plugin.test.ts +235 -0
- package/src/components/capability-plugin.ts +108 -0
- package/src/components/capability.ts +117 -0
- package/src/components/cli-support.test.ts +579 -0
- package/src/components/cli-support.ts +481 -0
- package/src/components/component-schema.test.ts +265 -0
- package/src/components/component.schema.json +235 -0
- package/src/components/component.test.ts +251 -0
- package/src/components/component.ts +255 -0
- package/src/components/config-defaults.test.ts +263 -0
- package/src/components/config-defaults.ts +145 -0
- package/src/components/discover.test.ts +352 -0
- package/src/components/discover.ts +167 -0
- package/src/components/driver-output.ts +71 -0
- package/src/components/driver.test.ts +638 -0
- package/src/components/driver.ts +690 -0
- package/src/components/index.ts +113 -0
- package/src/components/manifest-persistence.test.ts +152 -0
- package/src/components/manifest-persistence.ts +164 -0
- package/src/components/pilots/README.md +33 -0
- package/src/components/pilots/alb-ecs.pilot.ts +63 -0
- package/src/components/pilots/dynamodb.pilot.ts +59 -0
- package/src/components/pilots/jar-emr.pilot.ts +69 -0
- package/src/components/pilots/lambda.pilot.ts +55 -0
- package/src/components/pilots/neo4j-fanout.pilot.ts +92 -0
- package/src/components/pilots/pilots-lint-clean.test.ts +78 -0
- package/src/components/pilots/pilots.test.ts +126 -0
- package/src/components/pilots/project.ts +13 -0
- package/src/components/presets/comp007-reduction.test.ts +122 -0
- package/src/components/presets/ecs-fargate.test.ts +84 -0
- package/src/components/presets/ecs-fargate.ts +103 -0
- package/src/components/presets/index.ts +32 -0
- package/src/components/presets/lambda.test.ts +35 -0
- package/src/components/presets/lambda.ts +53 -0
- package/src/components/presets/single-host-compose.test.ts +65 -0
- package/src/components/presets/single-host-compose.ts +64 -0
- package/src/components/registry.test.ts +112 -0
- package/src/components/registry.ts +37 -0
- package/src/components/starter-plugin.ts +105 -0
- package/src/components/temporal-codegen-loader.ts +41 -0
- package/src/components/verbs/__fixtures__/package-lock.json +45 -0
- package/src/components/verbs/__fixtures__/pom.xml +37 -0
- package/src/components/verbs/__fixtures__/schemas/cyclonedx-1.5.schema.json +3800 -0
- package/src/components/verbs/__fixtures__/schemas/cyclonedx-spdx-license.schema.json +621 -0
- package/src/components/verbs/__fixtures__/schemas/jsf-0.82.schema.json +240 -0
- package/src/components/verbs/__fixtures__/schemas/spdx-2.3.schema.json +740 -0
- package/src/components/verbs/__tests__/mock-cloud-executor.ts +102 -0
- package/src/components/verbs/__tests__/mock-process-runner.ts +79 -0
- package/src/components/verbs/__tests__/mock-sbom-generator.ts +85 -0
- package/src/components/verbs/bom-writer.test.ts +331 -0
- package/src/components/verbs/bom-writer.ts +386 -0
- package/src/components/verbs/build-archive.test.ts +251 -0
- package/src/components/verbs/build-archive.ts +296 -0
- package/src/components/verbs/build.test.ts +222 -0
- package/src/components/verbs/build.ts +252 -0
- package/src/components/verbs/cloud-executor.ts +181 -0
- package/src/components/verbs/component-bom.test.ts +219 -0
- package/src/components/verbs/component-bom.ts +189 -0
- package/src/components/verbs/index.ts +49 -0
- package/src/components/verbs/license-policy.ts +115 -0
- package/src/components/verbs/lockfile-sbom-generator.test.ts +195 -0
- package/src/components/verbs/lockfile-sbom-generator.ts +236 -0
- package/src/components/verbs/process-runner.test.ts +79 -0
- package/src/components/verbs/process-runner.ts +113 -0
- package/src/components/verbs/reproducibility.test.ts +24 -0
- package/src/components/verbs/reproducibility.ts +100 -0
- package/src/components/verbs/sbom-generator.test.ts +96 -0
- package/src/components/verbs/sbom-generator.ts +209 -0
- package/src/components/verbs/sbom.test.ts +184 -0
- package/src/components/verbs/sbom.ts +152 -0
- package/src/components/verbs/shell.test.ts +36 -0
- package/src/components/verbs/shell.ts +51 -0
- package/src/components/verbs/sign.test.ts +210 -0
- package/src/components/verbs/sign.ts +350 -0
- package/src/components/verbs/stub.ts +34 -0
- package/src/components/verbs/tool-sbom-generator.test.ts +194 -0
- package/src/components/verbs/tool-sbom-generator.ts +192 -0
- package/src/components/verbs/verify.test.ts +159 -0
- package/src/components/verbs/verify.ts +179 -0
- package/src/components/verbs/vex.ts +182 -0
- package/src/components/verbs/vuln-gate.test.ts +201 -0
- package/src/components/verbs/vuln-gate.ts +170 -0
- package/src/components/verbs/vuln-scan.test.ts +145 -0
- package/src/components/verbs/vuln-scan.ts +266 -0
- package/src/components/verbs/wait-verify.test.ts +111 -0
- package/src/components/verbs/wait-verify.ts +171 -0
- package/src/config.test.ts +74 -1
- package/src/config.ts +219 -0
- package/src/index.ts +32 -0
- package/src/lexicon.ts +88 -0
- package/src/lifecycle/build-ledger-store.test.ts +217 -0
- package/src/lifecycle/build-ledger-store.ts +165 -0
- package/src/lifecycle/build-ledger.test.ts +349 -0
- package/src/lifecycle/build-ledger.ts +305 -0
- package/src/lifecycle/git.test.ts +118 -0
- package/src/lifecycle/git.ts +149 -14
- package/src/lifecycle/index.ts +5 -0
- package/src/lifecycle/oras-referrer-lookup.test.ts +116 -0
- package/src/lifecycle/oras-referrer-lookup.ts +110 -0
- package/src/lifecycle/release-ledger.test.ts +209 -0
- package/src/lifecycle/release-ledger.ts +185 -0
- package/src/lifecycle/status.test.ts +330 -0
- package/src/lifecycle/status.ts +278 -0
- package/src/lint/component-checks.ts +148 -0
- package/src/lint/config.test.ts +21 -0
- package/src/lint/engine.ts +11 -2
- package/src/lint/presets/relaxed.json +8 -1
- package/src/lint/presets/strict.json +8 -1
- package/src/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.ts +9 -0
- package/src/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.ts +9 -0
- package/src/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.ts +11 -0
- package/src/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.ts +13 -0
- package/src/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.ts +11 -0
- package/src/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.ts +27 -0
- package/src/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.ts +10 -0
- package/src/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.ts +23 -0
- package/src/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.ts +10 -0
- package/src/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.ts +19 -0
- package/src/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.ts +10 -0
- package/src/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.ts +20 -0
- package/src/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.ts +23 -0
- package/src/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.ts +10 -0
- package/src/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.ts +14 -0
- package/src/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.ts +18 -0
- package/src/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.ts +10 -0
- package/src/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.ts +14 -0
- package/src/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.ts +13 -0
- package/src/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.ts +13 -0
- package/src/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.ts +12 -0
- package/src/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.ts +18 -0
- package/src/lint/rules/comp/comp.test.ts +378 -0
- package/src/lint/rules/comp/comp001-publishes-never-applies.ts +78 -0
- package/src/lint/rules/comp/comp002-dangling-wiring-ref.ts +94 -0
- package/src/lint/rules/comp/comp003-mutating-no-rollback.ts +115 -0
- package/src/lint/rules/comp/comp004-gate-needs-temporal.ts +66 -0
- package/src/lint/rules/comp/comp005-capability-kind-is-noun.ts +113 -0
- package/src/lint/rules/comp/comp006-shell-needs-reason.ts +55 -0
- package/src/lint/rules/comp/comp007-composition-sprawl.ts +71 -0
- package/src/lint/rules/comp/index.ts +37 -0
- package/src/lint/rules/comp/support.ts +173 -0
- package/src/lsp/lexicon-providers.test.ts +55 -0
- package/src/lsp/lexicon-providers.ts +13 -3
- package/src/op/activity-registry.test.ts +38 -0
- package/src/op/activity-registry.ts +31 -12
- package/src/op/activity-runtime.ts +73 -0
- package/src/op/builders.ts +99 -0
- package/src/op/index.ts +3 -1
- package/src/ownership.test.ts +24 -26
- package/src/ownership.ts +26 -38
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-ledger.d.ts","sourceRoot":"","sources":["../../src/lifecycle/release-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,4FAA4F;IAC5F,OAAO,EAAE,CAAC,CAAC;IACX,6FAA6F;IAC7F,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;OAOG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,iJAAiJ;IACjJ,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd,gOAAgO;IAChO,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAaD,4KAA4K;AAC5K,qBAAa,yBAA0B,SAAQ,KAAK;aACtB,OAAO,EAAE,MAAM,EAAE;gBAAjB,OAAO,EAAE,MAAM,EAAE;CAI9C;AAED,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,EAAE,CAO9E;AAED,gIAAgI;AAChI,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAEhE;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,kBAAkB,EACzB,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC,CAQpD;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB1D;AAED,4EAA4E;AAC5E,wBAAsB,uBAAuB,CAAC,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAExF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CASvF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAE1F"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status surface — reconciles the release ledger against live truth (#568,
|
|
3
|
+
* epic #551 "Build & deploy observability").
|
|
4
|
+
*
|
|
5
|
+
* Two ledgers, joined by one key. What's been built lives in the
|
|
6
|
+
* content-addressed `BuildArchive` (../components/verbs/build-archive.ts,
|
|
7
|
+
* ./build-ledger.ts). What we *recorded* deploying lives in the release
|
|
8
|
+
* ledger (./release-ledger.ts). What's *actually running* is live truth:
|
|
9
|
+
* ownership markers (../ownership.ts) plus `lifecycle diff --live`
|
|
10
|
+
* (./live-diff.ts). This module is the join: for each component/env, line up
|
|
11
|
+
* the latest recorded release against whatever live evidence is available,
|
|
12
|
+
* and flag the four things that matter —
|
|
13
|
+
*
|
|
14
|
+
* - **unrecorded** — something is live/owned but no release record exists
|
|
15
|
+
* for it. Someone (or some pipeline) deployed outside the recorded path.
|
|
16
|
+
* - **stale** — a release record exists but nothing live corresponds to it
|
|
17
|
+
* anymore (the component disappeared from observation).
|
|
18
|
+
* - **drifted** — the environment's live/owned resources don't confirm the
|
|
19
|
+
* recorded digest one way or the other from this join alone (recorded,
|
|
20
|
+
* but live identity can't be read back to a digest) — surfaced as a
|
|
21
|
+
* lower-confidence signal rather than silently treated as "reconciled".
|
|
22
|
+
* - **reconciled** — a release record exists and live evidence (via
|
|
23
|
+
* ownership) confirms the component is present and owned by chant.
|
|
24
|
+
*
|
|
25
|
+
* This is deliberately a light-touch reconciliation: chant's lexicons report
|
|
26
|
+
* resource-level status (`ResourceMetadata`), not "the digest currently
|
|
27
|
+
* running" (most lexicons have no notion of image digest at all — a
|
|
28
|
+
* CloudFormation stack doesn't expose "the ECS task's image digest" through
|
|
29
|
+
* `describeResources`). So the live axis here is presence/ownership, not a
|
|
30
|
+
* digest re-derivation; digest-level truth is what the *release ledger*
|
|
31
|
+
* itself provides, and cross-environment digest comparison
|
|
32
|
+
* (`buildIsInBothEnvs`) is the query the epic actually asks for ("which
|
|
33
|
+
* build is in prod, and is it the one tested in staging").
|
|
34
|
+
*/
|
|
35
|
+
import type { ChangeSet, ChangeAction } from "./change-set.js";
|
|
36
|
+
import { type ReleaseRecord } from "./release-ledger.js";
|
|
37
|
+
import type { BuildLedgerEntry, ComponentBomSummary } from "./build-ledger.js";
|
|
38
|
+
/** One row of `chant components status [env]` — the per-component join of recorded vs live. */
|
|
39
|
+
export interface ComponentStatusRow {
|
|
40
|
+
component: string;
|
|
41
|
+
env: string;
|
|
42
|
+
/** The latest recorded release for this component/env, if any. */
|
|
43
|
+
recorded?: ReleaseRecord;
|
|
44
|
+
/** Build-ledger detail for the recorded digest, when discoverable (referrers, manifest digest, this artifact's own reproducibility — #614). */
|
|
45
|
+
build?: BuildLedgerEntry;
|
|
46
|
+
/**
|
|
47
|
+
* Component-level BOM aggregation summary (#614,
|
|
48
|
+
* ../components/verbs/component-bom.ts), when the recorded digest's build
|
|
49
|
+
* archive manifest is available (`opts.componentBomByDigest`). Reports
|
|
50
|
+
* every leaf BOM (software SBOM + IaC config-BOM) the component's archive
|
|
51
|
+
* carries and whether they compose 1:1 or as a real multi-artifact
|
|
52
|
+
* assembly — independent of `build`/`buildsByDigest` (which stays scoped
|
|
53
|
+
* to image entries), since a config-only/infra component with no image
|
|
54
|
+
* still has a component BOM to report.
|
|
55
|
+
*/
|
|
56
|
+
componentBom?: ComponentBomSummary;
|
|
57
|
+
/** Live reconciliation verdict for this row. */
|
|
58
|
+
reconciliation: "reconciled" | "unrecorded" | "stale" | "drifted" | "unknown";
|
|
59
|
+
/** Human-readable detail backing the verdict. */
|
|
60
|
+
detail: string;
|
|
61
|
+
}
|
|
62
|
+
export interface ComponentStatusResult {
|
|
63
|
+
env: string;
|
|
64
|
+
rows: ComponentStatusRow[];
|
|
65
|
+
/** Count of malformed ledger lines skipped (surfaced so a corrupted ledger is never silently invisible). */
|
|
66
|
+
malformedLedgerLines: number;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Live evidence for one component, distilled from a `ChangeSet` entry
|
|
70
|
+
* (./change-set.ts) — the same read-only classification `lifecycle plan`
|
|
71
|
+
* already computes from ownership + `diffLive`. `chant components status`
|
|
72
|
+
* doesn't recompute live/ownership logic; it reuses `buildChangeSet`'s
|
|
73
|
+
* output, so "unrecorded deploy" and "drift" both key off the one
|
|
74
|
+
* ownership-aware classification chant already trusts.
|
|
75
|
+
*/
|
|
76
|
+
export interface LiveComponentEvidence {
|
|
77
|
+
/** True if this component name was observed live at all (declared+live, or orphan+live). */
|
|
78
|
+
live: boolean;
|
|
79
|
+
/** The `ChangeSet` action chant's existing plan logic assigned, when the component maps to a tracked entity/resource name. */
|
|
80
|
+
action?: ChangeAction;
|
|
81
|
+
/** Ownership verdict, when known. */
|
|
82
|
+
ownership?: "owned" | "foreign" | "unknown";
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Component -> live entity/resource name(s) it owns (#598). Mirrors
|
|
86
|
+
* `Component.liveNames` (../components/component.ts) without importing it —
|
|
87
|
+
* this module stays decoupled from the typed authoring form, since a
|
|
88
|
+
* hand-written JSON component or a future non-chant frontend can supply the
|
|
89
|
+
* same mapping without going through `Component` at all. A component absent
|
|
90
|
+
* from this map, or mapped to `undefined`/an empty array, falls back to its
|
|
91
|
+
* own name as the sole live name — the original name == entity join.
|
|
92
|
+
*/
|
|
93
|
+
export type LiveNameMapping = Map<string, string[] | undefined>;
|
|
94
|
+
/** Resolve the live entity/resource name(s) a component owns: its explicit mapping, or `[component]` when none is given. */
|
|
95
|
+
export declare function resolveLiveNames(component: string, mapping?: LiveNameMapping): string[];
|
|
96
|
+
/**
|
|
97
|
+
* Build a `component -> live evidence` map from a `ChangeSet`. Components and
|
|
98
|
+
* chant entities are different namespaces (a component's `name` need not
|
|
99
|
+
* equal any single lexicon entity name), so callers that want live
|
|
100
|
+
* reconciliation for a component whose live name(s) differ from its own name
|
|
101
|
+
* pass `nameMapping` (typically projected from `Component.liveNames`, see
|
|
102
|
+
* ../components/component.ts) — e.g. `new Map([["search-svc",
|
|
103
|
+
* ["search-service-v2"]]])`. Without a mapping (or for a component with no
|
|
104
|
+
* entry in it), the component's own name is used as its sole live name — the
|
|
105
|
+
* identity-keyed join that was this function's only behavior before #598,
|
|
106
|
+
* preserved here as the fallback so existing callers see no change.
|
|
107
|
+
*/
|
|
108
|
+
export declare function liveEvidenceFromChangeSet(cs: ChangeSet, nameMapping?: LiveNameMapping): Map<string, LiveComponentEvidence>;
|
|
109
|
+
/**
|
|
110
|
+
* Reconcile the release ledger against live evidence for one environment.
|
|
111
|
+
* Pure — no I/O. Callers assemble `records` (./release-ledger.ts's
|
|
112
|
+
* `readReleaseLedger`), `liveEvidence` (from a `ChangeSet` via
|
|
113
|
+
* `liveEvidenceFromChangeSet`, or `undefined` when `--live` wasn't
|
|
114
|
+
* requested), `builds` (a `component -> BuildLedgerEntry` lookup keyed by
|
|
115
|
+
* digest, from ./build-ledger.ts), and `componentBomByDigest` (#614, a
|
|
116
|
+
* `digest -> ComponentBomSummary` lookup, also from ./build-ledger.ts) ahead
|
|
117
|
+
* of time.
|
|
118
|
+
*/
|
|
119
|
+
export declare function reconcileStatus(env: string, records: ReleaseRecord[], opts?: {
|
|
120
|
+
liveEvidence?: Map<string, LiveComponentEvidence>;
|
|
121
|
+
/** Build-ledger detail keyed by digest, when available. */
|
|
122
|
+
buildsByDigest?: Map<string, BuildLedgerEntry>;
|
|
123
|
+
/** Component-level BOM aggregation summary keyed by digest, when available (#614). Independent of `buildsByDigest` — a config-only/infra component with no image entry still has a component BOM to report. */
|
|
124
|
+
componentBomByDigest?: Map<string, ComponentBomSummary>;
|
|
125
|
+
/** Component names known to exist (from `discoverComponents`) but with no release record at all — still reported as `unrecorded` when live evidence says they're running. */
|
|
126
|
+
allComponents?: string[];
|
|
127
|
+
}): ComponentStatusRow[];
|
|
128
|
+
/**
|
|
129
|
+
* Answer "which build is in `envA`, and is it the one tested in `envB`" —
|
|
130
|
+
* the single-query comparison the epic names explicitly — for one component
|
|
131
|
+
* across two environments' release ledgers.
|
|
132
|
+
*/
|
|
133
|
+
export interface CrossEnvComparison {
|
|
134
|
+
component: string;
|
|
135
|
+
envA: string;
|
|
136
|
+
envB: string;
|
|
137
|
+
digestA?: string;
|
|
138
|
+
digestB?: string;
|
|
139
|
+
/** True only when both envs have a recorded digest and they match. */
|
|
140
|
+
same: boolean;
|
|
141
|
+
}
|
|
142
|
+
/** Compare the latest recorded digest for `component` between two environments' release records. */
|
|
143
|
+
export declare function compareAcrossEnvironments(component: string, envA: {
|
|
144
|
+
name: string;
|
|
145
|
+
records: ReleaseRecord[];
|
|
146
|
+
}, envB: {
|
|
147
|
+
name: string;
|
|
148
|
+
records: ReleaseRecord[];
|
|
149
|
+
}): CrossEnvComparison;
|
|
150
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/lifecycle/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE5E,+FAA+F;AAC/F,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,kEAAkE;IAClE,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,+IAA+I;IAC/I,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,gDAAgD;IAChD,cAAc,EAAE,YAAY,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IAC9E,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,kBAAkB,EAAE,CAAC;IAC3B,4GAA4G;IAC5G,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,4FAA4F;IAC5F,IAAI,EAAE,OAAO,CAAC;IACd,8HAA8H;IAC9H,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;CAC7C;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AAEhE,4HAA4H;AAC5H,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,EAAE,CAGvF;AA2BD;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,SAAS,EACb,WAAW,CAAC,EAAE,eAAe,GAC5B,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CA+BpC;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,aAAa,EAAE,EACxB,IAAI,CAAC,EAAE;IACL,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAClD,2DAA2D;IAC3D,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC/C,+MAA+M;IAC/M,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACxD,6KAA6K;IAC7K,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,GACA,kBAAkB,EAAE,CA4CtB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,IAAI,EAAE,OAAO,CAAC;CACf;AAED,oGAAoG;AACpG,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAA;CAAE,EAChD,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAA;CAAE,GAC/C,kBAAkB,CAWpB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Component composition checks — the COMP* rule family (#562, epic #551).
|
|
3
|
+
*
|
|
4
|
+
* COR/EVL rules (./rule.ts, ./engine.ts) check one `ts.SourceFile`'s AST in
|
|
5
|
+
* isolation, synchronously — no execution, no cross-file knowledge. A COMP*
|
|
6
|
+
* rule cannot work that way: "publishes but never applies", "`imageRef`
|
|
7
|
+
* points at a nonexistent phase", and "identical composition repeated across
|
|
8
|
+
* components" are all properties of the *discovered component graph*, which
|
|
9
|
+
* only exists after `*.component.ts` files are actually imported (mirroring
|
|
10
|
+
* `../components/discover.ts`'s `discoverComponents`, itself async for the
|
|
11
|
+
* same reason `../discovery/index.ts`'s `discover()` is).
|
|
12
|
+
*
|
|
13
|
+
* Rather than stretch `LintRule.check(context)` (sync, single-file, AST-only)
|
|
14
|
+
* to cover this, COMP* rules follow the precedent chant already has for
|
|
15
|
+
* "check something that needs real, resolved, whole-project data":
|
|
16
|
+
* `./post-synth.ts`'s `PostSynthCheck`/`PostSynthContext`/`runPostSynthChecks`,
|
|
17
|
+
* which wraps a real (async) build result for a sync `check(ctx)` call. This
|
|
18
|
+
* module is that same shape, one layer earlier in the pipeline — over the
|
|
19
|
+
* discovered `Component` graph instead of serialized resource output — so
|
|
20
|
+
* `chant lint` (not just `chant build`) can run it. See
|
|
21
|
+
* ../components/discover.ts's own docstring for why `Component` gets a
|
|
22
|
+
* parallel, purpose-built convention rather than reusing `Declarable`'s.
|
|
23
|
+
*/
|
|
24
|
+
import type { Component } from "../components/component.js";
|
|
25
|
+
import type { DiscoveredComponent } from "../components/discover.js";
|
|
26
|
+
import type { RollbackPolicy } from "../components/capability.js";
|
|
27
|
+
import type { Severity } from "./rule.js";
|
|
28
|
+
/** One discovered component, keyed by its declared name, with the file it came from. */
|
|
29
|
+
export interface ComponentCheckEntry {
|
|
30
|
+
component: Component;
|
|
31
|
+
filePath: string;
|
|
32
|
+
}
|
|
33
|
+
/** Context handed to a `ComponentCheck` — the whole discovered component graph for one project. */
|
|
34
|
+
export interface ComponentCheckContext {
|
|
35
|
+
/** Every discovered component, keyed by `component.name`. */
|
|
36
|
+
components: Map<string, ComponentCheckEntry>;
|
|
37
|
+
/**
|
|
38
|
+
* Every capability `kind` registered for this project — core's starter set
|
|
39
|
+
* plus whatever the active lexicons contribute (e.g. `cfn-deploy` when
|
|
40
|
+
* `lexicons: ["aws"]`). Supplied by the `chant lint` CLI, which builds the
|
|
41
|
+
* registry from the project's config; undefined when a check runs without a
|
|
42
|
+
* resolved registry (e.g. a direct unit test), in which case a rule should
|
|
43
|
+
* fall back to core's starter set. Rules that key off "is this a known verb"
|
|
44
|
+
* (e.g. COMP005) read this rather than hard-coding a verb list.
|
|
45
|
+
*/
|
|
46
|
+
knownKinds?: ReadonlySet<string>;
|
|
47
|
+
/**
|
|
48
|
+
* Each registered verb's rollback disposition (`native`/`none-by-design`/
|
|
49
|
+
* `needs-opt-out`), derived from the project's capability registry the same
|
|
50
|
+
* way `knownKinds` is. Read by COMP003 instead of a hard-coded verb list;
|
|
51
|
+
* undefined when no registry was resolved (a check then treats every kind as
|
|
52
|
+
* `none-by-design`, i.e. flags nothing).
|
|
53
|
+
*/
|
|
54
|
+
rollbackPolicies?: ReadonlyMap<string, RollbackPolicy>;
|
|
55
|
+
}
|
|
56
|
+
/** A diagnostic from a component composition check. Shaped like `PostSynthDiagnostic`, plus a `file` so it can be merged into `LintDiagnostic`s and reported per-file like every other lint diagnostic. */
|
|
57
|
+
export interface ComponentCheckDiagnostic {
|
|
58
|
+
/** ID of the check that produced this diagnostic (e.g. "COMP001"). */
|
|
59
|
+
checkId: string;
|
|
60
|
+
severity: Severity;
|
|
61
|
+
message: string;
|
|
62
|
+
/** File the discovered component was declared in — where the diagnostic is reported. */
|
|
63
|
+
file: string;
|
|
64
|
+
/** The component name this diagnostic concerns. */
|
|
65
|
+
component: string;
|
|
66
|
+
}
|
|
67
|
+
/** A composition-level lint check over the whole discovered component graph. */
|
|
68
|
+
export interface ComponentCheck {
|
|
69
|
+
/** Unique identifier, e.g. "COMP001". */
|
|
70
|
+
id: string;
|
|
71
|
+
description: string;
|
|
72
|
+
severity: Severity;
|
|
73
|
+
category: "correctness" | "style" | "performance" | "security";
|
|
74
|
+
/** Execute the check and return diagnostics. */
|
|
75
|
+
check(ctx: ComponentCheckContext): ComponentCheckDiagnostic[];
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Discover every component under `path` and run every `ComponentCheck`
|
|
79
|
+
* against the resulting graph. Mirrors `runPostSynthChecks`'s shape
|
|
80
|
+
* (async discovery/build once, then every check runs sync over the result),
|
|
81
|
+
* except the input is `discoverComponents`'s result rather than a build's
|
|
82
|
+
* serialized output.
|
|
83
|
+
*
|
|
84
|
+
* Discovery errors (e.g. a duplicate component name, a `*.component.ts` file
|
|
85
|
+
* that throws on import) are surfaced as a single synthetic diagnostic per
|
|
86
|
+
* error under the pseudo-check id "COMP000" rather than silently dropped —
|
|
87
|
+
* matching how `discoverComponents`'s caller (`../components/cli-support.ts`)
|
|
88
|
+
* always surfaces `result.errors` rather than ignoring them.
|
|
89
|
+
*/
|
|
90
|
+
export declare function runComponentChecks(path: string, checks: ComponentCheck[], registryContext?: Pick<ComponentCheckContext, "knownKinds" | "rollbackPolicies">): Promise<ComponentCheckDiagnostic[]>;
|
|
91
|
+
/** Structural type guard, mirroring `isPostSynthCheck` — used by rule discovery/registry code. */
|
|
92
|
+
export declare function isComponentCheck(value: unknown): value is ComponentCheck;
|
|
93
|
+
/** Re-exported for rule modules that need the discovered shape without importing `../components/discover` directly. */
|
|
94
|
+
export type { DiscoveredComponent };
|
|
95
|
+
//# sourceMappingURL=component-checks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-checks.d.ts","sourceRoot":"","sources":["../../src/lint/component-checks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEvC,wFAAwF;AACxF,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mGAAmG;AACnG,MAAM,WAAW,qBAAqB;IACpC,6DAA6D;IAC7D,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC7C;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACxD;AAED,2MAA2M;AAC3M,MAAM,WAAW,wBAAwB;IACvC,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,aAAa,GAAG,OAAO,GAAG,aAAa,GAAG,UAAU,CAAC;IAC/D,gDAAgD;IAChD,KAAK,CAAC,GAAG,EAAE,qBAAqB,GAAG,wBAAwB,EAAE,CAAC;CAC/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,EAAE,EACxB,eAAe,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,YAAY,GAAG,kBAAkB,CAAC,GAC/E,OAAO,CAAC,wBAAwB,EAAE,CAAC,CA+BrC;AAED,kGAAkG;AAClG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAUxE;AAED,uHAAuH;AACvH,YAAY,EAAE,mBAAmB,EAAE,CAAC"}
|
package/dist/lint/engine.d.ts
CHANGED
|
@@ -10,6 +10,29 @@ export interface LintRunResult {
|
|
|
10
10
|
reason?: string;
|
|
11
11
|
}>;
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Represents a disable directive found in source code comments
|
|
15
|
+
*/
|
|
16
|
+
export interface DisableDirective {
|
|
17
|
+
/** Line number where the directive appears (1-based) */
|
|
18
|
+
line: number;
|
|
19
|
+
/** Type of directive */
|
|
20
|
+
type: "file" | "line" | "next-line";
|
|
21
|
+
/** Specific rule IDs to disable, or undefined for all rules */
|
|
22
|
+
ruleIds?: string[];
|
|
23
|
+
/** Optional reason for the suppression (text after ` -- `) */
|
|
24
|
+
reason?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Parse `chant-disable`/`chant-disable-line`/`chant-disable-next-line`
|
|
28
|
+
* comments out of raw file content. Exported (in addition to being used
|
|
29
|
+
* internally by `runLint`) so other diagnostic sources that are not plain
|
|
30
|
+
* per-file AST `LintRule`s — e.g. ../lint/rules/comp's component composition
|
|
31
|
+
* checks, which produce whole-component diagnostics rather than
|
|
32
|
+
* exact-line ones — can still honor at least the file-level directive form
|
|
33
|
+
* without duplicating this parsing.
|
|
34
|
+
*/
|
|
35
|
+
export declare function parseDisableComments(content: string): DisableDirective[];
|
|
13
36
|
/**
|
|
14
37
|
* Execute lint rules on a set of files
|
|
15
38
|
* @param files - Array of file paths to lint
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/lint/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAe,MAAM,QAAQ,CAAC;AAIpE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,mFAAmF;IACnF,UAAU,EAAE,KAAK,CAAC,cAAc,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/lint/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAe,MAAM,QAAQ,CAAC;AAIpE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iEAAiE;IACjE,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,mFAAmF;IACnF,UAAU,EAAE,KAAK,CAAC,cAAc,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;IACpC,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAkED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAyCxE;AAgDD;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,EAAE,QAAQ,EAAE,EACjB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACjD,OAAO,CAAC,aAAa,CAAC,CAqDxB"}
|
|
@@ -14,6 +14,13 @@
|
|
|
14
14
|
"COR012": "warning",
|
|
15
15
|
"COR013": "info",
|
|
16
16
|
"COR014": "warning",
|
|
17
|
-
"COR015": "warning"
|
|
17
|
+
"COR015": "warning",
|
|
18
|
+
"COMP001": "error",
|
|
19
|
+
"COMP002": "error",
|
|
20
|
+
"COMP003": "error",
|
|
21
|
+
"COMP004": "error",
|
|
22
|
+
"COMP005": "error",
|
|
23
|
+
"COMP006": "error",
|
|
24
|
+
"COMP007": "warning"
|
|
18
25
|
}
|
|
19
26
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Component } from "../../../../../components/component.js";
|
|
2
|
+
/** Duplicate component name (see broken-b.component.ts) — exercises the COMP000 discovery-error surfacing path in component-checks.ts. */
|
|
3
|
+
export declare const dup: Component;
|
|
4
|
+
//# sourceMappingURL=broken-a.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broken-a.component.d.ts","sourceRoot":"","sources":["../../../../../../src/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-a.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAGrE,0IAA0I;AAC1I,eAAO,MAAM,GAAG,EAAE,SAIjB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Component } from "../../../../../components/component.js";
|
|
2
|
+
/** Duplicate component name (see broken-a.component.ts) — exercises the COMP000 discovery-error surfacing path in component-checks.ts. */
|
|
3
|
+
export declare const dup: Component;
|
|
4
|
+
//# sourceMappingURL=broken-b.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broken-b.component.d.ts","sourceRoot":"","sources":["../../../../../../src/lint/rules/__fixtures__/comp/comp000-discovery-error/broken-b.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAGrE,0IAA0I;AAC1I,eAAO,MAAM,GAAG,EAAE,SAIjB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Component } from "../../../../../../components/component.js";
|
|
2
|
+
/** COMP001 fail case: publishes an artifact nothing ever consumes — no other component references it, and no later step in this component references the Publish phase's output. */
|
|
3
|
+
export declare const orphanLib: Component;
|
|
4
|
+
//# sourceMappingURL=orphan-lib.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orphan-lib.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp001/fail/orphan-lib.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,oLAAoL;AACpL,eAAO,MAAM,SAAS,EAAE,SAMvB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Component } from "../../../../../../components/component.js";
|
|
2
|
+
/** Consumer that references jar-lib's published artifact — makes jar-lib's publish step "consumed" for COMP001. */
|
|
3
|
+
export declare const emrJob: Component;
|
|
4
|
+
//# sourceMappingURL=emr-job.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emr-job.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp001/pass/emr-job.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,mHAAmH;AACnH,eAAO,MAAM,MAAM,EAAE,SAQpB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Component } from "../../../../../../components/component.js";
|
|
2
|
+
/** Producer whose published artifact IS consumed downstream (by emr-job.component.ts) — COMP001 must not flag this. */
|
|
3
|
+
export declare const jarLib: Component;
|
|
4
|
+
//# sourceMappingURL=jar-lib.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jar-lib.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp001/pass/jar-lib.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,uHAAuH;AACvH,eAAO,MAAM,MAAM,EAAE,SAMpB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Component } from "../../../../../../components/component.js";
|
|
2
|
+
/**
|
|
3
|
+
* COMP002 fail case: two dangling wiring references.
|
|
4
|
+
* - "@Build.digest" names a phase ("Build") that does not exist in this
|
|
5
|
+
* component's deploy (the actual phase is named "Publish").
|
|
6
|
+
* - "@missing-lib.publish.uri" names a component that was never discovered
|
|
7
|
+
* at all in this fixture directory.
|
|
8
|
+
*/
|
|
9
|
+
export declare const searchService: Component;
|
|
10
|
+
//# sourceMappingURL=search-service.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-service.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp002/fail/search-service.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,SAgB3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jar-lib.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp002/pass/jar-lib.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,eAAO,MAAM,MAAM,EAAE,SAMpB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Component } from "../../../../../../components/component.js";
|
|
2
|
+
/** COMP002 pass case: every wiring reference resolves — "@Publish.digest" points at this component's own "Publish" phase, and "@jar-lib.publish.uri" points at a discovered component listed in dependsOn. */
|
|
3
|
+
export declare const searchService: Component;
|
|
4
|
+
//# sourceMappingURL=search-service.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-service.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp002/pass/search-service.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,8MAA8M;AAC9M,eAAO,MAAM,aAAa,EAAE,SAkB3B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Component } from "../../../../../../components/component.js";
|
|
2
|
+
/** COMP003 fail case: "run-migration" has no native rollback, no noRollback opt-out, no component-level rollback, and no compensation sibling step. */
|
|
3
|
+
export declare const migrator: Component;
|
|
4
|
+
//# sourceMappingURL=migrator.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrator.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp003/fail/migrator.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,uJAAuJ;AACvJ,eAAO,MAAM,QAAQ,EAAE,SAKtB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Component } from "../../../../../../components/component.js";
|
|
2
|
+
/** COMP003 pass case: "run-migration" is a needs-opt-out kind, but declares an explicit noRollback reason. */
|
|
3
|
+
export declare const migrator: Component;
|
|
4
|
+
//# sourceMappingURL=migrator.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrator.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp003/pass/migrator.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,8GAA8G;AAC9G,eAAO,MAAM,QAAQ,EAAE,SActB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orders-table.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp003/pass/orders-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,4FAA4F;AAC5F,eAAO,MAAM,WAAW,EAAE,SAKzB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Component } from "../../../../../../components/component.js";
|
|
2
|
+
/** COMP004 fail case: a gate step with no disable directive — flagged, since the local executor cannot run it. */
|
|
3
|
+
export declare const neo4jCluster: Component;
|
|
4
|
+
//# sourceMappingURL=neo4j-cluster.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"neo4j-cluster.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp004/fail/neo4j-cluster.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,kHAAkH;AAClH,eAAO,MAAM,YAAY,EAAE,SAe1B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Component } from "../../../../../../components/component.js";
|
|
2
|
+
/** COMP004 pass case: a genuine gate, opted out via a file-level disable directive with a documented reason — the intended path for a component that graduates to the Temporal backend. */
|
|
3
|
+
export declare const neo4jCluster: Component;
|
|
4
|
+
//# sourceMappingURL=neo4j-cluster.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"neo4j-cluster.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp004/pass/neo4j-cluster.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,2LAA2L;AAC3L,eAAO,MAAM,YAAY,EAAE,SAiB1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orders-table.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp004/pass/orders-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,uFAAuF;AACvF,eAAO,MAAM,WAAW,EAAE,SAKzB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Component } from "../../../../../../components/component.js";
|
|
2
|
+
/** COMP005 fail case: the Apply step's kind is named after this very component ("deploy-search-service") — a noun, not an operation. */
|
|
3
|
+
export declare const searchService: Component;
|
|
4
|
+
//# sourceMappingURL=search-service.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-service.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp005/fail/search-service.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,wIAAwI;AACxI,eAAO,MAAM,aAAa,EAAE,SAS3B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Component } from "../../../../../../components/component.js";
|
|
2
|
+
/** COMP005 pass case: every step kind is a verb (an operation), never the component's own name. */
|
|
3
|
+
export declare const searchService: Component;
|
|
4
|
+
//# sourceMappingURL=search-service.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-service.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp005/pass/search-service.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,mGAAmG;AACnG,eAAO,MAAM,aAAa,EAAE,SAa3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-tool.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp006/fail/legacy-tool.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,qEAAqE;AACrE,eAAO,MAAM,UAAU,EAAE,SAKxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-tool.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp006/pass/legacy-tool.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,+EAA+E;AAC/E,eAAO,MAAM,UAAU,EAAE,SASxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inventory-table.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp007/fail/inventory-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,uFAAuF;AACvF,eAAO,MAAM,cAAc,EAAE,SAQ5B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Component } from "../../../../../../components/component.js";
|
|
2
|
+
/** COMP007 fail case: identical phase/step-kind shape to inventory-table.component.ts — a declaration-sprawl hint (should reach for a preset). */
|
|
3
|
+
export declare const ordersTable: Component;
|
|
4
|
+
//# sourceMappingURL=orders-table.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orders-table.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp007/fail/orders-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,kJAAkJ;AAClJ,eAAO,MAAM,WAAW,EAAE,SAQzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orders-table.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp007/pass/orders-table.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,eAAO,MAAM,WAAW,EAAE,SAQzB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Component } from "../../../../../../components/component.js";
|
|
2
|
+
/** COMP007 pass case: structurally distinct from orders-table.component.ts (service: build+publish+apply+verify vs. infra: apply+verify only) — no sprawl hint expected. */
|
|
3
|
+
export declare const searchService: Component;
|
|
4
|
+
//# sourceMappingURL=search-service.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-service.component.d.ts","sourceRoot":"","sources":["../../../../../../../src/lint/rules/__fixtures__/comp/comp007/pass/search-service.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGxE,4KAA4K;AAC5K,eAAO,MAAM,aAAa,EAAE,SAa3B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* COMP001: publishes-but-never-applies
|
|
3
|
+
*
|
|
4
|
+
* Flags a component that publishes an image/artifact (a `publish-image`,
|
|
5
|
+
* `publish-artifact`, or `load-image-on-host` step) that nothing ever
|
|
6
|
+
* consumes: neither an apply/submit step later in the same component (via a
|
|
7
|
+
* `@Phase.field` prior-step reference into the publish phase) nor any other
|
|
8
|
+
* component (via `@<this-component>.publish.uri|digest|key`). A publish step
|
|
9
|
+
* with no consumer either belongs to a producer/library component another
|
|
10
|
+
* component should depend on, or is dead composition — see epic #551 §7
|
|
11
|
+
* ("What chant adds") and §"Failure modes" (renamed/orphaned sprawl).
|
|
12
|
+
*
|
|
13
|
+
* Triggers on: a `service`-shaped component whose `publish-image` output is
|
|
14
|
+
* never referenced by its own Apply phase or by any sibling component.
|
|
15
|
+
* OK: the publish output is referenced via `@Publish.digest` (same
|
|
16
|
+
* component) or `@<name>.publish.uri` (a consumer component).
|
|
17
|
+
*/
|
|
18
|
+
import type { ComponentCheck } from "../../component-checks.js";
|
|
19
|
+
export declare const comp001PublishesNeverAppliesRule: ComponentCheck;
|
|
20
|
+
//# sourceMappingURL=comp001-publishes-never-applies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comp001-publishes-never-applies.d.ts","sourceRoot":"","sources":["../../../../src/lint/rules/comp/comp001-publishes-never-applies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAmD,MAAM,wBAAwB,CAAC;AAK9G,eAAO,MAAM,gCAAgC,EAAE,cAsD9C,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* COMP002: dangling-wiring-ref
|
|
3
|
+
*
|
|
4
|
+
* Flags a wiring reference (`@Phase.field` or `@<component>.publish.*`,
|
|
5
|
+
* carried in a step's `imageRef`/`jar`/`revision`/`inputs`/any other
|
|
6
|
+
* capability-specific field — see ../../../components/component.ts's
|
|
7
|
+
* `Wiring`) that points at a phase or component that does not exist:
|
|
8
|
+
*
|
|
9
|
+
* - `@Phase.field` naming a phase not declared anywhere in this component's
|
|
10
|
+
* own `deploy` (top-level phase names only — a nested fan-out phase's
|
|
11
|
+
* name is addressed by its own name, never a parent's, matching how
|
|
12
|
+
* ../../../components/driver.ts's `resolveWiring` keys `phaseOutputs` by
|
|
13
|
+
* the phase the step ran directly under).
|
|
14
|
+
* - `@<component>.publish.<field>` naming a component that either is not
|
|
15
|
+
* discovered at all, or is discovered but not listed in this component's
|
|
16
|
+
* `dependsOn` — the graph only resolves an artifact reference for a
|
|
17
|
+
* declared dependency (composition-and-wiring.mdx#cross-component-outputs).
|
|
18
|
+
*
|
|
19
|
+
* Triggers on: `imageRef: "@Build.digest"` when no phase named "Build"
|
|
20
|
+
* exists, or `jar: "@some-lib.publish.uri"` when "some-lib" is undiscovered
|
|
21
|
+
* or missing from `dependsOn`.
|
|
22
|
+
* OK: `imageRef: "@Publish.digest"` when a "Publish" phase exists in the same
|
|
23
|
+
* component, or `jar: "@jar-lib.publish.uri"` when "jar-lib" is discovered
|
|
24
|
+
* and listed in `dependsOn`.
|
|
25
|
+
*/
|
|
26
|
+
import type { ComponentCheck } from "../../component-checks.js";
|
|
27
|
+
export declare const comp002DanglingWiringRefRule: ComponentCheck;
|
|
28
|
+
//# sourceMappingURL=comp002-dangling-wiring-ref.d.ts.map
|