@microsoft/teamsfx-core 2.0.6 → 2.0.7-alpha.8120e652f.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 (284) hide show
  1. package/build/common/constants.d.ts +1 -0
  2. package/build/common/constants.d.ts.map +1 -1
  3. package/build/common/constants.js +1 -0
  4. package/build/common/constants.js.map +1 -1
  5. package/build/common/deps-checker/checkerFactory.d.ts.map +1 -1
  6. package/build/common/deps-checker/checkerFactory.js +3 -0
  7. package/build/common/deps-checker/checkerFactory.js.map +1 -1
  8. package/build/common/deps-checker/constant/telemetry.d.ts +1 -0
  9. package/build/common/deps-checker/constant/telemetry.d.ts.map +1 -1
  10. package/build/common/deps-checker/constant/telemetry.js +1 -0
  11. package/build/common/deps-checker/constant/telemetry.js.map +1 -1
  12. package/build/common/deps-checker/coreDepsLoggerAdapter.d.ts +17 -0
  13. package/build/common/deps-checker/coreDepsLoggerAdapter.d.ts.map +1 -0
  14. package/build/common/deps-checker/coreDepsLoggerAdapter.js +47 -0
  15. package/build/common/deps-checker/coreDepsLoggerAdapter.js.map +1 -0
  16. package/build/common/deps-checker/coreDepsTelemetryAdapter.d.ts +16 -0
  17. package/build/common/deps-checker/coreDepsTelemetryAdapter.d.ts.map +1 -0
  18. package/build/common/deps-checker/coreDepsTelemetryAdapter.js +53 -0
  19. package/build/common/deps-checker/coreDepsTelemetryAdapter.js.map +1 -0
  20. package/build/common/deps-checker/depsChecker.d.ts +6 -1
  21. package/build/common/deps-checker/depsChecker.d.ts.map +1 -1
  22. package/build/common/deps-checker/depsChecker.js +6 -1
  23. package/build/common/deps-checker/depsChecker.js.map +1 -1
  24. package/build/common/deps-checker/index.d.ts +2 -0
  25. package/build/common/deps-checker/index.d.ts.map +1 -1
  26. package/build/common/deps-checker/index.js +2 -0
  27. package/build/common/deps-checker/index.js.map +1 -1
  28. package/build/common/deps-checker/internal/testToolChecker.d.ts +14 -3
  29. package/build/common/deps-checker/internal/testToolChecker.d.ts.map +1 -1
  30. package/build/common/deps-checker/internal/testToolChecker.js +178 -75
  31. package/build/common/deps-checker/internal/testToolChecker.js.map +1 -1
  32. package/build/common/deps-checker/internal/vxTestAppChecker.d.ts.map +1 -1
  33. package/build/common/deps-checker/internal/vxTestAppChecker.js +3 -45
  34. package/build/common/deps-checker/internal/vxTestAppChecker.js.map +1 -1
  35. package/build/common/deps-checker/util/downloadHelper.d.ts +15 -0
  36. package/build/common/deps-checker/util/downloadHelper.d.ts.map +1 -0
  37. package/build/common/deps-checker/util/downloadHelper.js +59 -0
  38. package/build/common/deps-checker/util/downloadHelper.js.map +1 -0
  39. package/build/common/featureFlags.d.ts +1 -2
  40. package/build/common/featureFlags.d.ts.map +1 -1
  41. package/build/common/featureFlags.js +5 -9
  42. package/build/common/featureFlags.js.map +1 -1
  43. package/build/common/local/packageJsonHelper.d.ts +0 -1
  44. package/build/common/local/packageJsonHelper.d.ts.map +1 -1
  45. package/build/common/local/packageJsonHelper.js +1 -29
  46. package/build/common/local/packageJsonHelper.js.map +1 -1
  47. package/build/common/m365/packageService.d.ts.map +1 -1
  48. package/build/common/m365/packageService.js +16 -7
  49. package/build/common/m365/packageService.js.map +1 -1
  50. package/build/common/projectTypeChecker.d.ts +38 -0
  51. package/build/common/projectTypeChecker.d.ts.map +1 -0
  52. package/build/common/projectTypeChecker.js +217 -0
  53. package/build/common/projectTypeChecker.js.map +1 -0
  54. package/build/common/samples.d.ts +6 -4
  55. package/build/common/samples.d.ts.map +1 -1
  56. package/build/common/samples.js +64 -29
  57. package/build/common/samples.js.map +1 -1
  58. package/build/common/spec-parser/interfaces.d.ts +14 -1
  59. package/build/common/spec-parser/interfaces.d.ts.map +1 -1
  60. package/build/common/spec-parser/manifestUpdater.d.ts +2 -2
  61. package/build/common/spec-parser/manifestUpdater.d.ts.map +1 -1
  62. package/build/common/spec-parser/manifestUpdater.js +33 -19
  63. package/build/common/spec-parser/manifestUpdater.js.map +1 -1
  64. package/build/common/spec-parser/specFilter.d.ts +1 -1
  65. package/build/common/spec-parser/specFilter.d.ts.map +1 -1
  66. package/build/common/spec-parser/specFilter.js +2 -2
  67. package/build/common/spec-parser/specFilter.js.map +1 -1
  68. package/build/common/spec-parser/specParser.browser.d.ts.map +1 -1
  69. package/build/common/spec-parser/specParser.browser.js +5 -3
  70. package/build/common/spec-parser/specParser.browser.js.map +1 -1
  71. package/build/common/spec-parser/specParser.d.ts.map +1 -1
  72. package/build/common/spec-parser/specParser.js +36 -37
  73. package/build/common/spec-parser/specParser.js.map +1 -1
  74. package/build/common/spec-parser/utils.d.ts +12 -8
  75. package/build/common/spec-parser/utils.d.ts.map +1 -1
  76. package/build/common/spec-parser/utils.js +97 -34
  77. package/build/common/spec-parser/utils.js.map +1 -1
  78. package/build/common/telemetry.d.ts +17 -1
  79. package/build/common/telemetry.d.ts.map +1 -1
  80. package/build/common/telemetry.js +35 -1
  81. package/build/common/telemetry.js.map +1 -1
  82. package/build/common/templates-config.json +1 -1
  83. package/build/component/configManager/lifecycle.d.ts.map +1 -1
  84. package/build/component/configManager/lifecycle.js +1 -1
  85. package/build/component/configManager/lifecycle.js.map +1 -1
  86. package/build/component/constant/commonConstant.d.ts +1 -0
  87. package/build/component/constant/commonConstant.d.ts.map +1 -1
  88. package/build/component/constant/commonConstant.js +2 -0
  89. package/build/component/constant/commonConstant.js.map +1 -1
  90. package/build/component/coordinator/index.d.ts +2 -1
  91. package/build/component/coordinator/index.d.ts.map +1 -1
  92. package/build/component/coordinator/index.js +12 -2
  93. package/build/component/coordinator/index.js.map +1 -1
  94. package/build/component/driver/aad/error/aadManifestError.d.ts +9 -0
  95. package/build/component/driver/aad/error/aadManifestError.d.ts.map +1 -1
  96. package/build/component/driver/aad/error/aadManifestError.js +37 -1
  97. package/build/component/driver/aad/error/aadManifestError.js.map +1 -1
  98. package/build/component/driver/aad/utility/aadAppClient.d.ts.map +1 -1
  99. package/build/component/driver/aad/utility/aadAppClient.js +9 -6
  100. package/build/component/driver/aad/utility/aadAppClient.js.map +1 -1
  101. package/build/component/driver/aad/utility/aadManifestHelper.d.ts.map +1 -1
  102. package/build/component/driver/aad/utility/aadManifestHelper.js +6 -0
  103. package/build/component/driver/aad/utility/aadManifestHelper.js.map +1 -1
  104. package/build/component/driver/aad/utility/constants.d.ts +1 -0
  105. package/build/component/driver/aad/utility/constants.d.ts.map +1 -1
  106. package/build/component/driver/aad/utility/constants.js +1 -0
  107. package/build/component/driver/aad/utility/constants.js.map +1 -1
  108. package/build/component/driver/apiKey/create.d.ts.map +1 -1
  109. package/build/component/driver/apiKey/create.js +7 -3
  110. package/build/component/driver/apiKey/create.js.map +1 -1
  111. package/build/component/driver/deploy/azure/azureFunctionDeployDriver.d.ts.map +1 -1
  112. package/build/component/driver/deploy/azure/azureFunctionDeployDriver.js.map +1 -1
  113. package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.d.ts +12 -0
  114. package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.d.ts.map +1 -0
  115. package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.js +71 -0
  116. package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.js.map +1 -0
  117. package/build/component/driver/deploy/azure/impl/AzureZipDeployImpl.d.ts +3 -2
  118. package/build/component/driver/deploy/azure/impl/AzureZipDeployImpl.d.ts.map +1 -1
  119. package/build/component/driver/deploy/azure/impl/AzureZipDeployImpl.js +5 -1
  120. package/build/component/driver/deploy/azure/impl/AzureZipDeployImpl.js.map +1 -1
  121. package/build/component/driver/deploy/azure/impl/azureDeployImpl.d.ts +5 -0
  122. package/build/component/driver/deploy/azure/impl/azureDeployImpl.d.ts.map +1 -1
  123. package/build/component/driver/deploy/azure/impl/azureDeployImpl.js +21 -0
  124. package/build/component/driver/deploy/azure/impl/azureDeployImpl.js.map +1 -1
  125. package/build/component/driver/devTool/installDriver.d.ts +2 -1
  126. package/build/component/driver/devTool/installDriver.d.ts.map +1 -1
  127. package/build/component/driver/devTool/installDriver.js +5 -2
  128. package/build/component/driver/devTool/installDriver.js.map +1 -1
  129. package/build/component/driver/index.d.ts +1 -0
  130. package/build/component/driver/index.d.ts.map +1 -1
  131. package/build/component/driver/index.js +1 -0
  132. package/build/component/driver/index.js.map +1 -1
  133. package/build/component/driver/interface/provisionArgs.d.ts +3 -0
  134. package/build/component/driver/interface/provisionArgs.d.ts.map +1 -1
  135. package/build/component/driver/interface/stepDriver.d.ts +2 -1
  136. package/build/component/driver/interface/stepDriver.d.ts.map +1 -1
  137. package/build/component/driver/middleware/addSWADeployTelemetry.d.ts +7 -0
  138. package/build/component/driver/middleware/addSWADeployTelemetry.d.ts.map +1 -0
  139. package/build/component/driver/middleware/addSWADeployTelemetry.js +52 -0
  140. package/build/component/driver/middleware/addSWADeployTelemetry.js.map +1 -0
  141. package/build/component/driver/middleware/addStartAndEndTelemetry.d.ts +3 -0
  142. package/build/component/driver/middleware/addStartAndEndTelemetry.d.ts.map +1 -1
  143. package/build/component/driver/middleware/addStartAndEndTelemetry.js +2 -1
  144. package/build/component/driver/middleware/addStartAndEndTelemetry.js.map +1 -1
  145. package/build/component/driver/script/npxBuildDriver.d.ts.map +1 -1
  146. package/build/component/driver/script/npxBuildDriver.js +5 -1
  147. package/build/component/driver/script/npxBuildDriver.js.map +1 -1
  148. package/build/component/driver/script/scriptDriver.d.ts +12 -8
  149. package/build/component/driver/script/scriptDriver.d.ts.map +1 -1
  150. package/build/component/driver/script/scriptDriver.js +54 -36
  151. package/build/component/driver/script/scriptDriver.js.map +1 -1
  152. package/build/component/driver/teamsApp/clients/appStudioClient.d.ts.map +1 -1
  153. package/build/component/driver/teamsApp/clients/appStudioClient.js +52 -33
  154. package/build/component/driver/teamsApp/clients/appStudioClient.js.map +1 -1
  155. package/build/component/driver/teamsApp/utils/telemetry.d.ts +7 -0
  156. package/build/component/driver/teamsApp/utils/telemetry.d.ts.map +1 -1
  157. package/build/component/driver/teamsApp/utils/telemetry.js +3 -2
  158. package/build/component/driver/teamsApp/utils/telemetry.js.map +1 -1
  159. package/build/component/driver/teamsApp/validateAppPackage.d.ts.map +1 -1
  160. package/build/component/driver/teamsApp/validateAppPackage.js +14 -8
  161. package/build/component/driver/teamsApp/validateAppPackage.js.map +1 -1
  162. package/build/component/generator/copilotPlugin/generator.d.ts.map +1 -1
  163. package/build/component/generator/copilotPlugin/generator.js +5 -4
  164. package/build/component/generator/copilotPlugin/generator.js.map +1 -1
  165. package/build/component/generator/copilotPlugin/helper.d.ts.map +1 -1
  166. package/build/component/generator/copilotPlugin/helper.js +6 -2
  167. package/build/component/generator/copilotPlugin/helper.js.map +1 -1
  168. package/build/component/generator/error.d.ts +5 -8
  169. package/build/component/generator/error.d.ts.map +1 -1
  170. package/build/component/generator/error.js +16 -16
  171. package/build/component/generator/error.js.map +1 -1
  172. package/build/component/generator/generator.d.ts +1 -1
  173. package/build/component/generator/generator.d.ts.map +1 -1
  174. package/build/component/generator/generator.js +16 -25
  175. package/build/component/generator/generator.js.map +1 -1
  176. package/build/component/generator/generatorAction.d.ts +4 -1
  177. package/build/component/generator/generatorAction.d.ts.map +1 -1
  178. package/build/component/generator/generatorAction.js +24 -6
  179. package/build/component/generator/generatorAction.js.map +1 -1
  180. package/build/component/generator/officeAddin/helperMethods.js +21 -20
  181. package/build/component/generator/officeAddin/helperMethods.js.map +1 -1
  182. package/build/component/generator/spfx/depsChecker/dependencyChecker.d.ts +1 -1
  183. package/build/component/generator/spfx/depsChecker/dependencyChecker.d.ts.map +1 -1
  184. package/build/component/generator/spfx/depsChecker/generatorChecker.d.ts +4 -3
  185. package/build/component/generator/spfx/depsChecker/generatorChecker.d.ts.map +1 -1
  186. package/build/component/generator/spfx/depsChecker/generatorChecker.js +30 -20
  187. package/build/component/generator/spfx/depsChecker/generatorChecker.js.map +1 -1
  188. package/build/component/generator/spfx/depsChecker/yoChecker.d.ts +3 -2
  189. package/build/component/generator/spfx/depsChecker/yoChecker.d.ts.map +1 -1
  190. package/build/component/generator/spfx/depsChecker/yoChecker.js +27 -18
  191. package/build/component/generator/spfx/depsChecker/yoChecker.js.map +1 -1
  192. package/build/component/generator/spfx/error.d.ts +2 -0
  193. package/build/component/generator/spfx/error.d.ts.map +1 -1
  194. package/build/component/generator/spfx/error.js +16 -1
  195. package/build/component/generator/spfx/error.js.map +1 -1
  196. package/build/component/generator/spfx/spfxGenerator.d.ts +3 -0
  197. package/build/component/generator/spfx/spfxGenerator.d.ts.map +1 -1
  198. package/build/component/generator/spfx/spfxGenerator.js +149 -20
  199. package/build/component/generator/spfx/spfxGenerator.js.map +1 -1
  200. package/build/component/generator/spfx/utils/constants.d.ts +3 -0
  201. package/build/component/generator/spfx/utils/constants.d.ts.map +1 -1
  202. package/build/component/generator/spfx/utils/constants.js +3 -0
  203. package/build/component/generator/spfx/utils/constants.js.map +1 -1
  204. package/build/component/generator/spfx/utils/telemetryEvents.d.ts +7 -8
  205. package/build/component/generator/spfx/utils/telemetryEvents.d.ts.map +1 -1
  206. package/build/component/generator/spfx/utils/telemetryEvents.js +5 -6
  207. package/build/component/generator/spfx/utils/telemetryEvents.js.map +1 -1
  208. package/build/component/generator/spfx/utils/utils.js +1 -1
  209. package/build/component/generator/utils.d.ts +5 -2
  210. package/build/component/generator/utils.d.ts.map +1 -1
  211. package/build/component/generator/utils.js +32 -12
  212. package/build/component/generator/utils.js.map +1 -1
  213. package/build/component/utils/common.d.ts +4 -1
  214. package/build/component/utils/common.d.ts.map +1 -1
  215. package/build/component/utils/common.js +21 -17
  216. package/build/component/utils/common.js.map +1 -1
  217. package/build/component/utils/envUtil.d.ts +1 -0
  218. package/build/component/utils/envUtil.d.ts.map +1 -1
  219. package/build/component/utils/envUtil.js +14 -2
  220. package/build/component/utils/envUtil.js.map +1 -1
  221. package/build/component/utils/fileOperation.d.ts +1 -1
  222. package/build/component/utils/fileOperation.d.ts.map +1 -1
  223. package/build/component/utils/fileOperation.js +34 -48
  224. package/build/component/utils/fileOperation.js.map +1 -1
  225. package/build/core/FxCore.d.ts +5 -0
  226. package/build/core/FxCore.d.ts.map +1 -1
  227. package/build/core/FxCore.js +48 -24
  228. package/build/core/FxCore.js.map +1 -1
  229. package/build/core/middleware/projectMigratorV3.d.ts +1 -1
  230. package/build/core/middleware/projectMigratorV3.d.ts.map +1 -1
  231. package/build/core/middleware/projectMigratorV3.js +10 -9
  232. package/build/core/middleware/projectMigratorV3.js.map +1 -1
  233. package/build/core/middleware/projectVersionChecker.js +4 -4
  234. package/build/core/middleware/projectVersionChecker.js.map +1 -1
  235. package/build/error/deploy.d.ts +6 -0
  236. package/build/error/deploy.d.ts.map +1 -1
  237. package/build/error/deploy.js +25 -1
  238. package/build/error/deploy.js.map +1 -1
  239. package/build/index.d.ts +1 -0
  240. package/build/index.d.ts.map +1 -1
  241. package/build/index.js +1 -0
  242. package/build/index.js.map +1 -1
  243. package/build/question/create.d.ts.map +1 -1
  244. package/build/question/create.js +14 -5
  245. package/build/question/create.js.map +1 -1
  246. package/build/question/generator.js +1 -3
  247. package/build/question/generator.js.map +1 -1
  248. package/build/question/options/CreateProjectOptions.js +1 -1
  249. package/build/question/options/CreateProjectOptions.js.map +1 -1
  250. package/build/question/options/CreateSampleProjectOptions.d.ts.map +1 -1
  251. package/build/question/options/CreateSampleProjectOptions.js +5 -1
  252. package/build/question/options/CreateSampleProjectOptions.js.map +1 -1
  253. package/build/question/options/DeployAadManifestOptions.js +1 -1
  254. package/build/question/options/DeployAadManifestOptions.js.map +1 -1
  255. package/build/question/options/PermissionGrantOptions.js +1 -1
  256. package/build/question/options/PermissionGrantOptions.js.map +1 -1
  257. package/build/question/options/PermissionListOptions.js +1 -1
  258. package/build/question/options/PermissionListOptions.js.map +1 -1
  259. package/build/question/other.d.ts +2 -1
  260. package/build/question/other.d.ts.map +1 -1
  261. package/build/question/other.js +22 -8
  262. package/build/question/other.js.map +1 -1
  263. package/build/question/questionNames.d.ts +1 -0
  264. package/build/question/questionNames.d.ts.map +1 -1
  265. package/build/question/questionNames.js +1 -0
  266. package/build/question/questionNames.js.map +1 -1
  267. package/build/ui/visitor.d.ts.map +1 -1
  268. package/build/ui/visitor.js +11 -2
  269. package/build/ui/visitor.js.map +1 -1
  270. package/package.json +14 -22
  271. package/resource/package.nls.json +27 -7
  272. package/resource/yaml-schema/v1.3/yaml.schema.json +42 -5
  273. package/templates/fallback/common.zip +0 -0
  274. package/templates/fallback/csharp.zip +0 -0
  275. package/templates/fallback/js.zip +0 -0
  276. package/templates/fallback/ts.zip +0 -0
  277. package/templates/plugins/resource/aad/auth/V3/Bot/Pages/BotAuthorizeEndPage.cshtml +55 -51
  278. package/templates/plugins/resource/aad/auth/bot/csharp/Pages/BotAuthorizeEndPage.cshtml +55 -51
  279. package/templates/plugins/resource/aad/auth/bot/js/public/auth-end.html +6 -2
  280. package/templates/plugins/resource/aad/auth/bot/ts/public/auth-end.html +5 -1
  281. package/templates/plugins/resource/aad/auth/tab/js/public/auth-end.html +16 -9
  282. package/templates/plugins/resource/aad/auth/tab/js/public/auth-start.html +11 -7
  283. package/templates/plugins/resource/aad/auth/tab/ts/public/auth-end.html +16 -9
  284. package/templates/plugins/resource/aad/auth/tab/ts/public/auth-start.html +11 -7
@@ -3,11 +3,12 @@ import { DependencyChecker } from "./dependencyChecker";
3
3
  export declare class GeneratorChecker implements DependencyChecker {
4
4
  private readonly _logger;
5
5
  constructor(logger: LogProvider);
6
- ensureLatestDependency(ctx: Context): Promise<Result<boolean, FxError>>;
6
+ ensureDependency(ctx: Context, targetVersion: string): Promise<Result<boolean, FxError>>;
7
7
  isLatestInstalled(loadedLatestVersion: string | undefined): Promise<boolean>;
8
- install(): Promise<void>;
8
+ findLocalInstalledVersion(): Promise<string | undefined>;
9
+ install(targetVersion: string): Promise<void>;
9
10
  getSpGeneratorPath(): string;
10
- findGloballyInstalledVersion(timeoutInSeconds?: number): Promise<string | undefined>;
11
+ findGloballyInstalledVersion(timeoutInSeconds?: number, shouldThrowIfNotFind?: boolean): Promise<string | undefined>;
11
12
  findLatestVersion(timeoutInSeconds?: number): Promise<string | undefined>;
12
13
  private validate;
13
14
  private getDefaultInstallPath;
@@ -1 +1 @@
1
- {"version":3,"file":"generatorChecker.d.ts","sourceRoot":"","sources":["../../../../../src/component/generator/spfx/depsChecker/generatorChecker.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,OAAO,EAEP,OAAO,EACP,WAAW,EAEX,MAAM,EAGP,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAYxD,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;gBAE1B,MAAM,EAAE,WAAW;IAIlB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IA4BvE,iBAAiB,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAW5E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B,kBAAkB,IAAI,MAAM;IAatB,4BAA4B,CACvC,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIjB,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAIxE,QAAQ;IAItB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,eAAe;YAIT,YAAY;YAeZ,OAAO;YAgBP,gBAAgB;CAuB/B"}
1
+ {"version":3,"file":"generatorChecker.d.ts","sourceRoot":"","sources":["../../../../../src/component/generator/spfx/depsChecker/generatorChecker.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,OAAO,EAEP,OAAO,EACP,WAAW,EAEX,MAAM,EAGP,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAYxD,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;gBAE1B,MAAM,EAAE,WAAW;IAIlB,gBAAgB,CAC3B,GAAG,EAAE,OAAO,EACZ,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IA2BvB,iBAAiB,CAAC,mBAAmB,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAU5E,yBAAyB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAUxD,OAAO,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAanD,kBAAkB,IAAI,MAAM;IAatB,4BAA4B,CACvC,gBAAgB,CAAC,EAAE,MAAM,EACzB,oBAAoB,CAAC,EAAE,OAAO,GAC7B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IASjB,iBAAiB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAIxE,QAAQ;IAItB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,eAAe;YAIT,YAAY;YAeZ,OAAO;YAgBP,gBAAgB;CAuB/B"}
@@ -15,45 +15,55 @@ const cpUtils_1 = require("../../../../common/deps-checker/util/cpUtils");
15
15
  const constants_1 = require("../utils/constants");
16
16
  const utils_1 = require("../utils/utils");
17
17
  const name = constants_1.Constants.GeneratorPackageName;
18
- const displayName = `${name}@${constants_1.Constants.LatestVersion}`;
18
+ const displayName = `${name}`;
19
19
  const timeout = 6 * 60 * 1000;
20
20
  class GeneratorChecker {
21
21
  constructor(logger) {
22
22
  this._logger = logger;
23
23
  }
24
- async ensureLatestDependency(ctx) {
25
- telemetry_helper_1.telemetryHelper.sendSuccessEvent(ctx, telemetryEvents_1.TelemetryEvents.EnsureLatestSharepointGeneratorStart);
24
+ async ensureDependency(ctx, targetVersion) {
25
+ telemetry_helper_1.telemetryHelper.sendSuccessEvent(ctx, telemetryEvents_1.TelemetryEvents.EnsureSharepointGeneratorStart);
26
26
  try {
27
- void this._logger.info(`${displayName} not found, installing...`);
28
- await this.install();
29
- void this._logger.info(`Successfully installed ${displayName}`);
30
- telemetry_helper_1.telemetryHelper.sendSuccessEvent(ctx, telemetryEvents_1.TelemetryEvents.EnsureLatestSharepointGenerator);
27
+ void this._logger.info(`${displayName}@${targetVersion} not found, installing...`);
28
+ await this.install(targetVersion);
29
+ void this._logger.info(`Successfully installed ${displayName}@${targetVersion}`);
30
+ telemetry_helper_1.telemetryHelper.sendSuccessEvent(ctx, telemetryEvents_1.TelemetryEvents.EnsureSharepointGenerator);
31
31
  }
32
32
  catch (error) {
33
- telemetry_helper_1.telemetryHelper.sendErrorEvent(ctx, telemetryEvents_1.TelemetryEvents.EnsureLatestSharepointGenerator, error, {
34
- [telemetryEvents_1.TelemetryProperty.EnsureLatestSharepointGeneratorReason]: error.name,
33
+ telemetry_helper_1.telemetryHelper.sendErrorEvent(ctx, telemetryEvents_1.TelemetryEvents.EnsureSharepointGenerator, error, {
34
+ [telemetryEvents_1.TelemetryProperty.EnsureSharepointGeneratorReason]: error
35
+ .name,
35
36
  });
36
37
  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
37
- this._logger.error(`Failed to install ${displayName}, error = '${error}'`);
38
+ this._logger.error(`Failed to install ${displayName}@${targetVersion}, error = '${error}'`);
38
39
  return teamsfx_api_1.err(error);
39
40
  }
40
41
  return teamsfx_api_1.ok(true);
41
42
  }
42
43
  async isLatestInstalled(loadedLatestVersion) {
43
44
  try {
44
- const generatorVersion = await this.queryVersion();
45
+ const generatorVersion = await this.findLocalInstalledVersion();
45
46
  const latestGeneratorVersion = loadedLatestVersion !== null && loadedLatestVersion !== void 0 ? loadedLatestVersion : (await this.findLatestVersion(5));
46
- const hasSentinel = await fs.pathExists(this.getSentinelPath());
47
- return !!latestGeneratorVersion && generatorVersion === latestGeneratorVersion && hasSentinel;
47
+ return !!latestGeneratorVersion && generatorVersion === latestGeneratorVersion;
48
48
  }
49
49
  catch (error) {
50
50
  return false;
51
51
  }
52
52
  }
53
- async install() {
53
+ async findLocalInstalledVersion() {
54
+ try {
55
+ const generatorVersion = await this.queryVersion();
56
+ const hasSentinel = await fs.pathExists(this.getSentinelPath());
57
+ return hasSentinel ? generatorVersion : undefined;
58
+ }
59
+ catch (error) {
60
+ return undefined;
61
+ }
62
+ }
63
+ async install(targetVersion) {
54
64
  void this._logger.info("Start installing...");
55
65
  await this.cleanup();
56
- await this.installGenerator();
66
+ await this.installGenerator(targetVersion);
57
67
  void this._logger.info("Validating package...");
58
68
  if (!(await this.validate())) {
59
69
  void this._logger.debug(`Failed to validate ${name}, cleaning up...`);
@@ -64,8 +74,8 @@ class GeneratorChecker {
64
74
  getSpGeneratorPath() {
65
75
  return `"${path.join(this.getDefaultInstallPath(), "node_modules", "@microsoft", "generator-sharepoint", "lib", "generators", "app", "index.js")}"`;
66
76
  }
67
- async findGloballyInstalledVersion(timeoutInSeconds) {
68
- return await utils_1.Utils.findGloballyInstalledVersion(this._logger, name, timeoutInSeconds !== null && timeoutInSeconds !== void 0 ? timeoutInSeconds : 0);
77
+ async findGloballyInstalledVersion(timeoutInSeconds, shouldThrowIfNotFind) {
78
+ return await utils_1.Utils.findGloballyInstalledVersion(this._logger, name, timeoutInSeconds !== null && timeoutInSeconds !== void 0 ? timeoutInSeconds : 0, shouldThrowIfNotFind);
69
79
  }
70
80
  async findLatestVersion(timeoutInSeconds) {
71
81
  return await utils_1.Utils.findLatestVersion(this._logger, name, timeoutInSeconds !== null && timeoutInSeconds !== void 0 ? timeoutInSeconds : 0);
@@ -103,15 +113,15 @@ class GeneratorChecker {
103
113
  this._logger.error(`Failed to clean up path: ${this.getDefaultInstallPath()}, error: ${err}`);
104
114
  }
105
115
  }
106
- async installGenerator() {
116
+ async installGenerator(targetVersion) {
117
+ const version = targetVersion !== null && targetVersion !== void 0 ? targetVersion : constants_1.Constants.LatestVersion;
107
118
  try {
108
- const version = constants_1.Constants.LatestVersion;
109
119
  await fs.ensureDir(path.join(this.getDefaultInstallPath(), "node_modules"));
110
120
  await cpUtils_1.cpUtils.executeCommand(undefined, this._logger, { timeout: timeout, shell: false }, utils_1.getExecCommand("npm"), "install", `${name}@${version}`, "--prefix", `${this.getDefaultInstallPath()}`, "--no-audit", "--global-style");
111
121
  await fs.ensureFile(this.getSentinelPath());
112
122
  }
113
123
  catch (error) {
114
- void this._logger.error(`Failed to execute npm install ${displayName}`);
124
+ void this._logger.error(`Failed to execute npm install ${displayName}@${version}`);
115
125
  throw error_1.NpmInstallError(error);
116
126
  }
117
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generatorChecker.js","sourceRoot":"","sources":["../../../../../src/component/generator/spfx/depsChecker/generatorChecker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generatorChecker.js","sourceRoot":"","sources":["../../../../../src/component/generator/spfx/depsChecker/generatorChecker.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,10 @@ import { DependencyChecker } from "./dependencyChecker";
3
3
  export declare class YoChecker implements DependencyChecker {
4
4
  private readonly _logger;
5
5
  constructor(logger: LogProvider);
6
- ensureLatestDependency(ctx: Context): Promise<Result<boolean, FxError>>;
6
+ ensureDependency(ctx: Context, targetVersion: string): Promise<Result<boolean, FxError>>;
7
+ findLocalInstalledVersion(): Promise<string | undefined>;
7
8
  isLatestInstalled(): Promise<boolean>;
8
- install(): Promise<void>;
9
+ install(targetVersion: string): Promise<void>;
9
10
  getBinFolders(): string[];
10
11
  findGloballyInstalledVersion(timeoutInSeconds?: number): Promise<string | undefined>;
11
12
  findLatestVersion(timeoutInSeconds: number): Promise<string | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"yoChecker.d.ts","sourceRoot":"","sources":["../../../../../src/component/generator/spfx/depsChecker/yoChecker.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,OAAO,EAEP,OAAO,EACP,WAAW,EAEX,MAAM,EAGP,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAYxD,qBAAa,SAAU,YAAW,iBAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;gBAE1B,MAAM,EAAE,WAAW;IAIlB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IA0BvE,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAWrC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B,aAAa,IAAI,MAAM,EAAE;IAKnB,4BAA4B,CACvC,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIjB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAIvE,QAAQ;IAItB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,eAAe;YAIT,YAAY;YAcZ,OAAO;YAoCP,SAAS;CAuBxB"}
1
+ {"version":3,"file":"yoChecker.d.ts","sourceRoot":"","sources":["../../../../../src/component/generator/spfx/depsChecker/yoChecker.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,OAAO,EAEP,OAAO,EACP,WAAW,EAEX,MAAM,EAGP,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAYxD,qBAAa,SAAU,YAAW,iBAAiB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;gBAE1B,MAAM,EAAE,WAAW;IAIlB,gBAAgB,CAC3B,GAAG,EAAE,OAAO,EACZ,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IA0BvB,yBAAyB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAUxD,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAUrC,OAAO,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAanD,aAAa,IAAI,MAAM,EAAE;IAKnB,4BAA4B,CACvC,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIjB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAIvE,QAAQ;IAItB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,eAAe;YAIT,YAAY;YAcZ,OAAO;YAoCP,SAAS;CAuBxB"}
@@ -15,44 +15,53 @@ const cpUtils_1 = require("../../../../common/deps-checker/util/cpUtils");
15
15
  const utils_1 = require("../utils/utils");
16
16
  const constants_1 = require("../utils/constants");
17
17
  const name = constants_1.Constants.YeomanPackageName;
18
- const displayName = `${name}@${constants_1.Constants.LatestVersion}`;
18
+ const displayName = `${name}`;
19
19
  const timeout = 6 * 60 * 1000;
20
20
  class YoChecker {
21
21
  constructor(logger) {
22
22
  this._logger = logger;
23
23
  }
24
- async ensureLatestDependency(ctx) {
25
- telemetry_helper_1.telemetryHelper.sendSuccessEvent(ctx, telemetryEvents_1.TelemetryEvents.EnsureLatestYoStart);
24
+ async ensureDependency(ctx, targetVersion) {
25
+ telemetry_helper_1.telemetryHelper.sendSuccessEvent(ctx, telemetryEvents_1.TelemetryEvents.EnsureYoStart);
26
26
  try {
27
- void this._logger.info(`${displayName} not found, installing...`);
28
- await this.install();
29
- void this._logger.info(`Successfully installed ${displayName}`);
30
- telemetry_helper_1.telemetryHelper.sendSuccessEvent(ctx, telemetryEvents_1.TelemetryEvents.EnsureLatestYo);
27
+ void this._logger.info(`${displayName}@${targetVersion} not found, installing...`);
28
+ await this.install(targetVersion);
29
+ void this._logger.info(`Successfully installed ${displayName}@${targetVersion}`);
30
+ telemetry_helper_1.telemetryHelper.sendSuccessEvent(ctx, telemetryEvents_1.TelemetryEvents.EnsureYo);
31
31
  }
32
32
  catch (error) {
33
- telemetry_helper_1.telemetryHelper.sendErrorEvent(ctx, telemetryEvents_1.TelemetryEvents.EnsureLatestYo, error, {
34
- [telemetryEvents_1.TelemetryProperty.EnsureLatestYoReason]: error.name,
33
+ telemetry_helper_1.telemetryHelper.sendErrorEvent(ctx, telemetryEvents_1.TelemetryEvents.EnsureYo, error, {
34
+ [telemetryEvents_1.TelemetryProperty.EnsureYoReason]: error.name,
35
35
  });
36
- this._logger.error(`Failed to install ${displayName}, error = '${error.toString()}'`);
36
+ this._logger.error(`Failed to install ${displayName}@${targetVersion}, error = '${error.toString()}'`);
37
37
  return teamsfx_api_1.err(error);
38
38
  }
39
39
  return teamsfx_api_1.ok(true);
40
40
  }
41
- async isLatestInstalled() {
41
+ async findLocalInstalledVersion() {
42
42
  try {
43
43
  const yoVersion = await this.queryVersion();
44
- const latestYeomanVersion = await this.findLatestVersion(10);
45
44
  const hasSentinel = await fs_extra_1.default.pathExists(this.getSentinelPath());
46
- return !!latestYeomanVersion && yoVersion === latestYeomanVersion && hasSentinel;
45
+ return hasSentinel ? yoVersion : undefined;
46
+ }
47
+ catch (error) {
48
+ return undefined;
49
+ }
50
+ }
51
+ async isLatestInstalled() {
52
+ try {
53
+ const yoVersion = await this.findLocalInstalledVersion();
54
+ const latestYeomanVersion = await this.findLatestVersion(10);
55
+ return !!latestYeomanVersion && yoVersion === latestYeomanVersion;
47
56
  }
48
57
  catch (error) {
49
58
  return false;
50
59
  }
51
60
  }
52
- async install() {
61
+ async install(targetVersion) {
53
62
  void this._logger.info("Start installing...");
54
63
  await this.cleanup();
55
- await this.installYo();
64
+ await this.installYo(targetVersion);
56
65
  void this._logger.info("Validating package...");
57
66
  if (!(await this.validate())) {
58
67
  void this._logger.debug("Failed to validate yo, cleaning up...");
@@ -116,15 +125,15 @@ class YoChecker {
116
125
  this._logger.error(`Failed to clean up path: ${this.getDefaultInstallPath()}, error: ${err.toString()}`);
117
126
  }
118
127
  }
119
- async installYo() {
128
+ async installYo(targetVersion) {
129
+ const version = targetVersion !== null && targetVersion !== void 0 ? targetVersion : constants_1.Constants.LatestVersion;
120
130
  try {
121
- const version = constants_1.Constants.LatestVersion;
122
131
  await fs_extra_1.default.ensureDir(path.join(this.getDefaultInstallPath(), "node_modules"));
123
132
  await cpUtils_1.cpUtils.executeCommand(undefined, this._logger, { timeout: timeout, shell: false }, utils_1.getExecCommand("npm"), "install", `${name}@${version}`, "--prefix", `${this.getDefaultInstallPath()}`, "--no-audit", "--global-style");
124
133
  await fs_extra_1.default.ensureFile(this.getSentinelPath());
125
134
  }
126
135
  catch (error) {
127
- void this._logger.error("Failed to execute npm install yo");
136
+ void this._logger.error(`Failed to execute npm install ${displayName}@${version}`);
128
137
  throw error_1.NpmInstallError(error);
129
138
  }
130
139
  }
@@ -1 +1 @@
1
- {"version":3,"file":"yoChecker.js","sourceRoot":"","sources":["../../../../../src/component/generator/spfx/depsChecker/yoChecker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yoChecker.js","sourceRoot":"","sources":["../../../../../src/component/generator/spfx/depsChecker/yoChecker.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,gEAA0B;AAC1B,mDAA6B;AAC7B,+CAAyB;AACzB,wDAUgC;AAEhC,gEAA4D;AAC5D,8DAA8E;AAC9E,oCAAoE;AACpE,0EAAuE;AACvE,0CAAuD;AACvD,kDAA+C;AAE/C,MAAM,IAAI,GAAG,qBAAS,CAAC,iBAAiB,CAAC;AACzC,MAAM,WAAW,GAAG,GAAG,IAAI,EAAE,CAAC;AAC9B,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9B,MAAa,SAAS;IAGpB,YAAY,MAAmB;QAC7B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAC3B,GAAY,EACZ,aAAqB;QAErB,kCAAe,CAAC,gBAAgB,CAAC,GAAG,EAAE,iCAAe,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI;YACF,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,IAAI,aAAa,2BAA2B,CAAC,CAAC;YACnF,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAClC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,WAAW,IAAI,aAAa,EAAE,CAAC,CAAC;YAEjF,kCAAe,CAAC,gBAAgB,CAAC,GAAG,EAAE,iCAAe,CAAC,QAAQ,CAAC,CAAC;SACjE;QAAC,OAAO,KAAK,EAAE;YACd,kCAAe,CAAC,cAAc,CAC5B,GAAG,EACH,iCAAe,CAAC,QAAQ,EACxB,KAAgC,EAChC;gBACE,CAAC,mCAAiB,CAAC,cAAc,CAAC,EAAG,KAAiC,CAAC,IAAI;aAC5E,CACF,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB,qBAAqB,WAAW,IAAI,aAAa,cAAc,KAAK,CAAC,QAAQ,EAAY,GAAG,CAC7F,CAAC;YACF,OAAO,iBAAG,CAAC,KAAgC,CAAC,CAAC;SAC9C;QAED,OAAO,gBAAE,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,yBAAyB;QACpC,IAAI;YACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5C,MAAM,WAAW,GAAG,MAAM,kBAAE,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;YAChE,OAAO,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;SAC5C;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC5B,IAAI;YACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACzD,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,CAAC,mBAAmB,IAAI,SAAS,KAAK,mBAAmB,CAAC;SACnE;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,aAAqB;QACxC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAEpC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAChD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;YAC5B,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;YACjE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,+BAAuB,CAAC,IAAI,CAAC,CAAC;SACrC;IACH,CAAC;IAEM,aAAa;QAClB,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACjD,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;IACvE,CAAC;IAEM,KAAK,CAAC,4BAA4B,CACvC,gBAAyB;QAEzB,OAAO,MAAM,aAAK,CAAC,4BAA4B,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,CAAC,CAAC,CAAC;IAC7F,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,gBAAwB;QACrD,OAAO,MAAM,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAC7E,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,OAAO,MAAM,kBAAE,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACrD,CAAC;IAEO,qBAAqB;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,8BAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IAEO,eAAe;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,8BAAgB,EAAE,EAAE,aAAa,CAAC,CAAC;IACxE,CAAC;IAEO,KAAK,CAAC,YAAY;;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAC3B,IAAI,CAAC,qBAAqB,EAAE,EAC5B,cAAc,EACd,IAAI,EACJ,cAAc,CACf,CAAC;QACF,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;YACpC,MAAM,WAAW,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACnD,OAAO,MAAA,WAAW,CAAC,OAAO,mCAAI,SAAS,CAAC;SACzC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI;YACF,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,8BAAgB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACvF,IAAI,kBAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;gBAClC,MAAM,kBAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;gBACnC,MAAM,kBAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;aACjC;YAED,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;YAChD,MAAM,kBAAE,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;YAExC,MAAM,aAAa,GAAG;gBACpB,IAAI;gBACJ,QAAQ;gBACR,QAAQ;gBACR,aAAa;gBACb,iBAAiB;gBACjB,iBAAiB;aAClB,CAAC;YACF,MAAM,OAAO,CAAC,GAAG,CACf,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;gBACrC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,UAAU,CAAC,CAAC;gBAC3E,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;oBACvC,MAAM,kBAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;iBACjC;YACH,CAAC,CAAC,CACH,CAAC;SACH;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,CAAC,OAAO,CAAC,KAAK,CAChB,4BAA4B,IAAI,CAAC,qBAAqB,EAAE,YACtD,GAAG,CAAC,QAAQ,EACd,EAAE,CACH,CAAC;SACH;IACH,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,aAAqB;QAC3C,MAAM,OAAO,GAAG,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,qBAAS,CAAC,aAAa,CAAC;QACzD,IAAI;YACF,MAAM,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;YAC5E,MAAM,iBAAO,CAAC,cAAc,CAC1B,SAAS,EACT,IAAI,CAAC,OAAO,EACZ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAClC,sBAAc,CAAC,KAAK,CAAC,EACrB,SAAS,EACT,GAAG,IAAI,IAAI,OAAO,EAAE,EACpB,UAAU,EACV,GAAG,IAAI,CAAC,qBAAqB,EAAE,EAAE,EACjC,YAAY,EACZ,gBAAgB,CACjB,CAAC;YAEF,MAAM,kBAAE,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;SAC7C;QAAC,OAAO,KAAK,EAAE;YACd,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iCAAiC,WAAW,IAAI,OAAO,EAAE,CAAC,CAAC;YACnF,MAAM,uBAAe,CAAC,KAAc,CAAC,CAAC;SACvC;IACH,CAAC;CACF;AAzKD,8BAyKC"}
@@ -4,10 +4,12 @@ export declare function NpmInstallError(error: Error): SystemError;
4
4
  export declare function DependencyValidateError(dependency: string): SystemError;
5
5
  export declare function DevEnvironmentSetupError(): UserError;
6
6
  export declare function LatestPackageInstallError(): SystemError;
7
+ export declare function PackageTargetVersionInstallError(packageName: string, version: string): SystemError;
7
8
  export declare function YoGeneratorScaffoldError(): UserError;
8
9
  export declare function CopyExistingSPFxSolutionError(e: Error): UserError;
9
10
  export declare function RetrieveSPFxInfoError(): UserError;
10
11
  export declare function UpdateSPFxTemplateError(e: Error): UserError;
11
12
  export declare function ImportSPFxSolutionError(e: Error): UserError;
12
13
  export declare function PathAlreadyExistsError(path: string): UserError;
14
+ export declare function SolutionVersionMissingError(path: string): UserError;
13
15
  //# sourceMappingURL=error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../../src/component/generator/spfx/error.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAIhE,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,WAAW,CAUnE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,CAOzD;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,CAOvE;AAED,wBAAgB,wBAAwB,IAAI,SAAS,CAQpD;AAED,wBAAgB,yBAAyB,IAAI,WAAW,CAgBvD;AAED,wBAAgB,wBAAwB,IAAI,SAAS,CAcpD;AAED,wBAAgB,6BAA6B,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,CAQjE;AAED,wBAAgB,qBAAqB,IAAI,SAAS,CAQjD;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,CAQ3D;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,CAQ3D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAO9D"}
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../../src/component/generator/spfx/error.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAIhE,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,WAAW,CAUnE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,CAOzD;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,CAOvE;AAED,wBAAgB,wBAAwB,IAAI,SAAS,CAQpD;AAED,wBAAgB,yBAAyB,IAAI,WAAW,CAgBvD;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,WAAW,CAmBb;AAED,wBAAgB,wBAAwB,IAAI,SAAS,CAcpD;AAED,wBAAgB,6BAA6B,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,CAQjE;AAED,wBAAgB,qBAAqB,IAAI,SAAS,CAQjD;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,CAQ3D;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,CAQ3D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAO9D;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAOnE"}
@@ -2,7 +2,7 @@
2
2
  // Licensed under the MIT license.
3
3
  "use strict";
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.PathAlreadyExistsError = exports.ImportSPFxSolutionError = exports.UpdateSPFxTemplateError = exports.RetrieveSPFxInfoError = exports.CopyExistingSPFxSolutionError = exports.YoGeneratorScaffoldError = exports.LatestPackageInstallError = exports.DevEnvironmentSetupError = exports.DependencyValidateError = exports.NpmInstallError = exports.ScaffoldError = void 0;
5
+ exports.SolutionVersionMissingError = exports.PathAlreadyExistsError = exports.ImportSPFxSolutionError = exports.UpdateSPFxTemplateError = exports.RetrieveSPFxInfoError = exports.CopyExistingSPFxSolutionError = exports.YoGeneratorScaffoldError = exports.PackageTargetVersionInstallError = exports.LatestPackageInstallError = exports.DevEnvironmentSetupError = exports.DependencyValidateError = exports.NpmInstallError = exports.ScaffoldError = void 0;
6
6
  const teamsfx_api_1 = require("@microsoft/teamsfx-api");
7
7
  const constants_1 = require("./utils/constants");
8
8
  const localizeUtils_1 = require("../../../common/localizeUtils");
@@ -42,6 +42,12 @@ function LatestPackageInstallError() {
42
42
  return new teamsfx_api_1.SystemError(constants_1.Constants.PLUGIN_NAME, "LatestPackageInstallFailed", localizeUtils_1.getDefaultString("plugins.spfx.error.installLatestDependencyError", fxFolderPath, constants_1.Constants.SetUpDevEnvironmentHelpLink), localizeUtils_1.getLocalizedString("plugins.spfx.error.installLatestDependencyError", fxFolderPath, constants_1.Constants.SetUpDevEnvironmentHelpLink));
43
43
  }
44
44
  exports.LatestPackageInstallError = LatestPackageInstallError;
45
+ function PackageTargetVersionInstallError(packageName, version) {
46
+ const fxFolderPath = "HOME/.fx";
47
+ const packageInfo = `${packageName}@${version}`;
48
+ return new teamsfx_api_1.SystemError(constants_1.Constants.PLUGIN_NAME, "PackageTargetVersionInstallError", localizeUtils_1.getDefaultString("plugins.spfx.error.installDependencyError", fxFolderPath, constants_1.Constants.AddWebpartHelpLink, packageInfo), localizeUtils_1.getLocalizedString("plugins.spfx.error.installDependencyError", fxFolderPath, constants_1.Constants.AddWebpartHelpLink, packageInfo));
49
+ }
50
+ exports.PackageTargetVersionInstallError = PackageTargetVersionInstallError;
45
51
  function YoGeneratorScaffoldError() {
46
52
  return new teamsfx_api_1.UserError({
47
53
  source: constants_1.Constants.PLUGIN_NAME,
@@ -101,4 +107,13 @@ function PathAlreadyExistsError(path) {
101
107
  });
102
108
  }
103
109
  exports.PathAlreadyExistsError = PathAlreadyExistsError;
110
+ function SolutionVersionMissingError(path) {
111
+ return new teamsfx_api_1.UserError({
112
+ source: constants_1.Constants.PLUGIN_NAME,
113
+ name: "SolutionVersionMissing",
114
+ message: localizeUtils_1.getDefaultString("plugins.spfx.addWebPart.cannotFindSolutionVersion", path),
115
+ displayMessage: localizeUtils_1.getLocalizedString("plugins.spfx.addWebPart.cannotFindSolutionVersion", path),
116
+ });
117
+ }
118
+ exports.SolutionVersionMissingError = SolutionVersionMissingError;
104
119
  //# sourceMappingURL=error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../src/component/generator/spfx/error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../src/component/generator/spfx/error.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,9 @@ export declare class SPFxGenerator {
6
6
  private static importSPFxProject;
7
7
  static doYeomanScaffold(context: Context, inputs: Inputs, destinationPath: string): Promise<Result<string, FxError>>;
8
8
  static getSolutionName(spfxFolder: string): Promise<string | undefined>;
9
+ private static getSolutionVersion;
10
+ private static ensureLocalDependencies;
11
+ private static shouldAddWebPartWithLocalDependencies;
9
12
  private static copySPFxSolution;
10
13
  private static getWebpartManifest;
11
14
  private static updateSPFxTemplate;
@@ -1 +1 @@
1
- {"version":3,"file":"spfxGenerator.d.ts","sourceRoot":"","sources":["../../../../src/component/generator/spfx/spfxGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,OAAO,EAEP,OAAO,EACP,MAAM,EAKN,MAAM,EAIP,MAAM,wBAAwB,CAAC;AAahC,OAAO,EAAE,aAAa,EAAqB,MAAM,oCAAoC,CAAC;AAqBtF,qBAAa,aAAa;WASJ,QAAQ,CAC1B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;mBAajB,cAAc;mBAmBd,iBAAiB;WA8GlB,gBAAgB,CAClC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;WAqLf,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;mBAa/D,gBAAgB;mBAehB,kBAAkB;mBAoClB,kBAAkB;CAqKxC"}
1
+ {"version":3,"file":"spfxGenerator.d.ts","sourceRoot":"","sources":["../../../../src/component/generator/spfx/spfxGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,OAAO,EAEP,OAAO,EACP,MAAM,EAMN,MAAM,EAIP,MAAM,wBAAwB,CAAC;AAahC,OAAO,EAAE,aAAa,EAAqB,MAAM,oCAAoC,CAAC;AAuBtF,qBAAa,aAAa;WASJ,QAAQ,CAC1B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;mBAajB,cAAc;mBAmBd,iBAAiB;WA8GlB,gBAAgB,CAClC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;WAgMf,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;mBAa/D,kBAAkB;mBAYlB,uBAAuB;mBAsEvB,qCAAqC;mBA0HrC,gBAAgB;mBAehB,kBAAkB;mBAoClB,kBAAkB;CAqKxC"}
@@ -120,7 +120,7 @@ class SPFxGenerator {
120
120
  var _a, _b;
121
121
  const ui = context.userInteraction;
122
122
  const progressHandler = await progress_helper_1.ProgressHelper.startScaffoldProgressHandler(ui, inputs.stage == teamsfx_api_1.Stage.addWebpart);
123
- const shouldInstallLocally = inputs[questionNames_1.QuestionNames.SPFxInstallPackage] === create_1.SPFxVersionOptionIds.installLocally;
123
+ let shouldInstallLocally = inputs[questionNames_1.QuestionNames.SPFxInstallPackage] === create_1.SPFxVersionOptionIds.installLocally;
124
124
  try {
125
125
  const webpartName = inputs[questionNames_1.QuestionNames.SPFxWebpartName];
126
126
  const framework = inputs[questionNames_1.QuestionNames.SPFxFramework];
@@ -131,28 +131,28 @@ class SPFxGenerator {
131
131
  await (progressHandler === null || progressHandler === void 0 ? void 0 : progressHandler.next(localizeUtils_1.getLocalizedString("plugins.spfx.scaffold.dependencyCheck")));
132
132
  const yoChecker = new yoChecker_1.YoChecker(context.logProvider);
133
133
  const spGeneratorChecker = new generatorChecker_1.GeneratorChecker(context.logProvider);
134
- if (shouldInstallLocally) {
135
- const latestYoInstalled = await yoChecker.isLatestInstalled();
136
- const latestGeneratorInstalled = await spGeneratorChecker.isLatestInstalled(inputs.latestSpfxPackageVersion);
137
- if (!latestYoInstalled || !latestGeneratorInstalled) {
138
- await (progressHandler === null || progressHandler === void 0 ? void 0 : progressHandler.next(localizeUtils_1.getLocalizedString("plugins.spfx.scaffold.dependencyInstall")));
139
- if (!latestYoInstalled) {
140
- const yoRes = await yoChecker.ensureLatestDependency(context);
141
- if (yoRes.isErr()) {
142
- throw error_2.LatestPackageInstallError();
143
- }
144
- }
145
- if (!latestGeneratorInstalled) {
146
- const spGeneratorRes = await spGeneratorChecker.ensureLatestDependency(context);
147
- if (spGeneratorRes.isErr()) {
148
- throw error_2.LatestPackageInstallError();
149
- }
150
- }
134
+ let targetVersion = constants_2.Constants.LatestVersion;
135
+ let localVersion = undefined;
136
+ if (isAddSPFx) {
137
+ const yoInfoPath = path.join(inputs[questionNames_1.QuestionNames.SPFxFolder], constants_2.Constants.YO_RC_FILE);
138
+ targetVersion = await this.getSolutionVersion(yoInfoPath);
139
+ if (!targetVersion) {
140
+ context.logProvider.error(localizeUtils_1.getLocalizedString("plugins.spfx.addWebPart.cannotFindSolutionVersion", yoInfoPath));
141
+ throw error_2.SolutionVersionMissingError(yoInfoPath);
151
142
  }
143
+ const versions = await Promise.all([
144
+ spGeneratorChecker.findLocalInstalledVersion(),
145
+ spGeneratorChecker.findGloballyInstalledVersion(undefined, false),
146
+ ]);
147
+ localVersion = versions[0];
148
+ shouldInstallLocally = await this.shouldAddWebPartWithLocalDependencies(targetVersion, versions[1], localVersion, context);
149
+ }
150
+ if (shouldInstallLocally) {
151
+ await this.ensureLocalDependencies(targetVersion, localVersion, inputs, context, yoChecker, spGeneratorChecker, progressHandler);
152
152
  }
153
153
  else {
154
154
  const isLowerVersion = !!inputs.globalSpfxPackageVersion &&
155
- semver_1.default.lte(inputs.globalSpfxPackageVersion, constants_2.Constants.RecommendedLowestSpfxVersion.substring(1));
155
+ semver_1.default.lt(inputs.globalSpfxPackageVersion, constants_2.Constants.RecommendedLowestSpfxVersion.substring(1));
156
156
  if (isLowerVersion) {
157
157
  context.telemetryReporter.sendTelemetryEvent(telemetryEvents_1.TelemetryEvents.UseNotRecommendedVersion);
158
158
  }
@@ -249,7 +249,7 @@ class SPFxGenerator {
249
249
  }
250
250
  }
251
251
  static async getSolutionName(spfxFolder) {
252
- const yoInfoPath = path.join(spfxFolder, ".yo-rc.json");
252
+ const yoInfoPath = path.join(spfxFolder, constants_2.Constants.YO_RC_FILE);
253
253
  if (await fs_extra_1.default.pathExists(yoInfoPath)) {
254
254
  const yoInfo = await fs_extra_1.default.readJson(yoInfoPath);
255
255
  if (yoInfo["@microsoft/generator-sharepoint"]) {
@@ -261,6 +261,135 @@ class SPFxGenerator {
261
261
  }
262
262
  return undefined;
263
263
  }
264
+ static async getSolutionVersion(yoInfoPath) {
265
+ if (await fs_extra_1.default.pathExists(yoInfoPath)) {
266
+ const yoInfo = await fs_extra_1.default.readJson(yoInfoPath);
267
+ if (yoInfo["@microsoft/generator-sharepoint"]) {
268
+ return yoInfo["@microsoft/generator-sharepoint"][constants_2.Constants.YO_RC_VERSION];
269
+ }
270
+ }
271
+ else {
272
+ throw new error_1.FileNotFoundError(constants_2.Constants.PLUGIN_NAME, yoInfoPath);
273
+ }
274
+ return "";
275
+ }
276
+ static async ensureLocalDependencies(targetSPFxVersion, localSPFxVersion, inputs, context, yoChecker, spGeneratorChecker, progressHandler) {
277
+ let needInstallYo = false;
278
+ let needInstallGenerator = false;
279
+ const isAddWebPart = targetSPFxVersion !== constants_2.Constants.LatestVersion;
280
+ // yo
281
+ if (!isAddWebPart) {
282
+ const latestYoInstalled = await yoChecker.isLatestInstalled();
283
+ needInstallYo = !latestYoInstalled;
284
+ }
285
+ else {
286
+ const localYoVersion = await yoChecker.findLocalInstalledVersion();
287
+ needInstallYo = !localYoVersion;
288
+ }
289
+ // spfx generator
290
+ if (!isAddWebPart) {
291
+ const latestGeneratorInstalled = await spGeneratorChecker.isLatestInstalled(inputs.latestSpfxPackageVersion);
292
+ needInstallGenerator = !latestGeneratorInstalled;
293
+ }
294
+ else {
295
+ // we have check and confirmed with user before install/upgrade dependencies for user
296
+ needInstallGenerator = !localSPFxVersion || semver_1.default.lt(localSPFxVersion, targetSPFxVersion);
297
+ }
298
+ if (needInstallYo || needInstallGenerator) {
299
+ await (progressHandler === null || progressHandler === void 0 ? void 0 : progressHandler.next(localizeUtils_1.getLocalizedString("plugins.spfx.scaffold.dependencyInstall")));
300
+ if (needInstallYo) {
301
+ const yoRes = await yoChecker.ensureDependency(context, constants_2.Constants.LatestVersion);
302
+ if (yoRes.isErr()) {
303
+ if (isAddWebPart) {
304
+ throw error_2.PackageTargetVersionInstallError(constants_2.Constants.YeomanPackageName, constants_2.Constants.LatestVersion);
305
+ }
306
+ else {
307
+ throw error_2.LatestPackageInstallError();
308
+ }
309
+ }
310
+ }
311
+ if (needInstallGenerator) {
312
+ const spGeneratorRes = await spGeneratorChecker.ensureDependency(context, targetSPFxVersion);
313
+ if (spGeneratorRes.isErr()) {
314
+ if (isAddWebPart) {
315
+ throw error_2.PackageTargetVersionInstallError(constants_2.Constants.GeneratorPackageName, targetSPFxVersion);
316
+ }
317
+ else {
318
+ throw error_2.LatestPackageInstallError();
319
+ }
320
+ }
321
+ }
322
+ }
323
+ }
324
+ // return shouldUseLocal
325
+ static async shouldAddWebPartWithLocalDependencies(solutionVersion, globalVersion, localVersion, context) {
326
+ if (globalVersion === solutionVersion) {
327
+ // use globally installed pacakge to add web part
328
+ context.telemetryReporter.sendTelemetryEvent(telemetryEvents_1.TelemetryEvents.CheckAddWebPartPackage, {
329
+ [telemetryEvents_1.TelemetryProperty.PackageSource]: "global",
330
+ });
331
+ return false;
332
+ }
333
+ if (localVersion === solutionVersion) {
334
+ // use locally installed package to add web part
335
+ context.telemetryReporter.sendTelemetryEvent(telemetryEvents_1.TelemetryEvents.CheckAddWebPartPackage, {
336
+ [telemetryEvents_1.TelemetryProperty.PackageSource]: "local",
337
+ [telemetryEvents_1.TelemetryProperty.UserAction]: "none",
338
+ });
339
+ return true;
340
+ }
341
+ const displayedSolutionVersion = `v${solutionVersion}`;
342
+ const displayedLocalVersion = localVersion ? `v${localVersion}` : undefined;
343
+ const displayedGlobalVersion = globalVersion ? `v${globalVersion}` : undefined;
344
+ let userAnswer;
345
+ let continueText;
346
+ let defaultContinueText;
347
+ if (!localVersion) {
348
+ // ask user to confirm to install locally
349
+ continueText = localizeUtils_1.getLocalizedString("plugins.spfx.addWebPart.install");
350
+ defaultContinueText = localizeUtils_1.getDefaultString("plugins.spfx.addWebPart.install");
351
+ const res = await context.userInteraction.showMessage("info", localizeUtils_1.getLocalizedString("plugins.spfx.addWebPart.confirmInstall", displayedSolutionVersion, displayedSolutionVersion), true, continueText);
352
+ userAnswer = res.isOk() ? res.value : undefined;
353
+ }
354
+ else if (semver_1.default.lt(localVersion, solutionVersion)) {
355
+ // ask user to confirm to upgrade local SPFx
356
+ continueText = localizeUtils_1.getLocalizedString("plugins.spfx.addWebPart.upgrade");
357
+ defaultContinueText = localizeUtils_1.getDefaultString("plugins.spfx.addWebPart.upgrade");
358
+ const res = await context.userInteraction.showMessage("info", localizeUtils_1.getLocalizedString("plugins.spfx.addWebPart.confirmUpgrade", displayedLocalVersion, displayedSolutionVersion, displayedSolutionVersion), true, continueText);
359
+ userAnswer = res.isOk() ? res.value : undefined;
360
+ }
361
+ else {
362
+ // localVersion > solutionVersion
363
+ // ask user to confirm to continue, learn more or cancel
364
+ continueText = localizeUtils_1.getLocalizedString("plugins.spfx.addWebPart.versionMismatch.continue");
365
+ defaultContinueText = localizeUtils_1.getDefaultString("plugins.spfx.addWebPart.versionMismatch.continue");
366
+ let userSelected;
367
+ const helpText = localizeUtils_1.getLocalizedString("plugins.spfx.addWebPart.versionMismatch.help");
368
+ do {
369
+ const res = await context.userInteraction.showMessage("info", localizeUtils_1.getLocalizedString("plugins.spfx.addWebPart.versionMismatch.continueConfirm", displayedSolutionVersion, displayedLocalVersion), true, helpText, continueText);
370
+ userSelected = res.isOk() ? res.value : undefined;
371
+ if (userSelected === helpText) {
372
+ context.telemetryReporter.sendTelemetryEvent(telemetryEvents_1.TelemetryEvents.LearnMoreVersionMismatch);
373
+ void context.userInteraction.openUrl(constants_2.Constants.AddWebpartHelpLink);
374
+ }
375
+ } while (userSelected === helpText);
376
+ userAnswer = userSelected;
377
+ context.logProvider.log(teamsfx_api_1.LogLevel.Warning, displayedGlobalVersion
378
+ ? localizeUtils_1.getLocalizedString("plugins.spfx.addWebPart.versionMismatch.output", displayedSolutionVersion, displayedGlobalVersion, displayedLocalVersion, displayedLocalVersion, constants_2.Constants.AddWebpartHelpLink)
379
+ : localizeUtils_1.getLocalizedString("plugins.spfx.addWebPart.versionMismatch.localOnly.output", displayedSolutionVersion, displayedLocalVersion, displayedLocalVersion, constants_2.Constants.AddWebpartHelpLink));
380
+ }
381
+ context.telemetryReporter.sendTelemetryEvent(telemetryEvents_1.TelemetryEvents.CheckAddWebPartPackage, {
382
+ [telemetryEvents_1.TelemetryProperty.PackageSource]: "local",
383
+ [telemetryEvents_1.TelemetryProperty.UserAction]: defaultContinueText,
384
+ [telemetryEvents_1.TelemetryProperty.ConfirmAddWebPartResult]: !userAnswer ? "Cancel" : defaultContinueText,
385
+ });
386
+ if (userAnswer !== continueText) {
387
+ throw new error_1.UserCancelError(constants_2.Constants.PLUGIN_NAME);
388
+ }
389
+ else {
390
+ return true;
391
+ }
392
+ }
264
393
  static async copySPFxSolution(src, dest) {
265
394
  try {
266
395
  await fs_extra_1.default.ensureDir(dest);