projen-cdktf-hybrid-construct 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import { ConstructLibrary, ConstructLibraryOptions } from "projen/lib/cdk";
2
+ declare type HybridModuleOptions = ConstructLibraryOptions & {
3
+ cdktfVersion?: string;
4
+ constructVersion?: string;
5
+ repository: string;
6
+ author: string;
7
+ };
8
+ export declare class HybridModule extends ConstructLibrary {
9
+ constructor(config: HybridModuleOptions);
10
+ }
11
+ export {};
package/lib/index.js ADDED
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HybridModule = void 0;
4
+ const projen_1 = require("projen");
5
+ const cdk_1 = require("projen/lib/cdk");
6
+ const defaults = {
7
+ prettier: true,
8
+ defaultReleaseBranch: "main",
9
+ };
10
+ const constructSrcCode = `
11
+ import { Construct } from "constructs";
12
+
13
+ export interface MyConstructOptions {
14
+ readonly propertyA: string;
15
+ }
16
+
17
+ export class MyConstruct extends Construct {
18
+ constructor(scope: Construct, id: string, public config: MyConstructOptions) {
19
+ super(scope, id);
20
+ }
21
+ }
22
+ `;
23
+ const moduleSrcCode = `
24
+ import { App } from "cdktf";
25
+ import { Construct } from "constructs";
26
+ import { TFModuleStack } from "cdktf-tf-module-stack";
27
+ import { MyConstruct } from "./index";
28
+
29
+ class MyAwesomeModule extends TFModuleStack {
30
+ constructor(scope: Construct, id: string) {
31
+ super(scope, id);
32
+
33
+ new MyConstruct(this, "my-construct", {
34
+ propertyA: "valueA",
35
+ });
36
+ }
37
+ }
38
+
39
+ const app = new App();
40
+ // This is the name the module can be found under.
41
+ // We expect a "my-awesome-module.md" file in this directory.
42
+ // The README.md file will be generated from this file.
43
+ new MyAwesomeModule(app, "my-awesome-module");
44
+ app.synth();
45
+ `;
46
+ class ScriptFile extends projen_1.FileBase {
47
+ constructor(project, path, content) {
48
+ super(project, path, {
49
+ executable: true,
50
+ });
51
+ this.content = content;
52
+ }
53
+ synthesizeContent(_) {
54
+ return this.content;
55
+ }
56
+ }
57
+ class HybridModule extends cdk_1.ConstructLibrary {
58
+ constructor(config) {
59
+ var _a, _b;
60
+ super({ ...defaults, ...config, sampleCode: false });
61
+ const constructVersion = config.constructVersion || "^10.0.25";
62
+ const cdktfVersion = config.cdktfVersion || "^0.9.4";
63
+ this.addPeerDeps(`constructs@${constructVersion}`, `cdktf@${cdktfVersion}`);
64
+ this.addDevDeps(`cdktf-cli@${cdktfVersion}`, "ts-node");
65
+ this.addKeywords("cdktf", "cdktf-hybrid");
66
+ // Module Entrypoint
67
+ this.addDeps("cdktf-tf-module-stack");
68
+ const moduleDocs = `
69
+ # My Awesome Module
70
+
71
+ ## Usage
72
+
73
+ \`\`\`hcl
74
+ module "eks_managed_node_group" {
75
+ source = "${((_a = config.repository) === null || _a === void 0 ? void 0 : _a.replace("https://github.com/", "").replace("http://github.com/", "").replace("github.com/", "")) || "my-github-repo"}//modules/my-awesome-module"
76
+
77
+ }
78
+ \`\`\`
79
+ `;
80
+ new projen_1.SampleDir(this, this.srcdir, {
81
+ files: {
82
+ "index.ts": constructSrcCode.trim(),
83
+ "tfModules.ts": moduleSrcCode.trim(),
84
+ "my-awesome-module.md": moduleDocs.trim(),
85
+ "cdktf.json": JSON.stringify({
86
+ language: "typescript",
87
+ app: "npx ts-node tfModules.ts",
88
+ terraformProviders: ["hashicorp/null@3.1.1"],
89
+ terraformModules: [],
90
+ output: "modules",
91
+ }, null, 2),
92
+ },
93
+ });
94
+ this.gitignore.addPatterns("src/.gen", "src/cdktf.out", "src/modules");
95
+ this.compileTask.prependExec("cdktf get", {
96
+ cwd: this.srcdir,
97
+ });
98
+ this.compileTask.exec("cdktf synth", {
99
+ cwd: this.srcdir,
100
+ name: "Synthesize module HCL",
101
+ });
102
+ new ScriptFile(this, "scripts/copy-modules.sh", `
103
+ #!/bin/bash
104
+ # This script is created by projen, do not edit it directly.
105
+ set -e
106
+
107
+ SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
108
+
109
+ # check if the module folder has been generated as expected
110
+ MODULES_FOLDER=$( cd -- "$SCRIPTPATH/../src/modules/stacks" >/dev/null 2>&1 ; pwd -P )
111
+ SRC_FOLDER=$( cd -- "$SCRIPTPATH/../src/" >/dev/null 2>&1 ; pwd -P )
112
+ TARGET_FOLDER="$SCRIPTPATH/../modules"
113
+
114
+ if [ ! -d "$MODULES_FOLDER" ]; then
115
+ echo "Expected module folder to exist at $MODULES_FOLDER"
116
+ exit 1
117
+ fi
118
+
119
+ cd "$MODULES_FOLDER"
120
+ for d in */ ; do
121
+ [ -L "\${d%/}" ] && continue
122
+
123
+ dirname="\${d%/}"
124
+
125
+
126
+ # Check if everything is in place
127
+ if [ ! -f "$MODULES_FOLDER/$dirname/cdk.tf.json" ]; then
128
+ echo "Expected code for $dirname at cdk.tf.json to exist at $MODULES_FOLDER/$dirname"
129
+ exit 1
130
+ fi
131
+
132
+ if [ ! -f "$SRC_FOLDER/$dirname.md" ]; then
133
+ echo "Expected Documentation for $dirname at $dirname.md to exist at $SRC_FOLDER/$dirname.md"
134
+ exit 1
135
+ fi
136
+
137
+ # Copy module and readme together
138
+ echo "Copying Code and README for module $dirname"
139
+ mkdir -p "$TARGET_FOLDER"
140
+ mkdir -p "$TARGET_FOLDER/$dirname"
141
+ cp "$MODULES_FOLDER/$dirname/cdk.tf.json" "$TARGET_FOLDER/$dirname/cdk.tf.json"
142
+ cp "$SRC_FOLDER/$dirname.md" "$TARGET_FOLDER/$dirname/README.md"
143
+ done
144
+ `.trim());
145
+ this.compileTask.exec("./scripts/copy-modules.sh", {
146
+ name: "Copy HCL Modules",
147
+ });
148
+ // ignore dist in tests
149
+ (_b = this.jest) === null || _b === void 0 ? void 0 : _b.addIgnorePattern("dist");
150
+ }
151
+ }
152
+ exports.HybridModule = HybridModule;
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWlFO0FBQ2pFLHdDQUEyRTtBQVMzRSxNQUFNLFFBQVEsR0FBRztJQUNmLFFBQVEsRUFBRSxJQUFJO0lBQ2Qsb0JBQW9CLEVBQUUsTUFBTTtDQUM3QixDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBRzs7Ozs7Ozs7Ozs7O0NBWXhCLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXNCckIsQ0FBQztBQUVGLE1BQU0sVUFBVyxTQUFRLGlCQUFRO0lBQy9CLFlBQVksT0FBZ0IsRUFBRSxJQUFZLEVBQVUsT0FBZTtRQUNqRSxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtZQUNuQixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7UUFIK0MsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUluRSxDQUFDO0lBRVMsaUJBQWlCLENBQUMsQ0FBWTtRQUN0QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBRUQsTUFBYSxZQUFhLFNBQVEsc0JBQWdCO0lBQ2hELFlBQVksTUFBMkI7O1FBQ3JDLEtBQUssQ0FBQyxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixJQUFJLFVBQVUsQ0FBQztRQUMvRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxJQUFJLFFBQVEsQ0FBQztRQUVyRCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsZ0JBQWdCLEVBQUUsRUFBRSxTQUFTLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLFlBQVksRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRTFDLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDdEMsTUFBTSxVQUFVLEdBQUc7Ozs7Ozs7Y0FRbkIsQ0FBQSxNQUFBLE1BQU0sQ0FBQyxVQUFVLDBDQUNiLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLEVBQ2xDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLEVBQ2hDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUksZ0JBQ25DOzs7O0tBSUcsQ0FBQztRQUVGLElBQUksa0JBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUMvQixLQUFLLEVBQUU7Z0JBQ0wsVUFBVSxFQUFFLGdCQUFnQixDQUFDLElBQUksRUFBRTtnQkFDbkMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3BDLHNCQUFzQixFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3pDLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUMxQjtvQkFDRSxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsR0FBRyxFQUFFLDBCQUEwQjtvQkFDL0Isa0JBQWtCLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDNUMsZ0JBQWdCLEVBQUUsRUFBRTtvQkFDcEIsTUFBTSxFQUFFLFNBQVM7aUJBQ2xCLEVBQ0QsSUFBSSxFQUNKLENBQUMsQ0FDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUU7WUFDeEMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ2pCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNuQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDaEIsSUFBSSxFQUFFLHVCQUF1QjtTQUM5QixDQUFDLENBQUM7UUFFSCxJQUFJLFVBQVUsQ0FDWixJQUFJLEVBQ0oseUJBQXlCLEVBQ3pCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0EwQ0wsQ0FBQyxJQUFJLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUU7WUFDakQsSUFBSSxFQUFFLGtCQUFrQjtTQUN6QixDQUFDLENBQUM7UUFFSCx1QkFBdUI7UUFDdkIsTUFBQSxJQUFJLENBQUMsSUFBSSwwQ0FBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0NBQ0Y7QUFoSEQsb0NBZ0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsZUJhc2UsIElSZXNvbHZlciwgUHJvamVjdCwgU2FtcGxlRGlyIH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgQ29uc3RydWN0TGlicmFyeSwgQ29uc3RydWN0TGlicmFyeU9wdGlvbnMgfSBmcm9tIFwicHJvamVuL2xpYi9jZGtcIjtcblxudHlwZSBIeWJyaWRNb2R1bGVPcHRpb25zID0gQ29uc3RydWN0TGlicmFyeU9wdGlvbnMgJiB7XG4gIGNka3RmVmVyc2lvbj86IHN0cmluZztcbiAgY29uc3RydWN0VmVyc2lvbj86IHN0cmluZztcbiAgcmVwb3NpdG9yeTogc3RyaW5nO1xuICBhdXRob3I6IHN0cmluZztcbn07XG5cbmNvbnN0IGRlZmF1bHRzID0ge1xuICBwcmV0dGllcjogdHJ1ZSxcbiAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IFwibWFpblwiLFxufTtcblxuY29uc3QgY29uc3RydWN0U3JjQ29kZSA9IGBcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXlDb25zdHJ1Y3RPcHRpb25zIHtcbiAgcmVhZG9ubHkgcHJvcGVydHlBOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNeUNvbnN0cnVjdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHB1YmxpYyBjb25maWc6IE15Q29uc3RydWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gIH1cbn1cbmA7XG5cbmNvbnN0IG1vZHVsZVNyY0NvZGUgPSBgXG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBURk1vZHVsZVN0YWNrIH0gZnJvbSBcImNka3RmLXRmLW1vZHVsZS1zdGFja1wiO1xuaW1wb3J0IHsgTXlDb25zdHJ1Y3QgfSBmcm9tIFwiLi9pbmRleFwiO1xuXG5jbGFzcyBNeUF3ZXNvbWVNb2R1bGUgZXh0ZW5kcyBURk1vZHVsZVN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBuZXcgTXlDb25zdHJ1Y3QodGhpcywgXCJteS1jb25zdHJ1Y3RcIiwge1xuICAgICAgcHJvcGVydHlBOiBcInZhbHVlQVwiLFxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbi8vIFRoaXMgaXMgdGhlIG5hbWUgdGhlIG1vZHVsZSBjYW4gYmUgZm91bmQgdW5kZXIuIFxuLy8gV2UgZXhwZWN0IGEgXCJteS1hd2Vzb21lLW1vZHVsZS5tZFwiIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkuXG4vLyBUaGUgUkVBRE1FLm1kIGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQgZnJvbSB0aGlzIGZpbGUuXG5uZXcgTXlBd2Vzb21lTW9kdWxlKGFwcCwgXCJteS1hd2Vzb21lLW1vZHVsZVwiKTtcbmFwcC5zeW50aCgpO1xuYDtcblxuY2xhc3MgU2NyaXB0RmlsZSBleHRlbmRzIEZpbGVCYXNlIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgcGF0aDogc3RyaW5nLCBwcml2YXRlIGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHN1cGVyKHByb2plY3QsIHBhdGgsIHtcbiAgICAgIGV4ZWN1dGFibGU6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUNvbnRlbnQoXzogSVJlc29sdmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIeWJyaWRNb2R1bGUgZXh0ZW5kcyBDb25zdHJ1Y3RMaWJyYXJ5IHtcbiAgY29uc3RydWN0b3IoY29uZmlnOiBIeWJyaWRNb2R1bGVPcHRpb25zKSB7XG4gICAgc3VwZXIoeyAuLi5kZWZhdWx0cywgLi4uY29uZmlnLCBzYW1wbGVDb2RlOiBmYWxzZSB9KTtcbiAgICBjb25zdCBjb25zdHJ1Y3RWZXJzaW9uID0gY29uZmlnLmNvbnN0cnVjdFZlcnNpb24gfHwgXCJeMTAuMC4yNVwiO1xuICAgIGNvbnN0IGNka3RmVmVyc2lvbiA9IGNvbmZpZy5jZGt0ZlZlcnNpb24gfHwgXCJeMC45LjRcIjtcblxuICAgIHRoaXMuYWRkUGVlckRlcHMoYGNvbnN0cnVjdHNAJHtjb25zdHJ1Y3RWZXJzaW9ufWAsIGBjZGt0ZkAke2Nka3RmVmVyc2lvbn1gKTtcbiAgICB0aGlzLmFkZERldkRlcHMoYGNka3RmLWNsaUAke2Nka3RmVmVyc2lvbn1gLCBcInRzLW5vZGVcIik7XG4gICAgdGhpcy5hZGRLZXl3b3JkcyhcImNka3RmXCIsIFwiY2RrdGYtaHlicmlkXCIpO1xuXG4gICAgLy8gTW9kdWxlIEVudHJ5cG9pbnRcbiAgICB0aGlzLmFkZERlcHMoXCJjZGt0Zi10Zi1tb2R1bGUtc3RhY2tcIik7XG4gICAgY29uc3QgbW9kdWxlRG9jcyA9IGBcbiMgTXkgQXdlc29tZSBNb2R1bGVcblxuIyMgVXNhZ2VcblxuXFxgXFxgXFxgaGNsXG5tb2R1bGUgXCJla3NfbWFuYWdlZF9ub2RlX2dyb3VwXCIge1xuICBzb3VyY2UgPSBcIiR7XG4gICAgY29uZmlnLnJlcG9zaXRvcnlcbiAgICAgID8ucmVwbGFjZShcImh0dHBzOi8vZ2l0aHViLmNvbS9cIiwgXCJcIilcbiAgICAgIC5yZXBsYWNlKFwiaHR0cDovL2dpdGh1Yi5jb20vXCIsIFwiXCIpXG4gICAgICAucmVwbGFjZShcImdpdGh1Yi5jb20vXCIsIFwiXCIpIHx8IFwibXktZ2l0aHViLXJlcG9cIlxuICB9Ly9tb2R1bGVzL215LWF3ZXNvbWUtbW9kdWxlXCJcblxufVxuXFxgXFxgXFxgXG4gICAgYDtcblxuICAgIG5ldyBTYW1wbGVEaXIodGhpcywgdGhpcy5zcmNkaXIsIHtcbiAgICAgIGZpbGVzOiB7XG4gICAgICAgIFwiaW5kZXgudHNcIjogY29uc3RydWN0U3JjQ29kZS50cmltKCksXG4gICAgICAgIFwidGZNb2R1bGVzLnRzXCI6IG1vZHVsZVNyY0NvZGUudHJpbSgpLFxuICAgICAgICBcIm15LWF3ZXNvbWUtbW9kdWxlLm1kXCI6IG1vZHVsZURvY3MudHJpbSgpLFxuICAgICAgICBcImNka3RmLmpzb25cIjogSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFuZ3VhZ2U6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICAgICAgYXBwOiBcIm5weCB0cy1ub2RlIHRmTW9kdWxlcy50c1wiLFxuICAgICAgICAgICAgdGVycmFmb3JtUHJvdmlkZXJzOiBbXCJoYXNoaWNvcnAvbnVsbEAzLjEuMVwiXSwgLy8gV2UgbmVlZCBhdCBsZWFzdCBhIHByb3ZpZGVyIGZvciBnZXQgdG8gc3VjY2VlZFxuICAgICAgICAgICAgdGVycmFmb3JtTW9kdWxlczogW10sXG4gICAgICAgICAgICBvdXRwdXQ6IFwibW9kdWxlc1wiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICAyXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5naXRpZ25vcmUuYWRkUGF0dGVybnMoXCJzcmMvLmdlblwiLCBcInNyYy9jZGt0Zi5vdXRcIiwgXCJzcmMvbW9kdWxlc1wiKTtcbiAgICB0aGlzLmNvbXBpbGVUYXNrLnByZXBlbmRFeGVjKFwiY2RrdGYgZ2V0XCIsIHtcbiAgICAgIGN3ZDogdGhpcy5zcmNkaXIsXG4gICAgfSk7XG4gICAgdGhpcy5jb21waWxlVGFzay5leGVjKFwiY2RrdGYgc3ludGhcIiwge1xuICAgICAgY3dkOiB0aGlzLnNyY2RpcixcbiAgICAgIG5hbWU6IFwiU3ludGhlc2l6ZSBtb2R1bGUgSENMXCIsXG4gICAgfSk7XG5cbiAgICBuZXcgU2NyaXB0RmlsZShcbiAgICAgIHRoaXMsXG4gICAgICBcInNjcmlwdHMvY29weS1tb2R1bGVzLnNoXCIsXG4gICAgICBgXG4jIS9iaW4vYmFzaFxuIyBUaGlzIHNjcmlwdCBpcyBjcmVhdGVkIGJ5IHByb2plbiwgZG8gbm90IGVkaXQgaXQgZGlyZWN0bHkuXG5zZXQgLWVcblxuU0NSSVBUUEFUSD1cIiQoIGNkIC0tIFwiJChkaXJuYW1lIFwiJDBcIilcIiA+L2Rldi9udWxsIDI+JjEgOyBwd2QgLVAgKVwiXG5cbiMgY2hlY2sgaWYgdGhlIG1vZHVsZSBmb2xkZXIgaGFzIGJlZW4gZ2VuZXJhdGVkIGFzIGV4cGVjdGVkXG5NT0RVTEVTX0ZPTERFUj0kKCBjZCAtLSBcIiRTQ1JJUFRQQVRILy4uL3NyYy9tb2R1bGVzL3N0YWNrc1wiID4vZGV2L251bGwgMj4mMSA7IHB3ZCAtUCApXG5TUkNfRk9MREVSPSQoIGNkIC0tIFwiJFNDUklQVFBBVEgvLi4vc3JjL1wiID4vZGV2L251bGwgMj4mMSA7IHB3ZCAtUCApXG5UQVJHRVRfRk9MREVSPVwiJFNDUklQVFBBVEgvLi4vbW9kdWxlc1wiXG5cbmlmIFsgISAtZCBcIiRNT0RVTEVTX0ZPTERFUlwiIF07IHRoZW5cbiAgZWNobyBcIkV4cGVjdGVkIG1vZHVsZSBmb2xkZXIgdG8gZXhpc3QgYXQgJE1PRFVMRVNfRk9MREVSXCJcbiAgZXhpdCAxXG5maVxuXG5jZCBcIiRNT0RVTEVTX0ZPTERFUlwiXG5mb3IgZCBpbiAqLyA7IGRvXG4gICAgWyAtTCBcIlxcJHtkJS99XCIgXSAmJiBjb250aW51ZVxuXG4gICAgZGlybmFtZT1cIlxcJHtkJS99XCJcblxuXG4gICAgIyBDaGVjayBpZiBldmVyeXRoaW5nIGlzIGluIHBsYWNlXG4gICAgaWYgWyAhIC1mIFwiJE1PRFVMRVNfRk9MREVSLyRkaXJuYW1lL2Nkay50Zi5qc29uXCIgXTsgdGhlblxuICAgICAgZWNobyBcIkV4cGVjdGVkIGNvZGUgZm9yICRkaXJuYW1lIGF0IGNkay50Zi5qc29uIHRvIGV4aXN0IGF0ICRNT0RVTEVTX0ZPTERFUi8kZGlybmFtZVwiXG4gICAgICBleGl0IDFcbiAgICBmaVxuXG4gICAgaWYgWyAhIC1mIFwiJFNSQ19GT0xERVIvJGRpcm5hbWUubWRcIiBdOyB0aGVuXG4gICAgICBlY2hvIFwiRXhwZWN0ZWQgRG9jdW1lbnRhdGlvbiBmb3IgJGRpcm5hbWUgYXQgJGRpcm5hbWUubWQgdG8gZXhpc3QgYXQgJFNSQ19GT0xERVIvJGRpcm5hbWUubWRcIlxuICAgICAgZXhpdCAxXG4gICAgZmlcblxuICAgICMgQ29weSBtb2R1bGUgYW5kIHJlYWRtZSB0b2dldGhlclxuICAgIGVjaG8gXCJDb3B5aW5nIENvZGUgYW5kIFJFQURNRSBmb3IgbW9kdWxlICRkaXJuYW1lXCJcbiAgICBta2RpciAtcCBcIiRUQVJHRVRfRk9MREVSXCJcbiAgICBta2RpciAtcCBcIiRUQVJHRVRfRk9MREVSLyRkaXJuYW1lXCJcbiAgICBjcCBcIiRNT0RVTEVTX0ZPTERFUi8kZGlybmFtZS9jZGsudGYuanNvblwiIFwiJFRBUkdFVF9GT0xERVIvJGRpcm5hbWUvY2RrLnRmLmpzb25cIlxuICAgIGNwIFwiJFNSQ19GT0xERVIvJGRpcm5hbWUubWRcIiBcIiRUQVJHRVRfRk9MREVSLyRkaXJuYW1lL1JFQURNRS5tZFwiXG5kb25lXG5gLnRyaW0oKVxuICAgICk7XG4gICAgdGhpcy5jb21waWxlVGFzay5leGVjKFwiLi9zY3JpcHRzL2NvcHktbW9kdWxlcy5zaFwiLCB7XG4gICAgICBuYW1lOiBcIkNvcHkgSENMIE1vZHVsZXNcIixcbiAgICB9KTtcblxuICAgIC8vIGlnbm9yZSBkaXN0IGluIHRlc3RzXG4gICAgdGhpcy5qZXN0Py5hZGRJZ25vcmVQYXR0ZXJuKFwiZGlzdFwiKTtcbiAgfVxufVxuIl19
package/package.json ADDED
@@ -0,0 +1,100 @@
1
+ {
2
+ "name": "projen-cdktf-hybrid-construct",
3
+ "description": "Projen template for CDKTF Constructs that should also be used as Terraform Modules.",
4
+ "scripts": {
5
+ "build": "npx projen build",
6
+ "buildExample": "npx projen buildExample",
7
+ "bump": "npx projen bump",
8
+ "clobber": "npx projen clobber",
9
+ "compile": "npx projen compile",
10
+ "default": "npx projen default",
11
+ "eject": "npx projen eject",
12
+ "eslint": "npx projen eslint",
13
+ "package": "npx projen package",
14
+ "post-compile": "npx projen post-compile",
15
+ "post-upgrade": "npx projen post-upgrade",
16
+ "pre-compile": "npx projen pre-compile",
17
+ "release": "npx projen release",
18
+ "test": "npx projen test",
19
+ "test:update": "npx projen test:update",
20
+ "test:watch": "npx projen test:watch",
21
+ "unbump": "npx projen unbump",
22
+ "upgrade": "npx projen upgrade",
23
+ "upgrade-projen": "npx projen upgrade-projen",
24
+ "watch": "npx projen watch",
25
+ "projen": "npx projen"
26
+ },
27
+ "devDependencies": {
28
+ "@types/fs-extra": "^9.0.13",
29
+ "@types/glob": "^7.2.0",
30
+ "@types/jest": "^27.4.1",
31
+ "@types/node": "^12",
32
+ "@typescript-eslint/eslint-plugin": "^5",
33
+ "@typescript-eslint/parser": "^5",
34
+ "eslint": "^8",
35
+ "eslint-config-prettier": "^8.5.0",
36
+ "eslint-import-resolver-node": "^0.3.6",
37
+ "eslint-import-resolver-typescript": "^2.5.0",
38
+ "eslint-plugin-import": "^2.25.4",
39
+ "eslint-plugin-prettier": "^4.0.0",
40
+ "fs-extra": "^10.0.1",
41
+ "glob": "^7.2.0",
42
+ "jest": "^27.5.1",
43
+ "jest-junit": "^13",
44
+ "json-schema": "^0.4.0",
45
+ "npm-check-updates": "^12",
46
+ "prettier": "^2.6.0",
47
+ "projen": "^0.53.6",
48
+ "standard-version": "^9",
49
+ "ts-jest": "^27.1.3",
50
+ "typescript": "^4.6.2"
51
+ },
52
+ "dependencies": {
53
+ "projen": "^0.53.6"
54
+ },
55
+ "main": "lib/index.js",
56
+ "license": "MIT",
57
+ "version": "0.1.1",
58
+ "jest": {
59
+ "testMatch": [
60
+ "<rootDir>/src/**/__tests__/**/*.ts?(x)",
61
+ "<rootDir>/(test|src)/**/?(*.)+(spec|test).ts?(x)"
62
+ ],
63
+ "clearMocks": true,
64
+ "collectCoverage": true,
65
+ "coverageReporters": [
66
+ "json",
67
+ "lcov",
68
+ "clover",
69
+ "cobertura",
70
+ "text"
71
+ ],
72
+ "coverageDirectory": "coverage",
73
+ "coveragePathIgnorePatterns": [
74
+ "/node_modules/"
75
+ ],
76
+ "testPathIgnorePatterns": [
77
+ "/node_modules/"
78
+ ],
79
+ "watchPathIgnorePatterns": [
80
+ "/node_modules/"
81
+ ],
82
+ "reporters": [
83
+ "default",
84
+ [
85
+ "jest-junit",
86
+ {
87
+ "outputDirectory": "test-reports"
88
+ }
89
+ ]
90
+ ],
91
+ "preset": "ts-jest",
92
+ "globals": {
93
+ "ts-jest": {
94
+ "tsconfig": "tsconfig.dev.json"
95
+ }
96
+ }
97
+ },
98
+ "types": "lib/index.d.ts",
99
+ "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"."
100
+ }