@microsoft/teamsfx-core 2.0.0 → 2.0.1-alpha.22d101afe.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 (160) hide show
  1. package/build/common/armInterface.d.ts +0 -5
  2. package/build/common/armInterface.d.ts.map +1 -1
  3. package/build/common/deps-checker/checkerFactory.d.ts.map +1 -1
  4. package/build/common/deps-checker/checkerFactory.js +0 -7
  5. package/build/common/deps-checker/checkerFactory.js.map +1 -1
  6. package/build/common/deps-checker/constant/helpLink.d.ts +0 -4
  7. package/build/common/deps-checker/constant/helpLink.d.ts.map +1 -1
  8. package/build/common/deps-checker/constant/helpLink.js +1 -9
  9. package/build/common/deps-checker/constant/helpLink.js.map +1 -1
  10. package/build/common/deps-checker/constant/message.d.ts +0 -5
  11. package/build/common/deps-checker/constant/message.d.ts.map +1 -1
  12. package/build/common/deps-checker/constant/message.js +0 -6
  13. package/build/common/deps-checker/constant/message.js.map +1 -1
  14. package/build/common/deps-checker/constant/telemetry.d.ts +2 -33
  15. package/build/common/deps-checker/constant/telemetry.d.ts.map +1 -1
  16. package/build/common/deps-checker/constant/telemetry.js +0 -31
  17. package/build/common/deps-checker/constant/telemetry.js.map +1 -1
  18. package/build/common/deps-checker/depsChecker.d.ts +0 -3
  19. package/build/common/deps-checker/depsChecker.d.ts.map +1 -1
  20. package/build/common/deps-checker/depsChecker.js +0 -3
  21. package/build/common/deps-checker/depsChecker.js.map +1 -1
  22. package/build/common/deps-checker/depsError.d.ts +0 -9
  23. package/build/common/deps-checker/depsError.d.ts.map +1 -1
  24. package/build/common/deps-checker/depsError.js +1 -22
  25. package/build/common/deps-checker/depsError.js.map +1 -1
  26. package/build/common/deps-checker/depsManager.d.ts.map +1 -1
  27. package/build/common/deps-checker/depsManager.js +0 -3
  28. package/build/common/deps-checker/depsManager.js.map +1 -1
  29. package/build/common/deps-checker/internal/funcToolChecker.d.ts +2 -2
  30. package/build/common/deps-checker/internal/funcToolChecker.d.ts.map +1 -1
  31. package/build/common/deps-checker/internal/funcToolChecker.js +4 -2
  32. package/build/common/deps-checker/internal/funcToolChecker.js.map +1 -1
  33. package/build/common/deps-checker/internal/nodeChecker.d.ts +0 -20
  34. package/build/common/deps-checker/internal/nodeChecker.d.ts.map +1 -1
  35. package/build/common/deps-checker/internal/nodeChecker.js +1 -51
  36. package/build/common/deps-checker/internal/nodeChecker.js.map +1 -1
  37. package/build/common/local/localEnvManager.d.ts +0 -9
  38. package/build/common/local/localEnvManager.d.ts.map +1 -1
  39. package/build/common/local/localEnvManager.js +0 -59
  40. package/build/common/local/localEnvManager.js.map +1 -1
  41. package/build/common/templates-config.json +2 -2
  42. package/build/component/code/utils.d.ts +1 -1
  43. package/build/component/code/utils.d.ts.map +1 -1
  44. package/build/component/code/utils.js +3 -3
  45. package/build/component/code/utils.js.map +1 -1
  46. package/build/component/constants.d.ts +3 -0
  47. package/build/component/constants.d.ts.map +1 -1
  48. package/build/component/constants.js +13 -2
  49. package/build/component/constants.js.map +1 -1
  50. package/build/component/debug/error.d.ts +0 -1
  51. package/build/component/debug/error.d.ts.map +1 -1
  52. package/build/component/debug/error.js +1 -11
  53. package/build/component/debug/error.js.map +1 -1
  54. package/build/component/debug/index.d.ts.map +1 -1
  55. package/build/component/debug/index.js +1 -25
  56. package/build/component/debug/index.js.map +1 -1
  57. package/build/component/driver/aad/create.js +2 -2
  58. package/build/component/driver/aad/create.js.map +1 -1
  59. package/build/component/driver/aad/update.d.ts.map +1 -1
  60. package/build/component/driver/aad/update.js +6 -20
  61. package/build/component/driver/aad/update.js.map +1 -1
  62. package/build/component/driver/devTool/error/dotnetInstallationUserError.d.ts +1 -1
  63. package/build/component/driver/devTool/error/dotnetInstallationUserError.d.ts.map +1 -1
  64. package/build/component/driver/devTool/error/dotnetInstallationUserError.js +4 -2
  65. package/build/component/driver/devTool/error/dotnetInstallationUserError.js.map +1 -1
  66. package/build/component/driver/devTool/error/funcInstallationUserError.d.ts +1 -1
  67. package/build/component/driver/devTool/error/funcInstallationUserError.d.ts.map +1 -1
  68. package/build/component/driver/devTool/error/funcInstallationUserError.js +4 -2
  69. package/build/component/driver/devTool/error/funcInstallationUserError.js.map +1 -1
  70. package/build/component/driver/devTool/installDriver.d.ts +1 -0
  71. package/build/component/driver/devTool/installDriver.d.ts.map +1 -1
  72. package/build/component/driver/devTool/installDriver.js +17 -24
  73. package/build/component/driver/devTool/installDriver.js.map +1 -1
  74. package/build/component/driver/teamsApp/createAppPackage.d.ts +0 -1
  75. package/build/component/driver/teamsApp/createAppPackage.d.ts.map +1 -1
  76. package/build/component/driver/teamsApp/createAppPackage.js +1 -11
  77. package/build/component/driver/teamsApp/createAppPackage.js.map +1 -1
  78. package/build/component/driver/teamsApp/validate.d.ts +0 -1
  79. package/build/component/driver/teamsApp/validate.d.ts.map +1 -1
  80. package/build/component/driver/teamsApp/validate.js +34 -18
  81. package/build/component/driver/teamsApp/validate.js.map +1 -1
  82. package/build/component/question.d.ts +1 -0
  83. package/build/component/question.d.ts.map +1 -1
  84. package/build/component/question.js +14 -1
  85. package/build/component/question.js.map +1 -1
  86. package/build/component/resource/appManifest/appStudio.js +1 -1
  87. package/build/component/resource/appManifest/appStudio.js.map +1 -1
  88. package/build/component/resource/appManifest/utils/ManifestUtils.d.ts +1 -1
  89. package/build/component/resource/appManifest/utils/ManifestUtils.d.ts.map +1 -1
  90. package/build/component/resource/appManifest/utils/ManifestUtils.js +1 -9
  91. package/build/component/resource/appManifest/utils/ManifestUtils.js.map +1 -1
  92. package/build/component/utils/envUtil.d.ts.map +1 -1
  93. package/build/component/utils/envUtil.js +4 -1
  94. package/build/component/utils/envUtil.js.map +1 -1
  95. package/build/component/utils/metadataUtil.d.ts.map +1 -1
  96. package/build/component/utils/metadataUtil.js +9 -7
  97. package/build/component/utils/metadataUtil.js.map +1 -1
  98. package/build/component/utils/pathUtils.d.ts.map +1 -1
  99. package/build/component/utils/pathUtils.js +8 -7
  100. package/build/component/utils/pathUtils.js.map +1 -1
  101. package/build/component/utils/settingsUtil.js +3 -3
  102. package/build/component/utils/settingsUtil.js.map +1 -1
  103. package/build/core/FxCore.d.ts +30 -33
  104. package/build/core/FxCore.d.ts.map +1 -1
  105. package/build/core/FxCore.js +96 -622
  106. package/build/core/FxCore.js.map +1 -1
  107. package/build/core/FxCoreImplementV3.d.ts +13 -5
  108. package/build/core/FxCoreImplementV3.d.ts.map +1 -1
  109. package/build/core/FxCoreImplementV3.js +52 -21
  110. package/build/core/FxCoreImplementV3.js.map +1 -1
  111. package/build/core/middleware/envInfoLoaderV3.d.ts +1 -10
  112. package/build/core/middleware/envInfoLoaderV3.d.ts.map +1 -1
  113. package/build/core/middleware/envInfoLoaderV3.js +1 -207
  114. package/build/core/middleware/envInfoLoaderV3.js.map +1 -1
  115. package/build/core/middleware/projectMigratorV3.js +3 -3
  116. package/build/core/middleware/projectMigratorV3.js.map +1 -1
  117. package/build/core/middleware/projectSettingsLoader.d.ts +1 -4
  118. package/build/core/middleware/projectSettingsLoader.d.ts.map +1 -1
  119. package/build/core/middleware/projectSettingsLoader.js +4 -58
  120. package/build/core/middleware/projectSettingsLoader.js.map +1 -1
  121. package/build/core/question.d.ts +1 -0
  122. package/build/core/question.d.ts.map +1 -1
  123. package/build/core/question.js +1 -0
  124. package/build/core/question.js.map +1 -1
  125. package/build/core/types.d.ts +3 -3
  126. package/build/core/types.d.ts.map +1 -1
  127. package/build/error/common.d.ts +3 -0
  128. package/build/error/common.d.ts.map +1 -1
  129. package/build/error/common.js +14 -1
  130. package/build/error/common.js.map +1 -1
  131. package/build/error/script.d.ts +1 -1
  132. package/build/error/script.d.ts.map +1 -1
  133. package/build/error/script.js +3 -3
  134. package/build/error/script.js.map +1 -1
  135. package/package.json +10 -27
  136. package/resource/package.nls.json +8 -9
  137. package/templates/fallback/common.zip +0 -0
  138. package/templates/fallback/csharp.zip +0 -0
  139. package/templates/fallback/js.zip +0 -0
  140. package/templates/fallback/ts.zip +0 -0
  141. package/build/common/deps-checker/internal/ngrokChecker.d.ts +0 -27
  142. package/build/common/deps-checker/internal/ngrokChecker.d.ts.map +0 -1
  143. package/build/common/deps-checker/internal/ngrokChecker.js +0 -222
  144. package/build/common/deps-checker/internal/ngrokChecker.js.map +0 -1
  145. package/build/component/debug/util/ngrok.d.ts +0 -6
  146. package/build/component/debug/util/ngrok.d.ts.map +0 -1
  147. package/build/component/debug/util/ngrok.js +0 -65
  148. package/build/component/debug/util/ngrok.js.map +0 -1
  149. package/build/core/middleware/envInfoWriter.d.ts +0 -8
  150. package/build/core/middleware/envInfoWriter.d.ts.map +0 -1
  151. package/build/core/middleware/envInfoWriter.js +0 -76
  152. package/build/core/middleware/envInfoWriter.js.map +0 -1
  153. package/build/core/middleware/envInfoWriterV3.d.ts +0 -6
  154. package/build/core/middleware/envInfoWriterV3.d.ts.map +0 -1
  155. package/build/core/middleware/envInfoWriterV3.js +0 -67
  156. package/build/core/middleware/envInfoWriterV3.js.map +0 -1
  157. package/build/core/middleware/projectSettingsWriter.d.ts +0 -6
  158. package/build/core/middleware/projectSettingsWriter.d.ts.map +0 -1
  159. package/build/core/middleware/projectSettingsWriter.js +0 -52
  160. package/build/core/middleware/projectSettingsWriter.js.map +0 -1
@@ -1,222 +0,0 @@
1
- "use strict";
2
- // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT license.
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.NgrokChecker = void 0;
6
- const tslib_1 = require("tslib");
7
- const fs = tslib_1.__importStar(require("fs-extra"));
8
- const path = tslib_1.__importStar(require("path"));
9
- const os = tslib_1.__importStar(require("os"));
10
- const teamsfx_api_1 = require("@microsoft/teamsfx-api");
11
- const helpLink_1 = require("../constant/helpLink");
12
- const depsError_1 = require("../depsError");
13
- const progressIndicator_1 = require("../util/progressIndicator");
14
- const cpUtils_1 = require("../util/cpUtils");
15
- const system_1 = require("../util/system");
16
- const telemetry_1 = require("../constant/telemetry");
17
- const depsChecker_1 = require("../depsChecker");
18
- const message_1 = require("../constant/message");
19
- const localizeUtils_1 = require("../../localizeUtils");
20
- const ngrokName = "ngrok";
21
- const installPackageVersion = "4.3.3";
22
- const supportedPackageVersions = [">=3.4.0"];
23
- const supportedBinVersions = ["2.3"];
24
- const displayNgrokName = `${ngrokName}@${installPackageVersion}`;
25
- const timeout = 5 * 60 * 1000;
26
- class NgrokChecker {
27
- constructor(logger, telemetry) {
28
- this._logger = logger;
29
- this._telemetry = telemetry;
30
- }
31
- async command() {
32
- return "ngrok";
33
- }
34
- async getDepsInfo(isInstalled, error) {
35
- return Promise.resolve({
36
- name: ngrokName,
37
- type: depsChecker_1.DepsType.Ngrok,
38
- isInstalled: isInstalled,
39
- command: await this.command(),
40
- details: {
41
- isLinuxSupported: true,
42
- installVersion: installPackageVersion,
43
- binFolders: [this.getNgrokBinFolder()],
44
- supportedVersions: supportedPackageVersions,
45
- },
46
- error: error,
47
- });
48
- }
49
- async getInstallationInfo() {
50
- let isVersionSupported = false, hasSentinel = false;
51
- try {
52
- const ngrokVersion = await this.queryNgrokBinVersion();
53
- isVersionSupported =
54
- ngrokVersion !== undefined && supportedBinVersions.includes(ngrokVersion);
55
- hasSentinel = await fs.pathExists(this.getSentinelPath());
56
- }
57
- catch (error) {
58
- // do nothing
59
- return await this.getDepsInfo(false);
60
- }
61
- return await this.getDepsInfo(isVersionSupported && hasSentinel);
62
- }
63
- async install() {
64
- if (!(await this.hasNPM())) {
65
- this.handleNpmNotFound();
66
- }
67
- await this.cleanup();
68
- await this.installNgrok();
69
- if (!(await this.validate())) {
70
- await this.handleInstallNgrokFailed();
71
- }
72
- this._telemetry.sendEvent(telemetry_1.DepsCheckerEvent.ngrokInstallCompleted);
73
- await this._logger.info(message_1.Messages.finishInstallNgrok().replace("@NameVersion", displayNgrokName));
74
- }
75
- getNgrokBinFolder() {
76
- return path.join(this.getDefaultInstallPath(), "node_modules", "ngrok", "bin");
77
- }
78
- async resolve() {
79
- try {
80
- let installationInfo = await this.getInstallationInfo();
81
- if (!installationInfo.isInstalled) {
82
- // TODO: show output in extension
83
- // this._adapter.showOutputChannel();
84
- await this.install();
85
- installationInfo = await this.getInstallationInfo();
86
- this._logger.cleanup();
87
- }
88
- return installationInfo;
89
- }
90
- catch (error) {
91
- await this._logger.printDetailLog();
92
- this._logger.cleanup();
93
- await this._logger.error(`Failed to install 'ngrok', error = '${error}'`);
94
- if (error instanceof depsError_1.DepsCheckerError) {
95
- return await this.getDepsInfo(false, error);
96
- }
97
- return await this.getDepsInfo(false, new depsError_1.DepsCheckerError(error.message, helpLink_1.ngrokInstallHelpLink));
98
- }
99
- }
100
- async handleInstallNgrokFailed() {
101
- await this.cleanup();
102
- this._telemetry.sendSystemErrorEvent(telemetry_1.DepsCheckerEvent.ngrokInstallError, telemetry_1.TelemtryMessages.failedToInstallNgrok, message_1.Messages.failToValidateNgrok().replace("@NameVersion", displayNgrokName));
103
- throw new depsError_1.DepsCheckerError(localizeUtils_1.getLocalizedString("error.common.InstallSoftwareError", displayNgrokName), helpLink_1.ngrokInstallHelpLink);
104
- }
105
- async validate() {
106
- let isVersionSupported = false;
107
- let hasSentinel = false;
108
- try {
109
- const binVersion = await this.queryNgrokBinVersion();
110
- isVersionSupported = binVersion !== undefined && supportedBinVersions.includes(binVersion);
111
- hasSentinel = await fs.pathExists(this.getSentinelPath());
112
- }
113
- catch (err) {
114
- this._telemetry.sendSystemErrorEvent(telemetry_1.DepsCheckerEvent.ngrokValidationError, telemetry_1.TelemtryMessages.failedToValidateNgrok, err);
115
- }
116
- if (!isVersionSupported || !hasSentinel) {
117
- this._telemetry.sendEvent(telemetry_1.DepsCheckerEvent.ngrokValidationError, {
118
- "ngrok-v": String(isVersionSupported),
119
- sentinel: String(hasSentinel),
120
- });
121
- }
122
- return isVersionSupported && hasSentinel;
123
- }
124
- handleNpmNotFound() {
125
- this._telemetry.sendEvent(telemetry_1.DepsCheckerEvent.npmNotFound);
126
- throw new depsError_1.DepsCheckerError(message_1.Messages.needInstallNgrok().replace("@NameVersion", displayNgrokName), helpLink_1.ngrokInstallHelpLink);
127
- }
128
- getDefaultInstallPath() {
129
- return path.join(os.homedir(), `.${teamsfx_api_1.ConfigFolderName}`, "bin", "ngrok");
130
- }
131
- getSentinelPath() {
132
- return path.join(os.homedir(), `.${teamsfx_api_1.ConfigFolderName}`, "ngrok-sentinel");
133
- }
134
- async queryNgrokBinVersion() {
135
- const output = await cpUtils_1.cpUtils.executeCommand(undefined, this._logger, {
136
- shell: true,
137
- env: { PATH: this.getNgrokBinFolder() },
138
- }, ngrokName, "version");
139
- const regex = /ngrok version (?<major_version>\d+)\.(?<minor_version>\d+)\.(?<patch_version>\d+)/gim;
140
- const match = regex.exec(output);
141
- if (!match || !match.groups) {
142
- return undefined;
143
- }
144
- return `${match.groups.major_version}.${match.groups.minor_version}`;
145
- }
146
- async hasNPM() {
147
- try {
148
- const npmVersion = await cpUtils_1.cpUtils.executeCommand(undefined, this._logger, { shell: true }, "npm", "--version");
149
- this._telemetry.sendEvent(telemetry_1.DepsCheckerEvent.npmAlreadyInstalled, {
150
- "npm-version": npmVersion,
151
- });
152
- return true;
153
- }
154
- catch (error) {
155
- this._telemetry.sendEvent(telemetry_1.DepsCheckerEvent.npmNotFound);
156
- return false;
157
- }
158
- }
159
- async cleanup() {
160
- try {
161
- await fs.emptyDir(this.getDefaultInstallPath());
162
- await fs.remove(this.getSentinelPath());
163
- }
164
- catch (err) {
165
- await this._logger.debug(`Failed to clean up path: ${this.getDefaultInstallPath()}, error: ${err}`);
166
- }
167
- }
168
- async installNgrok() {
169
- await this._telemetry.sendEventWithDuration(telemetry_1.DepsCheckerEvent.ngrokInstallScriptCompleted, async () => {
170
- await progressIndicator_1.runWithProgressIndicator(async () => await this.doInstallNgrok(), this._logger);
171
- });
172
- }
173
- static extractNpmInstallLog(exitCode, log) {
174
- const nodePattern = /npm\s+info\s+using\s+node@(.*)/;
175
- const nodeResult = log.match(nodePattern);
176
- const nodeVersion = nodeResult ? nodeResult[1].trim() : undefined;
177
- const npmPattern = /npm\s+info\s+using\s+npm@(.*)/;
178
- const npmResult = log.match(npmPattern);
179
- const npmVersion = npmResult ? npmResult[1].trim() : undefined;
180
- // Save all error log and lines that contain "ngrok"
181
- const errorPattern = /(npm\s+ERR+.*)|(.*ngrok.*)/gi;
182
- const preventEmailRedactedRegex = /[^\s]*@[^\s]*/;
183
- const errorResults = log.match(errorPattern);
184
- const errorMessage = errorResults === null || errorResults === void 0 ? void 0 : errorResults.map((value) => {
185
- // redact strings that contain "@" to prevent telemetry reporter from redacting the whole property
186
- return value.trim().replace(preventEmailRedactedRegex, "<redacted: email>");
187
- });
188
- const properties = {};
189
- properties[telemetry_1.TelemetryProperties.NgrokNpmInstallExitCode] = `${exitCode}`;
190
- properties[telemetry_1.TelemetryProperties.NgrokNpmInstallNodeVersion] = `${nodeVersion}`;
191
- properties[telemetry_1.TelemetryProperties.NgrokNpmInstallNpmVersion] = `${npmVersion}`;
192
- properties[telemetry_1.TelemetryProperties.NgrokNpmInstallLog] = `${errorMessage === null || errorMessage === void 0 ? void 0 : errorMessage.join("\n")}`;
193
- return properties;
194
- }
195
- async doInstallNgrok() {
196
- await this._logger.info(message_1.Messages.startInstallNgrok().replace("@NameVersion", displayNgrokName));
197
- try {
198
- const npmCommand = this.getExecCommand("npm");
199
- const result = await cpUtils_1.cpUtils.tryExecuteCommand(undefined, this._logger, { timeout: timeout, shell: false }, npmCommand, "install",
200
- // not use -f, to avoid npm@6 bug: exit code = 0, even if install fail
201
- `${ngrokName}@${installPackageVersion}`, "--prefix", `${this.getDefaultInstallPath()}`, "--no-audit", "--loglevel", // this will make npm output log to stderr
202
- "verbose");
203
- const log = result.cmdOutputIncludingStderr;
204
- const properties = NgrokChecker.extractNpmInstallLog(result.code, log);
205
- this._telemetry.sendEvent(telemetry_1.DepsCheckerEvent.ngrokNpmLog, properties);
206
- if (result.code !== 0) {
207
- const errorMessage = `Failed to run command: "${npmCommand} ${result.formattedArgs}", code: "${result.code}",
208
- output: "${result.cmdOutput}", error: "${result.cmdOutputIncludingStderr}"`;
209
- throw new Error(errorMessage);
210
- }
211
- await fs.ensureFile(this.getSentinelPath());
212
- }
213
- catch (error) {
214
- this._telemetry.sendSystemErrorEvent(telemetry_1.DepsCheckerEvent.ngrokInstallScriptError, telemetry_1.TelemtryMessages.failedToInstallNgrok, error);
215
- }
216
- }
217
- getExecCommand(command) {
218
- return system_1.isWindows() ? `${command}.cmd` : command;
219
- }
220
- }
221
- exports.NgrokChecker = NgrokChecker;
222
- //# sourceMappingURL=ngrokChecker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngrokChecker.js","sourceRoot":"","sources":["../../../../src/common/deps-checker/internal/ngrokChecker.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export declare function getNgrokHttpUrl(addr: string | number): Promise<string | undefined>;
2
- export declare function getNgrokTunnelFromApi(webServiceUrl: string): Promise<{
3
- src: string;
4
- dest: string;
5
- } | undefined>;
6
- //# sourceMappingURL=ngrok.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngrok.d.ts","sourceRoot":"","sources":["../../../../src/component/debug/util/ngrok.ts"],"names":[],"mappings":"AAyBA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA8BxF;AAGD,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAiBpD"}
@@ -1,65 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
3
- "use strict";
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.getNgrokTunnelFromApi = exports.getNgrokHttpUrl = void 0;
6
- const tslib_1 = require("tslib");
7
- const axios_1 = tslib_1.__importDefault(require("axios"));
8
- function delay(ms) {
9
- // tslint:disable-next-line no-string-based-set-timeout
10
- return new Promise((resolve) => setTimeout(resolve, ms));
11
- }
12
- async function getNgrokHttpUrl(addr) {
13
- for (let ngrokWebInterfacePort = 4040; ngrokWebInterfacePort < 4045; ++ngrokWebInterfacePort) {
14
- let numRetries = 5;
15
- while (numRetries > 0) {
16
- try {
17
- const resp = await axios_1.default.get(`http://127.0.0.1:${ngrokWebInterfacePort}/api/tunnels`);
18
- if (resp && resp.data) {
19
- const tunnels = resp.data.tunnels;
20
- // tunnels will be empty if tunnel connection is not completed
21
- for (const tunnel of tunnels) {
22
- if (typeof addr === "number" || Number.isInteger(Number.parseInt(addr))) {
23
- addr = `http://localhost:${addr}`;
24
- }
25
- if (removeTrailingSlash(tunnel.config.addr) === removeTrailingSlash(addr) &&
26
- tunnel.proto === "https") {
27
- return tunnel.public_url;
28
- }
29
- }
30
- }
31
- }
32
- catch (err) {
33
- // ECONNREFUSED if ngrok is not started
34
- }
35
- await delay(2000);
36
- --numRetries;
37
- }
38
- }
39
- return undefined;
40
- }
41
- exports.getNgrokHttpUrl = getNgrokHttpUrl;
42
- // TODO: support http://127.0.0.1:4040/api/tunnels/bot
43
- async function getNgrokTunnelFromApi(webServiceUrl) {
44
- try {
45
- const resp = await axios_1.default.get(webServiceUrl);
46
- if (resp && resp.data) {
47
- const tunnels = resp.data.tunnels;
48
- // tunnels will be empty if tunnel connection is not completed
49
- for (const tunnel of tunnels) {
50
- if (tunnel.proto === "https") {
51
- return { src: tunnel.config.addr, dest: tunnel.public_url };
52
- }
53
- }
54
- }
55
- }
56
- catch (err) {
57
- // ECONNREFUSED if ngrok is not started
58
- }
59
- return undefined;
60
- }
61
- exports.getNgrokTunnelFromApi = getNgrokTunnelFromApi;
62
- function removeTrailingSlash(str) {
63
- return str.replace(/\/$/, "");
64
- }
65
- //# sourceMappingURL=ngrok.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngrok.js","sourceRoot":"","sources":["../../../../src/component/debug/util/ngrok.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,YAAY,CAAC;;;;AAEb,0DAA0B;AAgB1B,SAAS,KAAK,CAAC,EAAU;IACvB,uDAAuD;IACvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,IAAqB;IACzD,KAAK,IAAI,qBAAqB,GAAG,IAAI,EAAE,qBAAqB,GAAG,IAAI,EAAE,EAAE,qBAAqB,EAAE;QAC5F,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,OAAO,UAAU,GAAG,CAAC,EAAE;YACrB,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,oBAAoB,qBAAqB,cAAc,CAAC,CAAC;gBACtF,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;oBACrB,MAAM,OAAO,GAA6B,IAAI,CAAC,IAAK,CAAC,OAAO,CAAC;oBAC7D,8DAA8D;oBAC9D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;wBAC5B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;4BACvE,IAAI,GAAG,oBAAoB,IAAI,EAAE,CAAC;yBACnC;wBAED,IACE,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,mBAAmB,CAAC,IAAI,CAAC;4BACrE,MAAM,CAAC,KAAK,KAAK,OAAO,EACxB;4BACA,OAAO,MAAM,CAAC,UAAU,CAAC;yBAC1B;qBACF;iBACF;aACF;YAAC,OAAO,GAAG,EAAE;gBACZ,uCAAuC;aACxC;YACD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,EAAE,UAAU,CAAC;SACd;KACF;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AA9BD,0CA8BC;AAED,sDAAsD;AAC/C,KAAK,UAAU,qBAAqB,CACzC,aAAqB;IAErB,IAAI;QACF,MAAM,IAAI,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;YACrB,MAAM,OAAO,GAA6B,IAAI,CAAC,IAAK,CAAC,OAAO,CAAC;YAC7D,8DAA8D;YAC9D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE;oBAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;iBAC7D;aACF;SACF;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,uCAAuC;KACxC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAnBD,sDAmBC;AAED,SAAS,mBAAmB,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC"}
@@ -1,8 +0,0 @@
1
- import { Middleware } from "@feathersjs/hooks";
2
- import { FxError, Result } from "@microsoft/teamsfx-api";
3
- /**
4
- * This middleware will help to persist environment state even if lifecycle task throws Error.
5
- */
6
- export declare function EnvInfoWriterMW(skip?: boolean): Middleware;
7
- export declare function shouldSkipWriteEnvInfo(res: Result<any, FxError>): boolean;
8
- //# sourceMappingURL=envInfoWriter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"envInfoWriter.d.ts","sourceRoot":"","sources":["../../../src/core/middleware/envInfoWriter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAU,MAAM,EAAmB,MAAM,wBAAwB,CAAC;AAOlF;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,UAAQ,GAAG,UAAU,CA0BxD;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,OAAO,CAEzE"}
@@ -1,76 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
3
- "use strict";
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.shouldSkipWriteEnvInfo = exports.EnvInfoWriterMW = void 0;
6
- const teamsfx_api_1 = require("@microsoft/teamsfx-api");
7
- const constants_1 = require("../../component/constants");
8
- const environment_1 = require("../environment");
9
- const globalVars_1 = require("../globalVars");
10
- const projectSettingsLoader_1 = require("./projectSettingsLoader");
11
- /**
12
- * This middleware will help to persist environment state even if lifecycle task throws Error.
13
- */
14
- function EnvInfoWriterMW(skip = false) {
15
- return async (ctx, next) => {
16
- if (ctx.method === "localDebug" || ctx.method === "localDebugV2") {
17
- skip = false;
18
- }
19
- let error1 = undefined;
20
- try {
21
- await next();
22
- const res = ctx.result;
23
- if (shouldSkipWriteEnvInfo(res)) {
24
- return;
25
- }
26
- }
27
- catch (e) {
28
- if (e["name"] === "CancelProvision")
29
- throw e;
30
- error1 = e;
31
- }
32
- let error2 = undefined;
33
- try {
34
- await writeEnvInfo(ctx, skip);
35
- }
36
- catch (e) {
37
- error2 = e;
38
- }
39
- if (error1)
40
- throw error1;
41
- if (error2)
42
- throw error2;
43
- };
44
- }
45
- exports.EnvInfoWriterMW = EnvInfoWriterMW;
46
- function shouldSkipWriteEnvInfo(res) {
47
- return res.isErr() && !!res.error.userData && !!res.error.userData.shouldSkipWriteEnvInfo;
48
- }
49
- exports.shouldSkipWriteEnvInfo = shouldSkipWriteEnvInfo;
50
- async function writeEnvInfo(ctx, skip) {
51
- if (projectSettingsLoader_1.shouldIgnored(ctx) || skip) {
52
- return;
53
- }
54
- const lastArg = ctx.arguments[ctx.arguments.length - 1];
55
- const inputs = lastArg === ctx ? ctx.arguments[ctx.arguments.length - 2] : lastArg;
56
- if (!inputs.projectPath ||
57
- inputs.ignoreConfigPersist === true ||
58
- inputs.ignoreEnvInfo === true ||
59
- teamsfx_api_1.StaticPlatforms.includes(inputs.platform))
60
- return;
61
- const envInfoV2 = ctx.envInfoV2;
62
- if (!envInfoV2)
63
- return;
64
- const state = envInfoV2.state;
65
- if (state === undefined)
66
- return;
67
- // DO NOT persist local debug plugin config.
68
- if (state[constants_1.PluginNames.LDEBUG]) {
69
- delete state[constants_1.PluginNames.LDEBUG];
70
- }
71
- const envStatePath = await environment_1.environmentManager.writeEnvState(envInfoV2.state, inputs.projectPath, ctx.contextV2.cryptoProvider, envInfoV2.envName);
72
- if (envStatePath.isOk()) {
73
- globalVars_1.TOOLS.logProvider.debug(`[core] persist env state: ${envStatePath.value}`);
74
- }
75
- }
76
- //# sourceMappingURL=envInfoWriter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"envInfoWriter.js","sourceRoot":"","sources":["../../../src/core/middleware/envInfoWriter.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,YAAY,CAAC;;;AAGb,wDAAkF;AAClF,yDAAwD;AACxD,gDAAoD;AACpD,8CAAsC;AAEtC,mEAAwD;AAExD;;GAEG;AACH,SAAgB,eAAe,CAAC,IAAI,GAAG,KAAK;IAC1C,OAAO,KAAK,EAAE,GAAoB,EAAE,IAAkB,EAAE,EAAE;QACxD,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc,EAAE;YAChE,IAAI,GAAG,KAAK,CAAC;SACd;QAED,IAAI,MAAM,GAAQ,SAAS,CAAC;QAC5B,IAAI;YACF,MAAM,IAAI,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,CAAC,MAA8B,CAAC;YAC/C,IAAI,sBAAsB,CAAC,GAAG,CAAC,EAAE;gBAC/B,OAAO;aACR;SACF;QAAC,OAAO,CAAC,EAAE;YACV,IAAK,CAAS,CAAC,MAAM,CAAC,KAAK,iBAAiB;gBAAE,MAAM,CAAC,CAAC;YACtD,MAAM,GAAG,CAAC,CAAC;SACZ;QACD,IAAI,MAAM,GAAQ,SAAS,CAAC;QAC5B,IAAI;YACF,MAAM,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SAC/B;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,GAAG,CAAC,CAAC;SACZ;QACD,IAAI,MAAM;YAAE,MAAM,MAAM,CAAC;QACzB,IAAI,MAAM;YAAE,MAAM,MAAM,CAAC;IAC3B,CAAC,CAAC;AACJ,CAAC;AA1BD,0CA0BC;AAED,SAAgB,sBAAsB,CAAC,GAAyB;IAC9D,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC;AAC5F,CAAC;AAFD,wDAEC;AAED,KAAK,UAAU,YAAY,CAAC,GAAoB,EAAE,IAAa;IAC7D,IAAI,qCAAa,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;QAC9B,OAAO;KACR;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,MAAM,GAAW,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3F,IACE,CAAC,MAAM,CAAC,WAAW;QACnB,MAAM,CAAC,mBAAmB,KAAK,IAAI;QACnC,MAAM,CAAC,aAAa,KAAK,IAAI;QAC7B,6BAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;QAEzC,OAAO;IAET,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAC9B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAChC,4CAA4C;IAC5C,IAAI,KAAK,CAAC,uBAAW,CAAC,MAAM,CAAC,EAAE;QAC7B,OAAO,KAAK,CAAC,uBAAW,CAAC,MAAM,CAAC,CAAC;KAClC;IACD,MAAM,YAAY,GAAG,MAAM,gCAAkB,CAAC,aAAa,CACzD,SAAS,CAAC,KAAK,EACf,MAAM,CAAC,WAAW,EAClB,GAAG,CAAC,SAAU,CAAC,cAAc,EAC7B,SAAS,CAAC,OAAO,CAClB,CAAC;IAEF,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE;QACvB,kBAAK,CAAC,WAAW,CAAC,KAAK,CAAC,6BAA6B,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;KAC5E;AACH,CAAC"}
@@ -1,6 +0,0 @@
1
- import { Middleware } from "@feathersjs/hooks";
2
- /**
3
- * This middleware will help to persist environment state even if lifecycle task throws Error.
4
- */
5
- export declare function EnvInfoWriterMW_V3(skip?: boolean): Middleware;
6
- //# sourceMappingURL=envInfoWriterV3.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"envInfoWriterV3.d.ts","sourceRoot":"","sources":["../../../src/core/middleware/envInfoWriterV3.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAgB,MAAM,mBAAmB,CAAC;AAQ7D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,UAAQ,GAAG,UAAU,CAsB3D"}
@@ -1,67 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
3
- "use strict";
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.EnvInfoWriterMW_V3 = void 0;
6
- const teamsfx_api_1 = require("@microsoft/teamsfx-api");
7
- const environment_1 = require("../environment");
8
- const globalVars_1 = require("../globalVars");
9
- const envInfoWriter_1 = require("./envInfoWriter");
10
- const projectSettingsLoader_1 = require("./projectSettingsLoader");
11
- /**
12
- * This middleware will help to persist environment state even if lifecycle task throws Error.
13
- */
14
- function EnvInfoWriterMW_V3(skip = false) {
15
- return async (ctx, next) => {
16
- let error1 = undefined;
17
- try {
18
- await next();
19
- const res = ctx.result;
20
- if (envInfoWriter_1.shouldSkipWriteEnvInfo(res)) {
21
- return;
22
- }
23
- }
24
- catch (e) {
25
- if (e["name"] === "CancelProvision")
26
- throw e;
27
- error1 = e;
28
- }
29
- let error2 = undefined;
30
- try {
31
- await writeEnvInfo(ctx, skip);
32
- }
33
- catch (e) {
34
- error2 = e;
35
- }
36
- if (error1)
37
- throw error1;
38
- if (error2)
39
- throw error2;
40
- };
41
- }
42
- exports.EnvInfoWriterMW_V3 = EnvInfoWriterMW_V3;
43
- async function writeEnvInfo(ctx, skip) {
44
- if (projectSettingsLoader_1.shouldIgnored(ctx) || skip) {
45
- return;
46
- }
47
- const lastArg = ctx.arguments[ctx.arguments.length - 1];
48
- const inputs = lastArg === ctx ? ctx.arguments[ctx.arguments.length - 2] : lastArg;
49
- if (!inputs.projectPath ||
50
- inputs.ignoreConfigPersist === true ||
51
- inputs.ignoreEnvInfo === true ||
52
- teamsfx_api_1.StaticPlatforms.includes(inputs.platform))
53
- return;
54
- if (ctx.contextV2 && ctx.envInfoV3) {
55
- const envInfoV3 = ctx.envInfoV3;
56
- if (!envInfoV3)
57
- return;
58
- const envState = envInfoV3.state;
59
- if (envState === undefined)
60
- return;
61
- const envStatePath = await environment_1.environmentManager.writeEnvState(envState, inputs.projectPath, ctx.contextV2.cryptoProvider, envInfoV3.envName, true);
62
- if (envStatePath.isOk()) {
63
- globalVars_1.TOOLS === null || globalVars_1.TOOLS === void 0 ? void 0 : globalVars_1.TOOLS.logProvider.debug(`[core] persist env state: ${envStatePath.value}`);
64
- }
65
- }
66
- }
67
- //# sourceMappingURL=envInfoWriterV3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"envInfoWriterV3.js","sourceRoot":"","sources":["../../../src/core/middleware/envInfoWriterV3.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,YAAY,CAAC;;;AAGb,wDAAkF;AAClF,gDAAoD;AACpD,8CAAsC;AAEtC,mDAAyD;AACzD,mEAAwD;AAExD;;GAEG;AACH,SAAgB,kBAAkB,CAAC,IAAI,GAAG,KAAK;IAC7C,OAAO,KAAK,EAAE,GAAoB,EAAE,IAAkB,EAAE,EAAE;QACxD,IAAI,MAAM,GAAQ,SAAS,CAAC;QAC5B,IAAI;YACF,MAAM,IAAI,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,CAAC,MAA8B,CAAC;YAC/C,IAAI,sCAAsB,CAAC,GAAG,CAAC,EAAE;gBAC/B,OAAO;aACR;SACF;QAAC,OAAO,CAAC,EAAE;YACV,IAAK,CAAS,CAAC,MAAM,CAAC,KAAK,iBAAiB;gBAAE,MAAM,CAAC,CAAC;YACtD,MAAM,GAAG,CAAC,CAAC;SACZ;QACD,IAAI,MAAM,GAAQ,SAAS,CAAC;QAC5B,IAAI;YACF,MAAM,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SAC/B;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,GAAG,CAAC,CAAC;SACZ;QACD,IAAI,MAAM;YAAE,MAAM,MAAM,CAAC;QACzB,IAAI,MAAM;YAAE,MAAM,MAAM,CAAC;IAC3B,CAAC,CAAC;AACJ,CAAC;AAtBD,gDAsBC;AAED,KAAK,UAAU,YAAY,CAAC,GAAoB,EAAE,IAAa;IAC7D,IAAI,qCAAa,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;QAC9B,OAAO;KACR;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,MAAM,GAAW,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3F,IACE,CAAC,MAAM,CAAC,WAAW;QACnB,MAAM,CAAC,mBAAmB,KAAK,IAAI;QACnC,MAAM,CAAC,aAAa,KAAK,IAAI;QAC7B,6BAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;QAEzC,OAAO;IAET,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,EAAE;QAClC,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC;QACjC,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO;QACnC,MAAM,YAAY,GAAG,MAAM,gCAAkB,CAAC,aAAa,CACzD,QAAQ,EACR,MAAM,CAAC,WAAW,EAClB,GAAG,CAAC,SAAS,CAAC,cAAc,EAC5B,SAAS,CAAC,OAAO,EACjB,IAAI,CACL,CAAC;QACF,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE;YACvB,kBAAK,aAAL,kBAAK,uBAAL,kBAAK,CAAE,WAAW,CAAC,KAAK,CAAC,6BAA6B,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;SAC7E;KACF;AACH,CAAC"}
@@ -1,6 +0,0 @@
1
- import { Middleware } from "@feathersjs/hooks";
2
- /**
3
- * This middleware will help to persist project settings if necessary.
4
- */
5
- export declare const ProjectSettingsWriterMW: Middleware;
6
- //# sourceMappingURL=projectSettingsWriter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projectSettingsWriter.d.ts","sourceRoot":"","sources":["../../../src/core/middleware/projectSettingsWriter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAgB,MAAM,mBAAmB,CAAC;AAkB7D;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,UAmCrC,CAAC"}
@@ -1,52 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
3
- "use strict";
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.ProjectSettingsWriterMW = void 0;
6
- const tslib_1 = require("tslib");
7
- const teamsfx_api_1 = require("@microsoft/teamsfx-api");
8
- const fs = tslib_1.__importStar(require("fs-extra"));
9
- const tools_1 = require("../../common/tools");
10
- const migrate_1 = require("../../component/migrate");
11
- const error_1 = require("../error");
12
- const globalVars_1 = require("../globalVars");
13
- const projectSettingsLoader_1 = require("./projectSettingsLoader");
14
- /**
15
- * This middleware will help to persist project settings if necessary.
16
- */
17
- const ProjectSettingsWriterMW = async (ctx, next) => {
18
- await next();
19
- if (!projectSettingsLoader_1.shouldIgnored(ctx)) {
20
- const lastArg = ctx.arguments[ctx.arguments.length - 1];
21
- const inputs = lastArg === ctx ? ctx.arguments[ctx.arguments.length - 2] : lastArg;
22
- if (!inputs.projectPath ||
23
- inputs.ignoreConfigPersist === true ||
24
- teamsfx_api_1.StaticPlatforms.includes(inputs.platform))
25
- return;
26
- let projectSettings = ctx.projectSettings;
27
- if (projectSettings === undefined)
28
- return;
29
- try {
30
- if (!tools_1.isV3Enabled()) {
31
- projectSettings = migrate_1.convertProjectSettingsV3ToV2(projectSettings);
32
- const solutionSettings = projectSettings.solutionSettings;
33
- if (solutionSettings) {
34
- if (!solutionSettings.activeResourcePlugins)
35
- solutionSettings.activeResourcePlugins = [];
36
- if (!solutionSettings.azureResources)
37
- solutionSettings.azureResources = [];
38
- }
39
- const settingFile = projectSettingsLoader_1.getProjectSettingsPath(inputs.projectPath);
40
- await fs.writeFile(settingFile, JSON.stringify(projectSettings, null, 4));
41
- globalVars_1.TOOLS === null || globalVars_1.TOOLS === void 0 ? void 0 : globalVars_1.TOOLS.logProvider.debug(`[core] persist project setting file: ${settingFile}`);
42
- }
43
- }
44
- catch (e) {
45
- if (ctx.result.isOk()) {
46
- ctx.result = teamsfx_api_1.err(error_1.WriteFileError(e));
47
- }
48
- }
49
- }
50
- };
51
- exports.ProjectSettingsWriterMW = ProjectSettingsWriterMW;
52
- //# sourceMappingURL=projectSettingsWriter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projectSettingsWriter.js","sourceRoot":"","sources":["../../../src/core/middleware/projectSettingsWriter.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,YAAY,CAAC;;;;AAGb,wDAQgC;AAChC,qDAA+B;AAC/B,8CAAiD;AACjD,qDAAuE;AACvE,oCAA0C;AAC1C,8CAAsC;AAEtC,mEAAgF;AAEhF;;GAEG;AACI,MAAM,uBAAuB,GAAe,KAAK,EACtD,GAAoB,EACpB,IAAkB,EAClB,EAAE;IACF,MAAM,IAAI,EAAE,CAAC;IACb,IAAI,CAAC,qCAAa,CAAC,GAAG,CAAC,EAAE;QACvB,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxD,MAAM,MAAM,GAAW,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3F,IACE,CAAC,MAAM,CAAC,WAAW;YACnB,MAAM,CAAC,mBAAmB,KAAK,IAAI;YACnC,6BAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;YAEzC,OAAO;QACT,IAAI,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;QAC1C,IAAI,eAAe,KAAK,SAAS;YAAE,OAAO;QAC1C,IAAI;YACF,IAAI,CAAC,mBAAW,EAAE,EAAE;gBAClB,eAAe,GAAG,sCAA4B,CAAC,eAAoC,CAAC,CAAC;gBACrF,MAAM,gBAAgB,GAAG,eAAe,CAAC,gBAAgB,CAAC;gBAC1D,IAAI,gBAAgB,EAAE;oBACpB,IAAI,CAAC,gBAAgB,CAAC,qBAAqB;wBAAE,gBAAgB,CAAC,qBAAqB,GAAG,EAAE,CAAC;oBACzF,IAAI,CAAC,gBAAgB,CAAC,cAAc;wBAAE,gBAAgB,CAAC,cAAc,GAAG,EAAE,CAAC;iBAC5E;gBAED,MAAM,WAAW,GAAG,8CAAsB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC/D,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC1E,kBAAK,aAAL,kBAAK,uBAAL,kBAAK,CAAE,WAAW,CAAC,KAAK,CAAC,wCAAwC,WAAW,EAAE,CAAC,CAAC;aACjF;SACF;QAAC,OAAO,CAAC,EAAE;YACV,IAAK,GAAG,CAAC,MAA+B,CAAC,IAAI,EAAE,EAAE;gBAC/C,GAAG,CAAC,MAAM,GAAG,iBAAG,CAAC,sBAAc,CAAC,CAAC,CAAC,CAAC,CAAC;aACrC;SACF;KACF;AACH,CAAC,CAAC;AAnCW,QAAA,uBAAuB,2BAmClC"}