cdk-import 0.0.33 → 0.1.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.
package/.gitattributes CHANGED
@@ -8,7 +8,7 @@
8
8
  /.github/workflows/build.yml linguist-generated
9
9
  /.github/workflows/release.yml linguist-generated
10
10
  /.github/workflows/stale.yml linguist-generated
11
- /.github/workflows/upgrade.yml linguist-generated
11
+ /.github/workflows/upgrade-main.yml linguist-generated
12
12
  /.gitignore linguist-generated
13
13
  /.mergify.yml linguist-generated
14
14
  /.npmignore linguist-generated
package/README.md CHANGED
@@ -1,545 +1,144 @@
1
1
  # cdk-import
2
2
 
3
- > Generates CDK L1 constructs for public CloudFormation Registry types and modules.
4
-
5
- NOTE: This is part of the implementation of [RFC](https://github.com/aws/aws-cdk-rfcs/pull/356)
3
+ > Generates CDK L1 constructs for public CloudFormation Registry types and
4
+ > modules.
6
5
 
7
6
  ## Installation
8
7
 
9
8
  ```shell
10
- $ npm install -g cdk-import
9
+ npm install -g cdk-import
11
10
  ```
12
11
 
13
12
  ## Usage
14
13
 
15
14
  ```shell
16
- $ cdk-import --help
17
- Usage: cdk-import RESOURCE-NAME[@VERSION]
15
+ Usage:
16
+ cdk-import -l LANGUAGE RESOURCE-NAME[@VERSION]
18
17
 
19
18
  Options:
20
- -o, --outdir Output directory [string] [default: "."]
21
- -h, --help Show this usage info [boolean] [default: false]
19
+ -l, --language Output programming language [string]
20
+ -o, --outdir Output directory [string] [default: "."]
21
+ --go-module Module name (required if language is "golang") [string]
22
+ --java-package Java package name (required if language is "java") [string]
23
+ -h, --help Show this usage info [boolean]
24
+ ```
25
+
26
+ The `--language` option specifies the output programming language. Supported
27
+ languages: `typescript`, `java`, `python`, `csharp` and `golang`.
28
+
29
+ Output will be generated relative to `--outdir` which defaults to the current
30
+ working directory.
31
+
32
+ The following section describes language-specific behavior.
33
+
34
+ ### Java
35
+
36
+ The `--java-package` option is required and should include the Java package name
37
+ to use for generated classes. Normally, this will be a sub-package of your
38
+ project's package.
22
39
 
23
- Examples:
24
- cdk-import AWSQS::EKS::Cluster Generates an L1 construct for the latest version of this resource under awsqs-eks-cluster.ts
25
- cdk-import AWSQS::EKS::Cluster@1.2.0 Generates an L1 construct for a specific version
40
+ Java source files are generates in Maven-compatible structure under
41
+ `$outdir/src/main/java/PACKAGE/` where `PACKAGE` is based on `--java-package`.
42
+
43
+ For example:
44
+
45
+ ```shell
46
+ cdk-import -l java --java-package com.foo.bar.resources AWSQS::EKS::Cluster
26
47
  ```
27
48
 
28
- This command will query the AWS CloudFormation Registry and will generate L1 constructs for the specified resource. If a version
29
- is not specified, the latest version will be selected. Otherwise, the specific version will be used.
49
+ Will generate class source files under `src/main/java/com/foo/bar/resources`.
50
+ All the classes will be under the package `com.foo.bar.resources`.
51
+
52
+ ### Python
53
+
54
+ A Python submodule is generated under `$outdir/MODULE_NAME/` where `MODULE_NAME`
55
+ is based on the name of the resource (`AWSQS::EKS::Cluster` =>
56
+ `awsqs_eks_cluster`).
30
57
 
31
58
  For example:
32
59
 
33
60
  ```shell
34
- $ cdk-import AWSQS::EKS::Cluster
61
+ cdk-import -l python AWSQS::EKS::Cluster
35
62
  ```
36
63
 
37
- <details>
38
- <summary>awsqs-eks-cluster.ts</summary>
39
-
40
- ```ts
41
- import * as cdk from '@aws-cdk/core';
42
-
43
- /**
44
- * A resource that creates Amazon Elastic Kubernetes Service (Amazon EKS) clusters.
45
- *
46
- * @schema CfnClusterProps
47
- */
48
- export interface CfnClusterProps {
49
- /**
50
- * A unique name for your cluster.
51
- *
52
- * @schema CfnClusterProps#Name
53
- */
54
- readonly name?: string;
55
-
56
- /**
57
- * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs.
58
- *
59
- * @schema CfnClusterProps#RoleArn
60
- */
61
- readonly roleArn: string;
62
-
63
- /**
64
- * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC
65
- *
66
- * @schema CfnClusterProps#LambdaRoleName
67
- */
68
- readonly lambdaRoleName?: string;
69
-
70
- /**
71
- * Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS.
72
- *
73
- * @schema CfnClusterProps#Version
74
- */
75
- readonly version?: string;
76
-
77
- /**
78
- * Network configuration for Amazon EKS cluster.
79
- *
80
- *
81
- *
82
- * @schema CfnClusterProps#KubernetesNetworkConfig
83
- */
84
- readonly kubernetesNetworkConfig?: CfnClusterPropsKubernetesNetworkConfig;
85
-
86
- /**
87
- * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster.
88
- *
89
- * @schema CfnClusterProps#ResourcesVpcConfig
90
- */
91
- readonly resourcesVpcConfig: CfnClusterPropsResourcesVpcConfig;
92
-
93
- /**
94
- * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler.
95
- *
96
- * @schema CfnClusterProps#EnabledClusterLoggingTypes
97
- */
98
- readonly enabledClusterLoggingTypes?: string[];
99
-
100
- /**
101
- * Encryption configuration for the cluster.
102
- *
103
- * @schema CfnClusterProps#EncryptionConfig
104
- */
105
- readonly encryptionConfig?: EncryptionConfigEntry[];
106
-
107
- /**
108
- * @schema CfnClusterProps#KubernetesApiAccess
109
- */
110
- readonly kubernetesApiAccess?: CfnClusterPropsKubernetesApiAccess;
111
-
112
- /**
113
- * @schema CfnClusterProps#Tags
114
- */
115
- readonly tags?: CfnClusterPropsTags[];
116
-
117
- }
118
-
119
- /**
120
- * Converts an object of type 'CfnClusterProps' to JSON representation.
121
- */
122
- /* eslint-disable max-len, quote-props */
123
- export function toJson_CfnClusterProps(obj: CfnClusterProps | undefined): Record<string, any> | undefined {
124
- if (obj === undefined) { return undefined; }
125
- const result = {
126
- 'Name': obj.name,
127
- 'RoleArn': obj.roleArn,
128
- 'LambdaRoleName': obj.lambdaRoleName,
129
- 'Version': obj.version,
130
- 'KubernetesNetworkConfig': toJson_CfnClusterPropsKubernetesNetworkConfig(obj.kubernetesNetworkConfig),
131
- 'ResourcesVpcConfig': toJson_CfnClusterPropsResourcesVpcConfig(obj.resourcesVpcConfig),
132
- 'EnabledClusterLoggingTypes': obj.enabledClusterLoggingTypes?.map(y => y),
133
- 'EncryptionConfig': obj.encryptionConfig?.map(y => toJson_EncryptionConfigEntry(y)),
134
- 'KubernetesApiAccess': toJson_CfnClusterPropsKubernetesApiAccess(obj.kubernetesApiAccess),
135
- 'Tags': obj.tags?.map(y => toJson_CfnClusterPropsTags(y)),
136
- };
137
- // filter undefined values
138
- return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
139
- }
140
- /* eslint-enable max-len, quote-props */
141
-
142
- /**
143
- * Network configuration for Amazon EKS cluster.
144
- *
145
- *
146
- *
147
- * @schema CfnClusterPropsKubernetesNetworkConfig
148
- */
149
- export interface CfnClusterPropsKubernetesNetworkConfig {
150
- /**
151
- * Specify the range from which cluster services will receive IPv4 addresses.
152
- *
153
- * @schema CfnClusterPropsKubernetesNetworkConfig#ServiceIpv4Cidr
154
- */
155
- readonly serviceIpv4Cidr?: string;
156
-
157
- }
158
-
159
- /**
160
- * Converts an object of type 'CfnClusterPropsKubernetesNetworkConfig' to JSON representation.
161
- */
162
- /* eslint-disable max-len, quote-props */
163
- export function toJson_CfnClusterPropsKubernetesNetworkConfig(obj: CfnClusterPropsKubernetesNetworkConfig | undefined): Record<string, any> | undefined {
164
- if (obj === undefined) { return undefined; }
165
- const result = {
166
- 'ServiceIpv4Cidr': obj.serviceIpv4Cidr,
167
- };
168
- // filter undefined values
169
- return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
170
- }
171
- /* eslint-enable max-len, quote-props */
172
-
173
- /**
174
- * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster.
175
- *
176
- * @schema CfnClusterPropsResourcesVpcConfig
177
- */
178
- export interface CfnClusterPropsResourcesVpcConfig {
179
- /**
180
- * Specify one or more security groups for the cross-account elastic network interfaces that Amazon EKS creates to use to allow communication between your worker nodes and the Kubernetes control plane. If you don't specify a security group, the default security group for your VPC is used.
181
- *
182
- * @schema CfnClusterPropsResourcesVpcConfig#SecurityGroupIds
183
- */
184
- readonly securityGroupIds?: string[];
185
-
186
- /**
187
- * Specify subnets for your Amazon EKS worker nodes. Amazon EKS creates cross-account elastic network interfaces in these subnets to allow communication between your worker nodes and the Kubernetes control plane.
188
- *
189
- * @schema CfnClusterPropsResourcesVpcConfig#SubnetIds
190
- */
191
- readonly subnetIds: string[];
192
-
193
- /**
194
- * Set this value to false to disable public access to your cluster's Kubernetes API server endpoint. If you disable public access, your cluster's Kubernetes API server can only receive requests from within the cluster VPC. The default value for this parameter is true , which enables public access for your Kubernetes API server.
195
- *
196
- * @schema CfnClusterPropsResourcesVpcConfig#EndpointPublicAccess
197
- */
198
- readonly endpointPublicAccess?: boolean;
199
-
200
- /**
201
- * Set this value to true to enable private access for your cluster's Kubernetes API server endpoint. If you enable private access, Kubernetes API requests from within your cluster's VPC use the private VPC endpoint. The default value for this parameter is false , which disables private access for your Kubernetes API server. If you disable private access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes the necessary CIDR blocks for communication with the worker nodes or Fargate pods.
202
- *
203
- * @schema CfnClusterPropsResourcesVpcConfig#EndpointPrivateAccess
204
- */
205
- readonly endpointPrivateAccess?: boolean;
206
-
207
- /**
208
- * The CIDR blocks that are allowed access to your cluster's public Kubernetes API server endpoint. Communication to the endpoint from addresses outside of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0 . If you've disabled private endpoint access and you have worker nodes or AWS Fargate pods in the cluster, then ensure that you specify the necessary CIDR blocks.
209
- *
210
- * @schema CfnClusterPropsResourcesVpcConfig#PublicAccessCidrs
211
- */
212
- readonly publicAccessCidrs?: string[];
213
-
214
- }
215
-
216
- /**
217
- * Converts an object of type 'CfnClusterPropsResourcesVpcConfig' to JSON representation.
218
- */
219
- /* eslint-disable max-len, quote-props */
220
- export function toJson_CfnClusterPropsResourcesVpcConfig(obj: CfnClusterPropsResourcesVpcConfig | undefined): Record<string, any> | undefined {
221
- if (obj === undefined) { return undefined; }
222
- const result = {
223
- 'SecurityGroupIds': obj.securityGroupIds?.map(y => y),
224
- 'SubnetIds': obj.subnetIds?.map(y => y),
225
- 'EndpointPublicAccess': obj.endpointPublicAccess,
226
- 'EndpointPrivateAccess': obj.endpointPrivateAccess,
227
- 'PublicAccessCidrs': obj.publicAccessCidrs?.map(y => y),
228
- };
229
- // filter undefined values
230
- return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
231
- }
232
- /* eslint-enable max-len, quote-props */
233
-
234
- /**
235
- * The encryption configuration for the cluster.
236
- *
237
- * @schema EncryptionConfigEntry
238
- */
239
- export interface EncryptionConfigEntry {
240
- /**
241
- * Specifies the resources to be encrypted. The only supported value is \\"secrets\\".
242
- *
243
- * @schema EncryptionConfigEntry#Resources
244
- */
245
- readonly resources?: string[];
246
-
247
- /**
248
- * @schema EncryptionConfigEntry#Provider
249
- */
250
- readonly provider?: Provider;
251
-
252
- }
253
-
254
- /**
255
- * Converts an object of type 'EncryptionConfigEntry' to JSON representation.
256
- */
257
- /* eslint-disable max-len, quote-props */
258
- export function toJson_EncryptionConfigEntry(obj: EncryptionConfigEntry | undefined): Record<string, any> | undefined {
259
- if (obj === undefined) { return undefined; }
260
- const result = {
261
- 'Resources': obj.resources?.map(y => y),
262
- 'Provider': toJson_Provider(obj.provider),
263
- };
264
- // filter undefined values
265
- return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
266
- }
267
- /* eslint-enable max-len, quote-props */
268
-
269
- /**
270
- * @schema CfnClusterPropsKubernetesApiAccess
271
- */
272
- export interface CfnClusterPropsKubernetesApiAccess {
273
- /**
274
- * @schema CfnClusterPropsKubernetesApiAccess#Roles
275
- */
276
- readonly roles?: KubernetesApiAccessEntry[];
277
-
278
- /**
279
- * @schema CfnClusterPropsKubernetesApiAccess#Users
280
- */
281
- readonly users?: KubernetesApiAccessEntry[];
282
-
283
- }
284
-
285
- /**
286
- * Converts an object of type 'CfnClusterPropsKubernetesApiAccess' to JSON representation.
287
- */
288
- /* eslint-disable max-len, quote-props */
289
- export function toJson_CfnClusterPropsKubernetesApiAccess(obj: CfnClusterPropsKubernetesApiAccess | undefined): Record<string, any> | undefined {
290
- if (obj === undefined) { return undefined; }
291
- const result = {
292
- 'Roles': obj.roles?.map(y => toJson_KubernetesApiAccessEntry(y)),
293
- 'Users': obj.users?.map(y => toJson_KubernetesApiAccessEntry(y)),
294
- };
295
- // filter undefined values
296
- return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
297
- }
298
- /* eslint-enable max-len, quote-props */
299
-
300
- /**
301
- * @schema CfnClusterPropsTags
302
- */
303
- export interface CfnClusterPropsTags {
304
- /**
305
- * @schema CfnClusterPropsTags#Value
306
- */
307
- readonly value: string;
308
-
309
- /**
310
- * @schema CfnClusterPropsTags#Key
311
- */
312
- readonly key: string;
313
-
314
- }
315
-
316
- /**
317
- * Converts an object of type 'CfnClusterPropsTags' to JSON representation.
318
- */
319
- /* eslint-disable max-len, quote-props */
320
- export function toJson_CfnClusterPropsTags(obj: CfnClusterPropsTags | undefined): Record<string, any> | undefined {
321
- if (obj === undefined) { return undefined; }
322
- const result = {
323
- 'Value': obj.value,
324
- 'Key': obj.key,
325
- };
326
- // filter undefined values
327
- return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
328
- }
329
- /* eslint-enable max-len, quote-props */
330
-
331
- /**
332
- * AWS Key Management Service (AWS KMS) customer master key (CMK). Either the ARN or the alias can be used.
333
- *
334
- * @schema Provider
335
- */
336
- export interface Provider {
337
- /**
338
- * Amazon Resource Name (ARN) or alias of the customer master key (CMK). The CMK must be symmetric, created in the same region as the cluster, and if the CMK was created in a different account, the user must have access to the CMK.
339
- *
340
- * @schema Provider#KeyArn
341
- */
342
- readonly keyArn?: string;
343
-
344
- }
345
-
346
- /**
347
- * Converts an object of type 'Provider' to JSON representation.
348
- */
349
- /* eslint-disable max-len, quote-props */
350
- export function toJson_Provider(obj: Provider | undefined): Record<string, any> | undefined {
351
- if (obj === undefined) { return undefined; }
352
- const result = {
353
- 'KeyArn': obj.keyArn,
354
- };
355
- // filter undefined values
356
- return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
357
- }
358
- /* eslint-enable max-len, quote-props */
359
-
360
- /**
361
- * @schema KubernetesApiAccessEntry
362
- */
363
- export interface KubernetesApiAccessEntry {
364
- /**
365
- * @schema KubernetesApiAccessEntry#Arn
366
- */
367
- readonly arn?: string;
368
-
369
- /**
370
- * @schema KubernetesApiAccessEntry#Username
371
- */
372
- readonly username?: string;
373
-
374
- /**
375
- * @schema KubernetesApiAccessEntry#Groups
376
- */
377
- readonly groups?: string[];
378
-
379
- }
380
-
381
- /**
382
- * Converts an object of type 'KubernetesApiAccessEntry' to JSON representation.
383
- */
384
- /* eslint-disable max-len, quote-props */
385
- export function toJson_KubernetesApiAccessEntry(obj: KubernetesApiAccessEntry | undefined): Record<string, any> | undefined {
386
- if (obj === undefined) { return undefined; }
387
- const result = {
388
- 'Arn': obj.arn,
389
- 'Username': obj.username,
390
- 'Groups': obj.groups?.map(y => y),
391
- };
392
- // filter undefined values
393
- return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
394
- }
395
- /* eslint-enable max-len, quote-props */
396
-
397
-
398
- /**
399
- * A CloudFormation \`AWSQS::EKS::Cluster\`
400
- *
401
- * @cloudformationResource AWSQS::EKS::Cluster
402
- * @stability external
403
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
404
- */
405
- export class CfnCluster extends cdk.CfnResource {
406
- /**
407
- * The CloudFormation resource type name for this resource class.
408
- */
409
- public static readonly CFN_RESOURCE_TYPE_NAME = \\"AWSQS::EKS::Cluster\\";
410
-
411
- /**
412
- * \`AWSQS::EKS::Cluster.Name\`
413
- * A unique name for your cluster.
414
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
415
- */
416
- public readonly name: string | undefined;
417
- /**
418
- * \`AWSQS::EKS::Cluster.RoleArn\`
419
- * Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role. This provides permissions for Amazon EKS to call other AWS APIs.
420
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
421
- */
422
- public readonly roleArn: string;
423
- /**
424
- * \`AWSQS::EKS::Cluster.LambdaRoleName\`
425
- * Name of the AWS Identity and Access Management (IAM) role used for clusters that have the public endpoint disabled. this provides permissions for Lambda to be invoked and attach to the cluster VPC
426
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
427
- */
428
- public readonly lambdaRoleName: string | undefined;
429
- /**
430
- * \`AWSQS::EKS::Cluster.Version\`
431
- * Desired Kubernetes version for your cluster. If you don't specify this value, the cluster uses the latest version from Amazon EKS.
432
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
433
- */
434
- public readonly version: string | undefined;
435
- /**
436
- * \`AWSQS::EKS::Cluster.KubernetesNetworkConfig\`
437
- * Network configuration for Amazon EKS cluster.
438
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
439
- */
440
- public readonly kubernetesNetworkConfig: any | undefined;
441
- /**
442
- * \`AWSQS::EKS::Cluster.ResourcesVpcConfig\`
443
- * An object that represents the virtual private cloud (VPC) configuration to use for an Amazon EKS cluster.
444
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
445
- */
446
- public readonly resourcesVpcConfig: any;
447
- /**
448
- * \`AWSQS::EKS::Cluster.EnabledClusterLoggingTypes\`
449
- * Enables exporting of logs from the Kubernetes control plane to Amazon CloudWatch Logs. By default, logs from the cluster control plane are not exported to CloudWatch Logs. The valid log types are api, audit, authenticator, controllerManager, and scheduler.
450
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
451
- */
452
- public readonly enabledClusterLoggingTypes: string[] | undefined;
453
- /**
454
- * \`AWSQS::EKS::Cluster.EncryptionConfig\`
455
- * Encryption configuration for the cluster.
456
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
457
- */
458
- public readonly encryptionConfig: EncryptionConfigEntry[] | undefined;
459
- /**
460
- * \`AWSQS::EKS::Cluster.KubernetesApiAccess\`
461
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
462
- */
463
- public readonly kubernetesApiAccess: any | undefined;
464
- /**
465
- * \`AWSQS::EKS::Cluster.Tags\`
466
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
467
- */
468
- public readonly tags: any[] | undefined;
469
- /**
470
- * Attribute \`AWSQS::EKS::Cluster.Arn\`
471
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
472
- */
473
- public readonly attrArn: string;
474
- /**
475
- * Attribute \`AWSQS::EKS::Cluster.Endpoint\`
476
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
477
- */
478
- public readonly attrEndpoint: string;
479
- /**
480
- * Attribute \`AWSQS::EKS::Cluster.ClusterSecurityGroupId\`
481
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
482
- */
483
- public readonly attrClusterSecurityGroupId: string;
484
- /**
485
- * Attribute \`AWSQS::EKS::Cluster.CertificateAuthorityData\`
486
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
487
- */
488
- public readonly attrCertificateAuthorityData: string;
489
- /**
490
- * Attribute \`AWSQS::EKS::Cluster.EncryptionConfigKeyArn\`
491
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
492
- */
493
- public readonly attrEncryptionConfigKeyArn: string;
494
- /**
495
- * Attribute \`AWSQS::EKS::Cluster.OIDCIssuerURL\`
496
- * @link https://github.com/aws-quickstart/quickstart-amazon-eks-cluster-resource-provider.git
497
- */
498
- public readonly attrOidcIssuerUrl: string;
499
-
500
- /**
501
- * Create a new \`AWSQS::EKS::Cluster\`.
502
- *
503
- * @param scope - scope in which this resource is defined
504
- * @param id - scoped id of the resource
505
- * @param props - resource properties
506
- */
507
- constructor(scope: cdk.Construct, id: string, props: CfnClusterProps) {
508
- super(scope, id, { type: CfnCluster.CFN_RESOURCE_TYPE_NAME, properties: toJson_CfnClusterProps(props)! });
509
-
510
- this.name = props.name;
511
- this.roleArn = props.roleArn;
512
- this.lambdaRoleName = props.lambdaRoleName;
513
- this.version = props.version;
514
- this.kubernetesNetworkConfig = props.kubernetesNetworkConfig;
515
- this.resourcesVpcConfig = props.resourcesVpcConfig;
516
- this.enabledClusterLoggingTypes = props.enabledClusterLoggingTypes;
517
- this.encryptionConfig = props.encryptionConfig;
518
- this.kubernetesApiAccess = props.kubernetesApiAccess;
519
- this.tags = props.tags;
520
- this.attrArn = cdk.Token.asString(this.getAtt('Arn'));
521
- this.attrEndpoint = cdk.Token.asString(this.getAtt('Endpoint'));
522
- this.attrClusterSecurityGroupId = cdk.Token.asString(this.getAtt('ClusterSecurityGroupId'));
523
- this.attrCertificateAuthorityData = cdk.Token.asString(this.getAtt('CertificateAuthorityData'));
524
- this.attrEncryptionConfigKeyArn = cdk.Token.asString(this.getAtt('EncryptionConfigKeyArn'));
525
- this.attrOidcIssuerUrl = cdk.Token.asString(this.getAtt('OIDCIssuerURL'));
526
- }
527
- }
64
+ Will generate a subdirectory `awsqs_eks_cluster` with a Python module that can
65
+ be `import`ed.
66
+
67
+ ### CSharp
68
+
69
+ A `.csproj` is generated under `$outdir/RESOURCE/` where `RESOURCE` is the
70
+ resource name (`AWSQS::EKS::Cluster`).
71
+
72
+ For example:
73
+
74
+ ```shell
75
+ cdk-import -l csharp AWSQS::EKS::Cluster
528
76
  ```
529
77
 
530
- </details>
531
-
532
- Modules are also supported:
78
+ Will generate a directory `AWSQS::EKS::Cluster` with a `.csproj`. This can be
79
+ used in a .NET solution.
80
+
81
+ ### TypeScript
82
+
83
+ A TypeScript file will be generated under `$outdir/MODULE` where `MODULE` is
84
+ derived from the resource name.
85
+
86
+ For example:
87
+
88
+ ```shell
89
+ cdk-import -l typescript -o src AWSQS::EKS::Cluster
90
+ ```
91
+
92
+ Will generate a file `src/awsqs-eks-cluster.ts` (note the usage of `-o` above).
93
+
94
+ ### Go
95
+
96
+ If `-l golang` is used, the `--go-module` option is required and must reflect
97
+ the Go module name of the parent project module.
98
+
99
+ A Go submodule will be generated under `$outdir/PACKAGE` where `PACKAGE` is
100
+ derived from the resource name (`AWSQS::EKS::Cluster` => `awsqs-eks-cluster`).
101
+
102
+ For example:
103
+
104
+ ```shell
105
+ cdk-import -l golang --go-module "github.com/foo/bar" AWSQS::EKS::Cluster
106
+ ```
107
+
108
+ Will generate a Go module under: `awsqs-eks-cluster`.
109
+
110
+ ## Examples
111
+
112
+ Generates constructs for the latest version AWSQS::EKS::Cluster in TypeScript:
533
113
 
534
114
  ```shell
535
- $ cdk-import AWSQS::CheckPoint::CloudGuardQS::MODULE
536
- awsqs-checkpoint-cloudguardqs-module.ts
115
+ cdk-import -l typescript AWSQS::EKS::Cluster
537
116
  ```
538
117
 
539
- ## Roadmap
118
+ Generates construct in Go for a specific resource version:
540
119
 
541
- - [ ] Use `jsii-srcmak` to allow generating sources in multiple languages (first version only supports TypeScript).
542
- - [ ] Allow library usage
120
+ ```shell
121
+ cdk-import -l golang --go-module "github.com/account/repo" AWSQS::EKS::Cluster@1.2.0
122
+ ```
123
+
124
+ Generates construct in Python under the "src" subfolder instead of working
125
+ directory:
126
+
127
+ ```shell
128
+ cdk-import -l python -o src AWSQS::EKS::Cluster
129
+ ```
130
+
131
+ Generates construct in Java and identifies the resource type by its ARN:
132
+
133
+ ```shell
134
+ cdk-import -l java --java-package "com.acme.myproject" arn:aws:cloudformation:...
135
+ ```
136
+
137
+ Modules are also supported:
138
+
139
+ ```shell
140
+ cdk-import AWSQS::CheckPoint::CloudGuardQS::MODULE
141
+ ```
543
142
 
544
143
  ## Contributing
545
144
 
@@ -547,7 +146,8 @@ See [CONTRIBUTING](CONTRIBUTING.md)
547
146
 
548
147
  ## Security
549
148
 
550
- See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information.
149
+ See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more
150
+ information.
551
151
 
552
152
  ## License
553
153
 
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CfnResourceGenerator = void 0;
4
- const camelcase = require("camelcase");
4
+ const case_1 = require("case");
5
5
  const j2j = require("json2jsii");
6
6
  const util_1 = require("./util");
7
7
  /**
@@ -37,6 +37,7 @@ class CfnResourceGenerator {
37
37
  return code.render();
38
38
  }
39
39
  emitImports(code) {
40
+ code.line('// Generated by cdk-import');
40
41
  code.line("import * as cdk from '@aws-cdk/core';");
41
42
  code.line();
42
43
  }
@@ -78,14 +79,14 @@ class CfnResourceGenerator {
78
79
  }
79
80
  code.line(` * @link ${this.typeDef.SourceUrl}`);
80
81
  code.line(' */');
81
- code.line(`public readonly ${camelcase(prop)}: ${this.getTypeOfProperty(prop)}${optionalMarker};`);
82
+ code.line(`public readonly ${(0, case_1.camel)(prop)}: ${this.getTypeOfProperty(prop)}${optionalMarker};`);
82
83
  }
83
84
  for (const prop of this.resourceAttributes) {
84
85
  code.line('/**');
85
86
  code.line(` * Attribute \`${this.typeName}.${prop}\``);
86
87
  code.line(` * @link ${this.typeDef.SourceUrl}`);
87
88
  code.line(' */');
88
- code.line(`public readonly attr${camelcase(prop, { pascalCase: true })}: ${this.getTypeOfProperty(prop)};`);
89
+ code.line(`public readonly attr${(0, case_1.pascal)(prop)}: ${this.getTypeOfProperty(prop)};`);
89
90
  }
90
91
  code.line();
91
92
  code.line('/**');
@@ -99,10 +100,10 @@ class CfnResourceGenerator {
99
100
  code.line(`super(scope, id, { type: ${this.constructClassName}.CFN_RESOURCE_TYPE_NAME, properties: toJson_${this.propsStructName}(props)! });`);
100
101
  code.line('');
101
102
  for (const prop of this.resourceProperties) {
102
- code.line(`this.${camelcase(prop)} = props.${camelcase(prop)};`);
103
+ code.line(`this.${(0, case_1.camel)(prop)} = props.${(0, case_1.camel)(prop)};`);
103
104
  }
104
105
  for (const prop of this.resourceAttributes) {
105
- const propertyName = `attr${camelcase(prop, { pascalCase: true })}`;
106
+ const propertyName = `attr${(0, case_1.pascal)(prop)}`;
106
107
  code.line(`this.${propertyName} = ${this.renderGetAtt(prop)};`);
107
108
  }
108
109
  code.closeBlock();
@@ -144,4 +145,4 @@ class CfnResourceGenerator {
144
145
  }
145
146
  }
146
147
  exports.CfnResourceGenerator = CfnResourceGenerator;
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZuLXJlc291cmNlLWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jZm4tcmVzb3VyY2UtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVDQUF1QztBQUN2QyxpQ0FBaUM7QUFFakMsaUNBQTBDO0FBRTFDOztHQUVHO0FBQ0gsTUFBYSxvQkFBb0I7SUFRL0I7Ozs7O09BS0c7SUFDSCxZQUE2QixRQUFnQixFQUFtQixPQUFpQixFQUFtQixNQUFXO1FBQWxGLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBbUIsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUFtQixXQUFNLEdBQU4sTUFBTSxDQUFLO1FBQzdHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFBLHVCQUFnQixFQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDMUosSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsT0FBTyxD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LENBQUM7Q0FFRjtBQTFKRCxvREEwSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjYW1lbGNhc2UgZnJvbSAnY2FtZWxjYXNlJztcbmltcG9ydCAqIGFzIGoyaiBmcm9tICdqc29uMmpzaWknO1xuaW1wb3J0IHsgVHlwZUluZm8gfSBmcm9tICcuL3R5cGUtaW5mbyc7XG5pbXBvcnQgeyBzYW5pdGl6ZVR5cGVOYW1lIH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBHZW5lcmF0b3IgdG8gZW1pdCBjbGFzc2VzIGFuZCB0eXBlcyBmb3IgdGhlIEwxIGNvbnN0cnVjdCBvZiB0aGUgZ2l2ZW4gcmVzb3VyY2UgdHlwZVxuICovXG5leHBvcnQgY2xhc3MgQ2ZuUmVzb3VyY2VHZW5lcmF0b3Ige1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVkVHlwZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZUF0dHJpYnV0ZXM6IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlUHJvcGVydGllczogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uc3RydWN0Q2xhc3NOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHNTdHJ1Y3ROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlTmFtZSB0aGUgbmFtZSBvZiB0aGUgQ0ZOIHJlc291cmNlIHR5cGUgKGUuZy4gQVdTUVM6OkVLUzo6Q2x1c3RlcilcbiAgICogQHBhcmFtIHR5cGVEZWYgdGhlIHR5cGUgaW5mbyBjb250YWluaW5nIHRoZSBzb3VyY2UgdXJsXG4gICAqIEBwYXJhbSBzY2hlbWEgdGhlIHNjaGVtYSBvZiB0aGUgcmVzb3VyY2UgdHlwZSBmb3IgaW5wdXQgYW5kIG91dHB1dCBwcm9wZXJ0aWVzXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGVOYW1lOiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgdHlwZURlZjogVHlwZUluZm8sIHByaXZhdGUgcmVhZG9ubHkgc2NoZW1hOiBhbnkpIHtcbiAgICB0aGlzLnNhbml0aXplZFR5cGVOYW1lID0gc2FuaXRpemVUeXBlTmFtZSh0eXBlTmFtZSk7XG4gICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMgPSB0aGlzLnNjaGVtYS5yZWFkT25seVByb3BlcnRpZXMgPyB0aGlzLnNjaGVtYS5yZWFkT25seVByb3BlcnRpZXMubWFwKChwcm9wOiBzdHJpbmcpID0+IHByb3AucmVwbGFjZSgvXlxcL3Byb3BlcnRpZXNcXC8vLCAnJykpIDogW107XG4gICAgdGhpcy5yZXNvdXJjZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyh0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzKS5maWx0ZXIocHJvcCA9PiB0aGlzLnJlc291cmNlQXR0cmlidXRlcy5pbmRleE9mKHByb3ApID09PSAtMSk7XG4gICAgdGhpcy5jb25zdHJ1Y3RDbGFzc05hbWUgPSBgQ2ZuJHt0aGlzLnNhbml0aXplZFR5cGVOYW1lfWA7XG4gICAgdGhpcy5wcm9wc1N0cnVjdE5hbWUgPSBgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1Qcm9wc2A7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSB0eXBlIGludG8gYSBUeXBlU2NyaXB0IGNsYXNzIGZpbCBkZWZpbmluZyB0aGUgcHJvcHMgYW5kIHRoZSBMMSBjb25zdHJ1Y3RcbiAgICpcbiAgICogQHJldHVybnMgdGhlIHJlbmRlcmVkIGNsYXNzIGZpbGUgY29udGVudFxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvZGUgPSBuZXcgajJqLkNvZGUoKTtcbiAgICB0aGlzLmVtaXRJbXBvcnRzKGNvZGUpO1xuICAgIHRoaXMuZW1pdERlZmluaXRpb25UeXBlcyhjb2RlKTtcbiAgICB0aGlzLmVtaXRDb25zdHJ1Y3RDbGFzcyhjb2RlKTtcbiAgICByZXR1cm4gY29kZS5yZW5kZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEltcG9ydHMoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLmxpbmUoXCJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnQGF3cy1jZGsvY29yZSc7XCIpO1xuICAgIGNvZGUubGluZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RGVmaW5pdGlvblR5cGVzKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29uc3QgZ2VuID0gbmV3IGoyai5UeXBlR2VuZXJhdG9yKHtcbiAgICAgIGRlZmluaXRpb25zOiB0aGlzLnNjaGVtYS5kZWZpbml0aW9ucyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zY2hlbWEpKTtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMpIHtcbiAgICAgIC8vIFJlbW92ZSBhdHRyaWJ1dGVzIHRoYXQgY2Fubm90IGJlIHdyaXR0ZW4gYnV0IGFyZSB1c2VkIGFzIGF0dHJpYnV0ZXNcbiAgICAgIC8vIFRoZXNlIHNob3VsZCBub3QgYmUgcGFydCBvZiB0aGUgUHJvcHMgc3RydWN0XG4gICAgICBkZWxldGUgc2NoZW1hLnByb3BlcnRpZXNbcHJvcF07XG4gICAgfVxuXG4gICAgZ2VuLmVtaXRUeXBlKHRoaXMucHJvcHNTdHJ1Y3ROYW1lLCBzY2hlbWEpO1xuXG4gICAgZ2VuLnJlbmRlclRvQ29kZShjb2RlKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdENvbnN0cnVjdENsYXNzKGNvZGU6IGoyai5Db2RlKSB7XG4gICAgY29kZS5saW5lKCcvKionKTtcbiAgICBjb2RlLmxpbmUoYCAqIEEgQ2xvdWRGb3JtYXRpb24gXFxgJHt0aGlzLnR5cGVOYW1lfVxcYGApO1xuICAgIGNvZGUubGluZSgnIConKTtcbiAgICBjb2RlLmxpbmUoYCAqIEBjbG91ZGZvcm1hdGlvblJlc291cmNlICR7dGhpcy50eXBlTmFtZX1gKTtcbiAgICBjb2RlLmxpbmUoJyAqIEBzdGFiaWxpdHkgZXh0ZXJuYWwnKTtcbiAgICBjb2RlLmxpbmUoYCAqIEBsaW5rICR7dGhpcy50eXBlRGVmLlNvdXJjZVVybH1gKTtcbiAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgIGNvZGUub3BlbkJsb2NrKGBleHBvcnQgY2xhc3MgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX0gZXh0ZW5kcyBjZGsuQ2ZuUmVzb3VyY2VgKTtcbiAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgIGNvZGUubGluZSgnKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSBuYW1lIGZvciB0aGlzIHJlc291cmNlIGNsYXNzLicpO1xuICAgIGNvZGUubGluZSgnKi8nKTtcbiAgICBjb2RlLmxpbmUoYHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0ZOX1JFU09VUkNFX1RZUEVfTkFNRSA9IFwiJHt0aGlzLnR5cGVOYW1lfVwiO2ApO1xuICAgIGNvZGUubGluZSgpO1xuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucmVzb3VyY2VQcm9wZXJ0aWVzKSB7XG4gICAgICBjb25zdCBvcHRpb25hbE1hcmtlciA9IHRoaXMuc2NoZW1hLnJlcXVpcmVkPy5pbmRleE9mKHByb3ApID09PSAtMSA/ICcgfCB1bmRlZmluZWQnIDogJyc7XG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKGAgKiBcXGAke3RoaXMudHlwZU5hbWV9LiR7cHJvcH1cXGBgKTtcbiAgICAgIGlmICh0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BdLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgIGNvZGUubGluZShgICogJHt0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BdLmRlc2NyaXB0aW9ufWApO1xuICAgICAgfVxuICAgICAgY29kZS5saW5lKGAgKiBAbGluayAke3RoaXMudHlwZURlZi5Tb3VyY2VVcmx9YCk7XG4gICAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgICAgY29kZS5saW5lKGBwdWJsaWMgcmVhZG9ubHkgJHtjYW1lbGNhc2UocHJvcCl9OiAke3RoaXMuZ2V0VHlwZU9mUHJvcGVydHkocHJvcCl9JHtvcHRpb25hbE1hcmtlcn07YCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzKSB7XG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKGAgKiBBdHRyaWJ1dGUgXFxgJHt0aGlzLnR5cGVOYW1lfS4ke3Byb3B9XFxgYCk7XG4gICAgICBjb2RlLmxpbmUoYCAqIEBsaW5rICR7dGhpcy50eXBlRGVmLlNvdXJjZVVybH1gKTtcbiAgICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgICBjb2RlLmxpbmUoYHB1YmxpYyByZWFkb25seSBhdHRyJHtjYW1lbGNhc2UocHJvcCwgeyBwYXNjYWxDYXNlOiB0cnVlIH0pfTogJHt0aGlzLmdldFR5cGVPZlByb3BlcnR5KHByb3ApfTtgKTtcbiAgICB9XG5cbiAgICBjb2RlLmxpbmUoKTtcblxuICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgY29kZS5saW5lKGAgKiBDcmVhdGUgYSBuZXcgXFxgJHt0aGlzLnR5cGVOYW1lfVxcYC5gKTtcbiAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgY29kZS5saW5lKCcgKiBAcGFyYW0gc2NvcGUgLSBzY29wZSBpbiB3aGljaCB0aGlzIHJlc291cmNlIGlzIGRlZmluZWQnKTtcbiAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBpZCAgICAtIHNjb3BlZCBpZCBvZiB0aGUgcmVzb3VyY2UnKTtcbiAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBwcm9wcyAtIHJlc291cmNlIHByb3BlcnRpZXMnKTtcbiAgICBjb2RlLmxpbmUoJyAqLycpO1xuICAgIGNvZGUub3BlbkJsb2NrKGBjb25zdHJ1Y3RvcihzY29wZTogY2RrLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6ICR7dGhpcy5wcm9wc1N0cnVjdE5hbWV9KWApO1xuICAgIGNvZGUubGluZShgc3VwZXIoc2NvcGUsIGlkLCB7IHR5cGU6ICR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9LkNGTl9SRVNPVVJDRV9UWVBFX05BTUUsIHByb3BlcnRpZXM6IHRvSnNvbl8ke3RoaXMucHJvcHNTdHJ1Y3ROYW1lfShwcm9wcykhIH0pO2ApO1xuICAgIGNvZGUubGluZSgnJyk7XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucmVzb3VyY2VQcm9wZXJ0aWVzKSB7XG4gICAgICBjb2RlLmxpbmUoYHRoaXMuJHtjYW1lbGNhc2UocHJvcCl9ID0gcHJvcHMuJHtjYW1lbGNhc2UocHJvcCl9O2ApO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGBhdHRyJHtjYW1lbGNhc2UocHJvcCwgeyBwYXNjYWxDYXNlOiB0cnVlIH0pfWA7XG4gICAgICBjb2RlLmxpbmUoYHRoaXMuJHtwcm9wZXJ0eU5hbWV9ID0gJHt0aGlzLnJlbmRlckdldEF0dChwcm9wKX07YCk7XG4gICAgfVxuICAgIGNvZGUuY2xvc2VCbG9jaygpO1xuXG4gICAgLy8gQ2xvc2UgY29uc3RydWN0IGNsYXNzXG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckdldEF0dChwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGF0dHJpYnV0ZVR5cGUgPSB0aGlzLmdldFR5cGVPZlByb3BlcnR5KHByb3ApO1xuICAgIGNvbnN0IGNvbnN0cnVjdG9yQXJndW1lbnRzID0gYHRoaXMuZ2V0QXR0KCcke3Byb3B9JylgO1xuICAgIGlmIChhdHRyaWJ1dGVUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGBjZGsuVG9rZW4uYXNTdHJpbmcoJHtjb25zdHJ1Y3RvckFyZ3VtZW50c30pYDtcbiAgICB9XG4gICAgaWYgKGF0dHJpYnV0ZVR5cGUgPT09ICdzdHJpbmdbXScpIHtcbiAgICAgIHJldHVybiBgY2RrLlRva2VuLmFzTGlzdCgke2NvbnN0cnVjdG9yQXJndW1lbnRzfSlgO1xuICAgIH1cbiAgICBpZiAoYXR0cmlidXRlVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBgY2RrLlRva2VuLmFzTnVtYmVyKCR7Y29uc3RydWN0b3JBcmd1bWVudHN9KWA7XG4gICAgfVxuICAgIHJldHVybiBjb25zdHJ1Y3RvckFyZ3VtZW50cztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VHlwZU9mUHJvcGVydHkocHJvcDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VHlwZUZyb21TY2hlbWEodGhpcy5zY2hlbWEucHJvcGVydGllc1twcm9wXSk7XG4gIH1cblxuICBwcml2YXRlIGdldFR5cGVGcm9tU2NoZW1hKHByb3A6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHByb3AudHlwZSkge1xuICAgICAgc3dpdGNoIChwcm9wLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICByZXR1cm4gJ3N0cmluZyc7XG4gICAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRUeXBlRnJvbVNjaGVtYShwcm9wLml0ZW1zKX1bXWA7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuICdhbnknO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJvcC5oYXNPd25Qcm9wZXJ0eSgnJHJlZicpKSB7XG4gICAgICByZXR1cm4gcHJvcC4kcmVmLnJlcGxhY2UoLyNcXC9kZWZpbml0aW9uc1xcLy8sICcnKTtcbiAgICB9XG4gICAgcmV0dXJuICdhbnknO1xuICB9XG5cbn1cbiJdfQ==
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZuLXJlc291cmNlLWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jZm4tcmVzb3VyY2UtZ2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUFxQztBQUNyQyxpQ0FBaUM7QUFFakMsaUNBQTBDO0FBRTFDOztHQUVHO0FBQ0gsTUFBYSxvQkFBb0I7SUFRL0I7Ozs7O09BS0c7SUFDSCxZQUE2QixRQUFnQixFQUFtQixPQUFpQixFQUFtQixNQUFXO1FBQWxGLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBbUIsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUFtQixXQUFNLEdBQU4sTUFBTSxDQUFLO1FBQzdHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFBLHVCQUFnQixFQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDMUosSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsT0FBTyxDQUFDO0lBQzNELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTTtRQUNYLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sV0FBVyxDQUFDLElBQWM7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsSUFBYztRQUN4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUM7WUFDaEMsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVztTQUNyQyxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdkQsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDMUMsc0VBQXNFO1lBQ3RFLCtDQUErQztZQUMvQyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7UUFFRCxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFM0MsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsSUFBYzs7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsOEJBQThCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLGtCQUFrQiwwQkFBMEIsQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxvREFBb0QsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRVosS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDMUMsTUFBTSxjQUFjLEdBQUcsQ0FBQSxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSwwQ0FBRSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hGLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztZQUM3QyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7YUFDN0Q7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBQSxZQUFLLEVBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLGNBQWMsR0FBRyxDQUFDLENBQUM7U0FDaEc7UUFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsSUFBQSxhQUFNLEVBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwRjtRQUVELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLDJEQUEyRCxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLElBQUksQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsd0RBQXdELElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxJQUFJLENBQUMsNEJBQTRCLElBQUksQ0FBQyxrQkFBa0IsK0NBQStDLElBQUksQ0FBQyxlQUFlLGNBQWMsQ0FBQyxDQUFDO1FBQ2hKLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDZCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBQSxZQUFLLEVBQUMsSUFBSSxDQUFDLFlBQVksSUFBQSxZQUFLLEVBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzFEO1FBQ0QsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDMUMsTUFBTSxZQUFZLEdBQUcsT0FBTyxJQUFBLGFBQU0sRUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxZQUFZLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDakU7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEIsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU8sWUFBWSxDQUFDLElBQVk7UUFDL0IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLElBQUksSUFBSSxDQUFDO1FBQ3RELElBQUksYUFBYSxLQUFLLFFBQVEsRUFBRTtZQUM5QixPQUFPLHNCQUFzQixvQkFBb0IsR0FBRyxDQUFDO1NBQ3REO1FBQ0QsSUFBSSxhQUFhLEtBQUssVUFBVSxFQUFFO1lBQ2hDLE9BQU8sb0JBQW9CLG9CQUFvQixHQUFHLENBQUM7U0FDcEQ7UUFDRCxJQUFJLGFBQWEsS0FBSyxRQUFRLEVBQUU7WUFDOUIsT0FBTyxzQkFBc0Isb0JBQW9CLEdBQUcsQ0FBQztTQUN0RDtRQUNELE9BQU8sb0JBQW9CLENBQUM7SUFDOUIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLElBQVk7UUFDcEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU8saUJBQWlCLENBQUMsSUFBUztRQUNqQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2pCLEtBQUssUUFBUTtvQkFDWCxPQUFPLFFBQVEsQ0FBQztnQkFDbEIsS0FBSyxPQUFPO29CQUNWLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ25EO29CQUNFLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1NBQ0Y7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNsRDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUVGO0FBM0pELG9EQTJKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNhbWVsLCBwYXNjYWwgfSBmcm9tICdjYXNlJztcbmltcG9ydCAqIGFzIGoyaiBmcm9tICdqc29uMmpzaWknO1xuaW1wb3J0IHsgVHlwZUluZm8gfSBmcm9tICcuL3R5cGUtaW5mbyc7XG5pbXBvcnQgeyBzYW5pdGl6ZVR5cGVOYW1lIH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBHZW5lcmF0b3IgdG8gZW1pdCBjbGFzc2VzIGFuZCB0eXBlcyBmb3IgdGhlIEwxIGNvbnN0cnVjdCBvZiB0aGUgZ2l2ZW4gcmVzb3VyY2UgdHlwZVxuICovXG5leHBvcnQgY2xhc3MgQ2ZuUmVzb3VyY2VHZW5lcmF0b3Ige1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVkVHlwZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZUF0dHJpYnV0ZXM6IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlUHJvcGVydGllczogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uc3RydWN0Q2xhc3NOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHNTdHJ1Y3ROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlTmFtZSB0aGUgbmFtZSBvZiB0aGUgQ0ZOIHJlc291cmNlIHR5cGUgKGUuZy4gQVdTUVM6OkVLUzo6Q2x1c3RlcilcbiAgICogQHBhcmFtIHR5cGVEZWYgdGhlIHR5cGUgaW5mbyBjb250YWluaW5nIHRoZSBzb3VyY2UgdXJsXG4gICAqIEBwYXJhbSBzY2hlbWEgdGhlIHNjaGVtYSBvZiB0aGUgcmVzb3VyY2UgdHlwZSBmb3IgaW5wdXQgYW5kIG91dHB1dCBwcm9wZXJ0aWVzXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGVOYW1lOiBzdHJpbmcsIHByaXZhdGUgcmVhZG9ubHkgdHlwZURlZjogVHlwZUluZm8sIHByaXZhdGUgcmVhZG9ubHkgc2NoZW1hOiBhbnkpIHtcbiAgICB0aGlzLnNhbml0aXplZFR5cGVOYW1lID0gc2FuaXRpemVUeXBlTmFtZSh0eXBlTmFtZSk7XG4gICAgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMgPSB0aGlzLnNjaGVtYS5yZWFkT25seVByb3BlcnRpZXMgPyB0aGlzLnNjaGVtYS5yZWFkT25seVByb3BlcnRpZXMubWFwKChwcm9wOiBzdHJpbmcpID0+IHByb3AucmVwbGFjZSgvXlxcL3Byb3BlcnRpZXNcXC8vLCAnJykpIDogW107XG4gICAgdGhpcy5yZXNvdXJjZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyh0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzKS5maWx0ZXIocHJvcCA9PiB0aGlzLnJlc291cmNlQXR0cmlidXRlcy5pbmRleE9mKHByb3ApID09PSAtMSk7XG4gICAgdGhpcy5jb25zdHJ1Y3RDbGFzc05hbWUgPSBgQ2ZuJHt0aGlzLnNhbml0aXplZFR5cGVOYW1lfWA7XG4gICAgdGhpcy5wcm9wc1N0cnVjdE5hbWUgPSBgJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX1Qcm9wc2A7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIHRoZSB0eXBlIGludG8gYSBUeXBlU2NyaXB0IGNsYXNzIGZpbCBkZWZpbmluZyB0aGUgcHJvcHMgYW5kIHRoZSBMMSBjb25zdHJ1Y3RcbiAgICpcbiAgICogQHJldHVybnMgdGhlIHJlbmRlcmVkIGNsYXNzIGZpbGUgY29udGVudFxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvZGUgPSBuZXcgajJqLkNvZGUoKTtcbiAgICB0aGlzLmVtaXRJbXBvcnRzKGNvZGUpO1xuICAgIHRoaXMuZW1pdERlZmluaXRpb25UeXBlcyhjb2RlKTtcbiAgICB0aGlzLmVtaXRDb25zdHJ1Y3RDbGFzcyhjb2RlKTtcbiAgICByZXR1cm4gY29kZS5yZW5kZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEltcG9ydHMoY29kZTogajJqLkNvZGUpIHtcbiAgICBjb2RlLmxpbmUoJy8vIEdlbmVyYXRlZCBieSBjZGstaW1wb3J0Jyk7XG4gICAgY29kZS5saW5lKFwiaW1wb3J0ICogYXMgY2RrIGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1wiKTtcbiAgICBjb2RlLmxpbmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdERlZmluaXRpb25UeXBlcyhjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvbnN0IGdlbiA9IG5ldyBqMmouVHlwZUdlbmVyYXRvcih7XG4gICAgICBkZWZpbml0aW9uczogdGhpcy5zY2hlbWEuZGVmaW5pdGlvbnMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzY2hlbWEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuc2NoZW1hKSk7XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzKSB7XG4gICAgICAvLyBSZW1vdmUgYXR0cmlidXRlcyB0aGF0IGNhbm5vdCBiZSB3cml0dGVuIGJ1dCBhcmUgdXNlZCBhcyBhdHRyaWJ1dGVzXG4gICAgICAvLyBUaGVzZSBzaG91bGQgbm90IGJlIHBhcnQgb2YgdGhlIFByb3BzIHN0cnVjdFxuICAgICAgZGVsZXRlIHNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BdO1xuICAgIH1cblxuICAgIGdlbi5lbWl0VHlwZSh0aGlzLnByb3BzU3RydWN0TmFtZSwgc2NoZW1hKTtcblxuICAgIGdlbi5yZW5kZXJUb0NvZGUoY29kZSk7XG4gICAgY29kZS5saW5lKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRDb25zdHJ1Y3RDbGFzcyhjb2RlOiBqMmouQ29kZSkge1xuICAgIGNvZGUubGluZSgnLyoqJyk7XG4gICAgY29kZS5saW5lKGAgKiBBIENsb3VkRm9ybWF0aW9uIFxcYCR7dGhpcy50eXBlTmFtZX1cXGBgKTtcbiAgICBjb2RlLmxpbmUoJyAqJyk7XG4gICAgY29kZS5saW5lKGAgKiBAY2xvdWRmb3JtYXRpb25SZXNvdXJjZSAke3RoaXMudHlwZU5hbWV9YCk7XG4gICAgY29kZS5saW5lKCcgKiBAc3RhYmlsaXR5IGV4dGVybmFsJyk7XG4gICAgY29kZS5saW5lKGAgKiBAbGluayAke3RoaXMudHlwZURlZi5Tb3VyY2VVcmx9YCk7XG4gICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICBjb2RlLm9wZW5CbG9jayhgZXhwb3J0IGNsYXNzICR7dGhpcy5jb25zdHJ1Y3RDbGFzc05hbWV9IGV4dGVuZHMgY2RrLkNmblJlc291cmNlYCk7XG4gICAgY29kZS5saW5lKCcvKionKTtcbiAgICBjb2RlLmxpbmUoJyogVGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGUgbmFtZSBmb3IgdGhpcyByZXNvdXJjZSBjbGFzcy4nKTtcbiAgICBjb2RlLmxpbmUoJyovJyk7XG4gICAgY29kZS5saW5lKGBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENGTl9SRVNPVVJDRV9UWVBFX05BTUUgPSBcIiR7dGhpcy50eXBlTmFtZX1cIjtgKTtcbiAgICBjb2RlLmxpbmUoKTtcblxuICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLnJlc291cmNlUHJvcGVydGllcykge1xuICAgICAgY29uc3Qgb3B0aW9uYWxNYXJrZXIgPSB0aGlzLnNjaGVtYS5yZXF1aXJlZD8uaW5kZXhPZihwcm9wKSA9PT0gLTEgPyAnIHwgdW5kZWZpbmVkJyA6ICcnO1xuICAgICAgY29kZS5saW5lKCcvKionKTtcbiAgICAgIGNvZGUubGluZShgICogXFxgJHt0aGlzLnR5cGVOYW1lfS4ke3Byb3B9XFxgYCk7XG4gICAgICBpZiAodGhpcy5zY2hlbWEucHJvcGVydGllc1twcm9wXS5kZXNjcmlwdGlvbikge1xuICAgICAgICBjb2RlLmxpbmUoYCAqICR7dGhpcy5zY2hlbWEucHJvcGVydGllc1twcm9wXS5kZXNjcmlwdGlvbn1gKTtcbiAgICAgIH1cbiAgICAgIGNvZGUubGluZShgICogQGxpbmsgJHt0aGlzLnR5cGVEZWYuU291cmNlVXJsfWApO1xuICAgICAgY29kZS5saW5lKCcgKi8nKTtcbiAgICAgIGNvZGUubGluZShgcHVibGljIHJlYWRvbmx5ICR7Y2FtZWwocHJvcCl9OiAke3RoaXMuZ2V0VHlwZU9mUHJvcGVydHkocHJvcCl9JHtvcHRpb25hbE1hcmtlcn07YCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMucmVzb3VyY2VBdHRyaWJ1dGVzKSB7XG4gICAgICBjb2RlLmxpbmUoJy8qKicpO1xuICAgICAgY29kZS5saW5lKGAgKiBBdHRyaWJ1dGUgXFxgJHt0aGlzLnR5cGVOYW1lfS4ke3Byb3B9XFxgYCk7XG4gICAgICBjb2RlLmxpbmUoYCAqIEBsaW5rICR7dGhpcy50eXBlRGVmLlNvdXJjZVVybH1gKTtcbiAgICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgICBjb2RlLmxpbmUoYHB1YmxpYyByZWFkb25seSBhdHRyJHtwYXNjYWwocHJvcCl9OiAke3RoaXMuZ2V0VHlwZU9mUHJvcGVydHkocHJvcCl9O2ApO1xuICAgIH1cblxuICAgIGNvZGUubGluZSgpO1xuXG4gICAgY29kZS5saW5lKCcvKionKTtcbiAgICBjb2RlLmxpbmUoYCAqIENyZWF0ZSBhIG5ldyBcXGAke3RoaXMudHlwZU5hbWV9XFxgLmApO1xuICAgIGNvZGUubGluZSgnIConKTtcbiAgICBjb2RlLmxpbmUoJyAqIEBwYXJhbSBzY29wZSAtIHNjb3BlIGluIHdoaWNoIHRoaXMgcmVzb3VyY2UgaXMgZGVmaW5lZCcpO1xuICAgIGNvZGUubGluZSgnICogQHBhcmFtIGlkICAgIC0gc2NvcGVkIGlkIG9mIHRoZSByZXNvdXJjZScpO1xuICAgIGNvZGUubGluZSgnICogQHBhcmFtIHByb3BzIC0gcmVzb3VyY2UgcHJvcGVydGllcycpO1xuICAgIGNvZGUubGluZSgnICovJyk7XG4gICAgY29kZS5vcGVuQmxvY2soYGNvbnN0cnVjdG9yKHNjb3BlOiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogJHt0aGlzLnByb3BzU3RydWN0TmFtZX0pYCk7XG4gICAgY29kZS5saW5lKGBzdXBlcihzY29wZSwgaWQsIHsgdHlwZTogJHt0aGlzLmNvbnN0cnVjdENsYXNzTmFtZX0uQ0ZOX1JFU09VUkNFX1RZUEVfTkFNRSwgcHJvcGVydGllczogdG9Kc29uXyR7dGhpcy5wcm9wc1N0cnVjdE5hbWV9KHByb3BzKSEgfSk7YCk7XG4gICAgY29kZS5saW5lKCcnKTtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5yZXNvdXJjZVByb3BlcnRpZXMpIHtcbiAgICAgIGNvZGUubGluZShgdGhpcy4ke2NhbWVsKHByb3ApfSA9IHByb3BzLiR7Y2FtZWwocHJvcCl9O2ApO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5yZXNvdXJjZUF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGBhdHRyJHtwYXNjYWwocHJvcCl9YDtcbiAgICAgIGNvZGUubGluZShgdGhpcy4ke3Byb3BlcnR5TmFtZX0gPSAke3RoaXMucmVuZGVyR2V0QXR0KHByb3ApfTtgKTtcbiAgICB9XG4gICAgY29kZS5jbG9zZUJsb2NrKCk7XG5cbiAgICAvLyBDbG9zZSBjb25zdHJ1Y3QgY2xhc3NcbiAgICBjb2RlLmNsb3NlQmxvY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyR2V0QXR0KHByb3A6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYXR0cmlidXRlVHlwZSA9IHRoaXMuZ2V0VHlwZU9mUHJvcGVydHkocHJvcCk7XG4gICAgY29uc3QgY29uc3RydWN0b3JBcmd1bWVudHMgPSBgdGhpcy5nZXRBdHQoJyR7cHJvcH0nKWA7XG4gICAgaWYgKGF0dHJpYnV0ZVR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gYGNkay5Ub2tlbi5hc1N0cmluZygke2NvbnN0cnVjdG9yQXJndW1lbnRzfSlgO1xuICAgIH1cbiAgICBpZiAoYXR0cmlidXRlVHlwZSA9PT0gJ3N0cmluZ1tdJykge1xuICAgICAgcmV0dXJuIGBjZGsuVG9rZW4uYXNMaXN0KCR7Y29uc3RydWN0b3JBcmd1bWVudHN9KWA7XG4gICAgfVxuICAgIGlmIChhdHRyaWJ1dGVUeXBlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGBjZGsuVG9rZW4uYXNOdW1iZXIoJHtjb25zdHJ1Y3RvckFyZ3VtZW50c30pYDtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yQXJndW1lbnRzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUeXBlT2ZQcm9wZXJ0eShwcm9wOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUeXBlRnJvbVNjaGVtYSh0aGlzLnNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BdKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VHlwZUZyb21TY2hlbWEocHJvcDogYW55KTogc3RyaW5nIHtcbiAgICBpZiAocHJvcC50eXBlKSB7XG4gICAgICBzd2l0Y2ggKHByb3AudHlwZSkge1xuICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgIHJldHVybiAnc3RyaW5nJztcbiAgICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgICAgIHJldHVybiBgJHt0aGlzLmdldFR5cGVGcm9tU2NoZW1hKHByb3AuaXRlbXMpfVtdYDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJ2FueSc7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwcm9wLmhhc093blByb3BlcnR5KCckcmVmJykpIHtcbiAgICAgIHJldHVybiBwcm9wLiRyZWYucmVwbGFjZSgvI1xcL2RlZmluaXRpb25zXFwvLywgJycpO1xuICAgIH1cbiAgICByZXR1cm4gJ2FueSc7XG4gIH1cblxufVxuIl19
package/lib/cli.js CHANGED
@@ -1,11 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
+ const fs = require("fs/promises");
5
+ const os = require("os");
6
+ const path = require("path");
4
7
  const minimist = require("minimist");
5
8
  const _1 = require(".");
9
+ const languages_1 = require("./languages");
6
10
  const args = minimist(process.argv.slice(2), {
7
11
  string: [
8
12
  'outdir',
13
+ 'language',
14
+ 'go-module-name',
9
15
  ],
10
16
  boolean: [
11
17
  'help',
@@ -13,34 +19,64 @@ const args = minimist(process.argv.slice(2), {
13
19
  alias: {
14
20
  outdir: 'o',
15
21
  help: 'h',
22
+ language: 'l',
16
23
  },
17
24
  });
18
25
  function showHelp() {
19
26
  console.log('');
20
- console.log('Usage: cdk-import RESOURCE-NAME[@VERSION]');
21
- console.log('');
27
+ console.log('Usage:');
28
+ console.log(' cdk-import -l LANGUAGE RESOURCE-NAME[@VERSION]');
29
+ console.log();
22
30
  console.log('Options:');
23
- console.log(' -o, --outdir Output directory [string] [default: "."]');
24
- console.log(' -h, --help Show this usage info [boolean] [default: false]');
31
+ console.log(' -l, --language Output programming language [string]');
32
+ console.log(' -o, --outdir Output directory [string] [default: "."]');
33
+ console.log(' --go-module Go module name (required if language is "golang") [string]');
34
+ console.log(' --java-package Java package name (required if language is "java") [string]');
35
+ console.log(' -h, --help Show this usage info [boolean]');
25
36
  console.log('');
26
37
  console.log('Examples:');
27
- console.log(' cdk-import AWSQS::EKS::Cluster Generates an L1 construct for the latest version of this resource under awsqs-eks-cluster.ts');
28
- console.log(' cdk-import AWSQS::EKS::Cluster@1.2.0 Generates an L1 construct for a specific version');
29
- console.log(' cdk-import -o src AWSQS::EKS::Cluster Generates an L1 construct in the src subfolder');
30
- console.log(' cdk-import arn:aws:cloudformation:... Generates an L1 construct and identifies the resource type by its ARN');
38
+ console.log();
39
+ console.log(' Generates constructs for the latest version AWSQS::EKS::Cluster in TypeScript:');
40
+ console.log(' cdk-import -l typescript AWSQS::EKS::Cluster');
41
+ console.log();
42
+ console.log(' Generates construct in Go for a specific resource version:');
43
+ console.log(' cdk-import -l golang --go-module "github.com/account/repo" AWSQS::EKS::Cluster@1.2.0');
44
+ console.log();
45
+ console.log(' Generates construct in Python under the "src" subfolder instead of working directory:');
46
+ console.log(' cdk-import -l python -o src AWSQS::EKS::Cluster');
47
+ console.log();
48
+ console.log(' Generates construct in Java and identifies the resource type by its ARN:');
49
+ console.log(' cdk-import -l java --java-package "com.acme.myproject" arn:aws:cloudformation:...');
50
+ console.log();
31
51
  }
32
52
  void (async () => {
53
+ var _a;
33
54
  if (args.help || args._.length !== 1) {
34
55
  showHelp();
35
56
  process.exit(1);
36
57
  }
58
+ if (!args.language) {
59
+ throw new Error(`Missing required option: --language. Supported languages: ${languages_1.SUPPORTED_LANGUAGES.join(',')}`);
60
+ }
61
+ if (languages_1.SUPPORTED_LANGUAGES.indexOf(args.language) === -1) {
62
+ throw new Error(`Unsupported language ${args.language}. Supported: ${languages_1.SUPPORTED_LANGUAGES.join(',')}`);
63
+ }
37
64
  try {
38
65
  const [resourceName, resourceVersion] = args._[0].split('@');
39
- await (0, _1.importResourceType)(resourceName, resourceVersion, args.outdir);
66
+ const workdir = await fs.mkdtemp(path.join(os.tmpdir(), 'cdk-import'));
67
+ const typeName = await (0, _1.importResourceType)(resourceName, resourceVersion, workdir);
68
+ await (0, languages_1.renderCode)({
69
+ srcdir: workdir,
70
+ language: args.language,
71
+ outdir: (_a = args.outdir) !== null && _a !== void 0 ? _a : '.',
72
+ typeName: typeName,
73
+ goModule: args['go-module'],
74
+ javaPacakge: args['java-package'],
75
+ });
40
76
  }
41
77
  catch (e) {
42
78
  console.log(e);
43
79
  process.exit(1);
44
80
  }
45
81
  })();
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxQ0FBcUM7QUFDckMsd0JBQXVDO0FBRXZDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUMzQyxNQUFNLEVBQUU7UUFDTixRQUFRO0tBQ1Q7SUFDRCxPQUFPLEVBQUU7UUFDUCxNQUFNO0tBQ1A7SUFDRCxLQUFLLEVBQUU7UUFDTCxNQUFNLEVBQUUsR0FBRztRQUNYLElBQUksRUFBRSxHQUFHO0tBQ1Y7Q0FDRixDQUFDLENBQUM7QUFFSCxTQUFTLFFBQVE7SUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkNBQTJDLENBQUMsQ0FBQztJQUN6RCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0lBQ25GLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUVBQXVFLENBQUMsQ0FBQztJQUNyRixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQywySUFBMkksQ0FBQyxDQUFDO0lBQ3pKLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0ZBQStGLENBQUMsQ0FBQztJQUM3RyxPQUFPLENBQUMsR0FBRyxDQUFDLDZGQUE2RixDQUFDLENBQUM7SUFDM0csT0FBTyxDQUFDLEdBQUcsQ0FBQyxvSEFBb0gsQ0FBQyxDQUFDO0FBQ3BJLENBQUM7QUFFRCxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDZixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3BDLFFBQVEsRUFBRSxDQUFDO1FBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNqQjtJQUNELElBQUk7UUFDRixNQUFNLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdELE1BQU0sSUFBQSxxQkFBa0IsRUFBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN0RTtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDakI7QUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0ICogYXMgbWluaW1pc3QgZnJvbSAnbWluaW1pc3QnO1xuaW1wb3J0IHsgaW1wb3J0UmVzb3VyY2VUeXBlIH0gZnJvbSAnLic7XG5cbmNvbnN0IGFyZ3MgPSBtaW5pbWlzdChwcm9jZXNzLmFyZ3Yuc2xpY2UoMiksIHtcbiAgc3RyaW5nOiBbXG4gICAgJ291dGRpcicsXG4gIF0sXG4gIGJvb2xlYW46IFtcbiAgICAnaGVscCcsXG4gIF0sXG4gIGFsaWFzOiB7XG4gICAgb3V0ZGlyOiAnbycsXG4gICAgaGVscDogJ2gnLFxuICB9LFxufSk7XG5cbmZ1bmN0aW9uIHNob3dIZWxwKCkge1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCdVc2FnZTogY2RrLWltcG9ydCBSRVNPVVJDRS1OQU1FW0BWRVJTSU9OXScpO1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCdPcHRpb25zOicpO1xuICBjb25zb2xlLmxvZygnICAtbywgLS1vdXRkaXIgICAgICAgT3V0cHV0IGRpcmVjdG9yeSAgICAgIFtzdHJpbmddICBbZGVmYXVsdDogXCIuXCJdJyk7XG4gIGNvbnNvbGUubG9nKCcgIC1oLCAtLWhlbHAgICAgICAgICBTaG93IHRoaXMgdXNhZ2UgaW5mbyAgW2Jvb2xlYW5dIFtkZWZhdWx0OiBmYWxzZV0nKTtcbiAgY29uc29sZS5sb2coJycpO1xuICBjb25zb2xlLmxvZygnRXhhbXBsZXM6Jyk7XG4gIGNvbnNvbGUubG9nKCcgIGNkay1pbXBvcnQgQVdTUVM6OkVLUzo6Q2x1c3RlciAgICAgICAgICAgICBHZW5lcmF0ZXMgYW4gTDEgY29uc3RydWN0IGZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyByZXNvdXJjZSB1bmRlciBhd3Nxcy1la3MtY2x1c3Rlci50cycpO1xuICBjb25zb2xlLmxvZygnICBjZGstaW1wb3J0IEFXU1FTOjpFS1M6OkNsdXN0ZXJAMS4yLjAgICAgICAgR2VuZXJhdGVzIGFuIEwxIGNvbnN0cnVjdCBmb3IgYSBzcGVjaWZpYyB2ZXJzaW9uJyk7XG4gIGNvbnNvbGUubG9nKCcgIGNkay1pbXBvcnQgLW8gc3JjIEFXU1FTOjpFS1M6OkNsdXN0ZXIgICAgICBHZW5lcmF0ZXMgYW4gTDEgY29uc3RydWN0IGluIHRoZSBzcmMgc3ViZm9sZGVyJyk7XG4gIGNvbnNvbGUubG9nKCcgIGNkay1pbXBvcnQgYXJuOmF3czpjbG91ZGZvcm1hdGlvbjouLi4gICAgICBHZW5lcmF0ZXMgYW4gTDEgY29uc3RydWN0IGFuZCBpZGVudGlmaWVzIHRoZSByZXNvdXJjZSB0eXBlIGJ5IGl0cyBBUk4nKTtcbn1cblxudm9pZCAoYXN5bmMgKCkgPT4ge1xuICBpZiAoYXJncy5oZWxwIHx8IGFyZ3MuXy5sZW5ndGggIT09IDEpIHtcbiAgICBzaG93SGVscCgpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IFtyZXNvdXJjZU5hbWUsIHJlc291cmNlVmVyc2lvbl0gPSBhcmdzLl9bMF0uc3BsaXQoJ0AnKTtcbiAgICBhd2FpdCBpbXBvcnRSZXNvdXJjZVR5cGUocmVzb3VyY2VOYW1lLCByZXNvdXJjZVZlcnNpb24sIGFyZ3Mub3V0ZGlyKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKGUpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxufSkoKTtcbiJdfQ==
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxrQ0FBa0M7QUFDbEMseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixxQ0FBcUM7QUFDckMsd0JBQXVDO0FBQ3ZDLDJDQUE4RDtBQUc5RCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDM0MsTUFBTSxFQUFFO1FBQ04sUUFBUTtRQUNSLFVBQVU7UUFDVixnQkFBZ0I7S0FDakI7SUFDRCxPQUFPLEVBQUU7UUFDUCxNQUFNO0tBQ1A7SUFDRCxLQUFLLEVBQUU7UUFDTCxNQUFNLEVBQUUsR0FBRztRQUNYLElBQUksRUFBRSxHQUFHO1FBQ1QsUUFBUSxFQUFFLEdBQUc7S0FDZDtDQUNGLENBQUMsQ0FBQztBQUVILFNBQVMsUUFBUTtJQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7SUFDaEUsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLGtGQUFrRixDQUFDLENBQUM7SUFDaEcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrR0FBa0csQ0FBQyxDQUFDO0lBQ2hILE9BQU8sQ0FBQyxHQUFHLENBQUMsa0ZBQWtGLENBQUMsQ0FBQztJQUNoRyxPQUFPLENBQUMsR0FBRyxDQUFDLGtGQUFrRixDQUFDLENBQUM7SUFDaEcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtRkFBbUYsQ0FBQyxDQUFDO0lBQ2pHLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6QixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLGtGQUFrRixDQUFDLENBQUM7SUFDaEcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0lBQ2hFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsOERBQThELENBQUMsQ0FBQztJQUM1RSxPQUFPLENBQUMsR0FBRyxDQUFDLDBGQUEwRixDQUFDLENBQUM7SUFDeEcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5RkFBeUYsQ0FBQyxDQUFDO0lBQ3ZHLE9BQU8sQ0FBQyxHQUFHLENBQUMscURBQXFELENBQUMsQ0FBQztJQUNuRSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLDRFQUE0RSxDQUFDLENBQUM7SUFDMUYsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1RkFBdUYsQ0FBQyxDQUFDO0lBQ3JHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQixDQUFDO0FBRUQsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFOztJQUNmLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDcEMsUUFBUSxFQUFFLENBQUM7UUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pCO0lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2REFBNkQsK0JBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUMvRztJQUVELElBQUksK0JBQW1CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixJQUFJLENBQUMsUUFBUSxnQkFBZ0IsK0JBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUN2RztJQUVELElBQUk7UUFDRixNQUFNLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdELE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSxxQkFBa0IsRUFBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sSUFBQSxzQkFBVSxFQUFDO1lBQ2YsTUFBTSxFQUFFLE9BQU87WUFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsTUFBTSxFQUFFLE1BQUEsSUFBSSxDQUFDLE1BQU0sbUNBQUksR0FBRztZQUMxQixRQUFRLEVBQUUsUUFBUTtZQUNsQixRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUMzQixXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUNsQyxDQUFDLENBQUM7S0FDSjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDakI7QUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIG1pbmltaXN0IGZyb20gJ21pbmltaXN0JztcbmltcG9ydCB7IGltcG9ydFJlc291cmNlVHlwZSB9IGZyb20gJy4nO1xuaW1wb3J0IHsgcmVuZGVyQ29kZSwgU1VQUE9SVEVEX0xBTkdVQUdFUyB9IGZyb20gJy4vbGFuZ3VhZ2VzJztcblxuXG5jb25zdCBhcmdzID0gbWluaW1pc3QocHJvY2Vzcy5hcmd2LnNsaWNlKDIpLCB7XG4gIHN0cmluZzogW1xuICAgICdvdXRkaXInLFxuICAgICdsYW5ndWFnZScsXG4gICAgJ2dvLW1vZHVsZS1uYW1lJyxcbiAgXSxcbiAgYm9vbGVhbjogW1xuICAgICdoZWxwJyxcbiAgXSxcbiAgYWxpYXM6IHtcbiAgICBvdXRkaXI6ICdvJyxcbiAgICBoZWxwOiAnaCcsXG4gICAgbGFuZ3VhZ2U6ICdsJyxcbiAgfSxcbn0pO1xuXG5mdW5jdGlvbiBzaG93SGVscCgpIHtcbiAgY29uc29sZS5sb2coJycpO1xuICBjb25zb2xlLmxvZygnVXNhZ2U6Jyk7XG4gIGNvbnNvbGUubG9nKCcgIGNkay1pbXBvcnQgLWwgTEFOR1VBR0UgUkVTT1VSQ0UtTkFNRVtAVkVSU0lPTl0nKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJ09wdGlvbnM6Jyk7XG4gIGNvbnNvbGUubG9nKCcgIC1sLCAtLWxhbmd1YWdlICAgICBPdXRwdXQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nXScpO1xuICBjb25zb2xlLmxvZygnICAtbywgLS1vdXRkaXIgICAgICAgT3V0cHV0IGRpcmVjdG9yeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10gIFtkZWZhdWx0OiBcIi5cIl0nKTtcbiAgY29uc29sZS5sb2coJyAgLS1nby1tb2R1bGUgICAgICAgIEdvIG1vZHVsZSBuYW1lIChyZXF1aXJlZCBpZiBsYW5ndWFnZSBpcyBcImdvbGFuZ1wiKSAgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgLS1qYXZhLXBhY2thZ2UgICAgIEphdmEgcGFja2FnZSBuYW1lIChyZXF1aXJlZCBpZiBsYW5ndWFnZSBpcyBcImphdmFcIikgW3N0cmluZ10nKTtcbiAgY29uc29sZS5sb2coJyAgLWgsIC0taGVscCAgICAgICAgIFNob3cgdGhpcyB1c2FnZSBpbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXScpO1xuICBjb25zb2xlLmxvZygnJyk7XG4gIGNvbnNvbGUubG9nKCdFeGFtcGxlczonKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJyAgR2VuZXJhdGVzIGNvbnN0cnVjdHMgZm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBBV1NRUzo6RUtTOjpDbHVzdGVyIGluIFR5cGVTY3JpcHQ6Jyk7XG4gIGNvbnNvbGUubG9nKCcgICAgY2RrLWltcG9ydCAtbCB0eXBlc2NyaXB0IEFXU1FTOjpFS1M6OkNsdXN0ZXInKTtcbiAgY29uc29sZS5sb2coKTtcbiAgY29uc29sZS5sb2coJyAgR2VuZXJhdGVzIGNvbnN0cnVjdCBpbiBHbyBmb3IgYSBzcGVjaWZpYyByZXNvdXJjZSB2ZXJzaW9uOicpO1xuICBjb25zb2xlLmxvZygnICAgIGNkay1pbXBvcnQgLWwgZ29sYW5nIC0tZ28tbW9kdWxlIFwiZ2l0aHViLmNvbS9hY2NvdW50L3JlcG9cIiBBV1NRUzo6RUtTOjpDbHVzdGVyQDEuMi4wJyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCcgIEdlbmVyYXRlcyBjb25zdHJ1Y3QgaW4gUHl0aG9uIHVuZGVyIHRoZSBcInNyY1wiIHN1YmZvbGRlciBpbnN0ZWFkIG9mIHdvcmtpbmcgZGlyZWN0b3J5OicpO1xuICBjb25zb2xlLmxvZygnICAgIGNkay1pbXBvcnQgLWwgcHl0aG9uIC1vIHNyYyBBV1NRUzo6RUtTOjpDbHVzdGVyJyk7XG4gIGNvbnNvbGUubG9nKCk7XG4gIGNvbnNvbGUubG9nKCcgIEdlbmVyYXRlcyBjb25zdHJ1Y3QgaW4gSmF2YSBhbmQgaWRlbnRpZmllcyB0aGUgcmVzb3VyY2UgdHlwZSBieSBpdHMgQVJOOicpO1xuICBjb25zb2xlLmxvZygnICAgIGNkay1pbXBvcnQgLWwgamF2YSAtLWphdmEtcGFja2FnZSBcImNvbS5hY21lLm15cHJvamVjdFwiIGFybjphd3M6Y2xvdWRmb3JtYXRpb246Li4uJyk7XG4gIGNvbnNvbGUubG9nKCk7XG59XG5cbnZvaWQgKGFzeW5jICgpID0+IHtcbiAgaWYgKGFyZ3MuaGVscCB8fCBhcmdzLl8ubGVuZ3RoICE9PSAxKSB7XG4gICAgc2hvd0hlbHAoKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cblxuICBpZiAoIWFyZ3MubGFuZ3VhZ2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgcmVxdWlyZWQgb3B0aW9uOiAtLWxhbmd1YWdlLiBTdXBwb3J0ZWQgbGFuZ3VhZ2VzOiAke1NVUFBPUlRFRF9MQU5HVUFHRVMuam9pbignLCcpfWApO1xuICB9XG5cbiAgaWYgKFNVUFBPUlRFRF9MQU5HVUFHRVMuaW5kZXhPZihhcmdzLmxhbmd1YWdlKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGxhbmd1YWdlICR7YXJncy5sYW5ndWFnZX0uIFN1cHBvcnRlZDogJHtTVVBQT1JURURfTEFOR1VBR0VTLmpvaW4oJywnKX1gKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgW3Jlc291cmNlTmFtZSwgcmVzb3VyY2VWZXJzaW9uXSA9IGFyZ3MuX1swXS5zcGxpdCgnQCcpO1xuICAgIGNvbnN0IHdvcmtkaXIgPSBhd2FpdCBmcy5ta2R0ZW1wKHBhdGguam9pbihvcy50bXBkaXIoKSwgJ2Nkay1pbXBvcnQnKSk7XG4gICAgY29uc3QgdHlwZU5hbWUgPSBhd2FpdCBpbXBvcnRSZXNvdXJjZVR5cGUocmVzb3VyY2VOYW1lLCByZXNvdXJjZVZlcnNpb24sIHdvcmtkaXIpO1xuICAgIGF3YWl0IHJlbmRlckNvZGUoe1xuICAgICAgc3JjZGlyOiB3b3JrZGlyLFxuICAgICAgbGFuZ3VhZ2U6IGFyZ3MubGFuZ3VhZ2UsXG4gICAgICBvdXRkaXI6IGFyZ3Mub3V0ZGlyID8/ICcuJyxcbiAgICAgIHR5cGVOYW1lOiB0eXBlTmFtZSxcbiAgICAgIGdvTW9kdWxlOiBhcmdzWydnby1tb2R1bGUnXSxcbiAgICAgIGphdmFQYWNha2dlOiBhcmdzWydqYXZhLXBhY2thZ2UnXSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKGUpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxufSkoKTtcbiJdfQ==
package/lib/index.d.ts CHANGED
@@ -4,5 +4,6 @@
4
4
  * @param resourceName the name or ARN of the resource type
5
5
  * @param resourceVersion the version of the resource type
6
6
  * @param outdir the out folder to use (defaults to the current directory)
7
+ * @returns name of the resource type
7
8
  */
8
- export declare function importResourceType(resourceName: string, resourceVersion: string, outdir?: string): Promise<void>;
9
+ export declare function importResourceType(resourceName: string, resourceVersion: string, outdir?: string): Promise<string>;
package/lib/index.js CHANGED
@@ -5,21 +5,22 @@ const fs = require("fs");
5
5
  const path = require("path");
6
6
  const cfn_registry_1 = require("./cfn-registry");
7
7
  const cfn_resource_generator_1 = require("./cfn-resource-generator");
8
- const util_1 = require("./util");
9
8
  /**
10
9
  * Entry point to import CFN resource types
11
10
  *
12
11
  * @param resourceName the name or ARN of the resource type
13
12
  * @param resourceVersion the version of the resource type
14
13
  * @param outdir the out folder to use (defaults to the current directory)
14
+ * @returns name of the resource type
15
15
  */
16
16
  async function importResourceType(resourceName, resourceVersion, outdir = '.') {
17
17
  const type = await (0, cfn_registry_1.describeResourceType)(resourceName, resourceVersion);
18
18
  const typeSchema = JSON.parse(type.Schema);
19
19
  const gen = new cfn_resource_generator_1.CfnResourceGenerator(type.TypeName, type, typeSchema);
20
20
  fs.mkdirSync(outdir, { recursive: true });
21
- fs.writeFileSync(path.join(outdir, (0, util_1.sanitizeFileName)(type.TypeName)), gen.render());
21
+ fs.writeFileSync(path.join(outdir, 'index.ts'), gen.render());
22
+ return type.TypeName;
22
23
  }
23
24
  exports.importResourceType = importResourceType;
24
25
  ;
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpREFBc0Q7QUFDdEQscUVBQWdFO0FBQ2hFLGlDQUEwQztBQUUxQzs7Ozs7O0dBTUc7QUFDSSxLQUFLLFVBQVUsa0JBQWtCLENBQUMsWUFBb0IsRUFBRSxlQUF1QixFQUFFLFNBQWlCLEdBQUc7SUFDMUcsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLG1DQUFvQixFQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsQ0FBQztJQUV2RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFPLENBQUMsQ0FBQztJQUU1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLDZDQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRXRFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFMUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFBLHVCQUFnQixFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3JGLENBQUM7QUFWRCxnREFVQztBQUFBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZGVzY3JpYmVSZXNvdXJjZVR5cGUgfSBmcm9tICcuL2Nmbi1yZWdpc3RyeSc7XG5pbXBvcnQgeyBDZm5SZXNvdXJjZUdlbmVyYXRvciB9IGZyb20gJy4vY2ZuLXJlc291cmNlLWdlbmVyYXRvcic7XG5pbXBvcnQgeyBzYW5pdGl6ZUZpbGVOYW1lIH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBFbnRyeSBwb2ludCB0byBpbXBvcnQgQ0ZOIHJlc291cmNlIHR5cGVzXG4gKlxuICogQHBhcmFtIHJlc291cmNlTmFtZSB0aGUgbmFtZSBvciBBUk4gb2YgdGhlIHJlc291cmNlIHR5cGVcbiAqIEBwYXJhbSByZXNvdXJjZVZlcnNpb24gdGhlIHZlcnNpb24gb2YgdGhlIHJlc291cmNlIHR5cGVcbiAqIEBwYXJhbSBvdXRkaXIgdGhlIG91dCBmb2xkZXIgdG8gdXNlIChkZWZhdWx0cyB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkpXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbXBvcnRSZXNvdXJjZVR5cGUocmVzb3VyY2VOYW1lOiBzdHJpbmcsIHJlc291cmNlVmVyc2lvbjogc3RyaW5nLCBvdXRkaXI6IHN0cmluZyA9ICcuJykge1xuICBjb25zdCB0eXBlID0gYXdhaXQgZGVzY3JpYmVSZXNvdXJjZVR5cGUocmVzb3VyY2VOYW1lLCByZXNvdXJjZVZlcnNpb24pO1xuXG4gIGNvbnN0IHR5cGVTY2hlbWEgPSBKU09OLnBhcnNlKHR5cGUuU2NoZW1hISk7XG5cbiAgY29uc3QgZ2VuID0gbmV3IENmblJlc291cmNlR2VuZXJhdG9yKHR5cGUuVHlwZU5hbWUsIHR5cGUsIHR5cGVTY2hlbWEpO1xuXG4gIGZzLm1rZGlyU3luYyhvdXRkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKG91dGRpciwgc2FuaXRpemVGaWxlTmFtZSh0eXBlLlR5cGVOYW1lKSksIGdlbi5yZW5kZXIoKSk7XG59O1xuIl19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpREFBc0Q7QUFDdEQscUVBQWdFO0FBRWhFOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUsa0JBQWtCLENBQUMsWUFBb0IsRUFBRSxlQUF1QixFQUFFLFNBQWlCLEdBQUc7SUFDMUcsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLG1DQUFvQixFQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsQ0FBQztJQUV2RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFPLENBQUMsQ0FBQztJQUU1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLDZDQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRXRFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFMUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUU5RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDdkIsQ0FBQztBQVpELGdEQVlDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBkZXNjcmliZVJlc291cmNlVHlwZSB9IGZyb20gJy4vY2ZuLXJlZ2lzdHJ5JztcbmltcG9ydCB7IENmblJlc291cmNlR2VuZXJhdG9yIH0gZnJvbSAnLi9jZm4tcmVzb3VyY2UtZ2VuZXJhdG9yJztcblxuLyoqXG4gKiBFbnRyeSBwb2ludCB0byBpbXBvcnQgQ0ZOIHJlc291cmNlIHR5cGVzXG4gKlxuICogQHBhcmFtIHJlc291cmNlTmFtZSB0aGUgbmFtZSBvciBBUk4gb2YgdGhlIHJlc291cmNlIHR5cGVcbiAqIEBwYXJhbSByZXNvdXJjZVZlcnNpb24gdGhlIHZlcnNpb24gb2YgdGhlIHJlc291cmNlIHR5cGVcbiAqIEBwYXJhbSBvdXRkaXIgdGhlIG91dCBmb2xkZXIgdG8gdXNlIChkZWZhdWx0cyB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkpXG4gKiBAcmV0dXJucyBuYW1lIG9mIHRoZSByZXNvdXJjZSB0eXBlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbXBvcnRSZXNvdXJjZVR5cGUocmVzb3VyY2VOYW1lOiBzdHJpbmcsIHJlc291cmNlVmVyc2lvbjogc3RyaW5nLCBvdXRkaXI6IHN0cmluZyA9ICcuJyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHR5cGUgPSBhd2FpdCBkZXNjcmliZVJlc291cmNlVHlwZShyZXNvdXJjZU5hbWUsIHJlc291cmNlVmVyc2lvbik7XG5cbiAgY29uc3QgdHlwZVNjaGVtYSA9IEpTT04ucGFyc2UodHlwZS5TY2hlbWEhKTtcblxuICBjb25zdCBnZW4gPSBuZXcgQ2ZuUmVzb3VyY2VHZW5lcmF0b3IodHlwZS5UeXBlTmFtZSwgdHlwZSwgdHlwZVNjaGVtYSk7XG5cbiAgZnMubWtkaXJTeW5jKG91dGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ob3V0ZGlyLCAnaW5kZXgudHMnKSwgZ2VuLnJlbmRlcigpKTtcblxuICByZXR1cm4gdHlwZS5UeXBlTmFtZTtcbn07XG4iXX0=
@@ -0,0 +1,16 @@
1
+ export declare const SUPPORTED_LANGUAGES: string[];
2
+ export interface RenderCodeOptions {
3
+ readonly srcdir: string;
4
+ readonly outdir: string;
5
+ readonly language: string;
6
+ readonly typeName: string;
7
+ /**
8
+ * The name of the Go module to use for the generated code. Required if `language` is `golang`.
9
+ */
10
+ readonly goModule?: string;
11
+ /**
12
+ * The name of the Java package to use for the generated code. Required if `language` is `java`.
13
+ */
14
+ readonly javaPacakge?: string;
15
+ }
16
+ export declare function renderCode(options: RenderCodeOptions): Promise<void>;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderCode = exports.SUPPORTED_LANGUAGES = void 0;
4
+ const fs = require("fs/promises");
5
+ const path = require("path");
6
+ const caseutil = require("case");
7
+ const jsii_srcmak_1 = require("jsii-srcmak");
8
+ const cdkDeps = [
9
+ '@aws-cdk/cloud-assembly-schema',
10
+ '@aws-cdk/core',
11
+ '@aws-cdk/cx-api',
12
+ '@aws-cdk/region-info',
13
+ 'constructs',
14
+ ];
15
+ exports.SUPPORTED_LANGUAGES = [
16
+ 'typescript',
17
+ 'python',
18
+ 'java',
19
+ 'csharp',
20
+ 'golang',
21
+ ];
22
+ async function renderCode(options) {
23
+ const srcmakopts = {
24
+ deps: cdkDeps.map(x => path.dirname(require.resolve(`${x}/package.json`))),
25
+ };
26
+ switch (options.language) {
27
+ case 'typescript':
28
+ await fs.mkdir(options.outdir, { recursive: true });
29
+ return fs.copyFile(path.join(options.srcdir, 'index.ts'), path.join(options.outdir, `${caseutil.header(options.typeName).toLowerCase()}.ts`));
30
+ case 'python':
31
+ srcmakopts.python = {
32
+ outdir: options.outdir,
33
+ moduleName: caseutil.snake(options.typeName),
34
+ };
35
+ break;
36
+ case 'csharp':
37
+ srcmakopts.csharp = {
38
+ outdir: options.outdir,
39
+ namespace: options.typeName, // already AWS::Foo::Bar
40
+ };
41
+ break;
42
+ case 'java':
43
+ if (!options.javaPacakge) {
44
+ throw new Error('Java package name (`--java-package`) must be specified (e.g. "com.foo.bar.my.resource")');
45
+ }
46
+ srcmakopts.java = {
47
+ outdir: options.outdir,
48
+ package: options.javaPacakge,
49
+ };
50
+ break;
51
+ case 'golang':
52
+ if (!options.goModule) {
53
+ throw new Error('Go module name (--go-module) is required (e.g. "github.com/foo/bar")');
54
+ }
55
+ srcmakopts.golang = {
56
+ outdir: options.outdir,
57
+ packageName: caseutil.lower(options.typeName, '-'),
58
+ moduleName: options.goModule,
59
+ };
60
+ break;
61
+ default:
62
+ throw new Error(`Unsupported language: ${options.language}`);
63
+ }
64
+ await (0, jsii_srcmak_1.srcmak)(options.srcdir, srcmakopts);
65
+ }
66
+ exports.renderCode = renderCode;
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xhbmd1YWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrQ0FBa0M7QUFDbEMsNkJBQTZCO0FBQzdCLGlDQUFpQztBQUNqQyw2Q0FBOEM7QUFFOUMsTUFBTSxPQUFPLEdBQUc7SUFDZCxnQ0FBZ0M7SUFDaEMsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQixzQkFBc0I7SUFDdEIsWUFBWTtDQUNiLENBQUM7QUFFVyxRQUFBLG1CQUFtQixHQUFHO0lBQ2pDLFlBQVk7SUFDWixRQUFRO0lBQ1IsTUFBTTtJQUNOLFFBQVE7SUFDUixRQUFRO0NBQ1QsQ0FBQztBQW1CSyxLQUFLLFVBQVUsVUFBVSxDQUFDLE9BQTBCO0lBQ3pELE1BQU0sVUFBVSxHQUFZO1FBQzFCLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0tBQzNFLENBQUM7SUFFRixRQUFRLE9BQU8sQ0FBQyxRQUFRLEVBQUU7UUFDeEIsS0FBSyxZQUFZO1lBQ2YsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNwRCxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWhKLEtBQUssUUFBUTtZQUNYLFVBQVUsQ0FBQyxNQUFNLEdBQUc7Z0JBQ2xCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsVUFBVSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQzthQUM3QyxDQUFDO1lBQ0YsTUFBTTtRQUVSLEtBQUssUUFBUTtZQUNYLFVBQVUsQ0FBQyxNQUFNLEdBQUc7Z0JBQ2xCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsd0JBQXdCO2FBQ3RELENBQUM7WUFDRixNQUFNO1FBRVIsS0FBSyxNQUFNO1lBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7Z0JBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMseUZBQXlGLENBQUMsQ0FBQzthQUM1RztZQUVELFVBQVUsQ0FBQyxJQUFJLEdBQUc7Z0JBQ2hCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2FBQzdCLENBQUM7WUFDRixNQUFNO1FBRVIsS0FBSyxRQUFRO1lBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0VBQXNFLENBQUMsQ0FBQzthQUN6RjtZQUVELFVBQVUsQ0FBQyxNQUFNLEdBQUc7Z0JBQ2xCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsV0FBVyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUM7Z0JBQ2xELFVBQVUsRUFBRSxPQUFPLENBQUMsUUFBUTthQUM3QixDQUFDO1lBQ0YsTUFBTTtRQUVSO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7S0FDaEU7SUFFRCxNQUFNLElBQUEsb0JBQU0sRUFBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFwREQsZ0NBb0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNhc2V1dGlsIGZyb20gJ2Nhc2UnO1xuaW1wb3J0IHsgc3JjbWFrLCBPcHRpb25zIH0gZnJvbSAnanNpaS1zcmNtYWsnO1xuXG5jb25zdCBjZGtEZXBzID0gW1xuICAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJyxcbiAgJ0Bhd3MtY2RrL2NvcmUnLFxuICAnQGF3cy1jZGsvY3gtYXBpJyxcbiAgJ0Bhd3MtY2RrL3JlZ2lvbi1pbmZvJyxcbiAgJ2NvbnN0cnVjdHMnLFxuXTtcblxuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9MQU5HVUFHRVMgPSBbXG4gICd0eXBlc2NyaXB0JyxcbiAgJ3B5dGhvbicsXG4gICdqYXZhJyxcbiAgJ2NzaGFycCcsXG4gICdnb2xhbmcnLFxuXTtcblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJDb2RlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHNyY2Rpcjogc3RyaW5nO1xuICByZWFkb25seSBvdXRkaXI6IHN0cmluZztcbiAgcmVhZG9ubHkgbGFuZ3VhZ2U6IHN0cmluZztcbiAgcmVhZG9ubHkgdHlwZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEdvIG1vZHVsZSB0byB1c2UgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZS4gUmVxdWlyZWQgaWYgYGxhbmd1YWdlYCBpcyBgZ29sYW5nYC5cbiAgICovXG4gIHJlYWRvbmx5IGdvTW9kdWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgSmF2YSBwYWNrYWdlIHRvIHVzZSBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlLiBSZXF1aXJlZCBpZiBgbGFuZ3VhZ2VgIGlzIGBqYXZhYC5cbiAgICovXG4gIHJlYWRvbmx5IGphdmFQYWNha2dlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyQ29kZShvcHRpb25zOiBSZW5kZXJDb2RlT3B0aW9ucykge1xuICBjb25zdCBzcmNtYWtvcHRzOiBPcHRpb25zID0ge1xuICAgIGRlcHM6IGNka0RlcHMubWFwKHggPT4gcGF0aC5kaXJuYW1lKHJlcXVpcmUucmVzb2x2ZShgJHt4fS9wYWNrYWdlLmpzb25gKSkpLFxuICB9O1xuXG4gIHN3aXRjaCAob3B0aW9ucy5sYW5ndWFnZSkge1xuICAgIGNhc2UgJ3R5cGVzY3JpcHQnOlxuICAgICAgYXdhaXQgZnMubWtkaXIob3B0aW9ucy5vdXRkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgcmV0dXJuIGZzLmNvcHlGaWxlKHBhdGguam9pbihvcHRpb25zLnNyY2RpciwgJ2luZGV4LnRzJyksIHBhdGguam9pbihvcHRpb25zLm91dGRpciwgYCR7Y2FzZXV0aWwuaGVhZGVyKG9wdGlvbnMudHlwZU5hbWUpLnRvTG93ZXJDYXNlKCl9LnRzYCkpO1xuXG4gICAgY2FzZSAncHl0aG9uJzpcbiAgICAgIHNyY21ha29wdHMucHl0aG9uID0ge1xuICAgICAgICBvdXRkaXI6IG9wdGlvbnMub3V0ZGlyLFxuICAgICAgICBtb2R1bGVOYW1lOiBjYXNldXRpbC5zbmFrZShvcHRpb25zLnR5cGVOYW1lKSxcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2NzaGFycCc6XG4gICAgICBzcmNtYWtvcHRzLmNzaGFycCA9IHtcbiAgICAgICAgb3V0ZGlyOiBvcHRpb25zLm91dGRpcixcbiAgICAgICAgbmFtZXNwYWNlOiBvcHRpb25zLnR5cGVOYW1lLCAvLyBhbHJlYWR5IEFXUzo6Rm9vOjpCYXJcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2phdmEnOlxuICAgICAgaWYgKCFvcHRpb25zLmphdmFQYWNha2dlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSmF2YSBwYWNrYWdlIG5hbWUgKGAtLWphdmEtcGFja2FnZWApIG11c3QgYmUgc3BlY2lmaWVkIChlLmcuIFwiY29tLmZvby5iYXIubXkucmVzb3VyY2VcIiknKTtcbiAgICAgIH1cblxuICAgICAgc3JjbWFrb3B0cy5qYXZhID0ge1xuICAgICAgICBvdXRkaXI6IG9wdGlvbnMub3V0ZGlyLFxuICAgICAgICBwYWNrYWdlOiBvcHRpb25zLmphdmFQYWNha2dlLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnZ29sYW5nJzpcbiAgICAgIGlmICghb3B0aW9ucy5nb01vZHVsZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dvIG1vZHVsZSBuYW1lICgtLWdvLW1vZHVsZSkgaXMgcmVxdWlyZWQgKGUuZy4gXCJnaXRodWIuY29tL2Zvby9iYXJcIiknKTtcbiAgICAgIH1cblxuICAgICAgc3JjbWFrb3B0cy5nb2xhbmcgPSB7XG4gICAgICAgIG91dGRpcjogb3B0aW9ucy5vdXRkaXIsXG4gICAgICAgIHBhY2thZ2VOYW1lOiBjYXNldXRpbC5sb3dlcihvcHRpb25zLnR5cGVOYW1lLCAnLScpLFxuICAgICAgICBtb2R1bGVOYW1lOiBvcHRpb25zLmdvTW9kdWxlLFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgbGFuZ3VhZ2U6ICR7b3B0aW9ucy5sYW5ndWFnZX1gKTtcbiAgfVxuXG4gIGF3YWl0IHNyY21hayhvcHRpb25zLnNyY2Rpciwgc3JjbWFrb3B0cyk7XG59XG4iXX0=
package/lib/util.d.ts CHANGED
@@ -5,10 +5,3 @@
5
5
  * @returns the name to use as class name
6
6
  */
7
7
  export declare function sanitizeTypeName(typeName: string): string;
8
- /**
9
- * convert the type name to a file name by kebap-casing and removing `::`
10
- *
11
- * @param typeName the name of the resource type
12
- * @returns the name to use as file name
13
- */
14
- export declare function sanitizeFileName(typeName: string): string;
package/lib/util.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sanitizeFileName = exports.sanitizeTypeName = void 0;
3
+ exports.sanitizeTypeName = void 0;
4
4
  /**
5
5
  * convert the type name to a TypeScript class name by camel-casing and removing `::`
6
6
  *
@@ -13,14 +13,4 @@ function sanitizeTypeName(typeName) {
13
13
  return lastPart.substr(0, 1).toUpperCase() + lastPart.substr(1).toLowerCase();
14
14
  }
15
15
  exports.sanitizeTypeName = sanitizeTypeName;
16
- /**
17
- * convert the type name to a file name by kebap-casing and removing `::`
18
- *
19
- * @param typeName the name of the resource type
20
- * @returns the name to use as file name
21
- */
22
- function sanitizeFileName(typeName) {
23
- return `${typeName.replace(/::/g, '-').toLowerCase()}.ts`;
24
- }
25
- exports.sanitizeFileName = sanitizeFileName;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsUUFBZ0I7SUFDL0MsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6QyxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDaEYsQ0FBQztBQUpELDRDQUlDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxRQUFnQjtJQUMvQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztBQUM1RCxDQUFDO0FBRkQsNENBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qKlxuICogY29udmVydCB0aGUgdHlwZSBuYW1lIHRvIGEgVHlwZVNjcmlwdCBjbGFzcyBuYW1lIGJ5IGNhbWVsLWNhc2luZyBhbmQgcmVtb3ZpbmcgYDo6YFxuICpcbiAqIEBwYXJhbSB0eXBlTmFtZSB0aGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UgdHlwZVxuICogQHJldHVybnMgdGhlIG5hbWUgdG8gdXNlIGFzIGNsYXNzIG5hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplVHlwZU5hbWUodHlwZU5hbWU6IHN0cmluZykge1xuICBjb25zdCBwYXJ0cyA9IHR5cGVOYW1lLnNwbGl0KCc6OicpO1xuICBjb25zdCBsYXN0UGFydCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuICByZXR1cm4gbGFzdFBhcnQuc3Vic3RyKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBsYXN0UGFydC5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBjb252ZXJ0IHRoZSB0eXBlIG5hbWUgdG8gYSBmaWxlIG5hbWUgYnkga2ViYXAtY2FzaW5nIGFuZCByZW1vdmluZyBgOjpgXG4gKlxuICogQHBhcmFtIHR5cGVOYW1lIHRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSB0eXBlXG4gKiBAcmV0dXJucyB0aGUgbmFtZSB0byB1c2UgYXMgZmlsZSBuYW1lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZUZpbGVOYW1lKHR5cGVOYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGAke3R5cGVOYW1lLnJlcGxhY2UoLzo6L2csICctJykudG9Mb3dlckNhc2UoKX0udHNgO1xufSJdfQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsUUFBZ0I7SUFDL0MsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6QyxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDaEYsQ0FBQztBQUpELDRDQUlDIiwic291cmNlc0NvbnRlbnQiOlsiXG4vKipcbiAqIGNvbnZlcnQgdGhlIHR5cGUgbmFtZSB0byBhIFR5cGVTY3JpcHQgY2xhc3MgbmFtZSBieSBjYW1lbC1jYXNpbmcgYW5kIHJlbW92aW5nIGA6OmBcbiAqXG4gKiBAcGFyYW0gdHlwZU5hbWUgdGhlIG5hbWUgb2YgdGhlIHJlc291cmNlIHR5cGVcbiAqIEByZXR1cm5zIHRoZSBuYW1lIHRvIHVzZSBhcyBjbGFzcyBuYW1lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZVR5cGVOYW1lKHR5cGVOYW1lOiBzdHJpbmcpIHtcbiAgY29uc3QgcGFydHMgPSB0eXBlTmFtZS5zcGxpdCgnOjonKTtcbiAgY29uc3QgbGFzdFBhcnQgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbiAgcmV0dXJuIGxhc3RQYXJ0LnN1YnN0cigwLCAxKS50b1VwcGVyQ2FzZSgpICsgbGFzdFBhcnQuc3Vic3RyKDEpLnRvTG93ZXJDYXNlKCk7XG59XG4iXX0=
package/package.json CHANGED
@@ -15,21 +15,21 @@
15
15
  "bump": "npx projen bump",
16
16
  "unbump": "npx projen unbump",
17
17
  "publish:github": "npx projen publish:github",
18
- "upgrade": "npx projen upgrade",
19
18
  "default": "npx projen default",
20
19
  "watch": "npx projen watch",
21
20
  "package": "npx projen package",
22
21
  "eslint": "npx projen eslint",
23
22
  "publish:npm": "npx projen publish:npm",
24
23
  "release": "npx projen release",
24
+ "upgrade": "npx projen upgrade",
25
25
  "projen": "npx projen"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@aws-cdk/core": "^1.125.0",
29
29
  "@types/jest": "^26.0.24",
30
30
  "@types/node": "^14.17.0",
31
- "@typescript-eslint/eslint-plugin": "^4.32.0",
32
- "@typescript-eslint/parser": "^4.32.0",
31
+ "@typescript-eslint/eslint-plugin": "^4.33.0",
32
+ "@typescript-eslint/parser": "^4.33.0",
33
33
  "aws-sdk-mock": "^5.4.0",
34
34
  "eslint": "^7.32.0",
35
35
  "eslint-import-resolver-node": "^0.3.6",
@@ -39,15 +39,16 @@
39
39
  "jest-junit": "^12",
40
40
  "json-schema": "^0.3.0",
41
41
  "npm-check-updates": "^11",
42
- "projen": "^0.28.33",
42
+ "projen": "^0.29.5",
43
43
  "standard-version": "^9",
44
44
  "ts-jest": "^27.0.5",
45
45
  "ts-node": "^10.2.1",
46
46
  "typescript": "^4.4.3"
47
47
  },
48
48
  "dependencies": {
49
- "aws-sdk": "^2.998.0",
50
- "camelcase": "^6.2.0",
49
+ "aws-sdk": "^2.1000.0",
50
+ "case": "^1.6.3",
51
+ "jsii-srcmak": "^0.1.357",
51
52
  "json2jsii": "^0.2.33",
52
53
  "minimist": "^1.2.5",
53
54
  "proxy-agent": "^5.0.0"
@@ -55,7 +56,7 @@
55
56
  "bundledDependencies": [],
56
57
  "main": "lib/index.js",
57
58
  "license": "Apache-2.0",
58
- "version": "0.0.33",
59
+ "version": "0.1.0",
59
60
  "jest": {
60
61
  "testMatch": [
61
62
  "**/__tests__/**/*.ts?(x)",