@codedrifters/configulator 0.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/LICENSE +19 -0
- package/README.md +4 -0
- package/lib/aws/aws-deployment-config.d.ts +141 -0
- package/lib/aws/aws-deployment-config.js +165 -0
- package/lib/aws/aws-types.d.ts +63 -0
- package/lib/aws/aws-types.js +9 -0
- package/lib/aws/index.d.ts +2 -0
- package/lib/aws/index.js +19 -0
- package/lib/git/git-types.d.ts +18 -0
- package/lib/git/git-types.js +9 -0
- package/lib/git/index.d.ts +1 -0
- package/lib/git/index.js +18 -0
- package/lib/pnpm/index.d.ts +1 -0
- package/lib/pnpm/index.js +18 -0
- package/lib/pnpm/pnpm-workspace.d.ts +5 -0
- package/lib/pnpm/pnpm-workspace.js +36 -0
- package/lib/turbo/index.d.ts +2 -0
- package/lib/turbo/index.js +19 -0
- package/lib/turbo/turbo-repo-task.d.ts +36 -0
- package/lib/turbo/turbo-repo-task.js +43 -0
- package/lib/turbo/turbo-repo.d.ts +268 -0
- package/lib/turbo/turbo-repo.js +213 -0
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/index.js +18 -0
- package/lib/typescript/typescript-config.d.ts +13 -0
- package/lib/typescript/typescript-config.js +40 -0
- package/lib/versions.d.ts +22 -0
- package/lib/versions.js +26 -0
- package/lib/vscode/index.d.ts +1 -0
- package/lib/vscode/index.js +18 -0
- package/lib/vscode/vscode.d.ts +10 -0
- package/lib/vscode/vscode.js +37 -0
- package/lib/workflows/build-workflow.d.ts +13 -0
- package/lib/workflows/build-workflow.js +64 -0
- package/lib/workflows/deploy-workflow.d.ts +17 -0
- package/lib/workflows/deploy-workflow.js +113 -0
- package/lib/workflows/index.d.ts +2 -0
- package/lib/workflows/index.js +19 -0
- package/lib/workflows/steps/deploy.d.ts +4 -0
- package/lib/workflows/steps/deploy.js +62 -0
- package/package.json +63 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright (c) 2025 CodeDrifters
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
in the Software without restriction, including without limitation the rights
|
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
furnished to do so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
|
11
|
+
copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
19
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { Component, Project } from "projen";
|
|
2
|
+
import { TypeScriptAppProject } from "projen/lib/typescript";
|
|
3
|
+
import { GitBranch } from "../git/git-types";
|
|
4
|
+
/*******************************************************************************
|
|
5
|
+
*
|
|
6
|
+
*
|
|
7
|
+
******************************************************************************/
|
|
8
|
+
export interface AwsDeploymentConfigOptions {
|
|
9
|
+
}
|
|
10
|
+
export declare const AWS_DEPLOY_TYPE: {
|
|
11
|
+
/**
|
|
12
|
+
* Development environment, typically used for testing and development.
|
|
13
|
+
*/
|
|
14
|
+
readonly DEV: "dev";
|
|
15
|
+
/**
|
|
16
|
+
* Staging environment, used for pre-production testing.
|
|
17
|
+
*/
|
|
18
|
+
readonly STAGE: "stage";
|
|
19
|
+
/**
|
|
20
|
+
* Production environment, used for live deployments.
|
|
21
|
+
*/
|
|
22
|
+
readonly PROD: "prod";
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Above const as a type.
|
|
26
|
+
*/
|
|
27
|
+
export type AwsDeploymentType = (typeof AWS_DEPLOY_TYPE)[keyof typeof AWS_DEPLOY_TYPE];
|
|
28
|
+
/**
|
|
29
|
+
* Represents the configuration for local deployment in AWS.
|
|
30
|
+
*/
|
|
31
|
+
export interface AwsLocalDeploymentConfig {
|
|
32
|
+
/**
|
|
33
|
+
* The AWS profile (in ~/.aws/config) to use for local deployment.
|
|
34
|
+
*
|
|
35
|
+
* @default generated dynamically based role name, account and region
|
|
36
|
+
*/
|
|
37
|
+
profile?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Named Role used to conduct local deployments.
|
|
40
|
+
*
|
|
41
|
+
* @default "administratoraccess"
|
|
42
|
+
*/
|
|
43
|
+
roleName?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface CiDeploymentConfig {
|
|
46
|
+
/**
|
|
47
|
+
* The OIDC IAM Role to assume for CI deployments.
|
|
48
|
+
*/
|
|
49
|
+
roleArn: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Represents a deployment target in AWS, including account and region, and
|
|
53
|
+
* branches allowed to deploy to this target.
|
|
54
|
+
*/
|
|
55
|
+
export interface AwsDeploymentTarget {
|
|
56
|
+
/**
|
|
57
|
+
* The account name for the deployment target.
|
|
58
|
+
*/
|
|
59
|
+
account: string;
|
|
60
|
+
/**
|
|
61
|
+
* The AWS region for the deployment target.
|
|
62
|
+
*/
|
|
63
|
+
region: string;
|
|
64
|
+
/**'
|
|
65
|
+
* AWS deployment type, such as dev, stage, or prod.
|
|
66
|
+
*/
|
|
67
|
+
awsDeploymentType: AwsDeploymentType;
|
|
68
|
+
/**
|
|
69
|
+
* The AWS profile to use for this deployment target.
|
|
70
|
+
*/
|
|
71
|
+
branches: Array<GitBranch>;
|
|
72
|
+
/**
|
|
73
|
+
* Can this deployment target be used for local development?
|
|
74
|
+
*/
|
|
75
|
+
localDeployment: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Configuration when deploying to this target locally.
|
|
78
|
+
*/
|
|
79
|
+
localDeploymentConfig?: AwsLocalDeploymentConfig;
|
|
80
|
+
/**
|
|
81
|
+
* Can this deployment target be used in CI deployments?
|
|
82
|
+
*/
|
|
83
|
+
ciDeployment: boolean;
|
|
84
|
+
ciDeploymentConfig?: CiDeploymentConfig;
|
|
85
|
+
}
|
|
86
|
+
export declare class AwsDeploymentConfig extends Component {
|
|
87
|
+
static of(project: Project): Array<AwsDeploymentConfig> | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Environment variables to be injected into all tasks.
|
|
90
|
+
*/
|
|
91
|
+
private readonly env;
|
|
92
|
+
/**
|
|
93
|
+
* The relative path to the project directory from the root of the project.
|
|
94
|
+
*/
|
|
95
|
+
private readonly projectPath;
|
|
96
|
+
/**
|
|
97
|
+
* The relative path to the root of the project from the output directory.
|
|
98
|
+
*/
|
|
99
|
+
private readonly rootPath;
|
|
100
|
+
/**
|
|
101
|
+
* The output directory for the CDK synthesis.
|
|
102
|
+
*/
|
|
103
|
+
private readonly cdkOut;
|
|
104
|
+
/**
|
|
105
|
+
* Array of targets for deployment.
|
|
106
|
+
*/
|
|
107
|
+
readonly deploymentTargets: Array<AwsDeploymentTarget>;
|
|
108
|
+
constructor(project: TypeScriptAppProject);
|
|
109
|
+
/**
|
|
110
|
+
* Adds a deployment target to the configuration.
|
|
111
|
+
*
|
|
112
|
+
* @param target The deployment target to add.
|
|
113
|
+
*/
|
|
114
|
+
addDeploymentTarget(target: AwsDeploymentTarget): void;
|
|
115
|
+
/*****************************************************************************
|
|
116
|
+
*
|
|
117
|
+
* Synth Tasks
|
|
118
|
+
*
|
|
119
|
+
* - Configure synth task to use the branch name
|
|
120
|
+
* - Change the output location for easier workflows.
|
|
121
|
+
*
|
|
122
|
+
****************************************************************************/
|
|
123
|
+
private configureSynthTask;
|
|
124
|
+
/*****************************************************************************
|
|
125
|
+
*
|
|
126
|
+
* Deploy Tasks
|
|
127
|
+
*
|
|
128
|
+
* - If local deploy, add a deploy task.
|
|
129
|
+
*
|
|
130
|
+
****************************************************************************/
|
|
131
|
+
private configureDeployTask;
|
|
132
|
+
/*****************************************************************************
|
|
133
|
+
*
|
|
134
|
+
* Watch tasks
|
|
135
|
+
*
|
|
136
|
+
* - Configure watch task to use the branch name
|
|
137
|
+
* - configure watch task to use the correct synth output location.
|
|
138
|
+
*
|
|
139
|
+
****************************************************************************/
|
|
140
|
+
private configureWatchTask;
|
|
141
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AwsDeploymentConfig = exports.AWS_DEPLOY_TYPE = void 0;
|
|
4
|
+
const node_path_1 = require("node:path");
|
|
5
|
+
const projen_1 = require("projen");
|
|
6
|
+
exports.AWS_DEPLOY_TYPE = {
|
|
7
|
+
/**
|
|
8
|
+
* Development environment, typically used for testing and development.
|
|
9
|
+
*/
|
|
10
|
+
DEV: "dev",
|
|
11
|
+
/**
|
|
12
|
+
* Staging environment, used for pre-production testing.
|
|
13
|
+
*/
|
|
14
|
+
STAGE: "stage",
|
|
15
|
+
/**
|
|
16
|
+
* Production environment, used for live deployments.
|
|
17
|
+
*/
|
|
18
|
+
PROD: "prod",
|
|
19
|
+
};
|
|
20
|
+
class AwsDeploymentConfig extends projen_1.Component {
|
|
21
|
+
static of(project) {
|
|
22
|
+
const isDefined = (c) => c instanceof AwsDeploymentConfig;
|
|
23
|
+
return project.components.filter(isDefined);
|
|
24
|
+
}
|
|
25
|
+
constructor(project) {
|
|
26
|
+
super(project);
|
|
27
|
+
/**
|
|
28
|
+
* Array of targets for deployment.
|
|
29
|
+
*/
|
|
30
|
+
this.deploymentTargets = [];
|
|
31
|
+
/*****************************************************************************
|
|
32
|
+
*
|
|
33
|
+
* Synth Tasks
|
|
34
|
+
*
|
|
35
|
+
* - Configure synth task to use the branch name
|
|
36
|
+
* - Change the output location for easier workflows.
|
|
37
|
+
*
|
|
38
|
+
****************************************************************************/
|
|
39
|
+
this.configureSynthTask = () => {
|
|
40
|
+
this.project.tasks.tryFind("synth")?.reset(`rm -rf ${this.cdkOut}`);
|
|
41
|
+
this.project.tasks
|
|
42
|
+
.tryFind("synth")
|
|
43
|
+
?.exec(`cdk synth --output ${this.cdkOut}`, { env: this.env });
|
|
44
|
+
this.project.tasks.tryFind("synth:silent")?.reset(`rm -rf ${this.cdkOut}`);
|
|
45
|
+
this.project.tasks
|
|
46
|
+
.tryFind("synth:silent")
|
|
47
|
+
?.exec(`cdk synth -q --output ${this.cdkOut}`, { env: this.env });
|
|
48
|
+
};
|
|
49
|
+
/*****************************************************************************
|
|
50
|
+
*
|
|
51
|
+
* Deploy Tasks
|
|
52
|
+
*
|
|
53
|
+
* - If local deploy, add a deploy task.
|
|
54
|
+
*
|
|
55
|
+
****************************************************************************/
|
|
56
|
+
this.configureDeployTask = (target) => {
|
|
57
|
+
if (target.localDeployment) {
|
|
58
|
+
const taskName = ["deploy", target.account, target.region].join(":");
|
|
59
|
+
const deployTask = this.project.tasks.addTask(taskName, {
|
|
60
|
+
env: this.env,
|
|
61
|
+
});
|
|
62
|
+
deployTask.exec(`cdk deploy --lookups=false --require-approval=never --profile=${target.localDeploymentConfig?.profile} --app=${this.cdkOut} "*-${target.account}-${target.region}"`);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
/*****************************************************************************
|
|
66
|
+
*
|
|
67
|
+
* Watch tasks
|
|
68
|
+
*
|
|
69
|
+
* - Configure watch task to use the branch name
|
|
70
|
+
* - configure watch task to use the correct synth output location.
|
|
71
|
+
*
|
|
72
|
+
****************************************************************************/
|
|
73
|
+
this.configureWatchTask = (target) => {
|
|
74
|
+
if (target.localDeployment) {
|
|
75
|
+
const taskName = ["watch", target.account, target.region].join(":");
|
|
76
|
+
const watchTask = this.project.tasks.addTask(taskName, { env: this.env });
|
|
77
|
+
// update the synth first
|
|
78
|
+
const synthSilent = this.project.tasks.tryFind("synth:silent");
|
|
79
|
+
if (synthSilent) {
|
|
80
|
+
watchTask.spawn(synthSilent);
|
|
81
|
+
}
|
|
82
|
+
// do a normal deploy
|
|
83
|
+
watchTask.exec(`cdk deploy --lookups=false --require-approval=never --profile=${target.localDeploymentConfig?.profile} --app=${this.cdkOut} "*-${target.account}-${target.region}"`);
|
|
84
|
+
// watch for changes and log output
|
|
85
|
+
watchTask.exec(`cdk watch --lookups=false --require-approval=never --hotswap --profile=${target.localDeploymentConfig?.profile} "*-${target.account}-${target.region}"`);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Common variables used across tasks.
|
|
90
|
+
*/
|
|
91
|
+
this.env = { GIT_BRANCH: "$(git branch --show-current)" };
|
|
92
|
+
this.projectPath = (0, node_path_1.relative)(project.root.outdir, project.outdir);
|
|
93
|
+
this.rootPath = (0, node_path_1.relative)(project.outdir, project.root.outdir);
|
|
94
|
+
this.cdkOut = (0, node_path_1.join)(this.rootPath, "dist", this.projectPath, "cdk.out");
|
|
95
|
+
/**
|
|
96
|
+
* Reset some tasks we will rebuild below.
|
|
97
|
+
*/
|
|
98
|
+
["deploy", "watch"].forEach((taskName) => {
|
|
99
|
+
const task = project.tasks.tryFind(taskName);
|
|
100
|
+
if (task) {
|
|
101
|
+
task.reset();
|
|
102
|
+
task.say("Generic task is disabled. Please use the specific task for your deployment target.");
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
/**
|
|
106
|
+
* Redefine Synth here
|
|
107
|
+
*
|
|
108
|
+
* Deploy and watch get reconfigured per deployment target.
|
|
109
|
+
* @see addDeploymentTarget()
|
|
110
|
+
*/
|
|
111
|
+
this.configureSynthTask();
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Adds a deployment target to the configuration.
|
|
115
|
+
*
|
|
116
|
+
* @param target The deployment target to add.
|
|
117
|
+
*/
|
|
118
|
+
addDeploymentTarget(target) {
|
|
119
|
+
/***************************************************************************
|
|
120
|
+
*
|
|
121
|
+
* Configure the deploy target.
|
|
122
|
+
*
|
|
123
|
+
* - For local deployments, discover or build profile name.
|
|
124
|
+
* - For CI deployments, discover or build role ARN.
|
|
125
|
+
* - Add the target to the deployment targets array.
|
|
126
|
+
*
|
|
127
|
+
**************************************************************************/
|
|
128
|
+
/**
|
|
129
|
+
* Some defaults for local deployments.
|
|
130
|
+
*/
|
|
131
|
+
if (target.localDeployment) {
|
|
132
|
+
const roleName = target.localDeploymentConfig?.roleName?.toLowerCase() ||
|
|
133
|
+
"administratoraccess";
|
|
134
|
+
const profile = target.localDeploymentConfig?.profile ||
|
|
135
|
+
`${roleName}-${target.account}-${target.region}`;
|
|
136
|
+
target = {
|
|
137
|
+
...target,
|
|
138
|
+
localDeploymentConfig: {
|
|
139
|
+
profile,
|
|
140
|
+
roleName,
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Some defaults for CI deployments.
|
|
146
|
+
*/
|
|
147
|
+
if (target.ciDeployment) {
|
|
148
|
+
const roleArn = target.ciDeploymentConfig?.roleArn ||
|
|
149
|
+
`arn:aws:iam::${target.account}:role/GitHub${this.project.name.replace("-", "")}`;
|
|
150
|
+
target = {
|
|
151
|
+
...target,
|
|
152
|
+
ciDeploymentConfig: {
|
|
153
|
+
roleArn,
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
this.deploymentTargets.push(target);
|
|
158
|
+
// Deploy tasks are configured per target.
|
|
159
|
+
this.configureDeployTask(target);
|
|
160
|
+
// Watch tasks are configured per target.
|
|
161
|
+
this.configureWatchTask(target);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
exports.AwsDeploymentConfig = AwsDeploymentConfig;
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWRlcGxveW1lbnQtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3cy9hd3MtZGVwbG95bWVudC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTJDO0FBQzNDLG1DQUE0QztBQWUvQixRQUFBLGVBQWUsR0FBRztJQUM3Qjs7T0FFRztJQUNILEdBQUcsRUFBRSxLQUFLO0lBRVY7O09BRUc7SUFDSCxLQUFLLEVBQUUsT0FBTztJQUVkOztPQUVHO0lBQ0gsSUFBSSxFQUFFLE1BQU07Q0FDSixDQUFDO0FBaUZYLE1BQWEsbUJBQW9CLFNBQVEsa0JBQVM7SUFDekMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFnQjtRQUMvQixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVksRUFBNEIsRUFBRSxDQUMzRCxDQUFDLFlBQVksbUJBQW1CLENBQUM7UUFDbkMsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBMkJELFlBQVksT0FBNkI7UUFDdkMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBTmpCOztXQUVHO1FBQ2Esc0JBQWlCLEdBQStCLEVBQUUsQ0FBQztRQWdHbkU7Ozs7Ozs7c0ZBTzhFO1FBRXRFLHVCQUFrQixHQUFHLEdBQVMsRUFBRTtZQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLFVBQVUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2lCQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUM7Z0JBQ2pCLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFakUsSUFBSSxD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TyxHQUNYLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxPQUFPO2dCQUNsQyxnQkFBZ0IsTUFBTSxDQUFDLE9BQU8sZUFBZSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFFcEYsTUFBTSxHQUFHO2dCQUNQLEdBQUcsTUFBTTtnQkFDVCxrQkFBa0IsRUFBRTtvQkFDbEIsT0FBTztpQkFDUjthQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwQywwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWpDLHlDQUF5QztRQUN6QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQTBFRjtBQXRNRCxrREFzTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luLCByZWxhdGl2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgUHJvamVjdCB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IFR5cGVTY3JpcHRBcHBQcm9qZWN0IH0gZnJvbSBcInByb2plbi9saWIvdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgR2l0QnJhbmNoIH0gZnJvbSBcIi4uL2dpdC9naXQtdHlwZXNcIjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuZXhwb3J0IGludGVyZmFjZSBBd3NEZXBsb3ltZW50Q29uZmlnT3B0aW9ucyB7XG4gIC8qKlxuICAgKlxuICAgKi9cbn1cblxuZXhwb3J0IGNvbnN0IEFXU19ERVBMT1lfVFlQRSA9IHtcbiAgLyoqXG4gICAqIERldmVsb3BtZW50IGVudmlyb25tZW50LCB0eXBpY2FsbHkgdXNlZCBmb3IgdGVzdGluZyBhbmQgZGV2ZWxvcG1lbnQuXG4gICAqL1xuICBERVY6IFwiZGV2XCIsXG5cbiAgLyoqXG4gICAqIFN0YWdpbmcgZW52aXJvbm1lbnQsIHVzZWQgZm9yIHByZS1wcm9kdWN0aW9uIHRlc3RpbmcuXG4gICAqL1xuICBTVEFHRTogXCJzdGFnZVwiLFxuXG4gIC8qKlxuICAgKiBQcm9kdWN0aW9uIGVudmlyb25tZW50LCB1c2VkIGZvciBsaXZlIGRlcGxveW1lbnRzLlxuICAgKi9cbiAgUFJPRDogXCJwcm9kXCIsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIEFib3ZlIGNvbnN0IGFzIGEgdHlwZS5cbiAqL1xuZXhwb3J0IHR5cGUgQXdzRGVwbG95bWVudFR5cGUgPVxuICAodHlwZW9mIEFXU19ERVBMT1lfVFlQRSlba2V5b2YgdHlwZW9mIEFXU19ERVBMT1lfVFlQRV07XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgY29uZmlndXJhdGlvbiBmb3IgbG9jYWwgZGVwbG95bWVudCBpbiBBV1MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXdzTG9jYWxEZXBsb3ltZW50Q29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBBV1MgcHJvZmlsZSAoaW4gfi8uYXdzL2NvbmZpZykgdG8gdXNlIGZvciBsb2NhbCBkZXBsb3ltZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCBnZW5lcmF0ZWQgZHluYW1pY2FsbHkgYmFzZWQgcm9sZSBuYW1lLCBhY2NvdW50IGFuZCByZWdpb25cbiAgICovXG4gIHByb2ZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWVkIFJvbGUgdXNlZCB0byBjb25kdWN0IGxvY2FsIGRlcGxveW1lbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImFkbWluaXN0cmF0b3JhY2Nlc3NcIlxuICAgKi9cbiAgcm9sZU5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2lEZXBsb3ltZW50Q29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBPSURDIElBTSBSb2xlIHRvIGFzc3VtZSBmb3IgQ0kgZGVwbG95bWVudHMuXG4gICAqL1xuICByb2xlQXJuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGRlcGxveW1lbnQgdGFyZ2V0IGluIEFXUywgaW5jbHVkaW5nIGFjY291bnQgYW5kIHJlZ2lvbiwgYW5kXG4gKiBicmFuY2hlcyBhbGxvd2VkIHRvIGRlcGxveSB0byB0aGlzIHRhcmdldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NEZXBsb3ltZW50VGFyZ2V0IHtcbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50IG5hbWUgZm9yIHRoZSBkZXBsb3ltZW50IHRhcmdldC5cbiAgICovXG4gIGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFXUyByZWdpb24gZm9yIHRoZSBkZXBsb3ltZW50IHRhcmdldC5cbiAgICovXG4gIHJlZ2lvbjogc3RyaW5nO1xuXG4gIC8qKidcbiAgICogQVdTIGRlcGxveW1lbnQgdHlwZSwgc3VjaCBhcyBkZXYsIHN0YWdlLCBvciBwcm9kLlxuICAgKi9cbiAgYXdzRGVwbG95bWVudFR5cGU6IEF3c0RlcGxveW1lbnRUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgQVdTIHByb2ZpbGUgdG8gdXNlIGZvciB0aGlzIGRlcGxveW1lbnQgdGFyZ2V0LlxuICAgKi9cbiAgYnJhbmNoZXM6IEFycmF5PEdpdEJyYW5jaD47XG5cbiAgLyoqXG4gICAqIENhbiB0aGlzIGRlcGxveW1lbnQgdGFyZ2V0IGJlIHVzZWQgZm9yIGxvY2FsIGRldmVsb3BtZW50P1xuICAgKi9cbiAgbG9jYWxEZXBsb3ltZW50OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIHdoZW4gZGVwbG95aW5nIHRvIHRoaXMgdGFyZ2V0IGxvY2FsbHkuXG4gICAqL1xuICBsb2NhbERlcGxveW1lbnRDb25maWc/OiBBd3NMb2NhbERlcGxveW1lbnRDb25maWc7XG5cbiAgLyoqXG4gICAqIENhbiB0aGlzIGRlcGxveW1lbnQgdGFyZ2V0IGJlIHVzZWQgaW4gQ0kgZGVwbG95bWVudHM/XG4gICAqL1xuICBjaURlcGxveW1lbnQ6IGJvb2xlYW47XG5cbiAgLypcbiAgICogQ29uZmlndXJhdGlvbiB3aGVuIGRlcGxveWluZyB0byB0aGlzIHRhcmdldCBpbiBDSS5cblxuICAgKi9cbiAgY2lEZXBsb3ltZW50Q29uZmlnPzogQ2lEZXBsb3ltZW50Q29uZmlnO1xufVxuXG5leHBvcnQgY2xhc3MgQXdzRGVwbG95bWVudENvbmZpZyBleHRlbmRzIENvbXBvbmVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb2YocHJvamVjdDogUHJvamVjdCk6IEFycmF5PEF3c0RlcGxveW1lbnRDb25maWc+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpc0RlZmluZWQgPSAoYzogQ29tcG9uZW50KTogYyBpcyBBd3NEZXBsb3ltZW50Q29uZmlnID0+XG4gICAgICBjIGluc3RhbmNlb2YgQXdzRGVwbG95bWVudENvbmZpZztcbiAgICByZXR1cm4gcHJvamVjdC5jb21wb25lbnRzLmZpbHRlcihpc0RlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHZhcmlhYmxlcyB0byBiZSBpbmplY3RlZCBpbnRvIGFsbCB0YXNrcy5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBUaGUgcmVsYXRpdmUgcGF0aCB0byB0aGUgcHJvamVjdCBkaXJlY3RvcnkgZnJvbSB0aGUgcm9vdCBvZiB0aGUgcHJvamVjdC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvamVjdFBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIHByb2plY3QgZnJvbSB0aGUgb3V0cHV0IGRpcmVjdG9yeS5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcm9vdFBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG91dHB1dCBkaXJlY3RvcnkgZm9yIHRoZSBDREsgc3ludGhlc2lzLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBjZGtPdXQ6IHN0cmluZztcblxuICAvKipcbiAgICogQXJyYXkgb2YgdGFyZ2V0cyBmb3IgZGVwbG95bWVudC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXBsb3ltZW50VGFyZ2V0czogQXJyYXk8QXdzRGVwbG95bWVudFRhcmdldD4gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBUeXBlU2NyaXB0QXBwUHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgLyoqXG4gICAgICogQ29tbW9uIHZhcmlhYmxlcyB1c2VkIGFjcm9zcyB0YXNrcy5cbiAgICAgKi9cbiAgICB0aGlzLmVudiA9IHsgR0lUX0JSQU5DSDogXCIkKGdpdCBicmFuY2ggLS1zaG93LWN1cnJlbnQpXCIgfTtcbiAgICB0aGlzLnByb2plY3RQYXRoID0gcmVsYXRpdmUocHJvamVjdC5yb290Lm91dGRpciwgcHJvamVjdC5vdXRkaXIpO1xuICAgIHRoaXMucm9vdFBhdGggPSByZWxhdGl2ZShwcm9qZWN0Lm91dGRpciwgcHJvamVjdC5yb290Lm91dGRpcik7XG4gICAgdGhpcy5jZGtPdXQgPSBqb2luKHRoaXMucm9vdFBhdGgsIFwiZGlzdFwiLCB0aGlzLnByb2plY3RQYXRoLCBcImNkay5vdXRcIik7XG5cbiAgICAvKipcbiAgICAgKiBSZXNldCBzb21lIHRhc2tzIHdlIHdpbGwgcmVidWlsZCBiZWxvdy5cbiAgICAgKi9cbiAgICBbXCJkZXBsb3lcIiwgXCJ3YXRjaFwiXS5mb3JFYWNoKCh0YXNrTmFtZSkgPT4ge1xuICAgICAgY29uc3QgdGFzayA9IHByb2plY3QudGFza3MudHJ5RmluZCh0YXNrTmFtZSk7XG4gICAgICBpZiAodGFzaykge1xuICAgICAgICB0YXNrLnJlc2V0KCk7XG4gICAgICAgIHRhc2suc2F5KFxuICAgICAgICAgIFwiR2VuZXJpYyB0YXNrIGlzIGRpc2FibGVkLiBQbGVhc2UgdXNlIHRoZSBzcGVjaWZpYyB0YXNrIGZvciB5b3VyIGRlcGxveW1lbnQgdGFyZ2V0LlwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogUmVkZWZpbmUgU3ludGggaGVyZVxuICAgICAqXG4gICAgICogRGVwbG95IGFuZCB3YXRjaCBnZXQgcmVjb25maWd1cmVkIHBlciBkZXBsb3ltZW50IHRhcmdldC5cbiAgICAgKiBAc2VlIGFkZERlcGxveW1lbnRUYXJnZXQoKVxuICAgICAqL1xuICAgIHRoaXMuY29uZmlndXJlU3ludGhUYXNrKCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGRlcGxveW1lbnQgdGFyZ2V0IHRvIHRoZSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSBkZXBsb3ltZW50IHRhcmdldCB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkRGVwbG95bWVudFRhcmdldCh0YXJnZXQ6IEF3c0RlcGxveW1lbnRUYXJnZXQpOiB2b2lkIHtcbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBDb25maWd1cmUgdGhlIGRlcGxveSB0YXJnZXQuXG4gICAgICpcbiAgICAgKiAtIEZvciBsb2NhbCBkZXBsb3ltZW50cywgZGlzY292ZXIgb3IgYnVpbGQgcHJvZmlsZSBuYW1lLlxuICAgICAqIC0gRm9yIENJIGRlcGxveW1lbnRzLCBkaXNjb3ZlciBvciBidWlsZCByb2xlIEFSTi5cbiAgICAgKiAtIEFkZCB0aGUgdGFyZ2V0IHRvIHRoZSBkZXBsb3ltZW50IHRhcmdldHMgYXJyYXkuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICAvKipcbiAgICAgKiBTb21lIGRlZmF1bHRzIGZvciBsb2NhbCBkZXBsb3ltZW50cy5cbiAgICAgKi9cbiAgICBpZiAodGFyZ2V0LmxvY2FsRGVwbG95bWVudCkge1xuICAgICAgY29uc3Qgcm9sZU5hbWUgPVxuICAgICAgICB0YXJnZXQubG9jYWxEZXBsb3ltZW50Q29uZmlnPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSB8fFxuICAgICAgICBcImFkbWluaXN0cmF0b3JhY2Nlc3NcIjtcbiAgICAgIGNvbnN0IHByb2ZpbGUgPVxuICAgICAgICB0YXJnZXQubG9jYWxEZXBsb3ltZW50Q29uZmlnPy5wcm9maWxlIHx8XG4gICAgICAgIGAke3JvbGVOYW1lfS0ke3RhcmdldC5hY2NvdW50fS0ke3RhcmdldC5yZWdpb259YDtcblxuICAgICAgdGFyZ2V0ID0ge1xuICAgICAgICAuLi50YXJnZXQsXG4gICAgICAgIGxvY2FsRGVwbG95bWVudENvbmZpZzoge1xuICAgICAgICAgIHByb2ZpbGUsXG4gICAgICAgICAgcm9sZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNvbWUgZGVmYXVsdHMgZm9yIENJIGRlcGxveW1lbnRzLlxuICAgICAqL1xuICAgIGlmICh0YXJnZXQuY2lEZXBsb3ltZW50KSB7XG4gICAgICBjb25zdCByb2xlQXJuID1cbiAgICAgICAgdGFyZ2V0LmNpRGVwbG95bWVudENvbmZpZz8ucm9sZUFybiB8fFxuICAgICAgICBgYXJuOmF3czppYW06OiR7dGFyZ2V0LmFjY291bnR9OnJvbGUvR2l0SHViJHt0aGlzLnByb2plY3QubmFtZS5yZXBsYWNlKFwiLVwiLCBcIlwiKX1gO1xuXG4gICAgICB0YXJnZXQgPSB7XG4gICAgICAgIC4uLnRhcmdldCxcbiAgICAgICAgY2lEZXBsb3ltZW50Q29uZmlnOiB7XG4gICAgICAgICAgcm9sZUFybixcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5kZXBsb3ltZW50VGFyZ2V0cy5wdXNoKHRhcmdldCk7XG5cbiAgICAvLyBEZXBsb3kgdGFza3MgYXJlIGNvbmZpZ3VyZWQgcGVyIHRhcmdldC5cbiAgICB0aGlzLmNvbmZpZ3VyZURlcGxveVRhc2sodGFyZ2V0KTtcblxuICAgIC8vIFdhdGNoIHRhc2tzIGFyZSBjb25maWd1cmVkIHBlciB0YXJnZXQuXG4gICAgdGhpcy5jb25maWd1cmVXYXRjaFRhc2sodGFyZ2V0KTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKlxuICAgKiBTeW50aCBUYXNrc1xuICAgKlxuICAgKiAtIENvbmZpZ3VyZSBzeW50aCB0YXNrIHRvIHVzZSB0aGUgYnJhbmNoIG5hbWVcbiAgICogLSBDaGFuZ2UgdGhlIG91dHB1dCBsb2NhdGlvbiBmb3IgZWFzaWVyIHdvcmtmbG93cy5cbiAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBjb25maWd1cmVTeW50aFRhc2sgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5wcm9qZWN0LnRhc2tzLnRyeUZpbmQoXCJzeW50aFwiKT8ucmVzZXQoYHJtIC1yZiAke3RoaXMuY2RrT3V0fWApO1xuICAgIHRoaXMucHJvamVjdC50YXNrc1xuICAgICAgLnRyeUZpbmQoXCJzeW50aFwiKVxuICAgICAgPy5leGVjKGBjZGsgc3ludGggLS1vdXRwdXQgJHt0aGlzLmNka091dH1gLCB7IGVudjogdGhpcy5lbnYgfSk7XG5cbiAgICB0aGlzLnByb2plY3QudGFza3MudHJ5RmluZChcInN5bnRoOnNpbGVudFwiKT8ucmVzZXQoYHJtIC1yZiAke3RoaXMuY2RrT3V0fWApO1xuICAgIHRoaXMucHJvamVjdC50YXNrc1xuICAgICAgLnRyeUZpbmQoXCJzeW50aDpzaWxlbnRcIilcbiAgICAgID8uZXhlYyhgY2RrIHN5bnRoIC1xIC0tb3V0cHV0ICR7dGhpcy5jZGtPdXR9YCwgeyBlbnY6IHRoaXMuZW52IH0pO1xuICB9O1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKlxuICAgKiBEZXBsb3kgVGFza3NcbiAgICpcbiAgICogLSBJZiBsb2NhbCBkZXBsb3ksIGFkZCBhIGRlcGxveSB0YXNrLlxuICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGNvbmZpZ3VyZURlcGxveVRhc2sgPSAodGFyZ2V0OiBBd3NEZXBsb3ltZW50VGFyZ2V0KTogdm9pZCA9PiB7XG4gICAgaWYgKHRhcmdldC5sb2NhbERlcGxveW1lbnQpIHtcbiAgICAgIGNvbnN0IHRhc2tOYW1lID0gW1wiZGVwbG95XCIsIHRhcmdldC5hY2NvdW50LCB0YXJnZXQucmVnaW9uXS5qb2luKFwiOlwiKTtcbiAgICAgIGNvbnN0IGRlcGxveVRhc2sgPSB0aGlzLnByb2plY3QudGFza3MuYWRkVGFzayh0YXNrTmFtZSwge1xuICAgICAgICBlbnY6IHRoaXMuZW52LFxuICAgICAgfSk7XG4gICAgICBkZXBsb3lUYXNrLmV4ZWMoXG4gICAgICAgIGBjZGsgZGVwbG95IC0tbG9va3Vwcz1mYWxzZSAtLXJlcXVpcmUtYXBwcm92YWw9bmV2ZXIgLS1wcm9maWxlPSR7dGFyZ2V0LmxvY2FsRGVwbG95bWVudENvbmZpZz8ucHJvZmlsZX0gLS1hcHA9JHt0aGlzLmNka091dH0gXCIqLSR7dGFyZ2V0LmFjY291bnR9LSR7dGFyZ2V0LnJlZ2lvbn1cImAsXG4gICAgICApO1xuICAgIH1cbiAgfTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICpcbiAgICogV2F0Y2ggdGFza3NcbiAgICpcbiAgICogLSBDb25maWd1cmUgd2F0Y2ggdGFzayB0byB1c2UgdGhlIGJyYW5jaCBuYW1lXG4gICAqIC0gY29uZmlndXJlIHdhdGNoIHRhc2sgdG8gdXNlIHRoZSBjb3JyZWN0IHN5bnRoIG91dHB1dCBsb2NhdGlvbi5cbiAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBjb25maWd1cmVXYXRjaFRhc2sgPSAodGFyZ2V0OiBBd3NEZXBsb3ltZW50VGFyZ2V0KTogdm9pZCA9PiB7XG4gICAgaWYgKHRhcmdldC5sb2NhbERlcGxveW1lbnQpIHtcbiAgICAgIGNvbnN0IHRhc2tOYW1lID0gW1wid2F0Y2hcIiwgdGFyZ2V0LmFjY291bnQsIHRhcmdldC5yZWdpb25dLmpvaW4oXCI6XCIpO1xuICAgICAgY29uc3Qgd2F0Y2hUYXNrID0gdGhpcy5wcm9qZWN0LnRhc2tzLmFkZFRhc2sodGFza05hbWUsIHsgZW52OiB0aGlzLmVudiB9KTtcblxuICAgICAgLy8gdXBkYXRlIHRoZSBzeW50aCBmaXJzdFxuICAgICAgY29uc3Qgc3ludGhTaWxlbnQgPSB0aGlzLnByb2plY3QudGFza3MudHJ5RmluZChcInN5bnRoOnNpbGVudFwiKTtcbiAgICAgIGlmIChzeW50aFNpbGVudCkge1xuICAgICAgICB3YXRjaFRhc2suc3Bhd24oc3ludGhTaWxlbnQpO1xuICAgICAgfVxuXG4gICAgICAvLyBkbyBhIG5vcm1hbCBkZXBsb3lcbiAgICAgIHdhdGNoVGFzay5leGVjKFxuICAgICAgICBgY2RrIGRlcGxveSAtLWxvb2t1cHM9ZmFsc2UgLS1yZXF1aXJlLWFwcHJvdmFsPW5ldmVyIC0tcHJvZmlsZT0ke3RhcmdldC5sb2NhbERlcGxveW1lbnRDb25maWc/LnByb2ZpbGV9IC0tYXBwPSR7dGhpcy5jZGtPdXR9IFwiKi0ke3RhcmdldC5hY2NvdW50fS0ke3RhcmdldC5yZWdpb259XCJgLFxuICAgICAgKTtcblxuICAgICAgLy8gd2F0Y2ggZm9yIGNoYW5nZXMgYW5kIGxvZyBvdXRwdXRcbiAgICAgIHdhdGNoVGFzay5leGVjKFxuICAgICAgICBgY2RrIHdhdGNoIC0tbG9va3Vwcz1mYWxzZSAtLXJlcXVpcmUtYXBwcm92YWw9bmV2ZXIgLS1ob3Rzd2FwIC0tcHJvZmlsZT0ke3RhcmdldC5sb2NhbERlcGxveW1lbnRDb25maWc/LnByb2ZpbGV9IFwiKi0ke3RhcmdldC5hY2NvdW50fS0ke3RhcmdldC5yZWdpb259XCJgLFxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/*******************************************************************************
|
|
2
|
+
*
|
|
3
|
+
* AWS Organization, Account, and Region Definitions. These shapes are used
|
|
4
|
+
* when configuring deployment targets that automation can deploy projects into.
|
|
5
|
+
*
|
|
6
|
+
******************************************************************************/
|
|
7
|
+
/**
|
|
8
|
+
* AWS Region
|
|
9
|
+
*
|
|
10
|
+
* Represents an active Region that deployments can be made into.
|
|
11
|
+
*/
|
|
12
|
+
export interface AwsRegion {
|
|
13
|
+
/**
|
|
14
|
+
* The name of the AWS region.
|
|
15
|
+
*/
|
|
16
|
+
name: string;
|
|
17
|
+
/**
|
|
18
|
+
* The code of the AWS region (e.g., us-east-1).
|
|
19
|
+
*/
|
|
20
|
+
code: string;
|
|
21
|
+
/**
|
|
22
|
+
* Indicates if the region is currently active as a targets for deployments.
|
|
23
|
+
*/
|
|
24
|
+
active: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* AWS Account
|
|
28
|
+
*
|
|
29
|
+
* Represents an AWS account with its details.
|
|
30
|
+
*/
|
|
31
|
+
export interface AwsAccount {
|
|
32
|
+
/**
|
|
33
|
+
* The name of the AWS account.
|
|
34
|
+
*/
|
|
35
|
+
name: string;
|
|
36
|
+
/**
|
|
37
|
+
* The ID (account number) of the AWS account.
|
|
38
|
+
*/
|
|
39
|
+
id: string;
|
|
40
|
+
/**
|
|
41
|
+
* The list of active regions available in the AWS account.
|
|
42
|
+
*/
|
|
43
|
+
regions: Array<AwsRegion>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* AWS Organization
|
|
47
|
+
*
|
|
48
|
+
* Represents one Organization configuration.
|
|
49
|
+
*/
|
|
50
|
+
export interface AwsOrganization {
|
|
51
|
+
/**
|
|
52
|
+
* The name of the AWS organization.
|
|
53
|
+
*/
|
|
54
|
+
name: string;
|
|
55
|
+
/**
|
|
56
|
+
* The ID of the AWS organization.
|
|
57
|
+
*/
|
|
58
|
+
id: string;
|
|
59
|
+
/**
|
|
60
|
+
* The list of AWS accounts in the organization.
|
|
61
|
+
*/
|
|
62
|
+
accounts: Array<AwsAccount>;
|
|
63
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*******************************************************************************
|
|
3
|
+
*
|
|
4
|
+
* AWS Organization, Account, and Region Definitions. These shapes are used
|
|
5
|
+
* when configuring deployment targets that automation can deploy projects into.
|
|
6
|
+
*
|
|
7
|
+
******************************************************************************/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3cy9hd3MtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztnRkFLZ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqIEFXUyBPcmdhbml6YXRpb24sIEFjY291bnQsIGFuZCBSZWdpb24gRGVmaW5pdGlvbnMuIFRoZXNlIHNoYXBlcyBhcmUgdXNlZFxuICogd2hlbiBjb25maWd1cmluZyBkZXBsb3ltZW50IHRhcmdldHMgdGhhdCBhdXRvbWF0aW9uIGNhbiBkZXBsb3kgcHJvamVjdHMgaW50by5cbiAqXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIEFXUyBSZWdpb25cbiAqXG4gKiBSZXByZXNlbnRzIGFuIGFjdGl2ZSBSZWdpb24gdGhhdCBkZXBsb3ltZW50cyBjYW4gYmUgbWFkZSBpbnRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF3c1JlZ2lvbiB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQVdTIHJlZ2lvbi5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNvZGUgb2YgdGhlIEFXUyByZWdpb24gKGUuZy4sIHVzLWVhc3QtMSkuXG4gICAqL1xuICBjb2RlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgcmVnaW9uIGlzIGN1cnJlbnRseSBhY3RpdmUgYXMgYSB0YXJnZXRzIGZvciBkZXBsb3ltZW50cy5cbiAgICovXG4gIGFjdGl2ZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBV1MgQWNjb3VudFxuICpcbiAqIFJlcHJlc2VudHMgYW4gQVdTIGFjY291bnQgd2l0aCBpdHMgZGV0YWlscy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NBY2NvdW50IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBBV1MgYWNjb3VudC5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIChhY2NvdW50IG51bWJlcikgb2YgdGhlIEFXUyBhY2NvdW50LlxuICAgKi9cbiAgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgYWN0aXZlIHJlZ2lvbnMgYXZhaWxhYmxlIGluIHRoZSBBV1MgYWNjb3VudC5cbiAgICovXG4gIHJlZ2lvbnM6IEFycmF5PEF3c1JlZ2lvbj47XG59XG5cbi8qKlxuICogQVdTIE9yZ2FuaXphdGlvblxuICpcbiAqIFJlcHJlc2VudHMgb25lIE9yZ2FuaXphdGlvbiBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF3c09yZ2FuaXphdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQVdTIG9yZ2FuaXphdGlvbi5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBBV1Mgb3JnYW5pemF0aW9uLlxuICAgKi9cbiAgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgQVdTIGFjY291bnRzIGluIHRoZSBvcmdhbml6YXRpb24uXG4gICAqL1xuICBhY2NvdW50czogQXJyYXk8QXdzQWNjb3VudD47XG59XG4iXX0=
|
package/lib/aws/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./aws-types"), exports);
|
|
18
|
+
__exportStar(require("./aws-deployment-config"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBNEI7QUFDNUIsMERBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYXdzLXR5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hd3MtZGVwbG95bWVudC1jb25maWdcIjtcbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*******************************************************************************
|
|
2
|
+
*
|
|
3
|
+
* Git configs for this repo. This venn diagram has a great deal of overlap
|
|
4
|
+
* with GitHub config options but is not a perfect circle.
|
|
5
|
+
*
|
|
6
|
+
******************************************************************************/
|
|
7
|
+
export interface GitBranch {
|
|
8
|
+
/**
|
|
9
|
+
* The name of the branch pattern.
|
|
10
|
+
*
|
|
11
|
+
* @example "main" or "feature/*"
|
|
12
|
+
*/
|
|
13
|
+
branch: string;
|
|
14
|
+
/**
|
|
15
|
+
* Description for this branch's purpose, used for generated documentation.
|
|
16
|
+
*/
|
|
17
|
+
description?: Array<string>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*******************************************************************************
|
|
3
|
+
*
|
|
4
|
+
* Git configs for this repo. This venn diagram has a great deal of overlap
|
|
5
|
+
* with GitHub config options but is not a perfect circle.
|
|
6
|
+
*
|
|
7
|
+
******************************************************************************/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2dpdC9naXQtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztnRkFLZ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqIEdpdCBjb25maWdzIGZvciB0aGlzIHJlcG8uIFRoaXMgdmVubiBkaWFncmFtIGhhcyBhIGdyZWF0IGRlYWwgb2Ygb3ZlcmxhcFxuICogd2l0aCBHaXRIdWIgY29uZmlnIG9wdGlvbnMgYnV0IGlzIG5vdCBhIHBlcmZlY3QgY2lyY2xlLlxuICpcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmV4cG9ydCBpbnRlcmZhY2UgR2l0QnJhbmNoIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBicmFuY2ggcGF0dGVybi5cbiAgICpcbiAgICogQGV4YW1wbGUgXCJtYWluXCIgb3IgXCJmZWF0dXJlLypcIlxuICAgKi9cbiAgYnJhbmNoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGlzIGJyYW5jaCdzIHB1cnBvc2UsIHVzZWQgZm9yIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBBcnJheTxzdHJpbmc+O1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./git-types";
|
package/lib/git/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./git-types"), exports);
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2l0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9naXQtdHlwZXNcIjtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./pnpm-workspace";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./pnpm-workspace"), exports);
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcG5wbS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcG5wbS13b3Jrc3BhY2VcIjtcbiJdfQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PnpmWorkspace = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const projen_1 = require("projen");
|
|
6
|
+
class PnpmWorkspace extends projen_1.Component {
|
|
7
|
+
static of(project) {
|
|
8
|
+
const isDefined = (c) => c instanceof PnpmWorkspace;
|
|
9
|
+
return project.root.components.find(isDefined);
|
|
10
|
+
}
|
|
11
|
+
constructor(project) {
|
|
12
|
+
super(project);
|
|
13
|
+
const fileName = "pnpm-workspace.yaml";
|
|
14
|
+
/**
|
|
15
|
+
* In case that this file is in a package, don't package it.
|
|
16
|
+
*/
|
|
17
|
+
project.addPackageIgnore(fileName);
|
|
18
|
+
/**
|
|
19
|
+
* Write pnpm workspace file
|
|
20
|
+
*/
|
|
21
|
+
new projen_1.YamlFile(this.project, fileName, {
|
|
22
|
+
obj: {
|
|
23
|
+
packages: () => {
|
|
24
|
+
const packages = new Array();
|
|
25
|
+
for (const subproject of project.subprojects) {
|
|
26
|
+
// grab the relative out directory
|
|
27
|
+
packages.push((0, path_1.relative)(this.project.outdir, subproject.outdir));
|
|
28
|
+
}
|
|
29
|
+
return packages;
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.PnpmWorkspace = PnpmWorkspace;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG5wbS13b3Jrc3BhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcG5wbS9wbnBtLXdvcmtzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBZ0M7QUFDaEMsbUNBQXNEO0FBRXRELE1BQWEsYUFBYyxTQUFRLGtCQUFTO0lBQ25DLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBZ0I7UUFDL0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFZLEVBQXNCLEVBQUUsQ0FDckQsQ0FBQyxZQUFZLGFBQWEsQ0FBQztRQUM3QixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsWUFBWSxPQUFnQjtRQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLFFBQVEsR0FBVyxxQkFBcUIsQ0FBQztRQUUvQzs7V0FFRztRQUNILE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVuQzs7V0FFRztRQUNILElBQUksaUJBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRTtZQUNuQyxHQUFHLEVBQUU7Z0JBQ0gsUUFBUSxFQUFFLEdBQUcsRUFBRTtvQkFDYixNQUFNLFFBQVEsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO29CQUNyQyxLQUFLLE1BQU0sVUFBVSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQzt3QkFDN0Msa0NBQWtDO3dCQUNsQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUEsZUFBUSxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUNsRSxDQUFDO29CQUNELE9BQU8sUUFBUSxDQUFDO2dCQUNsQixDQUFDO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFqQ0Qsc0NBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBQcm9qZWN0LCBZYW1sRmlsZSB9IGZyb20gXCJwcm9qZW5cIjtcblxuZXhwb3J0IGNsYXNzIFBucG1Xb3Jrc3BhY2UgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwdWJsaWMgc3RhdGljIG9mKHByb2plY3Q6IFByb2plY3QpOiBQbnBtV29ya3NwYWNlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpc0RlZmluZWQgPSAoYzogQ29tcG9uZW50KTogYyBpcyBQbnBtV29ya3NwYWNlID0+XG4gICAgICBjIGluc3RhbmNlb2YgUG5wbVdvcmtzcGFjZTtcbiAgICByZXR1cm4gcHJvamVjdC5yb290LmNvbXBvbmVudHMuZmluZChpc0RlZmluZWQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgY29uc3QgZmlsZU5hbWU6IHN0cmluZyA9IFwicG5wbS13b3Jrc3BhY2UueWFtbFwiO1xuXG4gICAgLyoqXG4gICAgICogSW4gY2FzZSB0aGF0IHRoaXMgZmlsZSBpcyBpbiBhIHBhY2thZ2UsIGRvbid0IHBhY2thZ2UgaXQuXG4gICAgICovXG4gICAgcHJvamVjdC5hZGRQYWNrYWdlSWdub3JlKGZpbGVOYW1lKTtcblxuICAgIC8qKlxuICAgICAqIFdyaXRlIHBucG0gd29ya3NwYWNlIGZpbGVcbiAgICAgKi9cbiAgICBuZXcgWWFtbEZpbGUodGhpcy5wcm9qZWN0LCBmaWxlTmFtZSwge1xuICAgICAgb2JqOiB7XG4gICAgICAgIHBhY2thZ2VzOiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFja2FnZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgICAgICAgIGZvciAoY29uc3Qgc3VicHJvamVjdCBvZiBwcm9qZWN0LnN1YnByb2plY3RzKSB7XG4gICAgICAgICAgICAvLyBncmFiIHRoZSByZWxhdGl2ZSBvdXQgZGlyZWN0b3J5XG4gICAgICAgICAgICBwYWNrYWdlcy5wdXNoKHJlbGF0aXZlKHRoaXMucHJvamVjdC5vdXRkaXIsIHN1YnByb2plY3Qub3V0ZGlyKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwYWNrYWdlcztcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./turbo-repo-task"), exports);
|
|
18
|
+
__exportStar(require("./turbo-repo"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHVyYm8vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUFrQztBQUNsQywrQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi90dXJiby1yZXBvLXRhc2tcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R1cmJvLXJlcG9cIjtcbiJdfQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Component, Project } from "projen/lib";
|
|
2
|
+
/**
|
|
3
|
+
* Each of the below options corresponds to a task property found here:
|
|
4
|
+
* * https://turborepo.com/docs/reference/configuration#defining-tasks
|
|
5
|
+
*/
|
|
6
|
+
export interface TurboRepoTaskOptions {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly dependsOn?: Array<string>;
|
|
9
|
+
readonly env?: Array<string>;
|
|
10
|
+
readonly passThroughEnv?: Array<string>;
|
|
11
|
+
readonly outputs?: Array<string>;
|
|
12
|
+
readonly cache?: boolean;
|
|
13
|
+
readonly inputs?: Array<string>;
|
|
14
|
+
readonly outputLogs?: "full" | "hash-only" | "new-only" | "errors-only" | "none";
|
|
15
|
+
readonly persistent?: boolean;
|
|
16
|
+
readonly interactive?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare class TurboRepoTask extends Component {
|
|
19
|
+
readonly project: Project;
|
|
20
|
+
readonly name: string;
|
|
21
|
+
dependsOn: Array<string>;
|
|
22
|
+
readonly env: Array<string>;
|
|
23
|
+
readonly passThroughEnv: Array<string>;
|
|
24
|
+
outputs: Array<string>;
|
|
25
|
+
cache: boolean;
|
|
26
|
+
inputs: Array<string>;
|
|
27
|
+
readonly outputLogs: "full" | "hash-only" | "new-only" | "errors-only" | "none";
|
|
28
|
+
readonly persistent: boolean;
|
|
29
|
+
readonly interactive: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Include this task in turbo.json output?
|
|
32
|
+
*/
|
|
33
|
+
isActive: boolean;
|
|
34
|
+
constructor(project: Project, options: TurboRepoTaskOptions);
|
|
35
|
+
taskConfig(): Record<string, any>;
|
|
36
|
+
}
|