@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.
Files changed (38) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +761 -1
  3. package/lib/aws/aws-deployment-config.d.ts +45 -108
  4. package/lib/aws/aws-deployment-config.js +69 -100
  5. package/lib/aws/aws-deployment-target.d.ts +210 -0
  6. package/lib/aws/aws-deployment-target.js +202 -0
  7. package/lib/aws/index.d.ts +1 -1
  8. package/lib/aws/index.js +2 -2
  9. package/lib/index.d.ts +9 -0
  10. package/lib/index.js +26 -0
  11. package/lib/jsii/index.d.ts +1 -0
  12. package/lib/jsii/index.js +18 -0
  13. package/lib/jsii/jsii-faker.d.ts +47 -0
  14. package/lib/jsii/jsii-faker.js +103 -0
  15. package/lib/pnpm/pnpm-workspace.d.ts +240 -1
  16. package/lib/pnpm/pnpm-workspace.js +155 -15
  17. package/lib/projects/index.d.ts +2 -0
  18. package/lib/projects/index.js +19 -0
  19. package/lib/projects/monorepo-project.d.ts +50 -0
  20. package/lib/projects/monorepo-project.js +203 -0
  21. package/lib/projects/typescript-project.d.ts +4 -0
  22. package/lib/projects/typescript-project.js +150 -0
  23. package/lib/turbo/turbo-repo.d.ts +116 -9
  24. package/lib/turbo/turbo-repo.js +107 -20
  25. package/lib/versions.d.ts +19 -7
  26. package/lib/versions.js +20 -8
  27. package/lib/vscode/vscode.js +2 -1
  28. package/lib/workflows/aws-deploy-workflow.d.ts +84 -0
  29. package/lib/workflows/aws-deploy-workflow.js +312 -0
  30. package/lib/workflows/index.d.ts +1 -2
  31. package/lib/workflows/index.js +2 -3
  32. package/package.json +21 -20
  33. package/lib/workflows/build-workflow.d.ts +0 -13
  34. package/lib/workflows/build-workflow.js +0 -64
  35. package/lib/workflows/deploy-workflow.d.ts +0 -17
  36. package/lib/workflows/deploy-workflow.js +0 -113
  37. package/lib/workflows/steps/deploy.d.ts +0 -4
  38. 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,4 @@
1
+ import { typescript } from "projen";
2
+ export declare class TypeScriptProject extends typescript.TypeScriptProject {
3
+ constructor(userOptions: Omit<typescript.TypeScriptProjectOptions, "defaultReleaseBranch">);
4
+ }
@@ -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: "^2.5.2"
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: 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
- constructor(project: Project, options?: TurboRepoOptions);
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
  }