@cdktn/cli-core 0.22.0-pre.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +84 -0
  25. package/src/lib/dependencies/dependency-manager.d.ts.map +1 -0
  26. package/src/lib/dependencies/dependency-manager.js +365 -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 +574 -0
  30. package/src/lib/dependencies/prebuilt-providers.d.ts +18 -0
  31. package/src/lib/dependencies/prebuilt-providers.d.ts.map +1 -0
  32. package/src/lib/dependencies/prebuilt-providers.js +204 -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,84 @@
1
+ import { Language, TerraformDependencyConstraint } from "@cdktn/commons";
2
+ export declare const DEFAULT_HOSTNAME = "registry.terraform.io";
3
+ export declare const DEFAULT_NAMESPACE = "hashicorp";
4
+ export declare class ProviderConstraint {
5
+ readonly version: string | undefined;
6
+ /**
7
+ * normalized source of the provider
8
+ * e.g. "registry.terraform.io/hashicorp/aws"
9
+ */
10
+ readonly source: string;
11
+ constructor(source: string, version: string | undefined);
12
+ static fromConfigEntry(provider: string | TerraformDependencyConstraint): ProviderConstraint;
13
+ isFromTerraformRegistry(): boolean;
14
+ /**
15
+ * the namespace of the provider
16
+ * e.g. "hashicorp" or "kreuzwerker"
17
+ */
18
+ get namespace(): string;
19
+ /**
20
+ * the name of the provider
21
+ * e.g. "aws"
22
+ */
23
+ get name(): string;
24
+ /**
25
+ * the hostname of the provider
26
+ * e.g. "registry.terraform.io"
27
+ */
28
+ get hostname(): string;
29
+ /**
30
+ * returns a simplified provider name, dropping namespace and hostname
31
+ * if they match the defaults
32
+ */
33
+ get simplifiedName(): string;
34
+ /**
35
+ * checks if the version constraint matches the given version
36
+ * @param version an actual version (e.g. "4.12.1")
37
+ * @returns true if the version is compatible with the constraint
38
+ */
39
+ matchesVersion(version: string): boolean;
40
+ toString(): string;
41
+ }
42
+ /**
43
+ * manages dependencies of a CDKTN project (e.g. terraform providers)
44
+ */
45
+ export declare class DependencyManager {
46
+ private readonly targetLanguage;
47
+ private cdktfVersion;
48
+ private readonly projectDirectory;
49
+ private packageManager;
50
+ constructor(targetLanguage: Language, cdktfVersion: string, projectDirectory: string);
51
+ addProvider(constraint: ProviderConstraint): Promise<{
52
+ addedLocalProvider: boolean;
53
+ }>;
54
+ upgradeProvider(constraint: ProviderConstraint): Promise<{
55
+ addedLocalProvider: boolean;
56
+ }>;
57
+ getCurrentlyInstalledVersion(constraint: ProviderConstraint): Promise<string | undefined>;
58
+ upgradePrebuiltProvider(constraint: ProviderConstraint, currentVersion: string): Promise<void>;
59
+ hasPrebuiltProvider(constraint: ProviderConstraint): Promise<boolean>;
60
+ private tryGetPackageName;
61
+ private getPackageName;
62
+ getMatchingProviderVersion(constraint: ProviderConstraint): Promise<string>;
63
+ addPrebuiltProvider(constraint: ProviderConstraint, silent?: boolean): Promise<void>;
64
+ private getLanguageSpecificPackageVersion;
65
+ addLocalProvider(constraint: ProviderConstraint): Promise<void>;
66
+ /**
67
+ * Converts an NPM package name of a pre-built provider package to the name in the target language
68
+ */
69
+ private convertPackageName;
70
+ /**
71
+ * Converts an package name of a pre-built provider package in target language to the name in npm
72
+ * Inverse of: `convertPackageName`
73
+ */
74
+ private convertFromPackageNameToNpm;
75
+ allProviders(): Promise<{
76
+ local: {
77
+ providerName: string;
78
+ providerConstraint: string | undefined;
79
+ providerVersion: string | null;
80
+ }[];
81
+ prebuilt: any[];
82
+ }>;
83
+ }
84
+ //# sourceMappingURL=dependency-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-manager.d.ts","sourceRoot":"","sources":["dependency-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EAGR,6BAA6B,EAC9B,MAAM,gBAAgB,CAAC;AAkBxB,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AACxD,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAc7C,qBAAa,kBAAkB;aAYX,OAAO,EAAE,MAAM,GAAG,SAAS;IAX7C;;;OAGG;IACH,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAM7B,MAAM,EAAE,MAAM,EACE,OAAO,EAAE,MAAM,GAAG,SAAS;IAK7C,MAAM,CAAC,eAAe,CACpB,QAAQ,EAAE,MAAM,GAAG,6BAA6B,GAC/C,kBAAkB;IAgBd,uBAAuB,IAAI,OAAO;IAIzC;;;OAGG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED;;;OAGG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;OAGG;IACH,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED;;;OAGG;IACH,IAAW,cAAc,IAAI,MAAM,CAKlC;IAED;;;;OAIG;IACI,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOxC,QAAQ;CAGhB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IALnC,OAAO,CAAC,cAAc,CAAiB;gBAGpB,cAAc,EAAE,QAAQ,EACjC,YAAY,EAAE,MAAM,EACX,gBAAgB,EAAE,MAAM;IAQrC,WAAW,CACf,UAAU,EAAE,kBAAkB,GAC7B,OAAO,CAAC;QAAE,kBAAkB,EAAE,OAAO,CAAA;KAAE,CAAC;IAUrC,eAAe,CAAC,UAAU,EAAE,kBAAkB;;;IAkB9C,4BAA4B,CAAC,UAAU,EAAE,kBAAkB;IAwB3D,uBAAuB,CAC3B,UAAU,EAAE,kBAAkB,EAC9B,cAAc,EAAE,MAAM;IAmBlB,mBAAmB,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;YAoC7D,iBAAiB;YAajB,cAAc;IAYtB,0BAA0B,CAAC,UAAU,EAAE,kBAAkB;IA2BzD,mBAAmB,CAAC,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAQ;YAe1D,iCAAiC;IA8BzC,gBAAgB,CAAC,UAAU,EAAE,kBAAkB;IAuBrD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAsCtB,YAAY;;;;;;;;CAoD1B"}
@@ -0,0 +1,365 @@
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.DependencyManager = exports.ProviderConstraint = exports.DEFAULT_NAMESPACE = exports.DEFAULT_HOSTNAME = void 0;
27
+ // Copyright (c) HashiCorp, Inc
28
+ // SPDX-License-Identifier: MPL-2.0
29
+ const commons_1 = require("@cdktn/commons");
30
+ const codemaker_1 = require("codemaker");
31
+ const cdktf_config_1 = require("../cdktf-config");
32
+ const cdktf_config_manager_1 = require("./cdktf-config-manager");
33
+ const package_manager_1 = require("./package-manager");
34
+ const prebuilt_providers_1 = require("./prebuilt-providers");
35
+ const registry_api_1 = require("./registry-api");
36
+ const version_constraints_1 = require("./version-constraints");
37
+ const semver = __importStar(require("semver"));
38
+ const local_provider_versions_1 = require("../local-provider-versions");
39
+ const local_provider_constraints_1 = require("../local-provider-constraints");
40
+ // ref: https://www.terraform.io/language/providers/requirements#source-addresses
41
+ exports.DEFAULT_HOSTNAME = "registry.terraform.io";
42
+ exports.DEFAULT_NAMESPACE = "hashicorp";
43
+ function normalizeProviderSource(source) {
44
+ // returns <HOSTNAME>/<NAMESPACE>/<TYPE>
45
+ const slashes = source.split("/").length - 1;
46
+ switch (slashes) {
47
+ case 0:
48
+ return `${exports.DEFAULT_HOSTNAME}/${exports.DEFAULT_NAMESPACE}/${source}`;
49
+ case 1:
50
+ return `${exports.DEFAULT_HOSTNAME}/${source}`;
51
+ default:
52
+ return source;
53
+ }
54
+ }
55
+ class ProviderConstraint {
56
+ // TODO: add examples to cli command description (i.e. =,~>.> etc.)
57
+ // if no version constraint is specified, we assume the latest version
58
+ // if specific version is specified without e.g. =, we allow patch level increments (e.g. ~>2.12 for "2.12")
59
+ constructor(source, version) {
60
+ this.version = version;
61
+ this.source = normalizeProviderSource(source);
62
+ }
63
+ static fromConfigEntry(provider) {
64
+ if (typeof provider === "string") {
65
+ const [src, version] = provider.split("@");
66
+ return new ProviderConstraint(src.trim(), version ? version.trim() : undefined);
67
+ }
68
+ const src = (provider.namespace ? `${provider.namespace}/` : "") +
69
+ (provider.source || provider.name);
70
+ return new ProviderConstraint(src, provider.version);
71
+ }
72
+ isFromTerraformRegistry() {
73
+ return this.hostname === exports.DEFAULT_HOSTNAME;
74
+ }
75
+ /**
76
+ * the namespace of the provider
77
+ * e.g. "hashicorp" or "kreuzwerker"
78
+ */
79
+ get namespace() {
80
+ return this.source.split("/")[1];
81
+ }
82
+ /**
83
+ * the name of the provider
84
+ * e.g. "aws"
85
+ */
86
+ get name() {
87
+ return this.source.split("/")[2];
88
+ }
89
+ /**
90
+ * the hostname of the provider
91
+ * e.g. "registry.terraform.io"
92
+ */
93
+ get hostname() {
94
+ return this.source.split("/")[0];
95
+ }
96
+ /**
97
+ * returns a simplified provider name, dropping namespace and hostname
98
+ * if they match the defaults
99
+ */
100
+ get simplifiedName() {
101
+ return this.source
102
+ .split("/")
103
+ .filter((part) => part !== exports.DEFAULT_HOSTNAME && part !== exports.DEFAULT_NAMESPACE)
104
+ .join("/");
105
+ }
106
+ /**
107
+ * checks if the version constraint matches the given version
108
+ * @param version an actual version (e.g. "4.12.1")
109
+ * @returns true if the version is compatible with the constraint
110
+ */
111
+ matchesVersion(version) {
112
+ if (this.version) {
113
+ return (0, version_constraints_1.versionMatchesConstraint)(version, this.version);
114
+ }
115
+ return true;
116
+ }
117
+ toString() {
118
+ return `${this.source}${this.version ? `@${this.version}` : ""}`;
119
+ }
120
+ }
121
+ exports.ProviderConstraint = ProviderConstraint;
122
+ /**
123
+ * manages dependencies of a CDKTN project (e.g. terraform providers)
124
+ */
125
+ class DependencyManager {
126
+ constructor(targetLanguage, cdktfVersion, projectDirectory) {
127
+ this.targetLanguage = targetLanguage;
128
+ this.cdktfVersion = cdktfVersion;
129
+ this.projectDirectory = projectDirectory;
130
+ this.packageManager = package_manager_1.PackageManager.forLanguage(targetLanguage, this.projectDirectory);
131
+ }
132
+ async addProvider(constraint) {
133
+ if (await this.hasPrebuiltProvider(constraint)) {
134
+ await this.addPrebuiltProvider(constraint);
135
+ return { addedLocalProvider: false };
136
+ }
137
+ else {
138
+ await this.addLocalProvider(constraint);
139
+ return { addedLocalProvider: true };
140
+ }
141
+ }
142
+ async upgradeProvider(constraint) {
143
+ console.log(`Upgrading ${constraint.simplifiedName}...`);
144
+ const cdktfJson = new cdktf_config_manager_1.CdktfConfigManager();
145
+ const prebuiltVersion = await this.getCurrentlyInstalledVersion(constraint);
146
+ if (prebuiltVersion) {
147
+ await this.upgradePrebuiltProvider(constraint, prebuiltVersion);
148
+ return { addedLocalProvider: false };
149
+ }
150
+ if (await cdktfJson.hasProvider(constraint)) {
151
+ await cdktfJson.updateProvider(constraint);
152
+ return { addedLocalProvider: true };
153
+ }
154
+ throw commons_1.Errors.Usage(`Trying to upgrade ${constraint.simplifiedName} but it is not installed, please use "cdktf provider add ${constraint.simplifiedName}" to add it.`);
155
+ }
156
+ async getCurrentlyInstalledVersion(constraint) {
157
+ var _a;
158
+ commons_1.logger.info(`Checking if ${constraint.simplifiedName} is installed...`);
159
+ const packageName = await this.tryGetPackageName(constraint);
160
+ if (!packageName)
161
+ return; // not available as pre-built provider, so can't be installed as such
162
+ commons_1.logger.debug(`Expecting package ${packageName} to be installed if provider is installed as pre-built one`);
163
+ let installedPackages;
164
+ try {
165
+ installedPackages = await this.packageManager.listProviderPackages();
166
+ }
167
+ catch (e) {
168
+ throw new Error(`Failed to list packages: ${e}`);
169
+ }
170
+ commons_1.logger.debug(`Installed packages found: ${JSON.stringify(installedPackages, null, 2)}`);
171
+ return (_a = installedPackages.find((pkg) => pkg.name === packageName)) === null || _a === void 0 ? void 0 : _a.version;
172
+ }
173
+ async upgradePrebuiltProvider(constraint, currentVersion) {
174
+ commons_1.logger.debug(`Searching for latest matching version of ${constraint.simplifiedName}`);
175
+ const packageName = await this.getPackageName(constraint);
176
+ const packageVersion = await this.getMatchingProviderVersion(constraint);
177
+ commons_1.logger.debug(`Found package ${packageName}@${packageVersion}`);
178
+ if (packageVersion !== currentVersion) {
179
+ await this.packageManager.addPackage(packageName, packageVersion);
180
+ }
181
+ else {
182
+ console.log(`The latest version of ${packageName} is already installed: ${packageVersion}`);
183
+ }
184
+ }
185
+ async hasPrebuiltProvider(constraint) {
186
+ commons_1.logger.debug(`determining whether pre-built provider exists for ${constraint.source} with version constraint ${constraint.version} and cdktf version ${this.cdktfVersion}`);
187
+ commons_1.logger.info(`Checking whether pre-built provider exists for the following constraints:
188
+ provider: ${constraint.simplifiedName}
189
+ version : ${constraint.version || "latest"}
190
+ language: ${this.targetLanguage}
191
+ cdktf : ${this.cdktfVersion}
192
+ `);
193
+ if (this.targetLanguage === commons_1.Language.GO &&
194
+ semver.lt(this.cdktfVersion, "0.12.0")) {
195
+ commons_1.logger.info(`Before CDKTF 0.12.0 there were no pre-built providers published for Go.`);
196
+ return false;
197
+ }
198
+ const v = await (0, prebuilt_providers_1.getPrebuiltProviderVersions)(constraint, this.cdktfVersion);
199
+ const exists = v !== null;
200
+ if (exists) {
201
+ commons_1.logger.info(`Found pre-built provider.`);
202
+ }
203
+ else {
204
+ commons_1.logger.info(`Pre-built provider does not exist for the given constraints.`);
205
+ }
206
+ return exists;
207
+ }
208
+ async tryGetPackageName(constraint) {
209
+ const npmPackageName = await (0, prebuilt_providers_1.getNpmPackageName)(constraint);
210
+ if (!npmPackageName)
211
+ return;
212
+ const prebuiltProviderRepository = await (0, prebuilt_providers_1.getPrebuiltProviderRepositoryName)(npmPackageName);
213
+ return this.convertPackageName(npmPackageName, prebuiltProviderRepository);
214
+ }
215
+ async getPackageName(constraint) {
216
+ const packageName = await this.tryGetPackageName(constraint);
217
+ if (!packageName) {
218
+ throw commons_1.Errors.Usage(`Could not find pre-built provider for ${constraint.source}`);
219
+ }
220
+ return packageName;
221
+ }
222
+ async getMatchingProviderVersion(constraint) {
223
+ const packageName = await this.getPackageName(constraint);
224
+ const prebuiltProviderNpmVersions = await (0, prebuilt_providers_1.getPrebuiltProviderVersions)(constraint, this.cdktfVersion);
225
+ if (!prebuiltProviderNpmVersions) {
226
+ throw commons_1.Errors.Usage(`No pre-built provider found for ${constraint.source} with version constraint ${constraint.version} and cdktf version ${this.cdktfVersion}`);
227
+ }
228
+ const packageVersion = await this.getLanguageSpecificPackageVersion(packageName, prebuiltProviderNpmVersions);
229
+ if (!packageVersion) {
230
+ throw commons_1.Errors.Usage(`No pre-built provider found for ${constraint.source} with version constraint ${constraint.version} and cdktf version ${this.cdktfVersion} for language ${this.targetLanguage}.`);
231
+ }
232
+ return packageVersion;
233
+ }
234
+ async addPrebuiltProvider(constraint, silent = false) {
235
+ commons_1.logger.debug(`adding pre-built provider ${constraint.source} with version constraint ${constraint.version} for cdktf version ${this.cdktfVersion}`);
236
+ const packageName = await this.getPackageName(constraint);
237
+ const packageVersion = await this.getMatchingProviderVersion(constraint);
238
+ await this.packageManager.addPackage(packageName, packageVersion, silent);
239
+ // TODO: more debug logs
240
+ }
241
+ // The version we use for npm might differ from other registries
242
+ // This happens mostly in cases where a provider update failed to publish to one of the registries
243
+ // In that case we use the latest version that was published successfully and works with the current cdktf release
244
+ async getLanguageSpecificPackageVersion(packageName, prebuiltProviderNpmVersions) {
245
+ commons_1.logger.debug("Found possibly matching versions (released on npm): ", prebuiltProviderNpmVersions);
246
+ commons_1.logger.debug("Searching through package manager to find latest available version for given language");
247
+ for (const version of prebuiltProviderNpmVersions) {
248
+ try {
249
+ const isAvailable = await this.packageManager.isNpmVersionAvailable(packageName, version);
250
+ if (isAvailable) {
251
+ return version;
252
+ }
253
+ }
254
+ catch (err) {
255
+ commons_1.logger.info(`Could not find version ${version} for package ${packageName}: '${err}'. Skipping...`);
256
+ }
257
+ }
258
+ return null;
259
+ }
260
+ async addLocalProvider(constraint) {
261
+ commons_1.logger.info(`Adding local provider ${constraint.source} with version constraint ${constraint.version} to cdktf.json`);
262
+ if (!constraint.version && constraint.isFromTerraformRegistry()) {
263
+ const v = await (0, registry_api_1.getLatestVersion)(constraint);
264
+ if (v) {
265
+ constraint = new ProviderConstraint(constraint.source,
266
+ // "1.3.2" -> "~> 1.3"
267
+ `~> ${v.split(".").slice(0, 2).join(".")}`);
268
+ }
269
+ else {
270
+ throw commons_1.Errors.Usage(`Could not find a version for the provider '${constraint}' in the public registry. This could be due to a typo, please take a look at https://cdk.tf/registry-providers to find all supported providers.`);
271
+ }
272
+ }
273
+ await new cdktf_config_manager_1.CdktfConfigManager().addProvider(constraint);
274
+ }
275
+ /**
276
+ * Converts an NPM package name of a pre-built provider package to the name in the target language
277
+ */
278
+ convertPackageName(name, repository) {
279
+ const providerName = name.replace("@cdktf/provider-", "");
280
+ switch (this.targetLanguage) {
281
+ case commons_1.Language.GO: // e.g. github.com/cdktf/cdktf-provider-opentelekomcloud-go/opentelekomcloud
282
+ if (repository) {
283
+ return `${repository}-go/${providerName}`;
284
+ }
285
+ return `github.com/cdktf/cdktf-provider-${providerName}-go/${providerName}`;
286
+ case commons_1.Language.TYPESCRIPT: // e.g. @cdktf/provider-random
287
+ return name; // already the correct name
288
+ case commons_1.Language.CSHARP: // e.g. HashiCorp.Cdktf.Providers.Opentelekomcloud
289
+ return `HashiCorp.Cdktf.Providers.` + (0, codemaker_1.toPascalCase)(providerName);
290
+ case commons_1.Language.JAVA: // e.g. com.hashicorp.opentelekomcloud
291
+ return `com.hashicorp.cdktf-provider-${providerName}`;
292
+ case commons_1.Language.PYTHON: // e.g. cdktf-cdktf-provider-opentelekomcloud
293
+ return `cdktf-cdktf-provider-${providerName}`;
294
+ default:
295
+ throw new Error(`converting package name for language ${this.targetLanguage} not implemented yet`);
296
+ }
297
+ }
298
+ /**
299
+ * Converts an package name of a pre-built provider package in target language to the name in npm
300
+ * Inverse of: `convertPackageName`
301
+ */
302
+ convertFromPackageNameToNpm(name) {
303
+ const npmPackagePrefix = "@cdktf/provider-";
304
+ const regexes = {
305
+ [commons_1.Language.GO]: /github.com\/(?:cdktf|hashicorp)\/cdktf-provider-(.+)-go\//i,
306
+ [commons_1.Language.TYPESCRIPT]: /(.+)/i,
307
+ [commons_1.Language.CSHARP]: /HashiCorp\.Cdktf\.Providers\.(.+)/i,
308
+ [commons_1.Language.JAVA]: /com\.hashicorp\.cdktf-provider-(.+)/i,
309
+ [commons_1.Language.PYTHON]: /cdktf-cdktf-provider-(.+)/i,
310
+ };
311
+ const regex = regexes[this.targetLanguage];
312
+ if (!regex) {
313
+ throw commons_1.Errors.Usage("Language not supported for pre-built providers");
314
+ }
315
+ const match = regex.exec(name);
316
+ if (!match) {
317
+ throw new Error(`Package name is not in expected format: ${name}`);
318
+ }
319
+ switch (this.targetLanguage) {
320
+ case commons_1.Language.GO: // e.g. github.com/cdktf/cdktf-provider-opentelekomcloud-go/opentelekomcloud
321
+ return npmPackagePrefix + match[1];
322
+ case commons_1.Language.TYPESCRIPT: // e.g. @cdktf/provider-random
323
+ return match[1]; // already the correct name
324
+ case commons_1.Language.CSHARP: // e.g. HashiCorp.Cdktf.Providers.Opentelekomcloud
325
+ return npmPackagePrefix + (0, codemaker_1.toSnakeCase)(match[1]);
326
+ case commons_1.Language.JAVA: // e.g. com.hashicorp.opentelekomcloud
327
+ return npmPackagePrefix + match[1];
328
+ case commons_1.Language.PYTHON: // e.g. cdktf-cdktf-provider-opentelekomcloud
329
+ return npmPackagePrefix + match[1];
330
+ default:
331
+ throw new Error(`converting package name for language ${this.targetLanguage} not implemented yet`);
332
+ }
333
+ }
334
+ async allProviders() {
335
+ const cdktfJson = cdktf_config_1.CdktfConfig.read();
336
+ const localVersions = new local_provider_versions_1.LocalProviderVersions();
337
+ const localProviderConfigs = cdktfJson.terraformProviders;
338
+ const prebuiltProviderConfigs = await this.packageManager.listProviderPackages();
339
+ const prebuiltProvidersInfo = await Promise.all(prebuiltProviderConfigs.map(async (prebuiltProviderConfig) => {
340
+ const packageName = this.convertFromPackageNameToNpm(prebuiltProviderConfig.name);
341
+ const providerInformation = await (0, prebuilt_providers_1.getPrebuiltProviderVersionInformation)(packageName, prebuiltProviderConfig.version);
342
+ return {
343
+ ...providerInformation,
344
+ packageName: prebuiltProviderConfig.name,
345
+ };
346
+ }));
347
+ const constraints = new local_provider_constraints_1.LocalProviderConstraints();
348
+ const localProvidersInfo = await Promise.all(localProviderConfigs.map(async (localProviderConfig) => {
349
+ const constraint = ProviderConstraint.fromConfigEntry(localProviderConfig);
350
+ const version = await localVersions.versionForProvider(constraint.simplifiedName);
351
+ const constraintValue = await constraints.constraintForProvider(constraint.simplifiedName);
352
+ return {
353
+ providerName: constraint.simplifiedName,
354
+ providerConstraint: constraintValue || constraint.version,
355
+ providerVersion: version,
356
+ };
357
+ }));
358
+ return {
359
+ local: localProvidersInfo,
360
+ prebuilt: prebuiltProvidersInfo,
361
+ };
362
+ }
363
+ }
364
+ exports.DependencyManager = DependencyManager;
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeS1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGVwZW5kZW5jeS1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyw0Q0FLd0I7QUFDeEIseUNBQXNEO0FBQ3RELGtEQUE4QztBQUM5QyxpRUFBNEQ7QUFDNUQsdURBQW1EO0FBQ25ELDZEQUs4QjtBQUM5QixpREFBa0Q7QUFDbEQsK0RBQWlFO0FBQ2pFLCtDQUFpQztBQUNqQyx3RUFBbUU7QUFDbkUsOEVBQXlFO0FBRXpFLGlGQUFpRjtBQUNwRSxRQUFBLGdCQUFnQixHQUFHLHVCQUF1QixDQUFDO0FBQzNDLFFBQUEsaUJBQWlCLEdBQUcsV0FBVyxDQUFDO0FBQzdDLFNBQVMsdUJBQXVCLENBQUMsTUFBYztJQUM3Qyx3Q0FBd0M7SUFDeEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLFFBQVEsT0FBTyxFQUFFLENBQUM7UUFDaEIsS0FBSyxDQUFDO1lBQ0osT0FBTyxHQUFHLHdCQUFnQixJQUFJLHlCQUFpQixJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzlELEtBQUssQ0FBQztZQUNKLE9BQU8sR0FBRyx3QkFBZ0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN6QztZQUNFLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBYSxrQkFBa0I7SUFPN0IsbUVBQW1FO0lBQ25FLHNFQUFzRTtJQUN0RSw0R0FBNEc7SUFDNUcsWUFDRSxNQUFjLEVBQ0UsT0FBMkI7UUFBM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFFM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsTUFBTSxDQUFD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T0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDLGtCQUFrQixDQUNwRCxVQUFVLENBQUMsY0FBYyxDQUMxQixDQUFDO1lBQ0YsTUFBTSxlQUFlLEdBQUcsTUFBTSxXQUFXLENBQUMscUJBQXFCLENBQzdELFVBQVUsQ0FBQyxjQUFjLENBQzFCLENBQUM7WUFFRixPQUFPO2dCQUNMLFlBQVksRUFBRSxVQUFVLENBQUMsY0FBYztnQkFDdkMsa0JBQWtCLEVBQUUsZUFBZSxJQUFJLFVBQVUsQ0FBQyxPQUFPO2dCQUN6RCxlQUFlLEVBQUUsT0FBTzthQUN6QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLE9BQU87WUFDTCxLQUFLLEVBQUUsa0JBQWtCO1lBQ3pCLFFBQVEsRUFBRSxxQkFBcUI7U0FDaEMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTlXRCw4Q0E4V0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHtcbiAgTGFuZ3VhZ2UsXG4gIEVycm9ycyxcbiAgbG9nZ2VyLFxuICBUZXJyYWZvcm1EZXBlbmRlbmN5Q29uc3RyYWludCxcbn0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQgeyB0b1Bhc2NhbENhc2UsIHRvU25ha2VDYXNlIH0gZnJvbSBcImNvZGVtYWtlclwiO1xuaW1wb3J0IHsgQ2RrdGZDb25maWcgfSBmcm9tIFwiLi4vY2RrdGYtY29uZmlnXCI7XG5pbXBvcnQgeyBDZGt0ZkNvbmZpZ01hbmFnZXIgfSBmcm9tIFwiLi9jZGt0Zi1jb25maWctbWFuYWdlclwiO1xuaW1wb3J0IHsgUGFja2FnZU1hbmFnZXIgfSBmcm9tIFwiLi9wYWNrYWdlLW1hbmFnZXJcIjtcbmltcG9ydCB7XG4gIGdldE5wbVBhY2thZ2VOYW1lLFxuICBnZXRQcmVidWlsdFByb3ZpZGVyUmVwb3NpdG9yeU5hbWUsXG4gIGdldFByZWJ1aWx0UHJvdmlkZXJWZXJzaW9uSW5mb3JtYXRpb24sXG4gIGdldFByZWJ1aWx0UHJvdmlkZXJWZXJzaW9ucyxcbn0gZnJvbSBcIi4vcHJlYnVpbHQtcHJvdmlkZXJzXCI7XG5pbXBvcnQgeyBnZXRMYXRlc3RWZXJzaW9uIH0gZnJvbSBcIi4vcmVnaXN0cnktYXBpXCI7XG5pbXBvcnQgeyB2ZXJzaW9uTWF0Y2hlc0NvbnN0cmFpbnQgfSBmcm9tIFwiLi92ZXJzaW9uLWNvbnN0cmFpbnRzXCI7XG5pbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSBcInNlbXZlclwiO1xuaW1wb3J0IHsgTG9jYWxQcm92aWRlclZlcnNpb25zIH0gZnJvbSBcIi4uL2xvY2FsLXByb3ZpZGVyLXZlcnNpb25zXCI7XG5pbXBvcnQgeyBMb2NhbFByb3ZpZGVyQ29uc3RyYWludHMgfSBmcm9tIFwiLi4vbG9jYWwtcHJvdmlkZXItY29uc3RyYWludHNcIjtcblxuLy8gcmVmOiBodHRwczovL3d3dy50ZXJyYWZvcm0uaW8vbGFuZ3VhZ2UvcHJvdmlkZXJzL3JlcXVpcmVtZW50cyNzb3VyY2UtYWRkcmVzc2VzXG5leHBvcnQgY29uc3QgREVGQVVMVF9IT1NUTkFNRSA9IFwicmVnaXN0cnkudGVycmFmb3JtLmlvXCI7XG5leHBvcnQgY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSBcImhhc2hpY29ycFwiO1xuZnVuY3Rpb24gbm9ybWFsaXplUHJvdmlkZXJTb3VyY2Uoc291cmNlOiBzdHJpbmcpIHtcbiAgLy8gcmV0dXJucyA8SE9TVE5BTUU+LzxOQU1FU1BBQ0U+LzxUWVBFPlxuICBjb25zdCBzbGFzaGVzID0gc291cmNlLnNwbGl0KFwiL1wiKS5sZW5ndGggLSAxO1xuICBzd2l0Y2ggKHNsYXNoZXMpIHtcbiAgICBjYXNlIDA6XG4gICAgICByZXR1cm4gYCR7REVGQVVMVF9IT1NUTkFNRX0vJHtERUZBVUxUX05BTUVTUEFDRX0vJHtzb3VyY2V9YDtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gYCR7REVGQVVMVF9IT1NUTkFNRX0vJHtzb3VyY2V9YDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvdmlkZXJDb25zdHJhaW50IHtcbiAgLyoqXG4gICAqIG5vcm1hbGl6ZWQgc291cmNlIG9mIHRoZSBwcm92aWRlclxuICAgKiBlLmcuIFwicmVnaXN0cnkudGVycmFmb3JtLmlvL2hhc2hpY29ycC9hd3NcIlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xuXG4gIC8vIFRPRE86IGFkZCBleGFtcGxlcyB0byBjbGkgY29tbWFuZCBkZXNjcmlwdGlvbiAoaS5lLiA9LH4+Lj4gZXRjLilcbiAgLy8gaWYgbm8gdmVyc2lvbiBjb25zdHJhaW50IGlzIHNwZWNpZmllZCwgd2UgYXNzdW1lIHRoZSBsYXRlc3QgdmVyc2lvblxuICAvLyBpZiBzcGVjaWZpYyB2ZXJzaW9uIGlzIHNwZWNpZmllZCB3aXRob3V0IGUuZy4gPSwgd2UgYWxsb3cgcGF0Y2ggbGV2ZWwgaW5jcmVtZW50cyAoZS5nLiB+PjIuMTIgZm9yIFwiMi4xMlwiKVxuICBjb25zdHJ1Y3RvcihcbiAgICBzb3VyY2U6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICApIHtcbiAgICB0aGlzLnNvdXJjZSA9IG5vcm1hbGl6ZVByb3ZpZGVyU291cmNlKHNvdXJjZSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUNvbmZpZ0VudHJ5KFxuICAgIHByb3ZpZGVyOiBzdHJpbmcgfCBUZXJyYWZvcm1EZXBlbmRlbmN5Q29uc3RyYWludCxcbiAgKTogUHJvdmlkZXJDb25zdHJhaW50IHtcbiAgICBpZiAodHlwZW9mIHByb3ZpZGVyID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBjb25zdCBbc3JjLCB2ZXJzaW9uXSA9IHByb3ZpZGVyLnNwbGl0KFwiQFwiKTtcbiAgICAgIHJldHVybiBuZXcgUHJvdmlkZXJDb25zdHJhaW50KFxuICAgICAgICBzcmMudHJpbSgpLFxuICAgICAgICB2ZXJzaW9uID8gdmVyc2lvbi50cmltKCkgOiB1bmRlZmluZWQsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHNyYyA9XG4gICAgICAocHJvdmlkZXIubmFtZXNwYWNlID8gYCR7cHJvdmlkZXIubmFtZXNwYWNlfS9gIDogXCJcIikgK1xuICAgICAgKHByb3ZpZGVyLnNvdXJjZSB8fCBwcm92aWRlci5uYW1lKTtcblxuICAgIHJldHVybiBuZXcgUHJvdmlkZXJDb25zdHJhaW50KHNyYywgcHJvdmlkZXIudmVyc2lvbik7XG4gIH1cblxuICBwdWJsaWMgaXNGcm9tVGVycmFmb3JtUmVnaXN0cnkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdG5hbWUgPT09IERFRkFVTFRfSE9TVE5BTUU7XG4gIH1cblxuICAvKipcbiAgICogdGhlIG5hbWVzcGFjZSBvZiB0aGUgcHJvdmlkZXJcbiAgICogZS5nLiBcImhhc2hpY29ycFwiIG9yIFwia3JldXp3ZXJrZXJcIlxuICAgKi9cbiAgcHVibGljIGdldCBuYW1lc3BhY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2Uuc3BsaXQoXCIvXCIpWzFdO1xuICB9XG5cbiAgLyoqXG4gICAqIHRoZSBuYW1lIG9mIHRoZSBwcm92aWRlclxuICAgKiBlLmcuIFwiYXdzXCJcbiAgICovXG4gIHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5zcGxpdChcIi9cIilbMl07XG4gIH1cblxuICAvKipcbiAgICogdGhlIGhvc3RuYW1lIG9mIHRoZSBwcm92aWRlclxuICAgKiBlLmcuIFwicmVnaXN0cnkudGVycmFmb3JtLmlvXCJcbiAgICovXG4gIHB1YmxpYyBnZXQgaG9zdG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2Uuc3BsaXQoXCIvXCIpWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIHJldHVybnMgYSBzaW1wbGlmaWVkIHByb3ZpZGVyIG5hbWUsIGRyb3BwaW5nIG5hbWVzcGFjZSBhbmQgaG9zdG5hbWVcbiAgICogaWYgdGhleSBtYXRjaCB0aGUgZGVmYXVsdHNcbiAgICovXG4gIHB1YmxpYyBnZXQgc2ltcGxpZmllZE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2VcbiAgICAgIC5zcGxpdChcIi9cIilcbiAgICAgIC5maWx0ZXIoKHBhcnQpID0+IHBhcnQgIT09IERFRkFVTFRfSE9TVE5BTUUgJiYgcGFydCAhPT0gREVGQVVMVF9OQU1FU1BBQ0UpXG4gICAgICAuam9pbihcIi9cIik7XG4gIH1cblxuICAvKipcbiAgICogY2hlY2tzIGlmIHRoZSB2ZXJzaW9uIGNvbnN0cmFpbnQgbWF0Y2hlcyB0aGUgZ2l2ZW4gdmVyc2lvblxuICAgKiBAcGFyYW0gdmVyc2lvbiBhbiBhY3R1YWwgdmVyc2lvbiAoZS5nLiBcIjQuMTIuMVwiKVxuICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSB2ZXJzaW9uIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgY29uc3RyYWludFxuICAgKi9cbiAgcHVibGljIG1hdGNoZXNWZXJzaW9uKHZlcnNpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnZlcnNpb24pIHtcbiAgICAgIHJldHVybiB2ZXJzaW9uTWF0Y2hlc0NvbnN0cmFpbnQodmVyc2lvbiwgdGhpcy52ZXJzaW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuc291cmNlfSR7dGhpcy52ZXJzaW9uID8gYEAke3RoaXMudmVyc2lvbn1gIDogXCJcIn1gO1xuICB9XG59XG5cbi8qKlxuICogbWFuYWdlcyBkZXBlbmRlbmNpZXMgb2YgYSBDREtUTiBwcm9qZWN0IChlLmcuIHRlcnJhZm9ybSBwcm92aWRlcnMpXG4gKi9cbmV4cG9ydCBjbGFzcyBEZXBlbmRlbmN5TWFuYWdlciB7XG4gIHByaXZhdGUgcGFja2FnZU1hbmFnZXI6IFBhY2thZ2VNYW5hZ2VyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFyZ2V0TGFuZ3VhZ2U6IExhbmd1YWdlLFxuICAgIHByaXZhdGUgY2RrdGZWZXJzaW9uOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9qZWN0RGlyZWN0b3J5OiBzdHJpbmcsXG4gICkge1xuICAgIHRoaXMucGFja2FnZU1hbmFnZXIgPSBQYWNrYWdlTWFuYWdlci5mb3JMYW5ndWFnZShcbiAgICAgIHRhcmdldExhbmd1YWdlLFxuICAgICAgdGhpcy5wcm9qZWN0RGlyZWN0b3J5LFxuICAgICk7XG4gIH1cblxuICBhc3luYyBhZGRQcm92aWRlcihcbiAgICBjb25zdHJhaW50OiBQcm92aWRlckNvbnN0cmFpbnQsXG4gICk6IFByb21pc2U8eyBhZGRlZExvY2FsUHJvdmlkZXI6IGJvb2xlYW4gfT4ge1xuICAgIGlmIChhd2FpdCB0aGlzLmhhc1ByZWJ1aWx0UHJvdmlkZXIoY29uc3RyYWludCkpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRkUHJlYnVpbHRQcm92aWRlcihjb25zdHJhaW50KTtcbiAgICAgIHJldHVybiB7IGFkZGVkTG9jYWxQcm92aWRlcjogZmFsc2UgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5hZGRMb2NhbFByb3ZpZGVyKGNvbnN0cmFpbnQpO1xuICAgICAgcmV0dXJuIHsgYWRkZWRMb2NhbFByb3ZpZGVyOiB0cnVlIH07XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBncmFkZVByb3ZpZGVyKGNvbnN0cmFpbnQ6IFByb3ZpZGVyQ29uc3RyYWludCkge1xuICAgIGNvbnNvbGUubG9nKGBVcGdyYWRpbmcgJHtjb25zdHJhaW50LnNpbXBsaWZpZWROYW1lfS4uLmApO1xuICAgIGNvbnN0IGNka3RmSnNvbiA9IG5ldyBDZGt0ZkNvbmZpZ01hbmFnZXIoKTtcbiAgICBjb25zdCBwcmVidWlsdFZlcnNpb24gPSBhd2FpdCB0aGlzLmdldEN1cnJlbnRseUluc3RhbGxlZFZlcnNpb24oY29uc3RyYWludCk7XG4gICAgaWYgKHByZWJ1aWx0VmVyc2lvbikge1xuICAgICAgYXdhaXQgdGhpcy51cGdyYWRlUHJlYnVpbHRQcm92aWRlcihjb25zdHJhaW50LCBwcmVidWlsdFZlcnNpb24pO1xuICAgICAgcmV0dXJuIHsgYWRkZWRMb2NhbFByb3ZpZGVyOiBmYWxzZSB9O1xuICAgIH1cbiAgICBpZiAoYXdhaXQgY2RrdGZKc29uLmhhc1Byb3ZpZGVyKGNvbnN0cmFpbnQpKSB7XG4gICAgICBhd2FpdCBjZGt0Zkpzb24udXBkYXRlUHJvdmlkZXIoY29uc3RyYWludCk7XG4gICAgICByZXR1cm4geyBhZGRlZExvY2FsUHJvdmlkZXI6IHRydWUgfTtcbiAgICB9XG5cbiAgICB0aHJvdyBFcnJvcnMuVXNhZ2UoXG4gICAgICBgVHJ5aW5nIHRvIHVwZ3JhZGUgJHtjb25zdHJhaW50LnNpbXBsaWZpZWROYW1lfSBidXQgaXQgaXMgbm90IGluc3RhbGxlZCwgcGxlYXNlIHVzZSBcImNka3RmIHByb3ZpZGVyIGFkZCAke2NvbnN0cmFpbnQuc2ltcGxpZmllZE5hbWV9XCIgdG8gYWRkIGl0LmAsXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldEN1cnJlbnRseUluc3RhbGxlZFZlcnNpb24oY29uc3RyYWludDogUHJvdmlkZXJDb25zdHJhaW50KSB7XG4gICAgbG9nZ2VyLmluZm8oYENoZWNraW5nIGlmICR7Y29uc3RyYWludC5zaW1wbGlmaWVkTmFtZX0gaXMgaW5zdGFsbGVkLi4uYCk7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSBhd2FpdCB0aGlzLnRyeUdldFBhY2thZ2VOYW1lKGNvbnN0cmFpbnQpO1xuXG4gICAgaWYgKCFwYWNrYWdlTmFtZSkgcmV0dXJuOyAvLyBub3QgYXZhaWxhYmxlIGFzIHByZS1idWlsdCBwcm92aWRlciwgc28gY2FuJ3QgYmUgaW5zdGFsbGVkIGFzIHN1Y2hcblxuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBFeHBlY3RpbmcgcGFja2FnZSAke3BhY2thZ2VOYW1lfSB0byBiZSBpbnN0YWxsZWQgaWYgcHJvdmlkZXIgaXMgaW5zdGFsbGVkIGFzIHByZS1idWlsdCBvbmVgLFxuICAgICk7XG5cbiAgICBsZXQgaW5zdGFsbGVkUGFja2FnZXM7XG4gICAgdHJ5IHtcbiAgICAgIGluc3RhbGxlZFBhY2thZ2VzID0gYXdhaXQgdGhpcy5wYWNrYWdlTWFuYWdlci5saXN0UHJvdmlkZXJQYWNrYWdlcygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGxpc3QgcGFja2FnZXM6ICR7ZX1gKTtcbiAgICB9XG5cbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICBgSW5zdGFsbGVkIHBhY2thZ2VzIGZvdW5kOiAke0pTT04uc3RyaW5naWZ5KGluc3RhbGxlZFBhY2thZ2VzLCBudWxsLCAyKX1gLFxuICAgICk7XG5cbiAgICByZXR1cm4gaW5zdGFsbGVkUGFja2FnZXMuZmluZCgocGtnKSA9PiBwa2cubmFtZSA9PT0gcGFja2FnZU5hbWUpPy52ZXJzaW9uO1xuICB9XG5cbiAgYXN5bmMgdXBncmFkZVByZWJ1aWx0UHJvdmlkZXIoXG4gICAgY29uc3RyYWludDogUHJvdmlkZXJDb25zdHJhaW50LFxuICAgIGN1cnJlbnRWZXJzaW9uOiBzdHJpbmcsXG4gICkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBTZWFyY2hpbmcgZm9yIGxhdGVzdCBtYXRjaGluZyB2ZXJzaW9uIG9mICR7Y29uc3RyYWludC5zaW1wbGlmaWVkTmFtZX1gLFxuICAgICk7XG5cbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IGF3YWl0IHRoaXMuZ2V0UGFja2FnZU5hbWUoY29uc3RyYWludCk7XG4gICAgY29uc3QgcGFja2FnZVZlcnNpb24gPSBhd2FpdCB0aGlzLmdldE1hdGNoaW5nUHJvdmlkZXJWZXJzaW9uKGNvbnN0cmFpbnQpO1xuXG4gICAgbG9nZ2VyLmRlYnVnKGBGb3VuZCBwYWNrYWdlICR7cGFja2FnZU5hbWV9QCR7cGFja2FnZVZlcnNpb259YCk7XG4gICAgaWYgKHBhY2thZ2VWZXJzaW9uICE9PSBjdXJyZW50VmVyc2lvbikge1xuICAgICAgYXdhaXQgdGhpcy5wYWNrYWdlTWFuYWdlci5hZGRQYWNrYWdlKHBhY2thZ2VOYW1lLCBwYWNrYWdlVmVyc2lvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgVGhlIGxhdGVzdCB2ZXJzaW9uIG9mICR7cGFja2FnZU5hbWV9IGlzIGFscmVhZHkgaW5zdGFsbGVkOiAke3BhY2thZ2VWZXJzaW9ufWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGhhc1ByZWJ1aWx0UHJvdmlkZXIoY29uc3RyYWludDogUHJvdmlkZXJDb25zdHJhaW50KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgYGRldGVybWluaW5nIHdoZXRoZXIgcHJlLWJ1aWx0IHByb3ZpZGVyIGV4aXN0cyBmb3IgJHtjb25zdHJhaW50LnNvdXJjZX0gd2l0aCB2ZXJzaW9uIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50LnZlcnNpb259IGFuZCBjZGt0ZiB2ZXJzaW9uICR7dGhpcy5jZGt0ZlZlcnNpb259YCxcbiAgICApO1xuXG4gICAgbG9nZ2VyLmluZm8oYENoZWNraW5nIHdoZXRoZXIgcHJlLWJ1aWx0IHByb3ZpZGVyIGV4aXN0cyBmb3IgdGhlIGZvbGxvd2luZyBjb25zdHJhaW50czpcbiAgcHJvdmlkZXI6ICR7Y29uc3RyYWludC5zaW1wbGlmaWVkTmFtZX1cbiAgdmVyc2lvbiA6ICR7Y29uc3RyYWludC52ZXJzaW9uIHx8IFwibGF0ZXN0XCJ9XG4gIGxhbmd1YWdlOiAke3RoaXMudGFyZ2V0TGFuZ3VhZ2V9XG4gIGNka3RmICAgOiAke3RoaXMuY2RrdGZWZXJzaW9ufVxuYCk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnRhcmdldExhbmd1YWdlID09PSBMYW5ndWFnZS5HTyAmJlxuICAgICAgc2VtdmVyLmx0KHRoaXMuY2RrdGZWZXJzaW9uLCBcIjAuMTIuMFwiKVxuICAgICkge1xuICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgIGBCZWZvcmUgQ0RLVEYgMC4xMi4wIHRoZXJlIHdlcmUgbm8gcHJlLWJ1aWx0IHByb3ZpZGVycyBwdWJsaXNoZWQgZm9yIEdvLmAsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHYgPSBhd2FpdCBnZXRQcmVidWlsdFByb3ZpZGVyVmVyc2lvbnMoY29uc3RyYWludCwgdGhpcy5jZGt0ZlZlcnNpb24pO1xuICAgIGNvbnN0IGV4aXN0cyA9IHYgIT09IG51bGw7XG5cbiAgICBpZiAoZXhpc3RzKSB7XG4gICAgICBsb2dnZXIuaW5mbyhgRm91bmQgcHJlLWJ1aWx0IHByb3ZpZGVyLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dnZXIuaW5mbyhcbiAgICAgICAgYFByZS1idWlsdCBwcm92aWRlciBkb2VzIG5vdCBleGlzdCBmb3IgdGhlIGdpdmVuIGNvbnN0cmFpbnRzLmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBleGlzdHM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHRyeUdldFBhY2thZ2VOYW1lKFxuICAgIGNvbnN0cmFpbnQ6IFByb3ZpZGVyQ29uc3RyYWludCxcbiAgKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBucG1QYWNrYWdlTmFtZSA9IGF3YWl0IGdldE5wbVBhY2thZ2VOYW1lKGNvbnN0cmFpbnQpO1xuXG4gICAgaWYgKCFucG1QYWNrYWdlTmFtZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgcHJlYnVpbHRQcm92aWRlclJlcG9zaXRvcnkgPVxuICAgICAgYXdhaXQgZ2V0UHJlYnVpbHRQcm92aWRlclJlcG9zaXRvcnlOYW1lKG5wbVBhY2thZ2VOYW1lKTtcblxuICAgIHJldHVybiB0aGlzLmNvbnZlcnRQYWNrYWdlTmFtZShucG1QYWNrYWdlTmFtZSwgcHJlYnVpbHRQcm92aWRlclJlcG9zaXRvcnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRQYWNrYWdlTmFtZShcbiAgICBjb25zdHJhaW50OiBQcm92aWRlckNvbnN0cmFpbnQsXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSBhd2FpdCB0aGlzLnRyeUdldFBhY2thZ2VOYW1lKGNvbnN0cmFpbnQpO1xuICAgIGlmICghcGFja2FnZU5hbWUpIHtcbiAgICAgIHRocm93IEVycm9ycy5Vc2FnZShcbiAgICAgICAgYENvdWxkIG5vdCBmaW5kIHByZS1idWlsdCBwcm92aWRlciBmb3IgJHtjb25zdHJhaW50LnNvdXJjZX1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhY2thZ2VOYW1lO1xuICB9XG5cbiAgYXN5bmMgZ2V0TWF0Y2hpbmdQcm92aWRlclZlcnNpb24oY29uc3RyYWludDogUHJvdmlkZXJDb25zdHJhaW50KSB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSBhd2FpdCB0aGlzLmdldFBhY2thZ2VOYW1lKGNvbnN0cmFpbnQpO1xuXG4gICAgY29uc3QgcHJlYnVpbHRQcm92aWRlck5wbVZlcnNpb25zID0gYXdhaXQgZ2V0UHJlYnVpbHRQcm92aWRlclZlcnNpb25zKFxuICAgICAgY29uc3RyYWludCxcbiAgICAgIHRoaXMuY2RrdGZWZXJzaW9uLFxuICAgICk7XG4gICAgaWYgKCFwcmVidWlsdFByb3ZpZGVyTnBtVmVyc2lvbnMpIHtcbiAgICAgIHRocm93IEVycm9ycy5Vc2FnZShcbiAgICAgICAgYE5vIHByZS1idWlsdCBwcm92aWRlciBmb3VuZCBmb3IgJHtjb25zdHJhaW50LnNvdXJjZX0gd2l0aCB2ZXJzaW9uIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50LnZlcnNpb259IGFuZCBjZGt0ZiB2ZXJzaW9uICR7dGhpcy5jZGt0ZlZlcnNpb259YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFja2FnZVZlcnNpb24gPSBhd2FpdCB0aGlzLmdldExhbmd1YWdlU3BlY2lmaWNQYWNrYWdlVmVyc2lvbihcbiAgICAgIHBhY2thZ2VOYW1lLFxuICAgICAgcHJlYnVpbHRQcm92aWRlck5wbVZlcnNpb25zLFxuICAgICk7XG5cbiAgICBpZiAoIXBhY2thZ2VWZXJzaW9uKSB7XG4gICAgICB0aHJvdyBFcnJvcnMuVXNhZ2UoXG4gICAgICAgIGBObyBwcmUtYnVpbHQgcHJvdmlkZXIgZm91bmQgZm9yICR7Y29uc3RyYWludC5zb3VyY2V9IHdpdGggdmVyc2lvbiBjb25zdHJhaW50ICR7Y29uc3RyYWludC52ZXJzaW9ufSBhbmQgY2RrdGYgdmVyc2lvbiAke3RoaXMuY2RrdGZWZXJzaW9ufSBmb3IgbGFuZ3VhZ2UgJHt0aGlzLnRhcmdldExhbmd1YWdlfS5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFja2FnZVZlcnNpb247XG4gIH1cblxuICBhc3luYyBhZGRQcmVidWlsdFByb3ZpZGVyKGNvbnN0cmFpbnQ6IFByb3ZpZGVyQ29uc3RyYWludCwgc2lsZW50ID0gZmFsc2UpIHtcbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICBgYWRkaW5nIHByZS1idWlsdCBwcm92aWRlciAke2NvbnN0cmFpbnQuc291cmNlfSB3aXRoIHZlcnNpb24gY29uc3RyYWludCAke2NvbnN0cmFpbnQudmVyc2lvbn0gZm9yIGNka3RmIHZlcnNpb24gJHt0aGlzLmNka3RmVmVyc2lvbn1gLFxuICAgICk7XG5cbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IGF3YWl0IHRoaXMuZ2V0UGFja2FnZU5hbWUoY29uc3RyYWludCk7XG4gICAgY29uc3QgcGFja2FnZVZlcnNpb24gPSBhd2FpdCB0aGlzLmdldE1hdGNoaW5nUHJvdmlkZXJWZXJzaW9uKGNvbnN0cmFpbnQpO1xuICAgIGF3YWl0IHRoaXMucGFja2FnZU1hbmFnZXIuYWRkUGFja2FnZShwYWNrYWdlTmFtZSwgcGFja2FnZVZlcnNpb24sIHNpbGVudCk7XG5cbiAgICAvLyBUT0RPOiBtb3JlIGRlYnVnIGxvZ3NcbiAgfVxuXG4gIC8vIFRoZSB2ZXJzaW9uIHdlIHVzZSBmb3IgbnBtIG1pZ2h0IGRpZmZlciBmcm9tIG90aGVyIHJlZ2lzdHJpZXNcbiAgLy8gVGhpcyBoYXBwZW5zIG1vc3RseSBpbiBjYXNlcyB3aGVyZSBhIHByb3ZpZGVyIHVwZGF0ZSBmYWlsZWQgdG8gcHVibGlzaCB0byBvbmUgb2YgdGhlIHJlZ2lzdHJpZXNcbiAgLy8gSW4gdGhhdCBjYXNlIHdlIHVzZSB0aGUgbGF0ZXN0IHZlcnNpb24gdGhhdCB3YXMgcHVibGlzaGVkIHN1Y2Nlc3NmdWxseSBhbmQgd29ya3Mgd2l0aCB0aGUgY3VycmVudCBjZGt0ZiByZWxlYXNlXG4gIHByaXZhdGUgYXN5bmMgZ2V0TGFuZ3VhZ2VTcGVjaWZpY1BhY2thZ2VWZXJzaW9uKFxuICAgIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gICAgcHJlYnVpbHRQcm92aWRlck5wbVZlcnNpb25zOiBzdHJpbmdbXSxcbiAgKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgXCJGb3VuZCBwb3NzaWJseSBtYXRjaGluZyB2ZXJzaW9ucyAocmVsZWFzZWQgb24gbnBtKTogXCIsXG4gICAgICBwcmVidWlsdFByb3ZpZGVyTnBtVmVyc2lvbnMsXG4gICAgKTtcbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICBcIlNlYXJjaGluZyB0aHJvdWdoIHBhY2thZ2UgbWFuYWdlciB0byBmaW5kIGxhdGVzdCBhdmFpbGFibGUgdmVyc2lvbiBmb3IgZ2l2ZW4gbGFuZ3VhZ2VcIixcbiAgICApO1xuXG4gICAgZm9yIChjb25zdCB2ZXJzaW9uIG9mIHByZWJ1aWx0UHJvdmlkZXJOcG1WZXJzaW9ucykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgaXNBdmFpbGFibGUgPSBhd2FpdCB0aGlzLnBhY2thZ2VNYW5hZ2VyLmlzTnBtVmVyc2lvbkF2YWlsYWJsZShcbiAgICAgICAgICBwYWNrYWdlTmFtZSxcbiAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICApO1xuICAgICAgICBpZiAoaXNBdmFpbGFibGUpIHtcbiAgICAgICAgICByZXR1cm4gdmVyc2lvbjtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKFxuICAgICAgICAgIGBDb3VsZCBub3QgZmluZCB2ZXJzaW9uICR7dmVyc2lvbn0gZm9yIHBhY2thZ2UgJHtwYWNrYWdlTmFtZX06ICcke2Vycn0nLiBTa2lwcGluZy4uLmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgYWRkTG9jYWxQcm92aWRlcihjb25zdHJhaW50OiBQcm92aWRlckNvbnN0cmFpbnQpIHtcbiAgICBsb2dnZXIuaW5mbyhcbiAgICAgIGBBZGRpbmcgbG9jYWwgcHJvdmlkZXIgJHtjb25zdHJhaW50LnNvdXJjZX0gd2l0aCB2ZXJzaW9uIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50LnZlcnNpb259IHRvIGNka3RmLmpzb25gLFxuICAgICk7XG5cbiAgICBpZiAoIWNvbnN0cmFpbnQudmVyc2lvbiAmJiBjb25zdHJhaW50LmlzRnJvbVRlcnJhZm9ybVJlZ2lzdHJ5KCkpIHtcbiAgICAgIGNvbnN0IHYgPSBhd2FpdCBnZXRMYXRlc3RWZXJzaW9uKGNvbnN0cmFpbnQpO1xuICAgICAgaWYgKHYpIHtcbiAgICAgICAgY29uc3RyYWludCA9IG5ldyBQcm92aWRlckNvbnN0cmFpbnQoXG4gICAgICAgICAgY29uc3RyYWludC5zb3VyY2UsXG4gICAgICAgICAgLy8gXCIxLjMuMlwiIC0+IFwifj4gMS4zXCJcbiAgICAgICAgICBgfj4gJHt2LnNwbGl0KFwiLlwiKS5zbGljZSgwLCAyKS5qb2luKFwiLlwiKX1gLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgRXJyb3JzLlVzYWdlKFxuICAgICAgICAgIGBDb3VsZCBub3QgZmluZCBhIHZlcnNpb24gZm9yIHRoZSBwcm92aWRlciAnJHtjb25zdHJhaW50fScgaW4gdGhlIHB1YmxpYyByZWdpc3RyeS4gVGhpcyBjb3VsZCBiZSBkdWUgdG8gYSB0eXBvLCBwbGVhc2UgdGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly9jZGsudGYvcmVnaXN0cnktcHJvdmlkZXJzIHRvIGZpbmQgYWxsIHN1cHBvcnRlZCBwcm92aWRlcnMuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCBuZXcgQ2RrdGZDb25maWdNYW5hZ2VyKCkuYWRkUHJvdmlkZXIoY29uc3RyYWludCk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYW4gTlBNIHBhY2thZ2UgbmFtZSBvZiBhIHByZS1idWlsdCBwcm92aWRlciBwYWNrYWdlIHRvIHRoZSBuYW1lIGluIHRoZSB0YXJnZXQgbGFuZ3VhZ2VcbiAgICovXG4gIHByaXZhdGUgY29udmVydFBhY2thZ2VOYW1lKG5hbWU6IHN0cmluZywgcmVwb3NpdG9yeTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcm92aWRlck5hbWUgPSBuYW1lLnJlcGxhY2UoXCJAY2RrdGYvcHJvdmlkZXItXCIsIFwiXCIpO1xuICAgIHN3aXRjaCAodGhpcy50YXJnZXRMYW5ndWFnZSkge1xuICAgICAgY2FzZSBMYW5ndWFnZS5HTzogLy8gZS5nLiBnaXRodWIuY29tL2Nka3RmL2Nka3RmLXByb3ZpZGVyLW9wZW50ZWxla29tY2xvdWQtZ28vb3BlbnRlbGVrb21jbG91ZFxuICAgICAgICBpZiAocmVwb3NpdG9yeSkge1xuICAgICAgICAgIHJldHVybiBgJHtyZXBvc2l0b3J5fS1nby8ke3Byb3ZpZGVyTmFtZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGBnaXRodWIuY29tL2Nka3RmL2Nka3RmLXByb3ZpZGVyLSR7cHJvdmlkZXJOYW1lfS1nby8ke3Byb3ZpZGVyTmFtZX1gO1xuICAgICAgY2FzZSBMYW5ndWFnZS5UWVBFU0NSSVBUOiAvLyBlLmcuIEBjZGt0Zi9wcm92aWRlci1yYW5kb21cbiAgICAgICAgcmV0dXJuIG5hbWU7IC8vIGFscmVhZHkgdGhlIGNvcnJlY3QgbmFtZVxuICAgICAgY2FzZSBMYW5ndWFnZS5DU0hBUlA6IC8vIGUuZy4gSGFzaGlDb3JwLkNka3RmLlByb3ZpZGVycy5PcGVudGVsZWtvbWNsb3VkXG4gICAgICAgIHJldHVybiBgSGFzaGlDb3JwLkNka3RmLlByb3ZpZGVycy5gICsgdG9QYXNjYWxDYXNlKHByb3ZpZGVyTmFtZSk7XG4gICAgICBjYXNlIExhbmd1YWdlLkpBVkE6IC8vIGUuZy4gY29tLmhhc2hpY29ycC5vcGVudGVsZWtvbWNsb3VkXG4gICAgICAgIHJldHVybiBgY29tLmhhc2hpY29ycC5jZGt0Zi1wcm92aWRlci0ke3Byb3ZpZGVyTmFtZX1gO1xuICAgICAgY2FzZSBMYW5ndWFnZS5QWVRIT046IC8vIGUuZy4gY2RrdGYtY2RrdGYtcHJvdmlkZXItb3BlbnRlbGVrb21jbG91ZFxuICAgICAgICByZXR1cm4gYGNka3RmLWNka3RmLXByb3ZpZGVyLSR7cHJvdmlkZXJOYW1lfWA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYGNvbnZlcnRpbmcgcGFja2FnZSBuYW1lIGZvciBsYW5ndWFnZSAke3RoaXMudGFyZ2V0TGFuZ3VhZ2V9IG5vdCBpbXBsZW1lbnRlZCB5ZXRgLFxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBwYWNrYWdlIG5hbWUgb2YgYSBwcmUtYnVpbHQgcHJvdmlkZXIgcGFja2FnZSBpbiB0YXJnZXQgbGFuZ3VhZ2UgdG8gdGhlIG5hbWUgaW4gbnBtXG4gICAqIEludmVyc2Ugb2Y6IGBjb252ZXJ0UGFja2FnZU5hbWVgXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRGcm9tUGFja2FnZU5hbWVUb05wbShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5wbVBhY2thZ2VQcmVmaXggPSBcIkBjZGt0Zi9wcm92aWRlci1cIjtcbiAgICBjb25zdCByZWdleGVzID0ge1xuICAgICAgW0xhbmd1YWdlLkdPXTpcbiAgICAgICAgL2dpdGh1Yi5jb21cXC8oPzpjZGt0ZnxoYXNoaWNvcnApXFwvY2RrdGYtcHJvdmlkZXItKC4rKS1nb1xcLy9pLFxuICAgICAgW0xhbmd1YWdlLlRZUEVTQ1JJUFRdOiAvKC4rKS9pLFxuICAgICAgW0xhbmd1YWdlLkNTSEFSUF06IC9IYXNoaUNvcnBcXC5DZGt0ZlxcLlByb3ZpZGVyc1xcLiguKykvaSxcbiAgICAgIFtMYW5ndWFnZS5KQVZBXTogL2NvbVxcLmhhc2hpY29ycFxcLmNka3RmLXByb3ZpZGVyLSguKykvaSxcbiAgICAgIFtMYW5ndWFnZS5QWVRIT05dOiAvY2RrdGYtY2RrdGYtcHJvdmlkZXItKC4rKS9pLFxuICAgIH07XG4gICAgY29uc3QgcmVnZXggPSByZWdleGVzW3RoaXMudGFyZ2V0TGFuZ3VhZ2VdO1xuICAgIGlmICghcmVnZXgpIHtcbiAgICAgIHRocm93IEVycm9ycy5Vc2FnZShcIkxhbmd1YWdlIG5vdCBzdXBwb3J0ZWQgZm9yIHByZS1idWlsdCBwcm92aWRlcnNcIik7XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2ggPSByZWdleC5leGVjKG5hbWUpO1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGFja2FnZSBuYW1lIGlzIG5vdCBpbiBleHBlY3RlZCBmb3JtYXQ6ICR7bmFtZX1gKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMudGFyZ2V0TGFuZ3VhZ2UpIHtcbiAgICAgIGNhc2UgTGFuZ3VhZ2UuR086IC8vIGUuZy4gZ2l0aHViLmNvbS9jZGt0Zi9jZGt0Zi1wcm92aWRlci1vcGVudGVsZWtvbWNsb3VkLWdvL29wZW50ZWxla29tY2xvdWRcbiAgICAgICAgcmV0dXJuIG5wbVBhY2thZ2VQcmVmaXggKyBtYXRjaFsxXTtcbiAgICAgIGNhc2UgTGFuZ3VhZ2UuVFlQRVNDUklQVDogLy8gZS5nLiBAY2RrdGYvcHJvdmlkZXItcmFuZG9tXG4gICAgICAgIHJldHVybiBtYXRjaFsxXTsgLy8gYWxyZWFkeSB0aGUgY29ycmVjdCBuYW1lXG4gICAgICBjYXNlIExhbmd1YWdlLkNTSEFSUDogLy8gZS5nLiBIYXNoaUNvcnAuQ2RrdGYuUHJvdmlkZXJzLk9wZW50ZWxla29tY2xvdWRcbiAgICAgICAgcmV0dXJuIG5wbVBhY2thZ2VQcmVmaXggKyB0b1NuYWtlQ2FzZShtYXRjaFsxXSk7XG4gICAgICBjYXNlIExhbmd1YWdlLkpBVkE6IC8vIGUuZy4gY29tLmhhc2hpY29ycC5vcGVudGVsZWtvbWNsb3VkXG4gICAgICAgIHJldHVybiBucG1QYWNrYWdlUHJlZml4ICsgbWF0Y2hbMV07XG4gICAgICBjYXNlIExhbmd1YWdlLlBZVEhPTjogLy8gZS5nLiBjZGt0Zi1jZGt0Zi1wcm92aWRlci1vcGVudGVsZWtvbWNsb3VkXG4gICAgICAgIHJldHVybiBucG1QYWNrYWdlUHJlZml4ICsgbWF0Y2hbMV07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYGNvbnZlcnRpbmcgcGFja2FnZSBuYW1lIGZvciBsYW5ndWFnZSAke3RoaXMudGFyZ2V0TGFuZ3VhZ2V9IG5vdCBpbXBsZW1lbnRlZCB5ZXRgLFxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhbGxQcm92aWRlcnMoKSB7XG4gICAgY29uc3QgY2RrdGZKc29uID0gQ2RrdGZDb25maWcucmVhZCgpO1xuICAgIGNvbnN0IGxvY2FsVmVyc2lvbnMgPSBuZXcgTG9jYWxQcm92aWRlclZlcnNpb25zKCk7XG5cbiAgICBjb25zdCBsb2NhbFByb3ZpZGVyQ29uZmlncyA9IGNka3RmSnNvbi50ZXJyYWZvcm1Qcm92aWRlcnM7XG4gICAgY29uc3QgcHJlYnVpbHRQcm92aWRlckNvbmZpZ3MgPVxuICAgICAgYXdhaXQgdGhpcy5wYWNrYWdlTWFuYWdlci5saXN0UHJvdmlkZXJQYWNrYWdlcygpO1xuXG4gICAgY29uc3QgcHJlYnVpbHRQcm92aWRlcnNJbmZvID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBwcmVidWlsdFByb3ZpZGVyQ29uZmlncy5tYXAoYXN5bmMgKHByZWJ1aWx0UHJvdmlkZXJDb25maWcpID0+IHtcbiAgICAgICAgY29uc3QgcGFja2FnZU5hbWUgPSB0aGlzLmNvbnZlcnRGcm9tUGFja2FnZU5hbWVUb05wbShcbiAgICAgICAgICBwcmVidWlsdFByb3ZpZGVyQ29uZmlnLm5hbWUsXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgcHJvdmlkZXJJbmZvcm1hdGlvbiA9IGF3YWl0IGdldFByZWJ1aWx0UHJvdmlkZXJWZXJzaW9uSW5mb3JtYXRpb24oXG4gICAgICAgICAgcGFja2FnZU5hbWUsXG4gICAgICAgICAgcHJlYnVpbHRQcm92aWRlckNvbmZpZy52ZXJzaW9uLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucHJvdmlkZXJJbmZvcm1hdGlvbixcbiAgICAgICAgICBwYWNrYWdlTmFtZTogcHJlYnVpbHRQcm92aWRlckNvbmZpZy5uYW1lLFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IGNvbnN0cmFpbnRzID0gbmV3IExvY2FsUHJvdmlkZXJDb25zdHJhaW50cygpO1xuXG4gICAgY29uc3QgbG9jYWxQcm92aWRlcnNJbmZvID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBsb2NhbFByb3ZpZGVyQ29uZmlncy5tYXAoYXN5bmMgKGxvY2FsUHJvdmlkZXJDb25maWcpID0+IHtcbiAgICAgICAgY29uc3QgY29uc3RyYWludCA9XG4gICAgICAgICAgUHJvdmlkZXJDb25zdHJhaW50LmZyb21Db25maWdFbnRyeShsb2NhbFByb3ZpZGVyQ29uZmlnKTtcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IGF3YWl0IGxvY2FsVmVyc2lvbnMudmVyc2lvbkZvclByb3ZpZGVyKFxuICAgICAgICAgIGNvbnN0cmFpbnQuc2ltcGxpZmllZE5hbWUsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRWYWx1ZSA9IGF3YWl0IGNvbnN0cmFpbnRzLmNvbnN0cmFpbnRGb3JQcm92aWRlcihcbiAgICAgICAgICBjb25zdHJhaW50LnNpbXBsaWZpZWROYW1lLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcHJvdmlkZXJOYW1lOiBjb25zdHJhaW50LnNpbXBsaWZpZWROYW1lLFxuICAgICAgICAgIHByb3ZpZGVyQ29uc3RyYWludDogY29uc3RyYWludFZhbHVlIHx8IGNvbnN0cmFpbnQudmVyc2lvbixcbiAgICAgICAgICBwcm92aWRlclZlcnNpb246IHZlcnNpb24sXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxvY2FsOiBsb2NhbFByb3ZpZGVyc0luZm8sXG4gICAgICBwcmVidWlsdDogcHJlYnVpbHRQcm92aWRlcnNJbmZvLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { Language } from "@cdktn/commons";
2
+ /**
3
+ * manages installing, updating, and removing dependencies
4
+ * in the package system used by the target language of a CDKTN
5
+ * project
6
+ */
7
+ export declare abstract class PackageManager {
8
+ protected readonly workingDirectory: string;
9
+ constructor(workingDirectory: string);
10
+ static forLanguage(language: Language, workingDirectory: string): PackageManager;
11
+ abstract addPackage(packageName: string, packageVersion?: string, silent?: boolean): Promise<void>;
12
+ abstract isNpmVersionAvailable(packageName: string, packageVersion: string): Promise<boolean>;
13
+ abstract listProviderPackages(): Promise<{
14
+ name: string;
15
+ version: string;
16
+ }[]>;
17
+ }
18
+ //# sourceMappingURL=package-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["package-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EAOT,MAAM,gBAAgB,CAAC;AA+ExB;;;;GAIG;AACH,8BAAsB,cAAc;IACtB,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM;gBAAxB,gBAAgB,EAAE,MAAM;WAEzC,WAAW,CACvB,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,MAAM,GACvB,cAAc;aAoBD,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,MAAM,EACvB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC;aAGA,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC;aAEH,oBAAoB,IAAI,OAAO,CAC7C;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CACpC;CACF"}