@nikovirtala/projen-constructs 0.0.2 → 0.0.4
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 +4114 -18
- package/API.md +257 -257
- package/README.md +137 -23
- package/lib/components/bundle-lambda-function-code.d.ts +62 -0
- package/lib/components/bundle-lambda-function-code.js +175 -0
- package/lib/components/colima.d.ts +5 -0
- package/lib/components/colima.js +22 -0
- package/lib/components/homebrew.d.ts +12 -0
- package/lib/components/homebrew.js +42 -0
- package/lib/components/index.d.ts +7 -0
- package/lib/components/index.js +24 -0
- package/lib/components/lambda-function-construct-generator.d.ts +30 -0
- package/lib/components/lambda-function-construct-generator.js +195 -0
- package/lib/components/localstack.d.ts +11 -0
- package/lib/components/localstack.js +42 -0
- package/lib/components/typedoc-config.d.ts +78 -0
- package/lib/components/typedoc-config.js +93 -0
- package/lib/components/typedoc.d.ts +18 -0
- package/lib/components/typedoc.js +58 -0
- package/lib/components/vitest-bundled-define-config.d.ts +1 -0
- package/lib/components/vitest-bundled-define-config.js +6 -0
- package/lib/components/vitest.d.ts +87 -0
- package/lib/components/vitest.js +204 -0
- package/lib/config.d.ts +61 -76
- package/lib/config.js +28 -7
- package/lib/index.d.ts +1 -4
- package/lib/index.js +2 -5
- package/lib/projects/awscdk-app.js +38 -0
- package/lib/{awscdk-construct-project.d.ts → projects/awscdk-construct.d.ts} +1 -1
- package/lib/projects/awscdk-construct.js +38 -0
- package/lib/projects/index.d.ts +4 -0
- package/lib/projects/index.js +21 -0
- package/lib/projects/jsii.js +38 -0
- package/lib/projects/typescript.js +39 -0
- package/node_modules/case/LICENSE +22 -0
- package/node_modules/case/README.md +139 -0
- package/node_modules/case/case.d.ts +43 -0
- package/node_modules/case/dist/Case.js +171 -0
- package/node_modules/case/dist/Case.min.js +5 -0
- package/node_modules/case/dist/Case.min.js.map +1 -0
- package/node_modules/case/dist/Case.plus.js +189 -0
- package/node_modules/case/dist/Case.plus.min.js +5 -0
- package/node_modules/case/dist/Case.plus.min.js.map +1 -0
- package/node_modules/case/package.json +58 -0
- package/package.json +10 -2
- package/lib/awscdk-app-project.js +0 -38
- package/lib/awscdk-construct-project.js +0 -38
- package/lib/jsii-project.js +0 -38
- package/lib/typescript-project.js +0 -39
- /package/lib/{awscdk-app-project.d.ts → projects/awscdk-app.d.ts} +0 -0
- /package/lib/{jsii-project.d.ts → projects/jsii.d.ts} +0 -0
- /package/lib/{typescript-project.d.ts → projects/typescript.d.ts} +0 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LambdaFunctionConstructGenerator = void 0;
|
|
4
|
+
const path = require("node:path");
|
|
5
|
+
const projen_1 = require("projen");
|
|
6
|
+
class LambdaFunctionConstructGenerator extends projen_1.Component {
|
|
7
|
+
constructor(project, options) {
|
|
8
|
+
super(project);
|
|
9
|
+
this.nodeProject = project;
|
|
10
|
+
this.sourceDir = options?.sourceDir ?? "src/handlers";
|
|
11
|
+
this.outputDir = options?.outputDir ?? "src/constructs/lambda";
|
|
12
|
+
this.filePattern = options?.filePattern ?? "*.lambda.ts";
|
|
13
|
+
this.esbuildOptions = options?.esbuildOptions ?? {};
|
|
14
|
+
this.baseConstructImport = options?.baseConstructImport;
|
|
15
|
+
this.baseConstructClass = options?.baseConstructClass;
|
|
16
|
+
this.baseConstructPackage = options?.baseConstructPackage;
|
|
17
|
+
const uniqueId = this.createUniqueId(this.sourceDir, this.filePattern);
|
|
18
|
+
this.bundlerScriptPath = path.join(".projen", `generate-and-bundle-${uniqueId}.ts`);
|
|
19
|
+
if (options?.addDependencies ?? true) {
|
|
20
|
+
this.addDependencies(options?.baseConstructPackage);
|
|
21
|
+
}
|
|
22
|
+
this.createBundleTask();
|
|
23
|
+
this.addBundleTaskToWorkflow();
|
|
24
|
+
}
|
|
25
|
+
addDependencies(additionalPackage) {
|
|
26
|
+
this.nodeProject.addDeps("aws-cdk-lib", "constructs");
|
|
27
|
+
if (additionalPackage && additionalPackage !== "aws-cdk-lib" && additionalPackage !== "constructs") {
|
|
28
|
+
this.nodeProject.addDeps(additionalPackage);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
createUniqueId(sourceDir, filePattern) {
|
|
32
|
+
const dirPart = sourceDir.replace(/\//g, "-").replace(/[^\w-]/g, "");
|
|
33
|
+
const patternPart = filePattern
|
|
34
|
+
.replace(/\*/g, "")
|
|
35
|
+
.replace(/\./g, "-")
|
|
36
|
+
.replace(/[^\w-]/g, "");
|
|
37
|
+
return `${dirPart}-${patternPart}`.replace(/--+/g, "-").replace(/^-|-$/g, "");
|
|
38
|
+
}
|
|
39
|
+
createBundleTask() {
|
|
40
|
+
const uniqueId = this.createUniqueId(this.sourceDir, this.filePattern);
|
|
41
|
+
const taskName = `generate-and-bundle-${uniqueId}`;
|
|
42
|
+
let baseConstructArgs = "";
|
|
43
|
+
if (this.baseConstructImport) {
|
|
44
|
+
baseConstructArgs += ` --base-construct-import '${this.baseConstructImport}'`;
|
|
45
|
+
}
|
|
46
|
+
if (this.baseConstructClass) {
|
|
47
|
+
baseConstructArgs += ` --base-construct-class '${this.baseConstructClass}'`;
|
|
48
|
+
}
|
|
49
|
+
const bundleTask = this.nodeProject.addTask(taskName, {
|
|
50
|
+
description: `Generate Lambda Function Constructs from ${this.sourceDir}/${this.filePattern} and bundle their handlers`,
|
|
51
|
+
exec: `tsx --tsconfig tsconfig.dev.json ${this.bundlerScriptPath} --source-dir ${this.sourceDir} --output-dir ${this.outputDir} --file-pattern "${this.filePattern}" --esbuild-options '${JSON.stringify(this.esbuildOptions)}'${baseConstructArgs}`,
|
|
52
|
+
});
|
|
53
|
+
this.createBundlerScript();
|
|
54
|
+
return bundleTask;
|
|
55
|
+
}
|
|
56
|
+
createBundlerScript() {
|
|
57
|
+
const bundlerScript = `// ~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen".
|
|
58
|
+
|
|
59
|
+
import * as path from 'path';
|
|
60
|
+
import * as fs from 'fs';
|
|
61
|
+
import * as esbuild from 'esbuild';
|
|
62
|
+
import * as glob from 'glob';
|
|
63
|
+
import { pascalCase } from 'change-case';
|
|
64
|
+
import yargs from 'yargs/yargs';
|
|
65
|
+
import { hideBin } from 'yargs/helpers';
|
|
66
|
+
|
|
67
|
+
async function main() {
|
|
68
|
+
const argv = await yargs(hideBin(process.argv))
|
|
69
|
+
.option('source-dir', { type: 'string', default: 'src/handlers', description: 'Source directory where Lambda Function handlers are located' })
|
|
70
|
+
.option('output-dir', { type: 'string', default: 'src/constructs/lambda', description: 'Output directory where Lambda Function constructs will be generated' })
|
|
71
|
+
.option('file-pattern', { type: 'string', default: '*.lambda.ts', description: 'File pattern to identify Lambda Function handlers' })
|
|
72
|
+
.option('esbuild-options', { type: 'string', default: '{}', description: 'esbuild options as JSON string' })
|
|
73
|
+
.option('base-construct-import', { type: 'string', description: 'Import statement for the base construct' })
|
|
74
|
+
.option('base-construct-class', { type: 'string', description: 'Name of the construct class to extend' })
|
|
75
|
+
.help()
|
|
76
|
+
.parse();
|
|
77
|
+
|
|
78
|
+
const sourceDir = argv['source-dir'];
|
|
79
|
+
const outputDir = argv['output-dir'];
|
|
80
|
+
const filePattern = argv['file-pattern'];
|
|
81
|
+
const esbuildOptions = JSON.parse(argv['esbuild-options'] as string);
|
|
82
|
+
const baseConstructImport = argv['base-construct-import'] as string | undefined;
|
|
83
|
+
const baseConstructClass = argv['base-construct-class'] as string | undefined;
|
|
84
|
+
|
|
85
|
+
fs.mkdirSync(path.join(process.cwd(), outputDir), { recursive: true });
|
|
86
|
+
|
|
87
|
+
const assetsDir = path.join(process.cwd(), 'assets', 'handlers');
|
|
88
|
+
fs.mkdirSync(assetsDir, { recursive: true });
|
|
89
|
+
|
|
90
|
+
const handlerFiles = glob.sync(path.join(process.cwd(), sourceDir, filePattern));
|
|
91
|
+
|
|
92
|
+
console.log(\`Found \${handlerFiles.length} Lambda Function handler files\`);
|
|
93
|
+
|
|
94
|
+
for (const handlerFile of handlerFiles) {
|
|
95
|
+
const relativePath = path.relative(path.join(process.cwd(), sourceDir), handlerFile);
|
|
96
|
+
const fileName = path.basename(relativePath, path.extname(relativePath));
|
|
97
|
+
const functionName = fileName.replace('.lambda', '');
|
|
98
|
+
|
|
99
|
+
console.log(\`Processing Lambda Function handler: \${functionName}\`);
|
|
100
|
+
|
|
101
|
+
const functionDir = path.join(assetsDir, functionName);
|
|
102
|
+
fs.mkdirSync(functionDir, { recursive: true });
|
|
103
|
+
|
|
104
|
+
const outfile = path.join(functionDir, 'index.js');
|
|
105
|
+
|
|
106
|
+
try {
|
|
107
|
+
await esbuild.build({
|
|
108
|
+
entryPoints: [handlerFile],
|
|
109
|
+
bundle: true,
|
|
110
|
+
minify: true,
|
|
111
|
+
platform: 'node',
|
|
112
|
+
target: 'node18',
|
|
113
|
+
outfile,
|
|
114
|
+
...esbuildOptions,
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
console.log(\`Successfully bundled \${functionName} to \${outfile}\`);
|
|
118
|
+
|
|
119
|
+
const constructFilePath = path.join(process.cwd(), outputDir, \`\${functionName}.ts\`);
|
|
120
|
+
const constructCode = generateConstructCode(functionName, relativePath, baseConstructImport, baseConstructClass);
|
|
121
|
+
|
|
122
|
+
fs.writeFileSync(constructFilePath, constructCode);
|
|
123
|
+
console.log(\`Generated construct at \${constructFilePath}\`);
|
|
124
|
+
} catch (error) {
|
|
125
|
+
console.error(\`Error processing \${functionName}:\`, error);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function generateConstructCode(functionName: string, handlerPath: string, baseConstructImport?: string, baseConstructClass?: string) {
|
|
131
|
+
const constructName = \`\${pascalCase(functionName)}Function\`;
|
|
132
|
+
|
|
133
|
+
const importStatement = baseConstructImport ?? "";
|
|
134
|
+
const baseClassName = baseConstructClass ?? "aws_lambda.Function";
|
|
135
|
+
|
|
136
|
+
const useAwsLambdaRuntime = !baseConstructClass || baseClassName.includes("Function");
|
|
137
|
+
|
|
138
|
+
return \`// ~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen".
|
|
139
|
+
|
|
140
|
+
import * as path from 'path';
|
|
141
|
+
import { fileURLToPath } from 'url';
|
|
142
|
+
\${importStatement}
|
|
143
|
+
import { aws_lambda } from 'aws-cdk-lib';
|
|
144
|
+
import { Construct } from 'constructs';
|
|
145
|
+
|
|
146
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
147
|
+
const __dirname = path.dirname(__filename);
|
|
148
|
+
|
|
149
|
+
export interface \${constructName}Props extends Omit<\${baseClassName === "aws_lambda.Function" ? "aws_lambda.FunctionProps" : \`\${baseClassName}Props\`}, 'code'\${useAwsLambdaRuntime ? " | 'runtime'" : ""} | 'handler'> {
|
|
150
|
+
\${useAwsLambdaRuntime ? \`/**
|
|
151
|
+
* Override the default runtime
|
|
152
|
+
* @default nodejs22.x
|
|
153
|
+
*/
|
|
154
|
+
readonly runtime?: aws_lambda.Runtime;\` : ""}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export class \${constructName} extends \${baseClassName} {
|
|
158
|
+
constructor(scope: Construct, id: string, props: \${constructName}Props = {}) {
|
|
159
|
+
super(scope, id, {
|
|
160
|
+
...props,
|
|
161
|
+
\${useAwsLambdaRuntime ? "runtime: props.runtime ?? aws_lambda.Runtime.NODEJS_22_X," : ""}
|
|
162
|
+
handler: 'index.handler',
|
|
163
|
+
code: aws_lambda.Code.fromAsset(path.join(__dirname, '../../../assets/handlers/\${functionName}')),
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
\`;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
main().catch(error => {
|
|
171
|
+
console.error('Error:', error);
|
|
172
|
+
process.exit(1);
|
|
173
|
+
});
|
|
174
|
+
`;
|
|
175
|
+
const src = new projen_1.SourceCode(this.project, this.bundlerScriptPath);
|
|
176
|
+
const lines = bundlerScript.split("\n");
|
|
177
|
+
for (const line of lines) {
|
|
178
|
+
src.line(line);
|
|
179
|
+
}
|
|
180
|
+
this.nodeProject.addDevDeps("esbuild", "glob", "yargs", "@types/glob", "@types/yargs", "tsx", "change-case");
|
|
181
|
+
}
|
|
182
|
+
addBundleTaskToWorkflow() {
|
|
183
|
+
const compileTask = this.nodeProject.tasks.tryFind("compile");
|
|
184
|
+
if (compileTask) {
|
|
185
|
+
const uniqueId = this.createUniqueId(this.sourceDir, this.filePattern);
|
|
186
|
+
const taskName = `generate-and-bundle-${uniqueId}`;
|
|
187
|
+
const bundleTask = this.nodeProject.tasks.tryFind(taskName);
|
|
188
|
+
if (bundleTask) {
|
|
189
|
+
compileTask.prependSpawn(bundleTask);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
exports.LambdaFunctionConstructGenerator = LambdaFunctionConstructGenerator;
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLWZ1bmN0aW9uLWNvbnN0cnVjdC1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9sYW1iZGEtZnVuY3Rpb24tY29uc3RydWN0LWdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrQ0FBa0M7QUFFbEMsbUNBQStDO0FBYy9DLE1BQWEsZ0NBQWlDLFNBQVEsa0JBQVM7SUFXM0QsWUFBWSxPQUFvQixFQUFFLE9BQWlEO1FBQy9FLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLFNBQVMsSUFBSSxjQUFjLENBQUM7UUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsU0FBUyxJQUFJLHVCQUF1QixDQUFDO1FBQy9ELElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxFQUFFLFdBQVcsSUFBSSxhQUFhLENBQUM7UUFDekQsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLEVBQUUsY0FBYyxJQUFJLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxFQUFFLG1CQUFtQixDQUFDO1FBQ3hELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLEVBQUUsa0JBQWtCLENBQUM7UUFDdEQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQztRQUUxRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSx1QkFBdUIsUUFBUSxLQUFLLENBQUMsQ0FBQztRQUVwRixJQUFJLE9BQU8sRUFBRSxlQUFlLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVPLGVBQWUsQ0FBQyxpQkFBMEI7UUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRXRELElBQUksaUJBQWlCLElBQUksaUJBQWlCLEtBQUssYUFBYSxJQUFJLGlCQUFpQixLQUFLLFlBQVksRUFBRSxDQUFDO1lBQ2pHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNMLENBQUM7SUFFTyxjQUFjLENBQUMsU0FBaUIsRUFBRSxXQUFtQjtRQUN6RCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sV0FBVyxHQUFHLFdBQVc7YUFDMUIsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7YUFDbEIsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7YUFDbkIsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QixPQUFPLEdBQUcsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkUsTUFBTSxRQUFRLEdBQUcsdUJBQXVCLFFBQVEsRUFBRSxDQUFDO1FBRW5ELElBQUksaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0IsaUJBQWlCLElBQUksNkJBQTZCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDO1FBQ2xGLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLGlCQUFpQixJQUFJLDRCQUE0QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQztRQUNoRixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ2xELFdBQVcsRUFBRSw0Q0FBNEMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyw0QkFBNEI7WUFDdkgsSUFBSSxFQUFFLG9DQUFvQyxJQUFJLENBQUMsaUJBQWlCLGlCQUFpQixJQUFJLENBQUMsU0FBUyxpQkFBaUIsSUFBSSxDQUFDLFNBQVMsb0JBQW9CLElBQUksQ0FBQyxXQUFXLHdCQUF3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxpQkFBaUIsRUFBRTtTQUN2UCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUUzQixPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLE1BQU0sYUFBYSxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FxSDdCLENBQUM7UUFFTSxNQUFNLEdBQUcsR0FBRyxJQUFJLG1CQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRSxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDdkIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDakgsQ0FBQztJQUVPLHVCQUF1QjtRQUMzQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFOUQsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNkLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkUsTUFBTSxRQUFRLEdBQUcsdUJBQXVCLFFBQVEsRUFBRSxDQUFDO1lBQ25ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1RCxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNiLFdBQVcsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUFyTkQsNEVBcU5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IEJ1aWxkT3B0aW9ucyB9IGZyb20gXCJAbXJncmFpbi9jZGstZXNidWlsZFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBTb3VyY2VDb2RlIH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHR5cGUgeyBOb2RlUHJvamVjdCB9IGZyb20gXCJwcm9qZW4vbGliL2phdmFzY3JpcHRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFGdW5jdGlvbkNvbnN0cnVjdEdlbmVyYXRvck9wdGlvbnMge1xuICAgIHJlYWRvbmx5IHNvdXJjZURpcj86IHN0cmluZztcbiAgICByZWFkb25seSBvdXRwdXREaXI/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgZmlsZVBhdHRlcm4/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgZXNidWlsZE9wdGlvbnM/OiBCdWlsZE9wdGlvbnM7XG4gICAgcmVhZG9ubHkgYWRkRGVwZW5kZW5jaWVzPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBiYXNlQ29uc3RydWN0SW1wb3J0Pzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGJhc2VDb25zdHJ1Y3RDbGFzcz86IHN0cmluZztcbiAgICByZWFkb25seSBiYXNlQ29uc3RydWN0UGFja2FnZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIExhbWJkYUZ1bmN0aW9uQ29uc3RydWN0R2VuZXJhdG9yIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgc291cmNlRGlyOiBzdHJpbmc7XG4gICAgcHVibGljIHJlYWRvbmx5IG91dHB1dERpcjogc3RyaW5nO1xuICAgIHB1YmxpYyByZWFkb25seSBmaWxlUGF0dGVybjogc3RyaW5nO1xuICAgIHB1YmxpYyByZWFkb25seSBlc2J1aWxkT3B0aW9uczogQnVpbGRPcHRpb25zO1xuICAgIHB1YmxpYyByZWFkb25seSBiYXNlQ29uc3RydWN0SW1wb3J0Pzogc3RyaW5nO1xuICAgIHB1YmxpYyByZWFkb25seSBiYXNlQ29uc3RydWN0Q2xhc3M/OiBzdHJpbmc7XG4gICAgcHVibGljIHJlYWRvbmx5IGJhc2VDb25zdHJ1Y3RQYWNrYWdlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbm9kZVByb2plY3Q6IE5vZGVQcm9qZWN0O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYnVuZGxlclNjcmlwdFBhdGg6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByb2plY3Q6IE5vZGVQcm9qZWN0LCBvcHRpb25zPzogTGFtYmRhRnVuY3Rpb25Db25zdHJ1Y3RHZW5lcmF0b3JPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKHByb2plY3QpO1xuICAgICAgICB0aGlzLm5vZGVQcm9qZWN0ID0gcHJvamVjdDtcbiAgICAgICAgdGhpcy5zb3VyY2VEaXIgPSBvcHRpb25zPy5zb3VyY2VEaXIgPz8gXCJzcmMvaGFuZGxlcnNcIjtcbiAgICAgICAgdGhpcy5vdXRwdXREaXIgPSBvcHRpb25zPy5vdXRwdXREaXIgPz8gXCJzcmMvY29uc3RydWN0cy9sYW1iZGFcIjtcbiAgICAgICAgdGhpcy5maWxlUGF0dGVybiA9IG9wdGlvbnM/LmZpbGVQYXR0ZXJuID8/IFwiKi5sYW1iZGEudHNcIjtcbiAgICAgICAgdGhpcy5lc2J1aWxkT3B0aW9ucyA9IG9wdGlvbnM/LmVzYnVpbGRPcHRpb25zID8/IHt9O1xuICAgICAgICB0aGlzLmJhc2VDb25zdHJ1Y3RJbXBvcnQgPSBvcHRpb25zPy5iYXNlQ29uc3RydWN0SW1wb3J0O1xuICAgICAgICB0aGlzLmJhc2VDb25zdHJ1Y3RDbGFzcyA9IG9wdGlvbnM/LmJhc2VDb25zdHJ1Y3RDbGFzcztcbiAgICAgICAgdGhpcy5iYXNlQ29uc3RydWN0UGFja2FnZSA9IG9wdGlvbnM/LmJhc2VDb25zdHJ1Y3RQYWNrYWdlO1xuXG4gICAgICAgIGNvbnN0IHVuaXF1ZUlkID0gdGhpcy5jcmVhdGVVbmlxdWVJZCh0aGlzLnNvdXJjZURpciwgdGhpcy5maWxlUGF0dGVybik7XG4gICAgICAgIHRoaXMuYnVuZGxlclNjcmlwdFBhdGggPSBwYXRoLmpvaW4oXCIucHJvamVuXCIsIGBnZW5lcmF0ZS1hbmQtYnVuZGxlLSR7dW5pcXVlSWR9LnRzYCk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnM/LmFkZERlcGVuZGVuY2llcyA/PyB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLmFkZERlcGVuZGVuY2llcyhvcHRpb25zPy5iYXNlQ29uc3RydWN0UGFja2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNyZWF0ZUJ1bmRsZVRhc2soKTtcbiAgICAgICAgdGhpcy5hZGRCdW5kbGVUYXNrVG9Xb3JrZmxvdygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkRGVwZW5kZW5jaWVzKGFkZGl0aW9uYWxQYWNrYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMubm9kZVByb2plY3QuYWRkRGVwcyhcImF3cy1jZGstbGliXCIsIFwiY29uc3RydWN0c1wiKTtcblxuICAgICAgICBpZiAoYWRkaXRpb25hbFBhY2thZ2UgJiYgYWRkaXRpb25hbFBhY2thZ2UgIT09IFwiYXdzLWNkay1saWJcIiAmJiBhZGRpdGlvbmFsUGFja2FnZSAhPT0gXCJjb25zdHJ1Y3RzXCIpIHtcbiAgICAgICAgICAgIHRoaXMubm9kZVByb2plY3QuYWRkRGVwcyhhZGRpdGlvbmFsUGFja2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVVuaXF1ZUlkKHNvdXJjZURpcjogc3RyaW5nLCBmaWxlUGF0dGVybjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGlyUGFydCA9IHNvdXJjZURpci5yZXBsYWNlKC9cXC8vZywgXCItXCIpLnJlcGxhY2UoL1teXFx3LV0vZywgXCJcIik7XG4gICAgICAgIGNvbnN0IHBhdHRlcm5QYXJ0ID0gZmlsZVBhdHRlcm5cbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXCovZywgXCJcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXC4vZywgXCItXCIpXG4gICAgICAgICAgICAucmVwbGFjZSgvW15cXHctXS9nLCBcIlwiKTtcbiAgICAgICAgcmV0dXJuIGAke2RpclBhcnR9LSR7cGF0dGVyblBhcnR9YC5yZXBsYWNlKC8tLSsvZywgXCItXCIpLnJlcGxhY2UoL14tfC0kL2csIFwiXCIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQnVuZGxlVGFzaygpIHtcbiAgICAgICAgY29uc3QgdW5pcXVlSWQgPSB0aGlzLmNyZWF0ZVVuaXF1ZUlkKHRoaXMuc291cmNlRGlyLCB0aGlzLmZpbGVQYXR0ZXJuKTtcbiAgICAgICAgY29uc3QgdGFza05hbWUgPSBgZ2VuZXJhdGUtYW5kLWJ1bmRsZS0ke3VuaXF1ZUlkfWA7XG5cbiAgICAgICAgbGV0IGJhc2VDb25zdHJ1Y3RBcmdzID0gXCJcIjtcbiAgICAgICAgaWYgKHRoaXMuYmFzZUNvbnN0cnVjdEltcG9ydCkge1xuICAgICAgICAgICAgYmFzZUNvbnN0cnVjdEFyZ3MgKz0gYCAtLWJhc2UtY29uc3RydWN0LWltcG9ydCAnJHt0aGlzLmJhc2VDb25zdHJ1Y3RJbXBvcnR9J2A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYmFzZUNvbnN0cnVjdENsYXNzKSB7XG4gICAgICAgICAgICBiYXNlQ29uc3RydWN0QXJncyArPSBgIC0tYmFzZS1jb25zdHJ1Y3QtY2xhc3MgJyR7dGhpcy5iYXNlQ29uc3RydWN0Q2xhc3N9J2A7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBidW5kbGVUYXNrID0gdGhpcy5ub2RlUHJvamVjdC5hZGRUYXNrKHRhc2tOYW1lLCB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYEdlbmVyYXRlIExhbWJkYSBGdW5jdGlvbiBDb25zdHJ1Y3RzIGZyb20gJHt0aGlzLnNvdXJjZURpcn0vJHt0aGlzLmZpbGVQYXR0ZXJufSBhbmQgYnVuZGxlIHRoZWlyIGhhbmRsZXJzYCxcbiAgICAgICAgICAgIGV4ZWM6IGB0c3ggLS10c2NvbmZpZyB0c2NvbmZpZy5kZXYuanNvbiAke3RoaXMuYnVuZGxlclNjcmlwdFBhdGh9IC0tc291cmNlLWRpciAke3RoaXMuc291cmNlRGlyfSAtLW91dHB1dC1kaXIgJHt0aGlzLm91dHB1dERpcn0gLS1maWxlLXBhdHRlcm4gXCIke3RoaXMuZmlsZVBhdHRlcm59XCIgLS1lc2J1aWxkLW9wdGlvbnMgJyR7SlNPTi5zdHJpbmdpZnkodGhpcy5lc2J1aWxkT3B0aW9ucyl9JyR7YmFzZUNvbnN0cnVjdEFyZ3N9YCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jcmVhdGVCdW5kbGVyU2NyaXB0KCk7XG5cbiAgICAgICAgcmV0dXJuIGJ1bmRsZVRhc2s7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVCdW5kbGVyU2NyaXB0KCkge1xuICAgICAgICBjb25zdCBidW5kbGVyU2NyaXB0ID0gYC8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcIm5weCBwcm9qZW5cIi5cblxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIGVzYnVpbGQgZnJvbSAnZXNidWlsZCc7XG5pbXBvcnQgKiBhcyBnbG9iIGZyb20gJ2dsb2InO1xuaW1wb3J0IHsgcGFzY2FsQ2FzZSB9IGZyb20gJ2NoYW5nZS1jYXNlJztcbmltcG9ydCB5YXJncyBmcm9tICd5YXJncy95YXJncyc7XG5pbXBvcnQgeyBoaWRlQmluIH0gZnJvbSAneWFyZ3MvaGVscGVycyc7XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIGNvbnN0IGFyZ3YgPSBhd2FpdCB5YXJncyhoaWRlQmluKHByb2Nlc3MuYXJndikpXG4gICAgLm9wdGlvbignc291cmNlLWRpcicsIHsgdHlwZTogJ3N0cmluZycsIGRlZmF1bHQ6ICdzcmMvaGFuZGxlcnMnLCBkZXNjcmlwdGlvbjogJ1NvdXJjZSBkaXJlY3Rvcnkgd2hlcmUgTGFtYmRhIEZ1bmN0aW9uIGhhbmRsZXJzIGFyZSBsb2NhdGVkJyB9KVxuICAgIC5vcHRpb24oJ291dHB1dC1kaXInLCB7IHR5cGU6ICdzdHJpbmcnLCBkZWZhdWx0OiAnc3JjL2NvbnN0cnVjdHMvbGFtYmRhJywgZGVzY3JpcHRpb246ICdPdXRwdXQgZGlyZWN0b3J5IHdoZXJlIExhbWJkYSBGdW5jdGlvbiBjb25zdHJ1Y3RzIHdpbGwgYmUgZ2VuZXJhdGVkJyB9KVxuICAgIC5vcHRpb24oJ2ZpbGUtcGF0dGVybicsIHsgdHlwZTogJ3N0cmluZycsIGRlZmF1bHQ6ICcqLmxhbWJkYS50cycsIGRlc2NyaXB0aW9uOiAnRmlsZSBwYXR0ZXJuIHRvIGlkZW50aWZ5IExhbWJkYSBGdW5jdGlvbiBoYW5kbGVycycgfSlcbiAgICAub3B0aW9uKCdlc2J1aWxkLW9wdGlvbnMnLCB7IHR5cGU6ICdzdHJpbmcnLCBkZWZhdWx0OiAne30nLCBkZXNjcmlwdGlvbjogJ2VzYnVpbGQgb3B0aW9ucyBhcyBKU09OIHN0cmluZycgfSlcbiAgICAub3B0aW9uKCdiYXNlLWNvbnN0cnVjdC1pbXBvcnQnLCB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ0ltcG9ydCBzdGF0ZW1lbnQgZm9yIHRoZSBiYXNlIGNvbnN0cnVjdCcgfSlcbiAgICAub3B0aW9uKCdiYXNlLWNvbnN0cnVjdC1jbGFzcycsIHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgY29uc3RydWN0IGNsYXNzIHRvIGV4dGVuZCcgfSlcbiAgICAuaGVscCgpXG4gICAgLnBhcnNlKCk7XG5cbiAgY29uc3Qgc291cmNlRGlyID0gYXJndlsnc291cmNlLWRpciddO1xuICBjb25zdCBvdXRwdXREaXIgPSBhcmd2WydvdXRwdXQtZGlyJ107XG4gIGNvbnN0IGZpbGVQYXR0ZXJuID0gYXJndlsnZmlsZS1wYXR0ZXJuJ107XG4gIGNvbnN0IGVzYnVpbGRPcHRpb25zID0gSlNPTi5wYXJzZShhcmd2Wydlc2J1aWxkLW9wdGlvbnMnXSBhcyBzdHJpbmcpO1xuICBjb25zdCBiYXNlQ29uc3RydWN0SW1wb3J0ID0gYXJndlsnYmFzZS1jb25zdHJ1Y3QtaW1wb3J0J10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjb25zdCBiYXNlQ29uc3RydWN0Q2xhc3MgPSBhcmd2WydiYXNlLWNvbnN0cnVjdC1jbGFzcyddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBmcy5ta2RpclN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIG91dHB1dERpciksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGFzc2V0c0RpciA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnYXNzZXRzJywgJ2hhbmRsZXJzJyk7XG4gIGZzLm1rZGlyU3luYyhhc3NldHNEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGhhbmRsZXJGaWxlcyA9IGdsb2Iuc3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgc291cmNlRGlyLCBmaWxlUGF0dGVybikpO1xuXG4gIGNvbnNvbGUubG9nKFxcYEZvdW5kIFxcJHtoYW5kbGVyRmlsZXMubGVuZ3RofSBMYW1iZGEgRnVuY3Rpb24gaGFuZGxlciBmaWxlc1xcYCk7XG5cbiAgZm9yIChjb25zdCBoYW5kbGVyRmlsZSBvZiBoYW5kbGVyRmlsZXMpIHtcbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBwYXRoLnJlbGF0aXZlKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBzb3VyY2VEaXIpLCBoYW5kbGVyRmlsZSk7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBwYXRoLmJhc2VuYW1lKHJlbGF0aXZlUGF0aCwgcGF0aC5leHRuYW1lKHJlbGF0aXZlUGF0aCkpO1xuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IGZpbGVOYW1lLnJlcGxhY2UoJy5sYW1iZGEnLCAnJyk7XG5cbiAgICBjb25zb2xlLmxvZyhcXGBQcm9jZXNzaW5nIExhbWJkYSBGdW5jdGlvbiBoYW5kbGVyOiBcXCR7ZnVuY3Rpb25OYW1lfVxcYCk7XG5cbiAgICBjb25zdCBmdW5jdGlvbkRpciA9IHBhdGguam9pbihhc3NldHNEaXIsIGZ1bmN0aW9uTmFtZSk7XG4gICAgZnMubWtkaXJTeW5jKGZ1bmN0aW9uRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgIGNvbnN0IG91dGZpbGUgPSBwYXRoLmpvaW4oZnVuY3Rpb25EaXIsICdpbmRleC5qcycpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgICBlbnRyeVBvaW50czogW2hhbmRsZXJGaWxlXSxcbiAgICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgICBtaW5pZnk6IHRydWUsXG4gICAgICAgIHBsYXRmb3JtOiAnbm9kZScsXG4gICAgICAgIHRhcmdldDogJ25vZGUxOCcsXG4gICAgICAgIG91dGZpbGUsXG4gICAgICAgIC4uLmVzYnVpbGRPcHRpb25zLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnNvbGUubG9nKFxcYFN1Y2Nlc3NmdWxseSBidW5kbGVkIFxcJHtmdW5jdGlvbk5hbWV9IHRvIFxcJHtvdXRmaWxlfVxcYCk7XG5cbiAgICAgIGNvbnN0IGNvbnN0cnVjdEZpbGVQYXRoID0gcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIG91dHB1dERpciwgXFxgXFwke2Z1bmN0aW9uTmFtZX0udHNcXGApO1xuICAgICAgY29uc3QgY29uc3RydWN0Q29kZSA9IGdlbmVyYXRlQ29uc3RydWN0Q29kZShmdW5jdGlvbk5hbWUsIHJlbGF0aXZlUGF0aCwgYmFzZUNvbnN0cnVjdEltcG9ydCwgYmFzZUNvbnN0cnVjdENsYXNzKTtcblxuICAgICAgZnMud3JpdGVGaWxlU3luYyhjb25zdHJ1Y3RGaWxlUGF0aCwgY29uc3RydWN0Q29kZSk7XG4gICAgICBjb25zb2xlLmxvZyhcXGBHZW5lcmF0ZWQgY29uc3RydWN0IGF0IFxcJHtjb25zdHJ1Y3RGaWxlUGF0aH1cXGApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxcYEVycm9yIHByb2Nlc3NpbmcgXFwke2Z1bmN0aW9uTmFtZX06XFxgLCBlcnJvcik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlQ29uc3RydWN0Q29kZShmdW5jdGlvbk5hbWU6IHN0cmluZywgaGFuZGxlclBhdGg6IHN0cmluZywgYmFzZUNvbnN0cnVjdEltcG9ydD86IHN0cmluZywgYmFzZUNvbnN0cnVjdENsYXNzPzogc3RyaW5nKSB7XG4gIGNvbnN0IGNvbnN0cnVjdE5hbWUgPSBcXGBcXCR7cGFzY2FsQ2FzZShmdW5jdGlvbk5hbWUpfUZ1bmN0aW9uXFxgO1xuXG4gIGNvbnN0IGltcG9ydFN0YXRlbWVudCA9IGJhc2VDb25zdHJ1Y3RJbXBvcnQgPz8gXCJcIjtcbiAgY29uc3QgYmFzZUNsYXNzTmFtZSA9IGJhc2VDb25zdHJ1Y3RDbGFzcyA/PyBcImF3c19sYW1iZGEuRnVuY3Rpb25cIjtcblxuICBjb25zdCB1c2VBd3NMYW1iZGFSdW50aW1lID0gIWJhc2VDb25zdHJ1Y3RDbGFzcyB8fCBiYXNlQ2xhc3NOYW1lLmluY2x1ZGVzKFwiRnVuY3Rpb25cIik7XG5cbiAgcmV0dXJuIFxcYC8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMudHMgYW5kIHJ1biBcIm5weCBwcm9qZW5cIi5cblxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tICd1cmwnO1xuXFwke2ltcG9ydFN0YXRlbWVudH1cbmltcG9ydCB7IGF3c19sYW1iZGEgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuY29uc3QgX19maWxlbmFtZSA9IGZpbGVVUkxUb1BhdGgoaW1wb3J0Lm1ldGEudXJsKTtcbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShfX2ZpbGVuYW1lKTtcblxuZXhwb3J0IGludGVyZmFjZSBcXCR7Y29uc3RydWN0TmFtZX1Qcm9wcyBleHRlbmRzIE9taXQ8XFwke2Jhc2VDbGFzc05hbWUgPT09IFwiYXdzX2xhbWJkYS5GdW5jdGlvblwiID8gXCJhd3NfbGFtYmRhLkZ1bmN0aW9uUHJvcHNcIiA6IFxcYFxcJHtiYXNlQ2xhc3NOYW1lfVByb3BzXFxgfSwgJ2NvZGUnXFwke3VzZUF3c0xhbWJkYVJ1bnRpbWUgPyBcIiB8ICdydW50aW1lJ1wiIDogXCJcIn0gfCAnaGFuZGxlcic+IHtcbiAgXFwke3VzZUF3c0xhbWJkYVJ1bnRpbWUgPyBcXGAvKipcbiAgICogT3ZlcnJpZGUgdGhlIGRlZmF1bHQgcnVudGltZVxuICAgKiBAZGVmYXVsdCBub2RlanMyMi54XG4gICAqL1xuICByZWFkb25seSBydW50aW1lPzogYXdzX2xhbWJkYS5SdW50aW1lO1xcYCA6IFwiXCJ9XG59XG5cbmV4cG9ydCBjbGFzcyBcXCR7Y29uc3RydWN0TmFtZX0gZXh0ZW5kcyBcXCR7YmFzZUNsYXNzTmFtZX0ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogXFwke2NvbnN0cnVjdE5hbWV9UHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBcXCR7dXNlQXdzTGFtYmRhUnVudGltZSA/IFwicnVudGltZTogcHJvcHMucnVudGltZSA/PyBhd3NfbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzIyX1gsXCIgOiBcIlwifVxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgY29kZTogYXdzX2xhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vLi4vYXNzZXRzL2hhbmRsZXJzL1xcJHtmdW5jdGlvbk5hbWV9JykpLFxuICAgIH0pO1xuICB9XG59XG5cXGA7XG59XG5cbm1haW4oKS5jYXRjaChlcnJvciA9PiB7XG4gIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOicsIGVycm9yKTtcbiAgcHJvY2Vzcy5leGl0KDEpO1xufSk7XG5gO1xuXG4gICAgICAgIGNvbnN0IHNyYyA9IG5ldyBTb3VyY2VDb2RlKHRoaXMucHJvamVjdCwgdGhpcy5idW5kbGVyU2NyaXB0UGF0aCk7XG4gICAgICAgIGNvbnN0IGxpbmVzID0gYnVuZGxlclNjcmlwdC5zcGxpdChcIlxcblwiKTtcbiAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICBzcmMubGluZShsaW5lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubm9kZVByb2plY3QuYWRkRGV2RGVwcyhcImVzYnVpbGRcIiwgXCJnbG9iXCIsIFwieWFyZ3NcIiwgXCJAdHlwZXMvZ2xvYlwiLCBcIkB0eXBlcy95YXJnc1wiLCBcInRzeFwiLCBcImNoYW5nZS1jYXNlXCIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkQnVuZGxlVGFza1RvV29ya2Zsb3coKSB7XG4gICAgICAgIGNvbnN0IGNvbXBpbGVUYXNrID0gdGhpcy5ub2RlUHJvamVjdC50YXNrcy50cnlGaW5kKFwiY29tcGlsZVwiKTtcblxuICAgICAgICBpZiAoY29tcGlsZVRhc2spIHtcbiAgICAgICAgICAgIGNvbnN0IHVuaXF1ZUlkID0gdGhpcy5jcmVhdGVVbmlxdWVJZCh0aGlzLnNvdXJjZURpciwgdGhpcy5maWxlUGF0dGVybik7XG4gICAgICAgICAgICBjb25zdCB0YXNrTmFtZSA9IGBnZW5lcmF0ZS1hbmQtYnVuZGxlLSR7dW5pcXVlSWR9YDtcbiAgICAgICAgICAgIGNvbnN0IGJ1bmRsZVRhc2sgPSB0aGlzLm5vZGVQcm9qZWN0LnRhc2tzLnRyeUZpbmQodGFza05hbWUpO1xuICAgICAgICAgICAgaWYgKGJ1bmRsZVRhc2spIHtcbiAgICAgICAgICAgICAgICBjb21waWxlVGFzay5wcmVwZW5kU3Bhd24oYnVuZGxlVGFzayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { IConstruct } from "constructs";
|
|
2
|
+
import { Component } from "projen/lib/component";
|
|
3
|
+
export interface LocalStackOptions {
|
|
4
|
+
readonly services?: string[];
|
|
5
|
+
readonly port?: number;
|
|
6
|
+
readonly debug?: boolean;
|
|
7
|
+
readonly imageTag?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class LocalStack extends Component {
|
|
10
|
+
constructor(scope: IConstruct, options?: LocalStackOptions);
|
|
11
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LocalStack = void 0;
|
|
4
|
+
const component_1 = require("projen/lib/component");
|
|
5
|
+
const javascript_1 = require("projen/lib/javascript");
|
|
6
|
+
const colima_1 = require("./colima");
|
|
7
|
+
const homebrew_1 = require("./homebrew");
|
|
8
|
+
class LocalStack extends component_1.Component {
|
|
9
|
+
constructor(scope, options = {}) {
|
|
10
|
+
super(scope);
|
|
11
|
+
const project = javascript_1.NodeProject.of(this);
|
|
12
|
+
if (!(project instanceof javascript_1.NodeProject)) {
|
|
13
|
+
throw new Error("LocalStack component requires a NodeProject");
|
|
14
|
+
}
|
|
15
|
+
const port = options.port ?? 4566;
|
|
16
|
+
const debug = options.debug ?? false;
|
|
17
|
+
new colima_1.Colima(project);
|
|
18
|
+
let homebrew = homebrew_1.Homebrew.of(project);
|
|
19
|
+
if (!homebrew) {
|
|
20
|
+
homebrew = new homebrew_1.Homebrew(project);
|
|
21
|
+
}
|
|
22
|
+
homebrew.addPackage("localstack");
|
|
23
|
+
const colimaTask = project.tasks.tryFind("colima");
|
|
24
|
+
const envVars = [`LOCALSTACK_PORT=${port}`, `LOCALSTACK_DEBUG=${debug ? "1" : "0"}`];
|
|
25
|
+
if (options.services) {
|
|
26
|
+
envVars.push(`SERVICES=${options.services.join(",")}`);
|
|
27
|
+
}
|
|
28
|
+
const localstackTask = project.addTask("localstack", {
|
|
29
|
+
exec: `localstack status | grep -q running || ${envVars.join(" ")} localstack start -d`,
|
|
30
|
+
});
|
|
31
|
+
if (colimaTask) {
|
|
32
|
+
localstackTask.prependSpawn(colimaTask);
|
|
33
|
+
}
|
|
34
|
+
project.addDevDeps("aws-cdk-local");
|
|
35
|
+
const testTask = project.tasks.tryFind("test");
|
|
36
|
+
if (testTask) {
|
|
37
|
+
testTask.prependSpawn(localstackTask);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.LocalStack = LocalStack;
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxzdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL2xvY2Fsc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esb0RBQWlEO0FBQ2pELHNEQUFvRDtBQUNwRCxxQ0FBa0M7QUFDbEMseUNBQXNDO0FBU3RDLE1BQWEsVUFBVyxTQUFRLHFCQUFTO0lBQ3JDLFlBQVksS0FBaUIsRUFBRSxVQUE2QixFQUFFO1FBQzFELEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUViLE1BQU0sT0FBTyxHQUFHLHdCQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxDQUFDLE9BQU8sWUFBWSx3QkFBVyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDO1FBRXJDLElBQUksZUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXBCLElBQUksUUFBUSxHQUFHLG1CQUFRLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNaLFFBQVEsR0FBRyxJQUFJLG1CQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUVELFFBQVEsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbEMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbkQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUUsb0JBQW9CLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ2pELElBQUksRUFBRSwwQ0FBMEMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCO1NBQzFGLENBQUMsQ0FBQztRQUVILElBQUksVUFBVSxFQUFFLENBQUM7WUFDYixjQUFjLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxPQUFPLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXBDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLElBQUksUUFBUSxFQUFFLENBQUM7WUFDWCxRQUFRLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUEzQ0QsZ0NBMkNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJwcm9qZW4vbGliL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgTm9kZVByb2plY3QgfSBmcm9tIFwicHJvamVuL2xpYi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBDb2xpbWEgfSBmcm9tIFwiLi9jb2xpbWFcIjtcbmltcG9ydCB7IEhvbWVicmV3IH0gZnJvbSBcIi4vaG9tZWJyZXdcIjtcblxuZXhwb3J0IGludGVyZmFjZSBMb2NhbFN0YWNrT3B0aW9ucyB7XG4gICAgcmVhZG9ubHkgc2VydmljZXM/OiBzdHJpbmdbXTtcbiAgICByZWFkb25seSBwb3J0PzogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGRlYnVnPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBpbWFnZVRhZz86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIExvY2FsU3RhY2sgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBJQ29uc3RydWN0LCBvcHRpb25zOiBMb2NhbFN0YWNrT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKHNjb3BlKTtcblxuICAgICAgICBjb25zdCBwcm9qZWN0ID0gTm9kZVByb2plY3Qub2YodGhpcyk7XG4gICAgICAgIGlmICghKHByb2plY3QgaW5zdGFuY2VvZiBOb2RlUHJvamVjdCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxvY2FsU3RhY2sgY29tcG9uZW50IHJlcXVpcmVzIGEgTm9kZVByb2plY3RcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb3J0ID0gb3B0aW9ucy5wb3J0ID8/IDQ1NjY7XG4gICAgICAgIGNvbnN0IGRlYnVnID0gb3B0aW9ucy5kZWJ1ZyA/PyBmYWxzZTtcblxuICAgICAgICBuZXcgQ29saW1hKHByb2plY3QpO1xuXG4gICAgICAgIGxldCBob21lYnJldyA9IEhvbWVicmV3Lm9mKHByb2plY3QpO1xuICAgICAgICBpZiAoIWhvbWVicmV3KSB7XG4gICAgICAgICAgICBob21lYnJldyA9IG5ldyBIb21lYnJldyhwcm9qZWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGhvbWVicmV3LmFkZFBhY2thZ2UoXCJsb2NhbHN0YWNrXCIpO1xuXG4gICAgICAgIGNvbnN0IGNvbGltYVRhc2sgPSBwcm9qZWN0LnRhc2tzLnRyeUZpbmQoXCJjb2xpbWFcIik7XG5cbiAgICAgICAgY29uc3QgZW52VmFycyA9IFtgTE9DQUxTVEFDS19QT1JUPSR7cG9ydH1gLCBgTE9DQUxTVEFDS19ERUJVRz0ke2RlYnVnID8gXCIxXCIgOiBcIjBcIn1gXTtcbiAgICAgICAgaWYgKG9wdGlvbnMuc2VydmljZXMpIHtcbiAgICAgICAgICAgIGVudlZhcnMucHVzaChgU0VSVklDRVM9JHtvcHRpb25zLnNlcnZpY2VzLmpvaW4oXCIsXCIpfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbG9jYWxzdGFja1Rhc2sgPSBwcm9qZWN0LmFkZFRhc2soXCJsb2NhbHN0YWNrXCIsIHtcbiAgICAgICAgICAgIGV4ZWM6IGBsb2NhbHN0YWNrIHN0YXR1cyB8IGdyZXAgLXEgcnVubmluZyB8fCAke2VudlZhcnMuam9pbihcIiBcIil9IGxvY2Fsc3RhY2sgc3RhcnQgLWRgLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoY29saW1hVGFzaykge1xuICAgICAgICAgICAgbG9jYWxzdGFja1Rhc2sucHJlcGVuZFNwYXduKGNvbGltYVRhc2spO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvamVjdC5hZGREZXZEZXBzKFwiYXdzLWNkay1sb2NhbFwiKTtcblxuICAgICAgICBjb25zdCB0ZXN0VGFzayA9IHByb2plY3QudGFza3MudHJ5RmluZChcInRlc3RcIik7XG4gICAgICAgIGlmICh0ZXN0VGFzaykge1xuICAgICAgICAgICAgdGVzdFRhc2sucHJlcGVuZFNwYXduKGxvY2Fsc3RhY2tUYXNrKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export interface TypeDocConfiguration {
|
|
2
|
+
readonly entryPoints?: string[];
|
|
3
|
+
readonly entryPointStrategy?: EntryPointStrategy;
|
|
4
|
+
readonly exclude?: string[];
|
|
5
|
+
readonly excludeExternals?: boolean;
|
|
6
|
+
readonly excludePrivate?: boolean;
|
|
7
|
+
readonly excludeProtected?: boolean;
|
|
8
|
+
readonly excludeInternal?: boolean;
|
|
9
|
+
readonly out?: string;
|
|
10
|
+
readonly json?: string;
|
|
11
|
+
readonly theme?: string;
|
|
12
|
+
readonly basePath?: string;
|
|
13
|
+
readonly name?: string;
|
|
14
|
+
readonly cleanOutputDir?: boolean;
|
|
15
|
+
readonly includes?: string;
|
|
16
|
+
readonly media?: string;
|
|
17
|
+
readonly tsBuildInfo?: string;
|
|
18
|
+
readonly tsconfig?: string;
|
|
19
|
+
readonly logLevel?: LogLevel;
|
|
20
|
+
readonly sort?: string[];
|
|
21
|
+
readonly sortEntryPoints?: boolean;
|
|
22
|
+
readonly commentStyle?: CommentStyle;
|
|
23
|
+
readonly defaultVisibility?: Visibility;
|
|
24
|
+
readonly defaultCategory?: string;
|
|
25
|
+
readonly defaultGroup?: string;
|
|
26
|
+
readonly categorizeByGroup?: boolean;
|
|
27
|
+
readonly searchGroupBoosts?: Record<string, number>;
|
|
28
|
+
readonly searchCategoryBoosts?: Record<string, number>;
|
|
29
|
+
readonly readme?: string;
|
|
30
|
+
readonly packageJson?: string;
|
|
31
|
+
readonly gitRevision?: string;
|
|
32
|
+
readonly gitRemote?: string;
|
|
33
|
+
readonly sourceLinkTemplate?: string;
|
|
34
|
+
readonly disableSources?: boolean;
|
|
35
|
+
readonly disableGit?: boolean;
|
|
36
|
+
readonly hideGenerator?: boolean;
|
|
37
|
+
readonly hideParameterTypesInTitle?: boolean;
|
|
38
|
+
readonly cacheBust?: boolean;
|
|
39
|
+
readonly searchInComments?: boolean;
|
|
40
|
+
readonly searchInDocuments?: boolean;
|
|
41
|
+
readonly validation?: ValidationOptions;
|
|
42
|
+
readonly requiredToBeDocumented?: string[];
|
|
43
|
+
readonly treatWarningsAsErrors?: boolean;
|
|
44
|
+
readonly treatValidationWarningsAsErrors?: boolean;
|
|
45
|
+
readonly intentionallyNotExported?: string[];
|
|
46
|
+
readonly externalPattern?: string[];
|
|
47
|
+
readonly externalSymbolLinkMappings?: Record<string, Record<string, string>>;
|
|
48
|
+
}
|
|
49
|
+
export declare function toJson_TypeDocConfiguration(obj: TypeDocConfiguration | undefined): Record<string, unknown> | undefined;
|
|
50
|
+
export declare enum EntryPointStrategy {
|
|
51
|
+
RESOLVE = "resolve",
|
|
52
|
+
EXPAND = "expand",
|
|
53
|
+
PACKAGES = "packages",
|
|
54
|
+
MERGE = "merge"
|
|
55
|
+
}
|
|
56
|
+
export declare enum LogLevel {
|
|
57
|
+
VERBOSE = "Verbose",
|
|
58
|
+
INFO = "Info",
|
|
59
|
+
WARN = "Warn",
|
|
60
|
+
ERROR = "Error",
|
|
61
|
+
NONE = "None"
|
|
62
|
+
}
|
|
63
|
+
export declare enum CommentStyle {
|
|
64
|
+
JSDOC = "jsdoc",
|
|
65
|
+
BLOCK = "block",
|
|
66
|
+
LINE = "line",
|
|
67
|
+
ALL = "all"
|
|
68
|
+
}
|
|
69
|
+
export declare enum Visibility {
|
|
70
|
+
PUBLIC = "public",
|
|
71
|
+
PROTECTED = "protected",
|
|
72
|
+
PRIVATE = "private"
|
|
73
|
+
}
|
|
74
|
+
export interface ValidationOptions {
|
|
75
|
+
readonly notExported?: boolean;
|
|
76
|
+
readonly notDocumented?: boolean;
|
|
77
|
+
readonly invalidLink?: boolean;
|
|
78
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Visibility = exports.CommentStyle = exports.LogLevel = exports.EntryPointStrategy = void 0;
|
|
4
|
+
exports.toJson_TypeDocConfiguration = toJson_TypeDocConfiguration;
|
|
5
|
+
function toJson_TypeDocConfiguration(obj) {
|
|
6
|
+
if (obj === undefined) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
const result = {
|
|
10
|
+
entryPoints: obj.entryPoints,
|
|
11
|
+
entryPointStrategy: obj.entryPointStrategy,
|
|
12
|
+
exclude: obj.exclude,
|
|
13
|
+
excludeExternals: obj.excludeExternals,
|
|
14
|
+
excludePrivate: obj.excludePrivate,
|
|
15
|
+
excludeProtected: obj.excludeProtected,
|
|
16
|
+
excludeInternal: obj.excludeInternal,
|
|
17
|
+
out: obj.out,
|
|
18
|
+
json: obj.json,
|
|
19
|
+
theme: obj.theme,
|
|
20
|
+
basePath: obj.basePath,
|
|
21
|
+
name: obj.name,
|
|
22
|
+
cleanOutputDir: obj.cleanOutputDir,
|
|
23
|
+
includes: obj.includes,
|
|
24
|
+
media: obj.media,
|
|
25
|
+
tsBuildInfo: obj.tsBuildInfo,
|
|
26
|
+
tsconfig: obj.tsconfig,
|
|
27
|
+
logLevel: obj.logLevel,
|
|
28
|
+
sort: obj.sort,
|
|
29
|
+
sortEntryPoints: obj.sortEntryPoints,
|
|
30
|
+
commentStyle: obj.commentStyle,
|
|
31
|
+
defaultVisibility: obj.defaultVisibility,
|
|
32
|
+
defaultCategory: obj.defaultCategory,
|
|
33
|
+
defaultGroup: obj.defaultGroup,
|
|
34
|
+
categorizeByGroup: obj.categorizeByGroup,
|
|
35
|
+
searchGroupBoosts: obj.searchGroupBoosts,
|
|
36
|
+
searchCategoryBoosts: obj.searchCategoryBoosts,
|
|
37
|
+
readme: obj.readme,
|
|
38
|
+
packageJson: obj.packageJson,
|
|
39
|
+
gitRevision: obj.gitRevision,
|
|
40
|
+
gitRemote: obj.gitRemote,
|
|
41
|
+
sourceLinkTemplate: obj.sourceLinkTemplate,
|
|
42
|
+
disableSources: obj.disableSources,
|
|
43
|
+
disableGit: obj.disableGit,
|
|
44
|
+
hideGenerator: obj.hideGenerator,
|
|
45
|
+
hideParameterTypesInTitle: obj.hideParameterTypesInTitle,
|
|
46
|
+
cacheBust: obj.cacheBust,
|
|
47
|
+
searchInComments: obj.searchInComments,
|
|
48
|
+
searchInDocuments: obj.searchInDocuments,
|
|
49
|
+
validation: obj.validation,
|
|
50
|
+
requiredToBeDocumented: obj.requiredToBeDocumented,
|
|
51
|
+
treatWarningsAsErrors: obj.treatWarningsAsErrors,
|
|
52
|
+
treatValidationWarningsAsErrors: obj.treatValidationWarningsAsErrors,
|
|
53
|
+
intentionallyNotExported: obj.intentionallyNotExported,
|
|
54
|
+
externalPattern: obj.externalPattern,
|
|
55
|
+
externalSymbolLinkMappings: obj.externalSymbolLinkMappings,
|
|
56
|
+
};
|
|
57
|
+
const filtered = {};
|
|
58
|
+
for (const [key, value] of Object.entries(result)) {
|
|
59
|
+
if (value !== undefined) {
|
|
60
|
+
filtered[key] = value;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return filtered;
|
|
64
|
+
}
|
|
65
|
+
var EntryPointStrategy;
|
|
66
|
+
(function (EntryPointStrategy) {
|
|
67
|
+
EntryPointStrategy["RESOLVE"] = "resolve";
|
|
68
|
+
EntryPointStrategy["EXPAND"] = "expand";
|
|
69
|
+
EntryPointStrategy["PACKAGES"] = "packages";
|
|
70
|
+
EntryPointStrategy["MERGE"] = "merge";
|
|
71
|
+
})(EntryPointStrategy || (exports.EntryPointStrategy = EntryPointStrategy = {}));
|
|
72
|
+
var LogLevel;
|
|
73
|
+
(function (LogLevel) {
|
|
74
|
+
LogLevel["VERBOSE"] = "Verbose";
|
|
75
|
+
LogLevel["INFO"] = "Info";
|
|
76
|
+
LogLevel["WARN"] = "Warn";
|
|
77
|
+
LogLevel["ERROR"] = "Error";
|
|
78
|
+
LogLevel["NONE"] = "None";
|
|
79
|
+
})(LogLevel || (exports.LogLevel = LogLevel = {}));
|
|
80
|
+
var CommentStyle;
|
|
81
|
+
(function (CommentStyle) {
|
|
82
|
+
CommentStyle["JSDOC"] = "jsdoc";
|
|
83
|
+
CommentStyle["BLOCK"] = "block";
|
|
84
|
+
CommentStyle["LINE"] = "line";
|
|
85
|
+
CommentStyle["ALL"] = "all";
|
|
86
|
+
})(CommentStyle || (exports.CommentStyle = CommentStyle = {}));
|
|
87
|
+
var Visibility;
|
|
88
|
+
(function (Visibility) {
|
|
89
|
+
Visibility["PUBLIC"] = "public";
|
|
90
|
+
Visibility["PROTECTED"] = "protected";
|
|
91
|
+
Visibility["PRIVATE"] = "private";
|
|
92
|
+
})(Visibility || (exports.Visibility = Visibility = {}));
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWRvYy1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy90eXBlZG9jLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpREEsa0VBNkRDO0FBN0RELFNBQWdCLDJCQUEyQixDQUN2QyxHQUFxQztJQUVyQyxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNwQixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQTRCO1FBQ3BDLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVztRQUM1QixrQkFBa0IsRUFBRSxHQUFHLENBQUMsa0JBQWtCO1FBQzFDLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztRQUNwQixnQkFBZ0IsRUFBRSxHQUFHLENBQUMsZ0JBQWdCO1FBQ3RDLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztRQUNsQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsZ0JBQWdCO1FBQ3RDLGVBQWUsRUFBRSxHQUFHLENBQUMsZUFBZTtRQUNwQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUc7UUFDWixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDZCxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7UUFDaEIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1FBQ3RCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNkLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztRQUNsQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7UUFDdEIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1FBQ2hCLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVztRQUM1QixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7UUFDdEIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1FBQ3RCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNkLGVBQWUsRUFBRSxHQUFHLENBQUMsZUFBZTtRQUNwQyxZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7UUFDOUIsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLGlCQUFpQjtRQUN4QyxlQUFlLEVBQUUsR0FBRyxDQUFDLGVBQWU7UUFDcEMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZO1FBQzlCLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxpQkFBaUI7UUFDeEMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLGlCQUFpQjtRQUN4QyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsb0JBQW9CO1FBQzlDLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtRQUNsQixXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVc7UUFDNUIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXO1FBQzVCLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztRQUN4QixrQkFBa0IsRUFBRSxHQUFHLENBQUMsa0JBQWtCO1FBQzFDLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztRQUNsQyxVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVU7UUFDMUIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhO1FBQ2hDLHlCQUF5QixFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7UUFDeEQsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO1FBQ3hCLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxnQkFBZ0I7UUFDdEMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLGlCQUFpQjtRQUN4QyxVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVU7UUFDMUIsc0JBQXNCLEVBQUUsR0FBRyxDQUFDLHNCQUFzQjtRQUNsRCxxQkFBcUIsRUFBRSxHQUFHLENBQUMscUJBQXFCO1FBQ2hELCtCQUErQixFQUFFLEdBQUcsQ0FBQywrQkFBK0I7UUFDcEUsd0JBQXdCLEVBQUUsR0FBRyxDQUFDLHdCQUF3QjtRQUN0RCxlQUFlLEVBQUUsR0FBRyxDQUFDLGVBQWU7UUFDcEMsMEJBQTBCLEVBQUUsR0FBRyxDQUFDLDBCQUEwQjtLQUM3RCxDQUFDO0lBQ0YsTUFBTSxRQUFRLEdBQTRCLEVBQUUsQ0FBQztJQUM3QyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ2hELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDMUIsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDO0FBRUQsSUFBWSxrQkFLWDtBQUxELFdBQVksa0JBQWtCO0lBQzFCLHlDQUFtQixDQUFBO0lBQ25CLHVDQUFpQixDQUFBO0lBQ2pCLDJDQUFxQixDQUFBO0lBQ3JCLHFDQUFlLENBQUE7QUFDbkIsQ0FBQyxFQUxXLGtCQUFrQixrQ0FBbEIsa0JBQWtCLFFBSzdCO0FBRUQsSUFBWSxRQU1YO0FBTkQsV0FBWSxRQUFRO0lBQ2hCLCtCQUFtQixDQUFBO0lBQ25CLHlCQUFhLENBQUE7SUFDYix5QkFBYSxDQUFBO0lBQ2IsMkJBQWUsQ0FBQTtJQUNmLHlCQUFhLENBQUE7QUFDakIsQ0FBQyxFQU5XLFFBQVEsd0JBQVIsUUFBUSxRQU1uQjtBQUVELElBQVksWUFLWDtBQUxELFdBQVksWUFBWTtJQUNwQiwrQkFBZSxDQUFBO0lBQ2YsK0JBQWUsQ0FBQTtJQUNmLDZCQUFhLENBQUE7SUFDYiwyQkFBVyxDQUFBO0FBQ2YsQ0FBQyxFQUxXLFlBQVksNEJBQVosWUFBWSxRQUt2QjtBQUVELElBQVksVUFJWDtBQUpELFdBQVksVUFBVTtJQUNsQiwrQkFBaUIsQ0FBQTtJQUNqQixxQ0FBdUIsQ0FBQTtJQUN2QixpQ0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBSlcsVUFBVSwwQkFBVixVQUFVLFFBSXJCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBUeXBlRG9jQ29uZmlndXJhdGlvbiB7XG4gICAgcmVhZG9ubHkgZW50cnlQb2ludHM/OiBzdHJpbmdbXTtcbiAgICByZWFkb25seSBlbnRyeVBvaW50U3RyYXRlZ3k/OiBFbnRyeVBvaW50U3RyYXRlZ3k7XG4gICAgcmVhZG9ubHkgZXhjbHVkZT86IHN0cmluZ1tdO1xuICAgIHJlYWRvbmx5IGV4Y2x1ZGVFeHRlcm5hbHM/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IGV4Y2x1ZGVQcml2YXRlPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBleGNsdWRlUHJvdGVjdGVkPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBleGNsdWRlSW50ZXJuYWw/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IG91dD86IHN0cmluZztcbiAgICByZWFkb25seSBqc29uPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHRoZW1lPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGJhc2VQYXRoPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgY2xlYW5PdXRwdXREaXI/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IGluY2x1ZGVzPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG1lZGlhPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHRzQnVpbGRJbmZvPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHRzY29uZmlnPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGxvZ0xldmVsPzogTG9nTGV2ZWw7XG4gICAgcmVhZG9ubHkgc29ydD86IHN0cmluZ1tdO1xuICAgIHJlYWRvbmx5IHNvcnRFbnRyeVBvaW50cz86IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgY29tbWVudFN0eWxlPzogQ29tbWVudFN0eWxlO1xuICAgIHJlYWRvbmx5IGRlZmF1bHRWaXNpYmlsaXR5PzogVmlzaWJpbGl0eTtcbiAgICByZWFkb25seSBkZWZhdWx0Q2F0ZWdvcnk/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgZGVmYXVsdEdyb3VwPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGNhdGVnb3JpemVCeUdyb3VwPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBzZWFyY2hHcm91cEJvb3N0cz86IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gICAgcmVhZG9ubHkgc2VhcmNoQ2F0ZWdvcnlCb29zdHM/OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICAgIHJlYWRvbmx5IHJlYWRtZT86IHN0cmluZztcbiAgICByZWFkb25seSBwYWNrYWdlSnNvbj86IHN0cmluZztcbiAgICByZWFkb25seSBnaXRSZXZpc2lvbj86IHN0cmluZztcbiAgICByZWFkb25seSBnaXRSZW1vdGU/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgc291cmNlTGlua1RlbXBsYXRlPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGRpc2FibGVTb3VyY2VzPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBkaXNhYmxlR2l0PzogYm9vbGVhbjtcbiAgICByZWFkb25seSBoaWRlR2VuZXJhdG9yPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBoaWRlUGFyYW1ldGVyVHlwZXNJblRpdGxlPzogYm9vbGVhbjtcbiAgICByZWFkb25seSBjYWNoZUJ1c3Q/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IHNlYXJjaEluQ29tbWVudHM/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IHNlYXJjaEluRG9jdW1lbnRzPzogYm9vbGVhbjtcbiAgICByZWFkb25seSB2YWxpZGF0aW9uPzogVmFsaWRhdGlvbk9wdGlvbnM7XG4gICAgcmVhZG9ubHkgcmVxdWlyZWRUb0JlRG9jdW1lbnRlZD86IHN0cmluZ1tdO1xuICAgIHJlYWRvbmx5IHRyZWF0V2FybmluZ3NBc0Vycm9ycz86IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgdHJlYXRWYWxpZGF0aW9uV2FybmluZ3NBc0Vycm9ycz86IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgaW50ZW50aW9uYWxseU5vdEV4cG9ydGVkPzogc3RyaW5nW107XG4gICAgcmVhZG9ubHkgZXh0ZXJuYWxQYXR0ZXJuPzogc3RyaW5nW107XG4gICAgcmVhZG9ubHkgZXh0ZXJuYWxTeW1ib2xMaW5rTWFwcGluZ3M/OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9UeXBlRG9jQ29uZmlndXJhdGlvbihcbiAgICBvYmo6IFR5cGVEb2NDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQge1xuICAgIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAgICBlbnRyeVBvaW50czogb2JqLmVudHJ5UG9pbnRzLFxuICAgICAgICBlbnRyeVBvaW50U3RyYXRlZ3k6IG9iai5lbnRyeVBvaW50U3RyYXRlZ3ksXG4gICAgICAgIGV4Y2x1ZGU6IG9iai5leGNsdWRlLFxuICAgICAgICBleGNsdWRlRXh0ZXJuYWxzOiBvYmouZXhjbHVkZUV4dGVybmFscyxcbiAgICAgICAgZXhjbHVkZVByaXZhdGU6IG9iai5leGNsdWRlUHJpdmF0ZSxcbiAgICAgICAgZXhjbHVkZVByb3RlY3RlZDogb2JqLmV4Y2x1ZGVQcm90ZWN0ZWQsXG4gICAgICAgIGV4Y2x1ZGVJbnRlcm5hbDogb2JqLmV4Y2x1ZGVJbnRlcm5hbCxcbiAgICAgICAgb3V0OiBvYmoub3V0LFxuICAgICAgICBqc29uOiBvYmouanNvbixcbiAgICAgICAgdGhlbWU6IG9iai50aGVtZSxcbiAgICAgICAgYmFzZVBhdGg6IG9iai5iYXNlUGF0aCxcbiAgICAgICAgbmFtZTogb2JqLm5hbWUsXG4gICAgICAgIGNsZWFuT3V0cHV0RGlyOiBvYmouY2xlYW5PdXRwdXREaXIsXG4gICAgICAgIGluY2x1ZGVzOiBvYmouaW5jbHVkZXMsXG4gICAgICAgIG1lZGlhOiBvYmoubWVkaWEsXG4gICAgICAgIHRzQnVpbGRJbmZvOiBvYmoudHNCdWlsZEluZm8sXG4gICAgICAgIHRzY29uZmlnOiBvYmoudHNjb25maWcsXG4gICAgICAgIGxvZ0xldmVsOiBvYmoubG9nTGV2ZWwsXG4gICAgICAgIHNvcnQ6IG9iai5zb3J0LFxuICAgICAgICBzb3J0RW50cnlQb2ludHM6IG9iai5zb3J0RW50cnlQb2ludHMsXG4gICAgICAgIGNvbW1lbnRTdHlsZTogb2JqLmNvbW1lbnRTdHlsZSxcbiAgICAgICAgZGVmYXVsdFZpc2liaWxpdHk6IG9iai5kZWZhdWx0VmlzaWJpbGl0eSxcbiAgICAgICAgZGVmYXVsdENhdGVnb3J5OiBvYmouZGVmYXVsdENhdGVnb3J5LFxuICAgICAgICBkZWZhdWx0R3JvdXA6IG9iai5kZWZhdWx0R3JvdXAsXG4gICAgICAgIGNhdGVnb3JpemVCeUdyb3VwOiBvYmouY2F0ZWdvcml6ZUJ5R3JvdXAsXG4gICAgICAgIHNlYXJjaEdyb3VwQm9vc3RzOiBvYmouc2VhcmNoR3JvdXBCb29zdHMsXG4gICAgICAgIHNlYXJjaENhdGVnb3J5Qm9vc3RzOiBvYmouc2VhcmNoQ2F0ZWdvcnlCb29zdHMsXG4gICAgICAgIHJlYWRtZTogb2JqLnJlYWRtZSxcbiAgICAgICAgcGFja2FnZUpzb246IG9iai5wYWNrYWdlSnNvbixcbiAgICAgICAgZ2l0UmV2aXNpb246IG9iai5naXRSZXZpc2lvbixcbiAgICAgICAgZ2l0UmVtb3RlOiBvYmouZ2l0UmVtb3RlLFxuICAgICAgICBzb3VyY2VMaW5rVGVtcGxhdGU6IG9iai5zb3VyY2VMaW5rVGVtcGxhdGUsXG4gICAgICAgIGRpc2FibGVTb3VyY2VzOiBvYmouZGlzYWJsZVNvdXJjZXMsXG4gICAgICAgIGRpc2FibGVHaXQ6IG9iai5kaXNhYmxlR2l0LFxuICAgICAgICBoaWRlR2VuZXJhdG9yOiBvYmouaGlkZUdlbmVyYXRvcixcbiAgICAgICAgaGlkZVBhcmFtZXRlclR5cGVzSW5UaXRsZTogb2JqLmhpZGVQYXJhbWV0ZXJUeXBlc0luVGl0bGUsXG4gICAgICAgIGNhY2hlQnVzdDogb2JqLmNhY2hlQnVzdCxcbiAgICAgICAgc2VhcmNoSW5Db21tZW50czogb2JqLnNlYXJjaEluQ29tbWVudHMsXG4gICAgICAgIHNlYXJjaEluRG9jdW1lbnRzOiBvYmouc2VhcmNoSW5Eb2N1bWVudHMsXG4gICAgICAgIHZhbGlkYXRpb246IG9iai52YWxpZGF0aW9uLFxuICAgICAgICByZXF1aXJlZFRvQmVEb2N1bWVudGVkOiBvYmoucmVxdWlyZWRUb0JlRG9jdW1lbnRlZCxcbiAgICAgICAgdHJlYXRXYXJuaW5nc0FzRXJyb3JzOiBvYmoudHJlYXRXYXJuaW5nc0FzRXJyb3JzLFxuICAgICAgICB0cmVhdFZhbGlkYXRpb25XYXJuaW5nc0FzRXJyb3JzOiBvYmoudHJlYXRWYWxpZGF0aW9uV2FybmluZ3NBc0Vycm9ycyxcbiAgICAgICAgaW50ZW50aW9uYWxseU5vdEV4cG9ydGVkOiBvYmouaW50ZW50aW9uYWxseU5vdEV4cG9ydGVkLFxuICAgICAgICBleHRlcm5hbFBhdHRlcm46IG9iai5leHRlcm5hbFBhdHRlcm4sXG4gICAgICAgIGV4dGVybmFsU3ltYm9sTGlua01hcHBpbmdzOiBvYmouZXh0ZXJuYWxTeW1ib2xMaW5rTWFwcGluZ3MsXG4gICAgfTtcbiAgICBjb25zdCBmaWx0ZXJlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZXN1bHQpKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmaWx0ZXJlZFtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcmVkO1xufVxuXG5leHBvcnQgZW51bSBFbnRyeVBvaW50U3RyYXRlZ3kge1xuICAgIFJFU09MVkUgPSBcInJlc29sdmVcIixcbiAgICBFWFBBTkQgPSBcImV4cGFuZFwiLFxuICAgIFBBQ0tBR0VTID0gXCJwYWNrYWdlc1wiLFxuICAgIE1FUkdFID0gXCJtZXJnZVwiLFxufVxuXG5leHBvcnQgZW51bSBMb2dMZXZlbCB7XG4gICAgVkVSQk9TRSA9IFwiVmVyYm9zZVwiLFxuICAgIElORk8gPSBcIkluZm9cIixcbiAgICBXQVJOID0gXCJXYXJuXCIsXG4gICAgRVJST1IgPSBcIkVycm9yXCIsXG4gICAgTk9ORSA9IFwiTm9uZVwiLFxufVxuXG5leHBvcnQgZW51bSBDb21tZW50U3R5bGUge1xuICAgIEpTRE9DID0gXCJqc2RvY1wiLFxuICAgIEJMT0NLID0gXCJibG9ja1wiLFxuICAgIExJTkUgPSBcImxpbmVcIixcbiAgICBBTEwgPSBcImFsbFwiLFxufVxuXG5leHBvcnQgZW51bSBWaXNpYmlsaXR5IHtcbiAgICBQVUJMSUMgPSBcInB1YmxpY1wiLFxuICAgIFBST1RFQ1RFRCA9IFwicHJvdGVjdGVkXCIsXG4gICAgUFJJVkFURSA9IFwicHJpdmF0ZVwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25PcHRpb25zIHtcbiAgICByZWFkb25seSBub3RFeHBvcnRlZD86IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgbm90RG9jdW1lbnRlZD86IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgaW52YWxpZExpbms/OiBib29sZWFuO1xufVxuIl19
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Component } from "projen/lib/component";
|
|
2
|
+
import type { NodeProject } from "projen/lib/javascript/node-project";
|
|
3
|
+
import { JsonFile } from "projen/lib/json";
|
|
4
|
+
import type { Project } from "projen/lib/project";
|
|
5
|
+
import type { Task } from "projen/lib/task";
|
|
6
|
+
import { type TypeDocConfiguration } from "./typedoc-config";
|
|
7
|
+
export interface TypeDocOptions {
|
|
8
|
+
readonly version?: string;
|
|
9
|
+
readonly typeDocConfig?: TypeDocConfiguration;
|
|
10
|
+
}
|
|
11
|
+
export declare class TypeDoc extends Component {
|
|
12
|
+
static of(project: Project): TypeDoc | undefined;
|
|
13
|
+
private readonly typeDocConfiguration;
|
|
14
|
+
readonly task: Task;
|
|
15
|
+
readonly file: JsonFile;
|
|
16
|
+
constructor(project: NodeProject, options?: TypeDocOptions);
|
|
17
|
+
}
|
|
18
|
+
export * from "./typedoc-config";
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.TypeDoc = void 0;
|
|
18
|
+
const component_1 = require("projen/lib/component");
|
|
19
|
+
const json_1 = require("projen/lib/json");
|
|
20
|
+
const util_1 = require("projen/lib/util");
|
|
21
|
+
const typedoc_config_1 = require("./typedoc-config");
|
|
22
|
+
const DEFAULT_CONFIG = {
|
|
23
|
+
entryPointStrategy: typedoc_config_1.EntryPointStrategy.EXPAND,
|
|
24
|
+
out: "docs/api",
|
|
25
|
+
exclude: ["**/*.test.ts"],
|
|
26
|
+
excludePrivate: true,
|
|
27
|
+
disableSources: true,
|
|
28
|
+
};
|
|
29
|
+
class TypeDoc extends component_1.Component {
|
|
30
|
+
static of(project) {
|
|
31
|
+
const isTypeDoc = (c) => c instanceof TypeDoc;
|
|
32
|
+
return project.components.find(isTypeDoc);
|
|
33
|
+
}
|
|
34
|
+
constructor(project, options = {}) {
|
|
35
|
+
super(project);
|
|
36
|
+
const typedoc = "typedoc";
|
|
37
|
+
project.addDevDeps(`${typedoc}@${options.version ?? "^0.28"}`);
|
|
38
|
+
this.typeDocConfiguration = (0, util_1.deepMerge)([(0, typedoc_config_1.toJson_TypeDocConfiguration)(DEFAULT_CONFIG), (0, typedoc_config_1.toJson_TypeDocConfiguration)(options.typeDocConfig ?? {})], { mergeArrays: true });
|
|
39
|
+
this.file = new json_1.JsonFile(this, "typedoc.jsonc", {
|
|
40
|
+
obj: this.typeDocConfiguration,
|
|
41
|
+
allowComments: true,
|
|
42
|
+
marker: true,
|
|
43
|
+
readonly: false,
|
|
44
|
+
});
|
|
45
|
+
this.task = project.addTask("typedoc", {
|
|
46
|
+
description: "Generate TypeDoc documentation",
|
|
47
|
+
steps: [
|
|
48
|
+
{
|
|
49
|
+
exec: "typedoc",
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
});
|
|
53
|
+
project.testTask.spawn(this.task);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.TypeDoc = TypeDoc;
|
|
57
|
+
__exportStar(require("./typedoc-config"), exports);
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWRvYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3R5cGVkb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBaUQ7QUFFakQsMENBQTJDO0FBRzNDLDBDQUE0QztBQUM1QyxxREFBOEc7QUFFOUcsTUFBTSxjQUFjLEdBQXlCO0lBQ3pDLGtCQUFrQixFQUFFLG1DQUFrQixDQUFDLE1BQU07SUFDN0MsR0FBRyxFQUFFLFVBQVU7SUFDZixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7SUFDekIsY0FBYyxFQUFFLElBQUk7SUFDcEIsY0FBYyxFQUFFLElBQUk7Q0FDdkIsQ0FBQztBQU9GLE1BQWEsT0FBUSxTQUFRLHFCQUFTO0lBQzNCLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBZ0I7UUFDN0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFZLEVBQWdCLEVBQUUsQ0FBQyxDQUFDLFlBQVksT0FBTyxDQUFDO1FBQ3ZFLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQU1ELFlBQVksT0FBb0IsRUFBRSxVQUEwQixFQUFFO1FBQzFELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUMxQixPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQztRQUUvRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBQSxnQkFBUyxFQUNqQyxDQUFDLElBQUEsNENBQTJCLEVBQUMsY0FBYyxDQUFDLEVBQUUsSUFBQSw0Q0FBMkIsRUFBQyxPQUFPLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQ3ZHLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUN4QixDQUFDO1FBRUYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLGVBQVEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO1lBQzVDLEdBQUcsRUFBRSxJQUFJLENBQUMsb0JBQW9CO1lBQzlCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUSxFQUFFLEtBQUs7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUNuQyxXQUFXLEVBQUUsZ0NBQWdDO1lBQzdDLEtBQUssRUFBRTtnQkFDSDtvQkFDSSxJQUFJLEVBQUUsU0FBUztpQkFDbEI7YUFDSjtTQUNKLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0NBQ0o7QUF0Q0QsMEJBc0NDO0FBRUQsbURBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcInByb2plbi9saWIvY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IE5vZGVQcm9qZWN0IH0gZnJvbSBcInByb2plbi9saWIvamF2YXNjcmlwdC9ub2RlLXByb2plY3RcIjtcbmltcG9ydCB7IEpzb25GaWxlIH0gZnJvbSBcInByb2plbi9saWIvanNvblwiO1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSBcInByb2plbi9saWIvcHJvamVjdFwiO1xuaW1wb3J0IHR5cGUgeyBUYXNrIH0gZnJvbSBcInByb2plbi9saWIvdGFza1wiO1xuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSBcInByb2plbi9saWIvdXRpbFwiO1xuaW1wb3J0IHsgRW50cnlQb2ludFN0cmF0ZWd5LCB0eXBlIFR5cGVEb2NDb25maWd1cmF0aW9uLCB0b0pzb25fVHlwZURvY0NvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi90eXBlZG9jLWNvbmZpZ1wiO1xuXG5jb25zdCBERUZBVUxUX0NPTkZJRzogVHlwZURvY0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgZW50cnlQb2ludFN0cmF0ZWd5OiBFbnRyeVBvaW50U3RyYXRlZ3kuRVhQQU5ELFxuICAgIG91dDogXCJkb2NzL2FwaVwiLFxuICAgIGV4Y2x1ZGU6IFtcIioqLyoudGVzdC50c1wiXSxcbiAgICBleGNsdWRlUHJpdmF0ZTogdHJ1ZSxcbiAgICBkaXNhYmxlU291cmNlczogdHJ1ZSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZURvY09wdGlvbnMge1xuICAgIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgdHlwZURvY0NvbmZpZz86IFR5cGVEb2NDb25maWd1cmF0aW9uO1xufVxuXG5leHBvcnQgY2xhc3MgVHlwZURvYyBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcHVibGljIHN0YXRpYyBvZihwcm9qZWN0OiBQcm9qZWN0KTogVHlwZURvYyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGlzVHlwZURvYyA9IChjOiBDb21wb25lbnQpOiBjIGlzIFR5cGVEb2MgPT4gYyBpbnN0YW5jZW9mIFR5cGVEb2M7XG4gICAgICAgIHJldHVybiBwcm9qZWN0LmNvbXBvbmVudHMuZmluZChpc1R5cGVEb2MpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHlwZURvY0NvbmZpZ3VyYXRpb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHB1YmxpYyByZWFkb25seSB0YXNrOiBUYXNrO1xuICAgIHB1YmxpYyByZWFkb25seSBmaWxlOiBKc29uRmlsZTtcblxuICAgIGNvbnN0cnVjdG9yKHByb2plY3Q6IE5vZGVQcm9qZWN0LCBvcHRpb25zOiBUeXBlRG9jT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgICAgIGNvbnN0IHR5cGVkb2MgPSBcInR5cGVkb2NcIjtcbiAgICAgICAgcHJvamVjdC5hZGREZXZEZXBzKGAke3R5cGVkb2N9QCR7b3B0aW9ucy52ZXJzaW9uID8/IFwiXjAuMjhcIn1gKTtcblxuICAgICAgICB0aGlzLnR5cGVEb2NDb25maWd1cmF0aW9uID0gZGVlcE1lcmdlKFxuICAgICAgICAgICAgW3RvSnNvbl9UeXBlRG9jQ29uZmlndXJhdGlvbihERUZBVUxUX0NPTkZJRyksIHRvSnNvbl9UeXBlRG9jQ29uZmlndXJhdGlvbihvcHRpb25zLnR5cGVEb2NDb25maWcgPz8ge30pXSxcbiAgICAgICAgICAgIHsgbWVyZ2VBcnJheXM6IHRydWUgfSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmZpbGUgPSBuZXcgSnNvbkZpbGUodGhpcywgXCJ0eXBlZG9jLmpzb25jXCIsIHtcbiAgICAgICAgICAgIG9iajogdGhpcy50eXBlRG9jQ29uZmlndXJhdGlvbixcbiAgICAgICAgICAgIGFsbG93Q29tbWVudHM6IHRydWUsXG4gICAgICAgICAgICBtYXJrZXI6IHRydWUsXG4gICAgICAgICAgICByZWFkb25seTogZmFsc2UsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudGFzayA9IHByb2plY3QuYWRkVGFzayhcInR5cGVkb2NcIiwge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiR2VuZXJhdGUgVHlwZURvYyBkb2N1bWVudGF0aW9uXCIsXG4gICAgICAgICAgICBzdGVwczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZXhlYzogXCJ0eXBlZG9jXCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgICBwcm9qZWN0LnRlc3RUYXNrLnNwYXduKHRoaXMudGFzayk7XG4gICAgfVxufVxuXG5leHBvcnQgKiBmcm9tIFwiLi90eXBlZG9jLWNvbmZpZ1wiO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { defineConfig } from "vitest/config";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineConfig = void 0;
|
|
4
|
+
var config_1 = require("vitest/config");
|
|
5
|
+
Object.defineProperty(exports, "defineConfig", { enumerable: true, get: function () { return config_1.defineConfig; } });
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LWJ1bmRsZWQtZGVmaW5lLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3ZpdGVzdC1idW5kbGVkLWRlZmluZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0NBQTZDO0FBQXBDLHNHQUFBLFlBQVksT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJ2aXRlc3QvY29uZmlnXCI7XG4iXX0=
|