@microsoft/apps-cli 0.0.1 → 0.4.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 (334) hide show
  1. package/README.md +281 -1
  2. package/dist/ArgumentProvider.d.ts +102 -0
  3. package/dist/ArgumentProvider.d.ts.map +1 -0
  4. package/dist/ArgumentProvider.js +376 -0
  5. package/dist/ArgumentProvider.js.map +1 -0
  6. package/dist/Authentication/NodeMsalAuthenticationProvider.d.ts +18 -0
  7. package/dist/Authentication/NodeMsalAuthenticationProvider.d.ts.map +1 -0
  8. package/dist/Authentication/NodeMsalAuthenticationProvider.js +99 -0
  9. package/dist/Authentication/NodeMsalAuthenticationProvider.js.map +1 -0
  10. package/dist/Authentication/OrchardAuthenticationProvider.d.ts +13 -0
  11. package/dist/Authentication/OrchardAuthenticationProvider.d.ts.map +1 -0
  12. package/dist/Authentication/OrchardAuthenticationProvider.js +30 -0
  13. package/dist/Authentication/OrchardAuthenticationProvider.js.map +1 -0
  14. package/dist/Authentication/ServicePrincipalAuthenticationProvider.d.ts +23 -0
  15. package/dist/Authentication/ServicePrincipalAuthenticationProvider.d.ts.map +1 -0
  16. package/dist/Authentication/ServicePrincipalAuthenticationProvider.js +60 -0
  17. package/dist/Authentication/ServicePrincipalAuthenticationProvider.js.map +1 -0
  18. package/dist/Bin.d.ts +6 -0
  19. package/dist/Bin.d.ts.map +1 -0
  20. package/dist/Bin.js +7 -0
  21. package/dist/Bin.js.map +1 -0
  22. package/dist/Cli.d.ts +2 -0
  23. package/dist/Cli.d.ts.map +1 -0
  24. package/dist/Cli.js +95 -0
  25. package/dist/Cli.js.map +1 -0
  26. package/dist/CliSettings.d.ts +14 -0
  27. package/dist/CliSettings.d.ts.map +1 -0
  28. package/dist/CliSettings.js +76 -0
  29. package/dist/CliSettings.js.map +1 -0
  30. package/dist/CliUtils.d.ts +92 -0
  31. package/dist/CliUtils.d.ts.map +1 -0
  32. package/dist/CliUtils.js +218 -0
  33. package/dist/CliUtils.js.map +1 -0
  34. package/dist/Constants/CliConstants.d.ts +6 -0
  35. package/dist/Constants/CliConstants.d.ts.map +1 -0
  36. package/dist/Constants/CliConstants.js +6 -0
  37. package/dist/Constants/CliConstants.js.map +1 -0
  38. package/dist/Constants/CommandRegistry.d.ts +23 -0
  39. package/dist/Constants/CommandRegistry.d.ts.map +1 -0
  40. package/dist/Constants/CommandRegistry.js +197 -0
  41. package/dist/Constants/CommandRegistry.js.map +1 -0
  42. package/dist/Constants/HelpStrings.d.ts +329 -0
  43. package/dist/Constants/HelpStrings.d.ts.map +1 -0
  44. package/dist/Constants/HelpStrings.js +451 -0
  45. package/dist/Constants/HelpStrings.js.map +1 -0
  46. package/dist/Constants.d.ts +10 -0
  47. package/dist/Constants.d.ts.map +1 -0
  48. package/dist/Constants.js +18 -0
  49. package/dist/Constants.js.map +1 -0
  50. package/dist/Errors/CliError.d.ts +5 -0
  51. package/dist/Errors/CliError.d.ts.map +1 -0
  52. package/dist/Errors/CliError.js +7 -0
  53. package/dist/Errors/CliError.js.map +1 -0
  54. package/dist/FS/CliFs.d.ts +41 -0
  55. package/dist/FS/CliFs.d.ts.map +1 -0
  56. package/dist/FS/CliFs.js +136 -0
  57. package/dist/FS/CliFs.js.map +1 -0
  58. package/dist/HttpClient/CliHttpClient.d.ts +24 -0
  59. package/dist/HttpClient/CliHttpClient.d.ts.map +1 -0
  60. package/dist/HttpClient/CliHttpClient.js +122 -0
  61. package/dist/HttpClient/CliHttpClient.js.map +1 -0
  62. package/dist/HttpClient/OrchardProxy.d.ts +11 -0
  63. package/dist/HttpClient/OrchardProxy.d.ts.map +1 -0
  64. package/dist/HttpClient/OrchardProxy.js +25 -0
  65. package/dist/HttpClient/OrchardProxy.js.map +1 -0
  66. package/dist/HttpClient/Proxy.d.ts +7 -0
  67. package/dist/HttpClient/Proxy.d.ts.map +1 -0
  68. package/dist/HttpClient/Proxy.js +5 -0
  69. package/dist/HttpClient/Proxy.js.map +1 -0
  70. package/dist/Logger/CliLogger.d.ts +35 -0
  71. package/dist/Logger/CliLogger.d.ts.map +1 -0
  72. package/dist/Logger/CliLogger.js +237 -0
  73. package/dist/Logger/CliLogger.js.map +1 -0
  74. package/dist/Logger/ConsoleWriter.d.ts +15 -0
  75. package/dist/Logger/ConsoleWriter.d.ts.map +1 -0
  76. package/dist/Logger/ConsoleWriter.js +45 -0
  77. package/dist/Logger/ConsoleWriter.js.map +1 -0
  78. package/dist/Logger/Constants.d.ts +6 -0
  79. package/dist/Logger/Constants.d.ts.map +1 -0
  80. package/dist/Logger/Constants.js +15 -0
  81. package/dist/Logger/Constants.js.map +1 -0
  82. package/dist/Logger/LoggerSettings.d.ts +19 -0
  83. package/dist/Logger/LoggerSettings.d.ts.map +1 -0
  84. package/dist/Logger/LoggerSettings.js +114 -0
  85. package/dist/Logger/LoggerSettings.js.map +1 -0
  86. package/dist/Logger/OneDSWriter.d.ts +22 -0
  87. package/dist/Logger/OneDSWriter.d.ts.map +1 -0
  88. package/dist/Logger/OneDSWriter.js +129 -0
  89. package/dist/Logger/OneDSWriter.js.map +1 -0
  90. package/dist/Logger/Scrubber/ScrubCustomDimensions.d.ts +5 -0
  91. package/dist/Logger/Scrubber/ScrubCustomDimensions.d.ts.map +1 -0
  92. package/dist/Logger/Scrubber/ScrubCustomDimensions.js +46 -0
  93. package/dist/Logger/Scrubber/ScrubCustomDimensions.js.map +1 -0
  94. package/dist/Logger/Scrubber/ScrubCustomDimensionsConfig.d.ts +27 -0
  95. package/dist/Logger/Scrubber/ScrubCustomDimensionsConfig.d.ts.map +1 -0
  96. package/dist/Logger/Scrubber/ScrubCustomDimensionsConfig.js +168 -0
  97. package/dist/Logger/Scrubber/ScrubCustomDimensionsConfig.js.map +1 -0
  98. package/dist/Logger/Scrubber/ScrubUtils.d.ts +8 -0
  99. package/dist/Logger/Scrubber/ScrubUtils.d.ts.map +1 -0
  100. package/dist/Logger/Scrubber/ScrubUtils.js +34 -0
  101. package/dist/Logger/Scrubber/ScrubUtils.js.map +1 -0
  102. package/dist/Types/Argument.types.d.ts +27 -0
  103. package/dist/Types/Argument.types.d.ts.map +1 -0
  104. package/dist/Types/Argument.types.js +5 -0
  105. package/dist/Types/Argument.types.js.map +1 -0
  106. package/dist/Types/Cli.types.d.ts +32 -0
  107. package/dist/Types/Cli.types.d.ts.map +1 -0
  108. package/dist/Types/Cli.types.js +5 -0
  109. package/dist/Types/Cli.types.js.map +1 -0
  110. package/dist/Types/Command.types.d.ts +52 -0
  111. package/dist/Types/Command.types.d.ts.map +1 -0
  112. package/dist/Types/Command.types.js +8 -0
  113. package/dist/Types/Command.types.js.map +1 -0
  114. package/dist/Types/Datasource.types.d.ts +43 -0
  115. package/dist/Types/Datasource.types.d.ts.map +1 -0
  116. package/dist/Types/Datasource.types.js +5 -0
  117. package/dist/Types/Datasource.types.js.map +1 -0
  118. package/dist/Types/LoggerTypes.types.d.ts +17 -0
  119. package/dist/Types/LoggerTypes.types.d.ts.map +1 -0
  120. package/dist/Types/LoggerTypes.types.js +5 -0
  121. package/dist/Types/LoggerTypes.types.js.map +1 -0
  122. package/dist/Utils/BuildVerbDescriptionTable.d.ts +19 -0
  123. package/dist/Utils/BuildVerbDescriptionTable.d.ts.map +1 -0
  124. package/dist/Utils/BuildVerbDescriptionTable.js +87 -0
  125. package/dist/Utils/BuildVerbDescriptionTable.js.map +1 -0
  126. package/dist/Utils/ConsoleOutput.d.ts +80 -0
  127. package/dist/Utils/ConsoleOutput.d.ts.map +1 -0
  128. package/dist/Utils/ConsoleOutput.js +151 -0
  129. package/dist/Utils/ConsoleOutput.js.map +1 -0
  130. package/dist/Utils/DetectPackageManager.d.ts +9 -0
  131. package/dist/Utils/DetectPackageManager.d.ts.map +1 -0
  132. package/dist/Utils/DetectPackageManager.js +24 -0
  133. package/dist/Utils/DetectPackageManager.js.map +1 -0
  134. package/dist/Utils/EnhanceNetworkError.d.ts +14 -0
  135. package/dist/Utils/EnhanceNetworkError.d.ts.map +1 -0
  136. package/dist/Utils/EnhanceNetworkError.js +59 -0
  137. package/dist/Utils/EnhanceNetworkError.js.map +1 -0
  138. package/dist/Utils/EnvVars.d.ts +17 -0
  139. package/dist/Utils/EnvVars.d.ts.map +1 -0
  140. package/dist/Utils/EnvVars.js +38 -0
  141. package/dist/Utils/EnvVars.js.map +1 -0
  142. package/dist/Utils/GitCredentialConfig.d.ts +12 -0
  143. package/dist/Utils/GitCredentialConfig.d.ts.map +1 -0
  144. package/dist/Utils/GitCredentialConfig.js +32 -0
  145. package/dist/Utils/GitCredentialConfig.js.map +1 -0
  146. package/dist/Utils/GitUtils.d.ts +22 -0
  147. package/dist/Utils/GitUtils.d.ts.map +1 -0
  148. package/dist/Utils/GitUtils.js +35 -0
  149. package/dist/Utils/GitUtils.js.map +1 -0
  150. package/dist/Utils/Paging.d.ts +23 -0
  151. package/dist/Utils/Paging.d.ts.map +1 -0
  152. package/dist/Utils/Paging.js +67 -0
  153. package/dist/Utils/Paging.js.map +1 -0
  154. package/dist/Utils/ReadPackageJson.d.ts +9 -0
  155. package/dist/Utils/ReadPackageJson.d.ts.map +1 -0
  156. package/dist/Utils/ReadPackageJson.js +13 -0
  157. package/dist/Utils/ReadPackageJson.js.map +1 -0
  158. package/dist/Utils/ResolveCommand.d.ts +26 -0
  159. package/dist/Utils/ResolveCommand.d.ts.map +1 -0
  160. package/dist/Utils/ResolveCommand.js +62 -0
  161. package/dist/Utils/ResolveCommand.js.map +1 -0
  162. package/dist/Utils/RunCommand.d.ts +13 -0
  163. package/dist/Utils/RunCommand.d.ts.map +1 -0
  164. package/dist/Utils/RunCommand.js +35 -0
  165. package/dist/Utils/RunCommand.js.map +1 -0
  166. package/dist/Utils/Spinner.d.ts +15 -0
  167. package/dist/Utils/Spinner.d.ts.map +1 -0
  168. package/dist/Utils/Spinner.js +71 -0
  169. package/dist/Utils/Spinner.js.map +1 -0
  170. package/dist/Utils/zipBuildArtifact.d.ts +35 -0
  171. package/dist/Utils/zipBuildArtifact.d.ts.map +1 -0
  172. package/dist/Utils/zipBuildArtifact.js +100 -0
  173. package/dist/Utils/zipBuildArtifact.js.map +1 -0
  174. package/dist/Verbs/AddAction.d.ts +6 -0
  175. package/dist/Verbs/AddAction.d.ts.map +1 -0
  176. package/dist/Verbs/AddAction.js +87 -0
  177. package/dist/Verbs/AddAction.js.map +1 -0
  178. package/dist/Verbs/AddDataSource.d.ts +19 -0
  179. package/dist/Verbs/AddDataSource.d.ts.map +1 -0
  180. package/dist/Verbs/AddDataSource.js +174 -0
  181. package/dist/Verbs/AddDataSource.js.map +1 -0
  182. package/dist/Verbs/AddFlow.d.ts +12 -0
  183. package/dist/Verbs/AddFlow.d.ts.map +1 -0
  184. package/dist/Verbs/AddFlow.js +67 -0
  185. package/dist/Verbs/AddFlow.js.map +1 -0
  186. package/dist/Verbs/AddTable.d.ts +6 -0
  187. package/dist/Verbs/AddTable.d.ts.map +1 -0
  188. package/dist/Verbs/AddTable.js +163 -0
  189. package/dist/Verbs/AddTable.js.map +1 -0
  190. package/dist/Verbs/AuthStatus.d.ts +6 -0
  191. package/dist/Verbs/AuthStatus.d.ts.map +1 -0
  192. package/dist/Verbs/AuthStatus.js +18 -0
  193. package/dist/Verbs/AuthStatus.js.map +1 -0
  194. package/dist/Verbs/BuildMaafApp.d.ts +6 -0
  195. package/dist/Verbs/BuildMaafApp.d.ts.map +1 -0
  196. package/dist/Verbs/BuildMaafApp.js +97 -0
  197. package/dist/Verbs/BuildMaafApp.js.map +1 -0
  198. package/dist/Verbs/ConnectorHelpers.d.ts +37 -0
  199. package/dist/Verbs/ConnectorHelpers.d.ts.map +1 -0
  200. package/dist/Verbs/ConnectorHelpers.js +116 -0
  201. package/dist/Verbs/ConnectorHelpers.js.map +1 -0
  202. package/dist/Verbs/CreateMaafApp.d.ts +25 -0
  203. package/dist/Verbs/CreateMaafApp.d.ts.map +1 -0
  204. package/dist/Verbs/CreateMaafApp.js +565 -0
  205. package/dist/Verbs/CreateMaafApp.js.map +1 -0
  206. package/dist/Verbs/DeleteDataSource.d.ts +6 -0
  207. package/dist/Verbs/DeleteDataSource.d.ts.map +1 -0
  208. package/dist/Verbs/DeleteDataSource.js +106 -0
  209. package/dist/Verbs/DeleteDataSource.js.map +1 -0
  210. package/dist/Verbs/DeleteMaafApp.d.ts +23 -0
  211. package/dist/Verbs/DeleteMaafApp.d.ts.map +1 -0
  212. package/dist/Verbs/DeleteMaafApp.js +99 -0
  213. package/dist/Verbs/DeleteMaafApp.js.map +1 -0
  214. package/dist/Verbs/DeployMaafApp.d.ts +6 -0
  215. package/dist/Verbs/DeployMaafApp.d.ts.map +1 -0
  216. package/dist/Verbs/DeployMaafApp.js +96 -0
  217. package/dist/Verbs/DeployMaafApp.js.map +1 -0
  218. package/dist/Verbs/Dev.d.ts +6 -0
  219. package/dist/Verbs/Dev.d.ts.map +1 -0
  220. package/dist/Verbs/Dev.js +214 -0
  221. package/dist/Verbs/Dev.js.map +1 -0
  222. package/dist/Verbs/FindDataverseApi.d.ts +12 -0
  223. package/dist/Verbs/FindDataverseApi.d.ts.map +1 -0
  224. package/dist/Verbs/FindDataverseApi.js +101 -0
  225. package/dist/Verbs/FindDataverseApi.js.map +1 -0
  226. package/dist/Verbs/GetMaafApp.d.ts +6 -0
  227. package/dist/Verbs/GetMaafApp.d.ts.map +1 -0
  228. package/dist/Verbs/GetMaafApp.js +60 -0
  229. package/dist/Verbs/GetMaafApp.js.map +1 -0
  230. package/dist/Verbs/GetMaafBuildStatus.d.ts +6 -0
  231. package/dist/Verbs/GetMaafBuildStatus.d.ts.map +1 -0
  232. package/dist/Verbs/GetMaafBuildStatus.js +68 -0
  233. package/dist/Verbs/GetMaafBuildStatus.js.map +1 -0
  234. package/dist/Verbs/GetSettings.d.ts +12 -0
  235. package/dist/Verbs/GetSettings.d.ts.map +1 -0
  236. package/dist/Verbs/GetSettings.js +48 -0
  237. package/dist/Verbs/GetSettings.js.map +1 -0
  238. package/dist/Verbs/Init.d.ts +6 -0
  239. package/dist/Verbs/Init.d.ts.map +1 -0
  240. package/dist/Verbs/Init.js +172 -0
  241. package/dist/Verbs/Init.js.map +1 -0
  242. package/dist/Verbs/ListConnectionReferences.d.ts +6 -0
  243. package/dist/Verbs/ListConnectionReferences.d.ts.map +1 -0
  244. package/dist/Verbs/ListConnectionReferences.js +70 -0
  245. package/dist/Verbs/ListConnectionReferences.js.map +1 -0
  246. package/dist/Verbs/ListConnectorActions.d.ts +6 -0
  247. package/dist/Verbs/ListConnectorActions.d.ts.map +1 -0
  248. package/dist/Verbs/ListConnectorActions.js +79 -0
  249. package/dist/Verbs/ListConnectorActions.js.map +1 -0
  250. package/dist/Verbs/ListConnectors.d.ts +6 -0
  251. package/dist/Verbs/ListConnectors.d.ts.map +1 -0
  252. package/dist/Verbs/ListConnectors.js +66 -0
  253. package/dist/Verbs/ListConnectors.js.map +1 -0
  254. package/dist/Verbs/ListDatasets.d.ts +6 -0
  255. package/dist/Verbs/ListDatasets.d.ts.map +1 -0
  256. package/dist/Verbs/ListDatasets.js +83 -0
  257. package/dist/Verbs/ListDatasets.js.map +1 -0
  258. package/dist/Verbs/ListEnvironmentVariables.d.ts +14 -0
  259. package/dist/Verbs/ListEnvironmentVariables.d.ts.map +1 -0
  260. package/dist/Verbs/ListEnvironmentVariables.js +66 -0
  261. package/dist/Verbs/ListEnvironmentVariables.js.map +1 -0
  262. package/dist/Verbs/ListFlows.d.ts +13 -0
  263. package/dist/Verbs/ListFlows.d.ts.map +1 -0
  264. package/dist/Verbs/ListFlows.js +88 -0
  265. package/dist/Verbs/ListFlows.js.map +1 -0
  266. package/dist/Verbs/ListMaafApps.d.ts +71 -0
  267. package/dist/Verbs/ListMaafApps.d.ts.map +1 -0
  268. package/dist/Verbs/ListMaafApps.js +168 -0
  269. package/dist/Verbs/ListMaafApps.js.map +1 -0
  270. package/dist/Verbs/ListSqlStoredProcedures.d.ts +6 -0
  271. package/dist/Verbs/ListSqlStoredProcedures.d.ts.map +1 -0
  272. package/dist/Verbs/ListSqlStoredProcedures.js +84 -0
  273. package/dist/Verbs/ListSqlStoredProcedures.js.map +1 -0
  274. package/dist/Verbs/ListTables.d.ts +6 -0
  275. package/dist/Verbs/ListTables.d.ts.map +1 -0
  276. package/dist/Verbs/ListTables.js +95 -0
  277. package/dist/Verbs/ListTables.js.map +1 -0
  278. package/dist/Verbs/Login.d.ts +6 -0
  279. package/dist/Verbs/Login.d.ts.map +1 -0
  280. package/dist/Verbs/Login.js +28 -0
  281. package/dist/Verbs/Login.js.map +1 -0
  282. package/dist/Verbs/Logout.d.ts +6 -0
  283. package/dist/Verbs/Logout.d.ts.map +1 -0
  284. package/dist/Verbs/Logout.js +28 -0
  285. package/dist/Verbs/Logout.js.map +1 -0
  286. package/dist/Verbs/MaafAppPermissions.d.ts +23 -0
  287. package/dist/Verbs/MaafAppPermissions.d.ts.map +1 -0
  288. package/dist/Verbs/MaafAppPermissions.js +278 -0
  289. package/dist/Verbs/MaafAppPermissions.js.map +1 -0
  290. package/dist/Verbs/Pack.d.ts +38 -0
  291. package/dist/Verbs/Pack.d.ts.map +1 -0
  292. package/dist/Verbs/Pack.js +106 -0
  293. package/dist/Verbs/Pack.js.map +1 -0
  294. package/dist/Verbs/PushMaafApp.d.ts +6 -0
  295. package/dist/Verbs/PushMaafApp.d.ts.map +1 -0
  296. package/dist/Verbs/PushMaafApp.js +145 -0
  297. package/dist/Verbs/PushMaafApp.js.map +1 -0
  298. package/dist/Verbs/RefreshDataSource.d.ts +6 -0
  299. package/dist/Verbs/RefreshDataSource.d.ts.map +1 -0
  300. package/dist/Verbs/RefreshDataSource.js +72 -0
  301. package/dist/Verbs/RefreshDataSource.js.map +1 -0
  302. package/dist/Verbs/RemoveFlow.d.ts +12 -0
  303. package/dist/Verbs/RemoveFlow.d.ts.map +1 -0
  304. package/dist/Verbs/RemoveFlow.js +99 -0
  305. package/dist/Verbs/RemoveFlow.js.map +1 -0
  306. package/dist/Verbs/SetSetting.d.ts +12 -0
  307. package/dist/Verbs/SetSetting.d.ts.map +1 -0
  308. package/dist/Verbs/SetSetting.js +142 -0
  309. package/dist/Verbs/SetSetting.js.map +1 -0
  310. package/dist/Verbs/ShareMaafApp.d.ts +12 -0
  311. package/dist/Verbs/ShareMaafApp.d.ts.map +1 -0
  312. package/dist/Verbs/ShareMaafApp.js +14 -0
  313. package/dist/Verbs/ShareMaafApp.js.map +1 -0
  314. package/dist/Verbs/ShowMaafApp.d.ts +94 -0
  315. package/dist/Verbs/ShowMaafApp.d.ts.map +1 -0
  316. package/dist/Verbs/ShowMaafApp.js +216 -0
  317. package/dist/Verbs/ShowMaafApp.js.map +1 -0
  318. package/dist/Verbs/TelemetrySettings.d.ts +8 -0
  319. package/dist/Verbs/TelemetrySettings.d.ts.map +1 -0
  320. package/dist/Verbs/TelemetrySettings.js +104 -0
  321. package/dist/Verbs/TelemetrySettings.js.map +1 -0
  322. package/dist/Verbs/UnshareMaafApp.d.ts +12 -0
  323. package/dist/Verbs/UnshareMaafApp.d.ts.map +1 -0
  324. package/dist/Verbs/UnshareMaafApp.js +14 -0
  325. package/dist/Verbs/UnshareMaafApp.js.map +1 -0
  326. package/dist/Verbs/VerbConstants.d.ts +433 -0
  327. package/dist/Verbs/VerbConstants.d.ts.map +1 -0
  328. package/dist/Verbs/VerbConstants.js +403 -0
  329. package/dist/Verbs/VerbConstants.js.map +1 -0
  330. package/dist/Verbs/index.d.ts +40 -0
  331. package/dist/Verbs/index.d.ts.map +1 -0
  332. package/dist/Verbs/index.js +40 -0
  333. package/dist/Verbs/index.js.map +1 -0
  334. package/package.json +43 -3
@@ -0,0 +1,376 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import { getAuthResource, initializePlayerServices, updateRegion } from '@microsoft/apps-actions';
5
+ import { Clouds, cloudToRegion, } from '@microsoft/apps-common/services';
6
+ import { Command } from 'commander';
7
+ import packageJson from '../package.json' with { type: 'json' };
8
+ import { getSettings } from './CliSettings.js';
9
+ import { getAuthority } from './CliUtils.js';
10
+ import { CLI_BINARY_NAME } from './Constants/CliConstants.js';
11
+ import { COMMAND_TREE } from './Constants/CommandRegistry.js';
12
+ import { HelpStrings } from './Constants/HelpStrings.js';
13
+ import { UsageError } from './Errors/CliError.js';
14
+ import { buildNounHelpText, buildTypedSubcommandHelpText, buildVerbDescriptionTable, } from './Utils/BuildVerbDescriptionTable.js';
15
+ import { printInfo } from './Utils/ConsoleOutput.js';
16
+ import { cliEnvVarFullName, getCliEnvVar } from './Utils/EnvVars.js';
17
+ import { hasTypedSubcommands, isKnownNoun, resolveCommand } from './Utils/ResolveCommand.js';
18
+ import { GlobalArguments } from './Verbs/VerbConstants.js';
19
+ export class ArgumentProvider {
20
+ _httpClient;
21
+ _logger;
22
+ _authenticationProvider;
23
+ _environmentId;
24
+ _cloud;
25
+ _region;
26
+ _verb;
27
+ _resolvedCommand;
28
+ _tokensConsumed = 0;
29
+ _program;
30
+ _options = {};
31
+ _positionalArgs = [];
32
+ _positionalArgNames = [];
33
+ _isParsed = false;
34
+ constructor(_httpClient, _logger, _authenticationProvider) {
35
+ this._httpClient = _httpClient;
36
+ this._logger = _logger;
37
+ this._authenticationProvider = _authenticationProvider;
38
+ // Resolve command using multi-token matching against the command registry
39
+ this._resolvedCommand = resolveCommand(process.argv, COMMAND_TREE);
40
+ if (this._resolvedCommand) {
41
+ // Use the command path as the verb identifier for telemetry and internal checks
42
+ this._verb = this._resolvedCommand.path.join(' ');
43
+ this._tokensConsumed = this._resolvedCommand.tokensConsumed;
44
+ }
45
+ this._program = new Command();
46
+ // Add the --non-interactive switch as a global option
47
+ this._program.option('--non-interactive', 'Run in non-interactive mode (no prompts, all parameters must be provided via flags or environment variables)');
48
+ this._program.option('--json', 'Format output as JSON');
49
+ this._program.option('--no-color', 'Disable colored output');
50
+ // If a command was resolved, show the full command path in help/usage.
51
+ // Otherwise show the generic top-level help.
52
+ if (this._resolvedCommand) {
53
+ this._program.name(`${CLI_BINARY_NAME} ${this._verb}`);
54
+ }
55
+ else {
56
+ this._program.name(CLI_BINARY_NAME);
57
+ this._program.usage('[option] [command] [<args>]');
58
+ }
59
+ this._program.version(packageJson.version, '-v, --version', 'output the current version');
60
+ this._program.description(HelpStrings.global.programDescription);
61
+ // Register custom help text to show verb table on global --help
62
+ // This uses Commander's addHelpText hook which runs when help is displayed
63
+ this._program.addHelpText('after', (_context) => {
64
+ // Only show verb table for global help (not verb-specific help)
65
+ if (!this._resolvedCommand) {
66
+ return '\n' + buildVerbDescriptionTable() + '\n';
67
+ }
68
+ return '';
69
+ });
70
+ const settings = getSettings();
71
+ // Environment ID resolution order: ms.config.json (the supported user flow) →
72
+ // MAAF_DEBUG_ENVIRONMENT_ID env var (debug-only override). There is no CLI flag —
73
+ // `app create` resolves it via the PDE routing API; other verbs require
74
+ // ms.config.json. The debug env var lets developers run any verb against a
75
+ // known environment without scaffolding a config first.
76
+ this._environmentId = settings.appConfig?.environmentId;
77
+ const debugEnvironmentId = getCliEnvVar('MAAF_DEBUG_ENVIRONMENT_ID');
78
+ if (!this._environmentId && debugEnvironmentId) {
79
+ this._environmentId = debugEnvironmentId;
80
+ printInfo(`[debug] ${cliEnvVarFullName('MAAF_DEBUG_ENVIRONMENT_ID')} is set; using '${this._environmentId}' as environment id.`);
81
+ }
82
+ const configCloud = settings.appConfig?.cloud;
83
+ if (configCloud) {
84
+ const normalized = configCloud.toLowerCase();
85
+ if (!Clouds.includes(normalized)) {
86
+ throw new UsageError(`Invalid cloud value '${configCloud}' in ms.config.json. Valid values are: ${Clouds.join(', ')}.`);
87
+ }
88
+ this._cloud = normalized;
89
+ this._region = cloudToRegion(this._cloud);
90
+ }
91
+ if (!this._cloud) {
92
+ // Do not provide a prompt, default to public
93
+ this.addOption({
94
+ flags: {
95
+ key: GlobalArguments.Cloud.name,
96
+ },
97
+ env: GlobalArguments.Cloud.envVar,
98
+ default: 'public',
99
+ description: HelpStrings.global.cloud,
100
+ });
101
+ }
102
+ initializePlayerServices({
103
+ httpClient: this._httpClient,
104
+ logger: this._logger,
105
+ region: this._region ?? cloudToRegion('public'),
106
+ environmentName: this._environmentId || 'default',
107
+ });
108
+ }
109
+ addSwitch(cliOption) {
110
+ this._createOption(cliOption, false);
111
+ }
112
+ addSwitches(cliOptions) {
113
+ cliOptions.forEach((cliOption) => this._createOption(cliOption, false));
114
+ }
115
+ /**
116
+ * Consumes the next positional token from process.argv before Commander parses flags.
117
+ * Increments the internal token counter so runVerb() excludes this token from Commander's
118
+ * args, and updates the usage string so --help shows the argument name.
119
+ *
120
+ * Must be called before runVerb().
121
+ */
122
+ consumePositionalArg(name) {
123
+ const value = process.argv[2 + this._tokensConsumed];
124
+ // Skip flags (e.g. --help, -h) — leave them in the args for Commander to handle.
125
+ if (value !== undefined && !/^-[a-zA-Z-]/.test(value)) {
126
+ this._tokensConsumed++;
127
+ this._positionalArgs.push(value);
128
+ }
129
+ else {
130
+ this._positionalArgs.push(undefined);
131
+ }
132
+ this._positionalArgNames.push(name);
133
+ this._program.usage(`${this._positionalArgNames.join(' ')} [options]`);
134
+ }
135
+ getPositionalArg(index) {
136
+ return this._positionalArgs[index];
137
+ }
138
+ addOption(cliOption) {
139
+ this._createOption(cliOption);
140
+ }
141
+ addOptions(cliOptions) {
142
+ cliOptions.forEach((cliOption) => this._createOption(cliOption));
143
+ }
144
+ async runVerb() {
145
+ // Commander needs to see only the flag arguments, so strip the command path
146
+ // tokens that were consumed by the resolver (e.g., 1 for 'init', 2 for 'app init',
147
+ // 3 for 'app add table'). Global flag paths skip this method entirely.
148
+ if (this._tokensConsumed > 0) {
149
+ const args = [
150
+ process.argv[0],
151
+ process.argv[1],
152
+ ...process.argv.slice(2 + this._tokensConsumed),
153
+ ];
154
+ this._program.parse(args);
155
+ }
156
+ else {
157
+ this._program.parse();
158
+ }
159
+ this._isParsed = true;
160
+ await this._getRequiredVariables();
161
+ if (!this._region) {
162
+ throw new UsageError(`Region is not set. Use --cloud or set the ${cliEnvVarFullName('CLOUD_INSTANCE')} environment variable.`);
163
+ }
164
+ await this._authenticationProvider.initAsync(this._region);
165
+ await this._logger.initializeTelemetry(this._authenticationProvider);
166
+ this._logger.trackActivityEvent('Initialize', {
167
+ verb: this._verb,
168
+ });
169
+ }
170
+ // Handles scenarios where only global flags (e.g., --help/--version) are provided,
171
+ // or partial commands that should show contextual help (e.g., 'app', 'app add').
172
+ handleGlobalHelpOrFlagsAndExit() {
173
+ const firstToken = process.argv[2];
174
+ if (!firstToken) {
175
+ this._program.help(); // No arguments at all — show help and exit
176
+ }
177
+ // If the first token is a flag (e.g., --version, --help), let Commander handle it
178
+ if (firstToken.startsWith('-')) {
179
+ this._program.parse(process.argv);
180
+ this._isParsed = true;
181
+ return;
182
+ }
183
+ // If no command resolved, check for partial matches that should show contextual help
184
+ if (!this._resolvedCommand) {
185
+ const secondToken = process.argv[3];
186
+ const thirdToken = process.argv[4];
187
+ // Check for noun + verb with typed subcommands (e.g., 'app add')
188
+ if (secondToken &&
189
+ !secondToken.startsWith('-') &&
190
+ isKnownNoun(firstToken, COMMAND_TREE) &&
191
+ hasTypedSubcommands(firstToken, secondToken, COMMAND_TREE)) {
192
+ // Third token present but not a valid type → error
193
+ if (thirdToken && !thirdToken.startsWith('-')) {
194
+ throw new UsageError(`Unknown type '${thirdToken}' for '${CLI_BINARY_NAME} ${firstToken} ${secondToken}'. Run "${CLI_BINARY_NAME} ${firstToken} ${secondToken} --help" for available types.`);
195
+ }
196
+ printInfo(buildTypedSubcommandHelpText(firstToken, secondToken));
197
+ process.exit(0);
198
+ }
199
+ // Check for noun-only (e.g., 'app')
200
+ if (isKnownNoun(firstToken, COMMAND_TREE)) {
201
+ // Second token present but not a valid command → error
202
+ if (secondToken && !secondToken.startsWith('-')) {
203
+ throw new UsageError(`Unknown command '${secondToken}' under '${CLI_BINARY_NAME} ${firstToken}'. Run "${CLI_BINARY_NAME} ${firstToken} --help" for available commands.`);
204
+ }
205
+ printInfo(buildNounHelpText(firstToken));
206
+ process.exit(0);
207
+ }
208
+ // Unrecognised top-level token (not a known noun, not a registered command)
209
+ throw new UsageError(`Unknown command '${firstToken}'. Run "${CLI_BINARY_NAME} --help" for available commands.`);
210
+ }
211
+ }
212
+ getVerb() {
213
+ if (!this._resolvedCommand) {
214
+ throw new UsageError(`No command specified. Run "${CLI_BINARY_NAME} --help" for available commands.`);
215
+ }
216
+ return this._verb;
217
+ }
218
+ getResolvedCommand() {
219
+ return this._resolvedCommand;
220
+ }
221
+ async getOption(key, ignorePrompt) {
222
+ const settings = getSettings();
223
+ let value = this._program.getOptionValue(key);
224
+ const option = this._options[key];
225
+ // Fallback to environment variable if not provided via CLI
226
+ if (value === undefined && option && option.env) {
227
+ value = getCliEnvVar(option.env);
228
+ }
229
+ // Fallback to default value if not provided via CLI or Env
230
+ if (value === undefined && option && option.default !== undefined) {
231
+ value = option.default;
232
+ }
233
+ if (!value && !ignorePrompt && option?.customPrompt) {
234
+ if (!settings.interactive) {
235
+ if (option.optionalInNonInteractive) {
236
+ // Option is optional — return undefined and let the actions layer handle it.
237
+ }
238
+ else {
239
+ const flagName = option.flags.key;
240
+ const alias = option.flags.alias;
241
+ const flagHint = alias ? `--${flagName} (-${alias})` : `--${flagName}`;
242
+ const envHint = option.env ? ` or environment variable (${option.env})` : '';
243
+ throw new UsageError(`Missing required option ${flagHint}${envHint}. In non-interactive mode, all parameters must be provided via flags or environment variables.`);
244
+ }
245
+ }
246
+ else {
247
+ value = await option.customPrompt();
248
+ }
249
+ }
250
+ // Option could be undefined by design, so just return it.
251
+ return value;
252
+ }
253
+ getAuthenticationProvider() {
254
+ return this._authenticationProvider;
255
+ }
256
+ getHttpClient() {
257
+ return this._httpClient;
258
+ }
259
+ /**
260
+ * Returns the tenant ID for the authenticated user, acquiring a token first if needed.
261
+ *
262
+ * NodeMsalAuthenticationProvider only populates _tenantId after getAccessTokenForResource()
263
+ * is called. This method pre-acquires a token for the Power Platform resource so the tenant
264
+ * ID is always available after runVerb() completes.
265
+ */
266
+ async getTenantIdAsync() {
267
+ // Fast path: provider already knows the tenant ID (e.g. ServicePrincipalAuthenticationProvider).
268
+ const existing = this._authenticationProvider.getUserTenantId();
269
+ if (existing)
270
+ return existing;
271
+ // Acquire a token to populate the tenant ID from the MSAL token response.
272
+ if (this._region && this._region !== 'local' && this._region !== 'dev') {
273
+ const resource = getAuthResource()[this._region];
274
+ await this._authenticationProvider.getAccessTokenForResource(resource);
275
+ }
276
+ return this._authenticationProvider.getUserTenantId();
277
+ }
278
+ getAuthResourceUrl() {
279
+ const region = this._region ?? cloudToRegion('public');
280
+ if (region === 'local' || region === 'dev')
281
+ return getAuthResource()['test'];
282
+ return getAuthResource()[region];
283
+ }
284
+ getCloud() {
285
+ return this._cloud;
286
+ }
287
+ getLoginAuthority(tenantId) {
288
+ return getAuthority(this._region, tenantId);
289
+ }
290
+ /**
291
+ * Sets the description for the current command context.
292
+ * This is used to display help information specific to the verb being executed.
293
+ *
294
+ * @param {string} description - The description to set for the program.
295
+ */
296
+ setDescription(description) {
297
+ this._program.description(description);
298
+ }
299
+ isJsonMode() {
300
+ // Once Commander has parsed, opts() is the source of truth and won't
301
+ // confuse `--json` as a flag with `--json` as a value to another option.
302
+ // Pre-parse (e.g. a UsageError thrown from handleGlobalHelpOrFlagsAndExit
303
+ // before parse runs) we have no choice but to peek argv directly.
304
+ if (this._isParsed) {
305
+ return this._program.opts().json === true;
306
+ }
307
+ return process.argv.includes('--json');
308
+ }
309
+ addExamples(examples) {
310
+ if (!examples || examples.length === 0)
311
+ return;
312
+ this._program.addHelpText('after', () => {
313
+ const lines = ['', 'Examples:'];
314
+ examples.forEach((example) => {
315
+ lines.push(` $ ${example}`);
316
+ });
317
+ return lines.join('\n');
318
+ });
319
+ }
320
+ getRegisteredFlags() {
321
+ const flags = new Set();
322
+ for (const option of this._program.options) {
323
+ if (option.long)
324
+ flags.add(option.long);
325
+ // Commander also accepts the positive form of negated options (--color for --no-color)
326
+ if (option.negate && option.long?.startsWith('--no-')) {
327
+ flags.add(`--${option.long.slice('--no-'.length)}`);
328
+ }
329
+ }
330
+ return flags;
331
+ }
332
+ getEnvironmentId() {
333
+ return this._environmentId;
334
+ }
335
+ async _getRequiredVariables() {
336
+ if (!this._cloud) {
337
+ const rawCloud = await this.getOption('cloud');
338
+ if (rawCloud) {
339
+ const normalized = rawCloud.toLowerCase();
340
+ if (!Clouds.includes(normalized)) {
341
+ throw new UsageError(`Invalid --cloud value '${rawCloud}'. Valid values are: ${Clouds.join(', ')}.`);
342
+ }
343
+ this._cloud = normalized;
344
+ this._region = cloudToRegion(this._cloud);
345
+ updateRegion(this._region);
346
+ }
347
+ }
348
+ }
349
+ /**
350
+ * @param {CliOption} cliOption
351
+ * @param {boolean} [hasValue=true] true if the option requires a value, false for a switch such as --help
352
+ */
353
+ _createOption(cliOption, hasValue = true) {
354
+ const option = this._program.createOption(hasValue ? this._createFlags(cliOption.flags) : this._createSwitchFlags(cliOption.flags), cliOption.description);
355
+ // We do not set the env or default here because we want to handle it manually in getOption
356
+ // This allows us to hide the env variable from the help text
357
+ // Hide global options from help output when showing global help
358
+ // This prevents --environment-id and --cloud from showing up in the global help
359
+ if (!this._resolvedCommand || cliOption.hidden) {
360
+ option.hideHelp();
361
+ }
362
+ this._program.addOption(option);
363
+ // Map to CliOption using Commander's camelCase attribute name so
364
+ // getOption('environmentId') finds the option registered as --environment-id.
365
+ this._options[option.attributeName()] = cliOption;
366
+ }
367
+ _createFlags(flags) {
368
+ const { key, alias } = flags;
369
+ return alias ? `-${alias}, --${key} <${key}>` : `--${key} <${key}>`;
370
+ }
371
+ _createSwitchFlags(flags) {
372
+ const { key, alias } = flags;
373
+ return alias ? `-${alias}, --${key}` : `--${key}`;
374
+ }
375
+ }
376
+ //# sourceMappingURL=ArgumentProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArgumentProvider.js","sourceRoot":"","sources":["../src/ArgumentProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import type { Region } from '@microsoft/apps-common/services';
5
+ import type { IAuthenticationProvider } from '../Types/Cli.types.js';
6
+ export declare class NodeMsalAuthenticationProvider implements IAuthenticationProvider {
7
+ private _msalClient;
8
+ private _tenantId;
9
+ private _region;
10
+ constructor();
11
+ initAsync(region: Region): Promise<void>;
12
+ getAccessTokenForResource(resource: string, loginHint?: string): Promise<string>;
13
+ getUserTenantId(): string | undefined;
14
+ getCachedAccountAsync(): Promise<string | undefined>;
15
+ private _acquireTokenInternal;
16
+ private _getInteractiveLoginRequest;
17
+ }
18
+ //# sourceMappingURL=NodeMsalAuthenticationProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeMsalAuthenticationProvider.d.ts","sourceRoot":"","sources":["../../src/Authentication/NodeMsalAuthenticationProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAK9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAGlE,qBAAa,8BAA+B,YAAW,uBAAuB;IAC5E,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,OAAO,CAAqB;;IAIvB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BxC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMtF,eAAe,IAAI,MAAM,GAAG,SAAS;IAI/B,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAMnD,qBAAqB;IAwCnC,OAAO,CAAC,2BAA2B;CAgBpC"}
@@ -0,0 +1,99 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import { InteractionRequiredAuthError, PublicClientApplication } from '@azure/msal-node';
5
+ import open from 'open';
6
+ import { getAuthority } from '../CliUtils.js';
7
+ import { AUTH_CACHE_DIRECTORY, CLI_CLIENT_ID } from '../Constants.js';
8
+ import { printError, printInfo } from '../Utils/ConsoleOutput.js';
9
+ export class NodeMsalAuthenticationProvider {
10
+ _msalClient;
11
+ _tenantId;
12
+ _region;
13
+ constructor() { }
14
+ async initAsync(region) {
15
+ this._region = region;
16
+ const { DataProtectionScope, PersistenceCachePlugin, PersistenceCreator } = await import('@azure/msal-node-extensions');
17
+ const persistenceConfiguration = {
18
+ cachePath: AUTH_CACHE_DIRECTORY + '/msal_cache.json',
19
+ dataProtectionScope: DataProtectionScope.CurrentUser,
20
+ // TODO: Leaving as power-apps since we are soon to remove node-msal-extensions in favor of our own persistence layer.
21
+ serviceName: 'power-apps',
22
+ accountName: 'power-apps',
23
+ usePlaintextFileOnLinux: false,
24
+ };
25
+ const persistence = await PersistenceCreator.createPersistence(persistenceConfiguration);
26
+ const authConfig = {
27
+ auth: {
28
+ authority: getAuthority(this._region, this._tenantId),
29
+ clientId: CLI_CLIENT_ID,
30
+ },
31
+ cache: {
32
+ cachePlugin: new PersistenceCachePlugin(persistence),
33
+ },
34
+ };
35
+ this._msalClient = new PublicClientApplication(authConfig);
36
+ }
37
+ async getAccessTokenForResource(resource, loginHint) {
38
+ const result = await this._acquireTokenInternal(resource + '/.default', loginHint);
39
+ this._tenantId = result.tenantId;
40
+ return result.accessToken;
41
+ }
42
+ getUserTenantId() {
43
+ return this._tenantId;
44
+ }
45
+ async getCachedAccountAsync() {
46
+ if (!this._msalClient)
47
+ return undefined;
48
+ const accounts = await this._msalClient.getTokenCache().getAllAccounts();
49
+ return accounts[0]?.username;
50
+ }
51
+ async _acquireTokenInternal(resource, loginHint) {
52
+ if (!this._msalClient) {
53
+ throw new Error('Authentication not initialized yet');
54
+ }
55
+ const accounts = await this._msalClient.getTokenCache().getAllAccounts();
56
+ if (accounts.length === 1) {
57
+ const silentRequest = {
58
+ account: accounts[0],
59
+ scopes: [resource],
60
+ };
61
+ try {
62
+ const result = await this._msalClient.acquireTokenSilent(silentRequest);
63
+ return result;
64
+ }
65
+ catch (error) {
66
+ if (error instanceof InteractionRequiredAuthError) {
67
+ return this._msalClient.acquireTokenInteractive(this._getInteractiveLoginRequest(resource, loginHint));
68
+ }
69
+ throw error;
70
+ }
71
+ }
72
+ else if (accounts.length > 1) {
73
+ accounts.forEach((account) => {
74
+ printInfo(account.username);
75
+ });
76
+ return Promise.reject('Multiple accounts found. Please use the logout command to remove existing accounts.');
77
+ }
78
+ else {
79
+ return this._msalClient.acquireTokenInteractive(this._getInteractiveLoginRequest(resource, loginHint));
80
+ }
81
+ }
82
+ _getInteractiveLoginRequest(resource, loginHint) {
83
+ const openBrowser = async (url) => {
84
+ try {
85
+ await open(url, { wait: false });
86
+ }
87
+ catch (error) {
88
+ printError(`Failed to open browser: ${String(error)}`);
89
+ }
90
+ };
91
+ return {
92
+ scopes: [resource],
93
+ openBrowser,
94
+ successTemplate: 'You can close this window now.',
95
+ ...(loginHint && { loginHint }),
96
+ };
97
+ }
98
+ }
99
+ //# sourceMappingURL=NodeMsalAuthenticationProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeMsalAuthenticationProvider.js","sourceRoot":"","sources":["../../src/Authentication/NodeMsalAuthenticationProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import { type Region } from '@microsoft/apps-common/services';
5
+ import type { IAuthenticationProvider } from '../Types/Cli.types.js';
6
+ export declare class OrchardAuthenticationProvider implements IAuthenticationProvider {
7
+ private _resourceList;
8
+ initAsync(region: Region): Promise<void>;
9
+ getAccessTokenForResource(resource: string, _loginHint?: string): Promise<string>;
10
+ getUserTenantId(): string | undefined;
11
+ getCachedAccountAsync(): Promise<string | undefined>;
12
+ }
13
+ //# sourceMappingURL=OrchardAuthenticationProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrchardAuthenticationProvider.d.ts","sourceRoot":"","sources":["../../src/Authentication/OrchardAuthenticationProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,MAAM,EAA+B,MAAM,iCAAiC,CAAC;AAE3F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAGlE,qBAAa,6BAA8B,YAAW,uBAAuB;IAC3E,OAAO,CAAC,aAAa,CAAkB;IACjC,SAAS,CAAC,MAAM,EAAE,MAAM;IAGxB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAcvF,eAAe,IAAI,MAAM,GAAG,SAAS;IAI/B,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAG3D"}
@@ -0,0 +1,30 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import { RESOURCE_MAP } from '@microsoft/apps-common/services';
5
+ import { cliEnvVarFullName, getCliEnvVar } from '../Utils/EnvVars.js';
6
+ export class OrchardAuthenticationProvider {
7
+ _resourceList = [];
8
+ async initAsync(region) {
9
+ this._resourceList = RESOURCE_MAP[region];
10
+ }
11
+ async getAccessTokenForResource(resource, _loginHint) {
12
+ const match = this._resourceList.find((r) => r.audience === resource);
13
+ if (!match) {
14
+ return '';
15
+ }
16
+ const key = match.type === 'apihub' ? 'CONFIG_AUTH_APIHUB' : 'CONFIG_AUTH_PPAPI';
17
+ const token = getCliEnvVar(key);
18
+ if (!token) {
19
+ throw new Error(`Missing access token for proxy: environment variable ${cliEnvVarFullName(key)} is not set`);
20
+ }
21
+ return token;
22
+ }
23
+ getUserTenantId() {
24
+ return getCliEnvVar('CONFIG_AUTH_TENANTID');
25
+ }
26
+ async getCachedAccountAsync() {
27
+ return undefined;
28
+ }
29
+ }
30
+ //# sourceMappingURL=OrchardAuthenticationProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrchardAuthenticationProvider.js","sourceRoot":"","sources":["../../src/Authentication/OrchardAuthenticationProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAA8B,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAG3F,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEnE,MAAM,OAAO,6BAA6B;IAChC,aAAa,GAAe,EAAE,CAAC;IACvC,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IACD,KAAK,CAAC,yBAAyB,CAAC,QAAgB,EAAE,UAAmB;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAC;QACjF,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,wDAAwD,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAC5F,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,eAAe;QACb,OAAO,YAAY,CAAC,sBAAsB,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import type { Region } from '@microsoft/apps-common/services';
5
+ import type { IAuthenticationProvider } from '../Types/Cli.types.js';
6
+ /**
7
+ * Authenticates using a service principal (client credentials flow). Requires MS_CLI_SP_CLIENT_ID,
8
+ * MS_CLI_SP_CLIENT_SECRET, and MS_CLI_SP_TENANT_ID environment variables. Activated via
9
+ * MS_CLI_USE_SP_AUTH=true (or CI=true in test runs).
10
+ */
11
+ export declare class ServicePrincipalAuthenticationProvider implements IAuthenticationProvider {
12
+ private _msalClient;
13
+ private _clientId;
14
+ private _clientSecret;
15
+ private _tenantId;
16
+ private _region;
17
+ constructor();
18
+ initAsync(region: Region): Promise<void>;
19
+ getAccessTokenForResource(resource: string, _loginHint?: string): Promise<string>;
20
+ getUserTenantId(): string | undefined;
21
+ getCachedAccountAsync(): Promise<string | undefined>;
22
+ }
23
+ //# sourceMappingURL=ServicePrincipalAuthenticationProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServicePrincipalAuthenticationProvider.d.ts","sourceRoot":"","sources":["../../src/Authentication/ServicePrincipalAuthenticationProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAG9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAGlE;;;;GAIG;AACH,qBAAa,sCAAuC,YAAW,uBAAuB;IACpF,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAqB;;IAgBvB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBvF,eAAe,IAAI,MAAM,GAAG,SAAS;IAI/B,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAGlE"}