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/.gitattributes +25 -0
- package/.prettierignore +1 -0
- package/.prettierrc.json +3 -0
- package/LICENSE +19 -0
- package/README.md +43 -0
- package/example/.gitattributes +24 -0
- package/example/.jsii +210 -0
- package/example/.prettierignore +1 -0
- package/example/.prettierrc.json +3 -0
- package/example/API.md +160 -0
- package/example/LICENSE +202 -0
- package/example/README.md +1 -0
- package/example/lib/index.d.ts +8 -0
- package/example/lib/index.js +16 -0
- package/example/lib/tfModules.d.ts +1 -0
- package/example/lib/tfModules.js +20 -0
- package/example/modules/my-awesome-module/README.md +10 -0
- package/example/modules/my-awesome-module/cdk.tf.json +13 -0
- package/example/package.json +135 -0
- package/example/scripts/copy-modules.sh +41 -0
- package/example/yarn.lock +6621 -0
- package/lib/index.d.ts +11 -0
- package/lib/index.js +153 -0
- package/package.json +100 -0
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
|
+
}
|