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/.jsii +10995 -0
- package/LICENSE +21 -0
- package/README.md +133 -0
- package/connect-constructs.test.ts +797 -0
- package/lib/connect-instance.d.ts +125 -0
- package/lib/connect-instance.d.ts.map +1 -0
- package/lib/connect-instance.js +88 -0
- package/lib/contact-flow.d.ts +81 -0
- package/lib/contact-flow.d.ts.map +1 -0
- package/lib/contact-flow.js +80 -0
- package/lib/hours-of-operation.d.ts +102 -0
- package/lib/hours-of-operation.d.ts.map +1 -0
- package/lib/hours-of-operation.js +94 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +23 -0
- package/lib/lambda-integration.d.ts +27 -0
- package/lib/lambda-integration.d.ts.map +1 -0
- package/lib/lambda-integration.js +37 -0
- package/lib/private/arn.d.ts +3 -0
- package/lib/private/arn.d.ts.map +1 -0
- package/lib/private/arn.js +8 -0
- package/lib/queue.d.ts +103 -0
- package/lib/queue.d.ts.map +1 -0
- package/lib/queue.js +64 -0
- package/lib/routing-profile.d.ts +110 -0
- package/lib/routing-profile.d.ts.map +1 -0
- package/lib/routing-profile.js +89 -0
- package/package.json +73 -0
- package/scripts/patch-java-pom.js +45 -0
- package/src/connect-instance.ts +190 -0
- package/src/contact-flow.ts +123 -0
- package/src/hours-of-operation.ts +184 -0
- package/src/index.ts +6 -0
- package/src/lambda-integration.ts +51 -0
- package/src/private/arn.ts +6 -0
- package/src/queue.ts +152 -0
- package/src/routing-profile.ts +196 -0
- package/tsconfig.jsii.json +40 -0
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 @@
|
|
|
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');
|