@cdktn/cli-core 0.23.0-pre.4 → 0.23.0-pre.40
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/ambient.d.ts +0 -1
- package/build/lib/cdktf-config.d.ts.map +1 -0
- package/build/lib/cdktf-config.js +108 -0
- package/build/lib/cdktf-project-io-handler.d.ts.map +1 -0
- package/build/lib/cdktf-project-io-handler.js +84 -0
- package/build/lib/cdktf-project.d.ts.map +1 -0
- package/build/lib/cdktf-project.js +371 -0
- package/{src → build}/lib/cdktf-stack.d.ts +1 -0
- package/build/lib/cdktf-stack.d.ts.map +1 -0
- package/build/lib/cdktf-stack.js +386 -0
- package/build/lib/convert.d.ts.map +1 -0
- package/build/lib/convert.js +51 -0
- package/build/lib/dependencies/cdktf-config-manager.d.ts.map +1 -0
- package/build/lib/dependencies/cdktf-config-manager.js +36 -0
- package/build/lib/dependencies/dependency-manager.d.ts.map +1 -0
- package/build/lib/dependencies/dependency-manager.js +393 -0
- package/build/lib/dependencies/package-manager.d.ts.map +1 -0
- package/build/lib/dependencies/package-manager.js +581 -0
- package/build/lib/dependencies/prebuilt-providers.d.ts.map +1 -0
- package/build/lib/dependencies/prebuilt-providers.js +221 -0
- package/build/lib/dependencies/registry-api.d.ts.map +1 -0
- package/build/lib/dependencies/registry-api.js +77 -0
- package/build/lib/dependencies/version-constraints.d.ts.map +1 -0
- package/build/lib/dependencies/version-constraints.js +95 -0
- package/build/lib/error-reporting.d.ts.map +1 -0
- package/build/lib/error-reporting.js +133 -0
- package/build/lib/errors.d.ts.map +1 -0
- package/build/lib/errors.js +10 -0
- package/build/lib/execution-logs.d.ts.map +1 -0
- package/build/lib/execution-logs.js +47 -0
- package/build/lib/get.d.ts.map +1 -0
- package/build/lib/get.js +90 -0
- package/build/lib/helpers/stack-helpers.d.ts.map +1 -0
- package/build/lib/helpers/stack-helpers.js +155 -0
- package/build/lib/index.d.ts.map +1 -0
- package/{src → build}/lib/index.js +1 -2
- package/build/lib/init.d.ts.map +1 -0
- package/build/lib/init.js +131 -0
- package/build/lib/local-provider-constraints.d.ts.map +1 -0
- package/build/lib/local-provider-constraints.js +95 -0
- package/build/lib/local-provider-versions.d.ts.map +1 -0
- package/build/lib/local-provider-versions.js +73 -0
- package/{src → build}/lib/models/deploy-machine.d.ts +3 -11
- package/build/lib/models/deploy-machine.d.ts.map +1 -0
- package/build/lib/models/deploy-machine.js +283 -0
- package/build/lib/models/interactive-process.d.ts +28 -0
- package/build/lib/models/interactive-process.d.ts.map +1 -0
- package/build/lib/models/interactive-process.js +59 -0
- package/{src → build}/lib/models/schema.d.ts.map +1 -1
- package/build/lib/models/schema.js +181 -0
- package/{src → build}/lib/models/terraform-cli.d.ts +1 -0
- package/build/lib/models/terraform-cli.d.ts.map +1 -0
- package/build/lib/models/terraform-cli.js +355 -0
- package/build/lib/models/terraform.d.ts.map +1 -0
- package/build/lib/models/terraform.js +72 -0
- package/build/lib/output.d.ts.map +1 -0
- package/build/lib/output.js +211 -0
- package/build/lib/provider-add.d.ts.map +1 -0
- package/build/lib/provider-add.js +30 -0
- package/build/lib/server/terraform-logs.d.ts.map +1 -0
- package/build/lib/server/terraform-logs.js +19 -0
- package/{src → build}/lib/synth-stack.d.ts +1 -0
- package/build/lib/synth-stack.d.ts.map +1 -0
- package/build/lib/synth-stack.js +251 -0
- package/build/lib/synth.d.ts.map +1 -0
- package/build/lib/synth.js +67 -0
- package/{src → build}/lib/terraform-json.d.ts.map +1 -1
- package/build/lib/terraform-json.js +82 -0
- package/build/lib/terraform-provider-lock.d.ts.map +1 -0
- package/build/lib/terraform-provider-lock.js +95 -0
- package/{src → build}/lib/watch.d.ts +1 -0
- package/build/lib/watch.d.ts.map +1 -0
- package/build/lib/watch.js +155 -0
- package/eslint.config.mjs +2 -66
- package/package.json +32 -44
- package/templates/go/go.mod +1 -1
- package/templates/python/Pipfile +1 -1
- package/templates/typescript/.hooks.sscaff.js +1 -1
- package/src/lib/cdktf-config.d.ts.map +0 -1
- package/src/lib/cdktf-config.js +0 -108
- package/src/lib/cdktf-project-io-handler.d.ts.map +0 -1
- package/src/lib/cdktf-project-io-handler.js +0 -84
- package/src/lib/cdktf-project.d.ts.map +0 -1
- package/src/lib/cdktf-project.js +0 -371
- package/src/lib/cdktf-stack.d.ts.map +0 -1
- package/src/lib/cdktf-stack.js +0 -386
- package/src/lib/convert.d.ts.map +0 -1
- package/src/lib/convert.js +0 -51
- package/src/lib/dependencies/cdktf-config-manager.d.ts.map +0 -1
- package/src/lib/dependencies/cdktf-config-manager.js +0 -36
- package/src/lib/dependencies/dependency-manager.d.ts.map +0 -1
- package/src/lib/dependencies/dependency-manager.js +0 -393
- package/src/lib/dependencies/package-manager.d.ts.map +0 -1
- package/src/lib/dependencies/package-manager.js +0 -581
- package/src/lib/dependencies/prebuilt-providers.d.ts.map +0 -1
- package/src/lib/dependencies/prebuilt-providers.js +0 -220
- package/src/lib/dependencies/registry-api.d.ts.map +0 -1
- package/src/lib/dependencies/registry-api.js +0 -77
- package/src/lib/dependencies/version-constraints.d.ts.map +0 -1
- package/src/lib/dependencies/version-constraints.js +0 -95
- package/src/lib/error-reporting.d.ts.map +0 -1
- package/src/lib/error-reporting.js +0 -133
- package/src/lib/errors.d.ts.map +0 -1
- package/src/lib/errors.js +0 -10
- package/src/lib/execution-logs.d.ts.map +0 -1
- package/src/lib/execution-logs.js +0 -47
- package/src/lib/get.d.ts.map +0 -1
- package/src/lib/get.js +0 -90
- package/src/lib/helpers/stack-helpers.d.ts.map +0 -1
- package/src/lib/helpers/stack-helpers.js +0 -155
- package/src/lib/index.d.ts.map +0 -1
- package/src/lib/init.d.ts.map +0 -1
- package/src/lib/init.js +0 -131
- package/src/lib/local-provider-constraints.d.ts.map +0 -1
- package/src/lib/local-provider-constraints.js +0 -95
- package/src/lib/local-provider-versions.d.ts.map +0 -1
- package/src/lib/local-provider-versions.js +0 -73
- package/src/lib/models/deploy-machine.d.ts.map +0 -1
- package/src/lib/models/deploy-machine.js +0 -280
- package/src/lib/models/pty-process.d.ts +0 -29
- package/src/lib/models/pty-process.d.ts.map +0 -1
- package/src/lib/models/pty-process.js +0 -132
- package/src/lib/models/schema.js +0 -181
- package/src/lib/models/terraform-cli.d.ts.map +0 -1
- package/src/lib/models/terraform-cli.js +0 -357
- package/src/lib/models/terraform.d.ts.map +0 -1
- package/src/lib/models/terraform.js +0 -72
- package/src/lib/output.d.ts.map +0 -1
- package/src/lib/output.js +0 -211
- package/src/lib/provider-add.d.ts.map +0 -1
- package/src/lib/provider-add.js +0 -30
- package/src/lib/server/terraform-logs.d.ts.map +0 -1
- package/src/lib/server/terraform-logs.js +0 -19
- package/src/lib/synth-stack.d.ts.map +0 -1
- package/src/lib/synth-stack.js +0 -251
- package/src/lib/synth.d.ts.map +0 -1
- package/src/lib/synth.js +0 -67
- package/src/lib/terraform-json.js +0 -82
- package/src/lib/terraform-provider-lock.d.ts.map +0 -1
- package/src/lib/terraform-provider-lock.js +0 -95
- package/src/lib/watch.d.ts.map +0 -1
- package/src/lib/watch.js +0 -155
- /package/{src → build}/lib/cdktf-config.d.ts +0 -0
- /package/{src → build}/lib/cdktf-project-io-handler.d.ts +0 -0
- /package/{src → build}/lib/cdktf-project.d.ts +0 -0
- /package/{src → build}/lib/convert.d.ts +0 -0
- /package/{src → build}/lib/dependencies/cdktf-config-manager.d.ts +0 -0
- /package/{src → build}/lib/dependencies/dependency-manager.d.ts +0 -0
- /package/{src → build}/lib/dependencies/package-manager.d.ts +0 -0
- /package/{src → build}/lib/dependencies/prebuilt-providers.d.ts +0 -0
- /package/{src → build}/lib/dependencies/registry-api.d.ts +0 -0
- /package/{src → build}/lib/dependencies/version-constraints.d.ts +0 -0
- /package/{src → build}/lib/error-reporting.d.ts +0 -0
- /package/{src → build}/lib/errors.d.ts +0 -0
- /package/{src → build}/lib/execution-logs.d.ts +0 -0
- /package/{src → build}/lib/get.d.ts +0 -0
- /package/{src → build}/lib/helpers/stack-helpers.d.ts +0 -0
- /package/{src → build}/lib/index.d.ts +0 -0
- /package/{src → build}/lib/init.d.ts +0 -0
- /package/{src → build}/lib/local-provider-constraints.d.ts +0 -0
- /package/{src → build}/lib/local-provider-versions.d.ts +0 -0
- /package/{src → build}/lib/models/schema.d.ts +0 -0
- /package/{src → build}/lib/models/terraform.d.ts +0 -0
- /package/{src → build}/lib/output.d.ts +0 -0
- /package/{src → build}/lib/provider-add.d.ts +0 -0
- /package/{src → build}/lib/server/terraform-logs.d.ts +0 -0
- /package/{src → build}/lib/synth.d.ts +0 -0
- /package/{src → build}/lib/terraform-json.d.ts +0 -0
- /package/{src → build}/lib/terraform-provider-lock.d.ts +0 -0
package/src/lib/watch.js
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
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.watch = void 0;
|
|
30
|
-
// Copyright (c) HashiCorp, Inc
|
|
31
|
-
// SPDX-License-Identifier: MPL-2.0
|
|
32
|
-
const path_1 = __importDefault(require("path"));
|
|
33
|
-
const cdktf_project_1 = require("./cdktf-project");
|
|
34
|
-
const fs = __importStar(require("fs"));
|
|
35
|
-
const chokidar = __importStar(require("chokidar"));
|
|
36
|
-
const commons_1 = require("@cdktn/commons");
|
|
37
|
-
// In this very first iteration we will find out which files to watch by asking the user to provide the files
|
|
38
|
-
// We default to something reasonable per language and write it into the cdkt.json file
|
|
39
|
-
// Mid-Term we might want to add a WatchFile / WatchDir construct that we can use (e.g. in assets) and that a user can use to specify their watch behaviour
|
|
40
|
-
// See https://github.com/hashicorp/terraform-cdk/issues/1668
|
|
41
|
-
function getOrWriteDefaultWatchConfig(projectPath = process.cwd()) {
|
|
42
|
-
const cdktfJsonPath = path_1.default.resolve(projectPath, "cdktf.json");
|
|
43
|
-
commons_1.logger.debug(`Getting files to watch from cdktf.json at ${cdktfJsonPath}`);
|
|
44
|
-
let cdktfJson;
|
|
45
|
-
try {
|
|
46
|
-
cdktfJson = require(cdktfJsonPath);
|
|
47
|
-
}
|
|
48
|
-
catch (err) {
|
|
49
|
-
throw commons_1.Errors.Internal(`Could not find cdktf.json file in ${projectPath}`, err);
|
|
50
|
-
}
|
|
51
|
-
if (cdktfJson.watchPattern) {
|
|
52
|
-
commons_1.logger.debug(`Found watchPattern in cdktf.json: ${cdktfJson.watchPattern}`);
|
|
53
|
-
return cdktfJson.watchPattern;
|
|
54
|
-
}
|
|
55
|
-
const language = cdktfJson.language;
|
|
56
|
-
if (!language) {
|
|
57
|
-
throw commons_1.Errors.Usage(`No language specified in cdktf.json, please either specify a language or watchPattern to use the watch command`);
|
|
58
|
-
}
|
|
59
|
-
const defaultWatchPattern = {
|
|
60
|
-
typescript: ["./**/*.ts"],
|
|
61
|
-
python: ["./**/*.py"],
|
|
62
|
-
java: ["src/**/*.java"],
|
|
63
|
-
csharp: ["./**/*.cs"],
|
|
64
|
-
go: ["./**/*.go"],
|
|
65
|
-
}[language];
|
|
66
|
-
fs.writeFileSync(cdktfJsonPath, JSON.stringify({ ...cdktfJson, watchPattern: defaultWatchPattern }, null, 2));
|
|
67
|
-
commons_1.logger.debug(`Write default watchPattern for ${language} in cdktf.json.`);
|
|
68
|
-
return defaultWatchPattern;
|
|
69
|
-
}
|
|
70
|
-
const projectStatus = (project) => {
|
|
71
|
-
if (!(project === null || project === void 0 ? void 0 : project.stacksToRun.length)) {
|
|
72
|
-
return {
|
|
73
|
-
inProgress: [],
|
|
74
|
-
finished: [],
|
|
75
|
-
pending: [],
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
const inProgress = project.stacksToRun.filter((s) => s.isRunning);
|
|
79
|
-
const finished = project.stacksToRun.filter((s) => s.isDone);
|
|
80
|
-
const pending = project.stacksToRun.filter((s) => s.isPending);
|
|
81
|
-
return { inProgress, finished, pending };
|
|
82
|
-
};
|
|
83
|
-
async function watch(projectOptions, mutationOptions, abortSignal, onStateChange) {
|
|
84
|
-
const patterns = getOrWriteDefaultWatchConfig();
|
|
85
|
-
const watcher = chokidar.watch(patterns, {
|
|
86
|
-
ignoreInitial: true,
|
|
87
|
-
});
|
|
88
|
-
let state = { type: "waiting" };
|
|
89
|
-
const changeState = (newState) => {
|
|
90
|
-
state = newState;
|
|
91
|
-
onStateChange(state);
|
|
92
|
-
};
|
|
93
|
-
async function run() {
|
|
94
|
-
commons_1.logger.debug("Running cdktn deploy");
|
|
95
|
-
const project = new cdktf_project_1.CdktfProject({
|
|
96
|
-
synthOrigin: "watch",
|
|
97
|
-
...projectOptions,
|
|
98
|
-
onLog: (log) => {
|
|
99
|
-
if (projectOptions.onLog) {
|
|
100
|
-
projectOptions.onLog(log);
|
|
101
|
-
}
|
|
102
|
-
if (state.type === "running") {
|
|
103
|
-
changeState({ ...state, ...projectStatus(project) });
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
});
|
|
107
|
-
const abort = () => project.hardAbort();
|
|
108
|
-
abortSignal.addEventListener("abort", abort);
|
|
109
|
-
await project.deploy(mutationOptions);
|
|
110
|
-
abortSignal.removeEventListener("abort", abort);
|
|
111
|
-
commons_1.logger.debug("cdktn deploy finished");
|
|
112
|
-
if (state.type !== "running") {
|
|
113
|
-
throw commons_1.Errors.Internal("Watch was in a state where the state was not running in the run phase");
|
|
114
|
-
}
|
|
115
|
-
if (state.nextRunQueued) {
|
|
116
|
-
commons_1.logger.debug("Next run was queued, starting it now");
|
|
117
|
-
changeState({
|
|
118
|
-
...state,
|
|
119
|
-
nextRunQueued: false,
|
|
120
|
-
currentRun: run(),
|
|
121
|
-
...projectStatus(project),
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
commons_1.logger.debug("Nothing queued, waiting for changes");
|
|
126
|
-
changeState({ type: "waiting" });
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
abortSignal.addEventListener("abort", () => {
|
|
130
|
-
commons_1.logger.debug("Abort signal received, stopping watch");
|
|
131
|
-
watcher.close();
|
|
132
|
-
changeState({ type: "stopped" });
|
|
133
|
-
});
|
|
134
|
-
const onFileChange = () => {
|
|
135
|
-
if (state.type === "stopped") {
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
if (state.type === "running") {
|
|
139
|
-
changeState({ ...state, nextRunQueued: true });
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
changeState({
|
|
143
|
-
type: "running",
|
|
144
|
-
nextRunQueued: false,
|
|
145
|
-
currentRun: run(),
|
|
146
|
-
...projectStatus(),
|
|
147
|
-
});
|
|
148
|
-
};
|
|
149
|
-
watcher.on("all", onFileChange);
|
|
150
|
-
// initially run once
|
|
151
|
-
onFileChange();
|
|
152
|
-
await (0, commons_1.sendTelemetry)("watch", { event: "start" });
|
|
153
|
-
}
|
|
154
|
-
exports.watch = watch;
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3YXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsZ0RBQXdCO0FBQ3hCLG1EQUl5QjtBQUN6Qix1Q0FBeUI7QUFDekIsbURBQXFDO0FBQ3JDLDRDQUErRDtBQUcvRCw2R0FBNkc7QUFDN0csdUZBQXVGO0FBQ3ZGLDJKQUEySjtBQUMzSiw2REFBNkQ7QUFDN0QsU0FBUyw0QkFBNEIsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRTtJQUMvRCxNQUFNLGFBQWEsR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM5RCxnQkFBTSxDQUFDLEtBQUssQ0FBQyw2Q0FBNkMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUUzRSxJQUFJLFNBQVMsQ0FBQztJQUNkLElBQUksQ0FBQztRQUNILFNBQVMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7UUFDbEIsTUFBTSxnQkFBTSxDQUFDLFFBQVEsQ0FDbkIscUNBQXFDLFdBQVcsRUFBRSxFQUNsRCxHQUFHLENBQ0osQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMzQixnQkFBTSxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDNUUsT0FBTyxTQUFTLENBQUMsWUFBWSxDQUFDO0lBQ2hDLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FNRSxTQUFTLENBQUMsUUFBUSxDQUFDO0lBRW5DLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE1BQU0sZ0JBQU0sQ0FBQyxLQUFLLENBQ2hCLGdIQUFnSCxDQUNqSCxDQUFDO0lBQ0osQ0FB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TSxZQUFZLEdBQUcsR0FBRyxFQUFFO1FBQ3hCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QixXQUFXLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMvQyxPQUFPO1FBQ1QsQ0FBQztRQUVELFdBQVcsQ0FBQztZQUNWLElBQUksRUFBRSxTQUFTO1lBQ2YsYUFBYSxFQUFFLEtBQUs7WUFDcEIsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUNqQixHQUFHLGFBQWEsRUFBRTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRixPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNoQyxxQkFBcUI7SUFDckIsWUFBWSxFQUFFLENBQUM7SUFFZixNQUFNLElBQUEsdUJBQWEsRUFBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBckZELHNCQXFGQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHtcbiAgQ2RrdGZQcm9qZWN0LFxuICBDZGt0ZlByb2plY3RPcHRpb25zLFxuICBNdXRhdGlvbk9wdGlvbnMsXG59IGZyb20gXCIuL2Nka3RmLXByb2plY3RcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgY2hva2lkYXIgZnJvbSBcImNob2tpZGFyXCI7XG5pbXBvcnQgeyBsb2dnZXIsIEVycm9ycywgc2VuZFRlbGVtZXRyeSB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHsgQ2RrdGZTdGFjayB9IGZyb20gXCIuL2Nka3RmLXN0YWNrXCI7XG5cbi8vIEluIHRoaXMgdmVyeSBmaXJzdCBpdGVyYXRpb24gd2Ugd2lsbCBmaW5kIG91dCB3aGljaCBmaWxlcyB0byB3YXRjaCBieSBhc2tpbmcgdGhlIHVzZXIgdG8gcHJvdmlkZSB0aGUgZmlsZXNcbi8vIFdlIGRlZmF1bHQgdG8gc29tZXRoaW5nIHJlYXNvbmFibGUgcGVyIGxhbmd1YWdlIGFuZCB3cml0ZSBpdCBpbnRvIHRoZSBjZGt0Lmpzb24gZmlsZVxuLy8gTWlkLVRlcm0gd2UgbWlnaHQgd2FudCB0byBhZGQgYSBXYXRjaEZpbGUgLyBXYXRjaERpciBjb25zdHJ1Y3QgdGhhdCB3ZSBjYW4gdXNlIChlLmcuIGluIGFzc2V0cykgYW5kIHRoYXQgYSB1c2VyIGNhbiB1c2UgdG8gc3BlY2lmeSB0aGVpciB3YXRjaCBiZWhhdmlvdXJcbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1jZGsvaXNzdWVzLzE2NjhcbmZ1bmN0aW9uIGdldE9yV3JpdGVEZWZhdWx0V2F0Y2hDb25maWcocHJvamVjdFBhdGggPSBwcm9jZXNzLmN3ZCgpKSB7XG4gIGNvbnN0IGNka3RmSnNvblBhdGggPSBwYXRoLnJlc29sdmUocHJvamVjdFBhdGgsIFwiY2RrdGYuanNvblwiKTtcbiAgbG9nZ2VyLmRlYnVnKGBHZXR0aW5nIGZpbGVzIHRvIHdhdGNoIGZyb20gY2RrdGYuanNvbiBhdCAke2Nka3RmSnNvblBhdGh9YCk7XG5cbiAgbGV0IGNka3RmSnNvbjtcbiAgdHJ5IHtcbiAgICBjZGt0Zkpzb24gPSByZXF1aXJlKGNka3RmSnNvblBhdGgpO1xuICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgIHRocm93IEVycm9ycy5JbnRlcm5hbChcbiAgICAgIGBDb3VsZCBub3QgZmluZCBjZGt0Zi5qc29uIGZpbGUgaW4gJHtwcm9qZWN0UGF0aH1gLFxuICAgICAgZXJyLFxuICAgICk7XG4gIH1cblxuICBpZiAoY2RrdGZKc29uLndhdGNoUGF0dGVybikge1xuICAgIGxvZ2dlci5kZWJ1ZyhgRm91bmQgd2F0Y2hQYXR0ZXJuIGluIGNka3RmLmpzb246ICR7Y2RrdGZKc29uLndhdGNoUGF0dGVybn1gKTtcbiAgICByZXR1cm4gY2RrdGZKc29uLndhdGNoUGF0dGVybjtcbiAgfVxuICBjb25zdCBsYW5ndWFnZTpcbiAgICB8IFwidHlwZXNjcmlwdFwiXG4gICAgfCBcInB5dGhvblwiXG4gICAgfCBcImphdmFcIlxuICAgIHwgXCJjc2hhcnBcIlxuICAgIHwgXCJnb1wiXG4gICAgfCB1bmRlZmluZWQgPSBjZGt0Zkpzb24ubGFuZ3VhZ2U7XG5cbiAgaWYgKCFsYW5ndWFnZSkge1xuICAgIHRocm93IEVycm9ycy5Vc2FnZShcbiAgICAgIGBObyBsYW5ndWFnZSBzcGVjaWZpZWQgaW4gY2RrdGYuanNvbiwgcGxlYXNlIGVpdGhlciBzcGVjaWZ5IGEgbGFuZ3VhZ2Ugb3Igd2F0Y2hQYXR0ZXJuIHRvIHVzZSB0aGUgd2F0Y2ggY29tbWFuZGAsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGRlZmF1bHRXYXRjaFBhdHRlcm4gPSB7XG4gICAgdHlwZXNjcmlwdDogW1wiLi8qKi8qLnRzXCJdLFxuICAgIHB5dGhvbjogW1wiLi8qKi8qLnB5XCJdLFxuICAgIGphdmE6IFtcInNyYy8qKi8qLmphdmFcIl0sXG4gICAgY3NoYXJwOiBbXCIuLyoqLyouY3NcIl0sXG4gICAgZ286IFtcIi4vKiovKi5nb1wiXSxcbiAgfVtsYW5ndWFnZV07XG5cbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBjZGt0Zkpzb25QYXRoLFxuICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgeyAuLi5jZGt0Zkpzb24sIHdhdGNoUGF0dGVybjogZGVmYXVsdFdhdGNoUGF0dGVybiB9LFxuICAgICAgbnVsbCxcbiAgICAgIDIsXG4gICAgKSxcbiAgKTtcbiAgbG9nZ2VyLmRlYnVnKGBXcml0ZSBkZWZhdWx0IHdhdGNoUGF0dGVybiBmb3IgJHtsYW5ndWFnZX0gaW4gY2RrdGYuanNvbi5gKTtcblxuICByZXR1cm4gZGVmYXVsdFdhdGNoUGF0dGVybjtcbn1cblxuY29uc3QgcHJvamVjdFN0YXR1cyA9IChwcm9qZWN0PzogQ2RrdGZQcm9qZWN0KSA9PiB7XG4gIGlmICghcHJvamVjdD8uc3RhY2tzVG9SdW4ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGluUHJvZ3Jlc3M6IFtdLFxuICAgICAgZmluaXNoZWQ6IFtdLFxuICAgICAgcGVuZGluZzogW10sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGluUHJvZ3Jlc3MgPSBwcm9qZWN0LnN0YWNrc1RvUnVuLmZpbHRlcigocykgPT4gcy5pc1J1bm5pbmcpO1xuICBjb25zdCBmaW5pc2hlZCA9IHByb2plY3Quc3RhY2tzVG9SdW4uZmlsdGVyKChzKSA9PiBzLmlzRG9uZSk7XG4gIGNvbnN0IHBlbmRpbmcgPSBwcm9qZWN0LnN0YWNrc1RvUnVuLmZpbHRlcigocykgPT4gcy5pc1BlbmRpbmcpO1xuICByZXR1cm4geyBpblByb2dyZXNzLCBmaW5pc2hlZCwgcGVuZGluZyB9O1xufTtcblxuZXhwb3J0IHR5cGUgU3RhdGUgPVxuICB8IHtcbiAgICAgIHR5cGU6IFwid2FpdGluZ1wiO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcInJ1bm5pbmdcIjtcbiAgICAgIG5leHRSdW5RdWV1ZWQ6IGJvb2xlYW47XG4gICAgICBjdXJyZW50UnVuOiBQcm9taXNlPHZvaWQ+O1xuICAgICAgaW5Qcm9ncmVzczogQ2RrdGZTdGFja1tdO1xuICAgICAgZmluaXNoZWQ6IENka3RmU3RhY2tbXTtcbiAgICAgIHBlbmRpbmc6IENka3RmU3RhY2tbXTtcbiAgICB9XG4gIHwgeyB0eXBlOiBcInN0b3BwZWRcIiB9O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2F0Y2goXG4gIHByb2plY3RPcHRpb25zOiBDZGt0ZlByb2plY3RPcHRpb25zLFxuICBtdXRhdGlvbk9wdGlvbnM6IE11dGF0aW9uT3B0aW9ucyxcbiAgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsLFxuICBvblN0YXRlQ2hhbmdlOiAobmV3U3RhdGU6IFN0YXRlKSA9PiB2b2lkLFxuKSB7XG4gIGNvbnN0IHBhdHRlcm5zID0gZ2V0T3JXcml0ZURlZmF1bHRXYXRjaENvbmZpZygpO1xuICBjb25zdCB3YXRjaGVyID0gY2hva2lkYXIud2F0Y2gocGF0dGVybnMsIHtcbiAgICBpZ25vcmVJbml0aWFsOiB0cnVlLFxuICB9KTtcbiAgbGV0IHN0YXRlOiBTdGF0ZSA9IHsgdHlwZTogXCJ3YWl0aW5nXCIgfTtcbiAgY29uc3QgY2hhbmdlU3RhdGUgPSAobmV3U3RhdGU6IFN0YXRlKSA9PiB7XG4gICAgc3RhdGUgPSBuZXdTdGF0ZTtcbiAgICBvblN0YXRlQ2hhbmdlKHN0YXRlKTtcbiAgfTtcblxuICBhc3luYyBmdW5jdGlvbiBydW4oKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFwiUnVubmluZyBjZGt0biBkZXBsb3lcIik7XG4gICAgY29uc3QgcHJvamVjdCA9IG5ldyBDZGt0ZlByb2plY3Qoe1xuICAgICAgc3ludGhPcmlnaW46IFwid2F0Y2hcIixcbiAgICAgIC4uLnByb2plY3RPcHRpb25zLFxuICAgICAgb25Mb2c6IChsb2cpID0+IHtcbiAgICAgICAgaWYgKHByb2plY3RPcHRpb25zLm9uTG9nKSB7XG4gICAgICAgICAgcHJvamVjdE9wdGlvbnMub25Mb2cobG9nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUudHlwZSA9PT0gXCJydW5uaW5nXCIpIHtcbiAgICAgICAgICBjaGFuZ2VTdGF0ZSh7IC4uLnN0YXRlLCAuLi5wcm9qZWN0U3RhdHVzKHByb2plY3QpIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGFib3J0ID0gKCkgPT4gcHJvamVjdC5oYXJkQWJvcnQoKTtcbiAgICBhYm9ydFNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgYWJvcnQpO1xuICAgIGF3YWl0IHByb2plY3QuZGVwbG95KG11dGF0aW9uT3B0aW9ucyk7XG4gICAgYWJvcnRTaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGFib3J0KTtcbiAgICBsb2dnZXIuZGVidWcoXCJjZGt0biBkZXBsb3kgZmluaXNoZWRcIik7XG5cbiAgICBpZiAoc3RhdGUudHlwZSAhPT0gXCJydW5uaW5nXCIpIHtcbiAgICAgIHRocm93IEVycm9ycy5JbnRlcm5hbChcbiAgICAgICAgXCJXYXRjaCB3YXMgaW4gYSBzdGF0ZSB3aGVyZSB0aGUgc3RhdGUgd2FzIG5vdCBydW5uaW5nIGluIHRoZSBydW4gcGhhc2VcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLm5leHRSdW5RdWV1ZWQpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcIk5leHQgcnVuIHdhcyBxdWV1ZWQsIHN0YXJ0aW5nIGl0IG5vd1wiKTtcbiAgICAgIGNoYW5nZVN0YXRlKHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG5leHRSdW5RdWV1ZWQ6IGZhbHNlLFxuICAgICAgICBjdXJyZW50UnVuOiBydW4oKSxcbiAgICAgICAgLi4ucHJvamVjdFN0YXR1cyhwcm9qZWN0KSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dnZXIuZGVidWcoXCJOb3RoaW5nIHF1ZXVlZCwgd2FpdGluZyBmb3IgY2hhbmdlc1wiKTtcbiAgICAgIGNoYW5nZVN0YXRlKHsgdHlwZTogXCJ3YWl0aW5nXCIgfSk7XG4gICAgfVxuICB9XG5cbiAgYWJvcnRTaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsICgpID0+IHtcbiAgICBsb2dnZXIuZGVidWcoXCJBYm9ydCBzaWduYWwgcmVjZWl2ZWQsIHN0b3BwaW5nIHdhdGNoXCIpO1xuICAgIHdhdGNoZXIuY2xvc2UoKTtcbiAgICBjaGFuZ2VTdGF0ZSh7IHR5cGU6IFwic3RvcHBlZFwiIH0pO1xuICB9KTtcblxuICBjb25zdCBvbkZpbGVDaGFuZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHN0YXRlLnR5cGUgPT09IFwic3RvcHBlZFwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLnR5cGUgPT09IFwicnVubmluZ1wiKSB7XG4gICAgICBjaGFuZ2VTdGF0ZSh7IC4uLnN0YXRlLCBuZXh0UnVuUXVldWVkOiB0cnVlIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNoYW5nZVN0YXRlKHtcbiAgICAgIHR5cGU6IFwicnVubmluZ1wiLFxuICAgICAgbmV4dFJ1blF1ZXVlZDogZmFsc2UsXG4gICAgICBjdXJyZW50UnVuOiBydW4oKSxcbiAgICAgIC4uLnByb2plY3RTdGF0dXMoKSxcbiAgICB9KTtcbiAgfTtcblxuICB3YXRjaGVyLm9uKFwiYWxsXCIsIG9uRmlsZUNoYW5nZSk7XG4gIC8vIGluaXRpYWxseSBydW4gb25jZVxuICBvbkZpbGVDaGFuZ2UoKTtcblxuICBhd2FpdCBzZW5kVGVsZW1ldHJ5KFwid2F0Y2hcIiwgeyBldmVudDogXCJzdGFydFwiIH0pO1xufVxuIl19
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|