Commit b76c182
authored
fix(cfn2ts): doesn't handle property types with the same type as a primitive type (#25460)
We currently do not account for cases where a property type can have a complex type that matches one of our primitive types. For example, [AWS::IoT::TopicRule.LocationAction](https://github.com/aws/aws-cdk/blob/a0ad49df7b2536d800b4890ae0116e6ce26e6c55/packages/@aws-cdk/cfnspec/spec-source/specification/000_cfn/000_official/000_AWS_IoT.json#L1437-L1442) has a property `Timestamp` with a Type of [Timestamp](https://github.com/aws/aws-cdk/blob/a0ad49df7b2536d800b4890ae0116e6ce26e6c55/packages/@aws-cdk/cfnspec/spec-source/specification/000_cfn/000_official/000_AWS_IoT.json#L1727-L1742) When cfn2ts generates the TypeScript code it thinks that this is referring to the `PrimitiveType` `Timestamp` and coverts it to a `Date`.
After running `gen` with these changes the only differences in the cfnspecs were
`iot.generated.ts`
```diff
@@ -10134,7 +10134,7 @@ export namespace CfnTopicRule {
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicrule-locationaction.html#cfn-iot-topicrule-locationaction-timestamp
*/
- readonly timestamp?: Date | cdk.IResolvable;
+ readonly timestamp?: CfnTopicRule.TimestampProperty | cdk.IResolvable;
/**
* The name of the tracker resource in Amazon Location in which the location is updated.
*
@@ -10165,7 +10165,7 @@ function CfnTopicRule_LocationActionPropertyValidator(properties: any): cdk.Vali
errors.collect(cdk.propertyValidator('longitude', cdk.validateString)(properties.longitude));
errors.collect(cdk.propertyValidator('roleArn', cdk.requiredValidator)(properties.roleArn));
errors.collect(cdk.propertyValidator('roleArn', cdk.validateString)(properties.roleArn));
- errors.collect(cdk.propertyValidator('timestamp', cdk.validateDate)(properties.timestamp));
+ errors.collect(cdk.propertyValidator('timestamp', CfnTopicRule_TimestampPropertyValidator)(properties.timestamp));
errors.collect(cdk.propertyValidator('trackerName', cdk.requiredValidator)(properties.trackerName));
errors.collect(cdk.propertyValidator('trackerName', cdk.validateString)(properties.trackerName));
return errors.wrap('supplied properties not correct for "LocationActionProperty"');
@@ -10187,7 +10187,7 @@ function cfnTopicRuleLocationActionPropertyToCloudFormation(properties: any): an
Latitude: cdk.stringToCloudFormation(properties.latitude),
Longitude: cdk.stringToCloudFormation(properties.longitude),
RoleArn: cdk.stringToCloudFormation(properties.roleArn),
- Timestamp: cdk.dateToCloudFormation(properties.timestamp),
+ Timestamp: cfnTopicRuleTimestampPropertyToCloudFormation(properties.timestamp),
TrackerName: cdk.stringToCloudFormation(properties.trackerName),
};
}
@@ -10206,7 +10206,7 @@ function CfnTopicRuleLocationActionPropertyFromCloudFormation(properties: any):
ret.addPropertyResult('latitude', 'Latitude', cfn_parse.FromCloudFormation.getString(properties.Latitude));
ret.addPropertyResult('longitude', 'Longitude', cfn_parse.FromCloudFormation.getString(properties.Longitude));
ret.addPropertyResult('roleArn', 'RoleArn', cfn_parse.FromCloudFormation.getString(properties.RoleArn));
- ret.addPropertyResult('timestamp', 'Timestamp', properties.Timestamp != null ? cfn_parse.FromCloudFormation.getDate(properties.Timestamp) : undefined);
+ ret.addPropertyResult('timestamp', 'Timestamp', properties.Timestamp != null ? CfnTopicRuleTimestampPropertyFromCloudFormation(properties.Timestamp) : undefined);
ret.addPropertyResult('trackerName', 'TrackerName', cfn_parse.FromCloudFormation.getString(properties.TrackerName));
ret.addUnrecognizedPropertiesAsExtra(properties);
return ret;
```
`sagemaker.generated.ts`
```diff
@@ -2053,7 +2053,7 @@ export namespace CfnDataQualityJobDefinition {
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-dataqualityjobdefinition-datasetformat.html#cfn-sagemaker-dataqualityjobdefinition-datasetformat-json
*/
- readonly json?: any | cdk.IResolvable;
+ readonly json?: CfnDataQualityJobDefinition.JsonProperty | cdk.IResolvable;
/**
* `CfnDataQualityJobDefinition.DatasetFormatProperty.Parquet`
*
@@ -2077,7 +2077,7 @@ function CfnDataQualityJobDefinition_DatasetFormatPropertyValidator(properties:
errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties)));
}
errors.collect(cdk.propertyValidator('csv', CfnDataQualityJobDefinition_CsvPropertyValidator)(properties.csv));
- errors.collect(cdk.propertyValidator('json', cdk.validateObject)(properties.json));
+ errors.collect(cdk.propertyValidator('json', CfnDataQualityJobDefinition_JsonPropertyValidator)(properties.json));
errors.collect(cdk.propertyValidator('parquet', cdk.validateBoolean)(properties.parquet));
return errors.wrap('supplied properties not correct for "DatasetFormatProperty"');
}
@@ -2095,7 +2095,7 @@ function cfnDataQualityJobDefinitionDatasetFormatPropertyToCloudFormation(proper
CfnDataQualityJobDefinition_DatasetFormatPropertyValidator(properties).assertSuccess();
return {
Csv: cfnDataQualityJobDefinitionCsvPropertyToCloudFormation(properties.csv),
- Json: cdk.objectToCloudFormation(properties.json),
+ Json: cfnDataQualityJobDefinitionJsonPropertyToCloudFormation(properties.json),
Parquet: cdk.booleanToCloudFormation(properties.parquet),
};
}
@@ -2111,7 +2111,7 @@ function CfnDataQualityJobDefinitionDatasetFormatPropertyFromCloudFormation(prop
}
const ret = new cfn_parse.FromCloudFormationPropertyObject<CfnDataQualityJobDefinition.DatasetFormatProperty>();
ret.addPropertyResult('csv', 'Csv', properties.Csv != null ? CfnDataQualityJobDefinitionCsvPropertyFromCloudFormation(properties.Csv) : undefined);
- ret.addPropertyResult('json', 'Json', properties.Json != null ? cfn_parse.FromCloudFormation.getAny(properties.Json) : undefined);
+ ret.addPropertyResult('json', 'Json', properties.Json != null ? CfnDataQualityJobDefinitionJsonPropertyFromCloudFormation(properties.Json) : undefined);
ret.addPropertyResult('parquet', 'Parquet', properties.Parquet != null ? cfn_parse.FromCloudFormation.getBoolean(properties.Parquet) : undefined);
ret.addUnrecognizedPropertiesAsExtra(properties);
return ret;
@@ -11470,7 +11470,7 @@ export namespace CfnModelBiasJobDefinition {
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-modelbiasjobdefinition-datasetformat.html#cfn-sagemaker-modelbiasjobdefinition-datasetformat-json
*/
- readonly json?: any | cdk.IResolvable;
+ readonly json?: CfnModelBiasJobDefinition.JsonProperty | cdk.IResolvable;
/**
* `CfnModelBiasJobDefinition.DatasetFormatProperty.Parquet`
*
@@ -11494,7 +11494,7 @@ function CfnModelBiasJobDefinition_DatasetFormatPropertyValidator(properties: an
errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties)));
}
errors.collect(cdk.propertyValidator('csv', CfnModelBiasJobDefinition_CsvPropertyValidator)(properties.csv));
- errors.collect(cdk.propertyValidator('json', cdk.validateObject)(properties.json));
+ errors.collect(cdk.propertyValidator('json', CfnModelBiasJobDefinition_JsonPropertyValidator)(properties.json));
errors.collect(cdk.propertyValidator('parquet', cdk.validateBoolean)(properties.parquet));
return errors.wrap('supplied properties not correct for "DatasetFormatProperty"');
}
@@ -11512,7 +11512,7 @@ function cfnModelBiasJobDefinitionDatasetFormatPropertyToCloudFormation(properti
CfnModelBiasJobDefinition_DatasetFormatPropertyValidator(properties).assertSuccess();
return {
Csv: cfnModelBiasJobDefinitionCsvPropertyToCloudFormation(properties.csv),
- Json: cdk.objectToCloudFormation(properties.json),
+ Json: cfnModelBiasJobDefinitionJsonPropertyToCloudFormation(properties.json),
Parquet: cdk.booleanToCloudFormation(properties.parquet),
};
}
@@ -11528,7 +11528,7 @@ function CfnModelBiasJobDefinitionDatasetFormatPropertyFromCloudFormation(proper
}
const ret = new cfn_parse.FromCloudFormationPropertyObject<CfnModelBiasJobDefinition.DatasetFormatProperty>();
ret.addPropertyResult('csv', 'Csv', properties.Csv != null ? CfnModelBiasJobDefinitionCsvPropertyFromCloudFormation(properties.Csv) : undefined);
- ret.addPropertyResult('json', 'Json', properties.Json != null ? cfn_parse.FromCloudFormation.getAny(properties.Json) : undefined);
+ ret.addPropertyResult('json', 'Json', properties.Json != null ? CfnModelBiasJobDefinitionJsonPropertyFromCloudFormation(properties.Json) : undefined);
ret.addPropertyResult('parquet', 'Parquet', properties.Parquet != null ? cfn_parse.FromCloudFormation.getBoolean(properties.Parquet) : undefined);
ret.addUnrecognizedPropertiesAsExtra(properties);
return ret;
@@ -15402,7 +15402,7 @@ export namespace CfnModelExplainabilityJobDefinition {
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-modelexplainabilityjobdefinition-datasetformat.html#cfn-sagemaker-modelexplainabilityjobdefinition-datasetformat-json
*/
- readonly json?: any | cdk.IResolvable;
+ readonly json?: CfnModelExplainabilityJobDefinition.JsonProperty | cdk.IResolvable;
/**
* `CfnModelExplainabilityJobDefinition.DatasetFormatProperty.Parquet`
*
@@ -15426,7 +15426,7 @@ function CfnModelExplainabilityJobDefinition_DatasetFormatPropertyValidator(prop
errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties)));
}
errors.collect(cdk.propertyValidator('csv', CfnModelExplainabilityJobDefinition_CsvPropertyValidator)(properties.csv));
- errors.collect(cdk.propertyValidator('json', cdk.validateObject)(properties.json));
+ errors.collect(cdk.propertyValidator('json', CfnModelExplainabilityJobDefinition_JsonPropertyValidator)(properties.json));
errors.collect(cdk.propertyValidator('parquet', cdk.validateBoolean)(properties.parquet));
return errors.wrap('supplied properties not correct for "DatasetFormatProperty"');
}
@@ -15444,7 +15444,7 @@ function cfnModelExplainabilityJobDefinitionDatasetFormatPropertyToCloudFormatio
CfnModelExplainabilityJobDefinition_DatasetFormatPropertyValidator(properties).assertSuccess();
return {
Csv: cfnModelExplainabilityJobDefinitionCsvPropertyToCloudFormation(properties.csv),
- Json: cdk.objectToCloudFormation(properties.json),
+ Json: cfnModelExplainabilityJobDefinitionJsonPropertyToCloudFormation(properties.json),
Parquet: cdk.booleanToCloudFormation(properties.parquet),
};
}
@@ -15460,7 +15460,7 @@ function CfnModelExplainabilityJobDefinitionDatasetFormatPropertyFromCloudFormat
}
const ret = new cfn_parse.FromCloudFormationPropertyObject<CfnModelExplainabilityJobDefinition.DatasetFormatProperty>();
ret.addPropertyResult('csv', 'Csv', properties.Csv != null ? CfnModelExplainabilityJobDefinitionCsvPropertyFromCloudFormation(properties.Csv) : undefined);
- ret.addPropertyResult('json', 'Json', properties.Json != null ? cfn_parse.FromCloudFormation.getAny(properties.Json) : undefined);
+ ret.addPropertyResult('json', 'Json', properties.Json != null ? CfnModelExplainabilityJobDefinitionJsonPropertyFromCloudFormation(properties.Json) : undefined);
ret.addPropertyResult('parquet', 'Parquet', properties.Parquet != null ? cfn_parse.FromCloudFormation.getBoolean(properties.Parquet) : undefined);
ret.addUnrecognizedPropertiesAsExtra(properties);
return ret;
@@ -20808,7 +20808,7 @@ export namespace CfnModelQualityJobDefinition {
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-modelqualityjobdefinition-datasetformat.html#cfn-sagemaker-modelqualityjobdefinition-datasetformat-json
*/
- readonly json?: any | cdk.IResolvable;
+ readonly json?: CfnModelQualityJobDefinition.JsonProperty | cdk.IResolvable;
/**
* `CfnModelQualityJobDefinition.DatasetFormatProperty.Parquet`
*
@@ -20832,7 +20832,7 @@ function CfnModelQualityJobDefinition_DatasetFormatPropertyValidator(properties:
errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties)));
}
errors.collect(cdk.propertyValidator('csv', CfnModelQualityJobDefinition_CsvPropertyValidator)(properties.csv));
- errors.collect(cdk.propertyValidator('json', cdk.validateObject)(properties.json));
+ errors.collect(cdk.propertyValidator('json', CfnModelQualityJobDefinition_JsonPropertyValidator)(properties.json));
errors.collect(cdk.propertyValidator('parquet', cdk.validateBoolean)(properties.parquet));
return errors.wrap('supplied properties not correct for "DatasetFormatProperty"');
}
@@ -20850,7 +20850,7 @@ function cfnModelQualityJobDefinitionDatasetFormatPropertyToCloudFormation(prope
CfnModelQualityJobDefinition_DatasetFormatPropertyValidator(properties).assertSuccess();
return {
Csv: cfnModelQualityJobDefinitionCsvPropertyToCloudFormation(properties.csv),
- Json: cdk.objectToCloudFormation(properties.json),
+ Json: cfnModelQualityJobDefinitionJsonPropertyToCloudFormation(properties.json),
Parquet: cdk.booleanToCloudFormation(properties.parquet),
};
}
@@ -20866,7 +20866,7 @@ function CfnModelQualityJobDefinitionDatasetFormatPropertyFromCloudFormation(pro
}
const ret = new cfn_parse.FromCloudFormationPropertyObject<CfnModelQualityJobDefinition.DatasetFormatProperty>();
ret.addPropertyResult('csv', 'Csv', properties.Csv != null ? CfnModelQualityJobDefinitionCsvPropertyFromCloudFormation(properties.Csv) : undefined);
- ret.addPropertyResult('json', 'Json', properties.Json != null ? cfn_parse.FromCloudFormation.getAny(properties.Json) : undefined);
+ ret.addPropertyResult('json', 'Json', properties.Json != null ? CfnModelQualityJobDefinitionJsonPropertyFromCloudFormation(properties.Json) : undefined);
ret.addPropertyResult('parquet', 'Parquet', properties.Parquet != null ? cfn_parse.FromCloudFormation.getBoolean(properties.Parquet) : undefined);
ret.addUnrecognizedPropertiesAsExtra(properties);
return ret;
@@ -22693,7 +22693,7 @@ export namespace CfnMonitoringSchedule {
*
* @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-monitoringschedule-datasetformat.html#cfn-sagemaker-monitoringschedule-datasetformat-json
*/
- readonly json?: any | cdk.IResolvable;
+ readonly json?: CfnMonitoringSchedule.JsonProperty | cdk.IResolvable;
/**
* `CfnMonitoringSchedule.DatasetFormatProperty.Parquet`
*
@@ -22717,7 +22717,7 @@ function CfnMonitoringSchedule_DatasetFormatPropertyValidator(properties: any):
errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties)));
}
errors.collect(cdk.propertyValidator('csv', CfnMonitoringSchedule_CsvPropertyValidator)(properties.csv));
- errors.collect(cdk.propertyValidator('json', cdk.validateObject)(properties.json));
+ errors.collect(cdk.propertyValidator('json', CfnMonitoringSchedule_JsonPropertyValidator)(properties.json));
errors.collect(cdk.propertyValidator('parquet', cdk.validateBoolean)(properties.parquet));
return errors.wrap('supplied properties not correct for "DatasetFormatProperty"');
}
@@ -22735,7 +22735,7 @@ function cfnMonitoringScheduleDatasetFormatPropertyToCloudFormation(properties:
CfnMonitoringSchedule_DatasetFormatPropertyValidator(properties).assertSuccess();
return {
Csv: cfnMonitoringScheduleCsvPropertyToCloudFormation(properties.csv),
- Json: cdk.objectToCloudFormation(properties.json),
+ Json: cfnMonitoringScheduleJsonPropertyToCloudFormation(properties.json),
Parquet: cdk.booleanToCloudFormation(properties.parquet),
};
}
@@ -22751,7 +22751,7 @@ function CfnMonitoringScheduleDatasetFormatPropertyFromCloudFormation(properties
}
const ret = new cfn_parse.FromCloudFormationPropertyObject<CfnMonitoringSchedule.DatasetFormatProperty>();
ret.addPropertyResult('csv', 'Csv', properties.Csv != null ? CfnMonitoringScheduleCsvPropertyFromCloudFormation(properties.Csv) : undefined);
- ret.addPropertyResult('json', 'Json', properties.Json != null ? cfn_parse.FromCloudFormation.getAny(properties.Json) : undefined);
+ ret.addPropertyResult('json', 'Json', properties.Json != null ? CfnMonitoringScheduleJsonPropertyFromCloudFormation(properties.Json) : undefined);
ret.addPropertyResult('parquet', 'Parquet', properties.Parquet != null ? cfn_parse.FromCloudFormation.getBoolean(properties.Parquet) : undefined);
ret.addUnrecognizedPropertiesAsExtra(properties);
return ret;
```
Closes #22732
----
*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*1 parent 1f4c4fa commit b76c182
2 files changed
Lines changed: 36 additions & 12 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
282 | 282 | | |
283 | 283 | | |
284 | 284 | | |
285 | | - | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
286 | 291 | | |
287 | | - | |
| 292 | + | |
288 | 293 | | |
289 | 294 | | |
290 | | - | |
291 | | - | |
| 295 | + | |
| 296 | + | |
292 | 297 | | |
293 | 298 | | |
294 | 299 | | |
| |||
301 | 306 | | |
302 | 307 | | |
303 | 308 | | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
304 | 312 | | |
305 | | - | |
306 | | - | |
| 313 | + | |
| 314 | + | |
307 | 315 | | |
308 | 316 | | |
309 | 317 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
74 | | - | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
75 | 80 | | |
76 | | - | |
77 | | - | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
78 | 86 | | |
79 | 87 | | |
80 | 88 | | |
| |||
98 | 106 | | |
99 | 107 | | |
100 | 108 | | |
101 | | - | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
102 | 115 | | |
103 | | - | |
104 | | - | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
105 | 121 | | |
106 | 122 | | |
107 | 123 | | |
| |||
0 commit comments