@intentius/chant-lexicon-terraform 0.124.52 → 0.124.55
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/README.md +14 -10
- package/dist/__fixtures__/pr-loop/estate.component.d.ts +7 -0
- package/dist/__fixtures__/pr-loop/estate.component.d.ts.map +1 -0
- package/dist/__fixtures__/pr-loop/estate.component.js +7 -0
- package/dist/__fixtures__/report/generate.d.ts +26 -0
- package/dist/__fixtures__/report/generate.d.ts.map +1 -0
- package/dist/__fixtures__/report/generate.js +58 -0
- package/dist/applied-state.d.ts +27 -0
- package/dist/applied-state.d.ts.map +1 -0
- package/dist/applied-state.js +44 -0
- package/dist/backend-config.d.ts +53 -0
- package/dist/backend-config.d.ts.map +1 -0
- package/dist/backend-config.js +136 -0
- package/dist/behaviour/kinds.d.ts.map +1 -1
- package/dist/behaviour/kinds.js +4 -0
- package/dist/behaviour/predict.d.ts.map +1 -1
- package/dist/behaviour/predict.js +6 -2
- package/dist/behaviour/reference-catalog.d.ts +16 -5
- package/dist/behaviour/reference-catalog.d.ts.map +1 -1
- package/dist/behaviour/reference-catalog.js +16 -5
- package/dist/behaviour/request.d.ts.map +1 -1
- package/dist/behaviour/request.js +3 -2
- package/dist/changed-roots.d.ts +6 -4
- package/dist/changed-roots.d.ts.map +1 -1
- package/dist/changed-roots.js +14 -18
- package/dist/ci-setup.d.ts +11 -0
- package/dist/ci-setup.d.ts.map +1 -0
- package/dist/ci-setup.js +41 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +4 -3
- package/dist/components/capability-plugin.d.ts +105 -9
- package/dist/components/capability-plugin.d.ts.map +1 -1
- package/dist/components/capability-plugin.js +357 -36
- package/dist/components/compose-group.d.ts +145 -0
- package/dist/components/compose-group.d.ts.map +1 -0
- package/dist/components/compose-group.js +407 -0
- package/dist/components/placeholder-preview.d.ts +78 -0
- package/dist/components/placeholder-preview.d.ts.map +1 -0
- package/dist/components/placeholder-preview.js +254 -0
- package/dist/components/release-inputs.d.ts +29 -0
- package/dist/components/release-inputs.d.ts.map +1 -0
- package/dist/components/release-inputs.js +57 -0
- package/dist/components/trace-facts.d.ts +16 -0
- package/dist/components/trace-facts.d.ts.map +1 -0
- package/dist/components/trace-facts.js +19 -0
- package/dist/compose/apply-events.d.ts +46 -0
- package/dist/compose/apply-events.d.ts.map +1 -0
- package/dist/compose/apply-events.js +77 -0
- package/dist/compose/estate.d.ts +194 -0
- package/dist/compose/estate.d.ts.map +1 -0
- package/dist/compose/estate.js +363 -0
- package/dist/compose/hcl.d.ts +99 -0
- package/dist/compose/hcl.d.ts.map +1 -0
- package/dist/compose/hcl.js +302 -0
- package/dist/compose/module-address.d.ts +24 -0
- package/dist/compose/module-address.d.ts.map +1 -0
- package/dist/compose/module-address.js +43 -0
- package/dist/compose/root.d.ts +127 -0
- package/dist/compose/root.d.ts.map +1 -0
- package/dist/compose/root.js +586 -0
- package/dist/compose/run.d.ts +183 -0
- package/dist/compose/run.d.ts.map +1 -0
- package/dist/compose/run.js +447 -0
- package/dist/compose/slice.d.ts +102 -0
- package/dist/compose/slice.d.ts.map +1 -0
- package/dist/compose/slice.js +249 -0
- package/dist/compose/state-address.d.ts +28 -0
- package/dist/compose/state-address.d.ts.map +1 -0
- package/dist/compose/state-address.js +154 -0
- package/dist/compose/state-merge.d.ts +52 -0
- package/dist/compose/state-merge.d.ts.map +1 -0
- package/dist/compose/state-merge.js +135 -0
- package/dist/compose.d.ts +179 -0
- package/dist/compose.d.ts.map +1 -0
- package/dist/compose.js +482 -0
- package/dist/composites/terraform-apply-op.d.ts.map +1 -1
- package/dist/composites/terraform-apply-op.js +7 -3
- package/dist/cone.d.ts +53 -0
- package/dist/cone.d.ts.map +1 -0
- package/dist/cone.js +119 -0
- package/dist/config.d.ts +59 -13
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +43 -9
- package/dist/cost-hold.d.ts +27 -0
- package/dist/cost-hold.d.ts.map +1 -0
- package/dist/cost-hold.js +21 -0
- package/dist/describe-resources.d.ts +74 -12
- package/dist/describe-resources.d.ts.map +1 -1
- package/dist/describe-resources.js +374 -66
- package/dist/drift-read.d.ts +33 -0
- package/dist/drift-read.d.ts.map +1 -0
- package/dist/drift-read.js +243 -0
- package/dist/drift-record.d.ts +147 -0
- package/dist/drift-record.d.ts.map +1 -0
- package/dist/drift-record.js +383 -0
- package/dist/drift-rows.d.ts +61 -0
- package/dist/drift-rows.d.ts.map +1 -0
- package/dist/drift-rows.js +108 -0
- package/dist/exit-codes.d.ts +55 -0
- package/dist/exit-codes.d.ts.map +1 -0
- package/dist/exit-codes.js +48 -0
- package/dist/hcl/edges.d.ts.map +1 -1
- package/dist/hcl/edges.js +24 -1
- package/dist/hcl/files.d.ts +61 -0
- package/dist/hcl/files.d.ts.map +1 -0
- package/dist/hcl/files.js +221 -0
- package/dist/hcl/instances.d.ts +82 -0
- package/dist/hcl/instances.d.ts.map +1 -0
- package/dist/hcl/instances.js +390 -0
- package/dist/hcl/parse.d.ts +81 -9
- package/dist/hcl/parse.d.ts.map +1 -1
- package/dist/hcl/parse.js +114 -16
- package/dist/hcl/roots.d.ts.map +1 -1
- package/dist/hcl/roots.js +5 -0
- package/dist/hcl/suppressions.d.ts.map +1 -1
- package/dist/hcl/suppressions.js +8 -2
- package/dist/index.d.ts +13 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -2
- package/dist/integrity.json +8 -5
- package/dist/lint/audit-catalog.d.ts.map +1 -1
- package/dist/lint/audit-catalog.js +27 -3
- package/dist/lint/audit-lineage.d.ts +14 -2
- package/dist/lint/audit-lineage.d.ts.map +1 -1
- package/dist/lint/post-synth/index.d.ts.map +1 -1
- package/dist/lint/post-synth/index.js +4 -0
- package/dist/lint/post-synth/record-store.d.ts +54 -0
- package/dist/lint/post-synth/record-store.d.ts.map +1 -0
- package/dist/lint/post-synth/record-store.js +104 -0
- package/dist/lint/post-synth/tf001.d.ts +2 -2
- package/dist/lint/post-synth/tf001.js +2 -2
- package/dist/lint/post-synth/tf024.d.ts +35 -11
- package/dist/lint/post-synth/tf024.d.ts.map +1 -1
- package/dist/lint/post-synth/tf024.js +92 -20
- package/dist/lint/post-synth/tf046.d.ts +64 -0
- package/dist/lint/post-synth/tf046.d.ts.map +1 -0
- package/dist/lint/post-synth/tf046.js +175 -0
- package/dist/lint/post-synth/tf047.d.ts +36 -0
- package/dist/lint/post-synth/tf047.d.ts.map +1 -0
- package/dist/lint/post-synth/tf047.js +94 -0
- package/dist/live-plan-reasons.d.ts +21 -0
- package/dist/live-plan-reasons.d.ts.map +1 -0
- package/dist/live-plan-reasons.js +47 -0
- package/dist/lock-rows.d.ts +36 -0
- package/dist/lock-rows.d.ts.map +1 -0
- package/dist/lock-rows.js +60 -0
- package/dist/lock-timeout.d.ts +22 -0
- package/dist/lock-timeout.d.ts.map +1 -0
- package/dist/lock-timeout.js +32 -0
- package/dist/lsp/option-keys.d.ts.map +1 -1
- package/dist/lsp/option-keys.js +2 -0
- package/dist/manifest.json +1 -1
- package/dist/module-catalog/index.d.ts +69 -0
- package/dist/module-catalog/index.d.ts.map +1 -0
- package/dist/module-catalog/index.js +110 -0
- package/dist/module-catalog/refresh-cli.d.ts +4 -0
- package/dist/module-catalog/refresh-cli.d.ts.map +1 -0
- package/dist/module-catalog/refresh-cli.js +64 -0
- package/dist/module-catalog/static-tier.d.ts +6 -0
- package/dist/module-catalog/static-tier.d.ts.map +1 -0
- package/dist/module-catalog/static-tier.js +1650 -0
- package/dist/module-catalog/types.d.ts +65 -0
- package/dist/module-catalog/types.d.ts.map +1 -0
- package/dist/module-catalog/types.js +33 -0
- package/dist/okf/index.md +3 -1
- package/dist/okf/rules/TF024.md +2 -2
- package/dist/okf/rules/TF046.md +11 -0
- package/dist/okf/rules/TF047.md +11 -0
- package/dist/op/activities/index.d.ts +6 -2
- package/dist/op/activities/index.d.ts.map +1 -1
- package/dist/op/activities/index.js +5 -1
- package/dist/op/activities/live-detect.d.ts +4 -3
- package/dist/op/activities/live-detect.d.ts.map +1 -1
- package/dist/op/activities/live-detect.js +57 -32
- package/dist/op/activities/pin-rollout.d.ts +2 -0
- package/dist/op/activities/pin-rollout.d.ts.map +1 -1
- package/dist/op/activities/pin-rollout.js +1 -0
- package/dist/op/activities/terraform.d.ts +182 -5
- package/dist/op/activities/terraform.d.ts.map +1 -1
- package/dist/op/activities/terraform.js +224 -24
- package/dist/op/activity-contracts.d.ts +27 -0
- package/dist/op/activity-contracts.d.ts.map +1 -1
- package/dist/op/activity-contracts.js +19 -1
- package/dist/op/builders.d.ts +7 -1
- package/dist/op/builders.d.ts.map +1 -1
- package/dist/op/builders.js +9 -0
- package/dist/pin/consumers.d.ts +35 -0
- package/dist/pin/consumers.d.ts.map +1 -0
- package/dist/pin/consumers.js +70 -0
- package/dist/pin/edit.d.ts.map +1 -1
- package/dist/pin/edit.js +35 -0
- package/dist/pin/rollout.d.ts +2 -0
- package/dist/pin/rollout.d.ts.map +1 -1
- package/dist/pin/rollout.js +14 -11
- package/dist/plan-shape.d.ts +30 -0
- package/dist/plan-shape.d.ts.map +1 -0
- package/dist/plan-shape.js +125 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +37 -18
- package/dist/registry/address.d.ts +63 -0
- package/dist/registry/address.d.ts.map +1 -0
- package/dist/registry/address.js +65 -0
- package/dist/registry/catalog-read.d.ts +14 -0
- package/dist/registry/catalog-read.d.ts.map +1 -0
- package/dist/registry/catalog-read.js +58 -0
- package/dist/registry/deprecated.d.ts +37 -0
- package/dist/registry/deprecated.d.ts.map +1 -0
- package/dist/registry/deprecated.js +43 -0
- package/dist/registry/docs.d.ts +96 -0
- package/dist/registry/docs.d.ts.map +1 -0
- package/dist/registry/docs.js +210 -0
- package/dist/registry/edge/edge.d.ts +46 -0
- package/dist/registry/edge/edge.d.ts.map +1 -0
- package/dist/registry/edge/edge.js +194 -0
- package/dist/registry/edge/index.d.ts +11 -0
- package/dist/registry/edge/index.d.ts.map +1 -0
- package/dist/registry/edge/index.js +10 -0
- package/dist/registry/edge/lambda-edge.d.ts +76 -0
- package/dist/registry/edge/lambda-edge.d.ts.map +1 -0
- package/dist/registry/edge/lambda-edge.js +95 -0
- package/dist/registry/edge/sigv4-web.d.ts +33 -0
- package/dist/registry/edge/sigv4-web.d.ts.map +1 -0
- package/dist/registry/edge/sigv4-web.js +56 -0
- package/dist/registry/edge/token-source.d.ts +73 -0
- package/dist/registry/edge/token-source.d.ts.map +1 -0
- package/dist/registry/edge/token-source.js +115 -0
- package/dist/registry/edge/worker.d.ts +45 -0
- package/dist/registry/edge/worker.d.ts.map +1 -0
- package/dist/registry/edge/worker.js +26 -0
- package/dist/registry/handler.d.ts +25 -0
- package/dist/registry/handler.d.ts.map +1 -0
- package/dist/registry/handler.js +75 -0
- package/dist/registry/headers-file.d.ts +21 -0
- package/dist/registry/headers-file.d.ts.map +1 -0
- package/dist/registry/headers-file.js +57 -0
- package/dist/registry/index.d.ts +31 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +30 -0
- package/dist/registry/mirror-paths.d.ts +9 -0
- package/dist/registry/mirror-paths.d.ts.map +1 -0
- package/dist/registry/mirror-paths.js +8 -0
- package/dist/registry/mirror.d.ts +130 -0
- package/dist/registry/mirror.d.ts.map +1 -0
- package/dist/registry/mirror.js +319 -0
- package/dist/registry/proxies.d.ts +73 -0
- package/dist/registry/proxies.d.ts.map +1 -0
- package/dist/registry/proxies.js +111 -0
- package/dist/registry/reader.d.ts +57 -0
- package/dist/registry/reader.d.ts.map +1 -0
- package/dist/registry/reader.js +198 -0
- package/dist/registry/semver.d.ts +16 -0
- package/dist/registry/semver.d.ts.map +1 -0
- package/dist/registry/semver.js +24 -0
- package/dist/registry/serve.d.ts +24 -0
- package/dist/registry/serve.d.ts.map +1 -0
- package/dist/registry/serve.js +64 -0
- package/dist/registry/source-forms.d.ts +79 -0
- package/dist/registry/source-forms.d.ts.map +1 -0
- package/dist/registry/source-forms.js +202 -0
- package/dist/registry/targets/artifactory.d.ts +28 -0
- package/dist/registry/targets/artifactory.d.ts.map +1 -0
- package/dist/registry/targets/artifactory.js +206 -0
- package/dist/registry/targets/fake-artifactory.d.ts +30 -0
- package/dist/registry/targets/fake-artifactory.d.ts.map +1 -0
- package/dist/registry/targets/fake-artifactory.js +142 -0
- package/dist/registry/targets/fake-gitlab.d.ts +39 -0
- package/dist/registry/targets/fake-gitlab.d.ts.map +1 -0
- package/dist/registry/targets/fake-gitlab.js +136 -0
- package/dist/registry/targets/fake-hcp.d.ts +50 -0
- package/dist/registry/targets/fake-hcp.d.ts.map +1 -0
- package/dist/registry/targets/fake-hcp.js +202 -0
- package/dist/registry/targets/fake-http.d.ts +31 -0
- package/dist/registry/targets/fake-http.d.ts.map +1 -0
- package/dist/registry/targets/fake-http.js +87 -0
- package/dist/registry/targets/fake-nexus.d.ts +27 -0
- package/dist/registry/targets/fake-nexus.d.ts.map +1 -0
- package/dist/registry/targets/fake-nexus.js +137 -0
- package/dist/registry/targets/gitlab.d.ts +53 -0
- package/dist/registry/targets/gitlab.d.ts.map +1 -0
- package/dist/registry/targets/gitlab.js +187 -0
- package/dist/registry/targets/hcp.d.ts +29 -0
- package/dist/registry/targets/hcp.d.ts.map +1 -0
- package/dist/registry/targets/hcp.js +310 -0
- package/dist/registry/targets/hosted.d.ts +62 -0
- package/dist/registry/targets/hosted.d.ts.map +1 -0
- package/dist/registry/targets/hosted.js +74 -0
- package/dist/registry/targets/index.d.ts +18 -0
- package/dist/registry/targets/index.d.ts.map +1 -0
- package/dist/registry/targets/index.js +17 -0
- package/dist/registry/targets/module-target.d.ts +68 -0
- package/dist/registry/targets/module-target.d.ts.map +1 -0
- package/dist/registry/targets/module-target.js +63 -0
- package/dist/registry/targets/nexus.d.ts +43 -0
- package/dist/registry/targets/nexus.d.ts.map +1 -0
- package/dist/registry/targets/nexus.js +250 -0
- package/dist/registry/targets/zip.d.ts +55 -0
- package/dist/registry/targets/zip.d.ts.map +1 -0
- package/dist/registry/targets/zip.js +278 -0
- package/dist/registry/writer.d.ts +101 -0
- package/dist/registry/writer.d.ts.map +1 -0
- package/dist/registry/writer.js +109 -0
- package/dist/report.d.ts +15 -6
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +28 -55
- package/dist/rules/record-store.ts +122 -0
- package/dist/rules/tf001.ts +2 -2
- package/dist/rules/tf024.ts +105 -22
- package/dist/rules/tf046.ts +204 -0
- package/dist/rules/tf047.ts +114 -0
- package/dist/skills/chant-terraform.md +1 -1
- package/dist/state/azure-blob.d.ts +9 -0
- package/dist/state/azure-blob.d.ts.map +1 -0
- package/dist/state/azure-blob.js +8 -0
- package/dist/state/backend.d.ts +158 -0
- package/dist/state/backend.d.ts.map +1 -0
- package/dist/state/backend.js +406 -0
- package/dist/state/exec.d.ts +39 -0
- package/dist/state/exec.d.ts.map +1 -0
- package/dist/state/exec.js +80 -0
- package/dist/state/gcs.d.ts +8 -0
- package/dist/state/gcs.d.ts.map +1 -0
- package/dist/state/gcs.js +7 -0
- package/dist/state/index.d.ts +15 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +14 -0
- package/dist/state/locks.d.ts +105 -0
- package/dist/state/locks.d.ts.map +1 -0
- package/dist/state/locks.js +130 -0
- package/dist/state/object-store.d.ts +8 -0
- package/dist/state/object-store.d.ts.map +1 -0
- package/dist/state/object-store.js +7 -0
- package/dist/state/root-states.d.ts +131 -0
- package/dist/state/root-states.d.ts.map +1 -0
- package/dist/state/root-states.js +241 -0
- package/dist/state/s3.d.ts +21 -0
- package/dist/state/s3.d.ts.map +1 -0
- package/dist/state/s3.js +19 -0
- package/dist/state/store.d.ts +51 -0
- package/dist/state/store.d.ts.map +1 -0
- package/dist/state/store.js +185 -0
- package/dist/state-ops.d.ts +255 -0
- package/dist/state-ops.d.ts.map +1 -0
- package/dist/state-ops.js +305 -0
- package/dist/state-reads.d.ts +57 -0
- package/dist/state-reads.d.ts.map +1 -0
- package/dist/state-reads.js +104 -0
- package/dist/terragrunt/affected.d.ts.map +1 -1
- package/dist/terragrunt/affected.js +2 -1
- package/dist/used-sources.d.ts +54 -0
- package/dist/used-sources.d.ts.map +1 -0
- package/dist/used-sources.js +157 -0
- package/package.json +24 -4
- package/src/__fixtures__/ACCEPTANCE.md +69 -7
- package/src/__fixtures__/compose/apply-failed-in-app.jsonl +12 -0
- package/src/__fixtures__/compose/state-app.json +66 -0
- package/src/__fixtures__/compose/state-edge.json +40 -0
- package/src/__fixtures__/compose/state-net.json +58 -0
- package/src/__fixtures__/compose/three-app.plan.json +184 -0
- package/src/__fixtures__/compose/three-composed.plan.json +509 -0
- package/src/__fixtures__/compose/three-edge.plan.json +144 -0
- package/src/__fixtures__/compose/three-net.plan.json +174 -0
- package/src/__fixtures__/compose/unknown-composed.plan.json +228 -0
- package/src/__fixtures__/compose/working-after-apply.json +145 -0
- package/src/__fixtures__/config-blocks/app/main.tf +61 -0
- package/src/__fixtures__/config-blocks/app/modules/network/main.tf +4 -0
- package/src/__fixtures__/config-blocks/app-json/main.tf.json +39 -0
- package/src/__fixtures__/config-files/shadow/main.tf +3 -0
- package/src/__fixtures__/config-files/shadow/main.tofu +3 -0
- package/src/__fixtures__/config-files/shadow/other.tf +3 -0
- package/src/__fixtures__/config-files/tf/main.tf +11 -0
- package/src/__fixtures__/config-files/tf-json/main.tf.json +18 -0
- package/src/__fixtures__/config-files/tofu/main.tofu +11 -0
- package/src/__fixtures__/config-files/tofu-json/main.tofu.json +18 -0
- package/src/__fixtures__/config-files/tofu-only/main.tofu +3 -0
- package/src/__fixtures__/drift-record/README.md +16 -0
- package/src/__fixtures__/drift-record/live-plan-sections.json +27 -0
- package/src/__fixtures__/drift-rows/live-root-plan.json +70 -0
- package/src/__fixtures__/drift-rows/refresh-plan.json +61 -0
- package/src/__fixtures__/instance-forms/app/main.tf +110 -0
- package/src/__fixtures__/instance-forms/app/modules/svc/main.tf +3 -0
- package/src/__fixtures__/instance-vars/app/main.tf +52 -0
- package/src/__fixtures__/instance-vars/app/modules/app/main.tf +12 -0
- package/src/__fixtures__/instance-vars/app/modules/edge/main.tf +3 -0
- package/src/__fixtures__/instance-vars/app/terraform.tfvars +1 -0
- package/src/__fixtures__/live-module-keyed/live-graph.json +259 -0
- package/src/__fixtures__/live-module-keyed/live-plan.json +87 -0
- package/src/__fixtures__/live-module-keyed/root/estate.chdf.hcl +1 -0
- package/src/__fixtures__/live-module-keyed/root/main.tf +21 -0
- package/src/__fixtures__/live-module-keyed/root/modules/app/main.tf +17 -0
- package/src/__fixtures__/live-module-keyed/root/modules/edge/main.tf +7 -0
- package/src/__fixtures__/live-module-keyed/root/versions.tf +30 -0
- package/src/__fixtures__/live-module-keyed/show-state.json +146 -0
- package/src/__fixtures__/pr-loop/README.md +50 -0
- package/src/__fixtures__/pr-loop/chant.config.json +13 -0
- package/src/__fixtures__/pr-loop/estate.component.ts +10 -0
- package/src/__fixtures__/pr-loop/roots/a/main.tf +11 -0
- package/src/__fixtures__/pr-loop/roots/app/main.tf +19 -0
- package/src/__fixtures__/pr-loop/roots/b/main.tf +7 -0
- package/src/__fixtures__/pr-loop/roots/dns/main.tf +3 -0
- package/src/__fixtures__/pr-loop/roots/net/main.tf +7 -0
- package/src/__fixtures__/report/applied.show.json +51 -0
- package/src/__fixtures__/report/generate.ts +63 -0
- package/src/__fixtures__/report/plan.show.json +200 -0
- package/src/__fixtures__/report/tf-apply/change-set.json +170 -0
- package/src/__fixtures__/report/tf-apply/report.json +338 -0
- package/src/__fixtures__/report/tf-plan/change-set.json +170 -0
- package/src/__fixtures__/report/tf-plan/report.json +320 -0
- package/src/__fixtures__/three-cloud-azure.graph.json +290 -0
- package/src/__fixtures__/used-sources/root/extra.tofu +1 -0
- package/src/__fixtures__/used-sources/root/main.tf +31 -0
- package/src/__fixtures__/used-sources/root/modules/net/main.tf +14 -0
- package/src/__fixtures__/used-sources/root/modules/net/versions.tf.json +7 -0
- package/src/__fixtures__/used-sources/unit/terragrunt.hcl +3 -0
- package/src/applied-state.ts +52 -0
- package/src/backend-config.test.ts +105 -0
- package/src/backend-config.ts +133 -0
- package/src/behaviour/kinds.ts +4 -0
- package/src/behaviour/predict.ts +5 -2
- package/src/behaviour/reference-catalog.plugin.test.ts +65 -0
- package/src/behaviour/reference-catalog.ts +16 -5
- package/src/behaviour/request.ts +3 -2
- package/src/change-set-instances.test.ts +98 -0
- package/src/changed-roots.ts +14 -16
- package/src/ci-setup.ts +42 -0
- package/src/commands.ts +4 -3
- package/src/components/capability-plugin.test.ts +198 -19
- package/src/components/capability-plugin.ts +383 -35
- package/src/components/change-set-graph.e2e.test.ts +11 -5
- package/src/components/compose-group.test.ts +486 -0
- package/src/components/compose-group.ts +489 -0
- package/src/components/demo-composed-roots.e2e.test.ts +440 -0
- package/src/components/member-outputs.test.ts +76 -0
- package/src/components/placeholder-preview.test.ts +147 -0
- package/src/components/placeholder-preview.ts +257 -0
- package/src/components/pr-loop-compose.tofu.e2e.test.ts +363 -0
- package/src/components/pr-loop.tofu.test.ts +113 -57
- package/src/components/release-inputs.ts +69 -0
- package/src/components/trace-facts.test.ts +21 -0
- package/src/components/trace-facts.ts +27 -0
- package/src/compose/apply-events.test.ts +62 -0
- package/src/compose/apply-events.ts +100 -0
- package/src/compose/estate.choudoufu.e2e.test.ts +112 -0
- package/src/compose/estate.test.ts +421 -0
- package/src/compose/estate.ts +443 -0
- package/src/compose/hcl.ts +311 -0
- package/src/compose/module-address.ts +49 -0
- package/src/compose/root.test.ts +416 -0
- package/src/compose/root.ts +592 -0
- package/src/compose/run.test.ts +440 -0
- package/src/compose/run.tofu.test.ts +176 -0
- package/src/compose/run.ts +527 -0
- package/src/compose/slice.test.ts +184 -0
- package/src/compose/slice.ts +290 -0
- package/src/compose/state-address.ts +157 -0
- package/src/compose/state-merge.test.ts +131 -0
- package/src/compose/state-merge.ts +148 -0
- package/src/compose.test.ts +248 -0
- package/src/compose.ts +627 -0
- package/src/composites/terraform-apply-op.test.ts +9 -0
- package/src/composites/terraform-apply-op.ts +7 -3
- package/src/cone.ts +138 -0
- package/src/config-file-listers.test.ts +265 -0
- package/src/config.ts +44 -9
- package/src/cost-hold.ts +29 -0
- package/src/describe-resources.engine-facts.test.ts +411 -0
- package/src/describe-resources.live-module-keyed.test.ts +290 -0
- package/src/describe-resources.ts +416 -70
- package/src/drift-read.ts +284 -0
- package/src/drift-record.test.ts +223 -0
- package/src/drift-record.ts +455 -0
- package/src/drift-rows.test.ts +135 -0
- package/src/drift-rows.ts +137 -0
- package/src/exit-codes.test.ts +23 -0
- package/src/exit-codes.ts +59 -0
- package/src/hcl/config-blocks.test.ts +174 -0
- package/src/hcl/edges.ts +21 -1
- package/src/hcl/files.ts +234 -0
- package/src/hcl/instance-forms.test.ts +94 -0
- package/src/hcl/instances.test.ts +137 -0
- package/src/hcl/instances.ts +422 -0
- package/src/hcl/parse.test.ts +139 -1
- package/src/hcl/parse.ts +149 -16
- package/src/hcl/roots.ts +6 -0
- package/src/hcl/suppressions.ts +8 -2
- package/src/index.ts +79 -0
- package/src/lint/audit-catalog.ts +29 -3
- package/src/lint/audit-lineage.ts +14 -2
- package/src/lint/post-synth/fixtures/TF024/live-with-record-store/main.tf +18 -0
- package/src/lint/post-synth/fixtures/TF024/sidecar-with-backend/estate.chdf.hcl +1 -0
- package/src/lint/post-synth/fixtures/TF024/sidecar-with-backend/main.tf +10 -0
- package/src/lint/post-synth/fixtures/TF046/azurerm-no-resource-group/main.tf +15 -0
- package/src/lint/post-synth/fixtures/TF046/backend-config-only/main.tf +14 -0
- package/src/lint/post-synth/fixtures/TF046/derived-s3/backend.tf +7 -0
- package/src/lint/post-synth/fixtures/TF046/derived-s3/main.tf +9 -0
- package/src/lint/post-synth/fixtures/TF046/explicit-local/main.tf +16 -0
- package/src/lint/post-synth/fixtures/TF046/explicit-s3-beside-local-backend/main.tf +15 -0
- package/src/lint/post-synth/fixtures/TF046/implied-local/main.tf +9 -0
- package/src/lint/post-synth/fixtures/TF046/sidecar-implied/estate.chdf.hcl +1 -0
- package/src/lint/post-synth/fixtures/TF046/sidecar-implied/main.tf +5 -0
- package/src/lint/post-synth/fixtures/TF047/clear/main.tf +12 -0
- package/src/lint/post-synth/fixtures/TF047/refused/main.tf +12 -0
- package/src/lint/post-synth/fixtures/TF047/unknown-module/main.tf +12 -0
- package/src/lint/post-synth/fixtures/TF047/unknown-version/main.tf +12 -0
- package/src/lint/post-synth/index.ts +4 -0
- package/src/lint/post-synth/record-store.ts +122 -0
- package/src/lint/post-synth/tf001.ts +2 -2
- package/src/lint/post-synth/tf024.test.ts +26 -5
- package/src/lint/post-synth/tf024.ts +105 -22
- package/src/lint/post-synth/tf046.test.ts +137 -0
- package/src/lint/post-synth/tf046.ts +204 -0
- package/src/lint/post-synth/tf047.test.ts +56 -0
- package/src/lint/post-synth/tf047.ts +114 -0
- package/src/live-plan-reasons.ts +54 -0
- package/src/lock-rows.test.ts +70 -0
- package/src/lock-rows.ts +82 -0
- package/src/lock-timeout.ts +34 -0
- package/src/lsp/completions.test.ts +1 -1
- package/src/lsp/option-keys.ts +2 -0
- package/src/module-catalog/index.test.ts +93 -0
- package/src/module-catalog/index.ts +159 -0
- package/src/module-catalog/refresh-cli.ts +68 -0
- package/src/module-catalog/static-tier.ts +1659 -0
- package/src/module-catalog/types.ts +88 -0
- package/src/op/activities/choudoufu-plan-set-op.test.ts +111 -0
- package/src/op/activities/index.ts +9 -0
- package/src/op/activities/live-detect.ts +55 -26
- package/src/op/activities/pin-rollout.ts +3 -0
- package/src/op/activities/registry.test.ts +2 -1
- package/src/op/activities/terraform.test.ts +55 -0
- package/src/op/activities/terraform.ts +312 -27
- package/src/op/activity-contracts.test.ts +1 -0
- package/src/op/activity-contracts.ts +24 -1
- package/src/op/builders.ts +14 -0
- package/src/op-wave-step.test.ts +109 -0
- package/src/pin/__fixtures__/consumers/live/dev/main.tf +4 -0
- package/src/pin/__fixtures__/consumers/live/prod/main.tf +21 -0
- package/src/pin/__fixtures__/consumers/units/vpc/terragrunt.hcl +7 -0
- package/src/pin/bundle.test.ts +2 -0
- package/src/pin/consumers.test.ts +57 -0
- package/src/pin/consumers.ts +95 -0
- package/src/pin/edit.ts +30 -0
- package/src/pin/rollout.ts +16 -11
- package/src/plan-shape.test.ts +148 -0
- package/src/plan-shape.ts +128 -0
- package/src/plugin.ts +39 -19
- package/src/registry/__fixtures__/docs/documented/.terraform-docs.yml +3 -0
- package/src/registry/__fixtures__/docs/documented/README.md +1 -0
- package/src/registry/__fixtures__/docs/documented/main.tf +8 -0
- package/src/registry/__fixtures__/docs/json/main.tf.json +14 -0
- package/src/registry/__fixtures__/docs/vpc/README.md +3 -0
- package/src/registry/__fixtures__/docs/vpc/examples/complete/main.tf +5 -0
- package/src/registry/__fixtures__/docs/vpc/examples/simple/README.md +1 -0
- package/src/registry/__fixtures__/docs/vpc/examples/simple/main.tf +4 -0
- package/src/registry/__fixtures__/docs/vpc/main.tf +14 -0
- package/src/registry/__fixtures__/docs/vpc/outputs.tf +9 -0
- package/src/registry/__fixtures__/docs/vpc/variables.tf +16 -0
- package/src/registry/__fixtures__/proxied-root/main.tf +12 -0
- package/src/registry/address.ts +100 -0
- package/src/registry/catalog-read.ts +56 -0
- package/src/registry/deprecated.test.ts +139 -0
- package/src/registry/deprecated.ts +76 -0
- package/src/registry/docs.test.ts +140 -0
- package/src/registry/docs.ts +299 -0
- package/src/registry/edge/bundle.test.ts +50 -0
- package/src/registry/edge/edge.test.ts +176 -0
- package/src/registry/edge/edge.ts +211 -0
- package/src/registry/edge/index.ts +10 -0
- package/src/registry/edge/lambda-edge.ts +127 -0
- package/src/registry/edge/sigv4-web.ts +79 -0
- package/src/registry/edge/token-source.test.ts +258 -0
- package/src/registry/edge/token-source.ts +169 -0
- package/src/registry/edge/worker.ts +61 -0
- package/src/registry/handler.ts +89 -0
- package/src/registry/headers-file.ts +61 -0
- package/src/registry/index.ts +31 -0
- package/src/registry/mirror-paths.ts +10 -0
- package/src/registry/mirror.test.ts +198 -0
- package/src/registry/mirror.ts +395 -0
- package/src/registry/proxies.test.ts +153 -0
- package/src/registry/proxies.ts +132 -0
- package/src/registry/reader.ts +225 -0
- package/src/registry/registry.test.ts +262 -0
- package/src/registry/semver.ts +34 -0
- package/src/registry/serve.ts +82 -0
- package/src/registry/source-forms.test.ts +87 -0
- package/src/registry/source-forms.ts +216 -0
- package/src/registry/targets/artifactory.test.ts +248 -0
- package/src/registry/targets/artifactory.ts +257 -0
- package/src/registry/targets/fake-artifactory.ts +158 -0
- package/src/registry/targets/fake-gitlab.ts +161 -0
- package/src/registry/targets/fake-hcp.ts +233 -0
- package/src/registry/targets/fake-http.ts +97 -0
- package/src/registry/targets/fake-nexus.ts +152 -0
- package/src/registry/targets/gitlab.test.ts +208 -0
- package/src/registry/targets/gitlab.ts +223 -0
- package/src/registry/targets/hcp.test.ts +230 -0
- package/src/registry/targets/hcp.ts +360 -0
- package/src/registry/targets/hosted.ts +117 -0
- package/src/registry/targets/index.ts +17 -0
- package/src/registry/targets/module-target.ts +131 -0
- package/src/registry/targets/nexus.test.ts +220 -0
- package/src/registry/targets/nexus.ts +314 -0
- package/src/registry/targets/zip.test.ts +65 -0
- package/src/registry/targets/zip.ts +287 -0
- package/src/registry/writer.ts +155 -0
- package/src/report.test.ts +82 -1
- package/src/report.ts +31 -54
- package/src/signal-only-root.test.ts +72 -0
- package/src/skills/chant-terraform.md +1 -1
- package/src/state/azure-blob.ts +8 -0
- package/src/state/backend-verdict.test.ts +187 -0
- package/src/state/backend.test.ts +127 -0
- package/src/state/backend.ts +488 -0
- package/src/state/exec.ts +111 -0
- package/src/state/gcs.ts +7 -0
- package/src/state/index.ts +15 -0
- package/src/state/locks.test.ts +84 -0
- package/src/state/locks.ts +201 -0
- package/src/state/object-store.ts +7 -0
- package/src/state/root-states-floci.e2e.test.ts +66 -0
- package/src/state/root-states.test.ts +462 -0
- package/src/state/root-states.ts +309 -0
- package/src/state/s3.ts +21 -0
- package/src/state/store.ts +225 -0
- package/src/state-ops.test.ts +182 -0
- package/src/state-ops.ts +462 -0
- package/src/state-reads.ts +116 -0
- package/src/terragrunt/affected.ts +2 -1
- package/src/used-sources.test.ts +75 -0
- package/src/used-sources.ts +204 -0
- package/src/workspace-kinds.test.ts +4 -17
- package/workspace-kinds.json +1 -24
- package/dist/workspace-member.d.ts +0 -30
- package/dist/workspace-member.d.ts.map +0 -1
- package/dist/workspace-member.js +0 -91
- package/schemas/pulumi.schema.json +0 -34
- package/src/testdata/pulumi-member/Pulumi.yaml +0 -2
- package/src/testdata/pulumi-member/stack-export.json +0 -53
- package/src/testdata/pulumi-unexported/Pulumi.yaml +0 -2
- package/src/workspace-member.test.ts +0 -89
- package/src/workspace-member.ts +0 -126
package/dist/cone.js
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* choudoufu's cone plans (#4545, moved from terragucci's `cone.ts`): `plan
|
|
3
|
+
* -cone=<base>` plans only the blocks a change touches and every block that
|
|
4
|
+
* reads them.
|
|
5
|
+
*
|
|
6
|
+
* A wave that applies an open pull request plans a live root as the cone of
|
|
7
|
+
* its change since the pull request's base, as the plan note did. A wave
|
|
8
|
+
* that applies a merge commit and a drift run plan the whole estate, as do
|
|
9
|
+
* a root with no `live` block, an estate file (`estate.chdf.hcl`), whose
|
|
10
|
+
* form choudoufu refuses `-cone` on, and any binary but choudoufu.
|
|
11
|
+
*
|
|
12
|
+
* choudoufu's guard can plan the whole estate anyway (no base, a provider,
|
|
13
|
+
* terraform or live block or the lock file changed, a cone over 30% of the
|
|
14
|
+
* estate's blocks, and so on). It says why in a warning. A cone plan says
|
|
15
|
+
* its size in a warning too, and with `-out FILE` writes `FILE.cone.json`:
|
|
16
|
+
* the cone's base, the commit it named and the addresses it targets.
|
|
17
|
+
*
|
|
18
|
+
* The record's targets join the root's plan digest ({@link conePlanDigest}),
|
|
19
|
+
* so the digest an approval binds names the cone. A wave that plans again
|
|
20
|
+
* after its approval and finds another cone has another digest, and refuses
|
|
21
|
+
* as moved. choudoufu's `apply FILE` checks the same record again.
|
|
22
|
+
*
|
|
23
|
+
* Pure, apart from reading the record beside a plan file.
|
|
24
|
+
*/
|
|
25
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
26
|
+
import { basename } from "node:path";
|
|
27
|
+
import { computePlanDigest } from "@intentius/chant/lifecycle/plan-digest";
|
|
28
|
+
/** The flags choudoufu refuses beside `-cone`, or plans in full with: a plan that carries one gets no `-cone`. */
|
|
29
|
+
export const CONE_EXCLUDES = ["-target", "-exclude", "-destroy", "-refresh-only", "-json", "-estate"];
|
|
30
|
+
/** Whether `binary` (a name or a path) is choudoufu. */
|
|
31
|
+
export const isChoudoufu = (binary) => basename(binary) === "choudoufu";
|
|
32
|
+
/**
|
|
33
|
+
* The `-cone` argument a plan takes: `-cone=<base>` for choudoufu with a
|
|
34
|
+
* base, on a root that takes it (`live`), when none of `args` is a flag in
|
|
35
|
+
* {@link CONE_EXCLUDES}. Otherwise none, and the plan is full.
|
|
36
|
+
*/
|
|
37
|
+
export function coneArgs(binary, base, args, cone) {
|
|
38
|
+
if (!base || !cone || !isChoudoufu(binary))
|
|
39
|
+
return [];
|
|
40
|
+
const excluded = args.some((a) => CONE_EXCLUDES.some((f) => a === f || a.startsWith(`${f}=`)));
|
|
41
|
+
return excluded ? [] : [`-cone=${base}`];
|
|
42
|
+
}
|
|
43
|
+
/** The path of the cone record beside a plan file. */
|
|
44
|
+
export const coneRecordPath = (planFile) => `${planFile}.cone.json`;
|
|
45
|
+
/** The cone record beside `planFile`, or none when there is none or it does not read as one. */
|
|
46
|
+
export function readConeRecord(planFile) {
|
|
47
|
+
const path = coneRecordPath(planFile);
|
|
48
|
+
if (!existsSync(path))
|
|
49
|
+
return undefined;
|
|
50
|
+
try {
|
|
51
|
+
const r = JSON.parse(readFileSync(path, "utf-8"));
|
|
52
|
+
if (!r || typeof r.base !== "string" || !Array.isArray(r.targets) || !r.targets.every((t) => typeof t === "string"))
|
|
53
|
+
return undefined;
|
|
54
|
+
return { base: r.base, base_sha: typeof r.base_sha === "string" ? r.base_sha : "", targets: [...r.targets].sort() };
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The detail of the last warning with this summary in a plan's output, its
|
|
62
|
+
* lines joined. The binary prints a warning as `Warning: <summary>`, a blank
|
|
63
|
+
* line, and the detail up to the next blank line or the plan's summary; a box
|
|
64
|
+
* drawn around it with colour on is stripped.
|
|
65
|
+
*/
|
|
66
|
+
function warningDetail(text, summary) {
|
|
67
|
+
const lines = text.replace(/\r\n/g, "\n").split("\n").map((l) => l.replace(/^[\s│╷╵]*/, "").trimEnd());
|
|
68
|
+
let found;
|
|
69
|
+
for (let i = 0; i < lines.length; i++) {
|
|
70
|
+
if (lines[i] !== `Warning: ${summary}`)
|
|
71
|
+
continue;
|
|
72
|
+
let j = i + 1;
|
|
73
|
+
while (j < lines.length && lines[j] === "")
|
|
74
|
+
j++;
|
|
75
|
+
const detail = [];
|
|
76
|
+
for (; j < lines.length && lines[j] !== "" && !/^(Plan: |No changes\.|Changes to Outputs:)/.test(lines[j]); j++)
|
|
77
|
+
detail.push(lines[j]);
|
|
78
|
+
found = detail.join(" ").replace(/\s+/g, " ").trim();
|
|
79
|
+
}
|
|
80
|
+
return found;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* What a plan run with `-cone=<base>` did, from its output and the record
|
|
84
|
+
* beside `planFile`. A fallback warning means the whole estate was planned,
|
|
85
|
+
* even after a cone warning. With no fallback, the record is the cone. With
|
|
86
|
+
* neither, choudoufu said nothing this reads, and the plan counts as full.
|
|
87
|
+
*/
|
|
88
|
+
export function readPlanCone(output, planFile, base) {
|
|
89
|
+
const fell = warningDetail(output, "Cone plan fell back to a full plan");
|
|
90
|
+
if (fell !== undefined) {
|
|
91
|
+
const m = /^This plan covers the whole estate \(guard ([^)]*)\): (.*?)\.?$/.exec(fell);
|
|
92
|
+
return { base, fallback: m ? { kind: m[1], reason: m[2] } : { kind: "unknown", reason: fell } };
|
|
93
|
+
}
|
|
94
|
+
const record = readConeRecord(planFile);
|
|
95
|
+
if (!record)
|
|
96
|
+
return { base, fallback: { kind: "unknown", reason: "choudoufu wrote no cone record beside the plan" } };
|
|
97
|
+
const size = /: (\d+) of the estate's (\d+) blocks/.exec(warningDetail(output, "Cone plan") ?? "");
|
|
98
|
+
return { base, ...(size ? { blocks: Number(size[1]), of: Number(size[2]) } : {}), record };
|
|
99
|
+
}
|
|
100
|
+
/** What a cone plan did, in words: its size, or why it planned the whole estate. */
|
|
101
|
+
export function coneText(cone) {
|
|
102
|
+
if (cone.fallback)
|
|
103
|
+
return `the whole estate, since ${cone.fallback.reason} (guard ${cone.fallback.kind})`;
|
|
104
|
+
const n = cone.record?.targets.length ?? 0;
|
|
105
|
+
const size = cone.blocks !== undefined && cone.of !== undefined ? `${cone.blocks} of the estate's ${cone.of} blocks` : `${n} target${n === 1 ? "" : "s"}`;
|
|
106
|
+
return `the cone of the change since ${cone.base}, ${size}`;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* A root's plan digest with its cone in it: the plan's own digest, unchanged,
|
|
110
|
+
* when the plan was full; with a cone, the digest over the plan's digest and
|
|
111
|
+
* the cone's targets, so an approval of one cone counts for no other. The
|
|
112
|
+
* digest's kind is terragucci's, so approvals recorded before the move still
|
|
113
|
+
* name the same digest.
|
|
114
|
+
*/
|
|
115
|
+
export function conePlanDigest(planDigest, cone) {
|
|
116
|
+
if (!cone?.record)
|
|
117
|
+
return planDigest;
|
|
118
|
+
return computePlanDigest("terragucci-cone-plan", { plan: planDigest, targets: [...cone.record.targets].sort() });
|
|
119
|
+
}
|
package/dist/config.d.ts
CHANGED
|
@@ -65,8 +65,15 @@ export declare const terraformRootSchema: z.ZodObject<{
|
|
|
65
65
|
workspace: z.ZodOptional<z.ZodString>;
|
|
66
66
|
/** `-var-file` arguments, in order, relative to `dir`. */
|
|
67
67
|
varFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
68
|
-
/** `-backend-config` key/value pairs handed to `init
|
|
68
|
+
/** `-backend-config` key/value pairs handed to `init`, after {@link backendConfigFiles}. */
|
|
69
69
|
backendConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
70
|
+
/**
|
|
71
|
+
* Backend-config files handed to `init` as `-backend-config=<path>`, in
|
|
72
|
+
* order and before the {@link backendConfig} pairs, relative to `dir`
|
|
73
|
+
* (chant#4459). The composition reads their `key = "value"` lines as it
|
|
74
|
+
* reads the pairs, to find a root's state before init.
|
|
75
|
+
*/
|
|
76
|
+
backendConfigFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
70
77
|
/**
|
|
71
78
|
* The choudoufu estate this root runs against, for a live root whose HCL
|
|
72
79
|
* does not declare one of its own (#2479).
|
|
@@ -118,6 +125,16 @@ export declare const terraformRootSchema: z.ZodObject<{
|
|
|
118
125
|
plan: "plan";
|
|
119
126
|
state: "state";
|
|
120
127
|
}>>;
|
|
128
|
+
/**
|
|
129
|
+
* The root is declared only so a change to it brings this project into the
|
|
130
|
+
* change (#4484). A dns member that declares another cloud's root, so that
|
|
131
|
+
* an azure change reaches dns, sets it on that root. Change detection
|
|
132
|
+
* (`changedUnits`) still counts the root; the build and every live read
|
|
133
|
+
* skip it, so it is never drawn or read as this project's own: its entities
|
|
134
|
+
* are not built, and `describeResources`, drift and the owned-resource
|
|
135
|
+
* reads leave it out. An Op step that names the root still runs against it.
|
|
136
|
+
*/
|
|
137
|
+
signalOnly: z.ZodOptional<z.ZodBoolean>;
|
|
121
138
|
}, z.core.$strict>;
|
|
122
139
|
export declare const terraformConfigSchema: z.ZodObject<{
|
|
123
140
|
/**
|
|
@@ -164,6 +181,21 @@ export declare const terraformConfigSchema: z.ZodObject<{
|
|
|
164
181
|
plan: "plan";
|
|
165
182
|
state: "state";
|
|
166
183
|
}>>;
|
|
184
|
+
/**
|
|
185
|
+
* Composed runs (#4419, #4438), off unless `enabled` is true. When on, the
|
|
186
|
+
* `terraform-apply` components a change reaches, and the ones they read,
|
|
187
|
+
* plan as one plan and apply as one apply of a composed root of `module`
|
|
188
|
+
* calls, so a value one root creates reaches its readers in that apply. A
|
|
189
|
+
* component that cannot compose plans wave by wave as without the setting,
|
|
190
|
+
* and the report says why (`compositionFor` in `compose.ts`).
|
|
191
|
+
*
|
|
192
|
+
* `max` caps how many roots compose; a change over it applies wholly in
|
|
193
|
+
* waves. Default 10.
|
|
194
|
+
*/
|
|
195
|
+
compose: z.ZodOptional<z.ZodObject<{
|
|
196
|
+
enabled: z.ZodBoolean;
|
|
197
|
+
max: z.ZodOptional<z.ZodNumber>;
|
|
198
|
+
}, z.core.$strict>>;
|
|
167
199
|
/** Named root modules. The name is the entity-key prefix, so keep it stable. */
|
|
168
200
|
roots: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
169
201
|
/** Root module directory, relative to the project root (where `chant.config.*` lives). */
|
|
@@ -172,8 +204,15 @@ export declare const terraformConfigSchema: z.ZodObject<{
|
|
|
172
204
|
workspace: z.ZodOptional<z.ZodString>;
|
|
173
205
|
/** `-var-file` arguments, in order, relative to `dir`. */
|
|
174
206
|
varFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
175
|
-
/** `-backend-config` key/value pairs handed to `init
|
|
207
|
+
/** `-backend-config` key/value pairs handed to `init`, after {@link backendConfigFiles}. */
|
|
176
208
|
backendConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
209
|
+
/**
|
|
210
|
+
* Backend-config files handed to `init` as `-backend-config=<path>`, in
|
|
211
|
+
* order and before the {@link backendConfig} pairs, relative to `dir`
|
|
212
|
+
* (chant#4459). The composition reads their `key = "value"` lines as it
|
|
213
|
+
* reads the pairs, to find a root's state before init.
|
|
214
|
+
*/
|
|
215
|
+
backendConfigFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
177
216
|
/**
|
|
178
217
|
* The choudoufu estate this root runs against, for a live root whose HCL
|
|
179
218
|
* does not declare one of its own (#2479).
|
|
@@ -225,20 +264,27 @@ export declare const terraformConfigSchema: z.ZodObject<{
|
|
|
225
264
|
plan: "plan";
|
|
226
265
|
state: "state";
|
|
227
266
|
}>>;
|
|
267
|
+
/**
|
|
268
|
+
* The root is declared only so a change to it brings this project into the
|
|
269
|
+
* change (#4484). A dns member that declares another cloud's root, so that
|
|
270
|
+
* an azure change reaches dns, sets it on that root. Change detection
|
|
271
|
+
* (`changedUnits`) still counts the root; the build and every live read
|
|
272
|
+
* skip it, so it is never drawn or read as this project's own: its entities
|
|
273
|
+
* are not built, and `describeResources`, drift and the owned-resource
|
|
274
|
+
* reads leave it out. An Op step that names the root still runs against it.
|
|
275
|
+
*/
|
|
276
|
+
signalOnly: z.ZodOptional<z.ZodBoolean>;
|
|
228
277
|
}, z.core.$strict>>>;
|
|
229
|
-
/**
|
|
230
|
-
* One pulumi workspace member read into the graph (#3179). `chant workspace
|
|
231
|
-
* graph` writes this into the reader project it makes for a `pulumi` member;
|
|
232
|
-
* it is not meant to be written by hand. `dir` is the member's directory,
|
|
233
|
-
* absolute; `label` names the entities. The graph is the checked-in
|
|
234
|
-
* `stack-export.json` there; the program is never run.
|
|
235
|
-
*/
|
|
236
|
-
pulumiMember: z.ZodOptional<z.ZodObject<{
|
|
237
|
-
dir: z.ZodString;
|
|
238
|
-
label: z.ZodOptional<z.ZodString>;
|
|
239
|
-
}, z.core.$strict>>;
|
|
240
278
|
}, z.core.$strict>;
|
|
241
279
|
export type TerraformRootConfig = z.infer<typeof terraformRootSchema>;
|
|
280
|
+
/**
|
|
281
|
+
* The roots a project owns: `roots` without the ones marked `signalOnly`
|
|
282
|
+
* (#4484), which only feed change detection. The build and the live reads
|
|
283
|
+
* take these; `changedUnits` takes every root.
|
|
284
|
+
*/
|
|
285
|
+
export declare function ownRoots<R extends {
|
|
286
|
+
signalOnly?: boolean;
|
|
287
|
+
}>(roots: Record<string, R> | undefined): Record<string, R>;
|
|
242
288
|
export type TerraformConfig = z.infer<typeof terraformConfigSchema>;
|
|
243
289
|
declare module "@intentius/chant/config" {
|
|
244
290
|
interface ChantConfig {
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB;;;;EAA2C,CAAC;AAClF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E;;;;;;;;GAQG;AACH;;;GAGG;AACH,eAAO,MAAM,2BAA2B;;;EAA4B,CAAC;AAErE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,mBAAmB;IAC9B,0FAA0F;;IAE1F,4EAA4E;;IAE5E,0DAA0D;;IAE1D,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB;;;;EAA2C,CAAC;AAClF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E;;;;;;;;GAQG;AACH;;;GAGG;AACH,eAAO,MAAM,2BAA2B;;;EAA4B,CAAC;AAErE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,mBAAmB;IAC9B,0FAA0F;;IAE1F,4EAA4E;;IAE5E,0DAA0D;;IAE1D,4FAA4F;;IAE5F;;;;;OAKG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;;IAEH,+EAA+E;;;;;;IAE/E;;;;;;;;;;;;;;OAcG;;;;;IAEH;;;;;;;;OAQG;;kBAEH,CAAC;AAEH,eAAO,MAAM,qBAAqB;IAChC;;;;;;;OAOG;;;;;;IAEH;;;;;;;OAOG;;;;;;IAEH;;;;;;;;;;;OAWG;;IAEH,6FAA6F;;;;;IAE7F;;;;;;;;;;OAUG;;;;;IAOH,gFAAgF;;QA1HhF,0FAA0F;;QAE1F,4EAA4E;;QAE5E,0DAA0D;;QAE1D,4FAA4F;;QAE5F;;;;;WAKG;;QAEH;;;;;;;;;;;;;;;;;;;;;;;;WAwBG;;QAEH,+EAA+E;;;;;;QAE/E;;;;;;;;;;;;;;WAcG;;;;;QAEH;;;;;;;;WAQG;;;kBAyDH,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAEpH;AACD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,OAAO,QAAQ,yBAAyB,CAAC;IACvC,UAAU,WAAW;QACnB,SAAS,CAAC,EAAE,eAAe,CAAC;KAC7B;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -55,8 +55,15 @@ export const terraformRootSchema = z.strictObject({
|
|
|
55
55
|
workspace: z.string().optional(),
|
|
56
56
|
/** `-var-file` arguments, in order, relative to `dir`. */
|
|
57
57
|
varFiles: z.array(z.string()).optional(),
|
|
58
|
-
/** `-backend-config` key/value pairs handed to `init
|
|
58
|
+
/** `-backend-config` key/value pairs handed to `init`, after {@link backendConfigFiles}. */
|
|
59
59
|
backendConfig: z.record(z.string(), z.string()).optional(),
|
|
60
|
+
/**
|
|
61
|
+
* Backend-config files handed to `init` as `-backend-config=<path>`, in
|
|
62
|
+
* order and before the {@link backendConfig} pairs, relative to `dir`
|
|
63
|
+
* (chant#4459). The composition reads their `key = "value"` lines as it
|
|
64
|
+
* reads the pairs, to find a root's state before init.
|
|
65
|
+
*/
|
|
66
|
+
backendConfigFiles: z.array(z.string()).optional(),
|
|
60
67
|
/**
|
|
61
68
|
* The choudoufu estate this root runs against, for a live root whose HCL
|
|
62
69
|
* does not declare one of its own (#2479).
|
|
@@ -101,6 +108,16 @@ export const terraformRootSchema = z.strictObject({
|
|
|
101
108
|
* every root, for one run.
|
|
102
109
|
*/
|
|
103
110
|
observe: terraformObserveDepthSchema.optional(),
|
|
111
|
+
/**
|
|
112
|
+
* The root is declared only so a change to it brings this project into the
|
|
113
|
+
* change (#4484). A dns member that declares another cloud's root, so that
|
|
114
|
+
* an azure change reaches dns, sets it on that root. Change detection
|
|
115
|
+
* (`changedUnits`) still counts the root; the build and every live read
|
|
116
|
+
* skip it, so it is never drawn or read as this project's own: its entities
|
|
117
|
+
* are not built, and `describeResources`, drift and the owned-resource
|
|
118
|
+
* reads leave it out. An Op step that names the root still runs against it.
|
|
119
|
+
*/
|
|
120
|
+
signalOnly: z.boolean().optional(),
|
|
104
121
|
});
|
|
105
122
|
export const terraformConfigSchema = z.strictObject({
|
|
106
123
|
/**
|
|
@@ -136,14 +153,31 @@ export const terraformConfigSchema = z.strictObject({
|
|
|
136
153
|
moduleRoot: z.string().optional(),
|
|
137
154
|
/** The default {@link TerraformRootConfig.observe} for every root that sets none (#4358). */
|
|
138
155
|
observe: terraformObserveDepthSchema.optional(),
|
|
139
|
-
/** Named root modules. The name is the entity-key prefix, so keep it stable. */
|
|
140
|
-
roots: z.record(z.string(), terraformRootSchema).default({}),
|
|
141
156
|
/**
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
157
|
+
* Composed runs (#4419, #4438), off unless `enabled` is true. When on, the
|
|
158
|
+
* `terraform-apply` components a change reaches, and the ones they read,
|
|
159
|
+
* plan as one plan and apply as one apply of a composed root of `module`
|
|
160
|
+
* calls, so a value one root creates reaches its readers in that apply. A
|
|
161
|
+
* component that cannot compose plans wave by wave as without the setting,
|
|
162
|
+
* and the report says why (`compositionFor` in `compose.ts`).
|
|
163
|
+
*
|
|
164
|
+
* `max` caps how many roots compose; a change over it applies wholly in
|
|
165
|
+
* waves. Default 10.
|
|
147
166
|
*/
|
|
148
|
-
|
|
167
|
+
compose: z
|
|
168
|
+
.strictObject({
|
|
169
|
+
enabled: z.boolean(),
|
|
170
|
+
max: z.number().int().min(2).optional(),
|
|
171
|
+
})
|
|
172
|
+
.optional(),
|
|
173
|
+
/** Named root modules. The name is the entity-key prefix, so keep it stable. */
|
|
174
|
+
roots: z.record(z.string(), terraformRootSchema).default({}),
|
|
149
175
|
});
|
|
176
|
+
/**
|
|
177
|
+
* The roots a project owns: `roots` without the ones marked `signalOnly`
|
|
178
|
+
* (#4484), which only feed change detection. The build and the live reads
|
|
179
|
+
* take these; `changedUnits` takes every root.
|
|
180
|
+
*/
|
|
181
|
+
export function ownRoots(roots) {
|
|
182
|
+
return Object.fromEntries(Object.entries(roots ?? {}).filter(([, r]) => r.signalOnly !== true));
|
|
183
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The terraform lexicon's preset for an op wave's cost hold (#4545,
|
|
3
|
+
* `holds.cost` on the spec): infracost over each root's plan document, the
|
|
4
|
+
* `show -json` file `terraform-apply`'s plan names as `artifact.planJson`.
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* const spec = { ..., step: { kind: "terraform-apply", root: "{target}" }, holds: { cost: terraformCostHold({ approveAbove: 100 }) } };
|
|
8
|
+
* ```
|
|
9
|
+
*
|
|
10
|
+
* The shape is core's `OpWaveCostHold`, written out here so the lexicon
|
|
11
|
+
* builds against a core without it.
|
|
12
|
+
*/
|
|
13
|
+
/** infracost's own command over one plan document. */
|
|
14
|
+
export declare const INFRACOST_ARGV: readonly ["infracost", "breakdown", "--path", "{planJson}", "--format", "json", "--log-level", "error"];
|
|
15
|
+
export interface TerraformCostHold {
|
|
16
|
+
command: string[];
|
|
17
|
+
approveAbove: number;
|
|
18
|
+
format: "infracost";
|
|
19
|
+
currency?: string;
|
|
20
|
+
}
|
|
21
|
+
/** A cost hold that prices each root with infracost, waiting over `approveAbove` a month. `command` replaces infracost's argv; it must name `{planJson}`. */
|
|
22
|
+
export declare function terraformCostHold(options: {
|
|
23
|
+
approveAbove: number;
|
|
24
|
+
currency?: string;
|
|
25
|
+
command?: string[];
|
|
26
|
+
}): TerraformCostHold;
|
|
27
|
+
//# sourceMappingURL=cost-hold.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost-hold.d.ts","sourceRoot":"","sources":["../src/cost-hold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,sDAAsD;AACtD,eAAO,MAAM,cAAc,YAAI,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAU,CAAC;AAEtI,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,6JAA6J;AAC7J,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,iBAAiB,CAI7H"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The terraform lexicon's preset for an op wave's cost hold (#4545,
|
|
3
|
+
* `holds.cost` on the spec): infracost over each root's plan document, the
|
|
4
|
+
* `show -json` file `terraform-apply`'s plan names as `artifact.planJson`.
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* const spec = { ..., step: { kind: "terraform-apply", root: "{target}" }, holds: { cost: terraformCostHold({ approveAbove: 100 }) } };
|
|
8
|
+
* ```
|
|
9
|
+
*
|
|
10
|
+
* The shape is core's `OpWaveCostHold`, written out here so the lexicon
|
|
11
|
+
* builds against a core without it.
|
|
12
|
+
*/
|
|
13
|
+
/** infracost's own command over one plan document. */
|
|
14
|
+
export const INFRACOST_ARGV = ["infracost", "breakdown", "--path", "{planJson}", "--format", "json", "--log-level", "error"];
|
|
15
|
+
/** A cost hold that prices each root with infracost, waiting over `approveAbove` a month. `command` replaces infracost's argv; it must name `{planJson}`. */
|
|
16
|
+
export function terraformCostHold(options) {
|
|
17
|
+
const command = options.command ?? [...INFRACOST_ARGV];
|
|
18
|
+
if (!command.some((a) => a.includes("{planJson}")))
|
|
19
|
+
throw new Error("terraformCostHold: the command must name {planJson}, the root's plan document");
|
|
20
|
+
return { command, approveAbove: options.approveAbove, format: "infracost", ...(options.currency ? { currency: options.currency } : {}) };
|
|
21
|
+
}
|
|
@@ -120,6 +120,14 @@
|
|
|
120
120
|
* not-observed, then foreign, then adoptable, then owned, and a block whose
|
|
121
121
|
* instances are all absent is absent. Partial knowledge is not knowledge,
|
|
122
122
|
* which is the same rule choudoufu applies to its own `INCOMPLETE_BLOCK`.
|
|
123
|
+
* The precedence is core's `TERRAFORM_INSTANCE_ROLLUP` and the rollup is
|
|
124
|
+
* core's `rollupInstances` (`@intentius/chant/instance-nodes`, #4454), the
|
|
125
|
+
* one place it is written.
|
|
126
|
+
*
|
|
127
|
+
* The block's verdict is not the whole answer. A present block also carries
|
|
128
|
+
* each instance's own verdict on `instances`, keyed as Terraform prints it
|
|
129
|
+
* (`[0]`, `["a"]`), which the live graph draws as an instance node under the
|
|
130
|
+
* block node (#4454). The state read does the same with the rows it found.
|
|
123
131
|
*
|
|
124
132
|
* ## What is readable at all
|
|
125
133
|
*
|
|
@@ -195,6 +203,31 @@
|
|
|
195
203
|
* The cost is two refreshes of the estate per read, run one after the other
|
|
196
204
|
* so they never share the root's cache file.
|
|
197
205
|
*
|
|
206
|
+
* ## Engine facts on a live root (#4528)
|
|
207
|
+
*
|
|
208
|
+
* After `live-plan -json` answers, the same document is handed to `choudoufu
|
|
209
|
+
* live-graph -json -from-plan=<file>` (choudoufu#2285), which builds the
|
|
210
|
+
* root's graph from the configuration and that file alone: no second live
|
|
211
|
+
* read, so the facts and the verdicts above come from one refresh (choudoufu
|
|
212
|
+
* #1014, the #4520 ruling Q3). `<file>` is the `<root>.live-plan.json`
|
|
213
|
+
* written under {@link TERRAFORM_LIVE_PLAN_DIR_ENV} when the caller asked
|
|
214
|
+
* for it, and otherwise a copy in a temporary directory removed afterwards.
|
|
215
|
+
*
|
|
216
|
+
* The document's node ids are choudoufu's addresses (the ruling's Q2). A
|
|
217
|
+
* block node maps to its entity with {@link entityKeyFor}; an instance node
|
|
218
|
+
* (`instanceOf` set) maps to its block's entity, and its facts go on that
|
|
219
|
+
* block's `instances` entry of the same address, from which core's
|
|
220
|
+
* `observedInstanceNodeId` draws the instance node. Each node's `facts` land
|
|
221
|
+
* on `ResourceMetadata.facts` or `InstanceObservation.facts`, and edges with
|
|
222
|
+
* a grain land on the observation's `edges`, endpoints mapped the same way
|
|
223
|
+
* ({@link readEngineGraph}). Facts are never read for a decision: ownership
|
|
224
|
+
* and the change set keep reading the verdicts above.
|
|
225
|
+
*
|
|
226
|
+
* A choudoufu without the command, older than
|
|
227
|
+
* `MIN_CHOUDOUFU_GRAPH_VERSION`, answers with a usage error: `facts` stay
|
|
228
|
+
* absent, the root gets one note, and the rest of the read is unchanged. Any
|
|
229
|
+
* other failure of the graph read degrades the same way, with its own note.
|
|
230
|
+
*
|
|
198
231
|
* ## Nothing from `values` is surfaced
|
|
199
232
|
*
|
|
200
233
|
* A state row's `values` are the resource's full attribute set, secrets
|
|
@@ -206,10 +239,13 @@
|
|
|
206
239
|
import type { DescribeResourcesResult, ResourceMetadata, TeardownEnumeration } from "@intentius/chant/lexicon";
|
|
207
240
|
import { type DeclaredEntity, type UnobservedReason } from "@intentius/chant/observation";
|
|
208
241
|
import type { OwnershipMarker } from "@intentius/chant/ownership";
|
|
209
|
-
import {
|
|
242
|
+
import type { EngineFacts } from "@intentius/chant/engine-facts";
|
|
243
|
+
import type { IREdge } from "@intentius/chant/graph-ir";
|
|
244
|
+
import { choudoufuLiveGraph, choudoufuLiveLs, choudoufuLivePlanDocument, terraformInit, terraformPlanRead, terraformShow } from "./op/activities/terraform.js";
|
|
210
245
|
import type { TerraformObserveDepth } from "./config.js";
|
|
211
246
|
export { TERRAFORM_STATE_OWNERSHIP_KEYS } from "./state-ownership.js";
|
|
212
247
|
export { TERRAFORM_LIVE_MARKER_KEYS } from "./live-ownership.js";
|
|
248
|
+
export { LIVE_PLAN_OMISSION_REASONS } from "./live-plan-reasons.js";
|
|
213
249
|
/** One row out of `values.root_module.resources[]`, at any module depth. */
|
|
214
250
|
export interface StateResourceRow {
|
|
215
251
|
/** Fully qualified terraform address, `module.<name>.` prefixes included. */
|
|
@@ -323,16 +359,6 @@ export interface LivePlanIndex {
|
|
|
323
359
|
* degrade to "this section said nothing", never to a throw.
|
|
324
360
|
*/
|
|
325
361
|
export declare function indexLivePlan(document: unknown): LivePlanIndex;
|
|
326
|
-
/**
|
|
327
|
-
* choudoufu's omission reason codes, mapped onto chant's total vocabulary
|
|
328
|
-
* (`internal/live/projection/result.go`). `"absent"` is not an
|
|
329
|
-
* {@link UnobservedReason}: it is the tri-state's OBSERVED-ABSENT, the one
|
|
330
|
-
* omission that is a claim of knowledge rather than of ignorance.
|
|
331
|
-
*
|
|
332
|
-
* A code this table does not know maps to `read-failed`, which is the safe
|
|
333
|
-
* direction: no NOT-OBSERVED verdict ever becomes a create or a delete.
|
|
334
|
-
*/
|
|
335
|
-
export declare const LIVE_PLAN_OMISSION_REASONS: Readonly<Record<string, UnobservedReason | "absent">>;
|
|
336
362
|
/**
|
|
337
363
|
* Every instance address in the document belonging to the declared block
|
|
338
364
|
* `address`. Exported for the behaviour request builder (`./behaviour/`,
|
|
@@ -387,6 +413,35 @@ export declare function classifyLiveInstance(address: string, index: LivePlanInd
|
|
|
387
413
|
export declare const TERRAFORM_LIVE_PLAN_DIR_ENV = "CHANT_TERRAFORM_LIVE_PLAN_DIR";
|
|
388
414
|
/** The file {@link TERRAFORM_LIVE_PLAN_DIR_ENV} names for a root: the root's name, made safe for a file name. */
|
|
389
415
|
export declare function livePlanDocumentFile(root: string): string;
|
|
416
|
+
/** {@link readEngineGraph}'s answer: facts and edges keyed in chant's id space. */
|
|
417
|
+
export interface EngineGraphRead {
|
|
418
|
+
/** Facts of a block node, by entity key. */
|
|
419
|
+
blocks: Map<string, EngineFacts>;
|
|
420
|
+
/** Facts of an instance node, by its block's entity key, then by the instance address. */
|
|
421
|
+
instances: Map<string, Map<string, EngineFacts>>;
|
|
422
|
+
/** Edges with a grain, endpoints as live graph node ids. */
|
|
423
|
+
edges: IREdge[];
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Read an engine graph document (`choudoufu live-graph -json`, chant#4527's
|
|
427
|
+
* schema) for one root into chant's id space. Node ids are choudoufu's
|
|
428
|
+
* addresses (the #4520 ruling, Q2): a block node is the entity
|
|
429
|
+
* {@link entityKeyFor} names; an instance node (`instanceOf`) belongs to its
|
|
430
|
+
* block's entity, and as an edge endpoint it is the live instance node id
|
|
431
|
+
* core's `observedInstanceNodeId` gives. A node with no address (an estate
|
|
432
|
+
* the configuration reads, `estate:<name>`) has no chant entity, so its
|
|
433
|
+
* edges are left out. Edges keep their grain; one without a grain is left out.
|
|
434
|
+
*
|
|
435
|
+
* Throws when the document is not an engine graph document.
|
|
436
|
+
*/
|
|
437
|
+
export declare function readEngineGraph(root: string, document: unknown): EngineGraphRead;
|
|
438
|
+
/**
|
|
439
|
+
* `resources` with {@link readEngineGraph}'s facts on them: a block's on
|
|
440
|
+
* `ResourceMetadata.facts`, an instance's on its `instances` entry of the
|
|
441
|
+
* same address. Nothing else changes, and nothing is added for an entity the
|
|
442
|
+
* read did not return.
|
|
443
|
+
*/
|
|
444
|
+
export declare function withEngineFacts(resources: Record<string, ResourceMetadata>, read: EngineGraphRead): Record<string, ResourceMetadata>;
|
|
390
445
|
/** One `items[]` entry of a `live-ls -json` listing. */
|
|
391
446
|
export interface LiveLsItem {
|
|
392
447
|
/** ARN or other stable identity. */
|
|
@@ -446,7 +501,8 @@ export interface LiveEstateOptions {
|
|
|
446
501
|
roots?: string[];
|
|
447
502
|
}
|
|
448
503
|
/**
|
|
449
|
-
* Every live root the project declares, in config order
|
|
504
|
+
* Every live root the project declares, in config order, leaving out a
|
|
505
|
+
* `signalOnly` one (#4484). Reads the project
|
|
450
506
|
* config the same way the activities do, so `terraform.roots` is read once
|
|
451
507
|
* and the same answer reaches both.
|
|
452
508
|
*/
|
|
@@ -493,6 +549,12 @@ export interface TerraformReadDeps {
|
|
|
493
549
|
/** The document alone (chant #2498): this reader indexes it and never reads the human render. */
|
|
494
550
|
livePlan: typeof choudoufuLivePlanDocument;
|
|
495
551
|
liveLs: typeof choudoufuLiveLs;
|
|
552
|
+
/**
|
|
553
|
+
* The engine graph read on a live root (#4528). Optional so a test that
|
|
554
|
+
* never asks for facts need not stub it; omitted, no facts are read and no
|
|
555
|
+
* note is added.
|
|
556
|
+
*/
|
|
557
|
+
liveGraph?: typeof choudoufuLiveGraph;
|
|
496
558
|
/**
|
|
497
559
|
* The plan depth's read (#4358). Optional so a test that never asks for the
|
|
498
560
|
* plan depth need not stub it; omitted, the real activity runs.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe-resources.d.ts","sourceRoot":"","sources":["../src/describe-resources.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"describe-resources.d.ts","sourceRoot":"","sources":["../src/describe-resources.ts"],"names":[],"mappings":"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"}
|