@nikovirtala/projen-constructs 0.1.8 → 0.2.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/.jsii +2021 -157
- package/API.md +769 -52
- package/README.md +37 -8
- package/docs/api/.nojekyll +1 -0
- package/docs/api/assets/hierarchy.js +1 -0
- package/docs/api/assets/highlight.css +99 -0
- package/docs/api/assets/icons.js +18 -0
- package/docs/api/assets/icons.svg +1 -0
- package/docs/api/assets/main.js +60 -0
- package/docs/api/assets/navigation.js +1 -0
- package/docs/api/assets/search.js +1 -0
- package/docs/api/assets/style.css +1633 -0
- package/docs/api/classes/AwsCdkConstructLibraryProject.html +308 -0
- package/docs/api/classes/AwsCdkTypeScriptAppProject.html +306 -0
- package/docs/api/classes/JsiiProject.html +294 -0
- package/docs/api/classes/ProjectGenerator.html +38 -0
- package/docs/api/classes/TypeDoc.html +37 -0
- package/docs/api/classes/TypeScriptProject.html +294 -0
- package/docs/api/classes/Vitest.html +38 -0
- package/docs/api/enums/CommentStyle.html +11 -0
- package/docs/api/enums/CoverageProvider.html +7 -0
- package/docs/api/enums/CoverageReporter.html +11 -0
- package/docs/api/enums/EntryPointStrategy.html +11 -0
- package/docs/api/enums/Environment.html +12 -0
- package/docs/api/enums/LogLevel.html +13 -0
- package/docs/api/enums/Pool.html +17 -0
- package/docs/api/enums/ProjectType.html +47 -0
- package/docs/api/enums/Visibility.html +9 -0
- package/docs/api/functions/applyDefaults.html +1 -0
- package/docs/api/functions/toJson_TypeDocConfiguration.html +2 -0
- package/docs/api/hierarchy.html +1 -0
- package/docs/api/index.html +86 -0
- package/docs/api/interfaces/AwsCdkConstructLibraryProjectOptions.html +1075 -0
- package/docs/api/interfaces/AwsCdkTypeScriptAppProjectOptions.html +1026 -0
- package/docs/api/interfaces/Component.html +13 -0
- package/docs/api/interfaces/ComponentOptions.html +8 -0
- package/docs/api/interfaces/JsiiProjectOptions.html +1003 -0
- package/docs/api/interfaces/ProjectGeneratorOptions.html +49 -0
- package/docs/api/interfaces/TypeDocConfiguration.html +141 -0
- package/docs/api/interfaces/TypeDocOptions.html +9 -0
- package/docs/api/interfaces/TypeScriptProjectOptions.html +899 -0
- package/docs/api/interfaces/ValidationOptions.html +9 -0
- package/docs/api/interfaces/VitestConfigOptions.html +111 -0
- package/docs/api/interfaces/VitestOptions.html +13 -0
- package/docs/api/modules.html +1 -0
- package/docs/api/variables/defaultOptions.html +1 -0
- package/docs/api/variables/defaults.html +1 -0
- package/docs/api/variables/projectDefaultOptions.html +1 -0
- package/lib/components/typedoc-config.d.ts +321 -0
- package/lib/components/typedoc-config.js +73 -1
- package/lib/components/typedoc.d.ts +19 -0
- package/lib/components/typedoc.js +14 -1
- package/lib/components/vitest.d.ts +197 -0
- package/lib/components/vitest.js +72 -2
- package/lib/config.d.ts +4 -4
- package/lib/errors.d.ts +16 -0
- package/lib/errors.js +26 -2
- package/lib/index.d.ts +2 -0
- package/lib/index.js +3 -1
- package/lib/project-generator.d.ts +87 -63
- package/lib/project-generator.js +344 -60
- package/lib/project-type.d.ts +78 -16
- package/lib/project-type.js +79 -17
- package/lib/projects/awscdk-construct-library.generated.js +4 -4
- package/lib/projects/awscdk-typescript-app.generated.js +4 -4
- package/lib/projects/jsii-options.generated.d.ts +11 -1
- package/lib/projects/jsii-options.generated.js +1 -1
- package/lib/projects/jsii.generated.js +5 -4
- package/lib/projects/typescript.generated.js +4 -4
- package/lib/utils.d.ts +2 -2
- package/lib/utils.js +3 -3
- package/package.json +3 -1
- package/scripts/generate-project-types.ts +103 -0
- package/typedoc.jsonc +10 -0
|
@@ -20,14 +20,14 @@ class TypeScriptProject extends projen_1.typescript.TypeScriptProject {
|
|
|
20
20
|
*/
|
|
21
21
|
constructor(options) {
|
|
22
22
|
/* Separate component configuration from base Projen options */
|
|
23
|
-
const { mise, vitest,
|
|
23
|
+
const { mise, vitest, ...baseOptions } = options;
|
|
24
24
|
/* Merge default configuration with user options and initialize base class */
|
|
25
25
|
super((0, utils_1.deepMerge)(config_1.defaultOptions.typescript.TypeScriptProject, baseOptions));
|
|
26
26
|
/* Apply component defaults and instantiate enabled components */
|
|
27
|
-
(0, config_1.applyDefaults)(this, [{ component: mise_1.Mise, enabled: mise }, { component: vitest_1.Vitest, enabled: vitest
|
|
27
|
+
(0, config_1.applyDefaults)(this, [{ component: mise_1.Mise, enabled: mise }, { component: vitest_1.Vitest, enabled: vitest }]);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
exports.TypeScriptProject = TypeScriptProject;
|
|
31
31
|
_a = JSII_RTTI_SYMBOL_1;
|
|
32
|
-
TypeScriptProject[_a] = { fqn: "@nikovirtala/projen-constructs.TypeScriptProject", version: "0.1
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
TypeScriptProject[_a] = { fqn: "@nikovirtala/projen-constructs.TypeScriptProject", version: "0.2.1" };
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5nZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvamVjdHMvdHlwZXNjcmlwdC5nZW5lcmF0ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2RUFBNkU7QUFDN0UsbUNBQW9DO0FBQ3BDLDZDQUEwQztBQUMxQyxpREFBOEM7QUFDOUMsc0NBQTBEO0FBQzFELG9DQUFxQztBQUtyQzs7OztHQUlHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxtQkFBVSxDQUFDLGlCQUFpQjtJQUMvRDs7T0FFRztJQUNILFlBQVksT0FBaUM7UUFDekMsK0RBQStEO1FBQy9ELE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBRWpELDZFQUE2RTtRQUM3RSxLQUFLLENBQUMsSUFBQSxpQkFBUyxFQUFzQyx1QkFBYyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBRWhILGlFQUFpRTtRQUNqRSxJQUFBLHNCQUFhLEVBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsV0FBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxlQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RyxDQUFDOztBQWJMLDhDQWNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibnB4IHByb2plblwiLlxuaW1wb3J0IHsgdHlwZXNjcmlwdCB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IE1pc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9taXNlXCI7XG5pbXBvcnQgeyBWaXRlc3QgfSBmcm9tIFwiLi4vY29tcG9uZW50cy92aXRlc3RcIjtcbmltcG9ydCB7IGFwcGx5RGVmYXVsdHMsIGRlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL2NvbmZpZ1wiO1xuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IFR5cGVTY3JpcHRQcm9qZWN0T3B0aW9ucyB9IGZyb20gXCIuL3R5cGVzY3JpcHQtb3B0aW9ucy5nZW5lcmF0ZWRcIjtcblxuZXhwb3J0IHsgVHlwZVNjcmlwdFByb2plY3RPcHRpb25zIH0gZnJvbSBcIi4vdHlwZXNjcmlwdC1vcHRpb25zLmdlbmVyYXRlZFwiO1xuXG4vKipcbiAqIFR5cGVTY3JpcHRQcm9qZWN0IHdpdGggc3RhbmRhcmQgY29uZmlndXJhdGlvbiBhbmQgY29tcG9uZW50IGludGVncmF0aW9uXG4gKlxuICogRXh0ZW5kcyBQcm9qZW4ncyBiYXNlIGNsYXNzIHdpdGggb3BpbmlvbmF0ZWQgZGVmYXVsdHMgYW5kIGF1dG9tYXRpYyBjb21wb25lbnQgc2V0dXAuXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlU2NyaXB0UHJvamVjdCBleHRlbmRzIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3Qge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gUHJvamVjdCBjb25maWd1cmF0aW9uXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogVHlwZVNjcmlwdFByb2plY3RPcHRpb25zKSB7XG4gICAgICAgIC8qIFNlcGFyYXRlIGNvbXBvbmVudCBjb25maWd1cmF0aW9uIGZyb20gYmFzZSBQcm9qZW4gb3B0aW9ucyAqL1xuICAgICAgICBjb25zdCB7IG1pc2UsIHZpdGVzdCwgLi4uYmFzZU9wdGlvbnMgfSA9IG9wdGlvbnM7XG5cbiAgICAgICAgLyogTWVyZ2UgZGVmYXVsdCBjb25maWd1cmF0aW9uIHdpdGggdXNlciBvcHRpb25zIGFuZCBpbml0aWFsaXplIGJhc2UgY2xhc3MgKi9cbiAgICAgICAgc3VwZXIoZGVlcE1lcmdlPHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3RPcHRpb25zPihkZWZhdWx0T3B0aW9ucy50eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0LCBiYXNlT3B0aW9ucykpO1xuXG4gICAgICAgIC8qIEFwcGx5IGNvbXBvbmVudCBkZWZhdWx0cyBhbmQgaW5zdGFudGlhdGUgZW5hYmxlZCBjb21wb25lbnRzICovXG4gICAgICAgIGFwcGx5RGVmYXVsdHModGhpcywgW3sgY29tcG9uZW50OiBNaXNlLCBlbmFibGVkOiBtaXNlIH0sIHsgY29tcG9uZW50OiBWaXRlc3QsIGVuYWJsZWQ6IHZpdGVzdCB9XSk7XG4gICAgfVxufSJdfQ==
|
package/lib/utils.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const deepMerge: <T>(target: Partial<T
|
|
2
|
-
export declare const mergeAll: <T extends object>(...items: Partial<T>[]) => Partial<T
|
|
1
|
+
export declare const deepMerge: <T>(target: Partial<T> | undefined, source: Partial<T> | undefined) => T;
|
|
2
|
+
export declare const mergeAll: <T extends object>(...items: (Partial<T> | undefined)[]) => Partial<T> | undefined;
|
package/lib/utils.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mergeAll = exports.deepMerge = void 0;
|
|
4
4
|
const deepMerge = (target, source) => {
|
|
5
|
-
const result = structuredClone(target);
|
|
6
|
-
const src = source;
|
|
5
|
+
const result = structuredClone(target ?? {});
|
|
6
|
+
const src = (source ?? {});
|
|
7
7
|
for (const key in src) {
|
|
8
8
|
if (src[key] && typeof src[key] === "object" && !Array.isArray(src[key])) {
|
|
9
9
|
result[key] = (0, exports.deepMerge)((result[key] || {}), src[key]);
|
|
@@ -17,4 +17,4 @@ const deepMerge = (target, source) => {
|
|
|
17
17
|
exports.deepMerge = deepMerge;
|
|
18
18
|
const mergeAll = (...items) => items.reduce((acc, item) => (0, exports.deepMerge)(acc, item), {});
|
|
19
19
|
exports.mergeAll = mergeAll;
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQU8sTUFBTSxTQUFTLEdBQUcsQ0FBSSxNQUE4QixFQUFFLE1BQThCLEVBQUssRUFBRTtJQUM5RixNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBNEIsQ0FBQztJQUN4RSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQTRCLENBQUM7SUFDdEQsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdkUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUEsaUJBQVMsRUFDbkIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUE0QixFQUM5QyxHQUFHLENBQUMsR0FBRyxDQUE0QixDQUN0QyxDQUFDO1FBQ04sQ0FBQzthQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLE1BQVcsQ0FBQztBQUN2QixDQUFDLENBQUM7QUFkVyxRQUFBLFNBQVMsYUFjcEI7QUFFSyxNQUFNLFFBQVEsR0FBRyxDQUFtQixHQUFHLEtBQWlDLEVBQUUsRUFBRSxDQUMvRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBQSxpQkFBUyxFQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFPLENBQUMsQ0FBQztBQURsRCxRQUFBLFFBQVEsWUFDMEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZGVlcE1lcmdlID0gPFQ+KHRhcmdldDogUGFydGlhbDxUPiB8IHVuZGVmaW5lZCwgc291cmNlOiBQYXJ0aWFsPFQ+IHwgdW5kZWZpbmVkKTogVCA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gc3RydWN0dXJlZENsb25lKHRhcmdldCA/PyB7fSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY29uc3Qgc3JjID0gKHNvdXJjZSA/PyB7fSkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZm9yIChjb25zdCBrZXkgaW4gc3JjKSB7XG4gICAgICAgIGlmIChzcmNba2V5XSAmJiB0eXBlb2Ygc3JjW2tleV0gPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkoc3JjW2tleV0pKSB7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IGRlZXBNZXJnZShcbiAgICAgICAgICAgICAgICAocmVzdWx0W2tleV0gfHwge30pIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICAgICAgIHNyY1trZXldIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChzcmNba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IHNyY1trZXldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQgYXMgVDtcbn07XG5cbmV4cG9ydCBjb25zdCBtZXJnZUFsbCA9IDxUIGV4dGVuZHMgb2JqZWN0PiguLi5pdGVtczogKFBhcnRpYWw8VD4gfCB1bmRlZmluZWQpW10pID0+XG4gICAgaXRlbXMucmVkdWNlKChhY2MsIGl0ZW0pID0+IGRlZXBNZXJnZShhY2MsIGl0ZW0pLCB7fSBhcyBUKTtcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"jsii-rosetta": "~5.9.3",
|
|
28
28
|
"projen": "^0.98.11",
|
|
29
29
|
"tsx": "^4.20.6",
|
|
30
|
+
"typedoc": "^0.28",
|
|
30
31
|
"typescript": "5.9.3",
|
|
31
32
|
"vitest": "^4"
|
|
32
33
|
},
|
|
@@ -50,7 +51,7 @@
|
|
|
50
51
|
"publishConfig": {
|
|
51
52
|
"access": "public"
|
|
52
53
|
},
|
|
53
|
-
"version": "0.1
|
|
54
|
+
"version": "0.2.1",
|
|
54
55
|
"types": "lib/index.d.ts",
|
|
55
56
|
"stability": "stable",
|
|
56
57
|
"jsii": {
|
|
@@ -86,6 +87,7 @@
|
|
|
86
87
|
"test": "npx projen test",
|
|
87
88
|
"test:update": "npx projen test:update",
|
|
88
89
|
"test:watch": "npx projen test:watch",
|
|
90
|
+
"typedoc": "npx projen typedoc",
|
|
89
91
|
"unbump": "npx projen unbump",
|
|
90
92
|
"update-versions": "npx projen update-versions",
|
|
91
93
|
"upgrade": "npx projen upgrade",
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import type { Assembly, ClassType } from "@jsii/spec";
|
|
4
|
+
|
|
5
|
+
const BASE_CLASS = "projen.Project";
|
|
6
|
+
|
|
7
|
+
function loadProjenManifest(): Assembly {
|
|
8
|
+
const projenPackageJson = require.resolve("projen/package.json");
|
|
9
|
+
const projenRoot = dirname(projenPackageJson);
|
|
10
|
+
const jsiiPath = join(projenRoot, ".jsii");
|
|
11
|
+
return JSON.parse(readFileSync(jsiiPath, "utf-8"));
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function extendsBase(classType: ClassType, manifest: Assembly): boolean {
|
|
15
|
+
if (classType.inheritancePath) {
|
|
16
|
+
return classType.inheritancePath.includes(BASE_CLASS);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
let currentBase = classType.base;
|
|
20
|
+
while (currentBase) {
|
|
21
|
+
if (currentBase === BASE_CLASS) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
const baseType = manifest.types?.[currentBase];
|
|
25
|
+
if (!baseType || baseType.kind !== "class") {
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
currentBase = (baseType as ClassType).base;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function toEnumName(className: string): string {
|
|
35
|
+
return className
|
|
36
|
+
.replace(/([A-Z])/g, "_$1")
|
|
37
|
+
.toUpperCase()
|
|
38
|
+
.replace(/^_/, "");
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function discoverProjectTypes(manifest: Assembly): Array<[string, string, string]> {
|
|
42
|
+
const projectTypes: Array<[string, string, string]> = [];
|
|
43
|
+
|
|
44
|
+
for (const [fqn, type] of Object.entries(manifest.types ?? {})) {
|
|
45
|
+
if (type.kind !== "class") {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const classType = type as ClassType;
|
|
50
|
+
|
|
51
|
+
if (classType.abstract) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (!extendsBase(classType, manifest)) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const parts = fqn.split(".");
|
|
60
|
+
if (parts.length < 3 || parts[0] !== "projen") {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const module = parts[1];
|
|
65
|
+
const className = parts.slice(2).join(".");
|
|
66
|
+
const enumName = toEnumName(className);
|
|
67
|
+
const value = `${module}.${className}`;
|
|
68
|
+
const docs = classType.docs?.summary ?? className;
|
|
69
|
+
|
|
70
|
+
projectTypes.push([enumName, value, docs]);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return projectTypes.sort((a, b) => a[0].localeCompare(b[0]));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function generateEnum(): string {
|
|
77
|
+
const manifest = loadProjenManifest();
|
|
78
|
+
const projectTypes = discoverProjectTypes(manifest);
|
|
79
|
+
|
|
80
|
+
const lines: string[] = [];
|
|
81
|
+
lines.push("/**");
|
|
82
|
+
lines.push(" * Enum defining all supported project types");
|
|
83
|
+
lines.push(" *");
|
|
84
|
+
lines.push(" * Each project type corresponds to a generated project class and its configuration");
|
|
85
|
+
lines.push(" * in the defaultOptions structure.");
|
|
86
|
+
lines.push(" *");
|
|
87
|
+
lines.push(" * @generated Automatically generated from Projen's JSII manifest");
|
|
88
|
+
lines.push(" */");
|
|
89
|
+
lines.push("export enum ProjectType {");
|
|
90
|
+
|
|
91
|
+
for (const [enumName, value, docs] of projectTypes) {
|
|
92
|
+
lines.push(" /**");
|
|
93
|
+
lines.push(` * ${docs}`);
|
|
94
|
+
lines.push(" */");
|
|
95
|
+
lines.push(` ${enumName} = "${value}",`);
|
|
96
|
+
lines.push("");
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
lines.push("}");
|
|
100
|
+
return lines.join("\n");
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
console.log(generateEnum());
|