@microsoft/teams-js 2.19.0-beta.1 → 2.19.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/MicrosoftTeams.d.ts
CHANGED
@@ -2420,6 +2420,7 @@ export namespace teams {
|
|
2420
2420
|
* Limited to Microsoft-internal use
|
2421
2421
|
*/
|
2422
2422
|
export namespace videoEffectsEx {
|
2423
|
+
const frameProcessingTimeoutInMs = 2000;
|
2423
2424
|
/**
|
2424
2425
|
* @hidden
|
2425
2426
|
* Error level when notifying errors to the host, the host will decide what to do acording to the error level.
|
@@ -7586,7 +7587,7 @@ export namespace teamsCore {
|
|
7586
7587
|
/**
|
7587
7588
|
* Registers a handler to be called when the page has been requested to load.
|
7588
7589
|
*
|
7589
|
-
* @remarks Check out [App Caching in Teams](https://learn.microsoft.com/microsoftteams/platform/
|
7590
|
+
* @remarks Check out [App Caching in Teams](https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/app-caching)
|
7590
7591
|
* for a more detailed explanation about using this API.
|
7591
7592
|
*
|
7592
7593
|
* @param handler - The handler to invoke when the page is loaded.
|
@@ -7610,7 +7611,7 @@ export namespace teamsCore {
|
|
7610
7611
|
/**
|
7611
7612
|
* Registers a handler to be called before the page is unloaded.
|
7612
7613
|
*
|
7613
|
-
* @remarks Check out [App Caching in Teams](https://learn.microsoft.com/microsoftteams/platform/
|
7614
|
+
* @remarks Check out [App Caching in Teams](https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/app-caching)
|
7614
7615
|
* for a more detailed explanation about using this API.
|
7615
7616
|
*
|
7616
7617
|
* @param handler - The handler to invoke before the page is unloaded. If this handler returns true the page should
|
package/dist/MicrosoftTeams.js
CHANGED
@@ -764,6 +764,36 @@ function plural(ms, msAbs, n, name) {
|
|
764
764
|
/******/ }
|
765
765
|
/******/
|
766
766
|
/************************************************************************/
|
767
|
+
/******/ /* webpack/runtime/create fake namespace object */
|
768
|
+
/******/ (() => {
|
769
|
+
/******/ var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);
|
770
|
+
/******/ var leafPrototypes;
|
771
|
+
/******/ // create a fake namespace object
|
772
|
+
/******/ // mode & 1: value is a module id, require it
|
773
|
+
/******/ // mode & 2: merge all properties of value into the ns
|
774
|
+
/******/ // mode & 4: return value when already ns object
|
775
|
+
/******/ // mode & 16: return value when it's Promise-like
|
776
|
+
/******/ // mode & 8|1: behave like require
|
777
|
+
/******/ __webpack_require__.t = function(value, mode) {
|
778
|
+
/******/ if(mode & 1) value = this(value);
|
779
|
+
/******/ if(mode & 8) return value;
|
780
|
+
/******/ if(typeof value === 'object' && value) {
|
781
|
+
/******/ if((mode & 4) && value.__esModule) return value;
|
782
|
+
/******/ if((mode & 16) && typeof value.then === 'function') return value;
|
783
|
+
/******/ }
|
784
|
+
/******/ var ns = Object.create(null);
|
785
|
+
/******/ __webpack_require__.r(ns);
|
786
|
+
/******/ var def = {};
|
787
|
+
/******/ leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];
|
788
|
+
/******/ for(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {
|
789
|
+
/******/ Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));
|
790
|
+
/******/ }
|
791
|
+
/******/ def['default'] = () => (value);
|
792
|
+
/******/ __webpack_require__.d(ns, def);
|
793
|
+
/******/ return ns;
|
794
|
+
/******/ };
|
795
|
+
/******/ })();
|
796
|
+
/******/
|
767
797
|
/******/ /* webpack/runtime/define property getters */
|
768
798
|
/******/ (() => {
|
769
799
|
/******/ // define getter functions for harmony exports
|
@@ -1054,7 +1084,11 @@ var ApiName;
|
|
1054
1084
|
ApiName["Tasks_UpdateTask"] = "tasks.updateTask";
|
1055
1085
|
})(ApiName || (ApiName = {}));
|
1056
1086
|
|
1087
|
+
;// CONCATENATED MODULE: ./src/artifactsForCDN/validDomains.json
|
1088
|
+
const validDomains_namespaceObject = JSON.parse('{"validOrigins":["teams.microsoft.com","teams.microsoft.us","gov.teams.microsoft.us","dod.teams.microsoft.us","int.teams.microsoft.com","teams.live.com","devspaces.skype.com","ssauth.skype.com","local.teams.live.com","local.teams.live.com:8080","local.teams.office.com","local.teams.office.com:8080","outlook.office.com","outlook-sdf.office.com","outlook.office365.com","outlook-sdf.office365.com","outlook.live.com","outlook-sdf.live.com","*.teams.microsoft.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","teams.cloud.microsoft","outlook.cloud.microsoft","m365.cloud.microsoft","copilot.microsoft.com"]}');
|
1089
|
+
var artifactsForCDN_validDomains_namespaceObject = /*#__PURE__*/__webpack_require__.t(validDomains_namespaceObject, 2);
|
1057
1090
|
;// CONCATENATED MODULE: ./src/internal/constants.ts
|
1091
|
+
|
1058
1092
|
/**
|
1059
1093
|
* @hidden
|
1060
1094
|
* The client version when all SDK APIs started to check platform compatibility for the APIs was 1.6.0.
|
@@ -1155,48 +1189,28 @@ const getMediaCallbackSupportVersion = '2.0.0';
|
|
1155
1189
|
const scanBarCodeAPIMobileSupportVersion = '1.9.0';
|
1156
1190
|
/**
|
1157
1191
|
* @hidden
|
1158
|
-
*
|
1159
|
-
*
|
1160
|
-
* @internal
|
1161
|
-
* Limited to Microsoft-internal use
|
1162
|
-
*/
|
1163
|
-
const
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
'outlook.live.com',
|
1181
|
-
'outlook-sdf.live.com',
|
1182
|
-
'*.teams.microsoft.com',
|
1183
|
-
'*.www.office.com',
|
1184
|
-
'www.office.com',
|
1185
|
-
'word.office.com',
|
1186
|
-
'excel.office.com',
|
1187
|
-
'powerpoint.office.com',
|
1188
|
-
'www.officeppe.com',
|
1189
|
-
'*.www.microsoft365.com',
|
1190
|
-
'www.microsoft365.com',
|
1191
|
-
'bing.com',
|
1192
|
-
'edgeservices.bing.com',
|
1193
|
-
'www.bing.com',
|
1194
|
-
'www.staging-bing-int.com',
|
1195
|
-
'teams.cloud.microsoft',
|
1196
|
-
'outlook.cloud.microsoft',
|
1197
|
-
'm365.cloud.microsoft',
|
1198
|
-
'copilot.microsoft.com',
|
1199
|
-
];
|
1192
|
+
* Fallback list of valid origins in JSON format
|
1193
|
+
*
|
1194
|
+
* @internal
|
1195
|
+
* Limited to Microsoft-internal use
|
1196
|
+
*/
|
1197
|
+
const validOriginsLocal = artifactsForCDN_validDomains_namespaceObject;
|
1198
|
+
/**
|
1199
|
+
* @hidden
|
1200
|
+
* Fallback list of valid origins
|
1201
|
+
*
|
1202
|
+
* @internal
|
1203
|
+
* Limited to Microsoft-internal use
|
1204
|
+
*/
|
1205
|
+
const validOriginsFallback = validOriginsLocal.validOrigins;
|
1206
|
+
/**
|
1207
|
+
* @hidden
|
1208
|
+
* CDN endpoint of the list of valid origins
|
1209
|
+
*
|
1210
|
+
* @internal
|
1211
|
+
* Limited to Microsoft-internal use
|
1212
|
+
*/
|
1213
|
+
const validOriginsCdnEndpoint = new URL('https://res.cdn.office.net/teams-js/validDomains/json/validDomains.json');
|
1200
1214
|
/**
|
1201
1215
|
* @hidden
|
1202
1216
|
* USer specified message origins should satisfy this test
|
@@ -1649,59 +1663,6 @@ const errorInvalidResponse = new Error('Invalid response: Received more images t
|
|
1649
1663
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
1650
1664
|
|
1651
1665
|
|
1652
|
-
|
1653
|
-
|
1654
|
-
|
1655
|
-
/**
|
1656
|
-
* @param pattern - reference pattern
|
1657
|
-
* @param host - candidate string
|
1658
|
-
* @returns returns true if host matches pre-know valid pattern
|
1659
|
-
*
|
1660
|
-
* @example
|
1661
|
-
* validateHostAgainstPattern('*.teams.microsoft.com', 'subdomain.teams.microsoft.com') returns true
|
1662
|
-
* validateHostAgainstPattern('teams.microsoft.com', 'team.microsoft.com') returns false
|
1663
|
-
*
|
1664
|
-
* @internal
|
1665
|
-
* Limited to Microsoft-internal use
|
1666
|
-
*/
|
1667
|
-
function validateHostAgainstPattern(pattern, host) {
|
1668
|
-
if (pattern.substring(0, 2) === '*.') {
|
1669
|
-
const suffix = pattern.substring(1);
|
1670
|
-
if (host.length > suffix.length &&
|
1671
|
-
host.split('.').length === suffix.split('.').length &&
|
1672
|
-
host.substring(host.length - suffix.length) === suffix) {
|
1673
|
-
return true;
|
1674
|
-
}
|
1675
|
-
}
|
1676
|
-
else if (pattern === host) {
|
1677
|
-
return true;
|
1678
|
-
}
|
1679
|
-
return false;
|
1680
|
-
}
|
1681
|
-
const validateOriginLogger = getLogger('validateOrigin');
|
1682
|
-
/**
|
1683
|
-
* @internal
|
1684
|
-
* Limited to Microsoft-internal use
|
1685
|
-
*/
|
1686
|
-
function validateOrigin(messageOrigin) {
|
1687
|
-
// Check whether the url is in the pre-known allowlist or supplied by user
|
1688
|
-
if (!isValidHttpsURL(messageOrigin)) {
|
1689
|
-
validateOriginLogger('Origin %s is invalid because it is not using https protocol. Protocol being used: %s', messageOrigin, messageOrigin.protocol);
|
1690
|
-
return false;
|
1691
|
-
}
|
1692
|
-
const messageOriginHost = messageOrigin.host;
|
1693
|
-
if (validOrigins.some((pattern) => validateHostAgainstPattern(pattern, messageOriginHost))) {
|
1694
|
-
return true;
|
1695
|
-
}
|
1696
|
-
for (const domainOrPattern of GlobalVars.additionalValidOrigins) {
|
1697
|
-
const pattern = domainOrPattern.substring(0, 8) === 'https://' ? domainOrPattern.substring(8) : domainOrPattern;
|
1698
|
-
if (validateHostAgainstPattern(pattern, messageOriginHost)) {
|
1699
|
-
return true;
|
1700
|
-
}
|
1701
|
-
}
|
1702
|
-
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, validOrigins, GlobalVars.additionalValidOrigins);
|
1703
|
-
return false;
|
1704
|
-
}
|
1705
1666
|
/**
|
1706
1667
|
* @internal
|
1707
1668
|
* Limited to Microsoft-internal use
|
@@ -2106,9 +2067,6 @@ const versionAndPlatformAgnosticTeamsRuntimeConfig = {
|
|
2106
2067
|
hostVersionsInfo: teamsMinAdaptiveCardVersion,
|
2107
2068
|
isLegacyTeams: true,
|
2108
2069
|
supports: {
|
2109
|
-
app: {
|
2110
|
-
lifecycle: {},
|
2111
|
-
},
|
2112
2070
|
appInstallDialog: {},
|
2113
2071
|
appEntity: {},
|
2114
2072
|
call: {},
|
@@ -2265,7 +2223,13 @@ const mapTeamsVersionToSupportedCapabilities = {
|
|
2265
2223
|
'2.0.5': [
|
2266
2224
|
{
|
2267
2225
|
capability: { webStorage: {} },
|
2268
|
-
hostClientTypes: [HostClientType.android, HostClientType.
|
2226
|
+
hostClientTypes: [HostClientType.android, HostClientType.ios],
|
2227
|
+
},
|
2228
|
+
],
|
2229
|
+
'2.0.8': [
|
2230
|
+
{
|
2231
|
+
capability: { sharing: {} },
|
2232
|
+
hostClientTypes: [HostClientType.android, HostClientType.ios],
|
2269
2233
|
},
|
2270
2234
|
],
|
2271
2235
|
};
|
@@ -2382,7 +2346,7 @@ const _minRuntimeConfigToUninitialize = {
|
|
2382
2346
|
* @hidden
|
2383
2347
|
* Package version.
|
2384
2348
|
*/
|
2385
|
-
const version = "2.19.0-beta.
|
2349
|
+
const version = "2.19.0-beta.3";
|
2386
2350
|
|
2387
2351
|
;// CONCATENATED MODULE: ./src/internal/internalAPIs.ts
|
2388
2352
|
|
@@ -2518,6 +2482,137 @@ function isNullOrUndefined(value) {
|
|
2518
2482
|
return value === null || value === undefined;
|
2519
2483
|
}
|
2520
2484
|
|
2485
|
+
;// CONCATENATED MODULE: ./src/internal/validOrigins.ts
|
2486
|
+
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
2487
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
2488
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
2489
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
2490
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
2491
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
2492
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
2493
|
+
});
|
2494
|
+
};
|
2495
|
+
|
2496
|
+
|
2497
|
+
|
2498
|
+
|
2499
|
+
let validOriginsCache = [];
|
2500
|
+
const validateOriginLogger = getLogger('validateOrigin');
|
2501
|
+
function prefetchOriginsFromCDN() {
|
2502
|
+
return __awaiter(this, void 0, void 0, function* () {
|
2503
|
+
yield getValidOriginsListFromCDN();
|
2504
|
+
});
|
2505
|
+
}
|
2506
|
+
function isValidOriginsCacheEmpty() {
|
2507
|
+
return validOriginsCache.length !== 0;
|
2508
|
+
}
|
2509
|
+
function getValidOriginsListFromCDN() {
|
2510
|
+
return __awaiter(this, void 0, void 0, function* () {
|
2511
|
+
if (isValidOriginsCacheEmpty()) {
|
2512
|
+
return validOriginsCache;
|
2513
|
+
}
|
2514
|
+
if (!inServerSideRenderingEnvironment()) {
|
2515
|
+
return fetch(validOriginsCdnEndpoint)
|
2516
|
+
.then((response) => {
|
2517
|
+
if (!response.ok) {
|
2518
|
+
throw new Error('Invalid Response from Fetch Call');
|
2519
|
+
}
|
2520
|
+
return response.json().then((validOriginsCDN) => {
|
2521
|
+
if (isValidOriginsJSONValid(JSON.stringify(validOriginsCDN))) {
|
2522
|
+
validOriginsCache = validOriginsCDN.validOrigins;
|
2523
|
+
return validOriginsCache;
|
2524
|
+
}
|
2525
|
+
else {
|
2526
|
+
throw new Error('Valid Origins List Is Invalid');
|
2527
|
+
}
|
2528
|
+
});
|
2529
|
+
})
|
2530
|
+
.catch((e) => {
|
2531
|
+
validateOriginLogger('validOrigins fetch call to CDN failed with error: %s. Defaulting to fallback list', e);
|
2532
|
+
validOriginsCache = validOriginsFallback;
|
2533
|
+
return validOriginsCache;
|
2534
|
+
});
|
2535
|
+
}
|
2536
|
+
else {
|
2537
|
+
validOriginsCache = validOriginsFallback;
|
2538
|
+
return validOriginsFallback;
|
2539
|
+
}
|
2540
|
+
});
|
2541
|
+
}
|
2542
|
+
function isValidOriginsJSONValid(validOriginsJSON) {
|
2543
|
+
let validOriginsCDN = JSON.parse(validOriginsJSON);
|
2544
|
+
try {
|
2545
|
+
validOriginsCDN = JSON.parse(validOriginsJSON);
|
2546
|
+
}
|
2547
|
+
catch (_) {
|
2548
|
+
return false;
|
2549
|
+
}
|
2550
|
+
if (!validOriginsCDN.validOrigins) {
|
2551
|
+
return false;
|
2552
|
+
}
|
2553
|
+
for (const validOrigin of validOriginsCDN.validOrigins) {
|
2554
|
+
try {
|
2555
|
+
new URL('https://' + validOrigin);
|
2556
|
+
}
|
2557
|
+
catch (_) {
|
2558
|
+
validateOriginLogger('isValidOriginsFromCDN call failed to validate origin: %s', validOrigin);
|
2559
|
+
return false;
|
2560
|
+
}
|
2561
|
+
}
|
2562
|
+
return true;
|
2563
|
+
}
|
2564
|
+
/**
|
2565
|
+
* @param pattern - reference pattern
|
2566
|
+
* @param host - candidate string
|
2567
|
+
* @returns returns true if host matches pre-know valid pattern
|
2568
|
+
*
|
2569
|
+
* @example
|
2570
|
+
* validateHostAgainstPattern('*.teams.microsoft.com', 'subdomain.teams.microsoft.com') returns true
|
2571
|
+
* validateHostAgainstPattern('teams.microsoft.com', 'team.microsoft.com') returns false
|
2572
|
+
*
|
2573
|
+
* @internal
|
2574
|
+
* Limited to Microsoft-internal use
|
2575
|
+
*/
|
2576
|
+
function validateHostAgainstPattern(pattern, host) {
|
2577
|
+
if (pattern.substring(0, 2) === '*.') {
|
2578
|
+
const suffix = pattern.substring(1);
|
2579
|
+
if (host.length > suffix.length &&
|
2580
|
+
host.split('.').length === suffix.split('.').length &&
|
2581
|
+
host.substring(host.length - suffix.length) === suffix) {
|
2582
|
+
return true;
|
2583
|
+
}
|
2584
|
+
}
|
2585
|
+
else if (pattern === host) {
|
2586
|
+
return true;
|
2587
|
+
}
|
2588
|
+
return false;
|
2589
|
+
}
|
2590
|
+
/**
|
2591
|
+
* @internal
|
2592
|
+
* Limited to Microsoft-internal use
|
2593
|
+
*/
|
2594
|
+
function validateOrigin(messageOrigin) {
|
2595
|
+
return getValidOriginsListFromCDN().then((validOriginsList) => {
|
2596
|
+
// Check whether the url is in the pre-known allowlist or supplied by user
|
2597
|
+
if (!isValidHttpsURL(messageOrigin)) {
|
2598
|
+
validateOriginLogger('Origin %s is invalid because it is not using https protocol. Protocol being used: %s', messageOrigin, messageOrigin.protocol);
|
2599
|
+
return false;
|
2600
|
+
}
|
2601
|
+
const messageOriginHost = messageOrigin.host;
|
2602
|
+
if (validOriginsList.some((pattern) => validateHostAgainstPattern(pattern, messageOriginHost))) {
|
2603
|
+
return true;
|
2604
|
+
}
|
2605
|
+
for (const domainOrPattern of GlobalVars.additionalValidOrigins) {
|
2606
|
+
const pattern = domainOrPattern.substring(0, 8) === 'https://' ? domainOrPattern.substring(8) : domainOrPattern;
|
2607
|
+
if (validateHostAgainstPattern(pattern, messageOriginHost)) {
|
2608
|
+
return true;
|
2609
|
+
}
|
2610
|
+
}
|
2611
|
+
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);
|
2612
|
+
return false;
|
2613
|
+
});
|
2614
|
+
}
|
2615
|
+
|
2521
2616
|
;// CONCATENATED MODULE: ./src/public/authentication.ts
|
2522
2617
|
|
2523
2618
|
|
@@ -3568,6 +3663,7 @@ var menus;
|
|
3568
3663
|
|
3569
3664
|
|
3570
3665
|
|
3666
|
+
|
3571
3667
|
/**
|
3572
3668
|
* v2 APIs telemetry file: All of APIs in this capability file should send out API version v2 ONLY
|
3573
3669
|
*/
|
@@ -3792,6 +3888,7 @@ var app;
|
|
3792
3888
|
* @returns Promise that will be fulfilled when initialization has completed, or rejected if the initialization fails or times out
|
3793
3889
|
*/
|
3794
3890
|
function initialize(validMessageOrigins) {
|
3891
|
+
prefetchOriginsFromCDN();
|
3795
3892
|
return appInitializeHelper(getApiVersionTag(appTelemetryVersionNumber, ApiName.App_Initialize), validMessageOrigins);
|
3796
3893
|
}
|
3797
3894
|
app.initialize = initialize;
|
@@ -5092,6 +5189,16 @@ function handlers_registerOnResumeHandler(handler) {
|
|
5092
5189
|
/* eslint-disable @typescript-eslint/ban-types */
|
5093
5190
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
5094
5191
|
/* eslint-disable strict-null-checks/all */
|
5192
|
+
var communication_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
5193
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
5194
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5195
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
5196
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
5197
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
5198
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
5199
|
+
});
|
5200
|
+
};
|
5201
|
+
|
5095
5202
|
|
5096
5203
|
|
5097
5204
|
|
@@ -5123,7 +5230,7 @@ CommunicationPrivate.promiseCallbacks = {};
|
|
5123
5230
|
*/
|
5124
5231
|
function initializeCommunication(validMessageOrigins, apiVersionTag) {
|
5125
5232
|
// Listen for messages post to our window
|
5126
|
-
CommunicationPrivate.messageListener = (evt) => processMessage(evt);
|
5233
|
+
CommunicationPrivate.messageListener = (evt) => communication_awaiter(this, void 0, void 0, function* () { return yield processMessage(evt); });
|
5127
5234
|
// If we are in an iframe, our parent window is the one hosting us (i.e., window.parent); otherwise,
|
5128
5235
|
// it's the window that opened us (i.e., window.opener)
|
5129
5236
|
Communication.currentWindow = Communication.currentWindow || ssrSafeWindow();
|
@@ -5407,29 +5514,33 @@ const processMessageLogger = communicationLogger.extend('processMessage');
|
|
5407
5514
|
* Limited to Microsoft-internal use
|
5408
5515
|
*/
|
5409
5516
|
function processMessage(evt) {
|
5410
|
-
|
5411
|
-
|
5412
|
-
|
5413
|
-
|
5414
|
-
|
5415
|
-
|
5416
|
-
|
5417
|
-
|
5418
|
-
|
5419
|
-
|
5420
|
-
|
5421
|
-
|
5422
|
-
|
5423
|
-
|
5424
|
-
|
5425
|
-
|
5426
|
-
|
5427
|
-
|
5428
|
-
|
5429
|
-
|
5430
|
-
|
5431
|
-
|
5432
|
-
|
5517
|
+
return communication_awaiter(this, void 0, void 0, function* () {
|
5518
|
+
// Process only if we received a valid message
|
5519
|
+
if (!evt || !evt.data || typeof evt.data !== 'object') {
|
5520
|
+
processMessageLogger('Unrecognized message format received by app, message being ignored. Message: %o', evt);
|
5521
|
+
return;
|
5522
|
+
}
|
5523
|
+
// Process only if the message is coming from a different window and a valid origin
|
5524
|
+
// valid origins are either a pre-known origin or one specified by the app developer
|
5525
|
+
// in their call to app.initialize
|
5526
|
+
const messageSource = evt.source || (evt.originalEvent && evt.originalEvent.source);
|
5527
|
+
const messageOrigin = evt.origin || (evt.originalEvent && evt.originalEvent.origin);
|
5528
|
+
return shouldProcessMessage(messageSource, messageOrigin).then((result) => {
|
5529
|
+
if (!result) {
|
5530
|
+
processMessageLogger('Message being ignored by app because it is either coming from the current window or a different window with an invalid origin');
|
5531
|
+
return;
|
5532
|
+
}
|
5533
|
+
// Update our parent and child relationships based on this message
|
5534
|
+
updateRelationships(messageSource, messageOrigin);
|
5535
|
+
// Handle the message
|
5536
|
+
if (messageSource === Communication.parentWindow) {
|
5537
|
+
handleParentMessage(evt);
|
5538
|
+
}
|
5539
|
+
else if (messageSource === Communication.childWindow) {
|
5540
|
+
handleChildMessage(evt);
|
5541
|
+
}
|
5542
|
+
});
|
5543
|
+
});
|
5433
5544
|
}
|
5434
5545
|
const shouldProcessMessageLogger = communicationLogger.extend('shouldProcessMessage');
|
5435
5546
|
/**
|
@@ -5440,25 +5551,27 @@ const shouldProcessMessageLogger = communicationLogger.extend('shouldProcessMess
|
|
5440
5551
|
* Limited to Microsoft-internal use
|
5441
5552
|
*/
|
5442
5553
|
function shouldProcessMessage(messageSource, messageOrigin) {
|
5443
|
-
|
5444
|
-
|
5445
|
-
|
5446
|
-
|
5447
|
-
|
5448
|
-
|
5449
|
-
else if (Communication.currentWindow &&
|
5450
|
-
Communication.currentWindow.location &&
|
5451
|
-
messageOrigin &&
|
5452
|
-
messageOrigin === Communication.currentWindow.location.origin) {
|
5453
|
-
return true;
|
5454
|
-
}
|
5455
|
-
else {
|
5456
|
-
const isOriginValid = validateOrigin(new URL(messageOrigin));
|
5457
|
-
if (!isOriginValid) {
|
5458
|
-
shouldProcessMessageLogger('Message has an invalid origin of %s', messageOrigin);
|
5554
|
+
return communication_awaiter(this, void 0, void 0, function* () {
|
5555
|
+
// Process if message source is a different window and if origin is either in
|
5556
|
+
// Teams' pre-known whitelist or supplied as valid origin by user during initialization
|
5557
|
+
if (Communication.currentWindow && messageSource === Communication.currentWindow) {
|
5558
|
+
shouldProcessMessageLogger('Should not process message because it is coming from the current window');
|
5559
|
+
return false;
|
5459
5560
|
}
|
5460
|
-
|
5461
|
-
|
5561
|
+
else if (Communication.currentWindow &&
|
5562
|
+
Communication.currentWindow.location &&
|
5563
|
+
messageOrigin &&
|
5564
|
+
messageOrigin === Communication.currentWindow.location.origin) {
|
5565
|
+
return true;
|
5566
|
+
}
|
5567
|
+
else {
|
5568
|
+
const isOriginValid = yield validateOrigin(new URL(messageOrigin));
|
5569
|
+
if (!isOriginValid) {
|
5570
|
+
shouldProcessMessageLogger('Message has an invalid origin of %s', messageOrigin);
|
5571
|
+
}
|
5572
|
+
return isOriginValid;
|
5573
|
+
}
|
5574
|
+
});
|
5462
5575
|
}
|
5463
5576
|
/**
|
5464
5577
|
* @internal
|
@@ -7064,7 +7177,7 @@ var chat;
|
|
7064
7177
|
})(chat || (chat = {}));
|
7065
7178
|
|
7066
7179
|
;// CONCATENATED MODULE: ./src/public/clipboard.ts
|
7067
|
-
var
|
7180
|
+
var clipboard_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
7068
7181
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
7069
7182
|
return new (P || (P = Promise))(function (resolve, reject) {
|
7070
7183
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -7104,7 +7217,7 @@ var clipboard;
|
|
7104
7217
|
* rejects with error stating the reason for failure.
|
7105
7218
|
*/
|
7106
7219
|
function write(blob) {
|
7107
|
-
return
|
7220
|
+
return clipboard_awaiter(this, void 0, void 0, function* () {
|
7108
7221
|
internalAPIs_ensureInitialized(runtime_runtime, FrameContexts.content, FrameContexts.meetingStage, FrameContexts.task, FrameContexts.settings, FrameContexts.stage, FrameContexts.sidePanel);
|
7109
7222
|
if (!isSupported()) {
|
7110
7223
|
throw errorNotSupportedOnPlatform;
|
@@ -7129,7 +7242,7 @@ var clipboard;
|
|
7129
7242
|
* Note: Returned blob type will contain one of the MIME type `image/png`, `text/plain` or `text/html`.
|
7130
7243
|
*/
|
7131
7244
|
function read() {
|
7132
|
-
return
|
7245
|
+
return clipboard_awaiter(this, void 0, void 0, function* () {
|
7133
7246
|
internalAPIs_ensureInitialized(runtime_runtime, FrameContexts.content, FrameContexts.meetingStage, FrameContexts.task, FrameContexts.settings, FrameContexts.stage, FrameContexts.sidePanel);
|
7134
7247
|
if (!isSupported()) {
|
7135
7248
|
throw errorNotSupportedOnPlatform;
|
@@ -8416,7 +8529,7 @@ var teamsCore;
|
|
8416
8529
|
/**
|
8417
8530
|
* Registers a handler to be called when the page has been requested to load.
|
8418
8531
|
*
|
8419
|
-
* @remarks Check out [App Caching in Teams](https://learn.microsoft.com/microsoftteams/platform/
|
8532
|
+
* @remarks Check out [App Caching in Teams](https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/app-caching)
|
8420
8533
|
* for a more detailed explanation about using this API.
|
8421
8534
|
*
|
8422
8535
|
* @param handler - The handler to invoke when the page is loaded.
|
@@ -8455,7 +8568,7 @@ var teamsCore;
|
|
8455
8568
|
/**
|
8456
8569
|
* Registers a handler to be called before the page is unloaded.
|
8457
8570
|
*
|
8458
|
-
* @remarks Check out [App Caching in Teams](https://learn.microsoft.com/microsoftteams/platform/
|
8571
|
+
* @remarks Check out [App Caching in Teams](https://learn.microsoft.com/en-us/microsoftteams/platform/tabs/how-to/app-caching)
|
8459
8572
|
* for a more detailed explanation about using this API.
|
8460
8573
|
*
|
8461
8574
|
* @param handler - The handler to invoke before the page is unloaded. If this handler returns true the page should
|
@@ -13230,6 +13343,7 @@ var videoEffectsEx_awaiter = (undefined && undefined.__awaiter) || function (thi
|
|
13230
13343
|
*/
|
13231
13344
|
var videoEffectsEx;
|
13232
13345
|
(function (videoEffectsEx) {
|
13346
|
+
videoEffectsEx.frameProcessingTimeoutInMs = 2000;
|
13233
13347
|
const videoPerformanceMonitor = inServerSideRenderingEnvironment()
|
13234
13348
|
? undefined
|
13235
13349
|
: new VideoPerformanceMonitor(sendMessageToParent);
|
@@ -13284,8 +13398,10 @@ var videoEffectsEx;
|
|
13284
13398
|
registerHandler('video.newVideoFrame', (videoBufferData) => {
|
13285
13399
|
if (videoBufferData) {
|
13286
13400
|
videoPerformanceMonitor === null || videoPerformanceMonitor === void 0 ? void 0 : videoPerformanceMonitor.reportStartFrameProcessing(videoBufferData.width, videoBufferData.height);
|
13401
|
+
const clearProcessingTimeout = createFrameProcessingTimeout();
|
13287
13402
|
const timestamp = videoBufferData.timestamp;
|
13288
13403
|
parameters.videoBufferHandler(normalizedVideoBufferData(videoBufferData), () => {
|
13404
|
+
clearProcessingTimeout();
|
13289
13405
|
videoPerformanceMonitor === null || videoPerformanceMonitor === void 0 ? void 0 : videoPerformanceMonitor.reportFrameProcessed();
|
13290
13406
|
notifyVideoFrameProcessed(timestamp);
|
13291
13407
|
}, notifyError);
|
@@ -13301,12 +13417,22 @@ var videoEffectsEx;
|
|
13301
13417
|
}
|
13302
13418
|
}
|
13303
13419
|
videoEffectsEx.registerForVideoFrame = registerForVideoFrame;
|
13420
|
+
function createFrameProcessingTimeout() {
|
13421
|
+
const frameProcessingTimer = setTimeout(() => {
|
13422
|
+
notifyError(`Frame not processed in ${videoEffectsEx.frameProcessingTimeoutInMs}ms`, ErrorLevel.Warn);
|
13423
|
+
}, videoEffectsEx.frameProcessingTimeoutInMs);
|
13424
|
+
return function clearTimer() {
|
13425
|
+
clearTimeout(frameProcessingTimer);
|
13426
|
+
};
|
13427
|
+
}
|
13304
13428
|
function createMonitoredVideoFrameHandler(videoFrameHandler, videoPerformanceMonitor) {
|
13305
13429
|
return (receivedVideoFrame) => videoEffectsEx_awaiter(this, void 0, void 0, function* () {
|
13306
13430
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
13307
13431
|
const originalFrame = receivedVideoFrame.videoFrame;
|
13308
13432
|
videoPerformanceMonitor.reportStartFrameProcessing(originalFrame.codedWidth, originalFrame.codedHeight);
|
13433
|
+
const clearProcessingTimeout = createFrameProcessingTimeout();
|
13309
13434
|
const processedFrame = yield videoFrameHandler(receivedVideoFrame);
|
13435
|
+
clearProcessingTimeout();
|
13310
13436
|
videoPerformanceMonitor.reportFrameProcessed();
|
13311
13437
|
return processedFrame;
|
13312
13438
|
});
|