@rio-cloud/cdk-v2-constructs 6.21.1-alpha.0 → 6.22.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/.jsii +1088 -154
  2. package/docs/API.md +1636 -65
  3. package/docs/changelog.md +14 -0
  4. package/lib/contributions/team-claid/aws-glue/csv-table.d.ts +74 -0
  5. package/lib/contributions/team-claid/aws-glue/csv-table.js +64 -0
  6. package/lib/contributions/team-claid/aws-glue/index.d.ts +3 -0
  7. package/lib/contributions/team-claid/aws-glue/index.js +20 -0
  8. package/lib/contributions/team-claid/aws-glue/schema.d.ts +27 -0
  9. package/lib/contributions/team-claid/aws-glue/schema.js +74 -0
  10. package/lib/contributions/team-claid/aws-glue/view-table.d.ts +126 -0
  11. package/lib/contributions/team-claid/aws-glue/view-table.js +142 -0
  12. package/lib/contributions/team-claid/index.d.ts +3 -0
  13. package/lib/contributions/team-claid/index.js +20 -0
  14. package/lib/contributions/team-transport-two/datadog-synthetics/datadog-synthetics-test.d.ts +2 -2
  15. package/lib/contributions/team-transport-two/datadog-synthetics/datadog-synthetics-test.js +1 -1
  16. package/lib/index.d.ts +1 -2
  17. package/lib/index.js +2 -3
  18. package/package.json +10 -2
  19. package/version.json +1 -1
  20. package/lib/contributions/team-transport-two/datadog-synthetics/datadog-synthetics-test-custom-resource/handler.d.ts +0 -4
  21. package/lib/contributions/team-transport-two/datadog-synthetics/datadog-synthetics-test-custom-resource/handler.js +0 -101
  22. package/lib/datadogv2/secret-locator-custom-resource/on-create.d.ts +0 -2
  23. package/lib/datadogv2/secret-locator-custom-resource/on-create.js +0 -45
  24. package/lib/datadogv2/service-catalog-custom-resource/on-create.d.ts +0 -12
  25. package/lib/datadogv2/service-catalog-custom-resource/on-create.js +0 -69
  26. package/lib/fargate/codedeploy-custom-resources/create-deployment-is-complete.d.ts +0 -39
  27. package/lib/fargate/codedeploy-custom-resources/create-deployment-is-complete.js +0 -102
  28. package/lib/fargate/codedeploy-custom-resources/create-deployment-on-create.d.ts +0 -10
  29. package/lib/fargate/codedeploy-custom-resources/create-deployment-on-create.js +0 -75
  30. package/lib/fargate/codedeploy-custom-resources/run-monitoring-test-suite-runner.d.ts +0 -1
  31. package/lib/fargate/codedeploy-custom-resources/run-monitoring-test-suite-runner.js +0 -85
  32. package/lib/ses/lambda/ses-logger.d.ts +0 -2
  33. package/lib/ses/lambda/ses-logger.js +0 -28
package/docs/changelog.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [6.22.0-alpha.0](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.21.1&sourceBranch=refs%2Ftags%2Fv6.22.0-alpha.0) (2025-03-10)
6
+
7
+
8
+ ### Features
9
+
10
+ * add athena tables contribution ([4007905](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/commits/4007905042fcb316e6c2dc0f43192b5ef7a6e3f8))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * attempt to get rid of the necessity of esModuleInterop setting ([65941b5](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/commits/65941b53ace5838178c8c2a53d4704ba490e7565))
16
+
17
+ ## [6.21.1](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.21.1-alpha.0&sourceBranch=refs%2Ftags%2Fv6.21.1) (2025-03-06)
18
+
5
19
  ## [6.21.1-alpha.0](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.21.0&sourceBranch=refs%2Ftags%2Fv6.21.1-alpha.0) (2025-03-06)
6
20
 
7
21
  ## [6.21.0](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv6.20.0&sourceBranch=refs%2Ftags%2Fv6.21.0) (2025-03-05)
@@ -0,0 +1,74 @@
1
+ import * as glue from 'aws-cdk-lib/aws-glue';
2
+ import type { Construct } from 'constructs';
3
+ import type { IType } from './schema';
4
+ /**
5
+ * Column definition for a CSV table.
6
+ */
7
+ export interface CsvColumnDefinition {
8
+ /**
9
+ * The type of the column.
10
+ */
11
+ readonly columnType: IType;
12
+ }
13
+ /**
14
+ * Properties for creating a CSV table.
15
+ */
16
+ export interface CsvTableProps {
17
+ /**
18
+ * The Glue database where the table will be created.
19
+ */
20
+ readonly database: glue.CfnDatabase;
21
+ /**
22
+ * The s3 location containing the CSV files.
23
+ */
24
+ readonly location: string;
25
+ /**
26
+ * The name of the table.
27
+ *
28
+ * @defaultValue - generated by CDK
29
+ */
30
+ readonly name?: string;
31
+ /**
32
+ * The column as defined in the CSV files.
33
+ */
34
+ readonly columns: Record<string, CsvColumnDefinition>;
35
+ /**
36
+ * The delimiter used in the CSV files.
37
+ *
38
+ * @defaultValue ';'
39
+ */
40
+ readonly delimiter?: string;
41
+ /**
42
+ * Whether the CSV file has a header line.
43
+ *
44
+ * @defaultValue true
45
+ */
46
+ readonly skipHeaderLine?: boolean;
47
+ /**
48
+ * Additional parameters for the LazySimpleSerDe.
49
+ *
50
+ * @see https://docs.aws.amazon.com/athena/latest/ug/lazy-simple-serde.html
51
+ */
52
+ readonly serdeParameterOverrides?: Record<string, string>;
53
+ }
54
+ /**
55
+ * A Glue table representing CSV files in S3.
56
+ *
57
+ * Sample usage:
58
+ * ```ts
59
+ * new CsvTable(this, 'AccountAllocationsTable', {
60
+ * database,
61
+ * location: bucket.s3UrlForObject('allocations'),
62
+ * name: 'account_allocations',
63
+ * columns: {
64
+ * account_id: { columnType: Schema.STRING },
65
+ * account_name: { columnType: Schema.STRING },
66
+ * allocation_principle: { columnType: Schema.STRING },
67
+ * comment: { columnType: Schema.STRING },
68
+ * },
69
+ * });
70
+ * ```
71
+ */
72
+ export declare class CsvTable extends glue.CfnTable {
73
+ constructor(scope: Construct, id: string, props: CsvTableProps);
74
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.CsvTable = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const cdk = require("aws-cdk-lib");
7
+ const glue = require("aws-cdk-lib/aws-glue");
8
+ /**
9
+ * A Glue table representing CSV files in S3.
10
+ *
11
+ * Sample usage:
12
+ * ```ts
13
+ * new CsvTable(this, 'AccountAllocationsTable', {
14
+ * database,
15
+ * location: bucket.s3UrlForObject('allocations'),
16
+ * name: 'account_allocations',
17
+ * columns: {
18
+ * account_id: { columnType: Schema.STRING },
19
+ * account_name: { columnType: Schema.STRING },
20
+ * allocation_principle: { columnType: Schema.STRING },
21
+ * comment: { columnType: Schema.STRING },
22
+ * },
23
+ * });
24
+ * ```
25
+ */
26
+ class CsvTable extends glue.CfnTable {
27
+ constructor(scope, id, props) {
28
+ super(scope, id, {
29
+ catalogId: props.database.catalogId,
30
+ databaseName: props.database.ref,
31
+ tableInput: {
32
+ name: props.name ?? cdk.Lazy.string({
33
+ produce: () => cdk.Names.uniqueResourceName(this, {}).toLowerCase(),
34
+ }),
35
+ tableType: 'EXTERNAL_TABLE',
36
+ parameters: {
37
+ 'classification': 'csv',
38
+ 'skip.header.line.count': props.skipHeaderLine === false ? '0' : '1',
39
+ },
40
+ storageDescriptor: {
41
+ columns: Object.entries(props.columns).map(([name, { columnType: type }]) => ({
42
+ name,
43
+ type: type.asGlueType(),
44
+ })),
45
+ location: props.location,
46
+ inputFormat: 'org.apache.hadoop.mapred.TextInputFormat',
47
+ outputFormat: 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat',
48
+ serdeInfo: {
49
+ serializationLibrary: 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe',
50
+ parameters: {
51
+ 'serialization.format': props.delimiter ?? ';',
52
+ 'field.delim': props.delimiter ?? ';',
53
+ ...props.serdeParameterOverrides,
54
+ },
55
+ },
56
+ },
57
+ },
58
+ });
59
+ }
60
+ }
61
+ exports.CsvTable = CsvTable;
62
+ _a = JSII_RTTI_SYMBOL_1;
63
+ CsvTable[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.CsvTable", version: "0.0.0" };
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9hd3MtZ2x1ZS9jc3YtdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBbUM7QUFDbkMsNkNBQTZDO0FBOEQ3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFhLFFBQVMsU0FBUSxJQUFJLENBQUMsUUFBUTtJQUN6QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW9CO1FBQzVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsU0FBUyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUztZQUNuQyxZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHO1lBQ2hDLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztvQkFDbEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRTtpQkFDcEUsQ0FBQztnQkFDRixTQUFTLEVBQUUsZ0JBQWdCO2dCQUMzQixVQUFVLEVBQUU7b0JBQ1YsZ0JBQWdCLEVBQUUsS0FBSztvQkFDdkIsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLGNBQWMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRztpQkFDckU7Z0JBQ0QsaUJBQWlCLEVBQUU7b0JBQ2pCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUM1RSxJQUFJO3dCQUNKLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO3FCQUN4QixDQUFDLENBQUM7b0JBQ0gsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO29CQUN4QixXQUFXLEVBQUUsMENBQTBDO29CQUN2RCxZQUFZLEVBQUUsNERBQTREO29CQUMxRSxTQUFTLEVBQUU7d0JBQ1Qsb0JBQW9CLEVBQUUsb0RBQW9EO3dCQUMxRSxVQUFVLEVBQUU7NEJBQ1Ysc0JBQXNCLEVBQUUsS0FBSyxDQUFDLFNBQVMsSUFBSSxHQUFHOzRCQUM5QyxhQUFhLEVBQUUsS0FBSyxDQUFDLFNBQVMsSUFBSSxHQUFHOzRCQUNyQyxHQUFHLEtBQUssQ0FBQyx1QkFBdUI7eUJBQ2pDO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQWpDSCw0QkFrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgZ2x1ZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2x1ZSc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUgeyBJVHlwZSB9IGZyb20gJy4vc2NoZW1hJztcblxuLyoqXG4gKiBDb2x1bW4gZGVmaW5pdGlvbiBmb3IgYSBDU1YgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3N2Q29sdW1uRGVmaW5pdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgY29sdW1uLlxuICAqL1xuICByZWFkb25seSBjb2x1bW5UeXBlOiBJVHlwZTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIENTViB0YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDc3ZUYWJsZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBHbHVlIGRhdGFiYXNlIHdoZXJlIHRoZSB0YWJsZSB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBkYXRhYmFzZTogZ2x1ZS5DZm5EYXRhYmFzZTtcblxuICAvKipcbiAgICogVGhlIHMzIGxvY2F0aW9uIGNvbnRhaW5pbmcgdGhlIENTViBmaWxlcy5cbiAgICovXG4gIHJlYWRvbmx5IGxvY2F0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB0YWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIGdlbmVyYXRlZCBieSBDREtcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb2x1bW4gYXMgZGVmaW5lZCBpbiB0aGUgQ1NWIGZpbGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgY29sdW1uczogUmVjb3JkPHN0cmluZywgQ3N2Q29sdW1uRGVmaW5pdGlvbj47XG5cbiAgLyoqXG4gICAqIFRoZSBkZWxpbWl0ZXIgdXNlZCBpbiB0aGUgQ1NWIGZpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlICc7J1xuICAgKi9cbiAgcmVhZG9ubHkgZGVsaW1pdGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBDU1YgZmlsZSBoYXMgYSBoZWFkZXIgbGluZS5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSB0cnVlXG4gICAqL1xuICByZWFkb25seSBza2lwSGVhZGVyTGluZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIExhenlTaW1wbGVTZXJEZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXRoZW5hL2xhdGVzdC91Zy9sYXp5LXNpbXBsZS1zZXJkZS5odG1sXG4gICAqL1xuICByZWFkb25seSBzZXJkZVBhcmFtZXRlck92ZXJyaWRlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKlxuICogQSBHbHVlIHRhYmxlIHJlcHJlc2VudGluZyBDU1YgZmlsZXMgaW4gUzMuXG4gKlxuICogU2FtcGxlIHVzYWdlOlxuICogYGBgdHNcbiAqICAgbmV3IENzdlRhYmxlKHRoaXMsICdBY2NvdW50QWxsb2NhdGlvbnNUYWJsZScsIHtcbiAqICAgICBkYXRhYmFzZSxcbiAqICAgICBsb2NhdGlvbjogYnVja2V0LnMzVXJsRm9yT2JqZWN0KCdhbGxvY2F0aW9ucycpLFxuICogICAgIG5hbWU6ICdhY2NvdW50X2FsbG9jYXRpb25zJyxcbiAqICAgICBjb2x1bW5zOiB7XG4gKiAgICAgICBhY2NvdW50X2lkOiB7IGNvbHVtblR5cGU6IFNjaGVtYS5TVFJJTkcgfSxcbiAqICAgICAgIGFjY291bnRfbmFtZTogeyBjb2x1bW5UeXBlOiBTY2hlbWEuU1RSSU5HIH0sXG4gKiAgICAgICBhbGxvY2F0aW9uX3ByaW5jaXBsZTogeyBjb2x1bW5UeXBlOiBTY2hlbWEuU1RSSU5HIH0sXG4gKiAgICAgICBjb21tZW50OiB7IGNvbHVtblR5cGU6IFNjaGVtYS5TVFJJTkcgfSxcbiAqICAgICB9LFxuICogICB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgQ3N2VGFibGUgZXh0ZW5kcyBnbHVlLkNmblRhYmxlIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENzdlRhYmxlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIGNhdGFsb2dJZDogcHJvcHMuZGF0YWJhc2UuY2F0YWxvZ0lkLFxuICAgICAgZGF0YWJhc2VOYW1lOiBwcm9wcy5kYXRhYmFzZS5yZWYsXG4gICAgICB0YWJsZUlucHV0OiB7XG4gICAgICAgIG5hbWU6IHByb3BzLm5hbWUgPz8gY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PiBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHt9KS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICB9KSxcbiAgICAgICAgdGFibGVUeXBlOiAnRVhURVJOQUxfVEFCTEUnLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgJ2NsYXNzaWZpY2F0aW9uJzogJ2NzdicsXG4gICAgICAgICAgJ3NraXAuaGVhZGVyLmxpbmUuY291bnQnOiBwcm9wcy5za2lwSGVhZGVyTGluZSA9PT0gZmFsc2UgPyAnMCcgOiAnMScsXG4gICAgICAgIH0sXG4gICAgICAgIHN0b3JhZ2VEZXNjcmlwdG9yOiB7XG4gICAgICAgICAgY29sdW1uczogT2JqZWN0LmVudHJpZXMocHJvcHMuY29sdW1ucykubWFwKChbbmFtZSwgeyBjb2x1bW5UeXBlOiB0eXBlIH1dKSA9PiAoe1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIHR5cGU6IHR5cGUuYXNHbHVlVHlwZSgpLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgICBsb2NhdGlvbjogcHJvcHMubG9jYXRpb24sXG4gICAgICAgICAgaW5wdXRGb3JtYXQ6ICdvcmcuYXBhY2hlLmhhZG9vcC5tYXByZWQuVGV4dElucHV0Rm9ybWF0JyxcbiAgICAgICAgICBvdXRwdXRGb3JtYXQ6ICdvcmcuYXBhY2hlLmhhZG9vcC5oaXZlLnFsLmlvLkhpdmVJZ25vcmVLZXlUZXh0T3V0cHV0Rm9ybWF0JyxcbiAgICAgICAgICBzZXJkZUluZm86IHtcbiAgICAgICAgICAgIHNlcmlhbGl6YXRpb25MaWJyYXJ5OiAnb3JnLmFwYWNoZS5oYWRvb3AuaGl2ZS5zZXJkZTIubGF6eS5MYXp5U2ltcGxlU2VyRGUnLFxuICAgICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgICAnc2VyaWFsaXphdGlvbi5mb3JtYXQnOiBwcm9wcy5kZWxpbWl0ZXIgPz8gJzsnLFxuICAgICAgICAgICAgICAnZmllbGQuZGVsaW0nOiBwcm9wcy5kZWxpbWl0ZXIgPz8gJzsnLFxuICAgICAgICAgICAgICAuLi5wcm9wcy5zZXJkZVBhcmFtZXRlck92ZXJyaWRlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn0iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './view-table';
2
+ export * from './csv-table';
3
+ export * from './schema';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./view-table"), exports);
18
+ __exportStar(require("./csv-table"), exports);
19
+ __exportStar(require("./schema"), exports);
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2F3cy1nbHVlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBNkI7QUFDN0IsOENBQTRCO0FBQzVCLDJDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdmlldy10YWJsZSc7XG5leHBvcnQgKiBmcm9tICcuL2Nzdi10YWJsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYSc7Il19
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Helper type to define schema types from AWS Glue And Presto.
3
+ */
4
+ export interface IType {
5
+ asGlueType(): string;
6
+ asPrestoType(): string;
7
+ }
8
+ /**
9
+ * Helper class to define schema types supported by AWS Glue And Presto.
10
+ */
11
+ export declare class Schema {
12
+ static readonly BYTE: IType;
13
+ static readonly SHORT: IType;
14
+ static readonly INTEGER: IType;
15
+ static readonly BIGINT: IType;
16
+ static readonly LONG: IType;
17
+ static readonly FLOAT: IType;
18
+ static readonly DOUBLE: IType;
19
+ static readonly DECIMAL: IType;
20
+ static readonly STRING: IType;
21
+ static readonly BOOLEAN: IType;
22
+ static readonly TIMESTAMP: IType;
23
+ static readonly DATE: IType;
24
+ static mapType(keyType: IType, valueType: IType): IType;
25
+ static arrayType(elementType: IType): IType;
26
+ static structType(columns: Record<string, IType>): IType;
27
+ }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Schema = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ class PrimitiveType {
7
+ constructor(glueType, prestoType) {
8
+ this.glueType = glueType;
9
+ this.prestoType = prestoType;
10
+ }
11
+ asGlueType() {
12
+ return this.glueType;
13
+ }
14
+ asPrestoType() {
15
+ return this.prestoType ?? this.glueType;
16
+ }
17
+ }
18
+ class MapType {
19
+ constructor(keyType, valueType) {
20
+ this.keyType = keyType;
21
+ this.valueType = valueType;
22
+ }
23
+ asGlueType() {
24
+ return `map<${this.keyType.asGlueType()}, ${this.valueType.asGlueType()}>`;
25
+ }
26
+ asPrestoType() {
27
+ return `map(${this.keyType.asPrestoType()}, ${this.valueType.asPrestoType()})`;
28
+ }
29
+ }
30
+ class StructType {
31
+ constructor(columns) {
32
+ this.columns = columns;
33
+ }
34
+ asGlueType() {
35
+ const entries = Object.entries(this.columns);
36
+ return `struct<${entries.map(([name, type]) => `${name}: ${type.asGlueType()}`).join(', ')}>`;
37
+ }
38
+ asPrestoType() {
39
+ const entries = Object.entries(this.columns);
40
+ return `row(${entries.map(([name, type]) => `${name} ${type.asGlueType()}`).join(', ')})`;
41
+ }
42
+ }
43
+ /**
44
+ * Helper class to define schema types supported by AWS Glue And Presto.
45
+ */
46
+ class Schema {
47
+ static mapType(keyType, valueType) { return new MapType(keyType, valueType); }
48
+ ;
49
+ static arrayType(elementType) {
50
+ return {
51
+ asGlueType: () => `array<${elementType.asGlueType()}>`,
52
+ asPrestoType: () => `array(${elementType.asPrestoType()})`,
53
+ };
54
+ }
55
+ ;
56
+ static structType(columns) { return new StructType(columns); }
57
+ ;
58
+ }
59
+ exports.Schema = Schema;
60
+ _a = JSII_RTTI_SYMBOL_1;
61
+ Schema[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.Schema", version: "0.0.0" };
62
+ Schema.BYTE = new PrimitiveType('byte');
63
+ Schema.SHORT = new PrimitiveType('short');
64
+ Schema.INTEGER = new PrimitiveType('integer');
65
+ Schema.BIGINT = new PrimitiveType('bigint');
66
+ Schema.LONG = new PrimitiveType('long');
67
+ Schema.FLOAT = new PrimitiveType('float');
68
+ Schema.DOUBLE = new PrimitiveType('double');
69
+ Schema.DECIMAL = new PrimitiveType('decimal');
70
+ Schema.STRING = new PrimitiveType('string', 'varchar');
71
+ Schema.BOOLEAN = new PrimitiveType('boolean');
72
+ Schema.TIMESTAMP = new PrimitiveType('timestamp');
73
+ Schema.DATE = new PrimitiveType('date');
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9hd3MtZ2x1ZS9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFRQSxNQUFNLGFBQWE7SUFDakIsWUFBNkIsUUFBZ0IsRUFBbUIsVUFBbUI7UUFBdEQsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUFtQixlQUFVLEdBQVYsVUFBVSxDQUFTO0lBQUcsQ0FBQztJQUN2RixVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPO0lBQ1gsWUFBNkIsT0FBYyxFQUFtQixTQUFnQjtRQUFqRCxZQUFPLEdBQVAsT0FBTyxDQUFPO1FBQW1CLGNBQVMsR0FBVCxTQUFTLENBQU87SUFBRyxDQUFDO0lBQ2xGLFVBQVU7UUFDUixPQUFPLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUM7SUFDN0UsQ0FBQztJQUNELFlBQVk7UUFDVixPQUFPLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUM7SUFDakYsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVO0lBQ2QsWUFBNkIsT0FBOEI7UUFBOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7SUFBRyxDQUFDO0lBQy9ELFVBQVU7UUFDUixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QyxPQUFPLFVBQVUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2hHLENBQUM7SUFDRCxZQUFZO1FBQ1YsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsT0FBTyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUM1RixDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQWEsTUFBTTtJQWNWLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBYyxFQUFFLFNBQWdCLElBQVcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUNwRyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQWtCO1FBQ3hDLE9BQU87WUFDTCxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxXQUFXLENBQUMsVUFBVSxFQUFFLEdBQUc7WUFDdEQsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsV0FBVyxDQUFDLFlBQVksRUFBRSxHQUFHO1NBQzNELENBQUM7SUFDSixDQUFDO0lBQUEsQ0FBQztJQUNLLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBOEIsSUFBVyxPQUFPLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7O0FBckJ0Ryx3QkFzQkM7OztBQXJCd0IsV0FBSSxHQUFVLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3hDLFlBQUssR0FBVSxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMxQyxjQUFPLEdBQVUsSUFBSSxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDOUMsYUFBTSxHQUFVLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzVDLFdBQUksR0FBVSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4QyxZQUFLLEdBQVUsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDMUMsYUFBTSxHQUFVLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzVDLGNBQU8sR0FBVSxJQUFJLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM5QyxhQUFNLEdBQVUsSUFBSSxhQUFhLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZELGNBQU8sR0FBVSxJQUFJLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM5QyxnQkFBUyxHQUFVLElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2xELFdBQUksR0FBVSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSGVscGVyIHR5cGUgdG8gZGVmaW5lIHNjaGVtYSB0eXBlcyBmcm9tIEFXUyBHbHVlIEFuZCBQcmVzdG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVR5cGUge1xuICBhc0dsdWVUeXBlKCk6IHN0cmluZztcbiAgYXNQcmVzdG9UeXBlKCk6IHN0cmluZztcbn1cblxuY2xhc3MgUHJpbWl0aXZlVHlwZSBpbXBsZW1lbnRzIElUeXBlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBnbHVlVHlwZTogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IHByZXN0b1R5cGU/OiBzdHJpbmcpIHt9XG4gIGFzR2x1ZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nbHVlVHlwZTtcbiAgfVxuICBhc1ByZXN0b1R5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcmVzdG9UeXBlID8/IHRoaXMuZ2x1ZVR5cGU7XG4gIH1cbn1cblxuY2xhc3MgTWFwVHlwZSBpbXBsZW1lbnRzIElUeXBlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBrZXlUeXBlOiBJVHlwZSwgcHJpdmF0ZSByZWFkb25seSB2YWx1ZVR5cGU6IElUeXBlKSB7fVxuICBhc0dsdWVUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBtYXA8JHt0aGlzLmtleVR5cGUuYXNHbHVlVHlwZSgpfSwgJHt0aGlzLnZhbHVlVHlwZS5hc0dsdWVUeXBlKCl9PmA7XG4gIH1cbiAgYXNQcmVzdG9UeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBtYXAoJHt0aGlzLmtleVR5cGUuYXNQcmVzdG9UeXBlKCl9LCAke3RoaXMudmFsdWVUeXBlLmFzUHJlc3RvVHlwZSgpfSlgO1xuICB9XG59XG5cbmNsYXNzIFN0cnVjdFR5cGUgaW1wbGVtZW50cyBJVHlwZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29sdW1uczogUmVjb3JkPHN0cmluZywgSVR5cGU+KSB7fVxuICBhc0dsdWVUeXBlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuY29sdW1ucyk7XG4gICAgcmV0dXJuIGBzdHJ1Y3Q8JHtlbnRyaWVzLm1hcCgoW25hbWUsIHR5cGVdKSA9PiBgJHtuYW1lfTogJHt0eXBlLmFzR2x1ZVR5cGUoKX1gKS5qb2luKCcsICcpfT5gO1xuICB9XG4gIGFzUHJlc3RvVHlwZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyh0aGlzLmNvbHVtbnMpO1xuICAgIHJldHVybiBgcm93KCR7ZW50cmllcy5tYXAoKFtuYW1lLCB0eXBlXSkgPT4gYCR7bmFtZX0gJHt0eXBlLmFzR2x1ZVR5cGUoKX1gKS5qb2luKCcsICcpfSlgO1xuICB9XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIHRvIGRlZmluZSBzY2hlbWEgdHlwZXMgc3VwcG9ydGVkIGJ5IEFXUyBHbHVlIEFuZCBQcmVzdG8uXG4gKi9cbmV4cG9ydCBjbGFzcyBTY2hlbWEge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJZVEU6IElUeXBlID0gbmV3IFByaW1pdGl2ZVR5cGUoJ2J5dGUnKTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTSE9SVDogSVR5cGUgPSBuZXcgUHJpbWl0aXZlVHlwZSgnc2hvcnQnKTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBJTlRFR0VSOiBJVHlwZSA9IG5ldyBQcmltaXRpdmVUeXBlKCdpbnRlZ2VyJyk7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQklHSU5UOiBJVHlwZSA9IG5ldyBQcmltaXRpdmVUeXBlKCdiaWdpbnQnKTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMT05HOiBJVHlwZSA9IG5ldyBQcmltaXRpdmVUeXBlKCdsb25nJyk7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRkxPQVQ6IElUeXBlID0gbmV3IFByaW1pdGl2ZVR5cGUoJ2Zsb2F0Jyk7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRE9VQkxFOiBJVHlwZSA9IG5ldyBQcmltaXRpdmVUeXBlKCdkb3VibGUnKTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUNJTUFMOiBJVHlwZSA9IG5ldyBQcmltaXRpdmVUeXBlKCdkZWNpbWFsJyk7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1RSSU5HOiBJVHlwZSA9IG5ldyBQcmltaXRpdmVUeXBlKCdzdHJpbmcnLCAndmFyY2hhcicpO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJPT0xFQU46IElUeXBlID0gbmV3IFByaW1pdGl2ZVR5cGUoJ2Jvb2xlYW4nKTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUSU1FU1RBTVA6IElUeXBlID0gbmV3IFByaW1pdGl2ZVR5cGUoJ3RpbWVzdGFtcCcpO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERBVEU6IElUeXBlID0gbmV3IFByaW1pdGl2ZVR5cGUoJ2RhdGUnKTtcblxuICBwdWJsaWMgc3RhdGljIG1hcFR5cGUoa2V5VHlwZTogSVR5cGUsIHZhbHVlVHlwZTogSVR5cGUpOiBJVHlwZSB7IHJldHVybiBuZXcgTWFwVHlwZShrZXlUeXBlLCB2YWx1ZVR5cGUpOyB9O1xuICBwdWJsaWMgc3RhdGljIGFycmF5VHlwZShlbGVtZW50VHlwZTogSVR5cGUpOiBJVHlwZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFzR2x1ZVR5cGU6ICgpID0+IGBhcnJheTwke2VsZW1lbnRUeXBlLmFzR2x1ZVR5cGUoKX0+YCxcbiAgICAgIGFzUHJlc3RvVHlwZTogKCkgPT4gYGFycmF5KCR7ZWxlbWVudFR5cGUuYXNQcmVzdG9UeXBlKCl9KWAsXG4gICAgfTtcbiAgfTtcbiAgcHVibGljIHN0YXRpYyBzdHJ1Y3RUeXBlKGNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIElUeXBlPik6IElUeXBlIHsgcmV0dXJuIG5ldyBTdHJ1Y3RUeXBlKGNvbHVtbnMpOyB9O1xufVxuIl19
@@ -0,0 +1,126 @@
1
+ import * as cdk from 'aws-cdk-lib';
2
+ import { CfnTable, CfnDatabase } from 'aws-cdk-lib/aws-glue';
3
+ import * as iam from 'aws-cdk-lib/aws-iam';
4
+ import type { Construct } from 'constructs';
5
+ import { IType } from './schema';
6
+ /**
7
+ * Column definition for a view.
8
+ *
9
+ * Sample:
10
+ * ```ts
11
+ * {
12
+ * columnType: Schema.DOUBLE,
13
+ * definition: 'price_per_unit * quantity'
14
+ * }
15
+ * ```
16
+ */
17
+ export interface ViewTableColumnDefinition {
18
+ /**
19
+ * The type of the column.
20
+ */
21
+ readonly columnType: IType;
22
+ /**
23
+ * If the column is a derived column, this is the SQL definition.
24
+ *
25
+ * As example for just renaming a column the definition would be `old_column_name` but also more complex SQL statements are possible.
26
+ */
27
+ readonly definition?: string;
28
+ }
29
+ export interface ViewTableProps {
30
+ /**
31
+ * The view name.
32
+ *
33
+ * @defaultValue - generated by CDK
34
+ */
35
+ readonly viewName?: string;
36
+ /**
37
+ * Description of the view.
38
+ */
39
+ readonly description?: string;
40
+ /**
41
+ * SQL Query statement to query the source data which is actually the FROM statement.
42
+ * @example `orders`
43
+ */
44
+ readonly fromQuery: string;
45
+ /**
46
+ * Glue database where the view will be created.
47
+ */
48
+ readonly database: string | cdk.IResolvable | CfnDatabase;
49
+ /**
50
+ * Columns of a view.
51
+ *
52
+ * Sample:
53
+ * ```ts
54
+ * {
55
+ * total: {
56
+ * columnType: Schema.DOUBLE,
57
+ * definition: 'price_per_unit * quantity'
58
+ * },
59
+ * }
60
+ * ```
61
+ */
62
+ readonly columns: Record<string, ViewTableColumnDefinition>;
63
+ }
64
+ /**
65
+ * A representation of a View in Athena, which is actually a Glue Table.
66
+ *
67
+ * Sample usage:
68
+ * ```ts
69
+ * new ViewTable(this, 'AwsAmortizedCostsView', {
70
+ * database: database,
71
+ * viewName: 'cur2_with_amortized_costs',
72
+ * fromQuery: '"cid_data_export"."cur2"',
73
+ * columns: {
74
+ * ...cur2Schema.columns,
75
+ * amortized_cost: {
76
+ * columnType: Schema.DOUBLE,
77
+ * definition: `CASE
78
+ * WHEN (line_item_line_item_type = 'SavingsPlanCoveredUsage') THEN savings_plan_net_savings_plan_effective_cost
79
+ * WHEN (line_item_line_item_type = 'SavingsPlanRecurringFee') THEN (savings_plan_total_commitment_to_date - savings_plan_used_commitment)
80
+ * WHEN (line_item_line_item_type = 'SavingsPlanNegation') THEN 0
81
+ * WHEN (line_item_line_item_type = 'SavingsPlanUpfrontFee') THEN 0
82
+ * WHEN (line_item_line_item_type = 'EdpDiscount' AND line_item_product_code = 'ComputeSavingsPlans') THEN 0
83
+ * WHEN (line_item_line_item_type = 'EdpDiscount' AND line_item_product_code = 'AWSSupportEnterprise') THEN 0
84
+ * WHEN (line_item_line_item_type = 'DiscountedUsage') THEN reservation_effective_cost
85
+ * WHEN (line_item_line_item_type = 'RIFee') THEN (reservation_unused_amortized_upfront_fee_for_billing_period + reservation_unused_recurring_fee)
86
+ * WHEN ((line_item_line_item_type = 'Fee') AND (reservation_reservation_a_r_n <> '')) THEN 0
87
+ * ELSE line_item_unblended_cost END`
88
+ * }
89
+ * }
90
+ *});
91
+ * ```
92
+ *
93
+ * @see https://github.com/aws/aws-cdk/blob/main/packages/%40aws-cdk/aws-glue-alpha
94
+ */
95
+ export declare class ViewTable extends cdk.Resource {
96
+ /**
97
+ * @internal
98
+ */
99
+ protected readonly _viewName: string;
100
+ /**
101
+ * @internal
102
+ */
103
+ protected readonly _resource: CfnTable;
104
+ /**
105
+ * @internal
106
+ */
107
+ protected readonly _databaseName: string;
108
+ /**
109
+ * @internal
110
+ */
111
+ protected readonly _arn: string;
112
+ /**
113
+ * @internal
114
+ */
115
+ protected readonly _databaseArn: string;
116
+ /**
117
+ * @internal
118
+ */
119
+ protected readonly _catalogArn: string;
120
+ constructor(scope: Construct, id: string, props: ViewTableProps);
121
+ grant(grantee: iam.IGrantable, actions: string[]): cdk.aws_iam.Grant;
122
+ grantToUnderlyingResources(grantee: iam.IGrantable, actions: string[]): cdk.aws_iam.Grant;
123
+ grantRead(grantee: iam.IGrantable): cdk.aws_iam.Grant;
124
+ grantWrite(grantee: iam.IGrantable): cdk.aws_iam.Grant;
125
+ grantReadWrite(grantee: iam.IGrantable): cdk.aws_iam.Grant;
126
+ }
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ViewTable = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const cdk = require("aws-cdk-lib");
7
+ const aws_glue_1 = require("aws-cdk-lib/aws-glue");
8
+ const iam = require("aws-cdk-lib/aws-iam");
9
+ const READ_PERMISSIONS = [
10
+ 'glue:BatchGetPartition',
11
+ 'glue:GetPartition',
12
+ 'glue:GetPartitions',
13
+ 'glue:GetTable',
14
+ 'glue:GetTables',
15
+ 'glue:GetTableVersion',
16
+ 'glue:GetTableVersions',
17
+ ];
18
+ const WRITE_PERMISSIONS = [
19
+ 'glue:BatchCreatePartition',
20
+ 'glue:BatchDeletePartition',
21
+ 'glue:CreatePartition',
22
+ 'glue:DeletePartition',
23
+ 'glue:UpdatePartition',
24
+ ];
25
+ /**
26
+ * A representation of a View in Athena, which is actually a Glue Table.
27
+ *
28
+ * Sample usage:
29
+ * ```ts
30
+ * new ViewTable(this, 'AwsAmortizedCostsView', {
31
+ * database: database,
32
+ * viewName: 'cur2_with_amortized_costs',
33
+ * fromQuery: '"cid_data_export"."cur2"',
34
+ * columns: {
35
+ * ...cur2Schema.columns,
36
+ * amortized_cost: {
37
+ * columnType: Schema.DOUBLE,
38
+ * definition: `CASE
39
+ * WHEN (line_item_line_item_type = 'SavingsPlanCoveredUsage') THEN savings_plan_net_savings_plan_effective_cost
40
+ * WHEN (line_item_line_item_type = 'SavingsPlanRecurringFee') THEN (savings_plan_total_commitment_to_date - savings_plan_used_commitment)
41
+ * WHEN (line_item_line_item_type = 'SavingsPlanNegation') THEN 0
42
+ * WHEN (line_item_line_item_type = 'SavingsPlanUpfrontFee') THEN 0
43
+ * WHEN (line_item_line_item_type = 'EdpDiscount' AND line_item_product_code = 'ComputeSavingsPlans') THEN 0
44
+ * WHEN (line_item_line_item_type = 'EdpDiscount' AND line_item_product_code = 'AWSSupportEnterprise') THEN 0
45
+ * WHEN (line_item_line_item_type = 'DiscountedUsage') THEN reservation_effective_cost
46
+ * WHEN (line_item_line_item_type = 'RIFee') THEN (reservation_unused_amortized_upfront_fee_for_billing_period + reservation_unused_recurring_fee)
47
+ * WHEN ((line_item_line_item_type = 'Fee') AND (reservation_reservation_a_r_n <> '')) THEN 0
48
+ * ELSE line_item_unblended_cost END`
49
+ * }
50
+ * }
51
+ *});
52
+ * ```
53
+ *
54
+ * @see https://github.com/aws/aws-cdk/blob/main/packages/%40aws-cdk/aws-glue-alpha
55
+ */
56
+ class ViewTable extends cdk.Resource {
57
+ constructor(scope, id, props) {
58
+ super(scope, id, {
59
+ physicalName: props.viewName ??
60
+ cdk.Lazy.string({
61
+ produce: () => cdk.Names.uniqueResourceName(this, {}).toLowerCase(),
62
+ }),
63
+ });
64
+ this._viewName = this.physicalName;
65
+ if (props.database instanceof aws_glue_1.CfnDatabase) {
66
+ this._databaseName = props.database.ref;
67
+ }
68
+ else {
69
+ this._databaseName = props.database.toString();
70
+ }
71
+ const columns = Object.entries(props.columns).map(([name, { columnType: type }]) => ({ name, type }));
72
+ const selectColumns = Object.entries(props.columns)
73
+ .map(([name, { definition }]) => (definition ? `${definition} AS ${name}` : name))
74
+ .join(', ');
75
+ const queryString = `SELECT ${selectColumns}\n FROM ${props.fromQuery}`;
76
+ const prestoView = {
77
+ catalog: 'awsdatacatalog',
78
+ schema: this._databaseName,
79
+ owner: cdk.Stack.of(this).account,
80
+ originalSql: queryString,
81
+ isProtected: false,
82
+ columns: columns.map(column => ({
83
+ name: column.name,
84
+ type: column.type.asPrestoType(),
85
+ })),
86
+ };
87
+ this._resource = new aws_glue_1.CfnTable(this, 'Resource', {
88
+ databaseName: this._databaseName,
89
+ catalogId: cdk.Stack.of(this).account,
90
+ tableInput: {
91
+ tableType: 'VIRTUAL_VIEW',
92
+ name: props.viewName,
93
+ description: props.description,
94
+ owner: cdk.Stack.of(this).account,
95
+ parameters: { presto_view: 'true', comment: 'Presto View' },
96
+ storageDescriptor: {
97
+ columns: columns.map(column => ({
98
+ name: column.name,
99
+ type: column.type.asGlueType(),
100
+ })),
101
+ },
102
+ viewExpandedText: '/* Presto View */',
103
+ viewOriginalText: `/* Presto View: ${Buffer.from(JSON.stringify(prestoView)).toString('base64')} */`,
104
+ },
105
+ });
106
+ const stack = cdk.Stack.of(this);
107
+ this._arn = `arn:aws:glue:${stack.region}:${stack.account}:table/${this._databaseName}/${this._resource.ref}`;
108
+ this._catalogArn = `arn:aws:glue:${stack.region}:${stack.account}:catalog`;
109
+ this._databaseArn = `arn:aws:glue:${stack.region}:${stack.account}:database/${this._databaseName}`;
110
+ }
111
+ grant(grantee, actions) {
112
+ return iam.Grant.addToPrincipal({
113
+ grantee,
114
+ resourceArns: [this._arn.toString()],
115
+ actions,
116
+ });
117
+ }
118
+ grantToUnderlyingResources(grantee, actions) {
119
+ return iam.Grant.addToPrincipal({
120
+ grantee,
121
+ resourceArns: [
122
+ this._arn.toString(),
123
+ this._catalogArn.toString(),
124
+ this._databaseArn.toString(),
125
+ ],
126
+ actions,
127
+ });
128
+ }
129
+ grantRead(grantee) {
130
+ return this.grant(grantee, [...READ_PERMISSIONS, ...WRITE_PERMISSIONS]);
131
+ }
132
+ grantWrite(grantee) {
133
+ return this.grant(grantee, WRITE_PERMISSIONS);
134
+ }
135
+ grantReadWrite(grantee) {
136
+ return this.grant(grantee, READ_PERMISSIONS);
137
+ }
138
+ }
139
+ exports.ViewTable = ViewTable;
140
+ _a = JSII_RTTI_SYMBOL_1;
141
+ ViewTable[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.ViewTable", version: "0.0.0" };
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy10YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb250cmlidXRpb25zL3RlYW0tY2xhaWQvYXdzLWdsdWUvdmlldy10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUFtQztBQUNuQyxtREFBNkQ7QUFDN0QsMkNBQTJDO0FBcUUzQyxNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLHdCQUF3QjtJQUN4QixtQkFBbUI7SUFDbkIsb0JBQW9CO0lBQ3BCLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsc0JBQXNCO0lBQ3RCLHVCQUF1QjtDQUN4QixDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBRztJQUN4QiwyQkFBMkI7SUFDM0IsMkJBQTJCO0lBQzNCLHNCQUFzQjtJQUN0QixzQkFBc0I7SUFDdEIsc0JBQXNCO0NBQ3ZCLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsR0FBRyxDQUFDLFFBQVE7SUE0QnpDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7UUFDN0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVE7Z0JBQzFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO29CQUNkLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUU7aUJBQ3BFLENBQUM7U0FDTCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFbkMsSUFBSSxLQUFLLENBQUMsUUFBUSxZQUFZLHNCQUFXLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FB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QXVCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUMvQyxDQUFDOztBQXpISCw4QkEwSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ2ZuVGFibGUsIENmbkRhdGFiYXNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWdsdWUnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElUeXBlIH0gZnJvbSAnLi9zY2hlbWEnO1xuXG4vKipcbiAqIENvbHVtbiBkZWZpbml0aW9uIGZvciBhIHZpZXcuXG4gKlxuICogU2FtcGxlOlxuICogYGBgdHNcbiAqIHtcbiAqICBjb2x1bW5UeXBlOiBTY2hlbWEuRE9VQkxFLFxuICogIGRlZmluaXRpb246ICdwcmljZV9wZXJfdW5pdCAqIHF1YW50aXR5J1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmlld1RhYmxlQ29sdW1uRGVmaW5pdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgY29sdW1uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29sdW1uVHlwZTogSVR5cGU7XG5cbiAgLyoqXG4gICAqIElmIHRoZSBjb2x1bW4gaXMgYSBkZXJpdmVkIGNvbHVtbiwgdGhpcyBpcyB0aGUgU1FMIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEFzIGV4YW1wbGUgZm9yIGp1c3QgcmVuYW1pbmcgYSBjb2x1bW4gdGhlIGRlZmluaXRpb24gd291bGQgYmUgYG9sZF9jb2x1bW5fbmFtZWAgYnV0IGFsc28gbW9yZSBjb21wbGV4IFNRTCBzdGF0ZW1lbnRzIGFyZSBwb3NzaWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmluaXRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld1RhYmxlUHJvcHMge1xuICAvKipcbiAgICogVGhlIHZpZXcgbmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSAtIGdlbmVyYXRlZCBieSBDREtcbiAgICovXG4gIHJlYWRvbmx5IHZpZXdOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBvZiB0aGUgdmlldy5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTUUwgUXVlcnkgc3RhdGVtZW50IHRvIHF1ZXJ5IHRoZSBzb3VyY2UgZGF0YSB3aGljaCBpcyBhY3R1YWxseSB0aGUgRlJPTSBzdGF0ZW1lbnQuXG4gICAqIEBleGFtcGxlIGBvcmRlcnNgXG4gICAqL1xuICByZWFkb25seSBmcm9tUXVlcnk6IHN0cmluZztcblxuICAvKipcbiAgICogR2x1ZSBkYXRhYmFzZSB3aGVyZSB0aGUgdmlldyB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBkYXRhYmFzZTogc3RyaW5nIHwgY2RrLklSZXNvbHZhYmxlIHwgQ2ZuRGF0YWJhc2U7XG5cbiAgLyoqXG4gICAqIENvbHVtbnMgb2YgYSB2aWV3LlxuICAgKlxuICAgKiBTYW1wbGU6XG4gICAqIGBgYHRzXG4gICAqIHtcbiAgICogICB0b3RhbDoge1xuICAgKiAgICAgY29sdW1uVHlwZTogU2NoZW1hLkRPVUJMRSxcbiAgICogICAgIGRlZmluaXRpb246ICdwcmljZV9wZXJfdW5pdCAqIHF1YW50aXR5J1xuICAgKiAgIH0sXG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICByZWFkb25seSBjb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBWaWV3VGFibGVDb2x1bW5EZWZpbml0aW9uPjtcbn1cblxuY29uc3QgUkVBRF9QRVJNSVNTSU9OUyA9IFtcbiAgJ2dsdWU6QmF0Y2hHZXRQYXJ0aXRpb24nLFxuICAnZ2x1ZTpHZXRQYXJ0aXRpb24nLFxuICAnZ2x1ZTpHZXRQYXJ0aXRpb25zJyxcbiAgJ2dsdWU6R2V0VGFibGUnLFxuICAnZ2x1ZTpHZXRUYWJsZXMnLFxuICAnZ2x1ZTpHZXRUYWJsZVZlcnNpb24nLFxuICAnZ2x1ZTpHZXRUYWJsZVZlcnNpb25zJyxcbl07XG5cbmNvbnN0IFdSSVRFX1BFUk1JU1NJT05TID0gW1xuICAnZ2x1ZTpCYXRjaENyZWF0ZVBhcnRpdGlvbicsXG4gICdnbHVlOkJhdGNoRGVsZXRlUGFydGl0aW9uJyxcbiAgJ2dsdWU6Q3JlYXRlUGFydGl0aW9uJyxcbiAgJ2dsdWU6RGVsZXRlUGFydGl0aW9uJyxcbiAgJ2dsdWU6VXBkYXRlUGFydGl0aW9uJyxcbl07XG5cbi8qKlxuICogQSByZXByZXNlbnRhdGlvbiBvZiBhIFZpZXcgaW4gQXRoZW5hLCB3aGljaCBpcyBhY3R1YWxseSBhIEdsdWUgVGFibGUuXG4gKlxuICogU2FtcGxlIHVzYWdlOlxuICogYGBgdHNcbiAqIG5ldyBWaWV3VGFibGUodGhpcywgJ0F3c0Ftb3J0aXplZENvc3RzVmlldycsIHtcbiAqICBkYXRhYmFzZTogZGF0YWJhc2UsXG4gKiAgdmlld05hbWU6ICdjdXIyX3dpdGhfYW1vcnRpemVkX2Nvc3RzJyxcbiAqICBmcm9tUXVlcnk6ICdcImNpZF9kYXRhX2V4cG9ydFwiLlwiY3VyMlwiJyxcbiAqICBjb2x1bW5zOiB7XG4gKiAgICAuLi5jdXIyU2NoZW1hLmNvbHVtbnMsXG4gKiAgICBhbW9ydGl6ZWRfY29zdDoge1xuICogICAgICBjb2x1bW5UeXBlOiBTY2hlbWEuRE9VQkxFLFxuICogICAgICBkZWZpbml0aW9uOiBgQ0FTRVxuICogIFdIRU4gKGxpbmVfaXRlbV9saW5lX2l0ZW1fdHlwZSA9ICdTYXZpbmdzUGxhbkNvdmVyZWRVc2FnZScpIFRIRU4gc2F2aW5nc19wbGFuX25ldF9zYXZpbmdzX3BsYW5fZWZmZWN0aXZlX2Nvc3RcbiAqICBXSEVOIChsaW5lX2l0ZW1fbGluZV9pdGVtX3R5cGUgPSAnU2F2aW5nc1BsYW5SZWN1cnJpbmdGZWUnKSBUSEVOIChzYXZpbmdzX3BsYW5fdG90YWxfY29tbWl0bWVudF90b19kYXRlIC0gc2F2aW5nc19wbGFuX3VzZWRfY29tbWl0bWVudClcbiAqICBXSEVOIChsaW5lX2l0ZW1fbGluZV9pdGVtX3R5cGUgPSAnU2F2aW5nc1BsYW5OZWdhdGlvbicpIFRIRU4gMFxuICogIFdIRU4gKGxpbmVfaXRlbV9saW5lX2l0ZW1fdHlwZSA9ICdTYXZpbmdzUGxhblVwZnJvbnRGZWUnKSBUSEVOIDBcbiAqICBXSEVOIChsaW5lX2l0ZW1fbGluZV9pdGVtX3R5cGUgPSAnRWRwRGlzY291bnQnIEFORCBsaW5lX2l0ZW1fcHJvZHVjdF9jb2RlID0gJ0NvbXB1dGVTYXZpbmdzUGxhbnMnKSBUSEVOIDBcbiAqICBXSEVOIChsaW5lX2l0ZW1fbGluZV9pdGVtX3R5cGUgPSAnRWRwRGlzY291bnQnIEFORCBsaW5lX2l0ZW1fcHJvZHVjdF9jb2RlID0gJ0FXU1N1cHBvcnRFbnRlcnByaXNlJykgVEhFTiAwXG4gKiAgV0hFTiAobGluZV9pdGVtX2xpbmVfaXRlbV90eXBlID0gJ0Rpc2NvdW50ZWRVc2FnZScpIFRIRU4gcmVzZXJ2YXRpb25fZWZmZWN0aXZlX2Nvc3RcbiAqICBXSEVOIChsaW5lX2l0ZW1fbGluZV9pdGVtX3R5cGUgPSAnUklGZWUnKSBUSEVOIChyZXNlcnZhdGlvbl91bnVzZWRfYW1vcnRpemVkX3VwZnJvbnRfZmVlX2Zvcl9iaWxsaW5nX3BlcmlvZCArIHJlc2VydmF0aW9uX3VudXNlZF9yZWN1cnJpbmdfZmVlKVxuICogIFdIRU4gKChsaW5lX2l0ZW1fbGluZV9pdGVtX3R5cGUgPSAnRmVlJykgQU5EIChyZXNlcnZhdGlvbl9yZXNlcnZhdGlvbl9hX3JfbiA8PiAnJykpIFRIRU4gMFxuICogIEVMU0UgbGluZV9pdGVtX3VuYmxlbmRlZF9jb3N0IEVORGBcbiAqICAgIH1cbiAqICB9XG4gKn0pO1xuICogYGBgXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi9tYWluL3BhY2thZ2VzLyU0MGF3cy1jZGsvYXdzLWdsdWUtYWxwaGFcbiAqL1xuZXhwb3J0IGNsYXNzIFZpZXdUYWJsZSBleHRlbmRzIGNkay5SZXNvdXJjZSB7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF92aWV3TmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3Jlc291cmNlOiBDZm5UYWJsZTtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kYXRhYmFzZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9hcm46IHN0cmluZztcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kYXRhYmFzZUFybjogc3RyaW5nO1xuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NhdGFsb2dBcm46IHN0cmluZztcblxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWaWV3VGFibGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOiBwcm9wcy52aWV3TmFtZSA/P1xuICAgICAgICBjZGsuTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+IGNkay5OYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge30pLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmlld05hbWUgPSB0aGlzLnBoeXNpY2FsTmFtZTtcblxuICAgIGlmIChwcm9wcy5kYXRhYmFzZSBpbnN0YW5jZW9mIENmbkRhdGFiYXNlKSB7XG4gICAgICB0aGlzLl9kYXRhYmFzZU5hbWUgPSBwcm9wcy5kYXRhYmFzZS5yZWY7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2RhdGFiYXNlTmFtZSA9IHByb3BzLmRhdGFiYXNlLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29sdW1ucyA9IE9iamVjdC5lbnRyaWVzKHByb3BzLmNvbHVtbnMpLm1hcCgoW25hbWUsIHsgY29sdW1uVHlwZTogdHlwZSB9XSkgPT4gKHsgbmFtZSwgdHlwZSB9KSk7XG4gICAgY29uc3Qgc2VsZWN0Q29sdW1ucyA9IE9iamVjdC5lbnRyaWVzKHByb3BzLmNvbHVtbnMpXG4gICAgICAubWFwKChbbmFtZSwgeyBkZWZpbml0aW9uIH1dKSA9PiAoZGVmaW5pdGlvbiA/IGAke2RlZmluaXRpb259IEFTICR7bmFtZX1gIDogbmFtZSkpXG4gICAgICAuam9pbignLCAnKTtcblxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYFNFTEVDVCAke3NlbGVjdENvbHVtbnN9XFxuIEZST00gJHtwcm9wcy5mcm9tUXVlcnl9YDtcblxuICAgIGNvbnN0IHByZXN0b1ZpZXcgPSB7XG4gICAgICBjYXRhbG9nOiAnYXdzZGF0YWNhdGFsb2cnLFxuICAgICAgc2NoZW1hOiB0aGlzLl9kYXRhYmFzZU5hbWUsXG4gICAgICBvd25lcjogY2RrLlN0YWNrLm9mKHRoaXMpLmFjY291bnQsXG4gICAgICBvcmlnaW5hbFNxbDogcXVlcnlTdHJpbmcsXG4gICAgICBpc1Byb3RlY3RlZDogZmFsc2UsXG4gICAgICBjb2x1bW5zOiBjb2x1bW5zLm1hcChjb2x1bW4gPT4gKHtcbiAgICAgICAgbmFtZTogY29sdW1uLm5hbWUsXG4gICAgICAgIHR5cGU6IGNvbHVtbi50eXBlLmFzUHJlc3RvVHlwZSgpLFxuICAgICAgfSkpLFxuICAgIH07XG5cbiAgICB0aGlzLl9yZXNvdXJjZSA9IG5ldyBDZm5UYWJsZShcbiAgICAgIHRoaXMsXG4gICAgICAnUmVzb3VyY2UnLFxuICAgICAge1xuICAgICAgICBkYXRhYmFzZU5hbWU6IHRoaXMuX2RhdGFiYXNlTmFtZSxcbiAgICAgICAgY2F0YWxvZ0lkOiBjZGsuU3RhY2sub2YodGhpcykuYWNjb3VudCxcbiAgICAgICAgdGFibGVJbnB1dDoge1xuICAgICAgICAgIHRhYmxlVHlwZTogJ1ZJUlRVQUxfVklFVycsXG4gICAgICAgICAgbmFtZTogcHJvcHMudmlld05hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIG93bmVyOiBjZGsuU3RhY2sub2YodGhpcykuYWNjb3VudCxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7IHByZXN0b192aWV3OiAndHJ1ZScsIGNvbW1lbnQ6ICdQcmVzdG8gVmlldycgfSxcbiAgICAgICAgICBzdG9yYWdlRGVzY3JpcHRvcjoge1xuICAgICAgICAgICAgY29sdW1uczogY29sdW1ucy5tYXAoY29sdW1uID0+ICh7XG4gICAgICAgICAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgICAgICAgICB0eXBlOiBjb2x1bW4udHlwZS5hc0dsdWVUeXBlKCksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB2aWV3RXhwYW5kZWRUZXh0OiAnLyogUHJlc3RvIFZpZXcgKi8nLFxuICAgICAgICAgIHZpZXdPcmlnaW5hbFRleHQ6IGAvKiBQcmVzdG8gVmlldzogJHtCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShwcmVzdG9WaWV3KSkudG9TdHJpbmcoJ2Jhc2U2NCcpfSAqL2AsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZih0aGlzKTtcbiAgICB0aGlzLl9hcm4gPSBgYXJuOmF3czpnbHVlOiR7c3RhY2sucmVnaW9ufToke3N0YWNrLmFjY291bnR9OnRhYmxlLyR7dGhpcy5fZGF0YWJhc2VOYW1lfS8ke3RoaXMuX3Jlc291cmNlLnJlZn1gO1xuICAgIHRoaXMuX2NhdGFsb2dBcm4gPSBgYXJuOmF3czpnbHVlOiR7c3RhY2sucmVnaW9ufToke3N0YWNrLmFjY291bnR9OmNhdGFsb2dgO1xuICAgIHRoaXMuX2RhdGFiYXNlQXJuID0gYGFybjphd3M6Z2x1ZToke3N0YWNrLnJlZ2lvbn06JHtzdGFjay5hY2NvdW50fTpkYXRhYmFzZS8ke3RoaXMuX2RhdGFiYXNlTmFtZX1gO1xuICB9XG5cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIGFjdGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5fYXJuLnRvU3RyaW5nKCldLFxuICAgICAgYWN0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudFRvVW5kZXJseWluZ1Jlc291cmNlcyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgYWN0aW9uczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICByZXNvdXJjZUFybnM6IFtcbiAgICAgICAgdGhpcy5fYXJuLnRvU3RyaW5nKCksXG4gICAgICAgIHRoaXMuX2NhdGFsb2dBcm4udG9TdHJpbmcoKSxcbiAgICAgICAgdGhpcy5fZGF0YWJhc2VBcm4udG9TdHJpbmcoKSxcbiAgICAgIF0sXG4gICAgICBhY3Rpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgWy4uLlJFQURfUEVSTUlTU0lPTlMsIC4uLldSSVRFX1BFUk1JU1NJT05TXSk7XG4gIH1cbiAgZ3JhbnRXcml0ZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSkge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsIFdSSVRFX1BFUk1JU1NJT05TKTtcbiAgfVxuICBncmFudFJlYWRXcml0ZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSkge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsIFJFQURfUEVSTUlTU0lPTlMpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './aws-glue';
2
+ export * from './aws-backup-monitoring';
3
+ export * from './datadog-usage-monitoring';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./aws-glue"), exports);
18
+ __exportStar(require("./aws-backup-monitoring"), exports);
19
+ __exportStar(require("./datadog-usage-monitoring"), exports);
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBMkI7QUFDM0IsMERBQXdDO0FBQ3hDLDZEQUEyQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXdzLWdsdWUnO1xuZXhwb3J0ICogZnJvbSAnLi9hd3MtYmFja3VwLW1vbml0b3JpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhZG9nLXVzYWdlLW1vbml0b3JpbmcnOyJdfQ==
@@ -1,6 +1,6 @@
1
- import { v1 as datadog } from '@datadog/datadog-api-client';
1
+ import type { SyntheticsAPITest, SyntheticsBrowserTest, SyntheticsMobileTest } from '@datadog/datadog-api-client/dist/packages/datadog-api-client-v1';
2
2
  import { Construct } from 'constructs';
3
- type SyntheticsTest = datadog.SyntheticsAPITest | datadog.SyntheticsBrowserTest | datadog.SyntheticsMobileTest;
3
+ type SyntheticsTest = SyntheticsAPITest | SyntheticsBrowserTest | SyntheticsMobileTest;
4
4
  export interface DatadogSyntheticsTestProps {
5
5
  /**
6
6
  * The name of the service to which the test belongs.