@microsoft/teamsfx-core 3.1.4-alpha.db74a278f9.0 → 3.1.4-alpha.dc668aaabb.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/build/client/devPortalClient.d.ts +43 -0
- package/build/client/devPortalClient.d.ts.map +1 -0
- package/build/client/devPortalClient.js +626 -0
- package/build/client/devPortalClient.js.map +1 -0
- package/build/client/graphClient.d.ts +1 -0
- package/build/client/graphClient.d.ts.map +1 -1
- package/build/client/graphClient.js +17 -2
- package/build/client/graphClient.js.map +1 -1
- package/build/client/teamsDevPortalClient.d.ts +14 -21
- package/build/client/teamsDevPortalClient.d.ts.map +1 -1
- package/build/client/teamsDevPortalClient.js +65 -112
- package/build/client/teamsDevPortalClient.js.map +1 -1
- package/build/client/teamsDevPortalClientProvider.d.ts +6 -0
- package/build/client/teamsDevPortalClientProvider.d.ts.map +1 -0
- package/build/client/teamsDevPortalClientProvider.js +76 -0
- package/build/client/teamsDevPortalClientProvider.js.map +1 -0
- package/build/common/featureFlags.d.ts +7 -2
- package/build/common/featureFlags.d.ts.map +1 -1
- package/build/common/featureFlags.js +8 -3
- package/build/common/featureFlags.js.map +1 -1
- package/build/common/templates-config.json +3 -3
- package/build/common/tools.js +2 -2
- package/build/common/tools.js.map +1 -1
- package/build/common/wrappedAxiosClient.d.ts.map +1 -1
- package/build/common/wrappedAxiosClient.js +87 -27
- package/build/common/wrappedAxiosClient.js.map +1 -1
- package/build/component/configManager/actionInjector.d.ts +10 -2
- package/build/component/configManager/actionInjector.d.ts.map +1 -1
- package/build/component/configManager/actionInjector.js +39 -3
- package/build/component/configManager/actionInjector.js.map +1 -1
- package/build/component/driver/teamsApp/appStudio.d.ts.map +1 -1
- package/build/component/driver/teamsApp/appStudio.js +10 -6
- package/build/component/driver/teamsApp/appStudio.js.map +1 -1
- package/build/component/driver/teamsApp/configure.d.ts.map +1 -1
- package/build/component/driver/teamsApp/configure.js +12 -8
- package/build/component/driver/teamsApp/configure.js.map +1 -1
- package/build/component/driver/teamsApp/constants.d.ts +1 -0
- package/build/component/driver/teamsApp/constants.d.ts.map +1 -1
- package/build/component/driver/teamsApp/constants.js +1 -0
- package/build/component/driver/teamsApp/constants.js.map +1 -1
- package/build/component/driver/teamsApp/create.d.ts.map +1 -1
- package/build/component/driver/teamsApp/create.js +28 -26
- package/build/component/driver/teamsApp/create.js.map +1 -1
- package/build/component/driver/teamsApp/createAppPackage.js +1 -1
- package/build/component/driver/teamsApp/createAppPackage.js.map +1 -1
- package/build/component/driver/teamsApp/interfaces/appdefinitions/appUser.d.ts +1 -0
- package/build/component/driver/teamsApp/interfaces/appdefinitions/appUser.d.ts.map +1 -1
- package/build/component/driver/teamsApp/utils/telemetry.d.ts +0 -1
- package/build/component/driver/teamsApp/utils/telemetry.d.ts.map +1 -1
- package/build/component/driver/teamsApp/utils/telemetry.js +0 -1
- package/build/component/driver/teamsApp/utils/telemetry.js.map +1 -1
- package/build/component/driver/teamsApp/validateAppPackage.js +3 -3
- package/build/component/driver/teamsApp/validateAppPackage.js.map +1 -1
- package/build/component/driver/teamsApp/validateTestCases.js +4 -4
- package/build/component/driver/teamsApp/validateTestCases.js.map +1 -1
- package/build/component/feature/collaboration.js +4 -4
- package/build/component/feature/collaboration.js.map +1 -1
- package/build/component/generator/openApiSpec/helper.d.ts +2 -2
- package/build/component/generator/openApiSpec/helper.d.ts.map +1 -1
- package/build/component/generator/openApiSpec/helper.js +46 -6
- package/build/component/generator/openApiSpec/helper.js.map +1 -1
- package/build/component/resource/botService/botRegistration/botFrameworkRegistration.js +4 -4
- package/build/component/resource/botService/botRegistration/botFrameworkRegistration.js.map +1 -1
- package/build/component/utils/envUtil.d.ts.map +1 -1
- package/build/component/utils/envUtil.js +7 -6
- package/build/component/utils/envUtil.js.map +1 -1
- package/build/component/utils/mcpAuthScaffolder.d.ts +1 -0
- package/build/component/utils/mcpAuthScaffolder.d.ts.map +1 -1
- package/build/component/utils/mcpAuthScaffolder.js +7 -9
- package/build/component/utils/mcpAuthScaffolder.js.map +1 -1
- package/build/core/FxCore.d.ts +3 -2
- package/build/core/FxCore.d.ts.map +1 -1
- package/build/core/FxCore.declarativeAgent.d.ts +7 -2
- package/build/core/FxCore.declarativeAgent.d.ts.map +1 -1
- package/build/core/FxCore.declarativeAgent.js +94 -2
- package/build/core/FxCore.declarativeAgent.js.map +1 -1
- package/build/core/FxCore.js +48 -9
- package/build/core/FxCore.js.map +1 -1
- package/build/error/common.d.ts +9 -0
- package/build/error/common.d.ts.map +1 -1
- package/build/error/common.js +40 -1
- package/build/error/common.js.map +1 -1
- package/build/index.d.ts +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -2
- package/build/index.js.map +1 -1
- package/build/question/generator.d.ts.map +1 -1
- package/build/question/generator.js +9 -9
- package/build/question/generator.js.map +1 -1
- package/build/question/inputs/AddAuthActionInputs.d.ts +4 -0
- package/build/question/inputs/AddAuthActionInputs.d.ts.map +1 -1
- package/build/question/inputs/AddPluginInputs.d.ts +11 -1
- package/build/question/inputs/AddPluginInputs.d.ts.map +1 -1
- package/build/question/options/AddAuthActionOptions.d.ts.map +1 -1
- package/build/question/options/AddAuthActionOptions.js +12 -0
- package/build/question/options/AddAuthActionOptions.js.map +1 -1
- package/build/question/options/AddPluginOptions.d.ts.map +1 -1
- package/build/question/options/AddPluginOptions.js +33 -2
- package/build/question/options/AddPluginOptions.js.map +1 -1
- package/build/question/other.d.ts +1 -0
- package/build/question/other.d.ts.map +1 -1
- package/build/question/other.js +135 -9
- package/build/question/other.js.map +1 -1
- package/build/question/questionNames.d.ts +5 -0
- package/build/question/questionNames.d.ts.map +1 -1
- package/build/question/questionNames.js +5 -0
- package/build/question/questionNames.js.map +1 -1
- package/build/question/scaffold/vsc/CapabilityOptions.js +1 -1
- package/build/question/scaffold/vsc/CapabilityOptions.js.map +1 -1
- package/build/question/scaffold/vsc/rootNode.js +1 -1
- package/build/question/scaffold/vsc/rootNode.js.map +1 -1
- package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts.map +1 -1
- package/build/question/scaffold/vsc/teamsProjectTypeNode.js +9 -2
- package/build/question/scaffold/vsc/teamsProjectTypeNode.js.map +1 -1
- package/build/question/share.js +2 -2
- package/build/question/share.js.map +1 -1
- package/build/ui/visitor.d.ts.map +1 -1
- package/build/ui/visitor.js +1 -0
- package/build/ui/visitor.js.map +1 -1
- package/build/v4/mcp/mcpAuthScaffold.d.ts.map +1 -1
- package/build/v4/mcp/mcpAuthScaffold.js +6 -10
- package/build/v4/mcp/mcpAuthScaffold.js.map +1 -1
- package/build/v4/runtime/steps/mcpAuth.d.ts.map +1 -1
- package/build/v4/runtime/steps/mcpAuth.js +3 -5
- package/build/v4/runtime/steps/mcpAuth.js.map +1 -1
- package/package.json +37 -37
- package/resource/package.nls.json +12 -2
- package/templates/configs/local/typescript/.gitignore +1 -0
- package/templates/configs/playground/typescript/.gitignore +4 -0
- package/templates/fallback/common.zip +0 -0
- package/templates/fallback/csharp.zip +0 -0
- package/templates/fallback/js.zip +0 -0
- package/templates/fallback/python.zip +0 -0
- package/templates/fallback/ts.zip +0 -0
- package/templates/metadata.zip +0 -0
- package/templates/ui/tdpNode.json +1 -1
- package/templates/ui/wizardNode.json +1 -1
- package/templates/v4/create-selector.json +2 -2
- package/templates/v4/templates-metadata.zip +0 -0
- package/templates/v4/templates.zip +0 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { AsyncAppValidationDetailsResponse } from "../component/driver/teamsApp/interfaces/AsyncAppValidationDetailsResponse";
|
|
2
|
+
import { AsyncAppValidationResponse } from "../component/driver/teamsApp/interfaces/AsyncAppValidationResponse";
|
|
3
|
+
import { AsyncAppValidationResultsResponse } from "../component/driver/teamsApp/interfaces/AsyncAppValidationResultsResponse";
|
|
4
|
+
import { IValidationResult } from "../component/driver/teamsApp/interfaces/appdefinitions/IValidationResult";
|
|
5
|
+
import { AppDefinition } from "../component/driver/teamsApp/interfaces/appdefinitions/appDefinition";
|
|
6
|
+
import { AppUser } from "../component/driver/teamsApp/interfaces/appdefinitions/appUser";
|
|
7
|
+
import { IBotRegistration } from "../component/resource/botService/appStudio/interfaces/IBotRegistration";
|
|
8
|
+
import { TeamsDevPortalClient } from "./teamsDevPortalClient";
|
|
9
|
+
export declare class DevPortalClient extends TeamsDevPortalClient {
|
|
10
|
+
private readonly appEtags;
|
|
11
|
+
setRegionEndpointByToken(authSvcToken: string): Promise<void>;
|
|
12
|
+
createApp(token: string, name: string): Promise<AppDefinition>;
|
|
13
|
+
updateApp(token: string, appId: string, file: Buffer): Promise<AppDefinition>;
|
|
14
|
+
listApps(token: string): Promise<AppDefinition[]>;
|
|
15
|
+
deleteApp(token: string, appId: string): Promise<boolean>;
|
|
16
|
+
getApp(token: string, appId: string): Promise<AppDefinition>;
|
|
17
|
+
getAppPackage(token: string, appId: string): Promise<any>;
|
|
18
|
+
checkExistsInTenant(token: string, appId: string): Promise<boolean>;
|
|
19
|
+
removePermission(token: string, appId: string, userToRemove: AppUser): Promise<void>;
|
|
20
|
+
grantPermission(token: string, appId: string, newUser: AppUser): Promise<void>;
|
|
21
|
+
partnerCenterAppPackageValidation(token: string, file: Buffer, signal?: AbortSignal): Promise<IValidationResult>;
|
|
22
|
+
submitAppValidationRequest(token: string, appId: string): Promise<AsyncAppValidationResponse>;
|
|
23
|
+
getAppValidationRequestList(token: string, appId: string): Promise<AsyncAppValidationDetailsResponse>;
|
|
24
|
+
private getAppValidationRequests;
|
|
25
|
+
private submitAppValidation;
|
|
26
|
+
getAppValidationById(token: string, appValidationId: string): Promise<AsyncAppValidationResultsResponse>;
|
|
27
|
+
getBotRegistration(token: string, botId: string): Promise<IBotRegistration | undefined>;
|
|
28
|
+
listBots(token: string): Promise<IBotRegistration[] | undefined>;
|
|
29
|
+
deleteBot(token: string, botId: string): Promise<void>;
|
|
30
|
+
createBotRegistration(token: string, registration: IBotRegistration, checkExistence?: boolean): Promise<void>;
|
|
31
|
+
updateBotRegistration(token: string, botReg: IBotRegistration): Promise<void>;
|
|
32
|
+
private resolveRegionEndpoint;
|
|
33
|
+
private createAppPackageForm;
|
|
34
|
+
private getAppResponse;
|
|
35
|
+
private resolveLegacyAppId;
|
|
36
|
+
private updateOwners;
|
|
37
|
+
private getBotRegistrationAtPath;
|
|
38
|
+
private getAppUsers;
|
|
39
|
+
private toAppUserPayload;
|
|
40
|
+
private toAppDefinition;
|
|
41
|
+
}
|
|
42
|
+
export declare const devPortalClient: DevPortalClient;
|
|
43
|
+
//# sourceMappingURL=devPortalClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devPortalClient.d.ts","sourceRoot":"","sources":["../../src/client/devPortalClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,626 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.devPortalClient = exports.DevPortalClient = void 0;
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
const hooks_1 = require("@feathersjs/hooks");
|
|
8
|
+
const form_data_1 = tslib_1.__importDefault(require("form-data"));
|
|
9
|
+
const constants_1 = require("../common/constants");
|
|
10
|
+
const globalVars_1 = require("../common/globalVars");
|
|
11
|
+
const localizeUtils_1 = require("../common/localizeUtils");
|
|
12
|
+
const retryHandler_1 = require("../common/retryHandler");
|
|
13
|
+
const wrappedAxiosClient_1 = require("../common/wrappedAxiosClient");
|
|
14
|
+
const commonConstant_1 = require("../component/constant/commonConstant");
|
|
15
|
+
const constants_2 = require("../component/driver/teamsApp/constants");
|
|
16
|
+
const common_1 = require("../component/resource/botService/common");
|
|
17
|
+
const errors_1 = require("../component/resource/botService/errors");
|
|
18
|
+
const messages_1 = require("../component/resource/botService/messages");
|
|
19
|
+
const strings_1 = require("../component/resource/botService/strings");
|
|
20
|
+
const teamsDevPortalClient_1 = require("./teamsDevPortalClient");
|
|
21
|
+
const newDeveloperPortalEndpoints = {
|
|
22
|
+
apac: "https://dev.teams.microsoft.com/cosmicprodapac",
|
|
23
|
+
amer: "https://dev.teams.microsoft.com/cosmicprodamer",
|
|
24
|
+
emea: "https://dev.teams.microsoft.com/cosmicprodemea",
|
|
25
|
+
};
|
|
26
|
+
class DevPortalClient extends teamsDevPortalClient_1.TeamsDevPortalClient {
|
|
27
|
+
appEtags = new Map();
|
|
28
|
+
async setRegionEndpointByToken(authSvcToken) {
|
|
29
|
+
if ((0, constants_1.getResourceServiceEndpoint)(constants_1.ResourceServiceType.TDP) === "https://dev-int.teams.microsoft.com") {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const requester = wrappedAxiosClient_1.WrappedAxiosClient.create({
|
|
33
|
+
baseURL: (0, constants_1.getResourceServiceEndpoint)(constants_1.ResourceServiceType.AuthSvc),
|
|
34
|
+
});
|
|
35
|
+
requester.defaults.headers.common["Authorization"] = `Bearer ${authSvcToken}`;
|
|
36
|
+
requester.defaults.headers.common["Client-Source"] = "teamstoolkit";
|
|
37
|
+
const response = await retryHandler_1.RetryHandler.Retry(() => requester.post("/v1.0/users/region"));
|
|
38
|
+
const regionGtms = response?.data?.regionGtms;
|
|
39
|
+
this.regionEndpoint = this.resolveRegionEndpoint(regionGtms?.teamsDeveloperPortal, regionGtms?.teamsDevPortal);
|
|
40
|
+
}
|
|
41
|
+
async createApp(token, name) {
|
|
42
|
+
const requester = this.createRequesterWithToken(token);
|
|
43
|
+
try {
|
|
44
|
+
const response = await retryHandler_1.RetryHandler.Retry(() => requester.post("/v1.0/apps", {
|
|
45
|
+
appDetails: {
|
|
46
|
+
applicationManifest: {
|
|
47
|
+
manifestVersion: "1.15",
|
|
48
|
+
name: { short: name },
|
|
49
|
+
icons: {
|
|
50
|
+
color: "default-app-icons/images/color.png",
|
|
51
|
+
outline: "default-app-icons/images/outline.png",
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
}));
|
|
56
|
+
if (!response?.data) {
|
|
57
|
+
throw new Error("Cannot create Teams app");
|
|
58
|
+
}
|
|
59
|
+
return this.toAppDefinition(response.data);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.CREATE_APP);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async updateApp(token, appId, file) {
|
|
66
|
+
try {
|
|
67
|
+
const requester = this.createRequesterWithToken(token);
|
|
68
|
+
const response = await retryHandler_1.RetryHandler.Retry(() => {
|
|
69
|
+
const content = this.createAppPackageForm(file);
|
|
70
|
+
return requester.put(`/v1.0/apps/${appId}/apppackage`, content, {
|
|
71
|
+
headers: content.getHeaders(),
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
if (!response?.data) {
|
|
75
|
+
throw new Error(`Cannot update the app with app ID ${appId}`);
|
|
76
|
+
}
|
|
77
|
+
return this.toAppDefinition(response.data);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.UPDATE_APP);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async listApps(token) {
|
|
84
|
+
try {
|
|
85
|
+
const requester = this.createRequesterWithToken(token);
|
|
86
|
+
globalVars_1.TOOLS.logProvider.debug(`Sent API Request: GET ${this.getEndpoint()}/v1.0/apps`);
|
|
87
|
+
const apps = [];
|
|
88
|
+
let continuationToken;
|
|
89
|
+
do {
|
|
90
|
+
const response = await retryHandler_1.RetryHandler.Retry(() => requester.get("/v1.0/apps", {
|
|
91
|
+
params: { pageSize: 100 },
|
|
92
|
+
headers: continuationToken ? { "x-ms-continuation": continuationToken } : undefined,
|
|
93
|
+
}));
|
|
94
|
+
const page = response?.data;
|
|
95
|
+
if (!page?.items) {
|
|
96
|
+
throw new Error("Cannot get the app definitions");
|
|
97
|
+
}
|
|
98
|
+
apps.push(...page.items.map((app) => ({
|
|
99
|
+
teamsAppId: app.appExternalId ?? app.appId,
|
|
100
|
+
appId: app.appId,
|
|
101
|
+
appName: app.appName,
|
|
102
|
+
version: app.appVersion,
|
|
103
|
+
updatedAt: app.updatedAt,
|
|
104
|
+
})));
|
|
105
|
+
continuationToken = page.continuationToken;
|
|
106
|
+
} while (continuationToken);
|
|
107
|
+
return apps;
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.LIST_APPS);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
async deleteApp(token, appId) {
|
|
114
|
+
try {
|
|
115
|
+
const requester = this.createRequesterWithToken(token);
|
|
116
|
+
globalVars_1.TOOLS.logProvider.debug(`Sent API Request: DELETE ${this.getEndpoint()}/v1.0/apps/${appId}`);
|
|
117
|
+
let response;
|
|
118
|
+
try {
|
|
119
|
+
response = await retryHandler_1.RetryHandler.Retry(() => requester.delete(`/v1.0/apps/${appId}`));
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
if (error?.response?.status !== commonConstant_1.HttpStatusCode.NOTFOUND)
|
|
123
|
+
throw error;
|
|
124
|
+
const resolvedAppId = await this.resolveLegacyAppId(token, appId);
|
|
125
|
+
if (resolvedAppId === appId)
|
|
126
|
+
throw error;
|
|
127
|
+
response = await retryHandler_1.RetryHandler.Retry(() => requester.delete(`/v1.0/apps/${resolvedAppId}`));
|
|
128
|
+
}
|
|
129
|
+
if (response?.status === 204) {
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.DELETE_APP);
|
|
135
|
+
}
|
|
136
|
+
throw this.wrapException(new Error("cannot delete the app: " + appId), constants_2.APP_STUDIO_API_NAMES.DELETE_APP);
|
|
137
|
+
}
|
|
138
|
+
async getApp(token, appId) {
|
|
139
|
+
try {
|
|
140
|
+
let response;
|
|
141
|
+
try {
|
|
142
|
+
response = await this.getAppResponse(token, appId);
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
if (error?.response?.status !== commonConstant_1.HttpStatusCode.NOTFOUND) {
|
|
146
|
+
throw error;
|
|
147
|
+
}
|
|
148
|
+
const resolvedAppId = await this.resolveLegacyAppId(token, appId);
|
|
149
|
+
if (resolvedAppId === appId) {
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
152
|
+
response = await this.getAppResponse(token, resolvedAppId);
|
|
153
|
+
}
|
|
154
|
+
if (response.data) {
|
|
155
|
+
const etag = response.headers?.etag;
|
|
156
|
+
if (etag) {
|
|
157
|
+
this.appEtags.set(appId, etag);
|
|
158
|
+
}
|
|
159
|
+
const app = this.toAppDefinition(response.data);
|
|
160
|
+
if (app.appId === appId || app.teamsAppId === appId) {
|
|
161
|
+
return app;
|
|
162
|
+
}
|
|
163
|
+
globalVars_1.TOOLS.logProvider?.error(`appId mismatch. Input: ${appId}. Got: ${app.appId}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.GET_APP);
|
|
168
|
+
}
|
|
169
|
+
throw this.wrapException(new Error(`cannot get the app definition with app ID ${appId}`), constants_2.APP_STUDIO_API_NAMES.GET_APP);
|
|
170
|
+
}
|
|
171
|
+
async getAppPackage(token, appId) {
|
|
172
|
+
globalVars_1.TOOLS.logProvider?.info("Downloading app package for app " + appId);
|
|
173
|
+
const requester = this.createRequesterWithToken(token);
|
|
174
|
+
try {
|
|
175
|
+
let response;
|
|
176
|
+
try {
|
|
177
|
+
response = await retryHandler_1.RetryHandler.Retry(() => requester.get(`/v1.0/apps/${appId}/appPackage`, { responseType: "arraybuffer" }));
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
if (error?.response?.status !== commonConstant_1.HttpStatusCode.NOTFOUND)
|
|
181
|
+
throw error;
|
|
182
|
+
const resolvedAppId = await this.resolveLegacyAppId(token, appId);
|
|
183
|
+
if (resolvedAppId === appId)
|
|
184
|
+
throw error;
|
|
185
|
+
response = await retryHandler_1.RetryHandler.Retry(() => requester.get(`/v1.0/apps/${resolvedAppId}/appPackage`, {
|
|
186
|
+
responseType: "arraybuffer",
|
|
187
|
+
}));
|
|
188
|
+
}
|
|
189
|
+
if (response?.data) {
|
|
190
|
+
globalVars_1.TOOLS.logProvider?.info("Download app package successfully");
|
|
191
|
+
return response.data;
|
|
192
|
+
}
|
|
193
|
+
throw this.wrapException(new Error((0, localizeUtils_1.getLocalizedString)("plugins.appstudio.emptyAppPackage", appId)), constants_2.APP_STUDIO_API_NAMES.GET_APP_PACKAGE);
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.GET_APP_PACKAGE);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
async checkExistsInTenant(token, appId) {
|
|
200
|
+
try {
|
|
201
|
+
const response = await this.getAppResponse(token, appId);
|
|
202
|
+
return response.data !== false;
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
async removePermission(token, appId, userToRemove) {
|
|
209
|
+
const app = await this.getApp(token, appId);
|
|
210
|
+
if (!this.checkUser(app, userToRemove))
|
|
211
|
+
return;
|
|
212
|
+
const updatedUsers = (app.userList ?? [])
|
|
213
|
+
.map((user) => this.toAppUserPayload(user))
|
|
214
|
+
.filter((user) => user.aadId !== userToRemove.aadId);
|
|
215
|
+
await this.updateOwners(token, app.appId ?? appId, appId, updatedUsers);
|
|
216
|
+
}
|
|
217
|
+
async grantPermission(token, appId, newUser) {
|
|
218
|
+
const app = await this.getApp(token, appId);
|
|
219
|
+
if (this.checkUser(app, newUser))
|
|
220
|
+
return;
|
|
221
|
+
const updatedUsers = [
|
|
222
|
+
...(app.userList ?? []).map((user) => this.toAppUserPayload(user)),
|
|
223
|
+
this.toAppUserPayload(newUser),
|
|
224
|
+
];
|
|
225
|
+
await this.updateOwners(token, app.appId ?? appId, appId, updatedUsers);
|
|
226
|
+
}
|
|
227
|
+
async partnerCenterAppPackageValidation(token, file, signal) {
|
|
228
|
+
const requester = this.createRequesterWithToken(token);
|
|
229
|
+
try {
|
|
230
|
+
const response = await retryHandler_1.RetryHandler.Retry(() => {
|
|
231
|
+
const content = new form_data_1.default();
|
|
232
|
+
content.append("appPackage", file, {
|
|
233
|
+
filename: "appPackage.zip",
|
|
234
|
+
contentType: "application/zip",
|
|
235
|
+
});
|
|
236
|
+
return requester.post("/v1.0/appvalidation/apppackage/validate", content, {
|
|
237
|
+
headers: content.getHeaders(),
|
|
238
|
+
signal,
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
return response?.data;
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.VALIDATE_APP_PACKAGE);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
async submitAppValidationRequest(token, appId) {
|
|
248
|
+
try {
|
|
249
|
+
const requester = this.createRequesterWithToken(token);
|
|
250
|
+
let response;
|
|
251
|
+
try {
|
|
252
|
+
response = await this.submitAppValidation(requester, appId);
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
if (error?.response?.status !== commonConstant_1.HttpStatusCode.NOTFOUND)
|
|
256
|
+
throw error;
|
|
257
|
+
const resolvedAppId = await this.resolveLegacyAppId(token, appId);
|
|
258
|
+
if (resolvedAppId === appId)
|
|
259
|
+
throw error;
|
|
260
|
+
response = await this.submitAppValidation(requester, resolvedAppId);
|
|
261
|
+
}
|
|
262
|
+
return response.data;
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.SUBMIT_APP_VALIDATION);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
async getAppValidationRequestList(token, appId) {
|
|
269
|
+
try {
|
|
270
|
+
const requester = this.createRequesterWithToken(token);
|
|
271
|
+
try {
|
|
272
|
+
return await this.getAppValidationRequests(requester, appId);
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
if (error?.response?.status !== commonConstant_1.HttpStatusCode.NOTFOUND)
|
|
276
|
+
throw error;
|
|
277
|
+
const resolvedAppId = await this.resolveLegacyAppId(token, appId);
|
|
278
|
+
if (resolvedAppId === appId)
|
|
279
|
+
throw error;
|
|
280
|
+
return await this.getAppValidationRequests(requester, resolvedAppId);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.GET_APP_VALIDATION_REQUESTS);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
async getAppValidationRequests(requester, appId) {
|
|
288
|
+
const items = [];
|
|
289
|
+
let continuationToken;
|
|
290
|
+
do {
|
|
291
|
+
const response = await retryHandler_1.RetryHandler.Retry(() => requester.get(`/v1.0/appValidations/apps/${appId}`, {
|
|
292
|
+
params: { pageSize: 100 },
|
|
293
|
+
headers: continuationToken ? { "x-ms-continuation": continuationToken } : undefined,
|
|
294
|
+
}));
|
|
295
|
+
const page = response?.data;
|
|
296
|
+
if (!page?.items)
|
|
297
|
+
throw new Error("Cannot get app validation requests");
|
|
298
|
+
items.push(...page.items);
|
|
299
|
+
continuationToken =
|
|
300
|
+
page.continuationToken ??
|
|
301
|
+
response?.headers?.["x-continuation-token"];
|
|
302
|
+
} while (continuationToken);
|
|
303
|
+
return {
|
|
304
|
+
appValidations: items.map((item) => ({
|
|
305
|
+
id: item.appValidationId,
|
|
306
|
+
appId: item.appId,
|
|
307
|
+
appVersion: item.appVersion,
|
|
308
|
+
manifestVersion: item.manifestVersion,
|
|
309
|
+
status: item.status,
|
|
310
|
+
createdAt: item.submittedDate,
|
|
311
|
+
updatedAt: item.completedDate,
|
|
312
|
+
})),
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
async submitAppValidation(requester, appId) {
|
|
316
|
+
const response = await retryHandler_1.RetryHandler.Retry(() => requester.post("/v1.0/appvalidation/validate", {
|
|
317
|
+
appId,
|
|
318
|
+
appEnvironmentId: null,
|
|
319
|
+
testSuites: null,
|
|
320
|
+
}));
|
|
321
|
+
if (!response) {
|
|
322
|
+
throw new Error("App validation request returned no response.");
|
|
323
|
+
}
|
|
324
|
+
return response;
|
|
325
|
+
}
|
|
326
|
+
async getAppValidationById(token, appValidationId) {
|
|
327
|
+
try {
|
|
328
|
+
const requester = this.createRequesterWithToken(token);
|
|
329
|
+
const response = await retryHandler_1.RetryHandler.Retry(() => requester.get(`/v1.0/appValidations/${appValidationId}`));
|
|
330
|
+
return response?.data;
|
|
331
|
+
}
|
|
332
|
+
catch (error) {
|
|
333
|
+
throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.GET_APP_VALIDATION_RESULT);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
async getBotRegistration(token, botId) {
|
|
337
|
+
return this.getBotRegistrationAtPath(token, `/v1.0/botregistrations/${botId}`);
|
|
338
|
+
}
|
|
339
|
+
async listBots(token) {
|
|
340
|
+
const requester = this.createRequesterWithToken(token);
|
|
341
|
+
try {
|
|
342
|
+
const response = await retryHandler_1.RetryHandler.Retry(() => requester.get("/v1.0/botregistrations"));
|
|
343
|
+
if ((0, common_1.isHappyResponse)(response))
|
|
344
|
+
return response.data;
|
|
345
|
+
throw this.wrapException(this.wrapResponse(undefined, response), constants_2.APP_STUDIO_API_NAMES.LIST_BOT, (0, localizeUtils_1.getDefaultString)("error.appstudio.apiFailed.name.common"), "Failed to get data");
|
|
346
|
+
}
|
|
347
|
+
catch (error) {
|
|
348
|
+
this.handleBotFrameworkError(error, constants_2.APP_STUDIO_API_NAMES.LIST_BOT);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
async deleteBot(token, botId) {
|
|
352
|
+
try {
|
|
353
|
+
const requester = this.createRequesterWithToken(token);
|
|
354
|
+
await retryHandler_1.RetryHandler.Retry(() => requester.delete(`/v1.0/botregistrations/${botId}`));
|
|
355
|
+
}
|
|
356
|
+
catch (error) {
|
|
357
|
+
this.handleBotFrameworkError(error, constants_2.APP_STUDIO_API_NAMES.DELETE_BOT);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
async createBotRegistration(token, registration, checkExistence = true) {
|
|
361
|
+
if (registration.botId && checkExistence) {
|
|
362
|
+
const botRegistration = await this.getBotRegistration(token, registration.botId);
|
|
363
|
+
if (botRegistration) {
|
|
364
|
+
globalVars_1.TOOLS.logProvider.info(messages_1.Messages.BotResourceExist("Appstudio"));
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
try {
|
|
369
|
+
const requester = this.createRequesterWithToken(token);
|
|
370
|
+
const response = await retryHandler_1.RetryHandler.Retry(() => requester.post("/v1.0/botregistrations", registration));
|
|
371
|
+
if (!(0, common_1.isHappyResponse)(response)) {
|
|
372
|
+
throw new errors_1.ProvisionError(strings_1.CommonStrings.APP_STUDIO_BOT_REGISTRATION);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
catch (error) {
|
|
376
|
+
this.handleBotFrameworkError(error, constants_2.APP_STUDIO_API_NAMES.CREATE_BOT);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
async updateBotRegistration(token, botReg) {
|
|
380
|
+
try {
|
|
381
|
+
const requester = this.createRequesterWithToken(token);
|
|
382
|
+
const response = await retryHandler_1.RetryHandler.Retry(() => requester.put(`/v1.0/botregistrations/${botReg.botId}`, botReg));
|
|
383
|
+
if (!(0, common_1.isHappyResponse)(response)) {
|
|
384
|
+
throw new errors_1.ConfigUpdatingError(strings_1.ConfigNames.MESSAGE_ENDPOINT);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
catch (error) {
|
|
388
|
+
this.handleBotFrameworkError(error, constants_2.APP_STUDIO_API_NAMES.UPDATE_BOT);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
resolveRegionEndpoint(teamsDeveloperPortal, teamsDevPortal) {
|
|
392
|
+
if (teamsDeveloperPortal?.startsWith("https://"))
|
|
393
|
+
return teamsDeveloperPortal;
|
|
394
|
+
const oldEndpointRegion = Object.keys(newDeveloperPortalEndpoints).find((region) => teamsDevPortal?.match(new RegExp(`/${region}(?:/api)?/?$`, "i")));
|
|
395
|
+
return newDeveloperPortalEndpoints[oldEndpointRegion ?? "amer"];
|
|
396
|
+
}
|
|
397
|
+
createAppPackageForm(file) {
|
|
398
|
+
const content = new form_data_1.default();
|
|
399
|
+
content.append("AppPackageZip", file, {
|
|
400
|
+
filename: "appPackage.zip",
|
|
401
|
+
contentType: "application/zip",
|
|
402
|
+
});
|
|
403
|
+
return content;
|
|
404
|
+
}
|
|
405
|
+
async getAppResponse(token, appId) {
|
|
406
|
+
const requester = this.createRequesterWithToken(token);
|
|
407
|
+
globalVars_1.TOOLS.logProvider.debug(`Sent API Request: GET ${this.getEndpoint()}/v1.0/apps/${appId}`);
|
|
408
|
+
const response = await retryHandler_1.RetryHandler.Retry(() => requester.get(`/v1.0/apps/${appId}`));
|
|
409
|
+
if (!response)
|
|
410
|
+
throw new Error(`Cannot get the app with app ID ${appId}`);
|
|
411
|
+
return response;
|
|
412
|
+
}
|
|
413
|
+
async resolveLegacyAppId(token, appId) {
|
|
414
|
+
const app = (await this.listApps(token)).find((item) => item.teamsAppId === appId);
|
|
415
|
+
return app?.appId ?? appId;
|
|
416
|
+
}
|
|
417
|
+
async updateOwners(token, resolvedAppId, requestedAppId, appUsers) {
|
|
418
|
+
try {
|
|
419
|
+
globalVars_1.TOOLS.logProvider.debug((0, localizeUtils_1.getLocalizedString)("core.common.SendingApiRequest", `${this.getEndpoint()}/v1.0/apps/{appId}/owners`, JSON.stringify({ appUsers })));
|
|
420
|
+
const requester = this.createRequesterWithToken(token);
|
|
421
|
+
const response = await retryHandler_1.RetryHandler.Retry(() => requester.post(`/v1.0/apps/${resolvedAppId}/owners`, { appUsers }, { headers: { "If-Match": this.appEtags.get(requestedAppId) ?? "*" } }));
|
|
422
|
+
globalVars_1.TOOLS.logProvider.debug((0, localizeUtils_1.getLocalizedString)("core.common.ReceiveApiResponse", JSON.stringify(response?.data)));
|
|
423
|
+
if (!response)
|
|
424
|
+
throw new Error(constants_2.ErrorMessages.GrantPermissionFailed);
|
|
425
|
+
}
|
|
426
|
+
catch (error) {
|
|
427
|
+
throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.UPDATE_OWNER);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
async getBotRegistrationAtPath(token, path) {
|
|
431
|
+
const requester = this.createRequesterWithToken(token);
|
|
432
|
+
try {
|
|
433
|
+
const response = await retryHandler_1.RetryHandler.Retry(() => requester.get(path));
|
|
434
|
+
if ((0, common_1.isHappyResponse)(response))
|
|
435
|
+
return response.data;
|
|
436
|
+
throw this.wrapException(this.wrapResponse(undefined, response), constants_2.APP_STUDIO_API_NAMES.GET_BOT, (0, localizeUtils_1.getDefaultString)("error.appstudio.apiFailed.name.common"), "Failed to get data");
|
|
437
|
+
}
|
|
438
|
+
catch (error) {
|
|
439
|
+
this.handleBotFrameworkError(error, constants_2.APP_STUDIO_API_NAMES.GET_BOT);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
getAppUsers(app) {
|
|
443
|
+
const accessControl = app.appProfile?.appAccessControl;
|
|
444
|
+
if (Array.isArray(accessControl))
|
|
445
|
+
return accessControl;
|
|
446
|
+
return accessControl?.appUsers ?? accessControl?.users ?? [];
|
|
447
|
+
}
|
|
448
|
+
toAppUserPayload(user) {
|
|
449
|
+
return {
|
|
450
|
+
aadId: user.aadId,
|
|
451
|
+
tenantId: user.tenantId,
|
|
452
|
+
role: user.isAdministrator ? "Owner" : "Member",
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
toAppDefinition(app) {
|
|
456
|
+
if (app.teamsAppId)
|
|
457
|
+
return app;
|
|
458
|
+
const metadata = app.appProfile?.appMetadata ?? {};
|
|
459
|
+
const manifest = app.appProfile?.appDetails?.applicationManifest ?? {};
|
|
460
|
+
const appUsers = this.getAppUsers(app);
|
|
461
|
+
const owner = appUsers.find((user) => user.aadId === metadata.ownerAadId) ?? appUsers[0];
|
|
462
|
+
return {
|
|
463
|
+
teamsAppId: manifest.id ?? app.appId,
|
|
464
|
+
appId: app.appId,
|
|
465
|
+
tenantId: owner?.tenantId,
|
|
466
|
+
ownerAadId: metadata.ownerAadId,
|
|
467
|
+
userList: appUsers.map((user) => ({
|
|
468
|
+
aadId: user.aadId,
|
|
469
|
+
tenantId: user.tenantId,
|
|
470
|
+
role: user.role,
|
|
471
|
+
displayName: "",
|
|
472
|
+
userPrincipalName: "",
|
|
473
|
+
isAdministrator: user.role === "Owner",
|
|
474
|
+
})),
|
|
475
|
+
createdAt: metadata.createdAt,
|
|
476
|
+
updatedAt: metadata.updatedAt,
|
|
477
|
+
appName: manifest.name?.short,
|
|
478
|
+
version: manifest.version,
|
|
479
|
+
manifestVersion: manifest.manifestVersion,
|
|
480
|
+
packageName: manifest.packageName,
|
|
481
|
+
shortName: manifest.name?.short,
|
|
482
|
+
longName: manifest.name?.full,
|
|
483
|
+
developerName: manifest.developer?.name,
|
|
484
|
+
websiteUrl: manifest.developer?.websiteUrl,
|
|
485
|
+
privacyUrl: manifest.developer?.privacyUrl,
|
|
486
|
+
termsOfUseUrl: manifest.developer?.termsOfUseUrl,
|
|
487
|
+
mpnId: manifest.developer?.mpnId,
|
|
488
|
+
shortDescription: manifest.description?.short,
|
|
489
|
+
longDescription: manifest.description?.full,
|
|
490
|
+
colorIcon: manifest.icons?.color,
|
|
491
|
+
outlineIcon: manifest.icons?.outline,
|
|
492
|
+
accentColor: manifest.accentColor,
|
|
493
|
+
configurableTabs: manifest.configurableTabs,
|
|
494
|
+
staticTabs: manifest.staticTabs,
|
|
495
|
+
bots: manifest.bots,
|
|
496
|
+
connectors: manifest.connectors,
|
|
497
|
+
messagingExtensions: manifest.composeExtensions,
|
|
498
|
+
validDomains: manifest.validDomains,
|
|
499
|
+
webApplicationInfoId: manifest.webApplicationInfo?.id,
|
|
500
|
+
webApplicationInfoResource: manifest.webApplicationInfo?.resource,
|
|
501
|
+
devicePermissions: manifest.devicePermissions,
|
|
502
|
+
showLoadingIndicator: manifest.showLoadingIndicator,
|
|
503
|
+
isFullScreen: manifest.isFullScreen,
|
|
504
|
+
defaultInstallScope: manifest.defaultInstallScope,
|
|
505
|
+
defaultGroupCapability: manifest.defaultGroupCapability,
|
|
506
|
+
configurableProperties: manifest.configurableProperties,
|
|
507
|
+
meetingExtensionDefinition: manifest.meetingExtensionDefinition,
|
|
508
|
+
activities: manifest.activities,
|
|
509
|
+
authorization: manifest.authorization,
|
|
510
|
+
localizationInfo: manifest.localizationInfo,
|
|
511
|
+
supportsChannelFeatures: manifest.supportsChannelFeatures,
|
|
512
|
+
};
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
exports.DevPortalClient = DevPortalClient;
|
|
516
|
+
tslib_1.__decorate([
|
|
517
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
518
|
+
tslib_1.__metadata("design:type", Function),
|
|
519
|
+
tslib_1.__metadata("design:paramtypes", [String, String]),
|
|
520
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
521
|
+
], DevPortalClient.prototype, "createApp", null);
|
|
522
|
+
tslib_1.__decorate([
|
|
523
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
524
|
+
tslib_1.__metadata("design:type", Function),
|
|
525
|
+
tslib_1.__metadata("design:paramtypes", [String, String, Buffer]),
|
|
526
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
527
|
+
], DevPortalClient.prototype, "updateApp", null);
|
|
528
|
+
tslib_1.__decorate([
|
|
529
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
530
|
+
tslib_1.__metadata("design:type", Function),
|
|
531
|
+
tslib_1.__metadata("design:paramtypes", [String]),
|
|
532
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
533
|
+
], DevPortalClient.prototype, "listApps", null);
|
|
534
|
+
tslib_1.__decorate([
|
|
535
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
536
|
+
tslib_1.__metadata("design:type", Function),
|
|
537
|
+
tslib_1.__metadata("design:paramtypes", [String, String]),
|
|
538
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
539
|
+
], DevPortalClient.prototype, "deleteApp", null);
|
|
540
|
+
tslib_1.__decorate([
|
|
541
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
542
|
+
tslib_1.__metadata("design:type", Function),
|
|
543
|
+
tslib_1.__metadata("design:paramtypes", [String, String]),
|
|
544
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
545
|
+
], DevPortalClient.prototype, "getApp", null);
|
|
546
|
+
tslib_1.__decorate([
|
|
547
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
548
|
+
tslib_1.__metadata("design:type", Function),
|
|
549
|
+
tslib_1.__metadata("design:paramtypes", [String, String]),
|
|
550
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
551
|
+
], DevPortalClient.prototype, "getAppPackage", null);
|
|
552
|
+
tslib_1.__decorate([
|
|
553
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
554
|
+
tslib_1.__metadata("design:type", Function),
|
|
555
|
+
tslib_1.__metadata("design:paramtypes", [String, String]),
|
|
556
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
557
|
+
], DevPortalClient.prototype, "checkExistsInTenant", null);
|
|
558
|
+
tslib_1.__decorate([
|
|
559
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
560
|
+
tslib_1.__metadata("design:type", Function),
|
|
561
|
+
tslib_1.__metadata("design:paramtypes", [String, String, Object]),
|
|
562
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
563
|
+
], DevPortalClient.prototype, "removePermission", null);
|
|
564
|
+
tslib_1.__decorate([
|
|
565
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
566
|
+
tslib_1.__metadata("design:type", Function),
|
|
567
|
+
tslib_1.__metadata("design:paramtypes", [String, String, Object]),
|
|
568
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
569
|
+
], DevPortalClient.prototype, "grantPermission", null);
|
|
570
|
+
tslib_1.__decorate([
|
|
571
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
572
|
+
tslib_1.__metadata("design:type", Function),
|
|
573
|
+
tslib_1.__metadata("design:paramtypes", [String, Buffer,
|
|
574
|
+
AbortSignal]),
|
|
575
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
576
|
+
], DevPortalClient.prototype, "partnerCenterAppPackageValidation", null);
|
|
577
|
+
tslib_1.__decorate([
|
|
578
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
579
|
+
tslib_1.__metadata("design:type", Function),
|
|
580
|
+
tslib_1.__metadata("design:paramtypes", [String, String]),
|
|
581
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
582
|
+
], DevPortalClient.prototype, "submitAppValidationRequest", null);
|
|
583
|
+
tslib_1.__decorate([
|
|
584
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
585
|
+
tslib_1.__metadata("design:type", Function),
|
|
586
|
+
tslib_1.__metadata("design:paramtypes", [String, String]),
|
|
587
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
588
|
+
], DevPortalClient.prototype, "getAppValidationRequestList", null);
|
|
589
|
+
tslib_1.__decorate([
|
|
590
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
591
|
+
tslib_1.__metadata("design:type", Function),
|
|
592
|
+
tslib_1.__metadata("design:paramtypes", [String, String]),
|
|
593
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
594
|
+
], DevPortalClient.prototype, "getAppValidationById", null);
|
|
595
|
+
tslib_1.__decorate([
|
|
596
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
597
|
+
tslib_1.__metadata("design:type", Function),
|
|
598
|
+
tslib_1.__metadata("design:paramtypes", [String, String]),
|
|
599
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
600
|
+
], DevPortalClient.prototype, "getBotRegistration", null);
|
|
601
|
+
tslib_1.__decorate([
|
|
602
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
603
|
+
tslib_1.__metadata("design:type", Function),
|
|
604
|
+
tslib_1.__metadata("design:paramtypes", [String]),
|
|
605
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
606
|
+
], DevPortalClient.prototype, "listBots", null);
|
|
607
|
+
tslib_1.__decorate([
|
|
608
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
609
|
+
tslib_1.__metadata("design:type", Function),
|
|
610
|
+
tslib_1.__metadata("design:paramtypes", [String, String]),
|
|
611
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
612
|
+
], DevPortalClient.prototype, "deleteBot", null);
|
|
613
|
+
tslib_1.__decorate([
|
|
614
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
615
|
+
tslib_1.__metadata("design:type", Function),
|
|
616
|
+
tslib_1.__metadata("design:paramtypes", [String, Object, Object]),
|
|
617
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
618
|
+
], DevPortalClient.prototype, "createBotRegistration", null);
|
|
619
|
+
tslib_1.__decorate([
|
|
620
|
+
(0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
|
|
621
|
+
tslib_1.__metadata("design:type", Function),
|
|
622
|
+
tslib_1.__metadata("design:paramtypes", [String, Object]),
|
|
623
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
624
|
+
], DevPortalClient.prototype, "updateBotRegistration", null);
|
|
625
|
+
exports.devPortalClient = new DevPortalClient();
|
|
626
|
+
//# sourceMappingURL=devPortalClient.js.map
|