Skip to content

Commit b98c59a

Browse files
authored
Remove reference to non-existent types from CLIENT_TYPES_MAP values (#317)
1 parent 2f3a713 commit b98c59a

File tree

5 files changed

+88
-41
lines changed

5 files changed

+88
-41
lines changed

scripts/generateClientTypesMap/getClientTypeMap.ts renamed to scripts/generateClientTypesMap/getClientTypesMap.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,16 @@ import { readFile } from "fs/promises";
22
import jscodeshift, { Identifier, TSArrayType, TSTypeLiteral, TSTypeReference } from "jscodeshift";
33
import { join } from "path";
44

5+
import { getClientTypesMapWithKeysRemovedFromValues } from "./getClientTypesMapWithKeysRemovedFromValues";
6+
57
const TYPES_TO_SKIP = ["apiVersion", "ClientConfiguration"];
68
const ElementTypeToNativeTypeMap = {
79
TSStringKeyword: "string",
810
TSNumberKeyword: "number",
911
TSBooleanKeyword: "boolean",
1012
};
1113

12-
export const getClientTypeMap = async (clientName: string): Promise<Record<string, string>> => {
14+
export const getClientTypesMap = async (clientName: string): Promise<Record<string, string>> => {
1315
const clientTypesMap = {};
1416

1517
const typesPath = join("node_modules", "aws-sdk", "clients", `${clientName.toLowerCase()}.d.ts`);
@@ -121,7 +123,9 @@ export const getClientTypeMap = async (clientName: string): Promise<Record<strin
121123
});
122124
});
123125

124-
return Object.entries(clientTypesMap)
126+
const updatedClientTypesMap = getClientTypesMapWithKeysRemovedFromValues(clientTypesMap);
127+
128+
return Object.entries(updatedClientTypesMap)
125129
.sort(([key1], [key2]) => key1.localeCompare(key2))
126130
.reduce((obj, [key, value]) => {
127131
obj[key] = value;
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { hasReferenceToKeysInValues } from "./hasReferenceToKeysInValues";
2+
3+
/**
4+
* Checks if any of the values have reference to key, and replaces them recursively.
5+
*/
6+
export const getClientTypesMapWithKeysRemovedFromValues = (
7+
clientTypesMap: Record<string, string>
8+
) => {
9+
if (!hasReferenceToKeysInValues(clientTypesMap)) {
10+
return clientTypesMap;
11+
}
12+
13+
const newClientTypeMap = {};
14+
const keys = Object.keys(clientTypesMap);
15+
16+
for (const [key, value] of Object.entries(clientTypesMap)) {
17+
const refs = keys.filter((key) => value.includes(`<${key}>`));
18+
if (refs.length === 0) {
19+
newClientTypeMap[key] = value;
20+
} else {
21+
newClientTypeMap[key] = refs.reduce(
22+
(acc, ref) => acc.replace(`<${ref}>`, `<${clientTypesMap[ref]}>`),
23+
value
24+
);
25+
}
26+
}
27+
28+
return getClientTypesMapWithKeysRemovedFromValues(newClientTypeMap);
29+
};
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/**
2+
* Checks if any of the values in the clientTypesMap has a reference to any of the keys.
3+
* Reference is defined as key name inside brackets, i.e. `<key>` for `key`.
4+
*/
5+
export const hasReferenceToKeysInValues = (clientTypesMap: Record<string, string>) => {
6+
const keys = Object.keys(clientTypesMap);
7+
for (const value of Object.values(clientTypesMap)) {
8+
if (keys.some((key) => value.includes(`<${key}>`))) {
9+
return true;
10+
}
11+
}
12+
return false;
13+
};

scripts/generateClientTypesMap/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { join } from "path";
33
import { format } from "prettier";
44

55
import { CLIENT_NAMES } from "../../src/transforms/v2-to-v3/config";
6-
import { getClientTypeMap } from "./getClientTypeMap";
6+
import { getClientTypesMap } from "./getClientTypesMap";
77

88
const codegenComment = `// This file is generated by scripts/generateClientTypesMap/index.ts
99
// Do not edit this file directly. Instead, edit the script and run it to regenerate this file.`;
@@ -20,7 +20,7 @@ const relativeFilePath = join(__dirname, "..", "..", filePath);
2020
const clientTypesMap = {};
2121

2222
for (const clientName of CLIENT_NAMES) {
23-
clientTypesMap[clientName] = await getClientTypeMap(clientName);
23+
clientTypesMap[clientName] = await getClientTypesMap(clientName);
2424
}
2525

2626
fileContent += JSON.stringify(clientTypesMap);

src/transforms/v2-to-v3/config/CLIENT_TYPES_MAP.ts

Lines changed: 38 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3020,8 +3020,8 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
30203020
Queries: "Array<Query>",
30213021
QueryResultColumn: "Record<string, string>",
30223022
QueryResultKey: "string",
3023-
QueryResultRow: "Array<QueryResultColumn>",
3024-
QueryResultRows: "Array<Array<QueryResultColumn>>",
3023+
QueryResultRow: "Array<Record<string, string>>",
3024+
QueryResultRows: "Array<Array<Record<string, string>>>",
30253025
QueryResultValue: "string",
30263026
QueryStatement: "string",
30273027
ResourceIdList: "Array<string>",
@@ -3365,7 +3365,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
33653365
QueryId: "string",
33663366
QueryInfoList: "Array<QueryInfo>",
33673367
QueryListMaxResults: "number",
3368-
QueryResults: "Array<ResultRows>",
3368+
QueryResults: "Array<Array<ResultField>>",
33693369
QueryString: "string",
33703370
ResourcePolicies: "Array<ResourcePolicy>",
33713371
ResultRows: "Array<ResultField>",
@@ -3775,7 +3775,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
37753775
MinimumHealthyHostsValue: "number",
37763776
NextToken: "string",
37773777
NullableBoolean: "boolean",
3778-
OnPremisesTagSetList: "Array<TagFilterList>",
3778+
OnPremisesTagSetList: "Array<Array<TagFilter>>",
37793779
Percentage: "number",
37803780
RawStringContent: "string",
37813781
RawStringSha256: "string",
@@ -6343,15 +6343,15 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
63436343
Configuration: "Record<string, string>",
63446344
ConfigurationId: "string",
63456345
ConfigurationIdList: "Array<string>",
6346-
Configurations: "Array<Configuration>",
6346+
Configurations: "Array<Record<string, string>>",
63476347
ConfigurationsDownloadUrl: "string",
63486348
ConfigurationsExportId: "string",
63496349
ConfigurationTagSet: "Array<ConfigurationTag>",
63506350
ContinuousExportDescriptions: "Array<ContinuousExportDescription>",
63516351
ContinuousExportIds: "Array<string>",
63526352
DatabaseName: "string",
63536353
DescribeConfigurationsAttribute: "Record<string, string>",
6354-
DescribeConfigurationsAttributes: "Array<DescribeConfigurationsAttribute>",
6354+
DescribeConfigurationsAttributes: "Array<Record<string, string>>",
63556355
DescribeContinuousExportsMaxResults: "number",
63566356
DescribeImportTasksFilterList: "Array<ImportTaskFilter>",
63576357
DescribeImportTasksMaxResults: "number",
@@ -6541,7 +6541,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
65416541
BackupSizeBytes: "number",
65426542
BackupSummaries: "Array<BackupSummary>",
65436543
BatchGetRequestMap: "Record<string, KeysAndAttributes>",
6544-
BatchGetResponseMap: "Record<string, Array<AttributeMap>>",
6544+
BatchGetResponseMap: "Record<string, Array<Record<string, AttributeValue>>>",
65456545
BatchWriteItemRequestMap: "Record<string, Array<WriteRequest>>",
65466546
BilledSizeBytes: "number",
65476547
BinarySetAttributeValue: "Array<BinaryAttributeValue>",
@@ -6604,12 +6604,12 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
66046604
ItemCollectionSizeEstimateBound: "number",
66056605
ItemCollectionSizeEstimateRange: "Array<number>",
66066606
ItemCount: "number",
6607-
ItemList: "Array<AttributeMap>",
6607+
ItemList: "Array<Record<string, AttributeValue>>",
66086608
ItemResponseList: "Array<ItemResponse>",
66096609
Key: "Record<string, AttributeValue>",
66106610
KeyConditions: "Record<string, Condition>",
66116611
KeyExpression: "string",
6612-
KeyList: "Array<Key>",
6612+
KeyList: "Array<Record<string, AttributeValue>>",
66136613
KeySchema: "Array<KeySchemaElement>",
66146614
KeySchemaAttributeName: "string",
66156615
KinesisDataStreamDestinations: "Array<KinesisDataStreamDestination>",
@@ -10256,7 +10256,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
1025610256
KmsKeyArn: "string",
1025710257
LabelCount: "number",
1025810258
LatestSchemaVersionBoolean: "boolean",
10259-
LimitedPathList: "Array<LimitedStringList>",
10259+
LimitedPathList: "Array<Array<string>>",
1026010260
LimitedStringList: "Array<string>",
1026110261
LocationMap: "Record<string, string>",
1026210262
LocationString: "string",
@@ -10769,7 +10769,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
1076910769
regionList: "Array<string>",
1077010770
service: "string",
1077110771
serviceList: "Array<string>",
10772-
tagFilter: "Array<tagSet>",
10772+
tagFilter: "Array<Record<string, string>>",
1077310773
tagKey: "string",
1077410774
tagSet: "Record<string, string>",
1077510775
tagValue: "string",
@@ -12046,8 +12046,8 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
1204612046
SyncResourceFilters: "Array<SyncResourceFilter>",
1204712047
SyncResourceSummaries: "Array<SyncResourceSummary>",
1204812048
SyncSource: "string",
12049-
TabularPropertyValue: "Array<PropertyTableValue>",
12050-
TabularPropertyValues: "Array<Array<PropertyTableValue>>",
12049+
TabularPropertyValue: "Array<Record<string, DataValue>>",
12050+
TabularPropertyValues: "Array<Array<Record<string, DataValue>>>",
1205112051
TagKey: "string",
1205212052
TagKeyList: "Array<string>",
1205312053
TagMap: "Record<string, string>",
@@ -12152,7 +12152,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
1215212152
IPAddress: "string",
1215312153
ISODateTimeString: "string",
1215412154
JoinEui: "string",
12155-
JoinEuiFilters: "Array<JoinEuiRange>",
12155+
JoinEuiFilters: "Array<Array<string>>",
1215612156
JoinEuiRange: "Array<string>",
1215712157
LAC: "number",
1215812158
LoRaWANGatewayMetadataList: "Array<LoRaWANGatewayMetadata>",
@@ -14205,7 +14205,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
1420514205
ContainerServiceList: "Array<ContainerService>",
1420614206
ContainerServiceLogEventList: "Array<ContainerServiceLogEvent>",
1420714207
ContainerServiceMetadataEntry: "Record<string, string>",
14208-
ContainerServiceMetadataEntryList: "Array<ContainerServiceMetadataEntry>",
14208+
ContainerServiceMetadataEntryList: "Array<Record<string, string>>",
1420914209
ContainerServiceName: "string",
1421014210
ContainerServicePowerList: "Array<ContainerServicePower>",
1421114211
ContainerServicePublicDomains: "Record<string, Array<string>>",
@@ -14319,13 +14319,13 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
1431914319
BatchUpdateDevicePositionRequestUpdatesList: "Array<DevicePositionUpdate>",
1432014320
Boolean: "boolean",
1432114321
BoundingBox: "Array<number>",
14322-
CalculateRouteMatrixRequestDeparturePositionsList: "Array<Position>",
14323-
CalculateRouteMatrixRequestDestinationPositionsList: "Array<Position>",
14324-
CalculateRouteMatrixResponseSnappedDeparturePositionsList: "Array<Position>",
14325-
CalculateRouteMatrixResponseSnappedDestinationPositionsList: "Array<Position>",
14322+
CalculateRouteMatrixRequestDeparturePositionsList: "Array<Array<number>>",
14323+
CalculateRouteMatrixRequestDestinationPositionsList: "Array<Array<number>>",
14324+
CalculateRouteMatrixResponseSnappedDeparturePositionsList: "Array<Array<number>>",
14325+
CalculateRouteMatrixResponseSnappedDestinationPositionsList: "Array<Array<number>>",
1432614326
CalculateRouteMatrixSummaryErrorCountInteger: "number",
1432714327
CalculateRouteMatrixSummaryRouteCountInteger: "number",
14328-
CalculateRouteRequestWaypointPositionsList: "Array<Position>",
14328+
CalculateRouteRequestWaypointPositionsList: "Array<Array<number>>",
1432914329
CalculateRouteSummaryDistanceDouble: "number",
1433014330
CalculateRouteSummaryDurationSecondsDouble: "number",
1433114331
CountryCode: "string",
@@ -14346,9 +14346,9 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
1434614346
LegDistanceDouble: "number",
1434714347
LegDurationSecondsDouble: "number",
1434814348
LegList: "Array<Leg>",
14349-
LinearRing: "Array<Position>",
14350-
LinearRings: "Array<Array<Position>>",
14351-
LineString: "Array<Position>",
14349+
LinearRing: "Array<Array<number>>",
14350+
LinearRings: "Array<Array<Array<number>>>",
14351+
LineString: "Array<Array<number>>",
1435214352
ListDevicePositionsRequestMaxResultsInteger: "number",
1435314353
ListDevicePositionsResponseEntryList: "Array<ListDevicePositionsResponseEntry>",
1435414354
ListGeofenceCollectionsRequestMaxResultsInteger: "number",
@@ -14374,7 +14374,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
1437414374
PropertyMapValueString: "string",
1437514375
ResourceDescription: "string",
1437614376
ResourceName: "string",
14377-
RouteMatrix: "Array<RouteMatrixRow>",
14377+
RouteMatrix: "Array<Array<RouteMatrixEntry>>",
1437814378
RouteMatrixEntryDistanceDouble: "number",
1437914379
RouteMatrixEntryDurationSecondsDouble: "number",
1438014380
RouteMatrixRow: "Array<RouteMatrixEntry>",
@@ -16414,7 +16414,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
1641416414
TaskName: "string",
1641516415
TaskStatusMessage: "string",
1641616416
TaskTimestamp: "Date",
16417-
TsvStoreOptionsSchemaList: "Array<SchemaItem>",
16417+
TsvStoreOptionsSchemaList: "Array<Record<string, SchemaValueType>>",
1641816418
UpdateRunGroupRequestMaxCpusInteger: "number",
1641916419
UpdateRunGroupRequestMaxDurationInteger: "number",
1642016420
UpdateRunGroupRequestMaxRunsInteger: "number",
@@ -18102,7 +18102,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
1810218102
Records: "Array<Record>",
1810318103
RecordsUpdated: "number",
1810418104
Row: "Array<Value>",
18105-
SqlParameterSets: "Array<SqlParametersList>",
18105+
SqlParameterSets: "Array<Array<SqlParameter>>",
1810618106
SqlParametersList: "Array<SqlParameter>",
1810718107
SqlRecords: "Array<Array<Field>>",
1810818108
SqlStatement: "string",
@@ -20071,7 +20071,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
2007120071
InventoryItemContentContext: "Record<string, string>",
2007220072
InventoryItemContentHash: "string",
2007320073
InventoryItemEntry: "Record<string, string>",
20074-
InventoryItemEntryList: "Array<InventoryItemEntry>",
20074+
InventoryItemEntryList: "Array<Record<string, string>>",
2007520075
InventoryItemList: "Array<InventoryItem>",
2007620076
InventoryItemSchemaResultList: "Array<InventoryItemSchema>",
2007720077
InventoryItemSchemaVersion: "string",
@@ -20133,7 +20133,8 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
2013320133
MaintenanceWindowTaskParameterName: "string",
2013420134
MaintenanceWindowTaskParameters:
2013520135
"Record<string, MaintenanceWindowTaskParameterValueExpression>",
20136-
MaintenanceWindowTaskParametersList: "Array<MaintenanceWindowTaskParameters>",
20136+
MaintenanceWindowTaskParametersList:
20137+
"Array<Record<string, MaintenanceWindowTaskParameterValueExpression>>",
2013720138
MaintenanceWindowTaskParameterValue: "string",
2013820139
MaintenanceWindowTaskParameterValueList: "Array<string>",
2013920140
MaintenanceWindowTaskPriority: "number",
@@ -20163,7 +20164,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
2016320164
OpsEntityId: "string",
2016420165
OpsEntityItemCaptureTime: "string",
2016520166
OpsEntityItemEntry: "Record<string, string>",
20166-
OpsEntityItemEntryList: "Array<OpsEntityItemEntry>",
20167+
OpsEntityItemEntryList: "Array<Record<string, string>>",
2016720168
OpsEntityItemKey: "string",
2016820169
OpsEntityItemMap: "Record<string, OpsEntityItem>",
2016920170
OpsEntityList: "Array<OpsEntity>",
@@ -20284,7 +20285,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
2028420285
PatchOtherNonCompliantCount: "number",
2028520286
PatchProduct: "string",
2028620287
PatchProductFamily: "string",
20287-
PatchPropertiesList: "Array<PatchPropertyEntry>",
20288+
PatchPropertiesList: "Array<Record<string, string>>",
2028820289
PatchPropertyEntry: "Record<string, string>",
2028920290
PatchRelease: "string",
2029020291
PatchRepository: "string",
@@ -20401,7 +20402,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
2040120402
TargetLocations: "Array<TargetLocation>",
2040220403
TargetMap: "Record<string, Array<string>>",
2040320404
TargetMapKey: "string",
20404-
TargetMaps: "Array<TargetMap>",
20405+
TargetMaps: "Array<Record<string, Array<string>>>",
2040520406
TargetMapValue: "string",
2040620407
TargetMapValueList: "Array<string>",
2040720408
TargetParameterList: "Array<string>",
@@ -21423,9 +21424,9 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
2142321424
ImageSourceBandList: "Array<string>",
2142421425
Integer: "number",
2142521426
ItemSourceList: "Array<ItemSource>",
21426-
LinearRing: "Array<Position>",
21427-
LinearRings: "Array<Array<Position>>",
21428-
LinearRingsList: "Array<Array<Array<Position>>>",
21427+
LinearRing: "Array<Array<number>>",
21428+
LinearRings: "Array<Array<Array<number>>>",
21429+
LinearRingsList: "Array<Array<Array<Array<number>>>>",
2142921430
ListEarthObservationJobInputMaxResultsInteger: "number",
2143021431
ListRasterDataCollectionsInputMaxResultsInteger: "number",
2143121432
ListVectorEnrichmentJobInputMaxResultsInteger: "number",
@@ -21598,7 +21599,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
2159821599
TagList: "Array<Tag>",
2159921600
TagMap: "Record<string, string>",
2160021601
TagResourceArn: "string",
21601-
Tags: "Array<TagMap>",
21602+
Tags: "Array<Record<string, string>>",
2160221603
TagValue: "string",
2160321604
TargetArn: "string",
2160421605
TargetInput: "string",
@@ -22012,7 +22013,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
2201222013
LogsStatusList: "Array<LogsStatus>",
2201322014
Long: "number",
2201422015
RegionSet: "Array<Region>",
22015-
RegionSourceTypesAccountsList: "Array<AllDimensionsMap>",
22016+
RegionSourceTypesAccountsList: "Array<Record<string, TwoDimensionsMap>>",
2201622017
RetentionSettingList: "Array<RetentionSetting>",
2201722018
RetentionSettingRetentionPeriodInteger: "number",
2201822019
RoleArn: "string",
@@ -22208,7 +22209,7 @@ export const CLIENT_TYPES_MAP: Record<string, Record<string, string>> = {
2220822209
ServiceActionSummaries: "Array<ServiceActionSummary>",
2220922210
ShareErrors: "Array<ShareError>",
2221022211
SortField: "string",
22211-
SourceProvisioningArtifactProperties: "Array<SourceProvisioningArtifactPropertiesMap>",
22212+
SourceProvisioningArtifactProperties: "Array<Record<string, string>>",
2221222213
SourceProvisioningArtifactPropertiesMap: "Record<string, string>",
2221322214
SourceRevision: "string",
2221422215
StackInstances: "Array<StackInstance>",

0 commit comments

Comments
 (0)