@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.
- package/.cz-config.js +83 -43
- package/.czrc +1 -1
- package/.jsii +4637 -14
- package/AGENTS.md +132 -0
- package/API.md +31146 -7
- package/README.md +197 -29
- package/docs/components/cdk8s.md +724 -0
- package/docs/components/commitzent.md +261 -0
- package/docs/components/k3d.md +456 -0
- package/docs/default-configurations.md +267 -0
- package/docs/index.md +86 -1
- package/docs/project-types/cdk-app.md +481 -0
- package/docs/project-types/cdk-library.md +321 -0
- package/docs/project-types/cdk8s-app.md +353 -0
- package/docs/project-types/cdk8s-library.md +442 -0
- package/docs/project-types/nx-monorepo.md +382 -0
- package/lib/cdk/cdk-app-project.d.ts +12 -0
- package/lib/cdk/cdk-app-project.js +28 -0
- package/lib/cdk/cdk-library-project.d.ts +12 -0
- package/lib/cdk/cdk-library-project.js +28 -0
- package/lib/cdk/cdk8s-app-project.d.ts +14 -0
- package/lib/cdk/cdk8s-app-project.js +54 -0
- package/lib/cdk/cdk8s-library-project.d.ts +14 -0
- package/lib/cdk/cdk8s-library-project.js +50 -0
- package/lib/cdk/index.d.ts +5 -0
- package/lib/cdk/index.js +22 -0
- package/lib/cdk/interfaces/cdk-app-options.d.ts +7 -0
- package/lib/cdk/interfaces/cdk-app-options.js +3 -0
- package/lib/cdk/interfaces/cdk-library-options.d.ts +7 -0
- package/lib/cdk/interfaces/cdk-library-options.js +3 -0
- package/lib/cdk/interfaces/cdk8s-app-options.d.ts +18 -0
- package/lib/cdk/interfaces/cdk8s-app-options.js +3 -0
- package/lib/cdk/interfaces/cdk8s-library-options.d.ts +8 -0
- package/lib/cdk/interfaces/cdk8s-library-options.js +3 -0
- package/lib/cdk/interfaces/index.d.ts +5 -0
- package/lib/cdk/interfaces/index.js +22 -0
- package/lib/cdk/interfaces/jsii-options.d.ts +7 -0
- package/lib/cdk/interfaces/jsii-options.js +3 -0
- package/lib/cdk/interfaces/project-global-options.d.ts +15 -0
- package/lib/cdk/interfaces/project-global-options.js +3 -0
- package/lib/cdk/jsii-project.d.ts +12 -0
- package/lib/cdk/jsii-project.js +24 -0
- package/lib/common/common-options.d.ts +40 -0
- package/lib/common/common-options.js +110 -0
- package/lib/components/agents/agents.d.ts +21 -0
- package/lib/components/agents/agents.js +476 -0
- package/lib/components/agents/index.d.ts +1 -0
- package/lib/components/agents/index.js +18 -0
- package/lib/components/cdk8s/cdk8s.d.ts +11 -0
- package/lib/components/cdk8s/cdk8s.js +124 -0
- package/lib/components/cdk8s/index.d.ts +2 -0
- package/lib/components/cdk8s/index.js +19 -0
- package/lib/components/cdk8s/interfaces/Cdk8s.d.ts +34 -0
- package/lib/components/cdk8s/interfaces/Cdk8s.js +12 -0
- package/lib/components/cdk8s/main-library.ts.template +35 -0
- package/lib/components/cdk8s/main.test.ts.template +3 -0
- package/lib/components/cdk8s/main.ts.template +38 -0
- package/lib/components/commitzent/commitzent.d.ts +8 -0
- package/lib/components/commitzent/commitzent.js +100 -0
- package/lib/components/commitzent/index.d.ts +2 -0
- package/lib/components/commitzent/index.js +19 -0
- package/lib/components/commitzent/interfaces/Icommitzent.d.ts +34 -0
- package/lib/components/commitzent/interfaces/Icommitzent.js +3 -0
- package/lib/components/index.d.ts +4 -0
- package/lib/components/index.js +21 -0
- package/lib/components/k3d/index.d.ts +3 -0
- package/lib/components/k3d/index.js +20 -0
- package/lib/components/k3d/k3d.d.ts +33 -0
- package/lib/components/k3d/k3d.js +109 -0
- package/lib/components/k3d/k3dBase.d.ts +4 -0
- package/lib/components/k3d/k3dBase.js +23 -0
- package/lib/components/k3d/types.d.ts +64 -0
- package/lib/components/k3d/types.js +8 -0
- package/lib/index.d.ts +5 -3
- package/lib/index.js +20 -12
- package/lib/monorepo/components/NxConfiguration.d.ts +17 -0
- package/lib/monorepo/components/NxConfiguration.js +105 -0
- package/lib/monorepo/components/index.d.ts +2 -0
- package/lib/monorepo/components/index.js +19 -0
- package/lib/monorepo/components/publish-release.d.ts +5 -0
- package/lib/monorepo/components/publish-release.js +80 -0
- package/lib/monorepo/index.d.ts +3 -0
- package/lib/monorepo/index.js +20 -0
- package/lib/monorepo/interfaces/Nx.d.ts +130 -0
- package/lib/monorepo/interfaces/Nx.js +3 -0
- package/lib/monorepo/interfaces/NxMonorepo.d.ts +3 -0
- package/lib/monorepo/interfaces/NxMonorepo.js +3 -0
- package/lib/monorepo/interfaces/index.d.ts +2 -0
- package/lib/monorepo/interfaces/index.js +19 -0
- package/lib/monorepo/monorepo.d.ts +16 -0
- package/lib/monorepo/monorepo.js +131 -0
- package/lib/terraform/components/index.d.ts +2 -0
- package/lib/terraform/components/index.js +19 -0
- package/lib/terraform/components/terraform-deploy-github-workflow.d.ts +26 -0
- package/lib/terraform/components/terraform-deploy-github-workflow.js +92 -0
- package/lib/terraform/components/terraform-plan-github-workflow.d.ts +31 -0
- package/lib/terraform/components/terraform-plan-github-workflow.js +155 -0
- package/lib/terraform/index.d.ts +5 -0
- package/lib/terraform/index.js +22 -0
- package/lib/terraform/providers/hetzner-provider.d.ts +105 -0
- package/lib/terraform/providers/hetzner-provider.js +83 -0
- package/lib/terraform/providers/index.d.ts +2 -0
- package/lib/terraform/providers/index.js +19 -0
- package/lib/terraform/providers/provider-strategy.d.ts +44 -0
- package/lib/terraform/providers/provider-strategy.js +38 -0
- package/lib/terraform/terraform-base-project.d.ts +38 -0
- package/lib/terraform/terraform-base-project.js +97 -0
- package/lib/terraform/terraform-module-project.d.ts +24 -0
- package/lib/terraform/terraform-module-project.js +77 -0
- package/lib/terraform/terraform-stack-project.d.ts +28 -0
- package/lib/terraform/terraform-stack-project.js +83 -0
- package/mkdocs.yml +12 -0
- package/package.json +14 -7
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.TerraformBaseProject = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const projen_1 = require("projen");
|
|
7
|
+
/**
|
|
8
|
+
* Base Terraform project that provides common Terraform configuration.
|
|
9
|
+
*/
|
|
10
|
+
class TerraformBaseProject extends projen_1.Project {
|
|
11
|
+
constructor(options) {
|
|
12
|
+
super(options);
|
|
13
|
+
// Store the provider and terraform version
|
|
14
|
+
this._provider = options.provider;
|
|
15
|
+
this._terraformVersion = options.terraformVersion ?? '1.6.0';
|
|
16
|
+
// Create versions.tf with Terraform version constraint
|
|
17
|
+
new projen_1.TextFile(this, 'versions.tf', {
|
|
18
|
+
//marker: true,
|
|
19
|
+
//readonly: true,
|
|
20
|
+
lines: [
|
|
21
|
+
'# ~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen". ~~',
|
|
22
|
+
'',
|
|
23
|
+
'terraform {',
|
|
24
|
+
` required_version = ">= ${this._terraformVersion}"`,
|
|
25
|
+
'}',
|
|
26
|
+
'',
|
|
27
|
+
],
|
|
28
|
+
});
|
|
29
|
+
// Add Terraform-specific patterns to .gitignore
|
|
30
|
+
this.gitignore.addPatterns('.terraform/', '*.tfstate', '*.tfstate.*', '.terraform.lock.hcl', 'terraform.tfvars', '*.tfvars', 'override.tf', 'override.tf.json', '*_override.tf', '*_override.tf.json');
|
|
31
|
+
// Add basic Terraform tasks
|
|
32
|
+
this.addTask('terraform:init', {
|
|
33
|
+
description: 'Initialize Terraform working directory',
|
|
34
|
+
exec: 'terraform init',
|
|
35
|
+
});
|
|
36
|
+
this.addTask('terraform:format', {
|
|
37
|
+
description: 'Format Terraform configuration files',
|
|
38
|
+
exec: 'terraform fmt -recursive',
|
|
39
|
+
});
|
|
40
|
+
this.addTask('terraform:validate', {
|
|
41
|
+
description: 'Validate Terraform configuration',
|
|
42
|
+
exec: 'terraform validate',
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Add a provider to this Terraform project.
|
|
47
|
+
* Only one provider per project is allowed.
|
|
48
|
+
*/
|
|
49
|
+
addProvider(provider) {
|
|
50
|
+
if (this._provider) {
|
|
51
|
+
throw new Error('Only one provider per Terraform project is allowed');
|
|
52
|
+
}
|
|
53
|
+
this._provider = provider;
|
|
54
|
+
this.generateProviderFile();
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get the current provider.
|
|
58
|
+
*/
|
|
59
|
+
get provider() {
|
|
60
|
+
return this._provider;
|
|
61
|
+
}
|
|
62
|
+
preSynthesize() {
|
|
63
|
+
super.preSynthesize();
|
|
64
|
+
if (this._provider) {
|
|
65
|
+
this.generateProviderFile();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Generate the provider.tf file if a provider is configured.
|
|
70
|
+
*/
|
|
71
|
+
generateProviderFile() {
|
|
72
|
+
if (!this._provider) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
new projen_1.TextFile(this, 'provider.tf', {
|
|
76
|
+
lines: [
|
|
77
|
+
'# ~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen". ~~',
|
|
78
|
+
'',
|
|
79
|
+
'terraform {',
|
|
80
|
+
' required_providers {',
|
|
81
|
+
` ${this._provider.providerAlias()} = {`,
|
|
82
|
+
` source = "${this._provider.providerSource()}"`,
|
|
83
|
+
` version = "${this._provider.versionConstraint()}"`,
|
|
84
|
+
' }',
|
|
85
|
+
' }',
|
|
86
|
+
'}',
|
|
87
|
+
'',
|
|
88
|
+
...this._provider.generateProviderBlock(),
|
|
89
|
+
'',
|
|
90
|
+
],
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
exports.TerraformBaseProject = TerraformBaseProject;
|
|
95
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
96
|
+
TerraformBaseProject[_a] = { fqn: "@jttc/projen-project-types.TerraformBaseProject", version: "1.0.0-beta.10" };
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLWJhc2UtcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXJyYWZvcm0vdGVycmFmb3JtLWJhc2UtcHJvamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1DQUEyRDtBQW1CM0Q7O0dBRUc7QUFDSCxNQUFhLG9CQUFxQixTQUFRLGdCQUFPO0lBSS9DLFlBQVksT0FBb0M7UUFDOUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUNsQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixJQUFJLE9BQU8sQ0FBQztRQUU3RCx1REFBdUQ7UUFDdkQsSUFBSSxpQkFBUSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDaEMsZUFBZTtZQUNmLGlCQUFpQjtZQUNqQixLQUFLLEVBQUU7Z0JBQ0wsaUZBQWlGO2dCQUNqRixFQUFFO2dCQUNGLGFBQWE7Z0JBQ2IsNEJBQTRCLElBQUksQ0FBQyxpQkFBaUIsR0FBRztnQkFDckQsR0FBRztnQkFDSCxFQUFFO2FBQ0g7U0FDRixDQUFDLENBQUM7UUFFSCxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQ3hCLGFBQWEsRUFDYixXQUFXLEVBQ1gsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLG9CQUFvQixDQUNyQixDQUFDO1FBRUYsNEJBQTRCO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7WUFDN0IsV0FBVyxFQUFFLHdDQUF3QztZQUNyRCxJQUFJLEVBQUUsZ0JBQWdCO1NBQ3ZCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUU7WUFDL0IsV0FBVyxFQUFFLHNDQUFzQztZQUNuRCxJQUFJLEVBQUUsMEJBQTBCO1NBQ2pDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUU7WUFDakMsV0FBVyxFQUFFLGtDQUFrQztZQUMvQyxJQUFJLEVBQUUsb0JBQW9CO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSSxXQUFXLENBQUMsUUFBMkI7UUFDNUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxhQUFhO1FBQ2xCLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLGlCQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNoQyxLQUFLLEVBQUU7Z0JBQ0wsaUZBQWlGO2dCQUNqRixFQUFFO2dCQUNGLGFBQWE7Z0JBQ2Isd0JBQXdCO2dCQUN4QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLE1BQU07Z0JBQzNDLG9CQUFvQixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxHQUFHO2dCQUN0RCxvQkFBb0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHO2dCQUN6RCxPQUFPO2dCQUNQLEtBQUs7Z0JBQ0wsR0FBRztnQkFDSCxFQUFFO2dCQUNGLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRTtnQkFDekMsRUFBRTthQUNIO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUEzR0gsb0RBNEdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvamVjdCwgUHJvamVjdE9wdGlvbnMsIFRleHRGaWxlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IFRlcnJhZm9ybVByb3ZpZGVyIH0gZnJvbSAnLi9wcm92aWRlcnMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIFRlcnJhZm9ybSBiYXNlIHByb2plY3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtQmFzZVByb2plY3RPcHRpb25zIGV4dGVuZHMgUHJvamVjdE9wdGlvbnMge1xuICAvKipcbiAgICogTWluaW11bSByZXF1aXJlZCBUZXJyYWZvcm0gdmVyc2lvbi5cbiAgICogQGRlZmF1bHQgXCIxLjYuMFwiXG4gICAqL1xuICByZWFkb25seSB0ZXJyYWZvcm1WZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUZXJyYWZvcm0gcHJvdmlkZXIgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyPzogVGVycmFmb3JtUHJvdmlkZXI7XG59XG5cbi8qKlxuICogQmFzZSBUZXJyYWZvcm0gcHJvamVjdCB0aGF0IHByb3ZpZGVzIGNvbW1vbiBUZXJyYWZvcm0gY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlcnJhZm9ybUJhc2VQcm9qZWN0IGV4dGVuZHMgUHJvamVjdCB7XG4gIHByaXZhdGUgX3Byb3ZpZGVyPzogVGVycmFmb3JtUHJvdmlkZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlcnJhZm9ybVZlcnNpb246IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBUZXJyYWZvcm1CYXNlUHJvamVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIC8vIFN0b3JlIHRoZSBwcm92aWRlciBhbmQgdGVycmFmb3JtIHZlcnNpb25cbiAgICB0aGlzLl9wcm92aWRlciA9IG9wdGlvbnMucHJvdmlkZXI7XG4gICAgdGhpcy5fdGVycmFmb3JtVmVyc2lvbiA9IG9wdGlvbnMudGVycmFmb3JtVmVyc2lvbiA/PyAnMS42LjAnO1xuXG4gICAgLy8gQ3JlYXRlIHZlcnNpb25zLnRmIHdpdGggVGVycmFmb3JtIHZlcnNpb24gY29uc3RyYWludFxuICAgIG5ldyBUZXh0RmlsZSh0aGlzLCAndmVyc2lvbnMudGYnLCB7XG4gICAgICAvL21hcmtlcjogdHJ1ZSxcbiAgICAgIC8vcmVhZG9ubHk6IHRydWUsXG4gICAgICBsaW5lczogW1xuICAgICAgICAnIyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJucHggcHJvamVuXCIuIH5+JyxcbiAgICAgICAgJycsXG4gICAgICAgICd0ZXJyYWZvcm0geycsXG4gICAgICAgIGAgIHJlcXVpcmVkX3ZlcnNpb24gPSBcIj49ICR7dGhpcy5fdGVycmFmb3JtVmVyc2lvbn1cImAsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIFRlcnJhZm9ybS1zcGVjaWZpYyBwYXR0ZXJucyB0byAuZ2l0aWdub3JlXG4gICAgdGhpcy5naXRpZ25vcmUuYWRkUGF0dGVybnMoXG4gICAgICAnLnRlcnJhZm9ybS8nLFxuICAgICAgJyoudGZzdGF0ZScsXG4gICAgICAnKi50ZnN0YXRlLionLFxuICAgICAgJy50ZXJyYWZvcm0ubG9jay5oY2wnLFxuICAgICAgJ3RlcnJhZm9ybS50ZnZhcnMnLFxuICAgICAgJyoudGZ2YXJzJyxcbiAgICAgICdvdmVycmlkZS50ZicsXG4gICAgICAnb3ZlcnJpZGUudGYuanNvbicsXG4gICAgICAnKl9vdmVycmlkZS50ZicsXG4gICAgICAnKl9vdmVycmlkZS50Zi5qc29uJyxcbiAgICApO1xuXG4gICAgLy8gQWRkIGJhc2ljIFRlcnJhZm9ybSB0YXNrc1xuICAgIHRoaXMuYWRkVGFzaygndGVycmFmb3JtOmluaXQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0luaXRpYWxpemUgVGVycmFmb3JtIHdvcmtpbmcgZGlyZWN0b3J5JyxcbiAgICAgIGV4ZWM6ICd0ZXJyYWZvcm0gaW5pdCcsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZFRhc2soJ3RlcnJhZm9ybTpmb3JtYXQnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0Zvcm1hdCBUZXJyYWZvcm0gY29uZmlndXJhdGlvbiBmaWxlcycsXG4gICAgICBleGVjOiAndGVycmFmb3JtIGZtdCAtcmVjdXJzaXZlJyxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkVGFzaygndGVycmFmb3JtOnZhbGlkYXRlJywge1xuICAgICAgZGVzY3JpcHRpb246ICdWYWxpZGF0ZSBUZXJyYWZvcm0gY29uZmlndXJhdGlvbicsXG4gICAgICBleGVjOiAndGVycmFmb3JtIHZhbGlkYXRlJyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBwcm92aWRlciB0byB0aGlzIFRlcnJhZm9ybSBwcm9qZWN0LlxuICAgKiBPbmx5IG9uZSBwcm92aWRlciBwZXIgcHJvamVjdCBpcyBhbGxvd2VkLlxuICAgKi9cbiAgcHVibGljIGFkZFByb3ZpZGVyKHByb3ZpZGVyOiBUZXJyYWZvcm1Qcm92aWRlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9wcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPbmx5IG9uZSBwcm92aWRlciBwZXIgVGVycmFmb3JtIHByb2plY3QgaXMgYWxsb3dlZCcpO1xuICAgIH1cbiAgICB0aGlzLl9wcm92aWRlciA9IHByb3ZpZGVyO1xuICAgIHRoaXMuZ2VuZXJhdGVQcm92aWRlckZpbGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgcHJvdmlkZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHByb3ZpZGVyKCk6IFRlcnJhZm9ybVByb3ZpZGVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcHJvdmlkZXI7XG4gIH1cblxuICBwdWJsaWMgcHJlU3ludGhlc2l6ZSgpOiB2b2lkIHtcbiAgICBzdXBlci5wcmVTeW50aGVzaXplKCk7XG4gICAgaWYgKHRoaXMuX3Byb3ZpZGVyKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlUHJvdmlkZXJGaWxlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRoZSBwcm92aWRlci50ZiBmaWxlIGlmIGEgcHJvdmlkZXIgaXMgY29uZmlndXJlZC5cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVQcm92aWRlckZpbGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wcm92aWRlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG5ldyBUZXh0RmlsZSh0aGlzLCAncHJvdmlkZXIudGYnLCB7XG4gICAgICBsaW5lczogW1xuICAgICAgICAnIyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJucHggcHJvamVuXCIuIH5+JyxcbiAgICAgICAgJycsXG4gICAgICAgICd0ZXJyYWZvcm0geycsXG4gICAgICAgICcgIHJlcXVpcmVkX3Byb3ZpZGVycyB7JyxcbiAgICAgICAgYCAgICAke3RoaXMuX3Byb3ZpZGVyLnByb3ZpZGVyQWxpYXMoKX0gPSB7YCxcbiAgICAgICAgYCAgICAgIHNvdXJjZSAgPSBcIiR7dGhpcy5fcHJvdmlkZXIucHJvdmlkZXJTb3VyY2UoKX1cImAsXG4gICAgICAgIGAgICAgICB2ZXJzaW9uID0gXCIke3RoaXMuX3Byb3ZpZGVyLnZlcnNpb25Db25zdHJhaW50KCl9XCJgLFxuICAgICAgICAnICAgIH0nLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgLi4udGhpcy5fcHJvdmlkZXIuZ2VuZXJhdGVQcm92aWRlckJsb2NrKCksXG4gICAgICAgICcnLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { TerraformBaseProject, TerraformBaseProjectOptions } from './terraform-base-project';
|
|
2
|
+
/**
|
|
3
|
+
* Options for Terraform module project.
|
|
4
|
+
*/
|
|
5
|
+
export interface TerraformModuleProjectOptions extends TerraformBaseProjectOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Enable GitHub workflow for Terraform plan on Pull Requests.
|
|
8
|
+
* Creates a workflow that validates and plans Terraform changes on PRs,
|
|
9
|
+
* and comments the results back to the PR.
|
|
10
|
+
* @default true
|
|
11
|
+
*/
|
|
12
|
+
readonly enablePlanWorkflow?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Terraform module project for creating reusable infrastructure components.
|
|
16
|
+
*
|
|
17
|
+
* This project type is designed for Terraform modules that are published
|
|
18
|
+
* and consumed by other projects, not for deploying infrastructure directly.
|
|
19
|
+
*
|
|
20
|
+
* @pjid terraform-module
|
|
21
|
+
*/
|
|
22
|
+
export declare class TerraformModuleProject extends TerraformBaseProject {
|
|
23
|
+
constructor(options: TerraformModuleProjectOptions);
|
|
24
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.TerraformModuleProject = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const projen_1 = require("projen");
|
|
7
|
+
const components_1 = require("./components");
|
|
8
|
+
const terraform_base_project_1 = require("./terraform-base-project");
|
|
9
|
+
/**
|
|
10
|
+
* Terraform module project for creating reusable infrastructure components.
|
|
11
|
+
*
|
|
12
|
+
* This project type is designed for Terraform modules that are published
|
|
13
|
+
* and consumed by other projects, not for deploying infrastructure directly.
|
|
14
|
+
*
|
|
15
|
+
* @pjid terraform-module
|
|
16
|
+
*/
|
|
17
|
+
class TerraformModuleProject extends terraform_base_project_1.TerraformBaseProject {
|
|
18
|
+
constructor(options) {
|
|
19
|
+
super(options);
|
|
20
|
+
// Create main.tf
|
|
21
|
+
new projen_1.SampleFile(this, 'main.tf', {
|
|
22
|
+
contents: `# Main Terraform configuration
|
|
23
|
+
`,
|
|
24
|
+
});
|
|
25
|
+
// Create variables.tf
|
|
26
|
+
new projen_1.SampleFile(this, 'variables.tf', {
|
|
27
|
+
contents: `# Terraform variables
|
|
28
|
+
`,
|
|
29
|
+
});
|
|
30
|
+
// Create outputs.tf
|
|
31
|
+
new projen_1.SampleFile(this, 'outputs.tf', {
|
|
32
|
+
contents: `# Terraform outputs
|
|
33
|
+
`,
|
|
34
|
+
});
|
|
35
|
+
// Add terraform-specific tasks
|
|
36
|
+
this.addTask('terraform', {
|
|
37
|
+
description: 'Run terraform command with arguments',
|
|
38
|
+
exec: 'terraform',
|
|
39
|
+
receiveArgs: true,
|
|
40
|
+
});
|
|
41
|
+
this.addTask('terraform:plan', {
|
|
42
|
+
description: 'Plan Terraform changes',
|
|
43
|
+
exec: 'terraform plan',
|
|
44
|
+
});
|
|
45
|
+
// Note: No terraform:apply task for modules since they shouldn't be applied directly
|
|
46
|
+
// Modify pre-compile to run terraform format and validate
|
|
47
|
+
const preCompileTask = this.tasks.tryFind('pre-compile');
|
|
48
|
+
if (preCompileTask) {
|
|
49
|
+
const formatTask = this.tasks.tryFind('terraform:format');
|
|
50
|
+
const validateTask = this.tasks.tryFind('terraform:validate');
|
|
51
|
+
if (formatTask) {
|
|
52
|
+
preCompileTask.spawn(formatTask);
|
|
53
|
+
}
|
|
54
|
+
if (validateTask) {
|
|
55
|
+
preCompileTask.spawn(validateTask);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Modify compile to run terraform plan
|
|
59
|
+
const compileTask = this.tasks.tryFind('compile');
|
|
60
|
+
if (compileTask) {
|
|
61
|
+
const planTask = this.tasks.tryFind('terraform:plan');
|
|
62
|
+
if (planTask) {
|
|
63
|
+
compileTask.spawn(planTask);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Add Plan workflow for PRs if enabled (modules don't need deploy workflow)
|
|
67
|
+
if (options.enablePlanWorkflow !== false) {
|
|
68
|
+
new components_1.TerraformPlanGithubWorkflow(this, {
|
|
69
|
+
terraformVersion: options.terraformVersion,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.TerraformModuleProject = TerraformModuleProject;
|
|
75
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
76
|
+
TerraformModuleProject[_a] = { fqn: "@jttc/projen-project-types.TerraformModuleProject", version: "1.0.0-beta.10" };
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLW1vZHVsZS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RlcnJhZm9ybS90ZXJyYWZvcm0tbW9kdWxlLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBb0M7QUFDcEMsNkNBQTJEO0FBQzNELHFFQUdrQztBQWVsQzs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSw2Q0FBb0I7SUFDOUQsWUFBWSxPQUFzQztRQUNoRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixpQkFBaUI7UUFDakIsSUFBSSxtQkFBVSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDOUIsUUFBUSxFQUFFO0NBQ2Y7U0FDSSxDQUFDLENBQUM7UUFFSCxzQkFBc0I7UUFDdEIsSUFBSSxtQkFBVSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDbkMsUUFBUSxFQUFFO0NBQ2Y7U0FDSSxDQUFDLENBQUM7UUFFSCxvQkFBb0I7UUFDcEIsSUFBSSxtQkFBVSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDakMsUUFBUSxFQUFFO0NBQ2Y7U0FDSSxDQUFDLENBQUM7UUFFSCwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDeEIsV0FBVyxFQUFFLHNDQUFzQztZQUNuRCxJQUFJLEVBQUUsV0FBVztZQUNqQixXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQzdCLFdBQVcsRUFBRSx3QkFBd0I7WUFDckMsSUFBSSxFQUFFLGdCQUFnQjtTQUN2QixDQUFDLENBQUM7UUFFSCxxRkFBcUY7UUFFckYsMERBQTBEO1FBQzFELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pELElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUMxRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBRTlELElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsY0FBYyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsY0FBYyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNyQyxDQUFDO1FBQ0gsQ0FBQztRQUVELHVDQUF1QztRQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRCxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDdEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO1FBRUQsNEVBQTRFO1FBQzVFLElBQUksT0FBTyxDQUFDLGtCQUFrQixLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3pDLElBQUksd0NBQTJCLENBQUMsSUFBSSxFQUFFO2dCQUNwQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCO2FBQzNDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQWpFSCx3REFrRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYW1wbGVGaWxlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IFRlcnJhZm9ybVBsYW5HaXRodWJXb3JrZmxvdyB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBUZXJyYWZvcm1CYXNlUHJvamVjdCxcbiAgVGVycmFmb3JtQmFzZVByb2plY3RPcHRpb25zLFxufSBmcm9tICcuL3RlcnJhZm9ybS1iYXNlLXByb2plY3QnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIFRlcnJhZm9ybSBtb2R1bGUgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1Nb2R1bGVQcm9qZWN0T3B0aW9ucyBleHRlbmRzIFRlcnJhZm9ybUJhc2VQcm9qZWN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBFbmFibGUgR2l0SHViIHdvcmtmbG93IGZvciBUZXJyYWZvcm0gcGxhbiBvbiBQdWxsIFJlcXVlc3RzLlxuICAgKiBDcmVhdGVzIGEgd29ya2Zsb3cgdGhhdCB2YWxpZGF0ZXMgYW5kIHBsYW5zIFRlcnJhZm9ybSBjaGFuZ2VzIG9uIFBScyxcbiAgICogYW5kIGNvbW1lbnRzIHRoZSByZXN1bHRzIGJhY2sgdG8gdGhlIFBSLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQbGFuV29ya2Zsb3c/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRlcnJhZm9ybSBtb2R1bGUgcHJvamVjdCBmb3IgY3JlYXRpbmcgcmV1c2FibGUgaW5mcmFzdHJ1Y3R1cmUgY29tcG9uZW50cy5cbiAqXG4gKiBUaGlzIHByb2plY3QgdHlwZSBpcyBkZXNpZ25lZCBmb3IgVGVycmFmb3JtIG1vZHVsZXMgdGhhdCBhcmUgcHVibGlzaGVkXG4gKiBhbmQgY29uc3VtZWQgYnkgb3RoZXIgcHJvamVjdHMsIG5vdCBmb3IgZGVwbG95aW5nIGluZnJhc3RydWN0dXJlIGRpcmVjdGx5LlxuICpcbiAqIEBwamlkIHRlcnJhZm9ybS1tb2R1bGVcbiAqL1xuZXhwb3J0IGNsYXNzIFRlcnJhZm9ybU1vZHVsZVByb2plY3QgZXh0ZW5kcyBUZXJyYWZvcm1CYXNlUHJvamVjdCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFRlcnJhZm9ybU1vZHVsZVByb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICAvLyBDcmVhdGUgbWFpbi50ZlxuICAgIG5ldyBTYW1wbGVGaWxlKHRoaXMsICdtYWluLnRmJywge1xuICAgICAgY29udGVudHM6IGAjIE1haW4gVGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cbmAsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgdmFyaWFibGVzLnRmXG4gICAgbmV3IFNhbXBsZUZpbGUodGhpcywgJ3ZhcmlhYmxlcy50ZicsIHtcbiAgICAgIGNvbnRlbnRzOiBgIyBUZXJyYWZvcm0gdmFyaWFibGVzXG5gLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIG91dHB1dHMudGZcbiAgICBuZXcgU2FtcGxlRmlsZSh0aGlzLCAnb3V0cHV0cy50ZicsIHtcbiAgICAgIGNvbnRlbnRzOiBgIyBUZXJyYWZvcm0gb3V0cHV0c1xuYCxcbiAgICB9KTtcblxuICAgIC8vIEFkZCB0ZXJyYWZvcm0tc3BlY2lmaWMgdGFza3NcbiAgICB0aGlzLmFkZFRhc2soJ3RlcnJhZm9ybScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUnVuIHRlcnJhZm9ybSBjb21tYW5kIHdpdGggYXJndW1lbnRzJyxcbiAgICAgIGV4ZWM6ICd0ZXJyYWZvcm0nLFxuICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZFRhc2soJ3RlcnJhZm9ybTpwbGFuJywge1xuICAgICAgZGVzY3JpcHRpb246ICdQbGFuIFRlcnJhZm9ybSBjaGFuZ2VzJyxcbiAgICAgIGV4ZWM6ICd0ZXJyYWZvcm0gcGxhbicsXG4gICAgfSk7XG5cbiAgICAvLyBOb3RlOiBObyB0ZXJyYWZvcm06YXBwbHkgdGFzayBmb3IgbW9kdWxlcyBzaW5jZSB0aGV5IHNob3VsZG4ndCBiZSBhcHBsaWVkIGRpcmVjdGx5XG5cbiAgICAvLyBNb2RpZnkgcHJlLWNvbXBpbGUgdG8gcnVuIHRlcnJhZm9ybSBmb3JtYXQgYW5kIHZhbGlkYXRlXG4gICAgY29uc3QgcHJlQ29tcGlsZVRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ3ByZS1jb21waWxlJyk7XG4gICAgaWYgKHByZUNvbXBpbGVUYXNrKSB7XG4gICAgICBjb25zdCBmb3JtYXRUYXNrID0gdGhpcy50YXNrcy50cnlGaW5kKCd0ZXJyYWZvcm06Zm9ybWF0Jyk7XG4gICAgICBjb25zdCB2YWxpZGF0ZVRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ3RlcnJhZm9ybTp2YWxpZGF0ZScpO1xuXG4gICAgICBpZiAoZm9ybWF0VGFzaykge1xuICAgICAgICBwcmVDb21waWxlVGFzay5zcGF3bihmb3JtYXRUYXNrKTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWxpZGF0ZVRhc2spIHtcbiAgICAgICAgcHJlQ29tcGlsZVRhc2suc3Bhd24odmFsaWRhdGVUYXNrKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNb2RpZnkgY29tcGlsZSB0byBydW4gdGVycmFmb3JtIHBsYW5cbiAgICBjb25zdCBjb21waWxlVGFzayA9IHRoaXMudGFza3MudHJ5RmluZCgnY29tcGlsZScpO1xuICAgIGlmIChjb21waWxlVGFzaykge1xuICAgICAgY29uc3QgcGxhblRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ3RlcnJhZm9ybTpwbGFuJyk7XG4gICAgICBpZiAocGxhblRhc2spIHtcbiAgICAgICAgY29tcGlsZVRhc2suc3Bhd24ocGxhblRhc2spO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBQbGFuIHdvcmtmbG93IGZvciBQUnMgaWYgZW5hYmxlZCAobW9kdWxlcyBkb24ndCBuZWVkIGRlcGxveSB3b3JrZmxvdylcbiAgICBpZiAob3B0aW9ucy5lbmFibGVQbGFuV29ya2Zsb3cgIT09IGZhbHNlKSB7XG4gICAgICBuZXcgVGVycmFmb3JtUGxhbkdpdGh1YldvcmtmbG93KHRoaXMsIHtcbiAgICAgICAgdGVycmFmb3JtVmVyc2lvbjogb3B0aW9ucy50ZXJyYWZvcm1WZXJzaW9uLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { TerraformBaseProject, TerraformBaseProjectOptions } from './terraform-base-project';
|
|
2
|
+
/**
|
|
3
|
+
* Options for Terraform stack project.
|
|
4
|
+
*/
|
|
5
|
+
export interface TerraformStackProjectOptions extends TerraformBaseProjectOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Enable GitHub workflow for Terraform deployment.
|
|
8
|
+
* Creates a workflow that validates, plans, and applies Terraform changes.
|
|
9
|
+
* Only applicable for stack projects, not module projects.
|
|
10
|
+
* @default true
|
|
11
|
+
*/
|
|
12
|
+
readonly enableGitHubWorkflow?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Enable GitHub workflow for Terraform plan on Pull Requests.
|
|
15
|
+
* Creates a workflow that validates and plans Terraform changes on PRs,
|
|
16
|
+
* and comments the results back to the PR.
|
|
17
|
+
* @default true
|
|
18
|
+
*/
|
|
19
|
+
readonly enablePlanWorkflow?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Terraform stack project for managing infrastructure.
|
|
23
|
+
*
|
|
24
|
+
* @pjid terraform-stack
|
|
25
|
+
*/
|
|
26
|
+
export declare class TerraformStackProject extends TerraformBaseProject {
|
|
27
|
+
constructor(options: TerraformStackProjectOptions);
|
|
28
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.TerraformStackProject = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const projen_1 = require("projen");
|
|
7
|
+
const components_1 = require("./components");
|
|
8
|
+
const terraform_base_project_1 = require("./terraform-base-project");
|
|
9
|
+
/**
|
|
10
|
+
* Terraform stack project for managing infrastructure.
|
|
11
|
+
*
|
|
12
|
+
* @pjid terraform-stack
|
|
13
|
+
*/
|
|
14
|
+
class TerraformStackProject extends terraform_base_project_1.TerraformBaseProject {
|
|
15
|
+
constructor(options) {
|
|
16
|
+
super(options);
|
|
17
|
+
// Create main.tf
|
|
18
|
+
new projen_1.SampleFile(this, 'main.tf', {
|
|
19
|
+
contents: `# Main Terraform configuration
|
|
20
|
+
`,
|
|
21
|
+
});
|
|
22
|
+
// Create variables.tf
|
|
23
|
+
new projen_1.SampleFile(this, 'variables.tf', {
|
|
24
|
+
contents: `# Terraform variables
|
|
25
|
+
`,
|
|
26
|
+
});
|
|
27
|
+
// Create outputs.tf
|
|
28
|
+
new projen_1.SampleFile(this, 'outputs.tf', {
|
|
29
|
+
contents: `# Terraform outputs
|
|
30
|
+
`,
|
|
31
|
+
});
|
|
32
|
+
// Add terraform-specific tasks
|
|
33
|
+
this.addTask('terraform', {
|
|
34
|
+
description: 'Run terraform command with arguments',
|
|
35
|
+
exec: 'terraform',
|
|
36
|
+
receiveArgs: true,
|
|
37
|
+
});
|
|
38
|
+
this.addTask('terraform:plan', {
|
|
39
|
+
description: 'Plan Terraform changes',
|
|
40
|
+
exec: 'terraform plan',
|
|
41
|
+
});
|
|
42
|
+
this.addTask('terraform:apply', {
|
|
43
|
+
description: 'Apply Terraform changes',
|
|
44
|
+
exec: 'terraform apply',
|
|
45
|
+
});
|
|
46
|
+
// Modify pre-compile to run terraform format and validate
|
|
47
|
+
const preCompileTask = this.tasks.tryFind('pre-compile');
|
|
48
|
+
if (preCompileTask) {
|
|
49
|
+
const formatTask = this.tasks.tryFind('terraform:format');
|
|
50
|
+
const validateTask = this.tasks.tryFind('terraform:validate');
|
|
51
|
+
if (formatTask) {
|
|
52
|
+
preCompileTask.spawn(formatTask);
|
|
53
|
+
}
|
|
54
|
+
if (validateTask) {
|
|
55
|
+
preCompileTask.spawn(validateTask);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Modify compile to run terraform plan
|
|
59
|
+
const compileTask = this.tasks.tryFind('compile');
|
|
60
|
+
if (compileTask) {
|
|
61
|
+
const planTask = this.tasks.tryFind('terraform:plan');
|
|
62
|
+
if (planTask) {
|
|
63
|
+
compileTask.spawn(planTask);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Add GitHub workflow if enabled
|
|
67
|
+
if (options.enableGitHubWorkflow !== false) {
|
|
68
|
+
new components_1.TerraformDeployGithubWorkflow(this, {
|
|
69
|
+
terraformVersion: options.terraformVersion,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
// Add Plan workflow for PRs if enabled
|
|
73
|
+
if (options.enablePlanWorkflow !== false) {
|
|
74
|
+
new components_1.TerraformPlanGithubWorkflow(this, {
|
|
75
|
+
terraformVersion: options.terraformVersion,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.TerraformStackProject = TerraformStackProject;
|
|
81
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
82
|
+
TerraformStackProject[_a] = { fqn: "@jttc/projen-project-types.TerraformStackProject", version: "1.0.0-beta.10" };
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLXN0YWNrLXByb2plY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVycmFmb3JtL3RlcnJhZm9ybS1zdGFjay1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQW9DO0FBQ3BDLDZDQUdzQjtBQUN0QixxRUFHa0M7QUF1QmxDOzs7O0dBSUc7QUFDSCxNQUFhLHFCQUFzQixTQUFRLDZDQUFvQjtJQUM3RCxZQUFZLE9BQXFDO1FBQy9DLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLGlCQUFpQjtRQUNqQixJQUFJLG1CQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUM5QixRQUFRLEVBQUU7Q0FDZjtTQUNJLENBQUMsQ0FBQztRQUVILHNCQUFzQjtRQUN0QixJQUFJLG1CQUFVLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUNuQyxRQUFRLEVBQUU7Q0FDZjtTQUNJLENBQUMsQ0FBQztRQUVILG9CQUFvQjtRQUNwQixJQUFJLG1CQUFVLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUNqQyxRQUFRLEVBQUU7Q0FDZjtTQUNJLENBQUMsQ0FBQztRQUVILCtCQUErQjtRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUN4QixXQUFXLEVBQUUsc0NBQXNDO1lBQ25ELElBQUksRUFBRSxXQUFXO1lBQ2pCLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7WUFDN0IsV0FBVyxFQUFFLHdCQUF3QjtZQUNyQyxJQUFJLEVBQUUsZ0JBQWdCO1NBQ3ZCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUU7WUFDOUIsV0FBVyxFQUFFLHlCQUF5QjtZQUN0QyxJQUFJLEVBQUUsaUJBQWlCO1NBQ3hCLENBQUMsQ0FBQztRQUVILDBEQUEwRDtRQUMxRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN6RCxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDMUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUU5RCxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2pCLGNBQWMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDckMsQ0FBQztRQUNILENBQUM7UUFFRCx1Q0FBdUM7UUFDdkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3RELElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQztRQUVELGlDQUFpQztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMzQyxJQUFJLDBDQUE2QixDQUFDLElBQUksRUFBRTtnQkFDdEMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjthQUMzQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsdUNBQXVDO1FBQ3ZDLElBQUksT0FBTyxDQUFDLGtCQUFrQixLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3pDLElBQUksd0NBQTJCLENBQUMsSUFBSSxFQUFFO2dCQUNwQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCO2FBQzNDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQTNFSCxzREE0RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTYW1wbGVGaWxlIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7XG4gIFRlcnJhZm9ybURlcGxveUdpdGh1YldvcmtmbG93LFxuICBUZXJyYWZvcm1QbGFuR2l0aHViV29ya2Zsb3csXG59IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBUZXJyYWZvcm1CYXNlUHJvamVjdCxcbiAgVGVycmFmb3JtQmFzZVByb2plY3RPcHRpb25zLFxufSBmcm9tICcuL3RlcnJhZm9ybS1iYXNlLXByb2plY3QnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIFRlcnJhZm9ybSBzdGFjayBwcm9qZWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybVN0YWNrUHJvamVjdE9wdGlvbnMgZXh0ZW5kcyBUZXJyYWZvcm1CYXNlUHJvamVjdE9wdGlvbnMge1xuICAvKipcbiAgICogRW5hYmxlIEdpdEh1YiB3b3JrZmxvdyBmb3IgVGVycmFmb3JtIGRlcGxveW1lbnQuXG4gICAqIENyZWF0ZXMgYSB3b3JrZmxvdyB0aGF0IHZhbGlkYXRlcywgcGxhbnMsIGFuZCBhcHBsaWVzIFRlcnJhZm9ybSBjaGFuZ2VzLlxuICAgKiBPbmx5IGFwcGxpY2FibGUgZm9yIHN0YWNrIHByb2plY3RzLCBub3QgbW9kdWxlIHByb2plY3RzLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVHaXRIdWJXb3JrZmxvdz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBHaXRIdWIgd29ya2Zsb3cgZm9yIFRlcnJhZm9ybSBwbGFuIG9uIFB1bGwgUmVxdWVzdHMuXG4gICAqIENyZWF0ZXMgYSB3b3JrZmxvdyB0aGF0IHZhbGlkYXRlcyBhbmQgcGxhbnMgVGVycmFmb3JtIGNoYW5nZXMgb24gUFJzLFxuICAgKiBhbmQgY29tbWVudHMgdGhlIHJlc3VsdHMgYmFjayB0byB0aGUgUFIuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZVBsYW5Xb3JrZmxvdz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGVycmFmb3JtIHN0YWNrIHByb2plY3QgZm9yIG1hbmFnaW5nIGluZnJhc3RydWN0dXJlLlxuICpcbiAqIEBwamlkIHRlcnJhZm9ybS1zdGFja1xuICovXG5leHBvcnQgY2xhc3MgVGVycmFmb3JtU3RhY2tQcm9qZWN0IGV4dGVuZHMgVGVycmFmb3JtQmFzZVByb2plY3Qge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBUZXJyYWZvcm1TdGFja1Byb2plY3RPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICAvLyBDcmVhdGUgbWFpbi50ZlxuICAgIG5ldyBTYW1wbGVGaWxlKHRoaXMsICdtYWluLnRmJywge1xuICAgICAgY29udGVudHM6IGAjIE1haW4gVGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cbmAsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgdmFyaWFibGVzLnRmXG4gICAgbmV3IFNhbXBsZUZpbGUodGhpcywgJ3ZhcmlhYmxlcy50ZicsIHtcbiAgICAgIGNvbnRlbnRzOiBgIyBUZXJyYWZvcm0gdmFyaWFibGVzXG5gLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIG91dHB1dHMudGZcbiAgICBuZXcgU2FtcGxlRmlsZSh0aGlzLCAnb3V0cHV0cy50ZicsIHtcbiAgICAgIGNvbnRlbnRzOiBgIyBUZXJyYWZvcm0gb3V0cHV0c1xuYCxcbiAgICB9KTtcblxuICAgIC8vIEFkZCB0ZXJyYWZvcm0tc3BlY2lmaWMgdGFza3NcbiAgICB0aGlzLmFkZFRhc2soJ3RlcnJhZm9ybScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUnVuIHRlcnJhZm9ybSBjb21tYW5kIHdpdGggYXJndW1lbnRzJyxcbiAgICAgIGV4ZWM6ICd0ZXJyYWZvcm0nLFxuICAgICAgcmVjZWl2ZUFyZ3M6IHRydWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZFRhc2soJ3RlcnJhZm9ybTpwbGFuJywge1xuICAgICAgZGVzY3JpcHRpb246ICdQbGFuIFRlcnJhZm9ybSBjaGFuZ2VzJyxcbiAgICAgIGV4ZWM6ICd0ZXJyYWZvcm0gcGxhbicsXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZFRhc2soJ3RlcnJhZm9ybTphcHBseScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQXBwbHkgVGVycmFmb3JtIGNoYW5nZXMnLFxuICAgICAgZXhlYzogJ3RlcnJhZm9ybSBhcHBseScsXG4gICAgfSk7XG5cbiAgICAvLyBNb2RpZnkgcHJlLWNvbXBpbGUgdG8gcnVuIHRlcnJhZm9ybSBmb3JtYXQgYW5kIHZhbGlkYXRlXG4gICAgY29uc3QgcHJlQ29tcGlsZVRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ3ByZS1jb21waWxlJyk7XG4gICAgaWYgKHByZUNvbXBpbGVUYXNrKSB7XG4gICAgICBjb25zdCBmb3JtYXRUYXNrID0gdGhpcy50YXNrcy50cnlGaW5kKCd0ZXJyYWZvcm06Zm9ybWF0Jyk7XG4gICAgICBjb25zdCB2YWxpZGF0ZVRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ3RlcnJhZm9ybTp2YWxpZGF0ZScpO1xuXG4gICAgICBpZiAoZm9ybWF0VGFzaykge1xuICAgICAgICBwcmVDb21waWxlVGFzay5zcGF3bihmb3JtYXRUYXNrKTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWxpZGF0ZVRhc2spIHtcbiAgICAgICAgcHJlQ29tcGlsZVRhc2suc3Bhd24odmFsaWRhdGVUYXNrKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNb2RpZnkgY29tcGlsZSB0byBydW4gdGVycmFmb3JtIHBsYW5cbiAgICBjb25zdCBjb21waWxlVGFzayA9IHRoaXMudGFza3MudHJ5RmluZCgnY29tcGlsZScpO1xuICAgIGlmIChjb21waWxlVGFzaykge1xuICAgICAgY29uc3QgcGxhblRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ3RlcnJhZm9ybTpwbGFuJyk7XG4gICAgICBpZiAocGxhblRhc2spIHtcbiAgICAgICAgY29tcGlsZVRhc2suc3Bhd24ocGxhblRhc2spO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBHaXRIdWIgd29ya2Zsb3cgaWYgZW5hYmxlZFxuICAgIGlmIChvcHRpb25zLmVuYWJsZUdpdEh1YldvcmtmbG93ICE9PSBmYWxzZSkge1xuICAgICAgbmV3IFRlcnJhZm9ybURlcGxveUdpdGh1YldvcmtmbG93KHRoaXMsIHtcbiAgICAgICAgdGVycmFmb3JtVmVyc2lvbjogb3B0aW9ucy50ZXJyYWZvcm1WZXJzaW9uLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIFBsYW4gd29ya2Zsb3cgZm9yIFBScyBpZiBlbmFibGVkXG4gICAgaWYgKG9wdGlvbnMuZW5hYmxlUGxhbldvcmtmbG93ICE9PSBmYWxzZSkge1xuICAgICAgbmV3IFRlcnJhZm9ybVBsYW5HaXRodWJXb3JrZmxvdyh0aGlzLCB7XG4gICAgICAgIHRlcnJhZm9ybVZlcnNpb246IG9wdGlvbnMudGVycmFmb3JtVmVyc2lvbixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
package/mkdocs.yml
CHANGED
|
@@ -4,6 +4,18 @@ repo_url: https://github.com/JumpToTheCloud/projen-project-types
|
|
|
4
4
|
nav:
|
|
5
5
|
- Homepage:
|
|
6
6
|
- index.md
|
|
7
|
+
- Project Types:
|
|
8
|
+
- CDK Library: project-types/cdk-library.md
|
|
9
|
+
- CDK App: project-types/cdk-app.md
|
|
10
|
+
- CDK8s Library: project-types/cdk8s-library.md
|
|
11
|
+
- CDK8s App: project-types/cdk8s-app.md
|
|
12
|
+
- NX Monorepo: project-types/nx-monorepo.md
|
|
13
|
+
- Components:
|
|
14
|
+
- CDK8s Component: components/cdk8s.md
|
|
15
|
+
- K3d Component: components/k3d.md
|
|
16
|
+
- Commitzent Component: components/commitzent.md
|
|
17
|
+
- Configuration:
|
|
18
|
+
- Default Configurations: default-configurations.md
|
|
7
19
|
theme:
|
|
8
20
|
name: material
|
|
9
21
|
font:
|
package/package.json
CHANGED
|
@@ -38,37 +38,44 @@
|
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/jest": "^30.0.0",
|
|
41
|
-
"@types/node": "^25.0.
|
|
41
|
+
"@types/node": "^25.0.6",
|
|
42
42
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
43
43
|
"@typescript-eslint/parser": "^8",
|
|
44
44
|
"commit-and-tag-version": "^12",
|
|
45
45
|
"commitizen": "^4.3.1",
|
|
46
|
-
"constructs": "
|
|
46
|
+
"constructs": "10.4.4",
|
|
47
47
|
"cz-customizable": "^7.5.1",
|
|
48
48
|
"eslint": "^9",
|
|
49
49
|
"eslint-config-prettier": "^10.1.8",
|
|
50
50
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
51
51
|
"eslint-plugin-import": "^2.32.0",
|
|
52
|
-
"eslint-plugin-prettier": "^5.5.
|
|
52
|
+
"eslint-plugin-prettier": "^5.5.5",
|
|
53
53
|
"jest": "^30.2.0",
|
|
54
54
|
"jest-junit": "^16",
|
|
55
55
|
"jsii": "~5.9.0",
|
|
56
|
-
"jsii-diff": "^1.
|
|
56
|
+
"jsii-diff": "^1.125.0",
|
|
57
57
|
"jsii-docgen": "^10.5.0",
|
|
58
|
-
"jsii-pacmak": "^1.
|
|
58
|
+
"jsii-pacmak": "^1.125.0",
|
|
59
59
|
"jsii-rosetta": "~5.9.0",
|
|
60
60
|
"prettier": "^3.7.4",
|
|
61
|
-
"projen": "^0.
|
|
61
|
+
"projen": "^0.99.1",
|
|
62
62
|
"ts-jest": "^29.4.6",
|
|
63
63
|
"ts-node": "^10.9.2",
|
|
64
64
|
"typescript": "^5.9.3"
|
|
65
65
|
},
|
|
66
|
+
"peerDependencies": {
|
|
67
|
+
"constructs": "^10.4.4",
|
|
68
|
+
"projen": "^0.99.1"
|
|
69
|
+
},
|
|
70
|
+
"dependencies": {
|
|
71
|
+
"projen": "^0.99.1"
|
|
72
|
+
},
|
|
66
73
|
"main": "lib/index.js",
|
|
67
74
|
"license": "Apache-2.0",
|
|
68
75
|
"publishConfig": {
|
|
69
76
|
"access": "public"
|
|
70
77
|
},
|
|
71
|
-
"version": "1.0.0-beta.
|
|
78
|
+
"version": "1.0.0-beta.10",
|
|
72
79
|
"jest": {
|
|
73
80
|
"coverageProvider": "v8",
|
|
74
81
|
"verbose": true,
|