@inizioevoke/evosynth 1.8.1 → 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/dist/cli/cli.d.ts +2 -0
- package/dist/cli/cli.js +23 -0
- package/dist/cli/evosynth.d.ts +17 -0
- package/dist/cli/evosynth.js +61 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/web-static-serverless.d.ts +52 -0
- package/dist/cli/web-static-serverless.js +73 -0
- package/dist/constructs/codebuild.d.ts +13 -5
- package/dist/constructs/codebuild.js +21 -6
- package/dist/constructs/codepipeline.js +4 -3
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -2
- package/dist/stacks/web-static-serverless/web-global-stack.d.ts +3 -7
- package/dist/stacks/web-static-serverless/web-global-stack.js +2 -1
- package/dist/types.d.ts +16 -1
- package/package.json +9 -2
- package/readme.md +1 -1
- package/samples/app.ts +1 -1
- package/src/cli/cli.ts +29 -0
- package/src/cli/evosynth.ts +72 -0
- package/src/cli/index.ts +2 -0
- package/src/cli/web-static-serverless.ts +130 -0
- package/src/constructs/codebuild.ts +52 -9
- package/src/constructs/codepipeline.ts +3 -2
- package/src/index.ts +2 -1
- package/src/stacks/web-static-serverless/web-global-stack.ts +3 -13
- package/src/types.d.ts +16 -1
package/dist/cli/cli.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { program } from 'commander';
|
|
3
|
+
import { evosynth } from './evosynth.js';
|
|
4
|
+
program
|
|
5
|
+
.name('evosynth')
|
|
6
|
+
.description('CDK utility')
|
|
7
|
+
.version('2.0.0')
|
|
8
|
+
.option('--profile <profile>', 'The AWS profile');
|
|
9
|
+
// program
|
|
10
|
+
// .command('bootstrap')
|
|
11
|
+
// .action(bootstrap);
|
|
12
|
+
['deploy', 'destroy', 'diff', 'drift', 'rollback', 'synth']
|
|
13
|
+
.forEach((cmd) => {
|
|
14
|
+
program.command(`${cmd} <env>`).action(action);
|
|
15
|
+
});
|
|
16
|
+
program.parse();
|
|
17
|
+
// async function bootstrap(options: Record<string, string>, command: Command) {
|
|
18
|
+
// await evosynth('bootstrap', )
|
|
19
|
+
// }
|
|
20
|
+
async function action(env, options, command) {
|
|
21
|
+
await evosynth(command.name(), env, program.opts());
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBVyxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBNkIsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTztLQUNKLElBQUksQ0FBQyxVQUFVLENBQUM7S0FDaEIsV0FBVyxDQUFDLGFBQWEsQ0FBQztLQUMxQixPQUFPLENBQUMsT0FBTyxDQUFDO0tBQ2hCLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0FBR3BELFVBQVU7QUFDViwwQkFBMEI7QUFDMUIsd0JBQXdCO0FBRVQsQ0FBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE9BQU8sQ0FBRTtLQUNuRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtJQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqRCxDQUFDLENBQUMsQ0FBQztBQUVMLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUVoQixnRkFBZ0Y7QUFDaEYsa0NBQWtDO0FBQ2xDLElBQUk7QUFDSixLQUFLLFVBQVUsTUFBTSxDQUFDLEdBQVcsRUFBRSxPQUErQixFQUFFLE9BQWdCO0lBQ2xGLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQWdCLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQW1CLENBQUMsQ0FBQztBQUNyRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5pbXBvcnQgeyBDb21tYW5kLCBwcm9ncmFtIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGV2b3N5bnRoLCBFdm9zeW50aFByb3BzLCBDZGtDb21tYW5kIH0gZnJvbSAnLi9ldm9zeW50aC5qcyc7XG5cbnByb2dyYW1cbiAgLm5hbWUoJ2V2b3N5bnRoJylcbiAgLmRlc2NyaXB0aW9uKCdDREsgdXRpbGl0eScpXG4gIC52ZXJzaW9uKCcyLjAuMCcpXG4gIC5vcHRpb24oJy0tcHJvZmlsZSA8cHJvZmlsZT4nLCAnVGhlIEFXUyBwcm9maWxlJyk7XG5cblxuLy8gcHJvZ3JhbVxuLy8gICAuY29tbWFuZCgnYm9vdHN0cmFwJylcbi8vICAgLmFjdGlvbihib290c3RyYXApO1xuXG4oPENka0NvbW1hbmRbXT5bJ2RlcGxveScsJ2Rlc3Ryb3knLCdkaWZmJywnZHJpZnQnLCdyb2xsYmFjaycsJ3N5bnRoJ10pXG4gIC5mb3JFYWNoKChjbWQpID0+IHtcbiAgICBwcm9ncmFtLmNvbW1hbmQoYCR7Y21kfSA8ZW52PmApLmFjdGlvbihhY3Rpb24pO1xuICB9KTtcblxucHJvZ3JhbS5wYXJzZSgpO1xuXG4vLyBhc3luYyBmdW5jdGlvbiBib290c3RyYXAob3B0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgY29tbWFuZDogQ29tbWFuZCkge1xuLy8gICBhd2FpdCBldm9zeW50aCgnYm9vdHN0cmFwJywgKVxuLy8gfVxuYXN5bmMgZnVuY3Rpb24gYWN0aW9uKGVudjogc3RyaW5nLCBvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBjb21tYW5kOiBDb21tYW5kKSB7XG4gIGF3YWl0IGV2b3N5bnRoKGNvbW1hbmQubmFtZSgpIGFzIENka0NvbW1hbmQsIGVudiwgcHJvZ3JhbS5vcHRzKCkgYXMgRXZvc3ludGhQcm9wcyk7XG59XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { EvosynthTagKey } from '../types.js';
|
|
2
|
+
import { WebStaticServerlessAppConfig } from './web-static-serverless.js';
|
|
3
|
+
export { WebStaticServerlessAppConfig };
|
|
4
|
+
export type EnvironmentType = 'dev' | 'test' | 'stage' | 'uat' | 'preprod' | 'prod' | (string & {});
|
|
5
|
+
export type CdkCommand = 'deploy' | 'destroy' | 'diff' | 'drift' | 'rollback' | 'synth';
|
|
6
|
+
export type EvosynthAppType = 'str8r-clm' | 'web-static-serverless';
|
|
7
|
+
export interface EvosynthAppConfig {
|
|
8
|
+
type: EvosynthAppType;
|
|
9
|
+
envType?: EnvironmentType;
|
|
10
|
+
name: string;
|
|
11
|
+
region: 'us-east-1' | 'us-east-2' | 'us-west-1' | 'us-west-2' | (string & {});
|
|
12
|
+
tags?: Record<EvosynthTagKey, string>;
|
|
13
|
+
}
|
|
14
|
+
export interface EvosynthProps {
|
|
15
|
+
profile?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function evosynth(cmd: CdkCommand, env: string, props: EvosynthProps): Promise<void>;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
import { readdir } from 'node:fs/promises';
|
|
10
|
+
import { join } from 'node:path';
|
|
11
|
+
import { pathToFileURL } from 'node:url';
|
|
12
|
+
import { runWebStaticServerlessApp } from './web-static-serverless.js';
|
|
13
|
+
export async function evosynth(cmd, env, props) {
|
|
14
|
+
const files = await readdir(process.cwd(), { withFileTypes: true });
|
|
15
|
+
const configFiles = files
|
|
16
|
+
.filter((dirent) => {
|
|
17
|
+
if (dirent.isFile()) {
|
|
18
|
+
return /^\.evosynth(.*?)\.(?:js|mjs|ts|mts)$/i.test(dirent.name);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
})
|
|
24
|
+
.map((dirent) => {
|
|
25
|
+
const parts = dirent.name.split('.').filter(p => p !== '');
|
|
26
|
+
return {
|
|
27
|
+
name: dirent.name,
|
|
28
|
+
env: parts.length > 2 ? parts[1] : undefined,
|
|
29
|
+
dir: dirent.parentPath
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
let configIndex = configFiles.findIndex(c => c.env && env && c.env.toLowerCase() === env.toLowerCase());
|
|
33
|
+
if (configIndex === -1) {
|
|
34
|
+
configIndex = configFiles.findIndex(c => c.env === undefined);
|
|
35
|
+
}
|
|
36
|
+
if (configIndex != -1) {
|
|
37
|
+
const configFile = configFiles[configIndex];
|
|
38
|
+
const module = await import(__rewriteRelativeImportExtension(pathToFileURL(join(configFile.dir, configFile.name)).toString()));
|
|
39
|
+
let config = undefined;
|
|
40
|
+
if (configFile.env) {
|
|
41
|
+
config = module.default;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
config = module[env]?.();
|
|
45
|
+
}
|
|
46
|
+
if (config) {
|
|
47
|
+
if (props.profile) {
|
|
48
|
+
process.env.AWS_PROFILE = props.profile;
|
|
49
|
+
}
|
|
50
|
+
switch (config.type) {
|
|
51
|
+
case 'web-static-serverless':
|
|
52
|
+
await runWebStaticServerlessApp(cmd, config);
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
console.error('evosynth config not found!');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZvc3ludGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2V2b3N5bnRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV6QyxPQUFPLEVBQUUseUJBQXlCLEVBQWdDLE1BQU0sNEJBQTRCLENBQUM7QUFtQnJHLE1BQU0sQ0FBQyxLQUFLLFVBQVUsUUFBUSxDQUFDLEdBQWUsRUFBRSxHQUFXLEVBQUUsS0FBb0I7SUFDL0UsTUFBTSxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFcEUsTUFBTSxXQUFXLEdBQUcsS0FBSztTQUN0QixNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNqQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sdUNBQXVDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUMsQ0FBQztTQUNELEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ2QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzNELE9BQU87WUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsR0FBRyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDNUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxVQUFVO1NBQ3ZCLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVMLElBQUksV0FBVyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3hHLElBQUksV0FBVyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkIsV0FBVyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFDRCxJQUFJLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sa0NBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFDLENBQUM7UUFDN0YsSUFBSSxNQUFNLEdBQWtDLFNBQVMsQ0FBQztRQUN0RCxJQUFJLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNuQixNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUMxQixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDMUMsQ0FBQztZQUNELFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNwQixLQUFLLHVCQUF1QjtvQkFDMUIsTUFBTSx5QkFBeUIsQ0FBQyxHQUFHLEVBQUUsTUFBc0MsQ0FBQyxDQUFDO29CQUM3RSxNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUM7SUFFSCxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlYWRkaXIgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCB0eXBlIHsgRXZvc3ludGhUYWdLZXkgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBydW5XZWJTdGF0aWNTZXJ2ZXJsZXNzQXBwLCBXZWJTdGF0aWNTZXJ2ZXJsZXNzQXBwQ29uZmlnIH0gZnJvbSAnLi93ZWItc3RhdGljLXNlcnZlcmxlc3MuanMnO1xuXG5leHBvcnQgeyBXZWJTdGF0aWNTZXJ2ZXJsZXNzQXBwQ29uZmlnIH07XG5cbmV4cG9ydCB0eXBlIEVudmlyb25tZW50VHlwZSA9ICdkZXYnIHwgJ3Rlc3QnIHwgJ3N0YWdlJyB8ICd1YXQnIHwgJ3ByZXByb2QnICB8ICdwcm9kJyB8IChzdHJpbmcgJiB7fSk7XG5leHBvcnQgdHlwZSBDZGtDb21tYW5kID0gJ2RlcGxveScgfCAnZGVzdHJveScgfCAnZGlmZicgfCAnZHJpZnQnIHwgJ3JvbGxiYWNrJyB8ICdzeW50aCc7IC8vICdib290c3RyYXAnIHwgXG5leHBvcnQgdHlwZSBFdm9zeW50aEFwcFR5cGUgPSAnc3RyOHItY2xtJyB8ICd3ZWItc3RhdGljLXNlcnZlcmxlc3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV2b3N5bnRoQXBwQ29uZmlnIHtcbiAgdHlwZTogRXZvc3ludGhBcHBUeXBlO1xuICBlbnZUeXBlPzogRW52aXJvbm1lbnRUeXBlO1xuICBuYW1lOiBzdHJpbmc7XG4gIHJlZ2lvbjogJ3VzLWVhc3QtMScgfCAndXMtZWFzdC0yJyB8ICd1cy13ZXN0LTEnIHwgJ3VzLXdlc3QtMicgfCAoc3RyaW5nICYge30pO1xuICB0YWdzPzogUmVjb3JkPEV2b3N5bnRoVGFnS2V5LCBzdHJpbmc+LFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV2b3N5bnRoUHJvcHMge1xuICBwcm9maWxlPzogc3RyaW5nO1xufVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV2b3N5bnRoKGNtZDogQ2RrQ29tbWFuZCwgZW52OiBzdHJpbmcsIHByb3BzOiBFdm9zeW50aFByb3BzKSB7XG4gIGNvbnN0IGZpbGVzID0gYXdhaXQgcmVhZGRpcihwcm9jZXNzLmN3ZCgpLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG5cbiAgY29uc3QgY29uZmlnRmlsZXMgPSBmaWxlc1xuICAgIC5maWx0ZXIoKGRpcmVudCkgPT4ge1xuICAgICAgaWYgKGRpcmVudC5pc0ZpbGUoKSkge1xuICAgICAgICByZXR1cm4gL15cXC5ldm9zeW50aCguKj8pXFwuKD86anN8bWpzfHRzfG10cykkL2kudGVzdChkaXJlbnQubmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSlcbiAgICAubWFwKChkaXJlbnQpID0+IHtcbiAgICAgIGNvbnN0IHBhcnRzID0gZGlyZW50Lm5hbWUuc3BsaXQoJy4nKS5maWx0ZXIocCA9PiBwICE9PSAnJyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBkaXJlbnQubmFtZSxcbiAgICAgICAgZW52OiBwYXJ0cy5sZW5ndGggPiAyID8gcGFydHNbMV0gOiB1bmRlZmluZWQsXG4gICAgICAgIGRpcjogZGlyZW50LnBhcmVudFBhdGhcbiAgICAgIH1cbiAgICB9KTtcbiAgXG4gIGxldCBjb25maWdJbmRleCA9IGNvbmZpZ0ZpbGVzLmZpbmRJbmRleChjID0+IGMuZW52ICYmIGVudiAmJiBjLmVudi50b0xvd2VyQ2FzZSgpID09PSBlbnYudG9Mb3dlckNhc2UoKSk7XG4gIGlmIChjb25maWdJbmRleCA9PT0gLTEpIHtcbiAgICBjb25maWdJbmRleCA9IGNvbmZpZ0ZpbGVzLmZpbmRJbmRleChjID0+IGMuZW52ID09PSB1bmRlZmluZWQpO1xuICB9XG4gIGlmIChjb25maWdJbmRleCAhPSAtMSkge1xuICAgIGNvbnN0IGNvbmZpZ0ZpbGUgPSBjb25maWdGaWxlc1tjb25maWdJbmRleF07XG4gICAgY29uc3QgbW9kdWxlID0gYXdhaXQgaW1wb3J0KHBhdGhUb0ZpbGVVUkwoam9pbihjb25maWdGaWxlLmRpciwgY29uZmlnRmlsZS5uYW1lKSkudG9TdHJpbmcoKSk7XG4gICAgbGV0IGNvbmZpZzogRXZvc3ludGhBcHBDb25maWcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKGNvbmZpZ0ZpbGUuZW52KSB7XG4gICAgICBjb25maWcgPSBtb2R1bGUuZGVmYXVsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZmlnID0gbW9kdWxlW2Vudl0/LigpO1xuICAgIH1cblxuICAgIGlmIChjb25maWcpIHtcbiAgICAgIGlmIChwcm9wcy5wcm9maWxlKSB7XG4gICAgICAgIHByb2Nlc3MuZW52LkFXU19QUk9GSUxFID0gcHJvcHMucHJvZmlsZTtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAoY29uZmlnLnR5cGUpIHtcbiAgICAgICAgY2FzZSAnd2ViLXN0YXRpYy1zZXJ2ZXJsZXNzJzpcbiAgICAgICAgICBhd2FpdCBydW5XZWJTdGF0aWNTZXJ2ZXJsZXNzQXBwKGNtZCwgY29uZmlnIGFzIFdlYlN0YXRpY1NlcnZlcmxlc3NBcHBDb25maWcpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmVycm9yKCdldm9zeW50aCBjb25maWcgbm90IGZvdW5kIScpO1xuICB9XG59Il19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './evosynth.js';
|
|
2
|
+
export * from './web-static-serverless.js';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2V2b3N5bnRoLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vd2ViLXN0YXRpYy1zZXJ2ZXJsZXNzLmpzJzsiXX0=
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ResponseHeadersPolicyProps } from 'aws-cdk-lib/aws-cloudfront';
|
|
2
|
+
import { IBuildImage } from 'aws-cdk-lib/aws-codebuild';
|
|
3
|
+
import { CloudFrontFunctionRedirects } from '../constructs/cloudfront.js';
|
|
4
|
+
import { CodeBuildImageId, EcrBuildImage, CodeBuildSsmParameter, CodeBuildComputeType, CodeBuildNodeJs, EnvironmentVariables } from '../constructs/codebuild.ts';
|
|
5
|
+
import type { EvosynthAppConfig, CdkCommand, EvosynthAppType } from './evosynth.ts';
|
|
6
|
+
import type { CloudFrontFunctionEventType, CspHeaders, UUID, AWSManagedResponseHeadersPolicy } from '../types.d.ts';
|
|
7
|
+
export interface WebStaticServerlessAppConfig extends EvosynthAppConfig {
|
|
8
|
+
type: Extract<EvosynthAppType, 'web-static-serverless'>;
|
|
9
|
+
description?: string;
|
|
10
|
+
dns: {
|
|
11
|
+
record: string;
|
|
12
|
+
zone: string;
|
|
13
|
+
};
|
|
14
|
+
security?: {
|
|
15
|
+
basicAuth?: string;
|
|
16
|
+
basicAuthParam?: string;
|
|
17
|
+
webAcl?: string | false;
|
|
18
|
+
webAclParam?: string;
|
|
19
|
+
};
|
|
20
|
+
cloudfront?: {
|
|
21
|
+
responseHeaders?: AWSManagedResponseHeadersPolicy | UUID | false;
|
|
22
|
+
responseHeadersParam?: string;
|
|
23
|
+
responseHeadersPolicy?: ResponseHeadersPolicyProps;
|
|
24
|
+
cspHeaders?: CspHeaders;
|
|
25
|
+
redirects?: CloudFrontFunctionRedirects;
|
|
26
|
+
function?: string | {
|
|
27
|
+
code: string;
|
|
28
|
+
eventType: CloudFrontFunctionEventType[];
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
pipeline?: {
|
|
32
|
+
source: {
|
|
33
|
+
codestarConnection?: string;
|
|
34
|
+
codestarConnectionParam?: string;
|
|
35
|
+
owner: 'evokegroup' | 'meltmedia' | (string & {});
|
|
36
|
+
repo: string;
|
|
37
|
+
branch: string;
|
|
38
|
+
fullClone?: boolean;
|
|
39
|
+
};
|
|
40
|
+
build?: {
|
|
41
|
+
buildSpec?: string | object;
|
|
42
|
+
buildImage?: IBuildImage;
|
|
43
|
+
buildImageEcr?: EcrBuildImage;
|
|
44
|
+
buildImageNodeJS?: CodeBuildNodeJs;
|
|
45
|
+
buildImageId?: CodeBuildImageId;
|
|
46
|
+
computeType?: CodeBuildComputeType;
|
|
47
|
+
environmentVariables?: EnvironmentVariables;
|
|
48
|
+
ssmParameters?: CodeBuildSsmParameter[];
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export declare function runWebStaticServerlessApp(cmd: CdkCommand, config: WebStaticServerlessAppConfig): Promise<void>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import * as core from 'aws-cdk-lib/core';
|
|
3
|
+
import { Toolkit } from '@aws-cdk/toolkit-lib';
|
|
4
|
+
import { getEnv } from '../index.js';
|
|
5
|
+
import { WebStaticServerlessStage } from '../stages/web-static-serverless-stage.js';
|
|
6
|
+
const cdk = new Toolkit();
|
|
7
|
+
export async function runWebStaticServerlessApp(cmd, config) {
|
|
8
|
+
const cx = await cdk.fromAssemblyBuilder(async (props) => {
|
|
9
|
+
const app = new core.App({
|
|
10
|
+
outdir: join(process.cwd(), '.evosynth'),
|
|
11
|
+
});
|
|
12
|
+
const stageProps = {
|
|
13
|
+
env: getEnv(config.region),
|
|
14
|
+
stageName: `${config.name}${config.envType ? `-${config.envType}` : ''}`,
|
|
15
|
+
tags: config.tags,
|
|
16
|
+
envType: config.envType === 'prod' ? 'PROD' : 'NOT_PROD',
|
|
17
|
+
description: `${config.description}${config.envType ? ` ${config.envType.toUpperCase()}` : ''}`,
|
|
18
|
+
hostedZone: config.dns.zone,
|
|
19
|
+
domainName: `${config.dns.record}.${config.dns.zone}`,
|
|
20
|
+
basicAuth: config.security?.basicAuthParam ? { path: config.security?.basicAuthParam } : config.security?.basicAuth,
|
|
21
|
+
webAcl: config.security?.webAclParam ? { path: config.security.webAclParam } : config.security?.webAcl,
|
|
22
|
+
redirects: config.cloudfront?.redirects,
|
|
23
|
+
responseCspHeaders: config.cloudfront?.cspHeaders,
|
|
24
|
+
responseHeadersPolicy: config.cloudfront?.responseHeadersParam ? { path: config.cloudfront.responseHeadersParam } : config.cloudfront?.responseHeaders,
|
|
25
|
+
responseHeadersPolicyProps: config.cloudfront?.responseHeadersPolicy,
|
|
26
|
+
cloudfrontFunction: config.cloudfront?.function && typeof config.cloudfront.function == 'string' ? {
|
|
27
|
+
code: config.cloudfront.function,
|
|
28
|
+
eventType: ['VIEWER_REQUEST', 'VIEWER_RESPONSE'],
|
|
29
|
+
} : config.cloudfront?.function
|
|
30
|
+
};
|
|
31
|
+
if (config.pipeline) {
|
|
32
|
+
stageProps.pipeline = {
|
|
33
|
+
sourceStage: {
|
|
34
|
+
codestarConnection: config.pipeline.source.codestarConnectionParam ? { path: config.pipeline.source.codestarConnectionParam } : config.pipeline.source.codestarConnection,
|
|
35
|
+
repoOwner: config.pipeline.source.owner,
|
|
36
|
+
repo: config.pipeline.source.repo,
|
|
37
|
+
branch: config.pipeline.source.branch,
|
|
38
|
+
fullClone: config.pipeline.source.fullClone
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
if (config.pipeline.build) {
|
|
42
|
+
stageProps.pipeline.buildStage = {
|
|
43
|
+
environmentVariables: config.pipeline.build.environmentVariables
|
|
44
|
+
};
|
|
45
|
+
stageProps.pipeline.codeBuildProject = {
|
|
46
|
+
buildImage: config.pipeline.build.buildImage,
|
|
47
|
+
buildImageId: config.pipeline.build.buildImageId,
|
|
48
|
+
buildImageNodeJS: config.pipeline.build.buildImageNodeJS,
|
|
49
|
+
buildSpec: config.pipeline.build.buildSpec,
|
|
50
|
+
computeType: config.pipeline.build.computeType,
|
|
51
|
+
ecrBuildImage: config.pipeline.build.buildImageEcr,
|
|
52
|
+
ssmParameters: config.pipeline.build.ssmParameters
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
new WebStaticServerlessStage(app, config.type, stageProps);
|
|
57
|
+
return app.synth();
|
|
58
|
+
});
|
|
59
|
+
switch (cmd) {
|
|
60
|
+
// case 'bootstrap':
|
|
61
|
+
// await cdk.bootstrap(BootstrapEnvironments.fromList([`aws://${process.env.CDK_DEFAULT_ACCOUNT}/${config.region}`]));
|
|
62
|
+
// break;
|
|
63
|
+
case 'deploy':
|
|
64
|
+
case 'destroy':
|
|
65
|
+
case 'diff':
|
|
66
|
+
case 'drift':
|
|
67
|
+
case 'rollback':
|
|
68
|
+
case 'synth':
|
|
69
|
+
await cdk[cmd](cx);
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLXN0YXRpYy1zZXJ2ZXJsZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS93ZWItc3RhdGljLXNlcnZlcmxlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEtBQUssSUFBSSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBK0MsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFPNUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsd0JBQXdCLEVBQWlDLE1BQU0sMENBQTBDLENBQUM7QUFFbkgsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQWdEMUIsTUFBTSxDQUFDLEtBQUssVUFBVSx5QkFBeUIsQ0FBQyxHQUFlLEVBQUUsTUFBb0M7SUFDbkcsTUFBTSxFQUFFLEdBQUcsTUFBTSxHQUFHLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ3ZELE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxXQUFXLENBQUM7U0FDekMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxVQUFVLEdBQW9EO1lBQ2xFLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUMxQixTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2pCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxLQUFLLE1BQU0s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LFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVTtvQkFDNUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFlBQVk7b0JBQ2hELGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGdCQUFnQjtvQkFDeEQsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVM7b0JBQzFDLFdBQVcsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXO29CQUM5QyxhQUFhLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYTtvQkFDbEQsYUFBYSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGFBQWE7aUJBQ25ELENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksd0JBQXdCLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFM0QsT0FBTyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckIsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ1osb0JBQW9CO1FBQ3BCLHdIQUF3SDtRQUN4SCxXQUFXO1FBQ1gsS0FBSyxRQUFRLENBQUM7UUFDZCxLQUFLLFNBQVMsQ0FBQztRQUNmLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxPQUFPLENBQUM7UUFDYixLQUFLLFVBQVUsQ0FBQztRQUNoQixLQUFLLE9BQU87WUFDVixNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuQixNQUFNO0lBQ1YsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCAqIGFzIGNvcmUgZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBCb290c3RyYXBFbnZpcm9ubWVudHMsIElDbG91ZEFzc2VtYmx5U291cmNlLCBUb29sa2l0IH0gZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0IHsgUmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udCc7XG5pbXBvcnQgeyBJQnVpbGRJbWFnZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlYnVpbGQnO1xuaW1wb3J0IHsgQ2xvdWRGcm9udEZ1bmN0aW9uUmVkaXJlY3RzIH0gZnJvbSAnLi4vY29uc3RydWN0cy9jbG91ZGZyb250LmpzJztcbmltcG9ydCB7IENvZGVCdWlsZEltYWdlSWQsIEVjckJ1aWxkSW1hZ2UsIENvZGVCdWlsZFNzbVBhcmFtZXRlciwgQ29kZUJ1aWxkQ29tcHV0ZVR5cGUsIENvZGVCdWlsZE5vZGVKcywgRW52aXJvbm1lbnRWYXJpYWJsZXMgfSBmcm9tICcuLi9jb25zdHJ1Y3RzL2NvZGVidWlsZC50cyc7XG5pbXBvcnQgdHlwZSB7IEV2b3N5bnRoQXBwQ29uZmlnLCBDZGtDb21tYW5kLCBFdm9zeW50aEFwcFR5cGUgfSBmcm9tICcuL2V2b3N5bnRoLnRzJztcbmltcG9ydCB0eXBlIHsgQ2xvdWRGcm9udEZ1bmN0aW9uRXZlbnRUeXBlLCBDc3BIZWFkZXJzLCBVVUlELCBBV1NNYW5hZ2VkUmVzcG9uc2VIZWFkZXJzUG9saWN5IH0gZnJvbSAnLi4vdHlwZXMuZC50cyc7XG5pbXBvcnQgeyBnZXRFbnYgfSBmcm9tICcuLi9pbmRleC5qcyc7XG5pbXBvcnQgeyBXZWJTdGF0aWNTZXJ2ZXJsZXNzU3RhZ2UsIFdlYlN0YXRpY1NlcnZlcmxlc3NTdGFnZVByb3BzIH0gZnJvbSAnLi4vc3RhZ2VzL3dlYi1zdGF0aWMtc2VydmVybGVzcy1zdGFnZS5qcyc7XG5cbmNvbnN0IGNkayA9IG5ldyBUb29sa2l0KCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2ViU3RhdGljU2VydmVybGVzc0FwcENvbmZpZyBleHRlbmRzIEV2b3N5bnRoQXBwQ29uZmlnIHtcbiAgdHlwZTogRXh0cmFjdDxFdm9zeW50aEFwcFR5cGUsICd3ZWItc3RhdGljLXNlcnZlcmxlc3MnPixcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGRuczoge1xuICAgIHJlY29yZDogc3RyaW5nO1xuICAgIHpvbmU6IHN0cmluZztcbiAgfSxcbiAgc2VjdXJpdHk/OiB7XG4gICAgYmFzaWNBdXRoPzogc3RyaW5nO1xuICAgIGJhc2ljQXV0aFBhcmFtPzogc3RyaW5nO1xuICAgIHdlYkFjbD86IHN0cmluZyB8IGZhbHNlO1xuICAgIHdlYkFjbFBhcmFtPzogc3RyaW5nO1xuICB9LFxuICBjbG91ZGZyb250Pzoge1xuICAgIHJlc3BvbnNlSGVhZGVycz86IEFXU01hbmFnZWRSZXNwb25zZUhlYWRlcnNQb2xpY3kgfCBVVUlEIHwgZmFsc2U7XG4gICAgcmVzcG9uc2VIZWFkZXJzUGFyYW0/OiBzdHJpbmc7XG4gICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5PzogUmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHM7XG4gICAgY3NwSGVhZGVycz86IENzcEhlYWRlcnM7XG4gICAgcmVkaXJlY3RzPzogQ2xvdWRGcm9udEZ1bmN0aW9uUmVkaXJlY3RzO1xuICAgIGZ1bmN0aW9uPzogc3RyaW5nIHwge1xuICAgICAgY29kZTogc3RyaW5nO1xuICAgICAgZXZlbnRUeXBlOiBDbG91ZEZyb250RnVuY3Rpb25FdmVudFR5cGVbXTtcbiAgICB9XG4gIH0sXG4gIHBpcGVsaW5lPzoge1xuICAgIHNvdXJjZToge1xuICAgICAgY29kZXN0YXJDb25uZWN0aW9uPzogc3RyaW5nO1xuICAgICAgY29kZXN0YXJDb25uZWN0aW9uUGFyYW0/OiBzdHJpbmc7XG4gICAgICBvd25lcjogJ2V2b2tlZ3JvdXAnIHwgJ21lbHRtZWRpYScgfCAoc3RyaW5nICYge30pO1xuICAgICAgcmVwbzogc3RyaW5nO1xuICAgICAgYnJhbmNoOiBzdHJpbmc7XG4gICAgICBmdWxsQ2xvbmU/OiBib29sZWFuO1xuICAgIH0sXG4gICAgYnVpbGQ/OiB7XG4gICAgICBidWlsZFNwZWM/OiBzdHJpbmcgfCBvYmplY3Q7XG4gICAgICBidWlsZEltYWdlPzogSUJ1aWxkSW1hZ2U7XG4gICAgICBidWlsZEltYWdlRWNyPzogRWNyQnVpbGRJbWFnZTtcbiAgICAgIGJ1aWxkSW1hZ2VOb2RlSlM/OiBDb2RlQnVpbGROb2RlSnM7XG4gICAgICBidWlsZEltYWdlSWQ/OiBDb2RlQnVpbGRJbWFnZUlkO1xuICAgICAgY29tcHV0ZVR5cGU/OiBDb2RlQnVpbGRDb21wdXRlVHlwZTtcbiAgICAgIGVudmlyb25tZW50VmFyaWFibGVzPzogRW52aXJvbm1lbnRWYXJpYWJsZXM7XG4gICAgICBzc21QYXJhbWV0ZXJzPzogQ29kZUJ1aWxkU3NtUGFyYW1ldGVyW11cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldlYlN0YXRpY1NlcnZlcmxlc3NBcHAoY21kOiBDZGtDb21tYW5kLCBjb25maWc6IFdlYlN0YXRpY1NlcnZlcmxlc3NBcHBDb25maWcpIHtcbiAgY29uc3QgY3ggPSBhd2FpdCBjZGsuZnJvbUFzc2VtYmx5QnVpbGRlcihhc3luYyAocHJvcHMpID0+IHtcbiAgICBjb25zdCBhcHAgPSBuZXcgY29yZS5BcHAoe1xuICAgICAgb3V0ZGlyOiBqb2luKHByb2Nlc3MuY3dkKCksICcuZXZvc3ludGgnKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0YWdlUHJvcHM6IFdlYlN0YXRpY1NlcnZlcmxlc3NTdGFnZVByb3BzICYgY29yZS5TdGFnZVByb3BzID0ge1xuICAgICAgZW52OiBnZXRFbnYoY29uZmlnLnJlZ2lvbiksXG4gICAgICBzdGFnZU5hbWU6IGAke2NvbmZpZy5uYW1lfSR7Y29uZmlnLmVudlR5cGUgPyBgLSR7Y29uZmlnLmVudlR5cGV9YCA6ICcnfWAsXG4gICAgICB0YWdzOiBjb25maWcudGFncyxcbiAgICAgIGVudlR5cGU6IGNvbmZpZy5lbnZUeXBlID09PSAncHJvZCcgPyAnUFJPRCcgOiAnTk9UX1BST0QnLFxuICAgICAgZGVzY3JpcHRpb246IGAke2NvbmZpZy5kZXNjcmlwdGlvbn0ke2NvbmZpZy5lbnZUeXBlID8gYCAke2NvbmZpZy5lbnZUeXBlLnRvVXBwZXJDYXNlKCl9YCA6ICcnfWAsXG4gICAgICBob3N0ZWRab25lOiBjb25maWcuZG5zLnpvbmUsXG4gICAgICBkb21haW5OYW1lOiBgJHtjb25maWcuZG5zLnJlY29yZH0uJHtjb25maWcuZG5zLnpvbmV9YCxcbiAgICAgIGJhc2ljQXV0aDogY29uZmlnLnNlY3VyaXR5Py5iYXNpY0F1dGhQYXJhbSA/IHsgcGF0aDogY29uZmlnLnNlY3VyaXR5Py5iYXNpY0F1dGhQYXJhbSB9IDogY29uZmlnLnNlY3VyaXR5Py5iYXNpY0F1dGgsXG4gICAgICB3ZWJBY2w6IGNvbmZpZy5zZWN1cml0eT8ud2ViQWNsUGFyYW0gPyB7IHBhdGg6IGNvbmZpZy5zZWN1cml0eS53ZWJBY2xQYXJhbSB9IDogY29uZmlnLnNlY3VyaXR5Py53ZWJBY2wsXG4gICAgICByZWRpcmVjdHM6IGNvbmZpZy5jbG91ZGZyb250Py5yZWRpcmVjdHMsXG4gICAgICByZXNwb25zZUNzcEhlYWRlcnM6IGNvbmZpZy5jbG91ZGZyb250Py5jc3BIZWFkZXJzLFxuICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5OiBjb25maWcuY2xvdWRmcm9udD8ucmVzcG9uc2VIZWFkZXJzUGFyYW0gPyB7IHBhdGg6IGNvbmZpZy5jbG91ZGZyb250LnJlc3BvbnNlSGVhZGVyc1BhcmFtIH0gOiBjb25maWcuY2xvdWRmcm9udD8ucmVzcG9uc2VIZWFkZXJzLFxuICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHM6IGNvbmZpZy5jbG91ZGZyb250Py5yZXNwb25zZUhlYWRlcnNQb2xpY3ksXG4gICAgICBjbG91ZGZyb250RnVuY3Rpb246IGNvbmZpZy5jbG91ZGZyb250Py5mdW5jdGlvbiAmJiB0eXBlb2YgY29uZmlnLmNsb3VkZnJvbnQuZnVuY3Rpb24gPT0gJ3N0cmluZycgPyB7XG4gICAgICAgIGNvZGU6IGNvbmZpZy5jbG91ZGZyb250LmZ1bmN0aW9uLFxuICAgICAgICBldmVudFR5cGU6IFsnVklFV0VSX1JFUVVFU1QnLCdWSUVXRVJfUkVTUE9OU0UnXSxcbiAgICAgIH0gOiBjb25maWcuY2xvdWRmcm9udD8uZnVuY3Rpb24gYXMgYW55XG4gICAgfVxuICAgIGlmIChjb25maWcucGlwZWxpbmUpIHtcbiAgICAgIHN0YWdlUHJvcHMucGlwZWxpbmUgPSB7XG4gICAgICAgIHNvdXJjZVN0YWdlOiB7XG4gICAgICAgICAgY29kZXN0YXJDb25uZWN0aW9uOiBjb25maWcucGlwZWxpbmUuc291cmNlLmNvZGVzdGFyQ29ubmVjdGlvblBhcmFtID8geyBwYXRoOiBjb25maWcucGlwZWxpbmUuc291cmNlLmNvZGVzdGFyQ29ubmVjdGlvblBhcmFtIH0gOiBjb25maWcucGlwZWxpbmUuc291cmNlLmNvZGVzdGFyQ29ubmVjdGlvbiBhcyBzdHJpbmcsXG4gICAgICAgICAgcmVwb093bmVyOiBjb25maWcucGlwZWxpbmUuc291cmNlLm93bmVyLFxuICAgICAgICAgIHJlcG86IGNvbmZpZy5waXBlbGluZS5zb3VyY2UucmVwbyxcbiAgICAgICAgICBicmFuY2g6IGNvbmZpZy5waXBlbGluZS5zb3VyY2UuYnJhbmNoLFxuICAgICAgICAgIGZ1bGxDbG9uZTogY29uZmlnLnBpcGVsaW5lLnNvdXJjZS5mdWxsQ2xvbmVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNvbmZpZy5waXBlbGluZS5idWlsZCkge1xuICAgICAgICBzdGFnZVByb3BzLnBpcGVsaW5lLmJ1aWxkU3RhZ2UgPSB7XG4gICAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IGNvbmZpZy5waXBlbGluZS5idWlsZC5lbnZpcm9ubWVudFZhcmlhYmxlc1xuICAgICAgICB9O1xuICAgICAgICBzdGFnZVByb3BzLnBpcGVsaW5lLmNvZGVCdWlsZFByb2plY3QgPSB7XG4gICAgICAgICAgYnVpbGRJbWFnZTogY29uZmlnLnBpcGVsaW5lLmJ1aWxkLmJ1aWxkSW1hZ2UsXG4gICAgICAgICAgYnVpbGRJbWFnZUlkOiBjb25maWcucGlwZWxpbmUuYnVpbGQuYnVpbGRJbWFnZUlkLFxuICAgICAgICAgIGJ1aWxkSW1hZ2VOb2RlSlM6IGNvbmZpZy5waXBlbGluZS5idWlsZC5idWlsZEltYWdlTm9kZUpTLFxuICAgICAgICAgIGJ1aWxkU3BlYzogY29uZmlnLnBpcGVsaW5lLmJ1aWxkLmJ1aWxkU3BlYyxcbiAgICAgICAgICBjb21wdXRlVHlwZTogY29uZmlnLnBpcGVsaW5lLmJ1aWxkLmNvbXB1dGVUeXBlLFxuICAgICAgICAgIGVjckJ1aWxkSW1hZ2U6IGNvbmZpZy5waXBlbGluZS5idWlsZC5idWlsZEltYWdlRWNyLFxuICAgICAgICAgIHNzbVBhcmFtZXRlcnM6IGNvbmZpZy5waXBlbGluZS5idWlsZC5zc21QYXJhbWV0ZXJzXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgbmV3IFdlYlN0YXRpY1NlcnZlcmxlc3NTdGFnZShhcHAsIGNvbmZpZy50eXBlLCBzdGFnZVByb3BzKTtcblxuICAgIHJldHVybiBhcHAuc3ludGgoKTtcbiAgfSk7XG5cbiAgc3dpdGNoIChjbWQpIHtcbiAgICAvLyBjYXNlICdib290c3RyYXAnOlxuICAgIC8vICAgYXdhaXQgY2RrLmJvb3RzdHJhcChCb290c3RyYXBFbnZpcm9ubWVudHMuZnJvbUxpc3QoW2Bhd3M6Ly8ke3Byb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlR9LyR7Y29uZmlnLnJlZ2lvbn1gXSkpO1xuICAgIC8vICAgYnJlYWs7XG4gICAgY2FzZSAnZGVwbG95JzpcbiAgICBjYXNlICdkZXN0cm95JzpcbiAgICBjYXNlICdkaWZmJzpcbiAgICBjYXNlICdkcmlmdCc6XG4gICAgY2FzZSAncm9sbGJhY2snOlxuICAgIGNhc2UgJ3N5bnRoJzpcbiAgICAgIGF3YWl0IGNka1tjbWRdKGN4KTtcbiAgICAgIGJyZWFrO1xuICB9XG59XG4iXX0=
|
|
@@ -6,7 +6,14 @@ export type EnvironmentVariables = Record<string, {
|
|
|
6
6
|
value: any;
|
|
7
7
|
type?: BuildEnvironmentVariableType;
|
|
8
8
|
}>;
|
|
9
|
-
|
|
9
|
+
export type CodeBuildImageId = 'aws/codebuild/amazonlinux2-aarch64-standard:1.0' | 'aws/codebuild/amazonlinux2-x86_64-standard:2.0' | 'aws/codebuild/amazonlinux2-x86_64-standard:3.0' | 'aws/codebuild/amazonlinux-x86_64-standard:4.0' | 'aws/codebuild/amazonlinux-x86_64-standard:5.0' | 'aws/codebuild/amazonlinux-x86_64-standard:6.0' | 'aws/codebuild/amazonlinux-x86_64-standard:corretto8' | 'aws/codebuild/amazonlinux-x86_64-standard:corretto11' | 'aws/codebuild/amazonlinux-aarch64-standard:2.0' | 'aws/codebuild/amazonlinux-aarch64-standard:3.0' | 'aws/codebuild/standard:3.0' | 'aws/codebuild/standard:4.0' | 'aws/codebuild/standard:5.0' | // nodejs 12, 14
|
|
10
|
+
'aws/codebuild/standard:6.0' | // nodejs 16
|
|
11
|
+
'aws/codebuild/standard:7.0' | // nodejs 18, 20, 22, 24
|
|
12
|
+
'aws/codebuild/standard:8.0' | // nodejs 22, 24
|
|
13
|
+
'aws/codebuild/windows-base:2019-1.0' | 'aws/codebuild/windows-base:2019-2.0' | 'aws/codebuild/windows-base:2019-3.0' | 'aws/codebuild/windows-base:2022-1.0' | (string & {});
|
|
14
|
+
export type CodeBuildComputeType = 'SMALL' | 'MEDIUM' | 'LARGE' | 'X_LARGE' | 'X2_LARGE' | (string & {});
|
|
15
|
+
export type CodeBuildNodeJs = 12 | 14 | 16 | 18 | 20 | 22 | 24 | (number & {});
|
|
16
|
+
export interface CodeBuildSsmParameter extends SsmStringParameter {
|
|
10
17
|
encrypted?: boolean;
|
|
11
18
|
}
|
|
12
19
|
export interface EcrBuildImage {
|
|
@@ -16,16 +23,17 @@ export interface EcrBuildImage {
|
|
|
16
23
|
export interface CodeBuildPipelineProjectProps extends ResourceProps {
|
|
17
24
|
projectName?: string;
|
|
18
25
|
buildSpec?: string | object;
|
|
19
|
-
buildImage?: ('STANDARD_5_0' | 'STANDARD_6_0' | 'STANDARD_7_0') | IBuildImage;
|
|
20
26
|
ecrBuildImage?: EcrBuildImage;
|
|
21
|
-
|
|
27
|
+
buildImage?: IBuildImage;
|
|
28
|
+
buildImageNodeJS?: CodeBuildNodeJs;
|
|
29
|
+
buildImageId?: CodeBuildImageId;
|
|
30
|
+
computeType?: CodeBuildComputeType;
|
|
22
31
|
environmentVariables?: EnvironmentVariables;
|
|
23
32
|
cloudFrontDistributionArn?: string;
|
|
24
33
|
s3BucketName?: string;
|
|
25
|
-
ssmParameters?:
|
|
34
|
+
ssmParameters?: CodeBuildSsmParameter[];
|
|
26
35
|
}
|
|
27
36
|
export declare class CodeBuildPipelineProject extends Construct {
|
|
28
37
|
readonly project: PipelineProject;
|
|
29
38
|
constructor(scope: Construct, id: string, props: CodeBuildPipelineProjectProps);
|
|
30
39
|
}
|
|
31
|
-
export {};
|
|
@@ -31,12 +31,27 @@ export class CodeBuildPipelineProject extends Construct {
|
|
|
31
31
|
buildImage = LinuxBuildImage.fromEcrRepository(repository, props.ecrBuildImage.tag);
|
|
32
32
|
}
|
|
33
33
|
else if (props.buildImage) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
buildImage = props.buildImage;
|
|
35
|
+
}
|
|
36
|
+
else if (props.buildImageNodeJS) {
|
|
37
|
+
let standard = 8;
|
|
38
|
+
switch (props.buildImageNodeJS) {
|
|
39
|
+
case 12:
|
|
40
|
+
case 14:
|
|
41
|
+
standard = 5;
|
|
42
|
+
break;
|
|
43
|
+
case 16:
|
|
44
|
+
standard = 6;
|
|
45
|
+
break;
|
|
46
|
+
case 18:
|
|
47
|
+
case 20:
|
|
48
|
+
standard = 7;
|
|
49
|
+
break;
|
|
39
50
|
}
|
|
51
|
+
buildImage = LinuxBuildImage.fromCodeBuildImageId(`aws/codebuild/standard:${standard}.0`);
|
|
52
|
+
}
|
|
53
|
+
else if (props.buildImageId) {
|
|
54
|
+
buildImage = LinuxBuildImage.fromCodeBuildImageId(props.buildImageId);
|
|
40
55
|
}
|
|
41
56
|
this.project = new PipelineProject(this, 'CodeBuildPipelineProjectProps', {
|
|
42
57
|
projectName: props.projectName,
|
|
@@ -96,4 +111,4 @@ export class CodeBuildPipelineProject extends Construct {
|
|
|
96
111
|
}
|
|
97
112
|
}
|
|
98
113
|
}
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWJ1aWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvY29kZWJ1aWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQWdDLFNBQVMsRUFBRSxXQUFXLEVBQWUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hKLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBb0IsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBd0I3QyxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsU0FBUztJQUNyQyxPQUFPLENBQWtCO0lBRXpDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0M7UUFDNUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMseUJBQXlCLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUM5RixLQUFLLENBQUMsb0JBQW9CLENBQUMsMEJBQTBCLEdBQUc7Z0JBQ3RELEtBQUssRUFBRSxLQUFLLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcs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TCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sUUFBUSxHQUFHLGVBQWUsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTt3QkFDekUsYUFBYSxFQUFFLEtBQUssQ0FBQyxJQUFJO3dCQUN6QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87cUJBQ3ZCLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBCdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlLCBCdWlsZFNwZWMsIENvbXB1dGVUeXBlLCBJQnVpbGRJbWFnZSwgTGludXhCdWlsZEltYWdlLCBQaXBlbGluZVByb2plY3QgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgSVN0cmluZ1BhcmFtZXRlciwgU3RyaW5nUGFyYW1ldGVyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgdHlwZSB7IFNzbVN0cmluZ1BhcmFtZXRlciB9IGZyb20gXCIuL3NzbS50c1wiO1xuaW1wb3J0IHsgdGFnUmVzb3VyY2UgfSBmcm9tIFwiLi4vbGliL3RhZ3MuanNcIjtcbmltcG9ydCB0eXBlIHsgUmVzb3VyY2VQcm9wcyB9IGZyb20gXCIuLi90eXBlcy5kLnRzXCI7XG5cbmV4cG9ydCB0eXBlIEVudmlyb25tZW50VmFyaWFibGVzID0gUmVjb3JkPHN0cmluZywgeyB2YWx1ZTogYW55LCB0eXBlPzogQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZSB9PjtcblxuaW50ZXJmYWNlIFNzbVBhcmFtZXRlciBleHRlbmRzIFNzbVN0cmluZ1BhcmFtZXRlciB7XG4gIGVuY3J5cHRlZD86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIEVjckJ1aWxkSW1hZ2Uge1xuICByZXBvc2l0b3J5OiBzdHJpbmc7XG4gIHRhZzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2RlQnVpbGRQaXBlbGluZVByb2plY3RQcm9wcyBleHRlbmRzIFJlc291cmNlUHJvcHMge1xuICBwcm9qZWN0TmFtZT86IHN0cmluZztcbiAgYnVpbGRTcGVjPzogc3RyaW5nIHwgb2JqZWN0O1xuICBidWlsZEltYWdlPzogKCdTVEFOREFSRF81XzAnIHwgJ1NUQU5EQVJEXzZfMCcgfCAnU1RBTkRBUkRfN18wJykgfCBJQnVpbGRJbWFnZTtcbiAgZWNyQnVpbGRJbWFnZT86IEVjckJ1aWxkSW1hZ2UsXG4gIGNvbXB1dGVUeXBlPzogKCdTTUFMTCcgfCAnTUVESVVNJyB8ICdMQVJHRScgfCAnWF9MQVJHRScgfCAnWDJfTEFSR0UnKSB8IHN0cmluZztcbiAgZW52aXJvbm1lbnRWYXJpYWJsZXM/OiBFbnZpcm9ubWVudFZhcmlhYmxlcztcbiAgY2xvdWRGcm9udERpc3RyaWJ1dGlvbkFybj86IHN0cmluZztcbiAgczNCdWNrZXROYW1lPzogc3RyaW5nO1xuICBzc21QYXJhbWV0ZXJzPzogU3NtUGFyYW1ldGVyW107XG59XG5cbmV4cG9ydCBjbGFzcyBDb2RlQnVpbGRQaXBlbGluZVByb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogUGlwZWxpbmVQcm9qZWN0O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDb2RlQnVpbGRQaXBlbGluZVByb2plY3RQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAoIXByb3BzLmVudmlyb25tZW50VmFyaWFibGVzKSB7XG4gICAgICBwcm9wcy5lbnZpcm9ubWVudFZhcmlhYmxlcyA9IHt9O1xuICAgIH1cbiAgICBpZiAocHJvcHMuY2xvdWRGcm9udERpc3RyaWJ1dGlvbkFybiAmJiAhcHJvcHMuZW52aXJvbm1lbnRWYXJpYWJsZXMuQ0xPVURGUk9OVF9ESVNUUklCVVRJT05fSUQpIHtcbiAgICAgIHByb3BzLmVudmlyb25tZW50VmFyaWFibGVzLkNMT1VERlJPTlRfRElTVFJJQlVUSU9OX0lEID0ge1xuICAgICAgICB2YWx1ZTogcHJvcHMuY2xvdWRGcm9udERpc3RyaWJ1dGlvbkFybi5zcGxpdCgnLycpLnBvcCgpXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5zM0J1Y2tldE5hbWUgJiYgIXByb3BzLmVudmlyb25tZW50VmFyaWFibGVzLlMzX0JVQ0tFVF9OQU1FKSB7XG4gICAgICBwcm9wcy5lbnZpcm9ubWVudFZhcmlhYmxlcy5TM19CVUNLRVRfTkFNRSA9IHtcbiAgICAgICAgdmFsdWU6IHByb3BzLnMzQnVja2V0TmFtZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBsZXQgYnVpbGRJbWFnZTogSUJ1aWxkSW1hZ2UgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHByb3BzLmVjckJ1aWxkSW1hZ2UpIHtcbiAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSBwcm9wcy5lY3JCdWlsZEltYWdlLnJlcG9zaXRvcnkuc3RhcnRzV2l0aCgnYXJuOmF3cycpID8gXG4gICAgICAgIFJlcG9zaXRvcnkuZnJvbVJlcG9zaXRvcnlBcm4odGhpcywgJ0VjclJlcG9zaXRvcnknLCBwcm9wcy5lY3JCdWlsZEltYWdlLnJlcG9zaXRvcnkpIDpcbiAgICAgICAgUmVwb3NpdG9yeS5mcm9tUmVwb3NpdG9yeU5hbWUodGhpcywgJ0VjclJlcG9zaXRvcnknLCBwcm9wcy5lY3JCdWlsZEltYWdlLnJlcG9zaXRvcnkpO1xuICAgICAgYnVpbGRJbWFnZSA9IExpbnV4QnVpbGRJbWFnZS5mcm9tRWNyUmVwb3NpdG9yeShyZXBvc2l0b3J5LCBwcm9wcy5lY3JCdWlsZEltYWdlLnRhZyk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5idWlsZEltYWdlKSB7XG4gICAgICBpZiAodHlwZW9mIHByb3BzLmJ1aWxkSW1hZ2UgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgYnVpbGRJbWFnZSA9IExpbnV4QnVpbGRJbWFnZVtwcm9wcy5idWlsZEltYWdlID8/ICdTVEFOREFSRF83XzAnXVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnVpbGRJbWFnZSA9IHByb3BzLmJ1aWxkSW1hZ2UgYXMgSUJ1aWxkSW1hZ2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5wcm9qZWN0ID0gbmV3IFBpcGVsaW5lUHJvamVjdCh0aGlzLCAnQ29kZUJ1aWxkUGlwZWxpbmVQcm9qZWN0UHJvcHMnLCB7XG4gICAgICBwcm9qZWN0TmFtZTogcHJvcHMucHJvamVjdE5hbWUsXG4gICAgICBidWlsZFNwZWM6IHByb3BzLmJ1aWxkU3BlYyA/IHR5cGVvZiBwcm9wcy5idWlsZFNwZWMgPT0gJ29iamVjdCcgPyBCdWlsZFNwZWMuZnJvbU9iamVjdFRvWWFtbChwcm9wcy5idWlsZFNwZWMpIDogQnVpbGRTcGVjLmZyb21Tb3VyY2VGaWxlbmFtZShwcm9wcy5idWlsZFNwZWMgPz8gJ2J1aWxkc3BlYy55bWwnKSA6IHVuZGVmaW5lZCxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIGJ1aWxkSW1hZ2U6IGJ1aWxkSW1hZ2UgPz8gTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzdfMCxcbiAgICAgICAgY29tcHV0ZVR5cGU6IENvbXB1dGVUeXBlW3Byb3BzLmNvbXB1dGVUeXBlIGFzIChrZXlvZiB0eXBlb2YgQ29tcHV0ZVR5cGUgfCB1bmRlZmluZWQpID8/ICdTTUFMTCddLFxuICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczogcHJvcHMuZW52aXJvbm1lbnRWYXJpYWJsZXNcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0YWdSZXNvdXJjZSh0aGlzLnByb2plY3QsIHByb3BzLnRhZ3MpO1xuICAgIGlmICh0eXBlb2YgcHJvcHMuZGVzdHJveSA9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMucHJvamVjdC5hcHBseVJlbW92YWxQb2xpY3kocHJvcHMuZGVzdHJveSA/IFJlbW92YWxQb2xpY3kuREVTVFJPWSA6IFJlbW92YWxQb2xpY3kuUkVUQUlOKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgQ2xvdWRXYXRjaCBsb2cgcGVybWlzc2lvbnNcbiAgICB0aGlzLnByb2plY3QuYWRkVG9Sb2xlUG9saWN5KG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogW1xuICAgICAgICAnbG9nczpDcmVhdGVMb2dHcm91cCcsXG4gICAgICAgICdsb2dzOkNyZWF0ZUxvZ1N0cmVhbScsXG4gICAgICAgICdsb2dzOlB1dExvZ0V2ZW50cydcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IFt0aGlzLnByb2plY3QucHJvamVjdEFybl1cbiAgICB9KSk7XG5cbiAgICAvLyBBbGxvdyB0aGUgcHJvamVjdCB0byBjcmVhdGUgYW4gaW52YWxpZGF0aW9uXG4gICAgaWYgKHByb3BzLmNsb3VkRnJvbnREaXN0cmlidXRpb25Bcm4pIHtcbiAgICAgIHRoaXMucHJvamVjdC5hZGRUb1JvbGVQb2xpY3kobmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFsnY2xvdWRmcm9udDpDcmVhdGVJbnZhbGlkYXRpb24nXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbcHJvcHMuY2xvdWRGcm9udERpc3RyaWJ1dGlvbkFybl1cbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvLyBBbGxvdyB0aGUgcHJvamVjdCB0byBzeW5jIGZpbGVzIHRvIFMzXG4gICAgaWYgKHByb3BzLnMzQnVja2V0TmFtZSkge1xuICAgICAgY29uc3QgczNCdWNrZXQgPSBCdWNrZXQuZnJvbUJ1Y2tldE5hbWUodGhpcywgJ1MzQnVja2V0QnlOYW1lJywgcHJvcHMuczNCdWNrZXROYW1lKTtcbiAgICAgIHMzQnVja2V0LmdyYW50UmVhZFdyaXRlKHRoaXMucHJvamVjdCk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnNzbVBhcmFtZXRlcnMpIHtcbiAgICAgIC8vIGRlZHVwXG4gICAgICBwcm9wcy5zc21QYXJhbWV0ZXJzID0gcHJvcHMuc3NtUGFyYW1ldGVycy5maWx0ZXIoKHYsIGksIGEpID0+IHtcbiAgICAgICAgcmV0dXJuIGEuZmluZEluZGV4KHAgPT4gcC5wYXRoID09PSB2LnBhdGgpID09PSBpO1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIHByb3BzLnNzbVBhcmFtZXRlcnMpIHtcbiAgICAgICAgbGV0IHN0clBhcmFtOiBJU3RyaW5nUGFyYW1ldGVyO1xuICAgICAgICBpZiAocGFyYW0uZW5jcnlwdGVkKSB7XG4gICAgICAgICAgc3RyUGFyYW0gPSBTdHJpbmdQYXJhbWV0ZXIuZnJvbVNlY3VyZVN0cmluZ1BhcmFtZXRlckF0dHJpYnV0ZXModGhpcywgcGFyYW0ucGF0aCwge1xuICAgICAgICAgICAgcGFyYW1ldGVyTmFtZTogcGFyYW0ucGF0aCxcbiAgICAgICAgICAgIHZlcnNpb246IHBhcmFtLnZlcnNpb25cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdHJQYXJhbSA9IFN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyQXR0cmlidXRlcyh0aGlzLCBwYXJhbS5wYXRoLCB7XG4gICAgICAgICAgICBwYXJhbWV0ZXJOYW1lOiBwYXJhbS5wYXRoLFxuICAgICAgICAgICAgdmVyc2lvbjogcGFyYW0udmVyc2lvblxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHN0clBhcmFtLmdyYW50UmVhZCh0aGlzLnByb2plY3QpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSJdfQ==
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWJ1aWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvY29kZWJ1aWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQWdDLFNBQVMsRUFBRSxXQUFXLEVBQWUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hKLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBb0IsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBb0Q3QyxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsU0FBUztJQUNyQyxPQUFPLENBQWtCO0lBRXpDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0M7UUFDNUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMseUJBQXlCLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUM5RixLQUFLLENBQUMsb0JBQW9CLENBQUMsMEJBQTBCLEdBQUc7Z0JBQ3RELEtBQUssRUFBRSxLQUFLLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcs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QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkQsQ0FBQyxDQUFDLENBQUM7WUFDSCxLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxRQUEwQixDQUFDO2dCQUMvQixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDcEIsUUFBUSxHQUFHLGVBQWUsQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTt3QkFDL0UsYUFBYSxFQUFFLEtBQUssQ0FBQyxJQUFJO3dCQUN6QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87cUJBQ3ZCLENBQUMsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sUUFBUSxHQUFHLGVBQWUsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTt3QkFDekUsYUFBYSxFQUFFLEtBQUssQ0FBQyxJQUFJO3dCQUN6QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87cUJBQ3ZCLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBCdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlLCBCdWlsZFNwZWMsIENvbXB1dGVUeXBlLCBJQnVpbGRJbWFnZSwgTGludXhCdWlsZEltYWdlLCBQaXBlbGluZVByb2plY3QgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgSVN0cmluZ1BhcmFtZXRlciwgU3RyaW5nUGFyYW1ldGVyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgdHlwZSB7IFNzbVN0cmluZ1BhcmFtZXRlciB9IGZyb20gXCIuL3NzbS50c1wiO1xuaW1wb3J0IHsgdGFnUmVzb3VyY2UgfSBmcm9tIFwiLi4vbGliL3RhZ3MuanNcIjtcbmltcG9ydCB0eXBlIHsgUmVzb3VyY2VQcm9wcyB9IGZyb20gXCIuLi90eXBlcy5kLnRzXCI7XG5cbmV4cG9ydCB0eXBlIEVudmlyb25tZW50VmFyaWFibGVzID0gUmVjb3JkPHN0cmluZywgeyB2YWx1ZTogYW55LCB0eXBlPzogQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZSB9PjtcblxuZXhwb3J0IHR5cGUgQ29kZUJ1aWxkSW1hZ2VJZCA9IFxuICAnYXdzL2NvZGVidWlsZC9hbWF6b25saW51eDItYWFyY2g2NC1zdGFuZGFyZDoxLjAnIHwgXG4gICdhd3MvY29kZWJ1aWxkL2FtYXpvbmxpbnV4Mi14ODZfNjQtc3RhbmRhcmQ6Mi4wJyB8XG4gICdhd3MvY29kZWJ1aWxkL2FtYXpvbmxpbnV4Mi14ODZfNjQtc3RhbmRhcmQ6My4wJyB8XG4gICdhd3MvY29kZWJ1aWxkL2FtYXpvbmxpbnV4LXg4Nl82NC1zdGFuZGFyZDo0LjAnIHxcbiAgJ2F3cy9jb2RlYnVpbGQvYW1hem9ubGludXgteDg2XzY0LXN0YW5kYXJkOjUuMCcgfFxuICAnYXdzL2NvZGVidWlsZC9hbWF6b25saW51eC14ODZfNjQtc3RhbmRhcmQ6Ni4wJyB8XG4gICdhd3MvY29kZWJ1aWxkL2FtYXpvbmxpbnV4LXg4Nl82NC1zdGFuZGFyZDpjb3JyZXR0bzgnIHxcbiAgJ2F3cy9jb2RlYnVpbGQvYW1hem9ubGludXgteDg2XzY0LXN0YW5kYXJkOmNvcnJldHRvMTEnIHxcbiAgJ2F3cy9jb2RlYnVpbGQvYW1hem9ubGludXgtYWFyY2g2NC1zdGFuZGFyZDoyLjAnIHxcbiAgJ2F3cy9jb2RlYnVpbGQvYW1hem9ubGludXgtYWFyY2g2NC1zdGFuZGFyZDozLjAnIHxcbiAgJ2F3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6My4wJyB8XG4gICdhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjQuMCcgfCBcbiAgJ2F3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6NS4wJyB8IC8vIG5vZGVqcyAxMiwgMTRcbiAgJ2F3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6Ni4wJyB8IC8vIG5vZGVqcyAxNlxuICAnYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo3LjAnIHwgLy8gbm9kZWpzIDE4LCAyMCwgMjIsIDI0XG4gICdhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjguMCcgfCAvLyBub2RlanMgMjIsIDI0XG4gICdhd3MvY29kZWJ1aWxkL3dpbmRvd3MtYmFzZToyMDE5LTEuMCcgfFxuICAnYXdzL2NvZGVidWlsZC93aW5kb3dzLWJhc2U6MjAxOS0yLjAnIHxcbiAgJ2F3cy9jb2RlYnVpbGQvd2luZG93cy1iYXNlOjIwMTktMy4wJyB8XG4gICdhd3MvY29kZWJ1aWxkL3dpbmRvd3MtYmFzZToyMDIyLTEuMCcgfFxuICAoc3RyaW5nICYge30pO1xuXG5leHBvcnQgdHlwZSBDb2RlQnVpbGRDb21wdXRlVHlwZSA9ICdTTUFMTCcgfCAnTUVESVVNJyB8ICdMQVJHRScgfCAnWF9MQVJHRScgfCAnWDJfTEFSR0UnIHwgKHN0cmluZyAmIHt9KTtcbmV4cG9ydCB0eXBlIENvZGVCdWlsZE5vZGVKcyA9IDEyIHwgMTQgfCAxNiB8IDE4IHwgMjAgfCAyMiB8IDI0IHwgKG51bWJlciAmIHt9KTtcblxuZXhwb3J0IGludGVyZmFjZSBDb2RlQnVpbGRTc21QYXJhbWV0ZXIgZXh0ZW5kcyBTc21TdHJpbmdQYXJhbWV0ZXIge1xuICBlbmNyeXB0ZWQ/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBFY3JCdWlsZEltYWdlIHtcbiAgcmVwb3NpdG9yeTogc3RyaW5nO1xuICB0YWc6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZUJ1aWxkUGlwZWxpbmVQcm9qZWN0UHJvcHMgZXh0ZW5kcyBSZXNvdXJjZVByb3BzIHtcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmc7XG4gIGJ1aWxkU3BlYz86IHN0cmluZyB8IG9iamVjdDtcbiAgZWNyQnVpbGRJbWFnZT86IEVjckJ1aWxkSW1hZ2UsXG4gIGJ1aWxkSW1hZ2U/OiBJQnVpbGRJbWFnZTtcbiAgYnVpbGRJbWFnZU5vZGVKUz86IENvZGVCdWlsZE5vZGVKcztcbiAgYnVpbGRJbWFnZUlkPzogQ29kZUJ1aWxkSW1hZ2VJZDtcbiAgY29tcHV0ZVR5cGU/OiBDb2RlQnVpbGRDb21wdXRlVHlwZTtcbiAgZW52aXJvbm1lbnRWYXJpYWJsZXM/OiBFbnZpcm9ubWVudFZhcmlhYmxlcztcbiAgY2xvdWRGcm9udERpc3RyaWJ1dGlvbkFybj86IHN0cmluZztcbiAgczNCdWNrZXROYW1lPzogc3RyaW5nO1xuICBzc21QYXJhbWV0ZXJzPzogQ29kZUJ1aWxkU3NtUGFyYW1ldGVyW107XG59XG5cbmV4cG9ydCBjbGFzcyBDb2RlQnVpbGRQaXBlbGluZVByb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogUGlwZWxpbmVQcm9qZWN0O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDb2RlQnVpbGRQaXBlbGluZVByb2plY3RQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAoIXByb3BzLmVudmlyb25tZW50VmFyaWFibGVzKSB7XG4gICAgICBwcm9wcy5lbnZpcm9ubWVudFZhcmlhYmxlcyA9IHt9O1xuICAgIH1cbiAgICBpZiAocHJvcHMuY2xvdWRGcm9udERpc3RyaWJ1dGlvbkFybiAmJiAhcHJvcHMuZW52aXJvbm1lbnRWYXJpYWJsZXMuQ0xPVURGUk9OVF9ESVNUUklCVVRJT05fSUQpIHtcbiAgICAgIHByb3BzLmVudmlyb25tZW50VmFyaWFibGVzLkNMT1VERlJPTlRfRElTVFJJQlVUSU9OX0lEID0ge1xuICAgICAgICB2YWx1ZTogcHJvcHMuY2xvdWRGcm9udERpc3RyaWJ1dGlvbkFybi5zcGxpdCgnLycpLnBvcCgpXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5zM0J1Y2tldE5hbWUgJiYgIXByb3BzLmVudmlyb25tZW50VmFyaWFibGVzLlMzX0JVQ0tFVF9OQU1FKSB7XG4gICAgICBwcm9wcy5lbnZpcm9ubWVudFZhcmlhYmxlcy5TM19CVUNLRVRfTkFNRSA9IHtcbiAgICAgICAgdmFsdWU6IHByb3BzLnMzQnVja2V0TmFtZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBsZXQgYnVpbGRJbWFnZTogSUJ1aWxkSW1hZ2UgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHByb3BzLmVjckJ1aWxkSW1hZ2UpIHtcbiAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSBwcm9wcy5lY3JCdWlsZEltYWdlLnJlcG9zaXRvcnkuc3RhcnRzV2l0aCgnYXJuOmF3cycpID8gXG4gICAgICAgIFJlcG9zaXRvcnkuZnJvbVJlcG9zaXRvcnlBcm4odGhpcywgJ0VjclJlcG9zaXRvcnknLCBwcm9wcy5lY3JCdWlsZEltYWdlLnJlcG9zaXRvcnkpIDpcbiAgICAgICAgUmVwb3NpdG9yeS5mcm9tUmVwb3NpdG9yeU5hbWUodGhpcywgJ0VjclJlcG9zaXRvcnknLCBwcm9wcy5lY3JCdWlsZEltYWdlLnJlcG9zaXRvcnkpO1xuICAgICAgYnVpbGRJbWFnZSA9IExpbnV4QnVpbGRJbWFnZS5mcm9tRWNyUmVwb3NpdG9yeShyZXBvc2l0b3J5LCBwcm9wcy5lY3JCdWlsZEltYWdlLnRhZyk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5idWlsZEltYWdlKSB7XG4gICAgICBidWlsZEltYWdlID0gcHJvcHMuYnVpbGRJbWFnZSBhcyBJQnVpbGRJbWFnZTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLmJ1aWxkSW1hZ2VOb2RlSlMpIHtcbiAgICAgIGxldCBzdGFuZGFyZCA9IDg7XG4gICAgICBzd2l0Y2ggKHByb3BzLmJ1aWxkSW1hZ2VOb2RlSlMpIHtcbiAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICBzdGFuZGFyZCA9IDU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgc3RhbmRhcmQgPSA2O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE4OlxuICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgIHN0YW5kYXJkID0gNztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGJ1aWxkSW1hZ2UgPSBMaW51eEJ1aWxkSW1hZ2UuZnJvbUNvZGVCdWlsZEltYWdlSWQoYGF3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6JHtzdGFuZGFyZH0uMGApO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuYnVpbGRJbWFnZUlkKSB7XG4gICAgICBidWlsZEltYWdlID0gTGludXhCdWlsZEltYWdlLmZyb21Db2RlQnVpbGRJbWFnZUlkKHByb3BzLmJ1aWxkSW1hZ2VJZCk7XG4gICAgfSBcbiAgICBcblxuICAgIHRoaXMucHJvamVjdCA9IG5ldyBQaXBlbGluZVByb2plY3QodGhpcywgJ0NvZGVCdWlsZFBpcGVsaW5lUHJvamVjdFByb3BzJywge1xuICAgICAgcHJvamVjdE5hbWU6IHByb3BzLnByb2plY3ROYW1lLFxuICAgICAgYnVpbGRTcGVjOiBwcm9wcy5idWlsZFNwZWMgPyB0eXBlb2YgcHJvcHMuYnVpbGRTcGVjID09ICdvYmplY3QnID8gQnVpbGRTcGVjLmZyb21PYmplY3RUb1lhbWwocHJvcHMuYnVpbGRTcGVjKSA6IEJ1aWxkU3BlYy5mcm9tU291cmNlRmlsZW5hbWUocHJvcHMuYnVpbGRTcGVjID8/ICdidWlsZHNwZWMueW1sJykgOiB1bmRlZmluZWQsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBidWlsZEltYWdlOiBidWlsZEltYWdlID8/IExpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF83XzAsXG4gICAgICAgIGNvbXB1dGVUeXBlOiBDb21wdXRlVHlwZVtwcm9wcy5jb21wdXRlVHlwZSBhcyAoa2V5b2YgdHlwZW9mIENvbXB1dGVUeXBlIHwgdW5kZWZpbmVkKSA/PyAnU01BTEwnXSxcbiAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHByb3BzLmVudmlyb25tZW50VmFyaWFibGVzXG4gICAgICB9XG4gICAgfSk7XG4gICAgdGFnUmVzb3VyY2UodGhpcy5wcm9qZWN0LCBwcm9wcy50YWdzKTtcbiAgICBpZiAodHlwZW9mIHByb3BzLmRlc3Ryb3kgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLnByb2plY3QuYXBwbHlSZW1vdmFsUG9saWN5KHByb3BzLmRlc3Ryb3kgPyBSZW1vdmFsUG9saWN5LkRFU1RST1kgOiBSZW1vdmFsUG9saWN5LlJFVEFJTik7XG4gICAgfVxuXG4gICAgLy8gQWRkIENsb3VkV2F0Y2ggbG9nIHBlcm1pc3Npb25zXG4gICAgdGhpcy5wcm9qZWN0LmFkZFRvUm9sZVBvbGljeShuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ2xvZ3M6Q3JlYXRlTG9nR3JvdXAnLFxuICAgICAgICAnbG9nczpDcmVhdGVMb2dTdHJlYW0nLFxuICAgICAgICAnbG9nczpQdXRMb2dFdmVudHMnXG4gICAgICBdLFxuICAgICAgcmVzb3VyY2VzOiBbdGhpcy5wcm9qZWN0LnByb2plY3RBcm5dXG4gICAgfSkpO1xuXG4gICAgLy8gQWxsb3cgdGhlIHByb2plY3QgdG8gY3JlYXRlIGFuIGludmFsaWRhdGlvblxuICAgIGlmIChwcm9wcy5jbG91ZEZyb250RGlzdHJpYnV0aW9uQXJuKSB7XG4gICAgICB0aGlzLnByb2plY3QuYWRkVG9Sb2xlUG9saWN5KG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ2Nsb3VkZnJvbnQ6Q3JlYXRlSW52YWxpZGF0aW9uJ10sXG4gICAgICAgIHJlc291cmNlczogW3Byb3BzLmNsb3VkRnJvbnREaXN0cmlidXRpb25Bcm5dXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgLy8gQWxsb3cgdGhlIHByb2plY3QgdG8gc3luYyBmaWxlcyB0byBTM1xuICAgIGlmIChwcm9wcy5zM0J1Y2tldE5hbWUpIHtcbiAgICAgIGNvbnN0IHMzQnVja2V0ID0gQnVja2V0LmZyb21CdWNrZXROYW1lKHRoaXMsICdTM0J1Y2tldEJ5TmFtZScsIHByb3BzLnMzQnVja2V0TmFtZSk7XG4gICAgICBzM0J1Y2tldC5ncmFudFJlYWRXcml0ZSh0aGlzLnByb2plY3QpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5zc21QYXJhbWV0ZXJzKSB7XG4gICAgICAvLyBkZWR1cFxuICAgICAgcHJvcHMuc3NtUGFyYW1ldGVycyA9IHByb3BzLnNzbVBhcmFtZXRlcnMuZmlsdGVyKCh2LCBpLCBhKSA9PiB7XG4gICAgICAgIHJldHVybiBhLmZpbmRJbmRleChwID0+IHAucGF0aCA9PT0gdi5wYXRoKSA9PT0gaTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBwYXJhbSBvZiBwcm9wcy5zc21QYXJhbWV0ZXJzKSB7XG4gICAgICAgIGxldCBzdHJQYXJhbTogSVN0cmluZ1BhcmFtZXRlcjtcbiAgICAgICAgaWYgKHBhcmFtLmVuY3J5cHRlZCkge1xuICAgICAgICAgIHN0clBhcmFtID0gU3RyaW5nUGFyYW1ldGVyLmZyb21TZWN1cmVTdHJpbmdQYXJhbWV0ZXJBdHRyaWJ1dGVzKHRoaXMsIHBhcmFtLnBhdGgsIHtcbiAgICAgICAgICAgIHBhcmFtZXRlck5hbWU6IHBhcmFtLnBhdGgsXG4gICAgICAgICAgICB2ZXJzaW9uOiBwYXJhbS52ZXJzaW9uXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RyUGFyYW0gPSBTdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlckF0dHJpYnV0ZXModGhpcywgcGFyYW0ucGF0aCwge1xuICAgICAgICAgICAgcGFyYW1ldGVyTmFtZTogcGFyYW0ucGF0aCxcbiAgICAgICAgICAgIHZlcnNpb246IHBhcmFtLnZlcnNpb25cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBzdHJQYXJhbS5ncmFudFJlYWQodGhpcy5wcm9qZWN0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RemovalPolicy, PhysicalName } from "aws-cdk-lib";
|
|
2
2
|
import { Construct } from 'constructs';
|
|
3
|
-
import { Artifact, Pipeline } from "aws-cdk-lib/aws-codepipeline";
|
|
3
|
+
import { Artifact, Pipeline, PipelineType } from "aws-cdk-lib/aws-codepipeline";
|
|
4
4
|
import { CodeBuildAction, CodeStarConnectionsSourceAction } from "aws-cdk-lib/aws-codepipeline-actions";
|
|
5
5
|
import { Bucket } from 'aws-cdk-lib/aws-s3';
|
|
6
6
|
import { StringParameter } from 'aws-cdk-lib/aws-ssm';
|
|
@@ -18,7 +18,8 @@ export class CodePipelineProject extends Construct {
|
|
|
18
18
|
tagResource(this.s3Bucket, props.tags);
|
|
19
19
|
this.pipeline = new Pipeline(this, 'CodePipelineProject', {
|
|
20
20
|
pipelineName: props.pipelineName,
|
|
21
|
-
artifactBucket: this.s3Bucket
|
|
21
|
+
artifactBucket: this.s3Bucket,
|
|
22
|
+
pipelineType: PipelineType.V2
|
|
22
23
|
});
|
|
23
24
|
tagResource(this.pipeline, props.tags);
|
|
24
25
|
if (typeof props.destroy == 'boolean') {
|
|
@@ -60,4 +61,4 @@ export class CodePipelineProject extends Construct {
|
|
|
60
61
|
});
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXBpcGVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvY29kZXBpcGVsaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFPLE1BQU0sYUFBYSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBcUI3QyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsU0FBUztJQUNoQyxRQUFRLENBQVM7SUFDakIsUUFBUSxDQUFXO0lBRW5DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBK0I7UUFDdkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSw0QkFBNEIsRUFBRTtZQUM3RCxVQUFVLEVBQUUsWUFBWSxDQUFDLGtCQUFrQjtZQUMzQyxhQUFhLEVBQUUsS0FBSyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDckgsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUztTQUM3RCxDQUFDLENBQUM7UUFDSCxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUU7WUFDeEQsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUM3QixZQUFZLEVBQUUsWUFBWSxDQUFDLEVBQUU7U0FDOUIsQ0FBQyxDQUFDO1FBRUgsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksT0FBTyxLQUFLLENBQUMsT0FBTyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pHLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQTRCO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFFaEMsTUFBTSxhQUFhLEdBQVcsT0FBTyxNQUFNLENBQUMsa0JBQWtCLElBQUksUUFBUSxDQUFDLENBQUM7WUFDekUsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDM0IsZUFBZSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRyxNQUFNLENBQUMsa0JBQXlDLENBQUMsSUFBSSxFQUFHLE1BQU0sQ0FBQyxrQkFBeUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVwSyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUNyQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsSUFBSSxRQUFRO1lBQ3ZDLE9BQU8sRUFBRTtnQkFDUCxJQUFJLCtCQUErQixDQUFDO29CQUNsQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFNBQVMsSUFBSSxRQUFRO29CQUN4QyxNQUFNLEVBQUUsUUFBUTtvQkFDaEIsYUFBYTtvQkFDYixLQUFLLEVBQUUsTUFBTSxDQUFDLFNBQVM7b0JBQ3ZCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtvQkFDakIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO29CQUNyQixvQkFBb0IsRUFBRSxNQUFNLENBQUMsU0FBUztpQkFDdkMsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUEyQjtRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUNyQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsSUFBSSxPQUFPO1lBQ3RDLE9BQU8sRUFBRTtnQkFDUCxJQUFJLGVBQWUsQ0FBQztvQkFDbEIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxTQUFTLElBQUksT0FBTztvQkFDdkMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7b0JBQ2hDLEtBQUssRUFBRSxNQUFNLENBQUMsY0FBYztvQkFDNUIsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQjtpQkFDbEQsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSwgUGh5c2ljYWxOYW1lLCBBd3MgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSVByb2plY3QgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVidWlsZFwiO1xuaW1wb3J0IHsgQXJ0aWZhY3QsIFBpcGVsaW5lLCBQaXBlbGluZVR5cGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZVwiO1xuaW1wb3J0IHsgQ29kZUJ1aWxkQWN0aW9uLCBDb2RlU3RhckNvbm5lY3Rpb25zU291cmNlQWN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2RlcGlwZWxpbmUtYWN0aW9uc1wiO1xuaW1wb3J0IHsgQnVja2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IFN0cmluZ1BhcmFtZXRlciB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuXG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50VmFyaWFibGVzIH0gZnJvbSAnLi9jb2RlYnVpbGQudHMnO1xuaW1wb3J0IHR5cGUgeyBTc21TdHJpbmdQYXJhbWV0ZXIgfSBmcm9tICcuL3NzbS50cyc7XG5pbXBvcnQgeyB0YWdSZXNvdXJjZSB9IGZyb20gXCIuLi9saWIvdGFncy5qc1wiO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZVByb3BzIH0gZnJvbSAnLi4vdHlwZXMuZC50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkU291cmNlU3RhZ2VQYXJhbXMge1xuICBzdGFnZU5hbWU/OiBzdHJpbmc7XG4gIGNvZGVzdGFyQ29ubmVjdGlvbjogc3RyaW5nIHwgU3NtU3RyaW5nUGFyYW1ldGVyO1xuICByZXBvT3duZXI6IHN0cmluZztcbiAgcmVwbzogc3RyaW5nO1xuICBicmFuY2g6IHN0cmluZztcbiAgZnVsbENsb25lPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQnVpbGRTdGFnZVBhcmFtcyB7XG4gIHN0YWdlTmFtZT86IHN0cmluZztcbiAgY29kZUJ1aWxkUHJvamVjdDogSVByb2plY3Q7XG4gIHNvdXJjZUFydGlmYWN0OiBBcnRpZmFjdDtcbiAgZW52aXJvbm1lbnRWYXJpYWJsZXM/OiBFbnZpcm9ubWVudFZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2RlUGlwZWxpbmVQcm9qZWN0UHJvcHMgZXh0ZW5kcyBSZXNvdXJjZVByb3BzIHtcbiAgcGlwZWxpbmVOYW1lPzogc3RyaW5nO1xufVxuZXhwb3J0IGNsYXNzIENvZGVQaXBlbGluZVByb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgczNCdWNrZXQ6IEJ1Y2tldDtcbiAgcHVibGljIHJlYWRvbmx5IHBpcGVsaW5lOiBQaXBlbGluZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ29kZVBpcGVsaW5lUHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuczNCdWNrZXQgPSBuZXcgQnVja2V0KHRoaXMsICdDb2RlUGlwZWxpbmVBcnRpZmFjdEJ1Y2tldCcsIHtcbiAgICAgIGJ1Y2tldE5hbWU6IFBoeXNpY2FsTmFtZS5HRU5FUkFURV9JRl9ORUVERUQsXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5kZXN0cm95ICE9PSB1bmRlZmluZWQgPyBwcm9wcy5kZXN0cm95ID8gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZIDogUmVtb3ZhbFBvbGljeS5SRVRBSU4gOiB1bmRlZmluZWQsXG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogcHJvcHMuZGVzdHJveSA9PT0gdHJ1ZSA/IHRydWUgOiB1bmRlZmluZWRcbiAgICB9KTtcbiAgICB0YWdSZXNvdXJjZSh0aGlzLnMzQnVja2V0LCBwcm9wcy50YWdzKTtcblxuICAgIHRoaXMucGlwZWxpbmUgPSBuZXcgUGlwZWxpbmUodGhpcywgJ0NvZGVQaXBlbGluZVByb2plY3QnLCB7XG4gICAgICBwaXBlbGluZU5hbWU6IHByb3BzLnBpcGVsaW5lTmFtZSxcbiAgICAgIGFydGlmYWN0QnVja2V0OiB0aGlzLnMzQnVja2V0LFxuICAgICAgcGlwZWxpbmVUeXBlOiBQaXBlbGluZVR5cGUuVjJcbiAgICB9KTtcblxuICAgIHRhZ1Jlc291cmNlKHRoaXMucGlwZWxpbmUsIHByb3BzLnRhZ3MpO1xuICAgIGlmICh0eXBlb2YgcHJvcHMuZGVzdHJveSA9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMucGlwZWxpbmUuYXBwbHlSZW1vdmFsUG9saWN5KHByb3BzLmRlc3Ryb3kgPyBSZW1vdmFsUG9saWN5LkRFU1RST1kgOiBSZW1vdmFsUG9saWN5LlJFVEFJTik7XG4gICAgfVxuICB9XG5cbiAgYWRkU291cmNlU3RhZ2UocGFyYW1zOiBBZGRTb3VyY2VTdGFnZVBhcmFtcyk6IEFydGlmYWN0IHtcbiAgICBjb25zdCBhcnRpZmFjdCA9IG5ldyBBcnRpZmFjdCgpO1xuXG4gICAgY29uc3QgY29ubmVjdGlvbkFybjogc3RyaW5nID0gdHlwZW9mIHBhcmFtcy5jb2Rlc3RhckNvbm5lY3Rpb24gPT0gJ3N0cmluZycgP1xuICAgICAgIHBhcmFtcy5jb2Rlc3RhckNvbm5lY3Rpb24gOlxuICAgICAgIFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcih0aGlzLCAocGFyYW1zLmNvZGVzdGFyQ29ubmVjdGlvbiBhcyBTc21TdHJpbmdQYXJhbWV0ZXIpLnBhdGgsIChwYXJhbXMuY29kZXN0YXJDb25uZWN0aW9uIGFzIFNzbVN0cmluZ1BhcmFtZXRlcikudmVyc2lvbik7XG5cbiAgICB0aGlzLnBpcGVsaW5lLmFkZFN0YWdlKHtcbiAgICAgIHN0YWdlTmFtZTogcGFyYW1zLnN0YWdlTmFtZSA/PyAnU291cmNlJyxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgbmV3IENvZGVTdGFyQ29ubmVjdGlvbnNTb3VyY2VBY3Rpb24oe1xuICAgICAgICAgIGFjdGlvbk5hbWU6IHBhcmFtcy5zdGFnZU5hbWUgPz8gJ1NvdXJjZScsXG4gICAgICAgICAgb3V0cHV0OiBhcnRpZmFjdCxcbiAgICAgICAgICBjb25uZWN0aW9uQXJuLFxuICAgICAgICAgIG93bmVyOiBwYXJhbXMucmVwb093bmVyLFxuICAgICAgICAgIHJlcG86IHBhcmFtcy5yZXBvLFxuICAgICAgICAgIGJyYW5jaDogcGFyYW1zLmJyYW5jaCxcbiAgICAgICAgICBjb2RlQnVpbGRDbG9uZU91dHB1dDogcGFyYW1zLmZ1bGxDbG9uZVxuICAgICAgICB9KVxuICAgICAgXVxuICAgIH0pO1xuICAgIHJldHVybiBhcnRpZmFjdDtcbiAgfVxuXG4gIGFkZEJ1aWxkU3RhZ2UocGFyYW1zOiBBZGRCdWlsZFN0YWdlUGFyYW1zKSB7XG4gICAgdGhpcy5waXBlbGluZS5hZGRTdGFnZSh7XG4gICAgICBzdGFnZU5hbWU6IHBhcmFtcy5zdGFnZU5hbWUgPz8gJ0J1aWxkJyxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgbmV3IENvZGVCdWlsZEFjdGlvbih7XG4gICAgICAgICAgYWN0aW9uTmFtZTogcGFyYW1zLnN0YWdlTmFtZSA/PyAnQnVpbGQnLFxuICAgICAgICAgIHByb2plY3Q6IHBhcmFtcy5jb2RlQnVpbGRQcm9qZWN0LFxuICAgICAgICAgIGlucHV0OiBwYXJhbXMuc291cmNlQXJ0aWZhY3QsXG4gICAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHBhcmFtcy5lbnZpcm9ubWVudFZhcmlhYmxlc1xuICAgICAgICB9KVxuICAgICAgXVxuICAgIH0pO1xuICB9XG59Il19
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from './lib/tags.js';
|
|
2
|
+
export * from './cli/index.js';
|
|
2
3
|
export function getEnv(env) {
|
|
3
4
|
let account = process.env.CDK_DEFAULT_ACCOUNT || '';
|
|
4
5
|
let region = process.env.CDK_DEFAULT_REGION || 'us-east-1';
|
|
@@ -23,4 +24,4 @@ export function getEnv(env) {
|
|
|
23
24
|
}
|
|
24
25
|
return { account, region };
|
|
25
26
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxnQkFBZ0IsQ0FBQztBQVUvQixNQUFNLFVBQVUsTUFBTSxDQUFDLEdBQWtEO0lBQ3ZFLElBQUksT0FBTyxHQUFXLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDO0lBQzVELElBQUksTUFBTSxHQUFXLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLElBQUksV0FBVyxDQUFDO0lBQ25FLElBQUksR0FBRyxFQUFFLENBQUM7UUFDUixRQUFRLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbkIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3pCLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3RCLE9BQU8sR0FBRyxHQUFHLENBQUM7Z0JBQ2hCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLEdBQUcsR0FBRyxDQUFDO2dCQUNmLENBQUM7Z0JBQ0QsTUFBTTtZQUNSO2dCQUNFLE9BQU8sR0FBSSxHQUFtQixDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQzdDLE1BQU0sR0FBSSxHQUFtQixDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUM7Z0JBQy9DLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhZ3MuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jbGkvaW5kZXguanMnO1xuXG5pbnRlcmZhY2UgR2V0RW52UGFyYW1zIHsgXG4gIGFjY291bnQ/OiBudW1iZXIgfCBzdHJpbmc7XG4gIHJlZ2lvbj86IHN0cmluZzsgXG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RW52KHJlZ2lvbj86IHN0cmluZyk6IEVudmlyb25tZW50O1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVudihhY2NvdW50Pzogc3RyaW5nIHwgbnVtYmVyKTogRW52aXJvbm1lbnQ7XG5leHBvcnQgZnVuY3Rpb24gZ2V0RW52KHsgYWNjb3VudCwgcmVnaW9uIH06IEdldEVudlBhcmFtcyk6IEVudmlyb25tZW50O1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVudihlbnY/OiBFbnZpcm9ubWVudCk6IEVudmlyb25tZW50O1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVudihlbnY/OiBzdHJpbmcgfCBudW1iZXIgfCBHZXRFbnZQYXJhbXMgfCBFbnZpcm9ubWVudCkge1xuICBsZXQgYWNjb3VudDogc3RyaW5nID0gcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVCB8fCAnJztcbiAgbGV0IHJlZ2lvbjogc3RyaW5nID0gcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OIHx8ICd1cy1lYXN0LTEnO1xuICBpZiAoZW52KSB7XG4gICAgc3dpdGNoICh0eXBlb2YgZW52KSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICBhY2NvdW50ID0gZW52LnRvU3RyaW5nKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgaWYgKC9eXFxkKyQvLnRlc3QoZW52KSkge1xuICAgICAgICAgIGFjY291bnQgPSBlbnY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVnaW9uID0gZW52O1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYWNjb3VudCA9IChlbnYgYXMgRW52aXJvbm1lbnQpLmFjY291bnQgPz8gJyc7XG4gICAgICAgIHJlZ2lvbiA9IChlbnYgYXMgRW52aXJvbm1lbnQpLnJlZ2lvbiA/PyByZWdpb247XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBhY2NvdW50LCByZWdpb24gfTtcbn0iXX0=
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import { Stack, StackProps } from 'aws-cdk-lib/core';
|
|
2
2
|
import { Construct } from 'constructs';
|
|
3
3
|
import { Certificate } from "aws-cdk-lib/aws-certificatemanager";
|
|
4
|
-
import { Distribution, Function,
|
|
4
|
+
import { Distribution, Function, IResponseHeadersPolicy, ResponseHeadersPolicyProps } from 'aws-cdk-lib/aws-cloudfront';
|
|
5
5
|
import { ARecord, AaaaRecord } from "aws-cdk-lib/aws-route53";
|
|
6
6
|
import { Bucket } from "aws-cdk-lib/aws-s3";
|
|
7
7
|
import { CfnWebACL } from 'aws-cdk-lib/aws-wafv2';
|
|
8
8
|
import { CloudFrontFunctionRedirects } from '../../constructs/cloudfront.js';
|
|
9
9
|
import type { SsmStringParameter } from '../../constructs/ssm.ts';
|
|
10
|
-
import type { BasicAuthCredentials, CspHeaders } from '../../types.d.ts';
|
|
11
|
-
type AWSManagedResponseHeadersPolicy = 'CORS_ALLOW_ALL_ORIGINS' | 'CORS_ALLOW_ALL_ORIGINS_AND_SECURITY_HEADERS' | 'CORS_ALLOW_ALL_ORIGINS_WITH_PREFLIGHT' | 'CORS_ALLOW_ALL_ORIGINS_WITH_PREFLIGHT_AND_SECURITY_HEADERS' | 'SECURITY_HEADERS';
|
|
12
|
-
type UUID = `${string}-${string}-${string}-${string}-${string}`;
|
|
13
|
-
type CloudFrontFunctionEventType = keyof typeof FunctionEventType;
|
|
10
|
+
import type { BasicAuthCredentials, CspHeaders, CloudFrontFunctionEventType, UUID, AWSManagedResponseHeadersPolicy } from '../../types.d.ts';
|
|
14
11
|
export interface WebGlobalStackProps {
|
|
15
12
|
envType: 'NOT_PROD' | 'PROD';
|
|
16
13
|
description?: string;
|
|
@@ -19,8 +16,8 @@ export interface WebGlobalStackProps {
|
|
|
19
16
|
domainName: string;
|
|
20
17
|
basicAuth?: string | BasicAuthCredentials | SsmStringParameter;
|
|
21
18
|
cloudfrontFunction?: {
|
|
22
|
-
eventType: CloudFrontFunctionEventType[];
|
|
23
19
|
code: string;
|
|
20
|
+
eventType: CloudFrontFunctionEventType[];
|
|
24
21
|
};
|
|
25
22
|
redirects?: CloudFrontFunctionRedirects;
|
|
26
23
|
redirectsCsvPath?: string;
|
|
@@ -42,4 +39,3 @@ export declare class WebGlobalStack extends Stack {
|
|
|
42
39
|
readonly aaaaRecord: AaaaRecord;
|
|
43
40
|
constructor(scope: Construct, id: string, props: WebGlobalStackProps & StackProps);
|
|
44
41
|
}
|
|
45
|
-
export {};
|
|
@@ -93,6 +93,7 @@ export class WebGlobalStack extends Stack {
|
|
|
93
93
|
});
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
+
// TODO: Figure out why the the policy is not getting updated in the CloudFront behavior
|
|
96
97
|
this.responseHeadersPolicy = responseHeadersPolicy;
|
|
97
98
|
const defaultBehavior = {
|
|
98
99
|
origin: S3BucketOrigin.withOriginAccessControl(this.s3Bucket),
|
|
@@ -191,4 +192,4 @@ export class WebGlobalStack extends Stack {
|
|
|
191
192
|
this.aaaaRecord = cfAlias.aaaaRecord;
|
|
192
193
|
}
|
|
193
194
|
}
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLWdsb2JhbC1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGFja3Mvd2ViLXN0YXRpYy1zZXJ2ZXJsZXNzL3dlYi1nbG9iYWwtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBYyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJN0UsT0FBTyxFQUEwQixpQkFBaUIsRUFBd0cscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUcvUCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBK0Isa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6SCxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQW9DcEUsTUFBTSxPQUFPLGNBQWUsU0FBUSxLQUFLO0lBQ3ZCLGNBQWMsQ0FBYztJQUM1QixRQUFRLENBQVM7SUFDakIsa0JBQWtCLENBQVc7SUFDN0Isc0JBQXNCLENBQWU7SUFDckMsTUFBTSxDQUF3QjtJQUM5QixxQkFBcUIsQ0FBcUM7SUFDMUQsT0FBTyxDQUFVO0lBQ2pCLFVBQVUsQ0FBYTtJQUV2QyxZQUFZLEtBQWdC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QUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO1lBQ3RCLFFBQVEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUM3QixDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7WUFDaEYsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxVQUFVO1lBQ2xELFVBQVUsRUFBRSxLQUFLLENBQUMsT0FBTztZQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDaEMsZUFBZTtZQUNmLFFBQVE7U0FDVCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQztRQUUxRCxNQUFNLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDM0QsWUFBWSxFQUFFLGNBQWMsQ0FBQyxZQUFZO1lBQ3pDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixVQUFVLEVBQUUsVUFBVTtTQUN2QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrLCBTdGFja1Byb3BzLCBQaHlzaWNhbE5hbWUsIER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuaW1wb3J0IHsgQ2VydGlmaWNhdGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuaW1wb3J0IHsgRGlzdHJpYnV0aW9uLCBGdW5jdGlvbiwgRnVuY3Rpb25FdmVudFR5cGUsIElSZXNwb25zZUhlYWRlcnNQb2xpY3ksIFJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzLCBSZXNwb25zZVNlY3VyaXR5SGVhZGVyc0JlaGF2aW9yLCBCZWhhdmlvck9wdGlvbnMsIFJlc3BvbnNlSGVhZGVyc1BvbGljeSwgSGVhZGVyc0ZyYW1lT3B0aW9uLCBIZWFkZXJzUmVmZXJyZXJQb2xpY3kgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udCc7XG5pbXBvcnQgeyBBUmVjb3JkLCBBYWFhUmVjb3JkIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQgeyBCdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBTdHJpbmdQYXJhbWV0ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCB7IENmbldlYkFDTCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy13YWZ2Mic7XG5cbmltcG9ydCB7IFNTTENlcnRpZmljYXRlIH0gZnJvbSAnLi4vLi4vY29uc3RydWN0cy9jZXJ0aWZpY2F0ZW1hbmFnZXIuanMnO1xuaW1wb3J0IHsgQ2xvdWRGcm9udEZ1bmN0aW9uUmVkaXJlY3RzLCBDbG91ZEZyb250RnVuY3Rpb24sIENsb3VkRnJvbnREaXN0cmlidXRpb24gfSBmcm9tICcuLi8uLi9jb25zdHJ1Y3RzL2Nsb3VkZnJvbnQuanMnO1xuaW1wb3J0IHsgZ2V0SG9zdGVkWm9uZSwgQ2xvdWRGcm9udEFsaWFzIH0gZnJvbSAnLi4vLi4vY29uc3RydWN0cy9yb3V0ZTUzLmpzJztcbmltcG9ydCB7IFMzQnVja2V0IH0gZnJvbSAnLi4vLi4vY29uc3RydWN0cy9zMy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNzbVN0cmluZ1BhcmFtZXRlciB9IGZyb20gJy4uLy4uL2NvbnN0cnVjdHMvc3NtLnRzJztcbmltcG9ydCB7IENsb3VkRnJvbnRXZWJBY2wgfSBmcm9tICcuLi8uLi9jb25zdHJ1Y3RzL3dhZi5qcyc7XG5pbXBvcnQgeyBkb21haW5Bc0lkIH0gZnJvbSAnLi4vLi4vbGliL3V0aWxzLmpzJztcbmltcG9ydCB7IGFkZEV2b1N0YWNrVGFncyB9IGZyb20gJy4uLy4uL2xpYi90YWdzLnRzJztcbmltcG9ydCB7IFMzQnVja2V0T3JpZ2luIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQtb3JpZ2lucyc7XG5pbXBvcnQgdHlwZSB7IEJhc2ljQXV0aENyZWRlbnRpYWxzLCBDc3BIZWFkZXJzIH0gZnJvbSAnLi4vLi4vdHlwZXMuZC50cyc7XG5cblxudHlwZSBBV1NNYW5hZ2VkUmVzcG9uc2VIZWFkZXJzUG9saWN5ID0gXG4gICdDT1JTX0FMTE9XX0FMTF9PUklHSU5TJyB8XG4gICdDT1JTX0FMTE9XX0FMTF9PUklHSU5TX0FORF9TRUNVUklUWV9IRUFERVJTJyB8XG4gICdDT1JTX0FMTE9XX0FMTF9PUklHSU5TX1dJVEhfUFJFRkxJR0hUJyB8XG4gICdDT1JTX0FMTE9XX0FMTF9PUklHSU5TX1dJVEhfUFJFRkxJR0hUX0FORF9TRUNVUklUWV9IRUFERVJTJyB8XG4gICdTRUNVUklUWV9IRUFERVJTJztcblxudHlwZSBVVUlEID0gYCR7c3RyaW5nfS0ke3N0cmluZ30tJHtzdHJpbmd9LSR7c3RyaW5nfS0ke3N0cmluZ31gO1xudHlwZSBDbG91ZEZyb250RnVuY3Rpb25FdmVudFR5cGUgPSBrZXlvZiB0eXBlb2YgRnVuY3Rpb25FdmVudFR5cGU7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2ViR2xvYmFsU3RhY2tQcm9wcyB7XG4gIGVudlR5cGU6ICdOT1RfUFJPRCcgfCAnUFJPRCc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBidWNrZXROYW1lPzogc3RyaW5nO1xuICBob3N0ZWRab25lOiBzdHJpbmc7XG4gIGRvbWFpbk5hbWU6IHN0cmluZztcbiAgYmFzaWNBdXRoPzogc3RyaW5nIHwgQmFzaWNBdXRoQ3JlZGVudGlhbHMgfCBTc21TdHJpbmdQYXJhbWV0ZXI7XG4gIGNsb3VkZnJvbnRGdW5jdGlvbj86IHtcbiAgICBldmVudFR5cGU6IENsb3VkRnJvbnRGdW5jdGlvbkV2ZW50VHlwZVtdO1xuICAgIGNvZGU6IHN0cmluZztcbiAgfVxuICByZWRpcmVjdHM/OiBDbG91ZEZyb250RnVuY3Rpb25SZWRpcmVjdHM7XG4gIHJlZGlyZWN0c0NzdlBhdGg/OiBzdHJpbmc7XG4gIC8vIGF0dGFjaFdlYkFjbD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIHdlYkFjbD86IGJvb2xlYW4gfCBzdHJpbmcgfCBTc21TdHJpbmdQYXJhbWV0ZXI7XG4gIHJlc3BvbnNlSGVhZGVyc1BvbGljeT86IGZhbHNlIHwgQVdTTWFuYWdlZFJlc3BvbnNlSGVhZGVyc1BvbGljeSB8IFVVSUQgfCBTc21TdHJpbmdQYXJhbWV0ZXI7XG4gIHJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzPzogUmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHM7XG4gIHJlc3BvbnNlQ3NwSGVhZGVycz86IENzcEhlYWRlcnM7XG4gIGRlc3Ryb3k/OiBib29sZWFuO1xuICB0YWdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGNsYXNzIFdlYkdsb2JhbFN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBwdWJsaWMgcmVhZG9ubHkgc3NsQ2VydGlmaWNhdGU6IENlcnRpZmljYXRlO1xuICBwdWJsaWMgcmVhZG9ubHkgczNCdWNrZXQ6IEJ1Y2tldDtcbiAgcHVibGljIHJlYWRvbmx5IGNsb3VkRnJvbnRGdW5jdGlvbjogRnVuY3Rpb247XG4gIHB1YmxpYyByZWFkb25seSBjbG91ZEZyb250RGlzdHJpYnV0aW9uOiBEaXN0cmlidXRpb247XG4gIHB1YmxpYyByZWFkb25seSB3ZWJBY2w6IENmbldlYkFDTCB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IHJlc3BvbnNlSGVhZGVyc1BvbGljeTogSVJlc3BvbnNlSGVhZGVyc1BvbGljeSB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IGFSZWNvcmQ6IEFSZWNvcmQ7XG4gIHB1YmxpYyByZWFkb25seSBhYWFhUmVjb3JkOiBBYWFhUmVjb3JkO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBXZWJHbG9iYWxTdGFja1Byb3BzICYgU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIGFkZEV2b1N0YWNrVGFncyh0aGlzLCAnV2ViR2xvYmFsU3RhY2snKTtcblxuICAgIGNvbnN0IGhvc3RlZFpvbmUgPSBnZXRIb3N0ZWRab25lKHRoaXMsICdnZXRIb3N0ZWRab25lJywgcHJvcHMuaG9zdGVkWm9uZSk7XG5cbiAgICBjb25zdCBfc3NsQ2VydCA9IG5ldyBTU0xDZXJ0aWZpY2F0ZSh0aGlzLCAnU1NMQ2VydGlmaWNhdGUnLCB7XG4gICAgICBob3N0ZWRab25lOiBob3N0ZWRab25lLFxuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG9tYWluTmFtZSxcbiAgICAgIGRlc3Ryb3k6IHByb3BzLmRlc3Ryb3lcbiAgICB9KTtcbiAgICB0aGlzLnNzbENlcnRpZmljYXRlID0gX3NzbENlcnQuY2VydGlmaWNhdGU7XG5cbiAgICBjb25zdCBfczNCdWNrZXQgPSBuZXcgUzNCdWNrZXQodGhpcywgJ1MzQnVja2V0Jywge1xuICAgICAgYnVja2V0TmFtZTogcHJvcHMuYnVja2V0TmFtZSA/PyBQaHlzaWNhbE5hbWUuR0VORVJBVEVfSUZfTkVFREVELFxuICAgICAgZGVzdHJveTogcHJvcHMuZGVzdHJveVxuICAgIH0pO1xuICAgIHRoaXMuczNCdWNrZXQgPSBfczNCdWNrZXQuYnVja2V0O1xuXG4gICAgbGV0IHJlc3BvbnNlSGVhZGVyc1BvbGljeTogSVJlc3BvbnNlSGVhZGVyc1BvbGljeSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5KSB7XG4gICAgICBpZiAodHlwZW9mIHByb3BzLnJlc3BvbnNlSGVhZGVyc1BvbGljeSA9PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoL15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kL2kudGVzdChwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kpKSB7XG4gICAgICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5ID0gUmVzcG9uc2VIZWFkZXJzUG9saWN5LmZyb21SZXNwb25zZUhlYWRlcnNQb2xpY3lJZCh0aGlzLCAncmVzcG9uc2UtaGVhZGVycy1wb2xpY3ktYnktaWQnLCBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3BvbnNlSGVhZGVyc1BvbGljeSA9IFJlc3BvbnNlSGVhZGVyc1BvbGljeVtwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kgYXMga2V5b2YgdHlwZW9mIFJlc3BvbnNlSGVhZGVyc1BvbGljeV0gYXMgSVJlc3BvbnNlSGVhZGVyc1BvbGljeSA/PyBSZXNwb25zZUhlYWRlcnNQb2xpY3kuU0VDVVJJVFlfSEVBREVSUztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kucGF0aCkge1xuICAgICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3kgPSBSZXNwb25zZUhlYWRlcnNQb2xpY3kuZnJvbVJlc3BvbnNlSGVhZGVyc1BvbGljeUlkKHRoaXMsICdyZXNwb25zZS1oZWFkZXJzLXBvbGljeS1ieS1pZCcsIFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcih0aGlzLCBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kucGF0aCwgcHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5LnZlcnNpb24pKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYmFzZUhlYWRlcnNCZWhhdmlvcjogUmVzcG9uc2VTZWN1cml0eUhlYWRlcnNCZWhhdmlvciA9IHtcbiAgICAgICAgc3RyaWN0VHJhbnNwb3J0U2VjdXJpdHk6IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICBhY2Nlc3NDb250cm9sTWF4QWdlOiBEdXJhdGlvbi5zZWNvbmRzKDMxNTM2MDAwKVxuICAgICAgICB9LFxuICAgICAgICBjb250ZW50VHlwZU9wdGlvbnM6IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBmcmFtZU9wdGlvbnM6IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICBmcmFtZU9wdGlvbjogSGVhZGVyc0ZyYW1lT3B0aW9uLlNBTUVPUklHSU4sXG4gICAgICAgIH0sXG4gICAgICAgIHJlZmVycmVyUG9saWN5OiB7XG4gICAgICAgICAgb3ZlcnJpZGU6IHRydWUsXG4gICAgICAgICAgcmVmZXJyZXJQb2xpY3k6IEhlYWRlcnNSZWZlcnJlclBvbGljeS5TVFJJQ1RfT1JJR0lOX1dIRU5fQ1JPU1NfT1JJR0lOXG4gICAgICAgIH0sXG4gICAgICAgIHhzc1Byb3RlY3Rpb246IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICBwcm90ZWN0aW9uOiB0cnVlLFxuICAgICAgICAgIG1vZGVCbG9jazogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNwb25zZUhlYWRlcnNQb2xpY3lOYW1lID0gYCR7ZG9tYWluQXNJZChwcm9wcy5kb21haW5OYW1lKX0tcmVzcG9uc2UtaGVhZGVycy1wb2xpY3lgO1xuICAgICAgXG4gICAgICBpZiAocHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHMpIHtcbiAgICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5ID0gbmV3IFJlc3BvbnNlSGVhZGVyc1BvbGljeSh0aGlzLCAncmVzcG9uc2UtaGVhZGVycy1wb2xpY3knLCB7XG4gICAgICAgICAgLi4uYmFzZUhlYWRlcnNCZWhhdmlvcixcbiAgICAgICAgICAuLi5wcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcyxcbiAgICAgICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3lOYW1lOiBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3lOYW1lIHx8IHJlc3BvbnNlSGVhZGVyc1BvbGljeU5hbWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHByb3BzLnJlc3BvbnNlQ3NwSGVhZGVycykge1xuICAgICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3kgPSBuZXcgUmVzcG9uc2VIZWFkZXJzUG9saWN5KHRoaXMsICdyZXNwb25zZS1oZWFkZXJzLXBvbGljeScsIHtcbiAgICAgICAgICBzZWN1cml0eUhlYWRlcnNCZWhhdmlvcjoge1xuICAgICAgICAgICAgLi4uYmFzZUhlYWRlcnNCZWhhdmlvcixcbiAgICAgICAgICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeToge1xuICAgICAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5OiBPYmplY3QuZW50cmllcyhwcm9wcy5yZXNwb25zZUNzcEhlYWRlcnMpLm1hcCgoW2RpcmVjdGl2ZSwgdmFsdWVzXSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHtkaXJlY3RpdmV9ICR7dmFsdWVzLmpvaW4oJyAnKX07YFxuICAgICAgICAgICAgICB9KS5qb2luKCcgJylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3lOYW1lXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnJlc3BvbnNlSGVhZGVyc1BvbGljeSA9IHJlc3BvbnNlSGVhZGVyc1BvbGljeTtcblxuICAgIGNvbnN0IGRlZmF1bHRCZWhhdmlvcjogQmVoYXZpb3JPcHRpb25zID0ge1xuICAgICAgb3JpZ2luOiBTM0J1Y2tldE9yaWdpbi53aXRoT3JpZ2luQWNjZXNzQ29udHJvbCh0aGlzLnMzQnVja2V0KSxcbiAgICAgIGZ1bmN0aW9uQXNzb2NpYXRpb25zOiBbXSxcbiAgICAgIHJlc3BvbnNlSGVhZGVyc1BvbGljeTogcmVzcG9uc2VIZWFkZXJzUG9saWN5ID8/IHByb3BzLnJlc3BvbnNlSGVhZGVyc1BvbGljeSAhPT0gZmFsc2UgPyBSZXNwb25zZUhlYWRlcnNQb2xpY3kuU0VDVVJJVFlfSEVBREVSUyA6IHVuZGVmaW5lZFxuICAgIH07XG5cbiAgICBsZXQgY2ZmbjogQ2xvdWRGcm9udEZ1bmN0aW9uO1xuICAgIGlmIChwcm9wcy5iYXNpY0F1dGgpIHtcbiAgICAgIGlmICh0eXBlb2YgcHJvcHMuYmFzaWNBdXRoICE9ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICgocHJvcHMuYmFzaWNBdXRoIGFzIEJhc2ljQXV0aENyZWRlbnRpYWxzKS51c2VyICYmIChwcm9wcy5iYXNpY0F1dGggYXMgQmFzaWNBdXRoQ3JlZGVudGlhbHMpLnBhc3N3b3JkKSB7XG4gICAgICAgICAgcHJvcHMuYmFzaWNBdXRoID0gQnVmZmVyLmZyb20oYCR7KHByb3BzLmJhc2ljQXV0aCBhcyBCYXNpY0F1dGhDcmVkZW50aWFscykudXNlcn06JHsocHJvcHMuYmFzaWNBdXRoIGFzIEJhc2ljQXV0aENyZWRlbnRpYWxzKS5wYXNzd29yZH1gKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoKHByb3BzLmJhc2ljQXV0aCBhcyBTc21TdHJpbmdQYXJhbWV0ZXIpLnBhdGgpIHtcbiAgICAgICAgICBwcm9wcy5iYXNpY0F1dGggPSBTdHJpbmdQYXJhbWV0ZXIudmFsdWVGb3JTdHJpbmdQYXJhbWV0ZXIodGhpcywgKHByb3BzLmJhc2ljQXV0aCBhcyBTc21TdHJpbmdQYXJhbWV0ZXIpLnBhdGgsIChwcm9wcy5iYXNpY0F1dGggYXMgU3NtU3RyaW5nUGFyYW1ldGVyKS52ZXJzaW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9wcy5iYXNpY0F1dGggPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb3BzLmNsb3VkZnJvbnRGdW5jdGlvbikge1xuICAgICAgY2ZmbiA9IENsb3VkRnJvbnRGdW5jdGlvbi5jcmVhdGVGdW5jdGlvbih0aGlzLCBudWxsLCB7XG4gICAgICAgIGNyZWRlbnRpYWxzOiBwcm9wcy5iYXNpY0F1dGgsXG4gICAgICAgIHJlZGlyZWN0czogcHJvcHMucmVkaXJlY3RzLFxuICAgICAgICByZWRpcmVjdHNDc3ZQYXRoOiBwcm9wcy5yZWRpcmVjdHNDc3ZQYXRoLFxuICAgICAgICBjb2RlOiBwcm9wcy5jbG91ZGZyb250RnVuY3Rpb24uY29kZSxcbiAgICAgICAgZGVzdHJveTogcHJvcHMuZGVzdHJveVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5iYXNpY0F1dGgpIHtcbiAgICAgIGNmZm4gPSBDbG91ZEZyb250RnVuY3Rpb24uY3JlYXRlQmFzaWNBdXRoRGVmYXVsdERvYyh0aGlzLCB7XG4gICAgICAgIGNyZWRlbnRpYWxzOiBwcm9wcy5iYXNpY0F1dGgsXG4gICAgICAgIHJlZGlyZWN0czogcHJvcHMucmVkaXJlY3RzLFxuICAgICAgICByZWRpcmVjdHNDc3ZQYXRoOiBwcm9wcy5yZWRpcmVjdHNDc3ZQYXRoLFxuICAgICAgICBkZXN0cm95OiBwcm9wcy5kZXN0cm95XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2ZmbiA9IENsb3VkRnJvbnRGdW5jdGlvbi5jcmVhdGVEZWZhdWx0RG9jKHRoaXMsIHtcbiAgICAgICAgcmVkaXJlY3RzOiBwcm9wcy5yZWRpcmVjdHMsXG4gICAgICAgIHJlZGlyZWN0c0NzdlBhdGg6IHByb3BzLnJlZGlyZWN0c0NzdlBhdGgsXG4gICAgICAgIGRlc3Ryb3k6IHByb3BzLmRlc3Ryb3lcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmNsb3VkRnJvbnRGdW5jdGlvbiA9IGNmZm4uZm47XG5cbiAgICAvLyBjb25zdCBldmVudFR5cGVzOiBDbG91ZEZyb250RnVuY3Rpb25FdmVudFR5cGVbXSA9IHByb3BzLmNsb3VkZnJvbnRGdW5jdGlvbj8uZXZlbnRUeXBlICYmIHByb3BzLmNsb3VkZnJvbnRGdW5jdGlvbi5ldmVudFR5cGUubGVuZ3RoID4gMCA/IHByb3BzLmNsb3VkZnJvbnRGdW5jdGlvbi5ldmVudFR5cGUgOiBbJ1ZJRVdFUl9SRVFVRVNUJywgJ1ZJRVdFUl9SRVNQT05TRSddO1xuXG4gICAgbGV0IGV2ZW50VHlwZXM6IENsb3VkRnJvbnRGdW5jdGlvbkV2ZW50VHlwZVtdID0gWydWSUVXRVJfUkVRVUVTVCcsICdWSUVXRVJfUkVTUE9OU0UnXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wcy5jbG91ZGZyb250RnVuY3Rpb24/LmV2ZW50VHlwZSkgJiYgcHJvcHMuY2xvdWRmcm9udEZ1bmN0aW9uLmV2ZW50VHlwZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBldHMgPSBwcm9wcy5jbG91ZGZyb250RnVuY3Rpb24uZXZlbnRUeXBlXG4gICAgICAgIC5maWx0ZXIoKHYsIGksIGEpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdHlwZW9mIHYgPT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICh2ID09PSAnVklFV0VSX1JFUVVFU1QnIHx8IHYgPT09ICdWSUVXRVJfUkVTUE9OU0UnKSAmJlxuICAgICAgICAgICAgYS5pbmRleE9mKHYpID09PSBpIC8vIGRlZHVwXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICBpZiAoZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZXZlbnRUeXBlcyA9IGV0cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGV2ZW50VHlwZSBvZiBldmVudFR5cGVzKSB7XG4gICAgICBkZWZhdWx0QmVoYXZpb3IuZnVuY3Rpb25Bc3NvY2lhdGlvbnMhLnB1c2goe1xuICAgICAgICBldmVudFR5cGU6IEZ1bmN0aW9uRXZlbnRUeXBlW2V2ZW50VHlwZV0sXG4gICAgICAgIGZ1bmN0aW9uOiB0aGlzLmNsb3VkRnJvbnRGdW5jdGlvblxuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIGxldCB3ZWJBY2xJZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgcHJvcHMud2ViQWNsID09ICdzdHJpbmcnICYmIHByb3BzLndlYkFjbC5zdGFydHNXaXRoKCdhcm46YXdzJykpIHtcbiAgICAgIHdlYkFjbElkID0gcHJvcHMud2ViQWNsO1xuICAgIH0gZWxzZSBpZiAoKHByb3BzLndlYkFjbCBhcyBTc21TdHJpbmdQYXJhbWV0ZXIpLnBhdGgpIHtcbiAgICAgIHdlYkFjbElkID0gU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yU3RyaW5nUGFyYW1ldGVyKHRoaXMsIChwcm9wcy53ZWJBY2wgYXMgU3NtU3RyaW5nUGFyYW1ldGVyKS5wYXRoLCAocHJvcHMud2ViQWNsIGFzIFNzbVN0cmluZ1BhcmFtZXRlcikudmVyc2lvbik7XG4gICAgfSBlbHNlIGlmIChwcm9wcy53ZWJBY2wgPT09IHRydWUpIHtcbiAgICAgIGNvbnN0IHdhZiA9IG5ldyBDbG91ZEZyb250V2ViQWNsKHRoaXMsICdDbG91ZEZyb250V2ViQWNsJywge1xuICAgICAgICBuYW1lOiBgJHtkb21haW5Bc0lkKHByb3BzLmRvbWFpbk5hbWUpfWAsXG4gICAgICAgIGRlc3Ryb3k6IHByb3BzLmRlc3Ryb3lcbiAgICAgIH0pO1xuICAgICAgdGhpcy53ZWJBY2wgPSB3YWYuYWNsO1xuICAgICAgd2ViQWNsSWQgPSB3YWYuYWNsLmF0dHJBcm47XG4gICAgfVxuXG4gICAgY29uc3QgY2ZEaXN0cmlidXRpb24gPSBuZXcgQ2xvdWRGcm9udERpc3RyaWJ1dGlvbih0aGlzLCAnQ2xvdWRGcm9udERpc3RyaWJ1dGlvbicsIHtcbiAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24gPz8gcHJvcHMuZG9tYWluTmFtZSxcbiAgICAgIHByaWNlQ2xhc3M6IHByb3BzLmVudlR5cGUsXG4gICAgICBjZXJ0aWZpY2F0ZTogdGhpcy5zc2xDZXJ0aWZpY2F0ZSxcbiAgICAgIGRlZmF1bHRCZWhhdmlvcixcbiAgICAgIHdlYkFjbElkXG4gICAgfSk7XG4gICAgdGhpcy5jbG91ZEZyb250RGlzdHJpYnV0aW9uID0gY2ZEaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uO1xuXG4gICAgY29uc3QgY2ZBbGlhcyA9IG5ldyBDbG91ZEZyb250QWxpYXModGhpcywgJ0Nsb3VkRnJvbnRBbGlhcycsIHtcbiAgICAgIGRpc3RyaWJ1dGlvbjogY2ZEaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uLFxuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG9tYWluTmFtZSxcbiAgICAgIGhvc3RlZFpvbmU6IGhvc3RlZFpvbmVcbiAgICB9KTtcbiAgICB0aGlzLmFSZWNvcmQgPSBjZkFsaWFzLmFSZWNvcmQ7XG4gICAgdGhpcy5hYWFhUmVjb3JkID0gY2ZBbGlhcy5hYWFhUmVjb3JkO1xuICB9XG59Il19
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLWdsb2JhbC1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGFja3Mvd2ViLXN0YXRpYy1zZXJ2ZXJsZXNzL3dlYi1nbG9iYWwtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBYyxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJN0UsT0FBTyxFQUEwQixpQkFBaUIsRUFBd0cscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUcvUCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBK0Isa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6SCxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQXlCcEUsTUFBTSxPQUFPLGNBQWUsU0FBUSxLQUFLO0lBQ3ZCLGNBQWMsQ0FBYztJQUM1QixRQUFRLENBQVM7SUFDakIsa0JBQWtCLENBQVc7SUFDN0Isc0JBQXNCLENBQWU7SUFDckMsTUFBTSxDQUF3QjtJQUM5QixxQkFBcUIsQ0FBcUM7SUFDMUQsT0FBTyxDQUFVO0lBQ2pCLFVBQVUsQ0FBYTtJQUV2QyxZQUFZLEtBQWdC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QztZQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUN0QixRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDN0IsQ0FBQztRQUVELE1BQU0sY0FBYyxHQUFHLElBQUksc0JBQXNCLENBQUMsSUFBSSxFQUFFLHdCQUF3QixFQUFFO1lBQ2hGLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsVUFBVTtZQUNsRCxVQUFVLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ2hDLGVBQWU7WUFDZixRQUFRO1NBQ1QsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUM7UUFFMUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQzNELFlBQVksRUFBRSxjQUFjLENBQUMsWUFBWTtZQUN6QyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsVUFBVSxFQUFFLFVBQVU7U0FDdkIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUN2QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjaywgU3RhY2tQcm9wcywgUGh5c2ljYWxOYW1lLCBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmltcG9ydCB7IENlcnRpZmljYXRlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXJcIjtcbmltcG9ydCB7IERpc3RyaWJ1dGlvbiwgRnVuY3Rpb24sIEZ1bmN0aW9uRXZlbnRUeXBlLCBJUmVzcG9uc2VIZWFkZXJzUG9saWN5LCBSZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcywgUmVzcG9uc2VTZWN1cml0eUhlYWRlcnNCZWhhdmlvciwgQmVoYXZpb3JPcHRpb25zLCBSZXNwb25zZUhlYWRlcnNQb2xpY3ksIEhlYWRlcnNGcmFtZU9wdGlvbiwgSGVhZGVyc1JlZmVycmVyUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQnO1xuaW1wb3J0IHsgQVJlY29yZCwgQWFhYVJlY29yZCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgQnVja2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgU3RyaW5nUGFyYW1ldGVyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgeyBDZm5XZWJBQ0wgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtd2FmdjInO1xuXG5pbXBvcnQgeyBTU0xDZXJ0aWZpY2F0ZSB9IGZyb20gJy4uLy4uL2NvbnN0cnVjdHMvY2VydGlmaWNhdGVtYW5hZ2VyLmpzJztcbmltcG9ydCB7IENsb3VkRnJvbnRGdW5jdGlvblJlZGlyZWN0cywgQ2xvdWRGcm9udEZ1bmN0aW9uLCBDbG91ZEZyb250RGlzdHJpYnV0aW9uIH0gZnJvbSAnLi4vLi4vY29uc3RydWN0cy9jbG91ZGZyb250LmpzJztcbmltcG9ydCB7IGdldEhvc3RlZFpvbmUsIENsb3VkRnJvbnRBbGlhcyB9IGZyb20gJy4uLy4uL2NvbnN0cnVjdHMvcm91dGU1My5qcyc7XG5pbXBvcnQgeyBTM0J1Y2tldCB9IGZyb20gJy4uLy4uL2NvbnN0cnVjdHMvczMuanMnO1xuaW1wb3J0IHR5cGUgeyBTc21TdHJpbmdQYXJhbWV0ZXIgfSBmcm9tICcuLi8uLi9jb25zdHJ1Y3RzL3NzbS50cyc7XG5pbXBvcnQgeyBDbG91ZEZyb250V2ViQWNsIH0gZnJvbSAnLi4vLi4vY29uc3RydWN0cy93YWYuanMnO1xuaW1wb3J0IHsgZG9tYWluQXNJZCB9IGZyb20gJy4uLy4uL2xpYi91dGlscy5qcyc7XG5pbXBvcnQgeyBhZGRFdm9TdGFja1RhZ3MgfSBmcm9tICcuLi8uLi9saWIvdGFncy50cyc7XG5pbXBvcnQgeyBTM0J1Y2tldE9yaWdpbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZGZyb250LW9yaWdpbnMnO1xuaW1wb3J0IHR5cGUgeyBCYXNpY0F1dGhDcmVkZW50aWFscywgQ3NwSGVhZGVycywgQ2xvdWRGcm9udEZ1bmN0aW9uRXZlbnRUeXBlLCBVVUlELCBBV1NNYW5hZ2VkUmVzcG9uc2VIZWFkZXJzUG9saWN5IH0gZnJvbSAnLi4vLi4vdHlwZXMuZC50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2ViR2xvYmFsU3RhY2tQcm9wcyB7XG4gIGVudlR5cGU6ICdOT1RfUFJPRCcgfCAnUFJPRCc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBidWNrZXROYW1lPzogc3RyaW5nO1xuICBob3N0ZWRab25lOiBzdHJpbmc7XG4gIGRvbWFpbk5hbWU6IHN0cmluZztcbiAgYmFzaWNBdXRoPzogc3RyaW5nIHwgQmFzaWNBdXRoQ3JlZGVudGlhbHMgfCBTc21TdHJpbmdQYXJhbWV0ZXI7XG4gIGNsb3VkZnJvbnRGdW5jdGlvbj86IHtcbiAgICBjb2RlOiBzdHJpbmc7XG4gICAgZXZlbnRUeXBlOiBDbG91ZEZyb250RnVuY3Rpb25FdmVudFR5cGVbXTtcbiAgfVxuICByZWRpcmVjdHM/OiBDbG91ZEZyb250RnVuY3Rpb25SZWRpcmVjdHM7XG4gIHJlZGlyZWN0c0NzdlBhdGg/OiBzdHJpbmc7XG4gIC8vIGF0dGFjaFdlYkFjbD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIHdlYkFjbD86IGJvb2xlYW4gfCBzdHJpbmcgfCBTc21TdHJpbmdQYXJhbWV0ZXI7XG4gIHJlc3BvbnNlSGVhZGVyc1BvbGljeT86IGZhbHNlIHwgQVdTTWFuYWdlZFJlc3BvbnNlSGVhZGVyc1BvbGljeSB8IFVVSUQgfCBTc21TdHJpbmdQYXJhbWV0ZXI7XG4gIHJlc3BvbnNlSGVhZGVyc1BvbGljeVByb3BzPzogUmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHM7XG4gIHJlc3BvbnNlQ3NwSGVhZGVycz86IENzcEhlYWRlcnM7XG4gIGRlc3Ryb3k/OiBib29sZWFuO1xuICB0YWdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGNsYXNzIFdlYkdsb2JhbFN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBwdWJsaWMgcmVhZG9ubHkgc3NsQ2VydGlmaWNhdGU6IENlcnRpZmljYXRlO1xuICBwdWJsaWMgcmVhZG9ubHkgczNCdWNrZXQ6IEJ1Y2tldDtcbiAgcHVibGljIHJlYWRvbmx5IGNsb3VkRnJvbnRGdW5jdGlvbjogRnVuY3Rpb247XG4gIHB1YmxpYyByZWFkb25seSBjbG91ZEZyb250RGlzdHJpYnV0aW9uOiBEaXN0cmlidXRpb247XG4gIHB1YmxpYyByZWFkb25seSB3ZWJBY2w6IENmbldlYkFDTCB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IHJlc3BvbnNlSGVhZGVyc1BvbGljeTogSVJlc3BvbnNlSGVhZGVyc1BvbGljeSB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHJlYWRvbmx5IGFSZWNvcmQ6IEFSZWNvcmQ7XG4gIHB1YmxpYyByZWFkb25seSBhYWFhUmVjb3JkOiBBYWFhUmVjb3JkO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBXZWJHbG9iYWxTdGFja1Byb3BzICYgU3RhY2tQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIGFkZEV2b1N0YWNrVGFncyh0aGlzLCAnV2ViR2xvYmFsU3RhY2snKTtcblxuICAgIGNvbnN0IGhvc3RlZFpvbmUgPSBnZXRIb3N0ZWRab25lKHRoaXMsICdnZXRIb3N0ZWRab25lJywgcHJvcHMuaG9zdGVkWm9uZSk7XG5cbiAgICBjb25zdCBfc3NsQ2VydCA9IG5ldyBTU0xDZXJ0aWZpY2F0ZSh0aGlzLCAnU1NMQ2VydGlmaWNhdGUnLCB7XG4gICAgICBob3N0ZWRab25lOiBob3N0ZWRab25lLFxuICAgICAgZG9tYWluTmFtZTogcHJvcHMuZG9tYWluTmFtZSxcbiAgICAgIGRlc3Ryb3k6IHByb3BzLmRlc3Ryb3lcbiAgICB9KTtcbiAgICB0aGlzLnNzbENlcnRpZmljYXRlID0gX3NzbENlcnQuY2VydGlmaWNhdGU7XG5cbiAgICBjb25zdCBfczNCdWNrZXQgPSBuZXcgUzNCdWNrZXQodGhpcywgJ1MzQnVja2V0Jywge1xuICAgICAgYnVja2V0TmFtZTogcHJvcHMuYnVja2V0TmFtZSA/PyBQaHlzaWNhbE5hbWUuR0VORVJBVEVfSUZfTkVFREVELFxuICAgICAgZGVzdHJveTogcHJvcHMuZGVzdHJveVxuICAgIH0pO1xuICAgIHRoaXMuczNCdWNrZXQgPSBfczNCdWNrZXQuYnVja2V0O1xuXG4gICAgbGV0IHJlc3BvbnNlSGVhZGVyc1BvbGljeTogSVJlc3BvbnNlSGVhZGVyc1BvbGljeSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5KSB7XG4gICAgICBpZiAodHlwZW9mIHByb3BzLnJlc3BvbnNlSGVhZGVyc1BvbGljeSA9PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoL15bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kL2kudGVzdChwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kpKSB7XG4gICAgICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5ID0gUmVzcG9uc2VIZWFkZXJzUG9saWN5LmZyb21SZXNwb25zZUhlYWRlcnNQb2xpY3lJZCh0aGlzLCAncmVzcG9uc2UtaGVhZGVycy1wb2xpY3ktYnktaWQnLCBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3BvbnNlSGVhZGVyc1BvbGljeSA9IFJlc3BvbnNlSGVhZGVyc1BvbGljeVtwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kgYXMga2V5b2YgdHlwZW9mIFJlc3BvbnNlSGVhZGVyc1BvbGljeV0gYXMgSVJlc3BvbnNlSGVhZGVyc1BvbGljeSA/PyBSZXNwb25zZUhlYWRlcnNQb2xpY3kuU0VDVVJJVFlfSEVBREVSUztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kucGF0aCkge1xuICAgICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3kgPSBSZXNwb25zZUhlYWRlcnNQb2xpY3kuZnJvbVJlc3BvbnNlSGVhZGVyc1BvbGljeUlkKHRoaXMsICdyZXNwb25zZS1oZWFkZXJzLXBvbGljeS1ieS1pZCcsIFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcih0aGlzLCBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kucGF0aCwgcHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5LnZlcnNpb24pKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYmFzZUhlYWRlcnNCZWhhdmlvcjogUmVzcG9uc2VTZWN1cml0eUhlYWRlcnNCZWhhdmlvciA9IHtcbiAgICAgICAgc3RyaWN0VHJhbnNwb3J0U2VjdXJpdHk6IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICBhY2Nlc3NDb250cm9sTWF4QWdlOiBEdXJhdGlvbi5zZWNvbmRzKDMxNTM2MDAwKVxuICAgICAgICB9LFxuICAgICAgICBjb250ZW50VHlwZU9wdGlvbnM6IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBmcmFtZU9wdGlvbnM6IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICBmcmFtZU9wdGlvbjogSGVhZGVyc0ZyYW1lT3B0aW9uLlNBTUVPUklHSU4sXG4gICAgICAgIH0sXG4gICAgICAgIHJlZmVycmVyUG9saWN5OiB7XG4gICAgICAgICAgb3ZlcnJpZGU6IHRydWUsXG4gICAgICAgICAgcmVmZXJyZXJQb2xpY3k6IEhlYWRlcnNSZWZlcnJlclBvbGljeS5TVFJJQ1RfT1JJR0lOX1dIRU5fQ1JPU1NfT1JJR0lOXG4gICAgICAgIH0sXG4gICAgICAgIHhzc1Byb3RlY3Rpb246IHtcbiAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICBwcm90ZWN0aW9uOiB0cnVlLFxuICAgICAgICAgIG1vZGVCbG9jazogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNwb25zZUhlYWRlcnNQb2xpY3lOYW1lID0gYCR7ZG9tYWluQXNJZChwcm9wcy5kb21haW5OYW1lKX0tcmVzcG9uc2UtaGVhZGVycy1wb2xpY3lgO1xuICAgICAgXG4gICAgICBpZiAocHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5UHJvcHMpIHtcbiAgICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5ID0gbmV3IFJlc3BvbnNlSGVhZGVyc1BvbGljeSh0aGlzLCAncmVzcG9uc2UtaGVhZGVycy1wb2xpY3knLCB7XG4gICAgICAgICAgLi4uYmFzZUhlYWRlcnNCZWhhdmlvcixcbiAgICAgICAgICAuLi5wcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcyxcbiAgICAgICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3lOYW1lOiBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3lQcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3lOYW1lIHx8IHJlc3BvbnNlSGVhZGVyc1BvbGljeU5hbWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHByb3BzLnJlc3BvbnNlQ3NwSGVhZGVycykge1xuICAgICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3kgPSBuZXcgUmVzcG9uc2VIZWFkZXJzUG9saWN5KHRoaXMsICdyZXNwb25zZS1oZWFkZXJzLXBvbGljeScsIHtcbiAgICAgICAgICBzZWN1cml0eUhlYWRlcnNCZWhhdmlvcjoge1xuICAgICAgICAgICAgLi4uYmFzZUhlYWRlcnNCZWhhdmlvcixcbiAgICAgICAgICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeToge1xuICAgICAgICAgICAgICBvdmVycmlkZTogdHJ1ZSxcbiAgICAgICAgICAgICAgY29udGVudFNlY3VyaXR5UG9saWN5OiBPYmplY3QuZW50cmllcyhwcm9wcy5yZXNwb25zZUNzcEhlYWRlcnMpLm1hcCgoW2RpcmVjdGl2ZSwgdmFsdWVzXSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHtkaXJlY3RpdmV9ICR7dmFsdWVzLmpvaW4oJyAnKX07YFxuICAgICAgICAgICAgICB9KS5qb2luKCcgJylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3lOYW1lXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBUT0RPOiBGaWd1cmUgb3V0IHdoeSB0aGUgdGhlIHBvbGljeSBpcyBub3QgZ2V0dGluZyB1cGRhdGVkIGluIHRoZSBDbG91ZEZyb250IGJlaGF2aW9yXG4gICAgdGhpcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kgPSByZXNwb25zZUhlYWRlcnNQb2xpY3k7XG5cbiAgICBjb25zdCBkZWZhdWx0QmVoYXZpb3I6IEJlaGF2aW9yT3B0aW9ucyA9IHtcbiAgICAgIG9yaWdpbjogUzNCdWNrZXRPcmlnaW4ud2l0aE9yaWdpbkFjY2Vzc0NvbnRyb2wodGhpcy5zM0J1Y2tldCksXG4gICAgICBmdW5jdGlvbkFzc29jaWF0aW9uczogW10sXG4gICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3k6IHJlc3BvbnNlSGVhZGVyc1BvbGljeSA/PyBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kgIT09IGZhbHNlID8gUmVzcG9uc2VIZWFkZXJzUG9saWN5LlNFQ1VSSVRZX0hFQURFUlMgOiB1bmRlZmluZWRcbiAgICB9O1xuXG4gICAgbGV0IGNmZm46IENsb3VkRnJvbnRGdW5jdGlvbjtcbiAgICBpZiAocHJvcHMuYmFzaWNBdXRoKSB7XG4gICAgICBpZiAodHlwZW9mIHByb3BzLmJhc2ljQXV0aCAhPSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoKHByb3BzLmJhc2ljQXV0aCBhcyBCYXNpY0F1dGhDcmVkZW50aWFscykudXNlciAmJiAocHJvcHMuYmFzaWNBdXRoIGFzIEJhc2ljQXV0aENyZWRlbnRpYWxzKS5wYXNzd29yZCkge1xuICAgICAgICAgIHByb3BzLmJhc2ljQXV0aCA9IEJ1ZmZlci5mcm9tKGAkeyhwcm9wcy5iYXNpY0F1dGggYXMgQmFzaWNBdXRoQ3JlZGVudGlhbHMpLnVzZXJ9OiR7KHByb3BzLmJhc2ljQXV0aCBhcyBCYXNpY0F1dGhDcmVkZW50aWFscykucGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICB9IGVsc2UgaWYgKChwcm9wcy5iYXNpY0F1dGggYXMgU3NtU3RyaW5nUGFyYW1ldGVyKS5wYXRoKSB7XG4gICAgICAgICAgcHJvcHMuYmFzaWNBdXRoID0gU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yU3RyaW5nUGFyYW1ldGVyKHRoaXMsIChwcm9wcy5iYXNpY0F1dGggYXMgU3NtU3RyaW5nUGFyYW1ldGVyKS5wYXRoLCAocHJvcHMuYmFzaWNBdXRoIGFzIFNzbVN0cmluZ1BhcmFtZXRlcikudmVyc2lvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvcHMuYmFzaWNBdXRoID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwcm9wcy5jbG91ZGZyb250RnVuY3Rpb24pIHtcbiAgICAgIGNmZm4gPSBDbG91ZEZyb250RnVuY3Rpb24uY3JlYXRlRnVuY3Rpb24odGhpcywgbnVsbCwge1xuICAgICAgICBjcmVkZW50aWFsczogcHJvcHMuYmFzaWNBdXRoLFxuICAgICAgICByZWRpcmVjdHM6IHByb3BzLnJlZGlyZWN0cyxcbiAgICAgICAgcmVkaXJlY3RzQ3N2UGF0aDogcHJvcHMucmVkaXJlY3RzQ3N2UGF0aCxcbiAgICAgICAgY29kZTogcHJvcHMuY2xvdWRmcm9udEZ1bmN0aW9uLmNvZGUsXG4gICAgICAgIGRlc3Ryb3k6IHByb3BzLmRlc3Ryb3lcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuYmFzaWNBdXRoKSB7XG4gICAgICBjZmZuID0gQ2xvdWRGcm9udEZ1bmN0aW9uLmNyZWF0ZUJhc2ljQXV0aERlZmF1bHREb2ModGhpcywge1xuICAgICAgICBjcmVkZW50aWFsczogcHJvcHMuYmFzaWNBdXRoLFxuICAgICAgICByZWRpcmVjdHM6IHByb3BzLnJlZGlyZWN0cyxcbiAgICAgICAgcmVkaXJlY3RzQ3N2UGF0aDogcHJvcHMucmVkaXJlY3RzQ3N2UGF0aCxcbiAgICAgICAgZGVzdHJveTogcHJvcHMuZGVzdHJveVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNmZm4gPSBDbG91ZEZyb250RnVuY3Rpb24uY3JlYXRlRGVmYXVsdERvYyh0aGlzLCB7XG4gICAgICAgIHJlZGlyZWN0czogcHJvcHMucmVkaXJlY3RzLFxuICAgICAgICByZWRpcmVjdHNDc3ZQYXRoOiBwcm9wcy5yZWRpcmVjdHNDc3ZQYXRoLFxuICAgICAgICBkZXN0cm95OiBwcm9wcy5kZXN0cm95XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5jbG91ZEZyb250RnVuY3Rpb24gPSBjZmZuLmZuO1xuXG4gICAgLy8gY29uc3QgZXZlbnRUeXBlczogQ2xvdWRGcm9udEZ1bmN0aW9uRXZlbnRUeXBlW10gPSBwcm9wcy5jbG91ZGZyb250RnVuY3Rpb24/LmV2ZW50VHlwZSAmJiBwcm9wcy5jbG91ZGZyb250RnVuY3Rpb24uZXZlbnRUeXBlLmxlbmd0aCA+IDAgPyBwcm9wcy5jbG91ZGZyb250RnVuY3Rpb24uZXZlbnRUeXBlIDogWydWSUVXRVJfUkVRVUVTVCcsICdWSUVXRVJfUkVTUE9OU0UnXTtcblxuICAgIGxldCBldmVudFR5cGVzOiBDbG91ZEZyb250RnVuY3Rpb25FdmVudFR5cGVbXSA9IFsnVklFV0VSX1JFUVVFU1QnLCAnVklFV0VSX1JFU1BPTlNFJ107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcHMuY2xvdWRmcm9udEZ1bmN0aW9uPy5ldmVudFR5cGUpICYmIHByb3BzLmNsb3VkZnJvbnRGdW5jdGlvbi5ldmVudFR5cGUubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZXRzID0gcHJvcHMuY2xvdWRmcm9udEZ1bmN0aW9uLmV2ZW50VHlwZVxuICAgICAgICAuZmlsdGVyKCh2LCBpLCBhKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHR5cGVvZiB2ID09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAodiA9PT0gJ1ZJRVdFUl9SRVFVRVNUJyB8fCB2ID09PSAnVklFV0VSX1JFU1BPTlNFJykgJiZcbiAgICAgICAgICAgIGEuaW5kZXhPZih2KSA9PT0gaSAvLyBkZWR1cFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgaWYgKGV0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGV2ZW50VHlwZXMgPSBldHM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBldmVudFR5cGUgb2YgZXZlbnRUeXBlcykge1xuICAgICAgZGVmYXVsdEJlaGF2aW9yLmZ1bmN0aW9uQXNzb2NpYXRpb25zIS5wdXNoKHtcbiAgICAgICAgZXZlbnRUeXBlOiBGdW5jdGlvbkV2ZW50VHlwZVtldmVudFR5cGVdLFxuICAgICAgICBmdW5jdGlvbjogdGhpcy5jbG91ZEZyb250RnVuY3Rpb25cbiAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICBsZXQgd2ViQWNsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAodHlwZW9mIHByb3BzLndlYkFjbCA9PSAnc3RyaW5nJyAmJiBwcm9wcy53ZWJBY2wuc3RhcnRzV2l0aCgnYXJuOmF3cycpKSB7XG4gICAgICB3ZWJBY2xJZCA9IHByb3BzLndlYkFjbDtcbiAgICB9IGVsc2UgaWYgKChwcm9wcy53ZWJBY2wgYXMgU3NtU3RyaW5nUGFyYW1ldGVyKS5wYXRoKSB7XG4gICAgICB3ZWJBY2xJZCA9IFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcih0aGlzLCAocHJvcHMud2ViQWNsIGFzIFNzbVN0cmluZ1BhcmFtZXRlcikucGF0aCwgKHByb3BzLndlYkFjbCBhcyBTc21TdHJpbmdQYXJhbWV0ZXIpLnZlcnNpb24pO1xuICAgIH0gZWxzZSBpZiAocHJvcHMud2ViQWNsID09PSB0cnVlKSB7XG4gICAgICBjb25zdCB3YWYgPSBuZXcgQ2xvdWRGcm9udFdlYkFjbCh0aGlzLCAnQ2xvdWRGcm9udFdlYkFjbCcsIHtcbiAgICAgICAgbmFtZTogYCR7ZG9tYWluQXNJZChwcm9wcy5kb21haW5OYW1lKX1gLFxuICAgICAgICBkZXN0cm95OiBwcm9wcy5kZXN0cm95XG4gICAgICB9KTtcbiAgICAgIHRoaXMud2ViQWNsID0gd2FmLmFjbDtcbiAgICAgIHdlYkFjbElkID0gd2FmLmFjbC5hdHRyQXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNmRGlzdHJpYnV0aW9uID0gbmV3IENsb3VkRnJvbnREaXN0cmlidXRpb24odGhpcywgJ0Nsb3VkRnJvbnREaXN0cmlidXRpb24nLCB7XG4gICAgICBkb21haW5OYW1lOiBwcm9wcy5kb21haW5OYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uID8/IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICBwcmljZUNsYXNzOiBwcm9wcy5lbnZUeXBlLFxuICAgICAgY2VydGlmaWNhdGU6IHRoaXMuc3NsQ2VydGlmaWNhdGUsXG4gICAgICBkZWZhdWx0QmVoYXZpb3IsXG4gICAgICB3ZWJBY2xJZFxuICAgIH0pO1xuICAgIHRoaXMuY2xvdWRGcm9udERpc3RyaWJ1dGlvbiA9IGNmRGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbjtcblxuICAgIGNvbnN0IGNmQWxpYXMgPSBuZXcgQ2xvdWRGcm9udEFsaWFzKHRoaXMsICdDbG91ZEZyb250QWxpYXMnLCB7XG4gICAgICBkaXN0cmlidXRpb246IGNmRGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbixcbiAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICBob3N0ZWRab25lOiBob3N0ZWRab25lXG4gICAgfSk7XG4gICAgdGhpcy5hUmVjb3JkID0gY2ZBbGlhcy5hUmVjb3JkO1xuICAgIHRoaXMuYWFhYVJlY29yZCA9IGNmQWxpYXMuYWFhYVJlY29yZDtcbiAgfVxufSJdfQ==
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
|
|
2
|
+
import { FunctionEventType } from 'aws-cdk-lib/aws-cloudfront';
|
|
3
|
+
|
|
1
4
|
export type DeepPartial<T> = T extends object ? {
|
|
2
5
|
[P in keyof T]?: DeepPartial<T[P]>;
|
|
3
6
|
} : T;
|
|
@@ -6,6 +9,11 @@ export type WithRequiredProperty<Type, Key extends keyof Type> = Omit<Type, Key>
|
|
|
6
9
|
[Property in Key]-?: Type[Property];
|
|
7
10
|
};
|
|
8
11
|
|
|
12
|
+
export type UUID = `${string}-${string}-${string}-${string}-${string}`; // & { readonly __brand: unique symbol };
|
|
13
|
+
|
|
14
|
+
export type EvosynthTagKey = 'Account' | 'Brand' | (string & {});
|
|
15
|
+
export type CloudFrontFunctionEventType = keyof typeof FunctionEventType;
|
|
16
|
+
|
|
9
17
|
export interface ResourceProps {
|
|
10
18
|
destroy?: boolean;
|
|
11
19
|
tags?: Record<string, string>;
|
|
@@ -18,4 +26,11 @@ export interface BasicAuthCredentials {
|
|
|
18
26
|
|
|
19
27
|
export type CspDirective = 'connect-src' | 'default-src' | 'font-src' | 'frame-src' | 'img-src' | 'media-src' | 'object-src' | 'script-src' | 'style-src';
|
|
20
28
|
export type CspDirectiveValue = "'self'" | "'none'" | "'unsafe-inline'" | "https:";
|
|
21
|
-
export type CspHeaders = Partial<Record<CspDirective, CspDirectiveValue[] | string[]>>;
|
|
29
|
+
export type CspHeaders = Partial<Record<CspDirective, CspDirectiveValue[] | string[]>>;
|
|
30
|
+
|
|
31
|
+
export type AWSManagedResponseHeadersPolicy =
|
|
32
|
+
'CORS_ALLOW_ALL_ORIGINS' |
|
|
33
|
+
'CORS_ALLOW_ALL_ORIGINS_AND_SECURITY_HEADERS' |
|
|
34
|
+
'CORS_ALLOW_ALL_ORIGINS_WITH_PREFLIGHT' |
|
|
35
|
+
'CORS_ALLOW_ALL_ORIGINS_WITH_PREFLIGHT_AND_SECURITY_HEADERS' |
|
|
36
|
+
'SECURITY_HEADERS';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inizioevoke/evosynth",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"author": "",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"description": "",
|
|
@@ -12,14 +12,21 @@
|
|
|
12
12
|
"./stages/*": "./dist/stages/*.js",
|
|
13
13
|
"./types/*": "./dist/types.d.ts"
|
|
14
14
|
},
|
|
15
|
+
"bin": {
|
|
16
|
+
"evosynth": "./dist/cli/cli.js"
|
|
17
|
+
},
|
|
15
18
|
"scripts": {
|
|
16
19
|
"prepublishOnly": "npm run build",
|
|
17
20
|
"build": "node ./tasks/clean.js && npx tsc && node ./tasks/dist.js"
|
|
18
21
|
},
|
|
19
22
|
"devDependencies": {
|
|
20
23
|
"@types/node": "^25.3.0",
|
|
21
|
-
"aws-cdk-lib": "^2.
|
|
24
|
+
"aws-cdk-lib": "^2.253.1",
|
|
22
25
|
"constructs": "^10.5.1",
|
|
23
26
|
"typescript": "^5.9.3"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@aws-cdk/toolkit-lib": "^1.25.2",
|
|
30
|
+
"commander": "^14.0.3"
|
|
24
31
|
}
|
|
25
32
|
}
|
package/readme.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @inizioevoke/evosynth
|
|
2
2
|
|
|
3
|
-
EvoSynth
|
|
3
|
+
EvoSynth is an npm package providing reusable AWS CDK stacks for deploying static serverless websites. It targets S3 + CloudFront + Route53 + ACM + WAF + CodePipeline architectures.
|
|
4
4
|
|
|
5
5
|
## Prerequisites
|
|
6
6
|
- [CDK v2.238.x](https://docs.aws.amazon.com/cdk/v2/guide/home.html)
|
package/samples/app.ts
CHANGED
|
@@ -59,7 +59,7 @@ new WebStaticServerlessStage(app, 'dev', {
|
|
|
59
59
|
|
|
60
60
|
// responseHeadersPolicyProps: { /* full CDK policy */},
|
|
61
61
|
// responseHeadersPolicy: 'SECURITY_HEADERS', // AWS managed policy
|
|
62
|
-
// responseHeadersPolicy:
|
|
62
|
+
// responseHeadersPolicy: false, // Not recommended
|
|
63
63
|
// responseHeadersPolicy: '[UUID from CloudFront > Policies > Response headers]',
|
|
64
64
|
// responseHeadersPolicy: { path: '/evosynth/web/security/response-headers' }, // UUID from Parameter Store
|
|
65
65
|
// responseCspHeaders: { // just CSP headers, extends ResponseHeadersPolicy.SECURITY_HEADERS
|
package/src/cli/cli.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { Command, program } from 'commander';
|
|
4
|
+
import { evosynth, EvosynthProps, CdkCommand } from './evosynth.js';
|
|
5
|
+
|
|
6
|
+
program
|
|
7
|
+
.name('evosynth')
|
|
8
|
+
.description('CDK utility')
|
|
9
|
+
.version('2.0.0')
|
|
10
|
+
.option('--profile <profile>', 'The AWS profile');
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
// program
|
|
14
|
+
// .command('bootstrap')
|
|
15
|
+
// .action(bootstrap);
|
|
16
|
+
|
|
17
|
+
(<CdkCommand[]>['deploy','destroy','diff','drift','rollback','synth'])
|
|
18
|
+
.forEach((cmd) => {
|
|
19
|
+
program.command(`${cmd} <env>`).action(action);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
program.parse();
|
|
23
|
+
|
|
24
|
+
// async function bootstrap(options: Record<string, string>, command: Command) {
|
|
25
|
+
// await evosynth('bootstrap', )
|
|
26
|
+
// }
|
|
27
|
+
async function action(env: string, options: Record<string, string>, command: Command) {
|
|
28
|
+
await evosynth(command.name() as CdkCommand, env, program.opts() as EvosynthProps);
|
|
29
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { readdir } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import type { EvosynthTagKey } from '../types.js';
|
|
5
|
+
import { runWebStaticServerlessApp, WebStaticServerlessAppConfig } from './web-static-serverless.js';
|
|
6
|
+
|
|
7
|
+
export { WebStaticServerlessAppConfig };
|
|
8
|
+
|
|
9
|
+
export type EnvironmentType = 'dev' | 'test' | 'stage' | 'uat' | 'preprod' | 'prod' | (string & {});
|
|
10
|
+
export type CdkCommand = 'deploy' | 'destroy' | 'diff' | 'drift' | 'rollback' | 'synth'; // 'bootstrap' |
|
|
11
|
+
export type EvosynthAppType = 'str8r-clm' | 'web-static-serverless';
|
|
12
|
+
|
|
13
|
+
export interface EvosynthAppConfig {
|
|
14
|
+
type: EvosynthAppType;
|
|
15
|
+
envType?: EnvironmentType;
|
|
16
|
+
name: string;
|
|
17
|
+
region: 'us-east-1' | 'us-east-2' | 'us-west-1' | 'us-west-2' | (string & {});
|
|
18
|
+
tags?: Record<EvosynthTagKey, string>,
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface EvosynthProps {
|
|
22
|
+
profile?: string;
|
|
23
|
+
}
|
|
24
|
+
export async function evosynth(cmd: CdkCommand, env: string, props: EvosynthProps) {
|
|
25
|
+
const files = await readdir(process.cwd(), { withFileTypes: true });
|
|
26
|
+
|
|
27
|
+
const configFiles = files
|
|
28
|
+
.filter((dirent) => {
|
|
29
|
+
if (dirent.isFile()) {
|
|
30
|
+
return /^\.evosynth(.*?)\.(?:js|mjs|ts|mts)$/i.test(dirent.name);
|
|
31
|
+
} else {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
})
|
|
35
|
+
.map((dirent) => {
|
|
36
|
+
const parts = dirent.name.split('.').filter(p => p !== '');
|
|
37
|
+
return {
|
|
38
|
+
name: dirent.name,
|
|
39
|
+
env: parts.length > 2 ? parts[1] : undefined,
|
|
40
|
+
dir: dirent.parentPath
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
let configIndex = configFiles.findIndex(c => c.env && env && c.env.toLowerCase() === env.toLowerCase());
|
|
45
|
+
if (configIndex === -1) {
|
|
46
|
+
configIndex = configFiles.findIndex(c => c.env === undefined);
|
|
47
|
+
}
|
|
48
|
+
if (configIndex != -1) {
|
|
49
|
+
const configFile = configFiles[configIndex];
|
|
50
|
+
const module = await import(pathToFileURL(join(configFile.dir, configFile.name)).toString());
|
|
51
|
+
let config: EvosynthAppConfig | undefined = undefined;
|
|
52
|
+
if (configFile.env) {
|
|
53
|
+
config = module.default;
|
|
54
|
+
} else {
|
|
55
|
+
config = module[env]?.();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (config) {
|
|
59
|
+
if (props.profile) {
|
|
60
|
+
process.env.AWS_PROFILE = props.profile;
|
|
61
|
+
}
|
|
62
|
+
switch (config.type) {
|
|
63
|
+
case 'web-static-serverless':
|
|
64
|
+
await runWebStaticServerlessApp(cmd, config as WebStaticServerlessAppConfig);
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
} else {
|
|
70
|
+
console.error('evosynth config not found!');
|
|
71
|
+
}
|
|
72
|
+
}
|
package/src/cli/index.ts
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import * as core from 'aws-cdk-lib/core';
|
|
3
|
+
import { BootstrapEnvironments, ICloudAssemblySource, Toolkit } from '@aws-cdk/toolkit-lib';
|
|
4
|
+
import { ResponseHeadersPolicyProps } from 'aws-cdk-lib/aws-cloudfront';
|
|
5
|
+
import { IBuildImage } from 'aws-cdk-lib/aws-codebuild';
|
|
6
|
+
import { CloudFrontFunctionRedirects } from '../constructs/cloudfront.js';
|
|
7
|
+
import { CodeBuildImageId, EcrBuildImage, CodeBuildSsmParameter, CodeBuildComputeType, CodeBuildNodeJs, EnvironmentVariables } from '../constructs/codebuild.ts';
|
|
8
|
+
import type { EvosynthAppConfig, CdkCommand, EvosynthAppType } from './evosynth.ts';
|
|
9
|
+
import type { CloudFrontFunctionEventType, CspHeaders, UUID, AWSManagedResponseHeadersPolicy } from '../types.d.ts';
|
|
10
|
+
import { getEnv } from '../index.js';
|
|
11
|
+
import { WebStaticServerlessStage, WebStaticServerlessStageProps } from '../stages/web-static-serverless-stage.js';
|
|
12
|
+
|
|
13
|
+
const cdk = new Toolkit();
|
|
14
|
+
|
|
15
|
+
export interface WebStaticServerlessAppConfig extends EvosynthAppConfig {
|
|
16
|
+
type: Extract<EvosynthAppType, 'web-static-serverless'>,
|
|
17
|
+
description?: string;
|
|
18
|
+
dns: {
|
|
19
|
+
record: string;
|
|
20
|
+
zone: string;
|
|
21
|
+
},
|
|
22
|
+
security?: {
|
|
23
|
+
basicAuth?: string;
|
|
24
|
+
basicAuthParam?: string;
|
|
25
|
+
webAcl?: string | false;
|
|
26
|
+
webAclParam?: string;
|
|
27
|
+
},
|
|
28
|
+
cloudfront?: {
|
|
29
|
+
responseHeaders?: AWSManagedResponseHeadersPolicy | UUID | false;
|
|
30
|
+
responseHeadersParam?: string;
|
|
31
|
+
responseHeadersPolicy?: ResponseHeadersPolicyProps;
|
|
32
|
+
cspHeaders?: CspHeaders;
|
|
33
|
+
redirects?: CloudFrontFunctionRedirects;
|
|
34
|
+
function?: string | {
|
|
35
|
+
code: string;
|
|
36
|
+
eventType: CloudFrontFunctionEventType[];
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
pipeline?: {
|
|
40
|
+
source: {
|
|
41
|
+
codestarConnection?: string;
|
|
42
|
+
codestarConnectionParam?: string;
|
|
43
|
+
owner: 'evokegroup' | 'meltmedia' | (string & {});
|
|
44
|
+
repo: string;
|
|
45
|
+
branch: string;
|
|
46
|
+
fullClone?: boolean;
|
|
47
|
+
},
|
|
48
|
+
build?: {
|
|
49
|
+
buildSpec?: string | object;
|
|
50
|
+
buildImage?: IBuildImage;
|
|
51
|
+
buildImageEcr?: EcrBuildImage;
|
|
52
|
+
buildImageNodeJS?: CodeBuildNodeJs;
|
|
53
|
+
buildImageId?: CodeBuildImageId;
|
|
54
|
+
computeType?: CodeBuildComputeType;
|
|
55
|
+
environmentVariables?: EnvironmentVariables;
|
|
56
|
+
ssmParameters?: CodeBuildSsmParameter[]
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export async function runWebStaticServerlessApp(cmd: CdkCommand, config: WebStaticServerlessAppConfig) {
|
|
62
|
+
const cx = await cdk.fromAssemblyBuilder(async (props) => {
|
|
63
|
+
const app = new core.App({
|
|
64
|
+
outdir: join(process.cwd(), '.evosynth'),
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
const stageProps: WebStaticServerlessStageProps & core.StageProps = {
|
|
68
|
+
env: getEnv(config.region),
|
|
69
|
+
stageName: `${config.name}${config.envType ? `-${config.envType}` : ''}`,
|
|
70
|
+
tags: config.tags,
|
|
71
|
+
envType: config.envType === 'prod' ? 'PROD' : 'NOT_PROD',
|
|
72
|
+
description: `${config.description}${config.envType ? ` ${config.envType.toUpperCase()}` : ''}`,
|
|
73
|
+
hostedZone: config.dns.zone,
|
|
74
|
+
domainName: `${config.dns.record}.${config.dns.zone}`,
|
|
75
|
+
basicAuth: config.security?.basicAuthParam ? { path: config.security?.basicAuthParam } : config.security?.basicAuth,
|
|
76
|
+
webAcl: config.security?.webAclParam ? { path: config.security.webAclParam } : config.security?.webAcl,
|
|
77
|
+
redirects: config.cloudfront?.redirects,
|
|
78
|
+
responseCspHeaders: config.cloudfront?.cspHeaders,
|
|
79
|
+
responseHeadersPolicy: config.cloudfront?.responseHeadersParam ? { path: config.cloudfront.responseHeadersParam } : config.cloudfront?.responseHeaders,
|
|
80
|
+
responseHeadersPolicyProps: config.cloudfront?.responseHeadersPolicy,
|
|
81
|
+
cloudfrontFunction: config.cloudfront?.function && typeof config.cloudfront.function == 'string' ? {
|
|
82
|
+
code: config.cloudfront.function,
|
|
83
|
+
eventType: ['VIEWER_REQUEST','VIEWER_RESPONSE'],
|
|
84
|
+
} : config.cloudfront?.function as any
|
|
85
|
+
}
|
|
86
|
+
if (config.pipeline) {
|
|
87
|
+
stageProps.pipeline = {
|
|
88
|
+
sourceStage: {
|
|
89
|
+
codestarConnection: config.pipeline.source.codestarConnectionParam ? { path: config.pipeline.source.codestarConnectionParam } : config.pipeline.source.codestarConnection as string,
|
|
90
|
+
repoOwner: config.pipeline.source.owner,
|
|
91
|
+
repo: config.pipeline.source.repo,
|
|
92
|
+
branch: config.pipeline.source.branch,
|
|
93
|
+
fullClone: config.pipeline.source.fullClone
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (config.pipeline.build) {
|
|
97
|
+
stageProps.pipeline.buildStage = {
|
|
98
|
+
environmentVariables: config.pipeline.build.environmentVariables
|
|
99
|
+
};
|
|
100
|
+
stageProps.pipeline.codeBuildProject = {
|
|
101
|
+
buildImage: config.pipeline.build.buildImage,
|
|
102
|
+
buildImageId: config.pipeline.build.buildImageId,
|
|
103
|
+
buildImageNodeJS: config.pipeline.build.buildImageNodeJS,
|
|
104
|
+
buildSpec: config.pipeline.build.buildSpec,
|
|
105
|
+
computeType: config.pipeline.build.computeType,
|
|
106
|
+
ecrBuildImage: config.pipeline.build.buildImageEcr,
|
|
107
|
+
ssmParameters: config.pipeline.build.ssmParameters
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
new WebStaticServerlessStage(app, config.type, stageProps);
|
|
113
|
+
|
|
114
|
+
return app.synth();
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
switch (cmd) {
|
|
118
|
+
// case 'bootstrap':
|
|
119
|
+
// await cdk.bootstrap(BootstrapEnvironments.fromList([`aws://${process.env.CDK_DEFAULT_ACCOUNT}/${config.region}`]));
|
|
120
|
+
// break;
|
|
121
|
+
case 'deploy':
|
|
122
|
+
case 'destroy':
|
|
123
|
+
case 'diff':
|
|
124
|
+
case 'drift':
|
|
125
|
+
case 'rollback':
|
|
126
|
+
case 'synth':
|
|
127
|
+
await cdk[cmd](cx);
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -11,7 +11,33 @@ import type { ResourceProps } from "../types.d.ts";
|
|
|
11
11
|
|
|
12
12
|
export type EnvironmentVariables = Record<string, { value: any, type?: BuildEnvironmentVariableType }>;
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
export type CodeBuildImageId =
|
|
15
|
+
'aws/codebuild/amazonlinux2-aarch64-standard:1.0' |
|
|
16
|
+
'aws/codebuild/amazonlinux2-x86_64-standard:2.0' |
|
|
17
|
+
'aws/codebuild/amazonlinux2-x86_64-standard:3.0' |
|
|
18
|
+
'aws/codebuild/amazonlinux-x86_64-standard:4.0' |
|
|
19
|
+
'aws/codebuild/amazonlinux-x86_64-standard:5.0' |
|
|
20
|
+
'aws/codebuild/amazonlinux-x86_64-standard:6.0' |
|
|
21
|
+
'aws/codebuild/amazonlinux-x86_64-standard:corretto8' |
|
|
22
|
+
'aws/codebuild/amazonlinux-x86_64-standard:corretto11' |
|
|
23
|
+
'aws/codebuild/amazonlinux-aarch64-standard:2.0' |
|
|
24
|
+
'aws/codebuild/amazonlinux-aarch64-standard:3.0' |
|
|
25
|
+
'aws/codebuild/standard:3.0' |
|
|
26
|
+
'aws/codebuild/standard:4.0' |
|
|
27
|
+
'aws/codebuild/standard:5.0' | // nodejs 12, 14
|
|
28
|
+
'aws/codebuild/standard:6.0' | // nodejs 16
|
|
29
|
+
'aws/codebuild/standard:7.0' | // nodejs 18, 20, 22, 24
|
|
30
|
+
'aws/codebuild/standard:8.0' | // nodejs 22, 24
|
|
31
|
+
'aws/codebuild/windows-base:2019-1.0' |
|
|
32
|
+
'aws/codebuild/windows-base:2019-2.0' |
|
|
33
|
+
'aws/codebuild/windows-base:2019-3.0' |
|
|
34
|
+
'aws/codebuild/windows-base:2022-1.0' |
|
|
35
|
+
(string & {});
|
|
36
|
+
|
|
37
|
+
export type CodeBuildComputeType = 'SMALL' | 'MEDIUM' | 'LARGE' | 'X_LARGE' | 'X2_LARGE' | (string & {});
|
|
38
|
+
export type CodeBuildNodeJs = 12 | 14 | 16 | 18 | 20 | 22 | 24 | (number & {});
|
|
39
|
+
|
|
40
|
+
export interface CodeBuildSsmParameter extends SsmStringParameter {
|
|
15
41
|
encrypted?: boolean;
|
|
16
42
|
}
|
|
17
43
|
export interface EcrBuildImage {
|
|
@@ -21,13 +47,15 @@ export interface EcrBuildImage {
|
|
|
21
47
|
export interface CodeBuildPipelineProjectProps extends ResourceProps {
|
|
22
48
|
projectName?: string;
|
|
23
49
|
buildSpec?: string | object;
|
|
24
|
-
buildImage?: ('STANDARD_5_0' | 'STANDARD_6_0' | 'STANDARD_7_0') | IBuildImage;
|
|
25
50
|
ecrBuildImage?: EcrBuildImage,
|
|
26
|
-
|
|
51
|
+
buildImage?: IBuildImage;
|
|
52
|
+
buildImageNodeJS?: CodeBuildNodeJs;
|
|
53
|
+
buildImageId?: CodeBuildImageId;
|
|
54
|
+
computeType?: CodeBuildComputeType;
|
|
27
55
|
environmentVariables?: EnvironmentVariables;
|
|
28
56
|
cloudFrontDistributionArn?: string;
|
|
29
57
|
s3BucketName?: string;
|
|
30
|
-
ssmParameters?:
|
|
58
|
+
ssmParameters?: CodeBuildSsmParameter[];
|
|
31
59
|
}
|
|
32
60
|
|
|
33
61
|
export class CodeBuildPipelineProject extends Construct {
|
|
@@ -58,12 +86,27 @@ export class CodeBuildPipelineProject extends Construct {
|
|
|
58
86
|
Repository.fromRepositoryName(this, 'EcrRepository', props.ecrBuildImage.repository);
|
|
59
87
|
buildImage = LinuxBuildImage.fromEcrRepository(repository, props.ecrBuildImage.tag);
|
|
60
88
|
} else if (props.buildImage) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
89
|
+
buildImage = props.buildImage as IBuildImage;
|
|
90
|
+
} else if (props.buildImageNodeJS) {
|
|
91
|
+
let standard = 8;
|
|
92
|
+
switch (props.buildImageNodeJS) {
|
|
93
|
+
case 12:
|
|
94
|
+
case 14:
|
|
95
|
+
standard = 5;
|
|
96
|
+
break;
|
|
97
|
+
case 16:
|
|
98
|
+
standard = 6;
|
|
99
|
+
break;
|
|
100
|
+
case 18:
|
|
101
|
+
case 20:
|
|
102
|
+
standard = 7;
|
|
103
|
+
break;
|
|
65
104
|
}
|
|
66
|
-
|
|
105
|
+
buildImage = LinuxBuildImage.fromCodeBuildImageId(`aws/codebuild/standard:${standard}.0`);
|
|
106
|
+
} else if (props.buildImageId) {
|
|
107
|
+
buildImage = LinuxBuildImage.fromCodeBuildImageId(props.buildImageId);
|
|
108
|
+
}
|
|
109
|
+
|
|
67
110
|
|
|
68
111
|
this.project = new PipelineProject(this, 'CodeBuildPipelineProjectProps', {
|
|
69
112
|
projectName: props.projectName,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { RemovalPolicy, PhysicalName, Aws } from "aws-cdk-lib";
|
|
2
2
|
import { Construct } from 'constructs';
|
|
3
3
|
import { IProject } from "aws-cdk-lib/aws-codebuild";
|
|
4
|
-
import { Artifact, Pipeline } from "aws-cdk-lib/aws-codepipeline";
|
|
4
|
+
import { Artifact, Pipeline, PipelineType } from "aws-cdk-lib/aws-codepipeline";
|
|
5
5
|
import { CodeBuildAction, CodeStarConnectionsSourceAction } from "aws-cdk-lib/aws-codepipeline-actions";
|
|
6
6
|
import { Bucket } from 'aws-cdk-lib/aws-s3';
|
|
7
7
|
import { StringParameter } from 'aws-cdk-lib/aws-ssm';
|
|
@@ -45,7 +45,8 @@ export class CodePipelineProject extends Construct {
|
|
|
45
45
|
|
|
46
46
|
this.pipeline = new Pipeline(this, 'CodePipelineProject', {
|
|
47
47
|
pipelineName: props.pipelineName,
|
|
48
|
-
artifactBucket: this.s3Bucket
|
|
48
|
+
artifactBucket: this.s3Bucket,
|
|
49
|
+
pipelineType: PipelineType.V2
|
|
49
50
|
});
|
|
50
51
|
|
|
51
52
|
tagResource(this.pipeline, props.tags);
|
package/src/index.ts
CHANGED
|
@@ -17,18 +17,7 @@ import { CloudFrontWebAcl } from '../../constructs/waf.js';
|
|
|
17
17
|
import { domainAsId } from '../../lib/utils.js';
|
|
18
18
|
import { addEvoStackTags } from '../../lib/tags.ts';
|
|
19
19
|
import { S3BucketOrigin } from 'aws-cdk-lib/aws-cloudfront-origins';
|
|
20
|
-
import type { BasicAuthCredentials, CspHeaders } from '../../types.d.ts';
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
type AWSManagedResponseHeadersPolicy =
|
|
24
|
-
'CORS_ALLOW_ALL_ORIGINS' |
|
|
25
|
-
'CORS_ALLOW_ALL_ORIGINS_AND_SECURITY_HEADERS' |
|
|
26
|
-
'CORS_ALLOW_ALL_ORIGINS_WITH_PREFLIGHT' |
|
|
27
|
-
'CORS_ALLOW_ALL_ORIGINS_WITH_PREFLIGHT_AND_SECURITY_HEADERS' |
|
|
28
|
-
'SECURITY_HEADERS';
|
|
29
|
-
|
|
30
|
-
type UUID = `${string}-${string}-${string}-${string}-${string}`;
|
|
31
|
-
type CloudFrontFunctionEventType = keyof typeof FunctionEventType;
|
|
20
|
+
import type { BasicAuthCredentials, CspHeaders, CloudFrontFunctionEventType, UUID, AWSManagedResponseHeadersPolicy } from '../../types.d.ts';
|
|
32
21
|
|
|
33
22
|
export interface WebGlobalStackProps {
|
|
34
23
|
envType: 'NOT_PROD' | 'PROD';
|
|
@@ -38,8 +27,8 @@ export interface WebGlobalStackProps {
|
|
|
38
27
|
domainName: string;
|
|
39
28
|
basicAuth?: string | BasicAuthCredentials | SsmStringParameter;
|
|
40
29
|
cloudfrontFunction?: {
|
|
41
|
-
eventType: CloudFrontFunctionEventType[];
|
|
42
30
|
code: string;
|
|
31
|
+
eventType: CloudFrontFunctionEventType[];
|
|
43
32
|
}
|
|
44
33
|
redirects?: CloudFrontFunctionRedirects;
|
|
45
34
|
redirectsCsvPath?: string;
|
|
@@ -139,6 +128,7 @@ export class WebGlobalStack extends Stack {
|
|
|
139
128
|
});
|
|
140
129
|
}
|
|
141
130
|
}
|
|
131
|
+
// TODO: Figure out why the the policy is not getting updated in the CloudFront behavior
|
|
142
132
|
this.responseHeadersPolicy = responseHeadersPolicy;
|
|
143
133
|
|
|
144
134
|
const defaultBehavior: BehaviorOptions = {
|
package/src/types.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
|
|
2
|
+
import { FunctionEventType } from 'aws-cdk-lib/aws-cloudfront';
|
|
3
|
+
|
|
1
4
|
export type DeepPartial<T> = T extends object ? {
|
|
2
5
|
[P in keyof T]?: DeepPartial<T[P]>;
|
|
3
6
|
} : T;
|
|
@@ -6,6 +9,11 @@ export type WithRequiredProperty<Type, Key extends keyof Type> = Omit<Type, Key>
|
|
|
6
9
|
[Property in Key]-?: Type[Property];
|
|
7
10
|
};
|
|
8
11
|
|
|
12
|
+
export type UUID = `${string}-${string}-${string}-${string}-${string}`; // & { readonly __brand: unique symbol };
|
|
13
|
+
|
|
14
|
+
export type EvosynthTagKey = 'Account' | 'Brand' | (string & {});
|
|
15
|
+
export type CloudFrontFunctionEventType = keyof typeof FunctionEventType;
|
|
16
|
+
|
|
9
17
|
export interface ResourceProps {
|
|
10
18
|
destroy?: boolean;
|
|
11
19
|
tags?: Record<string, string>;
|
|
@@ -18,4 +26,11 @@ export interface BasicAuthCredentials {
|
|
|
18
26
|
|
|
19
27
|
export type CspDirective = 'connect-src' | 'default-src' | 'font-src' | 'frame-src' | 'img-src' | 'media-src' | 'object-src' | 'script-src' | 'style-src';
|
|
20
28
|
export type CspDirectiveValue = "'self'" | "'none'" | "'unsafe-inline'" | "https:";
|
|
21
|
-
export type CspHeaders = Partial<Record<CspDirective, CspDirectiveValue[] | string[]>>;
|
|
29
|
+
export type CspHeaders = Partial<Record<CspDirective, CspDirectiveValue[] | string[]>>;
|
|
30
|
+
|
|
31
|
+
export type AWSManagedResponseHeadersPolicy =
|
|
32
|
+
'CORS_ALLOW_ALL_ORIGINS' |
|
|
33
|
+
'CORS_ALLOW_ALL_ORIGINS_AND_SECURITY_HEADERS' |
|
|
34
|
+
'CORS_ALLOW_ALL_ORIGINS_WITH_PREFLIGHT' |
|
|
35
|
+
'CORS_ALLOW_ALL_ORIGINS_WITH_PREFLIGHT_AND_SECURITY_HEADERS' |
|
|
36
|
+
'SECURITY_HEADERS';
|