@microsoft/teams-js 2.27.0-beta.0 → 2.28.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.
@@ -991,6 +991,7 @@ __webpack_require__.r(__webpack_exports__);
991
991
  // EXPORTS
992
992
  __webpack_require__.d(__webpack_exports__, {
993
993
  ActionObjectType: () => (/* reexport */ ActionObjectType),
994
+ AppId: () => (/* reexport */ AppId),
994
995
  ChannelType: () => (/* reexport */ ChannelType),
995
996
  ChildAppWindow: () => (/* reexport */ ChildAppWindow),
996
997
  DialogDimension: () => (/* reexport */ DialogDimension),
@@ -1032,6 +1033,7 @@ __webpack_require__.d(__webpack_exports__, {
1032
1033
  getContext: () => (/* reexport */ getContext),
1033
1034
  getMruTabInstances: () => (/* reexport */ getMruTabInstances),
1034
1035
  getTabInstances: () => (/* reexport */ getTabInstances),
1036
+ hostEntity: () => (/* reexport */ hostEntity),
1035
1037
  initialize: () => (/* reexport */ initialize),
1036
1038
  initializeWithFrameContext: () => (/* reexport */ initializeWithFrameContext),
1037
1039
  liveShare: () => (/* reexport */ liveShare),
@@ -1131,7 +1133,7 @@ function isFollowingApiVersionTagFormat(apiVersionTag) {
1131
1133
  }
1132
1134
 
1133
1135
  ;// CONCATENATED MODULE: ./src/artifactsForCDN/validDomains.json
1134
- const validDomains_namespaceObject = /*#__PURE__*/JSON.parse('{"validOrigins":["teams.microsoft.com","teams.microsoft.us","gov.teams.microsoft.us","dod.teams.microsoft.us","int.teams.microsoft.com","outlook.office.com","outlook-sdf.office.com","outlook.office365.com","outlook-sdf.office365.com","outlook.live.com","outlook-sdf.live.com","teams.live.com","local.teams.live.com","local.teams.live.com:8080","local.teams.office.com","local.teams.office.com:8080","devspaces.skype.com","*.www.office.com","www.office.com","word.office.com","excel.office.com","powerpoint.office.com","www.officeppe.com","*.www.microsoft365.com","www.microsoft365.com","bing.com","edgeservices.bing.com","www.bing.com","www.staging-bing-int.com","*.cloud.microsoft","copilot.microsoft.com","windows.msn.com","fa000000125.resources.office.net","fa000000129.resources.office.net","fa000000124.resources.office.net","fa000000128.resources.office.net","fa000000136.resources.office.net"]}');
1136
+ const validDomains_namespaceObject = /*#__PURE__*/JSON.parse('{"validOrigins":["teams.microsoft.com","teams.microsoft.us","gov.teams.microsoft.us","dod.teams.microsoft.us","int.teams.microsoft.com","outlook.office.com","outlook-sdf.office.com","outlook.office365.com","outlook-sdf.office365.com","outlook.live.com","outlook-sdf.live.com","teams.live.com","local.teams.live.com","local.teams.live.com:8080","local.teams.office.com","local.teams.office.com:8080","devspaces.skype.com","*.www.office.com","www.office.com","word.office.com","excel.office.com","powerpoint.office.com","www.officeppe.com","*.www.microsoft365.com","www.microsoft365.com","bing.com","edgeservices.bing.com","www.bing.com","www.staging-bing-int.com","*.cloud.microsoft","*.m365.cloud.microsoft","copilot.microsoft.com","windows.msn.com","fa000000125.resources.office.net","fa000000129.resources.office.net","fa000000124.resources.office.net","fa000000128.resources.office.net","fa000000136.resources.office.net"]}');
1135
1137
  var artifactsForCDN_validDomains_namespaceObject = /*#__PURE__*/__webpack_require__.t(validDomains_namespaceObject, 2);
1136
1138
  ;// CONCATENATED MODULE: ./src/internal/constants.ts
1137
1139
 
@@ -2750,6 +2752,9 @@ function generateGUID() {
2750
2752
  */
2751
2753
  function utils_deepFreeze(obj) {
2752
2754
  Object.keys(obj).forEach((prop) => {
2755
+ if (obj[prop] === null || obj[prop] === undefined) {
2756
+ return;
2757
+ }
2753
2758
  if (typeof obj[prop] === 'object') {
2754
2759
  utils_deepFreeze(obj[prop]);
2755
2760
  }
@@ -3504,7 +3509,7 @@ const _minRuntimeConfigToUninitialize = {
3504
3509
  * @hidden
3505
3510
  * Package version.
3506
3511
  */
3507
- const version = "2.27.0-beta.0";
3512
+ const version = "2.28.0";
3508
3513
 
3509
3514
  ;// CONCATENATED MODULE: ./src/internal/internalAPIs.ts
3510
3515
 
@@ -5566,6 +5571,9 @@ function tabsNavigateToTabHelper(apiVersionTag, tabInstance) {
5566
5571
  resolve(sendAndHandleStatusAndReasonWithDefaultError(apiVersionTag, 'navigateToTab', errorMessage, tabInstance));
5567
5572
  });
5568
5573
  }
5574
+ /**
5575
+ * @hidden
5576
+ */
5569
5577
  function returnFocusHelper(apiVersionTag, navigateForward) {
5570
5578
  ensureInitialized(runtime);
5571
5579
  if (!pages.isSupported()) {
@@ -5642,14 +5650,77 @@ function configSetConfigHelper(apiVersionTag, instanceConfig) {
5642
5650
  var pages;
5643
5651
  (function (pages) {
5644
5652
  /**
5645
- * Return focus to the host. Will move focus forward or backward based on where the application container falls in
5646
- * the F6/tab order in the host.
5647
- * On mobile hosts or hosts where there is no keyboard interaction or UI notion of "focus" this function has no
5648
- * effect and will be a no-op when called.
5649
- * @param navigateForward - Determines the direction to focus in host.
5653
+ * @hidden
5654
+ * List of enter focus action items
5655
+ *
5656
+ * @internal
5657
+ * Limited to Microsoft-internal use
5650
5658
  */
5651
- function returnFocus(navigateForward) {
5652
- returnFocusHelper(getApiVersionTag(pagesTelemetryVersionNumber, "pages.returnFocus" /* ApiName.Pages_ReturnFocus */), navigateForward);
5659
+ let EnterFocusType;
5660
+ (function (EnterFocusType) {
5661
+ /**
5662
+ * Determines the previous direction to focus in app when hot keys entered.
5663
+ */
5664
+ EnterFocusType[EnterFocusType["PreviousLandmark"] = 0] = "PreviousLandmark";
5665
+ /**
5666
+ * Determines the next direction to focus in app when hot keys entered.
5667
+ */
5668
+ EnterFocusType[EnterFocusType["NextLandmark"] = 1] = "NextLandmark";
5669
+ /**
5670
+ * Determines if the focus should go to the particular content of the app.
5671
+ * Read - Focus should go to the content of the app.
5672
+ */
5673
+ EnterFocusType[EnterFocusType["Read"] = 2] = "Read";
5674
+ /**
5675
+ * Determines if the focus should go to the particular content of the app.
5676
+ * Compose - Focus should go to the compose area (such as textbox) of the app.
5677
+ */
5678
+ EnterFocusType[EnterFocusType["Compose"] = 3] = "Compose";
5679
+ })(EnterFocusType = pages.EnterFocusType || (pages.EnterFocusType = {}));
5680
+ /**
5681
+ * Return focus action items
5682
+ */
5683
+ let ReturnFocusType;
5684
+ (function (ReturnFocusType) {
5685
+ /**
5686
+ * Determines the direction to focus in host for previous landmark.
5687
+ */
5688
+ ReturnFocusType[ReturnFocusType["PreviousLandmark"] = 0] = "PreviousLandmark";
5689
+ /**
5690
+ * Determines the direction to focus in host for next landmark.
5691
+ */
5692
+ ReturnFocusType[ReturnFocusType["NextLandmark"] = 1] = "NextLandmark";
5693
+ /**
5694
+ * Determines if the focus should go to the host's activity feed
5695
+ */
5696
+ ReturnFocusType[ReturnFocusType["GoToActivityFeed"] = 2] = "GoToActivityFeed";
5697
+ })(ReturnFocusType = pages.ReturnFocusType || (pages.ReturnFocusType = {}));
5698
+ /**
5699
+ * @hidden
5700
+ */
5701
+ function returnFocus(arg1) {
5702
+ const apiVersionTag = getApiVersionTag(pagesTelemetryVersionNumber, "pages.returnFocus" /* ApiName.Pages_ReturnFocus */);
5703
+ ensureInitialized(runtime);
5704
+ if (!pages.isSupported()) {
5705
+ throw errorNotSupportedOnPlatform;
5706
+ }
5707
+ if (arg1 === undefined) {
5708
+ sendMessageToParent(apiVersionTag, 'returnFocus', [false]);
5709
+ }
5710
+ if (typeof arg1 === 'boolean') {
5711
+ sendMessageToParent(apiVersionTag, 'returnFocus', [arg1]);
5712
+ }
5713
+ else {
5714
+ switch (arg1) {
5715
+ case pages.ReturnFocusType.PreviousLandmark:
5716
+ case pages.ReturnFocusType.GoToActivityFeed:
5717
+ sendMessageToParent(apiVersionTag, 'returnFocus', [false, arg1]);
5718
+ break;
5719
+ case pages.ReturnFocusType.NextLandmark:
5720
+ sendMessageToParent(apiVersionTag, 'returnFocus', [true, arg1]);
5721
+ break;
5722
+ }
5723
+ }
5653
5724
  }
5654
5725
  pages.returnFocus = returnFocus;
5655
5726
  /**
@@ -10960,24 +11031,75 @@ var videoEffectsEx;
10960
11031
  videoEffectsEx.notifyFatalError = notifyFatalError;
10961
11032
  })(videoEffectsEx || (videoEffectsEx = {}));
10962
11033
 
10963
- ;// CONCATENATED MODULE: ./src/private/index.ts
10964
-
10965
-
10966
-
10967
-
10968
-
10969
-
10970
-
10971
-
10972
-
10973
-
10974
-
10975
-
10976
-
10977
-
10978
-
10979
-
11034
+ ;// CONCATENATED MODULE: ./src/internal/appIdValidation.ts
11035
+ /**
11036
+ * This function can be used to validate if a string is a "valid" app id.
11037
+ * Valid is a relative term, in this case. Truly valid app ids are UUIDs as documented in the schema:
11038
+ * https://learn.microsoft.com/en-us/microsoftteams/platform/resources/schema/manifest-schema#id
11039
+ * However, there are some older internal/hard-coded apps which violate this schema and use names like com.microsoft.teamspace.tab.youtube.
11040
+ * For compatibility with these legacy apps, we unfortunately cannot securely and completely validate app ids as UUIDs. Based
11041
+ * on this, the validation is limited to checking for script tags, length, and non-printable characters.
11042
+ *
11043
+ * @param potentialAppId A string to check if it's a "valid" app id
11044
+ * @throws Error with a message describing the exact validation violation
11045
+ */
11046
+ function validateStringAsAppId(potentialAppId) {
11047
+ if (doesStringContainScriptTags(potentialAppId)) {
11048
+ throw new Error(`Potential app id (${potentialAppId}) is invalid; it contains script tags.`);
11049
+ }
11050
+ if (!isStringWithinAppIdLengthLimits(potentialAppId)) {
11051
+ throw new Error(`Potential app id (${potentialAppId}) is invalid; its length ${potentialAppId.length} is not within the length limits (${minimumValidAppIdLength}-${maximumValidAppIdLength}).`);
11052
+ }
11053
+ if (doesStringContainNonPrintableCharacters(potentialAppId)) {
11054
+ throw new Error(`Potential app id (${potentialAppId}) is invalid; it contains non-printable characters.`);
11055
+ }
11056
+ }
11057
+ function doesStringContainScriptTags(str) {
11058
+ const scriptRegex = /<script[^>]*>[\s\S]*?<\/script[^>]*>/gi;
11059
+ return scriptRegex.test(str);
11060
+ }
11061
+ const minimumValidAppIdLength = 4;
11062
+ const maximumValidAppIdLength = 256;
11063
+ function isStringWithinAppIdLengthLimits(potentialAppId) {
11064
+ return potentialAppId.length < maximumValidAppIdLength && potentialAppId.length > minimumValidAppIdLength;
11065
+ }
11066
+ function doesStringContainNonPrintableCharacters(str) {
11067
+ return [...str].some((char) => {
11068
+ const charCode = char.charCodeAt(0);
11069
+ return charCode < 32 || charCode > 126;
11070
+ });
11071
+ }
11072
+
11073
+ ;// CONCATENATED MODULE: ./src/public/appId.ts
10980
11074
 
11075
+ /**
11076
+ * A strongly-typed class used to represent a "valid" app id.
11077
+ *
11078
+ * Valid is a relative term, in this case. Truly valid app ids are UUIDs as documented in the schema:
11079
+ * https://learn.microsoft.com/en-us/microsoftteams/platform/resources/schema/manifest-schema#id
11080
+ * However, there are some older internal/hard-coded apps which violate this schema and use names like
11081
+ * com.microsoft.teamspace.tab.youtube. For compatibility with these legacy apps, we unfortunately cannot
11082
+ * securely and completely validate app ids as UUIDs. Based on this, the validation is limited to checking
11083
+ * for script tags, length, and non-printable characters.
11084
+ */
11085
+ class AppId {
11086
+ /**
11087
+ * Creates a strongly-typed AppId from a string
11088
+ *
11089
+ * @param appIdAsString An app id represented as a string
11090
+ * @throws Error with a message describing the exact validation violation
11091
+ */
11092
+ constructor(appIdAsString) {
11093
+ this.appIdAsString = appIdAsString;
11094
+ validateStringAsAppId(appIdAsString);
11095
+ }
11096
+ /**
11097
+ * Returns the app id as a string
11098
+ */
11099
+ toString() {
11100
+ return this.appIdAsString;
11101
+ }
11102
+ }
10981
11103
 
10982
11104
  ;// CONCATENATED MODULE: ./src/internal/deepLinkConstants.ts
10983
11105
  /**
@@ -14068,10 +14190,6 @@ var sharing;
14068
14190
  throw errorNotSupportedOnPlatform;
14069
14191
  }
14070
14192
  const contentDetails = yield sendAndHandleSdkError(getApiVersionTag(sharingTelemetryVersionNumber_v2, "sharing.history.getContent" /* ApiName.Sharing_History_GetContent */), 'sharing.history.getContent');
14071
- contentDetails.map((contentDetails) => {
14072
- validateUuid(contentDetails.author);
14073
- validateUuid(contentDetails.threadId);
14074
- });
14075
14193
  return contentDetails;
14076
14194
  });
14077
14195
  }
@@ -14674,7 +14792,8 @@ var thirdPartyCloudStorage;
14674
14792
  /**
14675
14793
  * Get drag-and-drop files using a callback.
14676
14794
  *
14677
- * @param {string} dragAndDropInput - Teams thread id or Teams conversation id from a Teams chat/channel
14795
+ * @param {string} dragAndDropInput - unique id which is a combination of replyToId + threadId of teams chat and channel.
14796
+ * Both replyToId and threadId can be fetched from application context.
14678
14797
  * @param {DragAndDropFileCallback} dragAndDropFileCallback - callback
14679
14798
  * A callback function to handle the result of the operation
14680
14799
  * @beta
@@ -16047,6 +16166,289 @@ var marketplace;
16047
16166
 
16048
16167
 
16049
16168
 
16169
+
16170
+
16171
+
16172
+
16173
+
16174
+
16175
+
16176
+
16177
+
16178
+
16179
+
16180
+
16181
+
16182
+
16183
+
16184
+
16185
+
16186
+
16187
+
16188
+
16189
+ ;// CONCATENATED MODULE: ./src/private/hostEntity.ts
16190
+
16191
+
16192
+
16193
+
16194
+
16195
+
16196
+ /**
16197
+ * v2 APIs telemetry file: All of APIs in this capability file should send out API version v2 ONLY
16198
+ */
16199
+ const hostEntityTelemetryVersionNumber = "v2" /* ApiVersionNumber.V_2 */;
16200
+ /**
16201
+ * @hidden
16202
+ * @internal
16203
+ * @beta
16204
+ * Limited to Microsoft-internal use
16205
+ *
16206
+ * This capability allows an app to associate apps with a host entity, such as a Teams channel or chat, and configure them as needed.
16207
+ */
16208
+ var hostEntity;
16209
+ (function (hostEntity) {
16210
+ let AppTypes;
16211
+ (function (AppTypes) {
16212
+ AppTypes["edu"] = "EDU";
16213
+ })(AppTypes = hostEntity.AppTypes || (hostEntity.AppTypes = {}));
16214
+ /**
16215
+ * @hidden
16216
+ * @internal
16217
+ * @beta
16218
+ * Limited to Microsoft-internal use
16219
+ *
16220
+ * CRUD operations for tabs associated with apps
16221
+ */
16222
+ let tab;
16223
+ (function (tab_1) {
16224
+ /**
16225
+ * @hidden
16226
+ * @internal
16227
+ * @beta
16228
+ * Limited to Microsoft-internal use
16229
+ *
16230
+ * Launches host-owned UI that lets a user select an app, installs it if required,
16231
+ * runs through app configuration if required, and then associates the app with the threadId provided
16232
+ *
16233
+ * @param hostEntityIds Ids of the host entity like channel, chat or meeting
16234
+ *
16235
+ * @param appTypes What type of applications to show the user. If EDU is passed as appType, only apps supported by EDU tenant are shown.
16236
+ * If no value is passed, all apps are shown.
16237
+ *
16238
+ * @returns The HostEntityTabInstance of the newly associated app
16239
+ *
16240
+ * @throws Error if host does not support this capability, library as not been initialized successfully, input parameters are invalid, user cancels operation or installing
16241
+ * or configuring or adding tab fails
16242
+ */
16243
+ function addAndConfigure(hostEntityIds, appTypes) {
16244
+ ensureInitialized(runtime);
16245
+ if (!isSupported()) {
16246
+ throw new Error(`Error code: ${ErrorCode.NOT_SUPPORTED_ON_PLATFORM}, message: Not supported on platform`);
16247
+ }
16248
+ validateThreadId(hostEntityIds.threadId);
16249
+ if (appTypes && appTypes.length === 0) {
16250
+ throw new Error(`Error code: ${ErrorCode.INVALID_ARGUMENTS}, message: App types cannot be an empty array`);
16251
+ }
16252
+ return sendMessageToParentAsync(getApiVersionTag(hostEntityTelemetryVersionNumber, "hostEntity.tab.addAndConfigure" /* ApiName.HostEntity_Tab_addAndConfigureApp */), 'hostEntity.tab.addAndConfigure', [hostEntityIds, appTypes]).then(([response]) => {
16253
+ var _a;
16254
+ if (isSdkError(response)) {
16255
+ throw new Error(`Error code: ${response.errorCode}, message: ${(_a = response.message) !== null && _a !== void 0 ? _a : 'None'}`);
16256
+ }
16257
+ return response;
16258
+ });
16259
+ }
16260
+ tab_1.addAndConfigure = addAndConfigure;
16261
+ /**
16262
+ * @hidden
16263
+ * @internal
16264
+ * @beta
16265
+ * Limited to Microsoft-internal use
16266
+ *
16267
+ * Returns all tab instances associated with a host entity
16268
+ *
16269
+ * @param hostEntityIds Ids of the host entity like channel, chat or meeting
16270
+ *
16271
+ * @returns Object with array of HostEntityTabInstance's associated with a host entity
16272
+ *
16273
+ * @throws Error if host does not support this capability, library as not been initialized successfully, input parameters are invalid or fetching tabs fails
16274
+ */
16275
+ function getAll(hostEntityIds) {
16276
+ ensureInitialized(runtime);
16277
+ if (!isSupported()) {
16278
+ throw new Error(`Error code: ${ErrorCode.NOT_SUPPORTED_ON_PLATFORM}, message: Not supported on platform`);
16279
+ }
16280
+ validateThreadId(hostEntityIds.threadId);
16281
+ return sendMessageToParentAsync(getApiVersionTag(hostEntityTelemetryVersionNumber, "hostEntity.tab.getAll" /* ApiName.HostEntity_Tab_getAll */), 'hostEntity.tab.getAll', [hostEntityIds]).then(([response]) => {
16282
+ var _a;
16283
+ if (isSdkError(response)) {
16284
+ throw new Error(`Error code: ${response.errorCode}, message: ${(_a = response.message) !== null && _a !== void 0 ? _a : 'None'}`);
16285
+ }
16286
+ return response;
16287
+ });
16288
+ }
16289
+ tab_1.getAll = getAll;
16290
+ /**
16291
+ * @hidden
16292
+ * @internal
16293
+ * @beta
16294
+ * Limited to Microsoft-internal use
16295
+ *
16296
+ * Launches host-owned UI that lets a user re-configure the contentUrl of the tab
16297
+ *
16298
+ * @param tab Configurable tab instance that needs to be updated
16299
+ *
16300
+ * @param hostEntityIds Ids of the host entity like channel, chat or meeting
16301
+ *
16302
+ * @returns The HostEntityTabInstance of the updated tab
16303
+ *
16304
+ * @throws Error if host does not support this capability, library as not been initialized successfully, input parameters are invalid, user cancels operation,
16305
+ * re-configuring tab fails or if tab is a static tab
16306
+ */
16307
+ function reconfigure(tab, hostEntityIds) {
16308
+ ensureInitialized(runtime);
16309
+ if (!isSupported()) {
16310
+ throw new Error(`Error code: ${ErrorCode.NOT_SUPPORTED_ON_PLATFORM}, message: Not supported on platform`);
16311
+ }
16312
+ validateTab(tab);
16313
+ validateThreadId(hostEntityIds.threadId);
16314
+ return sendMessageToParentAsync(getApiVersionTag(hostEntityTelemetryVersionNumber, "hostEntity.tab.reconfigure" /* ApiName.HostEntity_Tab_reconfigure */), 'hostEntity.tab.reconfigure', [tab, hostEntityIds]).then(([response]) => {
16315
+ var _a;
16316
+ if (isSdkError(response)) {
16317
+ throw new Error(`Error code: ${response.errorCode}, message: ${(_a = response.message) !== null && _a !== void 0 ? _a : 'None'}`);
16318
+ }
16319
+ return response;
16320
+ });
16321
+ }
16322
+ tab_1.reconfigure = reconfigure;
16323
+ /**
16324
+ * @hidden
16325
+ * @internal
16326
+ * @beta
16327
+ * Limited to Microsoft-internal use
16328
+ *
16329
+ * Launches host-owned UI that lets a user rename the tab
16330
+ *
16331
+ * @param tab Configurable tab instance that needs to be updated
16332
+ *
16333
+ * @param hostEntityIds Ids of the host entity like channel, chat or meeting
16334
+ *
16335
+ * @returns The HostEntityTabInstance of the updated tab
16336
+ *
16337
+ * @throws Error if host does not support this capability, library as not been initialized successfully, input parameters are invalid, user cancels operation,
16338
+ * re-naming tab fails or if tab is a static tab
16339
+ */
16340
+ function rename(tab, hostEntityIds) {
16341
+ ensureInitialized(runtime);
16342
+ if (!isSupported()) {
16343
+ throw new Error(`Error code: ${ErrorCode.NOT_SUPPORTED_ON_PLATFORM}, message: Not supported on platform`);
16344
+ }
16345
+ validateTab(tab);
16346
+ validateThreadId(hostEntityIds.threadId);
16347
+ return sendMessageToParentAsync(getApiVersionTag(hostEntityTelemetryVersionNumber, "hostEntity.tab.rename" /* ApiName.HostEntity_Tab_rename */), 'hostEntity.tab.rename', [tab, hostEntityIds]).then(([response]) => {
16348
+ var _a;
16349
+ if (isSdkError(response)) {
16350
+ throw new Error(`Error code: ${response.errorCode}, message: ${(_a = response.message) !== null && _a !== void 0 ? _a : 'None'}`);
16351
+ }
16352
+ return response;
16353
+ });
16354
+ }
16355
+ tab_1.rename = rename;
16356
+ /**
16357
+ * @hidden
16358
+ * @internal
16359
+ * @beta
16360
+ * Limited to Microsoft-internal use
16361
+ *
16362
+ * Launches host-owned UI that lets a user remove the tab
16363
+ *
16364
+ * @param tab tab instance that needs to be updated. Can be static tab or configurable tab.
16365
+ *
16366
+ * @param hostEntityIds Ids of the host entity like channel, chat or meeting
16367
+ *
16368
+ * @returns Boolean. Returns true if removing tab was successful
16369
+ *
16370
+ * @throws Error if host does not support this capability, library as not been initialized successfully, input parameters are invalid, user cancels operation or
16371
+ * removing tab fails
16372
+ */
16373
+ function remove(tab, hostEntityIds) {
16374
+ ensureInitialized(runtime);
16375
+ if (!isSupported()) {
16376
+ throw new Error(`Error code: ${ErrorCode.NOT_SUPPORTED_ON_PLATFORM}, message: Not supported on platform`);
16377
+ }
16378
+ validateThreadId(hostEntityIds.threadId);
16379
+ validateTab(tab);
16380
+ return sendMessageToParentAsync(getApiVersionTag(hostEntityTelemetryVersionNumber, "hostEntity.tab.remove" /* ApiName.HostEntity_Tab_remove */), 'hostEntity.tab.remove', [tab, hostEntityIds]).then(([response]) => {
16381
+ var _a;
16382
+ if (isSdkError(response)) {
16383
+ throw new Error(`Error code: ${response.errorCode}, message: ${(_a = response.message) !== null && _a !== void 0 ? _a : 'None'}`);
16384
+ }
16385
+ return true;
16386
+ });
16387
+ }
16388
+ tab_1.remove = remove;
16389
+ /**
16390
+ * @hidden
16391
+ * @internal
16392
+ * @beta
16393
+ * Limited to Microsoft-internal use
16394
+ *
16395
+ * Checks if the hostEntity.tab capability is supported by the host
16396
+ * @returns boolean to represent whether the histEntity and hostEntity.tab capability is supported
16397
+ *
16398
+ * @throws Error if {@linkcode app.initialize} has not successfully completed
16399
+ */
16400
+ function isSupported() {
16401
+ var _a;
16402
+ return ensureInitialized(runtime) && hostEntity.isSupported() && ((_a = runtime.supports.hostEntity) === null || _a === void 0 ? void 0 : _a.tab) ? true : false;
16403
+ }
16404
+ tab_1.isSupported = isSupported;
16405
+ /**
16406
+ * @hidden
16407
+ * @internal
16408
+ * @beta
16409
+ * Limited to Microsoft-internal use
16410
+ *
16411
+ * Checks if the threadId is defined
16412
+ * @throws Error if threadId is null, undefined or empty
16413
+ */
16414
+ function validateThreadId(threadId) {
16415
+ if (!threadId || threadId.length == 0) {
16416
+ throw new Error(`Error code: ${ErrorCode.INVALID_ARGUMENTS}, message: ThreadId cannot be null or empty`);
16417
+ }
16418
+ }
16419
+ /**
16420
+ * @hidden
16421
+ * @internal
16422
+ * @beta
16423
+ * Limited to Microsoft-internal use
16424
+ *
16425
+ * Checks if the tabId is defined
16426
+ * @throws Error if tabId is null, undefined or empty
16427
+ */
16428
+ function validateTab(tab) {
16429
+ if (!(tab === null || tab === void 0 ? void 0 : tab.internalTabInstanceId) || tab.internalTabInstanceId.length === 0) {
16430
+ throw new Error(`Error code: ${ErrorCode.INVALID_ARGUMENTS}, message: TabId cannot be null or empty`);
16431
+ }
16432
+ }
16433
+ })(tab = hostEntity.tab || (hostEntity.tab = {}));
16434
+ /**
16435
+ * @hidden
16436
+ * @internal
16437
+ * @beta
16438
+ * Limited to Microsoft-internal use
16439
+ *
16440
+ * Checks if the hostEntity capability is supported by the host
16441
+ * @returns boolean to represent whether the hostEntity capability is supported
16442
+ *
16443
+ * @throws Error if {@linkcode app.initialize} has not successfully completed
16444
+ */
16445
+ function isSupported() {
16446
+ return ensureInitialized(runtime) && runtime.supports.hostEntity ? true : false;
16447
+ }
16448
+ hostEntity.isSupported = isSupported;
16449
+ })(hostEntity || (hostEntity = {}));
16450
+
16451
+ ;// CONCATENATED MODULE: ./src/private/index.ts
16050
16452
 
16051
16453
 
16052
16454