@microsoft/sp-component-base 1.23.1 → 1.24.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/dist/467dc675-7cc5-4709-8aac-78e3b71bd2f6.manifest.json +136 -141
  2. package/dist/{chunk.legacy-third-party-fabric-core-localfont_none_9e84ea19c68fdc8b9094.js → chunk.legacy-third-party-fabric-core-localfont_none_b7f7978a3e90166c361b.js} +1 -1
  3. package/dist/chunk.teams-apps-client_none_27d3c7c1d01080e4f131.js +2 -0
  4. package/dist/index-internal-beta.d.ts +30 -8
  5. package/dist/index-internal-public.d.ts +30 -8
  6. package/dist/index-internal.d.ts +30 -8
  7. package/dist/sp-component-base_default_8d535b51fa18aa47002b.js +22 -0
  8. package/dist/sp-component-base_en-us_8ce25dfb69a7786caece.js +22 -0
  9. package/dist/sp-component-base_qps-ploc_4fec831895d90df8aa7a.js +22 -0
  10. package/dist/sp-component-base_qps-ploca_b80610c8dff04dcec755.js +22 -0
  11. package/dist/tsdoc-metadata.json +1 -1
  12. package/lib-commonjs/BaseComponent.js +110 -145
  13. package/lib-commonjs/BaseComponentContext.js +126 -183
  14. package/lib-commonjs/DynamicDataProvider.js +251 -268
  15. package/lib-commonjs/DynamicDataSourceManager.js +218 -241
  16. package/lib-commonjs/DynamicProperty.js +232 -280
  17. package/lib-commonjs/EnsureIsolatedDomainUrl.js +14 -14
  18. package/lib-commonjs/IComponentPosition.js +8 -3
  19. package/lib-commonjs/IComponentPropertyMetadata.js +10 -3
  20. package/lib-commonjs/ISerializedServerProcessedData.js +24 -21
  21. package/lib-commonjs/LegacyThirdPartyFabricCoreLoader.js +53 -87
  22. package/lib-commonjs/PropertyMetadataProcessor.js +117 -150
  23. package/lib-commonjs/RenderableComponentContext.js +37 -0
  24. package/lib-commonjs/ShimmerFactory.js +66 -51
  25. package/lib-commonjs/chunks/legacy-third-party-fabric-core/FabricLocalFont.js +6 -4
  26. package/lib-commonjs/common/Flights.js +22 -10
  27. package/lib-commonjs/common/KillSwitches.js +13 -6
  28. package/lib-commonjs/dataCollector/IWebPartLoadData.js +35 -30
  29. package/lib-commonjs/dataCollector/WebPartLoadDataCollector.js +82 -91
  30. package/lib-commonjs/index.js +78 -38
  31. package/lib-commonjs/teams/DeferredTeamsAppsClient.js +30 -52
  32. package/lib-commonjs/teams/ITeamsAppCatalog.js +10 -3
  33. package/lib-commonjs/teams/TeamsAppsClient.js +189 -231
  34. package/lib-commonjs/test-api/MockComponent.js +38 -23
  35. package/lib-commonjs/test-api/MockComponentContext.js +21 -14
  36. package/lib-commonjs/test-api/index.js +21 -7
  37. package/lib-commonjs/themeProvider/ThemeProvider.js +68 -82
  38. package/lib-commonjs/themeProvider/themeInterfaces/IFontStyles.js +5 -2
  39. package/lib-commonjs/themeProvider/themeInterfaces/IPalette.js +10 -3
  40. package/lib-commonjs/themeProvider/themeInterfaces/ISemanticColors.js +59 -3
  41. package/lib-commonjs/themeProvider/themeInterfaces/ISemanticTextColors.js +10 -3
  42. package/lib-commonjs/themeProvider/themeInterfaces/ITheme.js +5 -2
  43. package/{lib → lib-dts}/BaseComponent.d.ts +8 -8
  44. package/{lib → lib-dts}/BaseComponentContext.d.ts +5 -5
  45. package/lib-dts/RenderableComponentContext.d.ts +35 -0
  46. package/{lib → lib-dts}/index.d.ts +1 -0
  47. package/lib-esm/BaseComponent.js +123 -0
  48. package/lib-esm/BaseComponentContext.js +157 -0
  49. package/lib-esm/DynamicDataProvider.js +401 -0
  50. package/lib-esm/DynamicDataSourceManager.js +358 -0
  51. package/lib-esm/DynamicProperty.js +344 -0
  52. package/{lib → lib-esm}/EnsureIsolatedDomainUrl.js +6 -6
  53. package/lib-esm/IComponentPosition.js +5 -0
  54. package/lib-esm/IComponentPropertyMetadata.js +7 -0
  55. package/lib-esm/ISerializedServerProcessedData.js +24 -0
  56. package/lib-esm/LegacyThirdPartyFabricCoreLoader.js +76 -0
  57. package/{lib → lib-esm}/PropertyMetadataProcessor.js +92 -127
  58. package/lib-esm/RenderableComponentContext.js +26 -0
  59. package/lib-esm/ShimmerFactory.js +74 -0
  60. package/{lib → lib-esm}/chunks/legacy-third-party-fabric-core/FabricLocalFont.js +3 -3
  61. package/{lib → lib-esm}/common/Flights.js +4 -3
  62. package/{lib → lib-esm}/common/KillSwitches.js +3 -2
  63. package/lib-esm/dataCollector/IWebPartLoadData.js +33 -0
  64. package/lib-esm/dataCollector/WebPartLoadDataCollector.js +125 -0
  65. package/{lib → lib-esm}/index.js +4 -3
  66. package/lib-esm/teams/DeferredTeamsAppsClient.js +32 -0
  67. package/lib-esm/teams/ITeamsAppCatalog.js +9 -0
  68. package/lib-esm/teams/TeamsAppsClient.js +395 -0
  69. package/lib-esm/test-api/MockComponent.js +38 -0
  70. package/{lib → lib-esm}/test-api/MockComponentContext.js +10 -11
  71. package/{lib → lib-esm}/test-api/index.js +2 -1
  72. package/lib-esm/themeProvider/ThemeProvider.js +79 -0
  73. package/lib-esm/themeProvider/themeInterfaces/IFontStyles.js +7 -0
  74. package/lib-esm/themeProvider/themeInterfaces/IPalette.js +7 -0
  75. package/lib-esm/themeProvider/themeInterfaces/ISemanticColors.js +56 -0
  76. package/lib-esm/themeProvider/themeInterfaces/ISemanticTextColors.js +7 -0
  77. package/lib-esm/themeProvider/themeInterfaces/ITheme.js +7 -0
  78. package/package.json +41 -14
  79. package/dist/chunk.teams-apps-client_none_f9872389cb6ea9ad28e2.js +0 -2
  80. package/dist/sp-component-base_default_5ba07be39b0dc8968f7b.js +0 -2
  81. package/dist/sp-component-base_en-us_eb9bebb3acce0ae83f1c.js +0 -2
  82. package/dist/sp-component-base_qps-ploc_45f37623d87c3d848f2a.js +0 -2
  83. package/dist/sp-component-base_qps-ploca_b3f3b7bf97c4185b0fd6.js +0 -2
  84. package/lib/BaseComponent.d.ts.map +0 -1
  85. package/lib/BaseComponent.js +0 -161
  86. package/lib/BaseComponentContext.d.ts.map +0 -1
  87. package/lib/BaseComponentContext.js +0 -222
  88. package/lib/DynamicDataProvider.d.ts.map +0 -1
  89. package/lib/DynamicDataProvider.js +0 -420
  90. package/lib/DynamicDataSourceManager.d.ts.map +0 -1
  91. package/lib/DynamicDataSourceManager.js +0 -382
  92. package/lib/DynamicProperty.d.ts.map +0 -1
  93. package/lib/DynamicProperty.js +0 -390
  94. package/lib/EnsureIsolatedDomainUrl.d.ts.map +0 -1
  95. package/lib/IComponentPosition.d.ts.map +0 -1
  96. package/lib/IComponentPosition.js +0 -2
  97. package/lib/IComponentPropertyMetadata.d.ts.map +0 -1
  98. package/lib/IComponentPropertyMetadata.js +0 -2
  99. package/lib/ISerializedServerProcessedData.d.ts.map +0 -1
  100. package/lib/ISerializedServerProcessedData.js +0 -28
  101. package/lib/LegacyThirdPartyFabricCoreLoader.d.ts.map +0 -1
  102. package/lib/LegacyThirdPartyFabricCoreLoader.js +0 -90
  103. package/lib/PropertyMetadataProcessor.d.ts.map +0 -1
  104. package/lib/ShimmerFactory.d.ts.map +0 -1
  105. package/lib/ShimmerFactory.js +0 -62
  106. package/lib/chunks/legacy-third-party-fabric-core/FabricLocalFont.d.ts.map +0 -1
  107. package/lib/common/Flights.d.ts.map +0 -1
  108. package/lib/common/KillSwitches.d.ts.map +0 -1
  109. package/lib/dataCollector/IWebPartLoadData.d.ts.map +0 -1
  110. package/lib/dataCollector/IWebPartLoadData.js +0 -40
  111. package/lib/dataCollector/WebPartLoadDataCollector.d.ts.map +0 -1
  112. package/lib/dataCollector/WebPartLoadDataCollector.js +0 -137
  113. package/lib/index.d.ts.map +0 -1
  114. package/lib/teams/DeferredTeamsAppsClient.d.ts.map +0 -1
  115. package/lib/teams/DeferredTeamsAppsClient.js +0 -39
  116. package/lib/teams/ITeamsAppCatalog.d.ts.map +0 -1
  117. package/lib/teams/ITeamsAppCatalog.js +0 -2
  118. package/lib/teams/TeamsAppsClient.d.ts.map +0 -1
  119. package/lib/teams/TeamsAppsClient.js +0 -440
  120. package/lib/test-api/MockComponent.d.ts.map +0 -1
  121. package/lib/test-api/MockComponent.js +0 -31
  122. package/lib/test-api/MockComponentContext.d.ts.map +0 -1
  123. package/lib/test-api/index.d.ts.map +0 -1
  124. package/lib/themeProvider/ThemeProvider.d.ts.map +0 -1
  125. package/lib/themeProvider/ThemeProvider.js +0 -99
  126. package/lib/themeProvider/themeInterfaces/IFontStyles.d.ts.map +0 -1
  127. package/lib/themeProvider/themeInterfaces/IFontStyles.js +0 -2
  128. package/lib/themeProvider/themeInterfaces/IPalette.d.ts.map +0 -1
  129. package/lib/themeProvider/themeInterfaces/IPalette.js +0 -2
  130. package/lib/themeProvider/themeInterfaces/ISemanticColors.d.ts.map +0 -1
  131. package/lib/themeProvider/themeInterfaces/ISemanticColors.js +0 -2
  132. package/lib/themeProvider/themeInterfaces/ISemanticTextColors.d.ts.map +0 -1
  133. package/lib/themeProvider/themeInterfaces/ISemanticTextColors.js +0 -2
  134. package/lib/themeProvider/themeInterfaces/ITheme.d.ts.map +0 -1
  135. package/lib/themeProvider/themeInterfaces/ITheme.js +0 -2
  136. /package/{lib → lib-dts}/DynamicDataProvider.d.ts +0 -0
  137. /package/{lib → lib-dts}/DynamicDataSourceManager.d.ts +0 -0
  138. /package/{lib → lib-dts}/DynamicProperty.d.ts +0 -0
  139. /package/{lib → lib-dts}/EnsureIsolatedDomainUrl.d.ts +0 -0
  140. /package/{lib → lib-dts}/IComponentPosition.d.ts +0 -0
  141. /package/{lib → lib-dts}/IComponentPropertyMetadata.d.ts +0 -0
  142. /package/{lib → lib-dts}/ISerializedServerProcessedData.d.ts +0 -0
  143. /package/{lib → lib-dts}/LegacyThirdPartyFabricCoreLoader.d.ts +0 -0
  144. /package/{lib → lib-dts}/PropertyMetadataProcessor.d.ts +0 -0
  145. /package/{lib → lib-dts}/ShimmerFactory.d.ts +0 -0
  146. /package/{lib → lib-dts}/chunks/legacy-third-party-fabric-core/FabricLocalFont.d.ts +0 -0
  147. /package/{lib → lib-dts}/common/Flights.d.ts +0 -0
  148. /package/{lib → lib-dts}/common/KillSwitches.d.ts +0 -0
  149. /package/{lib → lib-dts}/dataCollector/IWebPartLoadData.d.ts +0 -0
  150. /package/{lib → lib-dts}/dataCollector/WebPartLoadDataCollector.d.ts +0 -0
  151. /package/{lib → lib-dts}/loc/Strings.resx.d.ts +0 -0
  152. /package/{lib → lib-dts}/teams/DeferredTeamsAppsClient.d.ts +0 -0
  153. /package/{lib → lib-dts}/teams/ITeamsAppCatalog.d.ts +0 -0
  154. /package/{lib → lib-dts}/teams/TeamsAppsClient.d.ts +0 -0
  155. /package/{lib → lib-dts}/test-api/MockComponent.d.ts +0 -0
  156. /package/{lib → lib-dts}/test-api/MockComponentContext.d.ts +0 -0
  157. /package/{lib → lib-dts}/test-api/index.d.ts +0 -0
  158. /package/{lib → lib-dts}/themeProvider/ThemeProvider.d.ts +0 -0
  159. /package/{lib → lib-dts}/themeProvider/themeInterfaces/IFontStyles.d.ts +0 -0
  160. /package/{lib → lib-dts}/themeProvider/themeInterfaces/IPalette.d.ts +0 -0
  161. /package/{lib → lib-dts}/themeProvider/themeInterfaces/ISemanticColors.d.ts +0 -0
  162. /package/{lib → lib-dts}/themeProvider/themeInterfaces/ISemanticTextColors.d.ts +0 -0
  163. /package/{lib → lib-dts}/themeProvider/themeInterfaces/ITheme.d.ts +0 -0
  164. /package/{lib → lib-esm}/chunks/legacy-third-party-fabric-core/fabric-core-sass/Fabric.LocalFont.global.scss.css +0 -0
  165. /package/{lib → lib-esm}/chunks/legacy-third-party-fabric-core/fabric-core-sass/Fabric.LocalFontKillSwitchActivated.scss.css +0 -0
  166. /package/{lib → lib-esm}/chunks/legacy-third-party-fabric-core/fabric-core-shim.global.scss.css +0 -0
  167. /package/{lib → lib-esm}/chunks/legacy-third-party-fabric-core/fabric-core-shimKillSwitchActivated.scss.css +0 -0
  168. /package/{lib → lib-esm}/chunks/legacy-third-party-fabric-core/iconDefinitions.css +0 -0
  169. /package/{lib → lib-esm}/loc/Strings.resx.json +0 -0
  170. /package/{lib → lib-esm}/sp-component-base.manifest.json +0 -0
  171. /package/{lib → lib-esm}/styles/shimmer.module.scss.css +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebPartLoadDataCollector.d.ts","sourceRoot":"","sources":["../../src/dataCollector/WebPartLoadDataCollector.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAMlF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAoD,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAK7G;;;;GAIG;AACH,qBAAa,wBAAwB;WACrB,OAAO,CACnB,QAAQ,EAAE,0BAA0B,CAAC,OAAO,CAAC,EAC7C,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,WAAW,GACvB,gBAAgB;IA4FnB,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAuBjC,OAAO,CAAC,MAAM,CAAC,mBAAmB;CA0BnC"}
@@ -1,137 +0,0 @@
1
- // Copyright (c) Microsoft. All rights reserved.
2
- import { _PerformanceLogger, _PerformanceDataDimensions } from '@msinternal/sp-telemetry';
3
- import { _CacheMissReason as CacheMissReason, CacheStatus } from './IWebPartLoadData';
4
- import { _BrowserUtilities } from '@microsoft/sp-core-library';
5
- var NOT_AVAILABLE = 'N/A';
6
- /**
7
- * This is used internally to collect web part and adaptive card extension's module load, init, and render performances.
8
- * This file moved from sp-webpart-base to not additional dependency to sp-adaptive-card-extension-base.
9
- * @internal
10
- */
11
- var WebPartLoadDataCollector = /** @class */ (function () {
12
- function WebPartLoadDataCollector() {
13
- }
14
- WebPartLoadDataCollector.collect = function (manifest, webPartTag, pageContext) {
15
- var getTime = function (key) {
16
- return (_PerformanceLogger.readComponentBreakdown(webPartTag, key) ||
17
- _PerformanceLogger.readTempData("".concat(webPartTag, ".").concat(key)));
18
- };
19
- var start = getTime('start');
20
- var moduleLoaded = getTime('modulesLoaded');
21
- var initialized = getTime('init');
22
- var end = getTime('end');
23
- var isSpinnyShown = !!getTime('displaySpinner');
24
- var isMultiGeo = Boolean(pageContext && pageContext.legacyPageContext && pageContext.legacyPageContext.isMultiGeoTenant);
25
- var dataProvider = NOT_AVAILABLE;
26
- var layoutID = NOT_AVAILABLE;
27
- var webPartCacheHit = CacheStatus.NotAvailable;
28
- var cacheMissReason = CacheMissReason.NotApplicable;
29
- // Collect data for first-party web parts only. This ideally should be done outside of spfx.
30
- // VSO#855246 Refactor WebPartLoadDataCollector to move out first-party only logging logic.
31
- if (manifest.isInternal) {
32
- var cacheHit = getTime('CacheHit');
33
- var cacheMiss = getTime('CacheMiss');
34
- var prefetechedData = getTime('prefetchedData');
35
- var isCacheApplicable = Boolean(cacheHit || cacheMiss);
36
- webPartCacheHit = isCacheApplicable
37
- ? cacheHit
38
- ? CacheStatus.True
39
- : CacheStatus.False
40
- : CacheStatus.NotAvailable;
41
- cacheMissReason = WebPartLoadDataCollector._getCacheMissReason(cacheHit, getTime);
42
- var dataProviderTime_1 = _PerformanceLogger.now();
43
- var layoutKey_1 = _PerformanceDataDimensions.Layout;
44
- var dataProviderKey_1 = _PerformanceDataDimensions.DataProvider;
45
- var perfBreakDown_1 = _PerformanceLogger.readFullEUPLBreakDown();
46
- // WebParts which have different layouts and dataproviders, will have perf marks such as
47
- // webPartTag.dataProvider: [dataProviderName]
48
- // webPartTag.Layout: [Layout]
49
- // The logic below will extract the data provider and layout, and log them for perf measurements.
50
- Object.keys(perfBreakDown_1).forEach(function (key) {
51
- if (key.indexOf(webPartTag) > -1) {
52
- // We only have 1 layout
53
- if (layoutID === NOT_AVAILABLE && key.indexOf(layoutKey_1) > -1) {
54
- layoutID = key.split(layoutKey_1)[1];
55
- // Focus on primary data provider
56
- }
57
- else if (key.indexOf(dataProviderKey_1) > -1) {
58
- // Pick earliest data provider, in case there are multiple
59
- if (dataProvider === NOT_AVAILABLE || perfBreakDown_1[key] < dataProviderTime_1) {
60
- dataProvider = key.split(dataProviderKey_1)[1];
61
- dataProviderTime_1 = perfBreakDown_1[key];
62
- }
63
- }
64
- }
65
- });
66
- dataProvider = prefetechedData ? 'Prefetch' : dataProvider;
67
- }
68
- var webpartPerfFlights = _PerformanceLogger.getWebpartFlightsAndExperiments(webPartTag);
69
- var syncRenderTime = this._getSyncRenderTime(layoutID, getTime);
70
- var retVal = {
71
- alias: manifest.alias,
72
- isMultiGeo: isMultiGeo,
73
- isInternal: manifest.isInternal,
74
- isSpinnyShown: isSpinnyShown,
75
- manifestId: manifest.id,
76
- moduleLoadTime: Math.floor(moduleLoaded - start),
77
- initTime: Math.floor(initialized - moduleLoaded),
78
- renderTime: Math.floor(end - initialized),
79
- syncRenderTime: syncRenderTime,
80
- scenarioId: _PerformanceLogger.getScenarioId(),
81
- isFullPage: _PerformanceLogger.fullPageLoad,
82
- dataProvider: dataProvider,
83
- layout: layoutID,
84
- mySiteCacheHit: webPartCacheHit,
85
- cacheMissReason: cacheMissReason,
86
- flights: webpartPerfFlights,
87
- storeAppId: manifest.storeAppId,
88
- mpnId: manifest.mpnId,
89
- componentDeveloperName: manifest.componentDeveloperName
90
- };
91
- retVal.teamsHosted = _BrowserUtilities.isTeamsHosted();
92
- return retVal;
93
- };
94
- WebPartLoadDataCollector._getSyncRenderTime = function (layoutID, getTime) {
95
- var syncRenderTime = undefined;
96
- syncRenderTime = Math.floor(getTime('syncRender') - getTime('getDataComplete'));
97
- var postRenderCompleteTime = getTime('postRenderComplete');
98
- var loadLayoutEnd = getTime('loadLayoutEnd');
99
- var syncLayoutRenderComplete = getTime('syncLayoutRenderComplete');
100
- if (loadLayoutEnd && syncLayoutRenderComplete) {
101
- // render layout and items inside it
102
- syncRenderTime = Math.floor(syncRenderTime + (syncLayoutRenderComplete - loadLayoutEnd));
103
- }
104
- if (postRenderCompleteTime) {
105
- syncRenderTime = Math.floor(
106
- // transposeRow + transposeItems + render + syncPostRender
107
- syncRenderTime + (postRenderCompleteTime - getTime(_PerformanceDataDimensions.Layout + layoutID)));
108
- }
109
- return syncRenderTime;
110
- };
111
- WebPartLoadDataCollector._getCacheMissReason = function (cacheHit, getTime) {
112
- if (cacheHit) {
113
- return CacheMissReason.NotApplicable;
114
- }
115
- var mySiteCacheMissOnConfgMismatch = !!getTime('CacheMissConfigMismatch');
116
- var mySiteCacheMissOnLateFlush = !!getTime('LateFlush');
117
- var cachedWebPartNotFound = !!getTime('CachedWebPartNotFound');
118
- var cacheExpired = !!getTime('CacheExpired');
119
- var cacheMissReason = CacheMissReason.NotSpecified;
120
- if (mySiteCacheMissOnConfgMismatch) {
121
- cacheMissReason = CacheMissReason.CacheConfigMissmatch;
122
- }
123
- else if (mySiteCacheMissOnLateFlush) {
124
- cacheMissReason = CacheMissReason.LateFlush;
125
- }
126
- else if (cachedWebPartNotFound) {
127
- cacheMissReason = CacheMissReason.CachedItemNotFound;
128
- }
129
- else if (cacheExpired) {
130
- cacheMissReason = CacheMissReason.CacheExpired;
131
- }
132
- return cacheMissReason;
133
- };
134
- return WebPartLoadDataCollector;
135
- }());
136
- export { WebPartLoadDataCollector };
137
- //# sourceMappingURL=WebPartLoadDataCollector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EACL,OAAO,IAAI,oBAAoB,EAC/B,KAAK,2BAA2B,IAAI,4BAA4B,EACjE,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEjF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,OAAO,IAAI,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AAElG,YAAY,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE/E,OAAO,EAAE,yBAAyB,IAAI,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAEtG,OAAO,EACL,KAAK,8BAA8B,EACnC,uBAAuB,IAAI,wBAAwB,EACpD,MAAM,kCAAkC,CAAC;AAE1C,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,SAAS,EACT,iBAAiB,EAClB,MAAM,6CAA6C,CAAC;AAErD,YAAY,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAEzE,YAAY,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAE/F,YAAY,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAEvF,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,wCAAwC,CAAC;AAErF,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGrF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,uBAAuB,IAAI,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAEhG,OAAO,EAAE,wBAAwB,IAAI,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAEjH,OAAO,EACL,KAAK,gBAAgB,IAAI,iBAAiB,EAC1C,gBAAgB,EACjB,MAAM,kCAAkC,CAAC;AAE1C,YAAY,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEtF,YAAY,EACV,kBAAkB,IAAI,mBAAmB,EACzC,oBAAoB,IAAI,qBAAqB,EAC7C,eAAe,IAAI,gBAAgB,EACpC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,uBAAuB,IAAI,wBAAwB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DeferredTeamsAppsClient.d.ts","sourceRoot":"","sources":["../../src/teams/DeferredTeamsAppsClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;GAEG;AACH,qBAAa,uBAAuB;IAClC;;OAEG;IACH,gBAAuB,UAAU,EAAE,UAAU,CAAC,uBAAuB,CAAC,CACwB;IAE9F,OAAO,CAAC,uBAAuB,CAAuC;IACtE,OAAO,CAAC,gBAAgB,CAA8B;IACtD,OAAO,CAAC,aAAa,CAAe;gBAEjB,YAAY,EAAE,YAAY;IAItC,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;CAqB7C"}
@@ -1,39 +0,0 @@
1
- import { ServiceKey } from '@microsoft/sp-core-library';
2
- import { _QosMonitor } from '@microsoft/sp-diagnostics';
3
- /**
4
- * @internal
5
- */
6
- var DeferredTeamsAppsClient = /** @class */ (function () {
7
- function DeferredTeamsAppsClient(serviceScope) {
8
- this._serviceScope = serviceScope;
9
- }
10
- DeferredTeamsAppsClient.prototype.getClient = function () {
11
- var _this = this;
12
- if (this._teamsAppsClient) {
13
- return Promise.resolve(this._teamsAppsClient);
14
- }
15
- if (!this._teamsAppsClientPromise) {
16
- var loadMonitor_1 = new _QosMonitor('DeferredTeamsAppsClient.LoadTeamsAppClient');
17
- this._teamsAppsClientPromise = import(/* webpackChunkName: 'teams-apps-client' */ './TeamsAppsClient')
18
- // eslint-disable-next-line @typescript-eslint/naming-convention
19
- .then(function (_a) {
20
- var TeamsAppsClient = _a.TeamsAppsClient;
21
- _this._teamsAppsClient = new TeamsAppsClient(_this._serviceScope);
22
- loadMonitor_1.writeSuccess();
23
- return _this._teamsAppsClient;
24
- })
25
- .catch(function (error) {
26
- loadMonitor_1.writeUnexpectedFailure(undefined, error);
27
- throw error;
28
- });
29
- }
30
- return this._teamsAppsClientPromise;
31
- };
32
- /**
33
- * The service key for DeferredTeamsAppsClient.
34
- */
35
- DeferredTeamsAppsClient.serviceKey = ServiceKey.create('sp-teams-apps-client', DeferredTeamsAppsClient);
36
- return DeferredTeamsAppsClient;
37
- }());
38
- export { DeferredTeamsAppsClient };
39
- //# sourceMappingURL=DeferredTeamsAppsClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ITeamsAppCatalog.d.ts","sourceRoot":"","sources":["../../src/teams/ITeamsAppCatalog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAE3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,SAAS,CAAC;IACf,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IAEX,WAAW,EAAE,aAAa,GAAG,IAAI,CAAC;IAElC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,gCAAgC,CAAC;IAChD,IAAI,CAAC,EAAE,uBAAuB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C,UAAU,EAAE,KAAK,CAAC;IAClB,gBAAgB,CAAC,EAAE,mCAAmC,CAAC;CACxD;AAED;;GAEG;AACH,MAAM,WAAW,mCAAmC;IAClD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ITeamsAppCatalog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TeamsAppsClient.d.ts","sourceRoot":"","sources":["../../src/teams/TeamsAppsClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,4BAA4B,EAC7B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAyE/D;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;IAC9D;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,qCAAqC,CAAmD;IACvG,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAA4B;IAEnE;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAG9C;IACJ,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,qBAAqB,CAAmC;IAChE,OAAO,CAAC,sBAAsB,CAAuC;gBAElD,YAAY,EAAE,YAAY;IAI7C;;;OAGG;IACI,6BAA6B,IAAI,OAAO,CAAC,4BAA4B,EAAE,CAAC;IAuC/E;;OAEG;IACI,aAAa,CAClB,yBAAyB,EAAE,4BAA4B,GACtD,OAAO,CAAC,4BAA4B,CAAC;IA6FxC;;OAEG;IACI,kBAAkB,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtF;;OAEG;IACI,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkB/D,OAAO,CAAC,uBAAuB;IA+C/B,OAAO,CAAC,8BAA8B;IAkGtC,OAAO,CAAC,uBAAuB;IAO/B,OAAO,KAAK,cAAc,GASzB;IAED,OAAO,CAAC,kCAAkC;IAoE1C,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,+BAA+B;CAkCxC"}
@@ -1,440 +0,0 @@
1
- import { _QosMonitor } from '@microsoft/sp-diagnostics';
2
- import { MSGraphClientFactory, SPHttpClient } from '@microsoft/sp-http';
3
- import { PageContext } from '@microsoft/sp-page-context';
4
- import { isBotAcesFromTeamsEnabled } from '../common/Flights';
5
- import { uniq } from '@microsoft/sp-lodash-subset';
6
- // base teams apps endpoint
7
- var MS_GRAPH_TEAMS_APPS_ENDPOINT = '/appCatalogs/teamsApps';
8
- // QSP to fetch all teams apps with dashboard cards
9
- var MS_GRAPH_FETCH_TEAMS_APPS_QSP = "$expand=appDefinitions($expand=outlineIcon,colorIcon,dashboardCards)&$filter=appDefinitions/any(a:a/dashboardCards/$count ne 0)";
10
- // QSP to check permissions for the list of app ids
11
- var MS_GRAPH_CHECK_PERMISSIONS_QSP = "$expand=appDefinitions($expand=dashboardCards)&$filter=appDefinitions/any(a:a/dashboardCards/$count ne 0) and id in ('{appIds}')";
12
- var MS_GRAPH_API_VERSION = 'beta';
13
- // the number of app ids we can process without batching the request to avoid the URL length limit
14
- var MAX_IDS_WITHOUT_BATCHING = 30;
15
- var MAX_REQUESTS_PER_BATCH = 10;
16
- var MANIFEST_VERSION = 2;
17
- var ADVANCED_TOOLBOX_GROUP_ID = '5c03119e-3074-46fd-976b-c60198311f70';
18
- /**
19
- * The client for the Teams Apps sync.
20
- *
21
- * @internal
22
- */
23
- var TeamsAppsClient = /** @class */ (function () {
24
- function TeamsAppsClient(serviceScope) {
25
- /**
26
- * Map[teamsAppId, Promise[Set[teamsAppId]]]
27
- *
28
- * We store a map where the same promise can be used for multiple entries.
29
- * In that case we can avoid multiple requests to the API for the same teamsAppId as well as avoid race conditions and allow to make extra requests if needed.
30
- */
31
- this._appComponentsPermissionsPromises = new Map();
32
- this._serviceScope = serviceScope;
33
- }
34
- /**
35
- * Gets the list of Teams App components from Teams App Catalog.
36
- * @returns Promise that resolves to the list of Teams App components.
37
- */
38
- TeamsAppsClient.prototype.getTeamsAppComponentManifests = function () {
39
- var _this = this;
40
- if (!TeamsAppsClient._getTeamsAppComponentManifestsPromise) {
41
- if (!isBotAcesFromTeamsEnabled()) {
42
- TeamsAppsClient._getTeamsAppComponentManifestsPromise = Promise.resolve([]);
43
- }
44
- else {
45
- var monitor_1 = new _QosMonitor('TeamsAppsClient.FetchTeamsApp');
46
- TeamsAppsClient._getTeamsAppComponentManifestsPromise = this._msGraphClient
47
- .then(function (client) {
48
- return client
49
- .api("".concat(MS_GRAPH_TEAMS_APPS_ENDPOINT, "?").concat(MS_GRAPH_FETCH_TEAMS_APPS_QSP))
50
- .version(MS_GRAPH_API_VERSION)
51
- .get();
52
- })
53
- .then(function (response) {
54
- var manifestsPromises = response.value.map(function (item) {
55
- return _this._teamsAppCatalogItemToAceManifests(item);
56
- });
57
- return Promise.all(manifestsPromises).then(function (manifests) {
58
- var flatManifests = [];
59
- manifests.forEach(function (item) {
60
- flatManifests.push.apply(flatManifests, item);
61
- });
62
- monitor_1.writeSuccess();
63
- return flatManifests;
64
- });
65
- })
66
- .catch(function (error) {
67
- monitor_1.writeUnexpectedFailure(undefined, error);
68
- // removing reference to the promise to allow retry
69
- TeamsAppsClient._getTeamsAppComponentManifestsPromise = undefined;
70
- return [];
71
- });
72
- }
73
- }
74
- return TeamsAppsClient._getTeamsAppComponentManifestsPromise;
75
- };
76
- /**
77
- * Syncs the Teams App component into SharePoint App Catalog.
78
- */
79
- TeamsAppsClient.prototype.syncComponent = function (teamsAppComponentManifest) {
80
- var _this = this;
81
- var _a;
82
- var manifest = teamsAppComponentManifest;
83
- if (!isBotAcesFromTeamsEnabled() || !manifest.isPendingTeamsAppSync) {
84
- return Promise.resolve(teamsAppComponentManifest);
85
- }
86
- var monitor = new _QosMonitor('TeamsAppsClient.SyncComponent');
87
- if (!((_a = teamsAppComponentManifest.properties) === null || _a === void 0 ? void 0 : _a.teamsAppComponent)) {
88
- monitor.writeExpectedFailure('TeamsAppComponentMissing');
89
- return new Promise(function () {
90
- throw new Error('Teams App component manifest is missing teamsAppComponent property');
91
- });
92
- }
93
- var spHttpClient = this._serviceScope.consume(SPHttpClient.serviceKey);
94
- var pageContext = this._serviceScope.consume(PageContext.serviceKey);
95
- var baseRequestUrl = pageContext.web.absoluteUrl;
96
- var monitorFailureTagNameSuffix = undefined;
97
- var ensureAppCatalogPromise = TeamsAppsClient._ensureAppCatalogPromise;
98
- if (!TeamsAppsClient._ensureAppCatalogPromise) {
99
- // first step is to ensure app catalog
100
- var ensureAppCatalogRequestUrl = "".concat(baseRequestUrl, "/_api/web/EnsureTenantAppCatalog(callerId='TeamsAppsClient')");
101
- ensureAppCatalogPromise = TeamsAppsClient._ensureAppCatalogPromise = spHttpClient
102
- .post(ensureAppCatalogRequestUrl, SPHttpClient.configurations.v1, {})
103
- .then(function (response) {
104
- return response.json();
105
- })
106
- .then(function (response) {
107
- if (response.error) {
108
- throw new Error(response.error.message);
109
- }
110
- })
111
- .catch(function (error) {
112
- // app catalog error
113
- monitorFailureTagNameSuffix = 'EnsureAppCatalogFailed';
114
- // we want to retry if needed
115
- TeamsAppsClient._ensureAppCatalogPromise = undefined;
116
- throw error;
117
- });
118
- }
119
- return ensureAppCatalogPromise
120
- .then(function () {
121
- var syncRequestUrl = "".concat(baseRequestUrl, "/_api/web/SyncTeamsComponent");
122
- var teamsAppComponent = teamsAppComponentManifest.properties.teamsAppComponent;
123
- return spHttpClient
124
- .post(syncRequestUrl, SPHttpClient.configurations.v1, {
125
- body: JSON.stringify({
126
- teamsComponent: teamsAppComponent
127
- })
128
- })
129
- .catch(function (error) {
130
- // sync error
131
- monitorFailureTagNameSuffix = 'SyncComponentFailed';
132
- throw error;
133
- });
134
- })
135
- .then(function (response) {
136
- return response.json();
137
- })
138
- .then(function (syncedManifest) {
139
- if (syncedManifest.error) {
140
- monitorFailureTagNameSuffix = 'SyncComponentFailed';
141
- throw new Error(syncedManifest.error.message);
142
- }
143
- var manifestResponse = syncedManifest;
144
- var parsedManifest = JSON.parse(manifestResponse.Manifest);
145
- if (manifestResponse.ManifestActivatedTime) {
146
- parsedManifest.manifestActivatedTime = manifestResponse.ManifestActivatedTime;
147
- }
148
- monitor.writeSuccess();
149
- var appId = teamsAppComponentManifest.properties.teamsAppComponent.appId;
150
- // we know for sure the component is allowed
151
- _this._appComponentsPermissionsPromises.set(appId, Promise.resolve(new Set([appId])));
152
- return parsedManifest;
153
- })
154
- .catch(function (error) {
155
- monitor.writeUnexpectedFailure(monitorFailureTagNameSuffix, error);
156
- throw error;
157
- });
158
- };
159
- /**
160
- * Requests permissions for the Teams App components (apps) for the current user.
161
- */
162
- TeamsAppsClient.prototype.requestPermissions = function (teamsAppComponentIds) {
163
- if (!isBotAcesFromTeamsEnabled() || !teamsAppComponentIds.length) {
164
- return Promise.resolve();
165
- }
166
- return this._requestAppsPermissions(teamsAppComponentIds).then(function () { });
167
- };
168
- /**
169
- * Checks if the component is enabled for the current user based on requested Teams permissions.
170
- */
171
- TeamsAppsClient.prototype.isComponentEnabled = function (teamsAppId) {
172
- if (!isBotAcesFromTeamsEnabled()) {
173
- return Promise.resolve(true);
174
- }
175
- if (this._appComponentsPermissionsPromises.has(teamsAppId)) {
176
- return this._appComponentsPermissionsPromises.get(teamsAppId).then(function (allowedApps) {
177
- return allowedApps.has(teamsAppId) || false;
178
- });
179
- }
180
- else {
181
- return this._requestAppsPermissions([{ appId: teamsAppId, componentId: '' }]).then(function (allowedComponents) {
182
- return allowedComponents.has(teamsAppId) || false;
183
- });
184
- }
185
- };
186
- TeamsAppsClient.prototype._requestAppsPermissions = function (teamsAppComponentIds) {
187
- var _this = this;
188
- // getting app ids for which we don't have a promise yet
189
- var uniqueAppIds = uniq(teamsAppComponentIds.map(function (item) { return item.appId; })).filter(function (appId) { return !_this._appComponentsPermissionsPromises.has(appId); });
190
- var requestPermissionsPromise;
191
- if (uniqueAppIds.length > MAX_IDS_WITHOUT_BATCHING) {
192
- requestPermissionsPromise = this._requestAppsPermissionsBatched(uniqueAppIds);
193
- }
194
- if (!requestPermissionsPromise) {
195
- var monitor_2 = new _QosMonitor('TeamsAppsClient.RequestAppsPermissions');
196
- requestPermissionsPromise = this._msGraphClient
197
- .then(function (client) {
198
- return client.api(_this._getCheckPermissionsUrl(uniqueAppIds)).version(MS_GRAPH_API_VERSION).get();
199
- })
200
- .then(function (response) {
201
- if (response.error) {
202
- monitor_2.writeUnexpectedFailure('RequestFailed', new Error(response.error.message));
203
- return new Set();
204
- }
205
- var allowedApps = new Set();
206
- response.value.map(function (item) {
207
- allowedApps.add(item.id);
208
- });
209
- monitor_2.writeSuccess();
210
- return allowedApps;
211
- })
212
- .catch(function (error) {
213
- monitor_2.writeUnexpectedFailure(undefined, error);
214
- return new Set();
215
- });
216
- }
217
- // store the promise to avoid multiple requests to the API for the same teamsAppId
218
- uniqueAppIds.forEach(function (teamsAppId) {
219
- _this._appComponentsPermissionsPromises.set(teamsAppId, requestPermissionsPromise);
220
- });
221
- return requestPermissionsPromise;
222
- };
223
- TeamsAppsClient.prototype._requestAppsPermissionsBatched = function (appIds) {
224
- var monitor = new _QosMonitor('TeamsAppsClient.RequestAppsPermissionsBatched');
225
- var allowedApps = new Set();
226
- //
227
- // MS Graph batch body is like that:
228
- // {
229
- // "requests": [
230
- // {
231
- // "id": "1",
232
- // "method": "GET",
233
- // "url": "our-permissions-url"
234
- // },
235
- // {
236
- // etc.
237
- // }
238
- // ]
239
- // }
240
- // We need to split the list of app ids to have no more than 10 requests per batch and no more than 30 ids per request
241
- //
242
- // we can have MAX_IDS_WITHOUT_BATCHING per one request in batch. And up to MAX_REQUESTS_PER_BATCH requests in batch.
243
- var maxIdsPerBatch = MAX_IDS_WITHOUT_BATCHING * MAX_REQUESTS_PER_BATCH;
244
- var batchesCount = Math.ceil(appIds.length / maxIdsPerBatch);
245
- var batchIndex = 0;
246
- var batchRequests = [];
247
- try {
248
- while (batchIndex < batchesCount) {
249
- var batchBody = {
250
- requests: []
251
- };
252
- var batchStartIndex = batchIndex * maxIdsPerBatch;
253
- var batchEndIndex = Math.min(batchStartIndex + maxIdsPerBatch, appIds.length);
254
- var batchIdStartIndex = batchStartIndex;
255
- while (batchIdStartIndex < batchEndIndex) {
256
- var batchIdEndIndex = batchIdStartIndex + MAX_IDS_WITHOUT_BATCHING;
257
- var batchIds = appIds.slice(batchIdStartIndex, batchIdEndIndex);
258
- batchBody.requests.push({
259
- id: batchIdStartIndex.toString(),
260
- method: 'GET',
261
- url: this._getCheckPermissionsUrl(batchIds)
262
- });
263
- batchIdStartIndex = batchIdEndIndex;
264
- }
265
- batchRequests.push(batchBody);
266
- batchIndex++;
267
- }
268
- }
269
- catch (error) {
270
- monitor.writeUnexpectedFailure('BatchSplitLogicError', error);
271
- // Early return to avoid the request
272
- return Promise.resolve(allowedApps);
273
- }
274
- var errors = [];
275
- return this._msGraphClient
276
- .then(function (client) {
277
- var batchPromises = batchRequests.map(function (batchBody) {
278
- return client
279
- .api('$batch')
280
- .version(MS_GRAPH_API_VERSION)
281
- .post(batchBody)
282
- .then(function (response) {
283
- response.responses.forEach(function (responseItem) {
284
- if (responseItem.status !== 200) {
285
- errors.push(new Error(responseItem.body.error.message));
286
- return;
287
- }
288
- responseItem.body.value.map(function (app) {
289
- allowedApps.add(app.id);
290
- });
291
- });
292
- })
293
- .catch(function (error) {
294
- errors.push(error);
295
- });
296
- });
297
- return Promise.all(batchPromises);
298
- })
299
- .then(function () {
300
- // some batches failed
301
- if (errors.length) {
302
- monitor.writeUnexpectedFailure('SomeBatchRequestsError', undefined, {
303
- errors: errors
304
- });
305
- }
306
- return allowedApps;
307
- })
308
- .catch(function (error) {
309
- // all batches failed
310
- monitor.writeUnexpectedFailure('BatchRequestError', error);
311
- return new Set();
312
- });
313
- };
314
- TeamsAppsClient.prototype._getCheckPermissionsUrl = function (appIds) {
315
- return "".concat(MS_GRAPH_TEAMS_APPS_ENDPOINT, "?").concat(MS_GRAPH_CHECK_PERMISSIONS_QSP.replace('{appIds}', appIds.join("','")));
316
- };
317
- Object.defineProperty(TeamsAppsClient.prototype, "_msGraphClient", {
318
- get: function () {
319
- if (!this._msGraphClientFactory) {
320
- this._msGraphClientFactory = this._serviceScope.consume(MSGraphClientFactory.serviceKey);
321
- }
322
- if (!this._msGraphClientDeferred) {
323
- this._msGraphClientDeferred = this._msGraphClientFactory.getClientInternal('3');
324
- }
325
- return this._msGraphClientDeferred;
326
- },
327
- enumerable: false,
328
- configurable: true
329
- });
330
- TeamsAppsClient.prototype._teamsAppCatalogItemToAceManifests = function (item) {
331
- var _this = this;
332
- var _a;
333
- //
334
- // collect components that use Teams App icon instead of having its own
335
- // if there are such components, we will need to fetch the app icon
336
- //
337
- var iconPromise;
338
- var colorIconWebUrl = (_a = item.appDefinitions[0].colorIcon) === null || _a === void 0 ? void 0 : _a.webUrl;
339
- var manifestsWithoutIcon = [];
340
- var dashboardCards = item.appDefinitions[0].dashboardCards || [];
341
- var manifests = [];
342
- dashboardCards.forEach(function (dashboardCard) {
343
- var _a, _b;
344
- var component = {
345
- appId: item.id,
346
- externalAppId: item.externalId || undefined,
347
- componentId: dashboardCard.id,
348
- groupId: ADVANCED_TOOLBOX_GROUP_ID, // Advanced group. If we decide to use the id from the app definition - we should use dashboardCard.pickerGroupId
349
- iconUrl: (_a = dashboardCard.icon) === null || _a === void 0 ? void 0 : _a.iconUrl,
350
- officeUIFabricIconName: (_b = dashboardCard.icon) === null || _b === void 0 ? void 0 : _b.officeUIFabricIconName,
351
- description: dashboardCard.description,
352
- name: dashboardCard.displayName,
353
- botId: dashboardCard.contentSource.botConfiguration.botId,
354
- appName: item.displayName,
355
- appDescription: item.appDefinitions[0].description,
356
- version: item.appDefinitions[0].version,
357
- // size is lower case in the manifest
358
- defaultSize: "".concat(dashboardCard.defaultSize.charAt(0).toUpperCase()).concat(dashboardCard.defaultSize.slice(1))
359
- };
360
- var manifest = _this._teamsAppComponentToAceManifest(component);
361
- manifests.push(manifest);
362
- if (!component.iconUrl && !component.officeUIFabricIconName) {
363
- manifestsWithoutIcon.push(manifest);
364
- if (!iconPromise && colorIconWebUrl)
365
- iconPromise = _this._msGraphClient.then(function (client) {
366
- return client
367
- .api(colorIconWebUrl)
368
- .responseType('blob')
369
- .get();
370
- });
371
- }
372
- });
373
- var resultPromise = Promise.resolve(manifests);
374
- if (manifestsWithoutIcon.length && iconPromise) {
375
- resultPromise = iconPromise
376
- .then(function (response) {
377
- return _this._convertBlobToBase64(response);
378
- })
379
- .then(function (iconUrl) {
380
- manifestsWithoutIcon.forEach(function (manifest) {
381
- manifest.preconfiguredEntries[0].iconImageUrl = iconUrl;
382
- manifest.properties.teamsAppComponent.iconUrl = iconUrl;
383
- });
384
- return manifests;
385
- });
386
- }
387
- return resultPromise;
388
- };
389
- TeamsAppsClient.prototype._convertBlobToBase64 = function (blob) {
390
- return new Promise(function (resolve, reject) {
391
- var reader = new FileReader();
392
- reader.onerror = reject;
393
- reader.onload = function () {
394
- var base64String = reader.result;
395
- if (!base64String) {
396
- reject('');
397
- }
398
- resolve(base64String.substr(base64String.indexOf(', ') + 1));
399
- };
400
- reader.readAsDataURL(blob);
401
- });
402
- };
403
- TeamsAppsClient.prototype._teamsAppComponentToAceManifest = function (component) {
404
- return {
405
- id: component.componentId,
406
- manifestVersion: MANIFEST_VERSION,
407
- version: component.version,
408
- componentType: 'AdaptiveCardExtension',
409
- alias: component.componentId,
410
- properties: {
411
- teamsAppComponent: component
412
- },
413
- loaderConfig: {
414
- entryModuleId: component.componentId,
415
- internalModuleBaseUrls: ['HTTPS://CLIENTSIDEASSETSLIBRARY/'],
416
- scriptResources: {}
417
- },
418
- preconfiguredEntries: [
419
- {
420
- cardSize: component.defaultSize,
421
- title: {
422
- default: component.name
423
- },
424
- description: {
425
- default: component.description
426
- },
427
- iconImageUrl: component.iconUrl,
428
- officeFabricIconFontName: component.officeUIFabricIconName,
429
- groupId: component.groupId,
430
- properties: {}
431
- }
432
- ],
433
- connectedTeamsAppId: component.appId,
434
- isPendingTeamsAppSync: true
435
- };
436
- };
437
- return TeamsAppsClient;
438
- }());
439
- export { TeamsAppsClient };
440
- //# sourceMappingURL=TeamsAppsClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MockComponent.d.ts","sourceRoot":"","sources":["../../src/test-api/MockComponent.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG/D,qBAAa,aAAc,SAAQ,aAAa;IACvC,gBAAgB,EAAE,qBAAqB,CAgB5C;gBAEiB,SAAS,EAAE,YAAY;CAI3C"}