@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.
- package/README.md +281 -1
- package/dist/ArgumentProvider.d.ts +102 -0
- package/dist/ArgumentProvider.d.ts.map +1 -0
- package/dist/ArgumentProvider.js +376 -0
- package/dist/ArgumentProvider.js.map +1 -0
- package/dist/Authentication/NodeMsalAuthenticationProvider.d.ts +18 -0
- package/dist/Authentication/NodeMsalAuthenticationProvider.d.ts.map +1 -0
- package/dist/Authentication/NodeMsalAuthenticationProvider.js +99 -0
- package/dist/Authentication/NodeMsalAuthenticationProvider.js.map +1 -0
- package/dist/Authentication/OrchardAuthenticationProvider.d.ts +13 -0
- package/dist/Authentication/OrchardAuthenticationProvider.d.ts.map +1 -0
- package/dist/Authentication/OrchardAuthenticationProvider.js +30 -0
- package/dist/Authentication/OrchardAuthenticationProvider.js.map +1 -0
- package/dist/Authentication/ServicePrincipalAuthenticationProvider.d.ts +23 -0
- package/dist/Authentication/ServicePrincipalAuthenticationProvider.d.ts.map +1 -0
- package/dist/Authentication/ServicePrincipalAuthenticationProvider.js +60 -0
- package/dist/Authentication/ServicePrincipalAuthenticationProvider.js.map +1 -0
- package/dist/Bin.d.ts +6 -0
- package/dist/Bin.d.ts.map +1 -0
- package/dist/Bin.js +7 -0
- package/dist/Bin.js.map +1 -0
- package/dist/Cli.d.ts +2 -0
- package/dist/Cli.d.ts.map +1 -0
- package/dist/Cli.js +95 -0
- package/dist/Cli.js.map +1 -0
- package/dist/CliSettings.d.ts +14 -0
- package/dist/CliSettings.d.ts.map +1 -0
- package/dist/CliSettings.js +76 -0
- package/dist/CliSettings.js.map +1 -0
- package/dist/CliUtils.d.ts +92 -0
- package/dist/CliUtils.d.ts.map +1 -0
- package/dist/CliUtils.js +218 -0
- package/dist/CliUtils.js.map +1 -0
- package/dist/Constants/CliConstants.d.ts +6 -0
- package/dist/Constants/CliConstants.d.ts.map +1 -0
- package/dist/Constants/CliConstants.js +6 -0
- package/dist/Constants/CliConstants.js.map +1 -0
- package/dist/Constants/CommandRegistry.d.ts +23 -0
- package/dist/Constants/CommandRegistry.d.ts.map +1 -0
- package/dist/Constants/CommandRegistry.js +197 -0
- package/dist/Constants/CommandRegistry.js.map +1 -0
- package/dist/Constants/HelpStrings.d.ts +329 -0
- package/dist/Constants/HelpStrings.d.ts.map +1 -0
- package/dist/Constants/HelpStrings.js +451 -0
- package/dist/Constants/HelpStrings.js.map +1 -0
- package/dist/Constants.d.ts +10 -0
- package/dist/Constants.d.ts.map +1 -0
- package/dist/Constants.js +18 -0
- package/dist/Constants.js.map +1 -0
- package/dist/Errors/CliError.d.ts +5 -0
- package/dist/Errors/CliError.d.ts.map +1 -0
- package/dist/Errors/CliError.js +7 -0
- package/dist/Errors/CliError.js.map +1 -0
- package/dist/FS/CliFs.d.ts +41 -0
- package/dist/FS/CliFs.d.ts.map +1 -0
- package/dist/FS/CliFs.js +136 -0
- package/dist/FS/CliFs.js.map +1 -0
- package/dist/HttpClient/CliHttpClient.d.ts +24 -0
- package/dist/HttpClient/CliHttpClient.d.ts.map +1 -0
- package/dist/HttpClient/CliHttpClient.js +122 -0
- package/dist/HttpClient/CliHttpClient.js.map +1 -0
- package/dist/HttpClient/OrchardProxy.d.ts +11 -0
- package/dist/HttpClient/OrchardProxy.d.ts.map +1 -0
- package/dist/HttpClient/OrchardProxy.js +25 -0
- package/dist/HttpClient/OrchardProxy.js.map +1 -0
- package/dist/HttpClient/Proxy.d.ts +7 -0
- package/dist/HttpClient/Proxy.d.ts.map +1 -0
- package/dist/HttpClient/Proxy.js +5 -0
- package/dist/HttpClient/Proxy.js.map +1 -0
- package/dist/Logger/CliLogger.d.ts +35 -0
- package/dist/Logger/CliLogger.d.ts.map +1 -0
- package/dist/Logger/CliLogger.js +237 -0
- package/dist/Logger/CliLogger.js.map +1 -0
- package/dist/Logger/ConsoleWriter.d.ts +15 -0
- package/dist/Logger/ConsoleWriter.d.ts.map +1 -0
- package/dist/Logger/ConsoleWriter.js +45 -0
- package/dist/Logger/ConsoleWriter.js.map +1 -0
- package/dist/Logger/Constants.d.ts +6 -0
- package/dist/Logger/Constants.d.ts.map +1 -0
- package/dist/Logger/Constants.js +15 -0
- package/dist/Logger/Constants.js.map +1 -0
- package/dist/Logger/LoggerSettings.d.ts +19 -0
- package/dist/Logger/LoggerSettings.d.ts.map +1 -0
- package/dist/Logger/LoggerSettings.js +114 -0
- package/dist/Logger/LoggerSettings.js.map +1 -0
- package/dist/Logger/OneDSWriter.d.ts +22 -0
- package/dist/Logger/OneDSWriter.d.ts.map +1 -0
- package/dist/Logger/OneDSWriter.js +129 -0
- package/dist/Logger/OneDSWriter.js.map +1 -0
- package/dist/Logger/Scrubber/ScrubCustomDimensions.d.ts +5 -0
- package/dist/Logger/Scrubber/ScrubCustomDimensions.d.ts.map +1 -0
- package/dist/Logger/Scrubber/ScrubCustomDimensions.js +46 -0
- package/dist/Logger/Scrubber/ScrubCustomDimensions.js.map +1 -0
- package/dist/Logger/Scrubber/ScrubCustomDimensionsConfig.d.ts +27 -0
- package/dist/Logger/Scrubber/ScrubCustomDimensionsConfig.d.ts.map +1 -0
- package/dist/Logger/Scrubber/ScrubCustomDimensionsConfig.js +168 -0
- package/dist/Logger/Scrubber/ScrubCustomDimensionsConfig.js.map +1 -0
- package/dist/Logger/Scrubber/ScrubUtils.d.ts +8 -0
- package/dist/Logger/Scrubber/ScrubUtils.d.ts.map +1 -0
- package/dist/Logger/Scrubber/ScrubUtils.js +34 -0
- package/dist/Logger/Scrubber/ScrubUtils.js.map +1 -0
- package/dist/Types/Argument.types.d.ts +27 -0
- package/dist/Types/Argument.types.d.ts.map +1 -0
- package/dist/Types/Argument.types.js +5 -0
- package/dist/Types/Argument.types.js.map +1 -0
- package/dist/Types/Cli.types.d.ts +32 -0
- package/dist/Types/Cli.types.d.ts.map +1 -0
- package/dist/Types/Cli.types.js +5 -0
- package/dist/Types/Cli.types.js.map +1 -0
- package/dist/Types/Command.types.d.ts +52 -0
- package/dist/Types/Command.types.d.ts.map +1 -0
- package/dist/Types/Command.types.js +8 -0
- package/dist/Types/Command.types.js.map +1 -0
- package/dist/Types/Datasource.types.d.ts +43 -0
- package/dist/Types/Datasource.types.d.ts.map +1 -0
- package/dist/Types/Datasource.types.js +5 -0
- package/dist/Types/Datasource.types.js.map +1 -0
- package/dist/Types/LoggerTypes.types.d.ts +17 -0
- package/dist/Types/LoggerTypes.types.d.ts.map +1 -0
- package/dist/Types/LoggerTypes.types.js +5 -0
- package/dist/Types/LoggerTypes.types.js.map +1 -0
- package/dist/Utils/BuildVerbDescriptionTable.d.ts +19 -0
- package/dist/Utils/BuildVerbDescriptionTable.d.ts.map +1 -0
- package/dist/Utils/BuildVerbDescriptionTable.js +87 -0
- package/dist/Utils/BuildVerbDescriptionTable.js.map +1 -0
- package/dist/Utils/ConsoleOutput.d.ts +80 -0
- package/dist/Utils/ConsoleOutput.d.ts.map +1 -0
- package/dist/Utils/ConsoleOutput.js +151 -0
- package/dist/Utils/ConsoleOutput.js.map +1 -0
- package/dist/Utils/DetectPackageManager.d.ts +9 -0
- package/dist/Utils/DetectPackageManager.d.ts.map +1 -0
- package/dist/Utils/DetectPackageManager.js +24 -0
- package/dist/Utils/DetectPackageManager.js.map +1 -0
- package/dist/Utils/EnhanceNetworkError.d.ts +14 -0
- package/dist/Utils/EnhanceNetworkError.d.ts.map +1 -0
- package/dist/Utils/EnhanceNetworkError.js +59 -0
- package/dist/Utils/EnhanceNetworkError.js.map +1 -0
- package/dist/Utils/EnvVars.d.ts +17 -0
- package/dist/Utils/EnvVars.d.ts.map +1 -0
- package/dist/Utils/EnvVars.js +38 -0
- package/dist/Utils/EnvVars.js.map +1 -0
- package/dist/Utils/GitCredentialConfig.d.ts +12 -0
- package/dist/Utils/GitCredentialConfig.d.ts.map +1 -0
- package/dist/Utils/GitCredentialConfig.js +32 -0
- package/dist/Utils/GitCredentialConfig.js.map +1 -0
- package/dist/Utils/GitUtils.d.ts +22 -0
- package/dist/Utils/GitUtils.d.ts.map +1 -0
- package/dist/Utils/GitUtils.js +35 -0
- package/dist/Utils/GitUtils.js.map +1 -0
- package/dist/Utils/Paging.d.ts +23 -0
- package/dist/Utils/Paging.d.ts.map +1 -0
- package/dist/Utils/Paging.js +67 -0
- package/dist/Utils/Paging.js.map +1 -0
- package/dist/Utils/ReadPackageJson.d.ts +9 -0
- package/dist/Utils/ReadPackageJson.d.ts.map +1 -0
- package/dist/Utils/ReadPackageJson.js +13 -0
- package/dist/Utils/ReadPackageJson.js.map +1 -0
- package/dist/Utils/ResolveCommand.d.ts +26 -0
- package/dist/Utils/ResolveCommand.d.ts.map +1 -0
- package/dist/Utils/ResolveCommand.js +62 -0
- package/dist/Utils/ResolveCommand.js.map +1 -0
- package/dist/Utils/RunCommand.d.ts +13 -0
- package/dist/Utils/RunCommand.d.ts.map +1 -0
- package/dist/Utils/RunCommand.js +35 -0
- package/dist/Utils/RunCommand.js.map +1 -0
- package/dist/Utils/Spinner.d.ts +15 -0
- package/dist/Utils/Spinner.d.ts.map +1 -0
- package/dist/Utils/Spinner.js +71 -0
- package/dist/Utils/Spinner.js.map +1 -0
- package/dist/Utils/zipBuildArtifact.d.ts +35 -0
- package/dist/Utils/zipBuildArtifact.d.ts.map +1 -0
- package/dist/Utils/zipBuildArtifact.js +100 -0
- package/dist/Utils/zipBuildArtifact.js.map +1 -0
- package/dist/Verbs/AddAction.d.ts +6 -0
- package/dist/Verbs/AddAction.d.ts.map +1 -0
- package/dist/Verbs/AddAction.js +87 -0
- package/dist/Verbs/AddAction.js.map +1 -0
- package/dist/Verbs/AddDataSource.d.ts +19 -0
- package/dist/Verbs/AddDataSource.d.ts.map +1 -0
- package/dist/Verbs/AddDataSource.js +174 -0
- package/dist/Verbs/AddDataSource.js.map +1 -0
- package/dist/Verbs/AddFlow.d.ts +12 -0
- package/dist/Verbs/AddFlow.d.ts.map +1 -0
- package/dist/Verbs/AddFlow.js +67 -0
- package/dist/Verbs/AddFlow.js.map +1 -0
- package/dist/Verbs/AddTable.d.ts +6 -0
- package/dist/Verbs/AddTable.d.ts.map +1 -0
- package/dist/Verbs/AddTable.js +163 -0
- package/dist/Verbs/AddTable.js.map +1 -0
- package/dist/Verbs/AuthStatus.d.ts +6 -0
- package/dist/Verbs/AuthStatus.d.ts.map +1 -0
- package/dist/Verbs/AuthStatus.js +18 -0
- package/dist/Verbs/AuthStatus.js.map +1 -0
- package/dist/Verbs/BuildMaafApp.d.ts +6 -0
- package/dist/Verbs/BuildMaafApp.d.ts.map +1 -0
- package/dist/Verbs/BuildMaafApp.js +97 -0
- package/dist/Verbs/BuildMaafApp.js.map +1 -0
- package/dist/Verbs/ConnectorHelpers.d.ts +37 -0
- package/dist/Verbs/ConnectorHelpers.d.ts.map +1 -0
- package/dist/Verbs/ConnectorHelpers.js +116 -0
- package/dist/Verbs/ConnectorHelpers.js.map +1 -0
- package/dist/Verbs/CreateMaafApp.d.ts +25 -0
- package/dist/Verbs/CreateMaafApp.d.ts.map +1 -0
- package/dist/Verbs/CreateMaafApp.js +565 -0
- package/dist/Verbs/CreateMaafApp.js.map +1 -0
- package/dist/Verbs/DeleteDataSource.d.ts +6 -0
- package/dist/Verbs/DeleteDataSource.d.ts.map +1 -0
- package/dist/Verbs/DeleteDataSource.js +106 -0
- package/dist/Verbs/DeleteDataSource.js.map +1 -0
- package/dist/Verbs/DeleteMaafApp.d.ts +23 -0
- package/dist/Verbs/DeleteMaafApp.d.ts.map +1 -0
- package/dist/Verbs/DeleteMaafApp.js +99 -0
- package/dist/Verbs/DeleteMaafApp.js.map +1 -0
- package/dist/Verbs/DeployMaafApp.d.ts +6 -0
- package/dist/Verbs/DeployMaafApp.d.ts.map +1 -0
- package/dist/Verbs/DeployMaafApp.js +96 -0
- package/dist/Verbs/DeployMaafApp.js.map +1 -0
- package/dist/Verbs/Dev.d.ts +6 -0
- package/dist/Verbs/Dev.d.ts.map +1 -0
- package/dist/Verbs/Dev.js +214 -0
- package/dist/Verbs/Dev.js.map +1 -0
- package/dist/Verbs/FindDataverseApi.d.ts +12 -0
- package/dist/Verbs/FindDataverseApi.d.ts.map +1 -0
- package/dist/Verbs/FindDataverseApi.js +101 -0
- package/dist/Verbs/FindDataverseApi.js.map +1 -0
- package/dist/Verbs/GetMaafApp.d.ts +6 -0
- package/dist/Verbs/GetMaafApp.d.ts.map +1 -0
- package/dist/Verbs/GetMaafApp.js +60 -0
- package/dist/Verbs/GetMaafApp.js.map +1 -0
- package/dist/Verbs/GetMaafBuildStatus.d.ts +6 -0
- package/dist/Verbs/GetMaafBuildStatus.d.ts.map +1 -0
- package/dist/Verbs/GetMaafBuildStatus.js +68 -0
- package/dist/Verbs/GetMaafBuildStatus.js.map +1 -0
- package/dist/Verbs/GetSettings.d.ts +12 -0
- package/dist/Verbs/GetSettings.d.ts.map +1 -0
- package/dist/Verbs/GetSettings.js +48 -0
- package/dist/Verbs/GetSettings.js.map +1 -0
- package/dist/Verbs/Init.d.ts +6 -0
- package/dist/Verbs/Init.d.ts.map +1 -0
- package/dist/Verbs/Init.js +172 -0
- package/dist/Verbs/Init.js.map +1 -0
- package/dist/Verbs/ListConnectionReferences.d.ts +6 -0
- package/dist/Verbs/ListConnectionReferences.d.ts.map +1 -0
- package/dist/Verbs/ListConnectionReferences.js +70 -0
- package/dist/Verbs/ListConnectionReferences.js.map +1 -0
- package/dist/Verbs/ListConnectorActions.d.ts +6 -0
- package/dist/Verbs/ListConnectorActions.d.ts.map +1 -0
- package/dist/Verbs/ListConnectorActions.js +79 -0
- package/dist/Verbs/ListConnectorActions.js.map +1 -0
- package/dist/Verbs/ListConnectors.d.ts +6 -0
- package/dist/Verbs/ListConnectors.d.ts.map +1 -0
- package/dist/Verbs/ListConnectors.js +66 -0
- package/dist/Verbs/ListConnectors.js.map +1 -0
- package/dist/Verbs/ListDatasets.d.ts +6 -0
- package/dist/Verbs/ListDatasets.d.ts.map +1 -0
- package/dist/Verbs/ListDatasets.js +83 -0
- package/dist/Verbs/ListDatasets.js.map +1 -0
- package/dist/Verbs/ListEnvironmentVariables.d.ts +14 -0
- package/dist/Verbs/ListEnvironmentVariables.d.ts.map +1 -0
- package/dist/Verbs/ListEnvironmentVariables.js +66 -0
- package/dist/Verbs/ListEnvironmentVariables.js.map +1 -0
- package/dist/Verbs/ListFlows.d.ts +13 -0
- package/dist/Verbs/ListFlows.d.ts.map +1 -0
- package/dist/Verbs/ListFlows.js +88 -0
- package/dist/Verbs/ListFlows.js.map +1 -0
- package/dist/Verbs/ListMaafApps.d.ts +71 -0
- package/dist/Verbs/ListMaafApps.d.ts.map +1 -0
- package/dist/Verbs/ListMaafApps.js +168 -0
- package/dist/Verbs/ListMaafApps.js.map +1 -0
- package/dist/Verbs/ListSqlStoredProcedures.d.ts +6 -0
- package/dist/Verbs/ListSqlStoredProcedures.d.ts.map +1 -0
- package/dist/Verbs/ListSqlStoredProcedures.js +84 -0
- package/dist/Verbs/ListSqlStoredProcedures.js.map +1 -0
- package/dist/Verbs/ListTables.d.ts +6 -0
- package/dist/Verbs/ListTables.d.ts.map +1 -0
- package/dist/Verbs/ListTables.js +95 -0
- package/dist/Verbs/ListTables.js.map +1 -0
- package/dist/Verbs/Login.d.ts +6 -0
- package/dist/Verbs/Login.d.ts.map +1 -0
- package/dist/Verbs/Login.js +28 -0
- package/dist/Verbs/Login.js.map +1 -0
- package/dist/Verbs/Logout.d.ts +6 -0
- package/dist/Verbs/Logout.d.ts.map +1 -0
- package/dist/Verbs/Logout.js +28 -0
- package/dist/Verbs/Logout.js.map +1 -0
- package/dist/Verbs/MaafAppPermissions.d.ts +23 -0
- package/dist/Verbs/MaafAppPermissions.d.ts.map +1 -0
- package/dist/Verbs/MaafAppPermissions.js +278 -0
- package/dist/Verbs/MaafAppPermissions.js.map +1 -0
- package/dist/Verbs/Pack.d.ts +38 -0
- package/dist/Verbs/Pack.d.ts.map +1 -0
- package/dist/Verbs/Pack.js +106 -0
- package/dist/Verbs/Pack.js.map +1 -0
- package/dist/Verbs/PushMaafApp.d.ts +6 -0
- package/dist/Verbs/PushMaafApp.d.ts.map +1 -0
- package/dist/Verbs/PushMaafApp.js +145 -0
- package/dist/Verbs/PushMaafApp.js.map +1 -0
- package/dist/Verbs/RefreshDataSource.d.ts +6 -0
- package/dist/Verbs/RefreshDataSource.d.ts.map +1 -0
- package/dist/Verbs/RefreshDataSource.js +72 -0
- package/dist/Verbs/RefreshDataSource.js.map +1 -0
- package/dist/Verbs/RemoveFlow.d.ts +12 -0
- package/dist/Verbs/RemoveFlow.d.ts.map +1 -0
- package/dist/Verbs/RemoveFlow.js +99 -0
- package/dist/Verbs/RemoveFlow.js.map +1 -0
- package/dist/Verbs/SetSetting.d.ts +12 -0
- package/dist/Verbs/SetSetting.d.ts.map +1 -0
- package/dist/Verbs/SetSetting.js +142 -0
- package/dist/Verbs/SetSetting.js.map +1 -0
- package/dist/Verbs/ShareMaafApp.d.ts +12 -0
- package/dist/Verbs/ShareMaafApp.d.ts.map +1 -0
- package/dist/Verbs/ShareMaafApp.js +14 -0
- package/dist/Verbs/ShareMaafApp.js.map +1 -0
- package/dist/Verbs/ShowMaafApp.d.ts +94 -0
- package/dist/Verbs/ShowMaafApp.d.ts.map +1 -0
- package/dist/Verbs/ShowMaafApp.js +216 -0
- package/dist/Verbs/ShowMaafApp.js.map +1 -0
- package/dist/Verbs/TelemetrySettings.d.ts +8 -0
- package/dist/Verbs/TelemetrySettings.d.ts.map +1 -0
- package/dist/Verbs/TelemetrySettings.js +104 -0
- package/dist/Verbs/TelemetrySettings.js.map +1 -0
- package/dist/Verbs/UnshareMaafApp.d.ts +12 -0
- package/dist/Verbs/UnshareMaafApp.d.ts.map +1 -0
- package/dist/Verbs/UnshareMaafApp.js +14 -0
- package/dist/Verbs/UnshareMaafApp.js.map +1 -0
- package/dist/Verbs/VerbConstants.d.ts +433 -0
- package/dist/Verbs/VerbConstants.d.ts.map +1 -0
- package/dist/Verbs/VerbConstants.js +403 -0
- package/dist/Verbs/VerbConstants.js.map +1 -0
- package/dist/Verbs/index.d.ts +40 -0
- package/dist/Verbs/index.d.ts.map +1 -0
- package/dist/Verbs/index.js +40 -0
- package/dist/Verbs/index.js.map +1 -0
- package/package.json +43 -3
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { ConfidentialClientApplication } from '@azure/msal-node';
|
|
5
|
+
import { getAuthority } from '../CliUtils.js';
|
|
6
|
+
import { cliEnvVarFullName, getCliEnvVar } from '../Utils/EnvVars.js';
|
|
7
|
+
/**
|
|
8
|
+
* Authenticates using a service principal (client credentials flow). Requires MS_CLI_SP_CLIENT_ID,
|
|
9
|
+
* MS_CLI_SP_CLIENT_SECRET, and MS_CLI_SP_TENANT_ID environment variables. Activated via
|
|
10
|
+
* MS_CLI_USE_SP_AUTH=true (or CI=true in test runs).
|
|
11
|
+
*/
|
|
12
|
+
export class ServicePrincipalAuthenticationProvider {
|
|
13
|
+
_msalClient;
|
|
14
|
+
_clientId;
|
|
15
|
+
_clientSecret;
|
|
16
|
+
_tenantId;
|
|
17
|
+
_region;
|
|
18
|
+
constructor() {
|
|
19
|
+
const clientId = getCliEnvVar('SP_CLIENT_ID');
|
|
20
|
+
const clientSecret = getCliEnvVar('SP_CLIENT_SECRET');
|
|
21
|
+
const tenantId = getCliEnvVar('SP_TENANT_ID');
|
|
22
|
+
if (!clientId || !clientSecret || !tenantId) {
|
|
23
|
+
throw new Error(`Service principal environment variables ${cliEnvVarFullName('SP_CLIENT_ID')}, ${cliEnvVarFullName('SP_CLIENT_SECRET')}, and ${cliEnvVarFullName('SP_TENANT_ID')} must be set`);
|
|
24
|
+
}
|
|
25
|
+
this._clientId = clientId;
|
|
26
|
+
this._clientSecret = clientSecret;
|
|
27
|
+
this._tenantId = tenantId;
|
|
28
|
+
}
|
|
29
|
+
async initAsync(region) {
|
|
30
|
+
this._region = region;
|
|
31
|
+
const authConfig = {
|
|
32
|
+
auth: {
|
|
33
|
+
clientId: this._clientId,
|
|
34
|
+
clientSecret: this._clientSecret,
|
|
35
|
+
authority: getAuthority(this._region, this._tenantId),
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
this._msalClient = new ConfidentialClientApplication(authConfig);
|
|
39
|
+
}
|
|
40
|
+
async getAccessTokenForResource(resource, _loginHint) {
|
|
41
|
+
if (!this._msalClient) {
|
|
42
|
+
throw new Error('Authentication not initialized yet');
|
|
43
|
+
}
|
|
44
|
+
const clientCredentialRequest = {
|
|
45
|
+
scopes: [resource + '/.default'],
|
|
46
|
+
};
|
|
47
|
+
const result = await this._msalClient.acquireTokenByClientCredential(clientCredentialRequest);
|
|
48
|
+
if (!result?.accessToken) {
|
|
49
|
+
throw new Error('Failed to acquire token using service principal');
|
|
50
|
+
}
|
|
51
|
+
return result.accessToken;
|
|
52
|
+
}
|
|
53
|
+
getUserTenantId() {
|
|
54
|
+
return this._tenantId;
|
|
55
|
+
}
|
|
56
|
+
async getCachedAccountAsync() {
|
|
57
|
+
return `Service Principal:${this._clientId}`;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=ServicePrincipalAuthenticationProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServicePrincipalAuthenticationProvider.js","sourceRoot":"","sources":["../../src/Authentication/ServicePrincipalAuthenticationProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAGjE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,OAAO,sCAAsC;IACzC,WAAW,CAA4C;IACvD,SAAS,CAAS;IAClB,aAAa,CAAS;IACtB,SAAS,CAAS;IAClB,OAAO,CAAqB;IAEpC;QACE,MAAM,QAAQ,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,2CAA2C,iBAAiB,CAAC,cAAc,CAAC,KAAK,iBAAiB,CAAC,kBAAkB,CAAC,SAAS,iBAAiB,CAAC,cAAc,CAAC,cAAc,CAC/K,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAAc;QACnC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,MAAM,UAAU,GAAkB;YAChC,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI,CAAC,SAAS;gBACxB,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;aACtD;SACF,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,IAAI,6BAA6B,CAAC,UAAU,CAAC,CAAC;IACnE,CAAC;IAEM,KAAK,CAAC,yBAAyB,CAAC,QAAgB,EAAE,UAAmB;QAC1E,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,uBAAuB,GAAG;YAC9B,MAAM,EAAE,CAAC,QAAQ,GAAG,WAAW,CAAC;SACjC,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,8BAA8B,CAAC,uBAAuB,CAAC,CAAC;QAE9F,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,MAAM,CAAC,WAAW,CAAC;IAC5B,CAAC;IAEM,eAAe;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,qBAAqB;QAChC,OAAO,qBAAqB,IAAI,CAAC,SAAS,EAAE,CAAC;IAC/C,CAAC;CACF"}
|
package/dist/Bin.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bin.d.ts","sourceRoot":"","sources":["../src/Bin.ts"],"names":[],"mappings":";AAEA;;GAEG"}
|
package/dist/Bin.js
ADDED
package/dist/Bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bin.js","sourceRoot":"","sources":["../src/Bin.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7B,IAAI,EAAE,CAAC"}
|
package/dist/Cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Cli.d.ts","sourceRoot":"","sources":["../src/Cli.ts"],"names":[],"mappings":"AAiBA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAmF1C"}
|
package/dist/Cli.js
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { Clouds, cloudToRegion } from '@microsoft/apps-common/services';
|
|
5
|
+
import { ArgumentProvider } from './ArgumentProvider.js';
|
|
6
|
+
import { OrchardAuthenticationProvider } from './Authentication/OrchardAuthenticationProvider.js';
|
|
7
|
+
import { initializeCliSettings, setCliLogger } from './CliSettings.js';
|
|
8
|
+
import { AppError } from './Errors/CliError.js';
|
|
9
|
+
import { CliHttpClient } from './HttpClient/CliHttpClient.js';
|
|
10
|
+
import { OrchardProxy } from './HttpClient/OrchardProxy.js';
|
|
11
|
+
import { CliLogger } from './Logger/CliLogger.js';
|
|
12
|
+
import { printError, printJsonError } from './Utils/ConsoleOutput.js';
|
|
13
|
+
import { getCliEnvVarBool, getSystemEnvVar, setSystemEnvVar } from './Utils/EnvVars.js';
|
|
14
|
+
let logger;
|
|
15
|
+
let exitCode = 0;
|
|
16
|
+
export async function boot() {
|
|
17
|
+
let argumentProvider;
|
|
18
|
+
try {
|
|
19
|
+
if (process.argv.includes('--no-color')) {
|
|
20
|
+
setSystemEnvVar('NO_COLOR', '1');
|
|
21
|
+
}
|
|
22
|
+
const isTestRun = getSystemEnvVar('CI') === 'true';
|
|
23
|
+
const hasNonInteractiveFlag = process.argv.includes('--non-interactive');
|
|
24
|
+
const source = 'standalone';
|
|
25
|
+
const interactive = !isTestRun && !hasNonInteractiveFlag && process.stdin.isTTY === true;
|
|
26
|
+
const cliSettings = await initializeCliSettings({ source, interactive });
|
|
27
|
+
let authenticationProvider;
|
|
28
|
+
let httpClient;
|
|
29
|
+
if (getCliEnvVarBool('CONFIG_PROXY')) {
|
|
30
|
+
const configCloud = cliSettings.appConfig?.cloud;
|
|
31
|
+
const cloud = configCloud && Clouds.includes(configCloud.toLowerCase())
|
|
32
|
+
? configCloud.toLowerCase()
|
|
33
|
+
: 'public';
|
|
34
|
+
const region = cloudToRegion(cloud);
|
|
35
|
+
authenticationProvider = new OrchardAuthenticationProvider();
|
|
36
|
+
httpClient = new CliHttpClient(authenticationProvider, [new OrchardProxy(region)]);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
if (isTestRun || getCliEnvVarBool('USE_SP_AUTH')) {
|
|
40
|
+
const { ServicePrincipalAuthenticationProvider } = await import('./Authentication/ServicePrincipalAuthenticationProvider.js');
|
|
41
|
+
authenticationProvider = new ServicePrincipalAuthenticationProvider();
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// Dynamically import NodeMsalAuthenticationProvider only when needed
|
|
45
|
+
const { NodeMsalAuthenticationProvider } = await import('./Authentication/NodeMsalAuthenticationProvider.js');
|
|
46
|
+
authenticationProvider = new NodeMsalAuthenticationProvider();
|
|
47
|
+
}
|
|
48
|
+
httpClient = new CliHttpClient(authenticationProvider);
|
|
49
|
+
}
|
|
50
|
+
// The CLI logger might need to use httpClient and environment info during its initialization
|
|
51
|
+
// So we create it after the httpClient and authenticationProvider are ready
|
|
52
|
+
logger = await CliLogger.create(cliSettings, httpClient);
|
|
53
|
+
setCliLogger(logger);
|
|
54
|
+
argumentProvider = new ArgumentProvider(httpClient, logger, authenticationProvider);
|
|
55
|
+
argumentProvider.handleGlobalHelpOrFlagsAndExit();
|
|
56
|
+
// Dispatch via the resolved command from the registry
|
|
57
|
+
const resolved = argumentProvider.getResolvedCommand();
|
|
58
|
+
if (resolved) {
|
|
59
|
+
await resolved.handler(argumentProvider);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// Fallback: getVerb() will throw a UsageError for unknown commands
|
|
63
|
+
argumentProvider.getVerb();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
68
|
+
exitCode = err instanceof AppError ? err.exitCode : 1;
|
|
69
|
+
// Prefer the ArgumentProvider's parsed view of `--json` once it exists —
|
|
70
|
+
// it won't be fooled by `--json` appearing as a value to another flag
|
|
71
|
+
// (e.g. `--display-name --json`). For very early throws (before
|
|
72
|
+
// construction) fall back to an argv peek, same trick used for
|
|
73
|
+
// --no-color above.
|
|
74
|
+
const isJson = argumentProvider?.isJsonMode() ?? process.argv.includes('--json');
|
|
75
|
+
if (isJson) {
|
|
76
|
+
printJsonError(message, exitCode);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
printError(message);
|
|
80
|
+
}
|
|
81
|
+
logger?.trackErrorEvent('CLI.UnhandledError', {
|
|
82
|
+
message,
|
|
83
|
+
exitCode,
|
|
84
|
+
name: err instanceof Error ? err.name : undefined,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
// Ensure logger flush on exit
|
|
89
|
+
if (logger) {
|
|
90
|
+
await logger.flush();
|
|
91
|
+
}
|
|
92
|
+
process.exit(exitCode);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=Cli.js.map
|
package/dist/Cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Cli.js","sourceRoot":"","sources":["../src/Cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import type { ILogger } from '@microsoft/apps-common/telemetry';
|
|
5
|
+
import type { CliSettings, LocalFilePaths } from './Types/Cli.types.js';
|
|
6
|
+
export declare function initializeCliSettings({ source, interactive, fileConfig, }: {
|
|
7
|
+
source: 'pac-cli' | 'standalone';
|
|
8
|
+
interactive: boolean;
|
|
9
|
+
fileConfig?: LocalFilePaths;
|
|
10
|
+
}): Promise<CliSettings>;
|
|
11
|
+
export declare function setCliLogger(logger: ILogger): void;
|
|
12
|
+
export declare function getCliLogger(): ILogger;
|
|
13
|
+
export declare function getSettings(): CliSettings;
|
|
14
|
+
//# sourceMappingURL=CliSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CliSettings.d.ts","sourceRoot":"","sources":["../src/CliSettings.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,kCAAkC,CAAC;AAIjF,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKrE,wBAAsB,qBAAqB,CAAC,EAC1C,MAAM,EACN,WAAW,EACX,UAIC,GACF,EAAE;IACD,MAAM,EAAE,SAAS,GAAG,YAAY,CAAC;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,wBAwBA;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAElD;AAED,wBAAgB,YAAY,IAAI,OAAO,CA0BtC;AAED,wBAAgB,WAAW,IAAI,WAAW,CAOzC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import * as path from 'node:path';
|
|
5
|
+
import { readRepoConfig } from '@microsoft/apps-actions';
|
|
6
|
+
import { setVfs } from '@microsoft/apps-actions';
|
|
7
|
+
import { AppArtifactDirName, AppConfigFileName } from '@microsoft/apps-common/config';
|
|
8
|
+
import { WORKING_DIRECTORY } from './Constants.js';
|
|
9
|
+
import { CliFS } from './FS/CliFs.js';
|
|
10
|
+
let _cliSettings;
|
|
11
|
+
let _logger;
|
|
12
|
+
export async function initializeCliSettings({ source, interactive, fileConfig = {
|
|
13
|
+
appConfigPath: path.join(WORKING_DIRECTORY, AppConfigFileName),
|
|
14
|
+
schemaPath: path.join(WORKING_DIRECTORY, AppArtifactDirName, 'schemas'),
|
|
15
|
+
codeGenPath: WORKING_DIRECTORY,
|
|
16
|
+
}, }) {
|
|
17
|
+
const cliFs = new CliFS({
|
|
18
|
+
cwd: process.cwd(),
|
|
19
|
+
allowCwdRead: true,
|
|
20
|
+
allowCwdWrite: true,
|
|
21
|
+
});
|
|
22
|
+
// Set VFS at initialize to read the config
|
|
23
|
+
setVfs(cliFs);
|
|
24
|
+
let appConfig;
|
|
25
|
+
try {
|
|
26
|
+
appConfig = await readRepoConfig(fileConfig.appConfigPath);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
// Ignore error, there are commands where a config file is not needed
|
|
30
|
+
}
|
|
31
|
+
_cliSettings = {
|
|
32
|
+
source,
|
|
33
|
+
interactive,
|
|
34
|
+
fileConfig,
|
|
35
|
+
cliFs,
|
|
36
|
+
appConfig,
|
|
37
|
+
};
|
|
38
|
+
return _cliSettings;
|
|
39
|
+
}
|
|
40
|
+
export function setCliLogger(logger) {
|
|
41
|
+
_logger = logger;
|
|
42
|
+
}
|
|
43
|
+
export function getCliLogger() {
|
|
44
|
+
if (!_logger) {
|
|
45
|
+
// return a no-op logger if not initialized to prevent crashes
|
|
46
|
+
/* eslint-disable no-empty-function */
|
|
47
|
+
return {
|
|
48
|
+
trackActivityEvent: (_eventName, _eventData) => { },
|
|
49
|
+
trackVerboseEvent: (_eventName, _eventData) => { },
|
|
50
|
+
trackErrorEvent: (_eventName, _eventData) => { },
|
|
51
|
+
trackScenario: (_name, _scenarioData) => {
|
|
52
|
+
return {
|
|
53
|
+
complete: (_endScenarioData) => { },
|
|
54
|
+
failure: (_error, _failureData) => { },
|
|
55
|
+
completeWithError: (_completeWithErrorData) => { },
|
|
56
|
+
};
|
|
57
|
+
},
|
|
58
|
+
setDefaultProperty: (_name, _value) => { },
|
|
59
|
+
identifyUser: (_identity) => { },
|
|
60
|
+
get sessionId() {
|
|
61
|
+
return undefined;
|
|
62
|
+
},
|
|
63
|
+
set sessionId(_value) { },
|
|
64
|
+
flush: () => Promise.resolve(),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/* eslint-enable no-empty-function */
|
|
68
|
+
return _logger;
|
|
69
|
+
}
|
|
70
|
+
export function getSettings() {
|
|
71
|
+
if (!_cliSettings) {
|
|
72
|
+
throw new Error('CLI settings have not been initialized. Please call initializeCliSettings first.');
|
|
73
|
+
}
|
|
74
|
+
return _cliSettings;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=CliSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CliSettings.js","sourceRoot":"","sources":["../src/CliSettings.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,IAAI,YAAyB,CAAC;AAC9B,IAAI,OAAgB,CAAC;AAErB,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,EAC1C,MAAM,EACN,WAAW,EACX,UAAU,GAAG;IACX,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9D,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,CAAC;IACvE,WAAW,EAAE,iBAAiB;CAC/B,GAKF;IACC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,2CAA2C;IAC3C,MAAM,CAAC,KAAK,CAAC,CAAC;IAEd,IAAI,SAAgC,CAAC;IACrC,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,qEAAqE;IACvE,CAAC;IACD,YAAY,GAAG;QACb,MAAM;QACN,WAAW;QACX,UAAU;QACV,KAAK;QACL,SAAS;KACV,CAAC;IACF,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAe;IAC1C,OAAO,GAAG,MAAM,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,8DAA8D;QAC9D,sCAAsC;QACtC,OAAO;YACL,kBAAkB,EAAE,CAAC,UAAkB,EAAE,UAAmB,EAAE,EAAE,GAAE,CAAC;YACnE,iBAAiB,EAAE,CAAC,UAAkB,EAAE,UAAmB,EAAE,EAAE,GAAE,CAAC;YAClE,eAAe,EAAE,CAAC,UAAkB,EAAE,UAAmB,EAAE,EAAE,GAAE,CAAC;YAChE,aAAa,EAAE,CAAC,KAAa,EAAE,aAAsB,EAAmB,EAAE;gBACxE,OAAO;oBACL,QAAQ,EAAE,CAAC,gBAAyB,EAAE,EAAE,GAAE,CAAC;oBAC3C,OAAO,EAAE,CAAC,MAAgB,EAAE,YAAqB,EAAE,EAAE,GAAE,CAAC;oBACxD,iBAAiB,EAAE,CAAC,sBAA+B,EAAE,EAAE,GAAE,CAAC;iBAC3D,CAAC;YACJ,CAAC;YACD,kBAAkB,EAAE,CAAC,KAAa,EAAE,MAAc,EAAE,EAAE,GAAE,CAAC;YACzD,YAAY,EAAE,CAAC,SAAiB,EAAE,EAAE,GAAE,CAAC;YACvC,IAAI,SAAS;gBACX,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,SAAS,CAAC,MAAc,IAAG,CAAC;YAChC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;SAC/B,CAAC;IACJ,CAAC;IACD,qCAAqC;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;IACJ,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { Region } from '@microsoft/apps-common/services';
|
|
2
|
+
import type { ArgumentProvider } from './ArgumentProvider.js';
|
|
3
|
+
import type { CliOption, DefaultStringOption } from './Types/Argument.types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Prompts the user for text input. Exits the process if the user cancels.
|
|
6
|
+
*/
|
|
7
|
+
export declare function promptText(options: {
|
|
8
|
+
message: string;
|
|
9
|
+
initialValue?: string;
|
|
10
|
+
}): Promise<string>;
|
|
11
|
+
/**
|
|
12
|
+
* Prompts the user for confirmation. Exits the process if the user cancels.
|
|
13
|
+
*/
|
|
14
|
+
export declare function promptConfirm(options: {
|
|
15
|
+
message: string;
|
|
16
|
+
initialValue?: boolean;
|
|
17
|
+
}): Promise<boolean>;
|
|
18
|
+
/**
|
|
19
|
+
* Prompts the user to select from a list of options. Exits the process if the user cancels.
|
|
20
|
+
*/
|
|
21
|
+
export declare function promptSelect<T>(options: {
|
|
22
|
+
message: string;
|
|
23
|
+
options: Array<{
|
|
24
|
+
value: T;
|
|
25
|
+
label: string;
|
|
26
|
+
hint?: string;
|
|
27
|
+
}>;
|
|
28
|
+
}): Promise<T>;
|
|
29
|
+
/**
|
|
30
|
+
* Prompts the user to select from a list, with search filtering and an "Enter manually..."
|
|
31
|
+
* fallback. When the list exceeds pageSize (default 10), shows a search prompt first so the
|
|
32
|
+
* user can narrow the results before picking. Exits the process if the user cancels.
|
|
33
|
+
*/
|
|
34
|
+
export declare function promptSelectOrInput(options: {
|
|
35
|
+
message: string;
|
|
36
|
+
options: Array<{
|
|
37
|
+
value: string;
|
|
38
|
+
label: string;
|
|
39
|
+
hint?: string;
|
|
40
|
+
}>;
|
|
41
|
+
manualPromptMessage?: string;
|
|
42
|
+
pageSize?: number;
|
|
43
|
+
}): Promise<string>;
|
|
44
|
+
export declare function createDefaultStringOption(options: DefaultStringOption): CliOption<string>;
|
|
45
|
+
/**
|
|
46
|
+
* Extracts the short environment ID from either a short name or a full ARM resource path.
|
|
47
|
+
*
|
|
48
|
+
* ARM path: /providers/Microsoft.PowerApps/environments/default-91bee3d9-0c15-4f17-8624-c92bb8b36ead
|
|
49
|
+
* Short name: default-91bee3d9-0c15-4f17-8624-c92bb8b36ead
|
|
50
|
+
*
|
|
51
|
+
* Both inputs return: default-91bee3d9-0c15-4f17-8624-c92bb8b36ead
|
|
52
|
+
*/
|
|
53
|
+
export declare function extractEnvironmentId(value: string): string;
|
|
54
|
+
/**
|
|
55
|
+
* Extracts the short app identifier (usually a GUID) from either a short name or a full
|
|
56
|
+
* ARM resource path.
|
|
57
|
+
*
|
|
58
|
+
* ARM path: /providers/Microsoft.PowerApps/apps/9f8c4b2a-1234-4abc-9876-1f2e3d4c5b6a
|
|
59
|
+
* Short name: 9f8c4b2a-1234-4abc-9876-1f2e3d4c5b6a
|
|
60
|
+
*
|
|
61
|
+
* Both inputs return: 9f8c4b2a-1234-4abc-9876-1f2e3d4c5b6a
|
|
62
|
+
*/
|
|
63
|
+
export declare function extractAppId(value: string): string;
|
|
64
|
+
/**
|
|
65
|
+
* Resolves the app identifier from the --app/-a flag, falling back to `appId` in
|
|
66
|
+
* ms.config.json when the flag is omitted. Used by app-scoped verbs (build,
|
|
67
|
+
* deploy, info, build-status) so a user inside a scaffolded app directory doesn't
|
|
68
|
+
* need to pass --app every time.
|
|
69
|
+
*/
|
|
70
|
+
export declare function resolveAppNameAsync(argumentProvider: ArgumentProvider): Promise<string>;
|
|
71
|
+
/**
|
|
72
|
+
* Resolves the environment ID for app-scoped MAAF verbs (delete, info, share,
|
|
73
|
+
* unshare, etc.) and pushes it into player services so the URL builder targets
|
|
74
|
+
* the right tenant cluster.
|
|
75
|
+
*
|
|
76
|
+
* Resolution order — flag wins so `--environment-id` is an explicit override:
|
|
77
|
+
* 1. `--environment-id` flag (read with `ignorePrompt: true`; verbs register it
|
|
78
|
+
* as `optionalInNonInteractive`, so getOption returns undefined when omitted).
|
|
79
|
+
* 2. `argumentProvider.getEnvironmentId()`, which `ArgumentProvider` seeds in its
|
|
80
|
+
* constructor from `ms.config.json` (the supported flow) or the
|
|
81
|
+
* `MS_CLI_MAAF_DEBUG_ENVIRONMENT_ID` env var when config omits it.
|
|
82
|
+
*
|
|
83
|
+
* Throws a config-pointing `UsageError` when neither side resolves. On success,
|
|
84
|
+
* calls `updateEnvironmentName` so the singleton player services config that
|
|
85
|
+
* `getPowerPlatformApiEnvironmentConfig` reads matches the resolved value
|
|
86
|
+
* (without this, the override is silently discarded — a wrong-env footgun for
|
|
87
|
+
* destructive verbs like delete).
|
|
88
|
+
*/
|
|
89
|
+
export declare function resolveEnvironmentId(argumentProvider: ArgumentProvider): Promise<string>;
|
|
90
|
+
export declare function isGuid(value: string): boolean;
|
|
91
|
+
export declare function getAuthority(region: Region | undefined, tenantId: string | undefined): string;
|
|
92
|
+
//# sourceMappingURL=CliUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CliUtils.d.ts","sourceRoot":"","sources":["../src/CliUtils.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7E;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,MAAM,CAAC,CAOlB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5D,GAAG,OAAO,CAAC,CAAC,CAAC,CAOb;AAQD;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmClB;AA+DD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAAC,MAAM,CAAC,CAWzF;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAU7F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,oBAAoB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAa9F;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAG7C;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAU7F"}
|
package/dist/CliUtils.js
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import * as prompts from '@clack/prompts';
|
|
5
|
+
import { isCancel } from '@clack/prompts';
|
|
6
|
+
import { updateEnvironmentName } from '@microsoft/apps-actions';
|
|
7
|
+
import { AppConfigFileName } from '@microsoft/apps-common/config';
|
|
8
|
+
import { getSettings } from './CliSettings.js';
|
|
9
|
+
import { UsageError } from './Errors/CliError.js';
|
|
10
|
+
import { printWarning } from './Utils/ConsoleOutput.js';
|
|
11
|
+
/**
|
|
12
|
+
* Prompts the user for text input. Exits the process if the user cancels.
|
|
13
|
+
*/
|
|
14
|
+
export async function promptText(options) {
|
|
15
|
+
const result = await prompts.text(options);
|
|
16
|
+
if (isCancel(result)) {
|
|
17
|
+
printWarning('Operation cancelled by user.');
|
|
18
|
+
process.exit(0);
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Prompts the user for confirmation. Exits the process if the user cancels.
|
|
24
|
+
*/
|
|
25
|
+
export async function promptConfirm(options) {
|
|
26
|
+
const result = await prompts.confirm(options);
|
|
27
|
+
if (isCancel(result)) {
|
|
28
|
+
printWarning('Operation cancelled by user.');
|
|
29
|
+
process.exit(0);
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Prompts the user to select from a list of options. Exits the process if the user cancels.
|
|
35
|
+
*/
|
|
36
|
+
export async function promptSelect(options) {
|
|
37
|
+
const result = await prompts.select(options);
|
|
38
|
+
if (isCancel(result)) {
|
|
39
|
+
printWarning('Operation cancelled by user.');
|
|
40
|
+
process.exit(0);
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
const ENTER_MANUALLY = '__enter_manually__';
|
|
45
|
+
const PREV_PAGE = '__prev_page__';
|
|
46
|
+
const NEXT_PAGE = '__next_page__';
|
|
47
|
+
const SEARCH_AGAIN = '__search_again__';
|
|
48
|
+
const DEFAULT_PAGE_SIZE = 10;
|
|
49
|
+
/**
|
|
50
|
+
* Prompts the user to select from a list, with search filtering and an "Enter manually..."
|
|
51
|
+
* fallback. When the list exceeds pageSize (default 10), shows a search prompt first so the
|
|
52
|
+
* user can narrow the results before picking. Exits the process if the user cancels.
|
|
53
|
+
*/
|
|
54
|
+
export async function promptSelectOrInput(options) {
|
|
55
|
+
const pageSize = options.pageSize ?? DEFAULT_PAGE_SIZE;
|
|
56
|
+
const allItems = options.options;
|
|
57
|
+
// Small list — plain select with manual fallback, no search needed.
|
|
58
|
+
if (allItems.length <= pageSize) {
|
|
59
|
+
return _selectPage(options.message, allItems, options.manualPromptMessage, false);
|
|
60
|
+
}
|
|
61
|
+
// Large list — search loop: filter first, then pick from results.
|
|
62
|
+
let filter = '';
|
|
63
|
+
let selected = SEARCH_AGAIN;
|
|
64
|
+
while (selected === SEARCH_AGAIN) {
|
|
65
|
+
const lower = filter.toLowerCase();
|
|
66
|
+
const filtered = filter
|
|
67
|
+
? allItems.filter((i) => i.label.toLowerCase().includes(lower) || i.value.toLowerCase().includes(lower))
|
|
68
|
+
: allItems;
|
|
69
|
+
const filterHint = filter
|
|
70
|
+
? ` — filtering "${filter}" (${filtered.length}/${allItems.length})`
|
|
71
|
+
: ` (${allItems.length} total)`;
|
|
72
|
+
selected = await _selectPageLoop(`${options.message}${filterHint}`, filtered, options.manualPromptMessage, pageSize);
|
|
73
|
+
if (selected === SEARCH_AGAIN) {
|
|
74
|
+
filter = await promptText({ message: 'Filter (leave blank to show all):' });
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return selected;
|
|
78
|
+
}
|
|
79
|
+
async function _selectPageLoop(message, items, manualPromptMessage, pageSize) {
|
|
80
|
+
if (items.length <= pageSize) {
|
|
81
|
+
return _selectPage(message, items, manualPromptMessage, true);
|
|
82
|
+
}
|
|
83
|
+
const totalPages = Math.ceil(items.length / pageSize);
|
|
84
|
+
let page = 0;
|
|
85
|
+
let selected = PREV_PAGE;
|
|
86
|
+
while (selected === PREV_PAGE || selected === NEXT_PAGE) {
|
|
87
|
+
const start = page * pageSize;
|
|
88
|
+
const pageItems = items.slice(start, start + pageSize);
|
|
89
|
+
const choices = [];
|
|
90
|
+
if (page > 0) {
|
|
91
|
+
choices.push({ value: PREV_PAGE, label: '← Previous page' });
|
|
92
|
+
}
|
|
93
|
+
choices.push(...pageItems);
|
|
94
|
+
if (page < totalPages - 1) {
|
|
95
|
+
const remaining = items.length - (start + pageSize);
|
|
96
|
+
choices.push({ value: NEXT_PAGE, label: `Next page → (${remaining} more)` });
|
|
97
|
+
}
|
|
98
|
+
choices.push({ value: SEARCH_AGAIN, label: '(Search / filter...)' });
|
|
99
|
+
choices.push({ value: ENTER_MANUALLY, label: '(Enter manually...)' });
|
|
100
|
+
const pageLabel = `${message} [page ${page + 1}/${totalPages}]`;
|
|
101
|
+
selected = await promptSelect({ message: pageLabel, options: choices });
|
|
102
|
+
if (selected === PREV_PAGE) {
|
|
103
|
+
page--;
|
|
104
|
+
}
|
|
105
|
+
else if (selected === NEXT_PAGE) {
|
|
106
|
+
page++;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return selected;
|
|
110
|
+
}
|
|
111
|
+
async function _selectPage(message, items, manualPromptMessage, includeSearchAgain) {
|
|
112
|
+
const choices = [...items];
|
|
113
|
+
if (includeSearchAgain) {
|
|
114
|
+
choices.push({ value: SEARCH_AGAIN, label: '(Search / filter...)' });
|
|
115
|
+
}
|
|
116
|
+
choices.push({ value: ENTER_MANUALLY, label: '(Enter manually...)' });
|
|
117
|
+
const selected = await promptSelect({ message, options: choices });
|
|
118
|
+
if (selected === ENTER_MANUALLY) {
|
|
119
|
+
return promptText({ message: manualPromptMessage ?? message });
|
|
120
|
+
}
|
|
121
|
+
return selected;
|
|
122
|
+
}
|
|
123
|
+
export function createDefaultStringOption(options) {
|
|
124
|
+
const { flags, env, message, initialValue, description, default: defaultValue } = options;
|
|
125
|
+
return {
|
|
126
|
+
flags,
|
|
127
|
+
env,
|
|
128
|
+
description,
|
|
129
|
+
default: defaultValue,
|
|
130
|
+
customPrompt: async () => {
|
|
131
|
+
return await promptText({ message, initialValue });
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Extracts the short environment ID from either a short name or a full ARM resource path.
|
|
137
|
+
*
|
|
138
|
+
* ARM path: /providers/Microsoft.PowerApps/environments/default-91bee3d9-0c15-4f17-8624-c92bb8b36ead
|
|
139
|
+
* Short name: default-91bee3d9-0c15-4f17-8624-c92bb8b36ead
|
|
140
|
+
*
|
|
141
|
+
* Both inputs return: default-91bee3d9-0c15-4f17-8624-c92bb8b36ead
|
|
142
|
+
*/
|
|
143
|
+
export function extractEnvironmentId(value) {
|
|
144
|
+
const match = value.match(/\/environments\/([^/]+)\/?$/);
|
|
145
|
+
return match ? match[1] : value;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Extracts the short app identifier (usually a GUID) from either a short name or a full
|
|
149
|
+
* ARM resource path.
|
|
150
|
+
*
|
|
151
|
+
* ARM path: /providers/Microsoft.PowerApps/apps/9f8c4b2a-1234-4abc-9876-1f2e3d4c5b6a
|
|
152
|
+
* Short name: 9f8c4b2a-1234-4abc-9876-1f2e3d4c5b6a
|
|
153
|
+
*
|
|
154
|
+
* Both inputs return: 9f8c4b2a-1234-4abc-9876-1f2e3d4c5b6a
|
|
155
|
+
*/
|
|
156
|
+
export function extractAppId(value) {
|
|
157
|
+
const match = value.match(/\/apps\/([^/]+)\/?$/);
|
|
158
|
+
return match ? match[1] : value;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Resolves the app identifier from the --app/-a flag, falling back to `appId` in
|
|
162
|
+
* ms.config.json when the flag is omitted. Used by app-scoped verbs (build,
|
|
163
|
+
* deploy, info, build-status) so a user inside a scaffolded app directory doesn't
|
|
164
|
+
* need to pass --app every time.
|
|
165
|
+
*/
|
|
166
|
+
export async function resolveAppNameAsync(argumentProvider) {
|
|
167
|
+
const fromFlag = await argumentProvider.getOption('app', /* ignorePrompt */ true);
|
|
168
|
+
const fromConfig = getSettings().appConfig?.appId;
|
|
169
|
+
const appName = fromFlag ?? fromConfig;
|
|
170
|
+
if (!appName) {
|
|
171
|
+
throw new UsageError(`Argument app is required. Use --app or -a to specify it, or run this command from a directory with a ${AppConfigFileName} (created by \`ms app create\`).`);
|
|
172
|
+
}
|
|
173
|
+
return appName;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Resolves the environment ID for app-scoped MAAF verbs (delete, info, share,
|
|
177
|
+
* unshare, etc.) and pushes it into player services so the URL builder targets
|
|
178
|
+
* the right tenant cluster.
|
|
179
|
+
*
|
|
180
|
+
* Resolution order — flag wins so `--environment-id` is an explicit override:
|
|
181
|
+
* 1. `--environment-id` flag (read with `ignorePrompt: true`; verbs register it
|
|
182
|
+
* as `optionalInNonInteractive`, so getOption returns undefined when omitted).
|
|
183
|
+
* 2. `argumentProvider.getEnvironmentId()`, which `ArgumentProvider` seeds in its
|
|
184
|
+
* constructor from `ms.config.json` (the supported flow) or the
|
|
185
|
+
* `MS_CLI_MAAF_DEBUG_ENVIRONMENT_ID` env var when config omits it.
|
|
186
|
+
*
|
|
187
|
+
* Throws a config-pointing `UsageError` when neither side resolves. On success,
|
|
188
|
+
* calls `updateEnvironmentName` so the singleton player services config that
|
|
189
|
+
* `getPowerPlatformApiEnvironmentConfig` reads matches the resolved value
|
|
190
|
+
* (without this, the override is silently discarded — a wrong-env footgun for
|
|
191
|
+
* destructive verbs like delete).
|
|
192
|
+
*/
|
|
193
|
+
export async function resolveEnvironmentId(argumentProvider) {
|
|
194
|
+
const fromFlag = await argumentProvider.getOption('environmentId',
|
|
195
|
+
/* ignorePrompt */ true);
|
|
196
|
+
const environmentId = fromFlag ?? argumentProvider.getEnvironmentId();
|
|
197
|
+
if (!environmentId) {
|
|
198
|
+
throw new UsageError(`No environment ID found. Use --environment-id or -e to specify it, or run this command from a directory with a ${AppConfigFileName} (created by \`ms app create\`).`);
|
|
199
|
+
}
|
|
200
|
+
updateEnvironmentName(environmentId);
|
|
201
|
+
return environmentId;
|
|
202
|
+
}
|
|
203
|
+
export function isGuid(value) {
|
|
204
|
+
const guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
205
|
+
return guidRegex.test(value);
|
|
206
|
+
}
|
|
207
|
+
export function getAuthority(region, tenantId) {
|
|
208
|
+
switch (region) {
|
|
209
|
+
case 'gcchigh':
|
|
210
|
+
case 'dod':
|
|
211
|
+
return `https://login.microsoftonline.us/${tenantId || 'organizations'}`;
|
|
212
|
+
case 'mooncake':
|
|
213
|
+
return `https://login.partner.microsoftonline.cn/${tenantId || 'organizations'}`;
|
|
214
|
+
default:
|
|
215
|
+
return `https://login.microsoftonline.com/${tenantId || 'organizations'}`;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=CliUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CliUtils.js","sourceRoot":"","sources":["../src/CliUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CliConstants.d.ts","sourceRoot":"","sources":["../../src/Constants/CliConstants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mEAAmE;AACnE,eAAO,MAAM,eAAe,OAAO,CAAC"}
|