@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.
- package/README.md +4 -4
- package/dist/esm/_virtual/_polyfill-node.buffer.js +1 -0
- package/dist/esm/_virtual/_polyfill-node.global.js +1 -0
- package/dist/esm/packages/teams-js/dts/internal/constants.d.ts +8 -0
- package/dist/esm/packages/teams-js/dts/internal/internalAPIs.d.ts +1 -1
- package/dist/esm/packages/teams-js/dts/internal/messageObjects.d.ts +1 -0
- package/dist/esm/packages/teams-js/dts/internal/validOrigins.d.ts +1 -1
- package/dist/esm/packages/teams-js/dts/public/app/app.d.ts +9 -0
- package/dist/esm/packages/teams-js/dts/public/constants.d.ts +2 -0
- package/dist/esm/packages/teams-js/dts/public/interfaces.d.ts +14 -0
- package/dist/esm/packages/teams-js/src/internal/communication.js +1 -1
- package/dist/esm/packages/teams-js/src/internal/constants.js +1 -1
- package/dist/esm/packages/teams-js/src/internal/internalAPIs.js +1 -1
- package/dist/esm/packages/teams-js/src/internal/utils.js +1 -1
- package/dist/esm/packages/teams-js/src/internal/validOrigins.js +1 -1
- package/dist/esm/packages/teams-js/src/public/app/app.js +1 -1
- package/dist/esm/packages/teams-js/src/public/constants.js +1 -1
- package/dist/esm/packages/teams-js/src/public/nestedAppAuth.js +1 -1
- package/dist/esm/packages/teams-js/src/public/runtime.js +1 -1
- package/dist/esm/packages/teams-js/src/public/version.js +1 -1
- package/dist/esm/packages/teams-js/src/public/webStorage.js +1 -1
- package/dist/umd/MicrosoftTeams.js +194 -155
- package/dist/umd/MicrosoftTeams.js.map +1 -1
- package/dist/umd/MicrosoftTeams.min.js +1 -1
- package/dist/umd/MicrosoftTeams.min.js.map +1 -1
- package/package.json +53 -1
- 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 = [
|
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
|
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
|
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
|
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
|
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
|
-
|
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
|
-
|
14381
|
+
isHostAndroidOrIOSOrIPadOSOrVisionOS() &&
|
14345
14382
|
runtime.isLegacyTeams &&
|
14346
14383
|
runtime.supports.nestedAppAuth
|
14347
14384
|
? true
|
14348
14385
|
: false;
|
14349
14386
|
}
|
14350
|
-
function
|
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.
|