@microsoft/managed-apps-cli 0.20.0 → 0.22.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 +1 -1
- package/THIRD-PARTY-NOTICES.txt +9549 -0
- package/dist/AddConnector-5DUBFLEK.js +41 -0
- package/dist/AuthStatus-6DMK7O6W.js +11 -0
- package/dist/AuthSwitch-NUQIIRCG.js +13 -0
- package/dist/Bin.js +8 -3
- package/dist/BuildMaafApp-A4IUU6LI.js +11 -0
- package/dist/Cli-LYSWG64H.js +54 -0
- package/dist/CloneMaafApp-B672N7T5.js +11 -0
- package/dist/CreateMaafApp-RWL7FXSP.js +20 -0
- package/dist/DeleteMaafApp-GT4CEFAE.js +11 -0
- package/dist/DeployMaafApp-E4TQU6RO.js +14 -0
- package/dist/Dev-ICCA5DEJ.js +14 -0
- package/dist/EnvironmentVariableAuthenticationProvider-LYCQ5D47.js +11 -0
- package/dist/GetMaafBuildStatus-UGAHVANE.js +11 -0
- package/dist/GetSettings-ZI2IBKV5.js +11 -0
- package/dist/InfoMaafApp-FL5PICDD.js +13 -0
- package/dist/Init-XCSK3WQM.js +11 -0
- package/dist/ListConnectorActions-B2YD24RX.js +11 -0
- package/dist/ListConnectors-MYUEVJPT.js +11 -0
- package/dist/ListMaafApps-3W6W6UYP.js +11 -0
- package/dist/Login-7RW6OEST.js +11 -0
- package/dist/Logout-IXK2TMRL.js +11 -0
- package/dist/MockFetch-THQJ4KFB.js +13 -0
- package/dist/NoOpAuthenticationProvider-DX3XNXF5.js +11 -0
- package/dist/NodeMsalAuthenticationProvider-VVQ6CCZ5.js +17 -0
- package/dist/Pack-IWU3PFQL.js +8 -0
- package/dist/PlayMaafApp-5H3DCJ2C.js +12 -0
- package/dist/RefreshDataSource-XQT7LVMO.js +11 -0
- package/dist/RefreshGitAuth-IQBAFR37.js +11 -0
- package/dist/RemoveDataSource-PGPLMJUX.js +14 -0
- package/dist/ServicePrincipalAuthenticationProvider-IZZRJFZQ.js +11 -0
- package/dist/SetSetting-SEWDA4TF.js +11 -0
- package/dist/ShareLinkCreate-T5FN47J2.js +11 -0
- package/dist/ShareLinkList-6JCVEYNC.js +11 -0
- package/dist/ShareLinkRevoke-OH5DZDHR.js +11 -0
- package/dist/ShareList-QCEL7QNJ.js +11 -0
- package/dist/ShareMaafApp-6MKZ33HW.js +11 -0
- package/dist/TelemetrySettings-RXPPIEVO.js +11 -0
- package/dist/UnshareMaafApp-OSE2TOBJ.js +11 -0
- package/dist/acorn-CYBWGE5M.js +23 -0
- package/dist/angular-Q62TJP23.js +11 -0
- package/dist/babel-AOXBHIIS.js +22 -0
- package/dist/chunk-23T63QIT.js +15 -0
- package/dist/chunk-3JIZGVCA.js +11 -0
- package/dist/chunk-3YRE4IQ3.js +132 -0
- package/dist/chunk-47LJLFDF.js +11 -0
- package/dist/chunk-4LIR3ZYP.js +42325 -0
- package/dist/chunk-4VBFOKV6.js +11 -0
- package/dist/chunk-6LKH5WE7.js +104 -0
- package/dist/chunk-6RSE3J4X.js +8 -0
- package/dist/chunk-7BRIEYGR.js +20 -0
- package/dist/chunk-7GGFN2IW.js +11 -0
- package/dist/chunk-AQLFVAFU.js +38 -0
- package/dist/chunk-EQCYKUEU.js +12 -0
- package/dist/chunk-EX6IKPAO.js +11 -0
- package/dist/chunk-HBLO3WDD.js +13 -0
- package/dist/chunk-IQGMFWXB.js +12 -0
- package/dist/chunk-KYL2Y5G4.js +11 -0
- package/dist/chunk-LQ65CHNN.js +13 -0
- package/dist/chunk-OL6CTXQR.js +11 -0
- package/dist/chunk-PPW4XUZO.js +77 -0
- package/dist/chunk-PVAIJSAI.js +11 -0
- package/dist/chunk-RBG2H562.js +11 -0
- package/dist/chunk-SNWTSI75.js +50 -0
- package/dist/chunk-TYRVM4PP.js +8 -0
- package/dist/chunk-UNJJUCSA.js +11 -0
- package/dist/chunk-USRRI5H4.js +11 -0
- package/dist/chunk-UT667QSU.js +8 -0
- package/dist/chunk-VMSJG53Y.js +11 -0
- package/dist/chunk-Y5AMO72S.js +10 -0
- package/dist/chunk-YMXXWGRV.js +11 -0
- package/dist/estree-HPTPQIMZ.js +51 -0
- package/dist/flow-B6JUMONE.js +27 -0
- package/dist/glimmer-36KZ3DJ5.js +44 -0
- package/dist/graphql-E6CIFZFV.js +35 -0
- package/dist/html-BUTTPQE6.js +32 -0
- package/dist/markdown-K2C5OZHT.js +69 -0
- package/dist/meriyah-27UE2OSX.js +12 -0
- package/dist/postcss-QUHZLBB7.js +68 -0
- package/dist/typescript-G2G6TDZF.js +28 -0
- package/dist/yaml-W5P5CGFK.js +166 -0
- package/package.json +21 -16
- package/dist/ArgumentProvider.d.ts +0 -144
- package/dist/ArgumentProvider.d.ts.map +0 -1
- package/dist/ArgumentProvider.js +0 -493
- package/dist/ArgumentProvider.js.map +0 -1
- package/dist/Authentication/ActiveAccountStore.d.ts +0 -24
- package/dist/Authentication/ActiveAccountStore.d.ts.map +0 -1
- package/dist/Authentication/ActiveAccountStore.js +0 -54
- package/dist/Authentication/ActiveAccountStore.js.map +0 -1
- package/dist/Authentication/EnvironmentVariableAuthenticationProvider.d.ts +0 -26
- package/dist/Authentication/EnvironmentVariableAuthenticationProvider.d.ts.map +0 -1
- package/dist/Authentication/EnvironmentVariableAuthenticationProvider.js +0 -31
- package/dist/Authentication/EnvironmentVariableAuthenticationProvider.js.map +0 -1
- package/dist/Authentication/NoOpAuthenticationProvider.d.ts +0 -25
- package/dist/Authentication/NoOpAuthenticationProvider.d.ts.map +0 -1
- package/dist/Authentication/NoOpAuthenticationProvider.js +0 -31
- package/dist/Authentication/NoOpAuthenticationProvider.js.map +0 -1
- package/dist/Authentication/NodeMsalAuthenticationProvider.d.ts +0 -103
- package/dist/Authentication/NodeMsalAuthenticationProvider.d.ts.map +0 -1
- package/dist/Authentication/NodeMsalAuthenticationProvider.js +0 -391
- package/dist/Authentication/NodeMsalAuthenticationProvider.js.map +0 -1
- package/dist/Authentication/ServicePrincipalAuthenticationProvider.d.ts +0 -23
- package/dist/Authentication/ServicePrincipalAuthenticationProvider.d.ts.map +0 -1
- package/dist/Authentication/ServicePrincipalAuthenticationProvider.js +0 -60
- package/dist/Authentication/ServicePrincipalAuthenticationProvider.js.map +0 -1
- package/dist/Bin.d.ts +0 -6
- package/dist/Bin.d.ts.map +0 -1
- package/dist/Bin.js.map +0 -1
- package/dist/Cli.d.ts +0 -2
- package/dist/Cli.d.ts.map +0 -1
- package/dist/Cli.js +0 -207
- package/dist/Cli.js.map +0 -1
- package/dist/CliSettings.d.ts +0 -17
- package/dist/CliSettings.d.ts.map +0 -1
- package/dist/CliSettings.js +0 -103
- package/dist/CliSettings.js.map +0 -1
- package/dist/CliUtils.d.ts +0 -108
- package/dist/CliUtils.d.ts.map +0 -1
- package/dist/CliUtils.js +0 -217
- package/dist/CliUtils.js.map +0 -1
- package/dist/Constants/CliConstants.d.ts +0 -6
- package/dist/Constants/CliConstants.d.ts.map +0 -1
- package/dist/Constants/CliConstants.js +0 -6
- package/dist/Constants/CliConstants.js.map +0 -1
- package/dist/Constants/CommandRegistry.d.ts +0 -22
- package/dist/Constants/CommandRegistry.d.ts.map +0 -1
- package/dist/Constants/CommandRegistry.js +0 -245
- package/dist/Constants/CommandRegistry.js.map +0 -1
- package/dist/Constants/HelpStrings.d.ts +0 -432
- package/dist/Constants/HelpStrings.d.ts.map +0 -1
- package/dist/Constants/HelpStrings.js +0 -623
- package/dist/Constants/HelpStrings.js.map +0 -1
- package/dist/Constants.d.ts +0 -18
- package/dist/Constants.d.ts.map +0 -1
- package/dist/Constants.js +0 -41
- package/dist/Constants.js.map +0 -1
- package/dist/Errors/CliError.d.ts +0 -5
- package/dist/Errors/CliError.d.ts.map +0 -1
- package/dist/Errors/CliError.js +0 -7
- package/dist/Errors/CliError.js.map +0 -1
- package/dist/Errors/GitHubErrorMap.d.ts +0 -68
- package/dist/Errors/GitHubErrorMap.d.ts.map +0 -1
- package/dist/Errors/GitHubErrorMap.js +0 -238
- package/dist/Errors/GitHubErrorMap.js.map +0 -1
- package/dist/FS/CliFs.d.ts +0 -41
- package/dist/FS/CliFs.d.ts.map +0 -1
- package/dist/FS/CliFs.js +0 -136
- package/dist/FS/CliFs.js.map +0 -1
- package/dist/HttpClient/CliHttpClient.d.ts +0 -43
- package/dist/HttpClient/CliHttpClient.d.ts.map +0 -1
- package/dist/HttpClient/CliHttpClient.js +0 -320
- package/dist/HttpClient/CliHttpClient.js.map +0 -1
- package/dist/HttpClient/HttpForward.d.ts +0 -9
- package/dist/HttpClient/HttpForward.d.ts.map +0 -1
- package/dist/HttpClient/HttpForward.js +0 -56
- package/dist/HttpClient/HttpForward.js.map +0 -1
- package/dist/Logger/BufferedTelemetryWriter.d.ts +0 -20
- package/dist/Logger/BufferedTelemetryWriter.d.ts.map +0 -1
- package/dist/Logger/BufferedTelemetryWriter.js +0 -163
- package/dist/Logger/BufferedTelemetryWriter.js.map +0 -1
- package/dist/Logger/CliLogger.d.ts +0 -59
- package/dist/Logger/CliLogger.d.ts.map +0 -1
- package/dist/Logger/CliLogger.js +0 -364
- package/dist/Logger/CliLogger.js.map +0 -1
- package/dist/Logger/ConsoleWriter.d.ts +0 -23
- package/dist/Logger/ConsoleWriter.d.ts.map +0 -1
- package/dist/Logger/ConsoleWriter.js +0 -66
- package/dist/Logger/ConsoleWriter.js.map +0 -1
- package/dist/Logger/Constants.d.ts +0 -6
- package/dist/Logger/Constants.d.ts.map +0 -1
- package/dist/Logger/Constants.js +0 -15
- package/dist/Logger/Constants.js.map +0 -1
- package/dist/Logger/LoggerSettings.d.ts +0 -18
- package/dist/Logger/LoggerSettings.d.ts.map +0 -1
- package/dist/Logger/LoggerSettings.js +0 -78
- package/dist/Logger/LoggerSettings.js.map +0 -1
- package/dist/Logger/OneDSWriter.d.ts +0 -26
- package/dist/Logger/OneDSWriter.d.ts.map +0 -1
- package/dist/Logger/OneDSWriter.js +0 -211
- package/dist/Logger/OneDSWriter.js.map +0 -1
- package/dist/Logger/Scrubber/ScrubCustomDimensions.d.ts +0 -5
- package/dist/Logger/Scrubber/ScrubCustomDimensions.d.ts.map +0 -1
- package/dist/Logger/Scrubber/ScrubCustomDimensions.js +0 -46
- package/dist/Logger/Scrubber/ScrubCustomDimensions.js.map +0 -1
- package/dist/Logger/Scrubber/ScrubCustomDimensionsConfig.d.ts +0 -27
- package/dist/Logger/Scrubber/ScrubCustomDimensionsConfig.d.ts.map +0 -1
- package/dist/Logger/Scrubber/ScrubCustomDimensionsConfig.js +0 -168
- package/dist/Logger/Scrubber/ScrubCustomDimensionsConfig.js.map +0 -1
- package/dist/Logger/Scrubber/ScrubUtils.d.ts +0 -8
- package/dist/Logger/Scrubber/ScrubUtils.d.ts.map +0 -1
- package/dist/Logger/Scrubber/ScrubUtils.js +0 -34
- package/dist/Logger/Scrubber/ScrubUtils.js.map +0 -1
- package/dist/Middletier/FunctionsBundler.d.ts +0 -17
- package/dist/Middletier/FunctionsBundler.d.ts.map +0 -1
- package/dist/Middletier/FunctionsBundler.js +0 -169
- package/dist/Middletier/FunctionsBundler.js.map +0 -1
- package/dist/Middletier/PackFunctions.d.ts +0 -53
- package/dist/Middletier/PackFunctions.d.ts.map +0 -1
- package/dist/Middletier/PackFunctions.js +0 -123
- package/dist/Middletier/PackFunctions.js.map +0 -1
- package/dist/Testing/MockFetch.d.ts +0 -23
- package/dist/Testing/MockFetch.d.ts.map +0 -1
- package/dist/Testing/MockFetch.js +0 -177
- package/dist/Testing/MockFetch.js.map +0 -1
- package/dist/Testing/MockRoutes.d.ts +0 -34
- package/dist/Testing/MockRoutes.d.ts.map +0 -1
- package/dist/Testing/MockRoutes.js +0 -226
- package/dist/Testing/MockRoutes.js.map +0 -1
- package/dist/Testing/fixtures/connectors/commondataserviceforapps.d.ts +0 -6
- package/dist/Testing/fixtures/connectors/commondataserviceforapps.d.ts.map +0 -1
- package/dist/Testing/fixtures/connectors/commondataserviceforapps.js +0 -25
- package/dist/Testing/fixtures/connectors/commondataserviceforapps.js.map +0 -1
- package/dist/Testing/fixtures/connectors/dataverseContactEntity.d.ts +0 -6
- package/dist/Testing/fixtures/connectors/dataverseContactEntity.d.ts.map +0 -1
- package/dist/Testing/fixtures/connectors/dataverseContactEntity.js +0 -55
- package/dist/Testing/fixtures/connectors/dataverseContactEntity.js.map +0 -1
- package/dist/Testing/fixtures/connectors/excelonlinebusiness.d.ts +0 -6
- package/dist/Testing/fixtures/connectors/excelonlinebusiness.d.ts.map +0 -1
- package/dist/Testing/fixtures/connectors/excelonlinebusiness.js +0 -1970
- package/dist/Testing/fixtures/connectors/excelonlinebusiness.js.map +0 -1
- package/dist/Testing/fixtures/connectors/kusto.d.ts +0 -6
- package/dist/Testing/fixtures/connectors/kusto.d.ts.map +0 -1
- package/dist/Testing/fixtures/connectors/kusto.js +0 -1333
- package/dist/Testing/fixtures/connectors/kusto.js.map +0 -1
- package/dist/Testing/fixtures/connectors/msnweather.d.ts +0 -6
- package/dist/Testing/fixtures/connectors/msnweather.d.ts.map +0 -1
- package/dist/Testing/fixtures/connectors/msnweather.js +0 -917
- package/dist/Testing/fixtures/connectors/msnweather.js.map +0 -1
- package/dist/Testing/fixtures/connectors/office365groups.d.ts +0 -6
- package/dist/Testing/fixtures/connectors/office365groups.d.ts.map +0 -1
- package/dist/Testing/fixtures/connectors/office365groups.js +0 -2144
- package/dist/Testing/fixtures/connectors/office365groups.js.map +0 -1
- package/dist/Testing/fixtures/connectors/office365users.d.ts +0 -6
- package/dist/Testing/fixtures/connectors/office365users.d.ts.map +0 -1
- package/dist/Testing/fixtures/connectors/office365users.js +0 -1969
- package/dist/Testing/fixtures/connectors/office365users.js.map +0 -1
- package/dist/Testing/fixtures/connectors/onedriveforbusiness.d.ts +0 -6
- package/dist/Testing/fixtures/connectors/onedriveforbusiness.d.ts.map +0 -1
- package/dist/Testing/fixtures/connectors/onedriveforbusiness.js +0 -4873
- package/dist/Testing/fixtures/connectors/onedriveforbusiness.js.map +0 -1
- package/dist/Testing/fixtures/connectors/powerappsforappmakers.d.ts +0 -6
- package/dist/Testing/fixtures/connectors/powerappsforappmakers.d.ts.map +0 -1
- package/dist/Testing/fixtures/connectors/powerappsforappmakers.js +0 -4682
- package/dist/Testing/fixtures/connectors/powerappsforappmakers.js.map +0 -1
- package/dist/Testing/fixtures/connectors/sharepointTestListMetadata.d.ts +0 -6
- package/dist/Testing/fixtures/connectors/sharepointTestListMetadata.d.ts.map +0 -1
- package/dist/Testing/fixtures/connectors/sharepointTestListMetadata.js +0 -1078
- package/dist/Testing/fixtures/connectors/sharepointTestListMetadata.js.map +0 -1
- package/dist/Testing/fixtures/connectors/sharepointonline.d.ts +0 -6
- package/dist/Testing/fixtures/connectors/sharepointonline.d.ts.map +0 -1
- package/dist/Testing/fixtures/connectors/sharepointonline.js +0 -28
- package/dist/Testing/fixtures/connectors/sharepointonline.js.map +0 -1
- package/dist/Testing/fixtures/connectors/teams.d.ts +0 -6
- package/dist/Testing/fixtures/connectors/teams.d.ts.map +0 -1
- package/dist/Testing/fixtures/connectors/teams.js +0 -9987
- package/dist/Testing/fixtures/connectors/teams.js.map +0 -1
- package/dist/Testing/fixtures/connectors/translatorv2.d.ts +0 -6
- package/dist/Testing/fixtures/connectors/translatorv2.d.ts.map +0 -1
- package/dist/Testing/fixtures/connectors/translatorv2.js +0 -307
- package/dist/Testing/fixtures/connectors/translatorv2.js.map +0 -1
- package/dist/Testing/fixtures/index.d.ts +0 -23
- package/dist/Testing/fixtures/index.d.ts.map +0 -1
- package/dist/Testing/fixtures/index.js +0 -96
- package/dist/Testing/fixtures/index.js.map +0 -1
- package/dist/Types/Argument.types.d.ts +0 -28
- package/dist/Types/Argument.types.d.ts.map +0 -1
- package/dist/Types/Argument.types.js +0 -5
- package/dist/Types/Argument.types.js.map +0 -1
- package/dist/Types/Cli.types.d.ts +0 -82
- package/dist/Types/Cli.types.d.ts.map +0 -1
- package/dist/Types/Cli.types.js +0 -5
- package/dist/Types/Cli.types.js.map +0 -1
- package/dist/Types/Command.types.d.ts +0 -69
- package/dist/Types/Command.types.d.ts.map +0 -1
- package/dist/Types/Command.types.js +0 -20
- package/dist/Types/Command.types.js.map +0 -1
- package/dist/Types/Datasource.types.d.ts +0 -30
- package/dist/Types/Datasource.types.d.ts.map +0 -1
- package/dist/Types/Datasource.types.js +0 -5
- package/dist/Types/Datasource.types.js.map +0 -1
- package/dist/Types/LoggerTypes.types.d.ts +0 -18
- package/dist/Types/LoggerTypes.types.d.ts.map +0 -1
- package/dist/Types/LoggerTypes.types.js +0 -5
- package/dist/Types/LoggerTypes.types.js.map +0 -1
- package/dist/Utils/BuildPolling.d.ts +0 -43
- package/dist/Utils/BuildPolling.d.ts.map +0 -1
- package/dist/Utils/BuildPolling.js +0 -139
- package/dist/Utils/BuildPolling.js.map +0 -1
- package/dist/Utils/BuildVerbDescriptionTable.d.ts +0 -29
- package/dist/Utils/BuildVerbDescriptionTable.d.ts.map +0 -1
- package/dist/Utils/BuildVerbDescriptionTable.js +0 -147
- package/dist/Utils/BuildVerbDescriptionTable.js.map +0 -1
- package/dist/Utils/CoerceCliVersion.d.ts +0 -27
- package/dist/Utils/CoerceCliVersion.d.ts.map +0 -1
- package/dist/Utils/CoerceCliVersion.js +0 -67
- package/dist/Utils/CoerceCliVersion.js.map +0 -1
- package/dist/Utils/ConnectorIds.d.ts +0 -12
- package/dist/Utils/ConnectorIds.d.ts.map +0 -1
- package/dist/Utils/ConnectorIds.js +0 -20
- package/dist/Utils/ConnectorIds.js.map +0 -1
- package/dist/Utils/ConsoleOutput.d.ts +0 -86
- package/dist/Utils/ConsoleOutput.d.ts.map +0 -1
- package/dist/Utils/ConsoleOutput.js +0 -162
- package/dist/Utils/ConsoleOutput.js.map +0 -1
- package/dist/Utils/DcfRecovery.d.ts +0 -84
- package/dist/Utils/DcfRecovery.d.ts.map +0 -1
- package/dist/Utils/DcfRecovery.js +0 -246
- package/dist/Utils/DcfRecovery.js.map +0 -1
- package/dist/Utils/DetectPackageManager.d.ts +0 -9
- package/dist/Utils/DetectPackageManager.d.ts.map +0 -1
- package/dist/Utils/DetectPackageManager.js +0 -24
- package/dist/Utils/DetectPackageManager.js.map +0 -1
- package/dist/Utils/DownloadTemplate.d.ts +0 -45
- package/dist/Utils/DownloadTemplate.d.ts.map +0 -1
- package/dist/Utils/DownloadTemplate.js +0 -161
- package/dist/Utils/DownloadTemplate.js.map +0 -1
- package/dist/Utils/EnhanceNetworkError.d.ts +0 -14
- package/dist/Utils/EnhanceNetworkError.d.ts.map +0 -1
- package/dist/Utils/EnhanceNetworkError.js +0 -61
- package/dist/Utils/EnhanceNetworkError.js.map +0 -1
- package/dist/Utils/EnvVars.d.ts +0 -17
- package/dist/Utils/EnvVars.d.ts.map +0 -1
- package/dist/Utils/EnvVars.js +0 -38
- package/dist/Utils/EnvVars.js.map +0 -1
- package/dist/Utils/EnvironmentRoutingUtils.d.ts +0 -81
- package/dist/Utils/EnvironmentRoutingUtils.d.ts.map +0 -1
- package/dist/Utils/EnvironmentRoutingUtils.js +0 -204
- package/dist/Utils/EnvironmentRoutingUtils.js.map +0 -1
- package/dist/Utils/FindAvailablePort.d.ts +0 -39
- package/dist/Utils/FindAvailablePort.d.ts.map +0 -1
- package/dist/Utils/FindAvailablePort.js +0 -105
- package/dist/Utils/FindAvailablePort.js.map +0 -1
- package/dist/Utils/GitCredentialConfig.d.ts +0 -12
- package/dist/Utils/GitCredentialConfig.d.ts.map +0 -1
- package/dist/Utils/GitCredentialConfig.js +0 -32
- package/dist/Utils/GitCredentialConfig.js.map +0 -1
- package/dist/Utils/GitErrorClassifier.d.ts +0 -40
- package/dist/Utils/GitErrorClassifier.d.ts.map +0 -1
- package/dist/Utils/GitErrorClassifier.js +0 -120
- package/dist/Utils/GitErrorClassifier.js.map +0 -1
- package/dist/Utils/GitHubDcfFlow.d.ts +0 -59
- package/dist/Utils/GitHubDcfFlow.d.ts.map +0 -1
- package/dist/Utils/GitHubDcfFlow.js +0 -165
- package/dist/Utils/GitHubDcfFlow.js.map +0 -1
- package/dist/Utils/GitRunner.d.ts +0 -107
- package/dist/Utils/GitRunner.d.ts.map +0 -1
- package/dist/Utils/GitRunner.js +0 -89
- package/dist/Utils/GitRunner.js.map +0 -1
- package/dist/Utils/GitUtils.d.ts +0 -59
- package/dist/Utils/GitUtils.d.ts.map +0 -1
- package/dist/Utils/GitUtils.js +0 -198
- package/dist/Utils/GitUtils.js.map +0 -1
- package/dist/Utils/GitVersionChecker.d.ts +0 -38
- package/dist/Utils/GitVersionChecker.d.ts.map +0 -1
- package/dist/Utils/GitVersionChecker.js +0 -64
- package/dist/Utils/GitVersionChecker.js.map +0 -1
- package/dist/Utils/HelpBanner.d.ts +0 -11
- package/dist/Utils/HelpBanner.d.ts.map +0 -1
- package/dist/Utils/HelpBanner.js +0 -15
- package/dist/Utils/HelpBanner.js.map +0 -1
- package/dist/Utils/MaafAppConfig.d.ts +0 -24
- package/dist/Utils/MaafAppConfig.d.ts.map +0 -1
- package/dist/Utils/MaafAppConfig.js +0 -38
- package/dist/Utils/MaafAppConfig.js.map +0 -1
- package/dist/Utils/NodeVersionChecker.d.ts +0 -10
- package/dist/Utils/NodeVersionChecker.d.ts.map +0 -1
- package/dist/Utils/NodeVersionChecker.js +0 -21
- package/dist/Utils/NodeVersionChecker.js.map +0 -1
- package/dist/Utils/Paging.d.ts +0 -29
- package/dist/Utils/Paging.d.ts.map +0 -1
- package/dist/Utils/Paging.js +0 -102
- package/dist/Utils/Paging.js.map +0 -1
- package/dist/Utils/PinCli.d.ts +0 -33
- package/dist/Utils/PinCli.d.ts.map +0 -1
- package/dist/Utils/PinCli.js +0 -77
- package/dist/Utils/PinCli.js.map +0 -1
- package/dist/Utils/ReadPackageJson.d.ts +0 -9
- package/dist/Utils/ReadPackageJson.d.ts.map +0 -1
- package/dist/Utils/ReadPackageJson.js +0 -13
- package/dist/Utils/ReadPackageJson.js.map +0 -1
- package/dist/Utils/RepoDetails.d.ts +0 -29
- package/dist/Utils/RepoDetails.d.ts.map +0 -1
- package/dist/Utils/RepoDetails.js +0 -37
- package/dist/Utils/RepoDetails.js.map +0 -1
- package/dist/Utils/RepoOption.d.ts +0 -42
- package/dist/Utils/RepoOption.d.ts.map +0 -1
- package/dist/Utils/RepoOption.js +0 -63
- package/dist/Utils/RepoOption.js.map +0 -1
- package/dist/Utils/RepoUrl.d.ts +0 -18
- package/dist/Utils/RepoUrl.d.ts.map +0 -1
- package/dist/Utils/RepoUrl.js +0 -6
- package/dist/Utils/RepoUrl.js.map +0 -1
- package/dist/Utils/ResolveCommand.d.ts +0 -62
- package/dist/Utils/ResolveCommand.d.ts.map +0 -1
- package/dist/Utils/ResolveCommand.js +0 -141
- package/dist/Utils/ResolveCommand.js.map +0 -1
- package/dist/Utils/RunCommand.d.ts +0 -33
- package/dist/Utils/RunCommand.d.ts.map +0 -1
- package/dist/Utils/RunCommand.js +0 -83
- package/dist/Utils/RunCommand.js.map +0 -1
- package/dist/Utils/ShareAccessRouting.d.ts +0 -78
- package/dist/Utils/ShareAccessRouting.d.ts.map +0 -1
- package/dist/Utils/ShareAccessRouting.js +0 -93
- package/dist/Utils/ShareAccessRouting.js.map +0 -1
- package/dist/Utils/Spinner.d.ts +0 -23
- package/dist/Utils/Spinner.d.ts.map +0 -1
- package/dist/Utils/Spinner.js +0 -94
- package/dist/Utils/Spinner.js.map +0 -1
- package/dist/Utils/zipBuildArtifact.d.ts +0 -35
- package/dist/Utils/zipBuildArtifact.d.ts.map +0 -1
- package/dist/Utils/zipBuildArtifact.js +0 -100
- package/dist/Utils/zipBuildArtifact.js.map +0 -1
- package/dist/Verbs/AddAction.d.ts +0 -6
- package/dist/Verbs/AddAction.d.ts.map +0 -1
- package/dist/Verbs/AddAction.js +0 -59
- package/dist/Verbs/AddAction.js.map +0 -1
- package/dist/Verbs/AddConnector.d.ts +0 -26
- package/dist/Verbs/AddConnector.d.ts.map +0 -1
- package/dist/Verbs/AddConnector.js +0 -223
- package/dist/Verbs/AddConnector.js.map +0 -1
- package/dist/Verbs/AddConnectorFlows.d.ts +0 -97
- package/dist/Verbs/AddConnectorFlows.d.ts.map +0 -1
- package/dist/Verbs/AddConnectorFlows.js +0 -298
- package/dist/Verbs/AddConnectorFlows.js.map +0 -1
- package/dist/Verbs/AddDataSource.d.ts +0 -18
- package/dist/Verbs/AddDataSource.d.ts.map +0 -1
- package/dist/Verbs/AddDataSource.js +0 -163
- package/dist/Verbs/AddDataSource.js.map +0 -1
- package/dist/Verbs/AddFlow.d.ts +0 -12
- package/dist/Verbs/AddFlow.d.ts.map +0 -1
- package/dist/Verbs/AddFlow.js +0 -63
- package/dist/Verbs/AddFlow.js.map +0 -1
- package/dist/Verbs/AddTable.d.ts +0 -6
- package/dist/Verbs/AddTable.d.ts.map +0 -1
- package/dist/Verbs/AddTable.js +0 -79
- package/dist/Verbs/AddTable.js.map +0 -1
- package/dist/Verbs/AuthStatus.d.ts +0 -6
- package/dist/Verbs/AuthStatus.d.ts.map +0 -1
- package/dist/Verbs/AuthStatus.js +0 -49
- package/dist/Verbs/AuthStatus.js.map +0 -1
- package/dist/Verbs/AuthSwitch.d.ts +0 -6
- package/dist/Verbs/AuthSwitch.d.ts.map +0 -1
- package/dist/Verbs/AuthSwitch.js +0 -67
- package/dist/Verbs/AuthSwitch.js.map +0 -1
- package/dist/Verbs/BuildMaafApp.d.ts +0 -6
- package/dist/Verbs/BuildMaafApp.d.ts.map +0 -1
- package/dist/Verbs/BuildMaafApp.js +0 -171
- package/dist/Verbs/BuildMaafApp.js.map +0 -1
- package/dist/Verbs/ConnectorHelpers.d.ts +0 -164
- package/dist/Verbs/ConnectorHelpers.d.ts.map +0 -1
- package/dist/Verbs/ConnectorHelpers.js +0 -563
- package/dist/Verbs/ConnectorHelpers.js.map +0 -1
- package/dist/Verbs/CreateMaafApp.d.ts +0 -100
- package/dist/Verbs/CreateMaafApp.d.ts.map +0 -1
- package/dist/Verbs/CreateMaafApp.js +0 -1022
- package/dist/Verbs/CreateMaafApp.js.map +0 -1
- package/dist/Verbs/DeleteMaafApp.d.ts +0 -27
- package/dist/Verbs/DeleteMaafApp.d.ts.map +0 -1
- package/dist/Verbs/DeleteMaafApp.js +0 -114
- package/dist/Verbs/DeleteMaafApp.js.map +0 -1
- package/dist/Verbs/DeployMaafApp.d.ts +0 -6
- package/dist/Verbs/DeployMaafApp.d.ts.map +0 -1
- package/dist/Verbs/DeployMaafApp.js +0 -495
- package/dist/Verbs/DeployMaafApp.js.map +0 -1
- package/dist/Verbs/Dev.d.ts +0 -6
- package/dist/Verbs/Dev.d.ts.map +0 -1
- package/dist/Verbs/Dev.js +0 -276
- package/dist/Verbs/Dev.js.map +0 -1
- package/dist/Verbs/FindDataverseApi.d.ts +0 -12
- package/dist/Verbs/FindDataverseApi.d.ts.map +0 -1
- package/dist/Verbs/FindDataverseApi.js +0 -87
- package/dist/Verbs/FindDataverseApi.js.map +0 -1
- package/dist/Verbs/GetMaafApp.d.ts +0 -6
- package/dist/Verbs/GetMaafApp.d.ts.map +0 -1
- package/dist/Verbs/GetMaafApp.js +0 -80
- package/dist/Verbs/GetMaafApp.js.map +0 -1
- package/dist/Verbs/GetMaafBuildStatus.d.ts +0 -6
- package/dist/Verbs/GetMaafBuildStatus.d.ts.map +0 -1
- package/dist/Verbs/GetMaafBuildStatus.js +0 -132
- package/dist/Verbs/GetMaafBuildStatus.js.map +0 -1
- package/dist/Verbs/GetSettings.d.ts +0 -12
- package/dist/Verbs/GetSettings.d.ts.map +0 -1
- package/dist/Verbs/GetSettings.js +0 -39
- package/dist/Verbs/GetSettings.js.map +0 -1
- package/dist/Verbs/Init.d.ts +0 -6
- package/dist/Verbs/Init.d.ts.map +0 -1
- package/dist/Verbs/Init.js +0 -453
- package/dist/Verbs/Init.js.map +0 -1
- package/dist/Verbs/ListConnectionReferences.d.ts +0 -6
- package/dist/Verbs/ListConnectionReferences.d.ts.map +0 -1
- package/dist/Verbs/ListConnectionReferences.js +0 -56
- package/dist/Verbs/ListConnectionReferences.js.map +0 -1
- package/dist/Verbs/ListConnectorActions.d.ts +0 -6
- package/dist/Verbs/ListConnectorActions.d.ts.map +0 -1
- package/dist/Verbs/ListConnectorActions.js +0 -94
- package/dist/Verbs/ListConnectorActions.js.map +0 -1
- package/dist/Verbs/ListConnectors.d.ts +0 -6
- package/dist/Verbs/ListConnectors.d.ts.map +0 -1
- package/dist/Verbs/ListConnectors.js +0 -97
- package/dist/Verbs/ListConnectors.js.map +0 -1
- package/dist/Verbs/ListDatasets.d.ts +0 -6
- package/dist/Verbs/ListDatasets.d.ts.map +0 -1
- package/dist/Verbs/ListDatasets.js +0 -73
- package/dist/Verbs/ListDatasets.js.map +0 -1
- package/dist/Verbs/ListEnvironmentVariables.d.ts +0 -14
- package/dist/Verbs/ListEnvironmentVariables.d.ts.map +0 -1
- package/dist/Verbs/ListEnvironmentVariables.js +0 -52
- package/dist/Verbs/ListEnvironmentVariables.js.map +0 -1
- package/dist/Verbs/ListFlows.d.ts +0 -13
- package/dist/Verbs/ListFlows.d.ts.map +0 -1
- package/dist/Verbs/ListFlows.js +0 -73
- package/dist/Verbs/ListFlows.js.map +0 -1
- package/dist/Verbs/ListMaafApps.d.ts +0 -84
- package/dist/Verbs/ListMaafApps.d.ts.map +0 -1
- package/dist/Verbs/ListMaafApps.js +0 -221
- package/dist/Verbs/ListMaafApps.js.map +0 -1
- package/dist/Verbs/ListSqlStoredProcedures.d.ts +0 -6
- package/dist/Verbs/ListSqlStoredProcedures.d.ts.map +0 -1
- package/dist/Verbs/ListSqlStoredProcedures.js +0 -75
- package/dist/Verbs/ListSqlStoredProcedures.js.map +0 -1
- package/dist/Verbs/ListTables.d.ts +0 -6
- package/dist/Verbs/ListTables.d.ts.map +0 -1
- package/dist/Verbs/ListTables.js +0 -85
- package/dist/Verbs/ListTables.js.map +0 -1
- package/dist/Verbs/Login.d.ts +0 -6
- package/dist/Verbs/Login.d.ts.map +0 -1
- package/dist/Verbs/Login.js +0 -39
- package/dist/Verbs/Login.js.map +0 -1
- package/dist/Verbs/Logout.d.ts +0 -6
- package/dist/Verbs/Logout.d.ts.map +0 -1
- package/dist/Verbs/Logout.js +0 -34
- package/dist/Verbs/Logout.js.map +0 -1
- package/dist/Verbs/MaafAppPermissions.d.ts +0 -40
- package/dist/Verbs/MaafAppPermissions.d.ts.map +0 -1
- package/dist/Verbs/MaafAppPermissions.js +0 -651
- package/dist/Verbs/MaafAppPermissions.js.map +0 -1
- package/dist/Verbs/Pack.d.ts +0 -71
- package/dist/Verbs/Pack.d.ts.map +0 -1
- package/dist/Verbs/Pack.js +0 -370
- package/dist/Verbs/Pack.js.map +0 -1
- package/dist/Verbs/PlayMaafApp.d.ts +0 -22
- package/dist/Verbs/PlayMaafApp.d.ts.map +0 -1
- package/dist/Verbs/PlayMaafApp.js +0 -147
- package/dist/Verbs/PlayMaafApp.js.map +0 -1
- package/dist/Verbs/RefreshDataSource.d.ts +0 -21
- package/dist/Verbs/RefreshDataSource.d.ts.map +0 -1
- package/dist/Verbs/RefreshDataSource.js +0 -89
- package/dist/Verbs/RefreshDataSource.js.map +0 -1
- package/dist/Verbs/RefreshGitAuth.d.ts +0 -6
- package/dist/Verbs/RefreshGitAuth.d.ts.map +0 -1
- package/dist/Verbs/RefreshGitAuth.js +0 -155
- package/dist/Verbs/RefreshGitAuth.js.map +0 -1
- package/dist/Verbs/RemoveDataSource.d.ts +0 -6
- package/dist/Verbs/RemoveDataSource.d.ts.map +0 -1
- package/dist/Verbs/RemoveDataSource.js +0 -173
- package/dist/Verbs/RemoveDataSource.js.map +0 -1
- package/dist/Verbs/RemoveFlow.d.ts +0 -12
- package/dist/Verbs/RemoveFlow.d.ts.map +0 -1
- package/dist/Verbs/RemoveFlow.js +0 -95
- package/dist/Verbs/RemoveFlow.js.map +0 -1
- package/dist/Verbs/SetSetting.d.ts +0 -12
- package/dist/Verbs/SetSetting.d.ts.map +0 -1
- package/dist/Verbs/SetSetting.js +0 -133
- package/dist/Verbs/SetSetting.js.map +0 -1
- package/dist/Verbs/ShareLinkCreate.d.ts +0 -23
- package/dist/Verbs/ShareLinkCreate.d.ts.map +0 -1
- package/dist/Verbs/ShareLinkCreate.js +0 -73
- package/dist/Verbs/ShareLinkCreate.js.map +0 -1
- package/dist/Verbs/ShareLinkList.d.ts +0 -16
- package/dist/Verbs/ShareLinkList.d.ts.map +0 -1
- package/dist/Verbs/ShareLinkList.js +0 -84
- package/dist/Verbs/ShareLinkList.js.map +0 -1
- package/dist/Verbs/ShareLinkRevoke.d.ts +0 -22
- package/dist/Verbs/ShareLinkRevoke.d.ts.map +0 -1
- package/dist/Verbs/ShareLinkRevoke.js +0 -137
- package/dist/Verbs/ShareLinkRevoke.js.map +0 -1
- package/dist/Verbs/ShareList.d.ts +0 -10
- package/dist/Verbs/ShareList.d.ts.map +0 -1
- package/dist/Verbs/ShareList.js +0 -254
- package/dist/Verbs/ShareList.js.map +0 -1
- package/dist/Verbs/ShareMaafApp.d.ts +0 -12
- package/dist/Verbs/ShareMaafApp.d.ts.map +0 -1
- package/dist/Verbs/ShareMaafApp.js +0 -14
- package/dist/Verbs/ShareMaafApp.js.map +0 -1
- package/dist/Verbs/ShowMaafApp.d.ts +0 -100
- package/dist/Verbs/ShowMaafApp.d.ts.map +0 -1
- package/dist/Verbs/ShowMaafApp.js +0 -224
- package/dist/Verbs/ShowMaafApp.js.map +0 -1
- package/dist/Verbs/TelemetrySettings.d.ts +0 -8
- package/dist/Verbs/TelemetrySettings.d.ts.map +0 -1
- package/dist/Verbs/TelemetrySettings.js +0 -104
- package/dist/Verbs/TelemetrySettings.js.map +0 -1
- package/dist/Verbs/UnshareMaafApp.d.ts +0 -12
- package/dist/Verbs/UnshareMaafApp.d.ts.map +0 -1
- package/dist/Verbs/UnshareMaafApp.js +0 -14
- package/dist/Verbs/UnshareMaafApp.js.map +0 -1
- package/dist/Verbs/VerbConstants.d.ts +0 -629
- package/dist/Verbs/VerbConstants.d.ts.map +0 -1
- package/dist/Verbs/VerbConstants.js +0 -559
- package/dist/Verbs/VerbConstants.js.map +0 -1
- package/dist/Verbs/index.d.ts +0 -47
- package/dist/Verbs/index.d.ts.map +0 -1
- package/dist/Verbs/index.js +0 -47
- package/dist/Verbs/index.js.map +0 -1
|
@@ -1,563 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (C) Microsoft Corporation. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import { connectorSupportsSso, createConnectionAsync, getConnectorAsync, getEffectiveConnectorDataPolicyAsync, getPlayerServiceConfig, isSsoConnection, isSsoOnlyConnector, listConnectionsForConnectorAsync, listConnectorsServiceAsync, requestConnectionUserConsentAsync, } from '@microsoft/managed-apps-actions';
|
|
5
|
-
import { createMaafConnectionUrl, HttpClientError } from '@microsoft/managed-apps-common/services';
|
|
6
|
-
import * as http from 'http';
|
|
7
|
-
import open from 'open';
|
|
8
|
-
import { getCliLogger, getSettings } from '../CliSettings.js';
|
|
9
|
-
import { promptSelect } from '../CliUtils.js';
|
|
10
|
-
import { CLI_BINARY_NAME } from '../Constants/CliConstants.js';
|
|
11
|
-
import { AppError, NotFoundError, UsageError } from '../Errors/CliError.js';
|
|
12
|
-
import { printInfo, printSuccess, printTable, printWarning } from '../Utils/ConsoleOutput.js';
|
|
13
|
-
import { getCliEnvVarBool } from '../Utils/EnvVars.js';
|
|
14
|
-
const ALLOW_ALL_POLICY = {
|
|
15
|
-
defaultBehavior: 'Allow',
|
|
16
|
-
allowedConnectors: [],
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* Resolves a raw `--connector` argument to a canonical connector API ID.
|
|
20
|
-
*
|
|
21
|
-
* - If `input` starts with `shared_` → returned unchanged (fast path, no network call).
|
|
22
|
-
* - Otherwise the full connector list is fetched. Resolution proceeds in two passes:
|
|
23
|
-
* 1. **Exact match** (case-insensitive `displayName === input`).
|
|
24
|
-
* 2. **Partial match** (case-insensitive `displayName.includes(input)`) —
|
|
25
|
-
* only attempted when the exact pass yields zero results.
|
|
26
|
-
*
|
|
27
|
-
* Outcomes:
|
|
28
|
-
* - One candidate → returns the connector's `name` (its API ID).
|
|
29
|
-
* A notice is printed when the match was partial.
|
|
30
|
-
* - Multiple matches → throws `UsageError` with a disambiguation list.
|
|
31
|
-
* - Zero matches → returns `input` unchanged so that bare aliases
|
|
32
|
-
* such as `commondataserviceforapps` are still
|
|
33
|
-
* accepted by the downstream `getConnectorAsync`.
|
|
34
|
-
*/
|
|
35
|
-
export async function resolveConnectorIdAsync(input, logger) {
|
|
36
|
-
// Fast path: already a canonical ID format — no network call needed.
|
|
37
|
-
if (input.toLowerCase().startsWith('shared_')) {
|
|
38
|
-
return input;
|
|
39
|
-
}
|
|
40
|
-
// Fetch the full connector list and try to resolve the input as a display name.
|
|
41
|
-
// This covers exact names ("Office 365 Users"), partial names ("Office 365"),
|
|
42
|
-
// and single-word partials ("office") — giving a clear disambiguation error
|
|
43
|
-
// instead of a cryptic API rejection. Zero matches fall through to getConnectorAsync
|
|
44
|
-
// so bare aliases like `commondataserviceforapps` continue to work.
|
|
45
|
-
const connectors = await listConnectorsServiceAsync(undefined, logger ?? undefined);
|
|
46
|
-
const lower = input.toLowerCase();
|
|
47
|
-
// Pass 1: exact display name match (case-insensitive).
|
|
48
|
-
const exactMatches = connectors.filter((c) => c.properties.displayName.toLowerCase() === lower);
|
|
49
|
-
// Pass 2: partial (contains) match, only when exact pass found nothing.
|
|
50
|
-
const isPartial = exactMatches.length === 0;
|
|
51
|
-
const candidates = isPartial
|
|
52
|
-
? connectors.filter((c) => c.properties.displayName.toLowerCase().includes(lower))
|
|
53
|
-
: exactMatches;
|
|
54
|
-
if (candidates.length === 0) {
|
|
55
|
-
// No match — pass through unchanged (bare alias or will fail downstream with a clear error).
|
|
56
|
-
return input;
|
|
57
|
-
}
|
|
58
|
-
if (candidates.length === 1) {
|
|
59
|
-
// Unambiguous — print a notice when the match was partial so the user knows what was resolved.
|
|
60
|
-
if (isPartial) {
|
|
61
|
-
printInfo(`Resolved '${input}' → '${candidates[0].properties.displayName}' (${candidates[0].name})`);
|
|
62
|
-
}
|
|
63
|
-
return candidates[0].name;
|
|
64
|
-
}
|
|
65
|
-
// Multiple candidates — surface them so the user can specify an exact ID.
|
|
66
|
-
const idList = candidates.map((c) => ` ${c.name} (${c.properties.displayName})`).join('\n');
|
|
67
|
-
throw new UsageError(`Multiple connectors match '${input}'. Specify the connector ID directly:\n${idList}`);
|
|
68
|
-
}
|
|
69
|
-
const CREATE_NEW_CONNECTION = '__create__';
|
|
70
|
-
const CONNECTION_CREATION_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes
|
|
71
|
-
const PROTOCOL_VERSION = '1';
|
|
72
|
-
/**
|
|
73
|
-
* Preflight step shared by `app add action` and `app add table`. Fetches the
|
|
74
|
-
* connector and effective connector policy in parallel, then enforces the policy.
|
|
75
|
-
*
|
|
76
|
-
* Failure modes:
|
|
77
|
-
* - tenantId missing: surfaces a `DlpSkippedNoTenantId` telemetry event and a
|
|
78
|
-
* user-visible warning, then degrades to "allow all" so the verb can still
|
|
79
|
-
* proceed (the alternative — failing — would block users in auth states
|
|
80
|
-
* where tenant resolution legitimately can't happen).
|
|
81
|
-
* - Policy fetch error: relies on `getEffectiveConnectorDataPolicyAsync`'s own
|
|
82
|
-
* `scenario.failure` telemetry; we only print a user warning and degrade
|
|
83
|
-
* to "allow all" rather than re-emitting a duplicate error event.
|
|
84
|
-
*
|
|
85
|
-
* Throws `NotFoundError` when the connector itself cannot be found, and
|
|
86
|
-
* `UsageError` when the connector is blocked by the effective connector policy.
|
|
87
|
-
*/
|
|
88
|
-
export async function runConnectorDlpPreflightAsync(argumentProvider, apiId) {
|
|
89
|
-
const logger = getCliLogger();
|
|
90
|
-
const tenantId = await argumentProvider.getTenantIdAsync();
|
|
91
|
-
if (!tenantId) {
|
|
92
|
-
logger.trackErrorEvent('DlpSkippedNoTenantId', { apiId });
|
|
93
|
-
printWarning(`Could not resolve tenant ID; skipping connector policy check. Sign in with '${CLI_BINARY_NAME} auth login' for full enforcement.`);
|
|
94
|
-
}
|
|
95
|
-
const [connector, policy] = await Promise.all([
|
|
96
|
-
getConnectorAsync(apiId, logger),
|
|
97
|
-
tenantId
|
|
98
|
-
? getEffectiveConnectorDataPolicyAsync(logger, tenantId).catch(() => {
|
|
99
|
-
// GovernanceService already records `scenario.failure` internally,
|
|
100
|
-
// so we don't re-emit telemetry here — just surface the warning
|
|
101
|
-
// and degrade to allow-all.
|
|
102
|
-
printWarning('Could not verify connector policy; proceeding without enforcement.');
|
|
103
|
-
return ALLOW_ALL_POLICY;
|
|
104
|
-
})
|
|
105
|
-
: Promise.resolve(ALLOW_ALL_POLICY),
|
|
106
|
-
]);
|
|
107
|
-
if (!connector) {
|
|
108
|
-
throw new NotFoundError(`Connector '${apiId}' not found. Run '${CLI_BINARY_NAME} connector list' to see available connector IDs.`);
|
|
109
|
-
}
|
|
110
|
-
const shortName = (connector.name ?? apiId).toLowerCase();
|
|
111
|
-
const allowedMap = new Map(policy.allowedConnectors.map((e) => [e.connectorId.toLowerCase(), e]));
|
|
112
|
-
const blockedSet = new Set((policy.blockedConnectors ?? []).map((e) => e.connectorId.toLowerCase()));
|
|
113
|
-
const isBlocked = policy.defaultBehavior === 'Block' ? !allowedMap.has(shortName) : blockedSet.has(shortName);
|
|
114
|
-
if (isBlocked) {
|
|
115
|
-
throw new UsageError(`Connector '${connector.properties.displayName ?? apiId}' is blocked by your organization's connector policy.`);
|
|
116
|
-
}
|
|
117
|
-
return { connector, tenantId, policy };
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Resolves a connection for a connector, choosing the strategy based on mode.
|
|
121
|
-
*
|
|
122
|
-
* Interactive mode: lists existing connections and prompts the user to pick one
|
|
123
|
-
* (or create a new one).
|
|
124
|
-
*
|
|
125
|
-
* Non-interactive mode (deterministic auto-resolution — see
|
|
126
|
-
* {@link resolveConnectionNonInteractivelyAsync}): reuses the sole existing
|
|
127
|
-
* connection, silently creates one for SSO-only connectors when none exist,
|
|
128
|
-
* prints the connection table and errors when multiple connections are ambiguous,
|
|
129
|
-
* or errors without a table when zero connections exist for a non-auto-creatable
|
|
130
|
-
* connector.
|
|
131
|
-
*
|
|
132
|
-
* `--use-sso` (`useSso`) short-circuits both modes: it reuses the first existing
|
|
133
|
-
* SSO connection when one exists, otherwise silently creates one via the OBO
|
|
134
|
-
* flow (even when non-SSO connections already exist). It errors up front when the
|
|
135
|
-
* connector cannot use SSO at all. In interactive mode it skips the picker.
|
|
136
|
-
*/
|
|
137
|
-
export async function resolveConnectionAsync(options) {
|
|
138
|
-
const { argumentProvider, apiId, connector, useSso } = options;
|
|
139
|
-
const settings = getSettings();
|
|
140
|
-
const logger = getCliLogger();
|
|
141
|
-
const playerServiceConfig = getPlayerServiceConfig();
|
|
142
|
-
const connections = await listConnectionsForConnectorAsync(apiId, logger);
|
|
143
|
-
if (!settings.interactive) {
|
|
144
|
-
return resolveConnectionNonInteractivelyAsync({
|
|
145
|
-
argumentProvider,
|
|
146
|
-
apiId,
|
|
147
|
-
connector,
|
|
148
|
-
connections: connections ?? [],
|
|
149
|
-
useSso,
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
// `--use-sso` in interactive mode: skip the connection picker and use SSO
|
|
153
|
-
// deterministically. Reuse the first existing SSO connection if any exist;
|
|
154
|
-
// otherwise silently create one via the on-behalf-of flow. Errors up front
|
|
155
|
-
// when the connector cannot use SSO at all.
|
|
156
|
-
if (useSso) {
|
|
157
|
-
if (!connectorSupportsSso(connector)) {
|
|
158
|
-
throw new UsageError(`--use-sso was set but '${connector.properties.displayName ?? apiId}' does not support ` +
|
|
159
|
-
`single sign-on (SSO) authentication.\n` +
|
|
160
|
-
` To fix: Re-run without --use-sso to create a connection interactively.`);
|
|
161
|
-
}
|
|
162
|
-
const ssoConnections = (connections ?? []).filter((c) => isSsoConnection(c, connector));
|
|
163
|
-
if (ssoConnections.length > 0) {
|
|
164
|
-
const [first] = ssoConnections;
|
|
165
|
-
printInfo(`Using existing SSO connection '${first.properties.displayName}' (${first.name}).`);
|
|
166
|
-
if (ssoConnections.length > 1) {
|
|
167
|
-
printWarning(`Multiple SSO connections found for '${connector.properties.displayName ?? apiId}'. ` +
|
|
168
|
-
`Re-run with --connection-id <id> or -c <id> to use a specific one.`);
|
|
169
|
-
}
|
|
170
|
-
return { connectionId: first.name, autoSelected: true };
|
|
171
|
-
}
|
|
172
|
-
const created = await createSsoConnectionAsync(argumentProvider, apiId);
|
|
173
|
-
printSuccess(`Created a new connection '${created.properties.displayName}' (${created.name}).`);
|
|
174
|
-
return { connectionId: created.name, autoSelected: false };
|
|
175
|
-
}
|
|
176
|
-
const choices = [
|
|
177
|
-
...connections.map((c) => ({
|
|
178
|
-
value: c.name,
|
|
179
|
-
label: c.properties.displayName,
|
|
180
|
-
hint: c.name,
|
|
181
|
-
})),
|
|
182
|
-
{ value: CREATE_NEW_CONNECTION, label: '(Create a new connection)' },
|
|
183
|
-
];
|
|
184
|
-
const selected = await promptSelect({
|
|
185
|
-
message: 'Select a connection:',
|
|
186
|
-
options: choices,
|
|
187
|
-
});
|
|
188
|
-
if (selected === CREATE_NEW_CONNECTION) {
|
|
189
|
-
// Only attempt SSO when the connector has a single auth type that is SSO-eligible.
|
|
190
|
-
// Connectors with multiple auth types need the browser flow so the user can choose.
|
|
191
|
-
if (isSsoOnlyConnector(connector)) {
|
|
192
|
-
try {
|
|
193
|
-
const newConnection = await createSsoConnectionAsync(argumentProvider, apiId);
|
|
194
|
-
return { connectionId: newConnection.name, autoSelected: false };
|
|
195
|
-
}
|
|
196
|
-
catch (ssoError) {
|
|
197
|
-
printWarning(`Silent connection creation failed: ${ssoError instanceof Error ? ssoError.message : String(ssoError)}`);
|
|
198
|
-
printInfo('Falling back to browser-based connection creation...\n');
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
else {
|
|
202
|
-
printInfo('This connector requires manual interaction. Opening browser for connection creation...\n');
|
|
203
|
-
}
|
|
204
|
-
// Browser-based fallback: open the maaf-player connection dialog
|
|
205
|
-
const connectorName = apiId.startsWith('shared_') ? apiId : `shared_${apiId}`;
|
|
206
|
-
const environmentId = argumentProvider.getEnvironmentId();
|
|
207
|
-
if (!environmentId) {
|
|
208
|
-
throw new UsageError('Missing required information. Make sure you are running this command in a Managed Apps directory.');
|
|
209
|
-
}
|
|
210
|
-
const result = await startConnectionServerAsync({
|
|
211
|
-
connectorName,
|
|
212
|
-
region: playerServiceConfig.region,
|
|
213
|
-
environmentId,
|
|
214
|
-
});
|
|
215
|
-
if (result.status === 'created' && result.connectionName) {
|
|
216
|
-
printSuccess('Connection created successfully!');
|
|
217
|
-
if (result.displayName) {
|
|
218
|
-
printInfo(` Display Name: ${result.displayName}`);
|
|
219
|
-
}
|
|
220
|
-
printInfo(` Connection ID: ${result.connectionName}`);
|
|
221
|
-
return { connectionId: result.connectionName, autoSelected: false };
|
|
222
|
-
}
|
|
223
|
-
else if (result.status === 'error') {
|
|
224
|
-
throw new AppError(result.errorMessage ?? 'Connection creation failed in the browser.');
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
throw new UsageError('Connection creation was cancelled.');
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
return { connectionId: selected, autoSelected: false };
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Deterministic connection resolution for non-interactive mode (the default —
|
|
234
|
-
* no flag required). Runs when `--connection-id` was not supplied.
|
|
235
|
-
*
|
|
236
|
-
* When `--use-sso` (`useSso`) is set, an SSO-specific path takes precedence over
|
|
237
|
-
* all cases below:
|
|
238
|
-
* - Connector not SSO-capable → `UsageError` up front (the flag cannot be
|
|
239
|
-
* satisfied).
|
|
240
|
-
* - One or more existing **SSO** connections → reuse the first one. This is an
|
|
241
|
-
* explicit opt-in to picking an SSO connection, so it is safe even when
|
|
242
|
-
* multiple connections (SSO or not) exist — no ambiguity error.
|
|
243
|
-
* - No existing SSO connection → create one silently via the OBO flow
|
|
244
|
-
* ({@link createSsoConnectionAsync}), even when non-SSO connections exist.
|
|
245
|
-
*
|
|
246
|
-
* Otherwise (no `--use-sso`):
|
|
247
|
-
* 1. **Exactly one** existing connection → reuse it. There is no ambiguity, so
|
|
248
|
-
* this is safe for automation and never binds to an arbitrarily-chosen
|
|
249
|
-
* identity. A confirmation line is printed to stdout.
|
|
250
|
-
* 2. **Zero** connections **and** an **SSO-only** connector → create one
|
|
251
|
-
* silently via the OBO flow ({@link createSsoConnectionAsync}). A
|
|
252
|
-
* confirmation line is printed to stdout.
|
|
253
|
-
* 3. **Multiple** connections (ambiguous) → print the connection table to stdout
|
|
254
|
-
* so the user can copy an ID, then throw a `UsageError` directing them to
|
|
255
|
-
* select one via `--connection-id` (or interactively).
|
|
256
|
-
* 4. **Zero** connections **and** a connector that needs credentials/a browser
|
|
257
|
-
* (not auto-creatable) → throw a `UsageError` directing them to create one
|
|
258
|
-
* interactively. No table is printed — there is nothing to show.
|
|
259
|
-
*
|
|
260
|
-
* Success paths print to stdout; failure paths surface their message via the
|
|
261
|
-
* thrown `UsageError` (rendered to stderr by the top-level handler).
|
|
262
|
-
*/
|
|
263
|
-
async function resolveConnectionNonInteractivelyAsync(options) {
|
|
264
|
-
const { argumentProvider, apiId, connector, connections, useSso } = options;
|
|
265
|
-
const label = connector.properties.displayName ?? apiId;
|
|
266
|
-
// `--use-sso`: force an SSO connection deterministically, taking precedence
|
|
267
|
-
// over the default cases below.
|
|
268
|
-
// - Not SSO-capable → error up front (the flag cannot be satisfied).
|
|
269
|
-
// - One or more existing SSO connections → reuse the first. This is an
|
|
270
|
-
// explicit opt-in to picking an SSO connection, so it is safe even when
|
|
271
|
-
// multiple connections (SSO or not) exist.
|
|
272
|
-
// - No existing SSO connection → create one silently via the OBO flow, even
|
|
273
|
-
// when non-SSO connections already exist.
|
|
274
|
-
if (useSso) {
|
|
275
|
-
if (!connectorSupportsSso(connector)) {
|
|
276
|
-
throw new UsageError(`--use-sso was set but '${label}' does not support single sign-on (SSO) authentication.\n` +
|
|
277
|
-
` To fix: Re-run without both --use-sso and --non-interactive to create a connection interactively.`);
|
|
278
|
-
}
|
|
279
|
-
const ssoConnections = connections.filter((c) => isSsoConnection(c, connector));
|
|
280
|
-
if (ssoConnections.length > 0) {
|
|
281
|
-
const [first] = ssoConnections;
|
|
282
|
-
printInfo(`Using existing SSO connection '${first.properties.displayName}' (${first.name}).`);
|
|
283
|
-
if (ssoConnections.length > 1) {
|
|
284
|
-
printWarning(`Multiple SSO connections found for '${label}'. ` +
|
|
285
|
-
`Re-run with --connection-id <id> or -c <id> to use a specific one.`);
|
|
286
|
-
}
|
|
287
|
-
return { connectionId: first.name, autoSelected: true };
|
|
288
|
-
}
|
|
289
|
-
try {
|
|
290
|
-
const created = await createSsoConnectionAsync(argumentProvider, apiId);
|
|
291
|
-
printSuccess(`Created a new connection '${created.properties.displayName}' (${created.name}).`);
|
|
292
|
-
return { connectionId: created.name, autoSelected: false };
|
|
293
|
-
}
|
|
294
|
-
catch (ssoError) {
|
|
295
|
-
const detail = ssoError instanceof Error ? ssoError.message : String(ssoError);
|
|
296
|
-
throw new UsageError(`No SSO connection exists for '${label}' and automatic connection creation failed.\n` +
|
|
297
|
-
` Reason: ${detail}\n` +
|
|
298
|
-
` To fix: Create one interactively (re-run without --non-interactive),\n` +
|
|
299
|
-
` then re-run with --connection-id <id> or -c <id>.`);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
// 1. Exactly one existing connection → reuse it (deterministic, no side effect).
|
|
303
|
-
if (connections.length === 1) {
|
|
304
|
-
const [only] = connections;
|
|
305
|
-
printInfo(`Using existing connection '${only.properties.displayName}' (${only.name}).`);
|
|
306
|
-
return { connectionId: only.name, autoSelected: true };
|
|
307
|
-
}
|
|
308
|
-
// 2. No existing connection + auto-creatable via SSO → create one silently.
|
|
309
|
-
// Only SSO-only connectors here; the broader --use-sso path is handled above.
|
|
310
|
-
const canAutoCreateSso = connections.length === 0 && isSsoOnlyConnector(connector);
|
|
311
|
-
if (canAutoCreateSso) {
|
|
312
|
-
try {
|
|
313
|
-
const created = await createSsoConnectionAsync(argumentProvider, apiId);
|
|
314
|
-
printSuccess(`Created a new connection '${created.properties.displayName}' (${created.name}).`);
|
|
315
|
-
return { connectionId: created.name, autoSelected: false };
|
|
316
|
-
}
|
|
317
|
-
catch (ssoError) {
|
|
318
|
-
const detail = ssoError instanceof Error ? ssoError.message : String(ssoError);
|
|
319
|
-
throw new UsageError(`No connection exists for '${label}' and automatic connection creation failed.\n` +
|
|
320
|
-
` Reason: ${detail}\n` +
|
|
321
|
-
` To fix: Create one interactively (re-run without --non-interactive),\n` +
|
|
322
|
-
` then re-run with --connection-id <id> or -c <id>.`);
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
// 3. Ambiguous — multiple connections exist. Print the list so the user can
|
|
326
|
-
// copy an ID, then error. Auto-selecting would bind to an arbitrary identity.
|
|
327
|
-
if (connections.length > 1) {
|
|
328
|
-
printTable({
|
|
329
|
-
title: `Available connections for ${label}`,
|
|
330
|
-
columns: [{ header: 'Display Name', maxWidth: 40 }, { header: 'Connection ID' }],
|
|
331
|
-
rows: connections.map((c) => [c.properties.displayName, c.name]),
|
|
332
|
-
totalLabel: 'connection(s) found',
|
|
333
|
-
});
|
|
334
|
-
throw new UsageError(`Multiple connections exist for '${label}', so one cannot be selected automatically.\n` +
|
|
335
|
-
` To fix: Re-run with --connection-id <id> or -c <id> to choose one,\n` +
|
|
336
|
-
` or re-run without --non-interactive to select one interactively.`);
|
|
337
|
-
}
|
|
338
|
-
// 4. Zero connections for a connector that cannot be auto-created (needs
|
|
339
|
-
// credentials, a browser, or has multiple auth types). No table to show.
|
|
340
|
-
throw new UsageError(`'${label}' requires a connection that cannot be created automatically in non-interactive mode.\n` +
|
|
341
|
-
` To fix: Create one interactively (re-run without --non-interactive),\n` +
|
|
342
|
-
` then re-run with --connection-id <id> or -c <id>.\n` +
|
|
343
|
-
` Tip: Run '${CLI_BINARY_NAME} connector list' to browse available connectors.`);
|
|
344
|
-
}
|
|
345
|
-
/**
|
|
346
|
-
* Creates and authenticates a new SSO connection for an SSO-eligible connector
|
|
347
|
-
* using the on-behalf-of flow. Shared by the interactive "(Create a new
|
|
348
|
-
* connection)" path and the non-interactive auto-create path. Callers must first
|
|
349
|
-
* confirm the connector is SSO-eligible via `isSsoOnlyConnector` (default gate)
|
|
350
|
-
* or `connectorSupportsSso` (the `--use-sso` gate). For multi-auth connectors the
|
|
351
|
-
* underlying `validateSsoEligible` selects the first SSO-eligible parameter set.
|
|
352
|
-
*/
|
|
353
|
-
async function createSsoConnectionAsync(argumentProvider, apiId) {
|
|
354
|
-
const logger = getCliLogger();
|
|
355
|
-
const playerServiceConfig = getPlayerServiceConfig();
|
|
356
|
-
return createConnectionAsync({
|
|
357
|
-
authProvider: argumentProvider.getAuthenticationProvider(),
|
|
358
|
-
region: playerServiceConfig.region,
|
|
359
|
-
environmentName: playerServiceConfig.environmentName,
|
|
360
|
-
actionsParams: { connectorId: apiId },
|
|
361
|
-
logger,
|
|
362
|
-
});
|
|
363
|
-
}
|
|
364
|
-
/**
|
|
365
|
-
* Builds a remediation hint to append to a downstream failure when the connection
|
|
366
|
-
* was **auto-selected** (no `--connection-id` was provided) rather than explicitly
|
|
367
|
-
* chosen — either the sole connection for the connector, or the first SSO
|
|
368
|
-
* connection under `--use-sso`. For tabular connectors the connection needs to
|
|
369
|
-
* have access to the target resource, so a failure may not clearly indicate the
|
|
370
|
-
* root cause — this spells out both possibilities so an operator or agent can act.
|
|
371
|
-
*/
|
|
372
|
-
export function autoSelectedConnectionHint(connectionId, connectorLabel) {
|
|
373
|
-
return (`Note: connection '${connectionId}' was auto-selected for connector '${connectorLabel}' ` +
|
|
374
|
-
`because no --connection-id was provided. For tabular connectors, the connection needs to ` +
|
|
375
|
-
`have access to the target resource, so this failure may not clearly indicate the root cause:\n` +
|
|
376
|
-
` - If the connection is broken or expired, re-authenticate it and re-run.\n` +
|
|
377
|
-
` - If the connection is valid but targets the wrong resource, re-run with an explicit ` +
|
|
378
|
-
`--connection-id <id> for the intended resource.`);
|
|
379
|
-
}
|
|
380
|
-
/**
|
|
381
|
-
* Runs a downstream connector API call and, when the connection was
|
|
382
|
-
* auto-selected, appends {@link autoSelectedConnectionHint} to the error message
|
|
383
|
-
* on failure. The original error instance is preserved (message is mutated in
|
|
384
|
-
* place) so its type and `exitCode` survive to the top-level handler.
|
|
385
|
-
*
|
|
386
|
-
* `UsageError`s are left untouched — they are the CLI's own control-flow errors
|
|
387
|
-
* ("re-run with --dataset"), not backend failures, so the connection hint would
|
|
388
|
-
* be noise.
|
|
389
|
-
*/
|
|
390
|
-
export async function withAutoSelectedConnectionHintAsync(op, context) {
|
|
391
|
-
try {
|
|
392
|
-
return await op();
|
|
393
|
-
}
|
|
394
|
-
catch (err) {
|
|
395
|
-
if (context.autoSelected && err instanceof Error && !(err instanceof UsageError)) {
|
|
396
|
-
err.message = `${err.message}\n\n${autoSelectedConnectionHint(context.connectionId, context.connectorLabel)}`;
|
|
397
|
-
}
|
|
398
|
-
throw err;
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
/**
|
|
402
|
-
* Best-effort request that the calling application be added to a connection's
|
|
403
|
-
* API Hubs ACL via the Power Platform user-consent endpoint. The server reads
|
|
404
|
-
* the calling app's `appid` from the bearer token, and the gateway resolves
|
|
405
|
-
* tenant + environment from the auth context and its routing config — so the
|
|
406
|
-
* CLI only needs to supply connector + connection identifiers, no body.
|
|
407
|
-
*
|
|
408
|
-
* Gating: requires the opt-in feature flag
|
|
409
|
-
* `MS_CLI_ENABLE_CONNECTOR_USER_CONSENT=true` (off by default while the
|
|
410
|
-
* consent endpoint is rolling out). When the flag is unset, the call is
|
|
411
|
-
* silently skipped — no warning, no telemetry, no HTTP traffic.
|
|
412
|
-
*
|
|
413
|
-
* Failure modes:
|
|
414
|
-
* - HTTP 403: emits a permission-specific warning explaining that the tenant
|
|
415
|
-
* admin must grant the calling app the
|
|
416
|
-
* `Connectivity.Connections.UserConsent` delegated permission, then returns.
|
|
417
|
-
* - Any other HTTP / network error: surfaces a generic warning and returns.
|
|
418
|
-
* The underlying `ConnectivityService` already records its own
|
|
419
|
-
* `scenario.failure` telemetry, so this helper doesn't re-emit a duplicate
|
|
420
|
-
* error event.
|
|
421
|
-
*
|
|
422
|
-
* Silent on success: a 200 OK does not guarantee the ACL was modified (the
|
|
423
|
-
* server has feature-gated silent-skip paths), so the success path emits no
|
|
424
|
-
* user-facing message.
|
|
425
|
-
*
|
|
426
|
-
* Never throws.
|
|
427
|
-
*/
|
|
428
|
-
export async function requestCliUserConsentAsync(opts) {
|
|
429
|
-
if (!getCliEnvVarBool('ENABLE_CONNECTOR_USER_CONSENT')) {
|
|
430
|
-
return;
|
|
431
|
-
}
|
|
432
|
-
const { apiId, connectionId } = opts;
|
|
433
|
-
const logger = getCliLogger();
|
|
434
|
-
const scenario = logger.trackScenario('ConnectorUserConsent', { apiId, connectionId });
|
|
435
|
-
try {
|
|
436
|
-
await requestConnectionUserConsentAsync(apiId, connectionId, logger);
|
|
437
|
-
scenario.complete();
|
|
438
|
-
}
|
|
439
|
-
catch (error) {
|
|
440
|
-
if (error instanceof HttpClientError && error.status === 403) {
|
|
441
|
-
scenario.failure(error);
|
|
442
|
-
printWarning(`Could not request user consent on connection '${connectionId}' (HTTP 403). ` +
|
|
443
|
-
`The data source was added, but later calls against this connection may fail until ` +
|
|
444
|
-
`your tenant admin grants the calling application the ` +
|
|
445
|
-
`'Connectivity.Connections.UserConsent' delegated permission.`);
|
|
446
|
-
return;
|
|
447
|
-
}
|
|
448
|
-
scenario.failure(error);
|
|
449
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
450
|
-
printWarning(`Could not request user consent on connection '${connectionId}': ${message}. ` +
|
|
451
|
-
`The data source was added, but later calls against this connection may fail.`);
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
/**
|
|
455
|
-
* Starts a local HTTP server, opens the maaf-player connection page in the
|
|
456
|
-
* browser, and waits for a callback with the result. Uses the same pattern
|
|
457
|
-
* as an OAuth authorization code flow: nonce for CSRF, protocol version for
|
|
458
|
-
* drift detection, and a timeout for cleanup.
|
|
459
|
-
*/
|
|
460
|
-
export async function startConnectionServerAsync(config) {
|
|
461
|
-
const { connectorName, region, environmentId } = config;
|
|
462
|
-
const nonce = crypto.randomUUID();
|
|
463
|
-
return new Promise((resolve, reject) => {
|
|
464
|
-
const server = http.createServer((req, res) => {
|
|
465
|
-
const url = new URL(req.url ?? '/', `http://localhost`);
|
|
466
|
-
if (url.pathname === '/callback' && req.method === 'GET') {
|
|
467
|
-
const queryNonce = url.searchParams.get('nonce');
|
|
468
|
-
if (queryNonce !== nonce) {
|
|
469
|
-
res.writeHead(403, { 'Content-Type': 'text/html; charset=utf-8' });
|
|
470
|
-
res.end('<html><body><h2>Connection request verification failed. Please run the CLI command again.</h2></body></html>');
|
|
471
|
-
cleanup();
|
|
472
|
-
resolve({ status: 'cancelled' });
|
|
473
|
-
return;
|
|
474
|
-
}
|
|
475
|
-
const callbackVersion = url.searchParams.get('v');
|
|
476
|
-
if (callbackVersion !== PROTOCOL_VERSION) {
|
|
477
|
-
printWarning(`Warning: callback protocol version mismatch (expected ${PROTOCOL_VERSION}, got ${callbackVersion ?? 'none'}). Update the CLI to the latest version.`);
|
|
478
|
-
}
|
|
479
|
-
const status = url.searchParams.get('status');
|
|
480
|
-
const errorMessage = url.searchParams.get('message') ?? undefined;
|
|
481
|
-
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
|
|
482
|
-
let tabHtml;
|
|
483
|
-
if (status === 'created') {
|
|
484
|
-
tabHtml =
|
|
485
|
-
'<html><body><h2>Connection created! You can close this tab.</h2></body></html>';
|
|
486
|
-
}
|
|
487
|
-
else if (status === 'error') {
|
|
488
|
-
const safeMessage = errorMessage
|
|
489
|
-
? errorMessage.replace(/[&<>"']/g, (c) => `&#${c.charCodeAt(0)};`)
|
|
490
|
-
: '';
|
|
491
|
-
tabHtml = safeMessage
|
|
492
|
-
? `<html><body><h2>Connection creation failed. You can close this tab.</h2><p>${safeMessage}</p></body></html>`
|
|
493
|
-
: '<html><body><h2>Connection creation failed. You can close this tab.</h2></body></html>';
|
|
494
|
-
}
|
|
495
|
-
else {
|
|
496
|
-
tabHtml =
|
|
497
|
-
'<html><body><h2>Connection creation cancelled. You can close this tab.</h2></body></html>';
|
|
498
|
-
}
|
|
499
|
-
res.end(tabHtml);
|
|
500
|
-
cleanup();
|
|
501
|
-
if (status === 'created') {
|
|
502
|
-
resolve({
|
|
503
|
-
status: 'created',
|
|
504
|
-
connectionId: url.searchParams.get('connectionId') ?? undefined,
|
|
505
|
-
connectionName: url.searchParams.get('connectionName') ?? undefined,
|
|
506
|
-
displayName: url.searchParams.get('displayName') ?? undefined,
|
|
507
|
-
});
|
|
508
|
-
}
|
|
509
|
-
else if (status === 'error') {
|
|
510
|
-
resolve({ status: 'error', errorMessage });
|
|
511
|
-
}
|
|
512
|
-
else {
|
|
513
|
-
resolve({ status: 'cancelled' });
|
|
514
|
-
}
|
|
515
|
-
return;
|
|
516
|
-
}
|
|
517
|
-
res.writeHead(404);
|
|
518
|
-
res.end('Not found');
|
|
519
|
-
});
|
|
520
|
-
// Listen on port 0 to let the OS assign an available port
|
|
521
|
-
server.listen(0, 'localhost', async () => {
|
|
522
|
-
const address = server.address();
|
|
523
|
-
const port = typeof address === 'object' && address ? address.port : 0;
|
|
524
|
-
const callbackUrl = `http://localhost:${port}/callback`;
|
|
525
|
-
const playerUrl = createMaafConnectionUrl(region, {
|
|
526
|
-
connector: connectorName,
|
|
527
|
-
callbackUrl,
|
|
528
|
-
nonce,
|
|
529
|
-
protocolVersion: PROTOCOL_VERSION,
|
|
530
|
-
environmentId,
|
|
531
|
-
});
|
|
532
|
-
printInfo(`Opening browser at ${playerUrl}`);
|
|
533
|
-
try {
|
|
534
|
-
await open(playerUrl, { wait: false });
|
|
535
|
-
}
|
|
536
|
-
catch {
|
|
537
|
-
printInfo(`Could not open browser automatically. Please navigate to:\n ${playerUrl}`);
|
|
538
|
-
}
|
|
539
|
-
printInfo('Waiting for connection creation... (press Ctrl+C to cancel)\n');
|
|
540
|
-
});
|
|
541
|
-
server.on('error', (error) => {
|
|
542
|
-
cleanup();
|
|
543
|
-
reject(error);
|
|
544
|
-
});
|
|
545
|
-
const timeoutId = setTimeout(() => {
|
|
546
|
-
printInfo('\nConnection creation timed out after 10 minutes.');
|
|
547
|
-
cleanup();
|
|
548
|
-
resolve({ status: 'cancelled' });
|
|
549
|
-
}, CONNECTION_CREATION_TIMEOUT_MS);
|
|
550
|
-
const sigintHandler = () => {
|
|
551
|
-
printInfo('\nCancelling...');
|
|
552
|
-
cleanup();
|
|
553
|
-
resolve({ status: 'cancelled' });
|
|
554
|
-
};
|
|
555
|
-
function cleanup() {
|
|
556
|
-
clearTimeout(timeoutId);
|
|
557
|
-
process.off('SIGINT', sigintHandler);
|
|
558
|
-
server.close();
|
|
559
|
-
}
|
|
560
|
-
process.on('SIGINT', sigintHandler);
|
|
561
|
-
});
|
|
562
|
-
}
|
|
563
|
-
//# sourceMappingURL=ConnectorHelpers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectorHelpers.js","sourceRoot":"","sources":["../../src/Verbs/ConnectorHelpers.ts"],"names":[],"mappings":"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"}
|