@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.
- package/.jsii +1088 -154
- package/docs/API.md +1636 -65
- package/docs/changelog.md +14 -0
- package/lib/contributions/team-claid/aws-glue/csv-table.d.ts +74 -0
- package/lib/contributions/team-claid/aws-glue/csv-table.js +64 -0
- package/lib/contributions/team-claid/aws-glue/index.d.ts +3 -0
- package/lib/contributions/team-claid/aws-glue/index.js +20 -0
- package/lib/contributions/team-claid/aws-glue/schema.d.ts +27 -0
- package/lib/contributions/team-claid/aws-glue/schema.js +74 -0
- package/lib/contributions/team-claid/aws-glue/view-table.d.ts +126 -0
- package/lib/contributions/team-claid/aws-glue/view-table.js +142 -0
- package/lib/contributions/team-claid/index.d.ts +3 -0
- package/lib/contributions/team-claid/index.js +20 -0
- package/lib/contributions/team-transport-two/datadog-synthetics/datadog-synthetics-test.d.ts +2 -2
- package/lib/contributions/team-transport-two/datadog-synthetics/datadog-synthetics-test.js +1 -1
- package/lib/index.d.ts +1 -2
- package/lib/index.js +2 -3
- package/package.json +10 -2
- package/version.json +1 -1
- package/lib/contributions/team-transport-two/datadog-synthetics/datadog-synthetics-test-custom-resource/handler.d.ts +0 -4
- package/lib/contributions/team-transport-two/datadog-synthetics/datadog-synthetics-test-custom-resource/handler.js +0 -101
- package/lib/datadogv2/secret-locator-custom-resource/on-create.d.ts +0 -2
- package/lib/datadogv2/secret-locator-custom-resource/on-create.js +0 -45
- package/lib/datadogv2/service-catalog-custom-resource/on-create.d.ts +0 -12
- package/lib/datadogv2/service-catalog-custom-resource/on-create.js +0 -69
- package/lib/fargate/codedeploy-custom-resources/create-deployment-is-complete.d.ts +0 -39
- package/lib/fargate/codedeploy-custom-resources/create-deployment-is-complete.js +0 -102
- package/lib/fargate/codedeploy-custom-resources/create-deployment-on-create.d.ts +0 -10
- package/lib/fargate/codedeploy-custom-resources/create-deployment-on-create.js +0 -75
- package/lib/fargate/codedeploy-custom-resources/run-monitoring-test-suite-runner.d.ts +0 -1
- package/lib/fargate/codedeploy-custom-resources/run-monitoring-test-suite-runner.js +0 -85
- package/lib/ses/lambda/ses-logger.d.ts +0 -2
- 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,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,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==
|
package/lib/contributions/team-transport-two/datadog-synthetics/datadog-synthetics-test.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
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 =
|
|
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.
|