@fjall/components-infrastructure 0.1.43 → 0.1.44

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/lib/app.d.ts CHANGED
@@ -1,7 +1,78 @@
1
1
  import { App as CdkApp } from "aws-cdk-lib";
2
+ import { Construct } from "constructs";
3
+ import { AwsStack } from "./resources";
4
+ import { Vpc } from "./resources/aws/networking/vpc";
5
+ import { Ecr } from "./resources/aws/storage/ecr";
6
+ import { Storage } from "./patterns/aws/storage";
7
+ /**
8
+ * The basic corner-stone of all Fjall-hosted applications.
9
+ * This class is a singleton and should be used to create and manage
10
+ * all resources in a Fjall application.
11
+ */
2
12
  export declare class App extends CdkApp {
3
13
  private static instance;
14
+ private name;
15
+ private stacks;
16
+ private defaultVpc;
17
+ private defaultEcr;
4
18
  private constructor();
5
- static getInstance(): App;
19
+ /**
20
+ * Get/Create a basic Fjall Application
21
+ * @param name
22
+ * @returns {App}
23
+ */
24
+ static getApp(name?: string): App;
25
+ /**
26
+ * Get/Create the singleton instance of the App
27
+ * @param name
28
+ * @returns {App}
29
+ */
30
+ static getInstance(name?: string): App;
31
+ /**
32
+ * Retrieve a stack by key. If the stack does not exist, it will be created.
33
+ * Dependencies are only applied the first time a stack is created.
34
+ *
35
+ * @param key - The key of the stack
36
+ * @param dependencies - The stack(s) that this stack depends on
37
+ * @returns {AwsStack}
38
+ */
39
+ getStack(key: string, dependencies?: AwsStack | AwsStack[]): AwsStack;
40
+ /**
41
+ * Retrieve default compute stack - named as `${this.name}Compute`
42
+ * @returns {AwsStack}
43
+ */
44
+ getDefaultComputeStack(): AwsStack;
45
+ /**
46
+ * Retrieve default network stack - named as `${this.name}Network`
47
+ * @returns {AwsStack}
48
+ */
49
+ getDefaultNetworkStack(): AwsStack;
50
+ getDefaultStorageStack(): AwsStack;
51
+ /**
52
+ * Retrieve default vpc. If the VPC does not exist it will be created.
53
+ * @returns {Vpc}
54
+ */
55
+ getDefaultVpc(): Vpc;
56
+ /**
57
+ * Retreive the default application container registry. If the registry does not exist
58
+ * it will be created.
59
+ */
60
+ getDefaultContainerRegistry(): Ecr;
61
+ /**
62
+ * Add a compute resource to the default compute stack using the factory pattern.
63
+ */
64
+ addCompute(fn: (app: App, scope: Construct) => Construct): void;
65
+ /**
66
+ * Manually add a resource to the default compute stack.
67
+ */
68
+ addComputeResource(resource: Construct): void;
69
+ /**
70
+ * Add a storage resource to the default storage stack using the factory pattern.
71
+ */
72
+ addStorage(fn: (app: App, scope: Construct) => Construct): Storage;
73
+ /**
74
+ * Manually add a resource to the default storage stack.
75
+ */
76
+ addStorageResource(resource: Construct): void;
6
77
  }
7
78
  export default App;
package/dist/lib/app.js CHANGED
@@ -2,20 +2,135 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.App = void 0;
4
4
  const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const resources_1 = require("./resources");
6
+ const vpc_1 = require("./resources/aws/networking/vpc");
7
+ const ecr_1 = require("./resources/aws/storage/ecr");
8
+ /**
9
+ * The basic corner-stone of all Fjall-hosted applications.
10
+ * This class is a singleton and should be used to create and manage
11
+ * all resources in a Fjall application.
12
+ */
5
13
  class App extends aws_cdk_lib_1.App {
6
- constructor() {
14
+ constructor(name) {
7
15
  super();
16
+ this.stacks = {};
17
+ if (name)
18
+ this.name = name;
19
+ else
20
+ this.name = "FjallApp";
8
21
  }
9
- static getInstance() {
22
+ /**
23
+ * Get/Create a basic Fjall Application
24
+ * @param name
25
+ * @returns {App}
26
+ */
27
+ static getApp(name) {
28
+ return App.getInstance(name);
29
+ }
30
+ /**
31
+ * Get/Create the singleton instance of the App
32
+ * @param name
33
+ * @returns {App}
34
+ */
35
+ static getInstance(name) {
10
36
  // Despite supporting multiple stacks you can still only ever
11
37
  // have a single Application per CDK deployment
12
38
  if (!App.instance) {
13
- App.instance = new App();
39
+ App.instance = new App(name);
14
40
  }
15
41
  return App.instance;
16
42
  }
43
+ /**
44
+ * Retrieve a stack by key. If the stack does not exist, it will be created.
45
+ * Dependencies are only applied the first time a stack is created.
46
+ *
47
+ * @param key - The key of the stack
48
+ * @param dependencies - The stack(s) that this stack depends on
49
+ * @returns {AwsStack}
50
+ */
51
+ getStack(key, dependencies) {
52
+ if (!this.stacks[key]) {
53
+ this.stacks[key] = new resources_1.AwsStack(key, dependencies);
54
+ }
55
+ return this.stacks[key];
56
+ }
57
+ /**
58
+ * Retrieve default compute stack - named as `${this.name}Compute`
59
+ * @returns {AwsStack}
60
+ */
61
+ getDefaultComputeStack() {
62
+ return this.getStack(`${this.name}Compute`, [
63
+ this.getDefaultNetworkStack(),
64
+ this.getDefaultStorageStack()
65
+ ]);
66
+ }
67
+ /**
68
+ * Retrieve default network stack - named as `${this.name}Network`
69
+ * @returns {AwsStack}
70
+ */
71
+ getDefaultNetworkStack() {
72
+ return this.getStack(`${this.name}Network`);
73
+ }
74
+ getDefaultStorageStack() {
75
+ return this.getStack(`${this.name}Storage`, this.getDefaultNetworkStack());
76
+ }
77
+ /**
78
+ * Retrieve default vpc. If the VPC does not exist it will be created.
79
+ * @returns {Vpc}
80
+ */
81
+ getDefaultVpc() {
82
+ var networkStack = this.getDefaultNetworkStack();
83
+ if (!this.defaultVpc) {
84
+ this.defaultVpc = vpc_1.VpcFactory.build(`${this.name}DefaultVpc`, {
85
+ tags: {}
86
+ })(this, networkStack.getStack());
87
+ }
88
+ return this.defaultVpc;
89
+ }
90
+ /**
91
+ * Retreive the default application container registry. If the registry does not exist
92
+ * it will be created.
93
+ */
94
+ getDefaultContainerRegistry() {
95
+ if (!this.defaultEcr) {
96
+ var networkStack = this.getDefaultNetworkStack();
97
+ this.defaultEcr = ecr_1.EcrFactory.build(`${this.name}Ecr`)(this, networkStack.getStack());
98
+ }
99
+ console.log("GET DEFAULT ECR:", this.defaultEcr);
100
+ return this.defaultEcr;
101
+ }
102
+ /**
103
+ * Add a compute resource to the default compute stack using the factory pattern.
104
+ */
105
+ addCompute(fn) {
106
+ const computeStack = this.getDefaultComputeStack();
107
+ computeStack.addConstruct(fn(this, computeStack.getStack()));
108
+ }
109
+ /**
110
+ * Manually add a resource to the default compute stack.
111
+ */
112
+ addComputeResource(resource) {
113
+ const computeStack = this.getDefaultComputeStack();
114
+ computeStack.addConstruct(resource);
115
+ }
116
+ /**
117
+ * Add a storage resource to the default storage stack using the factory pattern.
118
+ */
119
+ addStorage(fn) {
120
+ const storageStack = this.getDefaultStorageStack();
121
+ const storageConstruct = fn(this, storageStack.getStack());
122
+ storageStack.addConstruct(storageConstruct);
123
+ return storageConstruct;
124
+ }
125
+ /**
126
+ * Manually add a resource to the default storage stack.
127
+ */
128
+ addStorageResource(resource) {
129
+ const storageStack = this.getDefaultStorageStack();
130
+ storageStack.addConstruct(resource);
131
+ }
17
132
  }
18
133
  exports.App = App;
19
134
  App.instance = null;
20
135
  exports.default = App;
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBNEM7QUFFNUMsTUFBYSxHQUFJLFNBQVEsaUJBQU07SUFHN0I7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFTSxNQUFNLENBQUMsV0FBVztRQUN2Qiw2REFBNkQ7UUFDN0QsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQzs7QUFmSCxrQkFnQkM7QUFmZ0IsWUFBUSxHQUFlLElBQUksQ0FBQztBQWdCN0Msa0JBQWUsR0FBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwIGFzIENka0FwcCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG5leHBvcnQgY2xhc3MgQXBwIGV4dGVuZHMgQ2RrQXBwIHtcbiAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2U6IEFwcCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SW5zdGFuY2UoKTogQXBwIHtcbiAgICAvLyBEZXNwaXRlIHN1cHBvcnRpbmcgbXVsdGlwbGUgc3RhY2tzIHlvdSBjYW4gc3RpbGwgb25seSBldmVyXG4gICAgLy8gaGF2ZSBhIHNpbmdsZSBBcHBsaWNhdGlvbiBwZXIgQ0RLIGRlcGxveW1lbnRcbiAgICBpZiAoIUFwcC5pbnN0YW5jZSkge1xuICAgICAgQXBwLmluc3RhbmNlID0gbmV3IEFwcCgpO1xuICAgIH1cblxuICAgIHJldHVybiBBcHAuaW5zdGFuY2U7XG4gIH1cbn1cbmV4cG9ydCBkZWZhdWx0IEFwcDtcbiJdfQ==
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBNEM7QUFHNUMsMkNBQXVDO0FBQ3ZDLHdEQUFpRTtBQUNqRSxxREFBOEQ7QUFJOUQ7Ozs7R0FJRztBQUNILE1BQWEsR0FBSSxTQUFRLGlCQUFNO0lBUzdCLFlBQW9CLElBQWE7UUFDL0IsS0FBSyxFQUFFLENBQUM7UUFORixXQUFNLEdBQWdDLEVBQUUsQ0FBQztRQVEvQyxJQUFJLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQzs7WUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQWE7UUFDaEMsT0FBTyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFhO1FBQ3JDLDZEQUE2RDtRQUM3RCwrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxRQUFRLENBQUMsR0FBVyxFQUFFLFlBQW9DO1FBQy9ELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLG9CQUFRLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMs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N0Msa0JBQWUsR0FBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwIGFzIENka0FwcCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgQXdzU3RhY2sgfSBmcm9tIFwiLi9yZXNvdXJjZXNcIjtcbmltcG9ydCB7IFZwYywgVnBjRmFjdG9yeSB9IGZyb20gXCIuL3Jlc291cmNlcy9hd3MvbmV0d29ya2luZy92cGNcIjtcbmltcG9ydCB7IEVjciwgRWNyRmFjdG9yeSB9IGZyb20gXCIuL3Jlc291cmNlcy9hd3Mvc3RvcmFnZS9lY3JcIjtcblxuaW1wb3J0IHsgU3RvcmFnZSB9IGZyb20gXCIuL3BhdHRlcm5zL2F3cy9zdG9yYWdlXCI7XG5cbi8qKlxuICogVGhlIGJhc2ljIGNvcm5lci1zdG9uZSBvZiBhbGwgRmphbGwtaG9zdGVkIGFwcGxpY2F0aW9ucy5cbiAqICBUaGlzIGNsYXNzIGlzIGEgc2luZ2xldG9uIGFuZCBzaG91bGQgYmUgdXNlZCB0byBjcmVhdGUgYW5kIG1hbmFnZVxuICogICBhbGwgcmVzb3VyY2VzIGluIGEgRmphbGwgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBcHAgZXh0ZW5kcyBDZGtBcHAge1xuICBwcml2YXRlIHN0YXRpYyBpbnN0YW5jZTogQXBwIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgc3RhY2tzOiB7IFtrZXk6IHN0cmluZ106IEF3c1N0YWNrIH0gPSB7fTtcblxuICBwcml2YXRlIGRlZmF1bHRWcGM6IFZwYztcbiAgcHJpdmF0ZSBkZWZhdWx0RWNyOiBFY3I7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihuYW1lPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmIChuYW1lKSB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIGVsc2UgdGhpcy5uYW1lID0gXCJGamFsbEFwcFwiO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldC9DcmVhdGUgYSBiYXNpYyBGamFsbCBBcHBsaWNhdGlvblxuICAgKiBAcGFyYW0gbmFtZVxuICAgKiBAcmV0dXJucyB7QXBwfVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRBcHAobmFtZT86IHN0cmluZyk6IEFwcCB7XG4gICAgcmV0dXJuIEFwcC5nZXRJbnN0YW5jZShuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQvQ3JlYXRlIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIEFwcFxuICAgKiBAcGFyYW0gbmFtZVxuICAgKiBAcmV0dXJucyB7QXBwfVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZShuYW1lPzogc3RyaW5nKTogQXBwIHtcbiAgICAvLyBEZXNwaXRlIHN1cHBvcnRpbmcgbXVsdGlwbGUgc3RhY2tzIHlvdSBjYW4gc3RpbGwgb25seSBldmVyXG4gICAgLy8gaGF2ZSBhIHNpbmdsZSBBcHBsaWNhdGlvbiBwZXIgQ0RLIGRlcGxveW1lbnRcbiAgICBpZiAoIUFwcC5pbnN0YW5jZSkge1xuICAgICAgQXBwLmluc3RhbmNlID0gbmV3IEFwcChuYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQXBwLmluc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGEgc3RhY2sgYnkga2V5LiBJZiB0aGUgc3RhY2sgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZC5cbiAgICogIERlcGVuZGVuY2llcyBhcmUgb25seSBhcHBsaWVkIHRoZSBmaXJzdCB0aW1lIGEgc3RhY2sgaXMgY3JlYXRlZC5cbiAgICpcbiAgICogQHBhcmFtIGtleSAtIFRoZSBrZXkgb2YgdGhlIHN0YWNrXG4gICAqIEBwYXJhbSBkZXBlbmRlbmNpZXMgLSBUaGUgc3RhY2socykgdGhhdCB0aGlzIHN0YWNrIGRlcGVuZHMgb25cbiAgICogQHJldHVybnMge0F3c1N0YWNrfVxuICAgKi9cbiAgcHVibGljIGdldFN0YWNrKGtleTogc3RyaW5nLCBkZXBlbmRlbmNpZXM/OiBBd3NTdGFjayB8IEF3c1N0YWNrW10pOiBBd3NTdGFjayB7XG4gICAgaWYgKCF0aGlzLnN0YWNrc1trZXldKSB7XG4gICAgICB0aGlzLnN0YWNrc1trZXldID0gbmV3IEF3c1N0YWNrKGtleSwgZGVwZW5kZW5jaWVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGFja3Nba2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBkZWZhdWx0IGNvbXB1dGUgc3RhY2sgLSBuYW1lZCBhcyBgJHt0aGlzLm5hbWV9Q29tcHV0ZWBcbiAgICogQHJldHVybnMge0F3c1N0YWNrfVxuICAgKi9cbiAgcHVibGljIGdldERlZmF1bHRDb21wdXRlU3RhY2soKTogQXdzU3RhY2sge1xuICAgIHJldHVybiB0aGlzLmdldFN0YWNrKGAke3RoaXMubmFtZX1Db21wdXRlYCwgW1xuICAgICAgdGhpcy5nZXREZWZhdWx0TmV0d29ya1N0YWNrKCksXG4gICAgICB0aGlzLmdldERlZmF1bHRTdG9yYWdlU3RhY2soKVxuICAgIF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGRlZmF1bHQgbmV0d29yayBzdGFjayAtIG5hbWVkIGFzIGAke3RoaXMubmFtZX1OZXR3b3JrYFxuICAgKiBAcmV0dXJucyB7QXdzU3RhY2t9XG4gICAqL1xuICBwdWJsaWMgZ2V0RGVmYXVsdE5ldHdvcmtTdGFjaygpOiBBd3NTdGFjayB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RhY2soYCR7dGhpcy5uYW1lfU5ldHdvcmtgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZWZhdWx0U3RvcmFnZVN0YWNrKCk6IEF3c1N0YWNrIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdGFjayhgJHt0aGlzLm5hbWV9U3RvcmFnZWAsIHRoaXMuZ2V0RGVmYXVsdE5ldHdvcmtTdGFjaygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBkZWZhdWx0IHZwYy4gSWYgdGhlIFZQQyBkb2VzIG5vdCBleGlzdCBpdCB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqIEByZXR1cm5zIHtWcGN9XG4gICAqL1xuICBwdWJsaWMgZ2V0RGVmYXVsdFZwYygpOiBWcGMge1xuICAgIHZhciBuZXR3b3JrU3RhY2sgPSB0aGlzLmdldERlZmF1bHROZXR3b3JrU3RhY2soKTtcblxuICAgIGlmICghdGhpcy5kZWZhdWx0VnBjKSB7XG4gICAgICB0aGlzLmRlZmF1bHRWcGMgPSBWcGNGYWN0b3J5LmJ1aWxkKGAke3RoaXMubmFtZX1EZWZhdWx0VnBjYCwge1xuICAgICAgICB0YWdzOiB7fVxuICAgICAgfSkodGhpcywgbmV0d29ya1N0YWNrLmdldFN0YWNrKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRlZmF1bHRWcGM7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmVpdmUgdGhlIGRlZmF1bHQgYXBwbGljYXRpb24gY29udGFpbmVyIHJlZ2lzdHJ5LiBJZiB0aGUgcmVnaXN0cnkgZG9lcyBub3QgZXhpc3RcbiAgICogIGl0IHdpbGwgYmUgY3JlYXRlZC5cbiAgICovXG4gIHB1YmxpYyBnZXREZWZhdWx0Q29udGFpbmVyUmVnaXN0cnkoKTogRWNyIHtcbiAgICBpZiAoIXRoaXMuZGVmYXVsdEVjcikge1xuICAgICAgdmFyIG5ldHdvcmtTdGFjayA9IHRoaXMuZ2V0RGVmYXVsdE5ldHdvcmtTdGFjaygpO1xuXG4gICAgICB0aGlzLmRlZmF1bHRFY3IgPSBFY3JGYWN0b3J5LmJ1aWxkKGAke3RoaXMubmFtZX1FY3JgKShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgbmV0d29ya1N0YWNrLmdldFN0YWNrKClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coXCJHRVQgREVGQVVMVCBFQ1I6XCIsIHRoaXMuZGVmYXVsdEVjcik7XG5cbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0RWNyO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGNvbXB1dGUgcmVzb3VyY2UgdG8gdGhlIGRlZmF1bHQgY29tcHV0ZSBzdGFjayB1c2luZyB0aGUgZmFjdG9yeSBwYXR0ZXJuLlxuICAgKi9cbiAgcHVibGljIGFkZENvbXB1dGUoZm46IChhcHA6IEFwcCwgc2NvcGU6IENvbnN0cnVjdCkgPT4gQ29uc3RydWN0KTogdm9pZCB7XG4gICAgY29uc3QgY29tcHV0ZVN0YWNrID0gdGhpcy5nZXREZWZhdWx0Q29tcHV0ZVN0YWNrKCk7XG4gICAgY29tcHV0ZVN0YWNrLmFkZENvbnN0cnVjdChmbih0aGlzLCBjb21wdXRlU3RhY2suZ2V0U3RhY2soKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IGFkZCBhIHJlc291cmNlIHRvIHRoZSBkZWZhdWx0IGNvbXB1dGUgc3RhY2suXG4gICAqL1xuICBwdWJsaWMgYWRkQ29tcHV0ZVJlc291cmNlKHJlc291cmNlOiBDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICBjb25zdCBjb21wdXRlU3RhY2sgPSB0aGlzLmdldERlZmF1bHRDb21wdXRlU3RhY2soKTtcbiAgICBjb21wdXRlU3RhY2suYWRkQ29uc3RydWN0KHJlc291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQWRkIGEgc3RvcmFnZSByZXNvdXJjZSB0byB0aGUgZGVmYXVsdCBzdG9yYWdlIHN0YWNrIHVzaW5nIHRoZSBmYWN0b3J5IHBhdHRlcm4uXG4gICAqL1xuICBwdWJsaWMgYWRkU3RvcmFnZShmbjogKGFwcDogQXBwLCBzY29wZTogQ29uc3RydWN0KSA9PiBDb25zdHJ1Y3QpOiBTdG9yYWdlIHtcbiAgICBjb25zdCBzdG9yYWdlU3RhY2sgPSB0aGlzLmdldERlZmF1bHRTdG9yYWdlU3RhY2soKTtcbiAgICBjb25zdCBzdG9yYWdlQ29uc3RydWN0ID0gZm4odGhpcywgc3RvcmFnZVN0YWNrLmdldFN0YWNrKCkpO1xuICAgIHN0b3JhZ2VTdGFjay5hZGRDb25zdHJ1Y3Qoc3RvcmFnZUNvbnN0cnVjdCk7XG5cbiAgICByZXR1cm4gc3RvcmFnZUNvbnN0cnVjdCBhcyB1bmtub3duIGFzIFN0b3JhZ2U7XG4gIH1cblxuICAvKipcbiAgICogTWFudWFsbHkgYWRkIGEgcmVzb3VyY2UgdG8gdGhlIGRlZmF1bHQgc3RvcmFnZSBzdGFjay5cbiAgICovXG4gIHB1YmxpYyBhZGRTdG9yYWdlUmVzb3VyY2UocmVzb3VyY2U6IENvbnN0cnVjdCk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JhZ2VTdGFjayA9IHRoaXMuZ2V0RGVmYXVsdFN0b3JhZ2VTdGFjaygpO1xuICAgIHN0b3JhZ2VTdGFjay5hZGRDb25zdHJ1Y3QocmVzb3VyY2UpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFwcDtcbiJdfQ==
@@ -0,0 +1,42 @@
1
+ import { RepositoryImage } from "aws-cdk-lib/aws-ecs";
2
+ import { Repository } from "aws-cdk-lib/aws-ecr";
3
+ import { Connections, IConnectable, IVpc } from "aws-cdk-lib/aws-ec2";
4
+ import { Construct } from "constructs";
5
+ import App from "../../app";
6
+ import { SecretImport } from "../../resources/aws/secrets";
7
+ interface IComputeProps {
8
+ vpc?: IVpc;
9
+ ecrRepository?: Repository | RepositoryImage;
10
+ parentDomain?: string;
11
+ /**
12
+ * Port the container listens on (default: 80)
13
+ */
14
+ containerPort?: number;
15
+ /**
16
+ * Environmnet variables to pass to the container
17
+ */
18
+ containerEnvironment?: {
19
+ [key: string]: string;
20
+ };
21
+ /**
22
+ * Safely import secrets from another resource,
23
+ * object key is used as name when passing to container
24
+ */
25
+ containerSecretsImport?: {
26
+ [key: string]: SecretImport;
27
+ };
28
+ connections?: IConnectable[];
29
+ }
30
+ export declare class ComputeFactory {
31
+ static build(id: string, props: IComputeProps): (app: App, scope: Construct) => Compute;
32
+ }
33
+ export declare class Compute extends Construct implements IConnectable {
34
+ id: string;
35
+ scope: Construct;
36
+ vpc: IVpc;
37
+ connections: Connections;
38
+ private compute;
39
+ constructor(scope: Construct, id: string, props: IComputeProps);
40
+ addCompute(props: IComputeProps): void;
41
+ }
42
+ export {};
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Compute = exports.ComputeFactory = void 0;
4
+ const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
5
+ const constructs_1 = require("constructs");
6
+ const ecs_1 = require("../../resources/aws/compute/ecs");
7
+ class ComputeFactory {
8
+ static build(id, props) {
9
+ return (app, scope) => {
10
+ const computeProps = {
11
+ ...{
12
+ vpc: app.getDefaultVpc(),
13
+ ecrRepository: app.getDefaultContainerRegistry()
14
+ },
15
+ ...props
16
+ };
17
+ return new Compute(scope, id, computeProps);
18
+ };
19
+ }
20
+ }
21
+ exports.ComputeFactory = ComputeFactory;
22
+ class Compute extends constructs_1.Construct {
23
+ constructor(scope, id, props) {
24
+ super(scope, id);
25
+ this.id = id;
26
+ this.scope = scope;
27
+ this.addCompute(props);
28
+ }
29
+ addCompute(props) {
30
+ const fargateProps = {
31
+ ...props,
32
+ ...{
33
+ tags: {}
34
+ },
35
+ ...{
36
+ scalingType: ecs_1.ScalingType.CPU,
37
+ // tood: add parentDomain back
38
+ protocol: props.parentDomain ? ecs_1.Protocol.HTTPS : ecs_1.Protocol.HTTP,
39
+ containerPort: props.containerPort || 80,
40
+ serviceName: `${this.id}Service`,
41
+ clusterName: `${this.id}Cluster`
42
+ }
43
+ };
44
+ this.compute = new ecs_1.default(this.scope, `${this.id}Fargate`, fargateProps);
45
+ if (props.connections) {
46
+ for (var conn of props.connections) {
47
+ this.compute.connections.allowTo(conn, aws_ec2_1.Port.allTcp());
48
+ }
49
+ }
50
+ this.connections = this.compute.connections;
51
+ }
52
+ }
53
+ exports.Compute = Compute;
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvY29tcHV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxpREFNNkI7QUFFN0IsMkNBQXVDO0FBSXZDLHlEQUt5QztBQW1DekMsTUFBYSxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBVSxFQUFFLEtBQW9CO1FBQzNDLE9BQU8sQ0FBQyxHQUFRLEVBQUUsS0FBZ0IsRUFBRSxFQUFFO1lBQ3BDLE1BQU0sWUFBWSxHQUFHO2dCQUNuQixHQUFHO29CQUNELEdBQUcsRUFBRSxHQUFHLENBQUMsYUFBYSxFQUFFO29CQUN4QixhQUFhLEVBQUUsR0FBRyxDQUFDLDJCQUEyQixFQUFFO2lCQUNqRDtnQkFDRCxHQUFHLEtBQUs7YUFDVCxDQUFDO1lBRUYsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWRELHdDQWNDO0FBRUQsTUFBYSxPQUFRLFNBQVEsc0JBQVM7SUFTcEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUM1RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQW9CO1FBQzdCLE1BQU0sWUFBWSxHQUFHO1lBQ25CLEdBQUcsS0FBSztZQUNSLEdBQUc7Z0JBQ0QsSUFBSSxFQUFFLEVBQUU7YUFDVDtZQUNELEdBQUc7Z0JBQ0QsV0FBVyxFQUFFLGlCQUFXLENBQUMsR0FBRztnQkFDNUIsOEJBQThCO2dCQUM5QixRQUFRLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsY0FBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBUSxDQUFDLElBQUk7Z0JBQzdELGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLEVBQUU7Z0JBQ3hDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLFNBQVM7Z0JBQ2hDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLFNBQVM7YUFDakM7U0FDcUIsQ0FBQztRQUV6QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksYUFBYyxDQUMvQixJQUFJLENBQUMsS0FBSyxFQUNWLEdBQUcsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUNuQixZQUFZLENBQ2IsQ0FBQztRQUVGLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLGNBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUEvQ0QsMEJBK0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVwb3NpdG9yeUltYWdlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvbnMsXG4gIElDb25uZWN0YWJsZSxcbiAgSVZwYyxcbiAgUG9ydCxcbiAgU3VibmV0VHlwZVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgQXBwIGZyb20gXCIuLi8uLi9hcHBcIjtcblxuaW1wb3J0IEZhcmdhdGVDbHVzdGVyLCB7XG4gIENvbnRhaW5lclNlY3JldCxcbiAgRmFyZ2F0ZUNsdXN0ZXJQcm9wcyxcbiAgUHJvdG9jb2wsXG4gIFNjYWxpbmdUeXBlXG59IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2NvbXB1dGUvZWNzXCI7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgU2VjcmV0SW1wb3J0IH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3Mvc2VjcmV0c1wiO1xuXG5pbnRlcmZhY2UgSUNvbXB1dGVQcm9wcyB7XG4gIHZwYz86IElWcGM7XG4gIGVjclJlcG9zaXRvcnk/OiBSZXBvc2l0b3J5IHwgUmVwb3NpdG9yeUltYWdlO1xuXG4gIC8vIE92ZXJyaWRhYmxlIHByb3BlcnRpZXMgdG8gY29uZmlndXJlIHRoZSBjcmVhdGVkIGNvbXB1dGUgcmVzb3VyY2VcblxuICBwYXJlbnREb21haW4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBvcnQgdGhlIGNvbnRhaW5lciBsaXN0ZW5zIG9uIChkZWZhdWx0OiA4MClcbiAgICovXG4gIGNvbnRhaW5lclBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVudmlyb25tbmV0IHZhcmlhYmxlcyB0byBwYXNzIHRvIHRoZSBjb250YWluZXJcbiAgICovXG4gIGNvbnRhaW5lckVudmlyb25tZW50Pzoge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgfTtcblxuICAvKipcbiAgICogU2FmZWx5IGltcG9ydCBzZWNyZXRzIGZyb20gYW5vdGhlciByZXNvdXJjZSxcbiAgICogIG9iamVjdCBrZXkgaXMgdXNlZCBhcyBuYW1lIHdoZW4gcGFzc2luZyB0byBjb250YWluZXJcbiAgICovXG4gIGNvbnRhaW5lclNlY3JldHNJbXBvcnQ/OiB7XG4gICAgW2tleTogc3RyaW5nXTogU2VjcmV0SW1wb3J0O1xuICB9O1xuXG4gIGNvbm5lY3Rpb25zPzogSUNvbm5lY3RhYmxlW107XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wdXRlRmFjdG9yeSB7XG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wczogSUNvbXB1dGVQcm9wcykge1xuICAgIHJldHVybiAoYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IHtcbiAgICAgIGNvbnN0IGNvbXB1dGVQcm9wcyA9IHtcbiAgICAgICAgLi4ue1xuICAgICAgICAgIHZwYzogYXBwLmdldERlZmF1bHRWcGMoKSxcbiAgICAgICAgICBlY3JSZXBvc2l0b3J5OiBhcHAuZ2V0RGVmYXVsdENvbnRhaW5lclJlZ2lzdHJ5KClcbiAgICAgICAgfSxcbiAgICAgICAgLi4ucHJvcHNcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBuZXcgQ29tcHV0ZShzY29wZSwgaWQsIGNvbXB1dGVQcm9wcyk7XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcHV0ZSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElDb25uZWN0YWJsZSB7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwdWJsaWMgc2NvcGU6IENvbnN0cnVjdDtcbiAgcHVibGljIHZwYzogSVZwYztcblxuICBwdWJsaWMgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuXG4gIHByaXZhdGUgY29tcHV0ZTogRmFyZ2F0ZUNsdXN0ZXI7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElDb21wdXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG5cbiAgICB0aGlzLmFkZENvbXB1dGUocHJvcHMpO1xuICB9XG5cbiAgYWRkQ29tcHV0ZShwcm9wczogSUNvbXB1dGVQcm9wcykge1xuICAgIGNvbnN0IGZhcmdhdGVQcm9wcyA9IHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgLi4ue1xuICAgICAgICB0YWdzOiB7fVxuICAgICAgfSxcbiAgICAgIC4uLntcbiAgICAgICAgc2NhbGluZ1R5cGU6IFNjYWxpbmdUeXBlLkNQVSxcbiAgICAgICAgLy8gdG9vZDogYWRkIHBhcmVudERvbWFpbiBiYWNrXG4gICAgICAgIHByb3RvY29sOiBwcm9wcy5wYXJlbnREb21haW4gPyBQcm90b2NvbC5IVFRQUyA6IFByb3RvY29sLkhUVFAsXG4gICAgICAgIGNvbnRhaW5lclBvcnQ6IHByb3BzLmNvbnRhaW5lclBvcnQgfHwgODAsXG4gICAgICAgIHNlcnZpY2VOYW1lOiBgJHt0aGlzLmlkfVNlcnZpY2VgLFxuICAgICAgICBjbHVzdGVyTmFtZTogYCR7dGhpcy5pZH1DbHVzdGVyYFxuICAgICAgfVxuICAgIH0gYXMgRmFyZ2F0ZUNsdXN0ZXJQcm9wcztcblxuICAgIHRoaXMuY29tcHV0ZSA9IG5ldyBGYXJnYXRlQ2x1c3RlcihcbiAgICAgIHRoaXMuc2NvcGUsXG4gICAgICBgJHt0aGlzLmlkfUZhcmdhdGVgLFxuICAgICAgZmFyZ2F0ZVByb3BzXG4gICAgKTtcblxuICAgIGlmIChwcm9wcy5jb25uZWN0aW9ucykge1xuICAgICAgZm9yICh2YXIgY29ubiBvZiBwcm9wcy5jb25uZWN0aW9ucykge1xuICAgICAgICB0aGlzLmNvbXB1dGUuY29ubmVjdGlvbnMuYWxsb3dUbyhjb25uLCBQb3J0LmFsbFRjcCgpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5jb21wdXRlLmNvbm5lY3Rpb25zO1xuICB9XG59XG4iXX0=
@@ -19,6 +19,9 @@ interface DatabaseProps {
19
19
  [key: string]: string;
20
20
  };
21
21
  }
22
+ /**
23
+ * @deprecated Use Storage instead
24
+ */
22
25
  export declare class Database extends Stack implements IConnectable {
23
26
  connections: Connections;
24
27
  vpc: IVpc;
@@ -4,6 +4,9 @@ exports.Database = void 0;
4
4
  const aws_cdk_lib_1 = require("aws-cdk-lib");
5
5
  const database_1 = require("../../resources/aws/database");
6
6
  const vpc_1 = require("../../resources/aws/networking/vpc");
7
+ /**
8
+ * @deprecated Use Storage instead
9
+ */
7
10
  class Database extends aws_cdk_lib_1.Stack {
8
11
  constructor(scope, id, props) {
9
12
  super(scope, id);
@@ -54,4 +57,4 @@ class Database extends aws_cdk_lib_1.Stack {
54
57
  }
55
58
  }
56
59
  exports.Database = Database;
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2RhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvQztBQUVwQywyREFJc0M7QUFDdEMsNERBQXlEO0FBNkJ6RCxNQUFhLFFBQVMsU0FBUSxtQkFBSztJQU1qQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW9CO1FBQzVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBb0I7UUFDekIsSUFBSSxPQUFPLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxHQUF3QixDQUFDO1lBQ2pELElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxLQUFLLEVBQUU7Z0JBQzFELEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSzthQUN2QixDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxHQUFtQixDQUFDO1lBQzVDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxTQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBRSxFQUFFO2dCQUNoRCxTQUFTLEVBQUUsU0FBUyxDQUFDLFNBQVM7Z0JBQzlCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTthQUNqQixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFvQjtRQUM5QixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG9CQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLFlBQVksS0FBSyxFQUFFO2dCQUM5RCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO2dCQUNoQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFO2FBQ3ZCLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHNCQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLFlBQVksS0FBSyxFQUFFO2dCQUNoRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO2dCQUNoQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFO2FBQ3ZCLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHNCQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLFlBQVksS0FBSyxFQUFFO2dCQUNoRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO2dCQUNoQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFO2FBQ3ZCLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQy9DLENBQUM7Q0FDRjtBQXJERCw0QkFxREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIFJkc0F1cm9yYSxcbiAgUmRzRnJlZVRpZXIsXG4gIFJkc0luc3RhbmNlXG59IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2RhdGFiYXNlXCI7XG5pbXBvcnQgeyBWcGMgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL3ZwY1wiO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvbnMsXG4gIElDb25uZWN0YWJsZSxcbiAgSVZwYyxcbiAgU3VibmV0VHlwZVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuXG5pbnRlcmZhY2UgRXhpc3RpbmdWcGNDb25maWcge1xuICB2cGNJZD86IHN0cmluZztcbiAgc3VibmV0VHlwZT86IFN1Ym5ldFR5cGU7XG59XG5cbmludGVyZmFjZSBOZXdWcGNDb25maWcge1xuICBzdWJuZXRUeXBlPzogU3VibmV0VHlwZTtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG59XG5cbnR5cGUgVnBjUHJvcHMgPSBFeGlzdGluZ1ZwY0NvbmZpZyB8IE5ld1ZwY0NvbmZpZztcblxudHlwZSBEYXRhYmFzZVR5cGUgPSBcIkF1cm9yYVwiIHwgXCJJbnN0YW5jZVwiIHwgXCJGcmVlVGllclwiO1xuXG5pbnRlcmZhY2UgRGF0YWJhc2VQcm9wcyB7XG4gIHR5cGU6IERhdGFiYXNlVHlwZTtcbiAgZGF0YWJhc2VOYW1lOiBzdHJpbmc7XG4gIHZwYzogVnBjUHJvcHM7XG4gIHRhZ3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhYmFzZSBleHRlbmRzIFN0YWNrIGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcbiAgcHVibGljIHZwYzogSVZwYztcblxuICBwcml2YXRlIGRhdGFiYXNlOiBSZHNBdXJvcmEgfCBSZHNJbnN0YW5jZSB8IFJkc0ZyZWVUaWVyO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhYmFzZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuYWRkVnBjKHByb3BzKTtcbiAgICB0aGlzLmFkZERhdGFiYXNlKHByb3BzKTtcbiAgfVxuXG4gIGFkZFZwYyhwcm9wczogRGF0YWJhc2VQcm9wcykge1xuICAgIGlmIChcInZwY0lkXCIgaW4gcHJvcHMudnBjKSB7XG4gICAgICBjb25zdCB2cGNDb25maWcgPSBwcm9wcy52cGMgYXMgRXhpc3RpbmdWcGNDb25maWc7XG4gICAgICB0aGlzLnZwYyA9IFZwYy5mcm9tTG9va3VwKHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1WcGNgLCB7XG4gICAgICAgIHZwY0lkOiB2cGNDb25maWcudnBjSWRcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2cGNDb25maWcgPSBwcm9wcy52cGMgYXMgTmV3VnBjQ29uZmlnO1xuICAgICAgdGhpcy52cGMgPSBuZXcgVnBjKHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1gLCB7XG4gICAgICAgIGFjY291bnRJZDogdnBjQ29uZmlnLmFjY291bnRJZCxcbiAgICAgICAgdGFnczogcHJvcHMudGFnc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYWRkRGF0YWJhc2UocHJvcHM6IERhdGFiYXNlUHJvcHMpIHtcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gXCJBdXJvcmFcIikge1xuICAgICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBSZHNBdXJvcmEodGhpcywgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVJkc2AsIHtcbiAgICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgICAgZGF0YWJhc2VOYW1lOiBwcm9wcy5kYXRhYmFzZU5hbWUsXG4gICAgICAgIHRhZ3M6IHByb3BzLnRhZ3MgfHwge31cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAocHJvcHMudHlwZSA9PT0gXCJJbnN0YW5jZVwiKSB7XG4gICAgICB0aGlzLmRhdGFiYXNlID0gbmV3IFJkc0luc3RhbmNlKHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1SZHNgLCB7XG4gICAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICAgIGRhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzIHx8IHt9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLnR5cGUgPT09IFwiRnJlZVRpZXJcIikge1xuICAgICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBSZHNGcmVlVGllcih0aGlzLCBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UmRzYCwge1xuICAgICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgICBkYXRhYmFzZU5hbWU6IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgdGFnczogcHJvcHMudGFncyB8fCB7fVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZGF0YWJhc2UgdHlwZVwiKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5kYXRhYmFzZS5jb25uZWN0aW9ucztcbiAgfVxufVxuIl19
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2RhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvQztBQUVwQywyREFJc0M7QUFDdEMsNERBQXlEO0FBNkJ6RDs7R0FFRztBQUNILE1BQWEsUUFBUyxTQUFRLG1CQUFLO0lBTWpDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFvQjtRQUN6QixJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDekIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQXdCLENBQUM7WUFDakQsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxZQUFZLEtBQUssRUFBRTtnQkFDMUQsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO2FBQ3ZCLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQW1CLENBQUM7WUFDNUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hELFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUztnQkFDOUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2FBQ2pCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQW9CO1FBQzlCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksb0JBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxLQUFLLEVBQUU7Z0JBQzlELEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQ2hDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUU7YUFDdkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksc0JBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxLQUFLLEVBQUU7Z0JBQ2hFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQ2hDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUU7YUFDdkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksc0JBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxLQUFLLEVBQUU7Z0JBQ2hFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQ2hDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUU7YUFDdkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDL0MsQ0FBQztDQUNGO0FBckRELDRCQXFEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgUmRzQXVyb3JhLFxuICBSZHNGcmVlVGllcixcbiAgUmRzSW5zdGFuY2Vcbn0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvZGF0YWJhc2VcIjtcbmltcG9ydCB7IFZwYyB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvdnBjXCI7XG5pbXBvcnQge1xuICBDb25uZWN0aW9ucyxcbiAgSUNvbm5lY3RhYmxlLFxuICBJVnBjLFxuICBTdWJuZXRUeXBlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5cbmludGVyZmFjZSBFeGlzdGluZ1ZwY0NvbmZpZyB7XG4gIHZwY0lkPzogc3RyaW5nO1xuICBzdWJuZXRUeXBlPzogU3VibmV0VHlwZTtcbn1cblxuaW50ZXJmYWNlIE5ld1ZwY0NvbmZpZyB7XG4gIHN1Ym5ldFR5cGU/OiBTdWJuZXRUeXBlO1xuICBhY2NvdW50SWQ6IHN0cmluZztcbn1cblxudHlwZSBWcGNQcm9wcyA9IEV4aXN0aW5nVnBjQ29uZmlnIHwgTmV3VnBjQ29uZmlnO1xuXG50eXBlIERhdGFiYXNlVHlwZSA9IFwiQXVyb3JhXCIgfCBcIkluc3RhbmNlXCIgfCBcIkZyZWVUaWVyXCI7XG5cbmludGVyZmFjZSBEYXRhYmFzZVByb3BzIHtcbiAgdHlwZTogRGF0YWJhc2VUeXBlO1xuICBkYXRhYmFzZU5hbWU6IHN0cmluZztcbiAgdnBjOiBWcGNQcm9wcztcbiAgdGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgU3RvcmFnZSBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhYmFzZSBleHRlbmRzIFN0YWNrIGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcbiAgcHVibGljIHZwYzogSVZwYztcblxuICBwcml2YXRlIGRhdGFiYXNlOiBSZHNBdXJvcmEgfCBSZHNJbnN0YW5jZSB8IFJkc0ZyZWVUaWVyO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhYmFzZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuYWRkVnBjKHByb3BzKTtcbiAgICB0aGlzLmFkZERhdGFiYXNlKHByb3BzKTtcbiAgfVxuXG4gIGFkZFZwYyhwcm9wczogRGF0YWJhc2VQcm9wcykge1xuICAgIGlmIChcInZwY0lkXCIgaW4gcHJvcHMudnBjKSB7XG4gICAgICBjb25zdCB2cGNDb25maWcgPSBwcm9wcy52cGMgYXMgRXhpc3RpbmdWcGNDb25maWc7XG4gICAgICB0aGlzLnZwYyA9IFZwYy5mcm9tTG9va3VwKHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1WcGNgLCB7XG4gICAgICAgIHZwY0lkOiB2cGNDb25maWcudnBjSWRcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2cGNDb25maWcgPSBwcm9wcy52cGMgYXMgTmV3VnBjQ29uZmlnO1xuICAgICAgdGhpcy52cGMgPSBuZXcgVnBjKHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1gLCB7XG4gICAgICAgIGFjY291bnRJZDogdnBjQ29uZmlnLmFjY291bnRJZCxcbiAgICAgICAgdGFnczogcHJvcHMudGFnc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYWRkRGF0YWJhc2UocHJvcHM6IERhdGFiYXNlUHJvcHMpIHtcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gXCJBdXJvcmFcIikge1xuICAgICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBSZHNBdXJvcmEodGhpcywgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVJkc2AsIHtcbiAgICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgICAgZGF0YWJhc2VOYW1lOiBwcm9wcy5kYXRhYmFzZU5hbWUsXG4gICAgICAgIHRhZ3M6IHByb3BzLnRhZ3MgfHwge31cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAocHJvcHMudHlwZSA9PT0gXCJJbnN0YW5jZVwiKSB7XG4gICAgICB0aGlzLmRhdGFiYXNlID0gbmV3IFJkc0luc3RhbmNlKHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1SZHNgLCB7XG4gICAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICAgIGRhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzIHx8IHt9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLnR5cGUgPT09IFwiRnJlZVRpZXJcIikge1xuICAgICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBSZHNGcmVlVGllcih0aGlzLCBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UmRzYCwge1xuICAgICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgICBkYXRhYmFzZU5hbWU6IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgdGFnczogcHJvcHMudGFncyB8fCB7fVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZGF0YWJhc2UgdHlwZVwiKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5kYXRhYmFzZS5jb25uZWN0aW9ucztcbiAgfVxufVxuIl19
@@ -6,3 +6,5 @@ export * from "./buildkite";
6
6
  export * from "../../resources/aws/compute/ec2";
7
7
  export * from "./fivetranProxy";
8
8
  export * from "./database";
9
+ export * from "./compute";
10
+ export * from "./storage";
@@ -22,4 +22,7 @@ __exportStar(require("./buildkite"), exports);
22
22
  __exportStar(require("../../resources/aws/compute/ec2"), exports);
23
23
  __exportStar(require("./fivetranProxy"), exports);
24
24
  __exportStar(require("./database"), exports);
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3REFBc0M7QUFDdEMsb0RBQWtDO0FBQ2xDLG1EQUFpQztBQUNqQyw2Q0FBMkI7QUFDM0IsOENBQTRCO0FBQzVCLGtFQUFnRDtBQUNoRCxrREFBZ0M7QUFDaEMsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vbWFuYWdlZE9yZ2FuaXNhdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWFuYWdlZFBsYXRmb3JtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tYW5hZ2VkQWNjb3VudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYmFzaWNBcHBcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2J1aWxka2l0ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9lYzJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ZpdmV0cmFuUHJveHlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlXCI7XG4iXX0=
25
+ // Patterns
26
+ __exportStar(require("./compute"), exports);
27
+ __exportStar(require("./storage"), exports);
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3REFBc0M7QUFDdEMsb0RBQWtDO0FBQ2xDLG1EQUFpQztBQUNqQyw2Q0FBMkI7QUFDM0IsOENBQTRCO0FBQzVCLGtFQUFnRDtBQUNoRCxrREFBZ0M7QUFDaEMsNkNBQTJCO0FBRTNCLFdBQVc7QUFDWCw0Q0FBMEI7QUFDMUIsNENBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vbWFuYWdlZE9yZ2FuaXNhdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWFuYWdlZFBsYXRmb3JtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tYW5hZ2VkQWNjb3VudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYmFzaWNBcHBcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2J1aWxka2l0ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9lYzJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ZpdmV0cmFuUHJveHlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlXCI7XG5cbi8vIFBhdHRlcm5zXG5leHBvcnQgKiBmcm9tIFwiLi9jb21wdXRlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdG9yYWdlXCI7XG4iXX0=
@@ -0,0 +1,32 @@
1
+ import { Construct } from "constructs";
2
+ import App from "../../app";
3
+ import { Secret } from "../../resources/aws/secrets";
4
+ import { Vpc } from "../../resources/aws/networking/vpc";
5
+ import { Connections, IConnectable, IVpc } from "aws-cdk-lib/aws-ec2";
6
+ type StorageType = "Aurora" | "Instance" | "FreeTier";
7
+ export interface IStorageProps {
8
+ type: StorageType;
9
+ databaseName: string;
10
+ vpc?: Vpc;
11
+ tags?: {
12
+ [key: string]: string;
13
+ };
14
+ }
15
+ export declare class StorageFactory {
16
+ static build(id: string, props: IStorageProps): (app: App, scope: Construct) => Storage;
17
+ }
18
+ export declare class Storage extends Construct implements IConnectable {
19
+ id: string;
20
+ scope: Construct;
21
+ vpc: IVpc;
22
+ connections: Connections;
23
+ private databaseName;
24
+ private database;
25
+ constructor(scope: Construct, id: string, props: IStorageProps);
26
+ addStorage(props: IStorageProps): void;
27
+ getCredentials(): Secret;
28
+ getHostEndpoint(): string;
29
+ getHostPort(): string | number;
30
+ getDatabaseName(): string;
31
+ }
32
+ export {};
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Storage = exports.StorageFactory = void 0;
4
+ const constructs_1 = require("constructs");
5
+ const database_1 = require("../../resources/aws/database");
6
+ class StorageFactory {
7
+ static build(id, props) {
8
+ return (app, scope) => {
9
+ const storageProps = {
10
+ ...{
11
+ vpc: props.vpc || app.getDefaultVpc()
12
+ },
13
+ ...props
14
+ };
15
+ return new Storage(scope, id, storageProps);
16
+ };
17
+ }
18
+ }
19
+ exports.StorageFactory = StorageFactory;
20
+ class Storage extends constructs_1.Construct {
21
+ constructor(scope, id, props) {
22
+ super(scope, id);
23
+ this.id = id;
24
+ this.scope = scope;
25
+ this.databaseName = props.databaseName;
26
+ this.addStorage(props);
27
+ }
28
+ addStorage(props) {
29
+ if (props.type === "Aurora") {
30
+ if (!props.vpc) {
31
+ throw new Error("VPC is required for Aurora database");
32
+ }
33
+ this.database = new database_1.RdsAurora(this, `${props.databaseName}Rds`, {
34
+ vpc: props.vpc,
35
+ databaseName: props.databaseName,
36
+ tags: props.tags || {}
37
+ });
38
+ }
39
+ else if (props.type === "Instance") {
40
+ this.database = new database_1.RdsInstance(this, `${props.databaseName}Rds`, {
41
+ vpc: props.vpc,
42
+ databaseName: props.databaseName,
43
+ tags: props.tags || {}
44
+ });
45
+ }
46
+ else if (props.type === "FreeTier") {
47
+ this.database = new database_1.RdsFreeTier(this, `${props.databaseName}Rds`, {
48
+ vpc: props.vpc,
49
+ databaseName: props.databaseName,
50
+ tags: props.tags || {}
51
+ });
52
+ }
53
+ else {
54
+ throw new Error("Invalid database type");
55
+ }
56
+ this.connections = this.database.connections;
57
+ }
58
+ getCredentials() {
59
+ return this.database.getCredentials();
60
+ }
61
+ getHostEndpoint() {
62
+ return this.database.getHostEndpoint();
63
+ }
64
+ getHostPort() {
65
+ return this.database.getHostPort();
66
+ }
67
+ getDatabaseName() {
68
+ return this.databaseName;
69
+ }
70
+ }
71
+ exports.Storage = Storage;
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3Mvc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyQ0FBdUM7QUFHdkMsMkRBSXNDO0FBZXRDLE1BQWEsY0FBYztJQUN6QixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQVUsRUFBRSxLQUFvQjtRQUMzQyxPQUFPLENBQUMsR0FBUSxFQUFFLEtBQWdCLEVBQUUsRUFBRTtZQUNwQyxNQUFNLFlBQVksR0FBRztnQkFDbkIsR0FBRztvQkFDRCxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxFQUFFO2lCQUN0QztnQkFDRCxHQUFHLEtBQUs7YUFDVCxDQUFDO1lBQ0YsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQVpELHdDQVlDO0FBRUQsTUFBYSxPQUFRLFNBQVEsc0JBQVM7SUFVcEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUM1RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFvQjtRQUM3QixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDZixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7WUFDekQsQ0FBQztZQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxvQkFBUyxDQUFDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxZQUFZLEtBQUssRUFBRTtnQkFDOUQsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO2dCQUNkLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtnQkFDaEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRTthQUN2QixDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxzQkFBVyxDQUFDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxZQUFZLEtBQUssRUFBRTtnQkFDaEUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO2dCQUNkLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtnQkFDaEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRTthQUN2QixDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxzQkFBVyxDQUFDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxZQUFZLEtBQUssRUFBRTtnQkFDaEUsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO2dCQUNkLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtnQkFDaEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRTthQUN2QixDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUMvQyxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUEvREQsMEJBK0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCBBcHAgZnJvbSBcIi4uLy4uL2FwcFwiO1xuaW1wb3J0IHtcbiAgUmRzQXVyb3JhLFxuICBSZHNGcmVlVGllcixcbiAgUmRzSW5zdGFuY2Vcbn0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvZGF0YWJhc2VcIjtcbmltcG9ydCB7IFNlY3JldCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3NlY3JldHNcIjtcblxuaW1wb3J0IHsgVnBjIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvbmV0d29ya2luZy92cGNcIjtcbmltcG9ydCB7IENvbm5lY3Rpb25zLCBJQ29ubmVjdGFibGUsIElWcGMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuXG50eXBlIFN0b3JhZ2VUeXBlID0gXCJBdXJvcmFcIiB8IFwiSW5zdGFuY2VcIiB8IFwiRnJlZVRpZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJU3RvcmFnZVByb3BzIHtcbiAgdHlwZTogU3RvcmFnZVR5cGU7XG4gIGRhdGFiYXNlTmFtZTogc3RyaW5nO1xuICB2cGM/OiBWcGM7XG4gIHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG5leHBvcnQgY2xhc3MgU3RvcmFnZUZhY3Rvcnkge1xuICBzdGF0aWMgYnVpbGQoaWQ6IHN0cmluZywgcHJvcHM6IElTdG9yYWdlUHJvcHMpIHtcbiAgICByZXR1cm4gKGFwcDogQXBwLCBzY29wZTogQ29uc3RydWN0KSA9PiB7XG4gICAgICBjb25zdCBzdG9yYWdlUHJvcHMgPSB7XG4gICAgICAgIC4uLntcbiAgICAgICAgICB2cGM6IHByb3BzLnZwYyB8fCBhcHAuZ2V0RGVmYXVsdFZwYygpXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnByb3BzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlKHNjb3BlLCBpZCwgc3RvcmFnZVByb3BzKTtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdG9yYWdlIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHVibGljIGlkOiBzdHJpbmc7XG4gIHB1YmxpYyBzY29wZTogQ29uc3RydWN0O1xuICBwdWJsaWMgdnBjOiBJVnBjO1xuXG4gIHB1YmxpYyBjb25uZWN0aW9uczogQ29ubmVjdGlvbnM7XG5cbiAgcHJpdmF0ZSBkYXRhYmFzZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBkYXRhYmFzZTogUmRzQXVyb3JhIHwgUmRzSW5zdGFuY2UgfCBSZHNGcmVlVGllcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSVN0b3JhZ2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcblxuICAgIHRoaXMuZGF0YWJhc2VOYW1lID0gcHJvcHMuZGF0YWJhc2VOYW1lO1xuICAgIHRoaXMuYWRkU3RvcmFnZShwcm9wcyk7XG4gIH1cblxuICBhZGRTdG9yYWdlKHByb3BzOiBJU3RvcmFnZVByb3BzKSB7XG4gICAgaWYgKHByb3BzLnR5cGUgPT09IFwiQXVyb3JhXCIpIHtcbiAgICAgIGlmICghcHJvcHMudnBjKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlZQQyBpcyByZXF1aXJlZCBmb3IgQXVyb3JhIGRhdGFiYXNlXCIpO1xuICAgICAgfVxuICAgICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBSZHNBdXJvcmEodGhpcywgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVJkc2AsIHtcbiAgICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICAgIGRhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzIHx8IHt9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLnR5cGUgPT09IFwiSW5zdGFuY2VcIikge1xuICAgICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBSZHNJbnN0YW5jZSh0aGlzLCBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UmRzYCwge1xuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgZGF0YWJhc2VOYW1lOiBwcm9wcy5kYXRhYmFzZU5hbWUsXG4gICAgICAgIHRhZ3M6IHByb3BzLnRhZ3MgfHwge31cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAocHJvcHMudHlwZSA9PT0gXCJGcmVlVGllclwiKSB7XG4gICAgICB0aGlzLmRhdGFiYXNlID0gbmV3IFJkc0ZyZWVUaWVyKHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1SZHNgLCB7XG4gICAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgICBkYXRhYmFzZU5hbWU6IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgdGFnczogcHJvcHMudGFncyB8fCB7fVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZGF0YWJhc2UgdHlwZVwiKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5kYXRhYmFzZS5jb25uZWN0aW9ucztcbiAgfVxuXG4gIGdldENyZWRlbnRpYWxzKCk6IFNlY3JldCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2UuZ2V0Q3JlZGVudGlhbHMoKTtcbiAgfVxuXG4gIGdldEhvc3RFbmRwb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGFiYXNlLmdldEhvc3RFbmRwb2ludCgpO1xuICB9XG5cbiAgZ2V0SG9zdFBvcnQoKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5nZXRIb3N0UG9ydCgpO1xuICB9XG5cbiAgZ2V0RGF0YWJhc2VOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2VOYW1lO1xuICB9XG59XG4iXX0=
@@ -34,6 +34,7 @@ export declare class AwsStack implements StackBuilder {
34
34
  addContainerRegistry(resource: Repository): AwsStack;
35
35
  addContainerRegistry(resource: (stackBuilder: StackBuilder) => Repository): AwsStack;
36
36
  getStack(): Stack;
37
+ getStackName(): string;
37
38
  getNetwork(): Construct;
38
39
  getContainerRegistry(): Repository;
39
40
  getResource(identifier: string): Construct;
@@ -50,6 +50,7 @@ class AwsStack {
50
50
  this.resources[construct.node.id] = construct;
51
51
  return this;
52
52
  }
53
+ // @deprecated - use addConstruct instead
53
54
  addResource(fn) {
54
55
  const resource = fn(this);
55
56
  this.resources[resource.node.id] = resource;
@@ -70,6 +71,9 @@ class AwsStack {
70
71
  getStack() {
71
72
  return this.stack;
72
73
  }
74
+ getStackName() {
75
+ return this.stack.stackName;
76
+ }
73
77
  getNetwork() {
74
78
  return this.network;
75
79
  }
@@ -95,4 +99,4 @@ class AwsStack {
95
99
  }
96
100
  exports.AwsStack = AwsStack;
97
101
  exports.default = AwsStack;
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzU3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9iYXNlL2F3c1N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFnRDtBQUNoRCxpREFBeUQ7QUFDekQsMkNBQXVDO0FBRXZDLHNDQUErQjtBQUMvQixpREFBaUQ7QUFvQmpELE1BQWEsUUFBUTtJQVNuQixZQUNFLEVBQVUsRUFDVixZQUFvQyxFQUNwQyxLQUFxQjtRQVhQLGNBQVMsR0FFckIsRUFBRSxDQUFDO1FBV0wseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFekMsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVPLGVBQWUsQ0FBQyxZQUFvQztRQUMxRCxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFFMUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDaEMsS0FBSyxNQUFNLFVBQVUsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsRUFBVSxFQUFFLEtBQXFCO1FBQ25ELElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDN0MsT0FBTyxJQUFJLG1CQUFLLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJ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WSxzQkFBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFdkUsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUU5QyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1lBQ3RFLE9BQU8sSUFBSSxDQUFDO1FBRWQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekQsWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXpELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBeklELDRCQXlJQztBQUNELGtCQUFlLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBJQ29ubmVjdGFibGUsIFBvcnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IEFwcCBmcm9tIFwiLi4vLi4vLi4vYXBwXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3JcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTdGFja0J1aWxkZXIge1xuICBhZGRDb25zdHJ1Y3QocmVzb3VyY2U6IENvbnN0cnVjdCk6IFN0YWNrQnVpbGRlcjtcbiAgYWRkUmVzb3VyY2UoZm46IChzdGFja0J1aWxkZXI6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0KTogU3RhY2tCdWlsZGVyO1xuXG4gIGFkZE5ldHdvcmsocmVzb3VyY2U6IENvbnN0cnVjdCk6IFN0YWNrQnVpbGRlcjtcbiAgYWRkTmV0d29yayhmbjogKHN0YWNrQnVpbGRlcjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3QpOiBTdGFja0J1aWxkZXI7XG4gIGFkZE5ldHdvcmsocmVzb3VyY2U6IENvbnN0cnVjdCB8IHN0cmluZyk6IFN0YWNrQnVpbGRlcjtcblxuICBnZXRTdGFjaygpOiBTdGFjaztcbiAgZ2V0TmV0d29yaygpOiBDb25zdHJ1Y3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzU3RhY2tQcm9wcyB7XG4gIHJlYWRvbmx5IGFjY291bnRJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuICBhY2NvdW50TmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEF3c1N0YWNrIGltcGxlbWVudHMgU3RhY2tCdWlsZGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlczoge1xuICAgIFtrZXk6IHN0cmluZ106IENvbnN0cnVjdDtcbiAgfSA9IHt9O1xuXG4gIHByaXZhdGUgc3RhY2s6IFN0YWNrO1xuICBwcml2YXRlIG5ldHdvcms6IENvbnN0cnVjdDtcbiAgcHJpdmF0ZSBjb250YWluZXJSZWdpc3RyeTogUmVwb3NpdG9yeTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpZDogc3RyaW5nLFxuICAgIGRlcGVuZGVuY2llcz86IEF3c1N0YWNrIHwgQXdzU3RhY2tbXSxcbiAgICBwcm9wcz86IEF3c1N0YWNrUHJvcHNcbiAgKSB7XG4gICAgLy8gQ3JlYXRlIGlubmVyIENESyBTdGFja1xuICAgIHRoaXMuc3RhY2sgPSB0aGlzLmdldENka1N0YWNrKGlkLCBwcm9wcyk7XG5cbiAgICAvLyBSZWdpc3RlciBhbGwgc3RhY2sgZGVwZW5kZW5jaWVzXG4gICAgdGhpcy5hZGREZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcz86IEF3c1N0YWNrIHwgQXdzU3RhY2tbXSkge1xuICAgIGlmICghZGVwZW5kZW5jaWVzKSByZXR1cm47XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShkZXBlbmRlbmNpZXMpKSB7XG4gICAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3kgb2YgZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIHRoaXMuc3RhY2suYWRkRGVwZW5kZW5jeShkZXBlbmRlbmN5LmdldFN0YWNrKCkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YWNrLmFkZERlcGVuZGVuY3koZGVwZW5kZW5jaWVzLmdldFN0YWNrKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2RrU3RhY2soaWQ6IHN0cmluZywgcHJvcHM/OiBBd3NTdGFja1Byb3BzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52LkpFU1RfV09SS0VSX0lEICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBuZXcgU3RhY2sodW5kZWZpbmVkLCBpZCwgdGhpcy5nZXRTdGFja1Byb3BzKHByb3BzKSk7IC8vIENyZWF0ZSBhIG1vY2sgc3RhY2sgZm9yIHRlc3RpbmdcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFN0YWNrKEFwcC5nZXRJbnN0YW5jZSgpLCBpZCwgdGhpcy5nZXRTdGFja1Byb3BzKHByb3BzKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFN0YWNrUHJvcHMoXG4gICAgcHJvcHM6IEF3c1N0YWNrUHJvcHMgfCB1bmRlZmluZWRcbiAgKTogU3RhY2tQcm9wcyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwcm9wcykgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhY2tQcm9wczogU3RhY2tQcm9wcyA9IHtcbiAgICAgIGVudjpcbiAgICAgICAgcHJvcHMuYWNjb3VudElkICYmIHByb3BzLnJlZ2lvblxuICAgICAgICAgID8geyBhY2NvdW50OiBwcm9wcy5hY2NvdW50SWQsIHJlZ2lvbjogcHJvcHMucmVnaW9uIH1cbiAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgIH07XG5cbiAgICByZXR1cm4gc3RhY2tQcm9wcztcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHByaXZhdGUgaXNDb25uZWN0YWJsZShhcmc6IGFueSk6IGFyZyBpcyBJQ29ubmVjdGFibGUge1xuICAgIHJldHVybiBhcmcuY29ubmVjdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgYWRkQ29uc3RydWN0KGNvbnN0cnVjdDogQ29uc3RydWN0KTogQXdzU3RhY2sge1xuICAgIHRoaXMucmVzb3VyY2VzW2NvbnN0cnVjdC5ub2RlLmlkXSA9IGNvbnN0cnVjdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBhZGRSZXNvdXJjZShmbjogKHN0YWNrQnVpbGRlcjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3QpOiBBd3NTdGFjayB7XG4gICAgY29uc3QgcmVzb3VyY2UgPSBmbih0aGlzKTtcbiAgICB0aGlzLnJlc291cmNlc1tyZXNvdXJjZS5ub2RlLmlkXSA9IHJlc291cmNlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGFkZE5ldHdvcmsocmVzb3VyY2U6IENvbnN0cnVjdCk6IEF3c1N0YWNrO1xuICBwdWJsaWMgYWRkTmV0d29yayhcbiAgICByZXNvdXJjZTogKHN0YWNrQnVpbGRlcjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3RcbiAgKTogQXdzU3RhY2s7XG4gIHB1YmxpYyBhZGROZXR3b3JrKFxuICAgIHJlc291cmNlOiBDb25zdHJ1Y3QgfCAoKHN0YWNrQnVpbGRlcjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3QpXG4gICk6IEF3c1N0YWNrIHtcbiAgICBjb25zdCByZXNvdXJjZUFjdHVhbCA9XG4gICAgICByZXNvdXJjZSBpbnN0YW5jZW9mIENvbnN0cnVjdCA/IHJlc291cmNlIDogcmVzb3VyY2UodGhpcyk7XG4gICAgdGhpcy5yZXNvdXJjZXNbcmVzb3VyY2VBY3R1YWwubm9kZS5pZF0gPSByZXNvdXJjZUFjdHVhbDtcbiAgICB0aGlzLm5ldHdvcmsgPSByZXNvdXJjZUFjdHVhbDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBhZGRDb250YWluZXJSZWdpc3RyeShyZXNvdXJjZTogUmVwb3NpdG9yeSk6IEF3c1N0YWNrO1xuICBwdWJsaWMgYWRkQ29udGFpbmVyUmVnaXN0cnkoXG4gICAgcmVzb3VyY2U6IChzdGFja0J1aWxkZXI6IFN0YWNrQnVpbGRlcikgPT4gUmVwb3NpdG9yeVxuICApOiBBd3NTdGFjaztcbiAgcHVibGljIGFkZENvbnRhaW5lclJlZ2lzdHJ5KFxuICAgIHJlc291cmNlOiBSZXBvc2l0b3J5IHwgKChzdGFja0J1aWxkZXI6IFN0YWNrQnVpbGRlcikgPT4gUmVwb3NpdG9yeSlcbiAgKTogQXdzU3RhY2sge1xuICAgIGNvbnN0IHJlc291cmNlQWN0dWFsID1cbiAgICAgIHJlc291cmNlIGluc3RhbmNlb2YgUmVwb3NpdG9yeSA/IHJlc291cmNlIDogcmVzb3VyY2UodGhpcyk7XG4gICAgdGhpcy5yZXNvdXJjZXNbcmVzb3VyY2VBY3R1YWwubm9kZS5pZF0gPSByZXNvdXJjZUFjdHVhbDtcbiAgICB0aGlzLmNvbnRhaW5lclJlZ2lzdHJ5ID0gcmVzb3VyY2VBY3R1YWw7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2s7XG4gIH1cblxuICBwdWJsaWMgZ2V0TmV0d29yaygpIHtcbiAgICByZXR1cm4gdGhpcy5uZXR3b3JrO1xuICB9XG5cbiAgcHVibGljIGdldENvbnRhaW5lclJlZ2lzdHJ5KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRhaW5lclJlZ2lzdHJ5O1xuICB9XG5cbiAgcHVibGljIGdldFJlc291cmNlKGlkZW50aWZpZXI6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlc1tpZGVudGlmaWVyXTtcbiAgfVxuXG4gIHB1YmxpYyBjb25uZWN0KFxuICAgIGZyb206IENvbnN0cnVjdCB8IHN0cmluZyxcbiAgICB0bzogQ29uc3RydWN0IHwgc3RyaW5nLFxuICAgIHBvcnQ/OiBudW1iZXJcbiAgKSB7XG4gICAgaWYgKCFmcm9tIHx8ICF0bykgcmV0dXJuIHRoaXM7XG5cbiAgICBjb25zdCBmcm9tUmVzb3VyY2UgPVxuICAgICAgZnJvbSBpbnN0YW5jZW9mIENvbnN0cnVjdCA/IGZyb20gOiB0aGlzLmdldFJlc291cmNlKGZyb20pO1xuICAgIGNvbnN0IHRvUmVzb3VyY2UgPSB0byBpbnN0YW5jZW9mIENvbnN0cnVjdCA/IHRvIDogdGhpcy5nZXRSZXNvdXJjZSh0byk7XG5cbiAgICBpZiAoIWZyb21SZXNvdXJjZSB8fCAhdG9SZXNvdXJjZSkgcmV0dXJuIHRoaXM7XG5cbiAgICBpZiAoIXRoaXMuaXNDb25uZWN0YWJsZShmcm9tUmVzb3VyY2UpIHx8ICF0aGlzLmlzQ29ubmVjdGFibGUodG9SZXNvdXJjZSkpXG4gICAgICByZXR1cm4gdGhpcztcblxuICAgIGNvbnN0IHBvcnRBY3R1YWwgPSBwb3J0ID8gUG9ydC50Y3AocG9ydCkgOiBQb3J0LmFsbFRjcCgpO1xuICAgIGZyb21SZXNvdXJjZS5jb25uZWN0aW9ucy5hbGxvd1RvKHRvUmVzb3VyY2UsIHBvcnRBY3R1YWwpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbmV4cG9ydCBkZWZhdWx0IEF3c1N0YWNrO1xuIl19
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzU3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9iYXNlL2F3c1N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFnRDtBQUNoRCxpREFBeUQ7QUFDekQsMkNBQXVDO0FBRXZDLHNDQUErQjtBQUMvQixpREFBaUQ7QUFvQmpELE1BQWEsUUFBUTtJQVNuQixZQUNFLEVBQVUsRUFDVixZQUFvQyxFQUNwQyxLQUFxQjtRQVhQLGNBQVMsR0FFckIsRUFBRSxDQUFDO1FBV0wseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFekMsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVPLGVBQWUsQ0FBQyxZQUFvQztRQUMxRCxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFFMUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDaEMsS0FBSyxNQUFNLFVBQVUsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsRUFBVSxFQUFFLEtBQXFCO1FBQ25ELElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDN0MsT0FBTyxJQUFJLG1CQUFLLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJ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LENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVELE1BQU0sVUFBVSxHQUFHLEVBQUUsWUFBWSxzQkFBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFdkUsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUU5QyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1lBQ3RFLE9BQU8sSUFBSSxDQUFDO1FBRWQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekQsWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXpELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBOUlELDRCQThJQztBQUNELGtCQUFlLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBJQ29ubmVjdGFibGUsIFBvcnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IEFwcCBmcm9tIFwiLi4vLi4vLi4vYXBwXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3JcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTdGFja0J1aWxkZXIge1xuICBhZGRDb25zdHJ1Y3QocmVzb3VyY2U6IENvbnN0cnVjdCk6IFN0YWNrQnVpbGRlcjtcbiAgYWRkUmVzb3VyY2UoZm46IChzdGFja0J1aWxkZXI6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0KTogU3RhY2tCdWlsZGVyO1xuXG4gIGFkZE5ldHdvcmsocmVzb3VyY2U6IENvbnN0cnVjdCk6IFN0YWNrQnVpbGRlcjtcbiAgYWRkTmV0d29yayhmbjogKHN0YWNrQnVpbGRlcjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3QpOiBTdGFja0J1aWxkZXI7XG4gIGFkZE5ldHdvcmsocmVzb3VyY2U6IENvbnN0cnVjdCB8IHN0cmluZyk6IFN0YWNrQnVpbGRlcjtcblxuICBnZXRTdGFjaygpOiBTdGFjaztcbiAgZ2V0TmV0d29yaygpOiBDb25zdHJ1Y3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzU3RhY2tQcm9wcyB7XG4gIHJlYWRvbmx5IGFjY291bnRJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuICBhY2NvdW50TmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEF3c1N0YWNrIGltcGxlbWVudHMgU3RhY2tCdWlsZGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlczoge1xuICAgIFtrZXk6IHN0cmluZ106IENvbnN0cnVjdDtcbiAgfSA9IHt9O1xuXG4gIHByaXZhdGUgc3RhY2s6IFN0YWNrO1xuICBwcml2YXRlIG5ldHdvcms6IENvbnN0cnVjdDtcbiAgcHJpdmF0ZSBjb250YWluZXJSZWdpc3RyeTogUmVwb3NpdG9yeTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpZDogc3RyaW5nLFxuICAgIGRlcGVuZGVuY2llcz86IEF3c1N0YWNrIHwgQXdzU3RhY2tbXSxcbiAgICBwcm9wcz86IEF3c1N0YWNrUHJvcHNcbiAgKSB7XG4gICAgLy8gQ3JlYXRlIGlubmVyIENESyBTdGFja1xuICAgIHRoaXMuc3RhY2sgPSB0aGlzLmdldENka1N0YWNrKGlkLCBwcm9wcyk7XG5cbiAgICAvLyBSZWdpc3RlciBhbGwgc3RhY2sgZGVwZW5kZW5jaWVzXG4gICAgdGhpcy5hZGREZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcz86IEF3c1N0YWNrIHwgQXdzU3RhY2tbXSkge1xuICAgIGlmICghZGVwZW5kZW5jaWVzKSByZXR1cm47XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShkZXBlbmRlbmNpZXMpKSB7XG4gICAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3kgb2YgZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIHRoaXMuc3RhY2suYWRkRGVwZW5kZW5jeShkZXBlbmRlbmN5LmdldFN0YWNrKCkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YWNrLmFkZERlcGVuZGVuY3koZGVwZW5kZW5jaWVzLmdldFN0YWNrKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2RrU3RhY2soaWQ6IHN0cmluZywgcHJvcHM/OiBBd3NTdGFja1Byb3BzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52LkpFU1RfV09SS0VSX0lEICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBuZXcgU3RhY2sodW5kZWZpbmVkLCBpZCwgdGhpcy5nZXRTdGFja1Byb3BzKHByb3BzKSk7IC8vIENyZWF0ZSBhIG1vY2sgc3RhY2sgZm9yIHRlc3RpbmdcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFN0YWNrKEFwcC5nZXRJbnN0YW5jZSgpLCBpZCwgdGhpcy5nZXRTdGFja1Byb3BzKHByb3BzKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFN0YWNrUHJvcHMoXG4gICAgcHJvcHM6IEF3c1N0YWNrUHJvcHMgfCB1bmRlZmluZWRcbiAgKTogU3RhY2tQcm9wcyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwcm9wcykgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhY2tQcm9wczogU3RhY2tQcm9wcyA9IHtcbiAgICAgIGVudjpcbiAgICAgICAgcHJvcHMuYWNjb3VudElkICYmIHByb3BzLnJlZ2lvblxuICAgICAgICAgID8geyBhY2NvdW50OiBwcm9wcy5hY2NvdW50SWQsIHJlZ2lvbjogcHJvcHMucmVnaW9uIH1cbiAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgIH07XG5cbiAgICByZXR1cm4gc3RhY2tQcm9wcztcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHByaXZhdGUgaXNDb25uZWN0YWJsZShhcmc6IGFueSk6IGFyZyBpcyBJQ29ubmVjdGFibGUge1xuICAgIHJldHVybiBhcmcuY29ubmVjdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgYWRkQ29uc3RydWN0KGNvbnN0cnVjdDogQ29uc3RydWN0KTogQXdzU3RhY2sge1xuICAgIHRoaXMucmVzb3VyY2VzW2NvbnN0cnVjdC5ub2RlLmlkXSA9IGNvbnN0cnVjdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIEBkZXByZWNhdGVkIC0gdXNlIGFkZENvbnN0cnVjdCBpbnN0ZWFkXG4gIHB1YmxpYyBhZGRSZXNvdXJjZShmbjogKHN0YWNrQnVpbGRlcjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3QpOiBBd3NTdGFjayB7XG4gICAgY29uc3QgcmVzb3VyY2UgPSBmbih0aGlzKTtcbiAgICB0aGlzLnJlc291cmNlc1tyZXNvdXJjZS5ub2RlLmlkXSA9IHJlc291cmNlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGFkZE5ldHdvcmsocmVzb3VyY2U6IENvbnN0cnVjdCk6IEF3c1N0YWNrO1xuICBwdWJsaWMgYWRkTmV0d29yayhcbiAgICByZXNvdXJjZTogKHN0YWNrQnVpbGRlcjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3RcbiAgKTogQXdzU3RhY2s7XG4gIHB1YmxpYyBhZGROZXR3b3JrKFxuICAgIHJlc291cmNlOiBDb25zdHJ1Y3QgfCAoKHN0YWNrQnVpbGRlcjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3QpXG4gICk6IEF3c1N0YWNrIHtcbiAgICBjb25zdCByZXNvdXJjZUFjdHVhbCA9XG4gICAgICByZXNvdXJjZSBpbnN0YW5jZW9mIENvbnN0cnVjdCA/IHJlc291cmNlIDogcmVzb3VyY2UodGhpcyk7XG4gICAgdGhpcy5yZXNvdXJjZXNbcmVzb3VyY2VBY3R1YWwubm9kZS5pZF0gPSByZXNvdXJjZUFjdHVhbDtcbiAgICB0aGlzLm5ldHdvcmsgPSByZXNvdXJjZUFjdHVhbDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBhZGRDb250YWluZXJSZWdpc3RyeShyZXNvdXJjZTogUmVwb3NpdG9yeSk6IEF3c1N0YWNrO1xuICBwdWJsaWMgYWRkQ29udGFpbmVyUmVnaXN0cnkoXG4gICAgcmVzb3VyY2U6IChzdGFja0J1aWxkZXI6IFN0YWNrQnVpbGRlcikgPT4gUmVwb3NpdG9yeVxuICApOiBBd3NTdGFjaztcbiAgcHVibGljIGFkZENvbnRhaW5lclJlZ2lzdHJ5KFxuICAgIHJlc291cmNlOiBSZXBvc2l0b3J5IHwgKChzdGFja0J1aWxkZXI6IFN0YWNrQnVpbGRlcikgPT4gUmVwb3NpdG9yeSlcbiAgKTogQXdzU3RhY2sge1xuICAgIGNvbnN0IHJlc291cmNlQWN0dWFsID1cbiAgICAgIHJlc291cmNlIGluc3RhbmNlb2YgUmVwb3NpdG9yeSA/IHJlc291cmNlIDogcmVzb3VyY2UodGhpcyk7XG4gICAgdGhpcy5yZXNvdXJjZXNbcmVzb3VyY2VBY3R1YWwubm9kZS5pZF0gPSByZXNvdXJjZUFjdHVhbDtcbiAgICB0aGlzLmNvbnRhaW5lclJlZ2lzdHJ5ID0gcmVzb3VyY2VBY3R1YWw7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RhY2soKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2s7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RhY2tOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLnN0YWNrTmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROZXR3b3JrKCkge1xuICAgIHJldHVybiB0aGlzLm5ldHdvcms7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29udGFpbmVyUmVnaXN0cnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVyUmVnaXN0cnk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVzb3VyY2UoaWRlbnRpZmllcjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzW2lkZW50aWZpZXJdO1xuICB9XG5cbiAgcHVibGljIGNvbm5lY3QoXG4gICAgZnJvbTogQ29uc3RydWN0IHwgc3RyaW5nLFxuICAgIHRvOiBDb25zdHJ1Y3QgfCBzdHJpbmcsXG4gICAgcG9ydD86IG51bWJlclxuICApIHtcbiAgICBpZiAoIWZyb20gfHwgIXRvKSByZXR1cm4gdGhpcztcblxuICAgIGNvbnN0IGZyb21SZXNvdXJjZSA9XG4gICAgICBmcm9tIGluc3RhbmNlb2YgQ29uc3RydWN0ID8gZnJvbSA6IHRoaXMuZ2V0UmVzb3VyY2UoZnJvbSk7XG4gICAgY29uc3QgdG9SZXNvdXJjZSA9IHRvIGluc3RhbmNlb2YgQ29uc3RydWN0ID8gdG8gOiB0aGlzLmdldFJlc291cmNlKHRvKTtcblxuICAgIGlmICghZnJvbVJlc291cmNlIHx8ICF0b1Jlc291cmNlKSByZXR1cm4gdGhpcztcblxuICAgIGlmICghdGhpcy5pc0Nvbm5lY3RhYmxlKGZyb21SZXNvdXJjZSkgfHwgIXRoaXMuaXNDb25uZWN0YWJsZSh0b1Jlc291cmNlKSlcbiAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgY29uc3QgcG9ydEFjdHVhbCA9IHBvcnQgPyBQb3J0LnRjcChwb3J0KSA6IFBvcnQuYWxsVGNwKCk7XG4gICAgZnJvbVJlc291cmNlLmNvbm5lY3Rpb25zLmFsbG93VG8odG9SZXNvdXJjZSwgcG9ydEFjdHVhbCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuZXhwb3J0IGRlZmF1bHQgQXdzU3RhY2s7XG4iXX0=