@cdktn/cli-core 0.23.0-pre.8 → 0.23.0

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.
Files changed (169) hide show
  1. package/ambient.d.ts +0 -1
  2. package/build/lib/cdktf-config.d.ts.map +1 -0
  3. package/build/lib/cdktf-config.js +108 -0
  4. package/build/lib/cdktf-project-io-handler.d.ts.map +1 -0
  5. package/build/lib/cdktf-project-io-handler.js +84 -0
  6. package/build/lib/cdktf-project.d.ts.map +1 -0
  7. package/build/lib/cdktf-project.js +370 -0
  8. package/{src → build}/lib/cdktf-stack.d.ts +1 -0
  9. package/build/lib/cdktf-stack.d.ts.map +1 -0
  10. package/build/lib/cdktf-stack.js +386 -0
  11. package/build/lib/convert.d.ts.map +1 -0
  12. package/build/lib/convert.js +51 -0
  13. package/build/lib/dependencies/cdktf-config-manager.d.ts.map +1 -0
  14. package/build/lib/dependencies/cdktf-config-manager.js +36 -0
  15. package/build/lib/dependencies/dependency-manager.d.ts.map +1 -0
  16. package/build/lib/dependencies/dependency-manager.js +393 -0
  17. package/build/lib/dependencies/package-manager.d.ts.map +1 -0
  18. package/build/lib/dependencies/package-manager.js +581 -0
  19. package/build/lib/dependencies/prebuilt-providers.d.ts.map +1 -0
  20. package/build/lib/dependencies/prebuilt-providers.js +221 -0
  21. package/build/lib/dependencies/registry-api.d.ts.map +1 -0
  22. package/build/lib/dependencies/registry-api.js +77 -0
  23. package/build/lib/dependencies/version-constraints.d.ts.map +1 -0
  24. package/build/lib/dependencies/version-constraints.js +95 -0
  25. package/build/lib/error-reporting.d.ts.map +1 -0
  26. package/build/lib/error-reporting.js +133 -0
  27. package/build/lib/errors.d.ts.map +1 -0
  28. package/build/lib/errors.js +10 -0
  29. package/build/lib/execution-logs.d.ts.map +1 -0
  30. package/build/lib/execution-logs.js +47 -0
  31. package/build/lib/get.d.ts.map +1 -0
  32. package/build/lib/get.js +90 -0
  33. package/build/lib/helpers/stack-helpers.d.ts.map +1 -0
  34. package/build/lib/helpers/stack-helpers.js +155 -0
  35. package/build/lib/index.d.ts.map +1 -0
  36. package/{src → build}/lib/index.js +1 -2
  37. package/build/lib/init.d.ts.map +1 -0
  38. package/build/lib/init.js +131 -0
  39. package/build/lib/local-provider-constraints.d.ts.map +1 -0
  40. package/build/lib/local-provider-constraints.js +95 -0
  41. package/build/lib/local-provider-versions.d.ts.map +1 -0
  42. package/build/lib/local-provider-versions.js +73 -0
  43. package/{src → build}/lib/models/deploy-machine.d.ts +3 -11
  44. package/build/lib/models/deploy-machine.d.ts.map +1 -0
  45. package/build/lib/models/deploy-machine.js +283 -0
  46. package/build/lib/models/interactive-process.d.ts +28 -0
  47. package/build/lib/models/interactive-process.d.ts.map +1 -0
  48. package/build/lib/models/interactive-process.js +59 -0
  49. package/{src → build}/lib/models/schema.d.ts.map +1 -1
  50. package/build/lib/models/schema.js +181 -0
  51. package/{src → build}/lib/models/terraform-cli.d.ts +1 -0
  52. package/build/lib/models/terraform-cli.d.ts.map +1 -0
  53. package/build/lib/models/terraform-cli.js +355 -0
  54. package/build/lib/models/terraform.d.ts.map +1 -0
  55. package/build/lib/models/terraform.js +72 -0
  56. package/build/lib/output.d.ts.map +1 -0
  57. package/build/lib/output.js +211 -0
  58. package/build/lib/provider-add.d.ts.map +1 -0
  59. package/build/lib/provider-add.js +30 -0
  60. package/build/lib/server/terraform-logs.d.ts.map +1 -0
  61. package/build/lib/server/terraform-logs.js +19 -0
  62. package/{src → build}/lib/synth-stack.d.ts +1 -0
  63. package/build/lib/synth-stack.d.ts.map +1 -0
  64. package/build/lib/synth-stack.js +251 -0
  65. package/build/lib/synth.d.ts.map +1 -0
  66. package/build/lib/synth.js +67 -0
  67. package/{src → build}/lib/terraform-json.d.ts.map +1 -1
  68. package/build/lib/terraform-json.js +82 -0
  69. package/build/lib/terraform-provider-lock.d.ts.map +1 -0
  70. package/{src → build}/lib/terraform-provider-lock.js +2 -2
  71. package/{src → build}/lib/watch.d.ts +1 -0
  72. package/build/lib/watch.d.ts.map +1 -0
  73. package/build/lib/watch.js +155 -0
  74. package/eslint.config.mjs +2 -70
  75. package/package.json +22 -33
  76. package/templates/go/go.mod +1 -1
  77. package/templates/python/Pipfile +1 -1
  78. package/templates/typescript/.hooks.sscaff.js +1 -1
  79. package/templates/typescript/jest.config.js +1 -1
  80. package/src/lib/cdktf-config.d.ts.map +0 -1
  81. package/src/lib/cdktf-config.js +0 -108
  82. package/src/lib/cdktf-project-io-handler.d.ts.map +0 -1
  83. package/src/lib/cdktf-project-io-handler.js +0 -84
  84. package/src/lib/cdktf-project.d.ts.map +0 -1
  85. package/src/lib/cdktf-project.js +0 -371
  86. package/src/lib/cdktf-stack.d.ts.map +0 -1
  87. package/src/lib/cdktf-stack.js +0 -386
  88. package/src/lib/convert.d.ts.map +0 -1
  89. package/src/lib/convert.js +0 -51
  90. package/src/lib/dependencies/cdktf-config-manager.d.ts.map +0 -1
  91. package/src/lib/dependencies/cdktf-config-manager.js +0 -36
  92. package/src/lib/dependencies/dependency-manager.d.ts.map +0 -1
  93. package/src/lib/dependencies/dependency-manager.js +0 -393
  94. package/src/lib/dependencies/package-manager.d.ts.map +0 -1
  95. package/src/lib/dependencies/package-manager.js +0 -581
  96. package/src/lib/dependencies/prebuilt-providers.d.ts.map +0 -1
  97. package/src/lib/dependencies/prebuilt-providers.js +0 -220
  98. package/src/lib/dependencies/registry-api.d.ts.map +0 -1
  99. package/src/lib/dependencies/registry-api.js +0 -77
  100. package/src/lib/dependencies/version-constraints.d.ts.map +0 -1
  101. package/src/lib/dependencies/version-constraints.js +0 -95
  102. package/src/lib/error-reporting.d.ts.map +0 -1
  103. package/src/lib/error-reporting.js +0 -133
  104. package/src/lib/errors.d.ts.map +0 -1
  105. package/src/lib/errors.js +0 -10
  106. package/src/lib/execution-logs.d.ts.map +0 -1
  107. package/src/lib/execution-logs.js +0 -47
  108. package/src/lib/get.d.ts.map +0 -1
  109. package/src/lib/get.js +0 -90
  110. package/src/lib/helpers/stack-helpers.d.ts.map +0 -1
  111. package/src/lib/helpers/stack-helpers.js +0 -155
  112. package/src/lib/index.d.ts.map +0 -1
  113. package/src/lib/init.d.ts.map +0 -1
  114. package/src/lib/init.js +0 -131
  115. package/src/lib/local-provider-constraints.d.ts.map +0 -1
  116. package/src/lib/local-provider-constraints.js +0 -95
  117. package/src/lib/local-provider-versions.d.ts.map +0 -1
  118. package/src/lib/local-provider-versions.js +0 -73
  119. package/src/lib/models/deploy-machine.d.ts.map +0 -1
  120. package/src/lib/models/deploy-machine.js +0 -280
  121. package/src/lib/models/pty-process.d.ts +0 -29
  122. package/src/lib/models/pty-process.d.ts.map +0 -1
  123. package/src/lib/models/pty-process.js +0 -132
  124. package/src/lib/models/schema.js +0 -181
  125. package/src/lib/models/terraform-cli.d.ts.map +0 -1
  126. package/src/lib/models/terraform-cli.js +0 -357
  127. package/src/lib/models/terraform.d.ts.map +0 -1
  128. package/src/lib/models/terraform.js +0 -72
  129. package/src/lib/output.d.ts.map +0 -1
  130. package/src/lib/output.js +0 -211
  131. package/src/lib/provider-add.d.ts.map +0 -1
  132. package/src/lib/provider-add.js +0 -30
  133. package/src/lib/server/terraform-logs.d.ts.map +0 -1
  134. package/src/lib/server/terraform-logs.js +0 -19
  135. package/src/lib/synth-stack.d.ts.map +0 -1
  136. package/src/lib/synth-stack.js +0 -251
  137. package/src/lib/synth.d.ts.map +0 -1
  138. package/src/lib/synth.js +0 -67
  139. package/src/lib/terraform-json.js +0 -82
  140. package/src/lib/terraform-provider-lock.d.ts.map +0 -1
  141. package/src/lib/watch.d.ts.map +0 -1
  142. package/src/lib/watch.js +0 -155
  143. /package/{src → build}/lib/cdktf-config.d.ts +0 -0
  144. /package/{src → build}/lib/cdktf-project-io-handler.d.ts +0 -0
  145. /package/{src → build}/lib/cdktf-project.d.ts +0 -0
  146. /package/{src → build}/lib/convert.d.ts +0 -0
  147. /package/{src → build}/lib/dependencies/cdktf-config-manager.d.ts +0 -0
  148. /package/{src → build}/lib/dependencies/dependency-manager.d.ts +0 -0
  149. /package/{src → build}/lib/dependencies/package-manager.d.ts +0 -0
  150. /package/{src → build}/lib/dependencies/prebuilt-providers.d.ts +0 -0
  151. /package/{src → build}/lib/dependencies/registry-api.d.ts +0 -0
  152. /package/{src → build}/lib/dependencies/version-constraints.d.ts +0 -0
  153. /package/{src → build}/lib/error-reporting.d.ts +0 -0
  154. /package/{src → build}/lib/errors.d.ts +0 -0
  155. /package/{src → build}/lib/execution-logs.d.ts +0 -0
  156. /package/{src → build}/lib/get.d.ts +0 -0
  157. /package/{src → build}/lib/helpers/stack-helpers.d.ts +0 -0
  158. /package/{src → build}/lib/index.d.ts +0 -0
  159. /package/{src → build}/lib/init.d.ts +0 -0
  160. /package/{src → build}/lib/local-provider-constraints.d.ts +0 -0
  161. /package/{src → build}/lib/local-provider-versions.d.ts +0 -0
  162. /package/{src → build}/lib/models/schema.d.ts +0 -0
  163. /package/{src → build}/lib/models/terraform.d.ts +0 -0
  164. /package/{src → build}/lib/output.d.ts +0 -0
  165. /package/{src → build}/lib/provider-add.d.ts +0 -0
  166. /package/{src → build}/lib/server/terraform-logs.d.ts +0 -0
  167. /package/{src → build}/lib/synth.d.ts +0 -0
  168. /package/{src → build}/lib/terraform-json.d.ts +0 -0
  169. /package/{src → build}/lib/terraform-provider-lock.d.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"prebuilt-providers.d.ts","sourceRoot":"","sources":["prebuilt-providers.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAc1D,KAAK,YAAY,GAAG;IAClB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB,CAAC;AAeF,wBAAsB,eAAe,kBAEpC;AA2CD,wBAAsB,uBAAuB,0BAE5C;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,kBAAkB,EAC9B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAc7B;AAuDD,KAAK,uBAAuB,GAAG;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,6BAA6B,EAAE,MAAM,CAAC;IACtC,6BAA6B,EAAE,MAAM,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAsB,iCAAiC,CACrD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED,wBAAsB,8BAA8B,CAClD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAwCpC;AASD,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,kBAAkB,EAC9B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,IAAI,CAAC,CAsDrD;AAED,wBAAsB,qCAAqC,CACzD,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,GAAG,CAAC,CAuBd"}
@@ -1,220 +0,0 @@
1
- "use strict";
2
- // Copyright (c) HashiCorp, Inc
3
- // SPDX-License-Identifier: MPL-2.0
4
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
- if (k2 === undefined) k2 = k;
6
- var desc = Object.getOwnPropertyDescriptor(m, k);
7
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
- desc = { enumerable: true, get: function() { return m[k]; } };
9
- }
10
- Object.defineProperty(o, k2, desc);
11
- }) : (function(o, m, k, k2) {
12
- if (k2 === undefined) k2 = k;
13
- o[k2] = m[k];
14
- }));
15
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
- Object.defineProperty(o, "default", { enumerable: true, value: v });
17
- }) : function(o, v) {
18
- o["default"] = v;
19
- });
20
- var __importStar = (this && this.__importStar) || function (mod) {
21
- if (mod && mod.__esModule) return mod;
22
- var result = {};
23
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
24
- __setModuleDefault(result, mod);
25
- return result;
26
- };
27
- var __importDefault = (this && this.__importDefault) || function (mod) {
28
- return (mod && mod.__esModule) ? mod : { "default": mod };
29
- };
30
- Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.getPrebuiltProviderVersionInformation = exports.getPrebuiltProviderVersions = exports.getAllPrebuiltProviderVersions = exports.getPrebuiltProviderRepositoryName = exports.getNpmPackageName = exports.getAllPrebuiltProviders = exports.resetFetchCache = void 0;
32
- const https_proxy_agent_1 = require("https-proxy-agent");
33
- const node_fetch_1 = __importDefault(require("node-fetch"));
34
- const semver = __importStar(require("semver"));
35
- const commons_1 = require("@cdktn/commons");
36
- const dependency_manager_1 = require("./dependency-manager");
37
- const version_constraints_1 = require("./version-constraints");
38
- const proxy = process.env.http_proxy || process.env.HTTP_PROXY;
39
- let agent;
40
- if (proxy) {
41
- agent = new https_proxy_agent_1.HttpsProxyAgent(proxy);
42
- }
43
- // uses https://github.com/hashicorp/cdktf-repository-manager/blob/main/provider.json
44
- // However, it got cleared out. We'll need to host the existing list somewhere
45
- // const providersMapUrl = `https://www.cdk.tf/.well-known/prebuilt-providers.json`;
46
- const providersMapUrl = "https://raw.githubusercontent.com/cdktn-io/cdktn-repository-manager/refs/heads/main/provider.json";
47
- const fetchCache = new Map();
48
- async function cachedFetch(url) {
49
- if (fetchCache.has(url)) {
50
- return fetchCache.get(url);
51
- }
52
- const responseBody = await fetchWrapped(url);
53
- fetchCache.set(url, responseBody);
54
- return responseBody;
55
- }
56
- // For testing purposes only
57
- async function resetFetchCache() {
58
- fetchCache.clear();
59
- }
60
- exports.resetFetchCache = resetFetchCache;
61
- async function fetchWrapped(url) {
62
- let response;
63
- try {
64
- response = await (0, node_fetch_1.default)(url, {
65
- agent,
66
- headers: { "User-Agent": "OpenConstructs/cdktn-cli" },
67
- });
68
- }
69
- catch (e) {
70
- // Fetch only fails here because of connectivity issues
71
- commons_1.logger.error("Unable to request pre-built provider information: Network error, please check if you're connected to the internet and try again");
72
- throw new Error("Connection error");
73
- }
74
- if (!response.ok) {
75
- if (response.status >= 500) {
76
- throw new Error("Unexpected error while finding pre-built provider. Please try again.");
77
- }
78
- if (response.status === 404) {
79
- throw new Error(`Pre-built provider information not found`);
80
- }
81
- if (response.status >= 400) {
82
- const responseText = await response.text();
83
- // This means that we're sending a bad request. We should record this in sentry too.
84
- commons_1.logger.error(`Received ${response.status} response from ${url}: ${responseText}`);
85
- throw new Error("Unexpected error while finding pre-built provider. Please try again.");
86
- }
87
- }
88
- return response.json();
89
- }
90
- async function getAllPrebuiltProviders() {
91
- return cachedFetch(providersMapUrl);
92
- }
93
- exports.getAllPrebuiltProviders = getAllPrebuiltProviders;
94
- async function getNpmPackageName(constraint, useCdktn) {
95
- const providers = await getAllPrebuiltProviders();
96
- const entry = Object.entries(providers).find(([, p]) => dependency_manager_1.ProviderConstraint.fromConfigEntry(p).source.toLowerCase() ===
97
- constraint.source.toLowerCase());
98
- if (!entry) {
99
- return undefined; // no pre-built provider found for this constraint
100
- }
101
- const name = entry[0];
102
- return useCdktn ? `@cdktn/provider-${name}` : `@cdktf/provider-${name}`;
103
- }
104
- exports.getNpmPackageName = getNpmPackageName;
105
- async function getPrebuiltProviderRepositoryName(packageName) {
106
- var _a;
107
- const url = `https://registry.npmjs.org/${packageName}`;
108
- const result = await cachedFetch(url);
109
- const repositoryUrl = (_a = result === null || result === void 0 ? void 0 : result.repository) === null || _a === void 0 ? void 0 : _a.url;
110
- if (!repositoryUrl)
111
- return "";
112
- const repositoryRegex = /^git\+https:\/\/(github.com\/.*)\.git$/;
113
- const match = repositoryRegex.exec(repositoryUrl);
114
- if (!match)
115
- return "";
116
- return match[1];
117
- }
118
- exports.getPrebuiltProviderRepositoryName = getPrebuiltProviderRepositoryName;
119
- async function getAllPrebuiltProviderVersions(packageName) {
120
- const url = `https://registry.npmjs.org/${packageName}`;
121
- const result = await cachedFetch(url);
122
- const versions = Object.entries(result.versions)
123
- .map(([version, packageJson]) => {
124
- var _a, _b, _c;
125
- const provider = (_a = packageJson.cdktf) === null || _a === void 0 ? void 0 : _a.provider;
126
- if (!provider ||
127
- (!((_b = packageJson.peerDependencies) === null || _b === void 0 ? void 0 : _b.cdktf) &&
128
- !((_c = packageJson.peerDependencies) === null || _c === void 0 ? void 0 : _c.cdktn))) {
129
- commons_1.logger.trace(`skipping version ${version} of ${packageName} as it does not have a cdktf.provider or peerDependencies.cdktf/cdktn in package.json`);
130
- return undefined;
131
- }
132
- return {
133
- packageName,
134
- packageVersion: version,
135
- providerVersion: provider.version,
136
- cdktfPeerDependencyConstraint: packageJson.peerDependencies.cdktf,
137
- cdktnPeerDependencyConstraint: packageJson.peerDependencies.cdktn,
138
- };
139
- })
140
- .filter((v) => v !== undefined);
141
- // latest version first, sorted by packageVersion as that
142
- // one always increases while the providerVersion may not
143
- versions.sort((a, b) => {
144
- if (semver.gt(a.packageVersion, b.packageVersion)) {
145
- return -1;
146
- }
147
- if (semver.lt(a.packageVersion, b.packageVersion)) {
148
- return 1;
149
- }
150
- return 0;
151
- });
152
- return versions;
153
- }
154
- exports.getAllPrebuiltProviderVersions = getAllPrebuiltProviderVersions;
155
- function cdktfVersionMatches(cdktfVersion, cdktfPeerDependencyConstraint) {
156
- return semver.satisfies(cdktfVersion, cdktfPeerDependencyConstraint);
157
- }
158
- async function getPrebuiltProviderVersions(constraint, cdktfVersion) {
159
- const cdktfProviderName = await getNpmPackageName(constraint, false);
160
- const cdktnProviderName = await getNpmPackageName(constraint, true);
161
- // no pre-built provider exists
162
- if (!cdktfProviderName && !cdktnProviderName) {
163
- return null;
164
- }
165
- const cdktfVersions = cdktfProviderName
166
- ? await getAllPrebuiltProviderVersions(cdktfProviderName)
167
- : [];
168
- commons_1.logger.debug(`Found versions for ${cdktfProviderName}: ${JSON.stringify(cdktfVersions, null, 2)}`);
169
- const cdktnVersions = cdktnProviderName
170
- ? await getAllPrebuiltProviderVersions(cdktnProviderName)
171
- : [];
172
- commons_1.logger.debug(`Found versions for ${cdktnProviderName}: ${JSON.stringify(cdktnVersions, null, 2)}`);
173
- const versions = cdktfVersions.concat(cdktnVersions);
174
- // find first the version that matches the requested provider version and cdktf version
175
- const matchingVersions = versions.filter((v) => {
176
- if (!cdktfVersionMatches(cdktfVersion, v.cdktfPeerDependencyConstraint) &&
177
- !cdktfVersionMatches(cdktfVersion, v.cdktnPeerDependencyConstraint)) {
178
- return false; // skip if cdktf version does not match
179
- }
180
- if (constraint.version) {
181
- return (0, version_constraints_1.versionMatchesConstraint)(v.providerVersion, constraint.version);
182
- }
183
- return true; // if no version constraint is passed, return true on the first match
184
- });
185
- if (!matchingVersions.length) {
186
- return null;
187
- }
188
- const npmPackageVersions = matchingVersions
189
- .map((matchingVersion) => ({
190
- name: matchingVersion.packageName,
191
- version: matchingVersion.packageVersion,
192
- }))
193
- .sort((a, b) => semver.compare(a.version, b.version))
194
- .reverse();
195
- return npmPackageVersions;
196
- }
197
- exports.getPrebuiltProviderVersions = getPrebuiltProviderVersions;
198
- async function getPrebuiltProviderVersionInformation(packageName, packageVersion) {
199
- // Go packages include an extra `vX.Y.Z`
200
- if (packageVersion.startsWith("v")) {
201
- packageVersion = packageVersion.slice(1);
202
- }
203
- const url = `https://registry.npmjs.org/${packageName}/${packageVersion}`;
204
- const result = await cachedFetch(url);
205
- let providerName = result.cdktf.provider.name;
206
- if (providerName) {
207
- providerName = providerName.replace("registry.terraform.io/", "");
208
- providerName = providerName.replace("hashicorp/", "");
209
- }
210
- return {
211
- packageName: result.name,
212
- packageVersion: result.version,
213
- providerName,
214
- providerVersion: result.cdktf.provider.version,
215
- cdktfVersion: result.peerDependencies["cdktf"],
216
- cdktnVersion: result.peerDependencies["cdktn"],
217
- };
218
- }
219
- exports.getPrebuiltProviderVersionInformation = getPrebuiltProviderVersionInformation;
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlYnVpbHQtcHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJlYnVpbHQtcHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVuQyx5REFBb0Q7QUFDcEQsNERBQStCO0FBQy9CLCtDQUFpQztBQUNqQyw0Q0FBd0M7QUFDeEMsNkRBQTBEO0FBQzFELCtEQUFpRTtBQUVqRSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztBQUMvRCxJQUFJLEtBQWtDLENBQUM7QUFDdkMsSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUNWLEtBQUssR0FBRyxJQUFJLG1DQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVELHFGQUFxRjtBQUNyRiw4RUFBOEU7QUFDOUUsb0ZBQW9GO0FBQ3BGLE1BQU0sZUFBZSxHQUNuQixtR0FBbUcsQ0FBQztBQUt0RyxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBZSxDQUFDO0FBQzFDLEtBQUssVUFBVSxXQUFXLENBQUksR0FBVztJQUN2QyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sWUFBWSxDQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRWxDLE9BQU8sWUFBaUIsQ0FBQztBQUMzQixDQUFDO0FBRUQsNEJBQTRCO0FBQ3JCLEtBQUssVUFBVSxlQUFlO0lBQ25DLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNyQixDQUFDO0FB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LE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU87UUFDOUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7UUFDOUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7S0FDL0MsQ0FBQztBQUNKLENBQUM7QUExQkQsc0ZBMEJDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcblxuaW1wb3J0IHsgSHR0cHNQcm94eUFnZW50IH0gZnJvbSBcImh0dHBzLXByb3h5LWFnZW50XCI7XG5pbXBvcnQgZmV0Y2ggZnJvbSBcIm5vZGUtZmV0Y2hcIjtcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tIFwic2VtdmVyXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IFByb3ZpZGVyQ29uc3RyYWludCB9IGZyb20gXCIuL2RlcGVuZGVuY3ktbWFuYWdlclwiO1xuaW1wb3J0IHsgdmVyc2lvbk1hdGNoZXNDb25zdHJhaW50IH0gZnJvbSBcIi4vdmVyc2lvbi1jb25zdHJhaW50c1wiO1xuXG5jb25zdCBwcm94eSA9IHByb2Nlc3MuZW52Lmh0dHBfcHJveHkgfHwgcHJvY2Vzcy5lbnYuSFRUUF9QUk9YWTtcbmxldCBhZ2VudDogSHR0cHNQcm94eUFnZW50IHwgdW5kZWZpbmVkO1xuaWYgKHByb3h5KSB7XG4gIGFnZW50ID0gbmV3IEh0dHBzUHJveHlBZ2VudChwcm94eSk7XG59XG5cbi8vIHVzZXMgaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC9jZGt0Zi1yZXBvc2l0b3J5LW1hbmFnZXIvYmxvYi9tYWluL3Byb3ZpZGVyLmpzb25cbi8vIEhvd2V2ZXIsIGl0IGdvdCBjbGVhcmVkIG91dC4gV2UnbGwgbmVlZCB0byBob3N0IHRoZSBleGlzdGluZyBsaXN0IHNvbWV3aGVyZVxuLy8gY29uc3QgcHJvdmlkZXJzTWFwVXJsID0gYGh0dHBzOi8vd3d3LmNkay50Zi8ud2VsbC1rbm93bi9wcmVidWlsdC1wcm92aWRlcnMuanNvbmA7XG5jb25zdCBwcm92aWRlcnNNYXBVcmwgPVxuICBcImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9jZGt0bi1pby9jZGt0bi1yZXBvc2l0b3J5LW1hbmFnZXIvcmVmcy9oZWFkcy9tYWluL3Byb3ZpZGVyLmpzb25cIjtcbnR5cGUgUHJvdmlkZXJzTWFwID0ge1xuICBbbmFtZTogc3RyaW5nXTogc3RyaW5nO1xufTtcblxuY29uc3QgZmV0Y2hDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG5hc3luYyBmdW5jdGlvbiBjYWNoZWRGZXRjaDxUPih1cmw6IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICBpZiAoZmV0Y2hDYWNoZS5oYXModXJsKSkge1xuICAgIHJldHVybiBmZXRjaENhY2hlLmdldCh1cmwpIGFzIFQ7XG4gIH1cblxuICBjb25zdCByZXNwb25zZUJvZHkgPSBhd2FpdCBmZXRjaFdyYXBwZWQ8VD4odXJsKTtcbiAgZmV0Y2hDYWNoZS5zZXQodXJsLCByZXNwb25zZUJvZHkpO1xuXG4gIHJldHVybiByZXNwb25zZUJvZHkgYXMgVDtcbn1cblxuLy8gRm9yIHRlc3RpbmcgcHVycG9zZXMgb25seVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc2V0RmV0Y2hDYWNoZSgpIHtcbiAgZmV0Y2hDYWNoZS5jbGVhcigpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFdyYXBwZWQ8VD4odXJsOiBzdHJpbmcpOiBQcm9taXNlPFQ+IHtcbiAgbGV0IHJlc3BvbnNlO1xuICB0cnkge1xuICAgIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICBhZ2VudCxcbiAgICAgIGhlYWRlcnM6IHsgXCJVc2VyLUFnZW50XCI6IFwiT3BlbkNvbnN0cnVjdHMvY2RrdG4tY2xpXCIgfSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIEZldGNoIG9ubHkgZmFpbHMgaGVyZSBiZWNhdXNlIG9mIGNvbm5lY3Rpdml0eSBpc3N1ZXNcbiAgICBsb2dnZXIuZXJyb3IoXG4gICAgICBcIlVuYWJsZSB0byByZXF1ZXN0IHByZS1idWlsdCBwcm92aWRlciBpbmZvcm1hdGlvbjogTmV0d29yayBlcnJvciwgcGxlYXNlIGNoZWNrIGlmIHlvdSdyZSBjb25uZWN0ZWQgdG8gdGhlIGludGVybmV0IGFuZCB0cnkgYWdhaW5cIixcbiAgICApO1xuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ29ubmVjdGlvbiBlcnJvclwiKTtcbiAgfVxuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID49IDUwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlVuZXhwZWN0ZWQgZXJyb3Igd2hpbGUgZmluZGluZyBwcmUtYnVpbHQgcHJvdmlkZXIuIFBsZWFzZSB0cnkgYWdhaW4uXCIsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJlLWJ1aWx0IHByb3ZpZGVyIGluZm9ybWF0aW9uIG5vdCBmb3VuZGApO1xuICAgIH1cbiAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID49IDQwMCkge1xuICAgICAgY29uc3QgcmVzcG9uc2VUZXh0ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHdlJ3JlIHNlbmRpbmcgYSBiYWQgcmVxdWVzdC4gV2Ugc2hvdWxkIHJlY29yZCB0aGlzIGluIHNlbnRyeSB0b28uXG4gICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgIGBSZWNlaXZlZCAke3Jlc3BvbnNlLnN0YXR1c30gcmVzcG9uc2UgZnJvbSAke3VybH06ICR7cmVzcG9uc2VUZXh0fWAsXG4gICAgICApO1xuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVW5leHBlY3RlZCBlcnJvciB3aGlsZSBmaW5kaW5nIHByZS1idWlsdCBwcm92aWRlci4gUGxlYXNlIHRyeSBhZ2Fpbi5cIixcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKSBhcyBQcm9taXNlPFQ+O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QWxsUHJlYnVpbHRQcm92aWRlcnMoKSB7XG4gIHJldHVybiBjYWNoZWRGZXRjaDxQcm92aWRlcnNNYXA+KHByb3ZpZGVyc01hcFVybCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXROcG1QYWNrYWdlTmFtZShcbiAgY29uc3RyYWludDogUHJvdmlkZXJDb25zdHJhaW50LFxuICB1c2VDZGt0bjogYm9vbGVhbixcbik6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHByb3ZpZGVycyA9IGF3YWl0IGdldEFsbFByZWJ1aWx0UHJvdmlkZXJzKCk7XG5cbiAgY29uc3QgZW50cnkgPSBPYmplY3QuZW50cmllcyhwcm92aWRlcnMpLmZpbmQoXG4gICAgKFssIHBdKSA9PlxuICAgICAgUHJvdmlkZXJDb25zdHJhaW50LmZyb21Db25maWdFbnRyeShwKS5zb3VyY2UudG9Mb3dlckNhc2UoKSA9PT1cbiAgICAgIGNvbnN0cmFpbnQuc291cmNlLnRvTG93ZXJDYXNlKCksXG4gICk7XG4gIGlmICghZW50cnkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBubyBwcmUtYnVpbHQgcHJvdmlkZXIgZm91bmQgZm9yIHRoaXMgY29uc3RyYWludFxuICB9XG4gIGNvbnN0IG5hbWUgPSBlbnRyeVswXTtcblxuICByZXR1cm4gdXNlQ2RrdG4gPyBgQGNka3RuL3Byb3ZpZGVyLSR7bmFtZX1gIDogYEBjZGt0Zi9wcm92aWRlci0ke25hbWV9YDtcbn1cblxudHlwZSBQYWNrYWdlSnNvbiA9IHtcbiAgLy8gaGFzIGJlZW4gaW50cm9kdWNlZCB2aWEgaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC9jZGt0Zi1wcm92aWRlci1wcm9qZWN0L3B1bGwvMjE3XG4gIGNka3RmPzoge1xuICAgIC8vIHByb3ZpZGVyIGlzIG9wdGlvbmFsIGFzIHdlIG1pZ2h0IHNldCBvdGhlciBjZGt0ZiByZWxhdGVkIGZpZWxkcyBpbiB0aGUgZnV0dXJlXG4gICAgLy8gZm9yIG90aGVyIGxpYnMgKGkuZS4gY29uc3RydWN0IHBhY2thZ2VzKSB3aGlsZSBzdGlsbCB1c2luZyB0aGUgY2RrdGYga2V5XG4gICAgcHJvdmlkZXI/OiB7XG4gICAgICAvKipcbiAgICAgICAqIG5hbWUgb2YgdGhlIHByb3ZpZGVyLCB3aWxsIHJlc29sdmUgdG8gdGhlIGZ1bGwgbmFtZSBhcyBpbiB0aGUgVGVycmFmb3JtIHNjaGVtYS5cbiAgICAgICAqIGUuZy4gcmVnaXN0cnkudGVycmFmb3JtLmlvL2hhc2hpY29ycC9hd3NcbiAgICAgICAqL1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgLyoqXG4gICAgICAgKiB0aGUgYWN0dWFsIHZlcnNpb24gdGhhdCB3YXMgdXNlZCB0byBidWlsZCB0aGUgcHJvdmlkZXJcbiAgICAgICAqIGUuZy4gNC4xMi4xXG4gICAgICAgKi9cbiAgICAgIHZlcnNpb246IHN0cmluZztcbiAgICB9O1xuICB9O1xuICBwZWVyRGVwZW5kZW5jaWVzPzoge1xuICAgIGNka3RmPzogc3RyaW5nO1xuICAgIGNka3RuPzogc3RyaW5nO1xuICB9O1xuICByZXBvc2l0b3J5Pzoge1xuICAgIHR5cGU6IHN0cmluZztcbiAgICB1cmw6IHN0cmluZztcbiAgfTtcbiAgLy8gLi4uIG1hbnkgbW9yZSBmaWVsZHNcbn07XG50eXBlIE5wbVBhY2thZ2VSZXN1bHQgPSB7XG4gIG5hbWU6IHN0cmluZzsgLy8gZS5nLiBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIlxuICB2ZXJzaW9uczoge1xuICAgIFt2ZXJzaW9uOiBzdHJpbmddOiBQYWNrYWdlSnNvbjtcbiAgfTtcbiAgcmVwb3NpdG9yeT86IHtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgdXJsOiBzdHJpbmc7XG4gIH07XG59O1xuXG50eXBlIE5wbVBhY2thZ2VTaW5nbGVWZXJzaW9uUmVzdWx0ID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgY2RrdGY6IHtcbiAgICBwcm92aWRlcjoge1xuICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIHBlZXJEZXBlbmRlbmNpZXM6IHtcbiAgICBbbmFtZTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xufTtcblxudHlwZSBQcmVidWlsdFByb3ZpZGVyVmVyc2lvbiA9IHtcbiAgcGFja2FnZVZlcnNpb246IHN0cmluZzsgLy8gZS5nLiBcIjcuMC40MlwiXG4gIHByb3ZpZGVyVmVyc2lvbjogc3RyaW5nOyAvLyBlLmcuIFwiNC4xMi4xXCJcbiAgY2RrdGZQZWVyRGVwZW5kZW5jeUNvbnN0cmFpbnQ6IHN0cmluZzsgLy8gZS5nLiBcIl4xMC4wLjBcIlxuICBjZGt0blBlZXJEZXBlbmRlbmN5Q29uc3RyYWludDogc3RyaW5nO1xuICBwYWNrYWdlTmFtZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFByZWJ1aWx0UHJvdmlkZXJSZXBvc2l0b3J5TmFtZShcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHVybCA9IGBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8ke3BhY2thZ2VOYW1lfWA7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhY2hlZEZldGNoPE5wbVBhY2thZ2VSZXN1bHQ+KHVybCk7XG5cbiAgY29uc3QgcmVwb3NpdG9yeVVybCA9IHJlc3VsdD8ucmVwb3NpdG9yeT8udXJsO1xuXG4gIGlmICghcmVwb3NpdG9yeVVybCkgcmV0dXJuIFwiXCI7XG5cbiAgY29uc3QgcmVwb3NpdG9yeVJlZ2V4ID0gL15naXRcXCtodHRwczpcXC9cXC8oZ2l0aHViLmNvbVxcLy4qKVxcLmdpdCQvO1xuICBjb25zdCBtYXRjaCA9IHJlcG9zaXRvcnlSZWdleC5leGVjKHJlcG9zaXRvcnlVcmwpO1xuXG4gIGlmICghbWF0Y2gpIHJldHVybiBcIlwiO1xuXG4gIHJldHVybiBtYXRjaFsxXTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEFsbFByZWJ1aWx0UHJvdmlkZXJWZXJzaW9ucyhcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8UHJlYnVpbHRQcm92aWRlclZlcnNpb25bXT4ge1xuICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJHtwYWNrYWdlTmFtZX1gO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBjYWNoZWRGZXRjaDxOcG1QYWNrYWdlUmVzdWx0Pih1cmwpO1xuXG4gIGNvbnN0IHZlcnNpb25zID0gT2JqZWN0LmVudHJpZXMocmVzdWx0LnZlcnNpb25zKVxuICAgIC5tYXAoKFt2ZXJzaW9uLCBwYWNrYWdlSnNvbl0pID0+IHtcbiAgICAgIGNvbnN0IHByb3ZpZGVyID0gcGFja2FnZUpzb24uY2RrdGY/LnByb3ZpZGVyO1xuICAgICAgaWYgKFxuICAgICAgICAhcHJvdmlkZXIgfHxcbiAgICAgICAgKCFwYWNrYWdlSnNvbi5wZWVyRGVwZW5kZW5jaWVzPy5jZGt0ZiAmJlxuICAgICAgICAgICFwYWNrYWdlSnNvbi5wZWVyRGVwZW5kZW5jaWVzPy5jZGt0bilcbiAgICAgICkge1xuICAgICAgICBsb2dnZXIudHJhY2UoXG4gICAgICAgICAgYHNraXBwaW5nIHZlcnNpb24gJHt2ZXJzaW9ufSBvZiAke3BhY2thZ2VOYW1lfSBhcyBpdCBkb2VzIG5vdCBoYXZlIGEgY2RrdGYucHJvdmlkZXIgb3IgcGVlckRlcGVuZGVuY2llcy5jZGt0Zi9jZGt0biBpbiBwYWNrYWdlLmpzb25gLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFja2FnZU5hbWUsXG4gICAgICAgIHBhY2thZ2VWZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgICBwcm92aWRlclZlcnNpb246IHByb3ZpZGVyLnZlcnNpb24sXG4gICAgICAgIGNka3RmUGVlckRlcGVuZGVuY3lDb25zdHJhaW50OiBwYWNrYWdlSnNvbi5wZWVyRGVwZW5kZW5jaWVzLmNka3RmLFxuICAgICAgICBjZGt0blBlZXJEZXBlbmRlbmN5Q29uc3RyYWludDogcGFja2FnZUpzb24ucGVlckRlcGVuZGVuY2llcy5jZGt0bixcbiAgICAgIH07XG4gICAgfSlcbiAgICAuZmlsdGVyKCh2KSA9PiB2ICE9PSB1bmRlZmluZWQpIGFzIFByZWJ1aWx0UHJvdmlkZXJWZXJzaW9uW107XG5cbiAgLy8gbGF0ZXN0IHZlcnNpb24gZmlyc3QsIHNvcnRlZCBieSBwYWNrYWdlVmVyc2lvbiBhcyB0aGF0XG4gIC8vIG9uZSBhbHdheXMgaW5jcmVhc2VzIHdoaWxlIHRoZSBwcm92aWRlclZlcnNpb24gbWF5IG5vdFxuICB2ZXJzaW9ucy5zb3J0KChhLCBiKSA9PiB7XG4gICAgaWYgKHNlbXZlci5ndChhLnBhY2thZ2VWZXJzaW9uLCBiLnBhY2thZ2VWZXJzaW9uKSkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoc2VtdmVyLmx0KGEucGFja2FnZVZlcnNpb24sIGIucGFja2FnZVZlcnNpb24pKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0pO1xuXG4gIHJldHVybiB2ZXJzaW9ucztcbn1cblxuZnVuY3Rpb24gY2RrdGZWZXJzaW9uTWF0Y2hlcyhcbiAgY2RrdGZWZXJzaW9uOiBzdHJpbmcsXG4gIGNka3RmUGVlckRlcGVuZGVuY3lDb25zdHJhaW50OiBzdHJpbmcsXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHNlbXZlci5zYXRpc2ZpZXMoY2RrdGZWZXJzaW9uLCBjZGt0ZlBlZXJEZXBlbmRlbmN5Q29uc3RyYWludCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQcmVidWlsdFByb3ZpZGVyVmVyc2lvbnMoXG4gIGNvbnN0cmFpbnQ6IFByb3ZpZGVyQ29uc3RyYWludCxcbiAgY2RrdGZWZXJzaW9uOiBzdHJpbmcsXG4pOiBQcm9taXNlPHsgbmFtZTogc3RyaW5nOyB2ZXJzaW9uOiBzdHJpbmcgfVtdIHwgbnVsbD4ge1xuICBjb25zdCBjZGt0ZlByb3ZpZGVyTmFtZSA9IGF3YWl0IGdldE5wbVBhY2thZ2VOYW1lKGNvbnN0cmFpbnQsIGZhbHNlKTtcbiAgY29uc3QgY2RrdG5Qcm92aWRlck5hbWUgPSBhd2FpdCBnZXROcG1QYWNrYWdlTmFtZShjb25zdHJhaW50LCB0cnVlKTtcblxuICAvLyBubyBwcmUtYnVpbHQgcHJvdmlkZXIgZXhpc3RzXG4gIGlmICghY2RrdGZQcm92aWRlck5hbWUgJiYgIWNka3RuUHJvdmlkZXJOYW1lKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjZGt0ZlZlcnNpb25zID0gY2RrdGZQcm92aWRlck5hbWVcbiAgICA/IGF3YWl0IGdldEFsbFByZWJ1aWx0UHJvdmlkZXJWZXJzaW9ucyhjZGt0ZlByb3ZpZGVyTmFtZSlcbiAgICA6IChbXSBhcyBQcmVidWlsdFByb3ZpZGVyVmVyc2lvbltdKTtcbiAgbG9nZ2VyLmRlYnVnKFxuICAgIGBGb3VuZCB2ZXJzaW9ucyBmb3IgJHtjZGt0ZlByb3ZpZGVyTmFtZX06ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICBjZGt0ZlZlcnNpb25zLFxuICAgICAgbnVsbCxcbiAgICAgIDIsXG4gICAgKX1gLFxuICApO1xuXG4gIGNvbnN0IGNka3RuVmVyc2lvbnMgPSBjZGt0blByb3ZpZGVyTmFtZVxuICAgID8gYXdhaXQgZ2V0QWxsUHJlYnVpbHRQcm92aWRlclZlcnNpb25zKGNka3RuUHJvdmlkZXJOYW1lKVxuICAgIDogKFtdIGFzIFByZWJ1aWx0UHJvdmlkZXJWZXJzaW9uW10pO1xuICBsb2dnZXIuZGVidWcoXG4gICAgYEZvdW5kIHZlcnNpb25zIGZvciAke2Nka3RuUHJvdmlkZXJOYW1lfTogJHtKU09OLnN0cmluZ2lmeShjZGt0blZlcnNpb25zLCBudWxsLCAyKX1gLFxuICApO1xuXG4gIGNvbnN0IHZlcnNpb25zID0gY2RrdGZWZXJzaW9ucy5jb25jYXQoY2RrdG5WZXJzaW9ucyk7XG5cbiAgLy8gZmluZCBmaXJzdCB0aGUgdmVyc2lvbiB0aGF0IG1hdGNoZXMgdGhlIHJlcXVlc3RlZCBwcm92aWRlciB2ZXJzaW9uIGFuZCBjZGt0ZiB2ZXJzaW9uXG4gIGNvbnN0IG1hdGNoaW5nVmVyc2lvbnMgPSB2ZXJzaW9ucy5maWx0ZXIoKHYpID0+IHtcbiAgICBpZiAoXG4gICAgICAhY2RrdGZWZXJzaW9uTWF0Y2hlcyhjZGt0ZlZlcnNpb24sIHYuY2RrdGZQZWVyRGVwZW5kZW5jeUNvbnN0cmFpbnQpICYmXG4gICAgICAhY2RrdGZWZXJzaW9uTWF0Y2hlcyhjZGt0ZlZlcnNpb24sIHYuY2RrdG5QZWVyRGVwZW5kZW5jeUNvbnN0cmFpbnQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7IC8vIHNraXAgaWYgY2RrdGYgdmVyc2lvbiBkb2VzIG5vdCBtYXRjaFxuICAgIH1cbiAgICBpZiAoY29uc3RyYWludC52ZXJzaW9uKSB7XG4gICAgICByZXR1cm4gdmVyc2lvbk1hdGNoZXNDb25zdHJhaW50KHYucHJvdmlkZXJWZXJzaW9uLCBjb25zdHJhaW50LnZlcnNpb24pO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTsgLy8gaWYgbm8gdmVyc2lvbiBjb25zdHJhaW50IGlzIHBhc3NlZCwgcmV0dXJuIHRydWUgb24gdGhlIGZpcnN0IG1hdGNoXG4gIH0pO1xuXG4gIGlmICghbWF0Y2hpbmdWZXJzaW9ucy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBucG1QYWNrYWdlVmVyc2lvbnMgPSBtYXRjaGluZ1ZlcnNpb25zXG4gICAgLm1hcCgobWF0Y2hpbmdWZXJzaW9uKSA9PiAoe1xuICAgICAgbmFtZTogbWF0Y2hpbmdWZXJzaW9uLnBhY2thZ2VOYW1lLFxuICAgICAgdmVyc2lvbjogbWF0Y2hpbmdWZXJzaW9uLnBhY2thZ2VWZXJzaW9uLFxuICAgIH0pKVxuICAgIC5zb3J0KChhLCBiKSA9PiBzZW12ZXIuY29tcGFyZShhLnZlcnNpb24sIGIudmVyc2lvbikpXG4gICAgLnJldmVyc2UoKTtcbiAgcmV0dXJuIG5wbVBhY2thZ2VWZXJzaW9ucztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFByZWJ1aWx0UHJvdmlkZXJWZXJzaW9uSW5mb3JtYXRpb24oXG4gIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gIHBhY2thZ2VWZXJzaW9uOiBzdHJpbmcsXG4pOiBQcm9taXNlPGFueT4ge1xuICAvLyBHbyBwYWNrYWdlcyBpbmNsdWRlIGFuIGV4dHJhIGB2WC5ZLlpgXG4gIGlmIChwYWNrYWdlVmVyc2lvbi5zdGFydHNXaXRoKFwidlwiKSkge1xuICAgIHBhY2thZ2VWZXJzaW9uID0gcGFja2FnZVZlcnNpb24uc2xpY2UoMSk7XG4gIH1cblxuICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvJHtwYWNrYWdlTmFtZX0vJHtwYWNrYWdlVmVyc2lvbn1gO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBjYWNoZWRGZXRjaDxOcG1QYWNrYWdlU2luZ2xlVmVyc2lvblJlc3VsdD4odXJsKTtcblxuICBsZXQgcHJvdmlkZXJOYW1lID0gcmVzdWx0LmNka3RmLnByb3ZpZGVyLm5hbWU7XG4gIGlmIChwcm92aWRlck5hbWUpIHtcbiAgICBwcm92aWRlck5hbWUgPSBwcm92aWRlck5hbWUucmVwbGFjZShcInJlZ2lzdHJ5LnRlcnJhZm9ybS5pby9cIiwgXCJcIik7XG4gICAgcHJvdmlkZXJOYW1lID0gcHJvdmlkZXJOYW1lLnJlcGxhY2UoXCJoYXNoaWNvcnAvXCIsIFwiXCIpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYWNrYWdlTmFtZTogcmVzdWx0Lm5hbWUsXG4gICAgcGFja2FnZVZlcnNpb246IHJlc3VsdC52ZXJzaW9uLFxuICAgIHByb3ZpZGVyTmFtZSxcbiAgICBwcm92aWRlclZlcnNpb246IHJlc3VsdC5jZGt0Zi5wcm92aWRlci52ZXJzaW9uLFxuICAgIGNka3RmVmVyc2lvbjogcmVzdWx0LnBlZXJEZXBlbmRlbmNpZXNbXCJjZGt0ZlwiXSxcbiAgICBjZGt0blZlcnNpb246IHJlc3VsdC5wZWVyRGVwZW5kZW5jaWVzW1wiY2RrdG5cIl0sXG4gIH07XG59XG4iXX0=
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry-api.d.ts","sourceRoot":"","sources":["registry-api.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAuC1D;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,kBAAkB,GAC7B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBxB"}
@@ -1,77 +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.getLatestVersion = void 0;
30
- // Copyright (c) HashiCorp, Inc
31
- // SPDX-License-Identifier: MPL-2.0
32
- const node_fetch_1 = __importDefault(require("node-fetch"));
33
- const https_proxy_agent_1 = require("https-proxy-agent");
34
- const semver = __importStar(require("semver"));
35
- const commons_1 = require("@cdktn/commons");
36
- async function fetchVersions(constraint) {
37
- const proxy = process.env.http_proxy || process.env.HTTP_PROXY;
38
- let agent;
39
- if (proxy) {
40
- agent = new https_proxy_agent_1.HttpsProxyAgent(proxy);
41
- }
42
- const url = `https://registry.terraform.io/v1/providers/${constraint.namespace}/${constraint.name}/versions`;
43
- const result = await (0, node_fetch_1.default)(url, {
44
- agent,
45
- headers: { "User-Agent": "OpenConstructs/cdktn-cli" },
46
- });
47
- if (!result.ok) {
48
- if (result.status !== 404) {
49
- throw commons_1.Errors.External(`Failed to fetch ${url}. Status: ${result.status}`);
50
- }
51
- return null;
52
- }
53
- const json = (await result.json());
54
- return json.versions;
55
- }
56
- /**
57
- * returns the latest available version for the provider in the constraint
58
- * the version of the constraint is ignored
59
- * returns null, if the provider does not exist
60
- */
61
- async function getLatestVersion(constraint) {
62
- const versions = await fetchVersions(constraint);
63
- if (!versions) {
64
- return null;
65
- }
66
- const latestVersion = versions
67
- .map((v) => v.version)
68
- .reduce((acc, curr) => {
69
- if (semver.gte(acc, curr)) {
70
- return acc;
71
- }
72
- return curr;
73
- });
74
- return latestVersion;
75
- }
76
- exports.getLatestVersion = getLatestVersion;
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnktYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVnaXN0cnktYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyw0REFBK0I7QUFDL0IseURBQW9EO0FBRXBELCtDQUFpQztBQUNqQyw0Q0FBd0M7QUFXeEMsS0FBSyxVQUFVLGFBQWEsQ0FDMUIsVUFBOEI7SUFFOUIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7SUFDL0QsSUFBSSxLQUFLLENBQUM7SUFDVixJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsS0FBSyxHQUFHLElBQUksbUNBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsOENBQThDLFVBQVUsQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFDLElBQUksV0FBVyxDQUFDO0lBRTdHLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxvQkFBSyxFQUFDLEdBQUcsRUFBRTtRQUM5QixLQUFLO1FBQ0wsT0FBTyxFQUFFLEVBQUUsWUFBWSxFQUFFLDBCQUEwQixFQUFFO0tBQ3RELENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDZixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDMUIsTUFBTSxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsR0FBRyxhQUFhLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxDQUF1QixDQUFDO0lBQ3pELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUN2QixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxnQkFBZ0IsQ0FDcEMsVUFBOEI7SUFFOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsUUFBUTtTQUMzQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7U0FDckIsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ3BCLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQyxDQUFDO0lBRUwsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQWxCRCw0Q0FrQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCI7XG5pbXBvcnQgeyBIdHRwc1Byb3h5QWdlbnQgfSBmcm9tIFwiaHR0cHMtcHJveHktYWdlbnRcIjtcbmltcG9ydCB7IFByb3ZpZGVyQ29uc3RyYWludCB9IGZyb20gXCIuL2RlcGVuZGVuY3ktbWFuYWdlclwiO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gXCJzZW12ZXJcIjtcbmltcG9ydCB7IEVycm9ycyB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuXG50eXBlIFZlcnNpb25zUmV0dXJuVHlwZSA9IHtcbiAgaWQ6IHN0cmluZzsgLy8gZS5nLiBoYXNoaWNvcnAvYXdzXG4gIHZlcnNpb25zOiB7XG4gICAgdmVyc2lvbjogc3RyaW5nOyAvLyBlLmcuIFwiMC4xMi4wXCJcbiAgICBwcm90b2NvbHM6IHVua25vd247XG4gICAgcGxhdGZvcm1zOiB1bmtub3duO1xuICB9W107XG59O1xuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFZlcnNpb25zKFxuICBjb25zdHJhaW50OiBQcm92aWRlckNvbnN0cmFpbnQsXG4pOiBQcm9taXNlPFZlcnNpb25zUmV0dXJuVHlwZVtcInZlcnNpb25zXCJdIHwgbnVsbD4ge1xuICBjb25zdCBwcm94eSA9IHByb2Nlc3MuZW52Lmh0dHBfcHJveHkgfHwgcHJvY2Vzcy5lbnYuSFRUUF9QUk9YWTtcbiAgbGV0IGFnZW50O1xuICBpZiAocHJveHkpIHtcbiAgICBhZ2VudCA9IG5ldyBIdHRwc1Byb3h5QWdlbnQocHJveHkpO1xuICB9XG4gIGNvbnN0IHVybCA9IGBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby92MS9wcm92aWRlcnMvJHtjb25zdHJhaW50Lm5hbWVzcGFjZX0vJHtjb25zdHJhaW50Lm5hbWV9L3ZlcnNpb25zYDtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICBhZ2VudCxcbiAgICBoZWFkZXJzOiB7IFwiVXNlci1BZ2VudFwiOiBcIk9wZW5Db25zdHJ1Y3RzL2Nka3RuLWNsaVwiIH0sXG4gIH0pO1xuICBpZiAoIXJlc3VsdC5vaykge1xuICAgIGlmIChyZXN1bHQuc3RhdHVzICE9PSA0MDQpIHtcbiAgICAgIHRocm93IEVycm9ycy5FeHRlcm5hbChgRmFpbGVkIHRvIGZldGNoICR7dXJsfS4gU3RhdHVzOiAke3Jlc3VsdC5zdGF0dXN9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBqc29uID0gKGF3YWl0IHJlc3VsdC5qc29uKCkpIGFzIFZlcnNpb25zUmV0dXJuVHlwZTtcbiAgcmV0dXJuIGpzb24udmVyc2lvbnM7XG59XG5cbi8qKlxuICogcmV0dXJucyB0aGUgbGF0ZXN0IGF2YWlsYWJsZSB2ZXJzaW9uIGZvciB0aGUgcHJvdmlkZXIgaW4gdGhlIGNvbnN0cmFpbnRcbiAqIHRoZSB2ZXJzaW9uIG9mIHRoZSBjb25zdHJhaW50IGlzIGlnbm9yZWRcbiAqIHJldHVybnMgbnVsbCwgaWYgdGhlIHByb3ZpZGVyIGRvZXMgbm90IGV4aXN0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRMYXRlc3RWZXJzaW9uKFxuICBjb25zdHJhaW50OiBQcm92aWRlckNvbnN0cmFpbnQsXG4pOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgY29uc3QgdmVyc2lvbnMgPSBhd2FpdCBmZXRjaFZlcnNpb25zKGNvbnN0cmFpbnQpO1xuICBpZiAoIXZlcnNpb25zKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBsYXRlc3RWZXJzaW9uID0gdmVyc2lvbnNcbiAgICAubWFwKCh2KSA9PiB2LnZlcnNpb24pXG4gICAgLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiB7XG4gICAgICBpZiAoc2VtdmVyLmd0ZShhY2MsIGN1cnIpKSB7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3VycjtcbiAgICB9KTtcblxuICByZXR1cm4gbGF0ZXN0VmVyc2lvbjtcbn1cbiJdfQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"version-constraints.d.ts","sourceRoot":"","sources":["version-constraints.ts"],"names":[],"mappings":"AAKA,KAAK,QAAQ,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AAI5D,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG;IACnD,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAWA;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,OAAO,CA0DT"}
@@ -1,95 +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
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.versionMatchesConstraint = exports.parseConstraint = void 0;
27
- // Copyright (c) HashiCorp, Inc
28
- // SPDX-License-Identifier: MPL-2.0
29
- const semver = __importStar(require("semver"));
30
- const commons_1 = require("@cdktn/commons");
31
- // constraints can be prefixed with "~>", ">", "<", "=", ">=", "<=" or "!="
32
- // no prefix means "="
33
- function parseConstraint(constraint) {
34
- var _a;
35
- const cleaned = constraint.trim();
36
- const operator = (((_a = cleaned.match(/(~>|>=|<=|>|<|=|!=)/)) === null || _a === void 0 ? void 0 : _a[0]) ||
37
- "=");
38
- const version = cleaned.replace(operator, "").trim();
39
- return {
40
- operator,
41
- version,
42
- };
43
- }
44
- exports.parseConstraint = parseConstraint;
45
- function versionMatchesConstraint(version, constraint) {
46
- // https://www.terraform.io/language/expressions/version-constraints
47
- // version can contain multiple constraints split by ","
48
- var _a, _b;
49
- const constraints = constraint.split(",");
50
- version = (_b = (_a = semver.coerce(version)) === null || _a === void 0 ? void 0 : _a.version) !== null && _b !== void 0 ? _b : version;
51
- // each constraint needs to be satisfied
52
- return constraints.every((c) => {
53
- var _a, _b;
54
- const parsed = parseConstraint(c);
55
- const cleanedParsedVersion = (_b = (_a = semver.coerce(parsed.version)) === null || _a === void 0 ? void 0 : _a.version) !== null && _b !== void 0 ? _b : parsed.version;
56
- switch (parsed.operator) {
57
- case "=":
58
- return version === cleanedParsedVersion;
59
- case "!=":
60
- return version !== cleanedParsedVersion;
61
- case "~>": {
62
- // allows rightmost version component to increment
63
- const parts = parsed.version.split(".");
64
- const minorSpecified = parts.length === 2;
65
- const majorIsZero = parts[0] === "0";
66
- // ~>2.0 which allows 2.1 and 2.1.1 needs special handling as
67
- // npm semver handles "~" differently for ~2.0 than for ~2 or ~2.1.0
68
- // So we need to use "^" (e.g. ^2.0) for this case
69
- // see: https://github.com/npm/node-semver/issues/11
70
- const allowMinorAndPatchOnly = minorSpecified;
71
- let range = allowMinorAndPatchOnly
72
- ? `^${parsed.version}`
73
- : `~${parsed.version}`;
74
- // versions below 1.0 are treated a bit differently in NPM than in Terraform
75
- // meaning that NPMs ^0.4 doesn't allow 0.55 while TFs ~>0.4 allows 0.55
76
- if (majorIsZero && minorSpecified) {
77
- range = `>=${parsed.version} <1.0.0`;
78
- }
79
- return semver.satisfies(version, range);
80
- }
81
- case ">=":
82
- return semver.gte(version, cleanedParsedVersion);
83
- case "<=":
84
- return semver.lte(version, cleanedParsedVersion);
85
- case ">":
86
- return semver.gt(version, cleanedParsedVersion);
87
- case "<":
88
- return semver.lt(version, cleanedParsedVersion);
89
- default:
90
- throw commons_1.Errors.External(`Unknown constraint operator: ${parsed.operator} in version constraint ${constraint}`);
91
- }
92
- });
93
- }
94
- exports.versionMatchesConstraint = versionMatchesConstraint;
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi1jb25zdHJhaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZlcnNpb24tY29uc3RyYWludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLCtDQUFpQztBQUNqQyw0Q0FBd0M7QUFJeEMsMkVBQTJFO0FBQzNFLHNCQUFzQjtBQUN0QixTQUFnQixlQUFlLENBQUMsVUFBa0I7O0lBSWhELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVsQyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUEsTUFBQSxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLDBDQUFHLENBQUMsQ0FBQztRQUN6RCxHQUFHLENBQWEsQ0FBQztJQUNuQixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVyRCxPQUFPO1FBQ0wsUUFBUTtRQUNSLE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQztBQWRELDBDQWNDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQ3RDLE9BQWUsRUFDZixVQUFrQjtJQUVsQixvRUFBb0U7SUFDcEUsd0RBQXdEOztJQUV4RCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLE9BQU8sR0FBRyxNQUFBLE1BQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsMENBQUUsT0FBTyxtQ0FBSSxPQUFPLENBQUM7SUFFckQsd0NBQXdDO0lBQ3hDLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFOztRQUM3QixNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEMsTUFBTSxvQkFBb0IsR0FDeEIsTUFBQSxNQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQywwQ0FBRSxPQUFPLG1DQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFFM0QsUUFBUSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsS0FBSyxHQUFHO2dCQUNOLE9BQU8sT0FBTyxLQUFLLG9CQUFvQixDQUFDO1lBQzFDLEtBQUssSUFBSTtnQkFDUCxPQUFPLE9BQU8sS0FBSyxvQkFBb0IsQ0FBQztZQUMxQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ1Ysa0RBQWtEO2dCQUVsRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEMsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7Z0JBQzFDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUM7Z0JBRXJDLDZEQUE2RDtnQkFDN0Qsb0VBQW9FO2dCQUNwRSxrREFBa0Q7Z0JBQ2xELG9EQUFvRDtnQkFDcEQsTUFBTSxzQkFBc0IsR0FBRyxjQUFjLENBQUM7Z0JBRTlDLElBQUksS0FBSyxHQUFHLHNCQUFzQjtvQkFDaEMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTtvQkFDdEIsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUV6Qiw0RUFBNEU7Z0JBQzVFLHdFQUF3RTtnQkFDeEUsSUFBSSxXQUFXLElBQUksY0FBYyxFQUFFLENBQUM7b0JBQ2xDLEtBQUssR0FBRyxLQUFLLE1BQU0sQ0FBQyxPQUFPLFNBQVMsQ0FBQztnQkFDdkMsQ0FBQztnQkFFRCxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFDLENBQUM7WUFDRCxLQUFLLElBQUk7Z0JBQ1AsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1lBQ25ELEtBQUssSUFBSTtnQkFDUCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLG9CQUFvQixDQUFDLENBQUM7WUFDbkQsS0FBSyxHQUFHO2dCQUNOLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztZQUNsRCxLQUFLLEdBQUc7Z0JBQ04sT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1lBQ2xEO2dCQUNFLE1BQU0sZ0JBQU0sQ0FBQyxRQUFRLENBQ25CLGdDQUFnQyxNQUFNLENBQUMsUUFBUSwwQkFBMEIsVUFBVSxFQUFFLENBQ3RGLENBQUM7UUFDTixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBN0RELDREQTZEQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSBcInNlbXZlclwiO1xuaW1wb3J0IHsgRXJyb3JzIH0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5cbnR5cGUgT3BlcmF0b3IgPSBcIj1cIiB8IFwiIT1cIiB8IFwifj5cIiB8IFwiPj1cIiB8IFwiPD1cIiB8IFwiPlwiIHwgXCI8XCI7XG5cbi8vIGNvbnN0cmFpbnRzIGNhbiBiZSBwcmVmaXhlZCB3aXRoIFwifj5cIiwgXCI+XCIsIFwiPFwiLCBcIj1cIiwgXCI+PVwiLCBcIjw9XCIgb3IgXCIhPVwiXG4vLyBubyBwcmVmaXggbWVhbnMgXCI9XCJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNvbnN0cmFpbnQoY29uc3RyYWludDogc3RyaW5nKToge1xuICBvcGVyYXRvcjogT3BlcmF0b3I7XG4gIHZlcnNpb246IHN0cmluZztcbn0ge1xuICBjb25zdCBjbGVhbmVkID0gY29uc3RyYWludC50cmltKCk7XG5cbiAgY29uc3Qgb3BlcmF0b3IgPSAoY2xlYW5lZC5tYXRjaCgvKH4+fD49fDw9fD58PHw9fCE9KS8pPy5bMF0gfHxcbiAgICBcIj1cIikgYXMgT3BlcmF0b3I7XG4gIGNvbnN0IHZlcnNpb24gPSBjbGVhbmVkLnJlcGxhY2Uob3BlcmF0b3IsIFwiXCIpLnRyaW0oKTtcblxuICByZXR1cm4ge1xuICAgIG9wZXJhdG9yLFxuICAgIHZlcnNpb24sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJzaW9uTWF0Y2hlc0NvbnN0cmFpbnQoXG4gIHZlcnNpb246IHN0cmluZyxcbiAgY29uc3RyYWludDogc3RyaW5nLFxuKTogYm9vbGVhbiB7XG4gIC8vIGh0dHBzOi8vd3d3LnRlcnJhZm9ybS5pby9sYW5ndWFnZS9leHByZXNzaW9ucy92ZXJzaW9uLWNvbnN0cmFpbnRzXG4gIC8vIHZlcnNpb24gY2FuIGNvbnRhaW4gbXVsdGlwbGUgY29uc3RyYWludHMgc3BsaXQgYnkgXCIsXCJcblxuICBjb25zdCBjb25zdHJhaW50cyA9IGNvbnN0cmFpbnQuc3BsaXQoXCIsXCIpO1xuICB2ZXJzaW9uID0gc2VtdmVyLmNvZXJjZSh2ZXJzaW9uKT8udmVyc2lvbiA/PyB2ZXJzaW9uO1xuXG4gIC8vIGVhY2ggY29uc3RyYWludCBuZWVkcyB0byBiZSBzYXRpc2ZpZWRcbiAgcmV0dXJuIGNvbnN0cmFpbnRzLmV2ZXJ5KChjKSA9PiB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VDb25zdHJhaW50KGMpO1xuXG4gICAgY29uc3QgY2xlYW5lZFBhcnNlZFZlcnNpb24gPVxuICAgICAgc2VtdmVyLmNvZXJjZShwYXJzZWQudmVyc2lvbik/LnZlcnNpb24gPz8gcGFyc2VkLnZlcnNpb247XG5cbiAgICBzd2l0Y2ggKHBhcnNlZC5vcGVyYXRvcikge1xuICAgICAgY2FzZSBcIj1cIjpcbiAgICAgICAgcmV0dXJuIHZlcnNpb24gPT09IGNsZWFuZWRQYXJzZWRWZXJzaW9uO1xuICAgICAgY2FzZSBcIiE9XCI6XG4gICAgICAgIHJldHVybiB2ZXJzaW9uICE9PSBjbGVhbmVkUGFyc2VkVmVyc2lvbjtcbiAgICAgIGNhc2UgXCJ+PlwiOiB7XG4gICAgICAgIC8vIGFsbG93cyByaWdodG1vc3QgdmVyc2lvbiBjb21wb25lbnQgdG8gaW5jcmVtZW50XG5cbiAgICAgICAgY29uc3QgcGFydHMgPSBwYXJzZWQudmVyc2lvbi5zcGxpdChcIi5cIik7XG4gICAgICAgIGNvbnN0IG1pbm9yU3BlY2lmaWVkID0gcGFydHMubGVuZ3RoID09PSAyO1xuICAgICAgICBjb25zdCBtYWpvcklzWmVybyA9IHBhcnRzWzBdID09PSBcIjBcIjtcblxuICAgICAgICAvLyB+PjIuMCB3aGljaCBhbGxvd3MgMi4xIGFuZCAyLjEuMSBuZWVkcyBzcGVjaWFsIGhhbmRsaW5nIGFzXG4gICAgICAgIC8vIG5wbSBzZW12ZXIgaGFuZGxlcyBcIn5cIiBkaWZmZXJlbnRseSBmb3IgfjIuMCB0aGFuIGZvciB+MiBvciB+Mi4xLjBcbiAgICAgICAgLy8gU28gd2UgbmVlZCB0byB1c2UgXCJeXCIgKGUuZy4gXjIuMCkgZm9yIHRoaXMgY2FzZVxuICAgICAgICAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vbm9kZS1zZW12ZXIvaXNzdWVzLzExXG4gICAgICAgIGNvbnN0IGFsbG93TWlub3JBbmRQYXRjaE9ubHkgPSBtaW5vclNwZWNpZmllZDtcblxuICAgICAgICBsZXQgcmFuZ2UgPSBhbGxvd01pbm9yQW5kUGF0Y2hPbmx5XG4gICAgICAgICAgPyBgXiR7cGFyc2VkLnZlcnNpb259YFxuICAgICAgICAgIDogYH4ke3BhcnNlZC52ZXJzaW9ufWA7XG5cbiAgICAgICAgLy8gdmVyc2lvbnMgYmVsb3cgMS4wIGFyZSB0cmVhdGVkIGEgYml0IGRpZmZlcmVudGx5IGluIE5QTSB0aGFuIGluIFRlcnJhZm9ybVxuICAgICAgICAvLyBtZWFuaW5nIHRoYXQgTlBNcyBeMC40IGRvZXNuJ3QgYWxsb3cgMC41NSB3aGlsZSBURnMgfj4wLjQgYWxsb3dzIDAuNTVcbiAgICAgICAgaWYgKG1ham9ySXNaZXJvICYmIG1pbm9yU3BlY2lmaWVkKSB7XG4gICAgICAgICAgcmFuZ2UgPSBgPj0ke3BhcnNlZC52ZXJzaW9ufSA8MS4wLjBgO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbXZlci5zYXRpc2ZpZXModmVyc2lvbiwgcmFuZ2UpO1xuICAgICAgfVxuICAgICAgY2FzZSBcIj49XCI6XG4gICAgICAgIHJldHVybiBzZW12ZXIuZ3RlKHZlcnNpb24sIGNsZWFuZWRQYXJzZWRWZXJzaW9uKTtcbiAgICAgIGNhc2UgXCI8PVwiOlxuICAgICAgICByZXR1cm4gc2VtdmVyLmx0ZSh2ZXJzaW9uLCBjbGVhbmVkUGFyc2VkVmVyc2lvbik7XG4gICAgICBjYXNlIFwiPlwiOlxuICAgICAgICByZXR1cm4gc2VtdmVyLmd0KHZlcnNpb24sIGNsZWFuZWRQYXJzZWRWZXJzaW9uKTtcbiAgICAgIGNhc2UgXCI8XCI6XG4gICAgICAgIHJldHVybiBzZW12ZXIubHQodmVyc2lvbiwgY2xlYW5lZFBhcnNlZFZlcnNpb24pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgRXJyb3JzLkV4dGVybmFsKFxuICAgICAgICAgIGBVbmtub3duIGNvbnN0cmFpbnQgb3BlcmF0b3I6ICR7cGFyc2VkLm9wZXJhdG9yfSBpbiB2ZXJzaW9uIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50fWAsXG4gICAgICAgICk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-reporting.d.ts","sourceRoot":"","sources":["error-reporting.ts"],"names":[],"mappings":"AAcA,wBAAgB,iBAAiB,CAC/B,WAAW,SAAgB,GAC1B,OAAO,GAAG,SAAS,CAerB;AAED,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,OAAO,EACjB,WAAW,SAAgB,QAU5B;AAUD,wBAAsB,uBAAuB,CAC3C,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,iBA0E1C;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,IAAI,EACJ,OAAO,EACP,OAAO,GACR,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B,QAUA"}
@@ -1,133 +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.captureException = exports.initializErrorReporting = exports.persistReportCrashReportDecision = exports.shouldReportCrash = void 0;
30
- // Copyright (c) HashiCorp, Inc
31
- // SPDX-License-Identifier: MPL-2.0
32
- const Sentry = __importStar(require("@sentry/node"));
33
- const commons_1 = require("@cdktn/commons");
34
- const commons_2 = require("@cdktn/commons");
35
- const path = __importStar(require("path"));
36
- const fs = __importStar(require("fs-extra"));
37
- const ci_info_1 = __importDefault(require("ci-info"));
38
- function shouldReportCrash(projectPath = process.cwd()) {
39
- try {
40
- const cdktfJson = JSON.parse(fs.readFileSync(path.resolve(projectPath, "cdktf.json"), "utf8"));
41
- return typeof cdktfJson.sendCrashReports === "boolean"
42
- ? cdktfJson.sendCrashReports
43
- : cdktfJson.sendCrashReports === "true";
44
- }
45
- catch (e) {
46
- commons_2.logger.debug(`Error determining if crash reporting should be enabled, defaulting to false: ${e}`);
47
- return false;
48
- }
49
- }
50
- exports.shouldReportCrash = shouldReportCrash;
51
- function persistReportCrashReportDecision(decision, projectPath = process.cwd()) {
52
- const cdktfJson = JSON.parse(fs.readFileSync(path.resolve(projectPath, "cdktf.json"), "utf8"));
53
- cdktfJson.sendCrashReports = decision;
54
- fs.writeFileSync(path.resolve(projectPath, "cdktf.json"), JSON.stringify(cdktfJson, null, 2));
55
- }
56
- exports.persistReportCrashReportDecision = persistReportCrashReportDecision;
57
- function isPromise(p) {
58
- return (typeof p === "object" &&
59
- typeof p.then === "function" &&
60
- typeof p.catch === "function");
61
- }
62
- async function initializErrorReporting(runConsentPrompt) {
63
- let shouldReport = shouldReportCrash();
64
- const ci = ci_info_1.default.isCI ? ci_info_1.default.name || "unknown" : false;
65
- // We have no info yet, so we need to ask the user
66
- if (shouldReport === undefined && runConsentPrompt) {
67
- // But only if it's a user
68
- if (ci) {
69
- return;
70
- }
71
- shouldReport = await runConsentPrompt();
72
- persistReportCrashReportDecision(shouldReport);
73
- }
74
- if (!shouldReport) {
75
- commons_2.logger.debug("Error reporting disabled");
76
- return;
77
- }
78
- if (!process.env.SENTRY_DSN) {
79
- commons_2.logger.info("Error reporting disabled: SENTRY_DSN not set");
80
- return;
81
- }
82
- commons_2.logger.debug("Initializing error reporting");
83
- Sentry.init({
84
- autoSessionTracking: true,
85
- dsn: process.env.SENTRY_DSN,
86
- release: `cdktn-cli-${commons_1.DISPLAY_VERSION}`,
87
- async beforeSend(event, hint) {
88
- if (!hint) {
89
- return event;
90
- }
91
- // The promise character is not documented, but it happens
92
- const originalException = hint.originalException;
93
- let error;
94
- if (isPromise(originalException)) {
95
- originalException.catch((e) => (error = e));
96
- await Promise.allSettled([originalException]);
97
- }
98
- else {
99
- error = originalException;
100
- }
101
- const errorMessage = (error === null || error === void 0 ? void 0 : error.toString()) || "";
102
- if (errorMessage.includes("Usage Error")) {
103
- // This is a usage error, so we don't want to report it
104
- return null;
105
- }
106
- return event;
107
- },
108
- });
109
- Sentry.configureScope(function (scope) {
110
- scope.setUser({
111
- id: (0, commons_1.getUserId)(),
112
- });
113
- scope.setTag("projectId", (0, commons_1.getProjectId)());
114
- });
115
- commons_2.logger.debug("Collecting environment information for error reporting");
116
- (0, commons_1.collectDebugInformation)().then((debugOutput) => {
117
- Sentry.setContext("environment", debugOutput);
118
- });
119
- }
120
- exports.initializErrorReporting = initializErrorReporting;
121
- function captureException({ message, type, command, context, }) {
122
- if (process.env.SENTRY_DSN && shouldReportCrash()) {
123
- Sentry.captureException(new Error(message), {
124
- tags: {
125
- context: JSON.stringify(context),
126
- type,
127
- command,
128
- },
129
- });
130
- }
131
- }
132
- exports.captureException = captureException;
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItcmVwb3J0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXJyb3ItcmVwb3J0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyxxREFBdUM7QUFDdkMsNENBS3dCO0FBQ3hCLDRDQUF3QztBQUN4QywyQ0FBNkI7QUFDN0IsNkNBQStCO0FBQy9CLHNEQUE2QjtBQUU3QixTQUFnQixpQkFBaUIsQ0FDL0IsV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFFM0IsSUFBSSxDQUFDO1FBQ0gsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDMUIsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FDakUsQ0FBQztRQUVGLE9BQU8sT0FBTyxTQUFTLENBQUMsZ0JBQWdCLEtBQUssU0FBUztZQUNwRCxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQjtZQUM1QixDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixLQUFLLE1BQU0sQ0FBQztJQUM1QyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLGdCQUFNLENBQUMsS0FBSyxDQUNWLGdGQUFnRixDQUFDLEVBQUUsQ0FDcEYsQ0FBQztRQUNGLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFqQkQsOENBaUJDO0FBRUQsU0FBZ0IsZ0NBQWdDLENBQzlDLFFBQWlCLEVBQ2pCLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFO0lBRTNCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzFCLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQ2pFLENB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QUFLLENBQUMsT0FBTyxDQUFDO1lBQ1osRUFBRSxFQUFFLElBQUEsbUJBQVMsR0FBRTtTQUNoQixDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFBLHNCQUFZLEdBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztJQUN2RSxJQUFBLGlDQUF1QixHQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7UUFDN0MsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBM0VELDBEQTJFQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLEVBQy9CLE9BQU8sRUFDUCxJQUFJLEVBQ0osT0FBTyxFQUNQLE9BQU8sR0FNUjtJQUNDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxQyxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO2dCQUNoQyxJQUFJO2dCQUNKLE9BQU87YUFDUjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDO0FBcEJELDRDQW9CQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyBTZW50cnkgZnJvbSBcIkBzZW50cnkvbm9kZVwiO1xuaW1wb3J0IHtcbiAgZ2V0UHJvamVjdElkLFxuICBnZXRVc2VySWQsXG4gIGNvbGxlY3REZWJ1Z0luZm9ybWF0aW9uLFxuICBESVNQTEFZX1ZFUlNJT04sXG59IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCBjaUluZm8gZnJvbSBcImNpLWluZm9cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZFJlcG9ydENyYXNoKFxuICBwcm9qZWN0UGF0aCA9IHByb2Nlc3MuY3dkKCksXG4pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjZGt0Zkpzb24gPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGgucmVzb2x2ZShwcm9qZWN0UGF0aCwgXCJjZGt0Zi5qc29uXCIpLCBcInV0ZjhcIiksXG4gICAgKTtcblxuICAgIHJldHVybiB0eXBlb2YgY2RrdGZKc29uLnNlbmRDcmFzaFJlcG9ydHMgPT09IFwiYm9vbGVhblwiXG4gICAgICA/IGNka3RmSnNvbi5zZW5kQ3Jhc2hSZXBvcnRzXG4gICAgICA6IGNka3RmSnNvbi5zZW5kQ3Jhc2hSZXBvcnRzID09PSBcInRydWVcIjtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBFcnJvciBkZXRlcm1pbmluZyBpZiBjcmFzaCByZXBvcnRpbmcgc2hvdWxkIGJlIGVuYWJsZWQsIGRlZmF1bHRpbmcgdG8gZmFsc2U6ICR7ZX1gLFxuICAgICk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwZXJzaXN0UmVwb3J0Q3Jhc2hSZXBvcnREZWNpc2lvbihcbiAgZGVjaXNpb246IGJvb2xlYW4sXG4gIHByb2plY3RQYXRoID0gcHJvY2Vzcy5jd2QoKSxcbikge1xuICBjb25zdCBjZGt0Zkpzb24gPSBKU09OLnBhcnNlKFxuICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLnJlc29sdmUocHJvamVjdFBhdGgsIFwiY2RrdGYuanNvblwiKSwgXCJ1dGY4XCIpLFxuICApO1xuICBjZGt0Zkpzb24uc2VuZENyYXNoUmVwb3J0cyA9IGRlY2lzaW9uO1xuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIHBhdGgucmVzb2x2ZShwcm9qZWN0UGF0aCwgXCJjZGt0Zi5qc29uXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KGNka3RmSnNvbiwgbnVsbCwgMiksXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzUHJvbWlzZShwOiBhbnkpOiBwIGlzIFByb21pc2U8YW55PiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHAgPT09IFwib2JqZWN0XCIgJiZcbiAgICB0eXBlb2YgcC50aGVuID09PSBcImZ1bmN0aW9uXCIgJiZcbiAgICB0eXBlb2YgcC5jYXRjaCA9PT0gXCJmdW5jdGlvblwiXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0aWFsaXpFcnJvclJlcG9ydGluZyhcbiAgcnVuQ29uc2VudFByb21wdD86ICgpID0+IFByb21pc2U8Ym9vbGVhbj4sXG4pIHtcbiAgbGV0IHNob3VsZFJlcG9ydCA9IHNob3VsZFJlcG9ydENyYXNoKCk7XG4gIGNvbnN0IGNpOiBzdHJpbmcgfCBmYWxzZSA9IGNpSW5mby5pc0NJID8gY2lJbmZvLm5hbWUgfHwgXCJ1bmtub3duXCIgOiBmYWxzZTtcblxuICAvLyBXZSBoYXZlIG5vIGluZm8geWV0LCBzbyB3ZSBuZWVkIHRvIGFzayB0aGUgdXNlclxuICBpZiAoc2hvdWxkUmVwb3J0ID09PSB1bmRlZmluZWQgJiYgcnVuQ29uc2VudFByb21wdCkge1xuICAgIC8vIEJ1dCBvbmx5IGlmIGl0J3MgYSB1c2VyXG4gICAgaWYgKGNpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2hvdWxkUmVwb3J0ID0gYXdhaXQgcnVuQ29uc2VudFByb21wdCgpO1xuICAgIHBlcnNpc3RSZXBvcnRDcmFzaFJlcG9ydERlY2lzaW9uKHNob3VsZFJlcG9ydCk7XG4gIH1cblxuICBpZiAoIXNob3VsZFJlcG9ydCkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcIkVycm9yIHJlcG9ydGluZyBkaXNhYmxlZFwiKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFwcm9jZXNzLmVudi5TRU5UUllfRFNOKSB7XG4gICAgbG9nZ2VyLmluZm8oXCJFcnJvciByZXBvcnRpbmcgZGlzYWJsZWQ6IFNFTlRSWV9EU04gbm90IHNldFwiKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2dnZXIuZGVidWcoXCJJbml0aWFsaXppbmcgZXJyb3IgcmVwb3J0aW5nXCIpO1xuXG4gIFNlbnRyeS5pbml0KHtcbiAgICBhdXRvU2Vzc2lvblRyYWNraW5nOiB0cnVlLFxuICAgIGRzbjogcHJvY2Vzcy5lbnYuU0VOVFJZX0RTTixcbiAgICByZWxlYXNlOiBgY2RrdG4tY2xpLSR7RElTUExBWV9WRVJTSU9OfWAsXG4gICAgYXN5bmMgYmVmb3JlU2VuZChldmVudCwgaGludCkge1xuICAgICAgaWYgKCFoaW50KSB7XG4gICAgICAgIHJldHVybiBldmVudDtcbiAgICAgIH1cblxuICAgICAgLy8gVGhlIHByb21pc2UgY2hhcmFjdGVyIGlzIG5vdCBkb2N1bWVudGVkLCBidXQgaXQgaGFwcGVuc1xuICAgICAgY29uc3Qgb3JpZ2luYWxFeGNlcHRpb246XG4gICAgICAgIHwgUHJvbWlzZTxFcnJvcj5cbiAgICAgICAgfCBFcnJvclxuICAgICAgICB8IHN0cmluZ1xuICAgICAgICB8IG51bGxcbiAgICAgICAgfCB1bmRlZmluZWRcbiAgICAgICAgfCB1bmtub3duID0gaGludC5vcmlnaW5hbEV4Y2VwdGlvbjtcbiAgICAgIGxldCBlcnJvcjogRXJyb3IgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHwgdW5rbm93bjtcbiAgICAgIGlmIChpc1Byb21pc2Uob3JpZ2luYWxFeGNlcHRpb24pKSB7XG4gICAgICAgIChvcmlnaW5hbEV4Y2VwdGlvbiBhcyB1bmtub3duIGFzIFByb21pc2U8RXJyb3I+KS5jYXRjaChcbiAgICAgICAgICAoZSkgPT4gKGVycm9yID0gZSksXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbb3JpZ2luYWxFeGNlcHRpb25dKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yID0gb3JpZ2luYWxFeGNlcHRpb247XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yPy50b1N0cmluZygpIHx8IFwiXCI7XG4gICAgICBpZiAoZXJyb3JNZXNzYWdlLmluY2x1ZGVzKFwiVXNhZ2UgRXJyb3JcIikpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBhIHVzYWdlIGVycm9yLCBzbyB3ZSBkb24ndCB3YW50IHRvIHJlcG9ydCBpdFxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBldmVudDtcbiAgICB9LFxuICB9KTtcblxuICBTZW50cnkuY29uZmlndXJlU2NvcGUoZnVuY3Rpb24gKHNjb3BlKSB7XG4gICAgc2NvcGUuc2V0VXNlcih7XG4gICAgICBpZDogZ2V0VXNlcklkKCksXG4gICAgfSk7XG4gICAgc2NvcGUuc2V0VGFnKFwicHJvamVjdElkXCIsIGdldFByb2plY3RJZCgpKTtcbiAgfSk7XG5cbiAgbG9nZ2VyLmRlYnVnKFwiQ29sbGVjdGluZyBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbiBmb3IgZXJyb3IgcmVwb3J0aW5nXCIpO1xuICBjb2xsZWN0RGVidWdJbmZvcm1hdGlvbigpLnRoZW4oKGRlYnVnT3V0cHV0KSA9PiB7XG4gICAgU2VudHJ5LnNldENvbnRleHQoXCJlbnZpcm9ubWVudFwiLCBkZWJ1Z091dHB1dCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FwdHVyZUV4Y2VwdGlvbih7XG4gIG1lc3NhZ2UsXG4gIHR5cGUsXG4gIGNvbW1hbmQsXG4gIGNvbnRleHQsXG59OiB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBjb21tYW5kOiBzdHJpbmc7XG4gIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufSkge1xuICBpZiAocHJvY2Vzcy5lbnYuU0VOVFJZX0RTTiAmJiBzaG91bGRSZXBvcnRDcmFzaCgpKSB7XG4gICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24obmV3IEVycm9yKG1lc3NhZ2UpLCB7XG4gICAgICB0YWdzOiB7XG4gICAgICAgIGNvbnRleHQ6IEpTT04uc3RyaW5naWZ5KGNvbnRleHQpLFxuICAgICAgICB0eXBlLFxuICAgICAgICBjb21tYW5kLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,eAAe,iBAAkB,MAAM,WACgE,CAAC"}
package/src/lib/errors.js DELETED
@@ -1,10 +0,0 @@
1
- "use strict";
2
- /**
3
- * Copyright (c) HashiCorp, Inc.
4
- * SPDX-License-Identifier: MPL-2.0
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.missingVariable = void 0;
8
- const missingVariable = (variableName) => `Missing variable: '${variableName}'. You can provide it using the 'TF_VAR_${variableName}' environment variable.`;
9
- exports.missingVariable = missingVariable;
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUVJLE1BQU0sZUFBZSxHQUFHLENBQUMsWUFBb0IsRUFBRSxFQUFFLENBQ3RELHNCQUFzQixZQUFZLDJDQUEyQyxZQUFZLHlCQUF5QixDQUFDO0FBRHhHLFFBQUEsZUFBZSxtQkFDeUYiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmV4cG9ydCBjb25zdCBtaXNzaW5nVmFyaWFibGUgPSAodmFyaWFibGVOYW1lOiBzdHJpbmcpID0+XG4gIGBNaXNzaW5nIHZhcmlhYmxlOiAnJHt2YXJpYWJsZU5hbWV9Jy4gWW91IGNhbiBwcm92aWRlIGl0IHVzaW5nIHRoZSAnVEZfVkFSXyR7dmFyaWFibGVOYW1lfScgZW52aXJvbm1lbnQgdmFyaWFibGUuYDtcbiJdfQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"execution-logs.d.ts","sourceRoot":"","sources":["execution-logs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA2BjD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,gBAAgB,GACtB,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CA6CzC"}