@microsoft/teams-js 2.34.0-beta.1 → 2.34.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.
Files changed (27) hide show
  1. package/README.md +4 -4
  2. package/dist/esm/_virtual/_polyfill-node.buffer.js +1 -0
  3. package/dist/esm/_virtual/_polyfill-node.global.js +1 -0
  4. package/dist/esm/packages/teams-js/dts/internal/constants.d.ts +8 -0
  5. package/dist/esm/packages/teams-js/dts/internal/internalAPIs.d.ts +1 -1
  6. package/dist/esm/packages/teams-js/dts/internal/messageObjects.d.ts +1 -0
  7. package/dist/esm/packages/teams-js/dts/internal/validOrigins.d.ts +1 -1
  8. package/dist/esm/packages/teams-js/dts/public/app/app.d.ts +9 -0
  9. package/dist/esm/packages/teams-js/dts/public/constants.d.ts +2 -0
  10. package/dist/esm/packages/teams-js/dts/public/interfaces.d.ts +14 -0
  11. package/dist/esm/packages/teams-js/src/internal/communication.js +1 -1
  12. package/dist/esm/packages/teams-js/src/internal/constants.js +1 -1
  13. package/dist/esm/packages/teams-js/src/internal/internalAPIs.js +1 -1
  14. package/dist/esm/packages/teams-js/src/internal/utils.js +1 -1
  15. package/dist/esm/packages/teams-js/src/internal/validOrigins.js +1 -1
  16. package/dist/esm/packages/teams-js/src/public/app/app.js +1 -1
  17. package/dist/esm/packages/teams-js/src/public/constants.js +1 -1
  18. package/dist/esm/packages/teams-js/src/public/nestedAppAuth.js +1 -1
  19. package/dist/esm/packages/teams-js/src/public/runtime.js +1 -1
  20. package/dist/esm/packages/teams-js/src/public/version.js +1 -1
  21. package/dist/esm/packages/teams-js/src/public/webStorage.js +1 -1
  22. package/dist/umd/MicrosoftTeams.js +194 -155
  23. package/dist/umd/MicrosoftTeams.js.map +1 -1
  24. package/dist/umd/MicrosoftTeams.min.js +1 -1
  25. package/dist/umd/MicrosoftTeams.min.js.map +1 -1
  26. package/package.json +53 -1
  27. package/dist/esm/node_modules/.pnpm/rollup-plugin-node-polyfills@0.2.1/node_modules/rollup-plugin-node-polyfills/polyfills/buffer-es6.js +0 -1
@@ -3156,6 +3156,8 @@ var HostClientType;
3156
3156
  HostClientType["ipados"] = "ipados";
3157
3157
  /** The host is running on a macOS client, which runs on devices such as MacBooks. */
3158
3158
  HostClientType["macos"] = "macos";
3159
+ /** The host is running on a visionOS client, which runs on devices such as Apple Vision. */
3160
+ HostClientType["visionOS"] = "visionOS";
3159
3161
  /**
3160
3162
  * @deprecated
3161
3163
  * As of TeamsJS v2.0.0, please use {@link teamsRoomsWindows} instead.
@@ -4013,6 +4015,14 @@ const validOriginsLocal = artifactsForCDN_validDomains_namespaceObject;
4013
4015
  * Limited to Microsoft-internal use
4014
4016
  */
4015
4017
  const validOriginsFallback = validOriginsLocal.validOrigins;
4018
+ /**
4019
+ * @hidden
4020
+ * Timeout length for Fetch Call for Valid Origins
4021
+ *
4022
+ * @internal
4023
+ * Limited to Microsoft-internal use
4024
+ */
4025
+ const ORIGIN_LIST_FETCH_TIMEOUT_IN_MS = 1500;
4016
4026
  /**
4017
4027
  * @hidden
4018
4028
  * CDN endpoint of the list of valid origins
@@ -4188,7 +4198,12 @@ const v1NonMobileHostClientTypes = [
4188
4198
  HostClientType.teamsPhones,
4189
4199
  HostClientType.teamsDisplays,
4190
4200
  ];
4191
- const v1MobileHostClientTypes = [HostClientType.android, HostClientType.ios, HostClientType.ipados];
4201
+ const v1MobileHostClientTypes = [
4202
+ HostClientType.android,
4203
+ HostClientType.ios,
4204
+ HostClientType.ipados,
4205
+ HostClientType.visionOS,
4206
+ ];
4192
4207
  const v1HostClientTypes = [...v1NonMobileHostClientTypes, ...v1MobileHostClientTypes];
4193
4208
  /**
4194
4209
  * @hidden
@@ -4338,7 +4353,7 @@ const mapTeamsVersionToSupportedCapabilities = {
4338
4353
  '2.1.1': [
4339
4354
  {
4340
4355
  capability: { nestedAppAuth: {} },
4341
- hostClientTypes: [HostClientType.android, HostClientType.ios, HostClientType.ipados],
4356
+ hostClientTypes: [HostClientType.android, HostClientType.ios, HostClientType.ipados, HostClientType.visionOS],
4342
4357
  },
4343
4358
  ],
4344
4359
  };
@@ -4470,7 +4485,7 @@ function isSerializable(arg) {
4470
4485
  * @hidden
4471
4486
  * Package version.
4472
4487
  */
4473
- const version = "2.34.0-beta.1";
4488
+ const version = "2.34.0";
4474
4489
 
4475
4490
  ;// ./src/internal/internalAPIs.ts
4476
4491
 
@@ -4549,7 +4564,7 @@ function isCurrentSDKVersionAtLeast(requiredVersion = defaultSDKVersionForCompat
4549
4564
  }
4550
4565
  /**
4551
4566
  * @hidden
4552
- * Helper function to identify if host client is either android, ios, or ipados
4567
+ * Helper function to identify if host client is either android, ios, ipados, or visionOS
4553
4568
  *
4554
4569
  * @internal
4555
4570
  * Limited to Microsoft-internal use
@@ -4557,7 +4572,8 @@ function isCurrentSDKVersionAtLeast(requiredVersion = defaultSDKVersionForCompat
4557
4572
  function isHostClientMobile() {
4558
4573
  return (GlobalVars.hostClientType == HostClientType.android ||
4559
4574
  GlobalVars.hostClientType == HostClientType.ios ||
4560
- GlobalVars.hostClientType == HostClientType.ipados);
4575
+ GlobalVars.hostClientType == HostClientType.ipados ||
4576
+ GlobalVars.hostClientType == HostClientType.visionOS);
4561
4577
  }
4562
4578
  /**
4563
4579
  * @hidden
@@ -4697,139 +4713,8 @@ function isNullOrUndefined(value) {
4697
4713
  return value === null || value === undefined;
4698
4714
  }
4699
4715
 
4700
- ;// ./src/internal/validOrigins.ts
4701
- var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
4702
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4703
- return new (P || (P = Promise))(function (resolve, reject) {
4704
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
4705
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
4706
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
4707
- step((generator = generator.apply(thisArg, _arguments || [])).next());
4708
- });
4709
- };
4710
-
4711
-
4712
-
4713
-
4714
- let validOriginsCache = [];
4715
- const validateOriginLogger = getLogger('validateOrigin');
4716
- function prefetchOriginsFromCDN() {
4717
- return __awaiter(this, void 0, void 0, function* () {
4718
- yield getValidOriginsListFromCDN();
4719
- });
4720
- }
4721
- function isValidOriginsCacheEmpty() {
4722
- return validOriginsCache.length === 0;
4723
- }
4724
- function getValidOriginsListFromCDN() {
4725
- return __awaiter(this, void 0, void 0, function* () {
4726
- if (!isValidOriginsCacheEmpty()) {
4727
- return validOriginsCache;
4728
- }
4729
- if (!inServerSideRenderingEnvironment()) {
4730
- return fetch(validOriginsCdnEndpoint)
4731
- .then((response) => {
4732
- if (!response.ok) {
4733
- throw new Error('Invalid Response from Fetch Call');
4734
- }
4735
- return response.json().then((validOriginsCDN) => {
4736
- if (isValidOriginsJSONValid(JSON.stringify(validOriginsCDN))) {
4737
- validOriginsCache = validOriginsCDN.validOrigins;
4738
- return validOriginsCache;
4739
- }
4740
- else {
4741
- throw new Error('Valid Origins List Is Invalid');
4742
- }
4743
- });
4744
- })
4745
- .catch((e) => {
4746
- validateOriginLogger('validOrigins fetch call to CDN failed with error: %s. Defaulting to fallback list', e);
4747
- validOriginsCache = validOriginsFallback;
4748
- return validOriginsCache;
4749
- });
4750
- }
4751
- else {
4752
- validOriginsCache = validOriginsFallback;
4753
- return validOriginsFallback;
4754
- }
4755
- });
4756
- }
4757
- function isValidOriginsJSONValid(validOriginsJSON) {
4758
- let validOriginsCDN = JSON.parse(validOriginsJSON);
4759
- try {
4760
- validOriginsCDN = JSON.parse(validOriginsJSON);
4761
- }
4762
- catch (_) {
4763
- return false;
4764
- }
4765
- if (!validOriginsCDN.validOrigins) {
4766
- return false;
4767
- }
4768
- for (const validOrigin of validOriginsCDN.validOrigins) {
4769
- try {
4770
- new URL('https://' + validOrigin);
4771
- }
4772
- catch (_) {
4773
- validateOriginLogger('isValidOriginsFromCDN call failed to validate origin: %s', validOrigin);
4774
- return false;
4775
- }
4776
- }
4777
- return true;
4778
- }
4779
- /**
4780
- * @param pattern - reference pattern
4781
- * @param host - candidate string
4782
- * @returns returns true if host matches pre-know valid pattern
4783
- *
4784
- * @example
4785
- * validateHostAgainstPattern('*.teams.microsoft.com', 'subdomain.teams.microsoft.com') returns true
4786
- * validateHostAgainstPattern('teams.microsoft.com', 'team.microsoft.com') returns false
4787
- *
4788
- * @internal
4789
- * Limited to Microsoft-internal use
4790
- */
4791
- function validateHostAgainstPattern(pattern, host) {
4792
- if (pattern.substring(0, 2) === '*.') {
4793
- const suffix = pattern.substring(1);
4794
- if (host.length > suffix.length &&
4795
- host.split('.').length === suffix.split('.').length &&
4796
- host.substring(host.length - suffix.length) === suffix) {
4797
- return true;
4798
- }
4799
- }
4800
- else if (pattern === host) {
4801
- return true;
4802
- }
4803
- return false;
4804
- }
4805
- /**
4806
- * @internal
4807
- * Limited to Microsoft-internal use
4808
- */
4809
- function validateOrigin(messageOrigin) {
4810
- return getValidOriginsListFromCDN().then((validOriginsList) => {
4811
- // Check whether the url is in the pre-known allowlist or supplied by user
4812
- if (!isValidHttpsURL(messageOrigin)) {
4813
- validateOriginLogger('Origin %s is invalid because it is not using https protocol. Protocol being used: %s', messageOrigin, messageOrigin.protocol);
4814
- return false;
4815
- }
4816
- const messageOriginHost = messageOrigin.host;
4817
- if (validOriginsList.some((pattern) => validateHostAgainstPattern(pattern, messageOriginHost))) {
4818
- return true;
4819
- }
4820
- for (const domainOrPattern of GlobalVars.additionalValidOrigins) {
4821
- const pattern = domainOrPattern.substring(0, 8) === 'https://' ? domainOrPattern.substring(8) : domainOrPattern;
4822
- if (validateHostAgainstPattern(pattern, messageOriginHost)) {
4823
- return true;
4824
- }
4825
- }
4826
- validateOriginLogger('Origin %s is invalid because it is not an origin approved by this library or included in the call to app.initialize.\nOrigins approved by this library: %o\nOrigins included in app.initialize: %o', messageOrigin, validOriginsList, GlobalVars.additionalValidOrigins);
4827
- return false;
4828
- });
4829
- }
4830
-
4831
4716
  ;// ./src/private/messageChannels/telemetry.ts
4832
- var telemetry_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
4717
+ var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
4833
4718
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4834
4719
  return new (P || (P = Promise))(function (resolve, reject) {
4835
4720
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -4861,7 +4746,7 @@ const logger = getLogger('messageChannels.telemetry');
4861
4746
  * Limited to Microsoft-internal use
4862
4747
  */
4863
4748
  function getTelemetryPort() {
4864
- return telemetry_awaiter(this, void 0, void 0, function* () {
4749
+ return __awaiter(this, void 0, void 0, function* () {
4865
4750
  // If the port has already been initialized, return it.
4866
4751
  if (telemetryPort) {
4867
4752
  logger('Returning telemetry port from cache');
@@ -5155,7 +5040,6 @@ logWhereTeamsJsIsBeingUsed();
5155
5040
  * @returns Promise that will be fulfilled when initialization has completed, or rejected if the initialization fails or times out
5156
5041
  */
5157
5042
  function initialize(validMessageOrigins) {
5158
- prefetchOriginsFromCDN();
5159
5043
  return appInitializeHelper(getApiVersionTag(appTelemetryVersionNumber, "app.initialize" /* ApiName.App_Initialize */), validMessageOrigins);
5160
5044
  }
5161
5045
  /**
@@ -5319,6 +5203,8 @@ function transformLegacyContextToAppContext(legacyContext) {
5319
5203
  ringId: legacyContext.ringId,
5320
5204
  },
5321
5205
  appLaunchId: legacyContext.appLaunchId,
5206
+ appId: legacyContext.appId ? new AppId(legacyContext.appId) : undefined,
5207
+ manifestVersion: legacyContext.manifestVersion,
5322
5208
  },
5323
5209
  page: {
5324
5210
  id: legacyContext.entityId,
@@ -6818,6 +6704,148 @@ function openLinkHelper(apiVersionTag, deepLink) {
6818
6704
  });
6819
6705
  }
6820
6706
 
6707
+ ;// ./src/internal/validOrigins.ts
6708
+ var validOrigins_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
6709
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6710
+ return new (P || (P = Promise))(function (resolve, reject) {
6711
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6712
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6713
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
6714
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
6715
+ });
6716
+ };
6717
+
6718
+
6719
+
6720
+
6721
+ let validOriginsCache = [];
6722
+ const validateOriginLogger = getLogger('validateOrigin');
6723
+ function prefetchOriginsFromCDN() {
6724
+ return validOrigins_awaiter(this, void 0, void 0, function* () {
6725
+ yield getValidOriginsListFromCDN();
6726
+ });
6727
+ }
6728
+ function isValidOriginsCacheEmpty() {
6729
+ return validOriginsCache.length === 0;
6730
+ }
6731
+ function getValidOriginsListFromCDN(shouldDisableCache = false) {
6732
+ return validOrigins_awaiter(this, void 0, void 0, function* () {
6733
+ if (!isValidOriginsCacheEmpty() && !shouldDisableCache) {
6734
+ return validOriginsCache;
6735
+ }
6736
+ if (!inServerSideRenderingEnvironment()) {
6737
+ validateOriginLogger('Initiating fetch call to acquire valid origins list from CDN');
6738
+ const controller = new AbortController();
6739
+ const timeoutId = setTimeout(() => controller.abort(), ORIGIN_LIST_FETCH_TIMEOUT_IN_MS);
6740
+ return fetch(validOriginsCdnEndpoint, { signal: controller.signal })
6741
+ .then((response) => {
6742
+ clearTimeout(timeoutId);
6743
+ if (!response.ok) {
6744
+ throw new Error('Invalid Response from Fetch Call');
6745
+ }
6746
+ validateOriginLogger('Fetch call completed and retrieved valid origins list from CDN');
6747
+ return response.json().then((validOriginsCDN) => {
6748
+ if (isValidOriginsJSONValid(JSON.stringify(validOriginsCDN))) {
6749
+ validOriginsCache = validOriginsCDN.validOrigins;
6750
+ return validOriginsCache;
6751
+ }
6752
+ else {
6753
+ throw new Error('Valid origins list retrieved from CDN is invalid');
6754
+ }
6755
+ });
6756
+ })
6757
+ .catch((e) => {
6758
+ if (e.name === 'AbortError') {
6759
+ validateOriginLogger(`validOrigins fetch call to CDN failed due to Timeout of ${ORIGIN_LIST_FETCH_TIMEOUT_IN_MS} ms. Defaulting to fallback list`);
6760
+ }
6761
+ else {
6762
+ validateOriginLogger('validOrigins fetch call to CDN failed with error: %s. Defaulting to fallback list', e);
6763
+ }
6764
+ validOriginsCache = validOriginsFallback;
6765
+ return validOriginsCache;
6766
+ });
6767
+ }
6768
+ else {
6769
+ validOriginsCache = validOriginsFallback;
6770
+ return validOriginsFallback;
6771
+ }
6772
+ });
6773
+ }
6774
+ function isValidOriginsJSONValid(validOriginsJSON) {
6775
+ let validOriginsCDN = JSON.parse(validOriginsJSON);
6776
+ try {
6777
+ validOriginsCDN = JSON.parse(validOriginsJSON);
6778
+ }
6779
+ catch (_) {
6780
+ return false;
6781
+ }
6782
+ if (!validOriginsCDN.validOrigins) {
6783
+ return false;
6784
+ }
6785
+ for (const validOrigin of validOriginsCDN.validOrigins) {
6786
+ try {
6787
+ new URL('https://' + validOrigin);
6788
+ }
6789
+ catch (_) {
6790
+ validateOriginLogger('isValidOriginsFromCDN call failed to validate origin: %s', validOrigin);
6791
+ return false;
6792
+ }
6793
+ }
6794
+ return true;
6795
+ }
6796
+ /**
6797
+ * @param pattern - reference pattern
6798
+ * @param host - candidate string
6799
+ * @returns returns true if host matches pre-know valid pattern
6800
+ *
6801
+ * @example
6802
+ * validateHostAgainstPattern('*.teams.microsoft.com', 'subdomain.teams.microsoft.com') returns true
6803
+ * validateHostAgainstPattern('teams.microsoft.com', 'team.microsoft.com') returns false
6804
+ *
6805
+ * @internal
6806
+ * Limited to Microsoft-internal use
6807
+ */
6808
+ function validateHostAgainstPattern(pattern, host) {
6809
+ if (pattern.substring(0, 2) === '*.') {
6810
+ const suffix = pattern.substring(1);
6811
+ if (host.length > suffix.length &&
6812
+ host.split('.').length === suffix.split('.').length &&
6813
+ host.substring(host.length - suffix.length) === suffix) {
6814
+ return true;
6815
+ }
6816
+ }
6817
+ else if (pattern === host) {
6818
+ return true;
6819
+ }
6820
+ return false;
6821
+ }
6822
+ /**
6823
+ * @internal
6824
+ * Limited to Microsoft-internal use
6825
+ */
6826
+ function validateOrigin(messageOrigin, disableCache) {
6827
+ return getValidOriginsListFromCDN(disableCache).then((validOriginsList) => {
6828
+ // Check whether the url is in the pre-known allowlist or supplied by user
6829
+ if (!isValidHttpsURL(messageOrigin)) {
6830
+ validateOriginLogger('Origin %s is invalid because it is not using https protocol. Protocol being used: %s', messageOrigin, messageOrigin.protocol);
6831
+ return false;
6832
+ }
6833
+ const messageOriginHost = messageOrigin.host;
6834
+ if (validOriginsList.some((pattern) => validateHostAgainstPattern(pattern, messageOriginHost))) {
6835
+ return true;
6836
+ }
6837
+ for (const domainOrPattern of GlobalVars.additionalValidOrigins) {
6838
+ const pattern = domainOrPattern.substring(0, 8) === 'https://' ? domainOrPattern.substring(8) : domainOrPattern;
6839
+ if (validateHostAgainstPattern(pattern, messageOriginHost)) {
6840
+ return true;
6841
+ }
6842
+ }
6843
+ validateOriginLogger('Origin %s is invalid because it is not an origin approved by this library or included in the call to app.initialize.\nOrigins approved by this library: %o\nOrigins included in app.initialize: %o', messageOrigin, validOriginsList, GlobalVars.additionalValidOrigins);
6844
+ return false;
6845
+ });
6846
+ }
6847
+ prefetchOriginsFromCDN();
6848
+
6821
6849
  ;// ./src/public/pages/appButton.ts
6822
6850
  /**
6823
6851
  * Provides APIs to interact with the app button part of the SDK.
@@ -8354,10 +8382,10 @@ const sendMessageToParentHelperLogger = communicationLogger.extend('sendMessageT
8354
8382
  * @internal
8355
8383
  * Limited to Microsoft-internal use
8356
8384
  */
8357
- function sendMessageToParentHelper(apiVersionTag, actionName, args) {
8385
+ function sendMessageToParentHelper(apiVersionTag, actionName, args, isProxiedFromChild) {
8358
8386
  const logger = sendMessageToParentHelperLogger;
8359
8387
  const targetWindow = Communication.parentWindow;
8360
- const request = createMessageRequest(apiVersionTag, actionName, args);
8388
+ const request = createMessageRequest(apiVersionTag, actionName, args, isProxiedFromChild);
8361
8389
  HostToAppMessageDelayTelemetry.storeCallbackInformation(request.uuid, {
8362
8390
  name: actionName,
8363
8391
  calledAt: request.timestamp,
@@ -8684,15 +8712,7 @@ function handleIncomingMessageFromChild(evt) {
8684
8712
  else {
8685
8713
  // No handler, proxy to parent
8686
8714
  handleIncomingMessageFromChildLogger('No handler for message %s from child found; relaying message on to parent, action: %s. Relayed message will have a new id.', getMessageIdsAsLogString(message), message.func);
8687
- sendMessageToParent(getApiVersionTag("v2" /* ApiVersionNumber.V_2 */, "tasks.startTask" /* ApiName.Tasks_StartTask */), message.func, message.args, (...args) => {
8688
- if (Communication.childWindow) {
8689
- const isPartialResponse = args.pop();
8690
- handleIncomingMessageFromChildLogger('Message from parent being relayed to child, id: %s', getMessageIdsAsLogString(message));
8691
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
8692
- // @ts-ignore
8693
- sendMessageResponseToChild(message.id, message.uuid, args, isPartialResponse);
8694
- }
8695
- });
8715
+ proxyChildMessageToParent(message);
8696
8716
  }
8697
8717
  }
8698
8718
  }
@@ -8839,7 +8859,7 @@ function sendMessageEventToChild(actionName, args) {
8839
8859
  * @internal
8840
8860
  * Limited to Microsoft-internal use
8841
8861
  */
8842
- function createMessageRequest(apiVersionTag, func, args) {
8862
+ function createMessageRequest(apiVersionTag, func, args, isProxiedFromChild) {
8843
8863
  const messageId = CommunicationPrivate.nextMessageId++;
8844
8864
  const messageUuid = new UUID();
8845
8865
  CommunicationPrivate.legacyMessageIdsToUuidMap[messageId] = messageUuid;
@@ -8851,6 +8871,7 @@ function createMessageRequest(apiVersionTag, func, args) {
8851
8871
  monotonicTimestamp: getCurrentTimestamp(),
8852
8872
  args: args || [],
8853
8873
  apiVersionTag: apiVersionTag,
8874
+ isProxiedFromChild: isProxiedFromChild !== null && isProxiedFromChild !== void 0 ? isProxiedFromChild : false,
8854
8875
  };
8855
8876
  }
8856
8877
  /**
@@ -8916,6 +8937,22 @@ function getMessageIdsAsLogString(message) {
8916
8937
  return `legacy id: ${message.id} (no uuid)`;
8917
8938
  }
8918
8939
  }
8940
+ /**
8941
+ * @internal
8942
+ * Limited to Microsoft-internal use
8943
+ */
8944
+ function proxyChildMessageToParent(message) {
8945
+ const request = sendMessageToParentHelper(getApiVersionTag("v2" /* ApiVersionNumber.V_2 */, "tasks.startTask" /* ApiName.Tasks_StartTask */), message.func, message.args, true);
8946
+ CommunicationPrivate.callbacks.set(request.uuid, (...args) => {
8947
+ if (Communication.childWindow) {
8948
+ const isPartialResponse = args.pop();
8949
+ handleIncomingMessageFromChildLogger('Message from parent being relayed to child, id: %s', getMessageIdsAsLogString(message));
8950
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
8951
+ // @ts-ignore
8952
+ sendMessageResponseToChild(message.id, message.uuid, args, isPartialResponse);
8953
+ }
8954
+ });
8955
+ }
8919
8956
 
8920
8957
  ;// ./src/private/logs.ts
8921
8958
  /**
@@ -14341,16 +14378,17 @@ function isNAAChannelRecommended() {
14341
14378
  }
14342
14379
  function isNAAChannelRecommendedForLegacyTeamsMobile() {
14343
14380
  return ensureInitialized(runtime) &&
14344
- isHostAndroidOrIOSOrIPadOS() &&
14381
+ isHostAndroidOrIOSOrIPadOSOrVisionOS() &&
14345
14382
  runtime.isLegacyTeams &&
14346
14383
  runtime.supports.nestedAppAuth
14347
14384
  ? true
14348
14385
  : false;
14349
14386
  }
14350
- function isHostAndroidOrIOSOrIPadOS() {
14387
+ function isHostAndroidOrIOSOrIPadOSOrVisionOS() {
14351
14388
  return (GlobalVars.hostClientType === HostClientType.android ||
14352
14389
  GlobalVars.hostClientType === HostClientType.ios ||
14353
- GlobalVars.hostClientType === HostClientType.ipados);
14390
+ GlobalVars.hostClientType === HostClientType.ipados ||
14391
+ GlobalVars.hostClientType === HostClientType.visionOS);
14354
14392
  }
14355
14393
 
14356
14394
  ;// ./src/public/geoLocation/map.ts
@@ -16739,7 +16777,8 @@ function isWebStorageClearedOnUserLogOut() {
16739
16777
  if (runtime.isLegacyTeams &&
16740
16778
  (GlobalVars.hostClientType === HostClientType.android ||
16741
16779
  GlobalVars.hostClientType === HostClientType.ios ||
16742
- GlobalVars.hostClientType === HostClientType.ipados) &&
16780
+ GlobalVars.hostClientType === HostClientType.ipados ||
16781
+ GlobalVars.hostClientType === HostClientType.visionOS) &&
16743
16782
  (yield getHostName()) === HostName.teams) {
16744
16783
  // On Teams Mobile, they haven't yet implemented this capability. However, for compatibility reasons, we need
16745
16784
  // to act as if they do. If they did implement it, they would return true, so that's what we do here.