@codedrifters/configulator 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +4 -0
  3. package/lib/aws/aws-deployment-config.d.ts +141 -0
  4. package/lib/aws/aws-deployment-config.js +165 -0
  5. package/lib/aws/aws-types.d.ts +63 -0
  6. package/lib/aws/aws-types.js +9 -0
  7. package/lib/aws/index.d.ts +2 -0
  8. package/lib/aws/index.js +19 -0
  9. package/lib/git/git-types.d.ts +18 -0
  10. package/lib/git/git-types.js +9 -0
  11. package/lib/git/index.d.ts +1 -0
  12. package/lib/git/index.js +18 -0
  13. package/lib/pnpm/index.d.ts +1 -0
  14. package/lib/pnpm/index.js +18 -0
  15. package/lib/pnpm/pnpm-workspace.d.ts +5 -0
  16. package/lib/pnpm/pnpm-workspace.js +36 -0
  17. package/lib/turbo/index.d.ts +2 -0
  18. package/lib/turbo/index.js +19 -0
  19. package/lib/turbo/turbo-repo-task.d.ts +36 -0
  20. package/lib/turbo/turbo-repo-task.js +43 -0
  21. package/lib/turbo/turbo-repo.d.ts +268 -0
  22. package/lib/turbo/turbo-repo.js +213 -0
  23. package/lib/typescript/index.d.ts +1 -0
  24. package/lib/typescript/index.js +18 -0
  25. package/lib/typescript/typescript-config.d.ts +13 -0
  26. package/lib/typescript/typescript-config.js +40 -0
  27. package/lib/versions.d.ts +22 -0
  28. package/lib/versions.js +26 -0
  29. package/lib/vscode/index.d.ts +1 -0
  30. package/lib/vscode/index.js +18 -0
  31. package/lib/vscode/vscode.d.ts +10 -0
  32. package/lib/vscode/vscode.js +37 -0
  33. package/lib/workflows/build-workflow.d.ts +13 -0
  34. package/lib/workflows/build-workflow.js +64 -0
  35. package/lib/workflows/deploy-workflow.d.ts +17 -0
  36. package/lib/workflows/deploy-workflow.js +113 -0
  37. package/lib/workflows/index.d.ts +2 -0
  38. package/lib/workflows/index.js +19 -0
  39. package/lib/workflows/steps/deploy.d.ts +4 -0
  40. package/lib/workflows/steps/deploy.js +62 -0
  41. package/package.json +63 -0
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TypeScriptConfig = void 0;
4
+ const node_path_1 = require("node:path");
5
+ const projen_1 = require("projen");
6
+ const path_1 = require("projen/lib/util/path");
7
+ /*******************************************************************************
8
+ *
9
+ * Update / customize typescript configs for a project.
10
+ *
11
+ * Update typescript paths in tsconfig so we don't have to compile packages to
12
+ * dist in order to see changes.
13
+ *
14
+ ******************************************************************************/
15
+ class TypeScriptConfig extends projen_1.Component {
16
+ constructor(project) {
17
+ super(project);
18
+ /**
19
+ * Container for paths to insert at the end.
20
+ */
21
+ let tsPaths = {};
22
+ const workspaceDeps = project.deps.all.filter((d) => d.version === "workspace:*");
23
+ workspaceDeps.forEach((dep) => {
24
+ const subproject = project.root.subprojects.find((p) => p.package.packageName === dep.name);
25
+ if (!subproject) {
26
+ throw new Error(`Could not find subproject ${dep.name} in monorepo.`);
27
+ }
28
+ tsPaths = {
29
+ ...tsPaths,
30
+ [dep.name]: [
31
+ (0, path_1.ensureRelativePathStartsWithDot)((0, node_path_1.relative)(project.outdir, subproject.outdir)),
32
+ ],
33
+ };
34
+ });
35
+ project.tsconfig?.file.addOverride("compilerOptions.paths", tsPaths);
36
+ project.tsconfigDev?.file.addOverride("compilerOptions.paths", tsPaths);
37
+ }
38
+ }
39
+ exports.TypeScriptConfig = TypeScriptConfig;
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXNjcmlwdC90eXBlc2NyaXB0LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBcUM7QUFDckMsbUNBQW1DO0FBRW5DLCtDQUF1RTtBQUV2RTs7Ozs7OztnRkFPZ0Y7QUFDaEYsTUFBYSxnQkFBaUIsU0FBUSxrQkFBUztJQUM3QyxZQUFZLE9BQTBCO1FBQ3BDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmOztXQUVHO1FBQ0gsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWpCLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FDM0MsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssYUFBYSxDQUNuQyxDQUFDO1FBRUYsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzVCLE1BQU0sVUFBVSxHQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FDZCxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWxELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsR0FBRyxDQUFDLElBQUksZUFBZSxDQUFDLENBQUM7WUFDeEUsQ0FBQztZQUVELE9BQU8sR0FBRztnQkFDUixHQUFHLE9BQU87Z0JBQ1YsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ1YsSUFBQSxzQ0FBK0IsRUFDN0IsSUFBQSxvQkFBUSxFQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUM1QztpQkFDRjthQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyRSxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUUsQ0FBQztDQUNGO0FBbkNELDRDQW1DQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbGF0aXZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgVHlwZVNjcmlwdFByb2plY3QgfSBmcm9tIFwicHJvamVuL2xpYi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBlbnN1cmVSZWxhdGl2ZVBhdGhTdGFydHNXaXRoRG90IH0gZnJvbSBcInByb2plbi9saWIvdXRpbC9wYXRoXCI7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogVXBkYXRlIC8gY3VzdG9taXplIHR5cGVzY3JpcHQgY29uZmlncyBmb3IgYSBwcm9qZWN0LlxuICpcbiAqIFVwZGF0ZSB0eXBlc2NyaXB0IHBhdGhzIGluIHRzY29uZmlnIHNvIHdlIGRvbid0IGhhdmUgdG8gY29tcGlsZSBwYWNrYWdlcyB0b1xuICogZGlzdCBpbiBvcmRlciB0byBzZWUgY2hhbmdlcy5cbiAqXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuZXhwb3J0IGNsYXNzIFR5cGVTY3JpcHRDb25maWcgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBUeXBlU2NyaXB0UHJvamVjdCkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgLyoqXG4gICAgICogQ29udGFpbmVyIGZvciBwYXRocyB0byBpbnNlcnQgYXQgdGhlIGVuZC5cbiAgICAgKi9cbiAgICBsZXQgdHNQYXRocyA9IHt9O1xuXG4gICAgY29uc3Qgd29ya3NwYWNlRGVwcyA9IHByb2plY3QuZGVwcy5hbGwuZmlsdGVyKFxuICAgICAgKGQpID0+IGQudmVyc2lvbiA9PT0gXCJ3b3Jrc3BhY2U6KlwiLFxuICAgICk7XG5cbiAgICB3b3Jrc3BhY2VEZXBzLmZvckVhY2goKGRlcCkgPT4ge1xuICAgICAgY29uc3Qgc3VicHJvamVjdCA9IChcbiAgICAgICAgcHJvamVjdC5yb290LnN1YnByb2plY3RzIGFzIEFycmF5PFR5cGVTY3JpcHRQcm9qZWN0PlxuICAgICAgKS5maW5kKChwKSA9PiBwLnBhY2thZ2UucGFja2FnZU5hbWUgPT09IGRlcC5uYW1lKTtcblxuICAgICAgaWYgKCFzdWJwcm9qZWN0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgc3VicHJvamVjdCAke2RlcC5uYW1lfSBpbiBtb25vcmVwby5gKTtcbiAgICAgIH1cblxuICAgICAgdHNQYXRocyA9IHtcbiAgICAgICAgLi4udHNQYXRocyxcbiAgICAgICAgW2RlcC5uYW1lXTogW1xuICAgICAgICAgIGVuc3VyZVJlbGF0aXZlUGF0aFN0YXJ0c1dpdGhEb3QoXG4gICAgICAgICAgICByZWxhdGl2ZShwcm9qZWN0Lm91dGRpciwgc3VicHJvamVjdC5vdXRkaXIpLFxuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcHJvamVjdC50c2NvbmZpZz8uZmlsZS5hZGRPdmVycmlkZShcImNvbXBpbGVyT3B0aW9ucy5wYXRoc1wiLCB0c1BhdGhzKTtcbiAgICBwcm9qZWN0LnRzY29uZmlnRGV2Py5maWxlLmFkZE92ZXJyaWRlKFwiY29tcGlsZXJPcHRpb25zLnBhdGhzXCIsIHRzUGF0aHMpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,22 @@
1
+ export declare const VERSION: {
2
+ /**
3
+ * CDK CLI for workflows and command line operations..
4
+ */
5
+ readonly CDK_CLI_VERISON: "2.1018.0";
6
+ /**
7
+ * CDK Version to use for construct projects.
8
+ */
9
+ readonly CDK_LIB_VERISON: "2.200.1";
10
+ /**
11
+ * Version of Node.js to use in workflows at github actions.
12
+ */
13
+ readonly NODE_WORKFLOWS: "20";
14
+ /**
15
+ * Version of PNPM to use in workflows at github actions.
16
+ */
17
+ readonly PNPM_VERSION: "10.12.1";
18
+ /**
19
+ * What version of the turborepo library should we use?
20
+ */
21
+ readonly TURBO_VERSION: "2.5.4";
22
+ };
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VERSION = void 0;
4
+ exports.VERSION = {
5
+ /**
6
+ * CDK CLI for workflows and command line operations..
7
+ */
8
+ CDK_CLI_VERISON: "2.1018.0",
9
+ /**
10
+ * CDK Version to use for construct projects.
11
+ */
12
+ CDK_LIB_VERISON: "2.200.1",
13
+ /**
14
+ * Version of Node.js to use in workflows at github actions.
15
+ */
16
+ NODE_WORKFLOWS: "20",
17
+ /**
18
+ * Version of PNPM to use in workflows at github actions.
19
+ */
20
+ PNPM_VERSION: "10.12.1",
21
+ /**
22
+ * What version of the turborepo library should we use?
23
+ */
24
+ TURBO_VERSION: "2.5.4",
25
+ };
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdmVyc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxPQUFPLEdBQUc7SUFDckI7O09BRUc7SUFDSCxlQUFlLEVBQUUsVUFBVTtJQUUzQjs7T0FFRztJQUNILGVBQWUsRUFBRSxTQUFTO0lBRTFCOztPQUVHO0lBQ0gsY0FBYyxFQUFFLElBQUk7SUFFcEI7O09BRUc7SUFDSCxZQUFZLEVBQUUsU0FBUztJQUV2Qjs7T0FFRztJQUNILGFBQWEsRUFBRSxPQUFPO0NBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBWRVJTSU9OID0ge1xuICAvKipcbiAgICogQ0RLIENMSSBmb3Igd29ya2Zsb3dzIGFuZCBjb21tYW5kIGxpbmUgb3BlcmF0aW9ucy4uXG4gICAqL1xuICBDREtfQ0xJX1ZFUklTT046IFwiMi4xMDE4LjBcIixcblxuICAvKipcbiAgICogQ0RLIFZlcnNpb24gdG8gdXNlIGZvciBjb25zdHJ1Y3QgcHJvamVjdHMuXG4gICAqL1xuICBDREtfTElCX1ZFUklTT046IFwiMi4yMDAuMVwiLFxuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIE5vZGUuanMgdG8gdXNlIGluIHdvcmtmbG93cyBhdCBnaXRodWIgYWN0aW9ucy5cbiAgICovXG4gIE5PREVfV09SS0ZMT1dTOiBcIjIwXCIsXG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgUE5QTSB0byB1c2UgaW4gd29ya2Zsb3dzIGF0IGdpdGh1YiBhY3Rpb25zLlxuICAgKi9cbiAgUE5QTV9WRVJTSU9OOiBcIjEwLjEyLjFcIixcblxuICAvKipcbiAgICogV2hhdCB2ZXJzaW9uIG9mIHRoZSB0dXJib3JlcG8gbGlicmFyeSBzaG91bGQgd2UgdXNlP1xuICAgKi9cbiAgVFVSQk9fVkVSU0lPTjogXCIyLjUuNFwiLFxufSBhcyBjb25zdDtcbiJdfQ==
@@ -0,0 +1 @@
1
+ export * from "./vscode";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./vscode"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdnNjb2RlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi92c2NvZGVcIjtcbiJdfQ==
@@ -0,0 +1,10 @@
1
+ import { Component } from "projen";
2
+ import { TypeScriptAppProject } from "projen/lib/typescript";
3
+ /*******************************************************************************
4
+ *
5
+ * Configure VSCode Settings
6
+ *
7
+ ******************************************************************************/
8
+ export declare class VSCodeConfig extends Component {
9
+ constructor(project: TypeScriptAppProject);
10
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VSCodeConfig = void 0;
4
+ const projen_1 = require("projen");
5
+ /*******************************************************************************
6
+ *
7
+ * Configure VSCode Settings
8
+ *
9
+ ******************************************************************************/
10
+ class VSCodeConfig extends projen_1.Component {
11
+ constructor(project) {
12
+ super(project);
13
+ /**
14
+ * Create instance of config file.
15
+ */
16
+ const vsConfig = new projen_1.vscode.VsCode(project);
17
+ /**
18
+ * Add some basic configuration settings to the VS Code settings file:
19
+ *
20
+ * - Set the tab size to 2 spaces
21
+ * - Enable bracket pair colorization
22
+ * - Highlight active bracket pairs
23
+ * - Add rulers at 80 and 120 characters
24
+ */
25
+ const vsSettings = new projen_1.vscode.VsCodeSettings(vsConfig);
26
+ vsSettings.addSetting("editor.tabSize", 2);
27
+ vsSettings.addSetting("editor.bracketPairColorization.enabled", true);
28
+ vsSettings.addSetting("editor.guides.bracketPairs", "active");
29
+ vsSettings.addSetting("editor.rulers", [80, 120]);
30
+ /**
31
+ * Add some ESLint specific settings to the VS Code settings file.
32
+ */
33
+ vsSettings.addSetting("editor.codeActionsOnSave", { "source.fixAll.eslint": "explicit" }, "typescript");
34
+ }
35
+ }
36
+ exports.VSCodeConfig = VSCodeConfig;
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnNjb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZzY29kZS92c2NvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQTJDO0FBRzNDOzs7O2dGQUlnRjtBQUVoRixNQUFhLFlBQWEsU0FBUSxrQkFBUztJQUN6QyxZQUFZLE9BQTZCO1FBQ3ZDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmOztXQUVHO1FBQ0gsTUFBTSxRQUFRLEdBQUcsSUFBSSxlQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVDOzs7Ozs7O1dBT0c7UUFDSCxNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkQsVUFBVSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQyxVQUFVLENBQUMsVUFBVSxDQUFDLHdDQUF3QyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RFLFVBQVUsQ0FBQyxVQUFVLENBQUMsNEJBQTRCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUQsVUFBVSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVsRDs7V0FFRztRQUNILFVBQVUsQ0FBQyxVQUFVLENBQ25CLDBCQUEwQixFQUMxQixFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxFQUN0QyxZQUFZLENBQ2IsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWhDRCxvQ0FnQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIHZzY29kZSB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IFR5cGVTY3JpcHRBcHBQcm9qZWN0IH0gZnJvbSBcInByb2plbi9saWIvdHlwZXNjcmlwdFwiO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqIENvbmZpZ3VyZSBWU0NvZGUgU2V0dGluZ3NcbiAqXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5leHBvcnQgY2xhc3MgVlNDb2RlQ29uZmlnIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogVHlwZVNjcmlwdEFwcFByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBpbnN0YW5jZSBvZiBjb25maWcgZmlsZS5cbiAgICAgKi9cbiAgICBjb25zdCB2c0NvbmZpZyA9IG5ldyB2c2NvZGUuVnNDb2RlKHByb2plY3QpO1xuXG4gICAgLyoqXG4gICAgICogQWRkIHNvbWUgYmFzaWMgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0byB0aGUgVlMgQ29kZSBzZXR0aW5ncyBmaWxlOlxuICAgICAqXG4gICAgICogLSBTZXQgdGhlIHRhYiBzaXplIHRvIDIgc3BhY2VzXG4gICAgICogLSBFbmFibGUgYnJhY2tldCBwYWlyIGNvbG9yaXphdGlvblxuICAgICAqIC0gSGlnaGxpZ2h0IGFjdGl2ZSBicmFja2V0IHBhaXJzXG4gICAgICogLSBBZGQgcnVsZXJzIGF0IDgwIGFuZCAxMjAgY2hhcmFjdGVyc1xuICAgICAqL1xuICAgIGNvbnN0IHZzU2V0dGluZ3MgPSBuZXcgdnNjb2RlLlZzQ29kZVNldHRpbmdzKHZzQ29uZmlnKTtcbiAgICB2c1NldHRpbmdzLmFkZFNldHRpbmcoXCJlZGl0b3IudGFiU2l6ZVwiLCAyKTtcbiAgICB2c1NldHRpbmdzLmFkZFNldHRpbmcoXCJlZGl0b3IuYnJhY2tldFBhaXJDb2xvcml6YXRpb24uZW5hYmxlZFwiLCB0cnVlKTtcbiAgICB2c1NldHRpbmdzLmFkZFNldHRpbmcoXCJlZGl0b3IuZ3VpZGVzLmJyYWNrZXRQYWlyc1wiLCBcImFjdGl2ZVwiKTtcbiAgICB2c1NldHRpbmdzLmFkZFNldHRpbmcoXCJlZGl0b3IucnVsZXJzXCIsIFs4MCwgMTIwXSk7XG5cbiAgICAvKipcbiAgICAgKiBBZGQgc29tZSBFU0xpbnQgc3BlY2lmaWMgc2V0dGluZ3MgdG8gdGhlIFZTIENvZGUgc2V0dGluZ3MgZmlsZS5cbiAgICAgKi9cbiAgICB2c1NldHRpbmdzLmFkZFNldHRpbmcoXG4gICAgICBcImVkaXRvci5jb2RlQWN0aW9uc09uU2F2ZVwiLFxuICAgICAgeyBcInNvdXJjZS5maXhBbGwuZXNsaW50XCI6IFwiZXhwbGljaXRcIiB9LFxuICAgICAgXCJ0eXBlc2NyaXB0XCIsXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,13 @@
1
+ import { Component } from "projen";
2
+ import { TypeScriptAppProject } from "projen/lib/typescript";
3
+ export declare const PREVIEW_DEPLOY_NAME = "preview-deploy";
4
+ export declare class BuildWorkflow extends Component {
5
+ project: TypeScriptAppProject;
6
+ constructor(project: TypeScriptAppProject);
7
+ /**
8
+ * This runs after all the projects are setup but before any files are
9
+ * synthesized. This allows us to update the build yaml with complete
10
+ * information.
11
+ */
12
+ preSynthesize(): void;
13
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BuildWorkflow = exports.PREVIEW_DEPLOY_NAME = void 0;
4
+ const projen_1 = require("projen");
5
+ const awscdk_1 = require("projen/lib/awscdk");
6
+ const workflows_model_1 = require("projen/lib/github/workflows-model");
7
+ const deploy_1 = require("./steps/deploy");
8
+ const aws_deployment_config_1 = require("../aws/aws-deployment-config");
9
+ exports.PREVIEW_DEPLOY_NAME = "preview-deploy";
10
+ class BuildWorkflow extends projen_1.Component {
11
+ constructor(project) {
12
+ super(project);
13
+ this.project = project;
14
+ }
15
+ /**
16
+ * This runs after all the projects are setup but before any files are
17
+ * synthesized. This allows us to update the build yaml with complete
18
+ * information.
19
+ */
20
+ preSynthesize() {
21
+ super.preSynthesize();
22
+ /**
23
+ * Deploy PR preview to dev environment(s)
24
+ */
25
+ this.project.subprojects
26
+ // only AwsCdkTypeScriptApp projects
27
+ .filter((subproject) => subproject instanceof awscdk_1.AwsCdkTypeScriptApp)
28
+ .forEach((subproject) => {
29
+ /**
30
+ * an array of all deployment configs.
31
+ */
32
+ const deployConfigs = aws_deployment_config_1.AwsDeploymentConfig.of(subproject);
33
+ /**
34
+ * Any configs? let's see if any have CI support for PR deploys!
35
+ */
36
+ if (deployConfigs) {
37
+ deployConfigs.forEach((config) => {
38
+ config.deploymentTargets
39
+ // only development targets for CI
40
+ .filter((dt) => dt.ciDeployment &&
41
+ dt.awsDeploymentType === aws_deployment_config_1.AWS_DEPLOY_TYPE.DEV)
42
+ .forEach((dt) => {
43
+ /**
44
+ * Nice long annoying but unique name.
45
+ */
46
+ const deployJobName = `${exports.PREVIEW_DEPLOY_NAME}-${this.project.name}-${dt.account}-${dt.region}`;
47
+ this.project.buildWorkflow?.addPostBuildJob(deployJobName, {
48
+ name: `Deploy PR Preview to ${dt.account}/${dt.region}`,
49
+ runsOn: ["ubuntu-latest"],
50
+ permissions: {
51
+ contents: workflows_model_1.JobPermission.READ,
52
+ idToken: workflows_model_1.JobPermission.WRITE,
53
+ },
54
+ concurrency: deployJobName,
55
+ steps: [...(0, deploy_1.deploySteps)(subproject, dt)],
56
+ });
57
+ });
58
+ });
59
+ }
60
+ });
61
+ }
62
+ }
63
+ exports.BuildWorkflow = BuildWorkflow;
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtd29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ya2Zsb3dzL2J1aWxkLXdvcmtmbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFtQztBQUNuQyw4Q0FBd0Q7QUFDeEQsdUVBQWtFO0FBRWxFLDJDQUE2QztBQUM3Qyx3RUFHc0M7QUFFekIsUUFBQSxtQkFBbUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUVwRCxNQUFhLGFBQWMsU0FBUSxrQkFBUztJQUMxQyxZQUFtQixPQUE2QjtRQUM5QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFERSxZQUFPLEdBQVAsT0FBTyxDQUFzQjtJQUVoRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGFBQWE7UUFDWCxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFdEI7O1dBRUc7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDdEIsb0NBQW9DO2FBQ25DLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxZQUFZLDRCQUFtQixDQUFDO2FBQ2pFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3RCOztlQUVHO1lBQ0gsTUFBTSxhQUFhLEdBQUcsMkNBQW1CLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXpEOztlQUVHO1lBQ0gsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUMvQixNQUFNLENBQUMsaUJBQWlCO3dCQUN0QixrQ0FBa0M7eUJBQ2pDLE1BQU0sQ0FDTCxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQ0wsRUFBRSxDQUFDLFlBQVk7d0JBQ2YsRUFBRSxDQUFDLGlCQUFpQixLQUFLLHVDQUFlLENBQUMsR0FBRyxDQUMvQzt5QkFDQSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTt3QkFDZDs7MkJBRUc7d0JBQ0gsTUFBTSxhQUFhLEdBQUcsR0FBRywyQkFBbUIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFFL0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLGFBQWEsRUFBRTs0QkFDekQsSUFBSSxFQUFFLHdCQUF3QixFQUFFLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUU7NEJBQ3ZELE1BQU0sRUFBRSxDQUFDLGVBQWUsQ0FBQzs0QkFDekIsV0FBVyxFQUFFO2dDQUNYLFFBQVEsRUFBRSwrQkFBYSxDQUFDLElBQUk7Z0NBQzVCLE9BQU8sRUFBRSwrQkFBYSxDQUFDLEtBQUs7NkJBQzdCOzRCQUNELFdBQVcsRUFBRSxhQUFhOzRCQUMxQixLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUEsb0JBQVcsRUFBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7eUJBQ3hDLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDRjtBQTFERCxzQ0EwREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwicHJvamVuXCI7XG5pbXBvcnQgeyBBd3NDZGtUeXBlU2NyaXB0QXBwIH0gZnJvbSBcInByb2plbi9saWIvYXdzY2RrXCI7XG5pbXBvcnQgeyBKb2JQZXJtaXNzaW9uIH0gZnJvbSBcInByb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbFwiO1xuaW1wb3J0IHsgVHlwZVNjcmlwdEFwcFByb2plY3QgfSBmcm9tIFwicHJvamVuL2xpYi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBkZXBsb3lTdGVwcyB9IGZyb20gXCIuL3N0ZXBzL2RlcGxveVwiO1xuaW1wb3J0IHtcbiAgQVdTX0RFUExPWV9UWVBFLFxuICBBd3NEZXBsb3ltZW50Q29uZmlnLFxufSBmcm9tIFwiLi4vYXdzL2F3cy1kZXBsb3ltZW50LWNvbmZpZ1wiO1xuXG5leHBvcnQgY29uc3QgUFJFVklFV19ERVBMT1lfTkFNRSA9IFwicHJldmlldy1kZXBsb3lcIjtcblxuZXhwb3J0IGNsYXNzIEJ1aWxkV29ya2Zsb3cgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcHJvamVjdDogVHlwZVNjcmlwdEFwcFByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHJ1bnMgYWZ0ZXIgYWxsIHRoZSBwcm9qZWN0cyBhcmUgc2V0dXAgYnV0IGJlZm9yZSBhbnkgZmlsZXMgYXJlXG4gICAqIHN5bnRoZXNpemVkLiBUaGlzIGFsbG93cyB1cyB0byB1cGRhdGUgdGhlIGJ1aWxkIHlhbWwgd2l0aCBjb21wbGV0ZVxuICAgKiBpbmZvcm1hdGlvbi5cbiAgICovXG4gIHByZVN5bnRoZXNpemUoKTogdm9pZCB7XG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpO1xuXG4gICAgLyoqXG4gICAgICogRGVwbG95IFBSIHByZXZpZXcgdG8gZGV2IGVudmlyb25tZW50KHMpXG4gICAgICovXG4gICAgdGhpcy5wcm9qZWN0LnN1YnByb2plY3RzXG4gICAgICAvLyBvbmx5IEF3c0Nka1R5cGVTY3JpcHRBcHAgcHJvamVjdHNcbiAgICAgIC5maWx0ZXIoKHN1YnByb2plY3QpID0+IHN1YnByb2plY3QgaW5zdGFuY2VvZiBBd3NDZGtUeXBlU2NyaXB0QXBwKVxuICAgICAgLmZvckVhY2goKHN1YnByb2plY3QpID0+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGFuIGFycmF5IG9mIGFsbCBkZXBsb3ltZW50IGNvbmZpZ3MuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBkZXBsb3lDb25maWdzID0gQXdzRGVwbG95bWVudENvbmZpZy5vZihzdWJwcm9qZWN0KTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQW55IGNvbmZpZ3M/IGxldCdzIHNlZSBpZiBhbnkgaGF2ZSBDSSBzdXBwb3J0IGZvciBQUiBkZXBsb3lzIVxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGRlcGxveUNvbmZpZ3MpIHtcbiAgICAgICAgICBkZXBsb3lDb25maWdzLmZvckVhY2goKGNvbmZpZykgPT4ge1xuICAgICAgICAgICAgY29uZmlnLmRlcGxveW1lbnRUYXJnZXRzXG4gICAgICAgICAgICAgIC8vIG9ubHkgZGV2ZWxvcG1lbnQgdGFyZ2V0cyBmb3IgQ0lcbiAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoZHQpID0+XG4gICAgICAgICAgICAgICAgICBkdC5jaURlcGxveW1lbnQgJiZcbiAgICAgICAgICAgICAgICAgIGR0LmF3c0RlcGxveW1lbnRUeXBlID09PSBBV1NfREVQTE9ZX1RZUEUuREVWLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5mb3JFYWNoKChkdCkgPT4ge1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIE5pY2UgbG9uZyBhbm5veWluZyBidXQgdW5pcXVlIG5hbWUuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgY29uc3QgZGVwbG95Sm9iTmFtZSA9IGAke1BSRVZJRVdfREVQTE9ZX05BTUV9LSR7dGhpcy5wcm9qZWN0Lm5hbWV9LSR7ZHQuYWNjb3VudH0tJHtkdC5yZWdpb259YDtcblxuICAgICAgICAgICAgICAgIHRoaXMucHJvamVjdC5idWlsZFdvcmtmbG93Py5hZGRQb3N0QnVpbGRKb2IoZGVwbG95Sm9iTmFtZSwge1xuICAgICAgICAgICAgICAgICAgbmFtZTogYERlcGxveSBQUiBQcmV2aWV3IHRvICR7ZHQuYWNjb3VudH0vJHtkdC5yZWdpb259YCxcbiAgICAgICAgICAgICAgICAgIHJ1bnNPbjogW1widWJ1bnR1LWxhdGVzdFwiXSxcbiAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgICAgICAgICAgICAgIGlkVG9rZW46IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgY29uY3VycmVuY3k6IGRlcGxveUpvYk5hbWUsXG4gICAgICAgICAgICAgICAgICBzdGVwczogWy4uLmRlcGxveVN0ZXBzKHN1YnByb2plY3QsIGR0KV0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,17 @@
1
+ import { Component } from "projen";
2
+ import { TypeScriptAppProject } from "projen/lib/typescript";
3
+ export declare const PROD_DEPLOY_NAME = "prod-deploy";
4
+ export declare class DeployWorkflow extends Component {
5
+ project: TypeScriptAppProject;
6
+ /**
7
+ * Hold the deploy workflow so we can add to it in preSynth
8
+ */
9
+ private workflow;
10
+ constructor(project: TypeScriptAppProject);
11
+ /**
12
+ * This runs after all the projects are setup but before any files are
13
+ * synthesized. This allows us to update the build yaml with complete
14
+ * information.
15
+ */
16
+ preSynthesize(): void;
17
+ }
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeployWorkflow = exports.PROD_DEPLOY_NAME = void 0;
4
+ const projen_1 = require("projen");
5
+ const awscdk_1 = require("projen/lib/awscdk");
6
+ const build_1 = require("projen/lib/build");
7
+ const github_1 = require("projen/lib/github");
8
+ const workflows_model_1 = require("projen/lib/github/workflows-model");
9
+ const versions_1 = require("../versions");
10
+ const deploy_1 = require("./steps/deploy");
11
+ const aws_deployment_config_1 = require("../aws/aws-deployment-config");
12
+ const turbo_1 = require("../turbo");
13
+ exports.PROD_DEPLOY_NAME = "prod-deploy";
14
+ class DeployWorkflow extends projen_1.Component {
15
+ constructor(project) {
16
+ super(project);
17
+ this.project = project;
18
+ const github = github_1.GitHub.of(project);
19
+ if (!github) {
20
+ throw new Error("DeployWorkflow requires a GitHub component in the project");
21
+ }
22
+ /***************************************************************************
23
+ *
24
+ * Build normally
25
+ *
26
+ * TODO: This should really be using a released artifact from a
27
+ * versioned build.
28
+ *
29
+ **************************************************************************/
30
+ this.workflow = new build_1.BuildWorkflow(project, {
31
+ name: "deploy",
32
+ buildTask: project.buildTask,
33
+ workflowTriggers: {
34
+ push: {
35
+ branches: ["main"],
36
+ },
37
+ workflowDispatch: {},
38
+ },
39
+ mutableBuild: false,
40
+ preBuildSteps: [
41
+ {
42
+ name: "Setup PNPM",
43
+ uses: "pnpm/action-setup@v3",
44
+ with: {
45
+ version: versions_1.VERSION.PNPM_VERSION,
46
+ },
47
+ },
48
+ {
49
+ name: "Install dependencies",
50
+ run: "pnpm i --no-frozen-lockfile",
51
+ },
52
+ ],
53
+ });
54
+ /**
55
+ * Attach build all turbo runner to the build workflow.
56
+ */
57
+ this.workflow.addPostBuildSteps({
58
+ name: "Build Sub Projects",
59
+ run: `npx projen ${turbo_1.ROOT_CI_TASK_NAME}`,
60
+ });
61
+ }
62
+ /**
63
+ * This runs after all the projects are setup but before any files are
64
+ * synthesized. This allows us to update the build yaml with complete
65
+ * information.
66
+ */
67
+ preSynthesize() {
68
+ super.preSynthesize();
69
+ /***************************************************************************
70
+ *
71
+ * Production Deploy
72
+ *
73
+ **************************************************************************/
74
+ this.project.subprojects
75
+ // only AwsCdkTypeScriptApp projects
76
+ .filter((subproject) => subproject instanceof awscdk_1.AwsCdkTypeScriptApp)
77
+ .forEach((subproject) => {
78
+ /**
79
+ * An array of all deployment configs.
80
+ */
81
+ const deployConfigs = aws_deployment_config_1.AwsDeploymentConfig.of(subproject);
82
+ /**
83
+ * Any configs? let's see if any have CI support for PR deploys!
84
+ */
85
+ if (deployConfigs) {
86
+ deployConfigs.forEach((config) => {
87
+ config.deploymentTargets
88
+ // only development targets for CI
89
+ .filter((dt) => dt.ciDeployment &&
90
+ dt.awsDeploymentType === aws_deployment_config_1.AWS_DEPLOY_TYPE.PROD)
91
+ .forEach((dt) => {
92
+ /**
93
+ * Nice long annoying but unique name.
94
+ */
95
+ const deployJobName = `deploy-${this.project.name}-${dt.account}-${dt.region}`;
96
+ this.workflow.addPostBuildJob(deployJobName, {
97
+ name: `Deploy Prod to ${dt.account}/${dt.region}`,
98
+ runsOn: ["ubuntu-latest"],
99
+ permissions: {
100
+ contents: workflows_model_1.JobPermission.READ,
101
+ idToken: workflows_model_1.JobPermission.WRITE,
102
+ },
103
+ concurrency: deployJobName,
104
+ steps: [...(0, deploy_1.deploySteps)(subproject, dt)],
105
+ });
106
+ });
107
+ });
108
+ }
109
+ });
110
+ }
111
+ }
112
+ exports.DeployWorkflow = DeployWorkflow;
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LXdvcmtmbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3dvcmtmbG93cy9kZXBsb3ktd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1DO0FBQ25DLDhDQUF3RDtBQUN4RCw0Q0FBaUQ7QUFDakQsOENBQTJDO0FBQzNDLHVFQUFrRTtBQUVsRSwwQ0FBc0M7QUFDdEMsMkNBQTZDO0FBQzdDLHdFQUdzQztBQUN0QyxvQ0FBNkM7QUFFaEMsUUFBQSxnQkFBZ0IsR0FBRyxhQUFhLENBQUM7QUFFOUMsTUFBYSxjQUFlLFNBQVEsa0JBQVM7SUFNM0MsWUFBbUIsT0FBNkI7UUFDOUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBREUsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUFHOUMsTUFBTSxNQUFNLEdBQUcsZUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVsQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxDQUM1RCxDQUFDO1FBQ0osQ0FBQztRQUVEOzs7Ozs7O29GQU80RTtRQUU1RSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUkscUJBQWEsQ0FBQyxPQUFPLEVBQUU7WUFDekMsSUFBSSxFQUFFLFFBQVE7WUFDZCxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7WUFDNUIsZ0JBQWdCLEVBQUU7Z0JBQ2hCLElBQUksRUFBRTtvQkFDSixRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7aUJBQ25CO2dCQUNELGdCQUFnQixFQUFFLEVBQUU7YUFDckI7WUFDRCxZQUFZLEVBQUUsS0FBSztZQUVuQixhQUFhLEVBQUU7Z0JBQ2I7b0JBQ0UsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLElBQUksRUFBRSxzQkFBc0I7b0JBQzVCLElBQUksRUFBRTt3QkFDSixPQUFPLEVBQUUsa0JBQU8sQ0FBQyxZQUFZO3FCQUM5QjtpQkFDRjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsc0JBQXNCO29CQUM1QixHQUFHLEVBQUUsNkJBQTZCO2lCQUNuQzthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO1lBQzlCLElBQUksRUFBRSxvQkFBb0I7WUFDMUIsR0FBRyxFQUFFLGNBQWMseUJBQWlCLEVBQUU7U0FDdkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhO1FBQ1gsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXRCOzs7O29GQUk0RTtRQUU1RSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDdEIsb0NBQW9DO2FBQ25DLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxZQUFZLDRCQUFtQixDQUFDO2FBQ2pFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3RCOztlQUVHO1lBQ0gsTUFBTSxhQUFhLEdBQUcsMkNBQW1CLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXpEOztlQUVHO1lBQ0gsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUMvQixNQUFNLENBQUMsaUJBQWlCO3dCQUN0QixrQ0FBa0M7eUJBQ2pDLE1BQU0sQ0FDTCxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQ0wsRUFBRSxDQUFDLFlBQVk7d0JBQ2YsRUFBRSxDQUFDLGlCQUFpQixLQUFLLHVDQUFlLENBQUMsSUFBSSxDQUNoRDt5QkFDQSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTt3QkFDZDs7MkJBRUc7d0JBQ0gsTUFBTSxhQUFhLEdBQUcsVUFBVSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFFL0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFOzRCQUMzQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTs0QkFDakQsTUFBTSxFQUFFLENBQUMsZUFBZSxDQUFDOzRCQUN6QixXQUFXLEVBQUU7Z0NBQ1gsUUFBUSxFQUFFLCtCQUFhLENBQUMsSUFBSTtnQ0FDNUIsT0FBTyxFQUFFLCtCQUFhLENBQUMsS0FBSzs2QkFDN0I7NEJBQ0QsV0FBVyxFQUFFLGFBQWE7NEJBQzFCLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBQSxvQkFBVyxFQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQzt5QkFDeEMsQ0FBQyxDQUFDO29CQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNGO0FBckhELHdDQXFIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IEF3c0Nka1R5cGVTY3JpcHRBcHAgfSBmcm9tIFwicHJvamVuL2xpYi9hd3NjZGtcIjtcbmltcG9ydCB7IEJ1aWxkV29ya2Zsb3cgfSBmcm9tIFwicHJvamVuL2xpYi9idWlsZFwiO1xuaW1wb3J0IHsgR2l0SHViIH0gZnJvbSBcInByb2plbi9saWIvZ2l0aHViXCI7XG5pbXBvcnQgeyBKb2JQZXJtaXNzaW9uIH0gZnJvbSBcInByb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbFwiO1xuaW1wb3J0IHsgVHlwZVNjcmlwdEFwcFByb2plY3QgfSBmcm9tIFwicHJvamVuL2xpYi90eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBWRVJTSU9OIH0gZnJvbSBcIi4uL3ZlcnNpb25zXCI7XG5pbXBvcnQgeyBkZXBsb3lTdGVwcyB9IGZyb20gXCIuL3N0ZXBzL2RlcGxveVwiO1xuaW1wb3J0IHtcbiAgQVdTX0RFUExPWV9UWVBFLFxuICBBd3NEZXBsb3ltZW50Q29uZmlnLFxufSBmcm9tIFwiLi4vYXdzL2F3cy1kZXBsb3ltZW50LWNvbmZpZ1wiO1xuaW1wb3J0IHsgUk9PVF9DSV9UQVNLX05BTUUgfSBmcm9tIFwiLi4vdHVyYm9cIjtcblxuZXhwb3J0IGNvbnN0IFBST0RfREVQTE9ZX05BTUUgPSBcInByb2QtZGVwbG95XCI7XG5cbmV4cG9ydCBjbGFzcyBEZXBsb3lXb3JrZmxvdyBleHRlbmRzIENvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBIb2xkIHRoZSBkZXBsb3kgd29ya2Zsb3cgc28gd2UgY2FuIGFkZCB0byBpdCBpbiBwcmVTeW50aFxuICAgKi9cbiAgcHJpdmF0ZSB3b3JrZmxvdzogQnVpbGRXb3JrZmxvdztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcHJvamVjdDogVHlwZVNjcmlwdEFwcFByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIGNvbnN0IGdpdGh1YiA9IEdpdEh1Yi5vZihwcm9qZWN0KTtcblxuICAgIGlmICghZ2l0aHViKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiRGVwbG95V29ya2Zsb3cgcmVxdWlyZXMgYSBHaXRIdWIgY29tcG9uZW50IGluIHRoZSBwcm9qZWN0XCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIEJ1aWxkIG5vcm1hbGx5XG4gICAgICpcbiAgICAgKiBUT0RPOiBUaGlzIHNob3VsZCByZWFsbHkgYmUgdXNpbmcgYSByZWxlYXNlZCBhcnRpZmFjdCBmcm9tIGFcbiAgICAgKiAgICAgICAgdmVyc2lvbmVkIGJ1aWxkLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgdGhpcy53b3JrZmxvdyA9IG5ldyBCdWlsZFdvcmtmbG93KHByb2plY3QsIHtcbiAgICAgIG5hbWU6IFwiZGVwbG95XCIsXG4gICAgICBidWlsZFRhc2s6IHByb2plY3QuYnVpbGRUYXNrLFxuICAgICAgd29ya2Zsb3dUcmlnZ2Vyczoge1xuICAgICAgICBwdXNoOiB7XG4gICAgICAgICAgYnJhbmNoZXM6IFtcIm1haW5cIl0sXG4gICAgICAgIH0sXG4gICAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHt9LFxuICAgICAgfSxcbiAgICAgIG11dGFibGVCdWlsZDogZmFsc2UsXG5cbiAgICAgIHByZUJ1aWxkU3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiU2V0dXAgUE5QTVwiLFxuICAgICAgICAgIHVzZXM6IFwicG5wbS9hY3Rpb24tc2V0dXBAdjNcIixcbiAgICAgICAgICB3aXRoOiB7XG4gICAgICAgICAgICB2ZXJzaW9uOiBWRVJTSU9OLlBOUE1fVkVSU0lPTixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJJbnN0YWxsIGRlcGVuZGVuY2llc1wiLFxuICAgICAgICAgIHJ1bjogXCJwbnBtIGkgLS1uby1mcm96ZW4tbG9ja2ZpbGVcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2ggYnVpbGQgYWxsIHR1cmJvIHJ1bm5lciB0byB0aGUgYnVpbGQgd29ya2Zsb3cuXG4gICAgICovXG4gICAgdGhpcy53b3JrZmxvdy5hZGRQb3N0QnVpbGRTdGVwcyh7XG4gICAgICBuYW1lOiBcIkJ1aWxkIFN1YiBQcm9qZWN0c1wiLFxuICAgICAgcnVuOiBgbnB4IHByb2plbiAke1JPT1RfQ0lfVEFTS19OQU1FfWAsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBydW5zIGFmdGVyIGFsbCB0aGUgcHJvamVjdHMgYXJlIHNldHVwIGJ1dCBiZWZvcmUgYW55IGZpbGVzIGFyZVxuICAgKiBzeW50aGVzaXplZC4gVGhpcyBhbGxvd3MgdXMgdG8gdXBkYXRlIHRoZSBidWlsZCB5YW1sIHdpdGggY29tcGxldGVcbiAgICogaW5mb3JtYXRpb24uXG4gICAqL1xuICBwcmVTeW50aGVzaXplKCk6IHZvaWQge1xuICAgIHN1cGVyLnByZVN5bnRoZXNpemUoKTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIFByb2R1Y3Rpb24gRGVwbG95XG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICB0aGlzLnByb2plY3Quc3VicHJvamVjdHNcbiAgICAgIC8vIG9ubHkgQXdzQ2RrVHlwZVNjcmlwdEFwcCBwcm9qZWN0c1xuICAgICAgLmZpbHRlcigoc3VicHJvamVjdCkgPT4gc3VicHJvamVjdCBpbnN0YW5jZW9mIEF3c0Nka1R5cGVTY3JpcHRBcHApXG4gICAgICAuZm9yRWFjaCgoc3VicHJvamVjdCkgPT4ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQW4gYXJyYXkgb2YgYWxsIGRlcGxveW1lbnQgY29uZmlncy5cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGRlcGxveUNvbmZpZ3MgPSBBd3NEZXBsb3ltZW50Q29uZmlnLm9mKHN1YnByb2plY3QpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBbnkgY29uZmlncz8gbGV0J3Mgc2VlIGlmIGFueSBoYXZlIENJIHN1cHBvcnQgZm9yIFBSIGRlcGxveXMhXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoZGVwbG95Q29uZmlncykge1xuICAgICAgICAgIGRlcGxveUNvbmZpZ3MuZm9yRWFjaCgoY29uZmlnKSA9PiB7XG4gICAgICAgICAgICBjb25maWcuZGVwbG95bWVudFRhcmdldHNcbiAgICAgICAgICAgICAgLy8gb25seSBkZXZlbG9wbWVudCB0YXJnZXRzIGZvciBDSVxuICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChkdCkgPT5cbiAgICAgICAgICAgICAgICAgIGR0LmNpRGVwbG95bWVudCAmJlxuICAgICAgICAgICAgICAgICAgZHQuYXdzRGVwbG95bWVudFR5cGUgPT09IEFXU19ERVBMT1lfVFlQRS5QUk9ELFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5mb3JFYWNoKChkdCkgPT4ge1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIE5pY2UgbG9uZyBhbm5veWluZyBidXQgdW5pcXVlIG5hbWUuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgY29uc3QgZGVwbG95Sm9iTmFtZSA9IGBkZXBsb3ktJHt0aGlzLnByb2plY3QubmFtZX0tJHtkdC5hY2NvdW50fS0ke2R0LnJlZ2lvbn1gO1xuXG4gICAgICAgICAgICAgICAgdGhpcy53b3JrZmxvdy5hZGRQb3N0QnVpbGRKb2IoZGVwbG95Sm9iTmFtZSwge1xuICAgICAgICAgICAgICAgICAgbmFtZTogYERlcGxveSBQcm9kIHRvICR7ZHQuYWNjb3VudH0vJHtkdC5yZWdpb259YCxcbiAgICAgICAgICAgICAgICAgIHJ1bnNPbjogW1widWJ1bnR1LWxhdGVzdFwiXSxcbiAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzOiBKb2JQZXJtaXNzaW9uLlJFQUQsXG4gICAgICAgICAgICAgICAgICAgIGlkVG9rZW46IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgY29uY3VycmVuY3k6IGRlcGxveUpvYk5hbWUsXG4gICAgICAgICAgICAgICAgICBzdGVwczogWy4uLmRlcGxveVN0ZXBzKHN1YnByb2plY3QsIGR0KV0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from "./build-workflow";
2
+ export * from "./deploy-workflow";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./build-workflow"), exports);
18
+ __exportStar(require("./deploy-workflow"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd29ya2Zsb3dzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBaUM7QUFDakMsb0RBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYnVpbGQtd29ya2Zsb3dcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlcGxveS13b3JrZmxvd1wiO1xuIl19
@@ -0,0 +1,4 @@
1
+ import { AwsCdkTypeScriptApp } from "projen/lib/awscdk";
2
+ import { JobStep } from "projen/lib/github/workflows-model";
3
+ import { AwsDeploymentTarget } from "../../aws/aws-deployment-config";
4
+ export declare const deploySteps: (project: AwsCdkTypeScriptApp, deployTarget: AwsDeploymentTarget) => Array<JobStep>;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deploySteps = void 0;
4
+ const node_path_1 = require("node:path");
5
+ const versions_1 = require("../../versions");
6
+ const deploySteps = (project, deployTarget) => {
7
+ const projectPath = (0, node_path_1.relative)(project.root.outdir, project.outdir);
8
+ const cdkOut = (0, node_path_1.join)("dist", projectPath, "cdk.out");
9
+ return [
10
+ /**
11
+ * Setup PNPM
12
+ */
13
+ {
14
+ name: "Setup PNPM",
15
+ uses: "pnpm/action-setup@v3",
16
+ with: {
17
+ version: versions_1.VERSION.PNPM_VERSION,
18
+ },
19
+ },
20
+ /**
21
+ * Setup Node
22
+ */
23
+ {
24
+ name: "Setup Node",
25
+ uses: "actions/setup-node@v4",
26
+ with: {
27
+ ["node-version"]: versions_1.VERSION.NODE_WORKFLOWS,
28
+ },
29
+ // occasionally this step fails due to internal issues at github
30
+ timeoutMinutes: 1,
31
+ },
32
+ /**
33
+ * Install CDK
34
+ */
35
+ {
36
+ name: "Install CDK",
37
+ run: "pnpm add aws-cdk",
38
+ },
39
+ /**
40
+ * Configure AWS creds.
41
+ */
42
+ {
43
+ name: `Configure AWS Credentials for ${deployTarget.account}/${deployTarget.region}`,
44
+ uses: "aws-actions/configure-aws-credentials@v4",
45
+ with: {
46
+ "role-to-assume": deployTarget.ciDeploymentConfig?.roleArn ??
47
+ "ERROR: No role ARN provided",
48
+ "aws-region": deployTarget.region,
49
+ "role-duration-seconds": 900, // 15 minutes
50
+ },
51
+ },
52
+ /**
53
+ * Run CDK Deploy
54
+ */
55
+ {
56
+ name: `Deploy To ${deployTarget.account}/${deployTarget.region}`,
57
+ run: `pnpm dlx aws-cdk deploy --no-rollback --require-approval=never --app=${cdkOut} "*-${deployTarget.account}-${deployTarget.region}"`,
58
+ },
59
+ ];
60
+ };
61
+ exports.deploySteps = deploySteps;
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9zdGVwcy9kZXBsb3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTJDO0FBSTNDLDZDQUF5QztBQUVsQyxNQUFNLFdBQVcsR0FBRyxDQUN6QixPQUE0QixFQUM1QixZQUFpQyxFQUNqQixFQUFFO0lBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUEsb0JBQVEsRUFBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbEUsTUFBTSxNQUFNLEdBQUcsSUFBQSxnQkFBSSxFQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFcEQsT0FBTztRQUNMOztXQUVHO1FBQ0g7WUFDRSxJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUUsc0JBQXNCO1lBQzVCLElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsa0JBQU8sQ0FBQyxZQUFZO2FBQzlCO1NBQ0Y7UUFFRDs7V0FFRztRQUNIO1lBQ0UsSUFBSSxFQUFFLFlBQVk7WUFDbEIsSUFBSSxFQUFFLHVCQUF1QjtZQUM3QixJQUFJLEVBQUU7Z0JBQ0osQ0FBQyxjQUFjLENBQUMsRUFBRSxrQkFBTyxDQUFDLGNBQWM7YUFDekM7WUFDRCxnRUFBZ0U7WUFDaEUsY0FBYyxFQUFFLENBQUM7U0FDbEI7UUFFRDs7V0FFRztRQUNIO1lBQ0UsSUFBSSxFQUFFLGFBQWE7WUFDbkIsR0FBRyxFQUFFLGtCQUFrQjtTQUN4QjtRQUVEOztXQUVHO1FBQ0g7WUFDRSxJQUFJLEVBQUUsaUNBQWlDLFlBQVksQ0FBQyxPQUFPLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUNwRixJQUFJLEVBQUUsMENBQTBDO1lBQ2hELElBQUksRUFBRTtnQkFDSixnQkFBZ0IsRUFDZCxZQUFZLENBQUMsa0JBQWtCLEVBQUUsT0FBTztvQkFDeEMsNkJBQTZCO2dCQUMvQixZQUFZLEVBQUUsWUFBWSxDQUFDLE1BQU07Z0JBQ2pDLHVCQUF1QixFQUFFLEdBQUcsRUFBRSxhQUFhO2FBQzVDO1NBQ0Y7UUFFRDs7V0FFRztRQUNIO1lBQ0UsSUFBSSxFQUFFLGFBQWEsWUFBWSxDQUFDLE9BQU8sSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQ2hFLEdBQUcsRUFBRSx3RUFBd0UsTUFBTSxPQUFPLFlBQVksQ0FBQyxPQUFPLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRztTQUN6STtLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFoRVcsUUFBQSxXQUFXLGVBZ0V0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4sIHJlbGF0aXZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgQXdzQ2RrVHlwZVNjcmlwdEFwcCB9IGZyb20gXCJwcm9qZW4vbGliL2F3c2Nka1wiO1xuaW1wb3J0IHsgSm9iU3RlcCB9IGZyb20gXCJwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWxcIjtcbmltcG9ydCB7IEF3c0RlcGxveW1lbnRUYXJnZXQgfSBmcm9tIFwiLi4vLi4vYXdzL2F3cy1kZXBsb3ltZW50LWNvbmZpZ1wiO1xuaW1wb3J0IHsgVkVSU0lPTiB9IGZyb20gXCIuLi8uLi92ZXJzaW9uc1wiO1xuXG5leHBvcnQgY29uc3QgZGVwbG95U3RlcHMgPSAoXG4gIHByb2plY3Q6IEF3c0Nka1R5cGVTY3JpcHRBcHAsXG4gIGRlcGxveVRhcmdldDogQXdzRGVwbG95bWVudFRhcmdldCxcbik6IEFycmF5PEpvYlN0ZXA+ID0+IHtcbiAgY29uc3QgcHJvamVjdFBhdGggPSByZWxhdGl2ZShwcm9qZWN0LnJvb3Qub3V0ZGlyLCBwcm9qZWN0Lm91dGRpcik7XG5cbiAgY29uc3QgY2RrT3V0ID0gam9pbihcImRpc3RcIiwgcHJvamVjdFBhdGgsIFwiY2RrLm91dFwiKTtcblxuICByZXR1cm4gW1xuICAgIC8qKlxuICAgICAqIFNldHVwIFBOUE1cbiAgICAgKi9cbiAgICB7XG4gICAgICBuYW1lOiBcIlNldHVwIFBOUE1cIixcbiAgICAgIHVzZXM6IFwicG5wbS9hY3Rpb24tc2V0dXBAdjNcIixcbiAgICAgIHdpdGg6IHtcbiAgICAgICAgdmVyc2lvbjogVkVSU0lPTi5QTlBNX1ZFUlNJT04sXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTZXR1cCBOb2RlXG4gICAgICovXG4gICAge1xuICAgICAgbmFtZTogXCJTZXR1cCBOb2RlXCIsXG4gICAgICB1c2VzOiBcImFjdGlvbnMvc2V0dXAtbm9kZUB2NFwiLFxuICAgICAgd2l0aDoge1xuICAgICAgICBbXCJub2RlLXZlcnNpb25cIl06IFZFUlNJT04uTk9ERV9XT1JLRkxPV1MsXG4gICAgICB9LFxuICAgICAgLy8gb2NjYXNpb25hbGx5IHRoaXMgc3RlcCBmYWlscyBkdWUgdG8gaW50ZXJuYWwgaXNzdWVzIGF0IGdpdGh1YlxuICAgICAgdGltZW91dE1pbnV0ZXM6IDEsXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEluc3RhbGwgQ0RLXG4gICAgICovXG4gICAge1xuICAgICAgbmFtZTogXCJJbnN0YWxsIENES1wiLFxuICAgICAgcnVuOiBcInBucG0gYWRkIGF3cy1jZGtcIixcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ29uZmlndXJlIEFXUyBjcmVkcy5cbiAgICAgKi9cbiAgICB7XG4gICAgICBuYW1lOiBgQ29uZmlndXJlIEFXUyBDcmVkZW50aWFscyBmb3IgJHtkZXBsb3lUYXJnZXQuYWNjb3VudH0vJHtkZXBsb3lUYXJnZXQucmVnaW9ufWAsXG4gICAgICB1c2VzOiBcImF3cy1hY3Rpb25zL2NvbmZpZ3VyZS1hd3MtY3JlZGVudGlhbHNAdjRcIixcbiAgICAgIHdpdGg6IHtcbiAgICAgICAgXCJyb2xlLXRvLWFzc3VtZVwiOlxuICAgICAgICAgIGRlcGxveVRhcmdldC5jaURlcGxveW1lbnRDb25maWc/LnJvbGVBcm4gPz9cbiAgICAgICAgICBcIkVSUk9SOiBObyByb2xlIEFSTiBwcm92aWRlZFwiLFxuICAgICAgICBcImF3cy1yZWdpb25cIjogZGVwbG95VGFyZ2V0LnJlZ2lvbixcbiAgICAgICAgXCJyb2xlLWR1cmF0aW9uLXNlY29uZHNcIjogOTAwLCAvLyAxNSBtaW51dGVzXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSdW4gQ0RLIERlcGxveVxuICAgICAqL1xuICAgIHtcbiAgICAgIG5hbWU6IGBEZXBsb3kgVG8gJHtkZXBsb3lUYXJnZXQuYWNjb3VudH0vJHtkZXBsb3lUYXJnZXQucmVnaW9ufWAsXG4gICAgICBydW46IGBwbnBtIGRseCBhd3MtY2RrIGRlcGxveSAtLW5vLXJvbGxiYWNrIC0tcmVxdWlyZS1hcHByb3ZhbD1uZXZlciAtLWFwcD0ke2Nka091dH0gXCIqLSR7ZGVwbG95VGFyZ2V0LmFjY291bnR9LSR7ZGVwbG95VGFyZ2V0LnJlZ2lvbn1cImAsXG4gICAgfSxcbiAgXTtcbn07XG4iXX0=
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@codedrifters/configulator",
3
+ "description": "Projen configs frequently used in CodeDrifter projects.",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/codedrifters/configulator"
7
+ },
8
+ "author": {
9
+ "name": "CodeDrifters",
10
+ "organization": true
11
+ },
12
+ "devDependencies": {
13
+ "@types/jest": "^30.0.0",
14
+ "@types/node": "^22.15.3",
15
+ "@typescript-eslint/eslint-plugin": "^8",
16
+ "@typescript-eslint/parser": "^8",
17
+ "commit-and-tag-version": "^12",
18
+ "constructs": "^10.0.0",
19
+ "eslint": "^9",
20
+ "eslint-config-prettier": "^10.1.2",
21
+ "eslint-import-resolver-typescript": "^4.3.4",
22
+ "eslint-plugin-import": "^2.31.0",
23
+ "eslint-plugin-prettier": "^5.2.6",
24
+ "jest": "^30.0.4",
25
+ "jest-junit": "^16",
26
+ "prettier": "^3.5.3",
27
+ "projen": "^0.91.28",
28
+ "ts-jest": "^29.4.0",
29
+ "ts-node": "^10.9.2",
30
+ "typescript": "^5.8.3"
31
+ },
32
+ "dependencies": {
33
+ "@jsii/spec": "^1.112.0",
34
+ "constructs": "^10.0.5",
35
+ "projen": "^0.91.28",
36
+ "type-fest": "^4"
37
+ },
38
+ "main": "lib/index.js",
39
+ "license": "MIT",
40
+ "version": "0.0.0",
41
+ "types": "lib/index.d.ts",
42
+ "//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\".",
43
+ "scripts": {
44
+ "build": "npx projen build",
45
+ "bump": "npx projen bump",
46
+ "clobber": "npx projen clobber",
47
+ "compile": "npx projen compile",
48
+ "default": "npx projen default",
49
+ "eject": "npx projen eject",
50
+ "eslint": "npx projen eslint",
51
+ "package": "npx projen package",
52
+ "post-compile": "npx projen post-compile",
53
+ "post-upgrade": "npx projen post-upgrade",
54
+ "pre-compile": "npx projen pre-compile",
55
+ "release": "npx projen release",
56
+ "test": "npx projen test",
57
+ "test:watch": "npx projen test:watch",
58
+ "unbump": "npx projen unbump",
59
+ "upgrade": "npx projen upgrade",
60
+ "watch": "npx projen watch",
61
+ "projen": "npx projen"
62
+ }
63
+ }