@jttc/projen-project-types 1.0.0-beta.0 → 1.0.0-beta.10

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 (113) hide show
  1. package/.cz-config.js +83 -43
  2. package/.czrc +1 -1
  3. package/.jsii +4637 -14
  4. package/AGENTS.md +132 -0
  5. package/API.md +31146 -7
  6. package/README.md +197 -29
  7. package/docs/components/cdk8s.md +724 -0
  8. package/docs/components/commitzent.md +261 -0
  9. package/docs/components/k3d.md +456 -0
  10. package/docs/default-configurations.md +267 -0
  11. package/docs/index.md +86 -1
  12. package/docs/project-types/cdk-app.md +481 -0
  13. package/docs/project-types/cdk-library.md +321 -0
  14. package/docs/project-types/cdk8s-app.md +353 -0
  15. package/docs/project-types/cdk8s-library.md +442 -0
  16. package/docs/project-types/nx-monorepo.md +382 -0
  17. package/lib/cdk/cdk-app-project.d.ts +12 -0
  18. package/lib/cdk/cdk-app-project.js +28 -0
  19. package/lib/cdk/cdk-library-project.d.ts +12 -0
  20. package/lib/cdk/cdk-library-project.js +28 -0
  21. package/lib/cdk/cdk8s-app-project.d.ts +14 -0
  22. package/lib/cdk/cdk8s-app-project.js +54 -0
  23. package/lib/cdk/cdk8s-library-project.d.ts +14 -0
  24. package/lib/cdk/cdk8s-library-project.js +50 -0
  25. package/lib/cdk/index.d.ts +5 -0
  26. package/lib/cdk/index.js +22 -0
  27. package/lib/cdk/interfaces/cdk-app-options.d.ts +7 -0
  28. package/lib/cdk/interfaces/cdk-app-options.js +3 -0
  29. package/lib/cdk/interfaces/cdk-library-options.d.ts +7 -0
  30. package/lib/cdk/interfaces/cdk-library-options.js +3 -0
  31. package/lib/cdk/interfaces/cdk8s-app-options.d.ts +18 -0
  32. package/lib/cdk/interfaces/cdk8s-app-options.js +3 -0
  33. package/lib/cdk/interfaces/cdk8s-library-options.d.ts +8 -0
  34. package/lib/cdk/interfaces/cdk8s-library-options.js +3 -0
  35. package/lib/cdk/interfaces/index.d.ts +5 -0
  36. package/lib/cdk/interfaces/index.js +22 -0
  37. package/lib/cdk/interfaces/jsii-options.d.ts +7 -0
  38. package/lib/cdk/interfaces/jsii-options.js +3 -0
  39. package/lib/cdk/interfaces/project-global-options.d.ts +15 -0
  40. package/lib/cdk/interfaces/project-global-options.js +3 -0
  41. package/lib/cdk/jsii-project.d.ts +12 -0
  42. package/lib/cdk/jsii-project.js +24 -0
  43. package/lib/common/common-options.d.ts +40 -0
  44. package/lib/common/common-options.js +110 -0
  45. package/lib/components/agents/agents.d.ts +21 -0
  46. package/lib/components/agents/agents.js +476 -0
  47. package/lib/components/agents/index.d.ts +1 -0
  48. package/lib/components/agents/index.js +18 -0
  49. package/lib/components/cdk8s/cdk8s.d.ts +11 -0
  50. package/lib/components/cdk8s/cdk8s.js +124 -0
  51. package/lib/components/cdk8s/index.d.ts +2 -0
  52. package/lib/components/cdk8s/index.js +19 -0
  53. package/lib/components/cdk8s/interfaces/Cdk8s.d.ts +34 -0
  54. package/lib/components/cdk8s/interfaces/Cdk8s.js +12 -0
  55. package/lib/components/cdk8s/main-library.ts.template +35 -0
  56. package/lib/components/cdk8s/main.test.ts.template +3 -0
  57. package/lib/components/cdk8s/main.ts.template +38 -0
  58. package/lib/components/commitzent/commitzent.d.ts +8 -0
  59. package/lib/components/commitzent/commitzent.js +100 -0
  60. package/lib/components/commitzent/index.d.ts +2 -0
  61. package/lib/components/commitzent/index.js +19 -0
  62. package/lib/components/commitzent/interfaces/Icommitzent.d.ts +34 -0
  63. package/lib/components/commitzent/interfaces/Icommitzent.js +3 -0
  64. package/lib/components/index.d.ts +4 -0
  65. package/lib/components/index.js +21 -0
  66. package/lib/components/k3d/index.d.ts +3 -0
  67. package/lib/components/k3d/index.js +20 -0
  68. package/lib/components/k3d/k3d.d.ts +33 -0
  69. package/lib/components/k3d/k3d.js +109 -0
  70. package/lib/components/k3d/k3dBase.d.ts +4 -0
  71. package/lib/components/k3d/k3dBase.js +23 -0
  72. package/lib/components/k3d/types.d.ts +64 -0
  73. package/lib/components/k3d/types.js +8 -0
  74. package/lib/index.d.ts +5 -3
  75. package/lib/index.js +20 -12
  76. package/lib/monorepo/components/NxConfiguration.d.ts +17 -0
  77. package/lib/monorepo/components/NxConfiguration.js +105 -0
  78. package/lib/monorepo/components/index.d.ts +2 -0
  79. package/lib/monorepo/components/index.js +19 -0
  80. package/lib/monorepo/components/publish-release.d.ts +5 -0
  81. package/lib/monorepo/components/publish-release.js +80 -0
  82. package/lib/monorepo/index.d.ts +3 -0
  83. package/lib/monorepo/index.js +20 -0
  84. package/lib/monorepo/interfaces/Nx.d.ts +130 -0
  85. package/lib/monorepo/interfaces/Nx.js +3 -0
  86. package/lib/monorepo/interfaces/NxMonorepo.d.ts +3 -0
  87. package/lib/monorepo/interfaces/NxMonorepo.js +3 -0
  88. package/lib/monorepo/interfaces/index.d.ts +2 -0
  89. package/lib/monorepo/interfaces/index.js +19 -0
  90. package/lib/monorepo/monorepo.d.ts +16 -0
  91. package/lib/monorepo/monorepo.js +131 -0
  92. package/lib/terraform/components/index.d.ts +2 -0
  93. package/lib/terraform/components/index.js +19 -0
  94. package/lib/terraform/components/terraform-deploy-github-workflow.d.ts +26 -0
  95. package/lib/terraform/components/terraform-deploy-github-workflow.js +92 -0
  96. package/lib/terraform/components/terraform-plan-github-workflow.d.ts +31 -0
  97. package/lib/terraform/components/terraform-plan-github-workflow.js +155 -0
  98. package/lib/terraform/index.d.ts +5 -0
  99. package/lib/terraform/index.js +22 -0
  100. package/lib/terraform/providers/hetzner-provider.d.ts +105 -0
  101. package/lib/terraform/providers/hetzner-provider.js +83 -0
  102. package/lib/terraform/providers/index.d.ts +2 -0
  103. package/lib/terraform/providers/index.js +19 -0
  104. package/lib/terraform/providers/provider-strategy.d.ts +44 -0
  105. package/lib/terraform/providers/provider-strategy.js +38 -0
  106. package/lib/terraform/terraform-base-project.d.ts +38 -0
  107. package/lib/terraform/terraform-base-project.js +97 -0
  108. package/lib/terraform/terraform-module-project.d.ts +24 -0
  109. package/lib/terraform/terraform-module-project.js +77 -0
  110. package/lib/terraform/terraform-stack-project.d.ts +28 -0
  111. package/lib/terraform/terraform-stack-project.js +83 -0
  112. package/mkdocs.yml +12 -0
  113. package/package.json +14 -7
@@ -0,0 +1,130 @@
1
+ export interface Affected {
2
+ /**
3
+ * Default base to use for affected commands
4
+ * It will take the projen default base by default
5
+ */
6
+ readonly defaultBase?: string;
7
+ }
8
+ export type NamedInput = {
9
+ readonly [name: string]: string[];
10
+ };
11
+ export type TargetDefaultConfigurations = {
12
+ [name: string]: string;
13
+ };
14
+ export interface TargetDefaults {
15
+ /**
16
+ * Target name
17
+ */
18
+ readonly name: string;
19
+ /**
20
+ * The function that Nx will invoke when you run this target
21
+ */
22
+ readonly executor?: string;
23
+ readonly options?: {
24
+ [key: string]: string;
25
+ };
26
+ readonly outputs?: string[];
27
+ /**
28
+ * The name of a configuration to use as the default if a configuration is not provided
29
+ */
30
+ readonly defaultConfiguration?: string;
31
+ /**
32
+ * provides extra sets of values that will be merged into the options map
33
+ */
34
+ readonly configurations?: TargetDefaultConfigurations;
35
+ /**
36
+ * Whether this target runs continuously until stopped
37
+ * @default false
38
+ */
39
+ readonly continuous?: boolean;
40
+ /**
41
+ * Whether this target can be run in parallel with other tasks
42
+ * @default true
43
+ */
44
+ readonly parallelism?: boolean;
45
+ readonly inputs?: string[];
46
+ readonly dependsOn?: string[];
47
+ /**
48
+ * Specifies if the given target should be cacheable
49
+ */
50
+ readonly cache?: boolean;
51
+ /**
52
+ * List of generators to run before the target to ensure the workspace is up to date
53
+ */
54
+ readonly syncGenerators?: string[];
55
+ }
56
+ export interface RunnerOptions {
57
+ readonly accessToken?: string;
58
+ readonly nxCloudId?: string;
59
+ /**
60
+ * Defines whether the cache captures stderr or just stdout
61
+ */
62
+ readonly captureStderr?: boolean;
63
+ /**
64
+ * Defines the max number of targets ran in parallel
65
+ */
66
+ readonly parallel?: number;
67
+ /**
68
+ * Defines the list of targets/operations that are cached by Nx
69
+ */
70
+ readonly cacheableOperations: string[];
71
+ /**
72
+ * Defines where the local cache is stored
73
+ */
74
+ readonly cacheDirectory?: string;
75
+ /**
76
+ * Defines whether the Nx Cache should be skipped
77
+ */
78
+ readonly skipNxCache?: boolean;
79
+ /**
80
+ * Defines an encryption key to support end-to-end encryption of your cloud cache.
81
+ * You may also provide an environment variable with the key NX_CLOUD_ENCRYPTION_KEY
82
+ * that contains an encryption key as its value. The Nx Cloud task runner normalizes
83
+ * the key length, so any length of key is acceptable.
84
+ */
85
+ readonly encryptionKey?: string;
86
+ }
87
+ export interface TaskRunnerOptions {
88
+ /**
89
+ * Name of the Task Runner
90
+ */
91
+ readonly name: string;
92
+ /**
93
+ * Path to resolve the runner
94
+ */
95
+ readonly runner: string;
96
+ /**
97
+ * Default options for the runner
98
+ */
99
+ readonly options: RunnerOptions;
100
+ }
101
+ export interface ReleaseVersion {
102
+ readonly conventionalCommits: true;
103
+ }
104
+ export interface WorkspaceChangelog {
105
+ readonly createRelease: string;
106
+ }
107
+ export interface ReleaseChangelog {
108
+ readonly workspaceChangelog: WorkspaceChangelog;
109
+ }
110
+ export interface NxRelease {
111
+ readonly projects: string[];
112
+ readonly version: ReleaseVersion;
113
+ readonly changelog?: ReleaseChangelog;
114
+ }
115
+ export interface NxConfiguration {
116
+ /**
117
+ * Specifies the base config to exten
118
+ * @default nx/presets/npm.json
119
+ */
120
+ readonly extends?: string;
121
+ /**
122
+ * Default options for `nx affected`
123
+ */
124
+ readonly affected: Affected;
125
+ /**
126
+ * Named inputs used by inputs defined in targets
127
+ */
128
+ readonly namedInput: NamedInput;
129
+ readonly release?: NxRelease;
130
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTnguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9ub3JlcG8vaW50ZXJmYWNlcy9OeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBZmZlY3RlZCB7XG4gIC8qKlxuICAgKiBEZWZhdWx0IGJhc2UgdG8gdXNlIGZvciBhZmZlY3RlZCBjb21tYW5kc1xuICAgKiBJdCB3aWxsIHRha2UgdGhlIHByb2plbiBkZWZhdWx0IGJhc2UgYnkgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdEJhc2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIE5hbWVkSW5wdXQgPSB7XG4gIHJlYWRvbmx5IFtuYW1lOiBzdHJpbmddOiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFRhcmdldERlZmF1bHRDb25maWd1cmF0aW9ucyA9IHtcbiAgW25hbWU6IHN0cmluZ106IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0RGVmYXVsdHMge1xuICAvKipcbiAgICogVGFyZ2V0IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiB0aGF0IE54IHdpbGwgaW52b2tlIHdoZW4geW91IHJ1biB0aGlzIHRhcmdldFxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0b3I/OiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkgb3B0aW9ucz86IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG5cbiAgcmVhZG9ubHkgb3V0cHV0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiBhIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGFzIHRoZSBkZWZhdWx0IGlmIGEgY29uZmlndXJhdGlvbiBpcyBub3QgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRDb25maWd1cmF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBwcm92aWRlcyBleHRyYSBzZXRzIG9mIHZhbHVlcyB0aGF0IHdpbGwgYmUgbWVyZ2VkIGludG8gdGhlIG9wdGlvbnMgbWFwXG4gICAqL1xuICByZWFkb25seSBjb25maWd1cmF0aW9ucz86IFRhcmdldERlZmF1bHRDb25maWd1cmF0aW9ucztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHRhcmdldCBydW5zIGNvbnRpbnVvdXNseSB1bnRpbCBzdG9wcGVkXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjb250aW51b3VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHRhcmdldCBjYW4gYmUgcnVuIGluIHBhcmFsbGVsIHdpdGggb3RoZXIgdGFza3NcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYWxsZWxpc20/OiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IGlucHV0cz86IHN0cmluZ1tdO1xuXG4gIHJlYWRvbmx5IGRlcGVuZHNPbj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaWYgdGhlIGdpdmVuIHRhcmdldCBzaG91bGQgYmUgY2FjaGVhYmxlXG4gICAqL1xuICByZWFkb25seSBjYWNoZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgZ2VuZXJhdG9ycyB0byBydW4gYmVmb3JlIHRoZSB0YXJnZXQgdG8gZW5zdXJlIHRoZSB3b3Jrc3BhY2UgaXMgdXAgdG8gZGF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3luY0dlbmVyYXRvcnM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdW5uZXJPcHRpb25zIHtcbiAgcmVhZG9ubHkgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG54Q2xvdWRJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmluZXMgd2hldGhlciB0aGUgY2FjaGUgY2FwdHVyZXMgc3RkZXJyIG9yIGp1c3Qgc3Rkb3V0XG4gICAqL1xuICByZWFkb25seSBjYXB0dXJlU3RkZXJyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVmaW5lcyB0aGUgbWF4IG51bWJlciBvZiB0YXJnZXRzIHJhbiBpbiBwYXJhbGxlbFxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYWxsZWw/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIGxpc3Qgb2YgdGFyZ2V0cy9vcGVyYXRpb25zIHRoYXQgYXJlIGNhY2hlZCBieSBOeFxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVhYmxlT3BlcmF0aW9uczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIERlZmluZXMgd2hlcmUgdGhlIGxvY2FsIGNhY2hlIGlzIHN0b3JlZFxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVEaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgd2hldGhlciB0aGUgTnggQ2FjaGUgc2hvdWxkIGJlIHNraXBwZWRcbiAgICovXG4gIHJlYWRvbmx5IHNraXBOeENhY2hlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVmaW5lcyBhbiBlbmNyeXB0aW9uIGtleSB0byBzdXBwb3J0IGVuZC10by1lbmQgZW5jcnlwdGlvbiBvZiB5b3VyIGNsb3VkIGNhY2hlLlxuICAgKiBZb3UgbWF5IGFsc28gcHJvdmlkZSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIHRoZSBrZXkgTlhfQ0xPVURfRU5DUllQVElPTl9LRVlcbiAgICogdGhhdCBjb250YWlucyBhbiBlbmNyeXB0aW9uIGtleSBhcyBpdHMgdmFsdWUuIFRoZSBOeCBDbG91ZCB0YXNrIHJ1bm5lciBub3JtYWxpemVzXG4gICAqIHRoZSBrZXkgbGVuZ3RoLCBzbyBhbnkgbGVuZ3RoIG9mIGtleSBpcyBhY2NlcHRhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYXNrUnVubmVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBUYXNrIFJ1bm5lclxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogUGF0aCB0byByZXNvbHZlIHRoZSBydW5uZXJcbiAgICovXG4gIHJlYWRvbmx5IHJ1bm5lcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IG9wdGlvbnMgZm9yIHRoZSBydW5uZXJcbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbnM6IFJ1bm5lck9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVsZWFzZVZlcnNpb24ge1xuICByZWFkb25seSBjb252ZW50aW9uYWxDb21taXRzOiB0cnVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZUNoYW5nZWxvZyB7XG4gIHJlYWRvbmx5IGNyZWF0ZVJlbGVhc2U6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUmVsZWFzZUNoYW5nZWxvZyB7XG4gIHJlYWRvbmx5IHdvcmtzcGFjZUNoYW5nZWxvZzogV29ya3NwYWNlQ2hhbmdlbG9nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE54UmVsZWFzZSB7XG4gIHJlYWRvbmx5IHByb2plY3RzOiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgdmVyc2lvbjogUmVsZWFzZVZlcnNpb247XG4gIHJlYWRvbmx5IGNoYW5nZWxvZz86IFJlbGVhc2VDaGFuZ2Vsb2c7XG59XG5leHBvcnQgaW50ZXJmYWNlIE54Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGJhc2UgY29uZmlnIHRvIGV4dGVuXG4gICAqIEBkZWZhdWx0IG54L3ByZXNldHMvbnBtLmpzb25cbiAgICovXG4gIHJlYWRvbmx5IGV4dGVuZHM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEZWZhdWx0IG9wdGlvbnMgZm9yIGBueCBhZmZlY3RlZGBcbiAgICovXG4gIHJlYWRvbmx5IGFmZmVjdGVkOiBBZmZlY3RlZDtcblxuICAvKipcbiAgICogTmFtZWQgaW5wdXRzIHVzZWQgYnkgaW5wdXRzIGRlZmluZWQgaW4gdGFyZ2V0c1xuICAgKi9cbiAgcmVhZG9ubHkgbmFtZWRJbnB1dDogTmFtZWRJbnB1dDtcblxuICByZWFkb25seSByZWxlYXNlPzogTnhSZWxlYXNlO1xufVxuIl19
@@ -0,0 +1,3 @@
1
+ import { TypeScriptProjectOptions } from 'projen/lib/typescript';
2
+ export interface NxMonorepoOptions extends TypeScriptProjectOptions {
3
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTnhNb25vcmVwby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb25vcmVwby9pbnRlcmZhY2VzL054TW9ub3JlcG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gJ3Byb2plbi9saWIvdHlwZXNjcmlwdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnhNb25vcmVwb09wdGlvbnMgZXh0ZW5kcyBUeXBlU2NyaXB0UHJvamVjdE9wdGlvbnMge31cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './Nx';
2
+ export * from './NxMonorepo';
@@ -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("./Nx"), exports);
18
+ __exportStar(require("./NxMonorepo"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9ub3JlcG8vaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXFCO0FBQ3JCLCtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vTngnO1xuZXhwb3J0ICogZnJvbSAnLi9OeE1vbm9yZXBvJztcbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { TypeScriptProject } from 'projen/lib/typescript';
2
+ import { NxConfigurations } from './components/NxConfiguration';
3
+ import { NxMonorepoOptions } from './interfaces/NxMonorepo';
4
+ import { Commitzent } from '../components';
5
+ /**
6
+ * NX Monorepo Project
7
+ *
8
+ * @pjid nx-monorepo
9
+ */
10
+ export declare class NxMonorepo extends TypeScriptProject {
11
+ readonly commitzent?: Commitzent;
12
+ readonly nx: NxConfigurations;
13
+ constructor(options: NxMonorepoOptions);
14
+ addRunManyCommand(target: string, description: string): void;
15
+ addExecRunManyCommand(target: string): void;
16
+ }
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.NxMonorepo = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const typescript_1 = require("projen/lib/typescript");
7
+ const NxConfiguration_1 = require("./components/NxConfiguration");
8
+ const publish_release_1 = require("./components/publish-release");
9
+ const common_options_1 = require("../common/common-options");
10
+ /**
11
+ * NX Monorepo Project
12
+ *
13
+ * @pjid nx-monorepo
14
+ */
15
+ class NxMonorepo extends typescript_1.TypeScriptProject {
16
+ constructor(options) {
17
+ const opts = common_options_1.CommonOptionsConfig.withCommonOptionsDefaults({
18
+ ...options,
19
+ });
20
+ super({
21
+ ...opts,
22
+ });
23
+ const components = common_options_1.CommonOptionsConfig.withCommonComponents(this, opts);
24
+ this.commitzent = components.commitzent;
25
+ this.addDevDeps('nx');
26
+ this.addDevDeps('@nx/workspace', '@nx/devkit');
27
+ this.addFields({
28
+ private: 'true',
29
+ workspaces: ['packages/*'],
30
+ });
31
+ this.addGitIgnore('.nx');
32
+ new publish_release_1.PublishRelease(this.github, 'PublishRelease');
33
+ this.nx = new NxConfiguration_1.NxConfigurations(this, 'nx.json');
34
+ this.tasks.removeTask('release');
35
+ this.tasks.removeTask('build');
36
+ this.addRunManyCommand('build', 'Full release build for all affected projects');
37
+ this.tasks.removeTask('compile');
38
+ this.addRunManyCommand('compile', 'Only compile for all affected projects');
39
+ this.tasks.removeTask('test');
40
+ this.addRunManyCommand('test', 'Only test for all affected projects');
41
+ this.tasks.removeTask('test:watch');
42
+ this.addTask('test:watch', {
43
+ description: 'Only test for all affected projects',
44
+ steps: [
45
+ {
46
+ exec: 'nx run-many --target=test:watch --output-style=stream --skip-nx-cache --nx-ignore-cycles --nx-bail',
47
+ receiveArgs: true,
48
+ },
49
+ ],
50
+ });
51
+ this.tasks.removeTask('eslint');
52
+ this.addRunManyCommand('eslint', 'Run eslint for all affected projects');
53
+ this.tasks.removeTask('package');
54
+ this.addRunManyCommand('package', 'Creates the distribution package for all affected projects');
55
+ this.tasks.removeTask('post-compile');
56
+ this.addRunManyCommand('post-compile', 'Run post-compile for all affected projects');
57
+ this.tasks.removeTask('pre-compile');
58
+ this.addRunManyCommand('pre-compile', 'Run pre-compile for all affected projects');
59
+ this.addTask('graph', {
60
+ description: 'Generate dependency graph',
61
+ steps: [
62
+ {
63
+ exec: 'nx graph',
64
+ },
65
+ ],
66
+ });
67
+ this.addTask('release', {
68
+ description: 'Prepare a release from \"main\" branch',
69
+ env: {
70
+ RELEASE: 'true',
71
+ },
72
+ steps: [
73
+ {
74
+ exec: 'rm -fr dist',
75
+ },
76
+ {
77
+ spawn: 'bump',
78
+ },
79
+ {
80
+ spawn: 'build',
81
+ },
82
+ {
83
+ spawn: 'unbump',
84
+ },
85
+ {
86
+ exec: 'git diff --ignore-space-at-eol --exit-code',
87
+ },
88
+ ],
89
+ });
90
+ this.addExecRunManyCommand('install:ci');
91
+ this.addTask('run-many', {
92
+ description: 'Run task against multiple workspace projects',
93
+ steps: [
94
+ {
95
+ exec: 'nx run-many',
96
+ receiveArgs: true,
97
+ },
98
+ ],
99
+ });
100
+ this.addTask('nx', {
101
+ description: 'Run Nx against multiple workspace projects',
102
+ steps: [
103
+ {
104
+ exec: 'nx',
105
+ receiveArgs: true,
106
+ },
107
+ ],
108
+ });
109
+ }
110
+ addRunManyCommand(target, description) {
111
+ this.addTask(target, {
112
+ description,
113
+ steps: [
114
+ {
115
+ exec: `nx run-many --target=${target} --output-style=stream --nx-bail`,
116
+ receiveArgs: true,
117
+ },
118
+ ],
119
+ });
120
+ }
121
+ addExecRunManyCommand(target) {
122
+ const task = this.tasks.tryFind(target);
123
+ if (task) {
124
+ task.exec(`nx run-many --target=${target} --output-style=stream --nx-bail`);
125
+ }
126
+ }
127
+ }
128
+ exports.NxMonorepo = NxMonorepo;
129
+ _a = JSII_RTTI_SYMBOL_1;
130
+ NxMonorepo[_a] = { fqn: "@jttc/projen-project-types.NxMonorepo", version: "1.0.0-beta.10" };
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9ub3JlcG8vbW9ub3JlcG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBMEQ7QUFDMUQsa0VBQWdFO0FBQ2hFLGtFQUE4RDtBQUU5RCw2REFBK0Q7QUFHL0Q7Ozs7R0FJRztBQUNILE1BQWEsVUFBVyxTQUFRLDhCQUFpQjtJQUcvQyxZQUFZLE9BQTBCO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLG9DQUFtQixDQUFDLHlCQUF5QixDQUFDO1lBQ3pELEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQztZQUNKLEdBQUcsSUFBSTtTQUNSLENBQUMsQ0FBQztRQUVILE1BQU0sVUFBVSxHQUFHLG9DQUFtQixDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFFeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2IsT0FBTyxFQUFFLE1BQU07WUFDZixVQUFVLEVBQUUsQ0FBQyxZQUFZLENBQUM7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6QixJQUFJLGdDQUFjLENBQUMsSUFBSSxDQUFDLE1BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxrQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFV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O2dCQUNMO29CQUNFLElBQUksRUFBRSx3QkFBd0IsTUFBTSxrQ0FBa0M7b0JBQ3RFLFdBQVcsRUFBRSxJQUFJO2lCQUNsQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHFCQUFxQixDQUFDLE1BQWM7UUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxJQUFJLENBQ1Asd0JBQXdCLE1BQU0sa0NBQWtDLENBQ2pFLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzs7QUFwSkgsZ0NBcUpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZVNjcmlwdFByb2plY3QgfSBmcm9tICdwcm9qZW4vbGliL3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgTnhDb25maWd1cmF0aW9ucyB9IGZyb20gJy4vY29tcG9uZW50cy9OeENvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgUHVibGlzaFJlbGVhc2UgfSBmcm9tICcuL2NvbXBvbmVudHMvcHVibGlzaC1yZWxlYXNlJztcbmltcG9ydCB7IE54TW9ub3JlcG9PcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL054TW9ub3JlcG8nO1xuaW1wb3J0IHsgQ29tbW9uT3B0aW9uc0NvbmZpZyB9IGZyb20gJy4uL2NvbW1vbi9jb21tb24tb3B0aW9ucyc7XG5pbXBvcnQgeyBDb21taXR6ZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cyc7XG5cbi8qKlxuICogTlggTW9ub3JlcG8gUHJvamVjdFxuICpcbiAqIEBwamlkIG54LW1vbm9yZXBvXG4gKi9cbmV4cG9ydCBjbGFzcyBOeE1vbm9yZXBvIGV4dGVuZHMgVHlwZVNjcmlwdFByb2plY3Qge1xuICByZWFkb25seSBjb21taXR6ZW50PzogQ29tbWl0emVudDtcbiAgcmVhZG9ubHkgbng6IE54Q29uZmlndXJhdGlvbnM7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE54TW9ub3JlcG9PcHRpb25zKSB7XG4gICAgY29uc3Qgb3B0cyA9IENvbW1vbk9wdGlvbnNDb25maWcud2l0aENvbW1vbk9wdGlvbnNEZWZhdWx0cyh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdHMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb21wb25lbnRzID0gQ29tbW9uT3B0aW9uc0NvbmZpZy53aXRoQ29tbW9uQ29tcG9uZW50cyh0aGlzLCBvcHRzKTtcbiAgICB0aGlzLmNvbW1pdHplbnQgPSBjb21wb25lbnRzLmNvbW1pdHplbnQ7XG5cbiAgICB0aGlzLmFkZERldkRlcHMoJ254Jyk7XG4gICAgdGhpcy5hZGREZXZEZXBzKCdAbngvd29ya3NwYWNlJywgJ0BueC9kZXZraXQnKTtcblxuICAgIHRoaXMuYWRkRmllbGRzKHtcbiAgICAgIHByaXZhdGU6ICd0cnVlJyxcbiAgICAgIHdvcmtzcGFjZXM6IFsncGFja2FnZXMvKiddLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRHaXRJZ25vcmUoJy5ueCcpO1xuXG4gICAgbmV3IFB1Ymxpc2hSZWxlYXNlKHRoaXMuZ2l0aHViISwgJ1B1Ymxpc2hSZWxlYXNlJyk7XG5cbiAgICB0aGlzLm54ID0gbmV3IE54Q29uZmlndXJhdGlvbnModGhpcywgJ254Lmpzb24nKTtcblxuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygncmVsZWFzZScpO1xuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygnYnVpbGQnKTtcbiAgICB0aGlzLmFkZFJ1bk1hbnlDb21tYW5kKFxuICAgICAgJ2J1aWxkJyxcbiAgICAgICdGdWxsIHJlbGVhc2UgYnVpbGQgZm9yIGFsbCBhZmZlY3RlZCBwcm9qZWN0cycsXG4gICAgKTtcblxuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygnY29tcGlsZScpO1xuICAgIHRoaXMuYWRkUnVuTWFueUNvbW1hbmQoJ2NvbXBpbGUnLCAnT25seSBjb21waWxlIGZvciBhbGwgYWZmZWN0ZWQgcHJvamVjdHMnKTtcblxuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygndGVzdCcpO1xuICAgIHRoaXMuYWRkUnVuTWFueUNvbW1hbmQoJ3Rlc3QnLCAnT25seSB0ZXN0IGZvciBhbGwgYWZmZWN0ZWQgcHJvamVjdHMnKTtcblxuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygndGVzdDp3YXRjaCcpO1xuICAgIHRoaXMuYWRkVGFzaygndGVzdDp3YXRjaCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnT25seSB0ZXN0IGZvciBhbGwgYWZmZWN0ZWQgcHJvamVjdHMnLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV4ZWM6ICdueCBydW4tbWFueSAtLXRhcmdldD10ZXN0OndhdGNoIC0tb3V0cHV0LXN0eWxlPXN0cmVhbSAtLXNraXAtbngtY2FjaGUgLS1ueC1pZ25vcmUtY3ljbGVzIC0tbngtYmFpbCcsXG4gICAgICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdlc2xpbnQnKTtcbiAgICB0aGlzLmFkZFJ1bk1hbnlDb21tYW5kKCdlc2xpbnQnLCAnUnVuIGVzbGludCBmb3IgYWxsIGFmZmVjdGVkIHByb2plY3RzJyk7XG5cbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ3BhY2thZ2UnKTtcbiAgICB0aGlzLmFkZFJ1bk1hbnlDb21tYW5kKFxuICAgICAgJ3BhY2thZ2UnLFxuICAgICAgJ0NyZWF0ZXMgdGhlIGRpc3RyaWJ1dGlvbiBwYWNrYWdlIGZvciBhbGwgYWZmZWN0ZWQgcHJvamVjdHMnLFxuICAgICk7XG5cbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ3Bvc3QtY29tcGlsZScpO1xuICAgIHRoaXMuYWRkUnVuTWFueUNvbW1hbmQoXG4gICAgICAncG9zdC1jb21waWxlJyxcbiAgICAgICdSdW4gcG9zdC1jb21waWxlIGZvciBhbGwgYWZmZWN0ZWQgcHJvamVjdHMnLFxuICAgICk7XG5cbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ3ByZS1jb21waWxlJyk7XG4gICAgdGhpcy5hZGRSdW5NYW55Q29tbWFuZChcbiAgICAgICdwcmUtY29tcGlsZScsXG4gICAgICAnUnVuIHByZS1jb21waWxlIGZvciBhbGwgYWZmZWN0ZWQgcHJvamVjdHMnLFxuICAgICk7XG5cbiAgICB0aGlzLmFkZFRhc2soJ2dyYXBoJywge1xuICAgICAgZGVzY3JpcHRpb246ICdHZW5lcmF0ZSBkZXBlbmRlbmN5IGdyYXBoJyxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBleGVjOiAnbnggZ3JhcGgnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkVGFzaygncmVsZWFzZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUHJlcGFyZSBhIHJlbGVhc2UgZnJvbSBcXFwibWFpblxcXCIgYnJhbmNoJyxcbiAgICAgIGVudjoge1xuICAgICAgICBSRUxFQVNFOiAndHJ1ZScsXG4gICAgICB9LFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV4ZWM6ICdybSAtZnIgZGlzdCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzcGF3bjogJ2J1bXAnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgc3Bhd246ICdidWlsZCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzcGF3bjogJ3VuYnVtcCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBleGVjOiAnZ2l0IGRpZmYgLS1pZ25vcmUtc3BhY2UtYXQtZW9sIC0tZXhpdC1jb2RlJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEV4ZWNSdW5NYW55Q29tbWFuZCgnaW5zdGFsbDpjaScpO1xuXG4gICAgdGhpcy5hZGRUYXNrKCdydW4tbWFueScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUnVuIHRhc2sgYWdhaW5zdCBtdWx0aXBsZSB3b3Jrc3BhY2UgcHJvamVjdHMnLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV4ZWM6ICdueCBydW4tbWFueScsXG4gICAgICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRUYXNrKCdueCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUnVuIE54IGFnYWluc3QgbXVsdGlwbGUgd29ya3NwYWNlIHByb2plY3RzJyxcbiAgICAgIHN0ZXBzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBleGVjOiAnbngnLFxuICAgICAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFJ1bk1hbnlDb21tYW5kKHRhcmdldDogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5hZGRUYXNrKHRhcmdldCwge1xuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBzdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgZXhlYzogYG54IHJ1bi1tYW55IC0tdGFyZ2V0PSR7dGFyZ2V0fSAtLW91dHB1dC1zdHlsZT1zdHJlYW0gLS1ueC1iYWlsYCxcbiAgICAgICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBhZGRFeGVjUnVuTWFueUNvbW1hbmQodGFyZ2V0OiBzdHJpbmcpIHtcbiAgICBjb25zdCB0YXNrID0gdGhpcy50YXNrcy50cnlGaW5kKHRhcmdldCk7XG4gICAgaWYgKHRhc2spIHtcbiAgICAgIHRhc2suZXhlYyhcbiAgICAgICAgYG54IHJ1bi1tYW55IC0tdGFyZ2V0PSR7dGFyZ2V0fSAtLW91dHB1dC1zdHlsZT1zdHJlYW0gLS1ueC1iYWlsYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './terraform-deploy-github-workflow';
2
+ export * from './terraform-plan-github-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("./terraform-deploy-github-workflow"), exports);
18
+ __exportStar(require("./terraform-plan-github-workflow"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVycmFmb3JtL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFFQUFtRDtBQUNuRCxtRUFBaUQiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RlcnJhZm9ybS1kZXBsb3ktZ2l0aHViLXdvcmtmbG93JztcbmV4cG9ydCAqIGZyb20gJy4vdGVycmFmb3JtLXBsYW4tZ2l0aHViLXdvcmtmbG93JztcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { Component, Project } from 'projen';
2
+ /**
3
+ * Options for TerraformDeployGithubWorkflow component.
4
+ */
5
+ export interface TerraformDeployGithubWorkflowOptions {
6
+ /**
7
+ * Terraform version to use in the workflow.
8
+ * @default "1.6.0"
9
+ */
10
+ readonly terraformVersion?: string;
11
+ /**
12
+ * Name of the workflow.
13
+ * @default "terraform-deploy"
14
+ */
15
+ readonly workflowName?: string;
16
+ }
17
+ /**
18
+ * GitHub workflow component for Terraform deployment.
19
+ * Creates a workflow that validates, plans, and applies Terraform changes.
20
+ *
21
+ * This component is designed for Terraform stack projects that need deployment,
22
+ * not for module projects that need release workflows.
23
+ */
24
+ export declare class TerraformDeployGithubWorkflow extends Component {
25
+ constructor(project: Project, options?: TerraformDeployGithubWorkflowOptions);
26
+ }
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TerraformDeployGithubWorkflow = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const projen_1 = require("projen");
7
+ const github_1 = require("projen/lib/github");
8
+ const workflows_model_1 = require("projen/lib/github/workflows-model");
9
+ /**
10
+ * GitHub workflow component for Terraform deployment.
11
+ * Creates a workflow that validates, plans, and applies Terraform changes.
12
+ *
13
+ * This component is designed for Terraform stack projects that need deployment,
14
+ * not for module projects that need release workflows.
15
+ */
16
+ class TerraformDeployGithubWorkflow extends projen_1.Component {
17
+ constructor(project, options = {}) {
18
+ super(project);
19
+ // Get or create GitHub component - use root project for subprojects, current project otherwise
20
+ const targetProject = project.parent ? project.root : project;
21
+ let github = targetProject.components.find((c) => c.constructor.name === 'GitHub');
22
+ if (!github) {
23
+ github = new github_1.GitHub(targetProject);
24
+ }
25
+ const workflowName = options.workflowName ?? 'terraform-deploy';
26
+ const terraformVersion = options.terraformVersion ?? '1.6.0';
27
+ // Use project outdir for subprojects, current directory for root projects
28
+ const workingDirectory = project.parent ? project.outdir : '.';
29
+ const workflow = github.addWorkflow(workflowName);
30
+ workflow.on({
31
+ push: {
32
+ branches: ['main'],
33
+ paths: ['**.tf', '**.tfvars'],
34
+ },
35
+ workflowDispatch: {},
36
+ });
37
+ workflow.addJob('terraform', {
38
+ name: 'Terraform',
39
+ runsOn: ['ubuntu-latest'],
40
+ env: {
41
+ tf_actions_working_dir: workingDirectory,
42
+ },
43
+ defaults: {
44
+ run: {
45
+ workingDirectory: '${{ env.tf_actions_working_dir }}',
46
+ },
47
+ },
48
+ permissions: {
49
+ contents: workflows_model_1.JobPermission.READ,
50
+ pullRequests: workflows_model_1.JobPermission.WRITE,
51
+ },
52
+ steps: [
53
+ {
54
+ name: 'Checkout',
55
+ uses: 'actions/checkout@v4',
56
+ },
57
+ {
58
+ name: 'Setup Terraform',
59
+ uses: 'hashicorp/setup-terraform@v3',
60
+ with: {
61
+ terraform_version: terraformVersion,
62
+ },
63
+ },
64
+ {
65
+ name: 'Terraform Format',
66
+ run: 'terraform fmt -check',
67
+ continueOnError: true,
68
+ },
69
+ {
70
+ name: 'Terraform Init',
71
+ run: 'terraform init',
72
+ },
73
+ {
74
+ name: 'Terraform Validate',
75
+ run: 'terraform validate',
76
+ },
77
+ {
78
+ name: 'Terraform Plan',
79
+ run: 'terraform plan -input=false',
80
+ },
81
+ {
82
+ name: 'Terraform Apply',
83
+ run: 'terraform apply -auto-approve -input=false',
84
+ },
85
+ ],
86
+ });
87
+ }
88
+ }
89
+ exports.TerraformDeployGithubWorkflow = TerraformDeployGithubWorkflow;
90
+ _a = JSII_RTTI_SYMBOL_1;
91
+ TerraformDeployGithubWorkflow[_a] = { fqn: "@jttc/projen-project-types.TerraformDeployGithubWorkflow", version: "1.0.0-beta.10" };
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLWRlcGxveS1naXRodWItd29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVycmFmb3JtL2NvbXBvbmVudHMvdGVycmFmb3JtLWRlcGxveS1naXRodWItd29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBNEM7QUFDNUMsOENBQTJDO0FBQzNDLHVFQUFrRTtBQW1CbEU7Ozs7OztHQU1HO0FBQ0gsTUFBYSw2QkFBOEIsU0FBUSxrQkFBUztJQUMxRCxZQUNFLE9BQWdCLEVBQ2hCLFVBQWdELEVBQUU7UUFFbEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsK0ZBQStGO1FBQy9GLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUM5RCxJQUFJLE1BQU0sR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDeEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FDN0IsQ0FBQztRQUNaLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksSUFBSSxrQkFBa0IsQ0FBQztRQUNoRSxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxPQUFPLENBQUM7UUFFN0QsMEVBQTBFO1FBQzFFLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBRS9ELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbEQsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNWLElBQUksRUFBRTtnQkFDSixRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0JBQ2xCLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUM7YUFDOUI7WUFDRCxnQkFBZ0IsRUFBRSxFQUFFO1NBQ3JCLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQzNCLElBQUksRUFBRSxXQUFXO1lBQ2pCLE1BQU0sRUFBRSxDQUFDLGVBQWUsQ0FBQztZQUN6QixHQUFHLEVBQUU7Z0JBQ0gsc0JBQXNCLEVBQUUsZ0JBQWdCO2FBQ3pDO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLEdBQUcsRUFBRTtvQkFDSCxnQkFBZ0IsRUFBRSxtQ0FBbUM7aUJBQ3REO2FBQ0Y7WUFDRCxXQUFXLEVBQUU7Z0JBQ1gsUUFBUSxFQUFFLCtCQUFhLENBQUMsSUFBSTtnQkFDNUIsWUFBWSxFQUFFLCtCQUFhLENBQUMsS0FBSzthQUNsQztZQUNELEtBQUssRUFBRTtnQkFDTDtvQkFDRSxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsSUFBSSxFQUFFLHFCQUFxQjtpQkFDNUI7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLDhCQUE4QjtvQkFDcEMsSUFBSSxFQUFFO3dCQUNKLGlCQUFpQixFQUFFLGdCQUFnQjtxQkFDcEM7aUJBQ0Y7Z0JBQ0Q7b0JBQ0UsSUFBSSxFQUFFLGtCQUFrQjtvQkFDeEIsR0FBRyxFQUFFLHNCQUFzQjtvQkFDM0IsZUFBZSxFQUFFLElBQUk7aUJBQ3RCO2dCQUNEO29CQUNFLElBQUksRUFBRSxnQkFBZ0I7b0JBQ3RCLEdBQUcsRUFBRSxnQkFBZ0I7aUJBQ3RCO2dCQUNEO29CQUNFLElBQUksRUFBRSxvQkFBb0I7b0JBQzFCLEdBQUcsRUFBRSxvQkFBb0I7aUJBQzFCO2dCQUNEO29CQUNFLElBQUksRUFBRSxnQkFBZ0I7b0JBQ3RCLEdBQUcsRUFBRSw2QkFBNkI7aUJBQ25DO2dCQUNEO29CQUNFLElBQUksRUFBRSxpQkFBaUI7b0JBQ3ZCLEdBQUcsRUFBRSw0Q0FBNEM7aUJBQ2xEO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQWxGSCxzRUFtRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFByb2plY3QgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgR2l0SHViIH0gZnJvbSAncHJvamVuL2xpYi9naXRodWInO1xuaW1wb3J0IHsgSm9iUGVybWlzc2lvbiB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgVGVycmFmb3JtRGVwbG95R2l0aHViV29ya2Zsb3cgY29tcG9uZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybURlcGxveUdpdGh1YldvcmtmbG93T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUZXJyYWZvcm0gdmVyc2lvbiB0byB1c2UgaW4gdGhlIHdvcmtmbG93LlxuICAgKiBAZGVmYXVsdCBcIjEuNi4wXCJcbiAgICovXG4gIHJlYWRvbmx5IHRlcnJhZm9ybVZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHdvcmtmbG93LlxuICAgKiBAZGVmYXVsdCBcInRlcnJhZm9ybS1kZXBsb3lcIlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEdpdEh1YiB3b3JrZmxvdyBjb21wb25lbnQgZm9yIFRlcnJhZm9ybSBkZXBsb3ltZW50LlxuICogQ3JlYXRlcyBhIHdvcmtmbG93IHRoYXQgdmFsaWRhdGVzLCBwbGFucywgYW5kIGFwcGxpZXMgVGVycmFmb3JtIGNoYW5nZXMuXG4gKlxuICogVGhpcyBjb21wb25lbnQgaXMgZGVzaWduZWQgZm9yIFRlcnJhZm9ybSBzdGFjayBwcm9qZWN0cyB0aGF0IG5lZWQgZGVwbG95bWVudCxcbiAqIG5vdCBmb3IgbW9kdWxlIHByb2plY3RzIHRoYXQgbmVlZCByZWxlYXNlIHdvcmtmbG93cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlcnJhZm9ybURlcGxveUdpdGh1YldvcmtmbG93IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvamVjdDogUHJvamVjdCxcbiAgICBvcHRpb25zOiBUZXJyYWZvcm1EZXBsb3lHaXRodWJXb3JrZmxvd09wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICAvLyBHZXQgb3IgY3JlYXRlIEdpdEh1YiBjb21wb25lbnQgLSB1c2Ugcm9vdCBwcm9qZWN0IGZvciBzdWJwcm9qZWN0cywgY3VycmVudCBwcm9qZWN0IG90aGVyd2lzZVxuICAgIGNvbnN0IHRhcmdldFByb2plY3QgPSBwcm9qZWN0LnBhcmVudCA/IHByb2plY3Qucm9vdCA6IHByb2plY3Q7XG4gICAgbGV0IGdpdGh1YiA9IHRhcmdldFByb2plY3QuY29tcG9uZW50cy5maW5kKFxuICAgICAgKGMpID0+IGMuY29uc3RydWN0b3IubmFtZSA9PT0gJ0dpdEh1YicsXG4gICAgKSBhcyBHaXRIdWI7XG4gICAgaWYgKCFnaXRodWIpIHtcbiAgICAgIGdpdGh1YiA9IG5ldyBHaXRIdWIodGFyZ2V0UHJvamVjdCk7XG4gICAgfVxuXG4gICAgY29uc3Qgd29ya2Zsb3dOYW1lID0gb3B0aW9ucy53b3JrZmxvd05hbWUgPz8gJ3RlcnJhZm9ybS1kZXBsb3knO1xuICAgIGNvbnN0IHRlcnJhZm9ybVZlcnNpb24gPSBvcHRpb25zLnRlcnJhZm9ybVZlcnNpb24gPz8gJzEuNi4wJztcblxuICAgIC8vIFVzZSBwcm9qZWN0IG91dGRpciBmb3Igc3VicHJvamVjdHMsIGN1cnJlbnQgZGlyZWN0b3J5IGZvciByb290IHByb2plY3RzXG4gICAgY29uc3Qgd29ya2luZ0RpcmVjdG9yeSA9IHByb2plY3QucGFyZW50ID8gcHJvamVjdC5vdXRkaXIgOiAnLic7XG5cbiAgICBjb25zdCB3b3JrZmxvdyA9IGdpdGh1Yi5hZGRXb3JrZmxvdyh3b3JrZmxvd05hbWUpO1xuXG4gICAgd29ya2Zsb3cub24oe1xuICAgICAgcHVzaDoge1xuICAgICAgICBicmFuY2hlczogWydtYWluJ10sXG4gICAgICAgIHBhdGhzOiBbJyoqLnRmJywgJyoqLnRmdmFycyddLFxuICAgICAgfSxcbiAgICAgIHdvcmtmbG93RGlzcGF0Y2g6IHt9LFxuICAgIH0pO1xuXG4gICAgd29ya2Zsb3cuYWRkSm9iKCd0ZXJyYWZvcm0nLCB7XG4gICAgICBuYW1lOiAnVGVycmFmb3JtJyxcbiAgICAgIHJ1bnNPbjogWyd1YnVudHUtbGF0ZXN0J10sXG4gICAgICBlbnY6IHtcbiAgICAgICAgdGZfYWN0aW9uc193b3JraW5nX2Rpcjogd29ya2luZ0RpcmVjdG9yeSxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0czoge1xuICAgICAgICBydW46IHtcbiAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiAnJHt7IGVudi50Zl9hY3Rpb25zX3dvcmtpbmdfZGlyIH19JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICBjb250ZW50czogSm9iUGVybWlzc2lvbi5SRUFELFxuICAgICAgICBwdWxsUmVxdWVzdHM6IEpvYlBlcm1pc3Npb24uV1JJVEUsXG4gICAgICB9LFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdDaGVja291dCcsXG4gICAgICAgICAgdXNlczogJ2FjdGlvbnMvY2hlY2tvdXRAdjQnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1NldHVwIFRlcnJhZm9ybScsXG4gICAgICAgICAgdXNlczogJ2hhc2hpY29ycC9zZXR1cC10ZXJyYWZvcm1AdjMnLFxuICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgIHRlcnJhZm9ybV92ZXJzaW9uOiB0ZXJyYWZvcm1WZXJzaW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnVGVycmFmb3JtIEZvcm1hdCcsXG4gICAgICAgICAgcnVuOiAndGVycmFmb3JtIGZtdCAtY2hlY2snLFxuICAgICAgICAgIGNvbnRpbnVlT25FcnJvcjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdUZXJyYWZvcm0gSW5pdCcsXG4gICAgICAgICAgcnVuOiAndGVycmFmb3JtIGluaXQnLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ1RlcnJhZm9ybSBWYWxpZGF0ZScsXG4gICAgICAgICAgcnVuOiAndGVycmFmb3JtIHZhbGlkYXRlJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdUZXJyYWZvcm0gUGxhbicsXG4gICAgICAgICAgcnVuOiAndGVycmFmb3JtIHBsYW4gLWlucHV0PWZhbHNlJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdUZXJyYWZvcm0gQXBwbHknLFxuICAgICAgICAgIHJ1bjogJ3RlcnJhZm9ybSBhcHBseSAtYXV0by1hcHByb3ZlIC1pbnB1dD1mYWxzZScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,31 @@
1
+ import { Component, Project } from 'projen';
2
+ /**
3
+ * Options for TerraformPlanGithubWorkflow component.
4
+ */
5
+ export interface TerraformPlanGithubWorkflowOptions {
6
+ /**
7
+ * Terraform version to use in the workflow.
8
+ * @default "1.6.0"
9
+ */
10
+ readonly terraformVersion?: string;
11
+ /**
12
+ * Name of the workflow.
13
+ * @default "terraform-plan"
14
+ */
15
+ readonly workflowName?: string;
16
+ /**
17
+ * Working directory for Terraform commands.
18
+ * @default "."
19
+ */
20
+ readonly workingDirectory?: string;
21
+ }
22
+ /**
23
+ * GitHub workflow component for Terraform plan on Pull Requests.
24
+ * Creates a workflow that validates, plans Terraform changes and comments results on PRs.
25
+ *
26
+ * This component is designed for Terraform stack projects to show plan results
27
+ * in Pull Requests without actually applying changes.
28
+ */
29
+ export declare class TerraformPlanGithubWorkflow extends Component {
30
+ constructor(project: Project, options?: TerraformPlanGithubWorkflowOptions);
31
+ }