@microsoft/teams-js 2.19.0-beta.2 → 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
@@ -7587,7 +7587,7 @@ export namespace teamsCore {
|
|
7587
7587
|
/**
|
7588
7588
|
* Registers a handler to be called when the page has been requested to load.
|
7589
7589
|
*
|
7590
|
-
* @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)
|
7591
7591
|
* for a more detailed explanation about using this API.
|
7592
7592
|
*
|
7593
7593
|
* @param handler - The handler to invoke when the page is loaded.
|
@@ -7611,7 +7611,7 @@ export namespace teamsCore {
|
|
7611
7611
|
/**
|
7612
7612
|
* Registers a handler to be called before the page is unloaded.
|
7613
7613
|
*
|
7614
|
-
* @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)
|
7615
7615
|
* for a more detailed explanation about using this API.
|
7616
7616
|
*
|
7617
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
|
@@ -2262,7 +2223,13 @@ const mapTeamsVersionToSupportedCapabilities = {
|
|
2262
2223
|
'2.0.5': [
|
2263
2224
|
{
|
2264
2225
|
capability: { webStorage: {} },
|
2265
|
-
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],
|
2266
2233
|
},
|
2267
2234
|
],
|
2268
2235
|
};
|
@@ -2379,7 +2346,7 @@ const _minRuntimeConfigToUninitialize = {
|
|
2379
2346
|
* @hidden
|
2380
2347
|
* Package version.
|
2381
2348
|
*/
|
2382
|
-
const version = "2.19.0-beta.
|
2349
|
+
const version = "2.19.0-beta.3";
|
2383
2350
|
|
2384
2351
|
;// CONCATENATED MODULE: ./src/internal/internalAPIs.ts
|
2385
2352
|
|
@@ -2515,6 +2482,137 @@ function isNullOrUndefined(value) {
|
|
2515
2482
|
return value === null || value === undefined;
|
2516
2483
|
}
|
2517
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
|
+
|
2518
2616
|
;// CONCATENATED MODULE: ./src/public/authentication.ts
|
2519
2617
|
|
2520
2618
|
|
@@ -3565,6 +3663,7 @@ var menus;
|
|
3565
3663
|
|
3566
3664
|
|
3567
3665
|
|
3666
|
+
|
3568
3667
|
/**
|
3569
3668
|
* v2 APIs telemetry file: All of APIs in this capability file should send out API version v2 ONLY
|
3570
3669
|
*/
|
@@ -3789,6 +3888,7 @@ var app;
|
|
3789
3888
|
* @returns Promise that will be fulfilled when initialization has completed, or rejected if the initialization fails or times out
|
3790
3889
|
*/
|
3791
3890
|
function initialize(validMessageOrigins) {
|
3891
|
+
prefetchOriginsFromCDN();
|
3792
3892
|
return appInitializeHelper(getApiVersionTag(appTelemetryVersionNumber, ApiName.App_Initialize), validMessageOrigins);
|
3793
3893
|
}
|
3794
3894
|
app.initialize = initialize;
|
@@ -5089,6 +5189,16 @@ function handlers_registerOnResumeHandler(handler) {
|
|
5089
5189
|
/* eslint-disable @typescript-eslint/ban-types */
|
5090
5190
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
5091
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
|
+
|
5092
5202
|
|
5093
5203
|
|
5094
5204
|
|
@@ -5120,7 +5230,7 @@ CommunicationPrivate.promiseCallbacks = {};
|
|
5120
5230
|
*/
|
5121
5231
|
function initializeCommunication(validMessageOrigins, apiVersionTag) {
|
5122
5232
|
// Listen for messages post to our window
|
5123
|
-
CommunicationPrivate.messageListener = (evt) => processMessage(evt);
|
5233
|
+
CommunicationPrivate.messageListener = (evt) => communication_awaiter(this, void 0, void 0, function* () { return yield processMessage(evt); });
|
5124
5234
|
// If we are in an iframe, our parent window is the one hosting us (i.e., window.parent); otherwise,
|
5125
5235
|
// it's the window that opened us (i.e., window.opener)
|
5126
5236
|
Communication.currentWindow = Communication.currentWindow || ssrSafeWindow();
|
@@ -5404,29 +5514,33 @@ const processMessageLogger = communicationLogger.extend('processMessage');
|
|
5404
5514
|
* Limited to Microsoft-internal use
|
5405
5515
|
*/
|
5406
5516
|
function processMessage(evt) {
|
5407
|
-
|
5408
|
-
|
5409
|
-
|
5410
|
-
|
5411
|
-
|
5412
|
-
|
5413
|
-
|
5414
|
-
|
5415
|
-
|
5416
|
-
|
5417
|
-
|
5418
|
-
|
5419
|
-
|
5420
|
-
|
5421
|
-
|
5422
|
-
|
5423
|
-
|
5424
|
-
|
5425
|
-
|
5426
|
-
|
5427
|
-
|
5428
|
-
|
5429
|
-
|
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
|
+
});
|
5430
5544
|
}
|
5431
5545
|
const shouldProcessMessageLogger = communicationLogger.extend('shouldProcessMessage');
|
5432
5546
|
/**
|
@@ -5437,25 +5551,27 @@ const shouldProcessMessageLogger = communicationLogger.extend('shouldProcessMess
|
|
5437
5551
|
* Limited to Microsoft-internal use
|
5438
5552
|
*/
|
5439
5553
|
function shouldProcessMessage(messageSource, messageOrigin) {
|
5440
|
-
|
5441
|
-
|
5442
|
-
|
5443
|
-
|
5444
|
-
|
5445
|
-
|
5446
|
-
else if (Communication.currentWindow &&
|
5447
|
-
Communication.currentWindow.location &&
|
5448
|
-
messageOrigin &&
|
5449
|
-
messageOrigin === Communication.currentWindow.location.origin) {
|
5450
|
-
return true;
|
5451
|
-
}
|
5452
|
-
else {
|
5453
|
-
const isOriginValid = validateOrigin(new URL(messageOrigin));
|
5454
|
-
if (!isOriginValid) {
|
5455
|
-
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;
|
5456
5560
|
}
|
5457
|
-
|
5458
|
-
|
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
|
+
});
|
5459
5575
|
}
|
5460
5576
|
/**
|
5461
5577
|
* @internal
|
@@ -7061,7 +7177,7 @@ var chat;
|
|
7061
7177
|
})(chat || (chat = {}));
|
7062
7178
|
|
7063
7179
|
;// CONCATENATED MODULE: ./src/public/clipboard.ts
|
7064
|
-
var
|
7180
|
+
var clipboard_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
7065
7181
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
7066
7182
|
return new (P || (P = Promise))(function (resolve, reject) {
|
7067
7183
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -7101,7 +7217,7 @@ var clipboard;
|
|
7101
7217
|
* rejects with error stating the reason for failure.
|
7102
7218
|
*/
|
7103
7219
|
function write(blob) {
|
7104
|
-
return
|
7220
|
+
return clipboard_awaiter(this, void 0, void 0, function* () {
|
7105
7221
|
internalAPIs_ensureInitialized(runtime_runtime, FrameContexts.content, FrameContexts.meetingStage, FrameContexts.task, FrameContexts.settings, FrameContexts.stage, FrameContexts.sidePanel);
|
7106
7222
|
if (!isSupported()) {
|
7107
7223
|
throw errorNotSupportedOnPlatform;
|
@@ -7126,7 +7242,7 @@ var clipboard;
|
|
7126
7242
|
* Note: Returned blob type will contain one of the MIME type `image/png`, `text/plain` or `text/html`.
|
7127
7243
|
*/
|
7128
7244
|
function read() {
|
7129
|
-
return
|
7245
|
+
return clipboard_awaiter(this, void 0, void 0, function* () {
|
7130
7246
|
internalAPIs_ensureInitialized(runtime_runtime, FrameContexts.content, FrameContexts.meetingStage, FrameContexts.task, FrameContexts.settings, FrameContexts.stage, FrameContexts.sidePanel);
|
7131
7247
|
if (!isSupported()) {
|
7132
7248
|
throw errorNotSupportedOnPlatform;
|
@@ -8413,7 +8529,7 @@ var teamsCore;
|
|
8413
8529
|
/**
|
8414
8530
|
* Registers a handler to be called when the page has been requested to load.
|
8415
8531
|
*
|
8416
|
-
* @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)
|
8417
8533
|
* for a more detailed explanation about using this API.
|
8418
8534
|
*
|
8419
8535
|
* @param handler - The handler to invoke when the page is loaded.
|
@@ -8452,7 +8568,7 @@ var teamsCore;
|
|
8452
8568
|
/**
|
8453
8569
|
* Registers a handler to be called before the page is unloaded.
|
8454
8570
|
*
|
8455
|
-
* @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)
|
8456
8572
|
* for a more detailed explanation about using this API.
|
8457
8573
|
*
|
8458
8574
|
* @param handler - The handler to invoke before the page is unloaded. If this handler returns true the page should
|