@liflig/cdk-vy 1.0.0 → 2.0.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/README.md +20 -12
- package/lib/__test__/vy-cognito-provider.test.d.ts +1 -0
- package/lib/__test__/vy-cognito-provider.test.js +46 -0
- package/lib/cognito-app-client/__test__/index.test.js +19 -4
- package/lib/cognito-app-client/cognito-app-client.d.ts +23 -26
- package/lib/cognito-app-client/cognito-app-client.js +41 -68
- package/lib/cognito-resource-server/__test__/index.test.js +6 -2
- package/lib/cognito-resource-server/cognito-resource-server.d.ts +9 -17
- package/lib/cognito-resource-server/cognito-resource-server.js +9 -51
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -4
- package/lib/shared/types.d.ts +12 -0
- package/lib/shared/types.js +1 -1
- package/lib/vy-cognito-provider.d.ts +36 -0
- package/lib/vy-cognito-provider.js +128 -0
- package/package.json +3 -3
- package/lib/cognito-info.d.ts +0 -49
- package/lib/cognito-info.js +0 -76
package/README.md
CHANGED
|
@@ -10,11 +10,19 @@ This is based on https://github.com/nsbno/terraform-provider-vy
|
|
|
10
10
|
npm install @liflig/cdk-vy
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
+
### Create a VyCognitoProvider
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
const vyCognitoProvider = new VyCognitoProvider(this, "MyProvider", {
|
|
17
|
+
environment: VyEnvironment.TEST,
|
|
18
|
+
});
|
|
19
|
+
```
|
|
20
|
+
|
|
13
21
|
### Create a resource server
|
|
14
22
|
|
|
15
23
|
```typescript
|
|
16
24
|
const resourceServer = new CognitoResourceServer(this, "ApiResourceServer", {
|
|
17
|
-
|
|
25
|
+
resourceServerProvider: vyCognitoProvider.resourceServerProvider,
|
|
18
26
|
name: "my-api",
|
|
19
27
|
identifier: "https://my-api.vydev.io",
|
|
20
28
|
scopes: [
|
|
@@ -24,15 +32,15 @@ const resourceServer = new CognitoResourceServer(this, "ApiResourceServer", {
|
|
|
24
32
|
});
|
|
25
33
|
```
|
|
26
34
|
|
|
27
|
-
### Create
|
|
35
|
+
### Create app clients
|
|
28
36
|
|
|
29
37
|
```typescript
|
|
30
38
|
// Backend app client for M2M authentication
|
|
31
|
-
const backendClient = new CognitoAppClient(this,
|
|
32
|
-
|
|
33
|
-
name:
|
|
39
|
+
const backendClient = new CognitoAppClient(this, "BackendClient", {
|
|
40
|
+
appClientProvider: vyCognitoProvider.appClientProvider,
|
|
41
|
+
name: "my-backend-service",
|
|
34
42
|
type: AppClientType.BACKEND,
|
|
35
|
-
scopes: [
|
|
43
|
+
scopes: ["https://api.vydev.io/read", "https://api.vydev.io/write"]
|
|
36
44
|
});
|
|
37
45
|
|
|
38
46
|
// Access credentials
|
|
@@ -41,12 +49,12 @@ const clientSecret = backendClient.clientSecret; // Stored in Secrets Manager
|
|
|
41
49
|
|
|
42
50
|
@example
|
|
43
51
|
// Frontend app client for user authentication
|
|
44
|
-
const frontendClient = new CognitoAppClient(this,
|
|
45
|
-
|
|
46
|
-
name:
|
|
52
|
+
const frontendClient = new CognitoAppClient(this, "FrontendClient", {
|
|
53
|
+
appClientProvider: vyCognitoProvider.appClientProvider,
|
|
54
|
+
name: "my-web-app",
|
|
47
55
|
type: AppClientType.FRONTEND,
|
|
48
|
-
scopes: [
|
|
49
|
-
callbackUrls: [
|
|
50
|
-
logoutUrls: [
|
|
56
|
+
scopes: ["email", "openid", "profile"],
|
|
57
|
+
callbackUrls: ["https://my-app.vydev.io/auth/callback"],
|
|
58
|
+
logoutUrls: ["https://my-app.vydev.io/logout"]
|
|
51
59
|
});
|
|
52
60
|
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "jest-cdk-snapshot";
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { App, Stack } from "aws-cdk-lib";
|
|
2
|
+
import "jest-cdk-snapshot";
|
|
3
|
+
import { VyCognitoProvider } from "../";
|
|
4
|
+
import { VyEnvironment } from "../shared/types";
|
|
5
|
+
test("vyCognitoProvider in TEST", () => {
|
|
6
|
+
const app = new App();
|
|
7
|
+
const stack = new Stack(app, "Stack");
|
|
8
|
+
new VyCognitoProvider(stack, "VyCognitoProvider", {
|
|
9
|
+
environment: VyEnvironment.TEST,
|
|
10
|
+
});
|
|
11
|
+
expect(stack).toMatchCdkSnapshot({
|
|
12
|
+
ignoreAssets: true,
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
test("vyCognitoProvider in STAGE", () => {
|
|
16
|
+
const app = new App();
|
|
17
|
+
const stack = new Stack(app, "Stack");
|
|
18
|
+
new VyCognitoProvider(stack, "VyCognitoProvider", {
|
|
19
|
+
environment: VyEnvironment.STAGE,
|
|
20
|
+
});
|
|
21
|
+
expect(stack).toMatchCdkSnapshot({
|
|
22
|
+
ignoreAssets: true,
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
test("vyCognitoProvider in PROD", () => {
|
|
26
|
+
const app = new App();
|
|
27
|
+
const stack = new Stack(app, "Stack");
|
|
28
|
+
new VyCognitoProvider(stack, "VyCognitoProvider", {
|
|
29
|
+
environment: VyEnvironment.PROD,
|
|
30
|
+
});
|
|
31
|
+
expect(stack).toMatchCdkSnapshot({
|
|
32
|
+
ignoreAssets: true,
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
test("vyCognitoProvider with custom domain", () => {
|
|
36
|
+
const app = new App();
|
|
37
|
+
const stack = new Stack(app, "Stack");
|
|
38
|
+
new VyCognitoProvider(stack, "VyCognitoProvider", {
|
|
39
|
+
environment: VyEnvironment.TEST,
|
|
40
|
+
cognitoBaseDomain: "example.com",
|
|
41
|
+
});
|
|
42
|
+
expect(stack).toMatchCdkSnapshot({
|
|
43
|
+
ignoreAssets: true,
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnktY29nbml0by1wcm92aWRlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdF9fL3Z5LWNvZ25pdG8tcHJvdmlkZXIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN4QyxPQUFPLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUN2QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFL0MsSUFBSSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtJQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUVyQyxJQUFJLGlCQUFpQixDQUFDLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtRQUNoRCxXQUFXLEVBQUUsYUFBYSxDQUFDLElBQUk7S0FDaEMsQ0FBQyxDQUFBO0lBRUYsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1FBQy9CLFlBQVksRUFBRSxJQUFJO0tBQ25CLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBO0FBRUYsSUFBSSxDQUFDLDRCQUE0QixFQUFFLEdBQUcsRUFBRTtJQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUVyQyxJQUFJLGlCQUFpQixDQUFDLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtRQUNoRCxXQUFXLEVBQUUsYUFBYSxDQUFDLEtBQUs7S0FDakMsQ0FBQyxDQUFBO0lBRUYsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1FBQy9CLFlBQVksRUFBRSxJQUFJO0tBQ25CLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBO0FBRUYsSUFBSSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtJQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUVyQyxJQUFJLGlCQUFpQixDQUFDLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtRQUNoRCxXQUFXLEVBQUUsYUFBYSxDQUFDLElBQUk7S0FDaEMsQ0FBQyxDQUFBO0lBRUYsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1FBQy9CLFlBQVksRUFBRSxJQUFJO0tBQ25CLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBO0FBRUYsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtJQUNoRCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUVyQyxJQUFJLGlCQUFpQixDQUFDLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtRQUNoRCxXQUFXLEVBQUUsYUFBYSxDQUFDLElBQUk7UUFDL0IsaUJBQWlCLEVBQUUsYUFBYTtLQUNqQyxDQUFDLENBQUE7SUFFRixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLENBQUM7UUFDL0IsWUFBWSxFQUFFLElBQUk7S0FDbkIsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHAsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCJcbmltcG9ydCBcImplc3QtY2RrLXNuYXBzaG90XCJcbmltcG9ydCB7IFZ5Q29nbml0b1Byb3ZpZGVyIH0gZnJvbSBcIi4uL1wiXG5pbXBvcnQgeyBWeUVudmlyb25tZW50IH0gZnJvbSBcIi4uL3NoYXJlZC90eXBlc1wiXG5cbnRlc3QoXCJ2eUNvZ25pdG9Qcm92aWRlciBpbiBURVNUXCIsICgpID0+IHtcbiAgY29uc3QgYXBwID0gbmV3IEFwcCgpXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgXCJTdGFja1wiKVxuXG4gIG5ldyBWeUNvZ25pdG9Qcm92aWRlcihzdGFjaywgXCJWeUNvZ25pdG9Qcm92aWRlclwiLCB7XG4gICAgZW52aXJvbm1lbnQ6IFZ5RW52aXJvbm1lbnQuVEVTVCxcbiAgfSlcblxuICBleHBlY3Qoc3RhY2spLnRvTWF0Y2hDZGtTbmFwc2hvdCh7XG4gICAgaWdub3JlQXNzZXRzOiB0cnVlLFxuICB9KVxufSlcblxudGVzdChcInZ5Q29nbml0b1Byb3ZpZGVyIGluIFNUQUdFXCIsICgpID0+IHtcbiAgY29uc3QgYXBwID0gbmV3IEFwcCgpXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgXCJTdGFja1wiKVxuXG4gIG5ldyBWeUNvZ25pdG9Qcm92aWRlcihzdGFjaywgXCJWeUNvZ25pdG9Qcm92aWRlclwiLCB7XG4gICAgZW52aXJvbm1lbnQ6IFZ5RW52aXJvbm1lbnQuU1RBR0UsXG4gIH0pXG5cbiAgZXhwZWN0KHN0YWNrKS50b01hdGNoQ2RrU25hcHNob3Qoe1xuICAgIGlnbm9yZUFzc2V0czogdHJ1ZSxcbiAgfSlcbn0pXG5cbnRlc3QoXCJ2eUNvZ25pdG9Qcm92aWRlciBpbiBQUk9EXCIsICgpID0+IHtcbiAgY29uc3QgYXBwID0gbmV3IEFwcCgpXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgXCJTdGFja1wiKVxuXG4gIG5ldyBWeUNvZ25pdG9Qcm92aWRlcihzdGFjaywgXCJWeUNvZ25pdG9Qcm92aWRlclwiLCB7XG4gICAgZW52aXJvbm1lbnQ6IFZ5RW52aXJvbm1lbnQuUFJPRCxcbiAgfSlcblxuICBleHBlY3Qoc3RhY2spLnRvTWF0Y2hDZGtTbmFwc2hvdCh7XG4gICAgaWdub3JlQXNzZXRzOiB0cnVlLFxuICB9KVxufSlcblxudGVzdChcInZ5Q29nbml0b1Byb3ZpZGVyIHdpdGggY3VzdG9tIGRvbWFpblwiLCAoKSA9PiB7XG4gIGNvbnN0IGFwcCA9IG5ldyBBcHAoKVxuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayhhcHAsIFwiU3RhY2tcIilcblxuICBuZXcgVnlDb2duaXRvUHJvdmlkZXIoc3RhY2ssIFwiVnlDb2duaXRvUHJvdmlkZXJcIiwge1xuICAgIGVudmlyb25tZW50OiBWeUVudmlyb25tZW50LlRFU1QsXG4gICAgY29nbml0b0Jhc2VEb21haW46IFwiZXhhbXBsZS5jb21cIixcbiAgfSlcblxuICBleHBlY3Qoc3RhY2spLnRvTWF0Y2hDZGtTbmFwc2hvdCh7XG4gICAgaWdub3JlQXNzZXRzOiB0cnVlLFxuICB9KVxufSlcbiJdfQ==
|
|
@@ -5,8 +5,13 @@ import { AppClientType, CognitoAppClient } from "../cognito-app-client";
|
|
|
5
5
|
test("cognito frontend app client", () => {
|
|
6
6
|
const app = new App();
|
|
7
7
|
const stack = new Stack(app, "Stack");
|
|
8
|
+
const mockAppClientProvider = {
|
|
9
|
+
environment: VyEnvironment.TEST,
|
|
10
|
+
serviceToken: "serviceToken",
|
|
11
|
+
auth_url: "auth_url",
|
|
12
|
+
};
|
|
8
13
|
new CognitoAppClient(stack, "CognitoAppClient", {
|
|
9
|
-
|
|
14
|
+
appClientProvider: mockAppClientProvider,
|
|
10
15
|
name: "my-web-app",
|
|
11
16
|
type: AppClientType.FRONTEND,
|
|
12
17
|
scopes: ["email", "openid", "profile"],
|
|
@@ -20,8 +25,13 @@ test("cognito frontend app client", () => {
|
|
|
20
25
|
test("cognito backend app client", () => {
|
|
21
26
|
const app = new App();
|
|
22
27
|
const stack = new Stack(app, "Stack");
|
|
28
|
+
const mockAppClientProvider = {
|
|
29
|
+
environment: VyEnvironment.STAGE,
|
|
30
|
+
serviceToken: "serviceToken",
|
|
31
|
+
auth_url: "auth_url",
|
|
32
|
+
};
|
|
23
33
|
new CognitoAppClient(stack, "CognitoAppClient", {
|
|
24
|
-
|
|
34
|
+
appClientProvider: mockAppClientProvider,
|
|
25
35
|
name: "my-backend-service",
|
|
26
36
|
type: AppClientType.BACKEND,
|
|
27
37
|
scopes: ["https://api.vydev.io/read", "https://api.vydev.io/write"],
|
|
@@ -33,8 +43,13 @@ test("cognito backend app client", () => {
|
|
|
33
43
|
test("cognito frontend app client with custom secretName", () => {
|
|
34
44
|
const app = new App();
|
|
35
45
|
const stack = new Stack(app, "Stack");
|
|
46
|
+
const mockAppClientProvider = {
|
|
47
|
+
environment: VyEnvironment.PROD,
|
|
48
|
+
serviceToken: "serviceToken",
|
|
49
|
+
auth_url: "auth_url",
|
|
50
|
+
};
|
|
36
51
|
new CognitoAppClient(stack, "CognitoAppClient", {
|
|
37
|
-
|
|
52
|
+
appClientProvider: mockAppClientProvider,
|
|
38
53
|
name: "my-backend-service",
|
|
39
54
|
type: AppClientType.BACKEND,
|
|
40
55
|
scopes: ["https://api.vydev.io/read", "https://api.vydev.io/write"],
|
|
@@ -44,4 +59,4 @@ test("cognito frontend app client with custom secretName", () => {
|
|
|
44
59
|
ignoreAssets: true,
|
|
45
60
|
});
|
|
46
61
|
});
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb2duaXRvLWFwcC1jbGllbnQvX190ZXN0X18vaW5kZXgudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN4QyxPQUFPLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFdkUsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtJQUN2QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUVyQyxNQUFNLHFCQUFxQixHQUFzQjtRQUMvQyxXQUFXLEVBQUUsYUFBYSxDQUFDLElBQUk7UUFDL0IsWUFBWSxFQUFFLGNBQWM7UUFDNUIsUUFBUSxFQUFFLFVBQVU7S0FDckIsQ0FBQTtJQUVELElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFO1FBQzlDLGlCQUFpQixFQUFFLHFCQUFxQjtRQUN4QyxJQUFJLEVBQUUsWUFBWTtRQUNsQixJQUFJLEVBQUUsYUFBYSxDQUFDLFFBQVE7UUFDNUIsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUM7UUFDdEMsWUFBWSxFQUFFLENBQUMsdUNBQXVDLENBQUM7UUFDdkQsVUFBVSxFQUFFLENBQUMsZ0NBQWdDLENBQUM7S0FDL0MsQ0FBQyxDQUFBO0lBRUYsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1FBQy9CLFlBQVksRUFBRSxJQUFJO0tBQ25CLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBO0FBRUYsSUFBSSxDQUFDLDRCQUE0QixFQUFFLEdBQUcsRUFBRTtJQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUVyQyxNQUFNLHFCQUFxQixHQUFzQjtRQUMvQyxXQUFXLEVBQUUsYUFBYSxDQUFDLEtBQUs7UUFDaEMsWUFBWSxFQUFFLGNBQWM7UUFDNUIsUUFBUSxFQUFFLFVBQVU7S0FDckIsQ0FBQTtJQUVELElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFO1FBQzlDLGlCQUFpQixFQUFFLHFCQUFxQjtRQUN4QyxJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLElBQUksRUFBRSxhQUFhLENBQUMsT0FBTztRQUMzQixNQUFNLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSw0QkFBNEIsQ0FBQztLQUNwRSxDQUFDLENBQUE7SUFFRixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLENBQUM7UUFDL0IsWUFBWSxFQUFFLElBQUk7S0FDbkIsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUE7QUFFRixJQUFJLENBQUMsb0RBQW9ELEVBQUUsR0FBRyxFQUFFO0lBQzlELE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7SUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBRXJDLE1BQU0scUJBQXFCLEdBQXNCO1FBQy9DLFdBQVcsRUFBRSxhQUFhLENBQUMsSUFBSTtRQUMvQixZQUFZLEVBQUUsY0FBYztRQUM1QixRQUFRLEVBQUUsVUFBVTtLQUNyQixDQUFBO0lBRUQsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7UUFDOUMsaUJBQWlCLEVBQUUscUJBQXFCO1FBQ3hDLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsSUFBSSxFQUFFLGFBQWEsQ0FBQyxPQUFPO1FBQzNCLE1BQU0sRUFBRSxDQUFDLDJCQUEyQixFQUFFLDRCQUE0QixDQUFDO1FBQ25FLFVBQVUsRUFBRSxXQUFXO0tBQ3hCLENBQUMsQ0FBQTtJQUVGLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztRQUMvQixZQUFZLEVBQUUsSUFBSTtLQUNuQixDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcCwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIlxuaW1wb3J0IFwiamVzdC1jZGstc25hcHNob3RcIlxuaW1wb3J0IHsgVnlFbnZpcm9ubWVudCB9IGZyb20gXCIuLi8uLi9zaGFyZWQvdHlwZXNcIlxuaW1wb3J0IHR5cGUgeyBBcHBDbGllbnRQcm92aWRlciB9IGZyb20gXCIuLi8uLi92eS1jb2duaXRvLXByb3ZpZGVyXCJcbmltcG9ydCB7IEFwcENsaWVudFR5cGUsIENvZ25pdG9BcHBDbGllbnQgfSBmcm9tIFwiLi4vY29nbml0by1hcHAtY2xpZW50XCJcblxudGVzdChcImNvZ25pdG8gZnJvbnRlbmQgYXBwIGNsaWVudFwiLCAoKSA9PiB7XG4gIGNvbnN0IGFwcCA9IG5ldyBBcHAoKVxuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjayhhcHAsIFwiU3RhY2tcIilcblxuICBjb25zdCBtb2NrQXBwQ2xpZW50UHJvdmlkZXI6IEFwcENsaWVudFByb3ZpZGVyID0ge1xuICAgIGVudmlyb25tZW50OiBWeUVudmlyb25tZW50LlRFU1QsXG4gICAgc2VydmljZVRva2VuOiBcInNlcnZpY2VUb2tlblwiLFxuICAgIGF1dGhfdXJsOiBcImF1dGhfdXJsXCIsXG4gIH1cblxuICBuZXcgQ29nbml0b0FwcENsaWVudChzdGFjaywgXCJDb2duaXRvQXBwQ2xpZW50XCIsIHtcbiAgICBhcHBDbGllbnRQcm92aWRlcjogbW9ja0FwcENsaWVudFByb3ZpZGVyLFxuICAgIG5hbWU6IFwibXktd2ViLWFwcFwiLFxuICAgIHR5cGU6IEFwcENsaWVudFR5cGUuRlJPTlRFTkQsXG4gICAgc2NvcGVzOiBbXCJlbWFpbFwiLCBcIm9wZW5pZFwiLCBcInByb2ZpbGVcIl0sXG4gICAgY2FsbGJhY2tVcmxzOiBbXCJodHRwczovL215LWFwcC52eWRldi5pby9hdXRoL2NhbGxiYWNrXCJdLFxuICAgIGxvZ291dFVybHM6IFtcImh0dHBzOi8vbXktYXBwLnZ5ZGV2LmlvL2xvZ291dFwiXSxcbiAgfSlcblxuICBleHBlY3Qoc3RhY2spLnRvTWF0Y2hDZGtTbmFwc2hvdCh7XG4gICAgaWdub3JlQXNzZXRzOiB0cnVlLFxuICB9KVxufSlcblxudGVzdChcImNvZ25pdG8gYmFja2VuZCBhcHAgY2xpZW50XCIsICgpID0+IHtcbiAgY29uc3QgYXBwID0gbmV3IEFwcCgpXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgXCJTdGFja1wiKVxuXG4gIGNvbnN0IG1vY2tBcHBDbGllbnRQcm92aWRlcjogQXBwQ2xpZW50UHJvdmlkZXIgPSB7XG4gICAgZW52aXJvbm1lbnQ6IFZ5RW52aXJvbm1lbnQuU1RBR0UsXG4gICAgc2VydmljZVRva2VuOiBcInNlcnZpY2VUb2tlblwiLFxuICAgIGF1dGhfdXJsOiBcImF1dGhfdXJsXCIsXG4gIH1cblxuICBuZXcgQ29nbml0b0FwcENsaWVudChzdGFjaywgXCJDb2duaXRvQXBwQ2xpZW50XCIsIHtcbiAgICBhcHBDbGllbnRQcm92aWRlcjogbW9ja0FwcENsaWVudFByb3ZpZGVyLFxuICAgIG5hbWU6IFwibXktYmFja2VuZC1zZXJ2aWNlXCIsXG4gICAgdHlwZTogQXBwQ2xpZW50VHlwZS5CQUNLRU5ELFxuICAgIHNjb3BlczogW1wiaHR0cHM6Ly9hcGkudnlkZXYuaW8vcmVhZFwiLCBcImh0dHBzOi8vYXBpLnZ5ZGV2LmlvL3dyaXRlXCJdLFxuICB9KVxuXG4gIGV4cGVjdChzdGFjaykudG9NYXRjaENka1NuYXBzaG90KHtcbiAgICBpZ25vcmVBc3NldHM6IHRydWUsXG4gIH0pXG59KVxuXG50ZXN0KFwiY29nbml0byBmcm9udGVuZCBhcHAgY2xpZW50IHdpdGggY3VzdG9tIHNlY3JldE5hbWVcIiwgKCkgPT4ge1xuICBjb25zdCBhcHAgPSBuZXcgQXBwKClcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCBcIlN0YWNrXCIpXG5cbiAgY29uc3QgbW9ja0FwcENsaWVudFByb3ZpZGVyOiBBcHBDbGllbnRQcm92aWRlciA9IHtcbiAgICBlbnZpcm9ubWVudDogVnlFbnZpcm9ubWVudC5QUk9ELFxuICAgIHNlcnZpY2VUb2tlbjogXCJzZXJ2aWNlVG9rZW5cIixcbiAgICBhdXRoX3VybDogXCJhdXRoX3VybFwiLFxuICB9XG5cbiAgbmV3IENvZ25pdG9BcHBDbGllbnQoc3RhY2ssIFwiQ29nbml0b0FwcENsaWVudFwiLCB7XG4gICAgYXBwQ2xpZW50UHJvdmlkZXI6IG1vY2tBcHBDbGllbnRQcm92aWRlcixcbiAgICBuYW1lOiBcIm15LWJhY2tlbmQtc2VydmljZVwiLFxuICAgIHR5cGU6IEFwcENsaWVudFR5cGUuQkFDS0VORCxcbiAgICBzY29wZXM6IFtcImh0dHBzOi8vYXBpLnZ5ZGV2LmlvL3JlYWRcIiwgXCJodHRwczovL2FwaS52eWRldi5pby93cml0ZVwiXSxcbiAgICBzZWNyZXROYW1lOiBcIm15LXNlY3JldFwiLFxuICB9KVxuXG4gIGV4cGVjdChzdGFjaykudG9NYXRjaENka1NuYXBzaG90KHtcbiAgICBpZ25vcmVBc3NldHM6IHRydWUsXG4gIH0pXG59KVxuIl19
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
* CDK Construct for Cognito App Client
|
|
3
3
|
*/
|
|
4
4
|
import * as cdk from "aws-cdk-lib";
|
|
5
|
-
import * as iam from "aws-cdk-lib/aws-iam";
|
|
6
|
-
import * as logs from "aws-cdk-lib/aws-logs";
|
|
5
|
+
import type * as iam from "aws-cdk-lib/aws-iam";
|
|
6
|
+
import type * as logs from "aws-cdk-lib/aws-logs";
|
|
7
7
|
import * as secretsmanager from "aws-cdk-lib/aws-secretsmanager";
|
|
8
8
|
import { Construct } from "constructs";
|
|
9
|
-
import type {
|
|
9
|
+
import type { AppClientProvider } from "../vy-cognito-provider";
|
|
10
10
|
/**
|
|
11
11
|
* Type of app client
|
|
12
12
|
*/
|
|
@@ -26,9 +26,9 @@ export declare enum AppClientType {
|
|
|
26
26
|
}
|
|
27
27
|
export interface CognitoAppClientProps {
|
|
28
28
|
/**
|
|
29
|
-
*
|
|
29
|
+
* An AppClientProvider provided from a VyCognitoProvider
|
|
30
30
|
*/
|
|
31
|
-
readonly
|
|
31
|
+
readonly appClientProvider: AppClientProvider;
|
|
32
32
|
/**
|
|
33
33
|
* The name of the app client
|
|
34
34
|
* Must be unique within the environment
|
|
@@ -70,13 +70,6 @@ export interface CognitoAppClientProps {
|
|
|
70
70
|
* @default - true for backend, false for frontend
|
|
71
71
|
*/
|
|
72
72
|
readonly generateSecret?: boolean;
|
|
73
|
-
/**
|
|
74
|
-
* Whether to store the client secret in AWS Secrets Manager
|
|
75
|
-
* Only applicable if generateSecret is true
|
|
76
|
-
*
|
|
77
|
-
* @default true
|
|
78
|
-
*/
|
|
79
|
-
readonly storeSecretInSecretsManager?: boolean;
|
|
80
73
|
/**
|
|
81
74
|
* Name of the secret in AWS Secrets Manager
|
|
82
75
|
* Only applicable if generateSecret is true
|
|
@@ -103,9 +96,15 @@ export interface CognitoAppClientProps {
|
|
|
103
96
|
* - **Frontend**: User authentication using OAuth 2.0 Authorization Code or Implicit Grant
|
|
104
97
|
*
|
|
105
98
|
* @example
|
|
99
|
+
* ```typescript
|
|
100
|
+
* // Create a VyCognitoProvider
|
|
101
|
+
* const vyCognitoProvider = new VyCognitoProvider(this, 'MyProvider', {
|
|
102
|
+
* environment: VyEnvironment.TEST,
|
|
103
|
+
* });
|
|
104
|
+
*
|
|
106
105
|
* // Backend app client for M2M authentication
|
|
107
106
|
* const backendClient = new CognitoAppClient(this, 'BackendClient', {
|
|
108
|
-
*
|
|
107
|
+
* appClientProvider: vyCognitoProvider.appClientProvider,
|
|
109
108
|
* name: 'my-backend-service',
|
|
110
109
|
* type: AppClientType.BACKEND,
|
|
111
110
|
* scopes: ['https://api.vydev.io/read', 'https://api.vydev.io/write']
|
|
@@ -114,17 +113,25 @@ export interface CognitoAppClientProps {
|
|
|
114
113
|
* // Access credentials
|
|
115
114
|
* const clientId = backendClient.clientId;
|
|
116
115
|
* const clientSecret = backendClient.clientSecret; // Stored in Secrets Manager
|
|
116
|
+
* ```
|
|
117
117
|
*
|
|
118
118
|
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* // Create a VyCognitoProvider
|
|
121
|
+
* const vyCognitoProvider = new VyCognitoProvider(this, 'MyProvider', {
|
|
122
|
+
* environment: VyEnvironment.TEST,
|
|
123
|
+
* });
|
|
124
|
+
*
|
|
119
125
|
* // Frontend app client for user authentication
|
|
120
126
|
* const frontendClient = new CognitoAppClient(this, 'FrontendClient', {
|
|
121
|
-
*
|
|
127
|
+
* appClientProvider: vyCognitoProvider.appClientProvider,
|
|
122
128
|
* name: 'my-web-app',
|
|
123
129
|
* type: AppClientType.FRONTEND,
|
|
124
130
|
* scopes: ['email', 'openid', 'profile'],
|
|
125
131
|
* callbackUrls: ['https://my-app.vydev.io/auth/callback'],
|
|
126
132
|
* logoutUrls: ['https://my-app.vydev.io/logout']
|
|
127
133
|
* });
|
|
134
|
+
* ```
|
|
128
135
|
*/
|
|
129
136
|
export declare class CognitoAppClient extends Construct {
|
|
130
137
|
/**
|
|
@@ -135,26 +142,16 @@ export declare class CognitoAppClient extends Construct {
|
|
|
135
142
|
* The underlying custom resource
|
|
136
143
|
*/
|
|
137
144
|
readonly resource: cdk.CustomResource;
|
|
138
|
-
/**
|
|
139
|
-
* The logGroup for the event handler lambda
|
|
140
|
-
*/
|
|
141
|
-
readonly lambdaLogGroup: logs.LogGroup;
|
|
142
|
-
/**
|
|
143
|
-
* The logGroup for the custom resource provider
|
|
144
|
-
*/
|
|
145
|
-
readonly providerLogGroup: logs.LogGroup;
|
|
146
145
|
/**
|
|
147
146
|
* The client ID for authentication
|
|
148
147
|
*/
|
|
149
148
|
readonly clientId: string;
|
|
150
149
|
/**
|
|
151
|
-
*
|
|
152
|
-
* If storeSecretInSecretsManager is true, this returns a reference to the secret value
|
|
150
|
+
* A reference to the client secret
|
|
153
151
|
*/
|
|
154
|
-
readonly
|
|
152
|
+
readonly clientSecretArn?: string;
|
|
155
153
|
/**
|
|
156
154
|
* The Secrets Manager secret containing the client secret
|
|
157
|
-
* Only available if storeSecretInSecretsManager is true and type is backend
|
|
158
155
|
*/
|
|
159
156
|
readonly clientSecretSecret?: secretsmanager.ISecret;
|
|
160
157
|
constructor(scope: Construct, id: string, props: CognitoAppClientProps);
|
|
@@ -5,12 +5,8 @@ import { createRequire } from "node:module";
|
|
|
5
5
|
import * as path from "node:path";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
7
|
import * as cdk from "aws-cdk-lib";
|
|
8
|
-
import
|
|
9
|
-
import * as lambda from "aws-cdk-lib/aws-lambda";
|
|
10
|
-
import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
|
|
11
|
-
import * as logs from "aws-cdk-lib/aws-logs";
|
|
8
|
+
import { SecretValue } from "aws-cdk-lib";
|
|
12
9
|
import * as secretsmanager from "aws-cdk-lib/aws-secretsmanager";
|
|
13
|
-
import * as cr from "aws-cdk-lib/custom-resources";
|
|
14
10
|
import { Construct } from "constructs";
|
|
15
11
|
const require = createRequire(import.meta.url);
|
|
16
12
|
const __filename = fileURLToPath(import.meta.url);
|
|
@@ -44,9 +40,15 @@ export var AppClientType;
|
|
|
44
40
|
* - **Frontend**: User authentication using OAuth 2.0 Authorization Code or Implicit Grant
|
|
45
41
|
*
|
|
46
42
|
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* // Create a VyCognitoProvider
|
|
45
|
+
* const vyCognitoProvider = new VyCognitoProvider(this, 'MyProvider', {
|
|
46
|
+
* environment: VyEnvironment.TEST,
|
|
47
|
+
* });
|
|
48
|
+
*
|
|
47
49
|
* // Backend app client for M2M authentication
|
|
48
50
|
* const backendClient = new CognitoAppClient(this, 'BackendClient', {
|
|
49
|
-
*
|
|
51
|
+
* appClientProvider: vyCognitoProvider.appClientProvider,
|
|
50
52
|
* name: 'my-backend-service',
|
|
51
53
|
* type: AppClientType.BACKEND,
|
|
52
54
|
* scopes: ['https://api.vydev.io/read', 'https://api.vydev.io/write']
|
|
@@ -55,17 +57,25 @@ export var AppClientType;
|
|
|
55
57
|
* // Access credentials
|
|
56
58
|
* const clientId = backendClient.clientId;
|
|
57
59
|
* const clientSecret = backendClient.clientSecret; // Stored in Secrets Manager
|
|
60
|
+
* ```
|
|
58
61
|
*
|
|
59
62
|
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* // Create a VyCognitoProvider
|
|
65
|
+
* const vyCognitoProvider = new VyCognitoProvider(this, 'MyProvider', {
|
|
66
|
+
* environment: VyEnvironment.TEST,
|
|
67
|
+
* });
|
|
68
|
+
*
|
|
60
69
|
* // Frontend app client for user authentication
|
|
61
70
|
* const frontendClient = new CognitoAppClient(this, 'FrontendClient', {
|
|
62
|
-
*
|
|
71
|
+
* appClientProvider: vyCognitoProvider.appClientProvider,
|
|
63
72
|
* name: 'my-web-app',
|
|
64
73
|
* type: AppClientType.FRONTEND,
|
|
65
74
|
* scopes: ['email', 'openid', 'profile'],
|
|
66
75
|
* callbackUrls: ['https://my-app.vydev.io/auth/callback'],
|
|
67
76
|
* logoutUrls: ['https://my-app.vydev.io/logout']
|
|
68
77
|
* });
|
|
78
|
+
* ```
|
|
69
79
|
*/
|
|
70
80
|
export class CognitoAppClient extends Construct {
|
|
71
81
|
/**
|
|
@@ -76,26 +86,16 @@ export class CognitoAppClient extends Construct {
|
|
|
76
86
|
* The underlying custom resource
|
|
77
87
|
*/
|
|
78
88
|
resource;
|
|
79
|
-
/**
|
|
80
|
-
* The logGroup for the event handler lambda
|
|
81
|
-
*/
|
|
82
|
-
lambdaLogGroup;
|
|
83
|
-
/**
|
|
84
|
-
* The logGroup for the custom resource provider
|
|
85
|
-
*/
|
|
86
|
-
providerLogGroup;
|
|
87
89
|
/**
|
|
88
90
|
* The client ID for authentication
|
|
89
91
|
*/
|
|
90
92
|
clientId;
|
|
91
93
|
/**
|
|
92
|
-
*
|
|
93
|
-
* If storeSecretInSecretsManager is true, this returns a reference to the secret value
|
|
94
|
+
* A reference to the client secret
|
|
94
95
|
*/
|
|
95
|
-
|
|
96
|
+
clientSecretArn;
|
|
96
97
|
/**
|
|
97
98
|
* The Secrets Manager secret containing the client secret
|
|
98
|
-
* Only available if storeSecretInSecretsManager is true and type is backend
|
|
99
99
|
*/
|
|
100
100
|
clientSecretSecret;
|
|
101
101
|
constructor(scope, id, props) {
|
|
@@ -106,68 +106,41 @@ export class CognitoAppClient extends Construct {
|
|
|
106
106
|
props.callbackUrls.length === 0) {
|
|
107
107
|
cdk.Annotations.of(this).addWarning("Frontend app clients typically require callbackUrls for OAuth flows");
|
|
108
108
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
const onEventHandler = new NodejsFunction(this, "OnEventHandler", {
|
|
113
|
-
runtime: lambda.Runtime.NODEJS_22_X,
|
|
114
|
-
handler: "handler",
|
|
115
|
-
entry: require.resolve(`${__dirname}/handler`),
|
|
116
|
-
timeout: cdk.Duration.minutes(2),
|
|
117
|
-
memorySize: 256,
|
|
118
|
-
logGroup: this.lambdaLogGroup,
|
|
119
|
-
environment: props.cognitoBaseDomain
|
|
120
|
-
? {
|
|
121
|
-
COGNITO_BASE_DOMAIN: props.cognitoBaseDomain,
|
|
122
|
-
}
|
|
123
|
-
: undefined,
|
|
124
|
-
bundling: {
|
|
125
|
-
minify: true,
|
|
126
|
-
sourceMap: true,
|
|
127
|
-
target: "es2020",
|
|
128
|
-
externalModules: ["aws-sdk"],
|
|
129
|
-
},
|
|
130
|
-
});
|
|
131
|
-
onEventHandler.addToRolePolicy(new iam.PolicyStatement({
|
|
132
|
-
effect: iam.Effect.ALLOW,
|
|
133
|
-
actions: ["execute-api:Invoke"],
|
|
134
|
-
resources: ["*"], // Can be scoped down if API Gateway ARN is known
|
|
135
|
-
}));
|
|
136
|
-
this.providerLogGroup = new logs.LogGroup(this, "ProviderLogGroup", {
|
|
137
|
-
retention: props.logsRetention ?? logs.RetentionDays.ONE_WEEK,
|
|
138
|
-
});
|
|
139
|
-
const provider = new cr.Provider(this, "Provider", {
|
|
140
|
-
onEventHandler,
|
|
141
|
-
logGroup: this.providerLogGroup,
|
|
142
|
-
});
|
|
109
|
+
// props.generateSecret overrides type-specific defaults
|
|
110
|
+
// Default for backend clients is true; for frontend clients false
|
|
111
|
+
const generateSecret = props.generateSecret ?? props.type === AppClientType.BACKEND;
|
|
143
112
|
this.resource = new cdk.CustomResource(this, "Resource", {
|
|
144
|
-
serviceToken:
|
|
113
|
+
serviceToken: props.appClientProvider.serviceToken,
|
|
145
114
|
properties: {
|
|
146
|
-
Environment: props.environment,
|
|
115
|
+
Environment: props.appClientProvider.environment,
|
|
147
116
|
Name: props.name,
|
|
148
117
|
Type: props.type,
|
|
149
118
|
Scopes: props.scopes || [],
|
|
150
119
|
CallbackUrls: props.callbackUrls || [],
|
|
151
120
|
LogoutUrls: props.logoutUrls || [],
|
|
152
|
-
GenerateSecret:
|
|
121
|
+
GenerateSecret: generateSecret,
|
|
153
122
|
},
|
|
154
123
|
// Force replacement if type changes
|
|
155
124
|
resourceType: "Custom::VyCognitoAppClient",
|
|
156
125
|
});
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
if (
|
|
160
|
-
const
|
|
126
|
+
const client_id = this.resource.getAttString("ClientId");
|
|
127
|
+
this.clientId = client_id;
|
|
128
|
+
if (generateSecret) {
|
|
129
|
+
const client_secret = this.resource.getAttString("ClientSecret");
|
|
130
|
+
const auth_url = props.appClientProvider.auth_url;
|
|
131
|
+
// For convenience, store auth_url, client_id, and client_secret in a single JSON secret
|
|
132
|
+
const secretString = JSON.stringify({
|
|
133
|
+
auth_url,
|
|
134
|
+
client_id,
|
|
135
|
+
client_secret,
|
|
136
|
+
});
|
|
161
137
|
this.clientSecretSecret = new secretsmanager.Secret(this, "ClientSecret", {
|
|
162
138
|
secretName: props.secretName ??
|
|
163
|
-
|
|
164
|
-
description: `
|
|
165
|
-
secretStringValue:
|
|
139
|
+
`/vy/${props.appClientProvider.environment}/cognito/app-client/${props.name}`,
|
|
140
|
+
description: `auth_url, client_id and client_secret for Vy Cognito app client ${props.name}`,
|
|
141
|
+
secretStringValue: SecretValue.unsafePlainText(secretString),
|
|
166
142
|
});
|
|
167
|
-
this.
|
|
168
|
-
}
|
|
169
|
-
else if (props.type === AppClientType.BACKEND) {
|
|
170
|
-
this.clientSecret = this.resource.getAttString("ClientSecret");
|
|
143
|
+
this.clientSecretArn = this.clientSecretSecret.secretFullArn;
|
|
171
144
|
}
|
|
172
145
|
}
|
|
173
146
|
/**
|
|
@@ -180,4 +153,4 @@ export class CognitoAppClient extends Construct {
|
|
|
180
153
|
return this.clientSecretSecret.grantRead(grantee);
|
|
181
154
|
}
|
|
182
155
|
}
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0by1hcHAtY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvZ25pdG8tYXBwLWNsaWVudC9jb2duaXRvLWFwcC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzNDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDeEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUE7QUFDbEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQTtBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLHdCQUF3QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUM5RCxPQUFPLEtBQUssSUFBSSxNQUFNLHNCQUFzQixDQUFBO0FBQzVDLE9BQU8sS0FBSyxjQUFjLE1BQU0sZ0NBQWdDLENBQUE7QUFDaEUsT0FBTyxLQUFLLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBR3RDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQzlDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ2pELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7QUFFMUM7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxhQWNYO0FBZEQsV0FBWSxhQUFhO0lBQ3ZCOzs7O09BSUc7SUFDSCxvQ0FBbUIsQ0FBQTtJQUVuQjs7OztPQUlHO0lBQ0gsc0NBQXFCLENBQUE7QUFDdkIsQ0FBQyxF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QWUsQ0FBQyxXQUFXLENBQUM7YUFDaEUsQ0FDRixDQUFBO1lBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQ3hFLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDaEUsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWUsQ0FBQyxPQUF1QjtRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFBO1FBQ25FLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDbkQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDREsgQ29uc3RydWN0IGZvciBDb2duaXRvIEFwcCBDbGllbnRcbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcIm5vZGU6dXJsXCJcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiXG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiXG5pbXBvcnQgKiBhcyBzZWNyZXRzbWFuYWdlciBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCJcbmltcG9ydCAqIGFzIGNyIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCJcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCB0eXBlIHsgVnlFbnZpcm9ubWVudCB9IGZyb20gXCIuLi9zaGFyZWQvdHlwZXNcIlxuXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpXG5jb25zdCBfX2ZpbGVuYW1lID0gZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoX19maWxlbmFtZSlcblxuLyoqXG4gKiBUeXBlIG9mIGFwcCBjbGllbnRcbiAqL1xuZXhwb3J0IGVudW0gQXBwQ2xpZW50VHlwZSB7XG4gIC8qKlxuICAgKiBCYWNrZW5kIGFwcCBjbGllbnQgZm9yIG1hY2hpbmUtdG8tbWFjaGluZSAoTTJNKSBhdXRoZW50aWNhdGlvblxuICAgKiBVc2VzIE9BdXRoIDIuMCBDbGllbnQgQ3JlZGVudGlhbHMgZ3JhbnQgdHlwZVxuICAgKiBHZW5lcmF0ZXMgYSBjbGllbnQgc2VjcmV0IGZvciBhdXRoZW50aWNhdGlvblxuICAgKi9cbiAgQkFDS0VORCA9IFwiYmFja2VuZFwiLFxuXG4gIC8qKlxuICAgKiBGcm9udGVuZCBhcHAgY2xpZW50IGZvciB1c2VyIGF1dGhlbnRpY2F0aW9uXG4gICAqIFVzZXMgT0F1dGggMi4wIEF1dGhvcml6YXRpb24gQ29kZSBvciBJbXBsaWNpdCBncmFudCB0eXBlc1xuICAgKiBTdXBwb3J0cyBjYWxsYmFjayBVUkxzIGFuZCBsb2dvdXQgVVJMcyBmb3IgYnJvd3Nlci1iYXNlZCBmbG93c1xuICAgKi9cbiAgRlJPTlRFTkQgPSBcImZyb250ZW5kXCIsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29nbml0b0FwcENsaWVudFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBWeSBlbnZpcm9ubWVudCB0byBwcm92aXNpb24gaW4gKGUuZy4sIFZ5RW52aXJvbm1lbnQuUFJPRCwgVnlFbnZpcm9ubWVudC5TVEFHRSwgVnlFbnZpcm9ubWVudC5URVNUKVxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IFZ5RW52aXJvbm1lbnRcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGFwcCBjbGllbnRcbiAgICogTXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBlbnZpcm9ubWVudFxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGFwcCBjbGllbnRcbiAgICogLSBiYWNrZW5kOiBNYWNoaW5lLXRvLW1hY2hpbmUgYXV0aGVudGljYXRpb24gd2l0aCBjbGllbnQgY3JlZGVudGlhbHNcbiAgICogLSBmcm9udGVuZDogVXNlciBhdXRoZW50aWNhdGlvbiB3aXRoIGF1dGhvcml6YXRpb24gY29kZSBvciBpbXBsaWNpdCBncmFudFxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogQXBwQ2xpZW50VHlwZVxuXG4gIC8qKlxuICAgKiBPQXV0aCBzY29wZXMgZm9yIHRoaXMgY2xpZW50XG4gICAqXG4gICAqIEZvciBiYWNrZW5kIGNsaWVudHM6IFVzZSByZXNvdXJjZSBzZXJ2ZXIgc2NvcGVzIChlLmcuLCAnaHR0cHM6Ly9hcGkudnlkZXYuaW8vcmVhZCcpXG4gICAqIEZvciBmcm9udGVuZCBjbGllbnRzOiBVc2UgT0lEQyBzY29wZXMgKGUuZy4sICdlbWFpbCcsICdvcGVuaWQnLCAncHJvZmlsZScpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRW1wdHkgYXJyYXlcbiAgICovXG4gIHJlYWRvbmx5IHNjb3Blcz86IHN0cmluZ1tdXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIFVSTHMgZm9yIE9BdXRoIGZsb3dzXG4gICAqIE9ubHkgdXNlZCB3aXRoIGZyb250ZW5kIGNsaWVudHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBjYWxsYmFjayBVUkxzXG4gICAqL1xuICByZWFkb25seSBjYWxsYmFja1VybHM/OiBzdHJpbmdbXVxuXG4gIC8qKlxuICAgKiBMb2dvdXQgVVJMcyBmb3IgT0F1dGggZmxvd3NcbiAgICogT25seSB1c2VkIHdpdGggZnJvbnRlbmQgY2xpZW50c1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGxvZ291dCBVUkxzXG4gICAqL1xuICByZWFkb25seSBsb2dvdXRVcmxzPzogc3RyaW5nW11cblxuICAvKipcbiAgICogV2hldGhlciB0byBnZW5lcmF0ZSBhIGNsaWVudCBzZWNyZXRcbiAgICogQXV0b21hdGljYWxseSBzZXQgYmFzZWQgb24gdHlwZSwgYnV0IGNhbiBiZSBvdmVycmlkZGVuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSBmb3IgYmFja2VuZCwgZmFsc2UgZm9yIGZyb250ZW5kXG4gICAqL1xuICByZWFkb25seSBnZW5lcmF0ZVNlY3JldD86IGJvb2xlYW5cblxuICAvKipcbiAgICogV2hldGhlciB0byBzdG9yZSB0aGUgY2xpZW50IHNlY3JldCBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyXG4gICAqIE9ubHkgYXBwbGljYWJsZSBpZiBnZW5lcmF0ZVNlY3JldCBpcyB0cnVlXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHN0b3JlU2VjcmV0SW5TZWNyZXRzTWFuYWdlcj86IGJvb2xlYW5cblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc2VjcmV0IGluIEFXUyBTZWNyZXRzIE1hbmFnZXJcbiAgICogT25seSBhcHBsaWNhYmxlIGlmIGdlbmVyYXRlU2VjcmV0IGlzIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldE5hbWU/OiBzdHJpbmdcblxuICAvKipcbiAgICogQmFzZSBkb21haW4gZm9yIENvZ25pdG8gc2VydmljZVxuICAgKiBAZGVmYXVsdCAnY29nbml0by52eWRldi5pbydcbiAgICovXG4gIHJlYWRvbmx5IGNvZ25pdG9CYXNlRG9tYWluPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFS1xuICAgKi9cbiAgcmVhZG9ubHkgbG9nc1JldGVudGlvbj86IGxvZ3MuUmV0ZW50aW9uRGF5c1xufVxuXG4vKipcbiAqIEEgQ29nbml0byBBcHAgQ2xpZW50IG1hbmFnZWQgdGhyb3VnaCBWeSdzIGNlbnRyYWwgQ29nbml0byBzZXJ2aWNlXG4gKlxuICogQXBwIGNsaWVudHMgYXJlIHRoZSB1c2VyIHBvb2wgYXV0aGVudGljYXRpb24gcmVzb3VyY2VzIGF0dGFjaGVkIHRvIHlvdXIgYXBwLlxuICogVXNlIGFuIGFwcCBjbGllbnQgdG8gY29uZmlndXJlIHRoZSBwZXJtaXR0ZWQgYXV0aGVudGljYXRpb24gYWN0aW9ucyBmb3IgYW4gYXBwLlxuICpcbiAqIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgYXBwIGNsaWVudHM6XG4gKiAtICoqQmFja2VuZCoqOiBNYWNoaW5lLXRvLW1hY2hpbmUgYXV0aGVudGljYXRpb24gdXNpbmcgT0F1dGggMi4wIENsaWVudCBDcmVkZW50aWFsc1xuICogLSAqKkZyb250ZW5kKio6IFVzZXIgYXV0aGVudGljYXRpb24gdXNpbmcgT0F1dGggMi4wIEF1dGhvcml6YXRpb24gQ29kZSBvciBJbXBsaWNpdCBHcmFudFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBCYWNrZW5kIGFwcCBjbGllbnQgZm9yIE0yTSBhdXRoZW50aWNhdGlvblxuICogY29uc3QgYmFja2VuZENsaWVudCA9IG5ldyBDb2duaXRvQXBwQ2xpZW50KHRoaXMsICdCYWNrZW5kQ2xpZW50Jywge1xuICogICBlbnZpcm9ubWVudDogVnlFbnZpcm9ubWVudC5URVNULFxuICogICBuYW1lOiAnbXktYmFja2VuZC1zZXJ2aWNlJyxcbiAqICAgdHlwZTogQXBwQ2xpZW50VHlwZS5CQUNLRU5ELFxuICogICBzY29wZXM6IFsnaHR0cHM6Ly9hcGkudnlkZXYuaW8vcmVhZCcsICdodHRwczovL2FwaS52eWRldi5pby93cml0ZSddXG4gKiB9KTtcbiAqXG4gKiAvLyBBY2Nlc3MgY3JlZGVudGlhbHNcbiAqIGNvbnN0IGNsaWVudElkID0gYmFja2VuZENsaWVudC5jbGllbnRJZDtcbiAqIGNvbnN0IGNsaWVudFNlY3JldCA9IGJhY2tlbmRDbGllbnQuY2xpZW50U2VjcmV0OyAvLyBTdG9yZWQgaW4gU2VjcmV0cyBNYW5hZ2VyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZyb250ZW5kIGFwcCBjbGllbnQgZm9yIHVzZXIgYXV0aGVudGljYXRpb25cbiAqIGNvbnN0IGZyb250ZW5kQ2xpZW50ID0gbmV3IENvZ25pdG9BcHBDbGllbnQodGhpcywgJ0Zyb250ZW5kQ2xpZW50Jywge1xuICogICBlbnZpcm9ubWVudDogVnlFbnZpcm9ubWVudC5QUk9ELFxuICogICBuYW1lOiAnbXktd2ViLWFwcCcsXG4gKiAgIHR5cGU6IEFwcENsaWVudFR5cGUuRlJPTlRFTkQsXG4gKiAgIHNjb3BlczogWydlbWFpbCcsICdvcGVuaWQnLCAncHJvZmlsZSddLFxuICogICBjYWxsYmFja1VybHM6IFsnaHR0cHM6Ly9teS1hcHAudnlkZXYuaW8vYXV0aC9jYWxsYmFjayddLFxuICogICBsb2dvdXRVcmxzOiBbJ2h0dHBzOi8vbXktYXBwLnZ5ZGV2LmlvL2xvZ291dCddXG4gKiB9KTtcbiAqL1xuZXhwb3J0IGNsYXNzIENvZ25pdG9BcHBDbGllbnQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGFwcCBjbGllbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgY3VzdG9tIHJlc291cmNlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IGNkay5DdXN0b21SZXNvdXJjZVxuXG4gIC8qKlxuICAgKiBUaGUgbG9nR3JvdXAgZm9yIHRoZSBldmVudCBoYW5kbGVyIGxhbWJkYVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGxhbWJkYUxvZ0dyb3VwOiBsb2dzLkxvZ0dyb3VwXG5cbiAgLyoqXG4gICAqIFRoZSBsb2dHcm91cCBmb3IgdGhlIGN1c3RvbSByZXNvdXJjZSBwcm92aWRlclxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb3ZpZGVyTG9nR3JvdXA6IGxvZ3MuTG9nR3JvdXBcblxuICAvKipcbiAgICogVGhlIGNsaWVudCBJRCBmb3IgYXV0aGVudGljYXRpb25cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjbGllbnRJZDogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSBjbGllbnQgc2VjcmV0IChvbmx5IGZvciBiYWNrZW5kIGNsaWVudHMpXG4gICAqIElmIHN0b3JlU2VjcmV0SW5TZWNyZXRzTWFuYWdlciBpcyB0cnVlLCB0aGlzIHJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHNlY3JldCB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNsaWVudFNlY3JldD86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBjb250YWluaW5nIHRoZSBjbGllbnQgc2VjcmV0XG4gICAqIE9ubHkgYXZhaWxhYmxlIGlmIHN0b3JlU2VjcmV0SW5TZWNyZXRzTWFuYWdlciBpcyB0cnVlIGFuZCB0eXBlIGlzIGJhY2tlbmRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjbGllbnRTZWNyZXRTZWNyZXQ/OiBzZWNyZXRzbWFuYWdlci5JU2VjcmV0XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENvZ25pdG9BcHBDbGllbnRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIHRoaXMubmFtZSA9IHByb3BzLm5hbWVcblxuICAgIGlmIChcbiAgICAgIHByb3BzLnR5cGUgPT09IEFwcENsaWVudFR5cGUuRlJPTlRFTkQgJiZcbiAgICAgIHByb3BzLmNhbGxiYWNrVXJscyAmJlxuICAgICAgcHJvcHMuY2FsbGJhY2tVcmxzLmxlbmd0aCA9PT0gMFxuICAgICkge1xuICAgICAgY2RrLkFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmcoXG4gICAgICAgIFwiRnJvbnRlbmQgYXBwIGNsaWVudHMgdHlwaWNhbGx5IHJlcXVpcmUgY2FsbGJhY2tVcmxzIGZvciBPQXV0aCBmbG93c1wiLFxuICAgICAgKVxuICAgIH1cblxuICAgIHRoaXMubGFtYmRhTG9nR3JvdXAgPSBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCBcIkxhbWJkYUxvZ0dyb3VwXCIsIHtcbiAgICAgIHJldGVudGlvbjogcHJvcHMubG9nc1JldGVudGlvbiA/PyBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgfSlcblxuICAgIGNvbnN0IG9uRXZlbnRIYW5kbGVyID0gbmV3IE5vZGVqc0Z1bmN0aW9uKHRoaXMsIFwiT25FdmVudEhhbmRsZXJcIiwge1xuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIyX1gsXG4gICAgICBoYW5kbGVyOiBcImhhbmRsZXJcIixcbiAgICAgIGVudHJ5OiByZXF1aXJlLnJlc29sdmUoYCR7X19kaXJuYW1lfS9oYW5kbGVyYCksXG4gICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcygyKSxcbiAgICAgIG1lbW9yeVNpemU6IDI1NixcbiAgICAgIGxvZ0dyb3VwOiB0aGlzLmxhbWJkYUxvZ0dyb3VwLFxuICAgICAgZW52aXJvbm1lbnQ6IHByb3BzLmNvZ25pdG9CYXNlRG9tYWluXG4gICAgICAgID8ge1xuICAgICAgICAgICAgQ09HTklUT19CQVNFX0RPTUFJTjogcHJvcHMuY29nbml0b0Jhc2VEb21haW4sXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgIG1pbmlmeTogdHJ1ZSxcbiAgICAgICAgc291cmNlTWFwOiB0cnVlLFxuICAgICAgICB0YXJnZXQ6IFwiZXMyMDIwXCIsXG4gICAgICAgIGV4dGVybmFsTW9kdWxlczogW1wiYXdzLXNka1wiXSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIG9uRXZlbnRIYW5kbGVyLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbXCJleGVjdXRlLWFwaTpJbnZva2VcIl0sXG4gICAgICAgIHJlc291cmNlczogW1wiKlwiXSwgLy8gQ2FuIGJlIHNjb3BlZCBkb3duIGlmIEFQSSBHYXRld2F5IEFSTiBpcyBrbm93blxuICAgICAgfSksXG4gICAgKVxuXG4gICAgdGhpcy5wcm92aWRlckxvZ0dyb3VwID0gbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgXCJQcm92aWRlckxvZ0dyb3VwXCIsIHtcbiAgICAgIHJldGVudGlvbjogcHJvcHMubG9nc1JldGVudGlvbiA/PyBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgfSlcblxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IGNyLlByb3ZpZGVyKHRoaXMsIFwiUHJvdmlkZXJcIiwge1xuICAgICAgb25FdmVudEhhbmRsZXIsXG4gICAgICBsb2dHcm91cDogdGhpcy5wcm92aWRlckxvZ0dyb3VwLFxuICAgIH0pXG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGNkay5DdXN0b21SZXNvdXJjZSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogcHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBFbnZpcm9ubWVudDogcHJvcHMuZW52aXJvbm1lbnQsXG4gICAgICAgIE5hbWU6IHByb3BzLm5hbWUsXG4gICAgICAgIFR5cGU6IHByb3BzLnR5cGUsXG4gICAgICAgIFNjb3BlczogcHJvcHMuc2NvcGVzIHx8IFtdLFxuICAgICAgICBDYWxsYmFja1VybHM6IHByb3BzLmNhbGxiYWNrVXJscyB8fCBbXSxcbiAgICAgICAgTG9nb3V0VXJsczogcHJvcHMubG9nb3V0VXJscyB8fCBbXSxcbiAgICAgICAgR2VuZXJhdGVTZWNyZXQ6IHByb3BzLmdlbmVyYXRlU2VjcmV0LFxuICAgICAgfSxcbiAgICAgIC8vIEZvcmNlIHJlcGxhY2VtZW50IGlmIHR5cGUgY2hhbmdlc1xuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6VnlDb2duaXRvQXBwQ2xpZW50XCIsXG4gICAgfSlcblxuICAgIHRoaXMuY2xpZW50SWQgPSB0aGlzLnJlc291cmNlLmdldEF0dFN0cmluZyhcIkNsaWVudElkXCIpXG5cbiAgICBjb25zdCBzaG91bGRTdG9yZVNlY3JldCA9IHByb3BzLnN0b3JlU2VjcmV0SW5TZWNyZXRzTWFuYWdlciAhPT0gZmFsc2VcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gQXBwQ2xpZW50VHlwZS5CQUNLRU5EICYmIHNob3VsZFN0b3JlU2VjcmV0KSB7XG4gICAgICBjb25zdCBzZWNyZXRWYWx1ZSA9IHRoaXMucmVzb3VyY2UuZ2V0QXR0U3RyaW5nKFwiQ2xpZW50U2VjcmV0XCIpXG5cbiAgICAgIHRoaXMuY2xpZW50U2VjcmV0U2VjcmV0ID0gbmV3IHNlY3JldHNtYW5hZ2VyLlNlY3JldChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJDbGllbnRTZWNyZXRcIixcbiAgICAgICAge1xuICAgICAgICAgIHNlY3JldE5hbWU6XG4gICAgICAgICAgICBwcm9wcy5zZWNyZXROYW1lID8/XG4gICAgICAgICAgICBgdnkvJHtwcm9wcy5lbnZpcm9ubWVudH0vY29nbml0by9hcHAtY2xpZW50LyR7cHJvcHMubmFtZX1gLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgQ2xpZW50IHNlY3JldCBmb3IgVnkgQ29nbml0byBhcHAgY2xpZW50ICR7cHJvcHMubmFtZX1gLFxuICAgICAgICAgIHNlY3JldFN0cmluZ1ZhbHVlOiBjZGsuU2VjcmV0VmFsdWUudW5zYWZlUGxhaW5UZXh0KHNlY3JldFZhbHVlKSxcbiAgICAgICAgfSxcbiAgICAgIClcblxuICAgICAgdGhpcy5jbGllbnRTZWNyZXQgPSB0aGlzLmNsaWVudFNlY3JldFNlY3JldC5zZWNyZXRWYWx1ZS51bnNhZmVVbndyYXAoKVxuICAgIH0gZWxzZSBpZiAocHJvcHMudHlwZSA9PT0gQXBwQ2xpZW50VHlwZS5CQUNLRU5EKSB7XG4gICAgICB0aGlzLmNsaWVudFNlY3JldCA9IHRoaXMucmVzb3VyY2UuZ2V0QXR0U3RyaW5nKFwiQ2xpZW50U2VjcmV0XCIpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgYWNjZXNzIHRvIHRoZSBjbGllbnQgc2VjcmV0IChpZiBpdCBleGlzdHMgaW4gU2VjcmV0cyBNYW5hZ2VyKVxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZFNlY3JldChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgaWYgKCF0aGlzLmNsaWVudFNlY3JldFNlY3JldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2xpZW50IHNlY3JldCBpcyBub3Qgc3RvcmVkIGluIFNlY3JldHMgTWFuYWdlclwiKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbGllbnRTZWNyZXRTZWNyZXQuZ3JhbnRSZWFkKGdyYW50ZWUpXG4gIH1cbn1cbiJdfQ==
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0by1hcHAtY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvZ25pdG8tYXBwLWNsaWVudC9jb2duaXRvLWFwcC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzNDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDeEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUE7QUFDbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUd6QyxPQUFPLEtBQUssY0FBYyxNQUFNLGdDQUFnQyxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFHdEMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDOUMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtBQUUxQzs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGFBY1g7QUFkRCxXQUFZLGFBQWE7SUFDdkI7Ozs7T0FJRztJQUNILG9DQUFtQixDQUFBO0lBRW5COzs7O09BSUc7SUFDSCxzQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBZFcsYUFBYSxLQUFiLGFBQWEsUUFjeEI7QUF5RUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0NHO0FBQ0gsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQVM7SUFDN0M7O09BRUc7SUFDYSxJQUFJLENBQVE7SUFFNUI7O09BRUc7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LENBQUE7UUFDbkUsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENESyBDb25zdHJ1Y3QgZm9yIENvZ25pdG8gQXBwIENsaWVudFxuICovXG5cbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tIFwibm9kZTp1cmxcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgeyBTZWNyZXRWYWx1ZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgdHlwZSAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiXG5pbXBvcnQgdHlwZSAqIGFzIGxvZ3MgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCJcbmltcG9ydCAqIGFzIHNlY3JldHNtYW5hZ2VyIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIlxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIlxuaW1wb3J0IHR5cGUgeyBBcHBDbGllbnRQcm92aWRlciB9IGZyb20gXCIuLi92eS1jb2duaXRvLXByb3ZpZGVyXCJcblxuY29uc3QgcmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKVxuY29uc3QgX19maWxlbmFtZSA9IGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKVxuY29uc3QgX19kaXJuYW1lID0gcGF0aC5kaXJuYW1lKF9fZmlsZW5hbWUpXG5cbi8qKlxuICogVHlwZSBvZiBhcHAgY2xpZW50XG4gKi9cbmV4cG9ydCBlbnVtIEFwcENsaWVudFR5cGUge1xuICAvKipcbiAgICogQmFja2VuZCBhcHAgY2xpZW50IGZvciBtYWNoaW5lLXRvLW1hY2hpbmUgKE0yTSkgYXV0aGVudGljYXRpb25cbiAgICogVXNlcyBPQXV0aCAyLjAgQ2xpZW50IENyZWRlbnRpYWxzIGdyYW50IHR5cGVcbiAgICogR2VuZXJhdGVzIGEgY2xpZW50IHNlY3JldCBmb3IgYXV0aGVudGljYXRpb25cbiAgICovXG4gIEJBQ0tFTkQgPSBcImJhY2tlbmRcIixcblxuICAvKipcbiAgICogRnJvbnRlbmQgYXBwIGNsaWVudCBmb3IgdXNlciBhdXRoZW50aWNhdGlvblxuICAgKiBVc2VzIE9BdXRoIDIuMCBBdXRob3JpemF0aW9uIENvZGUgb3IgSW1wbGljaXQgZ3JhbnQgdHlwZXNcbiAgICogU3VwcG9ydHMgY2FsbGJhY2sgVVJMcyBhbmQgbG9nb3V0IFVSTHMgZm9yIGJyb3dzZXItYmFzZWQgZmxvd3NcbiAgICovXG4gIEZST05URU5EID0gXCJmcm9udGVuZFwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvZ25pdG9BcHBDbGllbnRQcm9wcyB7XG4gIC8qKlxuICAgKiBBbiBBcHBDbGllbnRQcm92aWRlciBwcm92aWRlZCBmcm9tIGEgVnlDb2duaXRvUHJvdmlkZXJcbiAgICovXG4gIHJlYWRvbmx5IGFwcENsaWVudFByb3ZpZGVyOiBBcHBDbGllbnRQcm92aWRlclxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYXBwIGNsaWVudFxuICAgKiBNdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGVudmlyb25tZW50XG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgYXBwIGNsaWVudFxuICAgKiAtIGJhY2tlbmQ6IE1hY2hpbmUtdG8tbWFjaGluZSBhdXRoZW50aWNhdGlvbiB3aXRoIGNsaWVudCBjcmVkZW50aWFsc1xuICAgKiAtIGZyb250ZW5kOiBVc2VyIGF1dGhlbnRpY2F0aW9uIHdpdGggYXV0aG9yaXphdGlvbiBjb2RlIG9yIGltcGxpY2l0IGdyYW50XG4gICAqL1xuICByZWFkb25seSB0eXBlOiBBcHBDbGllbnRUeXBlXG5cbiAgLyoqXG4gICAqIE9BdXRoIHNjb3BlcyBmb3IgdGhpcyBjbGllbnRcbiAgICpcbiAgICogRm9yIGJhY2tlbmQgY2xpZW50czogVXNlIHJlc291cmNlIHNlcnZlciBzY29wZXMgKGUuZy4sICdodHRwczovL2FwaS52eWRldi5pby9yZWFkJylcbiAgICogRm9yIGZyb250ZW5kIGNsaWVudHM6IFVzZSBPSURDIHNjb3BlcyAoZS5nLiwgJ2VtYWlsJywgJ29wZW5pZCcsICdwcm9maWxlJylcbiAgICpcbiAgICogQGRlZmF1bHQgLSBFbXB0eSBhcnJheVxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGVzPzogc3RyaW5nW11cblxuICAvKipcbiAgICogQ2FsbGJhY2sgVVJMcyBmb3IgT0F1dGggZmxvd3NcbiAgICogT25seSB1c2VkIHdpdGggZnJvbnRlbmQgY2xpZW50c1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGNhbGxiYWNrIFVSTHNcbiAgICovXG4gIHJlYWRvbmx5IGNhbGxiYWNrVXJscz86IHN0cmluZ1tdXG5cbiAgLyoqXG4gICAqIExvZ291dCBVUkxzIGZvciBPQXV0aCBmbG93c1xuICAgKiBPbmx5IHVzZWQgd2l0aCBmcm9udGVuZCBjbGllbnRzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbG9nb3V0IFVSTHNcbiAgICovXG4gIHJlYWRvbmx5IGxvZ291dFVybHM/OiBzdHJpbmdbXVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGdlbmVyYXRlIGEgY2xpZW50IHNlY3JldFxuICAgKiBBdXRvbWF0aWNhbGx5IHNldCBiYXNlZCBvbiB0eXBlLCBidXQgY2FuIGJlIG92ZXJyaWRkZW5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlIGZvciBiYWNrZW5kLCBmYWxzZSBmb3IgZnJvbnRlbmRcbiAgICovXG4gIHJlYWRvbmx5IGdlbmVyYXRlU2VjcmV0PzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBzZWNyZXQgaW4gQVdTIFNlY3JldHMgTWFuYWdlclxuICAgKiBPbmx5IGFwcGxpY2FibGUgaWYgZ2VuZXJhdGVTZWNyZXQgaXMgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0TmFtZT86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBCYXNlIGRvbWFpbiBmb3IgQ29nbml0byBzZXJ2aWNlXG4gICAqIEBkZWZhdWx0ICdjb2duaXRvLnZ5ZGV2LmlvJ1xuICAgKi9cbiAgcmVhZG9ubHkgY29nbml0b0Jhc2VEb21haW4/OiBzdHJpbmdcblxuICAvKipcbiAgICogQGRlZmF1bHQgbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLXG4gICAqL1xuICByZWFkb25seSBsb2dzUmV0ZW50aW9uPzogbG9ncy5SZXRlbnRpb25EYXlzXG59XG5cbi8qKlxuICogQSBDb2duaXRvIEFwcCBDbGllbnQgbWFuYWdlZCB0aHJvdWdoIFZ5J3MgY2VudHJhbCBDb2duaXRvIHNlcnZpY2VcbiAqXG4gKiBBcHAgY2xpZW50cyBhcmUgdGhlIHVzZXIgcG9vbCBhdXRoZW50aWNhdGlvbiByZXNvdXJjZXMgYXR0YWNoZWQgdG8geW91ciBhcHAuXG4gKiBVc2UgYW4gYXBwIGNsaWVudCB0byBjb25maWd1cmUgdGhlIHBlcm1pdHRlZCBhdXRoZW50aWNhdGlvbiBhY3Rpb25zIGZvciBhbiBhcHAuXG4gKlxuICogVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBhcHAgY2xpZW50czpcbiAqIC0gKipCYWNrZW5kKio6IE1hY2hpbmUtdG8tbWFjaGluZSBhdXRoZW50aWNhdGlvbiB1c2luZyBPQXV0aCAyLjAgQ2xpZW50IENyZWRlbnRpYWxzXG4gKiAtICoqRnJvbnRlbmQqKjogVXNlciBhdXRoZW50aWNhdGlvbiB1c2luZyBPQXV0aCAyLjAgQXV0aG9yaXphdGlvbiBDb2RlIG9yIEltcGxpY2l0IEdyYW50XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICAvLyBDcmVhdGUgYSBWeUNvZ25pdG9Qcm92aWRlclxuICogY29uc3QgdnlDb2duaXRvUHJvdmlkZXIgPSBuZXcgVnlDb2duaXRvUHJvdmlkZXIodGhpcywgJ015UHJvdmlkZXInLCB7XG4gKiAgIGVudmlyb25tZW50OiBWeUVudmlyb25tZW50LlRFU1QsXG4gKiB9KTtcbiAqXG4gKiAvLyBCYWNrZW5kIGFwcCBjbGllbnQgZm9yIE0yTSBhdXRoZW50aWNhdGlvblxuICogY29uc3QgYmFja2VuZENsaWVudCA9IG5ldyBDb2duaXRvQXBwQ2xpZW50KHRoaXMsICdCYWNrZW5kQ2xpZW50Jywge1xuICogICBhcHBDbGllbnRQcm92aWRlcjogdnlDb2duaXRvUHJvdmlkZXIuYXBwQ2xpZW50UHJvdmlkZXIsXG4gKiAgIG5hbWU6ICdteS1iYWNrZW5kLXNlcnZpY2UnLFxuICogICB0eXBlOiBBcHBDbGllbnRUeXBlLkJBQ0tFTkQsXG4gKiAgIHNjb3BlczogWydodHRwczovL2FwaS52eWRldi5pby9yZWFkJywgJ2h0dHBzOi8vYXBpLnZ5ZGV2LmlvL3dyaXRlJ11cbiAqIH0pO1xuICpcbiAqIC8vIEFjY2VzcyBjcmVkZW50aWFsc1xuICogY29uc3QgY2xpZW50SWQgPSBiYWNrZW5kQ2xpZW50LmNsaWVudElkO1xuICogY29uc3QgY2xpZW50U2VjcmV0ID0gYmFja2VuZENsaWVudC5jbGllbnRTZWNyZXQ7IC8vIFN0b3JlZCBpbiBTZWNyZXRzIE1hbmFnZXJcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBDcmVhdGUgYSBWeUNvZ25pdG9Qcm92aWRlclxuICogY29uc3QgdnlDb2duaXRvUHJvdmlkZXIgPSBuZXcgVnlDb2duaXRvUHJvdmlkZXIodGhpcywgJ015UHJvdmlkZXInLCB7XG4gKiAgIGVudmlyb25tZW50OiBWeUVudmlyb25tZW50LlRFU1QsXG4gKiB9KTtcbiAqXG4gKiAvLyBGcm9udGVuZCBhcHAgY2xpZW50IGZvciB1c2VyIGF1dGhlbnRpY2F0aW9uXG4gKiBjb25zdCBmcm9udGVuZENsaWVudCA9IG5ldyBDb2duaXRvQXBwQ2xpZW50KHRoaXMsICdGcm9udGVuZENsaWVudCcsIHtcbiAqICAgYXBwQ2xpZW50UHJvdmlkZXI6IHZ5Q29nbml0b1Byb3ZpZGVyLmFwcENsaWVudFByb3ZpZGVyLFxuICogICBuYW1lOiAnbXktd2ViLWFwcCcsXG4gKiAgIHR5cGU6IEFwcENsaWVudFR5cGUuRlJPTlRFTkQsXG4gKiAgIHNjb3BlczogWydlbWFpbCcsICdvcGVuaWQnLCAncHJvZmlsZSddLFxuICogICBjYWxsYmFja1VybHM6IFsnaHR0cHM6Ly9teS1hcHAudnlkZXYuaW8vYXV0aC9jYWxsYmFjayddLFxuICogICBsb2dvdXRVcmxzOiBbJ2h0dHBzOi8vbXktYXBwLnZ5ZGV2LmlvL2xvZ291dCddXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgQ29nbml0b0FwcENsaWVudCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYXBwIGNsaWVudFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgdW5kZXJseWluZyBjdXN0b20gcmVzb3VyY2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogY2RrLkN1c3RvbVJlc291cmNlXG5cbiAgLyoqXG4gICAqIFRoZSBjbGllbnQgSUQgZm9yIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2xpZW50SWQ6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgY2xpZW50IHNlY3JldFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNsaWVudFNlY3JldEFybj86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBjb250YWluaW5nIHRoZSBjbGllbnQgc2VjcmV0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2xpZW50U2VjcmV0U2VjcmV0Pzogc2VjcmV0c21hbmFnZXIuSVNlY3JldFxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDb2duaXRvQXBwQ2xpZW50UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICB0aGlzLm5hbWUgPSBwcm9wcy5uYW1lXG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy50eXBlID09PSBBcHBDbGllbnRUeXBlLkZST05URU5EICYmXG4gICAgICBwcm9wcy5jYWxsYmFja1VybHMgJiZcbiAgICAgIHByb3BzLmNhbGxiYWNrVXJscy5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIGNkay5Bbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRXYXJuaW5nKFxuICAgICAgICBcIkZyb250ZW5kIGFwcCBjbGllbnRzIHR5cGljYWxseSByZXF1aXJlIGNhbGxiYWNrVXJscyBmb3IgT0F1dGggZmxvd3NcIixcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBwcm9wcy5nZW5lcmF0ZVNlY3JldCBvdmVycmlkZXMgdHlwZS1zcGVjaWZpYyBkZWZhdWx0c1xuICAgIC8vIERlZmF1bHQgZm9yIGJhY2tlbmQgY2xpZW50cyBpcyB0cnVlOyBmb3IgZnJvbnRlbmQgY2xpZW50cyBmYWxzZVxuICAgIGNvbnN0IGdlbmVyYXRlU2VjcmV0ID1cbiAgICAgIHByb3BzLmdlbmVyYXRlU2VjcmV0ID8/IHByb3BzLnR5cGUgPT09IEFwcENsaWVudFR5cGUuQkFDS0VORFxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHByb3BzLmFwcENsaWVudFByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgRW52aXJvbm1lbnQ6IHByb3BzLmFwcENsaWVudFByb3ZpZGVyLmVudmlyb25tZW50LFxuICAgICAgICBOYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgICBUeXBlOiBwcm9wcy50eXBlLFxuICAgICAgICBTY29wZXM6IHByb3BzLnNjb3BlcyB8fCBbXSxcbiAgICAgICAgQ2FsbGJhY2tVcmxzOiBwcm9wcy5jYWxsYmFja1VybHMgfHwgW10sXG4gICAgICAgIExvZ291dFVybHM6IHByb3BzLmxvZ291dFVybHMgfHwgW10sXG4gICAgICAgIEdlbmVyYXRlU2VjcmV0OiBnZW5lcmF0ZVNlY3JldCxcbiAgICAgIH0sXG4gICAgICAvLyBGb3JjZSByZXBsYWNlbWVudCBpZiB0eXBlIGNoYW5nZXNcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OlZ5Q29nbml0b0FwcENsaWVudFwiLFxuICAgIH0pXG5cbiAgICBjb25zdCBjbGllbnRfaWQgPSB0aGlzLnJlc291cmNlLmdldEF0dFN0cmluZyhcIkNsaWVudElkXCIpXG4gICAgdGhpcy5jbGllbnRJZCA9IGNsaWVudF9pZFxuXG4gICAgaWYgKGdlbmVyYXRlU2VjcmV0KSB7XG4gICAgICBjb25zdCBjbGllbnRfc2VjcmV0ID0gdGhpcy5yZXNvdXJjZS5nZXRBdHRTdHJpbmcoXCJDbGllbnRTZWNyZXRcIilcbiAgICAgIGNvbnN0IGF1dGhfdXJsID0gcHJvcHMuYXBwQ2xpZW50UHJvdmlkZXIuYXV0aF91cmxcblxuICAgICAgLy8gRm9yIGNvbnZlbmllbmNlLCBzdG9yZSBhdXRoX3VybCwgY2xpZW50X2lkLCBhbmQgY2xpZW50X3NlY3JldCBpbiBhIHNpbmdsZSBKU09OIHNlY3JldFxuICAgICAgY29uc3Qgc2VjcmV0U3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBhdXRoX3VybCxcbiAgICAgICAgY2xpZW50X2lkLFxuICAgICAgICBjbGllbnRfc2VjcmV0LFxuICAgICAgfSlcblxuICAgICAgdGhpcy5jbGllbnRTZWNyZXRTZWNyZXQgPSBuZXcgc2VjcmV0c21hbmFnZXIuU2VjcmV0KFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIkNsaWVudFNlY3JldFwiLFxuICAgICAgICB7XG4gICAgICAgICAgc2VjcmV0TmFtZTpcbiAgICAgICAgICAgIHByb3BzLnNlY3JldE5hbWUgPz9cbiAgICAgICAgICAgIGAvdnkvJHtwcm9wcy5hcHBDbGllbnRQcm92aWRlci5lbnZpcm9ubWVudH0vY29nbml0by9hcHAtY2xpZW50LyR7cHJvcHMubmFtZX1gLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgYXV0aF91cmwsIGNsaWVudF9pZCBhbmQgY2xpZW50X3NlY3JldCBmb3IgVnkgQ29nbml0byBhcHAgY2xpZW50ICR7cHJvcHMubmFtZX1gLFxuICAgICAgICAgIHNlY3JldFN0cmluZ1ZhbHVlOiBTZWNyZXRWYWx1ZS51bnNhZmVQbGFpblRleHQoc2VjcmV0U3RyaW5nKSxcbiAgICAgICAgfSxcbiAgICAgIClcblxuICAgICAgdGhpcy5jbGllbnRTZWNyZXRBcm4gPSB0aGlzLmNsaWVudFNlY3JldFNlY3JldC5zZWNyZXRGdWxsQXJuXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgYWNjZXNzIHRvIHRoZSBjbGllbnQgc2VjcmV0IChpZiBpdCBleGlzdHMgaW4gU2VjcmV0cyBNYW5hZ2VyKVxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZFNlY3JldChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgaWYgKCF0aGlzLmNsaWVudFNlY3JldFNlY3JldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2xpZW50IHNlY3JldCBpcyBub3Qgc3RvcmVkIGluIFNlY3JldHMgTWFuYWdlclwiKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbGllbnRTZWNyZXRTZWNyZXQuZ3JhbnRSZWFkKGdyYW50ZWUpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -5,8 +5,12 @@ import { CognitoResourceServer } from "../cognito-resource-server";
|
|
|
5
5
|
test("cognito resource server", () => {
|
|
6
6
|
const app = new App();
|
|
7
7
|
const stack = new Stack(app, "Stack");
|
|
8
|
-
|
|
8
|
+
const mockResourceServerProvider = {
|
|
9
9
|
environment: VyEnvironment.TEST,
|
|
10
|
+
serviceToken: "serviceToken",
|
|
11
|
+
};
|
|
12
|
+
new CognitoResourceServer(stack, "CognitoResourceServer", {
|
|
13
|
+
resourceServerProvider: mockResourceServerProvider,
|
|
10
14
|
name: "testName",
|
|
11
15
|
identifier: "testIdentifier",
|
|
12
16
|
scopes: [
|
|
@@ -20,4 +24,4 @@ test("cognito resource server", () => {
|
|
|
20
24
|
ignoreAssets: true,
|
|
21
25
|
});
|
|
22
26
|
});
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb2duaXRvLXJlc291cmNlLXNlcnZlci9fX3Rlc3RfXy9pbmRleC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3hDLE9BQU8sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRWxELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBRWxFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUU7SUFDbkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUNyQixNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFFckMsTUFBTSwwQkFBMEIsR0FBMkI7UUFDekQsV0FBVyxFQUFFLGFBQWEsQ0FBQyxJQUFJO1FBQy9CLFlBQVksRUFBRSxjQUFjO0tBQzdCLENBQUE7SUFFRCxJQUFJLHFCQUFxQixDQUFDLEtBQUssRUFBRSx1QkFBdUIsRUFBRTtRQUN4RCxzQkFBc0IsRUFBRSwwQkFBMEI7UUFDbEQsSUFBSSxFQUFFLFVBQVU7UUFDaEIsVUFBVSxFQUFFLGdCQUFnQjtRQUM1QixNQUFNLEVBQUU7WUFDTjtnQkFDRSxJQUFJLEVBQUUsZUFBZTtnQkFDckIsV0FBVyxFQUFFLHNCQUFzQjthQUNwQztTQUNGO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1FBQy9CLFlBQVksRUFBRSxJQUFJO0tBQ25CLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgXCJqZXN0LWNkay1zbmFwc2hvdFwiXG5pbXBvcnQgeyBWeUVudmlyb25tZW50IH0gZnJvbSBcIi4uLy4uL3NoYXJlZC90eXBlc1wiXG5pbXBvcnQgdHlwZSB7IFJlc291cmNlU2VydmVyUHJvdmlkZXIgfSBmcm9tIFwiLi4vLi4vdnktY29nbml0by1wcm92aWRlclwiXG5pbXBvcnQgeyBDb2duaXRvUmVzb3VyY2VTZXJ2ZXIgfSBmcm9tIFwiLi4vY29nbml0by1yZXNvdXJjZS1zZXJ2ZXJcIlxuXG50ZXN0KFwiY29nbml0byByZXNvdXJjZSBzZXJ2ZXJcIiwgKCkgPT4ge1xuICBjb25zdCBhcHAgPSBuZXcgQXBwKClcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCBcIlN0YWNrXCIpXG5cbiAgY29uc3QgbW9ja1Jlc291cmNlU2VydmVyUHJvdmlkZXI6IFJlc291cmNlU2VydmVyUHJvdmlkZXIgPSB7XG4gICAgZW52aXJvbm1lbnQ6IFZ5RW52aXJvbm1lbnQuVEVTVCxcbiAgICBzZXJ2aWNlVG9rZW46IFwic2VydmljZVRva2VuXCIsXG4gIH1cblxuICBuZXcgQ29nbml0b1Jlc291cmNlU2VydmVyKHN0YWNrLCBcIkNvZ25pdG9SZXNvdXJjZVNlcnZlclwiLCB7XG4gICAgcmVzb3VyY2VTZXJ2ZXJQcm92aWRlcjogbW9ja1Jlc291cmNlU2VydmVyUHJvdmlkZXIsXG4gICAgbmFtZTogXCJ0ZXN0TmFtZVwiLFxuICAgIGlkZW50aWZpZXI6IFwidGVzdElkZW50aWZpZXJcIixcbiAgICBzY29wZXM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0U2NvcGVOYW1lXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcInRlc3RTY29wZURlc2NyaXB0aW9uXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0pXG5cbiAgZXhwZWN0KHN0YWNrKS50b01hdGNoQ2RrU25hcHNob3Qoe1xuICAgIGlnbm9yZUFzc2V0czogdHJ1ZSxcbiAgfSlcbn0pXG4iXX0=
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
* CDK Construct for Cognito Resource Server
|
|
3
3
|
*/
|
|
4
4
|
import * as cdk from "aws-cdk-lib";
|
|
5
|
-
import * as logs from "aws-cdk-lib/aws-logs";
|
|
6
5
|
import { Construct } from "constructs";
|
|
7
|
-
import type {
|
|
6
|
+
import type { ResourceServerProvider } from "../vy-cognito-provider";
|
|
8
7
|
export interface Scope {
|
|
9
8
|
/**
|
|
10
9
|
* The name of the scope
|
|
@@ -17,9 +16,9 @@ export interface Scope {
|
|
|
17
16
|
}
|
|
18
17
|
export interface CognitoResourceServerProps {
|
|
19
18
|
/**
|
|
20
|
-
*
|
|
19
|
+
* An ResourceServerProvider provided from a VyCognitoProvider
|
|
21
20
|
*/
|
|
22
|
-
readonly
|
|
21
|
+
readonly resourceServerProvider: ResourceServerProvider;
|
|
23
22
|
/**
|
|
24
23
|
* The name of the resource server
|
|
25
24
|
*/
|
|
@@ -39,10 +38,6 @@ export interface CognitoResourceServerProps {
|
|
|
39
38
|
* @default 'cognito.vydev.io'
|
|
40
39
|
*/
|
|
41
40
|
readonly cognitoBaseDomain?: string;
|
|
42
|
-
/**
|
|
43
|
-
* @default logs.RetentionDays.ONE_WEEK
|
|
44
|
-
*/
|
|
45
|
-
readonly logsRetention?: logs.RetentionDays;
|
|
46
41
|
}
|
|
47
42
|
/**
|
|
48
43
|
* A Cognito Resource Server managed through Vy's central Cognito service
|
|
@@ -54,8 +49,13 @@ export interface CognitoResourceServerProps {
|
|
|
54
49
|
*
|
|
55
50
|
* @example
|
|
56
51
|
* ```typescript
|
|
52
|
+
* // Create a VyCognitoProvider
|
|
53
|
+
* const vyCognitoProvider = new VyCognitoProvider(this, 'MyProvider', {
|
|
54
|
+
* environment: VyEnvironment.TEST,
|
|
55
|
+
* });
|
|
56
|
+
*
|
|
57
57
|
* const resourceServer = new CognitoResourceServer(this, 'ApiResourceServer', {
|
|
58
|
-
*
|
|
58
|
+
* resourceServerProvider: vyCognitoProvider.resourceServerProvider,
|
|
59
59
|
* name: 'my-api',
|
|
60
60
|
* identifier: 'https://my-api.vydev.io',
|
|
61
61
|
* scopes: [
|
|
@@ -78,14 +78,6 @@ export declare class CognitoResourceServer extends Construct {
|
|
|
78
78
|
* The underlying custom resource
|
|
79
79
|
*/
|
|
80
80
|
readonly resource: cdk.CustomResource;
|
|
81
|
-
/**
|
|
82
|
-
* The logGroup for the event handler lambda
|
|
83
|
-
*/
|
|
84
|
-
readonly lambdaLogGroup: logs.LogGroup;
|
|
85
|
-
/**
|
|
86
|
-
* The logGroup for the custom resource provider
|
|
87
|
-
*/
|
|
88
|
-
readonly providerLogGroup: logs.LogGroup;
|
|
89
81
|
constructor(scope: Construct, id: string, props: CognitoResourceServerProps);
|
|
90
82
|
/**
|
|
91
83
|
* Get a reference to a scope in the format expected by app clients
|
|
@@ -5,11 +5,6 @@ import { createRequire } from "node:module";
|
|
|
5
5
|
import * as path from "node:path";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
7
|
import * as cdk from "aws-cdk-lib";
|
|
8
|
-
import * as iam from "aws-cdk-lib/aws-iam";
|
|
9
|
-
import * as lambda from "aws-cdk-lib/aws-lambda";
|
|
10
|
-
import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
|
|
11
|
-
import * as logs from "aws-cdk-lib/aws-logs";
|
|
12
|
-
import * as cr from "aws-cdk-lib/custom-resources";
|
|
13
8
|
import { Construct } from "constructs";
|
|
14
9
|
const require = createRequire(import.meta.url);
|
|
15
10
|
const __filename = fileURLToPath(import.meta.url);
|
|
@@ -24,8 +19,13 @@ const __dirname = path.dirname(__filename);
|
|
|
24
19
|
*
|
|
25
20
|
* @example
|
|
26
21
|
* ```typescript
|
|
22
|
+
* // Create a VyCognitoProvider
|
|
23
|
+
* const vyCognitoProvider = new VyCognitoProvider(this, 'MyProvider', {
|
|
24
|
+
* environment: VyEnvironment.TEST,
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
27
|
* const resourceServer = new CognitoResourceServer(this, 'ApiResourceServer', {
|
|
28
|
-
*
|
|
28
|
+
* resourceServerProvider: vyCognitoProvider.resourceServerProvider,
|
|
29
29
|
* name: 'my-api',
|
|
30
30
|
* identifier: 'https://my-api.vydev.io',
|
|
31
31
|
* scopes: [
|
|
@@ -48,56 +48,14 @@ export class CognitoResourceServer extends Construct {
|
|
|
48
48
|
* The underlying custom resource
|
|
49
49
|
*/
|
|
50
50
|
resource;
|
|
51
|
-
/**
|
|
52
|
-
* The logGroup for the event handler lambda
|
|
53
|
-
*/
|
|
54
|
-
lambdaLogGroup;
|
|
55
|
-
/**
|
|
56
|
-
* The logGroup for the custom resource provider
|
|
57
|
-
*/
|
|
58
|
-
providerLogGroup;
|
|
59
51
|
constructor(scope, id, props) {
|
|
60
52
|
super(scope, id);
|
|
61
53
|
this.identifier = props.identifier;
|
|
62
54
|
this.name = props.name;
|
|
63
|
-
this.lambdaLogGroup = new logs.LogGroup(this, "LambdaLogGroup", {
|
|
64
|
-
retention: props.logsRetention ?? logs.RetentionDays.ONE_WEEK,
|
|
65
|
-
});
|
|
66
|
-
const onEventHandler = new NodejsFunction(this, "OnEventHandler", {
|
|
67
|
-
runtime: lambda.Runtime.NODEJS_22_X,
|
|
68
|
-
handler: "handler",
|
|
69
|
-
entry: require.resolve(`${__dirname}/handler`),
|
|
70
|
-
timeout: cdk.Duration.minutes(2),
|
|
71
|
-
memorySize: 256,
|
|
72
|
-
logGroup: this.lambdaLogGroup,
|
|
73
|
-
environment: props.cognitoBaseDomain
|
|
74
|
-
? {
|
|
75
|
-
COGNITO_BASE_DOMAIN: props.cognitoBaseDomain,
|
|
76
|
-
}
|
|
77
|
-
: undefined,
|
|
78
|
-
bundling: {
|
|
79
|
-
minify: true,
|
|
80
|
-
sourceMap: true,
|
|
81
|
-
target: "es2020",
|
|
82
|
-
externalModules: ["aws-sdk"],
|
|
83
|
-
},
|
|
84
|
-
});
|
|
85
|
-
onEventHandler.addToRolePolicy(new iam.PolicyStatement({
|
|
86
|
-
effect: iam.Effect.ALLOW,
|
|
87
|
-
actions: ["execute-api:Invoke"],
|
|
88
|
-
resources: ["*"], // Can be scoped down if API Gateway ARN is known
|
|
89
|
-
}));
|
|
90
|
-
this.providerLogGroup = new logs.LogGroup(this, "ProviderLogGroup", {
|
|
91
|
-
retention: props.logsRetention ?? logs.RetentionDays.ONE_WEEK,
|
|
92
|
-
});
|
|
93
|
-
const provider = new cr.Provider(this, "Provider", {
|
|
94
|
-
onEventHandler,
|
|
95
|
-
logGroup: this.providerLogGroup,
|
|
96
|
-
});
|
|
97
55
|
this.resource = new cdk.CustomResource(this, "Resource", {
|
|
98
|
-
serviceToken:
|
|
56
|
+
serviceToken: props.resourceServerProvider.serviceToken,
|
|
99
57
|
properties: {
|
|
100
|
-
Environment: props.environment,
|
|
58
|
+
Environment: props.resourceServerProvider.environment,
|
|
101
59
|
Name: props.name,
|
|
102
60
|
Identifier: props.identifier,
|
|
103
61
|
Scopes: props.scopes?.map((s) => ({
|
|
@@ -117,4 +75,4 @@ export class CognitoResourceServer extends Construct {
|
|
|
117
75
|
return `${this.identifier}/${scopeName}`;
|
|
118
76
|
}
|
|
119
77
|
}
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0by1yZXNvdXJjZS1zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29nbml0by1yZXNvdXJjZS1zZXJ2ZXIvY29nbml0by1yZXNvdXJjZS1zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzNDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDeEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUE7QUFDbEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQTtBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLHdCQUF3QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUM5RCxPQUFPLEtBQUssSUFBSSxNQUFNLHNCQUFzQixDQUFBO0FBQzVDLE9BQU8sS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUd0QyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUM5QyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBaUQxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsU0FBUztJQUNsRDs7T0FFRztJQUNhLFVBQVUsQ0FBUTtJQUVsQzs7T0FFRztJQUNhLElBQUksQ0FBUTtJQUU1Qjs7T0FFRztJQUNhLFFBQVEsQ0FBb0I7SUFF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QUNJLGVBQWUsQ0FBQyxTQUFpQjtRQUN0QyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxTQUFTLEVBQUUsQ0FBQTtJQUMxQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENESyBDb25zdHJ1Y3QgZm9yIENvZ25pdG8gUmVzb3VyY2UgU2VydmVyXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gXCJub2RlOnVybFwiXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCJcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiXG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIlxuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIlxuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIlxuaW1wb3J0ICogYXMgY3IgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIlxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIlxuaW1wb3J0IHR5cGUgeyBWeUVudmlyb25tZW50IH0gZnJvbSBcIi4uL3NoYXJlZC90eXBlc1wiXG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybClcbmNvbnN0IF9fZmlsZW5hbWUgPSBmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybClcbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShfX2ZpbGVuYW1lKVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjb3BlIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzY29wZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIHNjb3BlIGlzIGZvclxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvZ25pdG9SZXNvdXJjZVNlcnZlclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBWeSBlbnZpcm9ubWVudCB0byBwcm92aXNpb24gaW4gKGUuZy4sIFZ5RW52aXJvbm1lbnQuUFJPRCwgVnlFbnZpcm9ubWVudC5TVEFHRSwgVnlFbnZpcm9ubWVudC5URVNUKVxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IFZ5RW52aXJvbm1lbnRcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHJlc291cmNlIHNlcnZlclxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSBpZGVudGlmaWVyIGZvciB0aGlzIHJlc291cmNlIHNlcnZlciAodXN1YWxseSBhIFVSTClcbiAgICogQGV4YW1wbGUgJ2h0dHBzOi8vYXBpLnZ5ZGV2LmlvJ1xuICAgKi9cbiAgcmVhZG9ubHkgaWRlbnRpZmllcjogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEN1c3RvbSBzY29wZXMgZm9yIHRoaXMgcmVzb3VyY2Ugc2VydmVyXG4gICAqIEBkZWZhdWx0IC0gTm8gc2NvcGVzXG4gICAqL1xuICByZWFkb25seSBzY29wZXM/OiBTY29wZVtdXG5cbiAgLyoqXG4gICAqIEJhc2UgZG9tYWluIGZvciBDb2duaXRvIHNlcnZpY2VcbiAgICogQGRlZmF1bHQgJ2NvZ25pdG8udnlkZXYuaW8nXG4gICAqL1xuICByZWFkb25seSBjb2duaXRvQmFzZURvbWFpbj86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUtcbiAgICovXG4gIHJlYWRvbmx5IGxvZ3NSZXRlbnRpb24/OiBsb2dzLlJldGVudGlvbkRheXNcbn1cblxuLyoqXG4gKiBBIENvZ25pdG8gUmVzb3VyY2UgU2VydmVyIG1hbmFnZWQgdGhyb3VnaCBWeSdzIGNlbnRyYWwgQ29nbml0byBzZXJ2aWNlXG4gKlxuICogQSByZXNvdXJjZSBzZXJ2ZXIgaXMgYW4gaW50ZWdyYXRpb24gYmV0d2VlbiBhIHVzZXIgcG9vbCBhbmQgYW4gQVBJLlxuICogRWFjaCByZXNvdXJjZSBzZXJ2ZXIgaGFzIGN1c3RvbSBzY29wZXMgdGhhdCB5b3UgbXVzdCBhY3RpdmF0ZSBpbiB5b3VyIGFwcCBjbGllbnQuXG4gKiBXaGVuIHlvdSBjb25maWd1cmUgYSByZXNvdXJjZSBzZXJ2ZXIsIHlvdXIgYXBwIGNhbiBnZW5lcmF0ZSBhY2Nlc3MgdG9rZW5zIHdpdGhcbiAqIE9BdXRoIHNjb3BlcyB0aGF0IGF1dGhvcml6ZSByZWFkIGFuZCB3cml0ZSBvcGVyYXRpb25zIHRvIGFuIEFQSSBzZXJ2ZXIuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlc291cmNlU2VydmVyID0gbmV3IENvZ25pdG9SZXNvdXJjZVNlcnZlcih0aGlzLCAnQXBpUmVzb3VyY2VTZXJ2ZXInLCB7XG4gKiAgIGVudmlyb25tZW50OiBWeUVudmlyb25tZW50LlBST0QsXG4gKiAgIG5hbWU6ICdteS1hcGknLFxuICogICBpZGVudGlmaWVyOiAnaHR0cHM6Ly9teS1hcGkudnlkZXYuaW8nLFxuICogICBzY29wZXM6IFtcbiAqICAgICB7IG5hbWU6ICdyZWFkJywgZGVzY3JpcHRpb246ICdSZWFkIGFjY2VzcyB0byB0aGUgQVBJJyB9LFxuICogICAgIHsgbmFtZTogJ3dyaXRlJywgZGVzY3JpcHRpb246ICdXcml0ZSBhY2Nlc3MgdG8gdGhlIEFQSScgfVxuICogICBdXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgQ29nbml0b1Jlc291cmNlU2VydmVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSByZXNvdXJjZSBzZXJ2ZXJcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpZGVudGlmaWVyOiBzdHJpbmdcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHJlc291cmNlIHNlcnZlclxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgdW5kZXJseWluZyBjdXN0b20gcmVzb3VyY2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogY2RrLkN1c3RvbVJlc291cmNlXG5cbiAgLyoqXG4gICAqIFRoZSBsb2dHcm91cCBmb3IgdGhlIGV2ZW50IGhhbmRsZXIgbGFtYmRhXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGFtYmRhTG9nR3JvdXA6IGxvZ3MuTG9nR3JvdXBcblxuICAvKipcbiAgICogVGhlIGxvZ0dyb3VwIGZvciB0aGUgY3VzdG9tIHJlc291cmNlIHByb3ZpZGVyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvdmlkZXJMb2dHcm91cDogbG9ncy5Mb2dHcm91cFxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDb2duaXRvUmVzb3VyY2VTZXJ2ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIHRoaXMuaWRlbnRpZmllciA9IHByb3BzLmlkZW50aWZpZXJcbiAgICB0aGlzLm5hbWUgPSBwcm9wcy5uYW1lXG5cbiAgICB0aGlzLmxhbWJkYUxvZ0dyb3VwID0gbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgXCJMYW1iZGFMb2dHcm91cFwiLCB7XG4gICAgICByZXRlbnRpb246IHByb3BzLmxvZ3NSZXRlbnRpb24gPz8gbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgIH0pXG5cbiAgICBjb25zdCBvbkV2ZW50SGFuZGxlciA9IG5ldyBOb2RlanNGdW5jdGlvbih0aGlzLCBcIk9uRXZlbnRIYW5kbGVyXCIsIHtcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yMl9YLFxuICAgICAgaGFuZGxlcjogXCJoYW5kbGVyXCIsXG4gICAgICBlbnRyeTogcmVxdWlyZS5yZXNvbHZlKGAke19fZGlybmFtZX0vaGFuZGxlcmApLFxuICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLm1pbnV0ZXMoMiksXG4gICAgICBtZW1vcnlTaXplOiAyNTYsXG4gICAgICBsb2dHcm91cDogdGhpcy5sYW1iZGFMb2dHcm91cCxcbiAgICAgIGVudmlyb25tZW50OiBwcm9wcy5jb2duaXRvQmFzZURvbWFpblxuICAgICAgICA/IHtcbiAgICAgICAgICAgIENPR05JVE9fQkFTRV9ET01BSU46IHByb3BzLmNvZ25pdG9CYXNlRG9tYWluLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBidW5kbGluZzoge1xuICAgICAgICBtaW5pZnk6IHRydWUsXG4gICAgICAgIHNvdXJjZU1hcDogdHJ1ZSxcbiAgICAgICAgdGFyZ2V0OiBcImVzMjAyMFwiLFxuICAgICAgICBleHRlcm5hbE1vZHVsZXM6IFtcImF3cy1zZGtcIl0sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBvbkV2ZW50SGFuZGxlci5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogW1wiZXhlY3V0ZS1hcGk6SW52b2tlXCJdLFxuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sIC8vIENhbiBiZSBzY29wZWQgZG93biBpZiBBUEkgR2F0ZXdheSBBUk4gaXMga25vd25cbiAgICAgIH0pLFxuICAgIClcblxuICAgIHRoaXMucHJvdmlkZXJMb2dHcm91cCA9IG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsIFwiUHJvdmlkZXJMb2dHcm91cFwiLCB7XG4gICAgICByZXRlbnRpb246IHByb3BzLmxvZ3NSZXRlbnRpb24gPz8gbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgIH0pXG5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCBcIlByb3ZpZGVyXCIsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyLFxuICAgICAgbG9nR3JvdXA6IHRoaXMucHJvdmlkZXJMb2dHcm91cCxcbiAgICB9KVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBjZGsuQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgRW52aXJvbm1lbnQ6IHByb3BzLmVudmlyb25tZW50LFxuICAgICAgICBOYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgICBJZGVudGlmaWVyOiBwcm9wcy5pZGVudGlmaWVyLFxuICAgICAgICBTY29wZXM6IHByb3BzLnNjb3Blcz8ubWFwKChzKSA9PiAoe1xuICAgICAgICAgIE5hbWU6IHMubmFtZSxcbiAgICAgICAgICBEZXNjcmlwdGlvbjogcy5kZXNjcmlwdGlvbixcbiAgICAgICAgfSkpLFxuICAgICAgfSxcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OlZ5Q29nbml0b1Jlc291cmNlU2VydmVyXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSByZWZlcmVuY2UgdG8gYSBzY29wZSBpbiB0aGUgZm9ybWF0IGV4cGVjdGVkIGJ5IGFwcCBjbGllbnRzXG4gICAqIEBwYXJhbSBzY29wZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHNjb3BlXG4gICAqIEByZXR1cm5zIFRoZSBmdWxsIHNjb3BlIGlkZW50aWZpZXIgKGUuZy4sICdodHRwczovL2FwaS52eWRldi5pby9yZWFkJylcbiAgICovXG4gIHB1YmxpYyBzY29wZUlkZW50aWZpZXIoc2NvcGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmlkZW50aWZpZXJ9LyR7c2NvcGVOYW1lfWBcbiAgfVxufVxuIl19
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0by1yZXNvdXJjZS1zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29nbml0by1yZXNvdXJjZS1zZXJ2ZXIvY29nbml0by1yZXNvdXJjZS1zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzNDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDeEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUE7QUFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUd0QyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUM5QyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBNEMxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxTQUFTO0lBQ2xEOztPQUVHO0lBQ2EsVUFBVSxDQUFRO0lBRWxDOztPQUVHO0lBQ2EsSUFBSSxDQUFRO0lBRTVCOztPQUVHO0lBQ2EsUUFBUSxDQUFvQjtJQUU1QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlDO1FBQ3pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQTtRQUV0QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3ZELFlBQVksRUFBRSxLQUFLLENBQUMsc0JBQXNCLENBQUMsWUFBWTtZQUN2RCxVQUFVLEVBQUU7Z0JBQ1YsV0FBVyxFQUFFLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXO2dCQUNyRCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQ2hCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtnQkFDNUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNoQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7b0JBQ1osV0FBVyxFQUFFLENBQUMsQ0FBQyxXQUFXO2lCQUMzQixDQUFDLENBQUM7YUFDSjtZQUNELFlBQVksRUFBRSxpQ0FBaUM7U0FDaEQsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsU0FBaUI7UUFDdEMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksU0FBUyxFQUFFLENBQUE7SUFDMUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDREsgQ29uc3RydWN0IGZvciBDb2duaXRvIFJlc291cmNlIFNlcnZlclxuICovXG5cbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tIFwibm9kZTp1cmxcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiXG5pbXBvcnQgdHlwZSB7IFJlc291cmNlU2VydmVyUHJvdmlkZXIgfSBmcm9tIFwiLi4vdnktY29nbml0by1wcm92aWRlclwiXG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybClcbmNvbnN0IF9fZmlsZW5hbWUgPSBmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybClcbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShfX2ZpbGVuYW1lKVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjb3BlIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzY29wZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIHNjb3BlIGlzIGZvclxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvZ25pdG9SZXNvdXJjZVNlcnZlclByb3BzIHtcbiAgLyoqXG4gICAqIEFuIFJlc291cmNlU2VydmVyUHJvdmlkZXIgcHJvdmlkZWQgZnJvbSBhIFZ5Q29nbml0b1Byb3ZpZGVyXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZVNlcnZlclByb3ZpZGVyOiBSZXNvdXJjZVNlcnZlclByb3ZpZGVyXG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBzZXJ2ZXJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpZmllciBmb3IgdGhpcyByZXNvdXJjZSBzZXJ2ZXIgKHVzdWFsbHkgYSBVUkwpXG4gICAqIEBleGFtcGxlICdodHRwczovL2FwaS52eWRldi5pbydcbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aWZpZXI6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBDdXN0b20gc2NvcGVzIGZvciB0aGlzIHJlc291cmNlIHNlcnZlclxuICAgKiBAZGVmYXVsdCAtIE5vIHNjb3Blc1xuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGVzPzogU2NvcGVbXVxuXG4gIC8qKlxuICAgKiBCYXNlIGRvbWFpbiBmb3IgQ29nbml0byBzZXJ2aWNlXG4gICAqIEBkZWZhdWx0ICdjb2duaXRvLnZ5ZGV2LmlvJ1xuICAgKi9cbiAgcmVhZG9ubHkgY29nbml0b0Jhc2VEb21haW4/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBBIENvZ25pdG8gUmVzb3VyY2UgU2VydmVyIG1hbmFnZWQgdGhyb3VnaCBWeSdzIGNlbnRyYWwgQ29nbml0byBzZXJ2aWNlXG4gKlxuICogQSByZXNvdXJjZSBzZXJ2ZXIgaXMgYW4gaW50ZWdyYXRpb24gYmV0d2VlbiBhIHVzZXIgcG9vbCBhbmQgYW4gQVBJLlxuICogRWFjaCByZXNvdXJjZSBzZXJ2ZXIgaGFzIGN1c3RvbSBzY29wZXMgdGhhdCB5b3UgbXVzdCBhY3RpdmF0ZSBpbiB5b3VyIGFwcCBjbGllbnQuXG4gKiBXaGVuIHlvdSBjb25maWd1cmUgYSByZXNvdXJjZSBzZXJ2ZXIsIHlvdXIgYXBwIGNhbiBnZW5lcmF0ZSBhY2Nlc3MgdG9rZW5zIHdpdGhcbiAqIE9BdXRoIHNjb3BlcyB0aGF0IGF1dGhvcml6ZSByZWFkIGFuZCB3cml0ZSBvcGVyYXRpb25zIHRvIGFuIEFQSSBzZXJ2ZXIuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICAvLyBDcmVhdGUgYSBWeUNvZ25pdG9Qcm92aWRlclxuICogY29uc3QgdnlDb2duaXRvUHJvdmlkZXIgPSBuZXcgVnlDb2duaXRvUHJvdmlkZXIodGhpcywgJ015UHJvdmlkZXInLCB7XG4gKiAgIGVudmlyb25tZW50OiBWeUVudmlyb25tZW50LlRFU1QsXG4gKiB9KTtcbiAqXG4gKiBjb25zdCByZXNvdXJjZVNlcnZlciA9IG5ldyBDb2duaXRvUmVzb3VyY2VTZXJ2ZXIodGhpcywgJ0FwaVJlc291cmNlU2VydmVyJywge1xuICogICByZXNvdXJjZVNlcnZlclByb3ZpZGVyOiB2eUNvZ25pdG9Qcm92aWRlci5yZXNvdXJjZVNlcnZlclByb3ZpZGVyLFxuICogICBuYW1lOiAnbXktYXBpJyxcbiAqICAgaWRlbnRpZmllcjogJ2h0dHBzOi8vbXktYXBpLnZ5ZGV2LmlvJyxcbiAqICAgc2NvcGVzOiBbXG4gKiAgICAgeyBuYW1lOiAncmVhZCcsIGRlc2NyaXB0aW9uOiAnUmVhZCBhY2Nlc3MgdG8gdGhlIEFQSScgfSxcbiAqICAgICB7IG5hbWU6ICd3cml0ZScsIGRlc2NyaXB0aW9uOiAnV3JpdGUgYWNjZXNzIHRvIHRoZSBBUEknIH1cbiAqICAgXVxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIENvZ25pdG9SZXNvdXJjZVNlcnZlciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpZmllciBvZiB0aGUgcmVzb3VyY2Ugc2VydmVyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaWRlbnRpZmllcjogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBzZXJ2ZXJcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgY3VzdG9tIHJlc291cmNlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IGNkay5DdXN0b21SZXNvdXJjZVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDb2duaXRvUmVzb3VyY2VTZXJ2ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIHRoaXMuaWRlbnRpZmllciA9IHByb3BzLmlkZW50aWZpZXJcbiAgICB0aGlzLm5hbWUgPSBwcm9wcy5uYW1lXG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGNkay5DdXN0b21SZXNvdXJjZSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogcHJvcHMucmVzb3VyY2VTZXJ2ZXJQcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIEVudmlyb25tZW50OiBwcm9wcy5yZXNvdXJjZVNlcnZlclByb3ZpZGVyLmVudmlyb25tZW50LFxuICAgICAgICBOYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgICBJZGVudGlmaWVyOiBwcm9wcy5pZGVudGlmaWVyLFxuICAgICAgICBTY29wZXM6IHByb3BzLnNjb3Blcz8ubWFwKChzKSA9PiAoe1xuICAgICAgICAgIE5hbWU6IHMubmFtZSxcbiAgICAgICAgICBEZXNjcmlwdGlvbjogcy5kZXNjcmlwdGlvbixcbiAgICAgICAgfSkpLFxuICAgICAgfSxcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OlZ5Q29nbml0b1Jlc291cmNlU2VydmVyXCIsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSByZWZlcmVuY2UgdG8gYSBzY29wZSBpbiB0aGUgZm9ybWF0IGV4cGVjdGVkIGJ5IGFwcCBjbGllbnRzXG4gICAqIEBwYXJhbSBzY29wZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHNjb3BlXG4gICAqIEByZXR1cm5zIFRoZSBmdWxsIHNjb3BlIGlkZW50aWZpZXIgKGUuZy4sICdodHRwczovL2FwaS52eWRldi5pby9yZWFkJylcbiAgICovXG4gIHB1YmxpYyBzY29wZUlkZW50aWZpZXIoc2NvcGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmlkZW50aWZpZXJ9LyR7c2NvcGVOYW1lfWBcbiAgfVxufVxuIl19
|
package/lib/index.d.ts
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* This library provides CDK equivalents to the Terraform provider `terraform-provider-vy`.
|
|
6
6
|
*/
|
|
7
7
|
export * from "./cognito-app-client/cognito-app-client";
|
|
8
|
-
export * from "./cognito-info";
|
|
9
8
|
export * from "./cognito-resource-server/cognito-resource-server";
|
|
9
|
+
export * from "./vy-cognito-provider";
|
package/lib/index.js
CHANGED
|
@@ -4,9 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* This library provides CDK equivalents to the Terraform provider `terraform-provider-vy`.
|
|
6
6
|
*/
|
|
7
|
-
// Resources
|
|
8
7
|
export * from "./cognito-app-client/cognito-app-client";
|
|
9
|
-
// Data Sources
|
|
10
|
-
export * from "./cognito-info";
|
|
11
8
|
export * from "./cognito-resource-server/cognito-resource-server";
|
|
12
|
-
|
|
9
|
+
export * from "./vy-cognito-provider";
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxjQUFjLHlDQUF5QyxDQUFBO0FBQ3ZELGNBQWMsbURBQW1ELENBQUE7QUFDakUsY0FBYyx1QkFBdUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHZ5L2Nkay1yZXNvdXJjZXNcbiAqIENESyBjb25zdHJ1Y3RzIGZvciBWeSBpbnRlcm5hbCBzZXJ2aWNlc1xuICpcbiAqIFRoaXMgbGlicmFyeSBwcm92aWRlcyBDREsgZXF1aXZhbGVudHMgdG8gdGhlIFRlcnJhZm9ybSBwcm92aWRlciBgdGVycmFmb3JtLXByb3ZpZGVyLXZ5YC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9jb2duaXRvLWFwcC1jbGllbnQvY29nbml0by1hcHAtY2xpZW50XCJcbmV4cG9ydCAqIGZyb20gXCIuL2NvZ25pdG8tcmVzb3VyY2Utc2VydmVyL2NvZ25pdG8tcmVzb3VyY2Utc2VydmVyXCJcbmV4cG9ydCAqIGZyb20gXCIuL3Z5LWNvZ25pdG8tcHJvdmlkZXJcIlxuIl19
|
package/lib/shared/types.d.ts
CHANGED
|
@@ -63,9 +63,21 @@ export interface ArtifactVersion {
|
|
|
63
63
|
version: string;
|
|
64
64
|
}
|
|
65
65
|
export interface CognitoDetails {
|
|
66
|
+
/**
|
|
67
|
+
* The URL where users can authenticate
|
|
68
|
+
*/
|
|
66
69
|
authUrl: string;
|
|
70
|
+
/**
|
|
71
|
+
* The URL for the /.well-known/jwks.json endpoint
|
|
72
|
+
*/
|
|
67
73
|
jwksUrl: string;
|
|
74
|
+
/**
|
|
75
|
+
* The URL for the /.well-known/openid-configuration endpoint
|
|
76
|
+
*/
|
|
68
77
|
openIdUrl: string;
|
|
78
|
+
/**
|
|
79
|
+
* The URI for the issuer
|
|
80
|
+
*/
|
|
69
81
|
issuer: string;
|
|
70
82
|
}
|
|
71
83
|
/**
|
package/lib/shared/types.js
CHANGED
|
@@ -19,4 +19,4 @@ export var VyEnvironment;
|
|
|
19
19
|
*/
|
|
20
20
|
VyEnvironment["PROD"] = "prod";
|
|
21
21
|
})(VyEnvironment || (VyEnvironment = {}));
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhcmVkL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUg7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxhQWVYO0FBZkQsV0FBWSxhQUFhO0lBQ3ZCOztPQUVHO0lBQ0gsOEJBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gsZ0NBQWUsQ0FBQTtJQUVmOztPQUVHO0lBQ0gsOEJBQWEsQ0FBQTtBQUNmLENBQUMsRUFmVyxhQUFhLEtBQWIsYUFBYSxRQWV4QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2hhcmVkIHR5cGUgZGVmaW5pdGlvbnMgZm9yIFZ5IGN1c3RvbSByZXNvdXJjZXNcbiAqL1xuXG4vKipcbiAqIFRoZSBkaWZmZXJlbnQgVnkgZW52aXJvbm1lbnRzXG4gKi9cbmV4cG9ydCBlbnVtIFZ5RW52aXJvbm1lbnQge1xuICAvKipcbiAgICogRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRcbiAgICovXG4gIFRFU1QgPSBcInRlc3RcIixcblxuICAvKipcbiAgICogUHJvZHVjdGlvbi1saWtlIGVudmlyb25tZW50XG4gICAqL1xuICBTVEFHRSA9IFwic3RhZ2VcIixcblxuICAvKipcbiAgICogUHJvZHVjdGlvbiBlbnZpcm9ubWVudFxuICAgKi9cbiAgUFJPRCA9IFwicHJvZFwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjb3BlIHtcbiAgbmFtZTogc3RyaW5nXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVNlcnZlciB7XG4gIGlkZW50aWZpZXI6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgc2NvcGVzPzogU2NvcGVbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlU2VydmVyVXBkYXRlUmVxdWVzdCB7XG4gIGlkZW50aWZpZXI6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgc2NvcGVzPzogU2NvcGVbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcENsaWVudCB7XG4gIG5hbWU6IHN0cmluZ1xuICBzY29wZXM6IHN0cmluZ1tdXG4gIHR5cGU6IFwiZnJvbnRlbmRcIiB8IFwiYmFja2VuZFwiXG4gIGNhbGxiYWNrX3VybHM6IHN0cmluZ1tdXG4gIGxvZ291dF91cmxzOiBzdHJpbmdbXVxuICBnZW5lcmF0ZV9zZWNyZXQ/
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhcmVkL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUg7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxhQWVYO0FBZkQsV0FBWSxhQUFhO0lBQ3ZCOztPQUVHO0lBQ0gsOEJBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gsZ0NBQWUsQ0FBQTtJQUVmOztPQUVHO0lBQ0gsOEJBQWEsQ0FBQTtBQUNmLENBQUMsRUFmVyxhQUFhLEtBQWIsYUFBYSxRQWV4QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2hhcmVkIHR5cGUgZGVmaW5pdGlvbnMgZm9yIFZ5IGN1c3RvbSByZXNvdXJjZXNcbiAqL1xuXG4vKipcbiAqIFRoZSBkaWZmZXJlbnQgVnkgZW52aXJvbm1lbnRzXG4gKi9cbmV4cG9ydCBlbnVtIFZ5RW52aXJvbm1lbnQge1xuICAvKipcbiAgICogRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRcbiAgICovXG4gIFRFU1QgPSBcInRlc3RcIixcblxuICAvKipcbiAgICogUHJvZHVjdGlvbi1saWtlIGVudmlyb25tZW50XG4gICAqL1xuICBTVEFHRSA9IFwic3RhZ2VcIixcblxuICAvKipcbiAgICogUHJvZHVjdGlvbiBlbnZpcm9ubWVudFxuICAgKi9cbiAgUFJPRCA9IFwicHJvZFwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjb3BlIHtcbiAgbmFtZTogc3RyaW5nXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVNlcnZlciB7XG4gIGlkZW50aWZpZXI6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgc2NvcGVzPzogU2NvcGVbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlU2VydmVyVXBkYXRlUmVxdWVzdCB7XG4gIGlkZW50aWZpZXI6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgc2NvcGVzPzogU2NvcGVbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcENsaWVudCB7XG4gIG5hbWU6IHN0cmluZ1xuICBzY29wZXM6IHN0cmluZ1tdXG4gIHR5cGU6IFwiZnJvbnRlbmRcIiB8IFwiYmFja2VuZFwiXG4gIGNhbGxiYWNrX3VybHM6IHN0cmluZ1tdXG4gIGxvZ291dF91cmxzOiBzdHJpbmdbXVxuICBnZW5lcmF0ZV9zZWNyZXQ/OiBib29sZWFuXG4gIGNsaWVudF9pZD86IHN0cmluZ1xuICBjbGllbnRfc2VjcmV0Pzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQ2xpZW50VXBkYXRlUmVxdWVzdCB7XG4gIG5hbWU6IHN0cmluZ1xuICBzY29wZXM6IHN0cmluZ1tdXG4gIGNhbGxiYWNrX3VybHM6IHN0cmluZ1tdXG4gIGxvZ291dF91cmxzOiBzdHJpbmdbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlcGxveW1lbnRBY2NvdW50IHtcbiAgYWNjb3VudElkOiBzdHJpbmdcbiAgc2xhY2tDaGFubmVsOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudEFjY291bnQge1xuICBhY2NvdW50SWQ6IHN0cmluZ1xuICBvd25lckFjY291bnRJZDogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWZhY3RWZXJzaW9uIHtcbiAgdXJpOiBzdHJpbmdcbiAgc3RvcmU6IHN0cmluZ1xuICBwYXRoOiBzdHJpbmdcbiAgdmVyc2lvbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29nbml0b0RldGFpbHMge1xuICAvKipcbiAgICogVGhlIFVSTCB3aGVyZSB1c2VycyBjYW4gYXV0aGVudGljYXRlXG4gICAqL1xuICBhdXRoVXJsOiBzdHJpbmdcblxuICAvKipcbiAgICogVGhlIFVSTCBmb3IgdGhlIC8ud2VsbC1rbm93bi9qd2tzLmpzb24gZW5kcG9pbnRcbiAgICovXG4gIGp3a3NVcmw6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgVVJMIGZvciB0aGUgLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uIGVuZHBvaW50XG4gICAqL1xuICBvcGVuSWRVcmw6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgVVJJIGZvciB0aGUgaXNzdWVyXG4gICAqL1xuICBpc3N1ZXI6IHN0cmluZ1xufVxuXG4vKipcbiAqIEN1c3RvbSBSZXNvdXJjZSBldmVudCB0eXBlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbVJlc291cmNlUmVxdWVzdCB7XG4gIFJlcXVlc3RUeXBlOiBcIkNyZWF0ZVwiIHwgXCJVcGRhdGVcIiB8IFwiRGVsZXRlXCJcbiAgUmVxdWVzdElkOiBzdHJpbmdcbiAgUmVzcG9uc2VVUkw6IHN0cmluZ1xuICBSZXNvdXJjZVR5cGU6IHN0cmluZ1xuICBMb2dpY2FsUmVzb3VyY2VJZDogc3RyaW5nXG4gIFN0YWNrSWQ6IHN0cmluZ1xuICBQaHlzaWNhbFJlc291cmNlSWQ/OiBzdHJpbmdcbiAgUmVzb3VyY2VQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gIE9sZFJlc291cmNlUHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIGFueT5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21SZXNvdXJjZVJlc3BvbnNlIHtcbiAgU3RhdHVzOiBcIlNVQ0NFU1NcIiB8IFwiRkFJTEVEXCJcbiAgUmVhc29uPzogc3RyaW5nXG4gIFBoeXNpY2FsUmVzb3VyY2VJZDogc3RyaW5nXG4gIFN0YWNrSWQ6IHN0cmluZ1xuICBSZXF1ZXN0SWQ6IHN0cmluZ1xuICBMb2dpY2FsUmVzb3VyY2VJZDogc3RyaW5nXG4gIERhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG59XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as logs from "aws-cdk-lib/aws-logs";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
import type { CognitoDetails, VyEnvironment } from "./shared/types";
|
|
4
|
+
export interface VyCognitoProviderProps {
|
|
5
|
+
/**
|
|
6
|
+
* The Vy Cognito environment to connect to (e.g., VyEnvironment.PROD, VyEnvironment.STAGE, VyEnvironment.TEST)
|
|
7
|
+
*/
|
|
8
|
+
readonly environment: VyEnvironment;
|
|
9
|
+
/**
|
|
10
|
+
* Base domain for Cognito service
|
|
11
|
+
* @default 'cognito.vydev.io'
|
|
12
|
+
*/
|
|
13
|
+
readonly cognitoBaseDomain?: string;
|
|
14
|
+
/**
|
|
15
|
+
* @default logs.RetentionDays.ONE_WEEK
|
|
16
|
+
*/
|
|
17
|
+
readonly logsRetention?: logs.RetentionDays;
|
|
18
|
+
}
|
|
19
|
+
export interface AppClientProvider {
|
|
20
|
+
environment: VyEnvironment;
|
|
21
|
+
serviceToken: string;
|
|
22
|
+
auth_url: string;
|
|
23
|
+
}
|
|
24
|
+
export interface ResourceServerProvider {
|
|
25
|
+
environment: VyEnvironment;
|
|
26
|
+
serviceToken: string;
|
|
27
|
+
}
|
|
28
|
+
export declare class VyCognitoProvider extends Construct {
|
|
29
|
+
readonly environment: VyEnvironment;
|
|
30
|
+
readonly cognitoBaseDomain: string;
|
|
31
|
+
readonly details: CognitoDetails;
|
|
32
|
+
readonly appClientProvider: AppClientProvider;
|
|
33
|
+
readonly resourceServerProvider: ResourceServerProvider;
|
|
34
|
+
constructor(scope: Construct, id: string, props: VyCognitoProviderProps);
|
|
35
|
+
getCognitoDetailsForEnvironment(environment: VyEnvironment): CognitoDetails;
|
|
36
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import * as cdk from "aws-cdk-lib";
|
|
5
|
+
import * as iam from "aws-cdk-lib/aws-iam";
|
|
6
|
+
import * as lambda from "aws-cdk-lib/aws-lambda";
|
|
7
|
+
import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs";
|
|
8
|
+
import * as logs from "aws-cdk-lib/aws-logs";
|
|
9
|
+
import * as cr from "aws-cdk-lib/custom-resources";
|
|
10
|
+
import { Construct } from "constructs";
|
|
11
|
+
const require = createRequire(import.meta.url);
|
|
12
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
13
|
+
const __dirname = path.dirname(__filename);
|
|
14
|
+
export class VyCognitoProvider extends Construct {
|
|
15
|
+
environment;
|
|
16
|
+
cognitoBaseDomain;
|
|
17
|
+
details;
|
|
18
|
+
appClientProvider;
|
|
19
|
+
resourceServerProvider;
|
|
20
|
+
constructor(scope, id, props) {
|
|
21
|
+
super(scope, id);
|
|
22
|
+
this.environment = props.environment;
|
|
23
|
+
this.cognitoBaseDomain = props.cognitoBaseDomain ?? "cognito.vydev.io";
|
|
24
|
+
this.details = this.getCognitoDetailsForEnvironment(this.environment);
|
|
25
|
+
const appClientProvider = new LambdaProvider(this, "AppClientProvider", {
|
|
26
|
+
cognitoBaseDomain: this.cognitoBaseDomain,
|
|
27
|
+
runtime: lambda.Runtime.NODEJS_22_X,
|
|
28
|
+
handler: "handler",
|
|
29
|
+
entry: require.resolve(`${__dirname}/cognito-app-client/handler`),
|
|
30
|
+
logRetention: props.logsRetention,
|
|
31
|
+
});
|
|
32
|
+
this.appClientProvider = {
|
|
33
|
+
environment: this.environment,
|
|
34
|
+
serviceToken: appClientProvider.serviceToken,
|
|
35
|
+
auth_url: this.details.authUrl,
|
|
36
|
+
};
|
|
37
|
+
const resourceServerProvider = new LambdaProvider(this, "ResourceServerProvider", {
|
|
38
|
+
cognitoBaseDomain: this.cognitoBaseDomain,
|
|
39
|
+
runtime: lambda.Runtime.NODEJS_22_X,
|
|
40
|
+
handler: "handler",
|
|
41
|
+
entry: require.resolve(`${__dirname}/cognito-resource-server/handler`),
|
|
42
|
+
logRetention: props.logsRetention,
|
|
43
|
+
});
|
|
44
|
+
this.resourceServerProvider = {
|
|
45
|
+
environment: this.environment,
|
|
46
|
+
serviceToken: resourceServerProvider.serviceToken,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
getCognitoDetailsForEnvironment(environment) {
|
|
50
|
+
const config = envConfigs[environment];
|
|
51
|
+
if (!config) {
|
|
52
|
+
throw new Error(`Unknown environment: ${environment}. Valid values are: prod, stage, test`);
|
|
53
|
+
}
|
|
54
|
+
return config;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
class LambdaProvider extends Construct {
|
|
58
|
+
/**
|
|
59
|
+
* The logGroup for the event handler lambda
|
|
60
|
+
*/
|
|
61
|
+
lambdaLogGroup;
|
|
62
|
+
/**
|
|
63
|
+
* The logGroup for the custom resource provider
|
|
64
|
+
*/
|
|
65
|
+
providerLogGroup;
|
|
66
|
+
/**
|
|
67
|
+
* The service token for the provider
|
|
68
|
+
*/
|
|
69
|
+
serviceToken;
|
|
70
|
+
constructor(scope, id, props) {
|
|
71
|
+
super(scope, id);
|
|
72
|
+
this.lambdaLogGroup = new logs.LogGroup(this, "LambdaLogGroup", {
|
|
73
|
+
retention: props.logRetention ?? logs.RetentionDays.ONE_WEEK,
|
|
74
|
+
});
|
|
75
|
+
this.providerLogGroup = new logs.LogGroup(this, "ProviderLogGroup", {
|
|
76
|
+
retention: props.logRetention ?? logs.RetentionDays.ONE_WEEK,
|
|
77
|
+
});
|
|
78
|
+
const onEventHandler = new NodejsFunction(this, "OnEventHandler", {
|
|
79
|
+
runtime: props.runtime,
|
|
80
|
+
handler: props.handler,
|
|
81
|
+
entry: props.entry,
|
|
82
|
+
timeout: props.timeout ?? cdk.Duration.minutes(2),
|
|
83
|
+
memorySize: props.memorySize ?? 256,
|
|
84
|
+
logGroup: this.lambdaLogGroup,
|
|
85
|
+
environment: {
|
|
86
|
+
COGNITO_BASE_DOMAIN: props.cognitoBaseDomain,
|
|
87
|
+
},
|
|
88
|
+
bundling: {
|
|
89
|
+
minify: true,
|
|
90
|
+
sourceMap: true,
|
|
91
|
+
target: "es2020",
|
|
92
|
+
externalModules: ["aws-sdk"],
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
onEventHandler.addToRolePolicy(new iam.PolicyStatement({
|
|
96
|
+
effect: iam.Effect.ALLOW,
|
|
97
|
+
actions: ["execute-api:Invoke"],
|
|
98
|
+
resources: ["*"], // Can be scoped down if API Gateway ARN is known
|
|
99
|
+
}));
|
|
100
|
+
const provider = new cr.Provider(this, "Provider", {
|
|
101
|
+
onEventHandler,
|
|
102
|
+
logGroup: this.providerLogGroup,
|
|
103
|
+
});
|
|
104
|
+
this.serviceToken = provider.serviceToken;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Static config for each environment
|
|
108
|
+
const envConfigs = {
|
|
109
|
+
prod: {
|
|
110
|
+
authUrl: "https://auth.cognito.vydev.io",
|
|
111
|
+
jwksUrl: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_e6o46c1oE/.well-known/jwks.json",
|
|
112
|
+
openIdUrl: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_e6o46c1oE/.well-known/openid-configuration",
|
|
113
|
+
issuer: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_e6o46c1oE",
|
|
114
|
+
},
|
|
115
|
+
stage: {
|
|
116
|
+
authUrl: "https://auth.stage.cognito.vydev.io",
|
|
117
|
+
jwksUrl: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_AUYQ679zW/.well-known/jwks.json",
|
|
118
|
+
openIdUrl: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_AUYQ679zW/.well-known/openid-configuration",
|
|
119
|
+
issuer: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_AUYQ679zW",
|
|
120
|
+
},
|
|
121
|
+
test: {
|
|
122
|
+
authUrl: "https://auth.test.cognito.vydev.io",
|
|
123
|
+
jwksUrl: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_Z53b9AbeT/.well-known/jwks.json",
|
|
124
|
+
openIdUrl: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_Z53b9AbeT/.well-known/openid-configuration",
|
|
125
|
+
issuer: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_Z53b9AbeT",
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnktY29nbml0by1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92eS1jb2duaXRvLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDM0MsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDeEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUE7QUFDbEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQTtBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLHdCQUF3QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUM5RCxPQUFPLEtBQUssSUFBSSxNQUFNLHNCQUFzQixDQUFBO0FBQzVDLE9BQU8sS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUd0QyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUM5QyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBK0IxQyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsU0FBUztJQUM5QixXQUFXLENBQWU7SUFDMUIsaUJBQWlCLENBQVE7SUFDekIsT0FBTyxDQUFnQjtJQUN2QixpQkFBaUIsQ0FBbUI7SUFDcEMsc0JBQXNCLENBQXdCO0lBRTlELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkI7UUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FB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LE9BQU8sRUFDTCx1RkFBdUY7UUFDekYsU0FBUyxFQUNQLGtHQUFrRztRQUNwRyxNQUFNLEVBQUUsaUVBQWlFO0tBQzFFO0lBQ0QsSUFBSSxFQUFFO1FBQ0osT0FBTyxFQUFFLG9DQUFvQztRQUM3QyxPQUFPLEVBQ0wsdUZBQXVGO1FBQ3pGLFNBQVMsRUFDUCxrR0FBa0c7UUFDcEcsTUFBTSxFQUFFLGlFQUFpRTtLQUMxRTtDQUNGLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCJcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gXCJub2RlOnVybFwiXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSBcImF3cy1jZGstbGliXCJcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiXG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIlxuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIlxuaW1wb3J0ICogYXMgbG9ncyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIlxuaW1wb3J0ICogYXMgY3IgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIlxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIlxuaW1wb3J0IHR5cGUgeyBDb2duaXRvRGV0YWlscywgVnlFbnZpcm9ubWVudCB9IGZyb20gXCIuL3NoYXJlZC90eXBlc1wiXG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybClcbmNvbnN0IF9fZmlsZW5hbWUgPSBmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybClcbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShfX2ZpbGVuYW1lKVxuXG5leHBvcnQgaW50ZXJmYWNlIFZ5Q29nbml0b1Byb3ZpZGVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIFZ5IENvZ25pdG8gZW52aXJvbm1lbnQgdG8gY29ubmVjdCB0byAoZS5nLiwgVnlFbnZpcm9ubWVudC5QUk9ELCBWeUVudmlyb25tZW50LlNUQUdFLCBWeUVudmlyb25tZW50LlRFU1QpXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudDogVnlFbnZpcm9ubWVudFxuXG4gIC8qKlxuICAgKiBCYXNlIGRvbWFpbiBmb3IgQ29nbml0byBzZXJ2aWNlXG4gICAqIEBkZWZhdWx0ICdjb2duaXRvLnZ5ZGV2LmlvJ1xuICAgKi9cbiAgcmVhZG9ubHkgY29nbml0b0Jhc2VEb21haW4/OiBzdHJpbmdcblxuICAvKipcbiAgICogQGRlZmF1bHQgbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLXG4gICAqL1xuICByZWFkb25seSBsb2dzUmV0ZW50aW9uPzogbG9ncy5SZXRlbnRpb25EYXlzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQ2xpZW50UHJvdmlkZXIge1xuICBlbnZpcm9ubWVudDogVnlFbnZpcm9ubWVudFxuICBzZXJ2aWNlVG9rZW46IHN0cmluZ1xuICBhdXRoX3VybDogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VTZXJ2ZXJQcm92aWRlciB7XG4gIGVudmlyb25tZW50OiBWeUVudmlyb25tZW50XG4gIHNlcnZpY2VUb2tlbjogc3RyaW5nXG59XG5cbmV4cG9ydCBjbGFzcyBWeUNvZ25pdG9Qcm92aWRlciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBlbnZpcm9ubWVudDogVnlFbnZpcm9ubWVudFxuICBwdWJsaWMgcmVhZG9ubHkgY29nbml0b0Jhc2VEb21haW46IHN0cmluZ1xuICBwdWJsaWMgcmVhZG9ubHkgZGV0YWlsczogQ29nbml0b0RldGFpbHNcbiAgcHVibGljIHJlYWRvbmx5IGFwcENsaWVudFByb3ZpZGVyOiBBcHBDbGllbnRQcm92aWRlclxuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2VTZXJ2ZXJQcm92aWRlcjogUmVzb3VyY2VTZXJ2ZXJQcm92aWRlclxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWeUNvZ25pdG9Qcm92aWRlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IHByb3BzLmVudmlyb25tZW50XG4gICAgdGhpcy5jb2duaXRvQmFzZURvbWFpbiA9IHByb3BzLmNvZ25pdG9CYXNlRG9tYWluID8/IFwiY29nbml0by52eWRldi5pb1wiXG4gICAgdGhpcy5kZXRhaWxzID0gdGhpcy5nZXRDb2duaXRvRGV0YWlsc0ZvckVudmlyb25tZW50KHRoaXMuZW52aXJvbm1lbnQpXG5cbiAgICBjb25zdCBhcHBDbGllbnRQcm92aWRlciA9IG5ldyBMYW1iZGFQcm92aWRlcih0aGlzLCBcIkFwcENsaWVudFByb3ZpZGVyXCIsIHtcbiAgICAgIGNvZ25pdG9CYXNlRG9tYWluOiB0aGlzLmNvZ25pdG9CYXNlRG9tYWluLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIyX1gsXG4gICAgICBoYW5kbGVyOiBcImhhbmRsZXJcIixcbiAgICAgIGVudHJ5OiByZXF1aXJlLnJlc29sdmUoYCR7X19kaXJuYW1lfS9jb2duaXRvLWFwcC1jbGllbnQvaGFuZGxlcmApLFxuICAgICAgbG9nUmV0ZW50aW9uOiBwcm9wcy5sb2dzUmV0ZW50aW9uLFxuICAgIH0pXG5cbiAgICB0aGlzLmFwcENsaWVudFByb3ZpZGVyID0ge1xuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuZW52aXJvbm1lbnQsXG4gICAgICBzZXJ2aWNlVG9rZW46IGFwcENsaWVudFByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIGF1dGhfdXJsOiB0aGlzLmRldGFpbHMuYXV0aFVybCxcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZVNlcnZlclByb3ZpZGVyID0gbmV3IExhbWJkYVByb3ZpZGVyKFxuICAgICAgdGhpcyxcbiAgICAgIFwiUmVzb3VyY2VTZXJ2ZXJQcm92aWRlclwiLFxuICAgICAge1xuICAgICAgICBjb2duaXRvQmFzZURvbWFpbjogdGhpcy5jb2duaXRvQmFzZURvbWFpbixcbiAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIyX1gsXG4gICAgICAgIGhhbmRsZXI6IFwiaGFuZGxlclwiLFxuICAgICAgICBlbnRyeTogcmVxdWlyZS5yZXNvbHZlKGAke19fZGlybmFtZX0vY29nbml0by1yZXNvdXJjZS1zZXJ2ZXIvaGFuZGxlcmApLFxuICAgICAgICBsb2dSZXRlbnRpb246IHByb3BzLmxvZ3NSZXRlbnRpb24sXG4gICAgICB9LFxuICAgIClcblxuICAgIHRoaXMucmVzb3VyY2VTZXJ2ZXJQcm92aWRlciA9IHtcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLmVudmlyb25tZW50LFxuICAgICAgc2VydmljZVRva2VuOiByZXNvdXJjZVNlcnZlclByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICB9XG4gIH1cblxuICBnZXRDb2duaXRvRGV0YWlsc0ZvckVudmlyb25tZW50KGVudmlyb25tZW50OiBWeUVudmlyb25tZW50KTogQ29nbml0b0RldGFpbHMge1xuICAgIGNvbnN0IGNvbmZpZyA9IGVudkNvbmZpZ3NbZW52aXJvbm1lbnRdXG5cbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5rbm93biBlbnZpcm9ubWVudDogJHtlbnZpcm9ubWVudH0uIFZhbGlkIHZhbHVlcyBhcmU6IHByb2QsIHN0YWdlLCB0ZXN0YCxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnXG4gIH1cbn1cblxuaW50ZXJmYWNlIExhbWJkYVByb3ZpZGVyUHJvcHMge1xuICByZWFkb25seSBjb2duaXRvQmFzZURvbWFpbjogc3RyaW5nXG4gIHJlYWRvbmx5IHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lXG4gIHJlYWRvbmx5IGhhbmRsZXI6IHN0cmluZ1xuICByZWFkb25seSBlbnRyeTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0IGNkay5EdXJhdGlvbi5taW51dGVzKDIpXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0PzogY2RrLkR1cmF0aW9uXG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0IDI1NlxuICAgKi9cbiAgcmVhZG9ubHkgbWVtb3J5U2l6ZT86IG51bWJlclxuXG4gIC8qKlxuICAgKiBAZGVmYXVsdCBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUtcbiAgICovXG4gIHJlYWRvbmx5IGxvZ1JldGVudGlvbj86IGxvZ3MuUmV0ZW50aW9uRGF5c1xufVxuXG5jbGFzcyBMYW1iZGFQcm92aWRlciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgbG9nR3JvdXAgZm9yIHRoZSBldmVudCBoYW5kbGVyIGxhbWJkYVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGxhbWJkYUxvZ0dyb3VwOiBsb2dzLkxvZ0dyb3VwXG5cbiAgLyoqXG4gICAqIFRoZSBsb2dHcm91cCBmb3IgdGhlIGN1c3RvbSByZXNvdXJjZSBwcm92aWRlclxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb3ZpZGVyTG9nR3JvdXA6IGxvZ3MuTG9nR3JvdXBcblxuICAvKipcbiAgICogVGhlIHNlcnZpY2UgdG9rZW4gZm9yIHRoZSBwcm92aWRlclxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2VUb2tlbjogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IExhbWJkYVByb3ZpZGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICB0aGlzLmxhbWJkYUxvZ0dyb3VwID0gbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgXCJMYW1iZGFMb2dHcm91cFwiLCB7XG4gICAgICByZXRlbnRpb246IHByb3BzLmxvZ1JldGVudGlvbiA/PyBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgfSlcblxuICAgIHRoaXMucHJvdmlkZXJMb2dHcm91cCA9IG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsIFwiUHJvdmlkZXJMb2dHcm91cFwiLCB7XG4gICAgICByZXRlbnRpb246IHByb3BzLmxvZ1JldGVudGlvbiA/PyBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgfSlcblxuICAgIGNvbnN0IG9uRXZlbnRIYW5kbGVyID0gbmV3IE5vZGVqc0Z1bmN0aW9uKHRoaXMsIFwiT25FdmVudEhhbmRsZXJcIiwge1xuICAgICAgcnVudGltZTogcHJvcHMucnVudGltZSxcbiAgICAgIGhhbmRsZXI6IHByb3BzLmhhbmRsZXIsXG4gICAgICBlbnRyeTogcHJvcHMuZW50cnksXG4gICAgICB0aW1lb3V0OiBwcm9wcy50aW1lb3V0ID8/IGNkay5EdXJhdGlvbi5taW51dGVzKDIpLFxuICAgICAgbWVtb3J5U2l6ZTogcHJvcHMubWVtb3J5U2l6ZSA/PyAyNTYsXG4gICAgICBsb2dHcm91cDogdGhpcy5sYW1iZGFMb2dHcm91cCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIENPR05JVE9fQkFTRV9ET01BSU46IHByb3BzLmNvZ25pdG9CYXNlRG9tYWluLFxuICAgICAgfSxcbiAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgIG1pbmlmeTogdHJ1ZSxcbiAgICAgICAgc291cmNlTWFwOiB0cnVlLFxuICAgICAgICB0YXJnZXQ6IFwiZXMyMDIwXCIsXG4gICAgICAgIGV4dGVybmFsTW9kdWxlczogW1wiYXdzLXNka1wiXSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIG9uRXZlbnRIYW5kbGVyLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbXCJleGVjdXRlLWFwaTpJbnZva2VcIl0sXG4gICAgICAgIHJlc291cmNlczogW1wiKlwiXSwgLy8gQ2FuIGJlIHNjb3BlZCBkb3duIGlmIEFQSSBHYXRld2F5IEFSTiBpcyBrbm93blxuICAgICAgfSksXG4gICAgKVxuXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgY3IuUHJvdmlkZXIodGhpcywgXCJQcm92aWRlclwiLCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcixcbiAgICAgIGxvZ0dyb3VwOiB0aGlzLnByb3ZpZGVyTG9nR3JvdXAsXG4gICAgfSlcblxuICAgIHRoaXMuc2VydmljZVRva2VuID0gcHJvdmlkZXIuc2VydmljZVRva2VuXG4gIH1cbn1cblxuLy8gU3RhdGljIGNvbmZpZyBmb3IgZWFjaCBlbnZpcm9ubWVudFxuY29uc3QgZW52Q29uZmlnczogUmVjb3JkPHN0cmluZywgQ29nbml0b0RldGFpbHM+ID0ge1xuICBwcm9kOiB7XG4gICAgYXV0aFVybDogXCJodHRwczovL2F1dGguY29nbml0by52eWRldi5pb1wiLFxuICAgIGp3a3NVcmw6XG4gICAgICBcImh0dHBzOi8vY29nbml0by1pZHAuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vZXUtd2VzdC0xX2U2bzQ2YzFvRS8ud2VsbC1rbm93bi9qd2tzLmpzb25cIixcbiAgICBvcGVuSWRVcmw6XG4gICAgICBcImh0dHBzOi8vY29nbml0by1pZHAuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vZXUtd2VzdC0xX2U2bzQ2YzFvRS8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvblwiLFxuICAgIGlzc3VlcjogXCJodHRwczovL2NvZ25pdG8taWRwLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2V1LXdlc3QtMV9lNm80NmMxb0VcIixcbiAgfSxcbiAgc3RhZ2U6IHtcbiAgICBhdXRoVXJsOiBcImh0dHBzOi8vYXV0aC5zdGFnZS5jb2duaXRvLnZ5ZGV2LmlvXCIsXG4gICAgandrc1VybDpcbiAgICAgIFwiaHR0cHM6Ly9jb2duaXRvLWlkcC5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS9ldS13ZXN0LTFfQVVZUTY3OXpXLy53ZWxsLWtub3duL2p3a3MuanNvblwiLFxuICAgIG9wZW5JZFVybDpcbiAgICAgIFwiaHR0cHM6Ly9jb2duaXRvLWlkcC5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS9ldS13ZXN0LTFfQVVZUTY3OXpXLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uXCIsXG4gICAgaXNzdWVyOiBcImh0dHBzOi8vY29nbml0by1pZHAuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vZXUtd2VzdC0xX0FVWVE2Nzl6V1wiLFxuICB9LFxuICB0ZXN0OiB7XG4gICAgYXV0aFVybDogXCJodHRwczovL2F1dGgudGVzdC5jb2duaXRvLnZ5ZGV2LmlvXCIsXG4gICAgandrc1VybDpcbiAgICAgIFwiaHR0cHM6Ly9jb2duaXRvLWlkcC5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS9ldS13ZXN0LTFfWjUzYjlBYmVULy53ZWxsLWtub3duL2p3a3MuanNvblwiLFxuICAgIG9wZW5JZFVybDpcbiAgICAgIFwiaHR0cHM6Ly9jb2duaXRvLWlkcC5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS9ldS13ZXN0LTFfWjUzYjlBYmVULy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uXCIsXG4gICAgaXNzdWVyOiBcImh0dHBzOi8vY29nbml0by1pZHAuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vZXUtd2VzdC0xX1o1M2I5QWJlVFwiLFxuICB9LFxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@liflig/cdk-vy",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "CDK constructs for the Vy internal services, based on nsbno/terraform-provider-vy",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"aws-cdk",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@types/aws-lambda": "8.10.157",
|
|
48
48
|
"@types/jest": "30.0.0",
|
|
49
49
|
"@types/node": "24.9.2",
|
|
50
|
-
"aws-cdk-lib": "2.221.
|
|
50
|
+
"aws-cdk-lib": "2.221.1",
|
|
51
51
|
"constructs": "10.4.2",
|
|
52
52
|
"jest": "30.2.0",
|
|
53
53
|
"jest-cdk-snapshot": "2.3.6",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
62
|
"@aws-crypto/sha256-js": "5.2.0",
|
|
63
|
-
"@aws-sdk/client-sts": "3.
|
|
63
|
+
"@aws-sdk/client-sts": "3.920.0",
|
|
64
64
|
"@smithy/protocol-http": "5.3.3",
|
|
65
65
|
"@smithy/signature-v4": "5.3.3"
|
|
66
66
|
},
|
package/lib/cognito-info.d.ts
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CDK Construct for Cognito Info data source
|
|
3
|
-
*/
|
|
4
|
-
import { Construct } from "constructs";
|
|
5
|
-
import type { VyEnvironment } from "./shared/types";
|
|
6
|
-
export interface CognitoInfoProps {
|
|
7
|
-
/**
|
|
8
|
-
* The environment to get Cognito info for (e.g., VyEnvironment.PROD, VyEnvironment.STAGE, VyEnvironment.TEST)
|
|
9
|
-
*/
|
|
10
|
-
readonly environment: VyEnvironment;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Holds information about the centralized Cognito User Pool
|
|
14
|
-
*
|
|
15
|
-
* Use this to reference the shared Cognito User Pool in your CDK applications without
|
|
16
|
-
* hardcoding values.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```typescript
|
|
20
|
-
* const cognitoInfo = new CognitoInfo(this, 'CognitoInfo', {
|
|
21
|
-
* environment: VyEnvironment.PROD
|
|
22
|
-
* });
|
|
23
|
-
*
|
|
24
|
-
* // Access authentication endpoints
|
|
25
|
-
* console.log('Auth URL:', cognitoInfo.authUrl);
|
|
26
|
-
* console.log('JWKS URL:', cognitoInfo.jwksUrl);
|
|
27
|
-
* console.log('OpenID URL:', cognitoInfo.openIdUrl);
|
|
28
|
-
* console.log('Issuer:', cognitoInfo.issuer);
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
export declare class CognitoInfo extends Construct {
|
|
32
|
-
/**
|
|
33
|
-
* The URL where users can authenticate
|
|
34
|
-
*/
|
|
35
|
-
readonly authUrl: string;
|
|
36
|
-
/**
|
|
37
|
-
* The URL for the /.well-known/jwks.json endpoint
|
|
38
|
-
*/
|
|
39
|
-
readonly jwksUrl: string;
|
|
40
|
-
/**
|
|
41
|
-
* The URL for the /.well-known/openid-configuration endpoint
|
|
42
|
-
*/
|
|
43
|
-
readonly openIdUrl: string;
|
|
44
|
-
/**
|
|
45
|
-
* The URI for the issuer
|
|
46
|
-
*/
|
|
47
|
-
readonly issuer: string;
|
|
48
|
-
constructor(scope: Construct, id: string, props: CognitoInfoProps);
|
|
49
|
-
}
|
package/lib/cognito-info.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CDK Construct for Cognito Info data source
|
|
3
|
-
*/
|
|
4
|
-
import { Construct } from "constructs";
|
|
5
|
-
/**
|
|
6
|
-
* Holds information about the centralized Cognito User Pool
|
|
7
|
-
*
|
|
8
|
-
* Use this to reference the shared Cognito User Pool in your CDK applications without
|
|
9
|
-
* hardcoding values.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```typescript
|
|
13
|
-
* const cognitoInfo = new CognitoInfo(this, 'CognitoInfo', {
|
|
14
|
-
* environment: VyEnvironment.PROD
|
|
15
|
-
* });
|
|
16
|
-
*
|
|
17
|
-
* // Access authentication endpoints
|
|
18
|
-
* console.log('Auth URL:', cognitoInfo.authUrl);
|
|
19
|
-
* console.log('JWKS URL:', cognitoInfo.jwksUrl);
|
|
20
|
-
* console.log('OpenID URL:', cognitoInfo.openIdUrl);
|
|
21
|
-
* console.log('Issuer:', cognitoInfo.issuer);
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
export class CognitoInfo extends Construct {
|
|
25
|
-
/**
|
|
26
|
-
* The URL where users can authenticate
|
|
27
|
-
*/
|
|
28
|
-
authUrl;
|
|
29
|
-
/**
|
|
30
|
-
* The URL for the /.well-known/jwks.json endpoint
|
|
31
|
-
*/
|
|
32
|
-
jwksUrl;
|
|
33
|
-
/**
|
|
34
|
-
* The URL for the /.well-known/openid-configuration endpoint
|
|
35
|
-
*/
|
|
36
|
-
openIdUrl;
|
|
37
|
-
/**
|
|
38
|
-
* The URI for the issuer
|
|
39
|
-
*/
|
|
40
|
-
issuer;
|
|
41
|
-
constructor(scope, id, props) {
|
|
42
|
-
super(scope, id);
|
|
43
|
-
this.authUrl = getCognitoInfo(props.environment).authUrl;
|
|
44
|
-
this.jwksUrl = getCognitoInfo(props.environment).jwksUrl;
|
|
45
|
-
this.openIdUrl = getCognitoInfo(props.environment).openIdUrl;
|
|
46
|
-
this.issuer = getCognitoInfo(props.environment).issuer;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
function getCognitoInfo(environment) {
|
|
50
|
-
const envConfigs = {
|
|
51
|
-
prod: {
|
|
52
|
-
authUrl: "https://auth.cognito.vydev.io",
|
|
53
|
-
jwksUrl: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_e6o46c1oE/.well-known/jwks.json",
|
|
54
|
-
openIdUrl: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_e6o46c1oE/.well-known/openid-configuration",
|
|
55
|
-
issuer: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_e6o46c1oE",
|
|
56
|
-
},
|
|
57
|
-
stage: {
|
|
58
|
-
authUrl: "https://auth.stage.cognito.vydev.io",
|
|
59
|
-
jwksUrl: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_AUYQ679zW/.well-known/jwks.json",
|
|
60
|
-
openIdUrl: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_AUYQ679zW/.well-known/openid-configuration",
|
|
61
|
-
issuer: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_AUYQ679zW",
|
|
62
|
-
},
|
|
63
|
-
test: {
|
|
64
|
-
authUrl: "https://auth.test.cognito.vydev.io",
|
|
65
|
-
jwksUrl: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_Z53b9AbeT/.well-known/jwks.json",
|
|
66
|
-
openIdUrl: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_Z53b9AbeT/.well-known/openid-configuration",
|
|
67
|
-
issuer: "https://cognito-idp.eu-west-1.amazonaws.com/eu-west-1_Z53b9AbeT",
|
|
68
|
-
},
|
|
69
|
-
};
|
|
70
|
-
const config = envConfigs[environment];
|
|
71
|
-
if (!config) {
|
|
72
|
-
throw new Error(`Unknown environment: ${environment}. Valid values are: prod, stage, test, dev`);
|
|
73
|
-
}
|
|
74
|
-
return config;
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0by1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvZ25pdG8taW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFVdEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsU0FBUztJQUN4Qzs7T0FFRztJQUNhLE9BQU8sQ0FBUTtJQUUvQjs7T0FFRztJQUNhLE9BQU8sQ0FBUTtJQUUvQjs7T0FFRztJQUNhLFNBQVMsQ0FBUTtJQUVqQzs7T0FFRztJQUNhLE1BQU0sQ0FBUTtJQUU5QixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXVCO1FBQy9ELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtRQUN4RCxJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFBO1FBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUE7UUFDNUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtJQUN4RCxDQUFDO0NBQ0Y7QUFFRCxTQUFTLGNBQWMsQ0FBQyxXQUFtQjtJQUN6QyxNQUFNLFVBQVUsR0FBbUM7UUFDakQsSUFBSSxFQUFFO1lBQ0osT0FBTyxFQUFFLCtCQUErQjtZQUN4QyxPQUFPLEVBQ0wsdUZBQXVGO1lBQ3pGLFNBQVMsRUFDUCxrR0FBa0c7WUFDcEcsTUFBTSxFQUFFLGlFQUFpRTtTQUMxRTtRQUNELEtBQUssRUFBRTtZQUNMLE9BQU8sRUFBRSxxQ0FBcUM7WUFDOUMsT0FBTyxFQUNMLHVGQUF1RjtZQUN6RixTQUFTLEVBQ1Asa0dBQWtHO1lBQ3BHLE1BQU0sRUFBRSxpRUFBaUU7U0FDMUU7UUFDRCxJQUFJLEVBQUU7WUFDSixPQUFPLEVBQUUsb0NBQW9DO1lBQzdDLE9BQU8sRUFDTCx1RkFBdUY7WUFDekYsU0FBUyxFQUNQLGtHQUFrRztZQUNwRyxNQUFNLEVBQUUsaUVBQWlFO1NBQzFFO0tBQ0YsQ0FBQTtJQUVELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUN0QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLElBQUksS0FBSyxDQUNiLHdCQUF3QixXQUFXLDRDQUE0QyxDQUNoRixDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ0RLIENvbnN0cnVjdCBmb3IgQ29nbml0byBJbmZvIGRhdGEgc291cmNlXG4gKi9cblxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIlxuaW1wb3J0IHR5cGUgeyBDb2duaXRvRGV0YWlscywgVnlFbnZpcm9ubWVudCB9IGZyb20gXCIuL3NoYXJlZC90eXBlc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29nbml0b0luZm9Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgdG8gZ2V0IENvZ25pdG8gaW5mbyBmb3IgKGUuZy4sIFZ5RW52aXJvbm1lbnQuUFJPRCwgVnlFbnZpcm9ubWVudC5TVEFHRSwgVnlFbnZpcm9ubWVudC5URVNUKVxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IFZ5RW52aXJvbm1lbnRcbn1cblxuLyoqXG4gKiBIb2xkcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2VudHJhbGl6ZWQgQ29nbml0byBVc2VyIFBvb2xcbiAqXG4gKiBVc2UgdGhpcyB0byByZWZlcmVuY2UgdGhlIHNoYXJlZCBDb2duaXRvIFVzZXIgUG9vbCBpbiB5b3VyIENESyBhcHBsaWNhdGlvbnMgd2l0aG91dFxuICogaGFyZGNvZGluZyB2YWx1ZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNvZ25pdG9JbmZvID0gbmV3IENvZ25pdG9JbmZvKHRoaXMsICdDb2duaXRvSW5mbycsIHtcbiAqICAgZW52aXJvbm1lbnQ6IFZ5RW52aXJvbm1lbnQuUFJPRFxuICogfSk7XG4gKlxuICogLy8gQWNjZXNzIGF1dGhlbnRpY2F0aW9uIGVuZHBvaW50c1xuICogY29uc29sZS5sb2coJ0F1dGggVVJMOicsIGNvZ25pdG9JbmZvLmF1dGhVcmwpO1xuICogY29uc29sZS5sb2coJ0pXS1MgVVJMOicsIGNvZ25pdG9JbmZvLmp3a3NVcmwpO1xuICogY29uc29sZS5sb2coJ09wZW5JRCBVUkw6JywgY29nbml0b0luZm8ub3BlbklkVXJsKTtcbiAqIGNvbnNvbGUubG9nKCdJc3N1ZXI6JywgY29nbml0b0luZm8uaXNzdWVyKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgQ29nbml0b0luZm8gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIFVSTCB3aGVyZSB1c2VycyBjYW4gYXV0aGVudGljYXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXV0aFVybDogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSBVUkwgZm9yIHRoZSAvLndlbGwta25vd24vandrcy5qc29uIGVuZHBvaW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgandrc1VybDogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFRoZSBVUkwgZm9yIHRoZSAvLndlbGwta25vd24vb3BlbmlkLWNvbmZpZ3VyYXRpb24gZW5kcG9pbnRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBvcGVuSWRVcmw6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgVVJJIGZvciB0aGUgaXNzdWVyXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNzdWVyOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ29nbml0b0luZm9Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIHRoaXMuYXV0aFVybCA9IGdldENvZ25pdG9JbmZvKHByb3BzLmVudmlyb25tZW50KS5hdXRoVXJsXG4gICAgdGhpcy5qd2tzVXJsID0gZ2V0Q29nbml0b0luZm8ocHJvcHMuZW52aXJvbm1lbnQpLmp3a3NVcmxcbiAgICB0aGlzLm9wZW5JZFVybCA9IGdldENvZ25pdG9JbmZvKHByb3BzLmVudmlyb25tZW50KS5vcGVuSWRVcmxcbiAgICB0aGlzLmlzc3VlciA9IGdldENvZ25pdG9JbmZvKHByb3BzLmVudmlyb25tZW50KS5pc3N1ZXJcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRDb2duaXRvSW5mbyhlbnZpcm9ubWVudDogc3RyaW5nKTogQ29nbml0b0RldGFpbHMge1xuICBjb25zdCBlbnZDb25maWdzOiBSZWNvcmQ8c3RyaW5nLCBDb2duaXRvRGV0YWlscz4gPSB7XG4gICAgcHJvZDoge1xuICAgICAgYXV0aFVybDogXCJodHRwczovL2F1dGguY29nbml0by52eWRldi5pb1wiLFxuICAgICAgandrc1VybDpcbiAgICAgICAgXCJodHRwczovL2NvZ25pdG8taWRwLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2V1LXdlc3QtMV9lNm80NmMxb0UvLndlbGwta25vd24vandrcy5qc29uXCIsXG4gICAgICBvcGVuSWRVcmw6XG4gICAgICAgIFwiaHR0cHM6Ly9jb2duaXRvLWlkcC5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS9ldS13ZXN0LTFfZTZvNDZjMW9FLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uXCIsXG4gICAgICBpc3N1ZXI6IFwiaHR0cHM6Ly9jb2duaXRvLWlkcC5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS9ldS13ZXN0LTFfZTZvNDZjMW9FXCIsXG4gICAgfSxcbiAgICBzdGFnZToge1xuICAgICAgYXV0aFVybDogXCJodHRwczovL2F1dGguc3RhZ2UuY29nbml0by52eWRldi5pb1wiLFxuICAgICAgandrc1VybDpcbiAgICAgICAgXCJodHRwczovL2NvZ25pdG8taWRwLmV1LXdlc3QtMS5hbWF6b25hd3MuY29tL2V1LXdlc3QtMV9BVVlRNjc5elcvLndlbGwta25vd24vandrcy5qc29uXCIsXG4gICAgICBvcGVuSWRVcmw6XG4gICAgICAgIFwiaHR0cHM6Ly9jb2duaXRvLWlkcC5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS9ldS13ZXN0LTFfQVVZUTY3OXpXLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uXCIsXG4gICAgICBpc3N1ZXI6IFwiaHR0cHM6Ly9jb2duaXRvLWlkcC5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS9ldS13ZXN0LTFfQVVZUTY3OXpXXCIsXG4gICAgfSxcbiAgICB0ZXN0OiB7XG4gICAgICBhdXRoVXJsOiBcImh0dHBzOi8vYXV0aC50ZXN0LmNvZ25pdG8udnlkZXYuaW9cIixcbiAgICAgIGp3a3NVcmw6XG4gICAgICAgIFwiaHR0cHM6Ly9jb2duaXRvLWlkcC5ldS13ZXN0LTEuYW1hem9uYXdzLmNvbS9ldS13ZXN0LTFfWjUzYjlBYmVULy53ZWxsLWtub3duL2p3a3MuanNvblwiLFxuICAgICAgb3BlbklkVXJsOlxuICAgICAgICBcImh0dHBzOi8vY29nbml0by1pZHAuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vZXUtd2VzdC0xX1o1M2I5QWJlVC8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvblwiLFxuICAgICAgaXNzdWVyOiBcImh0dHBzOi8vY29nbml0by1pZHAuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vZXUtd2VzdC0xX1o1M2I5QWJlVFwiLFxuICAgIH0sXG4gIH1cblxuICBjb25zdCBjb25maWcgPSBlbnZDb25maWdzW2Vudmlyb25tZW50XVxuICBpZiAoIWNvbmZpZykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBVbmtub3duIGVudmlyb25tZW50OiAke2Vudmlyb25tZW50fS4gVmFsaWQgdmFsdWVzIGFyZTogcHJvZCwgc3RhZ2UsIHRlc3QsIGRldmAsXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGNvbmZpZ1xufVxuIl19
|