@cdktn/cli-core 0.21.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 (154) hide show
  1. package/README.md +3 -0
  2. package/ambient.d.ts +13 -0
  3. package/eslint.config.mjs +82 -0
  4. package/jest.config.js +20 -0
  5. package/package.json +139 -0
  6. package/src/lib/cdktf-config.d.ts +16 -0
  7. package/src/lib/cdktf-config.d.ts.map +1 -0
  8. package/src/lib/cdktf-config.js +108 -0
  9. package/src/lib/cdktf-project-io-handler.d.ts +20 -0
  10. package/src/lib/cdktf-project-io-handler.d.ts.map +1 -0
  11. package/src/lib/cdktf-project-io-handler.js +84 -0
  12. package/src/lib/cdktf-project.d.ts +111 -0
  13. package/src/lib/cdktf-project.d.ts.map +1 -0
  14. package/src/lib/cdktf-project.js +371 -0
  15. package/src/lib/cdktf-stack.d.ts +134 -0
  16. package/src/lib/cdktf-stack.d.ts.map +1 -0
  17. package/src/lib/cdktf-stack.js +386 -0
  18. package/src/lib/convert.d.ts +6 -0
  19. package/src/lib/convert.d.ts.map +1 -0
  20. package/src/lib/convert.js +51 -0
  21. package/src/lib/dependencies/cdktf-config-manager.d.ts +12 -0
  22. package/src/lib/dependencies/cdktf-config-manager.d.ts.map +1 -0
  23. package/src/lib/dependencies/cdktf-config-manager.js +36 -0
  24. package/src/lib/dependencies/dependency-manager.d.ts +95 -0
  25. package/src/lib/dependencies/dependency-manager.d.ts.map +1 -0
  26. package/src/lib/dependencies/dependency-manager.js +393 -0
  27. package/src/lib/dependencies/package-manager.d.ts +18 -0
  28. package/src/lib/dependencies/package-manager.d.ts.map +1 -0
  29. package/src/lib/dependencies/package-manager.js +581 -0
  30. package/src/lib/dependencies/prebuilt-providers.d.ts +23 -0
  31. package/src/lib/dependencies/prebuilt-providers.d.ts.map +1 -0
  32. package/src/lib/dependencies/prebuilt-providers.js +220 -0
  33. package/src/lib/dependencies/registry-api.d.ts +8 -0
  34. package/src/lib/dependencies/registry-api.d.ts.map +1 -0
  35. package/src/lib/dependencies/registry-api.js +77 -0
  36. package/src/lib/dependencies/version-constraints.d.ts +8 -0
  37. package/src/lib/dependencies/version-constraints.d.ts.map +1 -0
  38. package/src/lib/dependencies/version-constraints.js +95 -0
  39. package/src/lib/error-reporting.d.ts +10 -0
  40. package/src/lib/error-reporting.d.ts.map +1 -0
  41. package/src/lib/error-reporting.js +133 -0
  42. package/src/lib/errors.d.ts +6 -0
  43. package/src/lib/errors.d.ts.map +1 -0
  44. package/src/lib/errors.js +10 -0
  45. package/src/lib/execution-logs.d.ts +3 -0
  46. package/src/lib/execution-logs.d.ts.map +1 -0
  47. package/src/lib/execution-logs.js +47 -0
  48. package/src/lib/get.d.ts +25 -0
  49. package/src/lib/get.d.ts.map +1 -0
  50. package/src/lib/get.js +90 -0
  51. package/src/lib/helpers/stack-helpers.d.ts +16 -0
  52. package/src/lib/helpers/stack-helpers.d.ts.map +1 -0
  53. package/src/lib/helpers/stack-helpers.js +155 -0
  54. package/src/lib/index.d.ts +15 -0
  55. package/src/lib/index.d.ts.map +1 -0
  56. package/src/lib/index.js +44 -0
  57. package/src/lib/init.d.ts +37 -0
  58. package/src/lib/init.d.ts.map +1 -0
  59. package/src/lib/init.js +131 -0
  60. package/src/lib/local-provider-constraints.d.ts +28 -0
  61. package/src/lib/local-provider-constraints.d.ts.map +1 -0
  62. package/src/lib/local-provider-constraints.js +95 -0
  63. package/src/lib/local-provider-versions.d.ts +12 -0
  64. package/src/lib/local-provider-versions.d.ts.map +1 -0
  65. package/src/lib/local-provider-versions.js +73 -0
  66. package/src/lib/models/deploy-machine.d.ts +128 -0
  67. package/src/lib/models/deploy-machine.d.ts.map +1 -0
  68. package/src/lib/models/deploy-machine.js +280 -0
  69. package/src/lib/models/pty-process.d.ts +29 -0
  70. package/src/lib/models/pty-process.d.ts.map +1 -0
  71. package/src/lib/models/pty-process.js +132 -0
  72. package/src/lib/models/schema.d.ts +2307 -0
  73. package/src/lib/models/schema.d.ts.map +1 -0
  74. package/src/lib/models/schema.js +181 -0
  75. package/src/lib/models/terraform-cli.d.ts +72 -0
  76. package/src/lib/models/terraform-cli.d.ts.map +1 -0
  77. package/src/lib/models/terraform-cli.js +357 -0
  78. package/src/lib/models/terraform.d.ts +125 -0
  79. package/src/lib/models/terraform.d.ts.map +1 -0
  80. package/src/lib/models/terraform.js +72 -0
  81. package/src/lib/output.d.ts +23 -0
  82. package/src/lib/output.d.ts.map +1 -0
  83. package/src/lib/output.js +211 -0
  84. package/src/lib/provider-add.d.ts +15 -0
  85. package/src/lib/provider-add.d.ts.map +1 -0
  86. package/src/lib/provider-add.js +30 -0
  87. package/src/lib/server/terraform-logs.d.ts +2 -0
  88. package/src/lib/server/terraform-logs.d.ts.map +1 -0
  89. package/src/lib/server/terraform-logs.js +19 -0
  90. package/src/lib/synth-stack.d.ts +29 -0
  91. package/src/lib/synth-stack.d.ts.map +1 -0
  92. package/src/lib/synth-stack.js +251 -0
  93. package/src/lib/synth.d.ts +7 -0
  94. package/src/lib/synth.d.ts.map +1 -0
  95. package/src/lib/synth.js +67 -0
  96. package/src/lib/terraform-json.d.ts +1015 -0
  97. package/src/lib/terraform-json.d.ts.map +1 -0
  98. package/src/lib/terraform-json.js +82 -0
  99. package/src/lib/terraform-provider-lock.d.ts +25 -0
  100. package/src/lib/terraform-provider-lock.d.ts.map +1 -0
  101. package/src/lib/terraform-provider-lock.js +95 -0
  102. package/src/lib/watch.d.ts +16 -0
  103. package/src/lib/watch.d.ts.map +1 -0
  104. package/src/lib/watch.js +155 -0
  105. package/templates/csharp/.hooks.sscaff.js +63 -0
  106. package/templates/csharp/MainStack.cs +15 -0
  107. package/templates/csharp/MyTerraformStack.csproj +13 -0
  108. package/templates/csharp/Program.cs +17 -0
  109. package/templates/csharp/TestProgram.cs +42 -0
  110. package/templates/csharp/cdktf.json +11 -0
  111. package/templates/csharp/help +42 -0
  112. package/templates/csharp/{{}}.gitignore +345 -0
  113. package/templates/go/.hooks.sscaff.js +70 -0
  114. package/templates/go/cdktf.json +12 -0
  115. package/templates/go/go.mod +8 -0
  116. package/templates/go/help +32 -0
  117. package/templates/go/main.go +22 -0
  118. package/templates/go/main_test.go +42 -0
  119. package/templates/go/{{}}.gitignore +21 -0
  120. package/templates/java/.hooks.sscaff.js +64 -0
  121. package/templates/java/build.gradle +55 -0
  122. package/templates/java/cdktf.json +12 -0
  123. package/templates/java/gradle.properties +1 -0
  124. package/templates/java/gradlew +248 -0
  125. package/templates/java/gradlew.bat +92 -0
  126. package/templates/java/help +35 -0
  127. package/templates/java/settings.gradle +5 -0
  128. package/templates/java/src/main/java/com/mycompany/app/Main.java +16 -0
  129. package/templates/java/src/main/java/com/mycompany/app/MainStack.java +14 -0
  130. package/templates/java/src/test/java/com/company/app/MainTest.java +38 -0
  131. package/templates/java/{{}}.gitignore +14 -0
  132. package/templates/python/.hooks.sscaff.js +59 -0
  133. package/templates/python/Pipfile +7 -0
  134. package/templates/python/cdktf.json +12 -0
  135. package/templates/python/help +42 -0
  136. package/templates/python/main-test.py +26 -0
  137. package/templates/python/main.py +16 -0
  138. package/templates/python/{{}}.gitignore +7 -0
  139. package/templates/python-pip/.hooks.sscaff.js +63 -0
  140. package/templates/python-pip/cdktf.json +12 -0
  141. package/templates/python-pip/help +35 -0
  142. package/templates/python-pip/main-test.py +23 -0
  143. package/templates/python-pip/main.py +16 -0
  144. package/templates/python-pip/{{}}.gitignore +7 -0
  145. package/templates/typescript/.hooks.sscaff.js +78 -0
  146. package/templates/typescript/__tests__/main-test.ts +89 -0
  147. package/templates/typescript/cdktf.json +11 -0
  148. package/templates/typescript/help +51 -0
  149. package/templates/typescript/jest.config.js +187 -0
  150. package/templates/typescript/main.ts +14 -0
  151. package/templates/typescript/package.json +22 -0
  152. package/templates/typescript/setup.js +2 -0
  153. package/templates/typescript/tsconfig.json +35 -0
  154. package/templates/typescript/{{}}.gitignore +11 -0
@@ -0,0 +1,23 @@
1
+ import { ProviderConstraint } from "./dependency-manager";
2
+ type ProvidersMap = {
3
+ [name: string]: string;
4
+ };
5
+ export declare function resetFetchCache(): Promise<void>;
6
+ export declare function getAllPrebuiltProviders(): Promise<ProvidersMap>;
7
+ export declare function getNpmPackageName(constraint: ProviderConstraint, useCdktn: boolean): Promise<string | undefined>;
8
+ type PrebuiltProviderVersion = {
9
+ packageVersion: string;
10
+ providerVersion: string;
11
+ cdktfPeerDependencyConstraint: string;
12
+ cdktnPeerDependencyConstraint: string;
13
+ packageName: string;
14
+ };
15
+ export declare function getPrebuiltProviderRepositoryName(packageName: string): Promise<string>;
16
+ export declare function getAllPrebuiltProviderVersions(packageName: string): Promise<PrebuiltProviderVersion[]>;
17
+ export declare function getPrebuiltProviderVersions(constraint: ProviderConstraint, cdktfVersion: string): Promise<{
18
+ name: string;
19
+ version: string;
20
+ }[] | null>;
21
+ export declare function getPrebuiltProviderVersionInformation(packageName: string, packageVersion: string): Promise<any>;
22
+ export {};
23
+ //# sourceMappingURL=prebuilt-providers.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,220 @@
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=
@@ -0,0 +1,8 @@
1
+ import { ProviderConstraint } from "./dependency-manager";
2
+ /**
3
+ * returns the latest available version for the provider in the constraint
4
+ * the version of the constraint is ignored
5
+ * returns null, if the provider does not exist
6
+ */
7
+ export declare function getLatestVersion(constraint: ProviderConstraint): Promise<string | null>;
8
+ //# sourceMappingURL=registry-api.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,77 @@
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==
@@ -0,0 +1,8 @@
1
+ type Operator = "=" | "!=" | "~>" | ">=" | "<=" | ">" | "<";
2
+ export declare function parseConstraint(constraint: string): {
3
+ operator: Operator;
4
+ version: string;
5
+ };
6
+ export declare function versionMatchesConstraint(version: string, constraint: string): boolean;
7
+ export {};
8
+ //# sourceMappingURL=version-constraints.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,95 @@
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==
@@ -0,0 +1,10 @@
1
+ export declare function shouldReportCrash(projectPath?: string): boolean | undefined;
2
+ export declare function persistReportCrashReportDecision(decision: boolean, projectPath?: string): void;
3
+ export declare function initializErrorReporting(runConsentPrompt?: () => Promise<boolean>): Promise<void>;
4
+ export declare function captureException({ message, type, command, context, }: {
5
+ message: string;
6
+ type: string;
7
+ command: string;
8
+ context?: Record<string, any>;
9
+ }): void;
10
+ //# sourceMappingURL=error-reporting.d.ts.map
@@ -0,0 +1 @@
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"}