@codedrifters/configulator 0.0.0 → 0.0.1
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 +1 -1
- package/README.md +761 -1
- package/lib/aws/aws-deployment-config.d.ts +45 -108
- package/lib/aws/aws-deployment-config.js +69 -100
- package/lib/aws/aws-deployment-target.d.ts +210 -0
- package/lib/aws/aws-deployment-target.js +202 -0
- package/lib/aws/index.d.ts +1 -1
- package/lib/aws/index.js +2 -2
- package/lib/index.d.ts +9 -0
- package/lib/index.js +26 -0
- package/lib/jsii/index.d.ts +1 -0
- package/lib/jsii/index.js +18 -0
- package/lib/jsii/jsii-faker.d.ts +47 -0
- package/lib/jsii/jsii-faker.js +103 -0
- package/lib/pnpm/pnpm-workspace.d.ts +240 -1
- package/lib/pnpm/pnpm-workspace.js +155 -15
- package/lib/projects/index.d.ts +2 -0
- package/lib/projects/index.js +19 -0
- package/lib/projects/monorepo-project.d.ts +50 -0
- package/lib/projects/monorepo-project.js +203 -0
- package/lib/projects/typescript-project.d.ts +4 -0
- package/lib/projects/typescript-project.js +150 -0
- package/lib/turbo/turbo-repo.d.ts +116 -9
- package/lib/turbo/turbo-repo.js +107 -20
- package/lib/versions.d.ts +19 -7
- package/lib/versions.js +20 -8
- package/lib/vscode/vscode.js +2 -1
- package/lib/workflows/aws-deploy-workflow.d.ts +84 -0
- package/lib/workflows/aws-deploy-workflow.js +312 -0
- package/lib/workflows/index.d.ts +1 -2
- package/lib/workflows/index.js +2 -3
- package/package.json +21 -20
- package/lib/workflows/build-workflow.d.ts +0 -13
- package/lib/workflows/build-workflow.js +0 -64
- package/lib/workflows/deploy-workflow.d.ts +0 -17
- package/lib/workflows/deploy-workflow.js +0 -113
- package/lib/workflows/steps/deploy.d.ts +0 -4
- package/lib/workflows/steps/deploy.js +0 -62
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { TypeScriptAppProject, TypeScriptProjectOptions } from "projen/lib/typescript";
|
|
2
|
+
import { PnpmWorkspaceOptions } from "../pnpm/pnpm-workspace";
|
|
3
|
+
import { TurboRepoOptions } from "../turbo/turbo-repo";
|
|
4
|
+
/*******************************************************************************
|
|
5
|
+
*
|
|
6
|
+
* Monorepo Root Project
|
|
7
|
+
*
|
|
8
|
+
* This project should be used as the base project for other projects in a
|
|
9
|
+
* monorepo. The Monorepo root project generally won't contain any code, but it
|
|
10
|
+
* will contain configuration for the monorepo, such as package management,
|
|
11
|
+
* linting, testing, and other project-wide settings.
|
|
12
|
+
*
|
|
13
|
+
******************************************************************************/
|
|
14
|
+
/**
|
|
15
|
+
* Configuration options for the monorepo.
|
|
16
|
+
*/
|
|
17
|
+
export interface MonorepoProjectOptions extends Omit<TypeScriptProjectOptions, "defaultReleaseBranch"> {
|
|
18
|
+
/**
|
|
19
|
+
* Turn on Turborepo support.
|
|
20
|
+
*
|
|
21
|
+
* @default true
|
|
22
|
+
*/
|
|
23
|
+
turbo?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Optionsal options for turborepo config
|
|
26
|
+
*/
|
|
27
|
+
turboOptions?: TurboRepoOptions;
|
|
28
|
+
/**
|
|
29
|
+
* PNPM options for the monorepo.
|
|
30
|
+
*/
|
|
31
|
+
pnpmOptions?: {
|
|
32
|
+
/**
|
|
33
|
+
* The version of PNPM to use in the monorepo.
|
|
34
|
+
* @default VERSION.PNPM_VERSION
|
|
35
|
+
* @see {@link src/versions.ts}
|
|
36
|
+
*/
|
|
37
|
+
version?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Optional pnpm options for the monorepo workspace file.
|
|
40
|
+
*/
|
|
41
|
+
pnpmWorkspaceOptions?: PnpmWorkspaceOptions;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export declare class MonorepoProject extends TypeScriptAppProject {
|
|
45
|
+
/**
|
|
46
|
+
* Version of PNPM which the whole monorepo should use.
|
|
47
|
+
*/
|
|
48
|
+
readonly pnpmVersion: string;
|
|
49
|
+
constructor(userOptions: MonorepoProjectOptions);
|
|
50
|
+
}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MonorepoProject = void 0;
|
|
4
|
+
const javascript_1 = require("projen/lib/javascript");
|
|
5
|
+
const typescript_1 = require("projen/lib/typescript");
|
|
6
|
+
const ts_deepmerge_1 = require("ts-deepmerge");
|
|
7
|
+
const pnpm_workspace_1 = require("../pnpm/pnpm-workspace");
|
|
8
|
+
const turbo_repo_1 = require("../turbo/turbo-repo");
|
|
9
|
+
const versions_1 = require("../versions");
|
|
10
|
+
const vscode_1 = require("../vscode/vscode");
|
|
11
|
+
class MonorepoProject extends typescript_1.TypeScriptAppProject {
|
|
12
|
+
constructor(userOptions) {
|
|
13
|
+
/***************************************************************************
|
|
14
|
+
*
|
|
15
|
+
* BUILD WORKFLOW OPTIONS
|
|
16
|
+
*
|
|
17
|
+
* discover some turbo options for build workflow, if needed.
|
|
18
|
+
*
|
|
19
|
+
**************************************************************************/
|
|
20
|
+
const buildWorkflowOptions = userOptions
|
|
21
|
+
.turboOptions?.remoteCacheOptions
|
|
22
|
+
? turbo_repo_1.TurboRepo.buildWorkflowOptions(userOptions.turboOptions.remoteCacheOptions)
|
|
23
|
+
: {};
|
|
24
|
+
/***************************************************************************
|
|
25
|
+
*
|
|
26
|
+
* DEFAULT OPTIONS
|
|
27
|
+
*
|
|
28
|
+
* These are the default options unless you override with option inputs.
|
|
29
|
+
*
|
|
30
|
+
**************************************************************************/
|
|
31
|
+
const defaultOptions = {
|
|
32
|
+
/**
|
|
33
|
+
* Use typescript based config file.
|
|
34
|
+
*/
|
|
35
|
+
projenrcTs: true,
|
|
36
|
+
/**
|
|
37
|
+
* Projen version should be pinned to the local specified version.
|
|
38
|
+
*/
|
|
39
|
+
projenVersion: versions_1.VERSION.PROJEN_VERSION,
|
|
40
|
+
/**
|
|
41
|
+
* Use Prettier for code formatting.
|
|
42
|
+
*/
|
|
43
|
+
prettier: true,
|
|
44
|
+
/**
|
|
45
|
+
* Not licensed by default.
|
|
46
|
+
*/
|
|
47
|
+
licensed: false,
|
|
48
|
+
/**
|
|
49
|
+
* GitHub options for the monorepo.
|
|
50
|
+
* Don't enable mergify by default.
|
|
51
|
+
*/
|
|
52
|
+
githubOptions: {
|
|
53
|
+
mergify: false,
|
|
54
|
+
},
|
|
55
|
+
/**
|
|
56
|
+
* Default PNPM version to use in the monorepo.
|
|
57
|
+
*/
|
|
58
|
+
pnpmVersion: versions_1.VERSION.PNPM_VERSION,
|
|
59
|
+
/**
|
|
60
|
+
* We don't want sample code generated for the root project.
|
|
61
|
+
*/
|
|
62
|
+
sampleCode: false,
|
|
63
|
+
/**
|
|
64
|
+
* Jest is not required in the root project.
|
|
65
|
+
*/
|
|
66
|
+
jest: false,
|
|
67
|
+
/**
|
|
68
|
+
* Don't release the root project.
|
|
69
|
+
*/
|
|
70
|
+
release: false,
|
|
71
|
+
/**
|
|
72
|
+
* Don't upgrade dependencies automatically.
|
|
73
|
+
*/
|
|
74
|
+
depsUpgrade: false,
|
|
75
|
+
/**
|
|
76
|
+
* Disable tsconfig.dev.json in the root since we aren't going to be
|
|
77
|
+
* developing any code here. It's just a task runner and configuration
|
|
78
|
+
* tool for sub-projects.
|
|
79
|
+
*/
|
|
80
|
+
disableTsconfigDev: true,
|
|
81
|
+
/**
|
|
82
|
+
* Kill the srcdir in the root since we aren't using one.
|
|
83
|
+
*/
|
|
84
|
+
tsconfig: {
|
|
85
|
+
compilerOptions: {
|
|
86
|
+
rootDir: undefined,
|
|
87
|
+
},
|
|
88
|
+
exclude: ["node_modules"],
|
|
89
|
+
},
|
|
90
|
+
/**
|
|
91
|
+
* Enable turborepo by default.
|
|
92
|
+
*/
|
|
93
|
+
turbo: true,
|
|
94
|
+
/**
|
|
95
|
+
* Include self as a devDep
|
|
96
|
+
*/
|
|
97
|
+
devDeps: [
|
|
98
|
+
"@codedrifters/configulator",
|
|
99
|
+
`constructs@${versions_1.VERSION.AWS_CONSTRUCTS_VERSION}`,
|
|
100
|
+
],
|
|
101
|
+
pnpmOptions: {
|
|
102
|
+
pnpmWorkspaceOptions: {
|
|
103
|
+
defaultCatalog: {
|
|
104
|
+
["aws-cdk"]: versions_1.VERSION.AWS_CDK_CLI_VERSION,
|
|
105
|
+
["aws-cdk-lib"]: versions_1.VERSION.AWS_CDK_LIB_VERSION,
|
|
106
|
+
["projen"]: versions_1.VERSION.PROJEN_VERSION,
|
|
107
|
+
["constructs"]: versions_1.VERSION.AWS_CONSTRUCTS_VERSION,
|
|
108
|
+
["turbo"]: versions_1.VERSION.TURBO_VERSION,
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
/***************************************************************************
|
|
114
|
+
*
|
|
115
|
+
* REQUIRED OPTIONS
|
|
116
|
+
*
|
|
117
|
+
* These options cannot be changed by the user.
|
|
118
|
+
*
|
|
119
|
+
**************************************************************************/
|
|
120
|
+
const requiredOptions = {
|
|
121
|
+
/**
|
|
122
|
+
* This is required because it's standard practice and also to simplify
|
|
123
|
+
* some workflow design.
|
|
124
|
+
*/
|
|
125
|
+
defaultReleaseBranch: "main",
|
|
126
|
+
/**
|
|
127
|
+
* Use PNPM instead of the default (Yarn). Much of the ecosystem depends
|
|
128
|
+
* on PNPM and making monorepos PNPM only simplifies many configurations.
|
|
129
|
+
*/
|
|
130
|
+
packageManager: javascript_1.NodePackageManager.PNPM,
|
|
131
|
+
/**
|
|
132
|
+
* Some additional pre-build steps if we're using turbo's remote cache.
|
|
133
|
+
*/
|
|
134
|
+
buildWorkflowOptions: {
|
|
135
|
+
permissions: {
|
|
136
|
+
...buildWorkflowOptions?.permissions,
|
|
137
|
+
...userOptions.buildWorkflowOptions?.permissions,
|
|
138
|
+
},
|
|
139
|
+
preBuildSteps: [
|
|
140
|
+
...(buildWorkflowOptions?.preBuildSteps ?? []),
|
|
141
|
+
...(userOptions.buildWorkflowOptions?.preBuildSteps ?? []),
|
|
142
|
+
],
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
/***************************************************************************
|
|
146
|
+
*
|
|
147
|
+
* CONSTRUCTOR
|
|
148
|
+
*
|
|
149
|
+
* Combines default options with user provided options and required options.
|
|
150
|
+
* Store the options in a const so we can use them after super(), farther
|
|
151
|
+
* into the constructor for additional configuration.
|
|
152
|
+
*
|
|
153
|
+
**************************************************************************/
|
|
154
|
+
const options = (0, ts_deepmerge_1.merge)(defaultOptions, userOptions, requiredOptions);
|
|
155
|
+
super({ ...options });
|
|
156
|
+
/***************************************************************************
|
|
157
|
+
*
|
|
158
|
+
* PUBLIC PROPS
|
|
159
|
+
*
|
|
160
|
+
* Some props are hidden by Projen and we need to expose them for the
|
|
161
|
+
* monorepo to work properly. This is where we store them.
|
|
162
|
+
*
|
|
163
|
+
**************************************************************************/
|
|
164
|
+
this.pnpmVersion = options.pnpmVersion;
|
|
165
|
+
/***************************************************************************
|
|
166
|
+
*
|
|
167
|
+
* CUSTOM CONFIGS
|
|
168
|
+
*
|
|
169
|
+
* We add some additional configurations to the monorepo root project below
|
|
170
|
+
* such as Turborepo, VS Code config, and the PNPM workspace file.
|
|
171
|
+
*
|
|
172
|
+
**************************************************************************/
|
|
173
|
+
/**
|
|
174
|
+
* Add VSCode configuration
|
|
175
|
+
*/
|
|
176
|
+
new vscode_1.VSCodeConfig(this);
|
|
177
|
+
/**
|
|
178
|
+
* Add workspace definition to PNPM root
|
|
179
|
+
*/
|
|
180
|
+
new pnpm_workspace_1.PnpmWorkspace(this, options.pnpmOptions?.pnpmWorkspaceOptions);
|
|
181
|
+
/**
|
|
182
|
+
* Turn on turborepo support if requested.
|
|
183
|
+
*/
|
|
184
|
+
if (options.turbo) {
|
|
185
|
+
new turbo_repo_1.TurboRepo(this, options.turboOptions);
|
|
186
|
+
this.buildWorkflow?.addPostBuildSteps({
|
|
187
|
+
name: "Build Sub Projects",
|
|
188
|
+
run: `npx projen ${turbo_repo_1.ROOT_CI_TASK_NAME}`,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Specify package manager
|
|
193
|
+
*/
|
|
194
|
+
// const pnpmVersion = options.pnpmVersion ?? VERSION.PNPM_VERSION;
|
|
195
|
+
this.package.file.addOverride("packageManager", `pnpm@${options.pnpmVersion}`);
|
|
196
|
+
/**
|
|
197
|
+
* Add some silly things to the gitignore.
|
|
198
|
+
*/
|
|
199
|
+
this.gitignore?.addPatterns(".DS_Store");
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
exports.MonorepoProject = MonorepoProject;
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8tcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0cy9tb25vcmVwby1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHNEQUEyRDtBQUMzRCxzREFHK0I7QUFDL0IsK0NBQXFDO0FBQ3JDLDJEQUE2RTtBQUM3RSxvREFJNkI7QUFDN0IsMENBQXNDO0FBQ3RDLDZDQUFnRDtBQXFEaEQsTUFBYSxlQUFnQixTQUFRLGlDQUFvQjtJQU12RCxZQUFZLFdBQW1DO1FBQzdDOzs7Ozs7b0ZBTTRFO1FBRTVFLE1BQU0sb0JBQW9CLEdBQWtDLFdBQVc7YUFDcEUsWUFBWSxFQUFFLGtCQUFrQjtZQUNqQyxDQUFDLENBQUMsc0JBQVMsQ0FBQyxvQkFBb0IsQ0FDNUIsV0FBVyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FDNUM7WUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVA7Ozs7OztvRkFNNEU7UUFFNUUsTUFBTSxjQUFjLEdBR2hCO1lBQ0Y7O2VBRUc7WUFDSCxVQUFVLEVBQUUsSUFBSTtZQUVoQjs7ZUFFRztZQUNILGFBQWEsRUFBRSxrQkFBTyxDQUFDLGNBQWM7WUFFckM7O2VBRUc7WUFDSCxRQUFRLEVBQUUsSUFBSTtZQUVkOztlQUVHO1lBQ0gsUUFBUSxFQUFFLEtBQUs7WUFFZjs7O2VBR0c7WUFDSCxhQUFhLEVBQUU7Z0JBQ2IsT0FBTyxFQUFFLEtBQUs7YUFDZjtZQUVEOztlQUVHO1lBQ0gsV0FBVyxFQUFFLGtCQUFPLENBQUMsWUFBWTtZQUVqQzs7ZUFFRztZQUNILFVBQVUsRUFBRSxLQUFLO1lBRWpCOztlQUVHO1lBQ0gsSUFBSSxFQUFFLEtBQUs7WUFFWDs7ZUFFRztZQUNILE9BQU8sRUFBRSxLQUFLO1lBRWQ7O2VBRUc7WUFDSCxXQUFXLEVBQUUsS0FBSztZQUVsQjs7OztlQUlHO1lBQ0gsa0JBQWtCLEVBQUUsSUFBSTtZQUV4Qjs7ZUFFRztZQUNILFFBQVEsRUFBRTtnQkFDUixlQUFlLEVBQUU7b0JBQ2YsT0FBTyxFQUFFLFNBQVM7aUJBQ25CO2dCQUNELE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQzthQUMxQjtZQUVEOztlQUVHO1lBQ0gsS0FBSyxFQUFFLElBQUk7WUFFWDs7ZUFFRztZQUNILE9BQU8sRUFBRTtnQkFDUCw0QkFBNEI7Z0JBQzVCLGNBQWMsa0JBQU8sQ0FBQyxzQkFBc0IsRUFBRTthQUMvQztZQUVELFdBQVcsRUFBRTtnQkFDWCxvQkFBb0IsRUFBRTtvQkFDcEIsY0FBYyxFQUFFO3dCQUNkLENBQUMsU0FBUyxDQUFDLEVBQUUsa0JBQU8sQ0FBQyxtQkFBbUI7d0JBQ3hDLENBQUMsYUFBYSxDQUFDLEVBQUUsa0JBQU8sQ0FBQyxtQkFBbUI7d0JBQzVDLENBQUMsUUFBUSxDQUFDLEVBQUUsa0JBQU8sQ0FBQyxjQUFjO3dCQUNsQyxDQUFDLFlBQVksQ0FBQyxFQUFFLGtCQUFPLENBQUMsc0JBQXNCO3dCQUM5QyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGtCQUFPLENBQUMsYUFBYTtxQkFDakM7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFFRjs7Ozs7O29GQU00RTtRQUU1RSxNQUFNLGVBQWUsR0FBMkM7WUFDOUQ7OztlQUdHO1lBQ0gsb0JBQW9CLEVBQUUsTUFBTTtZQUU1Qjs7O2VBR0c7WUFDSCxjQUFjLEVBQUUsK0JBQWtCLENBQUMsSUFBSTtZQUV2Qzs7ZUFFRztZQUNILG9CQUFvQixFQUFFO2dCQUNwQixXQUFXLEVBQUU7b0JBQ1gsR0FBRyxvQkFBb0IsRUFBRSxXQUFXO29CQUNwQyxHQUFHLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxXQUFXO2lCQUNqRDtnQkFDRCxhQUFhLEVBQUU7b0JBQ2IsR0FBRyxDQUFDLG9CQUFvQixFQUFFLGFBQWEsSUFBSSxFQUFFLENBQUM7b0JBQzlDLEdBQUcsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsYUFBYSxJQUFJLEVBQUUsQ0FBQztpQkFDM0Q7YUFDRjtTQUNGLENBQUM7UUFFRjs7Ozs7Ozs7b0ZBUTRFO1FBRTVFLE1BQU0sT0FBTyxHQUFtQixJQUFBLG9CQUFLLEVBQ25DLGNBQWMsRUFDZCxXQUFXLEVBQ1gsZUFBZSxDQUNoQixDQUFDO1FBRUYsS0FBSyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRXRCOzs7Ozs7O29GQU80RTtRQUU1RSxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFZLENBQUM7UUFFeEM7Ozs7Ozs7b0ZBTzRFO1FBRTVFOztXQUVHO1FBQ0gsSUFBSSxxQkFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZCOztXQUVHO1FBQ0gsSUFBSSw4QkFBYSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFFbkU7O1dBRUc7UUFDSCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQixJQUFJLHNCQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUUxQyxJQUFJLENBQUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDO2dCQUNwQyxJQUFJLEVBQUUsb0JBQW9CO2dCQUMxQixHQUFHLEVBQUUsY0FBYyw4QkFBaUIsRUFBRTthQUN2QyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQ7O1dBRUc7UUFDSCxtRUFBbUU7UUFDbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUMzQixnQkFBZ0IsRUFDaEIsUUFBUSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQzlCLENBQUM7UUFFRjs7V0FFRztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQWhQRCwwQ0FnUEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFdvcmtmbG93T3B0aW9ucyB9IGZyb20gXCJwcm9qZW4vbGliL2J1aWxkXCI7XG5pbXBvcnQgeyBOb2RlUGFja2FnZU1hbmFnZXIgfSBmcm9tIFwicHJvamVuL2xpYi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQge1xuICBUeXBlU2NyaXB0QXBwUHJvamVjdCxcbiAgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zLFxufSBmcm9tIFwicHJvamVuL2xpYi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gXCJ0cy1kZWVwbWVyZ2VcIjtcbmltcG9ydCB7IFBucG1Xb3Jrc3BhY2UsIFBucG1Xb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSBcIi4uL3BucG0vcG5wbS13b3Jrc3BhY2VcIjtcbmltcG9ydCB7XG4gIFJPT1RfQ0lfVEFTS19OQU1FLFxuICBUdXJib1JlcG8sXG4gIFR1cmJvUmVwb09wdGlvbnMsXG59IGZyb20gXCIuLi90dXJiby90dXJiby1yZXBvXCI7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSBcIi4uL3ZlcnNpb25zXCI7XG5pbXBvcnQgeyBWU0NvZGVDb25maWcgfSBmcm9tIFwiLi4vdnNjb2RlL3ZzY29kZVwiO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqIE1vbm9yZXBvIFJvb3QgUHJvamVjdFxuICpcbiAqIFRoaXMgcHJvamVjdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgYmFzZSBwcm9qZWN0IGZvciBvdGhlciBwcm9qZWN0cyBpbiBhXG4gKiBtb25vcmVwby4gVGhlIE1vbm9yZXBvIHJvb3QgcHJvamVjdCBnZW5lcmFsbHkgd29uJ3QgY29udGFpbiBhbnkgY29kZSwgYnV0IGl0XG4gKiB3aWxsIGNvbnRhaW4gY29uZmlndXJhdGlvbiBmb3IgdGhlIG1vbm9yZXBvLCBzdWNoIGFzIHBhY2thZ2UgbWFuYWdlbWVudCxcbiAqIGxpbnRpbmcsIHRlc3RpbmcsIGFuZCBvdGhlciBwcm9qZWN0LXdpZGUgc2V0dGluZ3MuXG4gKlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBtb25vcmVwby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25vcmVwb1Byb2plY3RPcHRpb25zIGV4dGVuZHMgT21pdDxcbiAgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zLFxuICBcImRlZmF1bHRSZWxlYXNlQnJhbmNoXCJcbj4ge1xuICAvKipcbiAgICogVHVybiBvbiBUdXJib3JlcG8gc3VwcG9ydC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgdHVyYm8/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zYWwgb3B0aW9ucyBmb3IgdHVyYm9yZXBvIGNvbmZpZ1xuICAgKi9cbiAgdHVyYm9PcHRpb25zPzogVHVyYm9SZXBvT3B0aW9ucztcblxuICAvKipcbiAgICogUE5QTSBvcHRpb25zIGZvciB0aGUgbW9ub3JlcG8uXG4gICAqL1xuICBwbnBtT3B0aW9ucz86IHtcbiAgICAvKipcbiAgICAgKiBUaGUgdmVyc2lvbiBvZiBQTlBNIHRvIHVzZSBpbiB0aGUgbW9ub3JlcG8uXG4gICAgICogQGRlZmF1bHQgVkVSU0lPTi5QTlBNX1ZFUlNJT05cbiAgICAgKiBAc2VlIHtAbGluayBzcmMvdmVyc2lvbnMudHN9XG4gICAgICovXG4gICAgdmVyc2lvbj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIHBucG0gb3B0aW9ucyBmb3IgdGhlIG1vbm9yZXBvIHdvcmtzcGFjZSBmaWxlLlxuICAgICAqL1xuICAgIHBucG1Xb3Jrc3BhY2VPcHRpb25zPzogUG5wbVdvcmtzcGFjZU9wdGlvbnM7XG4gIH07XG59XG5cbmludGVyZmFjZSBBcHBsaWVkT3B0aW9uc1xuICBleHRlbmRzIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucywgTW9ub3JlcG9Qcm9qZWN0T3B0aW9ucyB7fVxuXG5leHBvcnQgY2xhc3MgTW9ub3JlcG9Qcm9qZWN0IGV4dGVuZHMgVHlwZVNjcmlwdEFwcFByb2plY3Qge1xuICAvKipcbiAgICogVmVyc2lvbiBvZiBQTlBNIHdoaWNoIHRoZSB3aG9sZSBtb25vcmVwbyBzaG91bGQgdXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgcG5wbVZlcnNpb246IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih1c2VyT3B0aW9uczogTW9ub3JlcG9Qcm9qZWN0T3B0aW9ucykge1xuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIEJVSUxEIFdPUktGTE9XIE9QVElPTlNcbiAgICAgKlxuICAgICAqIGRpc2NvdmVyIHNvbWUgdHVyYm8gb3B0aW9ucyBmb3IgYnVpbGQgd29ya2Zsb3csIGlmIG5lZWRlZC5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IGJ1aWxkV29ya2Zsb3dPcHRpb25zOiBQYXJ0aWFsPEJ1aWxkV29ya2Zsb3dPcHRpb25zPiA9IHVzZXJPcHRpb25zXG4gICAgICAudHVyYm9PcHRpb25zPy5yZW1vdGVDYWNoZU9wdGlvbnNcbiAgICAgID8gVHVyYm9SZXBvLmJ1aWxkV29ya2Zsb3dPcHRpb25zKFxuICAgICAgICAgIHVzZXJPcHRpb25zLnR1cmJvT3B0aW9ucy5yZW1vdGVDYWNoZU9wdGlvbnMsXG4gICAgICAgIClcbiAgICAgIDoge307XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBERUZBVUxUIE9QVElPTlNcbiAgICAgKlxuICAgICAqIFRoZXNlIGFyZSB0aGUgZGVmYXVsdCBvcHRpb25zIHVubGVzcyB5b3Ugb3ZlcnJpZGUgd2l0aCBvcHRpb24gaW5wdXRzLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgZGVmYXVsdE9wdGlvbnM6IE9taXQ8XG4gICAgICBNb25vcmVwb1Byb2plY3RPcHRpb25zLFxuICAgICAgXCJuYW1lXCIgfCBcImRlZmF1bHRSZWxlYXNlQnJhbmNoXCJcbiAgICA+ID0ge1xuICAgICAgLyoqXG4gICAgICAgKiBVc2UgdHlwZXNjcmlwdCBiYXNlZCBjb25maWcgZmlsZS5cbiAgICAgICAqL1xuICAgICAgcHJvamVucmNUczogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBQcm9qZW4gdmVyc2lvbiBzaG91bGQgYmUgcGlubmVkIHRvIHRoZSBsb2NhbCBzcGVjaWZpZWQgdmVyc2lvbi5cbiAgICAgICAqL1xuICAgICAgcHJvamVuVmVyc2lvbjogVkVSU0lPTi5QUk9KRU5fVkVSU0lPTixcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2UgUHJldHRpZXIgZm9yIGNvZGUgZm9ybWF0dGluZy5cbiAgICAgICAqL1xuICAgICAgcHJldHRpZXI6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogTm90IGxpY2Vuc2VkIGJ5IGRlZmF1bHQuXG4gICAgICAgKi9cbiAgICAgIGxpY2Vuc2VkOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBHaXRIdWIgb3B0aW9ucyBmb3IgdGhlIG1vbm9yZXBvLlxuICAgICAgICogRG9uJ3QgZW5hYmxlIG1lcmdpZnkgYnkgZGVmYXVsdC5cbiAgICAgICAqL1xuICAgICAgZ2l0aHViT3B0aW9uczoge1xuICAgICAgICBtZXJnaWZ5OiBmYWxzZSxcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogRGVmYXVsdCBQTlBNIHZlcnNpb24gdG8gdXNlIGluIHRoZSBtb25vcmVwby5cbiAgICAgICAqL1xuICAgICAgcG5wbVZlcnNpb246IFZFUlNJT04uUE5QTV9WRVJTSU9OLFxuXG4gICAgICAvKipcbiAgICAgICAqIFdlIGRvbid0IHdhbnQgc2FtcGxlIGNvZGUgZ2VuZXJhdGVkIGZvciB0aGUgcm9vdCBwcm9qZWN0LlxuICAgICAgICovXG4gICAgICBzYW1wbGVDb2RlOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBKZXN0IGlzIG5vdCByZXF1aXJlZCBpbiB0aGUgcm9vdCBwcm9qZWN0LlxuICAgICAgICovXG4gICAgICBqZXN0OiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEb24ndCByZWxlYXNlIHRoZSByb290IHByb2plY3QuXG4gICAgICAgKi9cbiAgICAgIHJlbGVhc2U6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIERvbid0IHVwZ3JhZGUgZGVwZW5kZW5jaWVzIGF1dG9tYXRpY2FsbHkuXG4gICAgICAgKi9cbiAgICAgIGRlcHNVcGdyYWRlOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEaXNhYmxlIHRzY29uZmlnLmRldi5qc29uIGluIHRoZSByb290IHNpbmNlIHdlIGFyZW4ndCBnb2luZyB0byBiZVxuICAgICAgICogZGV2ZWxvcGluZyBhbnkgY29kZSBoZXJlLiBJdCdzIGp1c3QgYSB0YXNrIHJ1bm5lciBhbmQgY29uZmlndXJhdGlvblxuICAgICAgICogdG9vbCBmb3Igc3ViLXByb2plY3RzLlxuICAgICAgICovXG4gICAgICBkaXNhYmxlVHNjb25maWdEZXY6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogS2lsbCB0aGUgc3JjZGlyIGluIHRoZSByb290IHNpbmNlIHdlIGFyZW4ndCB1c2luZyBvbmUuXG4gICAgICAgKi9cbiAgICAgIHRzY29uZmlnOiB7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIHJvb3REaXI6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgICAgZXhjbHVkZTogW1wibm9kZV9tb2R1bGVzXCJdLFxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBFbmFibGUgdHVyYm9yZXBvIGJ5IGRlZmF1bHQuXG4gICAgICAgKi9cbiAgICAgIHR1cmJvOiB0cnVlLFxuXG4gICAgICAvKipcbiAgICAgICAqIEluY2x1ZGUgc2VsZiBhcyBhIGRldkRlcFxuICAgICAgICovXG4gICAgICBkZXZEZXBzOiBbXG4gICAgICAgIFwiQGNvZGVkcmlmdGVycy9jb25maWd1bGF0b3JcIixcbiAgICAgICAgYGNvbnN0cnVjdHNAJHtWRVJTSU9OLkFXU19DT05TVFJVQ1RTX1ZFUlNJT059YCxcbiAgICAgIF0sXG5cbiAgICAgIHBucG1PcHRpb25zOiB7XG4gICAgICAgIHBucG1Xb3Jrc3BhY2VPcHRpb25zOiB7XG4gICAgICAgICAgZGVmYXVsdENhdGFsb2c6IHtcbiAgICAgICAgICAgIFtcImF3cy1jZGtcIl06IFZFUlNJT04uQVdTX0NES19DTElfVkVSU0lPTixcbiAgICAgICAgICAgIFtcImF3cy1jZGstbGliXCJdOiBWRVJTSU9OLkFXU19DREtfTElCX1ZFUlNJT04sXG4gICAgICAgICAgICBbXCJwcm9qZW5cIl06IFZFUlNJT04uUFJPSkVOX1ZFUlNJT04sXG4gICAgICAgICAgICBbXCJjb25zdHJ1Y3RzXCJdOiBWRVJTSU9OLkFXU19DT05TVFJVQ1RTX1ZFUlNJT04sXG4gICAgICAgICAgICBbXCJ0dXJib1wiXTogVkVSU0lPTi5UVVJCT19WRVJTSU9OLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBSRVFVSVJFRCBPUFRJT05TXG4gICAgICpcbiAgICAgKiBUaGVzZSBvcHRpb25zIGNhbm5vdCBiZSBjaGFuZ2VkIGJ5IHRoZSB1c2VyLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgcmVxdWlyZWRPcHRpb25zOiBPbWl0PFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucywgXCJuYW1lXCI+ID0ge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UgaXQncyBzdGFuZGFyZCBwcmFjdGljZSBhbmQgYWxzbyB0byBzaW1wbGlmeVxuICAgICAgICogc29tZSB3b3JrZmxvdyBkZXNpZ24uXG4gICAgICAgKi9cbiAgICAgIGRlZmF1bHRSZWxlYXNlQnJhbmNoOiBcIm1haW5cIixcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2UgUE5QTSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IChZYXJuKS4gTXVjaCBvZiB0aGUgZWNvc3lzdGVtIGRlcGVuZHNcbiAgICAgICAqIG9uIFBOUE0gYW5kIG1ha2luZyBtb25vcmVwb3MgUE5QTSBvbmx5IHNpbXBsaWZpZXMgbWFueSBjb25maWd1cmF0aW9ucy5cbiAgICAgICAqL1xuICAgICAgcGFja2FnZU1hbmFnZXI6IE5vZGVQYWNrYWdlTWFuYWdlci5QTlBNLFxuXG4gICAgICAvKipcbiAgICAgICAqIFNvbWUgYWRkaXRpb25hbCBwcmUtYnVpbGQgc3RlcHMgaWYgd2UncmUgdXNpbmcgdHVyYm8ncyByZW1vdGUgY2FjaGUuXG4gICAgICAgKi9cbiAgICAgIGJ1aWxkV29ya2Zsb3dPcHRpb25zOiB7XG4gICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgLi4uYnVpbGRXb3JrZmxvd09wdGlvbnM/LnBlcm1pc3Npb25zLFxuICAgICAgICAgIC4uLnVzZXJPcHRpb25zLmJ1aWxkV29ya2Zsb3dPcHRpb25zPy5wZXJtaXNzaW9ucyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJlQnVpbGRTdGVwczogW1xuICAgICAgICAgIC4uLihidWlsZFdvcmtmbG93T3B0aW9ucz8ucHJlQnVpbGRTdGVwcyA/PyBbXSksXG4gICAgICAgICAgLi4uKHVzZXJPcHRpb25zLmJ1aWxkV29ya2Zsb3dPcHRpb25zPy5wcmVCdWlsZFN0ZXBzID8/IFtdKSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIENPTlNUUlVDVE9SXG4gICAgICpcbiAgICAgKiBDb21iaW5lcyBkZWZhdWx0IG9wdGlvbnMgd2l0aCB1c2VyIHByb3ZpZGVkIG9wdGlvbnMgYW5kIHJlcXVpcmVkIG9wdGlvbnMuXG4gICAgICogU3RvcmUgdGhlIG9wdGlvbnMgaW4gYSBjb25zdCBzbyB3ZSBjYW4gdXNlIHRoZW0gYWZ0ZXIgc3VwZXIoKSwgZmFydGhlclxuICAgICAqIGludG8gdGhlIGNvbnN0cnVjdG9yIGZvciBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBjb25zdCBvcHRpb25zOiBBcHBsaWVkT3B0aW9ucyA9IG1lcmdlKFxuICAgICAgZGVmYXVsdE9wdGlvbnMsXG4gICAgICB1c2VyT3B0aW9ucyxcbiAgICAgIHJlcXVpcmVkT3B0aW9ucyxcbiAgICApO1xuXG4gICAgc3VwZXIoeyAuLi5vcHRpb25zIH0pO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogUFVCTElDIFBST1BTXG4gICAgICpcbiAgICAgKiBTb21lIHByb3BzIGFyZSBoaWRkZW4gYnkgUHJvamVuIGFuZCB3ZSBuZWVkIHRvIGV4cG9zZSB0aGVtIGZvciB0aGVcbiAgICAgKiBtb25vcmVwbyB0byB3b3JrIHByb3Blcmx5LiBUaGlzIGlzIHdoZXJlIHdlIHN0b3JlIHRoZW0uXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICB0aGlzLnBucG1WZXJzaW9uID0gb3B0aW9ucy5wbnBtVmVyc2lvbiE7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBDVVNUT00gQ09ORklHU1xuICAgICAqXG4gICAgICogV2UgYWRkIHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9ucyB0byB0aGUgbW9ub3JlcG8gcm9vdCBwcm9qZWN0IGJlbG93XG4gICAgICogc3VjaCBhcyBUdXJib3JlcG8sIFZTIENvZGUgY29uZmlnLCBhbmQgdGhlIFBOUE0gd29ya3NwYWNlIGZpbGUuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICAvKipcbiAgICAgKiBBZGQgVlNDb2RlIGNvbmZpZ3VyYXRpb25cbiAgICAgKi9cbiAgICBuZXcgVlNDb2RlQ29uZmlnKHRoaXMpO1xuXG4gICAgLyoqXG4gICAgICogQWRkIHdvcmtzcGFjZSBkZWZpbml0aW9uIHRvIFBOUE0gcm9vdFxuICAgICAqL1xuICAgIG5ldyBQbnBtV29ya3NwYWNlKHRoaXMsIG9wdGlvbnMucG5wbU9wdGlvbnM/LnBucG1Xb3Jrc3BhY2VPcHRpb25zKTtcblxuICAgIC8qKlxuICAgICAqIFR1cm4gb24gdHVyYm9yZXBvIHN1cHBvcnQgaWYgcmVxdWVzdGVkLlxuICAgICAqL1xuICAgIGlmIChvcHRpb25zLnR1cmJvKSB7XG4gICAgICBuZXcgVHVyYm9SZXBvKHRoaXMsIG9wdGlvbnMudHVyYm9PcHRpb25zKTtcblxuICAgICAgdGhpcy5idWlsZFdvcmtmbG93Py5hZGRQb3N0QnVpbGRTdGVwcyh7XG4gICAgICAgIG5hbWU6IFwiQnVpbGQgU3ViIFByb2plY3RzXCIsXG4gICAgICAgIHJ1bjogYG5weCBwcm9qZW4gJHtST09UX0NJX1RBU0tfTkFNRX1gLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3BlY2lmeSBwYWNrYWdlIG1hbmFnZXJcbiAgICAgKi9cbiAgICAvLyBjb25zdCBwbnBtVmVyc2lvbiA9IG9wdGlvbnMucG5wbVZlcnNpb24gPz8gVkVSU0lPTi5QTlBNX1ZFUlNJT047XG4gICAgdGhpcy5wYWNrYWdlLmZpbGUuYWRkT3ZlcnJpZGUoXG4gICAgICBcInBhY2thZ2VNYW5hZ2VyXCIsXG4gICAgICBgcG5wbUAke29wdGlvbnMucG5wbVZlcnNpb259YCxcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogQWRkIHNvbWUgc2lsbHkgdGhpbmdzIHRvIHRoZSBnaXRpZ25vcmUuXG4gICAgICovXG4gICAgdGhpcy5naXRpZ25vcmU/LmFkZFBhdHRlcm5zKFwiLkRTX1N0b3JlXCIpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TypeScriptProject = void 0;
|
|
4
|
+
const projen_1 = require("projen");
|
|
5
|
+
const javascript_1 = require("projen/lib/javascript");
|
|
6
|
+
const release_1 = require("projen/lib/release");
|
|
7
|
+
const ts_deepmerge_1 = require("ts-deepmerge");
|
|
8
|
+
const monorepo_project_1 = require("./monorepo-project");
|
|
9
|
+
const pnpm_1 = require("../pnpm");
|
|
10
|
+
const turbo_1 = require("../turbo");
|
|
11
|
+
const versions_1 = require("../versions");
|
|
12
|
+
class TypeScriptProject extends projen_1.typescript.TypeScriptProject {
|
|
13
|
+
constructor(userOptions) {
|
|
14
|
+
/**
|
|
15
|
+
* Default PNPM version to use. This will either come from the MonoRepo
|
|
16
|
+
* root or from the default specified in configulator. If the user passes
|
|
17
|
+
* in a different pnpmVersion it will also override this.
|
|
18
|
+
*/
|
|
19
|
+
const pnpmVersion = userOptions.parent && userOptions.parent instanceof monorepo_project_1.MonorepoProject
|
|
20
|
+
? userOptions.parent.pnpmVersion
|
|
21
|
+
: versions_1.VERSION.PNPM_VERSION;
|
|
22
|
+
/**
|
|
23
|
+
* Get the pnpm workspace from the parent project.
|
|
24
|
+
*/
|
|
25
|
+
const pnpmWorkspace = userOptions.parent && userOptions.parent instanceof monorepo_project_1.MonorepoProject
|
|
26
|
+
? pnpm_1.PnpmWorkspace.of(userOptions.parent)
|
|
27
|
+
: undefined;
|
|
28
|
+
/*************************************************************************
|
|
29
|
+
*
|
|
30
|
+
* Default Options
|
|
31
|
+
*
|
|
32
|
+
************************************************************************/
|
|
33
|
+
const defaultOptions = {
|
|
34
|
+
/**
|
|
35
|
+
* This is a standard, so don't require it to passed in everywhere.
|
|
36
|
+
*/
|
|
37
|
+
defaultReleaseBranch: "main",
|
|
38
|
+
/**
|
|
39
|
+
* Packaging options
|
|
40
|
+
*/
|
|
41
|
+
packageManager: javascript_1.NodePackageManager.PNPM,
|
|
42
|
+
pnpmVersion: pnpmVersion,
|
|
43
|
+
licensed: userOptions.license !== undefined || false,
|
|
44
|
+
copyrightOwner: "CodeDrifters",
|
|
45
|
+
release: false,
|
|
46
|
+
/**
|
|
47
|
+
* Don't add sample code.
|
|
48
|
+
*/
|
|
49
|
+
sampleCode: false,
|
|
50
|
+
/**
|
|
51
|
+
* Make sure jest config is stored outside of package.json
|
|
52
|
+
*/
|
|
53
|
+
jestOptions: {
|
|
54
|
+
configFilePath: "jest.config.json",
|
|
55
|
+
jestConfig: {
|
|
56
|
+
roots: [`<rootDir>/src`],
|
|
57
|
+
transform: {
|
|
58
|
+
["^.+\\.[t]sx?$"]: new javascript_1.Transform("@swc/jest"),
|
|
59
|
+
},
|
|
60
|
+
moduleFileExtensions: ["js", "ts"],
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
/**
|
|
64
|
+
* Turn on prettier formatting
|
|
65
|
+
*/
|
|
66
|
+
prettier: true,
|
|
67
|
+
/**
|
|
68
|
+
* SWC for faster testing
|
|
69
|
+
*/
|
|
70
|
+
devDeps: ["@swc/jest", "@swc/core"],
|
|
71
|
+
/**
|
|
72
|
+
* Don't package test files.
|
|
73
|
+
*/
|
|
74
|
+
npmIgnoreOptions: {
|
|
75
|
+
ignorePatterns: ["*.spec.*", "*.test.*"],
|
|
76
|
+
},
|
|
77
|
+
/**
|
|
78
|
+
* Options for the automated dependency upgrade task / workflow
|
|
79
|
+
* Automatically exclude any packages that are managed by the root
|
|
80
|
+
* project as default catalog dependencies since we want to let the
|
|
81
|
+
* catalog manage those dependencies.
|
|
82
|
+
*/
|
|
83
|
+
depsUpgradeOptions: {
|
|
84
|
+
exclude: Object.keys(pnpmWorkspace?.defaultCatalog || {}),
|
|
85
|
+
...(userOptions.parent && userOptions.parent instanceof monorepo_project_1.MonorepoProject
|
|
86
|
+
? {
|
|
87
|
+
workflowOptions: {
|
|
88
|
+
schedule: javascript_1.UpgradeDependenciesSchedule.WEEKLY,
|
|
89
|
+
},
|
|
90
|
+
cooldown: 1,
|
|
91
|
+
}
|
|
92
|
+
: {}),
|
|
93
|
+
},
|
|
94
|
+
/**
|
|
95
|
+
* Only release when the package folder content changes
|
|
96
|
+
*/
|
|
97
|
+
releaseTrigger: release_1.ReleaseTrigger.continuous({
|
|
98
|
+
paths: [`${userOptions.outdir}/**`],
|
|
99
|
+
}),
|
|
100
|
+
};
|
|
101
|
+
/*************************************************************************
|
|
102
|
+
*
|
|
103
|
+
* Merge defaults into user options
|
|
104
|
+
*
|
|
105
|
+
************************************************************************/
|
|
106
|
+
const options = (0, ts_deepmerge_1.merge)(defaultOptions, userOptions);
|
|
107
|
+
super(options);
|
|
108
|
+
/**
|
|
109
|
+
* Remove jest since we've swapped in @swc/jest instead of ts-jest.
|
|
110
|
+
*/
|
|
111
|
+
this.deps.removeDependency("ts-jest");
|
|
112
|
+
/**
|
|
113
|
+
* Specify package manager
|
|
114
|
+
*/
|
|
115
|
+
this.package.file.addOverride("packageManager", `pnpm@${options.pnpmVersion}`);
|
|
116
|
+
/**
|
|
117
|
+
*
|
|
118
|
+
* Disable this rule for all test files.
|
|
119
|
+
*
|
|
120
|
+
* Unless we turn this off, ESLint will suggest that anything found in a test
|
|
121
|
+
* needs to be a dep instead of a devDep. Projen actually already turns off
|
|
122
|
+
* the rule for files in the tests/* folder but since we commonly put tests
|
|
123
|
+
* next to the code it's testing, we need to do this ourselves.
|
|
124
|
+
*
|
|
125
|
+
*/
|
|
126
|
+
this.eslint?.addOverride({
|
|
127
|
+
files: ["**/*.test.*", "**/*.spec.*"],
|
|
128
|
+
rules: {
|
|
129
|
+
"import/no-extraneous-dependencies": "off",
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
/**
|
|
133
|
+
* Some standard ignores for all projects.
|
|
134
|
+
*/
|
|
135
|
+
this.gitignore?.addPatterns(".DS_Store");
|
|
136
|
+
this.npmignore?.addPatterns("*.spec.*", "*.test.*", "__fixtures__");
|
|
137
|
+
/**
|
|
138
|
+
* If turbo is active in the parent project, configure it here.
|
|
139
|
+
*/
|
|
140
|
+
const turboActive = userOptions.parent && turbo_1.TurboRepo.of(userOptions.parent) !== undefined;
|
|
141
|
+
if (turboActive) {
|
|
142
|
+
const turbo = new turbo_1.TurboRepo(this);
|
|
143
|
+
turbo.compileTask?.outputs.push("dist/**");
|
|
144
|
+
turbo.compileTask?.outputs.push("lib/**");
|
|
145
|
+
//turbo.testTask?.inputs.push("src/**");
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.TypeScriptProject = TypeScriptProject;
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb2plY3RzL3R5cGVzY3JpcHQtcHJvamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBb0M7QUFDcEMsc0RBSStCO0FBQy9CLGdEQUFvRDtBQUVwRCwrQ0FBcUM7QUFDckMseURBQXFEO0FBQ3JELGtDQUF3QztBQUN4QyxvQ0FBcUM7QUFDckMsMENBQXNDO0FBRXRDLE1BQWEsaUJBQWtCLFNBQVEsbUJBQVUsQ0FBQyxpQkFBaUI7SUFDakUsWUFDRSxXQUdDO1FBRUQ7Ozs7V0FJRztRQUNILE1BQU0sV0FBVyxHQUNmLFdBQVcsQ0FBQyxNQUFNLElBQUksV0FBVyxDQUFDLE1BQU0sWUFBWSxrQ0FBZTtZQUNqRSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXO1lBQ2hDLENBQUMsQ0FBQyxrQkFBTyxDQUFDLFlBQVksQ0FBQztRQUUzQjs7V0FFRztRQUNILE1BQU0sYUFBYSxHQUNqQixXQUFXLENBQUMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLFlBQVksa0NBQWU7WUFDakUsQ0FBQyxDQUFDLG9CQUFhLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUF5QixDQUFDO1lBQ3pELENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFaEI7Ozs7a0ZBSTBFO1FBRTFFLE1BQU0sY0FBYyxHQUEyQztZQUM3RDs7ZUFFRztZQUNILG9CQUFvQixFQUFFLE1BQU07WUFFNUI7O2VBRUc7WUFDSCxjQUFjLEVBQUUsK0JBQWtCLENBQUMsSUFBSTtZQUN2QyxXQUFXLEVBQUUsV0FBVztZQUN4QixRQUFRLEVBQUUsV0FBVyxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksS0FBSztZQUNwRCxjQUFjLEVBQUUsY0FBYztZQUM5QixPQUFPLEVBQUUsS0FBSztZQUVkOztlQUVHO1lBQ0gsVUFBVSxFQUFFLEtBQUs7WUFFakI7O2VBRUc7WUFDSCxXQUFXLEVBQUU7Z0JBQ1gsY0FBYyxFQUFFLGtCQUFrQjtnQkFDbEMsVUFBVSxFQUFFO29CQUNWLEtBQUssRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDeEIsU0FBUyxFQUFFO3dCQUNULENBQUMsZUFBZSxDQUFDLEVBQUUsSUFBSSxzQkFBUyxDQUFDLFdBQVcsQ0FBQztxQkFDOUM7b0JBQ0Qsb0JBQW9CLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO2lCQUNuQzthQUNGO1lBRUQ7O2VBRUc7WUFDSCxRQUFRLEVBQUUsSUFBSTtZQUVkOztlQUVHO1lBQ0gsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztZQUVuQzs7ZUFFRztZQUNILGdCQUFnQixFQUFFO2dCQUNoQixjQUFjLEVBQUUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDO2FBQ3pDO1lBRUQ7Ozs7O2VBS0c7WUFDSCxrQkFBa0IsRUFBRTtnQkFDbEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLGNBQWMsSUFBSSxFQUFFLENBQUM7Z0JBQ3pELEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLFlBQVksa0NBQWU7b0JBQ3JFLENBQUMsQ0FBQzt3QkFDRSxlQUFlLEVBQUU7NEJBQ2YsUUFBUSxFQUFFLHdDQUEyQixDQUFDLE1BQU07eUJBQzdDO3dCQUNELFFBQVEsRUFBRSxDQUFDO3FCQUNaO29CQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDUjtZQUVEOztlQUVHO1lBQ0gsY0FBYyxFQUFFLHdCQUFjLENBQUMsVUFBVSxDQUFDO2dCQUN4QyxLQUFLLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQzthQUNwQyxDQUFDO1NBQ0gsQ0FBQztRQUVGOzs7O2tGQUkwRTtRQUUxRSxNQUFNLE9BQU8sR0FBNkIsSUFBQSxvQkFBSyxFQUM3QyxjQUFjLEVBQ2QsV0FBVyxDQUNaLENBQUM7UUFFRixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZjs7V0FFRztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdEM7O1dBRUc7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQzNCLGdCQUFnQixFQUNoQixRQUFRLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FDOUIsQ0FBQztRQUVGOzs7Ozs7Ozs7V0FTRztRQUNILElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO1lBQ3ZCLEtBQUssRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUM7WUFDckMsS0FBSyxFQUFFO2dCQUNMLG1DQUFtQyxFQUFFLEtBQUs7YUFDM0M7U0FDRixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFcEU7O1dBRUc7UUFDSCxNQUFNLFdBQVcsR0FDZixXQUFXLENBQUMsTUFBTSxJQUFJLGlCQUFTLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxTQUFTLENBQUM7UUFDdkUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixNQUFNLEtBQUssR0FBRyxJQUFJLGlCQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsS0FBSyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNDLEtBQUssQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQyx3Q0FBd0M7UUFDMUMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXpLRCw4Q0F5S0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlc2NyaXB0IH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHtcbiAgTm9kZVBhY2thZ2VNYW5hZ2VyLFxuICBUcmFuc2Zvcm0sXG4gIFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZSxcbn0gZnJvbSBcInByb2plbi9saWIvamF2YXNjcmlwdFwiO1xuaW1wb3J0IHsgUmVsZWFzZVRyaWdnZXIgfSBmcm9tIFwicHJvamVuL2xpYi9yZWxlYXNlXCI7XG5pbXBvcnQgeyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgfSBmcm9tIFwicHJvamVuL2xpYi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gXCJ0cy1kZWVwbWVyZ2VcIjtcbmltcG9ydCB7IE1vbm9yZXBvUHJvamVjdCB9IGZyb20gXCIuL21vbm9yZXBvLXByb2plY3RcIjtcbmltcG9ydCB7IFBucG1Xb3Jrc3BhY2UgfSBmcm9tIFwiLi4vcG5wbVwiO1xuaW1wb3J0IHsgVHVyYm9SZXBvIH0gZnJvbSBcIi4uL3R1cmJvXCI7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSBcIi4uL3ZlcnNpb25zXCI7XG5cbmV4cG9ydCBjbGFzcyBUeXBlU2NyaXB0UHJvamVjdCBleHRlbmRzIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICB1c2VyT3B0aW9uczogT21pdDxcbiAgICAgIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3RPcHRpb25zLFxuICAgICAgXCJkZWZhdWx0UmVsZWFzZUJyYW5jaFwiXG4gICAgPixcbiAgKSB7XG4gICAgLyoqXG4gICAgICogRGVmYXVsdCBQTlBNIHZlcnNpb24gdG8gdXNlLiBUaGlzIHdpbGwgZWl0aGVyIGNvbWUgZnJvbSB0aGUgTW9ub1JlcG9cbiAgICAgKiByb290IG9yIGZyb20gdGhlIGRlZmF1bHQgc3BlY2lmaWVkIGluIGNvbmZpZ3VsYXRvci4gSWYgdGhlIHVzZXIgcGFzc2VzXG4gICAgICogaW4gYSBkaWZmZXJlbnQgcG5wbVZlcnNpb24gaXQgd2lsbCBhbHNvIG92ZXJyaWRlIHRoaXMuXG4gICAgICovXG4gICAgY29uc3QgcG5wbVZlcnNpb24gPVxuICAgICAgdXNlck9wdGlvbnMucGFyZW50ICYmIHVzZXJPcHRpb25zLnBhcmVudCBpbnN0YW5jZW9mIE1vbm9yZXBvUHJvamVjdFxuICAgICAgICA/IHVzZXJPcHRpb25zLnBhcmVudC5wbnBtVmVyc2lvblxuICAgICAgICA6IFZFUlNJT04uUE5QTV9WRVJTSU9OO1xuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwbnBtIHdvcmtzcGFjZSBmcm9tIHRoZSBwYXJlbnQgcHJvamVjdC5cbiAgICAgKi9cbiAgICBjb25zdCBwbnBtV29ya3NwYWNlID1cbiAgICAgIHVzZXJPcHRpb25zLnBhcmVudCAmJiB1c2VyT3B0aW9ucy5wYXJlbnQgaW5zdGFuY2VvZiBNb25vcmVwb1Byb2plY3RcbiAgICAgICAgPyBQbnBtV29ya3NwYWNlLm9mKHVzZXJPcHRpb25zLnBhcmVudCBhcyBNb25vcmVwb1Byb2plY3QpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIERlZmF1bHQgT3B0aW9uc1xuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBPbWl0PFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucywgXCJuYW1lXCI+ID0ge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGlzIGlzIGEgc3RhbmRhcmQsIHNvIGRvbid0IHJlcXVpcmUgaXQgdG8gcGFzc2VkIGluIGV2ZXJ5d2hlcmUuXG4gICAgICAgKi9cbiAgICAgIGRlZmF1bHRSZWxlYXNlQnJhbmNoOiBcIm1haW5cIixcblxuICAgICAgLyoqXG4gICAgICAgKiBQYWNrYWdpbmcgb3B0aW9uc1xuICAgICAgICovXG4gICAgICBwYWNrYWdlTWFuYWdlcjogTm9kZVBhY2thZ2VNYW5hZ2VyLlBOUE0sXG4gICAgICBwbnBtVmVyc2lvbjogcG5wbVZlcnNpb24sXG4gICAgICBsaWNlbnNlZDogdXNlck9wdGlvbnMubGljZW5zZSAhPT0gdW5kZWZpbmVkIHx8IGZhbHNlLFxuICAgICAgY29weXJpZ2h0T3duZXI6IFwiQ29kZURyaWZ0ZXJzXCIsXG4gICAgICByZWxlYXNlOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEb24ndCBhZGQgc2FtcGxlIGNvZGUuXG4gICAgICAgKi9cbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIE1ha2Ugc3VyZSBqZXN0IGNvbmZpZyBpcyBzdG9yZWQgb3V0c2lkZSBvZiBwYWNrYWdlLmpzb25cbiAgICAgICAqL1xuICAgICAgamVzdE9wdGlvbnM6IHtcbiAgICAgICAgY29uZmlnRmlsZVBhdGg6IFwiamVzdC5jb25maWcuanNvblwiLFxuICAgICAgICBqZXN0Q29uZmlnOiB7XG4gICAgICAgICAgcm9vdHM6IFtgPHJvb3REaXI+L3NyY2BdLFxuICAgICAgICAgIHRyYW5zZm9ybToge1xuICAgICAgICAgICAgW1wiXi4rXFxcXC5bdF1zeD8kXCJdOiBuZXcgVHJhbnNmb3JtKFwiQHN3Yy9qZXN0XCIpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbW9kdWxlRmlsZUV4dGVuc2lvbnM6IFtcImpzXCIsIFwidHNcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIFR1cm4gb24gcHJldHRpZXIgZm9ybWF0dGluZ1xuICAgICAgICovXG4gICAgICBwcmV0dGllcjogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBTV0MgZm9yIGZhc3RlciB0ZXN0aW5nXG4gICAgICAgKi9cbiAgICAgIGRldkRlcHM6IFtcIkBzd2MvamVzdFwiLCBcIkBzd2MvY29yZVwiXSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEb24ndCBwYWNrYWdlIHRlc3QgZmlsZXMuXG4gICAgICAgKi9cbiAgICAgIG5wbUlnbm9yZU9wdGlvbnM6IHtcbiAgICAgICAgaWdub3JlUGF0dGVybnM6IFtcIiouc3BlYy4qXCIsIFwiKi50ZXN0LipcIl0sXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIE9wdGlvbnMgZm9yIHRoZSBhdXRvbWF0ZWQgZGVwZW5kZW5jeSB1cGdyYWRlIHRhc2sgLyB3b3JrZmxvd1xuICAgICAgICogQXV0b21hdGljYWxseSBleGNsdWRlIGFueSBwYWNrYWdlcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5IHRoZSByb290XG4gICAgICAgKiBwcm9qZWN0IGFzIGRlZmF1bHQgY2F0YWxvZyBkZXBlbmRlbmNpZXMgc2luY2Ugd2Ugd2FudCB0byBsZXQgdGhlXG4gICAgICAgKiBjYXRhbG9nIG1hbmFnZSB0aG9zZSBkZXBlbmRlbmNpZXMuXG4gICAgICAgKi9cbiAgICAgIGRlcHNVcGdyYWRlT3B0aW9uczoge1xuICAgICAgICBleGNsdWRlOiBPYmplY3Qua2V5cyhwbnBtV29ya3NwYWNlPy5kZWZhdWx0Q2F0YWxvZyB8fCB7fSksXG4gICAgICAgIC4uLih1c2VyT3B0aW9ucy5wYXJlbnQgJiYgdXNlck9wdGlvbnMucGFyZW50IGluc3RhbmNlb2YgTW9ub3JlcG9Qcm9qZWN0XG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIHdvcmtmbG93T3B0aW9uczoge1xuICAgICAgICAgICAgICAgIHNjaGVkdWxlOiBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUuV0VFS0xZLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjb29sZG93bjogMSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogT25seSByZWxlYXNlIHdoZW4gdGhlIHBhY2thZ2UgZm9sZGVyIGNvbnRlbnQgY2hhbmdlc1xuICAgICAgICovXG4gICAgICByZWxlYXNlVHJpZ2dlcjogUmVsZWFzZVRyaWdnZXIuY29udGludW91cyh7XG4gICAgICAgIHBhdGhzOiBbYCR7dXNlck9wdGlvbnMub3V0ZGlyfS8qKmBdLFxuICAgICAgfSksXG4gICAgfTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBNZXJnZSBkZWZhdWx0cyBpbnRvIHVzZXIgb3B0aW9uc1xuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IG9wdGlvbnM6IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyA9IG1lcmdlKFxuICAgICAgZGVmYXVsdE9wdGlvbnMsXG4gICAgICB1c2VyT3B0aW9ucyxcbiAgICApO1xuXG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgamVzdCBzaW5jZSB3ZSd2ZSBzd2FwcGVkIGluIEBzd2MvamVzdCBpbnN0ZWFkIG9mIHRzLWplc3QuXG4gICAgICovXG4gICAgdGhpcy5kZXBzLnJlbW92ZURlcGVuZGVuY3koXCJ0cy1qZXN0XCIpO1xuXG4gICAgLyoqXG4gICAgICogU3BlY2lmeSBwYWNrYWdlIG1hbmFnZXJcbiAgICAgKi9cbiAgICB0aGlzLnBhY2thZ2UuZmlsZS5hZGRPdmVycmlkZShcbiAgICAgIFwicGFja2FnZU1hbmFnZXJcIixcbiAgICAgIGBwbnBtQCR7b3B0aW9ucy5wbnBtVmVyc2lvbn1gLFxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIERpc2FibGUgdGhpcyBydWxlIGZvciBhbGwgdGVzdCBmaWxlcy5cbiAgICAgKlxuICAgICAqIFVubGVzcyB3ZSB0dXJuIHRoaXMgb2ZmLCBFU0xpbnQgd2lsbCBzdWdnZXN0IHRoYXQgYW55dGhpbmcgZm91bmQgaW4gYSB0ZXN0XG4gICAgICogbmVlZHMgdG8gYmUgYSBkZXAgaW5zdGVhZCBvZiBhIGRldkRlcC4gUHJvamVuIGFjdHVhbGx5IGFscmVhZHkgdHVybnMgb2ZmXG4gICAgICogdGhlIHJ1bGUgZm9yIGZpbGVzIGluIHRoZSB0ZXN0cy8qIGZvbGRlciBidXQgc2luY2Ugd2UgY29tbW9ubHkgcHV0IHRlc3RzXG4gICAgICogbmV4dCB0byB0aGUgY29kZSBpdCdzIHRlc3RpbmcsIHdlIG5lZWQgdG8gZG8gdGhpcyBvdXJzZWx2ZXMuXG4gICAgICpcbiAgICAgKi9cbiAgICB0aGlzLmVzbGludD8uYWRkT3ZlcnJpZGUoe1xuICAgICAgZmlsZXM6IFtcIioqLyoudGVzdC4qXCIsIFwiKiovKi5zcGVjLipcIl0sXG4gICAgICBydWxlczoge1xuICAgICAgICBcImltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1wiOiBcIm9mZlwiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFNvbWUgc3RhbmRhcmQgaWdub3JlcyBmb3IgYWxsIHByb2plY3RzLlxuICAgICAqL1xuICAgIHRoaXMuZ2l0aWdub3JlPy5hZGRQYXR0ZXJucyhcIi5EU19TdG9yZVwiKTtcbiAgICB0aGlzLm5wbWlnbm9yZT8uYWRkUGF0dGVybnMoXCIqLnNwZWMuKlwiLCBcIioudGVzdC4qXCIsIFwiX19maXh0dXJlc19fXCIpO1xuXG4gICAgLyoqXG4gICAgICogSWYgdHVyYm8gaXMgYWN0aXZlIGluIHRoZSBwYXJlbnQgcHJvamVjdCwgY29uZmlndXJlIGl0IGhlcmUuXG4gICAgICovXG4gICAgY29uc3QgdHVyYm9BY3RpdmUgPVxuICAgICAgdXNlck9wdGlvbnMucGFyZW50ICYmIFR1cmJvUmVwby5vZih1c2VyT3B0aW9ucy5wYXJlbnQpICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKHR1cmJvQWN0aXZlKSB7XG4gICAgICBjb25zdCB0dXJibyA9IG5ldyBUdXJib1JlcG8odGhpcyk7XG4gICAgICB0dXJiby5jb21waWxlVGFzaz8ub3V0cHV0cy5wdXNoKFwiZGlzdC8qKlwiKTtcbiAgICAgIHR1cmJvLmNvbXBpbGVUYXNrPy5vdXRwdXRzLnB1c2goXCJsaWIvKipcIik7XG4gICAgICAvL3R1cmJvLnRlc3RUYXNrPy5pbnB1dHMucHVzaChcInNyYy8qKlwiKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { Component, Project } from "projen/lib";
|
|
1
|
+
import { Component, Project, Task } from "projen/lib";
|
|
2
|
+
import { BuildWorkflowOptions } from "projen/lib/build";
|
|
3
|
+
import { NodeProject } from "projen/lib/javascript";
|
|
2
4
|
import { TurboRepoTask } from "./turbo-repo-task";
|
|
3
5
|
/*******************************************************************************
|
|
4
6
|
*
|
|
@@ -7,11 +9,33 @@ import { TurboRepoTask } from "./turbo-repo-task";
|
|
|
7
9
|
******************************************************************************/
|
|
8
10
|
export declare const ROOT_TURBO_TASK_NAME = "turbo:build";
|
|
9
11
|
export declare const ROOT_CI_TASK_NAME = "build:all";
|
|
12
|
+
export interface RemoteCacheOptions {
|
|
13
|
+
/**
|
|
14
|
+
* Local profile name to use when fetching the cache endpoint and token.
|
|
15
|
+
*/
|
|
16
|
+
readonly profileName: string;
|
|
17
|
+
/**
|
|
18
|
+
* OIDC role to assume when fetching the cache endpoint and token.
|
|
19
|
+
*/
|
|
20
|
+
readonly oidcRole: string;
|
|
21
|
+
/**
|
|
22
|
+
* Name for the params used to store the cache endpoint.
|
|
23
|
+
*/
|
|
24
|
+
readonly endpointParamName: string;
|
|
25
|
+
/**
|
|
26
|
+
* Name for the params used to store the cache's API token.
|
|
27
|
+
*/
|
|
28
|
+
readonly tokenParamName: string;
|
|
29
|
+
/**
|
|
30
|
+
* team name used in remote cache commands
|
|
31
|
+
*/
|
|
32
|
+
readonly teamName: string;
|
|
33
|
+
}
|
|
10
34
|
export interface TurboRepoOptions {
|
|
11
35
|
/**
|
|
12
36
|
* Version of turborepo to use.
|
|
13
37
|
*
|
|
14
|
-
* @default:
|
|
38
|
+
* @default: specified in versions file
|
|
15
39
|
*/
|
|
16
40
|
readonly turboVersion?: string;
|
|
17
41
|
/**
|
|
@@ -119,9 +143,65 @@ export interface TurboRepoOptions {
|
|
|
119
143
|
* https://turbo.build/repo/docs/reference/configuration#envmode
|
|
120
144
|
*/
|
|
121
145
|
readonly envMode?: string;
|
|
146
|
+
/*****************************************************************************
|
|
147
|
+
*
|
|
148
|
+
* Cache Settings
|
|
149
|
+
*
|
|
150
|
+
****************************************************************************/
|
|
151
|
+
/**
|
|
152
|
+
* Cache settings, if using remote cache.
|
|
153
|
+
*/
|
|
154
|
+
readonly remoteCacheOptions?: RemoteCacheOptions;
|
|
155
|
+
/**
|
|
156
|
+
* Env Args that will bre added to turbo's build:all task
|
|
157
|
+
*
|
|
158
|
+
* @default: {}
|
|
159
|
+
*/
|
|
160
|
+
readonly buildAllTaskEnvVars?: Record<string, string>;
|
|
161
|
+
/*****************************************************************************
|
|
162
|
+
*
|
|
163
|
+
* Tasks - Optionally define a different projen task for one of the lifecycle
|
|
164
|
+
* steps.
|
|
165
|
+
*
|
|
166
|
+
****************************************************************************/
|
|
167
|
+
/**
|
|
168
|
+
* Pre compile task
|
|
169
|
+
*
|
|
170
|
+
* @default: "pre-compile"
|
|
171
|
+
*/
|
|
172
|
+
readonly preCompileTask?: Task;
|
|
173
|
+
/**
|
|
174
|
+
* Compile task
|
|
175
|
+
*
|
|
176
|
+
* @default: "compile"
|
|
177
|
+
*/
|
|
178
|
+
readonly compileTask?: Task;
|
|
179
|
+
/**
|
|
180
|
+
* Post compile task
|
|
181
|
+
*
|
|
182
|
+
* @default: "post-compile"
|
|
183
|
+
*/
|
|
184
|
+
readonly postCompileTask?: Task;
|
|
185
|
+
/**
|
|
186
|
+
* Test task
|
|
187
|
+
*
|
|
188
|
+
* @default: "test"
|
|
189
|
+
*/
|
|
190
|
+
readonly testTask?: Task;
|
|
191
|
+
/**
|
|
192
|
+
* Package task
|
|
193
|
+
*
|
|
194
|
+
* @default: "package"
|
|
195
|
+
*/
|
|
196
|
+
readonly packageTask?: Task;
|
|
122
197
|
}
|
|
123
198
|
export declare class TurboRepo extends Component {
|
|
124
|
-
readonly project:
|
|
199
|
+
readonly project: NodeProject;
|
|
200
|
+
/**
|
|
201
|
+
* Static method to discovert turbo in a project.
|
|
202
|
+
*/
|
|
203
|
+
static of(project: Project): TurboRepo | undefined;
|
|
204
|
+
static buildWorkflowOptions: (remoteCacheOptions: RemoteCacheOptions) => Partial<BuildWorkflowOptions>;
|
|
125
205
|
/**
|
|
126
206
|
* Version of turborepo to use.
|
|
127
207
|
*/
|
|
@@ -231,38 +311,65 @@ export declare class TurboRepo extends Component {
|
|
|
231
311
|
* https://turbo.build/repo/docs/reference/configuration#envmode
|
|
232
312
|
*/
|
|
233
313
|
readonly envMode: string;
|
|
314
|
+
/*****************************************************************************
|
|
315
|
+
*
|
|
316
|
+
* Cache Settings
|
|
317
|
+
*
|
|
318
|
+
****************************************************************************/
|
|
319
|
+
/**
|
|
320
|
+
* Cache settings, if using remote cache.
|
|
321
|
+
*/
|
|
322
|
+
readonly remoteCacheOptions?: RemoteCacheOptions;
|
|
234
323
|
/**
|
|
235
324
|
* is this the root project?
|
|
236
325
|
*/
|
|
237
326
|
readonly isRootProject: boolean;
|
|
327
|
+
/**
|
|
328
|
+
* Turbo's build:all task at the root of the monorepo.
|
|
329
|
+
*
|
|
330
|
+
* This is a normal projen task that runs the root turbo task.
|
|
331
|
+
*/
|
|
332
|
+
readonly buildAllTask?: Task;
|
|
238
333
|
/**
|
|
239
334
|
* Main turbo:build task
|
|
335
|
+
*
|
|
336
|
+
* This is a special Turbo task
|
|
240
337
|
*/
|
|
241
338
|
readonly buildTask: TurboRepoTask;
|
|
242
339
|
/**
|
|
243
|
-
*
|
|
340
|
+
* pre compile task
|
|
244
341
|
*/
|
|
245
342
|
readonly preCompileTask?: TurboRepoTask;
|
|
246
343
|
/**
|
|
247
|
-
*
|
|
344
|
+
* compile task
|
|
248
345
|
*/
|
|
249
346
|
readonly compileTask?: TurboRepoTask;
|
|
250
347
|
/**
|
|
251
|
-
*
|
|
348
|
+
* post compile task
|
|
252
349
|
*/
|
|
253
350
|
readonly postCompileTask?: TurboRepoTask;
|
|
254
351
|
/**
|
|
255
|
-
*
|
|
352
|
+
* Test task
|
|
256
353
|
*/
|
|
257
354
|
readonly testTask?: TurboRepoTask;
|
|
258
355
|
/**
|
|
259
|
-
*
|
|
356
|
+
* Package task
|
|
260
357
|
*/
|
|
261
358
|
readonly packageTask?: TurboRepoTask;
|
|
262
359
|
/**
|
|
263
360
|
* Sub-Tasks to run
|
|
264
361
|
*/
|
|
265
362
|
readonly tasks: Array<TurboRepoTask>;
|
|
266
|
-
|
|
363
|
+
/**
|
|
364
|
+
* Env Args that will bre added to turbo's build:all task
|
|
365
|
+
*/
|
|
366
|
+
readonly buildAllTaskEnvVars: Record<string, string>;
|
|
367
|
+
constructor(project: NodeProject, options?: TurboRepoOptions);
|
|
368
|
+
/**
|
|
369
|
+
* Add an env var to the global env vars for all tasks.
|
|
370
|
+
* This will also become an input for the build:all task cache at the root.
|
|
371
|
+
*/
|
|
372
|
+
addGlobalEnvVar(name: string, value: string): void;
|
|
373
|
+
activateBranchNameEnvVar(): void;
|
|
267
374
|
preSynthesize(): void;
|
|
268
375
|
}
|