@cdktn/cli-core 0.22.0-pre.2
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/README.md +3 -0
- package/ambient.d.ts +13 -0
- package/eslint.config.mjs +82 -0
- package/jest.config.js +20 -0
- package/package.json +139 -0
- package/src/lib/cdktf-config.d.ts +16 -0
- package/src/lib/cdktf-config.d.ts.map +1 -0
- package/src/lib/cdktf-config.js +108 -0
- package/src/lib/cdktf-project-io-handler.d.ts +20 -0
- package/src/lib/cdktf-project-io-handler.d.ts.map +1 -0
- package/src/lib/cdktf-project-io-handler.js +84 -0
- package/src/lib/cdktf-project.d.ts +111 -0
- package/src/lib/cdktf-project.d.ts.map +1 -0
- package/src/lib/cdktf-project.js +371 -0
- package/src/lib/cdktf-stack.d.ts +134 -0
- package/src/lib/cdktf-stack.d.ts.map +1 -0
- package/src/lib/cdktf-stack.js +386 -0
- package/src/lib/convert.d.ts +6 -0
- package/src/lib/convert.d.ts.map +1 -0
- package/src/lib/convert.js +51 -0
- package/src/lib/dependencies/cdktf-config-manager.d.ts +12 -0
- package/src/lib/dependencies/cdktf-config-manager.d.ts.map +1 -0
- package/src/lib/dependencies/cdktf-config-manager.js +36 -0
- package/src/lib/dependencies/dependency-manager.d.ts +84 -0
- package/src/lib/dependencies/dependency-manager.d.ts.map +1 -0
- package/src/lib/dependencies/dependency-manager.js +365 -0
- package/src/lib/dependencies/package-manager.d.ts +18 -0
- package/src/lib/dependencies/package-manager.d.ts.map +1 -0
- package/src/lib/dependencies/package-manager.js +574 -0
- package/src/lib/dependencies/prebuilt-providers.d.ts +18 -0
- package/src/lib/dependencies/prebuilt-providers.d.ts.map +1 -0
- package/src/lib/dependencies/prebuilt-providers.js +204 -0
- package/src/lib/dependencies/registry-api.d.ts +8 -0
- package/src/lib/dependencies/registry-api.d.ts.map +1 -0
- package/src/lib/dependencies/registry-api.js +77 -0
- package/src/lib/dependencies/version-constraints.d.ts +8 -0
- package/src/lib/dependencies/version-constraints.d.ts.map +1 -0
- package/src/lib/dependencies/version-constraints.js +95 -0
- package/src/lib/error-reporting.d.ts +10 -0
- package/src/lib/error-reporting.d.ts.map +1 -0
- package/src/lib/error-reporting.js +133 -0
- package/src/lib/errors.d.ts +6 -0
- package/src/lib/errors.d.ts.map +1 -0
- package/src/lib/errors.js +10 -0
- package/src/lib/execution-logs.d.ts +3 -0
- package/src/lib/execution-logs.d.ts.map +1 -0
- package/src/lib/execution-logs.js +47 -0
- package/src/lib/get.d.ts +25 -0
- package/src/lib/get.d.ts.map +1 -0
- package/src/lib/get.js +90 -0
- package/src/lib/helpers/stack-helpers.d.ts +16 -0
- package/src/lib/helpers/stack-helpers.d.ts.map +1 -0
- package/src/lib/helpers/stack-helpers.js +155 -0
- package/src/lib/index.d.ts +15 -0
- package/src/lib/index.d.ts.map +1 -0
- package/src/lib/index.js +44 -0
- package/src/lib/init.d.ts +37 -0
- package/src/lib/init.d.ts.map +1 -0
- package/src/lib/init.js +131 -0
- package/src/lib/local-provider-constraints.d.ts +28 -0
- package/src/lib/local-provider-constraints.d.ts.map +1 -0
- package/src/lib/local-provider-constraints.js +95 -0
- package/src/lib/local-provider-versions.d.ts +12 -0
- package/src/lib/local-provider-versions.d.ts.map +1 -0
- package/src/lib/local-provider-versions.js +73 -0
- package/src/lib/models/deploy-machine.d.ts +128 -0
- package/src/lib/models/deploy-machine.d.ts.map +1 -0
- package/src/lib/models/deploy-machine.js +280 -0
- package/src/lib/models/pty-process.d.ts +29 -0
- package/src/lib/models/pty-process.d.ts.map +1 -0
- package/src/lib/models/pty-process.js +132 -0
- package/src/lib/models/schema.d.ts +2307 -0
- package/src/lib/models/schema.d.ts.map +1 -0
- package/src/lib/models/schema.js +181 -0
- package/src/lib/models/terraform-cli.d.ts +72 -0
- package/src/lib/models/terraform-cli.d.ts.map +1 -0
- package/src/lib/models/terraform-cli.js +357 -0
- package/src/lib/models/terraform.d.ts +125 -0
- package/src/lib/models/terraform.d.ts.map +1 -0
- package/src/lib/models/terraform.js +72 -0
- package/src/lib/output.d.ts +23 -0
- package/src/lib/output.d.ts.map +1 -0
- package/src/lib/output.js +211 -0
- package/src/lib/provider-add.d.ts +15 -0
- package/src/lib/provider-add.d.ts.map +1 -0
- package/src/lib/provider-add.js +30 -0
- package/src/lib/server/terraform-logs.d.ts +2 -0
- package/src/lib/server/terraform-logs.d.ts.map +1 -0
- package/src/lib/server/terraform-logs.js +19 -0
- package/src/lib/synth-stack.d.ts +29 -0
- package/src/lib/synth-stack.d.ts.map +1 -0
- package/src/lib/synth-stack.js +251 -0
- package/src/lib/synth.d.ts +7 -0
- package/src/lib/synth.d.ts.map +1 -0
- package/src/lib/synth.js +67 -0
- package/src/lib/terraform-json.d.ts +1015 -0
- package/src/lib/terraform-json.d.ts.map +1 -0
- package/src/lib/terraform-json.js +82 -0
- package/src/lib/terraform-provider-lock.d.ts +25 -0
- package/src/lib/terraform-provider-lock.d.ts.map +1 -0
- package/src/lib/terraform-provider-lock.js +95 -0
- package/src/lib/watch.d.ts +16 -0
- package/src/lib/watch.d.ts.map +1 -0
- package/src/lib/watch.js +155 -0
- package/templates/csharp/.hooks.sscaff.js +63 -0
- package/templates/csharp/MainStack.cs +15 -0
- package/templates/csharp/MyTerraformStack.csproj +13 -0
- package/templates/csharp/Program.cs +17 -0
- package/templates/csharp/TestProgram.cs +42 -0
- package/templates/csharp/cdktf.json +11 -0
- package/templates/csharp/help +42 -0
- package/templates/csharp/{{}}.gitignore +345 -0
- package/templates/go/.hooks.sscaff.js +70 -0
- package/templates/go/cdktf.json +12 -0
- package/templates/go/go.mod +8 -0
- package/templates/go/help +32 -0
- package/templates/go/main.go +22 -0
- package/templates/go/main_test.go +42 -0
- package/templates/go/{{}}.gitignore +21 -0
- package/templates/java/.hooks.sscaff.js +64 -0
- package/templates/java/build.gradle +55 -0
- package/templates/java/cdktf.json +12 -0
- package/templates/java/gradle.properties +1 -0
- package/templates/java/gradlew +248 -0
- package/templates/java/gradlew.bat +92 -0
- package/templates/java/help +35 -0
- package/templates/java/settings.gradle +5 -0
- package/templates/java/src/main/java/com/mycompany/app/Main.java +16 -0
- package/templates/java/src/main/java/com/mycompany/app/MainStack.java +14 -0
- package/templates/java/src/test/java/com/company/app/MainTest.java +38 -0
- package/templates/java/{{}}.gitignore +14 -0
- package/templates/python/.hooks.sscaff.js +59 -0
- package/templates/python/Pipfile +7 -0
- package/templates/python/cdktf.json +12 -0
- package/templates/python/help +42 -0
- package/templates/python/main-test.py +26 -0
- package/templates/python/main.py +16 -0
- package/templates/python/{{}}.gitignore +7 -0
- package/templates/python-pip/.hooks.sscaff.js +63 -0
- package/templates/python-pip/cdktf.json +12 -0
- package/templates/python-pip/help +35 -0
- package/templates/python-pip/main-test.py +23 -0
- package/templates/python-pip/main.py +16 -0
- package/templates/python-pip/{{}}.gitignore +7 -0
- package/templates/typescript/.hooks.sscaff.js +78 -0
- package/templates/typescript/__tests__/main-test.ts +89 -0
- package/templates/typescript/cdktf.json +11 -0
- package/templates/typescript/help +51 -0
- package/templates/typescript/jest.config.js +187 -0
- package/templates/typescript/main.ts +14 -0
- package/templates/typescript/package.json +22 -0
- package/templates/typescript/setup.js +2 -0
- package/templates/typescript/tsconfig.json +35 -0
- package/templates/typescript/{{}}.gitignore +11 -0
|
@@ -0,0 +1,251 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.SynthStack = exports.StackDependencies = void 0;
|
|
30
|
+
// Copyright (c) HashiCorp, Inc
|
|
31
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
32
|
+
const fs = __importStar(require("fs-extra"));
|
|
33
|
+
const path = __importStar(require("path"));
|
|
34
|
+
const chalk = __importStar(require("chalk"));
|
|
35
|
+
const indent_string_1 = __importDefault(require("indent-string"));
|
|
36
|
+
const cdktn_1 = require("cdktn");
|
|
37
|
+
const perf_hooks_1 = require("perf_hooks");
|
|
38
|
+
const commons_1 = require("@cdktn/commons");
|
|
39
|
+
const cdktf_config_1 = require("./cdktf-config");
|
|
40
|
+
const hcl_tools_1 = require("@cdktn/hcl-tools");
|
|
41
|
+
const chalkColour = new chalk.Instance();
|
|
42
|
+
class StackDependencies {
|
|
43
|
+
constructor(stacks) {
|
|
44
|
+
this.stacks = stacks;
|
|
45
|
+
this.pendingStacks = [];
|
|
46
|
+
this.inflightStacks = [];
|
|
47
|
+
this.deployedStacks = [];
|
|
48
|
+
this.pendingStacks = [...this.stacks];
|
|
49
|
+
}
|
|
50
|
+
startRun(stack) {
|
|
51
|
+
this.pendingStacks = this.pendingStacks.filter((item) => item.name !== stack.name);
|
|
52
|
+
this.inflightStacks.push(stack);
|
|
53
|
+
}
|
|
54
|
+
finishRun(stack) {
|
|
55
|
+
this.inflightStacks = this.inflightStacks.filter((item) => item.name !== stack.name);
|
|
56
|
+
this.deployedStacks.push(stack);
|
|
57
|
+
}
|
|
58
|
+
get pendingDeployableStacks() {
|
|
59
|
+
return this.pendingStacks.filter((pendingStack) => {
|
|
60
|
+
const unmetDependencies = pendingStack.dependencies.filter((dependency) => {
|
|
61
|
+
return !this.deployedStacks.some((deployedStack) => {
|
|
62
|
+
return deployedStack.name === dependency;
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
return unmetDependencies.length === 0;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.StackDependencies = StackDependencies;
|
|
70
|
+
class SynthStack {
|
|
71
|
+
static async synth(abortSignal, command, outdir, workingDirectory = process.cwd(), graceful = false, // will not exit the process but rethrow the error instead
|
|
72
|
+
noColor = false, synthOrigin, hcl = false) {
|
|
73
|
+
// start performance timer
|
|
74
|
+
const startTime = perf_hooks_1.performance.now();
|
|
75
|
+
const isDirectory = (source) => fs.lstatSync(source).isDirectory();
|
|
76
|
+
const getDirectories = (source) => {
|
|
77
|
+
if (!fs.existsSync(source))
|
|
78
|
+
return [];
|
|
79
|
+
return fs
|
|
80
|
+
.readdirSync(source)
|
|
81
|
+
.map((name) => path.join(source, name))
|
|
82
|
+
.filter(isDirectory);
|
|
83
|
+
};
|
|
84
|
+
const existingDirectories = getDirectories(path.join(outdir, cdktn_1.Manifest.stacksFolder));
|
|
85
|
+
const env = Object.fromEntries(Object.entries(process.env).filter(
|
|
86
|
+
// We don't want to pass Terraform variables to the synth command since they should only be used at execution time
|
|
87
|
+
([key]) => !key.startsWith("TF_VAR_")));
|
|
88
|
+
// Increases the default memory available to Node.js when synthesizing a TypeScript CDK project.
|
|
89
|
+
const nodeOptsSwitch = "--max-old-space-size";
|
|
90
|
+
const nodeOptsSetting = `${nodeOptsSwitch}=4096`;
|
|
91
|
+
if (env.NODE_OPTIONS && !env.NODE_OPTIONS.includes(nodeOptsSwitch)) {
|
|
92
|
+
commons_1.logger.warn(`WARNING: Found NODE_OPTIONS environment variable without a setting for ${nodeOptsSwitch}
|
|
93
|
+
The synthesizing step for TypeScript may need an increased amount of memory if multiple large providers
|
|
94
|
+
are used with locally generated bindings. You can ignore this if you don't use CDKTN with TypeScript.
|
|
95
|
+
If not present, the cdktn-cli sets it to NODE_OPTIONS="${nodeOptsSetting}" by default. But as
|
|
96
|
+
your environment already contains a NODE_OPTIONS variable, we won't override it. Hence, the app command
|
|
97
|
+
might fail while synthesizing with an out of memory error.`);
|
|
98
|
+
}
|
|
99
|
+
else if (!env.NODE_OPTIONS) {
|
|
100
|
+
// increase memory to allow ts-node (when using TypeScript) to handle large amounts of generated code in memory
|
|
101
|
+
env.NODE_OPTIONS = `${env.NODE_OPTIONS || ""} ${nodeOptsSetting}`.trim();
|
|
102
|
+
}
|
|
103
|
+
const currentContext = process.env[cdktn_1.CONTEXT_ENV]
|
|
104
|
+
? JSON.parse(process.env.CDKTF_CONTEXT_JSON)
|
|
105
|
+
: {};
|
|
106
|
+
const relativeModules = getRelativeTerraformModules();
|
|
107
|
+
try {
|
|
108
|
+
await (0, commons_1.shell)(command, [], {
|
|
109
|
+
shell: true,
|
|
110
|
+
env: {
|
|
111
|
+
...env,
|
|
112
|
+
CDKTF_OUTDIR: outdir,
|
|
113
|
+
CDKTF_CONTINUE_SYNTH_ON_ERROR_ANNOTATIONS: "true", // we want to display the errors ourselves
|
|
114
|
+
[cdktn_1.CONTEXT_ENV]: JSON.stringify({
|
|
115
|
+
...currentContext,
|
|
116
|
+
cdktfRelativeModules: relativeModules,
|
|
117
|
+
}),
|
|
118
|
+
SYNTH_HCL_OUTPUT: hcl.toString(),
|
|
119
|
+
},
|
|
120
|
+
cwd: workingDirectory,
|
|
121
|
+
signal: abortSignal,
|
|
122
|
+
noColor: noColor,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
catch (e) {
|
|
126
|
+
const errorOutput = chalkColour `{redBright cdktn encountered an error while synthesizing}
|
|
127
|
+
|
|
128
|
+
Synth command: {blue ${command}}
|
|
129
|
+
Error: {redBright ${e.message}}
|
|
130
|
+
${e.stderr
|
|
131
|
+
? chalkColour `
|
|
132
|
+
Command output on stderr:
|
|
133
|
+
|
|
134
|
+
{dim ${(0, indent_string_1.default)(e.stderr, 4)}}
|
|
135
|
+
`
|
|
136
|
+
: ""}
|
|
137
|
+
${e.stdout
|
|
138
|
+
? chalkColour `
|
|
139
|
+
Command output on stdout:
|
|
140
|
+
|
|
141
|
+
{dim ${(0, indent_string_1.default)(e.stdout, 4)}}
|
|
142
|
+
`
|
|
143
|
+
: ""}`;
|
|
144
|
+
await this.synthErrorTelemetry(synthOrigin);
|
|
145
|
+
if (graceful) {
|
|
146
|
+
e.errorOutput = errorOutput;
|
|
147
|
+
throw e;
|
|
148
|
+
}
|
|
149
|
+
console.error(`ERROR: ${errorOutput}`);
|
|
150
|
+
process.exit(1);
|
|
151
|
+
}
|
|
152
|
+
// Apply formatting to HCL files if hcl output was selected
|
|
153
|
+
if (hcl) {
|
|
154
|
+
await SynthStack.formatHclFiles(outdir);
|
|
155
|
+
}
|
|
156
|
+
// end performance timer
|
|
157
|
+
const endTime = perf_hooks_1.performance.now();
|
|
158
|
+
let stacks = [];
|
|
159
|
+
try {
|
|
160
|
+
stacks = await SynthStack.readSynthesizedStacks(outdir);
|
|
161
|
+
}
|
|
162
|
+
catch (e) {
|
|
163
|
+
const errorMessage = `ERROR: synthesis failed, because app was expected to call 'synth()', but didn't. Thus "${outdir}/${cdktn_1.Manifest.fileName}" was not created: ${e}`;
|
|
164
|
+
if (graceful) {
|
|
165
|
+
throw new Error(errorMessage);
|
|
166
|
+
}
|
|
167
|
+
commons_1.logger.error(errorMessage);
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
await this.synthTelemetry(endTime - startTime, stacks, synthOrigin);
|
|
171
|
+
if (stacks.length === 0) {
|
|
172
|
+
commons_1.logger.error("ERROR: No Terraform code synthesized.");
|
|
173
|
+
}
|
|
174
|
+
const stackNames = stacks.map((s) => s.name);
|
|
175
|
+
const orphanedDirectories = existingDirectories.filter((e) => !stackNames.includes(path.basename(e)));
|
|
176
|
+
for (const orphanedDirectory of orphanedDirectories) {
|
|
177
|
+
fs.rmSync(orphanedDirectory, { recursive: true });
|
|
178
|
+
}
|
|
179
|
+
return stacks;
|
|
180
|
+
}
|
|
181
|
+
static async formatHclFiles(outDir) {
|
|
182
|
+
const manifestPath = path.join(outDir, cdktn_1.Manifest.fileName);
|
|
183
|
+
if (!(await fs.pathExists(manifestPath))) {
|
|
184
|
+
throw new Error(`Could not find manifest file at ${manifestPath}. In case --skip-synth was passed, please try again without the flag.`);
|
|
185
|
+
}
|
|
186
|
+
const manifest = JSON.parse(fs.readFileSync(manifestPath).toString());
|
|
187
|
+
for (const stackName in manifest.stacks) {
|
|
188
|
+
const stack = manifest.stacks[stackName];
|
|
189
|
+
const filePath = path.join(outDir, stack.synthesizedStackPath);
|
|
190
|
+
const hclContent = fs.readFileSync(filePath).toString();
|
|
191
|
+
const formattedHcl = await (0, hcl_tools_1.format)(hclContent);
|
|
192
|
+
fs.writeFileSync(filePath, formattedHcl);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
static async readSynthesizedStacks(outdir) {
|
|
196
|
+
const manifestPath = path.join(outdir, cdktn_1.Manifest.fileName);
|
|
197
|
+
if (!(await fs.pathExists(manifestPath))) {
|
|
198
|
+
throw new Error(`Could not find manifest file at ${manifestPath}. In case --skip-synth was passed, please try again without the flag.`);
|
|
199
|
+
}
|
|
200
|
+
const stacks = [];
|
|
201
|
+
const manifest = JSON.parse(fs.readFileSync(manifestPath).toString());
|
|
202
|
+
for (const stackName in manifest.stacks) {
|
|
203
|
+
const stack = manifest.stacks[stackName];
|
|
204
|
+
const filePath = path.join(outdir, stack.synthesizedStackPath);
|
|
205
|
+
let jsonContent = {};
|
|
206
|
+
if (filePath.endsWith(".tf.json")) {
|
|
207
|
+
jsonContent = JSON.parse(fs.readFileSync(filePath).toString());
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
const metadataPath = path.join(outdir, stack.stackMetadataPath);
|
|
211
|
+
jsonContent = JSON.parse(fs.readFileSync(metadataPath).toString());
|
|
212
|
+
}
|
|
213
|
+
stacks.push({
|
|
214
|
+
...stack,
|
|
215
|
+
workingDirectory: path.join(outdir, stack.workingDirectory),
|
|
216
|
+
content: JSON.stringify(jsonContent, null, 2),
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
return stacks;
|
|
220
|
+
}
|
|
221
|
+
static async synthTelemetry(totalTime, stacks, synthOrigin) {
|
|
222
|
+
const config = (0, commons_1.readConfigSync)();
|
|
223
|
+
await (0, commons_1.sendTelemetry)("synth", {
|
|
224
|
+
totalTime: totalTime,
|
|
225
|
+
language: config.language,
|
|
226
|
+
synthOrigin,
|
|
227
|
+
stackMetadata: stacks.map((stack) => JSON.parse(stack.content)["//"].metadata),
|
|
228
|
+
requiredProviders: stacks.map((stack) => JSON.parse(stack.content)["terraform"].required_providers),
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
static async synthErrorTelemetry(synthOrigin) {
|
|
232
|
+
await (0, commons_1.sendTelemetry)("synth", { error: true, synthOrigin });
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
exports.SynthStack = SynthStack;
|
|
236
|
+
function getRelativeTerraformModules() {
|
|
237
|
+
let cfg;
|
|
238
|
+
try {
|
|
239
|
+
cfg = cdktf_config_1.CdktfConfig.read();
|
|
240
|
+
}
|
|
241
|
+
catch (e) {
|
|
242
|
+
commons_1.logger.trace("Could not read cdktf.json: " + e);
|
|
243
|
+
return [];
|
|
244
|
+
}
|
|
245
|
+
return cfg.terraformModules.filter((mod) => {
|
|
246
|
+
return typeof mod === "string"
|
|
247
|
+
? mod.startsWith("./") || mod.startsWith("../")
|
|
248
|
+
: mod.source.startsWith("./") || mod.source.startsWith("../");
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGgtc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzeW50aC1zdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsNkNBQStCO0FBQy9CLDJDQUE2QjtBQUM3Qiw2Q0FBK0I7QUFDL0Isa0VBQXlDO0FBQ3pDLGlDQUtlO0FBQ2YsMkNBQXlDO0FBQ3pDLDRDQUE4RTtBQUM5RSxpREFBNkM7QUFDN0MsZ0RBQTBDO0FBRTFDLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBVXpDLE1BQWEsaUJBQWlCO0lBSzVCLFlBQTZCLE1BQTBCO1FBQTFCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBSmhELGtCQUFhLEdBQXVCLEVBQUUsQ0FBQztRQUN2QyxtQkFBYyxHQUF1QixFQUFFLENBQUM7UUFDeEMsbUJBQWMsR0FBdUIsRUFBRSxDQUFDO1FBRzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQXVCO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQzVDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQ25DLENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sU0FBUyxDQUFDLEtBQXVCO1FBQ3RDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQzlDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQ25DLENB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c0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgaW5kZW50U3RyaW5nIGZyb20gXCJpbmRlbnQtc3RyaW5nXCI7XG5pbXBvcnQge1xuICBDT05URVhUX0VOVixcbiAgTWFuaWZlc3QsXG4gIFN0YWNrTWFuaWZlc3QsXG4gIFRlcnJhZm9ybVN0YWNrTWV0YWRhdGEsXG59IGZyb20gXCJjZGt0blwiO1xuaW1wb3J0IHsgcGVyZm9ybWFuY2UgfSBmcm9tIFwicGVyZl9ob29rc1wiO1xuaW1wb3J0IHsgbG9nZ2VyLCByZWFkQ29uZmlnU3luYywgc2VuZFRlbGVtZXRyeSwgc2hlbGwgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IENka3RmQ29uZmlnIH0gZnJvbSBcIi4vY2RrdGYtY29uZmlnXCI7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tIFwiQGNka3RuL2hjbC10b29sc1wiO1xuXG5jb25zdCBjaGFsa0NvbG91ciA9IG5ldyBjaGFsay5JbnN0YW5jZSgpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN5bnRoZXNpemVkU3RhY2tNZXRhZGF0YSB7XG4gIFwiLy9cIj86IHsgW2tleTogc3RyaW5nXTogVGVycmFmb3JtU3RhY2tNZXRhZGF0YSB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN5bnRoZXNpemVkU3RhY2sgZXh0ZW5kcyBTdGFja01hbmlmZXN0IHtcbiAgY29udGVudDogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgU3RhY2tEZXBlbmRlbmNpZXMge1xuICBwdWJsaWMgcGVuZGluZ1N0YWNrczogU3ludGhlc2l6ZWRTdGFja1tdID0gW107XG4gIHB1YmxpYyBpbmZsaWdodFN0YWNrczogU3ludGhlc2l6ZWRTdGFja1tdID0gW107XG4gIHB1YmxpYyBkZXBsb3llZFN0YWNrczogU3ludGhlc2l6ZWRTdGFja1tdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzdGFja3M6IFN5bnRoZXNpemVkU3RhY2tbXSkge1xuICAgIHRoaXMucGVuZGluZ1N0YWNrcyA9IFsuLi50aGlzLnN0YWNrc107XG4gIH1cblxuICBwdWJsaWMgc3RhcnRSdW4oc3RhY2s6IFN5bnRoZXNpemVkU3RhY2spOiB2b2lkIHtcbiAgICB0aGlzLnBlbmRpbmdTdGFja3MgPSB0aGlzLnBlbmRpbmdTdGFja3MuZmlsdGVyKFxuICAgICAgKGl0ZW0pID0+IGl0ZW0ubmFtZSAhPT0gc3RhY2submFtZSxcbiAgICApO1xuICAgIHRoaXMuaW5mbGlnaHRTdGFja3MucHVzaChzdGFjayk7XG4gIH1cblxuICBwdWJsaWMgZmluaXNoUnVuKHN0YWNrOiBTeW50aGVzaXplZFN0YWNrKTogdm9pZCB7XG4gICAgdGhpcy5pbmZsaWdodFN0YWNrcyA9IHRoaXMuaW5mbGlnaHRTdGFja3MuZmlsdGVyKFxuICAgICAgKGl0ZW0pID0+IGl0ZW0ubmFtZSAhPT0gc3RhY2submFtZSxcbiAgICApO1xuICAgIHRoaXMuZGVwbG95ZWRTdGFja3MucHVzaChzdGFjayk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBlbmRpbmdEZXBsb3lhYmxlU3RhY2tzKCk6IFN5bnRoZXNpemVkU3RhY2tbXSB7XG4gICAgcmV0dXJuIHRoaXMucGVuZGluZ1N0YWNrcy5maWx0ZXIoKHBlbmRpbmdTdGFjaykgPT4ge1xuICAgICAgY29uc3QgdW5tZXREZXBlbmRlbmNpZXMgPSBwZW5kaW5nU3RhY2suZGVwZW5kZW5jaWVzLmZpbHRlcihcbiAgICAgICAgKGRlcGVuZGVuY3kpID0+IHtcbiAgICAgICAgICByZXR1cm4gIXRoaXMuZGVwbG95ZWRTdGFja3Muc29tZSgoZGVwbG95ZWRTdGFjaykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGRlcGxveWVkU3RhY2submFtZSA9PT0gZGVwZW5kZW5jeTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB1bm1ldERlcGVuZGVuY2llcy5sZW5ndGggPT09IDA7XG4gICAgfSk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIE1hbmlmZXN0SnNvbiB7XG4gIHZlcnNpb246IHN0cmluZztcbiAgc3RhY2tzOiBTdGFja01hbmlmZXN0W107XG59XG5cbmV4cG9ydCB0eXBlIFN5bnRoT3JpZ2luID0gXCJ3YXRjaFwiO1xuXG5leHBvcnQgY2xhc3MgU3ludGhTdGFjayB7XG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgc3ludGgoXG4gICAgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsLFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICBvdXRkaXI6IHN0cmluZyxcbiAgICB3b3JraW5nRGlyZWN0b3J5ID0gcHJvY2Vzcy5jd2QoKSxcbiAgICBncmFjZWZ1bCA9IGZhbHNlLCAvLyB3aWxsIG5vdCBleGl0IHRoZSBwcm9jZXNzIGJ1dCByZXRocm93IHRoZSBlcnJvciBpbnN0ZWFkXG4gICAgbm9Db2xvciA9IGZhbHNlLFxuICAgIHN5bnRoT3JpZ2luPzogU3ludGhPcmlnaW4sXG4gICAgaGNsID0gZmFsc2UsXG4gICk6IFByb21pc2U8U3ludGhlc2l6ZWRTdGFja1tdPiB7XG4gICAgLy8gc3RhcnQgcGVyZm9ybWFuY2UgdGltZXJcbiAgICBjb25zdCBzdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxuICAgIGNvbnN0IGlzRGlyZWN0b3J5ID0gKHNvdXJjZTogc3RyaW5nKSA9PiBmcy5sc3RhdFN5bmMoc291cmNlKS5pc0RpcmVjdG9yeSgpO1xuICAgIGNvbnN0IGdldERpcmVjdG9yaWVzID0gKHNvdXJjZTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoc291cmNlKSkgcmV0dXJuIFtdO1xuICAgICAgcmV0dXJuIGZzXG4gICAgICAgIC5yZWFkZGlyU3luYyhzb3VyY2UpXG4gICAgICAgIC5tYXAoKG5hbWUpID0+IHBhdGguam9pbihzb3VyY2UsIG5hbWUpKVxuICAgICAgICAuZmlsdGVyKGlzRGlyZWN0b3J5KTtcbiAgICB9O1xuXG4gICAgY29uc3QgZXhpc3RpbmdEaXJlY3RvcmllcyA9IGdldERpcmVjdG9yaWVzKFxuICAgICAgcGF0aC5qb2luKG91dGRpciwgTWFuaWZlc3Quc3RhY2tzRm9sZGVyKSxcbiAgICApO1xuXG4gICAgY29uc3QgZW52ID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMocHJvY2Vzcy5lbnYpLmZpbHRlcihcbiAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXNzIFRlcnJhZm9ybSB2YXJpYWJsZXMgdG8gdGhlIHN5bnRoIGNvbW1hbmQgc2luY2UgdGhleSBzaG91bGQgb25seSBiZSB1c2VkIGF0IGV4ZWN1dGlvbiB0aW1lXG4gICAgICAgIChba2V5XSkgPT4gIWtleS5zdGFydHNXaXRoKFwiVEZfVkFSX1wiKSxcbiAgICAgICksXG4gICAgKTtcblxuICAgIC8vIEluY3JlYXNlcyB0aGUgZGVmYXVsdCBtZW1vcnkgYXZhaWxhYmxlIHRvIE5vZGUuanMgd2hlbiBzeW50aGVzaXppbmcgYSBUeXBlU2NyaXB0IENESyBwcm9qZWN0LlxuICAgIGNvbnN0IG5vZGVPcHRzU3dpdGNoID0gXCItLW1heC1vbGQtc3BhY2Utc2l6ZVwiO1xuICAgIGNvbnN0IG5vZGVPcHRzU2V0dGluZyA9IGAke25vZGVPcHRzU3dpdGNofT00MDk2YDtcbiAgICBpZiAoZW52Lk5PREVfT1BUSU9OUyAmJiAhZW52Lk5PREVfT1BUSU9OUy5pbmNsdWRlcyhub2RlT3B0c1N3aXRjaCkpIHtcbiAgICAgIGxvZ2dlci53YXJuKGBXQVJOSU5HOiBGb3VuZCBOT0RFX09QVElPTlMgZW52aXJvbm1lbnQgdmFyaWFibGUgd2l0aG91dCBhIHNldHRpbmcgZm9yICR7bm9kZU9wdHNTd2l0Y2h9XG5UaGUgc3ludGhlc2l6aW5nIHN0ZXAgZm9yIFR5cGVTY3JpcHQgbWF5IG5lZWQgYW4gaW5jcmVhc2VkIGFtb3VudCBvZiBtZW1vcnkgaWYgbXVsdGlwbGUgbGFyZ2UgcHJvdmlkZXJzXG5hcmUgdXNlZCB3aXRoIGxvY2FsbHkgZ2VuZXJhdGVkIGJpbmRpbmdzLiBZb3UgY2FuIGlnbm9yZSB0aGlzIGlmIHlvdSBkb24ndCB1c2UgQ0RLVE4gd2l0aCBUeXBlU2NyaXB0LlxuSWYgbm90IHByZXNlbnQsIHRoZSBjZGt0bi1jbGkgc2V0cyBpdCB0byBOT0RFX09QVElPTlM9XCIke25vZGVPcHRzU2V0dGluZ31cIiBieSBkZWZhdWx0LiBCdXQgYXNcbnlvdXIgZW52aXJvbm1lbnQgYWxyZWFkeSBjb250YWlucyBhIE5PREVfT1BUSU9OUyB2YXJpYWJsZSwgd2Ugd29uJ3Qgb3ZlcnJpZGUgaXQuIEhlbmNlLCB0aGUgYXBwIGNvbW1hbmRcbm1pZ2h0IGZhaWwgd2hpbGUgc3ludGhlc2l6aW5nIHdpdGggYW4gb3V0IG9mIG1lbW9yeSBlcnJvci5gKTtcbiAgICB9IGVsc2UgaWYgKCFlbnYuTk9ERV9PUFRJT05TKSB7XG4gICAgICAvLyBpbmNyZWFzZSBtZW1vcnkgdG8gYWxsb3cgdHMtbm9kZSAod2hlbiB1c2luZyBUeXBlU2NyaXB0KSB0byBoYW5kbGUgbGFyZ2UgYW1vdW50cyBvZiBnZW5lcmF0ZWQgY29kZSBpbiBtZW1vcnlcbiAgICAgIGVudi5OT0RFX09QVElPTlMgPSBgJHtlbnYuTk9ERV9PUFRJT05TIHx8IFwiXCJ9ICR7bm9kZU9wdHNTZXR0aW5nfWAudHJpbSgpO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0ID0gcHJvY2Vzcy5lbnZbQ09OVEVYVF9FTlZdXG4gICAgICA/IEpTT04ucGFyc2UocHJvY2Vzcy5lbnYuQ0RLVEZfQ09OVEVYVF9KU09OKVxuICAgICAgOiB7fTtcbiAgICBjb25zdCByZWxhdGl2ZU1vZHVsZXMgPSBnZXRSZWxhdGl2ZVRlcnJhZm9ybU1vZHVsZXMoKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBzaGVsbChjb21tYW5kLCBbXSwge1xuICAgICAgICBzaGVsbDogdHJ1ZSxcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgLi4uZW52LFxuICAgICAgICAgIENES1RGX09VVERJUjogb3V0ZGlyLFxuICAgICAgICAgIENES1RGX0NPTlRJTlVFX1NZTlRIX09OX0VSUk9SX0FOTk9UQVRJT05TOiBcInRydWVcIiwgLy8gd2Ugd2FudCB0byBkaXNwbGF5IHRoZSBlcnJvcnMgb3Vyc2VsdmVzXG4gICAgICAgICAgW0NPTlRFWFRfRU5WXTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgLi4uY3VycmVudENvbnRleHQsXG4gICAgICAgICAgICBjZGt0ZlJlbGF0aXZlTW9kdWxlczogcmVsYXRpdmVNb2R1bGVzLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIFNZTlRIX0hDTF9PVVRQVVQ6IGhjbC50b1N0cmluZygpLFxuICAgICAgICB9LFxuICAgICAgICBjd2Q6IHdvcmtpbmdEaXJlY3RvcnksXG4gICAgICAgIHNpZ25hbDogYWJvcnRTaWduYWwsXG4gICAgICAgIG5vQ29sb3I6IG5vQ29sb3IsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGNvbnN0IGVycm9yT3V0cHV0ID0gY2hhbGtDb2xvdXJge3JlZEJyaWdodCBjZGt0biBlbmNvdW50ZXJlZCBhbiBlcnJvciB3aGlsZSBzeW50aGVzaXppbmd9XG5cblN5bnRoIGNvbW1hbmQ6IHtibHVlICR7Y29tbWFuZH19XG5FcnJvcjogICAgICAgICB7cmVkQnJpZ2h0ICR7ZS5tZXNzYWdlfX1cbiR7XG4gIGUuc3RkZXJyXG4gICAgPyBjaGFsa0NvbG91cmBcbkNvbW1hbmQgb3V0cHV0IG9uIHN0ZGVycjpcblxue2RpbSAke2luZGVudFN0cmluZyhlLnN0ZGVyciwgNCl9fVxuYFxuICAgIDogXCJcIlxufVxuJHtcbiAgZS5zdGRvdXRcbiAgICA/IGNoYWxrQ29sb3VyYFxuQ29tbWFuZCBvdXRwdXQgb24gc3Rkb3V0OlxuXG57ZGltICR7aW5kZW50U3RyaW5nKGUuc3Rkb3V0LCA0KX19XG5gXG4gICAgOiBcIlwiXG59YDtcbiAgICAgIGF3YWl0IHRoaXMuc3ludGhFcnJvclRlbGVtZXRyeShzeW50aE9yaWdpbik7XG4gICAgICBpZiAoZ3JhY2VmdWwpIHtcbiAgICAgICAgZS5lcnJvck91dHB1dCA9IGVycm9yT3V0cHV0O1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgY29uc29sZS5lcnJvcihgRVJST1I6ICR7ZXJyb3JPdXRwdXR9YCk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgZm9ybWF0dGluZyB0byBIQ0wgZmlsZXMgaWYgaGNsIG91dHB1dCB3YXMgc2VsZWN0ZWRcbiAgICBpZiAoaGNsKSB7XG4gICAgICBhd2FpdCBTeW50aFN0YWNrLmZvcm1hdEhjbEZpbGVzKG91dGRpcik7XG4gICAgfVxuXG4gICAgLy8gZW5kIHBlcmZvcm1hbmNlIHRpbWVyXG4gICAgY29uc3QgZW5kVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXG4gICAgbGV0IHN0YWNrczogU3ludGhlc2l6ZWRTdGFja1tdID0gW107XG4gICAgdHJ5IHtcbiAgICAgIHN0YWNrcyA9IGF3YWl0IFN5bnRoU3RhY2sucmVhZFN5bnRoZXNpemVkU3RhY2tzKG91dGRpcik7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgRVJST1I6IHN5bnRoZXNpcyBmYWlsZWQsIGJlY2F1c2UgYXBwIHdhcyBleHBlY3RlZCB0byBjYWxsICdzeW50aCgpJywgYnV0IGRpZG4ndC4gVGh1cyBcIiR7b3V0ZGlyfS8ke01hbmlmZXN0LmZpbGVOYW1lfVwiICB3YXMgbm90IGNyZWF0ZWQ6ICR7ZX1gO1xuICAgICAgaWYgKGdyYWNlZnVsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgbG9nZ2VyLmVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5zeW50aFRlbGVtZXRyeShlbmRUaW1lIC0gc3RhcnRUaW1lLCBzdGFja3MsIHN5bnRoT3JpZ2luKTtcblxuICAgIGlmIChzdGFja3MubGVuZ3RoID09PSAwKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoXCJFUlJPUjogTm8gVGVycmFmb3JtIGNvZGUgc3ludGhlc2l6ZWQuXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YWNrTmFtZXMgPSBzdGFja3MubWFwKChzKSA9PiBzLm5hbWUpO1xuICAgIGNvbnN0IG9ycGhhbmVkRGlyZWN0b3JpZXMgPSBleGlzdGluZ0RpcmVjdG9yaWVzLmZpbHRlcihcbiAgICAgIChlKSA9PiAhc3RhY2tOYW1lcy5pbmNsdWRlcyhwYXRoLmJhc2VuYW1lKGUpKSxcbiAgICApO1xuXG4gICAgZm9yIChjb25zdCBvcnBoYW5lZERpcmVjdG9yeSBvZiBvcnBoYW5lZERpcmVjdG9yaWVzKSB7XG4gICAgICBmcy5ybVN5bmMob3JwaGFuZWREaXJlY3RvcnksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdGFja3M7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFzeW5jIGZvcm1hdEhjbEZpbGVzKG91dERpcjogc3RyaW5nKSB7XG4gICAgY29uc3QgbWFuaWZlc3RQYXRoID0gcGF0aC5qb2luKG91dERpciwgTWFuaWZlc3QuZmlsZU5hbWUpO1xuICAgIGlmICghKGF3YWl0IGZzLnBhdGhFeGlzdHMobWFuaWZlc3RQYXRoKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENvdWxkIG5vdCBmaW5kIG1hbmlmZXN0IGZpbGUgYXQgJHttYW5pZmVzdFBhdGh9LiBJbiBjYXNlIC0tc2tpcC1zeW50aCB3YXMgcGFzc2VkLCBwbGVhc2UgdHJ5IGFnYWluIHdpdGhvdXQgdGhlIGZsYWcuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbWFuaWZlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKG1hbmlmZXN0UGF0aCkudG9TdHJpbmcoKSxcbiAgICApIGFzIE1hbmlmZXN0SnNvbjtcblxuICAgIGZvciAoY29uc3Qgc3RhY2tOYW1lIGluIG1hbmlmZXN0LnN0YWNrcykge1xuICAgICAgY29uc3Qgc3RhY2sgPSBtYW5pZmVzdC5zdGFja3Nbc3RhY2tOYW1lXTtcbiAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKG91dERpciwgc3RhY2suc3ludGhlc2l6ZWRTdGFja1BhdGgpO1xuXG4gICAgICBjb25zdCBoY2xDb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoKS50b1N0cmluZygpO1xuICAgICAgY29uc3QgZm9ybWF0dGVkSGNsID0gYXdhaXQgZm9ybWF0KGhjbENvbnRlbnQpO1xuICAgICAgZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgZm9ybWF0dGVkSGNsKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFzeW5jIHJlYWRTeW50aGVzaXplZFN0YWNrcyhcbiAgICBvdXRkaXI6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxTeW50aGVzaXplZFN0YWNrW10+IHtcbiAgICBjb25zdCBtYW5pZmVzdFBhdGggPSBwYXRoLmpvaW4ob3V0ZGlyLCBNYW5pZmVzdC5maWxlTmFtZSk7XG4gICAgaWYgKCEoYXdhaXQgZnMucGF0aEV4aXN0cyhtYW5pZmVzdFBhdGgpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ291bGQgbm90IGZpbmQgbWFuaWZlc3QgZmlsZSBhdCAke21hbmlmZXN0UGF0aH0uIEluIGNhc2UgLS1za2lwLXN5bnRoIHdhcyBwYXNzZWQsIHBsZWFzZSB0cnkgYWdhaW4gd2l0aG91dCB0aGUgZmxhZy5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFja3M6IFN5bnRoZXNpemVkU3RhY2tbXSA9IFtdO1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gSlNPTi5wYXJzZShcbiAgICAgIGZzLnJlYWRGaWxlU3luYyhtYW5pZmVzdFBhdGgpLnRvU3RyaW5nKCksXG4gICAgKSBhcyBNYW5pZmVzdEpzb247XG5cbiAgICBmb3IgKGNvbnN0IHN0YWNrTmFtZSBpbiBtYW5pZmVzdC5zdGFja3MpIHtcbiAgICAgIGNvbnN0IHN0YWNrID0gbWFuaWZlc3Quc3RhY2tzW3N0YWNrTmFtZV07XG4gICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbihvdXRkaXIsIHN0YWNrLnN5bnRoZXNpemVkU3RhY2tQYXRoKTtcbiAgICAgIGxldCBqc29uQ29udGVudDogU3ludGhlc2l6ZWRTdGFja01ldGFkYXRhID0ge307XG4gICAgICBpZiAoZmlsZVBhdGguZW5kc1dpdGgoXCIudGYuanNvblwiKSkge1xuICAgICAgICBqc29uQ29udGVudCA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoKS50b1N0cmluZygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhUGF0aCA9IHBhdGguam9pbihvdXRkaXIsIHN0YWNrLnN0YWNrTWV0YWRhdGFQYXRoISk7XG4gICAgICAgIGpzb25Db250ZW50ID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMobWV0YWRhdGFQYXRoKS50b1N0cmluZygpKTtcbiAgICAgIH1cblxuICAgICAgc3RhY2tzLnB1c2goe1xuICAgICAgICAuLi5zdGFjayxcbiAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogcGF0aC5qb2luKG91dGRpciwgc3RhY2sud29ya2luZ0RpcmVjdG9yeSksXG4gICAgICAgIGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KGpzb25Db250ZW50LCBudWxsLCAyKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdGFja3M7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFzeW5jIHN5bnRoVGVsZW1ldHJ5KFxuICAgIHRvdGFsVGltZTogbnVtYmVyLFxuICAgIHN0YWNrczogU3ludGhlc2l6ZWRTdGFja1tdLFxuICAgIHN5bnRoT3JpZ2luPzogU3ludGhPcmlnaW4sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHJlYWRDb25maWdTeW5jKCk7XG5cbiAgICBhd2FpdCBzZW5kVGVsZW1ldHJ5KFwic3ludGhcIiwge1xuICAgICAgdG90YWxUaW1lOiB0b3RhbFRpbWUsXG4gICAgICBsYW5ndWFnZTogY29uZmlnLmxhbmd1YWdlLFxuICAgICAgc3ludGhPcmlnaW4sXG4gICAgICBzdGFja01ldGFkYXRhOiBzdGFja3MubWFwKFxuICAgICAgICAoc3RhY2spID0+IEpTT04ucGFyc2Uoc3RhY2suY29udGVudClbXCIvL1wiXS5tZXRhZGF0YSxcbiAgICAgICksXG4gICAgICByZXF1aXJlZFByb3ZpZGVyczogc3RhY2tzLm1hcChcbiAgICAgICAgKHN0YWNrOiBhbnkpID0+XG4gICAgICAgICAgSlNPTi5wYXJzZShzdGFjay5jb250ZW50KVtcInRlcnJhZm9ybVwiXS5yZXF1aXJlZF9wcm92aWRlcnMsXG4gICAgICApLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBzeW50aEVycm9yVGVsZW1ldHJ5KHN5bnRoT3JpZ2luPzogU3ludGhPcmlnaW4pIHtcbiAgICBhd2FpdCBzZW5kVGVsZW1ldHJ5KFwic3ludGhcIiwgeyBlcnJvcjogdHJ1ZSwgc3ludGhPcmlnaW4gfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0UmVsYXRpdmVUZXJyYWZvcm1Nb2R1bGVzKCkge1xuICBsZXQgY2ZnO1xuXG4gIHRyeSB7XG4gICAgY2ZnID0gQ2RrdGZDb25maWcucmVhZCgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLnRyYWNlKFwiQ291bGQgbm90IHJlYWQgY2RrdGYuanNvbjogXCIgKyBlKTtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4gY2ZnLnRlcnJhZm9ybU1vZHVsZXMuZmlsdGVyKChtb2QpID0+IHtcbiAgICByZXR1cm4gdHlwZW9mIG1vZCA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBtb2Quc3RhcnRzV2l0aChcIi4vXCIpIHx8IG1vZC5zdGFydHNXaXRoKFwiLi4vXCIpXG4gICAgICA6IG1vZC5zb3VyY2Uuc3RhcnRzV2l0aChcIi4vXCIpIHx8IG1vZC5zb3VyY2Uuc3RhcnRzV2l0aChcIi4uL1wiKTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SynthesizedStack } from "./synth-stack";
|
|
2
|
+
/**
|
|
3
|
+
* prints annotations via console
|
|
4
|
+
* @throws Error if an Annotation with level === ERROR has been encountered
|
|
5
|
+
*/
|
|
6
|
+
export declare function printAnnotations(stacks: SynthesizedStack[]): void;
|
|
7
|
+
//# sourceMappingURL=synth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synth.d.ts","sourceRoot":"","sources":["synth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMjD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,QA0C1D"}
|
package/src/lib/synth.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.printAnnotations = void 0;
|
|
27
|
+
const cdktn_1 = require("cdktn");
|
|
28
|
+
const chalk = __importStar(require("chalk"));
|
|
29
|
+
const chalkColour = new chalk.Instance();
|
|
30
|
+
/**
|
|
31
|
+
* prints annotations via console
|
|
32
|
+
* @throws Error if an Annotation with level === ERROR has been encountered
|
|
33
|
+
*/
|
|
34
|
+
function printAnnotations(stacks) {
|
|
35
|
+
let encounteredAnnotationError = false;
|
|
36
|
+
stacks.forEach((stack) => (stack.annotations || []).forEach((annotation) => {
|
|
37
|
+
if (annotation.level === cdktn_1.AnnotationMetadataEntryType.ERROR)
|
|
38
|
+
encounteredAnnotationError = true;
|
|
39
|
+
let color = chalkColour.whiteBright;
|
|
40
|
+
let level = annotation.level;
|
|
41
|
+
switch (annotation.level) {
|
|
42
|
+
case cdktn_1.AnnotationMetadataEntryType.INFO: {
|
|
43
|
+
level = "INFO";
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
case cdktn_1.AnnotationMetadataEntryType.WARN: {
|
|
47
|
+
color = chalkColour.hex("#FFA500"); // orange
|
|
48
|
+
level = "WARN";
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
case cdktn_1.AnnotationMetadataEntryType.ERROR: {
|
|
52
|
+
color = chalkColour.redBright;
|
|
53
|
+
level = "ERROR";
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
console.log(color(`${level} [${annotation.constructPath}]: ${annotation.message}`));
|
|
58
|
+
if (annotation.level === cdktn_1.AnnotationMetadataEntryType.ERROR &&
|
|
59
|
+
annotation.stacktrace)
|
|
60
|
+
console.log(chalkColour.gray(annotation.stacktrace.join("\n")));
|
|
61
|
+
}));
|
|
62
|
+
if (encounteredAnnotationError) {
|
|
63
|
+
throw new Error("While synthesizing one or more error annotations have been encountered. Please check the log output above.");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.printAnnotations = printAnnotations;
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ludGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzeW50aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLGlDQUFvRDtBQUNwRCw2Q0FBK0I7QUFFL0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7QUFFekM7OztHQUdHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsTUFBMEI7SUFDekQsSUFBSSwwQkFBMEIsR0FBRyxLQUFLLENBQUM7SUFFdkMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ3ZCLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtRQUMvQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEtBQUssbUNBQTJCLENBQUMsS0FBSztZQUN4RCwwQkFBMEIsR0FBRyxJQUFJLENBQUM7UUFFcEMsSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQztRQUNwQyxJQUFJLEtBQUssR0FBVyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ3JDLFFBQVEsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pCLEtBQUssbUNBQTJCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDdEMsS0FBSyxHQUFHLE1BQU0sQ0FBQztnQkFDZixNQUFNO1lBQ1IsQ0FBQztZQUNELEtBQUssbUNBQTJCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDdEMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUM3QyxLQUFLLEdBQUcsTUFBTSxDQUFDO2dCQUNmLE1BQU07WUFDUixDQUFDO1lBQ0QsS0FBSyxtQ0FBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxLQUFLLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztnQkFDOUIsS0FBSyxHQUFHLE9BQU8sQ0FBQztnQkFDaEIsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FDVCxLQUFLLENBQUMsR0FBRyxLQUFLLEtBQUssVUFBVSxDQUFDLGFBQWEsTUFBTSxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FDdkUsQ0FBQztRQUNGLElBQ0UsVUFBVSxDQUFDLEtBQUssS0FBSyxtQ0FBMkIsQ0FBQyxLQUFLO1lBQ3RELFVBQVUsQ0FBQyxVQUFVO1lBRXJCLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUVGLElBQUksMEJBQTBCLEVBQUUsQ0FBQztRQUMvQixNQUFNLElBQUksS0FBSyxDQUNiLDRHQUE0RyxDQUM3RyxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUExQ0QsNENBMENDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IFN5bnRoZXNpemVkU3RhY2sgfSBmcm9tIFwiLi9zeW50aC1zdGFja1wiO1xuaW1wb3J0IHsgQW5ub3RhdGlvbk1ldGFkYXRhRW50cnlUeXBlIH0gZnJvbSBcImNka3RuXCI7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tIFwiY2hhbGtcIjtcblxuY29uc3QgY2hhbGtDb2xvdXIgPSBuZXcgY2hhbGsuSW5zdGFuY2UoKTtcblxuLyoqXG4gKiBwcmludHMgYW5ub3RhdGlvbnMgdmlhIGNvbnNvbGVcbiAqIEB0aHJvd3MgRXJyb3IgaWYgYW4gQW5ub3RhdGlvbiB3aXRoIGxldmVsID09PSBFUlJPUiBoYXMgYmVlbiBlbmNvdW50ZXJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRBbm5vdGF0aW9ucyhzdGFja3M6IFN5bnRoZXNpemVkU3RhY2tbXSkge1xuICBsZXQgZW5jb3VudGVyZWRBbm5vdGF0aW9uRXJyb3IgPSBmYWxzZTtcblxuICBzdGFja3MuZm9yRWFjaCgoc3RhY2spID0+XG4gICAgKHN0YWNrLmFubm90YXRpb25zIHx8IFtdKS5mb3JFYWNoKChhbm5vdGF0aW9uKSA9PiB7XG4gICAgICBpZiAoYW5ub3RhdGlvbi5sZXZlbCA9PT0gQW5ub3RhdGlvbk1ldGFkYXRhRW50cnlUeXBlLkVSUk9SKVxuICAgICAgICBlbmNvdW50ZXJlZEFubm90YXRpb25FcnJvciA9IHRydWU7XG5cbiAgICAgIGxldCBjb2xvciA9IGNoYWxrQ29sb3VyLndoaXRlQnJpZ2h0O1xuICAgICAgbGV0IGxldmVsOiBzdHJpbmcgPSBhbm5vdGF0aW9uLmxldmVsO1xuICAgICAgc3dpdGNoIChhbm5vdGF0aW9uLmxldmVsKSB7XG4gICAgICAgIGNhc2UgQW5ub3RhdGlvbk1ldGFkYXRhRW50cnlUeXBlLklORk86IHtcbiAgICAgICAgICBsZXZlbCA9IFwiSU5GT1wiO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgQW5ub3RhdGlvbk1ldGFkYXRhRW50cnlUeXBlLldBUk46IHtcbiAgICAgICAgICBjb2xvciA9IGNoYWxrQ29sb3VyLmhleChcIiNGRkE1MDBcIik7IC8vIG9yYW5nZVxuICAgICAgICAgIGxldmVsID0gXCJXQVJOXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBbm5vdGF0aW9uTWV0YWRhdGFFbnRyeVR5cGUuRVJST1I6IHtcbiAgICAgICAgICBjb2xvciA9IGNoYWxrQ29sb3VyLnJlZEJyaWdodDtcbiAgICAgICAgICBsZXZlbCA9IFwiRVJST1JcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGNvbG9yKGAke2xldmVsfSBbJHthbm5vdGF0aW9uLmNvbnN0cnVjdFBhdGh9XTogJHthbm5vdGF0aW9uLm1lc3NhZ2V9YCksXG4gICAgICApO1xuICAgICAgaWYgKFxuICAgICAgICBhbm5vdGF0aW9uLmxldmVsID09PSBBbm5vdGF0aW9uTWV0YWRhdGFFbnRyeVR5cGUuRVJST1IgJiZcbiAgICAgICAgYW5ub3RhdGlvbi5zdGFja3RyYWNlXG4gICAgICApXG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrQ29sb3VyLmdyYXkoYW5ub3RhdGlvbi5zdGFja3RyYWNlLmpvaW4oXCJcXG5cIikpKTtcbiAgICB9KSxcbiAgKTtcblxuICBpZiAoZW5jb3VudGVyZWRBbm5vdGF0aW9uRXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIldoaWxlIHN5bnRoZXNpemluZyBvbmUgb3IgbW9yZSBlcnJvciBhbm5vdGF0aW9ucyBoYXZlIGJlZW4gZW5jb3VudGVyZWQuIFBsZWFzZSBjaGVjayB0aGUgbG9nIG91dHB1dCBhYm92ZS5cIixcbiAgICApO1xuICB9XG59XG4iXX0=
|