@microsoft/managed-apps-cli 0.6.1 → 0.8.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 +56 -10
- package/dist/ArgumentProvider.d.ts +21 -2
- package/dist/ArgumentProvider.d.ts.map +1 -1
- package/dist/ArgumentProvider.js +47 -3
- package/dist/ArgumentProvider.js.map +1 -1
- package/dist/Authentication/ActiveAccountStore.d.ts +24 -0
- package/dist/Authentication/ActiveAccountStore.d.ts.map +1 -0
- package/dist/Authentication/ActiveAccountStore.js +54 -0
- package/dist/Authentication/ActiveAccountStore.js.map +1 -0
- package/dist/Authentication/NodeMsalAuthenticationProvider.d.ts +57 -3
- package/dist/Authentication/NodeMsalAuthenticationProvider.d.ts.map +1 -1
- package/dist/Authentication/NodeMsalAuthenticationProvider.js +187 -27
- package/dist/Authentication/NodeMsalAuthenticationProvider.js.map +1 -1
- package/dist/Cli.d.ts.map +1 -1
- package/dist/Cli.js +8 -2
- package/dist/Cli.js.map +1 -1
- package/dist/CliSettings.d.ts.map +1 -1
- package/dist/CliSettings.js +1 -2
- package/dist/CliSettings.js.map +1 -1
- package/dist/CliUtils.d.ts +2 -1
- package/dist/CliUtils.d.ts.map +1 -1
- package/dist/CliUtils.js +4 -0
- package/dist/CliUtils.js.map +1 -1
- package/dist/Constants/CommandRegistry.d.ts.map +1 -1
- package/dist/Constants/CommandRegistry.js +44 -6
- package/dist/Constants/CommandRegistry.js.map +1 -1
- package/dist/Constants/HelpStrings.d.ts +75 -3
- package/dist/Constants/HelpStrings.d.ts.map +1 -1
- package/dist/Constants/HelpStrings.js +143 -41
- package/dist/Constants/HelpStrings.js.map +1 -1
- package/dist/Errors/GitHubErrorMap.d.ts +3 -3
- package/dist/Errors/GitHubErrorMap.d.ts.map +1 -1
- package/dist/Errors/GitHubErrorMap.js +12 -7
- package/dist/Errors/GitHubErrorMap.js.map +1 -1
- package/dist/FS/CliFs.d.ts.map +1 -1
- package/dist/FS/CliFs.js.map +1 -1
- package/dist/HttpClient/CliHttpClient.d.ts +17 -0
- package/dist/HttpClient/CliHttpClient.d.ts.map +1 -1
- package/dist/HttpClient/CliHttpClient.js +112 -1
- package/dist/HttpClient/CliHttpClient.js.map +1 -1
- package/dist/Logger/CliLogger.d.ts.map +1 -1
- package/dist/Logger/CliLogger.js +1 -1
- package/dist/Logger/CliLogger.js.map +1 -1
- package/dist/Logger/ConsoleWriter.d.ts.map +1 -1
- package/dist/Logger/ConsoleWriter.js +7 -7
- package/dist/Logger/ConsoleWriter.js.map +1 -1
- package/dist/Middletier/FunctionsBundler.d.ts +17 -0
- package/dist/Middletier/FunctionsBundler.d.ts.map +1 -0
- package/dist/Middletier/FunctionsBundler.js +165 -0
- package/dist/Middletier/FunctionsBundler.js.map +1 -0
- package/dist/Middletier/PackFunctions.d.ts +52 -0
- package/dist/Middletier/PackFunctions.d.ts.map +1 -0
- package/dist/Middletier/PackFunctions.js +122 -0
- package/dist/Middletier/PackFunctions.js.map +1 -0
- package/dist/Types/Cli.types.d.ts +42 -1
- package/dist/Types/Cli.types.d.ts.map +1 -1
- package/dist/Types/Command.types.d.ts +14 -3
- package/dist/Types/Command.types.d.ts.map +1 -1
- package/dist/Types/Command.types.js +4 -0
- package/dist/Types/Command.types.js.map +1 -1
- package/dist/Utils/BuildPolling.d.ts +18 -0
- package/dist/Utils/BuildPolling.d.ts.map +1 -0
- package/dist/Utils/BuildPolling.js +63 -0
- package/dist/Utils/BuildPolling.js.map +1 -0
- package/dist/Utils/BuildVerbDescriptionTable.d.ts +11 -1
- package/dist/Utils/BuildVerbDescriptionTable.d.ts.map +1 -1
- package/dist/Utils/BuildVerbDescriptionTable.js +73 -17
- package/dist/Utils/BuildVerbDescriptionTable.js.map +1 -1
- package/dist/Utils/ConsoleOutput.d.ts.map +1 -1
- package/dist/Utils/ConsoleOutput.js +15 -12
- package/dist/Utils/ConsoleOutput.js.map +1 -1
- package/dist/Utils/DcfRecovery.d.ts +84 -0
- package/dist/Utils/DcfRecovery.d.ts.map +1 -0
- package/dist/Utils/DcfRecovery.js +258 -0
- package/dist/Utils/DcfRecovery.js.map +1 -0
- package/dist/Utils/EnhanceNetworkError.d.ts.map +1 -1
- package/dist/Utils/EnhanceNetworkError.js +2 -0
- package/dist/Utils/EnhanceNetworkError.js.map +1 -1
- package/dist/Utils/EnvVars.d.ts +1 -1
- package/dist/Utils/EnvVars.d.ts.map +1 -1
- package/dist/Utils/EnvVars.js.map +1 -1
- package/dist/Utils/EnvironmentRoutingUtils.d.ts +8 -0
- package/dist/Utils/EnvironmentRoutingUtils.d.ts.map +1 -0
- package/dist/Utils/EnvironmentRoutingUtils.js +45 -0
- package/dist/Utils/EnvironmentRoutingUtils.js.map +1 -0
- package/dist/Utils/GitHubDcfFlow.d.ts +4 -5
- package/dist/Utils/GitHubDcfFlow.d.ts.map +1 -1
- package/dist/Utils/GitHubDcfFlow.js +4 -5
- package/dist/Utils/GitHubDcfFlow.js.map +1 -1
- package/dist/Utils/GitUtils.d.ts +5 -0
- package/dist/Utils/GitUtils.d.ts.map +1 -1
- package/dist/Utils/GitUtils.js +15 -0
- package/dist/Utils/GitUtils.js.map +1 -1
- package/dist/Utils/Paging.d.ts.map +1 -1
- package/dist/Utils/Paging.js +4 -4
- package/dist/Utils/Paging.js.map +1 -1
- package/dist/Utils/ResolveCommand.d.ts +7 -1
- package/dist/Utils/ResolveCommand.d.ts.map +1 -1
- package/dist/Utils/ResolveCommand.js +38 -20
- package/dist/Utils/ResolveCommand.js.map +1 -1
- package/dist/Utils/Spinner.d.ts +9 -1
- package/dist/Utils/Spinner.d.ts.map +1 -1
- package/dist/Utils/Spinner.js +25 -5
- package/dist/Utils/Spinner.js.map +1 -1
- package/dist/Verbs/AddAction.d.ts.map +1 -1
- package/dist/Verbs/AddAction.js +12 -41
- package/dist/Verbs/AddAction.js.map +1 -1
- package/dist/Verbs/AddConnector.d.ts +24 -0
- package/dist/Verbs/AddConnector.d.ts.map +1 -0
- package/dist/Verbs/AddConnector.js +156 -0
- package/dist/Verbs/AddConnector.js.map +1 -0
- package/dist/Verbs/AddConnectorFlows.d.ts +72 -0
- package/dist/Verbs/AddConnectorFlows.d.ts.map +1 -0
- package/dist/Verbs/AddConnectorFlows.js +198 -0
- package/dist/Verbs/AddConnectorFlows.js.map +1 -0
- package/dist/Verbs/AddDataSource.js +1 -1
- package/dist/Verbs/AddDataSource.js.map +1 -1
- package/dist/Verbs/AddTable.d.ts.map +1 -1
- package/dist/Verbs/AddTable.js +15 -100
- package/dist/Verbs/AddTable.js.map +1 -1
- package/dist/Verbs/AuthStatus.d.ts.map +1 -1
- package/dist/Verbs/AuthStatus.js +34 -6
- package/dist/Verbs/AuthStatus.js.map +1 -1
- package/dist/Verbs/AuthSwitch.d.ts +6 -0
- package/dist/Verbs/AuthSwitch.d.ts.map +1 -0
- package/dist/Verbs/AuthSwitch.js +67 -0
- package/dist/Verbs/AuthSwitch.js.map +1 -0
- package/dist/Verbs/BuildMaafApp.d.ts.map +1 -1
- package/dist/Verbs/BuildMaafApp.js +98 -22
- package/dist/Verbs/BuildMaafApp.js.map +1 -1
- package/dist/Verbs/ConnectorHelpers.d.ts +54 -1
- package/dist/Verbs/ConnectorHelpers.d.ts.map +1 -1
- package/dist/Verbs/ConnectorHelpers.js +217 -16
- package/dist/Verbs/ConnectorHelpers.js.map +1 -1
- package/dist/Verbs/CreateMaafApp.d.ts +75 -0
- package/dist/Verbs/CreateMaafApp.d.ts.map +1 -1
- package/dist/Verbs/CreateMaafApp.js +273 -75
- package/dist/Verbs/CreateMaafApp.js.map +1 -1
- package/dist/Verbs/DeployMaafApp.d.ts.map +1 -1
- package/dist/Verbs/DeployMaafApp.js +52 -20
- package/dist/Verbs/DeployMaafApp.js.map +1 -1
- package/dist/Verbs/Dev.js +5 -5
- package/dist/Verbs/Dev.js.map +1 -1
- package/dist/Verbs/GetMaafBuildStatus.d.ts.map +1 -1
- package/dist/Verbs/GetMaafBuildStatus.js +66 -17
- package/dist/Verbs/GetMaafBuildStatus.js.map +1 -1
- package/dist/Verbs/Init.d.ts.map +1 -1
- package/dist/Verbs/Init.js +170 -60
- package/dist/Verbs/Init.js.map +1 -1
- package/dist/Verbs/ListConnectors.d.ts.map +1 -1
- package/dist/Verbs/ListConnectors.js +4 -2
- package/dist/Verbs/ListConnectors.js.map +1 -1
- package/dist/Verbs/ListDatasets.d.ts.map +1 -1
- package/dist/Verbs/ListDatasets.js +5 -0
- package/dist/Verbs/ListDatasets.js.map +1 -1
- package/dist/Verbs/ListFlows.d.ts.map +1 -1
- package/dist/Verbs/ListFlows.js +1 -2
- package/dist/Verbs/ListFlows.js.map +1 -1
- package/dist/Verbs/ListSqlStoredProcedures.d.ts.map +1 -1
- package/dist/Verbs/ListSqlStoredProcedures.js +5 -0
- package/dist/Verbs/ListSqlStoredProcedures.js.map +1 -1
- package/dist/Verbs/ListTables.d.ts.map +1 -1
- package/dist/Verbs/ListTables.js +5 -0
- package/dist/Verbs/ListTables.js.map +1 -1
- package/dist/Verbs/Login.d.ts.map +1 -1
- package/dist/Verbs/Login.js +16 -13
- package/dist/Verbs/Login.js.map +1 -1
- package/dist/Verbs/Logout.d.ts.map +1 -1
- package/dist/Verbs/Logout.js +19 -13
- package/dist/Verbs/Logout.js.map +1 -1
- package/dist/Verbs/MaafAppPermissions.d.ts.map +1 -1
- package/dist/Verbs/MaafAppPermissions.js +4 -0
- package/dist/Verbs/MaafAppPermissions.js.map +1 -1
- package/dist/Verbs/Pack.d.ts +6 -6
- package/dist/Verbs/Pack.d.ts.map +1 -1
- package/dist/Verbs/Pack.js +80 -12
- package/dist/Verbs/Pack.js.map +1 -1
- package/dist/Verbs/PlayMaafApp.d.ts +22 -0
- package/dist/Verbs/PlayMaafApp.d.ts.map +1 -0
- package/dist/Verbs/PlayMaafApp.js +147 -0
- package/dist/Verbs/PlayMaafApp.js.map +1 -0
- package/dist/Verbs/RefreshDataSource.d.ts.map +1 -1
- package/dist/Verbs/RefreshDataSource.js.map +1 -1
- package/dist/Verbs/RefreshGitAuth.d.ts.map +1 -1
- package/dist/Verbs/RefreshGitAuth.js +1 -1
- package/dist/Verbs/RefreshGitAuth.js.map +1 -1
- package/dist/Verbs/ShareLinkCreate.d.ts +23 -0
- package/dist/Verbs/ShareLinkCreate.d.ts.map +1 -0
- package/dist/Verbs/ShareLinkCreate.js +73 -0
- package/dist/Verbs/ShareLinkCreate.js.map +1 -0
- package/dist/Verbs/ShareLinkList.d.ts +16 -0
- package/dist/Verbs/ShareLinkList.d.ts.map +1 -0
- package/dist/Verbs/ShareLinkList.js +84 -0
- package/dist/Verbs/ShareLinkList.js.map +1 -0
- package/dist/Verbs/ShareLinkRevoke.d.ts +22 -0
- package/dist/Verbs/ShareLinkRevoke.d.ts.map +1 -0
- package/dist/Verbs/ShareLinkRevoke.js +137 -0
- package/dist/Verbs/ShareLinkRevoke.js.map +1 -0
- package/dist/Verbs/VerbConstants.d.ts +151 -21
- package/dist/Verbs/VerbConstants.d.ts.map +1 -1
- package/dist/Verbs/VerbConstants.js +127 -21
- package/dist/Verbs/VerbConstants.js.map +1 -1
- package/dist/Verbs/index.d.ts +6 -0
- package/dist/Verbs/index.d.ts.map +1 -1
- package/dist/Verbs/index.js +6 -0
- package/dist/Verbs/index.js.map +1 -1
- package/package.json +8 -8
package/dist/Verbs/AddTable.js
CHANGED
|
@@ -1,23 +1,16 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import { getCliLogger, getSettings } from '../CliSettings.js';
|
|
6
|
-
import { createDefaultStringOption, promptSelectOrInput } from '../CliUtils.js';
|
|
4
|
+
import { createDefaultStringOption } from '../CliUtils.js';
|
|
7
5
|
import { CLI_BINARY_NAME } from '../Constants/CliConstants.js';
|
|
8
6
|
import { HelpStrings } from '../Constants/HelpStrings.js';
|
|
9
7
|
import { UsageError } from '../Errors/CliError.js';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
8
|
+
import { isTabularConnector, runAddTableFlowAsync } from './AddConnectorFlows.js';
|
|
9
|
+
import { runConnectorDlpPreflightAsync } from './ConnectorHelpers.js';
|
|
12
10
|
import { AddTableArguments, SharedArguments } from './VerbConstants.js';
|
|
13
11
|
export async function addTableAsync(argumentProvider) {
|
|
14
|
-
const settings = getSettings();
|
|
15
|
-
const { fileConfig, cliFs } = settings;
|
|
16
12
|
createOptionSchema(argumentProvider);
|
|
17
13
|
await argumentProvider.runVerb();
|
|
18
|
-
const playerServiceConfig = getPlayerServiceConfig();
|
|
19
|
-
const authProvider = argumentProvider.getAuthenticationProvider();
|
|
20
|
-
const logger = getCliLogger();
|
|
21
14
|
const apiId = await argumentProvider.getOption('apiId');
|
|
22
15
|
const connectionIdFlag = await argumentProvider.getOption('connectionId', true);
|
|
23
16
|
const datasetFlag = await argumentProvider.getOption('dataset', true);
|
|
@@ -27,97 +20,19 @@ export async function addTableAsync(argumentProvider) {
|
|
|
27
20
|
// ── Preflight: connector + DLP policy (throws on not-found or blocked) ────
|
|
28
21
|
const { connector } = await runConnectorDlpPreflightAsync(argumentProvider, apiId);
|
|
29
22
|
// ── Tabular capability check ──────────────────────────────────────────────
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
throw new UsageError(`Connector '${connector.properties.displayName ?? apiId}' does not support tabular data sources. Use '${CLI_BINARY_NAME} app add action' instead.`);
|
|
23
|
+
if (!isTabularConnector(connector)) {
|
|
24
|
+
throw new UsageError(`Connector '${connector.properties.displayName ?? apiId}' does not support tabular data sources. Use '${CLI_BINARY_NAME} app add connector --as action' instead.`);
|
|
33
25
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
environmentName: playerServiceConfig.environmentName,
|
|
45
|
-
localFilePaths,
|
|
46
|
-
logger,
|
|
47
|
-
};
|
|
48
|
-
// ── Step 1: Connection resolution ─────────────────────────────────────────
|
|
49
|
-
let connectionId = connectionIdFlag;
|
|
50
|
-
if (!connectionId) {
|
|
51
|
-
connectionId = await resolveConnectionInteractivelyAsync({
|
|
52
|
-
argumentProvider,
|
|
53
|
-
apiId,
|
|
54
|
-
connector,
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
// ── Step 2: Dataset resolution ────────────────────────────────────────────
|
|
58
|
-
let dataset = datasetFlag;
|
|
59
|
-
if (!dataset) {
|
|
60
|
-
const datasetsCtx = {
|
|
61
|
-
...baseContext,
|
|
62
|
-
actionsParams: { apiId, connectionId },
|
|
63
|
-
};
|
|
64
|
-
const { value: datasets } = await listDatasetsAsync(datasetsCtx);
|
|
65
|
-
if (!settings.interactive) {
|
|
66
|
-
printTable({
|
|
67
|
-
title: `Available datasets for ${connector.properties.displayName ?? apiId}`,
|
|
68
|
-
columns: [{ header: 'Display Name', maxWidth: 40 }, { header: 'Dataset Name' }],
|
|
69
|
-
rows: datasets.map((d) => [d.DisplayName || d.Name, d.Name]),
|
|
70
|
-
emptyMessage: 'No datasets found for this connection.',
|
|
71
|
-
totalLabel: 'dataset(s) found',
|
|
72
|
-
});
|
|
73
|
-
throw new UsageError(`Re-run with --dataset <name> or -d <name>.`);
|
|
74
|
-
}
|
|
75
|
-
dataset = await promptSelectOrInput({
|
|
76
|
-
message: 'Select a dataset:',
|
|
77
|
-
options: datasets.map((d) => ({
|
|
78
|
-
value: d.Name,
|
|
79
|
-
label: d.DisplayName || d.Name,
|
|
80
|
-
hint: d.Name,
|
|
81
|
-
})),
|
|
82
|
-
manualPromptMessage: 'Enter dataset name:',
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
// ── Step 3: Table resolution ──────────────────────────────────────────────
|
|
86
|
-
let tableName = tableFlag;
|
|
87
|
-
if (!tableName) {
|
|
88
|
-
const tablesCtx = {
|
|
89
|
-
...baseContext,
|
|
90
|
-
actionsParams: { apiId, connectionId, dataset },
|
|
91
|
-
};
|
|
92
|
-
const { value: tables } = await listTablesAsync(tablesCtx);
|
|
93
|
-
if (!settings.interactive) {
|
|
94
|
-
printTable({
|
|
95
|
-
title: `Available tables in dataset '${dataset}'`,
|
|
96
|
-
columns: [{ header: 'Display Name', maxWidth: 40 }, { header: 'Table Name' }],
|
|
97
|
-
rows: tables.map((t) => [t.DisplayName || t.Name, t.Name]),
|
|
98
|
-
emptyMessage: 'No tables found in this dataset.',
|
|
99
|
-
totalLabel: 'table(s) found',
|
|
100
|
-
});
|
|
101
|
-
throw new UsageError(`Re-run with --table <name> or -t <name>.`);
|
|
102
|
-
}
|
|
103
|
-
tableName = await promptSelectOrInput({
|
|
104
|
-
message: 'Select a table:',
|
|
105
|
-
options: tables.map((t) => ({
|
|
106
|
-
value: t.Name,
|
|
107
|
-
label: t.DisplayName || t.Name,
|
|
108
|
-
hint: t.Name,
|
|
109
|
-
})),
|
|
110
|
-
manualPromptMessage: 'Enter table name:',
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
// ── Step 4: Add the table ─────────────────────────────────────────────────
|
|
114
|
-
const context = {
|
|
115
|
-
...baseContext,
|
|
116
|
-
actionsParams: { apiId, connectionId, dataset, tableName, skipCodegen, useV1Codegen },
|
|
117
|
-
};
|
|
118
|
-
await addConnectorTableAsync(context);
|
|
119
|
-
printSuccess(`Table '${tableName}' from connector '${connector.properties.displayName ?? apiId}' added successfully.`);
|
|
120
|
-
printInfo(`Hint: Run 'npx ${CLI_BINARY_NAME} dev' to test locally, or 'npx ${CLI_BINARY_NAME} push' to deploy.`);
|
|
26
|
+
await runAddTableFlowAsync({
|
|
27
|
+
argumentProvider,
|
|
28
|
+
connector,
|
|
29
|
+
apiId,
|
|
30
|
+
connectionIdFlag,
|
|
31
|
+
datasetFlag,
|
|
32
|
+
tableFlag,
|
|
33
|
+
skipCodegen,
|
|
34
|
+
useV1Codegen,
|
|
35
|
+
});
|
|
121
36
|
}
|
|
122
37
|
function createOptionSchema(argumentProvider) {
|
|
123
38
|
argumentProvider.setDescription(HelpStrings.app.add.table.description);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddTable.js","sourceRoot":"","sources":["../../src/Verbs/AddTable.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"AddTable.js","sourceRoot":"","sources":["../../src/Verbs/AddTable.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthStatus.d.ts","sourceRoot":"","sources":["../../src/Verbs/AuthStatus.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"AuthStatus.d.ts","sourceRoot":"","sources":["../../src/Verbs/AuthStatus.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAK5D,wBAAsB,eAAe,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CvF"}
|
package/dist/Verbs/AuthStatus.js
CHANGED
|
@@ -1,18 +1,46 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
+
import { CLI_BINARY_NAME } from '../Constants/CliConstants.js';
|
|
4
5
|
import { HelpStrings } from '../Constants/HelpStrings.js';
|
|
5
|
-
import { printInfo, printWarning } from '../Utils/ConsoleOutput.js';
|
|
6
|
+
import { printInfo, printJsonSuccess, printTable, printWarning } from '../Utils/ConsoleOutput.js';
|
|
6
7
|
export async function authStatusAsync(argumentProvider) {
|
|
7
8
|
argumentProvider.setDescription(HelpStrings.auth.status.description);
|
|
8
9
|
argumentProvider.addExamples(HelpStrings.auth.status.examples);
|
|
9
10
|
await argumentProvider.runVerb();
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
const accounts = await argumentProvider.getAccountManager().listCachedAccountsAsync();
|
|
12
|
+
const jsonMode = argumentProvider.isJsonMode();
|
|
13
|
+
if (jsonMode) {
|
|
14
|
+
const active = accounts.find((a) => a.isActive);
|
|
15
|
+
printJsonSuccess({
|
|
16
|
+
signedIn: accounts.length > 0,
|
|
17
|
+
activeAccount: active
|
|
18
|
+
? { username: active.username, homeAccountId: active.homeAccountId }
|
|
19
|
+
: null,
|
|
20
|
+
accounts: accounts.map((a) => ({
|
|
21
|
+
username: a.username,
|
|
22
|
+
homeAccountId: a.homeAccountId,
|
|
23
|
+
isActive: a.isActive,
|
|
24
|
+
})),
|
|
25
|
+
});
|
|
26
|
+
return;
|
|
13
27
|
}
|
|
14
|
-
|
|
15
|
-
printWarning(
|
|
28
|
+
if (accounts.length === 0) {
|
|
29
|
+
printWarning(`Not signed in. Run \`${CLI_BINARY_NAME} auth login\` to authenticate.`);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (accounts.length === 1) {
|
|
33
|
+
printInfo(`Signed in as ${accounts[0].username}`);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const hasActive = accounts.some((a) => a.isActive);
|
|
37
|
+
printTable({
|
|
38
|
+
title: 'Cached accounts',
|
|
39
|
+
columns: [{ header: 'Active' }, { header: 'Username' }],
|
|
40
|
+
rows: accounts.map((a) => [a.isActive ? '*' : '', a.username]),
|
|
41
|
+
});
|
|
42
|
+
if (!hasActive) {
|
|
43
|
+
printWarning(`No active account selected. Run \`${CLI_BINARY_NAME} auth switch\` to choose one.`);
|
|
16
44
|
}
|
|
17
45
|
}
|
|
18
46
|
//# sourceMappingURL=AuthStatus.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthStatus.js","sourceRoot":"","sources":["../../src/Verbs/AuthStatus.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"AuthStatus.js","sourceRoot":"","sources":["../../src/Verbs/AuthStatus.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE/F,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,gBAAkC;IACtE,gBAAgB,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACrE,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE/D,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;IAEjC,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,uBAAuB,EAAE,CAAC;IACtF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,EAAE,CAAC;IAE/C,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAChD,gBAAgB,CAAC;YACf,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC7B,aAAa,EAAE,MAAM;gBACnB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE;gBACpE,CAAC,CAAC,IAAI;YACR,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7B,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,QAAQ,EAAE,CAAC,CAAC,QAAQ;aACrB,CAAC,CAAC;SACJ,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,YAAY,CAAC,wBAAwB,eAAe,gCAAgC,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,gBAAgB,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACnD,UAAU,CAAC;QACT,KAAK,EAAE,iBAAiB;QACxB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QACvD,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;KAC/D,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,YAAY,CACV,qCAAqC,eAAe,+BAA+B,CACpF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import type { ArgumentProvider } from '../ArgumentProvider.js';
|
|
5
|
+
export declare function authSwitchAsync(argumentProvider: ArgumentProvider): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=AuthSwitch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthSwitch.d.ts","sourceRoot":"","sources":["../../src/Verbs/AuthSwitch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAS5D,wBAAsB,eAAe,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDvF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { getSettings } from '../CliSettings.js';
|
|
5
|
+
import { promptSelect } from '../CliUtils.js';
|
|
6
|
+
import { CLI_BINARY_NAME } from '../Constants/CliConstants.js';
|
|
7
|
+
import { HelpStrings } from '../Constants/HelpStrings.js';
|
|
8
|
+
import { UsageError } from '../Errors/CliError.js';
|
|
9
|
+
import { printJsonSuccess, printSuccess, printWarning } from '../Utils/ConsoleOutput.js';
|
|
10
|
+
import { AccountArguments } from './VerbConstants.js';
|
|
11
|
+
export async function authSwitchAsync(argumentProvider) {
|
|
12
|
+
argumentProvider.setDescription(HelpStrings.auth.switch.description);
|
|
13
|
+
argumentProvider.addExamples(HelpStrings.auth.switch.examples);
|
|
14
|
+
argumentProvider.addOption({
|
|
15
|
+
flags: { key: AccountArguments.Account.name },
|
|
16
|
+
description: HelpStrings.auth.switch.options.account,
|
|
17
|
+
optionalInNonInteractive: true,
|
|
18
|
+
});
|
|
19
|
+
await argumentProvider.runVerb();
|
|
20
|
+
const accountManager = argumentProvider.getAccountManager();
|
|
21
|
+
const requested = await argumentProvider.getOption(AccountArguments.Account.name, true);
|
|
22
|
+
const jsonMode = argumentProvider.isJsonMode();
|
|
23
|
+
const accounts = await accountManager.listCachedAccountsAsync();
|
|
24
|
+
if (accounts.length === 0) {
|
|
25
|
+
if (jsonMode) {
|
|
26
|
+
printJsonSuccess({ activeAccount: null });
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
printWarning(`No cached accounts. Run \`${CLI_BINARY_NAME} auth login\` first.`);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
let target = requested;
|
|
33
|
+
if (!target) {
|
|
34
|
+
if (accounts.length === 1) {
|
|
35
|
+
// No-op confirmation: the only account is also the active one.
|
|
36
|
+
const onlyAccount = await accountManager.setActiveAccountAsync(accounts[0].homeAccountId);
|
|
37
|
+
_emitSuccess(onlyAccount.username, onlyAccount.homeAccountId, jsonMode);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// JSON-mode callers can't sensibly answer an interactive picker, so we treat
|
|
41
|
+
// `--json` as implying non-interactive for the disambiguation prompt — same
|
|
42
|
+
// way we treat `--non-interactive` itself.
|
|
43
|
+
if (jsonMode || !getSettings().interactive) {
|
|
44
|
+
throw new UsageError(`Multiple accounts are cached. Pass --account <email> to choose one.\n` +
|
|
45
|
+
accounts.map((a) => ` - ${a.username}`).join('\n'));
|
|
46
|
+
}
|
|
47
|
+
target = await promptSelect({
|
|
48
|
+
message: 'Choose the active account:',
|
|
49
|
+
options: accounts.map((a) => ({
|
|
50
|
+
value: a.homeAccountId,
|
|
51
|
+
label: a.username,
|
|
52
|
+
hint: a.isActive ? 'currently active' : undefined,
|
|
53
|
+
})),
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
const resolved = await accountManager.setActiveAccountAsync(target);
|
|
57
|
+
_emitSuccess(resolved.username, resolved.homeAccountId, jsonMode);
|
|
58
|
+
}
|
|
59
|
+
function _emitSuccess(username, homeAccountId, jsonMode) {
|
|
60
|
+
if (jsonMode) {
|
|
61
|
+
printJsonSuccess({ activeAccount: { username, homeAccountId } });
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
printSuccess(`Active account is ${username}.`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=AuthSwitch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthSwitch.js","sourceRoot":"","sources":["../../src/Verbs/AuthSwitch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildMaafApp.d.ts","sourceRoot":"","sources":["../../src/Verbs/BuildMaafApp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"BuildMaafApp.d.ts","sourceRoot":"","sources":["../../src/Verbs/BuildMaafApp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAW5D,wBAAsB,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoIzF"}
|
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { buildAsync } from '@microsoft/managed-apps-actions';
|
|
5
5
|
import { AppConfigFileName } from '@microsoft/managed-apps-common/config';
|
|
6
|
-
import { getCliLogger } from '../CliSettings.js';
|
|
6
|
+
import { getCliLogger, getSettings } from '../CliSettings.js';
|
|
7
7
|
import { resolveAppNameAsync } from '../CliUtils.js';
|
|
8
8
|
import { HelpStrings } from '../Constants/HelpStrings.js';
|
|
9
9
|
import { UsageError } from '../Errors/CliError.js';
|
|
10
|
-
import {
|
|
10
|
+
import { waitForBuildStatusAsync } from '../Utils/BuildPolling.js';
|
|
11
|
+
import { printInfo, printJsonLine, printJsonSuccess, printSuccess } from '../Utils/ConsoleOutput.js';
|
|
12
|
+
import { withGitHubDcfRecoveryAsync } from '../Utils/DcfRecovery.js';
|
|
11
13
|
import { resolveGitDefaults } from '../Utils/GitUtils.js';
|
|
12
14
|
import { BuildMaafAppArguments } from './VerbConstants.js';
|
|
13
15
|
export async function buildMaafAppAsync(argumentProvider) {
|
|
@@ -25,6 +27,7 @@ export async function buildMaafAppAsync(argumentProvider) {
|
|
|
25
27
|
throw new UsageError('Unable to determine tenant ID. Ensure you are logged in.');
|
|
26
28
|
}
|
|
27
29
|
const appName = await resolveAppNameAsync(argumentProvider);
|
|
30
|
+
const noWait = (await argumentProvider.getOption('noWait')) === true;
|
|
28
31
|
// Resolve commit SHA: --commit flag → current HEAD → error
|
|
29
32
|
const commitFromFlag = await argumentProvider.getOption('commit',
|
|
30
33
|
/* ignorePrompt */ true);
|
|
@@ -42,44 +45,85 @@ export async function buildMaafAppAsync(argumentProvider) {
|
|
|
42
45
|
branch = gitDefaults.detached ? undefined : gitDefaults.branch;
|
|
43
46
|
resolvedFromGit = true;
|
|
44
47
|
}
|
|
45
|
-
|
|
48
|
+
const jsonMode = argumentProvider.isJsonMode();
|
|
49
|
+
if (resolvedFromGit && !jsonMode) {
|
|
46
50
|
printInfo(branch
|
|
47
51
|
? `Using branch '${branch}' at commit ${commitSha}.`
|
|
48
52
|
: `Detached HEAD at commit ${commitSha}.`);
|
|
49
53
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
54
|
+
// repoType / externalRepoUrl drive the catch-and-retry branch. Both come
|
|
55
|
+
// from ms.config.json via CliSettings; absent or non-github → no DCF.
|
|
56
|
+
const appConfig = getSettings().appConfig;
|
|
57
|
+
const repoType = appConfig?.repoType;
|
|
58
|
+
const externalRepoUrl = appConfig?.externalRepoUrl;
|
|
59
|
+
const openBrowser = (await argumentProvider.getOption(BuildMaafAppArguments.OpenBrowser.camelName,
|
|
60
|
+
/* ignorePrompt */ true)) ?? false;
|
|
61
|
+
// Forces DCF re-authentication even when a valid mapping exists.
|
|
62
|
+
const forceReauth = (await argumentProvider.getOption(BuildMaafAppArguments.ForceReauth.camelName,
|
|
63
|
+
/* ignorePrompt */ true)) ?? false;
|
|
64
|
+
// Emit a `build-validation` boundary in NDJSON output for github-bound apps so
|
|
65
|
+
// automation can distinguish the validation phase from the catch-and-retry DCF.
|
|
66
|
+
// Gated to github + json to keep the wire contract unchanged for native/none and
|
|
67
|
+
// for pretty-output consumers.
|
|
68
|
+
if (jsonMode && repoType === 'github') {
|
|
69
|
+
printJsonLine({ phase: 'build-validation' });
|
|
70
|
+
}
|
|
71
|
+
// On `repoType: 'github'`, wrap buildAsync with the DCF catch-and-retry:
|
|
72
|
+
// a missing/expired GitHub identity mapping is recovered in-band by running
|
|
73
|
+
// DCF and retrying once; any other recognized server error is mapped to a
|
|
74
|
+
// friendly CLI error. Non-github flows pass through untouched. See
|
|
75
|
+
// `withGitHubDcfRecoveryAsync` for the full contract.
|
|
76
|
+
const runBuild = ({ isRetry }) => buildAsync({
|
|
53
77
|
logger: getCliLogger(),
|
|
54
|
-
actionsParams: {
|
|
78
|
+
actionsParams: {
|
|
79
|
+
appName,
|
|
80
|
+
commitSha,
|
|
81
|
+
...(forceReauth && !isRetry && repoType === 'github' && { forceReauth: true }),
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
const result = await withGitHubDcfRecoveryAsync(runBuild, {
|
|
85
|
+
repoType,
|
|
86
|
+
externalRepoUrl,
|
|
87
|
+
tenantId,
|
|
88
|
+
jsonMode,
|
|
89
|
+
openBrowser,
|
|
90
|
+
verb: 'app build',
|
|
55
91
|
});
|
|
56
92
|
if (result === null) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
93
|
+
printCachedBuildMessage(argumentProvider.isJsonMode(), commitSha);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (noWait) {
|
|
97
|
+
printNoWaitMessage(argumentProvider.isJsonMode(), appName, commitSha);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const finalStatus = await waitForBuildStatusAsync({
|
|
101
|
+
appName,
|
|
102
|
+
commitSha,
|
|
103
|
+
initialWaitMs: result.retryAfterMs ?? 1000,
|
|
104
|
+
isJsonMode: argumentProvider.isJsonMode(),
|
|
105
|
+
});
|
|
106
|
+
if (argumentProvider.isJsonMode()) {
|
|
107
|
+
printJsonSuccess(finalStatus);
|
|
63
108
|
}
|
|
64
109
|
else {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
printSuccess(`Build started. Operation ID: ${result.operationId}`);
|
|
110
|
+
printSuccess(`Build status: ${finalStatus.status}`);
|
|
111
|
+
if (finalStatus.status === 'Succeeded') {
|
|
112
|
+
printInfo(`Run \`ms app dev\` to run your app locally, or ` +
|
|
113
|
+
`\`ms app deploy --commit ${commitSha}\` to make this app live.`);
|
|
70
114
|
}
|
|
71
115
|
}
|
|
72
116
|
}
|
|
73
117
|
function createOptionSchema(argumentProvider) {
|
|
74
|
-
argumentProvider.setDescription(HelpStrings.
|
|
75
|
-
argumentProvider.addExamples(HelpStrings.
|
|
118
|
+
argumentProvider.setDescription(HelpStrings.app.build.description);
|
|
119
|
+
argumentProvider.addExamples(HelpStrings.app.build.examples);
|
|
76
120
|
argumentProvider.addOptions([
|
|
77
121
|
{
|
|
78
122
|
flags: {
|
|
79
123
|
key: BuildMaafAppArguments.AppName.name,
|
|
80
124
|
},
|
|
81
125
|
env: BuildMaafAppArguments.AppName.envVar,
|
|
82
|
-
description: HelpStrings.
|
|
126
|
+
description: HelpStrings.app.build.options.appName,
|
|
83
127
|
optionalInNonInteractive: true,
|
|
84
128
|
},
|
|
85
129
|
{
|
|
@@ -88,9 +132,41 @@ function createOptionSchema(argumentProvider) {
|
|
|
88
132
|
alias: BuildMaafAppArguments.CommitSha.alias,
|
|
89
133
|
},
|
|
90
134
|
env: BuildMaafAppArguments.CommitSha.envVar,
|
|
91
|
-
description: HelpStrings.
|
|
135
|
+
description: HelpStrings.app.build.options.commitSha,
|
|
136
|
+
optionalInNonInteractive: true,
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
flags: {
|
|
140
|
+
key: BuildMaafAppArguments.NoWait.name,
|
|
141
|
+
},
|
|
142
|
+
description: HelpStrings.app.build.options.noWait,
|
|
92
143
|
optionalInNonInteractive: true,
|
|
93
144
|
},
|
|
94
145
|
]);
|
|
146
|
+
argumentProvider.addSwitch({
|
|
147
|
+
flags: { key: BuildMaafAppArguments.OpenBrowser.name },
|
|
148
|
+
description: HelpStrings.app.build.options.openBrowser,
|
|
149
|
+
});
|
|
150
|
+
argumentProvider.addSwitch({
|
|
151
|
+
flags: { key: BuildMaafAppArguments.ForceReauth.name },
|
|
152
|
+
description: HelpStrings.app.build.options.forceReauth,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
function printNoWaitMessage(isJsonMode, appName, commitSha) {
|
|
156
|
+
if (isJsonMode) {
|
|
157
|
+
printJsonSuccess({
|
|
158
|
+
commitSha,
|
|
159
|
+
buildStatusCommand: `ms app build-status --app ${appName} --commit ${commitSha}`,
|
|
160
|
+
});
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
printSuccess(`Build started for commit ${commitSha}. Run \`ms app build-status --app ${appName} --commit ${commitSha}\` to check status.`);
|
|
164
|
+
}
|
|
165
|
+
function printCachedBuildMessage(isJsonMode, commitSha) {
|
|
166
|
+
if (isJsonMode) {
|
|
167
|
+
printJsonSuccess({ cached: true, commitSha });
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
printSuccess('Build already up to date for this commit.');
|
|
95
171
|
}
|
|
96
172
|
//# sourceMappingURL=BuildMaafApp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildMaafApp.js","sourceRoot":"","sources":["../../src/Verbs/BuildMaafApp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAG1E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"BuildMaafApp.js","sourceRoot":"","sources":["../../src/Verbs/BuildMaafApp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAG1E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,gBAAkC;IACxE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACrC,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;IAEjC,MAAM,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;IAC1D,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,UAAU,CAClB,qFAAqF;YACnF,2EAA2E,iBAAiB,IAAI;YAChG,4FAA4F;YAC5F,UAAU,iBAAiB,kCAAkC,CAChE,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;IAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,UAAU,CAAC,0DAA0D,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,CAAC,MAAM,gBAAgB,CAAC,SAAS,CAAU,QAAQ,CAAC,CAAC,KAAK,IAAI,CAAC;IAE9E,2DAA2D;IAC3D,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,SAAS,CACrD,QAAQ;IACR,kBAAkB,CAAC,IAAI,CACxB,CAAC;IACF,IAAI,SAAS,GAAG,cAAc,CAAC;IAC/B,IAAI,MAA0B,CAAC;IAC/B,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,UAAU,CAClB,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QACD,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;QAClC,6EAA6E;QAC7E,yDAAyD;QACzD,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;QAC/D,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,EAAE,CAAC;IAE/C,IAAI,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjC,SAAS,CACP,MAAM;YACJ,CAAC,CAAC,iBAAiB,MAAM,eAAe,SAAS,GAAG;YACpD,CAAC,CAAC,2BAA2B,SAAS,GAAG,CAC5C,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,sEAAsE;IACtE,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC,SAAS,CAAC;IAC1C,MAAM,QAAQ,GAAG,SAAS,EAAE,QAAQ,CAAC;IACrC,MAAM,eAAe,GAAG,SAAS,EAAE,eAAe,CAAC;IACnD,MAAM,WAAW,GACf,CAAC,MAAM,gBAAgB,CAAC,SAAS,CAC/B,qBAAqB,CAAC,WAAW,CAAC,SAAS;IAC3C,kBAAkB,CAAC,IAAI,CACxB,CAAC,IAAI,KAAK,CAAC;IAEd,iEAAiE;IACjE,MAAM,WAAW,GACf,CAAC,MAAM,gBAAgB,CAAC,SAAS,CAC/B,qBAAqB,CAAC,WAAW,CAAC,SAAS;IAC3C,kBAAkB,CAAC,IAAI,CACxB,CAAC,IAAI,KAAK,CAAC;IAEd,+EAA+E;IAC/E,gFAAgF;IAChF,iFAAiF;IACjF,+BAA+B;IAC/B,IAAI,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtC,aAAa,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,yEAAyE;IACzE,4EAA4E;IAC5E,0EAA0E;IAC1E,mEAAmE;IACnE,sDAAsD;IACtD,MAAM,QAAQ,GAAG,CAAC,EAAE,OAAO,EAAwB,EAAiC,EAAE,CACpF,UAAU,CAAC;QACT,MAAM,EAAE,YAAY,EAAE;QACtB,aAAa,EAAE;YACb,OAAO;YACP,SAAS;YACT,GAAG,CAAC,WAAW,IAAI,CAAC,OAAO,IAAI,QAAQ,KAAK,QAAQ,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;SAC/E;KACF,CAAC,CAAC;IAEL,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,QAAQ,EAAE;QACxD,QAAQ;QACR,eAAe;QACf,QAAQ;QACR,QAAQ;QACR,WAAW;QACX,IAAI,EAAE,WAAW;KAClB,CAAC,CAAC;IAEH,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,uBAAuB,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,kBAAkB,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,uBAAuB,CAAC;QAChD,OAAO;QACP,SAAS;QACT,aAAa,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;QAC1C,UAAU,EAAE,gBAAgB,CAAC,UAAU,EAAE;KAC1C,CAAC,CAAC;IAEH,IAAI,gBAAgB,CAAC,UAAU,EAAE,EAAE,CAAC;QAClC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,iBAAiB,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACvC,SAAS,CACP,iDAAiD;gBAC/C,4BAA4B,SAAS,2BAA2B,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,gBAAkC;IAC5D,gBAAgB,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACnE,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7D,gBAAgB,CAAC,UAAU,CAAC;QAC1B;YACE,KAAK,EAAE;gBACL,GAAG,EAAE,qBAAqB,CAAC,OAAO,CAAC,IAAI;aACxC;YACD,GAAG,EAAE,qBAAqB,CAAC,OAAO,CAAC,MAAM;YACzC,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO;YAClD,wBAAwB,EAAE,IAAI;SAC/B;QACD;YACE,KAAK,EAAE;gBACL,GAAG,EAAE,qBAAqB,CAAC,SAAS,CAAC,IAAI;gBACzC,KAAK,EAAE,qBAAqB,CAAC,SAAS,CAAC,KAAK;aAC7C;YACD,GAAG,EAAE,qBAAqB,CAAC,SAAS,CAAC,MAAM;YAC3C,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS;YACpD,wBAAwB,EAAE,IAAI;SAC/B;QACD;YACE,KAAK,EAAE;gBACL,GAAG,EAAE,qBAAqB,CAAC,MAAM,CAAC,IAAI;aACvC;YACD,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;YACjD,wBAAwB,EAAE,IAAI;SAC/B;KACF,CAAC,CAAC;IACH,gBAAgB,CAAC,SAAS,CAAC;QACzB,KAAK,EAAE,EAAE,GAAG,EAAE,qBAAqB,CAAC,WAAW,CAAC,IAAI,EAAE;QACtD,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW;KACvD,CAAC,CAAC;IACH,gBAAgB,CAAC,SAAS,CAAC;QACzB,KAAK,EAAE,EAAE,GAAG,EAAE,qBAAqB,CAAC,WAAW,CAAC,IAAI,EAAE;QACtD,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW;KACvD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAmB,EAAE,OAAe,EAAE,SAAiB;IACjF,IAAI,UAAU,EAAE,CAAC;QACf,gBAAgB,CAAC;YACf,SAAS;YACT,kBAAkB,EAAE,6BAA6B,OAAO,aAAa,SAAS,EAAE;SACjF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,YAAY,CACV,4BAA4B,SAAS,qCAAqC,OAAO,aAAa,SAAS,qBAAqB,CAC7H,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,UAAmB,EAAE,SAAiB;IACrE,IAAI,UAAU,EAAE,CAAC;QACf,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,YAAY,CAAC,2CAA2C,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import type { Api } from '@microsoft/managed-apps-actions';
|
|
4
|
+
import type { Api, EffectiveConnectorDataPolicy } from '@microsoft/managed-apps-actions';
|
|
5
|
+
import type { Region } from '@microsoft/managed-apps-common/services';
|
|
5
6
|
import type { ArgumentProvider } from '../ArgumentProvider.js';
|
|
6
7
|
/**
|
|
7
8
|
* Preflight step shared by `app add action` and `app add table`. Fetches the
|
|
@@ -22,6 +23,7 @@ import type { ArgumentProvider } from '../ArgumentProvider.js';
|
|
|
22
23
|
export declare function runConnectorDlpPreflightAsync(argumentProvider: ArgumentProvider, apiId: string): Promise<{
|
|
23
24
|
connector: Api;
|
|
24
25
|
tenantId: string | undefined;
|
|
26
|
+
policy: EffectiveConnectorDataPolicy;
|
|
25
27
|
}>;
|
|
26
28
|
/**
|
|
27
29
|
* Resolves a connection for a connector. In interactive mode, lists the
|
|
@@ -34,4 +36,55 @@ export declare function resolveConnectionInteractivelyAsync(options: {
|
|
|
34
36
|
apiId: string;
|
|
35
37
|
connector: Api;
|
|
36
38
|
}): Promise<string>;
|
|
39
|
+
/**
|
|
40
|
+
* Best-effort request that the calling application be added to a connection's
|
|
41
|
+
* API Hubs ACL via the Power Platform user-consent endpoint. The server reads
|
|
42
|
+
* the calling app's `appid` from the bearer token, and the gateway resolves
|
|
43
|
+
* tenant + environment from the auth context and its routing config — so the
|
|
44
|
+
* CLI only needs to supply connector + connection identifiers, no body.
|
|
45
|
+
*
|
|
46
|
+
* Gating: requires the opt-in feature flag
|
|
47
|
+
* `MS_CLI_ENABLE_CONNECTOR_USER_CONSENT=true` (off by default while the
|
|
48
|
+
* consent endpoint is rolling out). When the flag is unset, the call is
|
|
49
|
+
* silently skipped — no warning, no telemetry, no HTTP traffic.
|
|
50
|
+
*
|
|
51
|
+
* Failure modes:
|
|
52
|
+
* - HTTP 403: emits a permission-specific warning explaining that the tenant
|
|
53
|
+
* admin must grant the calling app the
|
|
54
|
+
* `Connectivity.Connections.UserConsent` delegated permission, then returns.
|
|
55
|
+
* - Any other HTTP / network error: surfaces a generic warning and returns.
|
|
56
|
+
* The underlying `ConnectivityService` already records its own
|
|
57
|
+
* `scenario.failure` telemetry, so this helper doesn't re-emit a duplicate
|
|
58
|
+
* error event.
|
|
59
|
+
*
|
|
60
|
+
* Silent on success: a 200 OK does not guarantee the ACL was modified (the
|
|
61
|
+
* server has feature-gated silent-skip paths), so the success path emits no
|
|
62
|
+
* user-facing message.
|
|
63
|
+
*
|
|
64
|
+
* Never throws.
|
|
65
|
+
*/
|
|
66
|
+
export declare function requestCliUserConsentAsync(opts: {
|
|
67
|
+
apiId: string;
|
|
68
|
+
connectionId: string;
|
|
69
|
+
}): Promise<void>;
|
|
70
|
+
type ConnectionServerConfig = {
|
|
71
|
+
connectorName: string;
|
|
72
|
+
environmentId: string;
|
|
73
|
+
region: Region;
|
|
74
|
+
};
|
|
75
|
+
type ConnectionResult = {
|
|
76
|
+
status: 'created' | 'cancelled' | 'error';
|
|
77
|
+
connectionId?: string;
|
|
78
|
+
connectionName?: string;
|
|
79
|
+
displayName?: string;
|
|
80
|
+
errorMessage?: string;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Starts a local HTTP server, opens the maaf-player connection page in the
|
|
84
|
+
* browser, and waits for a callback with the result. Uses the same pattern
|
|
85
|
+
* as an OAuth authorization code flow: nonce for CSRF, protocol version for
|
|
86
|
+
* drift detection, and a timeout for cleanup.
|
|
87
|
+
*/
|
|
88
|
+
export declare function startConnectionServerAsync(config: ConnectionServerConfig): Promise<ConnectionResult>;
|
|
89
|
+
export {};
|
|
37
90
|
//# sourceMappingURL=ConnectorHelpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectorHelpers.d.ts","sourceRoot":"","sources":["../../src/Verbs/ConnectorHelpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"ConnectorHelpers.d.ts","sourceRoot":"","sources":["../../src/Verbs/ConnectorHelpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAUzF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAC;AAKtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAiB5D;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,6BAA6B,CACjD,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IACT,SAAS,EAAE,GAAG,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,4BAA4B,CAAC;CACtC,CAAC,CA6CD;AAED;;;;;GAKG;AACH,wBAAsB,mCAAmC,CAAC,OAAO,EAAE;IACjE,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,GAAG,CAAC;CAChB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0FlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB;AAMD,KAAK,sBAAsB,GAAG;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CAqH3B"}
|