@microsoft/teams-js 2.34.0-beta.1 → 2.34.0

Sign up to get free protection for your applications and to get access to all the features.
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.