@codedrifters/configulator 0.0.85 → 0.0.87

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.
Files changed (57) hide show
  1. package/lib/index.d.mts +1311 -0
  2. package/lib/index.d.ts +1311 -10
  3. package/lib/index.js +1508 -26
  4. package/lib/index.js.map +1 -0
  5. package/lib/index.mjs +1497 -0
  6. package/lib/index.mjs.map +1 -0
  7. package/package.json +11 -8
  8. package/lib/aws/aws-deployment-config.d.ts +0 -78
  9. package/lib/aws/aws-deployment-config.js +0 -134
  10. package/lib/aws/aws-deployment-target.d.ts +0 -183
  11. package/lib/aws/aws-deployment-target.js +0 -163
  12. package/lib/aws/aws-types.d.ts +0 -63
  13. package/lib/aws/aws-types.js +0 -9
  14. package/lib/aws/index.d.ts +0 -2
  15. package/lib/aws/index.js +0 -19
  16. package/lib/git/git-types.d.ts +0 -18
  17. package/lib/git/git-types.js +0 -9
  18. package/lib/git/index.d.ts +0 -1
  19. package/lib/git/index.js +0 -18
  20. package/lib/jsii/index.d.ts +0 -1
  21. package/lib/jsii/index.js +0 -18
  22. package/lib/jsii/jsii-faker.d.ts +0 -47
  23. package/lib/jsii/jsii-faker.js +0 -103
  24. package/lib/pnpm/index.d.ts +0 -1
  25. package/lib/pnpm/index.js +0 -18
  26. package/lib/pnpm/pnpm-workspace.d.ts +0 -244
  27. package/lib/pnpm/pnpm-workspace.js +0 -176
  28. package/lib/projects/index.d.ts +0 -2
  29. package/lib/projects/index.js +0 -19
  30. package/lib/projects/monorepo-project.d.ts +0 -82
  31. package/lib/projects/monorepo-project.js +0 -277
  32. package/lib/projects/typescript-project.d.ts +0 -20
  33. package/lib/projects/typescript-project.js +0 -181
  34. package/lib/tasks/index.d.ts +0 -1
  35. package/lib/tasks/index.js +0 -18
  36. package/lib/tasks/reset-task.d.ts +0 -51
  37. package/lib/tasks/reset-task.js +0 -149
  38. package/lib/turbo/index.d.ts +0 -2
  39. package/lib/turbo/index.js +0 -19
  40. package/lib/turbo/turbo-repo-task.d.ts +0 -36
  41. package/lib/turbo/turbo-repo-task.js +0 -43
  42. package/lib/turbo/turbo-repo.d.ts +0 -375
  43. package/lib/turbo/turbo-repo.js +0 -299
  44. package/lib/typescript/index.d.ts +0 -1
  45. package/lib/typescript/index.js +0 -18
  46. package/lib/typescript/typescript-config.d.ts +0 -13
  47. package/lib/typescript/typescript-config.js +0 -40
  48. package/lib/versions.d.ts +0 -34
  49. package/lib/versions.js +0 -38
  50. package/lib/vscode/index.d.ts +0 -1
  51. package/lib/vscode/index.js +0 -18
  52. package/lib/vscode/vscode.d.ts +0 -10
  53. package/lib/vscode/vscode.js +0 -38
  54. package/lib/workflows/aws-deploy-workflow.d.ts +0 -86
  55. package/lib/workflows/aws-deploy-workflow.js +0 -313
  56. package/lib/workflows/index.d.ts +0 -1
  57. package/lib/workflows/index.js +0 -18
@@ -1,82 +0,0 @@
1
- import { UpgradeDependencies, UpgradeDependenciesOptions } from "projen/lib/javascript";
2
- import { TypeScriptAppProject, TypeScriptProjectOptions } from "projen/lib/typescript";
3
- import { PnpmWorkspaceOptions } from "../pnpm/pnpm-workspace";
4
- import { ResetTaskOptions } from "../tasks/reset-task";
5
- import { TurboRepoOptions } from "../turbo/turbo-repo";
6
- /*******************************************************************************
7
- *
8
- * Monorepo Root Project
9
- *
10
- * This project should be used as the base project for other projects in a
11
- * monorepo. The Monorepo root project generally won't contain any code, but it
12
- * will contain configuration for the monorepo, such as package management,
13
- * linting, testing, and other project-wide settings.
14
- *
15
- ******************************************************************************/
16
- /**
17
- * Configuration options for the monorepo.
18
- */
19
- export interface MonorepoProjectOptions extends Omit<TypeScriptProjectOptions, "defaultReleaseBranch"> {
20
- /**
21
- * Turn on Turborepo support.
22
- *
23
- * @default true
24
- */
25
- turbo?: boolean;
26
- /**
27
- * Optionsal options for turborepo config
28
- */
29
- turboOptions?: TurboRepoOptions;
30
- /**
31
- * Enable the reset task that deletes all build artifacts.
32
- *
33
- * @default true
34
- */
35
- resetTask?: boolean;
36
- /**
37
- * Options for the reset task.
38
- */
39
- resetTaskOptions?: ResetTaskOptions;
40
- /**
41
- * PNPM options for the monorepo.
42
- */
43
- pnpmOptions?: {
44
- /**
45
- * The version of PNPM to use in the monorepo.
46
- * @default VERSION.PNPM_VERSION
47
- * @see {@link src/versions.ts}
48
- */
49
- version?: string;
50
- /**
51
- * Optional pnpm options for the monorepo workspace file.
52
- */
53
- pnpmWorkspaceOptions?: PnpmWorkspaceOptions;
54
- };
55
- /**
56
- * Turn on the upgrade configurator task that will attempt to upgrade the
57
- * @codedrifters/configulator package version nightly. This keeps the
58
- * project up-to-date with the latest official CodeDrifters configs..
59
- *
60
- * @default true
61
- */
62
- readonly upgradeConfigulatorTask?: boolean;
63
- /**
64
- * Options for the upgrade configurator task.
65
- *
66
- * @default: daily schedule
67
- */
68
- readonly upgradeConfigulatorTaskOptions?: UpgradeDependenciesOptions;
69
- }
70
- export declare class MonorepoProject extends TypeScriptAppProject {
71
- /**
72
- * Version of PNPM which the whole monorepo should use.
73
- */
74
- readonly pnpmVersion: string;
75
- /**
76
- * Optional task that will attempt to upgrade the @codedrifters/configulator
77
- * package version nightly. This keeps the project up-to-date with the latest
78
- * official CodeDrifters configs.
79
- */
80
- readonly upgradeConfigulatorTask?: UpgradeDependencies;
81
- constructor(userOptions: MonorepoProjectOptions);
82
- }
@@ -1,277 +0,0 @@
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 reset_task_1 = require("../tasks/reset-task");
9
- const turbo_repo_1 = require("../turbo/turbo-repo");
10
- const versions_1 = require("../versions");
11
- const vscode_1 = require("../vscode/vscode");
12
- class MonorepoProject extends typescript_1.TypeScriptAppProject {
13
- constructor(userOptions) {
14
- /***************************************************************************
15
- *
16
- * BUILD WORKFLOW OPTIONS
17
- *
18
- * discover some turbo options for build workflow, if needed.
19
- *
20
- **************************************************************************/
21
- const buildWorkflowOptions = userOptions
22
- .turboOptions?.remoteCacheOptions
23
- ? turbo_repo_1.TurboRepo.buildWorkflowOptions(userOptions.turboOptions.remoteCacheOptions)
24
- : {};
25
- /***************************************************************************
26
- *
27
- * DEFAULT OPTIONS
28
- *
29
- * These are the default options unless you override with option inputs.
30
- *
31
- **************************************************************************/
32
- const defaultOptions = {
33
- /**
34
- * Use typescript based config file.
35
- */
36
- projenrcTs: true,
37
- /**
38
- * Projen version should be pinned to the local specified version.
39
- */
40
- projenVersion: "catalog:",
41
- /**
42
- * Use Prettier for code formatting.
43
- */
44
- prettier: true,
45
- /**
46
- * Not licensed by default.
47
- */
48
- licensed: false,
49
- /**
50
- * GitHub options for the monorepo.
51
- * Don't enable mergify by default.
52
- */
53
- githubOptions: {
54
- mergify: false,
55
- /**
56
- * Configure pull request linting to validate PR titles follow Conventional Commits.
57
- * By default, all conventional commit types are allowed, providing flexibility
58
- * for different types of changes (features, fixes, documentation, refactoring, etc.).
59
- */
60
- pullRequestLintOptions: {
61
- semanticTitleOptions: {
62
- /**
63
- * Allowed conventional commit types for PR titles.
64
- * This includes all standard types from the Conventional Commits specification:
65
- * - feat: New features
66
- * - fix: Bug fixes
67
- * - docs: Documentation changes
68
- * - style: Code style changes (formatting, etc.)
69
- * - refactor: Code refactoring
70
- * - perf: Performance improvements
71
- * - test: Test additions or changes
72
- * - build: Build system changes
73
- * - ci: CI configuration changes
74
- * - chore: Maintenance tasks
75
- * - revert: Revert commits
76
- */
77
- types: [
78
- "feat",
79
- "fix",
80
- "docs",
81
- "style",
82
- "refactor",
83
- "perf",
84
- "test",
85
- "build",
86
- "ci",
87
- "chore",
88
- "revert",
89
- ],
90
- },
91
- },
92
- },
93
- /**
94
- * Default PNPM version to use in the monorepo.
95
- */
96
- pnpmVersion: versions_1.VERSION.PNPM_VERSION,
97
- /**
98
- * We don't want sample code generated for the root project.
99
- */
100
- sampleCode: false,
101
- /**
102
- * Jest is not required in the root project.
103
- */
104
- jest: false,
105
- /**
106
- * Don't release the root project.
107
- */
108
- release: false,
109
- /**
110
- * Don't upgrade dependencies automatically.
111
- */
112
- depsUpgrade: false,
113
- /**
114
- * Disable tsconfig.dev.json in the root since we aren't going to be
115
- * developing any code here. It's just a task runner and configuration
116
- * tool for sub-projects.
117
- */
118
- disableTsconfigDev: true,
119
- /**
120
- * Kill the srcdir in the root since we aren't using one.
121
- */
122
- tsconfig: {
123
- compilerOptions: {
124
- rootDir: undefined,
125
- },
126
- exclude: ["node_modules"],
127
- },
128
- /**
129
- * Enable turborepo by default.
130
- */
131
- turbo: true,
132
- /**
133
- * Enable reset task by default.
134
- */
135
- resetTask: true,
136
- /**
137
- * Include self as a devDep
138
- */
139
- devDeps: ["@codedrifters/configulator", "@codedrifters/utils"],
140
- pnpmOptions: {
141
- pnpmWorkspaceOptions: {
142
- defaultCatalog: {
143
- ["aws-cdk"]: versions_1.VERSION.AWS_CDK_CLI_VERSION,
144
- ["aws-cdk-lib"]: versions_1.VERSION.AWS_CDK_LIB_VERSION,
145
- ["projen"]: versions_1.VERSION.PROJEN_VERSION,
146
- ["constructs"]: versions_1.VERSION.AWS_CONSTRUCTS_VERSION,
147
- ["turbo"]: versions_1.VERSION.TURBO_VERSION,
148
- },
149
- },
150
- },
151
- };
152
- /***************************************************************************
153
- *
154
- * REQUIRED OPTIONS
155
- *
156
- * These options cannot be changed by the user.
157
- *
158
- **************************************************************************/
159
- const requiredOptions = {
160
- /**
161
- * This is required because it's standard practice and also to simplify
162
- * some workflow design.
163
- */
164
- defaultReleaseBranch: "main",
165
- /**
166
- * Use PNPM instead of the default (Yarn). Much of the ecosystem depends
167
- * on PNPM and making monorepos PNPM only simplifies many configurations.
168
- */
169
- packageManager: javascript_1.NodePackageManager.PNPM,
170
- /**
171
- * Some additional pre-build steps if we're using turbo's remote cache.
172
- */
173
- buildWorkflowOptions: {
174
- permissions: {
175
- ...buildWorkflowOptions?.permissions,
176
- ...userOptions.buildWorkflowOptions?.permissions,
177
- },
178
- preBuildSteps: [
179
- ...(buildWorkflowOptions?.preBuildSteps ?? []),
180
- ...(userOptions.buildWorkflowOptions?.preBuildSteps ?? []),
181
- ],
182
- },
183
- };
184
- /***************************************************************************
185
- *
186
- * CONSTRUCTOR
187
- *
188
- * Combines default options with user provided options and required options.
189
- * Store the options in a const so we can use them after super(), farther
190
- * into the constructor for additional configuration.
191
- *
192
- **************************************************************************/
193
- const options = (0, ts_deepmerge_1.merge)(defaultOptions, userOptions, requiredOptions);
194
- super({ ...options });
195
- /***************************************************************************
196
- *
197
- * PUBLIC PROPS
198
- *
199
- * Some props are hidden by Projen and we need to expose them for the
200
- * monorepo to work properly. This is where we store them.
201
- *
202
- **************************************************************************/
203
- this.pnpmVersion = options.pnpmVersion;
204
- /***************************************************************************
205
- *
206
- * CUSTOM CONFIGS
207
- *
208
- * We add some additional configurations to the monorepo root project below
209
- * such as Turborepo, VS Code config, and the PNPM workspace file.
210
- *
211
- **************************************************************************/
212
- /**
213
- * Add VSCode configuration
214
- */
215
- new vscode_1.VSCodeConfig(this);
216
- /**
217
- * Add workspace definition to PNPM root
218
- */
219
- new pnpm_workspace_1.PnpmWorkspace(this, options.pnpmOptions?.pnpmWorkspaceOptions);
220
- /**
221
- * Turn on turborepo support if requested.
222
- */
223
- if (options.turbo) {
224
- new turbo_repo_1.TurboRepo(this, options.turboOptions);
225
- this.buildWorkflow?.addPostBuildSteps({
226
- name: "Build Sub Projects",
227
- run: `npx projen ${turbo_repo_1.ROOT_CI_TASK_NAME}`,
228
- });
229
- }
230
- /**
231
- * Add reset task if enabled.
232
- */
233
- if (options.resetTask !== false) {
234
- const defaultResetTaskOptions = {
235
- pathsToRemove: ["node_modules", ".turbo", "dist", "lib"],
236
- };
237
- const userResetTaskOptions = options.resetTaskOptions ?? {};
238
- const resetTaskOptions = (0, ts_deepmerge_1.merge)(defaultResetTaskOptions, {
239
- ...userResetTaskOptions,
240
- pathsToRemove: [
241
- ...(defaultResetTaskOptions.pathsToRemove ?? []),
242
- ...(userResetTaskOptions.pathsToRemove ?? []),
243
- ],
244
- });
245
- new reset_task_1.ResetTask(this, resetTaskOptions);
246
- }
247
- /**
248
- * Specify package manager
249
- */
250
- // const pnpmVersion = options.pnpmVersion ?? VERSION.PNPM_VERSION;
251
- this.package.file.addOverride("packageManager", `pnpm@${options.pnpmVersion}`);
252
- /**
253
- * Add some silly things to the gitignore.
254
- */
255
- this.gitignore?.addPatterns(".DS_Store");
256
- /**
257
- * Use catalog version for constructs version
258
- */
259
- this.addDevDeps("constructs@catalog:");
260
- /**
261
- * Add a task on the monorepo's root project that will attempt to upgrade
262
- * the @codedrifters/configulator package version nightly. This keeps the
263
- * project up-to-date with the latest official CodeDrifters configs..
264
- */
265
- if (options.upgradeConfigulatorTask !== false) {
266
- this.upgradeConfigulatorTask = new javascript_1.UpgradeDependencies(this, (0, ts_deepmerge_1.merge)({
267
- include: ["@codedrifters/configulator", "@codedrifters/utils"],
268
- taskName: `upgrade-codedrifters-configulator`,
269
- workflowOptions: {
270
- schedule: javascript_1.UpgradeDependenciesSchedule.DAILY,
271
- },
272
- }, options.upgradeConfigulatorTaskOptions ?? {}));
273
- }
274
- }
275
- }
276
- exports.MonorepoProject = MonorepoProject;
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8tcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9qZWN0cy9tb25vcmVwby1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHNEQUsrQjtBQUMvQixzREFHK0I7QUFDL0IsK0NBQXFDO0FBQ3JDLDJEQUE2RTtBQUM3RSxvREFBa0U7QUFDbEUsb0RBSTZCO0FBQzdCLDBDQUFzQztBQUN0Qyw2Q0FBZ0Q7QUFpRmhELE1BQWEsZUFBZ0IsU0FBUSxpQ0FBb0I7SUFhdkQsWUFBWSxXQUFtQztRQUM3Qzs7Ozs7O29GQU00RTtRQUU1RSxNQUFNLG9CQUFvQixHQUFrQyxXQUFXO2FBQ3BFLFlBQVksRUFBRSxrQkFBa0I7WUFDakMsQ0FBQyxDQUFDLHNCQUFTLENBQUMsb0JBQW9CLENBQzVCLFdBQVcsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQzVDO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQOzs7Ozs7b0ZBTTRFO1FBRTVFLE1BQU0sY0FBYyxHQUdoQjtZQUNGOztlQUVHO1lBQ0gsVUFBVSxFQUFFLElBQUk7WUFFaEI7O2VBRUc7WUFDSCxhQUFhLEVBQUUsVUFBVTtZQUV6Qjs7ZUFFRztZQUNILFFBQVEsRUFBRSxJQUFJO1lBRWQ7O2VBRUc7WUFDSCxRQUFRLEVBQUUsS0FBSztZQUVmOzs7ZUFHRztZQUNILGFBQWEsRUFBRTtnQkFDYixPQUFPLEVBQUUsS0FBSztnQkFFZDs7OzttQkFJRztnQkFDSCxzQkFBc0IsRUFBRTtvQkFDdEIsb0JBQW9CLEVBQUU7d0JBQ3BCOzs7Ozs7Ozs7Ozs7OzsyQkFjRzt3QkFDSCxLQUFLLEVBQUU7NEJBQ0wsTUFBTTs0QkFDTixLQUFLOzRCQUNMLE1BQU07NEJBQ04sT0FBTzs0QkFDUCxVQUFVOzRCQUNWLE1BQU07NEJBQ04sTUFBTTs0QkFDTixPQUFPOzRCQUNQLElBQUk7NEJBQ0osT0FBTzs0QkFDUCxRQUFRO3lCQUNUO3FCQUNGO2lCQUNG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QUM3QyxDQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBOVVELDBDQThVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkV29ya2Zsb3dPcHRpb25zIH0gZnJvbSBcInByb2plbi9saWIvYnVpbGRcIjtcbmltcG9ydCB7XG4gIE5vZGVQYWNrYWdlTWFuYWdlcixcbiAgVXBncmFkZURlcGVuZGVuY2llcyxcbiAgVXBncmFkZURlcGVuZGVuY2llc09wdGlvbnMsXG4gIFVwZ3JhZGVEZXBlbmRlbmNpZXNTY2hlZHVsZSxcbn0gZnJvbSBcInByb2plbi9saWIvamF2YXNjcmlwdFwiO1xuaW1wb3J0IHtcbiAgVHlwZVNjcmlwdEFwcFByb2plY3QsXG4gIFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyxcbn0gZnJvbSBcInByb2plbi9saWIvdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwidHMtZGVlcG1lcmdlXCI7XG5pbXBvcnQgeyBQbnBtV29ya3NwYWNlLCBQbnBtV29ya3NwYWNlT3B0aW9ucyB9IGZyb20gXCIuLi9wbnBtL3BucG0td29ya3NwYWNlXCI7XG5pbXBvcnQgeyBSZXNldFRhc2ssIFJlc2V0VGFza09wdGlvbnMgfSBmcm9tIFwiLi4vdGFza3MvcmVzZXQtdGFza1wiO1xuaW1wb3J0IHtcbiAgUk9PVF9DSV9UQVNLX05BTUUsXG4gIFR1cmJvUmVwbyxcbiAgVHVyYm9SZXBvT3B0aW9ucyxcbn0gZnJvbSBcIi4uL3R1cmJvL3R1cmJvLXJlcG9cIjtcbmltcG9ydCB7IFZFUlNJT04gfSBmcm9tIFwiLi4vdmVyc2lvbnNcIjtcbmltcG9ydCB7IFZTQ29kZUNvbmZpZyB9IGZyb20gXCIuLi92c2NvZGUvdnNjb2RlXCI7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogTW9ub3JlcG8gUm9vdCBQcm9qZWN0XG4gKlxuICogVGhpcyBwcm9qZWN0IHNob3VsZCBiZSB1c2VkIGFzIHRoZSBiYXNlIHByb2plY3QgZm9yIG90aGVyIHByb2plY3RzIGluIGFcbiAqIG1vbm9yZXBvLiBUaGUgTW9ub3JlcG8gcm9vdCBwcm9qZWN0IGdlbmVyYWxseSB3b24ndCBjb250YWluIGFueSBjb2RlLCBidXQgaXRcbiAqIHdpbGwgY29udGFpbiBjb25maWd1cmF0aW9uIGZvciB0aGUgbW9ub3JlcG8sIHN1Y2ggYXMgcGFja2FnZSBtYW5hZ2VtZW50LFxuICogbGludGluZywgdGVzdGluZywgYW5kIG90aGVyIHByb2plY3Qtd2lkZSBzZXR0aW5ncy5cbiAqXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIG1vbm9yZXBvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vbm9yZXBvUHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBPbWl0PFxuICBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMsXG4gIFwiZGVmYXVsdFJlbGVhc2VCcmFuY2hcIlxuPiB7XG4gIC8qKlxuICAgKiBUdXJuIG9uIFR1cmJvcmVwbyBzdXBwb3J0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICB0dXJibz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbnNhbCBvcHRpb25zIGZvciB0dXJib3JlcG8gY29uZmlnXG4gICAqL1xuICB0dXJib09wdGlvbnM/OiBUdXJib1JlcG9PcHRpb25zO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgdGhlIHJlc2V0IHRhc2sgdGhhdCBkZWxldGVzIGFsbCBidWlsZCBhcnRpZmFjdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlc2V0VGFzaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIHRoZSByZXNldCB0YXNrLlxuICAgKi9cbiAgcmVzZXRUYXNrT3B0aW9ucz86IFJlc2V0VGFza09wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFBOUE0gb3B0aW9ucyBmb3IgdGhlIG1vbm9yZXBvLlxuICAgKi9cbiAgcG5wbU9wdGlvbnM/OiB7XG4gICAgLyoqXG4gICAgICogVGhlIHZlcnNpb24gb2YgUE5QTSB0byB1c2UgaW4gdGhlIG1vbm9yZXBvLlxuICAgICAqIEBkZWZhdWx0IFZFUlNJT04uUE5QTV9WRVJTSU9OXG4gICAgICogQHNlZSB7QGxpbmsgc3JjL3ZlcnNpb25zLnRzfVxuICAgICAqL1xuICAgIHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCBwbnBtIG9wdGlvbnMgZm9yIHRoZSBtb25vcmVwbyB3b3Jrc3BhY2UgZmlsZS5cbiAgICAgKi9cbiAgICBwbnBtV29ya3NwYWNlT3B0aW9ucz86IFBucG1Xb3Jrc3BhY2VPcHRpb25zO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUdXJuIG9uIHRoZSB1cGdyYWRlIGNvbmZpZ3VyYXRvciB0YXNrIHRoYXQgd2lsbCBhdHRlbXB0IHRvIHVwZ3JhZGUgdGhlXG4gICAqIEBjb2RlZHJpZnRlcnMvY29uZmlndWxhdG9yIHBhY2thZ2UgdmVyc2lvbiBuaWdodGx5LiBUaGlzIGtlZXBzIHRoZVxuICAgKiBwcm9qZWN0IHVwLXRvLWRhdGUgd2l0aCB0aGUgbGF0ZXN0IG9mZmljaWFsIENvZGVEcmlmdGVycyBjb25maWdzLi5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdXBncmFkZUNvbmZpZ3VsYXRvclRhc2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciB0aGUgdXBncmFkZSBjb25maWd1cmF0b3IgdGFzay5cbiAgICpcbiAgICogQGRlZmF1bHQ6IGRhaWx5IHNjaGVkdWxlXG4gICAqL1xuICByZWFkb25seSB1cGdyYWRlQ29uZmlndWxhdG9yVGFza09wdGlvbnM/OiBVcGdyYWRlRGVwZW5kZW5jaWVzT3B0aW9ucztcbn1cblxuaW50ZXJmYWNlIEFwcGxpZWRPcHRpb25zXG4gIGV4dGVuZHMgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zLCBNb25vcmVwb1Byb2plY3RPcHRpb25zIHt9XG5cbmV4cG9ydCBjbGFzcyBNb25vcmVwb1Byb2plY3QgZXh0ZW5kcyBUeXBlU2NyaXB0QXBwUHJvamVjdCB7XG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIFBOUE0gd2hpY2ggdGhlIHdob2xlIG1vbm9yZXBvIHNob3VsZCB1c2UuXG4gICAqL1xuICByZWFkb25seSBwbnBtVmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCB0YXNrIHRoYXQgd2lsbCBhdHRlbXB0IHRvIHVwZ3JhZGUgdGhlIEBjb2RlZHJpZnRlcnMvY29uZmlndWxhdG9yXG4gICAqIHBhY2thZ2UgdmVyc2lvbiBuaWdodGx5LiBUaGlzIGtlZXBzIHRoZSBwcm9qZWN0IHVwLXRvLWRhdGUgd2l0aCB0aGUgbGF0ZXN0XG4gICAqIG9mZmljaWFsIENvZGVEcmlmdGVycyBjb25maWdzLlxuICAgKi9cbiAgcmVhZG9ubHkgdXBncmFkZUNvbmZpZ3VsYXRvclRhc2s/OiBVcGdyYWRlRGVwZW5kZW5jaWVzO1xuXG4gIGNvbnN0cnVjdG9yKHVzZXJPcHRpb25zOiBNb25vcmVwb1Byb2plY3RPcHRpb25zKSB7XG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogQlVJTEQgV09SS0ZMT1cgT1BUSU9OU1xuICAgICAqXG4gICAgICogZGlzY292ZXIgc29tZSB0dXJibyBvcHRpb25zIGZvciBidWlsZCB3b3JrZmxvdywgaWYgbmVlZGVkLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgYnVpbGRXb3JrZmxvd09wdGlvbnM6IFBhcnRpYWw8QnVpbGRXb3JrZmxvd09wdGlvbnM+ID0gdXNlck9wdGlvbnNcbiAgICAgIC50dXJib09wdGlvbnM/LnJlbW90ZUNhY2hlT3B0aW9uc1xuICAgICAgPyBUdXJib1JlcG8uYnVpbGRXb3JrZmxvd09wdGlvbnMoXG4gICAgICAgICAgdXNlck9wdGlvbnMudHVyYm9PcHRpb25zLnJlbW90ZUNhY2hlT3B0aW9ucyxcbiAgICAgICAgKVxuICAgICAgOiB7fTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIERFRkFVTFQgT1BUSU9OU1xuICAgICAqXG4gICAgICogVGhlc2UgYXJlIHRoZSBkZWZhdWx0IG9wdGlvbnMgdW5sZXNzIHlvdSBvdmVycmlkZSB3aXRoIG9wdGlvbiBpbnB1dHMuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBjb25zdCBkZWZhdWx0T3B0aW9uczogT21pdDxcbiAgICAgIE1vbm9yZXBvUHJvamVjdE9wdGlvbnMsXG4gICAgICBcIm5hbWVcIiB8IFwiZGVmYXVsdFJlbGVhc2VCcmFuY2hcIlxuICAgID4gPSB7XG4gICAgICAvKipcbiAgICAgICAqIFVzZSB0eXBlc2NyaXB0IGJhc2VkIGNvbmZpZyBmaWxlLlxuICAgICAgICovXG4gICAgICBwcm9qZW5yY1RzOiB0cnVlLFxuXG4gICAgICAvKipcbiAgICAgICAqIFByb2plbiB2ZXJzaW9uIHNob3VsZCBiZSBwaW5uZWQgdG8gdGhlIGxvY2FsIHNwZWNpZmllZCB2ZXJzaW9uLlxuICAgICAgICovXG4gICAgICBwcm9qZW5WZXJzaW9uOiBcImNhdGFsb2c6XCIsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlIFByZXR0aWVyIGZvciBjb2RlIGZvcm1hdHRpbmcuXG4gICAgICAgKi9cbiAgICAgIHByZXR0aWVyOiB0cnVlLFxuXG4gICAgICAvKipcbiAgICAgICAqIE5vdCBsaWNlbnNlZCBieSBkZWZhdWx0LlxuICAgICAgICovXG4gICAgICBsaWNlbnNlZDogZmFsc2UsXG5cbiAgICAgIC8qKlxuICAgICAgICogR2l0SHViIG9wdGlvbnMgZm9yIHRoZSBtb25vcmVwby5cbiAgICAgICAqIERvbid0IGVuYWJsZSBtZXJnaWZ5IGJ5IGRlZmF1bHQuXG4gICAgICAgKi9cbiAgICAgIGdpdGh1Yk9wdGlvbnM6IHtcbiAgICAgICAgbWVyZ2lmeTogZmFsc2UsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvbmZpZ3VyZSBwdWxsIHJlcXVlc3QgbGludGluZyB0byB2YWxpZGF0ZSBQUiB0aXRsZXMgZm9sbG93IENvbnZlbnRpb25hbCBDb21taXRzLlxuICAgICAgICAgKiBCeSBkZWZhdWx0LCBhbGwgY29udmVudGlvbmFsIGNvbW1pdCB0eXBlcyBhcmUgYWxsb3dlZCwgcHJvdmlkaW5nIGZsZXhpYmlsaXR5XG4gICAgICAgICAqIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgY2hhbmdlcyAoZmVhdHVyZXMsIGZpeGVzLCBkb2N1bWVudGF0aW9uLCByZWZhY3RvcmluZywgZXRjLikuXG4gICAgICAgICAqL1xuICAgICAgICBwdWxsUmVxdWVzdExpbnRPcHRpb25zOiB7XG4gICAgICAgICAgc2VtYW50aWNUaXRsZU9wdGlvbnM6IHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWxsb3dlZCBjb252ZW50aW9uYWwgY29tbWl0IHR5cGVzIGZvciBQUiB0aXRsZXMuXG4gICAgICAgICAgICAgKiBUaGlzIGluY2x1ZGVzIGFsbCBzdGFuZGFyZCB0eXBlcyBmcm9tIHRoZSBDb252ZW50aW9uYWwgQ29tbWl0cyBzcGVjaWZpY2F0aW9uOlxuICAgICAgICAgICAgICogLSBmZWF0OiBOZXcgZmVhdHVyZXNcbiAgICAgICAgICAgICAqIC0gZml4OiBCdWcgZml4ZXNcbiAgICAgICAgICAgICAqIC0gZG9jczogRG9jdW1lbnRhdGlvbiBjaGFuZ2VzXG4gICAgICAgICAgICAgKiAtIHN0eWxlOiBDb2RlIHN0eWxlIGNoYW5nZXMgKGZvcm1hdHRpbmcsIGV0Yy4pXG4gICAgICAgICAgICAgKiAtIHJlZmFjdG9yOiBDb2RlIHJlZmFjdG9yaW5nXG4gICAgICAgICAgICAgKiAtIHBlcmY6IFBlcmZvcm1hbmNlIGltcHJvdmVtZW50c1xuICAgICAgICAgICAgICogLSB0ZXN0OiBUZXN0IGFkZGl0aW9ucyBvciBjaGFuZ2VzXG4gICAgICAgICAgICAgKiAtIGJ1aWxkOiBCdWlsZCBzeXN0ZW0gY2hhbmdlc1xuICAgICAgICAgICAgICogLSBjaTogQ0kgY29uZmlndXJhdGlvbiBjaGFuZ2VzXG4gICAgICAgICAgICAgKiAtIGNob3JlOiBNYWludGVuYW5jZSB0YXNrc1xuICAgICAgICAgICAgICogLSByZXZlcnQ6IFJldmVydCBjb21taXRzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHR5cGVzOiBbXG4gICAgICAgICAgICAgIFwiZmVhdFwiLFxuICAgICAgICAgICAgICBcImZpeFwiLFxuICAgICAgICAgICAgICBcImRvY3NcIixcbiAgICAgICAgICAgICAgXCJzdHlsZVwiLFxuICAgICAgICAgICAgICBcInJlZmFjdG9yXCIsXG4gICAgICAgICAgICAgIFwicGVyZlwiLFxuICAgICAgICAgICAgICBcInRlc3RcIixcbiAgICAgICAgICAgICAgXCJidWlsZFwiLFxuICAgICAgICAgICAgICBcImNpXCIsXG4gICAgICAgICAgICAgIFwiY2hvcmVcIixcbiAgICAgICAgICAgICAgXCJyZXZlcnRcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogRGVmYXVsdCBQTlBNIHZlcnNpb24gdG8gdXNlIGluIHRoZSBtb25vcmVwby5cbiAgICAgICAqL1xuICAgICAgcG5wbVZlcnNpb246IFZFUlNJT04uUE5QTV9WRVJTSU9OLFxuXG4gICAgICAvKipcbiAgICAgICAqIFdlIGRvbid0IHdhbnQgc2FtcGxlIGNvZGUgZ2VuZXJhdGVkIGZvciB0aGUgcm9vdCBwcm9qZWN0LlxuICAgICAgICovXG4gICAgICBzYW1wbGVDb2RlOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBKZXN0IGlzIG5vdCByZXF1aXJlZCBpbiB0aGUgcm9vdCBwcm9qZWN0LlxuICAgICAgICovXG4gICAgICBqZXN0OiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEb24ndCByZWxlYXNlIHRoZSByb290IHByb2plY3QuXG4gICAgICAgKi9cbiAgICAgIHJlbGVhc2U6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIERvbid0IHVwZ3JhZGUgZGVwZW5kZW5jaWVzIGF1dG9tYXRpY2FsbHkuXG4gICAgICAgKi9cbiAgICAgIGRlcHNVcGdyYWRlOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEaXNhYmxlIHRzY29uZmlnLmRldi5qc29uIGluIHRoZSByb290IHNpbmNlIHdlIGFyZW4ndCBnb2luZyB0byBiZVxuICAgICAgICogZGV2ZWxvcGluZyBhbnkgY29kZSBoZXJlLiBJdCdzIGp1c3QgYSB0YXNrIHJ1bm5lciBhbmQgY29uZmlndXJhdGlvblxuICAgICAgICogdG9vbCBmb3Igc3ViLXByb2plY3RzLlxuICAgICAgICovXG4gICAgICBkaXNhYmxlVHNjb25maWdEZXY6IHRydWUsXG5cbiAgICAgIC8qKlxuICAgICAgICogS2lsbCB0aGUgc3JjZGlyIGluIHRoZSByb290IHNpbmNlIHdlIGFyZW4ndCB1c2luZyBvbmUuXG4gICAgICAgKi9cbiAgICAgIHRzY29uZmlnOiB7XG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIHJvb3REaXI6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgICAgZXhjbHVkZTogW1wibm9kZV9tb2R1bGVzXCJdLFxuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBFbmFibGUgdHVyYm9yZXBvIGJ5IGRlZmF1bHQuXG4gICAgICAgKi9cbiAgICAgIHR1cmJvOiB0cnVlLFxuXG4gICAgICAvKipcbiAgICAgICAqIEVuYWJsZSByZXNldCB0YXNrIGJ5IGRlZmF1bHQuXG4gICAgICAgKi9cbiAgICAgIHJlc2V0VGFzazogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBJbmNsdWRlIHNlbGYgYXMgYSBkZXZEZXBcbiAgICAgICAqL1xuICAgICAgZGV2RGVwczogW1wiQGNvZGVkcmlmdGVycy9jb25maWd1bGF0b3JcIiwgXCJAY29kZWRyaWZ0ZXJzL3V0aWxzXCJdLFxuXG4gICAgICBwbnBtT3B0aW9uczoge1xuICAgICAgICBwbnBtV29ya3NwYWNlT3B0aW9uczoge1xuICAgICAgICAgIGRlZmF1bHRDYXRhbG9nOiB7XG4gICAgICAgICAgICBbXCJhd3MtY2RrXCJdOiBWRVJTSU9OLkFXU19DREtfQ0xJX1ZFUlNJT04sXG4gICAgICAgICAgICBbXCJhd3MtY2RrLWxpYlwiXTogVkVSU0lPTi5BV1NfQ0RLX0xJQl9WRVJTSU9OLFxuICAgICAgICAgICAgW1wicHJvamVuXCJdOiBWRVJTSU9OLlBST0pFTl9WRVJTSU9OLFxuICAgICAgICAgICAgW1wiY29uc3RydWN0c1wiXTogVkVSU0lPTi5BV1NfQ09OU1RSVUNUU19WRVJTSU9OLFxuICAgICAgICAgICAgW1widHVyYm9cIl06IFZFUlNJT04uVFVSQk9fVkVSU0lPTixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogUkVRVUlSRUQgT1BUSU9OU1xuICAgICAqXG4gICAgICogVGhlc2Ugb3B0aW9ucyBjYW5ub3QgYmUgY2hhbmdlZCBieSB0aGUgdXNlci5cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IHJlcXVpcmVkT3B0aW9uczogT21pdDxUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMsIFwibmFtZVwiPiA9IHtcbiAgICAgIC8qKlxuICAgICAgICogVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIGl0J3Mgc3RhbmRhcmQgcHJhY3RpY2UgYW5kIGFsc28gdG8gc2ltcGxpZnlcbiAgICAgICAqIHNvbWUgd29ya2Zsb3cgZGVzaWduLlxuICAgICAgICovXG4gICAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogXCJtYWluXCIsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlIFBOUE0gaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCAoWWFybikuIE11Y2ggb2YgdGhlIGVjb3N5c3RlbSBkZXBlbmRzXG4gICAgICAgKiBvbiBQTlBNIGFuZCBtYWtpbmcgbW9ub3JlcG9zIFBOUE0gb25seSBzaW1wbGlmaWVzIG1hbnkgY29uZmlndXJhdGlvbnMuXG4gICAgICAgKi9cbiAgICAgIHBhY2thZ2VNYW5hZ2VyOiBOb2RlUGFja2FnZU1hbmFnZXIuUE5QTSxcblxuICAgICAgLyoqXG4gICAgICAgKiBTb21lIGFkZGl0aW9uYWwgcHJlLWJ1aWxkIHN0ZXBzIGlmIHdlJ3JlIHVzaW5nIHR1cmJvJ3MgcmVtb3RlIGNhY2hlLlxuICAgICAgICovXG4gICAgICBidWlsZFdvcmtmbG93T3B0aW9uczoge1xuICAgICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICAgIC4uLmJ1aWxkV29ya2Zsb3dPcHRpb25zPy5wZXJtaXNzaW9ucyxcbiAgICAgICAgICAuLi51c2VyT3B0aW9ucy5idWlsZFdvcmtmbG93T3B0aW9ucz8ucGVybWlzc2lvbnMsXG4gICAgICAgIH0sXG4gICAgICAgIHByZUJ1aWxkU3RlcHM6IFtcbiAgICAgICAgICAuLi4oYnVpbGRXb3JrZmxvd09wdGlvbnM/LnByZUJ1aWxkU3RlcHMgPz8gW10pLFxuICAgICAgICAgIC4uLih1c2VyT3B0aW9ucy5idWlsZFdvcmtmbG93T3B0aW9ucz8ucHJlQnVpbGRTdGVwcyA/PyBbXSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBDT05TVFJVQ1RPUlxuICAgICAqXG4gICAgICogQ29tYmluZXMgZGVmYXVsdCBvcHRpb25zIHdpdGggdXNlciBwcm92aWRlZCBvcHRpb25zIGFuZCByZXF1aXJlZCBvcHRpb25zLlxuICAgICAqIFN0b3JlIHRoZSBvcHRpb25zIGluIGEgY29uc3Qgc28gd2UgY2FuIHVzZSB0aGVtIGFmdGVyIHN1cGVyKCksIGZhcnRoZXJcbiAgICAgKiBpbnRvIHRoZSBjb25zdHJ1Y3RvciBmb3IgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3Qgb3B0aW9uczogQXBwbGllZE9wdGlvbnMgPSBtZXJnZShcbiAgICAgIGRlZmF1bHRPcHRpb25zLFxuICAgICAgdXNlck9wdGlvbnMsXG4gICAgICByZXF1aXJlZE9wdGlvbnMsXG4gICAgKTtcblxuICAgIHN1cGVyKHsgLi4ub3B0aW9ucyB9KTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIFBVQkxJQyBQUk9QU1xuICAgICAqXG4gICAgICogU29tZSBwcm9wcyBhcmUgaGlkZGVuIGJ5IFByb2plbiBhbmQgd2UgbmVlZCB0byBleHBvc2UgdGhlbSBmb3IgdGhlXG4gICAgICogbW9ub3JlcG8gdG8gd29yayBwcm9wZXJseS4gVGhpcyBpcyB3aGVyZSB3ZSBzdG9yZSB0aGVtLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgdGhpcy5wbnBtVmVyc2lvbiA9IG9wdGlvbnMucG5wbVZlcnNpb24hO1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogQ1VTVE9NIENPTkZJR1NcbiAgICAgKlxuICAgICAqIFdlIGFkZCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbnMgdG8gdGhlIG1vbm9yZXBvIHJvb3QgcHJvamVjdCBiZWxvd1xuICAgICAqIHN1Y2ggYXMgVHVyYm9yZXBvLCBWUyBDb2RlIGNvbmZpZywgYW5kIHRoZSBQTlBNIHdvcmtzcGFjZSBmaWxlLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgLyoqXG4gICAgICogQWRkIFZTQ29kZSBjb25maWd1cmF0aW9uXG4gICAgICovXG4gICAgbmV3IFZTQ29kZUNvbmZpZyh0aGlzKTtcblxuICAgIC8qKlxuICAgICAqIEFkZCB3b3Jrc3BhY2UgZGVmaW5pdGlvbiB0byBQTlBNIHJvb3RcbiAgICAgKi9cbiAgICBuZXcgUG5wbVdvcmtzcGFjZSh0aGlzLCBvcHRpb25zLnBucG1PcHRpb25zPy5wbnBtV29ya3NwYWNlT3B0aW9ucyk7XG5cbiAgICAvKipcbiAgICAgKiBUdXJuIG9uIHR1cmJvcmVwbyBzdXBwb3J0IGlmIHJlcXVlc3RlZC5cbiAgICAgKi9cbiAgICBpZiAob3B0aW9ucy50dXJibykge1xuICAgICAgbmV3IFR1cmJvUmVwbyh0aGlzLCBvcHRpb25zLnR1cmJvT3B0aW9ucyk7XG5cbiAgICAgIHRoaXMuYnVpbGRXb3JrZmxvdz8uYWRkUG9zdEJ1aWxkU3RlcHMoe1xuICAgICAgICBuYW1lOiBcIkJ1aWxkIFN1YiBQcm9qZWN0c1wiLFxuICAgICAgICBydW46IGBucHggcHJvamVuICR7Uk9PVF9DSV9UQVNLX05BTUV9YCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCByZXNldCB0YXNrIGlmIGVuYWJsZWQuXG4gICAgICovXG4gICAgaWYgKG9wdGlvbnMucmVzZXRUYXNrICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgZGVmYXVsdFJlc2V0VGFza09wdGlvbnM6IFJlc2V0VGFza09wdGlvbnMgPSB7XG4gICAgICAgIHBhdGhzVG9SZW1vdmU6IFtcIm5vZGVfbW9kdWxlc1wiLCBcIi50dXJib1wiLCBcImRpc3RcIiwgXCJsaWJcIl0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdXNlclJlc2V0VGFza09wdGlvbnMgPSBvcHRpb25zLnJlc2V0VGFza09wdGlvbnMgPz8ge307XG4gICAgICBjb25zdCByZXNldFRhc2tPcHRpb25zOiBSZXNldFRhc2tPcHRpb25zID0gbWVyZ2UoXG4gICAgICAgIGRlZmF1bHRSZXNldFRhc2tPcHRpb25zLFxuICAgICAgICB7XG4gICAgICAgICAgLi4udXNlclJlc2V0VGFza09wdGlvbnMsXG4gICAgICAgICAgcGF0aHNUb1JlbW92ZTogW1xuICAgICAgICAgICAgLi4uKGRlZmF1bHRSZXNldFRhc2tPcHRpb25zLnBhdGhzVG9SZW1vdmUgPz8gW10pLFxuICAgICAgICAgICAgLi4uKHVzZXJSZXNldFRhc2tPcHRpb25zLnBhdGhzVG9SZW1vdmUgPz8gW10pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgbmV3IFJlc2V0VGFzayh0aGlzLCByZXNldFRhc2tPcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZ5IHBhY2thZ2UgbWFuYWdlclxuICAgICAqL1xuICAgIC8vIGNvbnN0IHBucG1WZXJzaW9uID0gb3B0aW9ucy5wbnBtVmVyc2lvbiA/PyBWRVJTSU9OLlBOUE1fVkVSU0lPTjtcbiAgICB0aGlzLnBhY2thZ2UuZmlsZS5hZGRPdmVycmlkZShcbiAgICAgIFwicGFja2FnZU1hbmFnZXJcIixcbiAgICAgIGBwbnBtQCR7b3B0aW9ucy5wbnBtVmVyc2lvbn1gLFxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBBZGQgc29tZSBzaWxseSB0aGluZ3MgdG8gdGhlIGdpdGlnbm9yZS5cbiAgICAgKi9cbiAgICB0aGlzLmdpdGlnbm9yZT8uYWRkUGF0dGVybnMoXCIuRFNfU3RvcmVcIik7XG5cbiAgICAvKipcbiAgICAgKiBVc2UgY2F0YWxvZyB2ZXJzaW9uIGZvciBjb25zdHJ1Y3RzIHZlcnNpb25cbiAgICAgKi9cbiAgICB0aGlzLmFkZERldkRlcHMoXCJjb25zdHJ1Y3RzQGNhdGFsb2c6XCIpO1xuXG4gICAgLyoqXG4gICAgICogQWRkIGEgdGFzayBvbiB0aGUgbW9ub3JlcG8ncyByb290IHByb2plY3QgdGhhdCB3aWxsIGF0dGVtcHQgdG8gdXBncmFkZVxuICAgICAqIHRoZSBAY29kZWRyaWZ0ZXJzL2NvbmZpZ3VsYXRvciBwYWNrYWdlIHZlcnNpb24gbmlnaHRseS4gVGhpcyBrZWVwcyB0aGVcbiAgICAgKiBwcm9qZWN0IHVwLXRvLWRhdGUgd2l0aCB0aGUgbGF0ZXN0IG9mZmljaWFsIENvZGVEcmlmdGVycyBjb25maWdzLi5cbiAgICAgKi9cbiAgICBpZiAob3B0aW9ucy51cGdyYWRlQ29uZmlndWxhdG9yVGFzayAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMudXBncmFkZUNvbmZpZ3VsYXRvclRhc2sgPSBuZXcgVXBncmFkZURlcGVuZGVuY2llcyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW5jbHVkZTogW1wiQGNvZGVkcmlmdGVycy9jb25maWd1bGF0b3JcIiwgXCJAY29kZWRyaWZ0ZXJzL3V0aWxzXCJdLFxuICAgICAgICAgICAgdGFza05hbWU6IGB1cGdyYWRlLWNvZGVkcmlmdGVycy1jb25maWd1bGF0b3JgLFxuICAgICAgICAgICAgd29ya2Zsb3dPcHRpb25zOiB7XG4gICAgICAgICAgICAgIHNjaGVkdWxlOiBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUuREFJTFksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3B0aW9ucy51cGdyYWRlQ29uZmlndWxhdG9yVGFza09wdGlvbnMgPz8ge30sXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,20 +0,0 @@
1
- import { typescript } from "projen";
2
- import { ResetTaskOptions } from "../tasks/reset-task";
3
- /**
4
- * Configuration options for TypeScriptProject.
5
- */
6
- export interface TypeScriptProjectOptions extends Omit<typescript.TypeScriptProjectOptions, "defaultReleaseBranch"> {
7
- /**
8
- * Enable the reset task that deletes all build artifacts.
9
- *
10
- * @default true
11
- */
12
- readonly resetTask?: boolean;
13
- /**
14
- * Options for the reset task.
15
- */
16
- readonly resetTaskOptions?: ResetTaskOptions;
17
- }
18
- export declare class TypeScriptProject extends typescript.TypeScriptProject {
19
- constructor(userOptions: TypeScriptProjectOptions);
20
- }
@@ -1,181 +0,0 @@
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 reset_task_1 = require("../tasks/reset-task");
11
- const turbo_1 = require("../turbo");
12
- const versions_1 = require("../versions");
13
- class TypeScriptProject extends projen_1.typescript.TypeScriptProject {
14
- constructor(userOptions) {
15
- /**
16
- * Default PNPM version to use. This will either come from the MonoRepo
17
- * root or from the default specified in configulator. If the user passes
18
- * in a different pnpmVersion it will also override this.
19
- */
20
- const pnpmVersion = userOptions.parent && userOptions.parent instanceof monorepo_project_1.MonorepoProject
21
- ? userOptions.parent.pnpmVersion
22
- : versions_1.VERSION.PNPM_VERSION;
23
- /**
24
- * Get the pnpm workspace from the parent project.
25
- */
26
- const pnpmWorkspace = userOptions.parent && userOptions.parent instanceof monorepo_project_1.MonorepoProject
27
- ? pnpm_1.PnpmWorkspace.of(userOptions.parent)
28
- : undefined;
29
- /*************************************************************************
30
- *
31
- * Default Options
32
- *
33
- ************************************************************************/
34
- const defaultOptions = {
35
- /**
36
- * This is a standard, so don't require it to passed in everywhere.
37
- */
38
- defaultReleaseBranch: "main",
39
- /**
40
- * Enable reset task by default.
41
- */
42
- resetTask: true,
43
- /**
44
- * Packaging options
45
- */
46
- packageManager: javascript_1.NodePackageManager.PNPM,
47
- pnpmVersion: pnpmVersion,
48
- licensed: userOptions.license !== undefined || false,
49
- copyrightOwner: "CodeDrifters",
50
- release: false,
51
- /**
52
- * Don't add sample code.
53
- */
54
- sampleCode: false,
55
- /**
56
- * Make sure jest config is stored outside of package.json
57
- */
58
- jestOptions: {
59
- configFilePath: "jest.config.json",
60
- jestConfig: {
61
- roots: [`<rootDir>/src`],
62
- transform: {
63
- ["^.+\\.[t]sx?$"]: new javascript_1.Transform("@swc/jest"),
64
- },
65
- moduleFileExtensions: ["js", "ts"],
66
- },
67
- },
68
- /**
69
- * Turn on prettier formatting
70
- */
71
- prettier: true,
72
- /**
73
- * SWC for faster testing
74
- */
75
- devDeps: ["@swc/jest", "@swc/core"],
76
- /**
77
- * Don't package test files.
78
- */
79
- npmIgnoreOptions: {
80
- ignorePatterns: ["*.spec.*", "*.test.*"],
81
- },
82
- /**
83
- * Options for the automated dependency upgrade task / workflow
84
- * Automatically exclude any packages that are managed by the root
85
- * project as default catalog dependencies since we want to let the
86
- * catalog manage those dependencies.
87
- */
88
- depsUpgradeOptions: {
89
- exclude: Object.keys(pnpmWorkspace?.defaultCatalog || {}),
90
- ...(userOptions.parent && userOptions.parent instanceof monorepo_project_1.MonorepoProject
91
- ? {
92
- workflowOptions: {
93
- schedule: javascript_1.UpgradeDependenciesSchedule.WEEKLY,
94
- },
95
- cooldown: 1,
96
- }
97
- : {}),
98
- },
99
- /**
100
- * Only release when the package folder sourcce content changes
101
- */
102
- releaseTrigger: release_1.ReleaseTrigger.continuous({
103
- paths: [`${userOptions.outdir}/src/**`],
104
- }),
105
- };
106
- /*************************************************************************
107
- *
108
- * Merge defaults into user options
109
- *
110
- ************************************************************************/
111
- const options = (0, ts_deepmerge_1.merge)(defaultOptions, userOptions);
112
- super(options);
113
- /**
114
- * Remove jest since we've swapped in @swc/jest instead of ts-jest.
115
- */
116
- this.deps.removeDependency("ts-jest");
117
- /**
118
- * Specify package manager
119
- */
120
- this.package.file.addOverride("packageManager", `pnpm@${options.pnpmVersion}`);
121
- /**
122
- *
123
- * Disable this rule for all test files.
124
- *
125
- * Unless we turn this off, ESLint will suggest that anything found in a test
126
- * needs to be a dep instead of a devDep. Projen actually already turns off
127
- * the rule for files in the tests/* folder but since we commonly put tests
128
- * next to the code it's testing, we need to do this ourselves.
129
- *
130
- */
131
- this.eslint?.addOverride({
132
- files: ["**/*.test.*", "**/*.spec.*"],
133
- rules: {
134
- "import/no-extraneous-dependencies": "off",
135
- },
136
- });
137
- /**
138
- * Some standard ignores for all projects.
139
- */
140
- this.gitignore?.addPatterns(".DS_Store");
141
- this.npmignore?.addPatterns("*.spec.*", "*.test.*", "__fixtures__");
142
- /**
143
- * If turbo is active in the parent project, configure it here.
144
- */
145
- const turboActive = userOptions.parent && turbo_1.TurboRepo.of(userOptions.parent) !== undefined;
146
- if (turboActive) {
147
- const turbo = new turbo_1.TurboRepo(this);
148
- turbo.compileTask?.outputs.push("dist/**");
149
- turbo.compileTask?.outputs.push("lib/**");
150
- //turbo.testTask?.inputs.push("src/**");
151
- }
152
- /**
153
- * Add reset task if enabled.
154
- */
155
- if (options.resetTask !== false) {
156
- const defaultResetTaskOptions = {
157
- pathsToRemove: [
158
- "node_modules",
159
- "dist",
160
- "lib",
161
- "coverage",
162
- "test-reports",
163
- ".turbo",
164
- "tsconfig.tsbuildinfo",
165
- this.artifactsDirectory,
166
- ],
167
- };
168
- const userResetTaskOptions = options.resetTaskOptions ?? {};
169
- const resetTaskOptions = (0, ts_deepmerge_1.merge)(defaultResetTaskOptions, {
170
- ...userResetTaskOptions,
171
- pathsToRemove: [
172
- ...(defaultResetTaskOptions.pathsToRemove ?? []),
173
- ...(userResetTaskOptions.pathsToRemove ?? []),
174
- ],
175
- });
176
- new reset_task_1.ResetTask(this, resetTaskOptions);
177
- }
178
- }
179
- }
180
- exports.TypeScriptProject = TypeScriptProject;
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb2plY3RzL3R5cGVzY3JpcHQtcHJvamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBb0M7QUFDcEMsc0RBSStCO0FBQy9CLGdEQUFvRDtBQUNwRCwrQ0FBcUM7QUFDckMseURBQXFEO0FBQ3JELGtDQUF3QztBQUN4QyxvREFBa0U7QUFDbEUsb0NBQXFDO0FBQ3JDLDBDQUFzQztBQXNCdEMsTUFBYSxpQkFBa0IsU0FBUSxtQkFBVSxDQUFDLGlCQUFpQjtJQUNqRSxZQUFZLFdBQXFDO1FBQy9DOzs7O1dBSUc7UUFDSCxNQUFNLFdBQVcsR0FDZixXQUFXLENBQUMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLFlBQVksa0NBQWU7WUFDakUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVztZQUNoQyxDQUFDLENBQUMsa0JBQU8sQ0FBQyxZQUFZLENBQUM7UUFFM0I7O1dBRUc7UUFDSCxNQUFNLGFBQWEsR0FDakIsV0FBVyxDQUFDLE1BQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxZQUFZLGtDQUFlO1lBQ2pFLENBQUMsQ0FBQyxvQkFBYSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBeUIsQ0FBQztZQUN6RCxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWhCOzs7O2tGQUkwRTtRQUUxRSxNQUFNLGNBQWMsR0FFaEI7WUFDRjs7ZUFFRztZQUNILG9CQUFvQixFQUFFLE1BQU07WUFFNUI7O2VBRUc7WUFDSCxTQUFTLEVBQUUsSUFBSTtZQUVmOztlQUVHO1lBQ0gsY0FBYyxFQUFFLCtCQUFrQixDQUFDLElBQUk7WUFDdkMsV0FBVyxFQUFFLFdBQVc7WUFDeEIsUUFBUSxFQUFFLFdBQVcsQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLEtBQUs7WUFDcEQsY0FBYyxFQUFFLGNBQWM7WUFDOUIsT0FBTyxFQUFFLEtBQUs7WUFFZDs7ZUFFRztZQUNILFVBQVUsRUFBRSxLQUFLO1lBRWpCOztlQUVHO1lBQ0gsV0FBVyxFQUFFO2dCQUNYLGNBQWMsRUFBRSxrQkFBa0I7Z0JBQ2xDLFVBQVUsRUFBRTtvQkFDVixLQUFLLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQ3hCLFNBQVMsRUFBRTt3QkFDVCxDQUFDLGVBQWUsQ0FBQyxFQUFFLElBQUksc0JBQVMsQ0FBQyxXQUFXLENBQUM7cUJBQzlDO29CQUNELG9CQUFvQixFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztpQkFDbkM7YUFDRjtZQUVEOztlQUVHO1lBQ0gsUUFBUSxFQUFFLElBQUk7WUFFZDs7ZUFFRztZQUNILE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7WUFFbkM7O2VBRUc7WUFDSCxnQkFBZ0IsRUFBRTtnQkFDaEIsY0FBYyxFQUFFLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQzthQUN6QztZQUVEOzs7OztlQUtHO1lBQ0gsa0JBQWtCLEVBQUU7Z0JBQ2xCLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxjQUFjLElBQUksRUFBRSxDQUFDO2dCQUN6RCxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxXQUFXLENBQUMsTUFBTSxZQUFZLGtDQUFlO29CQUNyRSxDQUFDLENBQUM7d0JBQ0UsZUFBZSxFQUFFOzRCQUNmLFFBQVEsRUFBRSx3Q0FBMkIsQ0FBQyxNQUFNO3lCQUM3Qzt3QkFDRCxRQUFRLEVBQUUsQ0FBQztxQkFDWjtvQkFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ1I7WUFFRDs7ZUFFRztZQUNILGNBQWMsRUFBRSx3QkFBYyxDQUFDLFVBQVUsQ0FBQztnQkFDeEMsS0FBSyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxTQUFTLENBQUM7YUFDeEMsQ0FBQztTQUNILENBQUM7UUFFRjs7OztrRkFJMEU7UUFFMUUsTUFBTSxPQUFPLEdBQzJCLElBQUEsb0JBQUssRUFBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFM0UsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWY7O1dBRUc7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRDOztXQUVHO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUMzQixnQkFBZ0IsRUFDaEIsUUFBUSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQzlCLENBQUM7UUFFRjs7Ozs7Ozs7O1dBU0c7UUFDSCxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQztZQUN2QixLQUFLLEVBQUUsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDO1lBQ3JDLEtBQUssRUFBRTtnQkFDTCxtQ0FBbUMsRUFBRSxLQUFLO2FBQzNDO1NBQ0YsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDSCxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRXBFOztXQUVHO1FBQ0gsTUFBTSxXQUFXLEdBQ2YsV0FBVyxDQUFDLE1BQU0sSUFBSSxpQkFBUyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxDQUFDO1FBQ3ZFLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQkFBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLEtBQUssQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMzQyxLQUFLLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsd0NBQXdDO1FBQzFDLENBQUM7UUFFRDs7V0FFRztRQUNILElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNoQyxNQUFNLHVCQUF1QixHQUFxQjtnQkFDaEQsYUFBYSxFQUFFO29CQUNiLGNBQWM7b0JBQ2QsTUFBTTtvQkFDTixLQUFLO29CQUNMLFVBQVU7b0JBQ1YsY0FBYztvQkFDZCxRQUFRO29CQUNSLHNCQUFzQjtvQkFDdEIsSUFBSSxDQUFDLGtCQUFrQjtpQkFDeEI7YUFDRixDQUFDO1lBQ0YsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1lBQzVELE1BQU0sZ0JBQWdCLEdBQXFCLElBQUEsb0JBQUssRUFDOUMsdUJBQXVCLEVBQ3ZCO2dCQUNFLEdBQUcsb0JBQW9CO2dCQUN2QixhQUFhLEVBQUU7b0JBQ2IsR0FBRyxDQUFDLHVCQUF1QixDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7b0JBQ2hELEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO2lCQUM5QzthQUNGLENBQ0YsQ0FBQztZQUNGLElBQUksc0JBQVMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdk1ELDhDQXVNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGVzY3JpcHQgfSBmcm9tIFwicHJvamVuXCI7XG5pbXBvcnQge1xuICBOb2RlUGFja2FnZU1hbmFnZXIsXG4gIFRyYW5zZm9ybSxcbiAgVXBncmFkZURlcGVuZGVuY2llc1NjaGVkdWxlLFxufSBmcm9tIFwicHJvamVuL2xpYi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBSZWxlYXNlVHJpZ2dlciB9IGZyb20gXCJwcm9qZW4vbGliL3JlbGVhc2VcIjtcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSBcInRzLWRlZXBtZXJnZVwiO1xuaW1wb3J0IHsgTW9ub3JlcG9Qcm9qZWN0IH0gZnJvbSBcIi4vbW9ub3JlcG8tcHJvamVjdFwiO1xuaW1wb3J0IHsgUG5wbVdvcmtzcGFjZSB9IGZyb20gXCIuLi9wbnBtXCI7XG5pbXBvcnQgeyBSZXNldFRhc2ssIFJlc2V0VGFza09wdGlvbnMgfSBmcm9tIFwiLi4vdGFza3MvcmVzZXQtdGFza1wiO1xuaW1wb3J0IHsgVHVyYm9SZXBvIH0gZnJvbSBcIi4uL3R1cmJvXCI7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSBcIi4uL3ZlcnNpb25zXCI7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBUeXBlU2NyaXB0UHJvamVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBPbWl0PFxuICB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyxcbiAgXCJkZWZhdWx0UmVsZWFzZUJyYW5jaFwiXG4+IHtcbiAgLyoqXG4gICAqIEVuYWJsZSB0aGUgcmVzZXQgdGFzayB0aGF0IGRlbGV0ZXMgYWxsIGJ1aWxkIGFydGlmYWN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzZXRUYXNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgdGhlIHJlc2V0IHRhc2suXG4gICAqL1xuICByZWFkb25seSByZXNldFRhc2tPcHRpb25zPzogUmVzZXRUYXNrT3B0aW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIFR5cGVTY3JpcHRQcm9qZWN0IGV4dGVuZHMgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdCB7XG4gIGNvbnN0cnVjdG9yKHVzZXJPcHRpb25zOiBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMpIHtcbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IFBOUE0gdmVyc2lvbiB0byB1c2UuIFRoaXMgd2lsbCBlaXRoZXIgY29tZSBmcm9tIHRoZSBNb25vUmVwb1xuICAgICAqIHJvb3Qgb3IgZnJvbSB0aGUgZGVmYXVsdCBzcGVjaWZpZWQgaW4gY29uZmlndWxhdG9yLiBJZiB0aGUgdXNlciBwYXNzZXNcbiAgICAgKiBpbiBhIGRpZmZlcmVudCBwbnBtVmVyc2lvbiBpdCB3aWxsIGFsc28gb3ZlcnJpZGUgdGhpcy5cbiAgICAgKi9cbiAgICBjb25zdCBwbnBtVmVyc2lvbiA9XG4gICAgICB1c2VyT3B0aW9ucy5wYXJlbnQgJiYgdXNlck9wdGlvbnMucGFyZW50IGluc3RhbmNlb2YgTW9ub3JlcG9Qcm9qZWN0XG4gICAgICAgID8gdXNlck9wdGlvbnMucGFyZW50LnBucG1WZXJzaW9uXG4gICAgICAgIDogVkVSU0lPTi5QTlBNX1ZFUlNJT047XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHBucG0gd29ya3NwYWNlIGZyb20gdGhlIHBhcmVudCBwcm9qZWN0LlxuICAgICAqL1xuICAgIGNvbnN0IHBucG1Xb3Jrc3BhY2UgPVxuICAgICAgdXNlck9wdGlvbnMucGFyZW50ICYmIHVzZXJPcHRpb25zLnBhcmVudCBpbnN0YW5jZW9mIE1vbm9yZXBvUHJvamVjdFxuICAgICAgICA/IFBucG1Xb3Jrc3BhY2Uub2YodXNlck9wdGlvbnMucGFyZW50IGFzIE1vbm9yZXBvUHJvamVjdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogRGVmYXVsdCBPcHRpb25zXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgZGVmYXVsdE9wdGlvbnM6IE9taXQ8VHlwZVNjcmlwdFByb2plY3RPcHRpb25zLCBcIm5hbWVcIj4gJiB7XG4gICAgICBkZWZhdWx0UmVsZWFzZUJyYW5jaDogc3RyaW5nO1xuICAgIH0gPSB7XG4gICAgICAvKipcbiAgICAgICAqIFRoaXMgaXMgYSBzdGFuZGFyZCwgc28gZG9uJ3QgcmVxdWlyZSBpdCB0byBwYXNzZWQgaW4gZXZlcnl3aGVyZS5cbiAgICAgICAqL1xuICAgICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IFwibWFpblwiLFxuXG4gICAgICAvKipcbiAgICAgICAqIEVuYWJsZSByZXNldCB0YXNrIGJ5IGRlZmF1bHQuXG4gICAgICAgKi9cbiAgICAgIHJlc2V0VGFzazogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBQYWNrYWdpbmcgb3B0aW9uc1xuICAgICAgICovXG4gICAgICBwYWNrYWdlTWFuYWdlcjogTm9kZVBhY2thZ2VNYW5hZ2VyLlBOUE0sXG4gICAgICBwbnBtVmVyc2lvbjogcG5wbVZlcnNpb24sXG4gICAgICBsaWNlbnNlZDogdXNlck9wdGlvbnMubGljZW5zZSAhPT0gdW5kZWZpbmVkIHx8IGZhbHNlLFxuICAgICAgY29weXJpZ2h0T3duZXI6IFwiQ29kZURyaWZ0ZXJzXCIsXG4gICAgICByZWxlYXNlOiBmYWxzZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEb24ndCBhZGQgc2FtcGxlIGNvZGUuXG4gICAgICAgKi9cbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuXG4gICAgICAvKipcbiAgICAgICAqIE1ha2Ugc3VyZSBqZXN0IGNvbmZpZyBpcyBzdG9yZWQgb3V0c2lkZSBvZiBwYWNrYWdlLmpzb25cbiAgICAgICAqL1xuICAgICAgamVzdE9wdGlvbnM6IHtcbiAgICAgICAgY29uZmlnRmlsZVBhdGg6IFwiamVzdC5jb25maWcuanNvblwiLFxuICAgICAgICBqZXN0Q29uZmlnOiB7XG4gICAgICAgICAgcm9vdHM6IFtgPHJvb3REaXI+L3NyY2BdLFxuICAgICAgICAgIHRyYW5zZm9ybToge1xuICAgICAgICAgICAgW1wiXi4rXFxcXC5bdF1zeD8kXCJdOiBuZXcgVHJhbnNmb3JtKFwiQHN3Yy9qZXN0XCIpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbW9kdWxlRmlsZUV4dGVuc2lvbnM6IFtcImpzXCIsIFwidHNcIl0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIFR1cm4gb24gcHJldHRpZXIgZm9ybWF0dGluZ1xuICAgICAgICovXG4gICAgICBwcmV0dGllcjogdHJ1ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBTV0MgZm9yIGZhc3RlciB0ZXN0aW5nXG4gICAgICAgKi9cbiAgICAgIGRldkRlcHM6IFtcIkBzd2MvamVzdFwiLCBcIkBzd2MvY29yZVwiXSxcblxuICAgICAgLyoqXG4gICAgICAgKiBEb24ndCBwYWNrYWdlIHRlc3QgZmlsZXMuXG4gICAgICAgKi9cbiAgICAgIG5wbUlnbm9yZU9wdGlvbnM6IHtcbiAgICAgICAgaWdub3JlUGF0dGVybnM6IFtcIiouc3BlYy4qXCIsIFwiKi50ZXN0LipcIl0sXG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIE9wdGlvbnMgZm9yIHRoZSBhdXRvbWF0ZWQgZGVwZW5kZW5jeSB1cGdyYWRlIHRhc2sgLyB3b3JrZmxvd1xuICAgICAgICogQXV0b21hdGljYWxseSBleGNsdWRlIGFueSBwYWNrYWdlcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5IHRoZSByb290XG4gICAgICAgKiBwcm9qZWN0IGFzIGRlZmF1bHQgY2F0YWxvZyBkZXBlbmRlbmNpZXMgc2luY2Ugd2Ugd2FudCB0byBsZXQgdGhlXG4gICAgICAgKiBjYXRhbG9nIG1hbmFnZSB0aG9zZSBkZXBlbmRlbmNpZXMuXG4gICAgICAgKi9cbiAgICAgIGRlcHNVcGdyYWRlT3B0aW9uczoge1xuICAgICAgICBleGNsdWRlOiBPYmplY3Qua2V5cyhwbnBtV29ya3NwYWNlPy5kZWZhdWx0Q2F0YWxvZyB8fCB7fSksXG4gICAgICAgIC4uLih1c2VyT3B0aW9ucy5wYXJlbnQgJiYgdXNlck9wdGlvbnMucGFyZW50IGluc3RhbmNlb2YgTW9ub3JlcG9Qcm9qZWN0XG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIHdvcmtmbG93T3B0aW9uczoge1xuICAgICAgICAgICAgICAgIHNjaGVkdWxlOiBVcGdyYWRlRGVwZW5kZW5jaWVzU2NoZWR1bGUuV0VFS0xZLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjb29sZG93bjogMSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogT25seSByZWxlYXNlIHdoZW4gdGhlIHBhY2thZ2UgZm9sZGVyIHNvdXJjY2UgY29udGVudCBjaGFuZ2VzXG4gICAgICAgKi9cbiAgICAgIHJlbGVhc2VUcmlnZ2VyOiBSZWxlYXNlVHJpZ2dlci5jb250aW51b3VzKHtcbiAgICAgICAgcGF0aHM6IFtgJHt1c2VyT3B0aW9ucy5vdXRkaXJ9L3NyYy8qKmBdLFxuICAgICAgfSksXG4gICAgfTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBNZXJnZSBkZWZhdWx0cyBpbnRvIHVzZXIgb3B0aW9uc1xuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIGNvbnN0IG9wdGlvbnM6IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyAmXG4gICAgICB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyA9IG1lcmdlKGRlZmF1bHRPcHRpb25zLCB1c2VyT3B0aW9ucyk7XG5cbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBqZXN0IHNpbmNlIHdlJ3ZlIHN3YXBwZWQgaW4gQHN3Yy9qZXN0IGluc3RlYWQgb2YgdHMtamVzdC5cbiAgICAgKi9cbiAgICB0aGlzLmRlcHMucmVtb3ZlRGVwZW5kZW5jeShcInRzLWplc3RcIik7XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZ5IHBhY2thZ2UgbWFuYWdlclxuICAgICAqL1xuICAgIHRoaXMucGFja2FnZS5maWxlLmFkZE92ZXJyaWRlKFxuICAgICAgXCJwYWNrYWdlTWFuYWdlclwiLFxuICAgICAgYHBucG1AJHtvcHRpb25zLnBucG1WZXJzaW9ufWAsXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogRGlzYWJsZSB0aGlzIHJ1bGUgZm9yIGFsbCB0ZXN0IGZpbGVzLlxuICAgICAqXG4gICAgICogVW5sZXNzIHdlIHR1cm4gdGhpcyBvZmYsIEVTTGludCB3aWxsIHN1Z2dlc3QgdGhhdCBhbnl0aGluZyBmb3VuZCBpbiBhIHRlc3RcbiAgICAgKiBuZWVkcyB0byBiZSBhIGRlcCBpbnN0ZWFkIG9mIGEgZGV2RGVwLiBQcm9qZW4gYWN0dWFsbHkgYWxyZWFkeSB0dXJucyBvZmZcbiAgICAgKiB0aGUgcnVsZSBmb3IgZmlsZXMgaW4gdGhlIHRlc3RzLyogZm9sZGVyIGJ1dCBzaW5jZSB3ZSBjb21tb25seSBwdXQgdGVzdHNcbiAgICAgKiBuZXh0IHRvIHRoZSBjb2RlIGl0J3MgdGVzdGluZywgd2UgbmVlZCB0byBkbyB0aGlzIG91cnNlbHZlcy5cbiAgICAgKlxuICAgICAqL1xuICAgIHRoaXMuZXNsaW50Py5hZGRPdmVycmlkZSh7XG4gICAgICBmaWxlczogW1wiKiovKi50ZXN0LipcIiwgXCIqKi8qLnNwZWMuKlwiXSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgIFwiaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXCI6IFwib2ZmXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogU29tZSBzdGFuZGFyZCBpZ25vcmVzIGZvciBhbGwgcHJvamVjdHMuXG4gICAgICovXG4gICAgdGhpcy5naXRpZ25vcmU/LmFkZFBhdHRlcm5zKFwiLkRTX1N0b3JlXCIpO1xuICAgIHRoaXMubnBtaWdub3JlPy5hZGRQYXR0ZXJucyhcIiouc3BlYy4qXCIsIFwiKi50ZXN0LipcIiwgXCJfX2ZpeHR1cmVzX19cIik7XG5cbiAgICAvKipcbiAgICAgKiBJZiB0dXJibyBpcyBhY3RpdmUgaW4gdGhlIHBhcmVudCBwcm9qZWN0LCBjb25maWd1cmUgaXQgaGVyZS5cbiAgICAgKi9cbiAgICBjb25zdCB0dXJib0FjdGl2ZSA9XG4gICAgICB1c2VyT3B0aW9ucy5wYXJlbnQgJiYgVHVyYm9SZXBvLm9mKHVzZXJPcHRpb25zLnBhcmVudCkgIT09IHVuZGVmaW5lZDtcbiAgICBpZiAodHVyYm9BY3RpdmUpIHtcbiAgICAgIGNvbnN0IHR1cmJvID0gbmV3IFR1cmJvUmVwbyh0aGlzKTtcbiAgICAgIHR1cmJvLmNvbXBpbGVUYXNrPy5vdXRwdXRzLnB1c2goXCJkaXN0LyoqXCIpO1xuICAgICAgdHVyYm8uY29tcGlsZVRhc2s/Lm91dHB1dHMucHVzaChcImxpYi8qKlwiKTtcbiAgICAgIC8vdHVyYm8udGVzdFRhc2s/LmlucHV0cy5wdXNoKFwic3JjLyoqXCIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCByZXNldCB0YXNrIGlmIGVuYWJsZWQuXG4gICAgICovXG4gICAgaWYgKG9wdGlvbnMucmVzZXRUYXNrICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgZGVmYXVsdFJlc2V0VGFza09wdGlvbnM6IFJlc2V0VGFza09wdGlvbnMgPSB7XG4gICAgICAgIHBhdGhzVG9SZW1vdmU6IFtcbiAgICAgICAgICBcIm5vZGVfbW9kdWxlc1wiLFxuICAgICAgICAgIFwiZGlzdFwiLFxuICAgICAgICAgIFwibGliXCIsXG4gICAgICAgICAgXCJjb3ZlcmFnZVwiLFxuICAgICAgICAgIFwidGVzdC1yZXBvcnRzXCIsXG4gICAgICAgICAgXCIudHVyYm9cIixcbiAgICAgICAgICBcInRzY29uZmlnLnRzYnVpbGRpbmZvXCIsXG4gICAgICAgICAgdGhpcy5hcnRpZmFjdHNEaXJlY3RvcnksXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdXNlclJlc2V0VGFza09wdGlvbnMgPSBvcHRpb25zLnJlc2V0VGFza09wdGlvbnMgPz8ge307XG4gICAgICBjb25zdCByZXNldFRhc2tPcHRpb25zOiBSZXNldFRhc2tPcHRpb25zID0gbWVyZ2UoXG4gICAgICAgIGRlZmF1bHRSZXNldFRhc2tPcHRpb25zLFxuICAgICAgICB7XG4gICAgICAgICAgLi4udXNlclJlc2V0VGFza09wdGlvbnMsXG4gICAgICAgICAgcGF0aHNUb1JlbW92ZTogW1xuICAgICAgICAgICAgLi4uKGRlZmF1bHRSZXNldFRhc2tPcHRpb25zLnBhdGhzVG9SZW1vdmUgPz8gW10pLFxuICAgICAgICAgICAgLi4uKHVzZXJSZXNldFRhc2tPcHRpb25zLnBhdGhzVG9SZW1vdmUgPz8gW10pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgbmV3IFJlc2V0VGFzayh0aGlzLCByZXNldFRhc2tPcHRpb25zKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1 +0,0 @@
1
- export * from "./reset-task";
@@ -1,18 +0,0 @@
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("./reset-task"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFza3MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3Jlc2V0LXRhc2tcIjtcbiJdfQ==