@intentius/chant-lexicon-terraform 0.124.54 → 0.124.56
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 +7 -4
- 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/components/capability-plugin.d.ts +40 -6
- package/dist/components/capability-plugin.d.ts.map +1 -1
- package/dist/components/capability-plugin.js +174 -30
- package/dist/components/compose-group.d.ts +1 -1
- package/dist/components/compose-group.d.ts.map +1 -1
- package/dist/components/compose-group.js +1 -1
- 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/cone.d.ts +53 -0
- package/dist/cone.d.ts.map +1 -0
- package/dist/cone.js +119 -0
- 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/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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/integrity.json +7 -4
- 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/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/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/terraform.d.ts +29 -0
- package/dist/op/activities/terraform.d.ts.map +1 -1
- package/dist/op/activities/terraform.js +19 -4
- 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/plugin.d.ts.map +1 -1
- package/dist/plugin.js +5 -0
- 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/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/state/azure-blob.d.ts +8 -67
- package/dist/state/azure-blob.d.ts.map +1 -1
- package/dist/state/azure-blob.js +6 -199
- package/dist/state/gcs.d.ts +7 -61
- package/dist/state/gcs.d.ts.map +1 -1
- package/dist/state/gcs.js +5 -222
- package/dist/state/object-store.d.ts +4 -33
- package/dist/state/object-store.d.ts.map +1 -1
- package/dist/state/object-store.js +4 -17
- package/dist/state/s3.d.ts +11 -58
- package/dist/state/s3.d.ts.map +1 -1
- package/dist/state/s3.js +10 -161
- package/dist/state/store.js +2 -2
- 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/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 +19 -3
- package/src/__fixtures__/drift-record/README.md +5 -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__/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/ci-setup.ts +42 -0
- package/src/components/capability-plugin.test.ts +26 -14
- package/src/components/capability-plugin.ts +185 -31
- package/src/components/compose-group.ts +1 -1
- package/src/components/pr-loop-compose.tofu.e2e.test.ts +1 -1
- package/src/components/pr-loop.tofu.test.ts +1 -1
- 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/cone.ts +138 -0
- package/src/cost-hold.ts +29 -0
- package/src/describe-resources.engine-facts.test.ts +2 -3
- 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/index.ts +3 -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/lock-rows.test.ts +70 -0
- package/src/lock-rows.ts +82 -0
- package/src/lock-timeout.ts +34 -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/terraform.ts +46 -5
- 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/consumers.test.ts +57 -0
- package/src/pin/consumers.ts +95 -0
- package/src/plugin.ts +6 -0
- 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/state/azure-blob.ts +6 -221
- package/src/state/gcs.ts +5 -252
- package/src/state/object-store.ts +4 -32
- package/src/state/s3.ts +10 -182
- package/src/state/store.ts +2 -2
- package/src/state-ops.test.ts +182 -0
- package/src/state-ops.ts +462 -0
- package/src/state-reads.ts +116 -0
- package/src/used-sources.test.ts +75 -0
- package/src/used-sources.ts +204 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The known-module catalog (chant#4560): choudoufu's module compatibility
|
|
3
|
+
* table (choudoufu#2292, `live/module-compat.json`), vendored in
|
|
4
|
+
* `./static-tier.ts` and read by TF047 and by terragucci's tip and estate
|
|
5
|
+
* column (terragucci#1286).
|
|
6
|
+
*
|
|
7
|
+
* The catalog holds the static tier only. A static row is one
|
|
8
|
+
* terraform-aws-modules example at one tag, measured offline by choudoufu's
|
|
9
|
+
* refusal probe in the onboarded form: `clear` means `choudoufu live-check`
|
|
10
|
+
* plans it, `refused` lists choudoufu refusal IDs with site counts. The
|
|
11
|
+
* gauntlet tier (end-to-end runs against an emulator) is a separate table in
|
|
12
|
+
* choudoufu, has no rows until choudoufu#2291's run, and is never folded into
|
|
13
|
+
* these numbers: every result here carries `tier: "static"`, and a figure in
|
|
14
|
+
* it counts static rows only.
|
|
15
|
+
*
|
|
16
|
+
* This subpath, `@intentius/chant-lexicon-terraform/module-catalog`, imports
|
|
17
|
+
* nothing but its own data, so a consumer can load it on its own.
|
|
18
|
+
*/
|
|
19
|
+
import { SOURCE_COMMIT, SOURCE_PATH, STATIC_MEASUREMENT, STATIC_ROWS } from "./static-tier.js";
|
|
20
|
+
/** Where the vendored rows came from. */
|
|
21
|
+
export const MODULE_CATALOG_SOURCE = {
|
|
22
|
+
repo: "INTENTIUS/choudoufu",
|
|
23
|
+
path: SOURCE_PATH,
|
|
24
|
+
commit: SOURCE_COMMIT,
|
|
25
|
+
/** The static tier's measurement date. */
|
|
26
|
+
date: STATIC_MEASUREMENT.date,
|
|
27
|
+
/** The choudoufu commit the static tier was measured at. */
|
|
28
|
+
measuredAt: STATIC_MEASUREMENT.commit,
|
|
29
|
+
/** The hashicorp/aws provider version the static tier was measured with. */
|
|
30
|
+
awsProvider: STATIC_MEASUREMENT.aws_provider,
|
|
31
|
+
};
|
|
32
|
+
/** choudoufu's site page that renders both tiers. */
|
|
33
|
+
export const MODULE_COMPATIBILITY_PAGE = "https://intentius.io/choudoufu/aws/compatibility/#modules";
|
|
34
|
+
/** Every static row, as vendored. */
|
|
35
|
+
export const staticRows = STATIC_ROWS;
|
|
36
|
+
/**
|
|
37
|
+
* The registry address of a module source, without a registry host, a
|
|
38
|
+
* `//subdir` or a query, lowercased: `registry.terraform.io/terraform-aws-modules/iam/aws//modules/iam-role`
|
|
39
|
+
* gives `terraform-aws-modules/iam/aws`. Undefined when the source is not a
|
|
40
|
+
* three-part registry address.
|
|
41
|
+
*/
|
|
42
|
+
export function registryModuleAddress(source) {
|
|
43
|
+
let s = source.trim().split("?")[0];
|
|
44
|
+
const sub = s.indexOf("//");
|
|
45
|
+
if (sub >= 0)
|
|
46
|
+
s = s.slice(0, sub);
|
|
47
|
+
const parts = s.split("/");
|
|
48
|
+
if (parts.length === 4 && parts[0].includes("."))
|
|
49
|
+
parts.shift();
|
|
50
|
+
if (parts.length !== 3 || parts.some((p) => !/^[A-Za-z0-9][A-Za-z0-9_.-]*$/.test(p)))
|
|
51
|
+
return undefined;
|
|
52
|
+
return parts.join("/").toLowerCase();
|
|
53
|
+
}
|
|
54
|
+
/** `= 1.4.0`, `v1.4.0` and `1.4.0` all give `1.4.0`; a range gives undefined. */
|
|
55
|
+
export function exactModuleVersion(version) {
|
|
56
|
+
const v = version.trim().replace(/^=\s*/, "").replace(/^v/, "");
|
|
57
|
+
return /^\d+(?:\.\d+){0,2}(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/.test(v) ? v : undefined;
|
|
58
|
+
}
|
|
59
|
+
const bare = (version) => version.replace(/^v/, "");
|
|
60
|
+
function byModule() {
|
|
61
|
+
const out = new Map();
|
|
62
|
+
for (const row of STATIC_ROWS) {
|
|
63
|
+
const key = row.module.toLowerCase();
|
|
64
|
+
const list = out.get(key) ?? [];
|
|
65
|
+
list.push(row);
|
|
66
|
+
out.set(key, list);
|
|
67
|
+
}
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
let index;
|
|
71
|
+
/**
|
|
72
|
+
* The catalog's answer for a module `source` pinned at `version`, or
|
|
73
|
+
* undefined when the source is not a registry address or the version is not
|
|
74
|
+
* exact (a range is TF039's finding, and the catalog has no row for one).
|
|
75
|
+
*/
|
|
76
|
+
export function moduleCompatibility(source, version) {
|
|
77
|
+
const module = registryModuleAddress(source);
|
|
78
|
+
const pinned = exactModuleVersion(version);
|
|
79
|
+
if (module === undefined || pinned === undefined)
|
|
80
|
+
return undefined;
|
|
81
|
+
index ?? (index = byModule());
|
|
82
|
+
const rows = index.get(module) ?? [];
|
|
83
|
+
const measuredVersions = [...new Set(rows.map((r) => bare(r.version)))].sort();
|
|
84
|
+
const at = rows.filter((r) => bare(r.version) === pinned && r.verdict !== "unmeasured");
|
|
85
|
+
const refusedRows = at.filter((r) => r.verdict === "refused");
|
|
86
|
+
const refusals = new Map();
|
|
87
|
+
for (const row of refusedRows) {
|
|
88
|
+
for (const r of row.refusals) {
|
|
89
|
+
const s = refusals.get(r.id) ?? { id: r.id, sites: 0, docsUrl: r.docs_url, examples: [] };
|
|
90
|
+
s.sites += r.sites;
|
|
91
|
+
if (!s.examples.includes(row.example))
|
|
92
|
+
s.examples.push(row.example);
|
|
93
|
+
refusals.set(r.id, s);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
for (const s of refusals.values())
|
|
97
|
+
s.examples.sort();
|
|
98
|
+
const status = rows.length === 0 ? "unknown-module" : at.length === 0 ? "unknown-version" : refusedRows.length > 0 ? "refused" : "clear";
|
|
99
|
+
return {
|
|
100
|
+
module,
|
|
101
|
+
version: pinned,
|
|
102
|
+
tier: "static",
|
|
103
|
+
status,
|
|
104
|
+
examples: at.length,
|
|
105
|
+
clearExamples: at.filter((r) => r.verdict === "clear").length,
|
|
106
|
+
refusedExamples: refusedRows.length,
|
|
107
|
+
refusals: [...refusals.values()].sort((a, b) => b.examples.length - a.examples.length || a.id.localeCompare(b.id)),
|
|
108
|
+
measuredVersions,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type StaticMeasurement, type StaticRow } from "./types.js";
|
|
2
|
+
/** The TypeScript source of `static-tier.ts` for one snapshot. */
|
|
3
|
+
export declare function renderStaticTier(commit: string, measurement: StaticMeasurement, rows: readonly StaticRow[]): string;
|
|
4
|
+
//# sourceMappingURL=refresh-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-cli.d.ts","sourceRoot":"","sources":["../../src/module-catalog/refresh-cli.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AASpF,kEAAkE;AAClE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,CAiBnH"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Refresh the vendored known-module catalog (chant#4560) from choudoufu's
|
|
3
|
+
* module compatibility table.
|
|
4
|
+
*
|
|
5
|
+
* npm run --prefix lexicons/terraform module-catalog:refresh -- <choudoufu checkout> [ref]
|
|
6
|
+
*
|
|
7
|
+
* It reads `live/module-compat.json` at `ref` (default `origin/main`) with
|
|
8
|
+
* `git show`, so the checkout's working tree is never read and a local edit
|
|
9
|
+
* cannot leak into the snapshot. The header of the written file names the
|
|
10
|
+
* source path and the choudoufu commit that last changed the table at that
|
|
11
|
+
* ref, so a reader can check the snapshot against its source with
|
|
12
|
+
* `git -C <choudoufu> show <commit>:live/module-compat.json`.
|
|
13
|
+
*
|
|
14
|
+
* Only the static tier is vendored. choudoufu keeps the gauntlet tier in a
|
|
15
|
+
* separate array and the two tiers share no figure (choudoufu#2292 ruling);
|
|
16
|
+
* the gauntlet array stays out until it has rows (choudoufu#2291), and then
|
|
17
|
+
* comes in as its own export, never folded into the static rows.
|
|
18
|
+
*/
|
|
19
|
+
import { execFileSync } from "node:child_process";
|
|
20
|
+
import { writeFileSync } from "node:fs";
|
|
21
|
+
import { dirname, join } from "node:path";
|
|
22
|
+
import { fileURLToPath } from "node:url";
|
|
23
|
+
import { parseModuleCompat } from "./types.js";
|
|
24
|
+
const SOURCE_PATH = "live/module-compat.json";
|
|
25
|
+
const OUT = join(dirname(fileURLToPath(import.meta.url)), "static-tier.ts");
|
|
26
|
+
function git(dir, ...args) {
|
|
27
|
+
return execFileSync("git", ["-C", dir, ...args], { encoding: "utf8", maxBuffer: 64 * 1024 * 1024 });
|
|
28
|
+
}
|
|
29
|
+
/** The TypeScript source of `static-tier.ts` for one snapshot. */
|
|
30
|
+
export function renderStaticTier(commit, measurement, rows) {
|
|
31
|
+
return [
|
|
32
|
+
"// Code generated by src/module-catalog/refresh-cli.ts. DO NOT EDIT.",
|
|
33
|
+
"//",
|
|
34
|
+
`// Vendored from INTENTIUS/choudoufu ${SOURCE_PATH} at commit`,
|
|
35
|
+
`// ${commit}, static tier only (chant#4560).`,
|
|
36
|
+
"// The gauntlet tier is a separate array in that file and is not vendored here.",
|
|
37
|
+
"import type { StaticMeasurement, StaticRow } from \"./types\";",
|
|
38
|
+
"",
|
|
39
|
+
`export const SOURCE_PATH = ${JSON.stringify(SOURCE_PATH)};`,
|
|
40
|
+
`export const SOURCE_COMMIT = ${JSON.stringify(commit)};`,
|
|
41
|
+
"",
|
|
42
|
+
`export const STATIC_MEASUREMENT: StaticMeasurement = ${JSON.stringify(measurement, null, 2)};`,
|
|
43
|
+
"",
|
|
44
|
+
`export const STATIC_ROWS: readonly StaticRow[] = ${JSON.stringify(rows, null, 2)};`,
|
|
45
|
+
"",
|
|
46
|
+
].join("\n");
|
|
47
|
+
}
|
|
48
|
+
function main(argv) {
|
|
49
|
+
const [dir, ref = "origin/main"] = argv;
|
|
50
|
+
if (!dir) {
|
|
51
|
+
console.error("usage: refresh-cli.ts <choudoufu checkout> [ref]");
|
|
52
|
+
process.exit(2);
|
|
53
|
+
}
|
|
54
|
+
const commit = git(dir, "log", "-1", "--format=%H", ref, "--", SOURCE_PATH).trim();
|
|
55
|
+
if (!/^[0-9a-f]{40}$/.test(commit)) {
|
|
56
|
+
console.error(`${SOURCE_PATH} has no history at ${ref} in ${dir}`);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
const file = parseModuleCompat(JSON.parse(git(dir, "show", `${commit}:${SOURCE_PATH}`)));
|
|
60
|
+
writeFileSync(OUT, renderStaticTier(commit, file.static_measurement, file.static));
|
|
61
|
+
console.log(`module catalog: ${file.static.length} static rows from ${SOURCE_PATH} at ${commit}`);
|
|
62
|
+
}
|
|
63
|
+
if (process.argv[1] && fileURLToPath(import.meta.url) === process.argv[1])
|
|
64
|
+
main(process.argv.slice(2));
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { StaticMeasurement, StaticRow } from "./types.js";
|
|
2
|
+
export declare const SOURCE_PATH = "live/module-compat.json";
|
|
3
|
+
export declare const SOURCE_COMMIT = "39a143679a6f5ffeae7dc186190049e8b55f7149";
|
|
4
|
+
export declare const STATIC_MEASUREMENT: StaticMeasurement;
|
|
5
|
+
export declare const STATIC_ROWS: readonly StaticRow[];
|
|
6
|
+
//# sourceMappingURL=static-tier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static-tier.d.ts","sourceRoot":"","sources":["../../src/module-catalog/static-tier.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE5D,eAAO,MAAM,WAAW,4BAA4B,CAAC;AACrD,eAAO,MAAM,aAAa,6CAA6C,CAAC;AAExE,eAAO,MAAM,kBAAkB,EAAE,iBAkHhC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EA4/C3C,CAAC"}
|