cdk-amazon-connect-constructs 0.1.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/lib/index.js ADDED
@@ -0,0 +1,23 @@
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("./connect-instance"), exports);
18
+ __exportStar(require("./hours-of-operation"), exports);
19
+ __exportStar(require("./queue"), exports);
20
+ __exportStar(require("./routing-profile"), exports);
21
+ __exportStar(require("./contact-flow"), exports);
22
+ __exportStar(require("./lambda-integration"), exports);
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUFtQztBQUNuQyx1REFBcUM7QUFDckMsMENBQXdCO0FBQ3hCLG9EQUFrQztBQUNsQyxpREFBK0I7QUFDL0IsdURBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb25uZWN0LWluc3RhbmNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9ob3Vycy1vZi1vcGVyYXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL3F1ZXVlJztcclxuZXhwb3J0ICogZnJvbSAnLi9yb3V0aW5nLXByb2ZpbGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRhY3QtZmxvdyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGFtYmRhLWludGVncmF0aW9uJztcclxuIl19
@@ -0,0 +1,27 @@
1
+ import { aws_connect as connect, aws_lambda as lambda } from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
3
+ import { IConnectInstance } from './connect-instance';
4
+ /**
5
+ * Properties for LambdaIntegration.
6
+ */
7
+ export interface LambdaIntegrationProps {
8
+ /**
9
+ * Amazon Connect instance to associate with the function.
10
+ */
11
+ readonly instance: IConnectInstance;
12
+ /**
13
+ * Lambda function that Amazon Connect can invoke.
14
+ */
15
+ readonly function: lambda.IFunction;
16
+ }
17
+ /**
18
+ * Associates a Lambda function with an Amazon Connect instance and grants invoke access.
19
+ */
20
+ export declare class LambdaIntegration extends Construct {
21
+ /**
22
+ * The underlying AWS::Connect::IntegrationAssociation resource.
23
+ */
24
+ readonly association: connect.CfnIntegrationAssociation;
25
+ constructor(scope: Construct, id: string, props: LambdaIntegrationProps);
26
+ }
27
+ //# sourceMappingURL=lambda-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda-integration.d.ts","sourceRoot":"","sources":["../src/lambda-integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,OAAO,EAAkB,UAAU,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC;CACrC;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,SAAS;IAC9C;;OAEG;IACH,SAAgB,WAAW,EAAE,OAAO,CAAC,yBAAyB,CAAC;gBAE5C,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB;CAsB/E"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LambdaIntegration = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
6
+ const constructs_1 = require("constructs");
7
+ /**
8
+ * Associates a Lambda function with an Amazon Connect instance and grants invoke access.
9
+ */
10
+ class LambdaIntegration extends constructs_1.Construct {
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-amazon-connect-constructs.LambdaIntegration", version: "0.1.0-alpha.0" };
12
+ /**
13
+ * The underlying AWS::Connect::IntegrationAssociation resource.
14
+ */
15
+ association;
16
+ constructor(scope, id, props) {
17
+ super(scope, id);
18
+ if (!props.instance) {
19
+ throw new Error('instance is required.');
20
+ }
21
+ if (!props.function) {
22
+ throw new Error('function is required.');
23
+ }
24
+ this.association = new aws_cdk_lib_1.aws_connect.CfnIntegrationAssociation(this, 'Resource', {
25
+ instanceId: props.instance.instanceId,
26
+ integrationArn: props.function.functionArn,
27
+ integrationType: 'LAMBDA_FUNCTION',
28
+ });
29
+ props.function.addPermission('AllowAmazonConnectInvoke', {
30
+ action: 'lambda:InvokeFunction',
31
+ principal: new aws_cdk_lib_1.aws_iam.ServicePrincipal('connect.amazonaws.com'),
32
+ sourceArn: props.instance.instanceArn,
33
+ });
34
+ }
35
+ }
36
+ exports.LambdaIntegration = LambdaIntegration;
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLWludGVncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xhbWJkYS1pbnRlZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkNBQTJGO0FBQzNGLDJDQUF1QztBQWtCdkM7O0dBRUc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLHNCQUFTOztJQUM5Qzs7T0FFRztJQUNhLFdBQVcsQ0FBb0M7SUFFL0QsWUFBbUIsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkI7UUFDNUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBTyxDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDekUsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVTtZQUNyQyxjQUFjLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXO1lBQzFDLGVBQWUsRUFBRSxpQkFBaUI7U0FDbkMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsMEJBQTBCLEVBQUU7WUFDdkQsTUFBTSxFQUFFLHVCQUF1QjtZQUMvQixTQUFTLEVBQUUsSUFBSSxxQkFBRyxDQUFDLGdCQUFnQixDQUFDLHVCQUF1QixDQUFDO1lBQzVELFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVc7U0FDdEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUEzQkgsOENBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzX2Nvbm5lY3QgYXMgY29ubmVjdCwgYXdzX2lhbSBhcyBpYW0sIGF3c19sYW1iZGEgYXMgbGFtYmRhIH0gZnJvbSAnYXdzLWNkay1saWInO1xyXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcclxuaW1wb3J0IHsgSUNvbm5lY3RJbnN0YW5jZSB9IGZyb20gJy4vY29ubmVjdC1pbnN0YW5jZSc7XHJcblxyXG4vKipcclxuICogUHJvcGVydGllcyBmb3IgTGFtYmRhSW50ZWdyYXRpb24uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUludGVncmF0aW9uUHJvcHMge1xyXG4gIC8qKlxyXG4gICAqIEFtYXpvbiBDb25uZWN0IGluc3RhbmNlIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBmdW5jdGlvbi5cclxuICAgKi9cclxuICByZWFkb25seSBpbnN0YW5jZTogSUNvbm5lY3RJbnN0YW5jZTtcclxuXHJcbiAgLyoqXHJcbiAgICogTGFtYmRhIGZ1bmN0aW9uIHRoYXQgQW1hem9uIENvbm5lY3QgY2FuIGludm9rZS5cclxuICAgKi9cclxuICByZWFkb25seSBmdW5jdGlvbjogbGFtYmRhLklGdW5jdGlvbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFzc29jaWF0ZXMgYSBMYW1iZGEgZnVuY3Rpb24gd2l0aCBhbiBBbWF6b24gQ29ubmVjdCBpbnN0YW5jZSBhbmQgZ3JhbnRzIGludm9rZSBhY2Nlc3MuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTGFtYmRhSW50ZWdyYXRpb24gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xyXG4gIC8qKlxyXG4gICAqIFRoZSB1bmRlcmx5aW5nIEFXUzo6Q29ubmVjdDo6SW50ZWdyYXRpb25Bc3NvY2lhdGlvbiByZXNvdXJjZS5cclxuICAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgYXNzb2NpYXRpb246IGNvbm5lY3QuQ2ZuSW50ZWdyYXRpb25Bc3NvY2lhdGlvbjtcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBMYW1iZGFJbnRlZ3JhdGlvblByb3BzKSB7XHJcbiAgICBzdXBlcihzY29wZSwgaWQpO1xyXG5cclxuICAgIGlmICghcHJvcHMuaW5zdGFuY2UpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnN0YW5jZSBpcyByZXF1aXJlZC4nKTtcclxuICAgIH1cclxuICAgIGlmICghcHJvcHMuZnVuY3Rpb24pIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdmdW5jdGlvbiBpcyByZXF1aXJlZC4nKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFzc29jaWF0aW9uID0gbmV3IGNvbm5lY3QuQ2ZuSW50ZWdyYXRpb25Bc3NvY2lhdGlvbih0aGlzLCAnUmVzb3VyY2UnLCB7XHJcbiAgICAgIGluc3RhbmNlSWQ6IHByb3BzLmluc3RhbmNlLmluc3RhbmNlSWQsXHJcbiAgICAgIGludGVncmF0aW9uQXJuOiBwcm9wcy5mdW5jdGlvbi5mdW5jdGlvbkFybixcclxuICAgICAgaW50ZWdyYXRpb25UeXBlOiAnTEFNQkRBX0ZVTkNUSU9OJyxcclxuICAgIH0pO1xyXG5cclxuICAgIHByb3BzLmZ1bmN0aW9uLmFkZFBlcm1pc3Npb24oJ0FsbG93QW1hem9uQ29ubmVjdEludm9rZScsIHtcclxuICAgICAgYWN0aW9uOiAnbGFtYmRhOkludm9rZUZ1bmN0aW9uJyxcclxuICAgICAgcHJpbmNpcGFsOiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2Nvbm5lY3QuYW1hem9uYXdzLmNvbScpLFxyXG4gICAgICBzb3VyY2VBcm46IHByb3BzLmluc3RhbmNlLmluc3RhbmNlQXJuLFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { Construct } from 'constructs';
2
+ export declare function resourceNameFromSlashArn(scope: Construct, arn: string): string;
3
+ //# sourceMappingURL=arn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arn.d.ts","sourceRoot":"","sources":["../../src/private/arn.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9E"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resourceNameFromSlashArn = resourceNameFromSlashArn;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ function resourceNameFromSlashArn(scope, arn) {
6
+ return aws_cdk_lib_1.Stack.of(scope).splitArn(arn, aws_cdk_lib_1.ArnFormat.SLASH_RESOURCE_NAME).resourceName ?? arn;
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ByaXZhdGUvYXJuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsNERBRUM7QUFMRCw2Q0FBK0M7QUFHL0MsU0FBZ0Isd0JBQXdCLENBQUMsS0FBZ0IsRUFBRSxHQUFXO0lBQ3BFLE9BQU8sbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSx1QkFBUyxDQUFDLG1CQUFtQixDQUFDLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQztBQUMxRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJuRm9ybWF0LCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcclxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVzb3VyY2VOYW1lRnJvbVNsYXNoQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGFybjogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gU3RhY2sub2Yoc2NvcGUpLnNwbGl0QXJuKGFybiwgQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUpLnJlc291cmNlTmFtZSA/PyBhcm47XHJcbn1cclxuIl19
package/lib/queue.d.ts ADDED
@@ -0,0 +1,103 @@
1
+ import { aws_connect as connect } from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
3
+ import { IConnectInstance } from './connect-instance';
4
+ import { IHoursOfOperation } from './hours-of-operation';
5
+ /**
6
+ * Queue availability.
7
+ */
8
+ export declare enum QueueStatus {
9
+ ENABLED = "ENABLED",
10
+ DISABLED = "DISABLED"
11
+ }
12
+ /**
13
+ * A phone-number-like outbound caller identity.
14
+ */
15
+ export interface OutboundCallerConfig {
16
+ /**
17
+ * Outbound caller ID name.
18
+ *
19
+ * @default - Amazon Connect default
20
+ */
21
+ readonly outboundCallerIdName?: string;
22
+ /**
23
+ * Outbound caller ID phone number ARN.
24
+ *
25
+ * @default - Amazon Connect default
26
+ */
27
+ readonly outboundCallerIdNumberArn?: string;
28
+ /**
29
+ * Outbound flow ARN.
30
+ *
31
+ * @default - Amazon Connect default
32
+ */
33
+ readonly outboundFlowArn?: string;
34
+ }
35
+ /**
36
+ * An Amazon Connect queue reference.
37
+ */
38
+ export interface IQueue {
39
+ /**
40
+ * The queue ARN.
41
+ */
42
+ readonly queueArn: string;
43
+ }
44
+ /**
45
+ * Properties for Queue.
46
+ */
47
+ export interface QueueProps {
48
+ /**
49
+ * The Amazon Connect instance that owns this queue.
50
+ */
51
+ readonly instance: IConnectInstance;
52
+ /**
53
+ * Queue name.
54
+ */
55
+ readonly name: string;
56
+ /**
57
+ * Hours of operation for this queue.
58
+ */
59
+ readonly hoursOfOperation: IHoursOfOperation;
60
+ /**
61
+ * Optional description.
62
+ *
63
+ * @default - no description
64
+ */
65
+ readonly description?: string;
66
+ /**
67
+ * Maximum contacts allowed in the queue.
68
+ *
69
+ * @default - Amazon Connect default
70
+ */
71
+ readonly maxContacts?: number;
72
+ /**
73
+ * Outbound caller configuration.
74
+ *
75
+ * @default - Amazon Connect default
76
+ */
77
+ readonly outboundCallerConfig?: OutboundCallerConfig;
78
+ /**
79
+ * Queue status.
80
+ *
81
+ * @default QueueStatus.ENABLED
82
+ */
83
+ readonly status?: QueueStatus;
84
+ }
85
+ /**
86
+ * L2-style wrapper for AWS::Connect::Queue.
87
+ */
88
+ export declare class Queue extends Construct implements IQueue {
89
+ /**
90
+ * Import an existing Amazon Connect queue by ARN.
91
+ */
92
+ static fromQueueArn(scope: Construct, id: string, queueArn: string): IQueue;
93
+ /**
94
+ * The underlying CloudFormation resource.
95
+ */
96
+ readonly resource: connect.CfnQueue;
97
+ /**
98
+ * The queue ARN.
99
+ */
100
+ readonly queueArn: string;
101
+ constructor(scope: Construct, id: string, props: QueueProps);
102
+ }
103
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;GAEG;AACH,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAEvC;;;;OAIG;IACH,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAE5C;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;IAE7C;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAErD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED;;GAEG;AACH,qBAAa,KAAM,SAAQ,SAAU,YAAW,MAAM;IACpD;;OAEG;WACW,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIlF;;OAEG;IACH,SAAgB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC;IAE3C;;OAEG;IACH,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAEd,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU;CAsBnE"}
package/lib/queue.js ADDED
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Queue = exports.QueueStatus = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
6
+ const constructs_1 = require("constructs");
7
+ const arn_1 = require("./private/arn");
8
+ /**
9
+ * Queue availability.
10
+ */
11
+ var QueueStatus;
12
+ (function (QueueStatus) {
13
+ QueueStatus["ENABLED"] = "ENABLED";
14
+ QueueStatus["DISABLED"] = "DISABLED";
15
+ })(QueueStatus || (exports.QueueStatus = QueueStatus = {}));
16
+ /**
17
+ * L2-style wrapper for AWS::Connect::Queue.
18
+ */
19
+ class Queue extends constructs_1.Construct {
20
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-amazon-connect-constructs.Queue", version: "0.1.0-alpha.0" };
21
+ /**
22
+ * Import an existing Amazon Connect queue by ARN.
23
+ */
24
+ static fromQueueArn(scope, id, queueArn) {
25
+ return new ImportedQueue(scope, id, queueArn);
26
+ }
27
+ /**
28
+ * The underlying CloudFormation resource.
29
+ */
30
+ resource;
31
+ /**
32
+ * The queue ARN.
33
+ */
34
+ queueArn;
35
+ constructor(scope, id, props) {
36
+ super(scope, id);
37
+ if (!props.name.trim()) {
38
+ throw new Error('name must not be empty.');
39
+ }
40
+ if (props.maxContacts !== undefined && props.maxContacts < 0) {
41
+ throw new Error('maxContacts must be greater than or equal to 0.');
42
+ }
43
+ this.resource = new aws_cdk_lib_1.aws_connect.CfnQueue(this, 'Resource', {
44
+ description: props.description,
45
+ hoursOfOperationArn: props.hoursOfOperation.hoursOfOperationArn,
46
+ instanceArn: props.instance.instanceArn,
47
+ maxContacts: props.maxContacts,
48
+ name: props.name,
49
+ outboundCallerConfig: props.outboundCallerConfig,
50
+ status: props.status ?? QueueStatus.ENABLED,
51
+ });
52
+ this.queueArn = this.resource.getAtt('QueueArn').toString();
53
+ }
54
+ }
55
+ exports.Queue = Queue;
56
+ class ImportedQueue extends constructs_1.Construct {
57
+ queueArn;
58
+ constructor(scope, id, queueArn) {
59
+ super(scope, id);
60
+ this.queueArn = queueArn;
61
+ (0, arn_1.resourceNameFromSlashArn)(this, queueArn);
62
+ }
63
+ }
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDZDQUFxRDtBQUNyRCwyQ0FBdUM7QUFHdkMsdUNBQXlEO0FBRXpEOztHQUVHO0FBQ0gsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGtDQUFtQixDQUFBO0lBQ25CLG9DQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxXQUFXLDJCQUFYLFdBQVcsUUFHdEI7QUFzRkQ7O0dBRUc7QUFDSCxNQUFhLEtBQU0sU0FBUSxzQkFBUzs7SUFDbEM7O09BRUc7SUFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQWdCO1FBQ3ZFLE9BQU8sSUFBSSxhQUFhLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDYSxRQUFRLENBQW1CO0lBRTNDOztPQUVHO0lBQ2EsUUFBUSxDQUFTO0lBRWpDLFlBQW1CLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlCO1FBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3RCxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx5QkFBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3JELFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixtQkFBbUIsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CO1lBQy9ELFdBQVcsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVc7WUFDdkMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixvQkFBb0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CO1lBQ2hELE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxPQUFPO1NBQzVDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUQsQ0FBQzs7QUF2Q0gsc0JBd0NDO0FBRUQsTUFBTSxhQUFjLFNBQVEsc0JBQVM7SUFDbkIsUUFBUSxDQUFTO0lBRWpDLFlBQW1CLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQWdCO1FBQy9ELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBQSw4QkFBd0IsRUFBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzX2Nvbm5lY3QgYXMgY29ubmVjdCB9IGZyb20gJ2F3cy1jZGstbGliJztcclxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XHJcbmltcG9ydCB7IElDb25uZWN0SW5zdGFuY2UgfSBmcm9tICcuL2Nvbm5lY3QtaW5zdGFuY2UnO1xyXG5pbXBvcnQgeyBJSG91cnNPZk9wZXJhdGlvbiB9IGZyb20gJy4vaG91cnMtb2Ytb3BlcmF0aW9uJztcclxuaW1wb3J0IHsgcmVzb3VyY2VOYW1lRnJvbVNsYXNoQXJuIH0gZnJvbSAnLi9wcml2YXRlL2Fybic7XHJcblxyXG4vKipcclxuICogUXVldWUgYXZhaWxhYmlsaXR5LlxyXG4gKi9cclxuZXhwb3J0IGVudW0gUXVldWVTdGF0dXMge1xyXG4gIEVOQUJMRUQgPSAnRU5BQkxFRCcsXHJcbiAgRElTQUJMRUQgPSAnRElTQUJMRUQnLFxyXG59XHJcblxyXG4vKipcclxuICogQSBwaG9uZS1udW1iZXItbGlrZSBvdXRib3VuZCBjYWxsZXIgaWRlbnRpdHkuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIE91dGJvdW5kQ2FsbGVyQ29uZmlnIHtcclxuICAvKipcclxuICAgKiBPdXRib3VuZCBjYWxsZXIgSUQgbmFtZS5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IC0gQW1hem9uIENvbm5lY3QgZGVmYXVsdFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IG91dGJvdW5kQ2FsbGVySWROYW1lPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBPdXRib3VuZCBjYWxsZXIgSUQgcGhvbmUgbnVtYmVyIEFSTi5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IC0gQW1hem9uIENvbm5lY3QgZGVmYXVsdFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IG91dGJvdW5kQ2FsbGVySWROdW1iZXJBcm4/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIE91dGJvdW5kIGZsb3cgQVJOLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgLSBBbWF6b24gQ29ubmVjdCBkZWZhdWx0XHJcbiAgICovXHJcbiAgcmVhZG9ubHkgb3V0Ym91bmRGbG93QXJuPzogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogQW4gQW1hem9uIENvbm5lY3QgcXVldWUgcmVmZXJlbmNlLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJUXVldWUge1xyXG4gIC8qKlxyXG4gICAqIFRoZSBxdWV1ZSBBUk4uXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgcXVldWVBcm46IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIFByb3BlcnRpZXMgZm9yIFF1ZXVlLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBRdWV1ZVByb3BzIHtcclxuICAvKipcclxuICAgKiBUaGUgQW1hem9uIENvbm5lY3QgaW5zdGFuY2UgdGhhdCBvd25zIHRoaXMgcXVldWUuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgaW5zdGFuY2U6IElDb25uZWN0SW5zdGFuY2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFF1ZXVlIG5hbWUuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBIb3VycyBvZiBvcGVyYXRpb24gZm9yIHRoaXMgcXVldWUuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgaG91cnNPZk9wZXJhdGlvbjogSUhvdXJzT2ZPcGVyYXRpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgLSBubyBkZXNjcmlwdGlvblxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBNYXhpbXVtIGNvbnRhY3RzIGFsbG93ZWQgaW4gdGhlIHF1ZXVlLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgLSBBbWF6b24gQ29ubmVjdCBkZWZhdWx0XHJcbiAgICovXHJcbiAgcmVhZG9ubHkgbWF4Q29udGFjdHM/OiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIE91dGJvdW5kIGNhbGxlciBjb25maWd1cmF0aW9uLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgLSBBbWF6b24gQ29ubmVjdCBkZWZhdWx0XHJcbiAgICovXHJcbiAgcmVhZG9ubHkgb3V0Ym91bmRDYWxsZXJDb25maWc/OiBPdXRib3VuZENhbGxlckNvbmZpZztcclxuXHJcbiAgLyoqXHJcbiAgICogUXVldWUgc3RhdHVzLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgUXVldWVTdGF0dXMuRU5BQkxFRFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHN0YXR1cz86IFF1ZXVlU3RhdHVzO1xyXG59XHJcblxyXG4vKipcclxuICogTDItc3R5bGUgd3JhcHBlciBmb3IgQVdTOjpDb25uZWN0OjpRdWV1ZS5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBRdWV1ZSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElRdWV1ZSB7XHJcbiAgLyoqXHJcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIEFtYXpvbiBDb25uZWN0IHF1ZXVlIGJ5IEFSTi5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGZyb21RdWV1ZUFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBxdWV1ZUFybjogc3RyaW5nKTogSVF1ZXVlIHtcclxuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRRdWV1ZShzY29wZSwgaWQsIHF1ZXVlQXJuKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSB1bmRlcmx5aW5nIENsb3VkRm9ybWF0aW9uIHJlc291cmNlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogY29ubmVjdC5DZm5RdWV1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHF1ZXVlIEFSTi5cclxuICAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgcXVldWVBcm46IHN0cmluZztcclxuXHJcbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBRdWV1ZVByb3BzKSB7XHJcbiAgICBzdXBlcihzY29wZSwgaWQpO1xyXG5cclxuICAgIGlmICghcHJvcHMubmFtZS50cmltKCkpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCduYW1lIG11c3Qgbm90IGJlIGVtcHR5LicpO1xyXG4gICAgfVxyXG4gICAgaWYgKHByb3BzLm1heENvbnRhY3RzICE9PSB1bmRlZmluZWQgJiYgcHJvcHMubWF4Q29udGFjdHMgPCAwKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWF4Q29udGFjdHMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMC4nKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGNvbm5lY3QuQ2ZuUXVldWUodGhpcywgJ1Jlc291cmNlJywge1xyXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXHJcbiAgICAgIGhvdXJzT2ZPcGVyYXRpb25Bcm46IHByb3BzLmhvdXJzT2ZPcGVyYXRpb24uaG91cnNPZk9wZXJhdGlvbkFybixcclxuICAgICAgaW5zdGFuY2VBcm46IHByb3BzLmluc3RhbmNlLmluc3RhbmNlQXJuLFxyXG4gICAgICBtYXhDb250YWN0czogcHJvcHMubWF4Q29udGFjdHMsXHJcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUsXHJcbiAgICAgIG91dGJvdW5kQ2FsbGVyQ29uZmlnOiBwcm9wcy5vdXRib3VuZENhbGxlckNvbmZpZyxcclxuICAgICAgc3RhdHVzOiBwcm9wcy5zdGF0dXMgPz8gUXVldWVTdGF0dXMuRU5BQkxFRCxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucXVldWVBcm4gPSB0aGlzLnJlc291cmNlLmdldEF0dCgnUXVldWVBcm4nKS50b1N0cmluZygpO1xyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgSW1wb3J0ZWRRdWV1ZSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElRdWV1ZSB7XHJcbiAgcHVibGljIHJlYWRvbmx5IHF1ZXVlQXJuOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBxdWV1ZUFybjogc3RyaW5nKSB7XHJcbiAgICBzdXBlcihzY29wZSwgaWQpO1xyXG4gICAgdGhpcy5xdWV1ZUFybiA9IHF1ZXVlQXJuO1xyXG4gICAgcmVzb3VyY2VOYW1lRnJvbVNsYXNoQXJuKHRoaXMsIHF1ZXVlQXJuKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,110 @@
1
+ import { aws_connect as connect } from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
3
+ import { IConnectInstance } from './connect-instance';
4
+ import { IQueue } from './queue';
5
+ /**
6
+ * Amazon Connect contact channels.
7
+ */
8
+ export declare enum Channel {
9
+ VOICE = "VOICE",
10
+ CHAT = "CHAT",
11
+ TASK = "TASK",
12
+ EMAIL = "EMAIL"
13
+ }
14
+ /**
15
+ * Channel concurrency for a routing profile.
16
+ */
17
+ export interface MediaConcurrency {
18
+ /**
19
+ * Contact channel.
20
+ */
21
+ readonly channel: Channel;
22
+ /**
23
+ * Number of simultaneous contacts allowed for the channel.
24
+ */
25
+ readonly concurrency: number;
26
+ }
27
+ /**
28
+ * Queue association settings for a routing profile.
29
+ */
30
+ export interface RoutingProfileQueueConfig {
31
+ /**
32
+ * Queue to associate.
33
+ */
34
+ readonly queue: IQueue;
35
+ /**
36
+ * Contact channel for this queue association.
37
+ *
38
+ * @default Channel.VOICE
39
+ */
40
+ readonly channel?: Channel;
41
+ /**
42
+ * Queue priority. Lower values are higher priority.
43
+ *
44
+ * @default 1
45
+ */
46
+ readonly priority?: number;
47
+ /**
48
+ * Delay before contacts are routed to agents, in seconds.
49
+ *
50
+ * @default 0
51
+ */
52
+ readonly delay?: number;
53
+ }
54
+ /**
55
+ * An Amazon Connect routing profile reference.
56
+ */
57
+ export interface IRoutingProfile {
58
+ /**
59
+ * The routing profile ARN.
60
+ */
61
+ readonly routingProfileArn: string;
62
+ }
63
+ /**
64
+ * Properties for RoutingProfile.
65
+ */
66
+ export interface RoutingProfileProps {
67
+ /**
68
+ * The Amazon Connect instance that owns this routing profile.
69
+ */
70
+ readonly instance: IConnectInstance;
71
+ /**
72
+ * Routing profile name.
73
+ */
74
+ readonly name: string;
75
+ /**
76
+ * Routing profile description.
77
+ */
78
+ readonly description: string;
79
+ /**
80
+ * Default outbound queue.
81
+ */
82
+ readonly defaultOutboundQueue: IQueue;
83
+ /**
84
+ * Media concurrency settings.
85
+ *
86
+ * @default - one concurrent voice contact
87
+ */
88
+ readonly mediaConcurrencies?: MediaConcurrency[];
89
+ /**
90
+ * Queue associations.
91
+ *
92
+ * @default - associate only the default outbound queue for voice
93
+ */
94
+ readonly queueConfigs?: RoutingProfileQueueConfig[];
95
+ }
96
+ /**
97
+ * L2-style wrapper for AWS::Connect::RoutingProfile.
98
+ */
99
+ export declare class RoutingProfile extends Construct implements IRoutingProfile {
100
+ /**
101
+ * The underlying CloudFormation resource.
102
+ */
103
+ readonly resource: connect.CfnRoutingProfile;
104
+ /**
105
+ * The routing profile ARN.
106
+ */
107
+ readonly routingProfileArn: string;
108
+ constructor(scope: Construct, id: string, props: RoutingProfileProps);
109
+ }
110
+ //# sourceMappingURL=routing-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing-profile.d.ts","sourceRoot":"","sources":["../src/routing-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC;;GAEG;AACH,oBAAY,OAAO;IACjB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAEtC;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAEjD;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;CACrD;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,SAAU,YAAW,eAAe;IACtE;;OAEG;IACH,SAAgB,QAAQ,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAEpD;;OAEG;IACH,SAAgB,iBAAiB,EAAE,MAAM,CAAC;gBAEvB,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB;CAmC5E"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RoutingProfile = exports.Channel = void 0;
4
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
6
+ const constructs_1 = require("constructs");
7
+ /**
8
+ * Amazon Connect contact channels.
9
+ */
10
+ var Channel;
11
+ (function (Channel) {
12
+ Channel["VOICE"] = "VOICE";
13
+ Channel["CHAT"] = "CHAT";
14
+ Channel["TASK"] = "TASK";
15
+ Channel["EMAIL"] = "EMAIL";
16
+ })(Channel || (exports.Channel = Channel = {}));
17
+ /**
18
+ * L2-style wrapper for AWS::Connect::RoutingProfile.
19
+ */
20
+ class RoutingProfile extends constructs_1.Construct {
21
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-amazon-connect-constructs.RoutingProfile", version: "0.1.0-alpha.0" };
22
+ /**
23
+ * The underlying CloudFormation resource.
24
+ */
25
+ resource;
26
+ /**
27
+ * The routing profile ARN.
28
+ */
29
+ routingProfileArn;
30
+ constructor(scope, id, props) {
31
+ super(scope, id);
32
+ if (!props.name.trim()) {
33
+ throw new Error('name must not be empty.');
34
+ }
35
+ if (!props.description.trim()) {
36
+ throw new Error('description must not be empty.');
37
+ }
38
+ const mediaConcurrencies = props.mediaConcurrencies ?? [
39
+ { channel: Channel.VOICE, concurrency: 1 },
40
+ ];
41
+ const queueConfigs = props.queueConfigs ?? [
42
+ { queue: props.defaultOutboundQueue, channel: Channel.VOICE, priority: 1, delay: 0 },
43
+ ];
44
+ if (mediaConcurrencies.length === 0) {
45
+ throw new Error('mediaConcurrencies must include at least one channel.');
46
+ }
47
+ if (queueConfigs.length === 0) {
48
+ throw new Error('queueConfigs must include at least one queue association.');
49
+ }
50
+ this.resource = new aws_cdk_lib_1.aws_connect.CfnRoutingProfile(this, 'Resource', {
51
+ defaultOutboundQueueArn: props.defaultOutboundQueue.queueArn,
52
+ description: props.description,
53
+ instanceArn: props.instance.instanceArn,
54
+ mediaConcurrencies: mediaConcurrencies.map(toCfnMediaConcurrency),
55
+ name: props.name,
56
+ queueConfigs: queueConfigs.map(toCfnQueueConfig),
57
+ });
58
+ this.routingProfileArn = this.resource.getAtt('RoutingProfileArn').toString();
59
+ }
60
+ }
61
+ exports.RoutingProfile = RoutingProfile;
62
+ function toCfnMediaConcurrency(media) {
63
+ if (media.concurrency < 1 || !Number.isInteger(media.concurrency)) {
64
+ throw new Error('media concurrency must be a positive integer.');
65
+ }
66
+ return {
67
+ channel: media.channel,
68
+ concurrency: media.concurrency,
69
+ };
70
+ }
71
+ function toCfnQueueConfig(config) {
72
+ const priority = config.priority ?? 1;
73
+ const delay = config.delay ?? 0;
74
+ if (priority < 1 || !Number.isInteger(priority)) {
75
+ throw new Error('queue priority must be a positive integer.');
76
+ }
77
+ if (delay < 0 || !Number.isInteger(delay)) {
78
+ throw new Error('queue delay must be a non-negative integer.');
79
+ }
80
+ return {
81
+ delay,
82
+ priority,
83
+ queueReference: {
84
+ channel: config.channel ?? Channel.VOICE,
85
+ queueArn: config.queue.queueArn,
86
+ },
87
+ };
88
+ }
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy1wcm9maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JvdXRpbmctcHJvZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsNkNBQXFEO0FBQ3JELDJDQUF1QztBQUl2Qzs7R0FFRztBQUNILElBQVksT0FLWDtBQUxELFdBQVksT0FBTztJQUNqQiwwQkFBZSxDQUFBO0lBQ2Ysd0JBQWEsQ0FBQTtJQUNiLHdCQUFhLENBQUE7SUFDYiwwQkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFMVyxPQUFPLHVCQUFQLE9BQU8sUUFLbEI7QUFpR0Q7O0dBRUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxzQkFBUzs7SUFDM0M7O09BRUc7SUFDYSxRQUFRLENBQTRCO0lBRXBEOztPQUVHO0lBQ2EsaUJBQWlCLENBQVM7SUFFMUMsWUFBbUIsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDekUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixJQUFJO1lBQ3JELEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRTtTQUMzQyxDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSTtZQUN6QyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1NBQ3JGLENBQUM7UUFFRixJQUFJLGtCQUFrQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUNELElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx5QkFBTyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDOUQsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUFDLFFBQVE7WUFDNUQsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFdBQVcsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVc7WUFDdkMsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDO1lBQ2pFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixZQUFZLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztTQUNqRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoRixDQUFDOztBQTdDSCx3Q0E4Q0M7QUFFRCxTQUFTLHFCQUFxQixDQUM1QixLQUF1QjtJQUV2QixJQUFJLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUNsRSxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO0tBQy9CLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FDdkIsTUFBaUM7SUFFakMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUM7SUFDdEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7SUFFaEMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsT0FBTztRQUNMLEtBQUs7UUFDTCxRQUFRO1FBQ1IsY0FBYyxFQUFFO1lBQ2QsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUs7WUFDeEMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUTtTQUNoQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzX2Nvbm5lY3QgYXMgY29ubmVjdCB9IGZyb20gJ2F3cy1jZGstbGliJztcclxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XHJcbmltcG9ydCB7IElDb25uZWN0SW5zdGFuY2UgfSBmcm9tICcuL2Nvbm5lY3QtaW5zdGFuY2UnO1xyXG5pbXBvcnQgeyBJUXVldWUgfSBmcm9tICcuL3F1ZXVlJztcclxuXHJcbi8qKlxyXG4gKiBBbWF6b24gQ29ubmVjdCBjb250YWN0IGNoYW5uZWxzLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gQ2hhbm5lbCB7XHJcbiAgVk9JQ0UgPSAnVk9JQ0UnLFxyXG4gIENIQVQgPSAnQ0hBVCcsXHJcbiAgVEFTSyA9ICdUQVNLJyxcclxuICBFTUFJTCA9ICdFTUFJTCcsXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGFubmVsIGNvbmN1cnJlbmN5IGZvciBhIHJvdXRpbmcgcHJvZmlsZS5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVkaWFDb25jdXJyZW5jeSB7XHJcbiAgLyoqXHJcbiAgICogQ29udGFjdCBjaGFubmVsLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGNoYW5uZWw6IENoYW5uZWw7XHJcblxyXG4gIC8qKlxyXG4gICAqIE51bWJlciBvZiBzaW11bHRhbmVvdXMgY29udGFjdHMgYWxsb3dlZCBmb3IgdGhlIGNoYW5uZWwuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgY29uY3VycmVuY3k6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFF1ZXVlIGFzc29jaWF0aW9uIHNldHRpbmdzIGZvciBhIHJvdXRpbmcgcHJvZmlsZS5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUm91dGluZ1Byb2ZpbGVRdWV1ZUNvbmZpZyB7XHJcbiAgLyoqXHJcbiAgICogUXVldWUgdG8gYXNzb2NpYXRlLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHF1ZXVlOiBJUXVldWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnRhY3QgY2hhbm5lbCBmb3IgdGhpcyBxdWV1ZSBhc3NvY2lhdGlvbi5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IENoYW5uZWwuVk9JQ0VcclxuICAgKi9cclxuICByZWFkb25seSBjaGFubmVsPzogQ2hhbm5lbDtcclxuXHJcbiAgLyoqXHJcbiAgICogUXVldWUgcHJpb3JpdHkuIExvd2VyIHZhbHVlcyBhcmUgaGlnaGVyIHByaW9yaXR5LlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgMVxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHByaW9yaXR5PzogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBEZWxheSBiZWZvcmUgY29udGFjdHMgYXJlIHJvdXRlZCB0byBhZ2VudHMsIGluIHNlY29uZHMuXHJcbiAgICpcclxuICAgKiBAZGVmYXVsdCAwXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgZGVsYXk/OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBbiBBbWF6b24gQ29ubmVjdCByb3V0aW5nIHByb2ZpbGUgcmVmZXJlbmNlLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJUm91dGluZ1Byb2ZpbGUge1xyXG4gIC8qKlxyXG4gICAqIFRoZSByb3V0aW5nIHByb2ZpbGUgQVJOLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHJvdXRpbmdQcm9maWxlQXJuOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQcm9wZXJ0aWVzIGZvciBSb3V0aW5nUHJvZmlsZS5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUm91dGluZ1Byb2ZpbGVQcm9wcyB7XHJcbiAgLyoqXHJcbiAgICogVGhlIEFtYXpvbiBDb25uZWN0IGluc3RhbmNlIHRoYXQgb3ducyB0aGlzIHJvdXRpbmcgcHJvZmlsZS5cclxuICAgKi9cclxuICByZWFkb25seSBpbnN0YW5jZTogSUNvbm5lY3RJbnN0YW5jZTtcclxuXHJcbiAgLyoqXHJcbiAgICogUm91dGluZyBwcm9maWxlIG5hbWUuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBSb3V0aW5nIHByb2ZpbGUgZGVzY3JpcHRpb24uXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogRGVmYXVsdCBvdXRib3VuZCBxdWV1ZS5cclxuICAgKi9cclxuICByZWFkb25seSBkZWZhdWx0T3V0Ym91bmRRdWV1ZTogSVF1ZXVlO1xyXG5cclxuICAvKipcclxuICAgKiBNZWRpYSBjb25jdXJyZW5jeSBzZXR0aW5ncy5cclxuICAgKlxyXG4gICAqIEBkZWZhdWx0IC0gb25lIGNvbmN1cnJlbnQgdm9pY2UgY29udGFjdFxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IG1lZGlhQ29uY3VycmVuY2llcz86IE1lZGlhQ29uY3VycmVuY3lbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogUXVldWUgYXNzb2NpYXRpb25zLlxyXG4gICAqXHJcbiAgICogQGRlZmF1bHQgLSBhc3NvY2lhdGUgb25seSB0aGUgZGVmYXVsdCBvdXRib3VuZCBxdWV1ZSBmb3Igdm9pY2VcclxuICAgKi9cclxuICByZWFkb25seSBxdWV1ZUNvbmZpZ3M/OiBSb3V0aW5nUHJvZmlsZVF1ZXVlQ29uZmlnW107XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBMMi1zdHlsZSB3cmFwcGVyIGZvciBBV1M6OkNvbm5lY3Q6OlJvdXRpbmdQcm9maWxlLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFJvdXRpbmdQcm9maWxlIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVJvdXRpbmdQcm9maWxlIHtcclxuICAvKipcclxuICAgKiBUaGUgdW5kZXJseWluZyBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZS5cclxuICAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IGNvbm5lY3QuQ2ZuUm91dGluZ1Byb2ZpbGU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSByb3V0aW5nIHByb2ZpbGUgQVJOLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSByb3V0aW5nUHJvZmlsZUFybjogc3RyaW5nO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJvdXRpbmdQcm9maWxlUHJvcHMpIHtcclxuICAgIHN1cGVyKHNjb3BlLCBpZCk7XHJcblxyXG4gICAgaWYgKCFwcm9wcy5uYW1lLnRyaW0oKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ25hbWUgbXVzdCBub3QgYmUgZW1wdHkuJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXByb3BzLmRlc2NyaXB0aW9uLnRyaW0oKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Rlc2NyaXB0aW9uIG11c3Qgbm90IGJlIGVtcHR5LicpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG1lZGlhQ29uY3VycmVuY2llcyA9IHByb3BzLm1lZGlhQ29uY3VycmVuY2llcyA/PyBbXHJcbiAgICAgIHsgY2hhbm5lbDogQ2hhbm5lbC5WT0lDRSwgY29uY3VycmVuY3k6IDEgfSxcclxuICAgIF07XHJcbiAgICBjb25zdCBxdWV1ZUNvbmZpZ3MgPSBwcm9wcy5xdWV1ZUNvbmZpZ3MgPz8gW1xyXG4gICAgICB7IHF1ZXVlOiBwcm9wcy5kZWZhdWx0T3V0Ym91bmRRdWV1ZSwgY2hhbm5lbDogQ2hhbm5lbC5WT0lDRSwgcHJpb3JpdHk6IDEsIGRlbGF5OiAwIH0sXHJcbiAgICBdO1xyXG5cclxuICAgIGlmIChtZWRpYUNvbmN1cnJlbmNpZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWVkaWFDb25jdXJyZW5jaWVzIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgY2hhbm5lbC4nKTtcclxuICAgIH1cclxuICAgIGlmIChxdWV1ZUNvbmZpZ3MubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcigncXVldWVDb25maWdzIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgcXVldWUgYXNzb2NpYXRpb24uJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBjb25uZWN0LkNmblJvdXRpbmdQcm9maWxlKHRoaXMsICdSZXNvdXJjZScsIHtcclxuICAgICAgZGVmYXVsdE91dGJvdW5kUXVldWVBcm46IHByb3BzLmRlZmF1bHRPdXRib3VuZFF1ZXVlLnF1ZXVlQXJuLFxyXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXHJcbiAgICAgIGluc3RhbmNlQXJuOiBwcm9wcy5pbnN0YW5jZS5pbnN0YW5jZUFybixcclxuICAgICAgbWVkaWFDb25jdXJyZW5jaWVzOiBtZWRpYUNvbmN1cnJlbmNpZXMubWFwKHRvQ2ZuTWVkaWFDb25jdXJyZW5jeSksXHJcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUsXHJcbiAgICAgIHF1ZXVlQ29uZmlnczogcXVldWVDb25maWdzLm1hcCh0b0NmblF1ZXVlQ29uZmlnKSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucm91dGluZ1Byb2ZpbGVBcm4gPSB0aGlzLnJlc291cmNlLmdldEF0dCgnUm91dGluZ1Byb2ZpbGVBcm4nKS50b1N0cmluZygpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gdG9DZm5NZWRpYUNvbmN1cnJlbmN5KFxyXG4gIG1lZGlhOiBNZWRpYUNvbmN1cnJlbmN5LFxyXG4pOiBjb25uZWN0LkNmblJvdXRpbmdQcm9maWxlLk1lZGlhQ29uY3VycmVuY3lQcm9wZXJ0eSB7XHJcbiAgaWYgKG1lZGlhLmNvbmN1cnJlbmN5IDwgMSB8fCAhTnVtYmVyLmlzSW50ZWdlcihtZWRpYS5jb25jdXJyZW5jeSkpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcignbWVkaWEgY29uY3VycmVuY3kgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuJyk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4ge1xyXG4gICAgY2hhbm5lbDogbWVkaWEuY2hhbm5lbCxcclxuICAgIGNvbmN1cnJlbmN5OiBtZWRpYS5jb25jdXJyZW5jeSxcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiB0b0NmblF1ZXVlQ29uZmlnKFxyXG4gIGNvbmZpZzogUm91dGluZ1Byb2ZpbGVRdWV1ZUNvbmZpZyxcclxuKTogY29ubmVjdC5DZm5Sb3V0aW5nUHJvZmlsZS5Sb3V0aW5nUHJvZmlsZVF1ZXVlQ29uZmlnUHJvcGVydHkge1xyXG4gIGNvbnN0IHByaW9yaXR5ID0gY29uZmlnLnByaW9yaXR5ID8/IDE7XHJcbiAgY29uc3QgZGVsYXkgPSBjb25maWcuZGVsYXkgPz8gMDtcclxuXHJcbiAgaWYgKHByaW9yaXR5IDwgMSB8fCAhTnVtYmVyLmlzSW50ZWdlcihwcmlvcml0eSkpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcigncXVldWUgcHJpb3JpdHkgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuJyk7XHJcbiAgfVxyXG4gIGlmIChkZWxheSA8IDAgfHwgIU51bWJlci5pc0ludGVnZXIoZGVsYXkpKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3F1ZXVlIGRlbGF5IG11c3QgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlci4nKTtcclxuICB9XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBkZWxheSxcclxuICAgIHByaW9yaXR5LFxyXG4gICAgcXVldWVSZWZlcmVuY2U6IHtcclxuICAgICAgY2hhbm5lbDogY29uZmlnLmNoYW5uZWwgPz8gQ2hhbm5lbC5WT0lDRSxcclxuICAgICAgcXVldWVBcm46IGNvbmZpZy5xdWV1ZS5xdWV1ZUFybixcclxuICAgIH0sXHJcbiAgfTtcclxufVxyXG4iXX0=
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "cdk-amazon-connect-constructs",
3
+ "version": "0.1.0-alpha.0",
4
+ "description": "L2-style AWS CDK constructs for Amazon Connect.",
5
+ "license": "MIT",
6
+ "author": {
7
+ "name": "Karth"
8
+ },
9
+ "main": "lib/index.js",
10
+ "types": "lib/index.d.ts",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/karthiksenv/cdk-amazon-connect-constructs.git"
14
+ },
15
+ "keywords": [
16
+ "aws",
17
+ "aws-cdk",
18
+ "amazon-connect",
19
+ "connect",
20
+ "constructs",
21
+ "jsii"
22
+ ],
23
+ "scripts": {
24
+ "build": "tsc -p tsconfig.json",
25
+ "cdk:synth:example": "cdk synth --app \"ts-node --project tsconfig.test.json examples/lambda-backed-flow.ts\"",
26
+ "test": "jest --passWithNoTests",
27
+ "jsii": "jsii --tsconfig tsconfig.jsii.json --validate-tsconfig minimal",
28
+ "package": "jsii-pacmak",
29
+ "package:java": "jsii-pacmak -t java --code-only --outdir dist --force && node scripts/patch-java-pom.js",
30
+ "patch:java-pom": "node scripts/patch-java-pom.js",
31
+ "projen": "projen",
32
+ "synth": "projen"
33
+ },
34
+ "peerDependencies": {
35
+ "aws-cdk-lib": "^2.260.0",
36
+ "constructs": "^10.6.0"
37
+ },
38
+ "devDependencies": {
39
+ "@types/jest": "^30.0.0",
40
+ "aws-cdk": "2.1128.0",
41
+ "aws-cdk-lib": "2.260.0",
42
+ "constructs": "10.6.0",
43
+ "jest": "^30.4.2",
44
+ "jsii": "^5.4.14",
45
+ "jsii-pacmak": "^1.99.0",
46
+ "projen": "^0.99.76",
47
+ "ts-node": "^10.9.2",
48
+ "ts-jest": "^29.4.11",
49
+ "typescript": "^5.5.4"
50
+ },
51
+ "jsii": {
52
+ "outdir": "dist",
53
+ "targets": {
54
+ "python": {
55
+ "distName": "cdk-amazon-connect-constructs",
56
+ "module": "cdk_amazon_connect_constructs"
57
+ },
58
+ "java": {
59
+ "package": "io.github.karthik.cdk.connect",
60
+ "maven": {
61
+ "groupId": "io.github.karthiksenv",
62
+ "artifactId": "cdk-amazon-connect-constructs"
63
+ }
64
+ }
65
+ }
66
+ },
67
+ "publishConfig": {
68
+ "access": "public"
69
+ },
70
+ "overrides": {
71
+ "js-yaml": "4.2.0"
72
+ }
73
+ }
@@ -0,0 +1,45 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+
4
+ const pomPath = path.join(__dirname, '..', 'dist', 'java', 'pom.xml');
5
+ const legacyPatterns = [
6
+ /nexus-staging-maven-plugin/,
7
+ /oss\.sonatype\.org/,
8
+ /s01\.oss\.sonatype\.org/,
9
+ /<distributionManagement>/,
10
+ ];
11
+
12
+ const centralPlugin = ` <plugin>
13
+ <groupId>org.sonatype.central</groupId>
14
+ <artifactId>central-publishing-maven-plugin</artifactId>
15
+ <version>0.9.0</version>
16
+ <extensions>true</extensions>
17
+ <configuration>
18
+ <publishingServerId>central</publishingServerId>
19
+ </configuration>
20
+ </plugin>`;
21
+
22
+ if (!fs.existsSync(pomPath)) {
23
+ throw new Error(`Generated Java pom.xml was not found at ${pomPath}. Run jsii-pacmak for the Java target first.`);
24
+ }
25
+
26
+ const pom = fs.readFileSync(pomPath, 'utf8');
27
+
28
+ for (const pattern of legacyPatterns) {
29
+ if (pattern.test(pom)) {
30
+ throw new Error(`Generated Java pom.xml contains legacy OSSRH publishing config matching ${pattern}.`);
31
+ }
32
+ }
33
+
34
+ if (pom.includes('central-publishing-maven-plugin')) {
35
+ process.stdout.write('Generated Java pom.xml already contains central-publishing-maven-plugin.\n');
36
+ process.exit(0);
37
+ }
38
+
39
+ if (!pom.includes(' </plugins>')) {
40
+ throw new Error('Generated Java pom.xml does not contain a build plugins section to patch.');
41
+ }
42
+
43
+ const patched = pom.replace(' </plugins>', `${centralPlugin}\n </plugins>`);
44
+ fs.writeFileSync(pomPath, patched);
45
+ process.stdout.write('Added central-publishing-maven-plugin to generated Java pom.xml.\n');