@intentius/chant-lexicon-aws 0.109.0 → 0.110.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/condition.d.ts +12 -1
  2. package/dist/condition.d.ts.map +1 -1
  3. package/dist/import/generator.d.ts +69 -0
  4. package/dist/import/generator.d.ts.map +1 -1
  5. package/dist/import/parser.d.ts.map +1 -1
  6. package/dist/index.d.ts +4 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/integrity.json +4 -4
  9. package/dist/intrinsics.d.ts +58 -6
  10. package/dist/intrinsics.d.ts.map +1 -1
  11. package/dist/lint/post-synth/cf-refs.d.ts.map +1 -1
  12. package/dist/lint/post-synth/waw042.d.ts.map +1 -1
  13. package/dist/manifest.json +22 -1
  14. package/dist/mapping.d.ts +27 -0
  15. package/dist/mapping.d.ts.map +1 -0
  16. package/dist/parameter.d.ts +16 -1
  17. package/dist/parameter.d.ts.map +1 -1
  18. package/dist/plugin.d.ts.map +1 -1
  19. package/dist/rules/cf-refs.ts +12 -2
  20. package/dist/rules/waw042.ts +25 -4
  21. package/dist/serializer.d.ts.map +1 -1
  22. package/dist/template-sections.d.ts +44 -0
  23. package/dist/template-sections.d.ts.map +1 -0
  24. package/package.json +2 -2
  25. package/src/condition.test.ts +31 -0
  26. package/src/condition.ts +15 -1
  27. package/src/import/generator.test.ts +24 -3
  28. package/src/import/generator.ts +322 -49
  29. package/src/import/parser.test.ts +0 -1
  30. package/src/import/parser.ts +74 -21
  31. package/src/import/roundtrip-build.test.ts +322 -0
  32. package/src/import/roundtrip-fixtures.test.ts +3 -3
  33. package/src/index.ts +10 -0
  34. package/src/intrinsics.test.ts +7 -2
  35. package/src/intrinsics.ts +102 -13
  36. package/src/lint/post-synth/cf-refs.ts +12 -2
  37. package/src/lint/post-synth/waw019.test.ts +32 -0
  38. package/src/lint/post-synth/waw042.test.ts +28 -0
  39. package/src/lint/post-synth/waw042.ts +25 -4
  40. package/src/mapping.test.ts +64 -0
  41. package/src/mapping.ts +41 -0
  42. package/src/parameter.ts +22 -1
  43. package/src/plugin.test.ts +2 -1
  44. package/src/plugin.ts +3 -0
  45. package/src/serializer.ts +79 -12
  46. package/src/template-sections.ts +71 -0
@@ -16,8 +16,19 @@ export declare class Condition implements Declarable {
16
16
  readonly entityType = "AWS::CloudFormation::Condition";
17
17
  /** The boolean expression: an `Equals`/`And`/`Or`/`Not` intrinsic. */
18
18
  readonly expression: Intrinsic;
19
- constructor(expression: Intrinsic);
19
+ /** The condition's key in the template's `Conditions`, when it is not the
20
+ * export name. A template may use one name for a condition and a
21
+ * parameter; a module cannot export both under that name (#3604). */
22
+ readonly name?: string;
23
+ constructor(expression: Intrinsic, options?: {
24
+ name?: string;
25
+ });
20
26
  }
27
+ /**
28
+ * The name a condition has in the template: its `name` option, else the
29
+ * logical name discovery gave it (the export name).
30
+ */
31
+ export declare function conditionName(condition: Condition, entityNames?: Map<unknown, string>): string;
21
32
  /**
22
33
  * Type guard for the `Condition` declarable. Duck-typed on `entityType`
23
34
  * rather than `instanceof` so a lexicon built against a separate copy of
@@ -1 +1 @@
1
- {"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../src/condition.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAgB,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC/F,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEzE,eAAO,MAAM,qBAAqB,mCAAmC,CAAC;AAEtE,qBAAa,SAAU,YAAW,UAAU;IAC1C,QAAQ,CAAC,CAAC,iBAAiB,CAAC,OAAiB;IAC7C,QAAQ,CAAC,OAAO,SAAS;IACzB,QAAQ,CAAC,UAAU,oCAAyB;IAC5C,sEAAsE;IACtE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAE/B,YAAY,UAAU,EAAE,SAAS,EAOhC;CACF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D"}
1
+ {"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../src/condition.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAgB,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC/F,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGzE,eAAO,MAAM,qBAAqB,mCAAmC,CAAC;AAEtE,qBAAa,SAAU,YAAW,UAAU;IAC1C,QAAQ,CAAC,CAAC,iBAAiB,CAAC,OAAiB;IAC7C,QAAQ,CAAC,OAAO,SAAS;IACzB,QAAQ,CAAC,UAAU,oCAAyB;IAC5C,sEAAsE;IACtE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B;;yEAEqE;IACrE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,YAAY,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAQ7D;CACF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAE9F;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D"}
@@ -4,8 +4,20 @@ import type { TypeScriptGenerator, GeneratedFile } from "@intentius/chant/import
4
4
  * TypeScript code generator for CloudFormation templates
5
5
  */
6
6
  export declare class CFGenerator implements TypeScriptGenerator {
7
+ /** One `main.ts` holds the whole template. Split files would each need the
8
+ * parameters, conditions and resources the others declare. */
9
+ readonly ownsLayout = true;
7
10
  private typeToClass;
8
11
  private allClassNames;
12
+ /** resourceType -> (property name on the class -> CloudFormation attribute name) */
13
+ private attrsByType;
14
+ /** Resource classes imported under another name, because a logical id in
15
+ * the template is the class's own name (`InternetGateway`). */
16
+ private classAliases;
17
+ /** Variable names for mappings ("m:<name>"), conditions ("c:<name>") and
18
+ * outputs ("o:<name>") whose template name is already a parameter's or
19
+ * resource's (#3604). */
20
+ private renames;
9
21
  constructor();
10
22
  /**
11
23
  * Generate TypeScript files from intermediate representation
@@ -19,6 +31,55 @@ export declare class CFGenerator implements TypeScriptGenerator {
19
31
  * Resolve a logical ID to a safe variable name, suffixing with _ if it conflicts with an imported symbol
20
32
  */
21
33
  private safeVarName;
34
+ /**
35
+ * The property on the generated class that reads `attribute` of the
36
+ * resource `logicalId`, or undefined when the class has none. A dotted
37
+ * CloudFormation attribute (`Endpoint.Address`) maps to its underscored
38
+ * property (`Endpoint_Address`).
39
+ */
40
+ private attrProperty;
41
+ /**
42
+ * An attribute read: `<var>.<property>` when the class exposes the
43
+ * attribute, else `GetAtt("<id>", "<attr>")`. CloudFormation accepts
44
+ * GetAtt on some writable properties (`AWS::SQS::Queue` `QueueName`) that
45
+ * the class does not list, and reading those as a property gives
46
+ * undefined.
47
+ */
48
+ private attrExpr;
49
+ /** Whether `name` is a parameter or resource the template declares. */
50
+ private isDeclaredName;
51
+ /**
52
+ * Which of Ref and GetAtt the generated source calls beyond the IR's own
53
+ * Ref and GetAtt envelopes: Sub interpolations of a declared name, and
54
+ * attribute reads the class does not expose.
55
+ */
56
+ private scanGeneratedIntrinsics;
57
+ /** Every name the template declares: parameters, resources, conditions, outputs. */
58
+ private declaredNames;
59
+ /** The template's Mappings section, as the parser carried it. */
60
+ private mappings;
61
+ /** The variable a declared mapping is exported as. */
62
+ private mappingVar;
63
+ /** A mapping declaration. */
64
+ private generateMapping;
65
+ /**
66
+ * A resource class whose name the template also uses for something it
67
+ * declares is imported under an alias (`InternetGateway as
68
+ * InternetGatewayResource`), so the declaration keeps its name. Suffixing
69
+ * the declaration instead would change its logical id.
70
+ */
71
+ private computeClassAliases;
72
+ /** `templateDescription(...)` and `templateMetadata(...)` for the template's own sections. */
73
+ private generateTemplateSections;
74
+ /**
75
+ * A condition or output whose template name is a parameter's or resource's
76
+ * cannot be exported under that name too. It gets a suffixed variable
77
+ * (`EnableReadReplicaCondition`, `QueueNameOutput`), and the generated code
78
+ * passes the template name as its `name` option.
79
+ */
80
+ private collisionRenames;
81
+ /** The variable a declared condition is exported as. */
82
+ private conditionVar;
22
83
  /**
23
84
  * Generate import statements
24
85
  */
@@ -32,6 +93,8 @@ export declare class CFGenerator implements TypeScriptGenerator {
32
93
  * Check if AWS pseudo-parameters are used
33
94
  */
34
95
  private needsAWSPseudo;
96
+ /** Every IR value the generator writes as source. */
97
+ private generatedValues;
35
98
  /**
36
99
  * Recursively check for AWS pseudo-parameter references
37
100
  */
@@ -67,6 +130,12 @@ export declare class CFGenerator implements TypeScriptGenerator {
67
130
  * Generate a resource declaration, or a comment if the type is unknown
68
131
  */
69
132
  private generateResource;
133
+ /**
134
+ * DependsOn as the variables of the resources it names, so the generated
135
+ * source references them. A name the template does not declare as a
136
+ * supported resource stays a string.
137
+ */
138
+ private generateDependsOn;
70
139
  /**
71
140
  * Generate property object as TypeScript
72
141
  */
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/import/generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAkD,MAAM,gCAAgC,CAAC;AAEjH,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAK5F;;GAEG;AACH,qBAAa,WAAY,YAAW,mBAAmB;IACrD,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,aAAa,CAAc;IAEnC,cAaC;IAED;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,UAAU,GAAG,aAAa,EAAE,CAoDxC;IAED;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAmB9B;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB;;OAEG;IACH,OAAO,CAAC,YAAY;IAyBpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoC1B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAYtB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgCtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAwHrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuD5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,UAAU;CAGnB"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/import/generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAkD,MAAM,gCAAgC,CAAC;AAEjH,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAK5F;;GAEG;AACH,qBAAa,WAAY,YAAW,mBAAmB;IACrD;kEAC8D;IAC9D,QAAQ,CAAC,UAAU,QAAQ;IAC3B,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,aAAa,CAAc;IACnC,oFAAoF;IACpF,OAAO,CAAC,WAAW,CAAsC;IACzD;mEAC+D;IAC/D,OAAO,CAAC,YAAY,CAAkC;IACtD;;6BAEyB;IACzB,OAAO,CAAC,OAAO,CAAkC;IAEjD,cAgBC;IAED;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,UAAU,GAAG,aAAa,EAAE,CAqExC;IAED;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAQpB;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;IAMhB,uEAAuE;IACvE,OAAO,CAAC,cAAc;IAItB;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IA2B/B,oFAAoF;IACpF,OAAO,CAAC,aAAa;IAUrB,iEAAiE;IACjE,OAAO,CAAC,QAAQ;IAIhB,sDAAsD;IACtD,OAAO,CAAC,UAAU;IAIlB,6BAA6B;IAC7B,OAAO,CAAC,eAAe;IAMvB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAa3B,8FAA8F;IAC9F,OAAO,CAAC,wBAAwB;IAmBhC;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAqBxB,wDAAwD;IACxD,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAYvB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB,qDAAqD;IACrD,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAyBpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyC1B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAYtB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,cAAc;IA8BtB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoCxB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAgJrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA4D5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,UAAU;CAGnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/import/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EAKX,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAiJtE;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,eAAgB,YAAW,cAAc;IACrE;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CA0BjC;IAED;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAOrC;IAEH,OAAO,CAAC,6BAA6B;IAUrC;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB,CAAS;IAEtC,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,GAAG,IAAI,CA6ItG;CACF"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/import/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EAKX,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AA4KtE;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,eAAgB,YAAW,cAAc;IACrE;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CA4BjC;IAED;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CASrC;IAEH,OAAO,CAAC,6BAA6B;IAUrC;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB,CAAS;IAEtC,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,GAAG,IAAI,CAuJtG;CACF"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,12 @@
1
1
  export { Parameter } from "./parameter.js";
2
2
  export { Condition, isCondition, CONDITION_ENTITY_TYPE } from "./condition.js";
3
+ export { Mapping, isMapping, MAPPING_ENTITY_TYPE } from "./mapping.js";
3
4
  export { defaultTags, isDefaultTags, DEFAULT_TAGS_MARKER } from "./default-tags.js";
4
5
  export type { DefaultTags, TagEntry } from "./default-tags.js";
5
6
  export { templateTransform, isTemplateTransform, TEMPLATE_TRANSFORM_MARKER } from "./template-transform.js";
6
7
  export type { TemplateTransform } from "./template-transform.js";
8
+ export { templateDescription, templateMetadata, isTemplateSection, TEMPLATE_SECTION_MARKER } from "./template-sections.js";
9
+ export type { TemplateSection } from "./template-sections.js";
7
10
  export { EffectReceipt, receiptParameterName, AWS_EFFECT_RECEIPT_ENTITY_TYPE, EFFECT_RECEIPTS_METADATA_KEY, RECEIPT_PATH_PREFIX, RECEIPT_UNRESOLVED_VALUE_NOTE, } from "./effect-receipt-row.js";
8
11
  export type { AwsEffectReceiptDeclaration } from "./effect-receipt-row.js";
9
12
  export { awsReceiptStore, observeReceiptRows, ssmGetParameter, ssmPutParameter } from "./receipt-store.js";
@@ -22,7 +25,7 @@ export { awsPlugin } from "./plugin.js";
22
25
  export { observeResourcesDeepAws, awsDeepNormalizationHooks, hasOwnershipMarker, DEEP_READABLE_TYPES, AWS_READ_ONLY_NAMES, AWS_SERVICE_DEFAULTS, } from "./deep-observe.js";
23
26
  export { describeStackResources, describeStackOutputs, describeStackDetail, getResource, listResources, parseResourceDescription, resolveEndpointOverride, serviceEndpointEnvVar, AwsReadError, type AwsReadHttp, type AwsReadClientOptions, type CloudControlDescription, type StackResource, type StackDetail, type AwsCredentials, type AwsCredentialResolver, type AwsCredentialSource, } from "./api/read-client.js";
24
27
  export { signRequest, resolveCredentials, EMPTY_PAYLOAD_SHA256, type SigV4Request, } from "./api/sigv4.js";
25
- export { Sub, Ref, GetAtt, If, Join, Select, Split, Base64, GetAZs, Equals, And, Or, Not, SubIntrinsic, RefIntrinsic, GetAttIntrinsic, IfIntrinsic, JoinIntrinsic, SelectIntrinsic, SplitIntrinsic, Base64Intrinsic, GetAZsIntrinsic, EqualsIntrinsic, AndIntrinsic, OrIntrinsic, NotIntrinsic, } from "./intrinsics.js";
28
+ export { Sub, Ref, GetAtt, If, Join, Select, Split, Base64, GetAZs, Equals, And, Or, Not, SubIntrinsic, RefIntrinsic, GetAttIntrinsic, IfIntrinsic, JoinIntrinsic, SelectIntrinsic, SplitIntrinsic, Base64Intrinsic, GetAZsIntrinsic, EqualsIntrinsic, AndIntrinsic, OrIntrinsic, NotIntrinsic, FindInMap, FindInMapIntrinsic, ImportValue, ImportValueIntrinsic, Cidr, CidrIntrinsic, } from "./intrinsics.js";
26
29
  export type { ConditionOperand } from "./intrinsics.js";
27
30
  export { AWS, StackName, Region, AccountId, StackId, URLSuffix, NoValue, NotificationARNs, Partition, } from "./pseudo.js";
28
31
  export * from "./generated/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "algorithm": "sha256",
3
3
  "artifacts": {
4
- "manifest.json": "1d3047d2c1615b08fa76afb28efa95c07f6b087a9cf6f619eccc284e3295f8f8",
4
+ "manifest.json": "d04e91615d7a9d7bd4e771538c831f1850fe981345d4403474b83a2d74f699b4",
5
5
  "meta.json": "31795ba62a1da7503a8d55192c212ac44c56a56cdb2d4fde47966a1abc8b021b",
6
6
  "types/index.d.ts": "1038589dccfc1e690e3373014bff4d319e4ed3b421db2448ed4e70d51eb9d1f2",
7
7
  "rules/hardcoded-region.ts": "5a0eaf7ab391231fe6cd51426ece29539cb4b36f31c8dd060956638fed55722a",
8
8
  "rules/iam-wildcard.ts": "135d7217d278fef50939e605c5da32603ba35674b8c4b5c4d66a06c77903e945",
9
9
  "rules/s3-encryption.ts": "c4f9f8aa8dc382ed98c7b04e820a600590cc75335a8db2e087cbfbfe4003d09e",
10
- "rules/cf-refs.ts": "3ca38a822b75db5b6370a5507f6a1c088e5419c9f8f5a3c9631468064842ba12",
10
+ "rules/cf-refs.ts": "3fa8d144e430ae00204b159f1c8c5bf78576c52f984cc4f656eb366d7423f819",
11
11
  "rules/cor020.ts": "915bbb4c083c7b3b84b93e8e891b5ffffe5a138fdccda32ecfdda91b8685798c",
12
12
  "rules/ext001.ts": "f8703f37a50ab23d0ecaef539c0215a71269d420fa5e09a3d0454b18b7350b34",
13
13
  "rules/waw010.ts": "41c58aaedb8f9fe266f4b40f1a076f762796427fdf9b317b8a4a50c713e45571",
@@ -41,7 +41,7 @@
41
41
  "rules/waw039.ts": "31ba717d313bf8ca95a1e86227a82c33eced19bcaa0ac58dd06eda52a5ee431a",
42
42
  "rules/waw040.ts": "3770dbabeb0af42df8df10f861fb98ea78588ce2cb9ba185d7b7c83ced07f86e",
43
43
  "rules/waw041.ts": "930d4bf5df280ca5090be97b0d33366dad813b6aea8294530b9a3efb16c7637b",
44
- "rules/waw042.ts": "ad3f41d0a67b527fa3e659c179f29030c0b6962e36c5988fcacad7e2afd37f04",
44
+ "rules/waw042.ts": "0a77ec28c2f0813a1ebac0d719623722fa2780cd2fff11b166bcc9bd4cfbce2d",
45
45
  "rules/waw043.ts": "dc95d8e42d748d0971a4d5b0dac758030ef1aaf7b3645094e9fd7f659b82bb05",
46
46
  "rules/waw044.ts": "00f9d3ed2e439157b05cc406bf710b8615969fb2ce96719f3fd66912c56ffec7",
47
47
  "rules/waw045.ts": "3ee1ecb702fbf972192a81db48d6f5935434d9a7a81469e67b14ee9336d969dc",
@@ -73,5 +73,5 @@
73
73
  "skills/chant-aws-eks.md": "8789255709ff004ad0a875fd5999edcdc66fc6e33d710db058d9f42703bcfdfe",
74
74
  "skills/chant-aws-carve-terraform.md": "8780b94ce60aded935938d5ef20ea667738354051da1bf9ca6d70d9886f65d21"
75
75
  },
76
- "composite": "0b2cffd60557fe444fdec72768e796e16027ffe95bc091512b9f13993f686ba3"
76
+ "composite": "3f93250ecc8187a6a0b01f3e6d8a113dad6f212e6be42d0884a1e750b5c17851"
77
77
  }
@@ -1,6 +1,7 @@
1
1
  import { INTRINSIC_MARKER, type Intrinsic } from "@intentius/chant/intrinsic";
2
2
  import { type Declarable } from "@intentius/chant/declarable";
3
3
  import { type Condition } from "./condition.js";
4
+ import { type Mapping } from "./mapping.js";
4
5
  /**
5
6
  * An operand allowed where CloudFormation expects a condition (#2068): a
6
7
  * nested condition intrinsic (`Equals`/`And`/`Or`/`Not`), the `Condition`
@@ -51,8 +52,8 @@ export declare function Ref(target: string | Declarable): RefIntrinsic;
51
52
  */
52
53
  export declare class GetAttIntrinsic implements Intrinsic {
53
54
  readonly [INTRINSIC_MARKER]: true;
54
- private logicalName;
55
- private attribute;
55
+ readonly logicalName: string;
56
+ readonly attribute: string;
56
57
  constructor(logicalName: string, attribute: string);
57
58
  toJSON(): {
58
59
  "Fn::GetAtt": [string, string];
@@ -172,15 +173,16 @@ export declare class SelectIntrinsic implements Intrinsic {
172
173
  readonly [INTRINSIC_MARKER]: true;
173
174
  private index;
174
175
  private values;
175
- constructor(index: number, values: unknown[] | Intrinsic);
176
+ constructor(index: number | string, values: unknown[] | Intrinsic);
176
177
  toJSON(): {
177
- "Fn::Select": [string, unknown];
178
+ "Fn::Select": [number | string, unknown];
178
179
  };
179
180
  }
180
181
  /**
181
- * Create a Select intrinsic
182
+ * Create a Select intrinsic. The index is emitted as written: CloudFormation
183
+ * accepts `0` and `"0"`.
182
184
  */
183
- export declare function Select(index: number, values: unknown[] | Intrinsic): SelectIntrinsic;
185
+ export declare function Select(index: number | string, values: unknown[] | Intrinsic): SelectIntrinsic;
184
186
  /**
185
187
  * Fn::Split intrinsic function
186
188
  * Splits a string by delimiter
@@ -230,4 +232,54 @@ export declare class GetAZsIntrinsic implements Intrinsic {
230
232
  * Create a GetAZs intrinsic
231
233
  */
232
234
  export declare function GetAZs(region?: string | Intrinsic): GetAZsIntrinsic;
235
+ /**
236
+ * Fn::FindInMap intrinsic function
237
+ * Reads the value under two keys of a declared mapping.
238
+ */
239
+ export declare class FindInMapIntrinsic implements Intrinsic {
240
+ readonly [INTRINSIC_MARKER]: true;
241
+ private mapName;
242
+ private topLevelKey;
243
+ private secondLevelKey;
244
+ constructor(mapName: string | Mapping, topLevelKey: unknown, secondLevelKey: unknown);
245
+ toJSON(): {
246
+ "Fn::FindInMap": [string, unknown, unknown];
247
+ };
248
+ }
249
+ /**
250
+ * Create a FindInMap intrinsic. The mapping is the `Mapping` declarable, or
251
+ * its name. Either key may be a literal or a value intrinsic
252
+ * (`FindInMap(regionMap, AWS.Region, "AMI")`).
253
+ */
254
+ export declare function FindInMap(mapName: string | Mapping, topLevelKey: unknown, secondLevelKey: unknown): FindInMapIntrinsic;
255
+ /**
256
+ * Fn::ImportValue intrinsic function
257
+ * Reads a value another stack exports.
258
+ */
259
+ export declare class ImportValueIntrinsic implements Intrinsic {
260
+ readonly [INTRINSIC_MARKER]: true;
261
+ private sharedValue;
262
+ constructor(sharedValue: unknown);
263
+ toJSON(): {
264
+ "Fn::ImportValue": unknown;
265
+ };
266
+ }
267
+ /** Create an ImportValue intrinsic. The export name is a string or a value intrinsic (`Sub`). */
268
+ export declare function ImportValue(sharedValue: unknown): ImportValueIntrinsic;
269
+ /**
270
+ * Fn::Cidr intrinsic function
271
+ * Splits an address block into `count` CIDR blocks of `cidrBits` host bits.
272
+ */
273
+ export declare class CidrIntrinsic implements Intrinsic {
274
+ readonly [INTRINSIC_MARKER]: true;
275
+ private ipBlock;
276
+ private count;
277
+ private cidrBits;
278
+ constructor(ipBlock: unknown, count: unknown, cidrBits: unknown);
279
+ toJSON(): {
280
+ "Fn::Cidr": [unknown, unknown, unknown];
281
+ };
282
+ }
283
+ /** Create a Cidr intrinsic. Each argument is a literal or a value intrinsic, written as the template writes it. */
284
+ export declare function Cidr(ipBlock: unknown, count: unknown, cidrBits: unknown): CidrIntrinsic;
233
285
  //# sourceMappingURL=intrinsics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"intrinsics.d.ts","sourceRoot":"","sources":["../src/intrinsics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intrinsics.d.ts","sourceRoot":"","sources":["../src/intrinsics.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cf-refs.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/cf-refs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,GAAG,IAAI,CAWvF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAI5D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAcnF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAInD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,UAAU,GACnB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAoBhC;AAiBD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,UAAU,GACnB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAahC;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAK5F;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASnF;AAUD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAO7E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,OAAO,EACf,cAAc,EAAE,MAAM,EAAE,GACvB,OAAO,CAgBT"}
1
+ {"version":3,"file":"cf-refs.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/cf-refs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,UAAU,GAAG,IAAI,CAWvF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAI5D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAcnF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAInD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,UAAU,GACnB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAoBhC;AAiBD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,UAAU,GACnB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAahC;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAK5F;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASnF;AAUD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAO7E;AAYD;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,OAAO,EACf,cAAc,EAAE,MAAM,EAAE,GACvB,OAAO,CAgBT"}
@@ -1 +1 @@
1
- {"version":3,"file":"waw042.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw042.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAyB9G,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CA2CjF;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
1
+ {"version":3,"file":"waw042.d.ts","sourceRoot":"","sources":["../../../src/lint/post-synth/waw042.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AA8C9G,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CA2CjF;AAED,eAAO,MAAM,MAAM,EAAE,cAOpB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aws",
3
- "version": "0.109.0",
3
+ "version": "0.110.0",
4
4
  "chantVersion": ">=0.1.0",
5
5
  "namespace": "AWS",
6
6
  "intrinsics": [
@@ -93,6 +93,27 @@
93
93
  "outputKey": "Fn::Not",
94
94
  "isTag": false,
95
95
  "foldsAsCall": true
96
+ },
97
+ {
98
+ "name": "FindInMap",
99
+ "description": "Fn::FindInMap — value from a declared mapping",
100
+ "outputKey": "Fn::FindInMap",
101
+ "isTag": false,
102
+ "foldsAsCall": true
103
+ },
104
+ {
105
+ "name": "ImportValue",
106
+ "description": "Fn::ImportValue — value another stack exports",
107
+ "outputKey": "Fn::ImportValue",
108
+ "isTag": false,
109
+ "foldsAsCall": true
110
+ },
111
+ {
112
+ "name": "Cidr",
113
+ "description": "Fn::Cidr — CIDR blocks from an address block",
114
+ "outputKey": "Fn::Cidr",
115
+ "isTag": false,
116
+ "foldsAsCall": true
96
117
  }
97
118
  ],
98
119
  "pseudoParameters": {
@@ -0,0 +1,27 @@
1
+ /**
2
+ * CloudFormation template mapping.
3
+ *
4
+ * A `Mapping` declarable is lifted into the template's `Mappings` section by
5
+ * the serializer, the way `Condition` is lifted into `Conditions`. Read a
6
+ * value from it with `FindInMap(mapping, topLevelKey, secondLevelKey)`.
7
+ */
8
+ import { DECLARABLE_MARKER, type Declarable } from "@intentius/chant/declarable";
9
+ export declare const MAPPING_ENTITY_TYPE = "AWS::CloudFormation::Mapping";
10
+ export declare class Mapping implements Declarable {
11
+ readonly [DECLARABLE_MARKER]: true;
12
+ readonly lexicon = "aws";
13
+ readonly entityType = "AWS::CloudFormation::Mapping";
14
+ /** Top-level key -> second-level key -> value. */
15
+ readonly map: Record<string, Record<string, unknown>>;
16
+ /** The mapping's key in the template's `Mappings`, when it is not the
17
+ * export name. */
18
+ readonly name?: string;
19
+ constructor(map: Record<string, Record<string, unknown>>, options?: {
20
+ name?: string;
21
+ });
22
+ }
23
+ /** Type guard for the `Mapping` declarable, duck-typed on `entityType` (#1137). */
24
+ export declare function isMapping(value: unknown): value is Mapping;
25
+ /** The name a mapping has in the template: its `name` option, else its logical name. */
26
+ export declare function mappingName(mapping: Mapping): string;
27
+ //# sourceMappingURL=mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAgB,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAG/F,eAAO,MAAM,mBAAmB,iCAAiC,CAAC;AAElE,qBAAa,OAAQ,YAAW,UAAU;IACxC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,OAAiB;IAC7C,QAAQ,CAAC,OAAO,SAAS;IACzB,QAAQ,CAAC,UAAU,kCAAuB;IAC1C,kDAAkD;IAClD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD;sBACkB;IAClB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,YAAY,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAMpF;CACF;AAED,mFAAmF;AACnF,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAE1D;AAED,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEpD"}
@@ -1,4 +1,18 @@
1
1
  import { DECLARABLE_MARKER, type CoreParameter } from "@intentius/chant/declarable";
2
+ /**
3
+ * What CloudFormation checks a parameter value against. Numeric bounds are
4
+ * kept as written: templates write `MinLength: "1"` as often as `1`.
5
+ */
6
+ export interface ParameterConstraints {
7
+ allowedValues?: unknown[];
8
+ allowedPattern?: string;
9
+ constraintDescription?: string;
10
+ minLength?: number | string;
11
+ maxLength?: number | string;
12
+ minValue?: number | string;
13
+ maxValue?: number | string;
14
+ noEcho?: boolean | string;
15
+ }
2
16
  export declare class Parameter implements CoreParameter {
3
17
  readonly [DECLARABLE_MARKER]: true;
4
18
  readonly lexicon = "aws";
@@ -6,9 +20,10 @@ export declare class Parameter implements CoreParameter {
6
20
  readonly parameterType: string;
7
21
  readonly description?: string;
8
22
  readonly defaultValue?: unknown;
23
+ readonly constraints?: ParameterConstraints;
9
24
  constructor(type: string, options?: {
10
25
  description?: string;
11
26
  defaultValue?: unknown;
12
- });
27
+ } & ParameterConstraints);
13
28
  }
14
29
  //# sourceMappingURL=parameter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parameter.d.ts","sourceRoot":"","sources":["../src/parameter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEpF,qBAAa,SAAU,YAAW,aAAa;IAC7C,QAAQ,CAAC,CAAC,iBAAiB,CAAC,OAAiB;IAC7C,QAAQ,CAAC,OAAO,SAAS;IACzB,QAAQ,CAAC,UAAU,oCAAoC;IACvD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEhC,YAAY,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,EAInF;CACF"}
1
+ {"version":3,"file":"parameter.d.ts","sourceRoot":"","sources":["../src/parameter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEpF;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC3B;AAED,qBAAa,SAAU,YAAW,aAAa;IAC7C,QAAQ,CAAC,CAAC,iBAAiB,CAAC,OAAiB;IAC7C,QAAQ,CAAC,OAAO,SAAS;IACzB,QAAQ,CAAC,UAAU,oCAAoC;IACvD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,oBAAoB,CAAC;IAE5C,YAAY,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,oBAAoB,EAS1G;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAqQ,MAAM,0BAA0B,CAAC;AAuCjU;yEACyE;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAiBnD,eAAO,MAAM,SAAS,EAAE,aAojCvB,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAqQ,MAAM,0BAA0B,CAAC;AAuCjU;yEACyE;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAiBnD,eAAO,MAAM,SAAS,EAAE,aAujCvB,CAAC"}
@@ -209,6 +209,16 @@ export function ipv4CidrContains(outer: string, inner: string): boolean | null {
209
209
  return iStart >= oStart && iEnd <= oEnd;
210
210
  }
211
211
 
212
+ /**
213
+ * A port as a number. CloudFormation accepts `"80"` as well as `80`, so a
214
+ * string of digits counts; anything else reads as -1, which means all ports.
215
+ */
216
+ function portNumber(port: unknown): number {
217
+ if (typeof port === "number") return port;
218
+ if (typeof port === "string" && /^-?\d+$/.test(port.trim())) return Number(port);
219
+ return -1;
220
+ }
221
+
212
222
  /**
213
223
  * Check if a port range [fromPort, toPort] contains any of the sensitive ports.
214
224
  */
@@ -220,8 +230,8 @@ export function portRangeContainsSensitive(
220
230
  // Missing ports means all ports
221
231
  if (fromPort === undefined && toPort === undefined) return true;
222
232
 
223
- const from = typeof fromPort === "number" ? fromPort : -1;
224
- const to = typeof toPort === "number" ? toPort : -1;
233
+ const from = portNumber(fromPort);
234
+ const to = portNumber(toPort);
225
235
 
226
236
  // If either is an intrinsic, we can't statically verify
227
237
  if (isIntrinsic(fromPort) || isIntrinsic(toPort)) return false;
@@ -26,10 +26,31 @@ function statementDeniesInsecureTransport(stmt: Record<string, unknown>): boolea
26
26
  return false;
27
27
  }
28
28
 
29
- /** Logical ids of every bucket a BucketPolicy's `Bucket` property resolves to. */
30
- function bucketPolicyTargets(resource: CFResource): Set<string> {
29
+ /** A value as JSON with its object keys sorted, for comparing two values. */
30
+ function canonical(value: unknown): string {
31
+ return JSON.stringify(value, (_key, v) =>
32
+ v && typeof v === "object" && !Array.isArray(v)
33
+ ? Object.fromEntries(Object.keys(v).sort().map((k) => [k, (v as Record<string, unknown>)[k]]))
34
+ : v,
35
+ );
36
+ }
37
+
38
+ /**
39
+ * Logical ids of every bucket a BucketPolicy's `Bucket` property resolves to:
40
+ * a bucket it references (`Ref`, `GetAtt`), or a bucket whose `BucketName`
41
+ * is the same value (`Fn::Sub: "${AppName}-${AWS::Region}"` on both).
42
+ */
43
+ function bucketPolicyTargets(resource: CFResource, resources: Record<string, CFResource>): Set<string> {
31
44
  const props = resource.Properties ?? {};
32
- return findResourceRefs(props.Bucket);
45
+ const targets = findResourceRefs(props.Bucket);
46
+ if (props.Bucket === undefined) return targets;
47
+ const policyBucket = canonical(props.Bucket);
48
+ for (const [logicalId, other] of Object.entries(resources)) {
49
+ if (other.Type !== "AWS::S3::Bucket") continue;
50
+ const name = other.Properties?.BucketName;
51
+ if (name !== undefined && canonical(name) === policyBucket) targets.add(logicalId);
52
+ }
53
+ return targets;
33
54
  }
34
55
 
35
56
  export function checkS3TlsOnlyPolicy(ctx: PostSynthContext): PostSynthDiagnostic[] {
@@ -55,7 +76,7 @@ export function checkS3TlsOnlyPolicy(ctx: PostSynthContext): PostSynthDiagnostic
55
76
  );
56
77
  if (!hasTlsDeny) continue;
57
78
 
58
- for (const bucketId of bucketPolicyTargets(resource)) {
79
+ for (const bucketId of bucketPolicyTargets(resource, template.Resources)) {
59
80
  bucketsWithTlsPolicy.add(bucketId);
60
81
  }
61
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAsC,MAAM,6BAA6B,CAAC;AAsgBlG;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,UA4E3B,CAAC"}
1
+ {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAsC,MAAM,6BAA6B,CAAC;AAykBlG;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,UA4E3B,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Template Description and Metadata — the template-level `Description` and
3
+ * `Metadata` sections of the synthesized CloudFormation template.
4
+ *
5
+ * Like `Transform` (./template-transform.ts), these belong to the template,
6
+ * not to a resource, so a project exports a declaration and the serializer
7
+ * lifts it to the top of the template. `chant import` writes them for the
8
+ * sections a template it imports has.
9
+ */
10
+ import { DECLARABLE_MARKER, type Declarable } from "@intentius/chant/declarable";
11
+ /** Marker symbol for a template description or metadata declaration. */
12
+ export declare const TEMPLATE_SECTION_MARKER: unique symbol;
13
+ /** A template-level section the serializer lifts: `Description` or `Metadata`. */
14
+ export interface TemplateSection extends Declarable {
15
+ readonly [TEMPLATE_SECTION_MARKER]: true;
16
+ readonly [DECLARABLE_MARKER]: true;
17
+ readonly lexicon: "aws";
18
+ readonly entityType: "chant:aws:templateSection";
19
+ readonly section: "Description" | "Metadata";
20
+ readonly value: unknown;
21
+ }
22
+ /** Type guard for TemplateSection. */
23
+ export declare function isTemplateSection(value: unknown): value is TemplateSection;
24
+ /**
25
+ * Declare the template's top-level `Description`. One per template.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * export const description = templateDescription("Queue and its dead-letter queue");
30
+ * ```
31
+ */
32
+ export declare function templateDescription(description: string): TemplateSection;
33
+ /**
34
+ * Declare entries in the template's top-level `Metadata`
35
+ * (`AWS::CloudFormation::Interface`, `cfn-lint` settings). Several
36
+ * declarations merge; keys chant writes itself are added after them.
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * export const metadata = templateMetadata({ "cfn-lint": { config: { ignore_checks: ["W3005"] } } });
41
+ * ```
42
+ */
43
+ export declare function templateMetadata(metadata: Record<string, unknown>): TemplateSection;
44
+ //# sourceMappingURL=template-sections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-sections.d.ts","sourceRoot":"","sources":["../src/template-sections.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEjF,wEAAwE;AACxE,eAAO,MAAM,uBAAuB,eAA0C,CAAC;AAE/E,kFAAkF;AAClF,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,QAAQ,CAAC,CAAC,uBAAuB,CAAC,EAAE,IAAI,CAAC;IACzC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,UAAU,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,sCAAsC;AACtC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAO1E;AAaD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAExE;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAEnF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentius/chant-lexicon-aws",
3
- "version": "0.109.0",
3
+ "version": "0.110.0",
4
4
  "description": "AWS CloudFormation lexicon for chant — declarative IaC in TypeScript",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://intentius.io/chant",
@@ -80,7 +80,7 @@
80
80
  "typescript": "^5.9.3"
81
81
  },
82
82
  "peerDependencies": {
83
- "@intentius/chant": "^0.109.0",
83
+ "@intentius/chant": "^0.110.0",
84
84
  "typescript": "^5.9.3"
85
85
  }
86
86
  }