@sureshgururajan/aws-console-private-access-validator 1.0.4 → 1.0.5

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 CHANGED
File without changes
package/dist/index.d.ts CHANGED
File without changes
File without changes
package/dist/index.js.map CHANGED
File without changes
package/dist/test.d.ts CHANGED
File without changes
File without changes
package/dist/test.js CHANGED
File without changes
package/dist/test.js.map CHANGED
File without changes
package/dist/types.d.ts CHANGED
File without changes
File without changes
package/dist/types.js CHANGED
File without changes
package/dist/types.js.map CHANGED
File without changes
File without changes
File without changes
package/dist/validator.js CHANGED
@@ -1,6 +1,8 @@
1
1
  export class ConsolePrivateAccessValidator {
2
+ template;
3
+ region;
4
+ checks = [];
2
5
  constructor(template, region = 'us-east-1') {
3
- this.checks = [];
4
6
  this.template = template;
5
7
  this.region = region;
6
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sureshgururajan/aws-console-private-access-validator",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "type": "module",
5
5
  "description": "MCP server for validating AWS Console Private Access CloudFormation templates",
6
6
  "main": "dist/index.js",
package/src/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};
package/src/index.js ADDED
@@ -0,0 +1,85 @@
1
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
4
+ import { ConsolePrivateAccessValidator } from './validator.js';
5
+ const server = new Server({
6
+ name: 'aws-console-private-access-validator',
7
+ version: '1.0.0',
8
+ }, {
9
+ capabilities: {
10
+ tools: {},
11
+ },
12
+ });
13
+ const tools = [
14
+ {
15
+ name: 'validate-cloudformation',
16
+ description: 'Validates a CloudFormation template for AWS Console Private Access requirements',
17
+ inputSchema: {
18
+ type: 'object',
19
+ properties: {
20
+ template: {
21
+ type: 'string',
22
+ description: 'CloudFormation template as JSON string',
23
+ },
24
+ region: {
25
+ type: 'string',
26
+ description: 'AWS region (default: us-east-1)',
27
+ default: 'us-east-1',
28
+ },
29
+ },
30
+ required: ['template'],
31
+ },
32
+ },
33
+ ];
34
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
35
+ tools,
36
+ }));
37
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
38
+ if (request.params.name === 'validate-cloudformation') {
39
+ const { template, region = 'us-east-1' } = request.params.arguments;
40
+ try {
41
+ const parsedTemplate = JSON.parse(template);
42
+ const validator = new ConsolePrivateAccessValidator(parsedTemplate, region);
43
+ const result = validator.validate();
44
+ return {
45
+ content: [
46
+ {
47
+ type: 'text',
48
+ text: JSON.stringify(result, null, 2),
49
+ },
50
+ ],
51
+ };
52
+ }
53
+ catch (error) {
54
+ const errorMessage = error instanceof Error ? error.message : String(error);
55
+ return {
56
+ content: [
57
+ {
58
+ type: 'text',
59
+ text: JSON.stringify({
60
+ valid: false,
61
+ checks: [],
62
+ summary: `Error parsing template: ${errorMessage}`,
63
+ }, null, 2),
64
+ },
65
+ ],
66
+ isError: true,
67
+ };
68
+ }
69
+ }
70
+ return {
71
+ content: [
72
+ {
73
+ type: 'text',
74
+ text: `Unknown tool: ${request.params.name}`,
75
+ },
76
+ ],
77
+ isError: true,
78
+ };
79
+ });
80
+ async function main() {
81
+ const transport = new StdioServerTransport();
82
+ await server.connect(transport);
83
+ }
84
+ main().catch(console.error);
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixzQkFBc0IsR0FFdkIsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcvRCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FDdkI7SUFDRSxJQUFJLEVBQUUsc0NBQXNDO0lBQzVDLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLEVBQ0Q7SUFDRSxZQUFZLEVBQUU7UUFDWixLQUFLLEVBQUUsRUFBRTtLQUNWO0NBQ0YsQ0FDRixDQUFDO0FBRUYsTUFBTSxLQUFLLEdBQVc7SUFDcEI7UUFDRSxJQUFJLEVBQUUseUJBQXlCO1FBQy9CLFdBQVcsRUFDVCxpRkFBaUY7UUFDbkYsV0FBVyxFQUFFO1lBQ1gsSUFBSSxFQUFFLFFBQWlCO1lBQ3ZCLFVBQVUsRUFBRTtnQkFDVixRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsV0FBVyxFQUFFLHdDQUF3QztpQkFDdEQ7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLElBQUksRUFBRSxRQUFRO29CQUNkLFdBQVcsRUFBRSxpQ0FBaUM7b0JBQzlDLE9BQU8sRUFBRSxXQUFXO2lCQUNyQjthQUNGO1lBQ0QsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDO1NBQ3ZCO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM1RCxLQUFLO0NBQ04sQ0FBQyxDQUFDLENBQUM7QUFFSixNQUFNLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ2hFLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUsseUJBQXlCLEVBQUUsQ0FBQztRQUN0RCxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FBRyxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBR3pELENBQUM7UUFFRixJQUFJLENBQUM7WUFDSCxNQUFNLGNBQWMsR0FBMkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRSxNQUFNLFNBQVMsR0FBRyxJQUFJLDZCQUE2QixDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM1RSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFcEMsT0FBTztnQkFDTCxPQUFPLEVBQUU7b0JBQ1A7d0JBQ0UsSUFBSSxFQUFFLE1BQU07d0JBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7cUJBQ3RDO2lCQUNGO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxZQUFZLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVFLE9BQU87Z0JBQ0wsT0FBTyxFQUFFO29CQUNQO3dCQUNFLElBQUksRUFBRSxNQUFNO3dCQUNaLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUNsQjs0QkFDRSxLQUFLLEVBQUUsS0FBSzs0QkFDWixNQUFNLEVBQUUsRUFBRTs0QkFDVixPQUFPLEVBQUUsMkJBQTJCLFlBQVksRUFBRTt5QkFDbkQsRUFDRCxJQUFJLEVBQ0osQ0FBQyxDQUNGO3FCQUNGO2lCQUNGO2dCQUNELE9BQU8sRUFBRSxJQUFJO2FBQ2QsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sRUFBRTtZQUNQO2dCQUNFLElBQUksRUFBRSxNQUFNO2dCQUNaLElBQUksRUFBRSxpQkFBaUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7YUFDN0M7U0FDRjtRQUNELE9BQU8sRUFBRSxJQUFJO0tBQ2QsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUgsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO0lBQzdDLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlcnZlciB9IGZyb20gJ0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvc2VydmVyL2luZGV4LmpzJztcbmltcG9ydCB7IFN0ZGlvU2VydmVyVHJhbnNwb3J0IH0gZnJvbSAnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9zZXJ2ZXIvc3RkaW8uanMnO1xuaW1wb3J0IHtcbiAgQ2FsbFRvb2xSZXF1ZXN0U2NoZW1hLFxuICBMaXN0VG9vbHNSZXF1ZXN0U2NoZW1hLFxuICBUb29sLFxufSBmcm9tICdAbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3R5cGVzLmpzJztcbmltcG9ydCB7IENvbnNvbGVQcml2YXRlQWNjZXNzVmFsaWRhdG9yIH0gZnJvbSAnLi92YWxpZGF0b3IuanMnO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5jb25zdCBzZXJ2ZXIgPSBuZXcgU2VydmVyKFxuICB7XG4gICAgbmFtZTogJ2F3cy1jb25zb2xlLXByaXZhdGUtYWNjZXNzLXZhbGlkYXRvcicsXG4gICAgdmVyc2lvbjogJzEuMC4wJyxcbiAgfSxcbiAge1xuICAgIGNhcGFiaWxpdGllczoge1xuICAgICAgdG9vbHM6IHt9LFxuICAgIH0sXG4gIH1cbik7XG5cbmNvbnN0IHRvb2xzOiBUb29sW10gPSBbXG4gIHtcbiAgICBuYW1lOiAndmFsaWRhdGUtY2xvdWRmb3JtYXRpb24nLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1ZhbGlkYXRlcyBhIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIGZvciBBV1MgQ29uc29sZSBQcml2YXRlIEFjY2VzcyByZXF1aXJlbWVudHMnLFxuICAgIGlucHV0U2NoZW1hOiB7XG4gICAgICB0eXBlOiAnb2JqZWN0JyBhcyBjb25zdCxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgdGVtcGxhdGU6IHtcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0Nsb3VkRm9ybWF0aW9uIHRlbXBsYXRlIGFzIEpTT04gc3RyaW5nJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVnaW9uOiB7XG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdBV1MgcmVnaW9uIChkZWZhdWx0OiB1cy1lYXN0LTEpJyxcbiAgICAgICAgICBkZWZhdWx0OiAndXMtZWFzdC0xJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICByZXF1aXJlZDogWyd0ZW1wbGF0ZSddLFxuICAgIH0sXG4gIH0sXG5dO1xuXG5zZXJ2ZXIuc2V0UmVxdWVzdEhhbmRsZXIoTGlzdFRvb2xzUmVxdWVzdFNjaGVtYSwgYXN5bmMgKCkgPT4gKHtcbiAgdG9vbHMsXG59KSk7XG5cbnNlcnZlci5zZXRSZXF1ZXN0SGFuZGxlcihDYWxsVG9vbFJlcXVlc3RTY2hlbWEsIGFzeW5jIChyZXF1ZXN0KSA9PiB7XG4gIGlmIChyZXF1ZXN0LnBhcmFtcy5uYW1lID09PSAndmFsaWRhdGUtY2xvdWRmb3JtYXRpb24nKSB7XG4gICAgY29uc3QgeyB0ZW1wbGF0ZSwgcmVnaW9uID0gJ3VzLWVhc3QtMScgfSA9IHJlcXVlc3QucGFyYW1zLmFyZ3VtZW50cyBhcyB7XG4gICAgICB0ZW1wbGF0ZTogc3RyaW5nO1xuICAgICAgcmVnaW9uPzogc3RyaW5nO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkVGVtcGxhdGU6IENsb3VkRm9ybWF0aW9uVGVtcGxhdGUgPSBKU09OLnBhcnNlKHRlbXBsYXRlKTtcbiAgICAgIGNvbnN0IHZhbGlkYXRvciA9IG5ldyBDb25zb2xlUHJpdmF0ZUFjY2Vzc1ZhbGlkYXRvcihwYXJzZWRUZW1wbGF0ZSwgcmVnaW9uKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRvci52YWxpZGF0ZSgpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgdGV4dDogSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgIHRleHQ6IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNoZWNrczogW10sXG4gICAgICAgICAgICAgICAgc3VtbWFyeTogYEVycm9yIHBhcnNpbmcgdGVtcGxhdGU6ICR7ZXJyb3JNZXNzYWdlfWAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaXNFcnJvcjogdHJ1ZSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjb250ZW50OiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgdGV4dDogYFVua25vd24gdG9vbDogJHtyZXF1ZXN0LnBhcmFtcy5uYW1lfWAsXG4gICAgICB9LFxuICAgIF0sXG4gICAgaXNFcnJvcjogdHJ1ZSxcbiAgfTtcbn0pO1xuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICBjb25zdCB0cmFuc3BvcnQgPSBuZXcgU3RkaW9TZXJ2ZXJUcmFuc3BvcnQoKTtcbiAgYXdhaXQgc2VydmVyLmNvbm5lY3QodHJhbnNwb3J0KTtcbn1cblxubWFpbigpLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuIl19
package/src/index.ts CHANGED
File without changes
package/src/test.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};
package/src/test.js ADDED
@@ -0,0 +1,26 @@
1
+ import fs from 'fs';
2
+ import { ConsolePrivateAccessValidator } from './validator.js';
3
+ // Read the CloudFormation template
4
+ const templatePath = process.argv[2] || '/tmp/template.json';
5
+ const templateContent = fs.readFileSync(templatePath, 'utf-8');
6
+ const template = JSON.parse(templateContent);
7
+ // Run validation
8
+ const validator = new ConsolePrivateAccessValidator(template, 'us-east-1');
9
+ const result = validator.validate();
10
+ // Print results
11
+ console.log('\n=== AWS Console Private Access Validation Results ===\n');
12
+ console.log(`Valid: ${result.valid ? '✓ YES' : '✗ NO'}\n`);
13
+ console.log('Checks:');
14
+ result.checks.forEach((check) => {
15
+ const icon = check.status === 'pass' ? '✓' : check.status === 'fail' ? '✗' : '⚠';
16
+ console.log(` ${icon} ${check.name}`);
17
+ console.log(` Status: ${check.status}`);
18
+ console.log(` Message: ${check.message}`);
19
+ if (check.details) {
20
+ console.log(` Details: ${check.details}`);
21
+ }
22
+ });
23
+ console.log(`\nSummary: ${result.summary}\n`);
24
+ // Exit with appropriate code
25
+ process.exit(result.valid ? 0 : 1);
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9ELG1DQUFtQztBQUNuQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLG9CQUFvQixDQUFDO0FBQzdELE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9ELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFN0MsaUJBQWlCO0FBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksNkJBQTZCLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzNFLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUVwQyxnQkFBZ0I7QUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQywyREFBMkQsQ0FBQyxDQUFDO0FBQ3pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFFM0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2QixNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO0lBQzlCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNqRixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM3QyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFFSCxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7QUFFOUMsNkJBQTZCO0FBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBDb25zb2xlUHJpdmF0ZUFjY2Vzc1ZhbGlkYXRvciB9IGZyb20gJy4vdmFsaWRhdG9yLmpzJztcblxuLy8gUmVhZCB0aGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVcbmNvbnN0IHRlbXBsYXRlUGF0aCA9IHByb2Nlc3MuYXJndlsyXSB8fCAnL3RtcC90ZW1wbGF0ZS5qc29uJztcbmNvbnN0IHRlbXBsYXRlQ29udGVudCA9IGZzLnJlYWRGaWxlU3luYyh0ZW1wbGF0ZVBhdGgsICd1dGYtOCcpO1xuY29uc3QgdGVtcGxhdGUgPSBKU09OLnBhcnNlKHRlbXBsYXRlQ29udGVudCk7XG5cbi8vIFJ1biB2YWxpZGF0aW9uXG5jb25zdCB2YWxpZGF0b3IgPSBuZXcgQ29uc29sZVByaXZhdGVBY2Nlc3NWYWxpZGF0b3IodGVtcGxhdGUsICd1cy1lYXN0LTEnKTtcbmNvbnN0IHJlc3VsdCA9IHZhbGlkYXRvci52YWxpZGF0ZSgpO1xuXG4vLyBQcmludCByZXN1bHRzXG5jb25zb2xlLmxvZygnXFxuPT09IEFXUyBDb25zb2xlIFByaXZhdGUgQWNjZXNzIFZhbGlkYXRpb24gUmVzdWx0cyA9PT1cXG4nKTtcbmNvbnNvbGUubG9nKGBWYWxpZDogJHtyZXN1bHQudmFsaWQgPyAn4pyTIFlFUycgOiAn4pyXIE5PJ31cXG5gKTtcblxuY29uc29sZS5sb2coJ0NoZWNrczonKTtcbnJlc3VsdC5jaGVja3MuZm9yRWFjaCgoY2hlY2spID0+IHtcbiAgY29uc3QgaWNvbiA9IGNoZWNrLnN0YXR1cyA9PT0gJ3Bhc3MnID8gJ+KckycgOiBjaGVjay5zdGF0dXMgPT09ICdmYWlsJyA/ICfinJcnIDogJ+KaoCc7XG4gIGNvbnNvbGUubG9nKGAgICR7aWNvbn0gJHtjaGVjay5uYW1lfWApO1xuICBjb25zb2xlLmxvZyhgICAgIFN0YXR1czogJHtjaGVjay5zdGF0dXN9YCk7XG4gIGNvbnNvbGUubG9nKGAgICAgTWVzc2FnZTogJHtjaGVjay5tZXNzYWdlfWApO1xuICBpZiAoY2hlY2suZGV0YWlscykge1xuICAgIGNvbnNvbGUubG9nKGAgICAgRGV0YWlsczogJHtjaGVjay5kZXRhaWxzfWApO1xuICB9XG59KTtcblxuY29uc29sZS5sb2coYFxcblN1bW1hcnk6ICR7cmVzdWx0LnN1bW1hcnl9XFxuYCk7XG5cbi8vIEV4aXQgd2l0aCBhcHByb3ByaWF0ZSBjb2RlXG5wcm9jZXNzLmV4aXQocmVzdWx0LnZhbGlkID8gMCA6IDEpO1xuIl19
package/src/test.ts CHANGED
File without changes
package/src/types.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ export interface ValidationCheck {
2
+ name: string;
3
+ status: 'pass' | 'fail' | 'warning';
4
+ message: string;
5
+ details?: string;
6
+ }
7
+ export interface ValidationResult {
8
+ valid: boolean;
9
+ checks: ValidationCheck[];
10
+ summary: string;
11
+ }
12
+ export interface CloudFormationTemplate {
13
+ Resources?: Record<string, any>;
14
+ Outputs?: Record<string, any>;
15
+ Parameters?: Record<string, any>;
16
+ }
package/src/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uQ2hlY2sge1xuICBuYW1lOiBzdHJpbmc7XG4gIHN0YXR1czogJ3Bhc3MnIHwgJ2ZhaWwnIHwgJ3dhcm5pbmcnO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGRldGFpbHM/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvblJlc3VsdCB7XG4gIHZhbGlkOiBib29sZWFuO1xuICBjaGVja3M6IFZhbGlkYXRpb25DaGVja1tdO1xuICBzdW1tYXJ5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSB7XG4gIFJlc291cmNlcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIE91dHB1dHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBQYXJhbWV0ZXJzPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cbiJdfQ==
package/src/types.ts CHANGED
File without changes
@@ -0,0 +1,18 @@
1
+ import { ValidationResult, CloudFormationTemplate } from './types';
2
+ export declare class ConsolePrivateAccessValidator {
3
+ private template;
4
+ private region;
5
+ private checks;
6
+ constructor(template: CloudFormationTemplate, region?: string);
7
+ validate(): ValidationResult;
8
+ private getServiceName;
9
+ private checkVpcEndpoints;
10
+ private checkEndpointPolicies;
11
+ private validatePolicyContent;
12
+ private checkRoute53HostedZones;
13
+ private checkSecurityGroups;
14
+ private checkEc2Instance;
15
+ private checkNatGateway;
16
+ private checkNetworkConfiguration;
17
+ private generateSummary;
18
+ }
@@ -0,0 +1,236 @@
1
+ export class ConsolePrivateAccessValidator {
2
+ template;
3
+ region;
4
+ checks = [];
5
+ constructor(template, region = 'us-east-1') {
6
+ this.template = template;
7
+ this.region = region;
8
+ }
9
+ validate() {
10
+ this.checks = [];
11
+ this.checkVpcEndpoints();
12
+ this.checkEndpointPolicies();
13
+ this.checkRoute53HostedZones();
14
+ this.checkSecurityGroups();
15
+ this.checkEc2Instance();
16
+ this.checkNatGateway();
17
+ this.checkNetworkConfiguration();
18
+ const failCount = this.checks.filter(c => c.status === 'fail').length;
19
+ const valid = failCount === 0;
20
+ return {
21
+ valid,
22
+ checks: this.checks,
23
+ summary: this.generateSummary(valid, failCount),
24
+ };
25
+ }
26
+ getServiceName(serviceName) {
27
+ if (typeof serviceName === 'string') {
28
+ return serviceName;
29
+ }
30
+ if (serviceName?.['Fn::Join']) {
31
+ const parts = serviceName['Fn::Join'][1];
32
+ if (Array.isArray(parts)) {
33
+ // Handle Ref to AWS::Region by replacing with actual region
34
+ return parts
35
+ .map((part) => {
36
+ if (typeof part === 'string') {
37
+ return part;
38
+ }
39
+ if (part?.Ref === 'AWS::Region') {
40
+ return this.region;
41
+ }
42
+ return '';
43
+ })
44
+ .join('');
45
+ }
46
+ }
47
+ return null;
48
+ }
49
+ checkVpcEndpoints() {
50
+ const requiredEndpoints = [
51
+ { name: 'console', service: `com.amazonaws.${this.region}.console` },
52
+ { name: 'signin', service: `com.amazonaws.${this.region}.signin` },
53
+ { name: 'ssm', service: `com.amazonaws.${this.region}.ssm` },
54
+ { name: 'ec2messages', service: `com.amazonaws.${this.region}.ec2messages` },
55
+ { name: 'ssmmessages', service: `com.amazonaws.${this.region}.ssmmessages` },
56
+ ];
57
+ const resources = this.template.Resources || {};
58
+ const interfaceEndpoints = Object.values(resources).filter((r) => r.Type === 'AWS::EC2::VPCEndpoint' && r.Properties?.VpcEndpointType === 'Interface');
59
+ for (const endpoint of requiredEndpoints) {
60
+ const found = interfaceEndpoints.some((e) => {
61
+ const serviceName = this.getServiceName(e.Properties?.ServiceName);
62
+ return serviceName && serviceName.includes(endpoint.service);
63
+ });
64
+ this.checks.push({
65
+ name: `VPC Endpoint: ${endpoint.name}`,
66
+ status: found ? 'pass' : 'fail',
67
+ message: found
68
+ ? `Interface VPC endpoint for ${endpoint.name} found`
69
+ : `Missing interface VPC endpoint for ${endpoint.name}`,
70
+ });
71
+ }
72
+ // Check for S3 Gateway endpoint
73
+ const s3Gateway = Object.values(resources).some((r) => {
74
+ const serviceName = this.getServiceName(r.Properties?.ServiceName);
75
+ return (r.Type === 'AWS::EC2::VPCEndpoint' &&
76
+ r.Properties?.VpcEndpointType === 'Gateway' &&
77
+ serviceName &&
78
+ serviceName.includes('s3'));
79
+ });
80
+ this.checks.push({
81
+ name: 'VPC Endpoint: S3 Gateway',
82
+ status: s3Gateway ? 'pass' : 'fail',
83
+ message: s3Gateway ? 'S3 Gateway VPC endpoint found' : 'Missing S3 Gateway VPC endpoint',
84
+ });
85
+ }
86
+ checkEndpointPolicies() {
87
+ const resources = this.template.Resources || {};
88
+ const consoleEndpoint = Object.entries(resources).find(([_, r]) => {
89
+ const serviceName = this.getServiceName(r.Properties?.ServiceName);
90
+ return (r.Type === 'AWS::EC2::VPCEndpoint' &&
91
+ serviceName &&
92
+ serviceName.includes('console'));
93
+ });
94
+ const signinEndpoint = Object.entries(resources).find(([_, r]) => {
95
+ const serviceName = this.getServiceName(r.Properties?.ServiceName);
96
+ return (r.Type === 'AWS::EC2::VPCEndpoint' &&
97
+ serviceName &&
98
+ serviceName.includes('signin'));
99
+ });
100
+ for (const [name, endpoint] of [
101
+ ['Console', consoleEndpoint],
102
+ ['Signin', signinEndpoint],
103
+ ]) {
104
+ if (!endpoint)
105
+ continue;
106
+ const [_, resource] = endpoint;
107
+ const hasPolicy = resource.Properties?.PolicyDocument;
108
+ this.checks.push({
109
+ name: `Endpoint Policy: ${name}`,
110
+ status: hasPolicy ? 'pass' : 'fail',
111
+ message: hasPolicy
112
+ ? `${name} endpoint has a policy attached`
113
+ : `${name} endpoint is missing a policy`,
114
+ details: hasPolicy
115
+ ? this.validatePolicyContent(resource.Properties.PolicyDocument)
116
+ : undefined,
117
+ });
118
+ }
119
+ }
120
+ validatePolicyContent(policy) {
121
+ if (!policy.Statement || policy.Statement.length === 0) {
122
+ return 'Policy has no statements';
123
+ }
124
+ const statement = policy.Statement[0];
125
+ const hasAccountCondition = statement.Condition?.StringEquals?.['aws:PrincipalAccount'];
126
+ if (hasAccountCondition) {
127
+ return 'Policy restricts access to specific account(s)';
128
+ }
129
+ return 'Policy does not restrict access by account';
130
+ }
131
+ checkRoute53HostedZones() {
132
+ const resources = this.template.Resources || {};
133
+ const hostedZones = Object.values(resources).filter((r) => r.Type === 'AWS::Route53::HostedZone');
134
+ const requiredZones = ['console.aws.amazon.com', 'signin.aws.amazon.com'];
135
+ for (const zone of requiredZones) {
136
+ const found = hostedZones.some((hz) => {
137
+ const zoneName = hz.Properties?.Name;
138
+ // Route53 zone names may have a trailing dot
139
+ return zoneName === zone || zoneName === `${zone}.`;
140
+ });
141
+ this.checks.push({
142
+ name: `Route53 Hosted Zone: ${zone}`,
143
+ status: found ? 'pass' : 'fail',
144
+ message: found
145
+ ? `Private hosted zone for ${zone} found`
146
+ : `Missing private hosted zone for ${zone}`,
147
+ });
148
+ }
149
+ // Check for Route53 records
150
+ const recordSets = Object.values(resources).filter((r) => r.Type === 'AWS::Route53::RecordSet');
151
+ this.checks.push({
152
+ name: 'Route53 Records',
153
+ status: recordSets.length > 0 ? 'pass' : 'warning',
154
+ message: recordSets.length > 0
155
+ ? `Found ${recordSets.length} Route53 records`
156
+ : 'No Route53 records found',
157
+ });
158
+ }
159
+ checkSecurityGroups() {
160
+ const resources = this.template.Resources || {};
161
+ const securityGroups = Object.values(resources).filter((r) => r.Type === 'AWS::EC2::SecurityGroup');
162
+ const hasHttpsIngress = securityGroups.some((sg) => {
163
+ const ingress = sg.Properties?.SecurityGroupIngress || [];
164
+ return ingress.some((rule) => (rule.FromPort === 443 || rule.IpProtocol === 'tcp') &&
165
+ (rule.ToPort === 443 || rule.IpProtocol === 'tcp'));
166
+ });
167
+ this.checks.push({
168
+ name: 'Security Group: HTTPS Access',
169
+ status: hasHttpsIngress ? 'pass' : 'warning',
170
+ message: hasHttpsIngress
171
+ ? 'Security group allows HTTPS (port 443) traffic'
172
+ : 'No security group rule found for HTTPS (port 443)',
173
+ });
174
+ }
175
+ checkEc2Instance() {
176
+ const resources = this.template.Resources || {};
177
+ const instance = Object.values(resources).find((r) => r.Type === 'AWS::EC2::Instance');
178
+ this.checks.push({
179
+ name: 'EC2 Instance',
180
+ status: instance ? 'pass' : 'warning',
181
+ message: instance ? 'EC2 instance found' : 'No EC2 instance found (optional)',
182
+ });
183
+ if (instance) {
184
+ const hasIamRole = instance.Properties?.IamInstanceProfile;
185
+ this.checks.push({
186
+ name: 'EC2 IAM Role',
187
+ status: hasIamRole ? 'pass' : 'warning',
188
+ message: hasIamRole
189
+ ? 'EC2 instance has IAM instance profile'
190
+ : 'EC2 instance missing IAM instance profile',
191
+ });
192
+ }
193
+ }
194
+ checkNatGateway() {
195
+ const resources = this.template.Resources || {};
196
+ const natGateway = Object.values(resources).find((r) => r.Type === 'AWS::EC2::NatGateway');
197
+ this.checks.push({
198
+ name: 'NAT Gateway',
199
+ status: natGateway ? 'pass' : 'warning',
200
+ message: natGateway
201
+ ? 'NAT Gateway found for private subnet egress'
202
+ : 'No NAT Gateway found (required for private subnet internet access)',
203
+ });
204
+ }
205
+ checkNetworkConfiguration() {
206
+ const resources = this.template.Resources || {};
207
+ // Check for private subnets
208
+ const privateSubnets = Object.values(resources).filter((r) => r.Type === 'AWS::EC2::Subnet' &&
209
+ !r.Properties?.MapPublicIpOnLaunch);
210
+ this.checks.push({
211
+ name: 'Private Subnets',
212
+ status: privateSubnets.length > 0 ? 'pass' : 'fail',
213
+ message: privateSubnets.length > 0
214
+ ? `Found ${privateSubnets.length} private subnet(s)`
215
+ : 'No private subnets found',
216
+ });
217
+ // Check for route tables
218
+ const routeTables = Object.values(resources).filter((r) => r.Type === 'AWS::EC2::RouteTable');
219
+ this.checks.push({
220
+ name: 'Route Tables',
221
+ status: routeTables.length > 0 ? 'pass' : 'warning',
222
+ message: routeTables.length > 0
223
+ ? `Found ${routeTables.length} route table(s)`
224
+ : 'No route tables found',
225
+ });
226
+ }
227
+ generateSummary(valid, failCount) {
228
+ const passCount = this.checks.filter(c => c.status === 'pass').length;
229
+ const warningCount = this.checks.filter(c => c.status === 'warning').length;
230
+ if (valid) {
231
+ return `✓ Validation passed. All required checks passed (${passCount} passed, ${warningCount} warnings).`;
232
+ }
233
+ return `✗ Validation failed. ${failCount} check(s) failed, ${passCount} passed, ${warningCount} warnings.`;
234
+ }
235
+ }
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyw2QkFBNkI7SUFDaEMsUUFBUSxDQUF5QjtJQUNqQyxNQUFNLENBQVM7SUFDZixNQUFNLEdBQXNCLEVBQUUsQ0FBQztJQUV2QyxZQUFZLFFBQWdDLEVBQUUsU0FBaUIsV0FBVztRQUN4RSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUVqQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3RFLE1BQU0sS0FBSyxHQUFHLFNBQVMsS0FBSyxDQUFDLENBQUM7UUFFOUIsT0FBTztZQUNMLEtBQUs7WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQztTQUNoRCxDQUFDO0lBQ0osQ0FBQztJQUVPLGNBQWMsQ0FBQyxXQUFnQjtRQUNyQyxJQUFJLE9BQU8sV0FBVyxL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QVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBRTVFLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixPQUFPLG9EQUFvRCxTQUFTLFlBQVksWUFBWSxhQUFhLENBQUM7UUFDNUcsQ0FBQztRQUVELE9BQU8sd0JBQXdCLFNBQVMscUJBQXFCLFNBQVMsWUFBWSxZQUFZLFlBQVksQ0FBQztJQUM3RyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWxpZGF0aW9uQ2hlY2ssIFZhbGlkYXRpb25SZXN1bHQsIENsb3VkRm9ybWF0aW9uVGVtcGxhdGUgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIENvbnNvbGVQcml2YXRlQWNjZXNzVmFsaWRhdG9yIHtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZTogQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZTtcbiAgcHJpdmF0ZSByZWdpb246IHN0cmluZztcbiAgcHJpdmF0ZSBjaGVja3M6IFZhbGlkYXRpb25DaGVja1tdID0gW107XG5cbiAgY29uc3RydWN0b3IodGVtcGxhdGU6IENsb3VkRm9ybWF0aW9uVGVtcGxhdGUsIHJlZ2lvbjogc3RyaW5nID0gJ3VzLWVhc3QtMScpIHtcbiAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgdGhpcy5yZWdpb24gPSByZWdpb247XG4gIH1cblxuICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgICB0aGlzLmNoZWNrcyA9IFtdO1xuXG4gICAgdGhpcy5jaGVja1ZwY0VuZHBvaW50cygpO1xuICAgIHRoaXMuY2hlY2tFbmRwb2ludFBvbGljaWVzKCk7XG4gICAgdGhpcy5jaGVja1JvdXRlNTNIb3N0ZWRab25lcygpO1xuICAgIHRoaXMuY2hlY2tTZWN1cml0eUdyb3VwcygpO1xuICAgIHRoaXMuY2hlY2tFYzJJbnN0YW5jZSgpO1xuICAgIHRoaXMuY2hlY2tOYXRHYXRld2F5KCk7XG4gICAgdGhpcy5jaGVja05ldHdvcmtDb25maWd1cmF0aW9uKCk7XG5cbiAgICBjb25zdCBmYWlsQ291bnQgPSB0aGlzLmNoZWNrcy5maWx0ZXIoYyA9PiBjLnN0YXR1cyA9PT0gJ2ZhaWwnKS5sZW5ndGg7XG4gICAgY29uc3QgdmFsaWQgPSBmYWlsQ291bnQgPT09IDA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsaWQsXG4gICAgICBjaGVja3M6IHRoaXMuY2hlY2tzLFxuICAgICAgc3VtbWFyeTogdGhpcy5nZW5lcmF0ZVN1bW1hcnkodmFsaWQsIGZhaWxDb3VudCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VydmljZU5hbWUoc2VydmljZU5hbWU6IGFueSk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0eXBlb2Ygc2VydmljZU5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gc2VydmljZU5hbWU7XG4gICAgfVxuICAgIGlmIChzZXJ2aWNlTmFtZT8uWydGbjo6Sm9pbiddKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IHNlcnZpY2VOYW1lWydGbjo6Sm9pbiddWzFdO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGFydHMpKSB7XG4gICAgICAgIC8vIEhhbmRsZSBSZWYgdG8gQVdTOjpSZWdpb24gYnkgcmVwbGFjaW5nIHdpdGggYWN0dWFsIHJlZ2lvblxuICAgICAgICByZXR1cm4gcGFydHNcbiAgICAgICAgICAubWFwKChwYXJ0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHBhcnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFydD8uUmVmID09PSAnQVdTOjpSZWdpb24nKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlZ2lvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5qb2luKCcnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrVnBjRW5kcG9pbnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlcXVpcmVkRW5kcG9pbnRzID0gW1xuICAgICAgeyBuYW1lOiAnY29uc29sZScsIHNlcnZpY2U6IGBjb20uYW1hem9uYXdzLiR7dGhpcy5yZWdpb259LmNvbnNvbGVgIH0sXG4gICAgICB7IG5hbWU6ICdzaWduaW4nLCBzZXJ2aWNlOiBgY29tLmFtYXpvbmF3cy4ke3RoaXMucmVnaW9ufS5zaWduaW5gIH0sXG4gICAgICB7IG5hbWU6ICdzc20nLCBzZXJ2aWNlOiBgY29tLmFtYXpvbmF3cy4ke3RoaXMucmVnaW9ufS5zc21gIH0sXG4gICAgICB7IG5hbWU6ICdlYzJtZXNzYWdlcycsIHNlcnZpY2U6IGBjb20uYW1hem9uYXdzLiR7dGhpcy5yZWdpb259LmVjMm1lc3NhZ2VzYCB9LFxuICAgICAgeyBuYW1lOiAnc3NtbWVzc2FnZXMnLCBzZXJ2aWNlOiBgY29tLmFtYXpvbmF3cy4ke3RoaXMucmVnaW9ufS5zc21tZXNzYWdlc2AgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy50ZW1wbGF0ZS5SZXNvdXJjZXMgfHwge307XG4gICAgY29uc3QgaW50ZXJmYWNlRW5kcG9pbnRzID0gT2JqZWN0LnZhbHVlcyhyZXNvdXJjZXMpLmZpbHRlcihcbiAgICAgIChyOiBhbnkpID0+IHIuVHlwZSA9PT0gJ0FXUzo6RUMyOjpWUENFbmRwb2ludCcgJiYgci5Qcm9wZXJ0aWVzPy5WcGNFbmRwb2ludFR5cGUgPT09ICdJbnRlcmZhY2UnXG4gICAgKTtcblxuICAgIGZvciAoY29uc3QgZW5kcG9pbnQgb2YgcmVxdWlyZWRFbmRwb2ludHMpIHtcbiAgICAgIGNvbnN0IGZvdW5kID0gaW50ZXJmYWNlRW5kcG9pbnRzLnNvbWUoKGU6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBzZXJ2aWNlTmFtZSA9IHRoaXMuZ2V0U2VydmljZU5hbWUoZS5Qcm9wZXJ0aWVzPy5TZXJ2aWNlTmFtZSk7XG4gICAgICAgIHJldHVybiBzZXJ2aWNlTmFtZSAmJiBzZXJ2aWNlTmFtZS5pbmNsdWRlcyhlbmRwb2ludC5zZXJ2aWNlKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNoZWNrcy5wdXNoKHtcbiAgICAgICAgbmFtZTogYFZQQyBFbmRwb2ludDogJHtlbmRwb2ludC5uYW1lfWAsXG4gICAgICAgIHN0YXR1czogZm91bmQgPyAncGFzcycgOiAnZmFpbCcsXG4gICAgICAgIG1lc3NhZ2U6IGZvdW5kXG4gICAgICAgICAgPyBgSW50ZXJmYWNlIFZQQyBlbmRwb2ludCBmb3IgJHtlbmRwb2ludC5uYW1lfSBmb3VuZGBcbiAgICAgICAgICA6IGBNaXNzaW5nIGludGVyZmFjZSBWUEMgZW5kcG9pbnQgZm9yICR7ZW5kcG9pbnQubmFtZX1gLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIFMzIEdhdGV3YXkgZW5kcG9pbnRcbiAgICBjb25zdCBzM0dhdGV3YXkgPSBPYmplY3QudmFsdWVzKHJlc291cmNlcykuc29tZShcbiAgICAgIChyOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3Qgc2VydmljZU5hbWUgPSB0aGlzLmdldFNlcnZpY2VOYW1lKHIuUHJvcGVydGllcz8uU2VydmljZU5hbWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHIuVHlwZSA9PT0gJ0FXUzo6RUMyOjpWUENFbmRwb2ludCcgJiZcbiAgICAgICAgICByLlByb3BlcnRpZXM/LlZwY0VuZHBvaW50VHlwZSA9PT0gJ0dhdGV3YXknICYmXG4gICAgICAgICAgc2VydmljZU5hbWUgJiZcbiAgICAgICAgICBzZXJ2aWNlTmFtZS5pbmNsdWRlcygnczMnKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLmNoZWNrcy5wdXNoKHtcbiAgICAgIG5hbWU6ICdWUEMgRW5kcG9pbnQ6IFMzIEdhdGV3YXknLFxuICAgICAgc3RhdHVzOiBzM0dhdGV3YXkgPyAncGFzcycgOiAnZmFpbCcsXG4gICAgICBtZXNzYWdlOiBzM0dhdGV3YXkgPyAnUzMgR2F0ZXdheSBWUEMgZW5kcG9pbnQgZm91bmQnIDogJ01pc3NpbmcgUzMgR2F0ZXdheSBWUEMgZW5kcG9pbnQnLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0VuZHBvaW50UG9saWNpZXMoKTogdm9pZCB7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy50ZW1wbGF0ZS5SZXNvdXJjZXMgfHwge307XG4gICAgY29uc3QgY29uc29sZUVuZHBvaW50ID0gT2JqZWN0LmVudHJpZXMocmVzb3VyY2VzKS5maW5kKFxuICAgICAgKFtfLCByXTogW3N0cmluZywgYW55XSkgPT4ge1xuICAgICAgICBjb25zdCBzZXJ2aWNlTmFtZSA9IHRoaXMuZ2V0U2VydmljZU5hbWUoci5Qcm9wZXJ0aWVzPy5TZXJ2aWNlTmFtZSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgci5UeXBlID09PSAnQVdTOjpFQzI6OlZQQ0VuZHBvaW50JyAmJlxuICAgICAgICAgIHNlcnZpY2VOYW1lICYmXG4gICAgICAgICAgc2VydmljZU5hbWUuaW5jbHVkZXMoJ2NvbnNvbGUnKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBzaWduaW5FbmRwb2ludCA9IE9iamVjdC5lbnRyaWVzKHJlc291cmNlcykuZmluZChcbiAgICAgIChbXywgcl06IFtzdHJpbmcsIGFueV0pID0+IHtcbiAgICAgICAgY29uc3Qgc2VydmljZU5hbWUgPSB0aGlzLmdldFNlcnZpY2VOYW1lKHIuUHJvcGVydGllcz8uU2VydmljZU5hbWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHIuVHlwZSA9PT0gJ0FXUzo6RUMyOjpWUENFbmRwb2ludCcgJiZcbiAgICAgICAgICBzZXJ2aWNlTmFtZSAmJlxuICAgICAgICAgIHNlcnZpY2VOYW1lLmluY2x1ZGVzKCdzaWduaW4nKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBlbmRwb2ludF0gb2YgW1xuICAgICAgWydDb25zb2xlJywgY29uc29sZUVuZHBvaW50XSxcbiAgICAgIFsnU2lnbmluJywgc2lnbmluRW5kcG9pbnRdLFxuICAgIF0pIHtcbiAgICAgIGlmICghZW5kcG9pbnQpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCBbXywgcmVzb3VyY2VdID0gZW5kcG9pbnQgYXMgW3N0cmluZywgYW55XTtcbiAgICAgIGNvbnN0IGhhc1BvbGljeSA9IHJlc291cmNlLlByb3BlcnRpZXM/LlBvbGljeURvY3VtZW50O1xuXG4gICAgICB0aGlzLmNoZWNrcy5wdXNoKHtcbiAgICAgICAgbmFtZTogYEVuZHBvaW50IFBvbGljeTogJHtuYW1lfWAsXG4gICAgICAgIHN0YXR1czogaGFzUG9saWN5ID8gJ3Bhc3MnIDogJ2ZhaWwnLFxuICAgICAgICBtZXNzYWdlOiBoYXNQb2xpY3lcbiAgICAgICAgICA/IGAke25hbWV9IGVuZHBvaW50IGhhcyBhIHBvbGljeSBhdHRhY2hlZGBcbiAgICAgICAgICA6IGAke25hbWV9IGVuZHBvaW50IGlzIG1pc3NpbmcgYSBwb2xpY3lgLFxuICAgICAgICBkZXRhaWxzOiBoYXNQb2xpY3lcbiAgICAgICAgICA/IHRoaXMudmFsaWRhdGVQb2xpY3lDb250ZW50KHJlc291cmNlLlByb3BlcnRpZXMuUG9saWN5RG9jdW1lbnQpXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlUG9saWN5Q29udGVudChwb2xpY3k6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCFwb2xpY3kuU3RhdGVtZW50IHx8IHBvbGljeS5TdGF0ZW1lbnQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gJ1BvbGljeSBoYXMgbm8gc3RhdGVtZW50cyc7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gcG9saWN5LlN0YXRlbWVudFswXTtcbiAgICBjb25zdCBoYXNBY2NvdW50Q29uZGl0aW9uID0gc3RhdGVtZW50LkNvbmRpdGlvbj8uU3RyaW5nRXF1YWxzPy5bJ2F3czpQcmluY2lwYWxBY2NvdW50J107XG5cbiAgICBpZiAoaGFzQWNjb3VudENvbmRpdGlvbikge1xuICAgICAgcmV0dXJuICdQb2xpY3kgcmVzdHJpY3RzIGFjY2VzcyB0byBzcGVjaWZpYyBhY2NvdW50KHMpJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ1BvbGljeSBkb2VzIG5vdCByZXN0cmljdCBhY2Nlc3MgYnkgYWNjb3VudCc7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrUm91dGU1M0hvc3RlZFpvbmVzKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlc291cmNlcyA9IHRoaXMudGVtcGxhdGUuUmVzb3VyY2VzIHx8IHt9O1xuICAgIGNvbnN0IGhvc3RlZFpvbmVzID0gT2JqZWN0LnZhbHVlcyhyZXNvdXJjZXMpLmZpbHRlcihcbiAgICAgIChyOiBhbnkpID0+IHIuVHlwZSA9PT0gJ0FXUzo6Um91dGU1Mzo6SG9zdGVkWm9uZSdcbiAgICApO1xuXG4gICAgY29uc3QgcmVxdWlyZWRab25lcyA9IFsnY29uc29sZS5hd3MuYW1hem9uLmNvbScsICdzaWduaW4uYXdzLmFtYXpvbi5jb20nXTtcblxuICAgIGZvciAoY29uc3Qgem9uZSBvZiByZXF1aXJlZFpvbmVzKSB7XG4gICAgICBjb25zdCBmb3VuZCA9IGhvc3RlZFpvbmVzLnNvbWUoKGh6OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3Qgem9uZU5hbWUgPSBoei5Qcm9wZXJ0aWVzPy5OYW1lO1xuICAgICAgICAvLyBSb3V0ZTUzIHpvbmUgbmFtZXMgbWF5IGhhdmUgYSB0cmFpbGluZyBkb3RcbiAgICAgICAgcmV0dXJuIHpvbmVOYW1lID09PSB6b25lIHx8IHpvbmVOYW1lID09PSBgJHt6b25lfS5gO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuY2hlY2tzLnB1c2goe1xuICAgICAgICBuYW1lOiBgUm91dGU1MyBIb3N0ZWQgWm9uZTogJHt6b25lfWAsXG4gICAgICAgIHN0YXR1czogZm91bmQgPyAncGFzcycgOiAnZmFpbCcsXG4gICAgICAgIG1lc3NhZ2U6IGZvdW5kXG4gICAgICAgICAgPyBgUHJpdmF0ZSBob3N0ZWQgem9uZSBmb3IgJHt6b25lfSBmb3VuZGBcbiAgICAgICAgICA6IGBNaXNzaW5nIHByaXZhdGUgaG9zdGVkIHpvbmUgZm9yICR7em9uZX1gLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIFJvdXRlNTMgcmVjb3Jkc1xuICAgIGNvbnN0IHJlY29yZFNldHMgPSBPYmplY3QudmFsdWVzKHJlc291cmNlcykuZmlsdGVyKFxuICAgICAgKHI6IGFueSkgPT4gci5UeXBlID09PSAnQVdTOjpSb3V0ZTUzOjpSZWNvcmRTZXQnXG4gICAgKTtcblxuICAgIHRoaXMuY2hlY2tzLnB1c2goe1xuICAgICAgbmFtZTogJ1JvdXRlNTMgUmVjb3JkcycsXG4gICAgICBzdGF0dXM6IHJlY29yZFNldHMubGVuZ3RoID4gMCA/ICdwYXNzJyA6ICd3YXJuaW5nJyxcbiAgICAgIG1lc3NhZ2U6XG4gICAgICAgIHJlY29yZFNldHMubGVuZ3RoID4gMFxuICAgICAgICAgID8gYEZvdW5kICR7cmVjb3JkU2V0cy5sZW5ndGh9IFJvdXRlNTMgcmVjb3Jkc2BcbiAgICAgICAgICA6ICdObyBSb3V0ZTUzIHJlY29yZHMgZm91bmQnLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1NlY3VyaXR5R3JvdXBzKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlc291cmNlcyA9IHRoaXMudGVtcGxhdGUuUmVzb3VyY2VzIHx8IHt9O1xuICAgIGNvbnN0IHNlY3VyaXR5R3JvdXBzID0gT2JqZWN0LnZhbHVlcyhyZXNvdXJjZXMpLmZpbHRlcihcbiAgICAgIChyOiBhbnkpID0+IHIuVHlwZSA9PT0gJ0FXUzo6RUMyOjpTZWN1cml0eUdyb3VwJ1xuICAgICk7XG5cbiAgICBjb25zdCBoYXNIdHRwc0luZ3Jlc3MgPSBzZWN1cml0eUdyb3Vwcy5zb21lKChzZzogYW55KSA9PiB7XG4gICAgICBjb25zdCBpbmdyZXNzID0gc2cuUHJvcGVydGllcz8uU2VjdXJpdHlHcm91cEluZ3Jlc3MgfHwgW107XG4gICAgICByZXR1cm4gaW5ncmVzcy5zb21lKFxuICAgICAgICAocnVsZTogYW55KSA9PlxuICAgICAgICAgIChydWxlLkZyb21Qb3J0ID09PSA0NDMgfHwgcnVsZS5JcFByb3RvY29sID09PSAndGNwJykgJiZcbiAgICAgICAgICAocnVsZS5Ub1BvcnQgPT09IDQ0MyB8fCBydWxlLklwUHJvdG9jb2wgPT09ICd0Y3AnKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2hlY2tzLnB1c2goe1xuICAgICAgbmFtZTogJ1NlY3VyaXR5IEdyb3VwOiBIVFRQUyBBY2Nlc3MnLFxuICAgICAgc3RhdHVzOiBoYXNIdHRwc0luZ3Jlc3MgPyAncGFzcycgOiAnd2FybmluZycsXG4gICAgICBtZXNzYWdlOiBoYXNIdHRwc0luZ3Jlc3NcbiAgICAgICAgPyAnU2VjdXJpdHkgZ3JvdXAgYWxsb3dzIEhUVFBTIChwb3J0IDQ0MykgdHJhZmZpYydcbiAgICAgICAgOiAnTm8gc2VjdXJpdHkgZ3JvdXAgcnVsZSBmb3VuZCBmb3IgSFRUUFMgKHBvcnQgNDQzKScsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRWMySW5zdGFuY2UoKTogdm9pZCB7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy50ZW1wbGF0ZS5SZXNvdXJjZXMgfHwge307XG4gICAgY29uc3QgaW5zdGFuY2UgPSBPYmplY3QudmFsdWVzKHJlc291cmNlcykuZmluZCgocjogYW55KSA9PiByLlR5cGUgPT09ICdBV1M6OkVDMjo6SW5zdGFuY2UnKTtcblxuICAgIHRoaXMuY2hlY2tzLnB1c2goe1xuICAgICAgbmFtZTogJ0VDMiBJbnN0YW5jZScsXG4gICAgICBzdGF0dXM6IGluc3RhbmNlID8gJ3Bhc3MnIDogJ3dhcm5pbmcnLFxuICAgICAgbWVzc2FnZTogaW5zdGFuY2UgPyAnRUMyIGluc3RhbmNlIGZvdW5kJyA6ICdObyBFQzIgaW5zdGFuY2UgZm91bmQgKG9wdGlvbmFsKScsXG4gICAgfSk7XG5cbiAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgIGNvbnN0IGhhc0lhbVJvbGUgPSAoaW5zdGFuY2UgYXMgYW55KS5Qcm9wZXJ0aWVzPy5JYW1JbnN0YW5jZVByb2ZpbGU7XG4gICAgICB0aGlzLmNoZWNrcy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ0VDMiBJQU0gUm9sZScsXG4gICAgICAgIHN0YXR1czogaGFzSWFtUm9sZSA/ICdwYXNzJyA6ICd3YXJuaW5nJyxcbiAgICAgICAgbWVzc2FnZTogaGFzSWFtUm9sZVxuICAgICAgICAgID8gJ0VDMiBpbnN0YW5jZSBoYXMgSUFNIGluc3RhbmNlIHByb2ZpbGUnXG4gICAgICAgICAgOiAnRUMyIGluc3RhbmNlIG1pc3NpbmcgSUFNIGluc3RhbmNlIHByb2ZpbGUnLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja05hdEdhdGV3YXkoKTogdm9pZCB7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy50ZW1wbGF0ZS5SZXNvdXJjZXMgfHwge307XG4gICAgY29uc3QgbmF0R2F0ZXdheSA9IE9iamVjdC52YWx1ZXMocmVzb3VyY2VzKS5maW5kKChyOiBhbnkpID0+IHIuVHlwZSA9PT0gJ0FXUzo6RUMyOjpOYXRHYXRld2F5Jyk7XG5cbiAgICB0aGlzLmNoZWNrcy5wdXNoKHtcbiAgICAgIG5hbWU6ICdOQVQgR2F0ZXdheScsXG4gICAgICBzdGF0dXM6IG5hdEdhdGV3YXkgPyAncGFzcycgOiAnd2FybmluZycsXG4gICAgICBtZXNzYWdlOiBuYXRHYXRld2F5XG4gICAgICAgID8gJ05BVCBHYXRld2F5IGZvdW5kIGZvciBwcml2YXRlIHN1Ym5ldCBlZ3Jlc3MnXG4gICAgICAgIDogJ05vIE5BVCBHYXRld2F5IGZvdW5kIChyZXF1aXJlZCBmb3IgcHJpdmF0ZSBzdWJuZXQgaW50ZXJuZXQgYWNjZXNzKScsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrTmV0d29ya0NvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy50ZW1wbGF0ZS5SZXNvdXJjZXMgfHwge307XG5cbiAgICAvLyBDaGVjayBmb3IgcHJpdmF0ZSBzdWJuZXRzXG4gICAgY29uc3QgcHJpdmF0ZVN1Ym5ldHMgPSBPYmplY3QudmFsdWVzKHJlc291cmNlcykuZmlsdGVyKFxuICAgICAgKHI6IGFueSkgPT5cbiAgICAgICAgci5UeXBlID09PSAnQVdTOjpFQzI6OlN1Ym5ldCcgJiZcbiAgICAgICAgIXIuUHJvcGVydGllcz8uTWFwUHVibGljSXBPbkxhdW5jaFxuICAgICk7XG5cbiAgICB0aGlzLmNoZWNrcy5wdXNoKHtcbiAgICAgIG5hbWU6ICdQcml2YXRlIFN1Ym5ldHMnLFxuICAgICAgc3RhdHVzOiBwcml2YXRlU3VibmV0cy5sZW5ndGggPiAwID8gJ3Bhc3MnIDogJ2ZhaWwnLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgcHJpdmF0ZVN1Ym5ldHMubGVuZ3RoID4gMFxuICAgICAgICAgID8gYEZvdW5kICR7cHJpdmF0ZVN1Ym5ldHMubGVuZ3RofSBwcml2YXRlIHN1Ym5ldChzKWBcbiAgICAgICAgICA6ICdObyBwcml2YXRlIHN1Ym5ldHMgZm91bmQnLFxuICAgIH0pO1xuXG4gICAgLy8gQ2hlY2sgZm9yIHJvdXRlIHRhYmxlc1xuICAgIGNvbnN0IHJvdXRlVGFibGVzID0gT2JqZWN0LnZhbHVlcyhyZXNvdXJjZXMpLmZpbHRlcihcbiAgICAgIChyOiBhbnkpID0+IHIuVHlwZSA9PT0gJ0FXUzo6RUMyOjpSb3V0ZVRhYmxlJ1xuICAgICk7XG5cbiAgICB0aGlzLmNoZWNrcy5wdXNoKHtcbiAgICAgIG5hbWU6ICdSb3V0ZSBUYWJsZXMnLFxuICAgICAgc3RhdHVzOiByb3V0ZVRhYmxlcy5sZW5ndGggPiAwID8gJ3Bhc3MnIDogJ3dhcm5pbmcnLFxuICAgICAgbWVzc2FnZTpcbiAgICAgICAgcm91dGVUYWJsZXMubGVuZ3RoID4gMFxuICAgICAgICAgID8gYEZvdW5kICR7cm91dGVUYWJsZXMubGVuZ3RofSByb3V0ZSB0YWJsZShzKWBcbiAgICAgICAgICA6ICdObyByb3V0ZSB0YWJsZXMgZm91bmQnLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVN1bW1hcnkodmFsaWQ6IGJvb2xlYW4sIGZhaWxDb3VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXNzQ291bnQgPSB0aGlzLmNoZWNrcy5maWx0ZXIoYyA9PiBjLnN0YXR1cyA9PT0gJ3Bhc3MnKS5sZW5ndGg7XG4gICAgY29uc3Qgd2FybmluZ0NvdW50ID0gdGhpcy5jaGVja3MuZmlsdGVyKGMgPT4gYy5zdGF0dXMgPT09ICd3YXJuaW5nJykubGVuZ3RoO1xuXG4gICAgaWYgKHZhbGlkKSB7XG4gICAgICByZXR1cm4gYOKckyBWYWxpZGF0aW9uIHBhc3NlZC4gQWxsIHJlcXVpcmVkIGNoZWNrcyBwYXNzZWQgKCR7cGFzc0NvdW50fSBwYXNzZWQsICR7d2FybmluZ0NvdW50fSB3YXJuaW5ncykuYDtcbiAgICB9XG5cbiAgICByZXR1cm4gYOKclyBWYWxpZGF0aW9uIGZhaWxlZC4gJHtmYWlsQ291bnR9IGNoZWNrKHMpIGZhaWxlZCwgJHtwYXNzQ291bnR9IHBhc3NlZCwgJHt3YXJuaW5nQ291bnR9IHdhcm5pbmdzLmA7XG4gIH1cbn1cbiJdfQ==
package/src/validator.ts CHANGED
File without changes
package/tsconfig.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "target": "ES2020",
4
- "module": "esnext",
5
- "lib": ["ES2020"],
3
+ "target": "ES2022",
4
+ "module": "ES2022",
5
+ "lib": ["ES2022"],
6
6
  "outDir": "./dist",
7
7
  "rootDir": "./src",
8
8
  "strict": true,