@microsoft/generator-sharepoint 1.20.0 → 1.21.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 (91) hide show
  1. package/lib/common/BaseGenerator.js +161 -121
  2. package/lib/common/ConfigJsonManager.js +45 -29
  3. package/lib/common/JsonManager.js +70 -29
  4. package/lib/common/PackageJsonManager.js +28 -8
  5. package/lib/common/PackageSolutionJsonManager.js +41 -23
  6. package/lib/common/ServeJsonManager.js +69 -31
  7. package/lib/common/TeamsManifestJsonManager.js +33 -21
  8. package/lib/common/YeomanConfiguration.js +25 -8
  9. package/lib/common/bundles-versions.json +1 -4
  10. package/lib/common/dependencies.json +62 -100
  11. package/lib/common/spsay.js +32 -19
  12. package/lib/common/utilities.js +97 -63
  13. package/lib/generators/adaptiveCardExtension/BaseAdaptiveCardExtensionGenerator.js +86 -41
  14. package/lib/generators/adaptiveCardExtension/index.js +103 -62
  15. package/lib/generators/app/index.js +138 -117
  16. package/lib/generators/applicationCustomizer/index.js +89 -45
  17. package/lib/generators/commandSet/index.js +89 -45
  18. package/lib/generators/component/BaseComponentGenerator.js +130 -77
  19. package/lib/generators/component/index.js +108 -69
  20. package/lib/generators/dataVisualizationAdaptiveCardExtension/index.js +72 -43
  21. package/lib/generators/extension/BaseExtensionGenerator.js +95 -49
  22. package/lib/generators/extension/index.js +104 -64
  23. package/lib/generators/fieldCustomizer/index.js +97 -50
  24. package/lib/generators/formCustomizer/index.js +99 -52
  25. package/lib/generators/formCustomizer/templates/none/{componentClassName}.ts +6 -2
  26. package/lib/generators/genericAdaptiveCardExtension/index.js +80 -46
  27. package/lib/generators/library/index.js +89 -43
  28. package/lib/generators/searchAdaptiveCardExtension/index.js +72 -43
  29. package/lib/generators/searchQueryModifier/index.js +89 -45
  30. package/lib/generators/solution/heft.package.json +1 -1
  31. package/lib/generators/solution/index.js +110 -80
  32. package/lib/generators/solution/non-heft.package.json +1 -1
  33. package/lib/generators/webpart/index.js +99 -50
  34. package/lib/generators/webpart/initial.teamsManifest.json +2 -4
  35. package/package.json +38 -12
  36. package/lib/common/BaseGenerator.d.ts +0 -59
  37. package/lib/common/BaseGenerator.d.ts.map +0 -1
  38. package/lib/common/ConfigJsonManager.d.ts +0 -16
  39. package/lib/common/ConfigJsonManager.d.ts.map +0 -1
  40. package/lib/common/JsonManager.d.ts +0 -12
  41. package/lib/common/JsonManager.d.ts.map +0 -1
  42. package/lib/common/PackageJsonManager.d.ts +0 -18
  43. package/lib/common/PackageJsonManager.d.ts.map +0 -1
  44. package/lib/common/PackageSolutionJsonManager.d.ts +0 -20
  45. package/lib/common/PackageSolutionJsonManager.d.ts.map +0 -1
  46. package/lib/common/ServeJsonManager.d.ts +0 -12
  47. package/lib/common/ServeJsonManager.d.ts.map +0 -1
  48. package/lib/common/TeamsManifestJsonManager.d.ts +0 -51
  49. package/lib/common/TeamsManifestJsonManager.d.ts.map +0 -1
  50. package/lib/common/YeomanConfiguration.d.ts +0 -25
  51. package/lib/common/YeomanConfiguration.d.ts.map +0 -1
  52. package/lib/common/spsay.d.ts +0 -2
  53. package/lib/common/spsay.d.ts.map +0 -1
  54. package/lib/common/utilities.d.ts +0 -9
  55. package/lib/common/utilities.d.ts.map +0 -1
  56. package/lib/generators/adaptiveCardExtension/BaseAdaptiveCardExtensionGenerator.d.ts +0 -18
  57. package/lib/generators/adaptiveCardExtension/BaseAdaptiveCardExtensionGenerator.d.ts.map +0 -1
  58. package/lib/generators/adaptiveCardExtension/index.d.ts +0 -23
  59. package/lib/generators/adaptiveCardExtension/index.d.ts.map +0 -1
  60. package/lib/generators/app/index.d.ts +0 -10
  61. package/lib/generators/app/index.d.ts.map +0 -1
  62. package/lib/generators/applicationCustomizer/index.d.ts +0 -24
  63. package/lib/generators/applicationCustomizer/index.d.ts.map +0 -1
  64. package/lib/generators/commandSet/index.d.ts +0 -23
  65. package/lib/generators/commandSet/index.d.ts.map +0 -1
  66. package/lib/generators/component/BaseComponentGenerator.d.ts +0 -56
  67. package/lib/generators/component/BaseComponentGenerator.d.ts.map +0 -1
  68. package/lib/generators/component/index.d.ts +0 -23
  69. package/lib/generators/component/index.d.ts.map +0 -1
  70. package/lib/generators/dataVisualizationAdaptiveCardExtension/index.d.ts +0 -19
  71. package/lib/generators/dataVisualizationAdaptiveCardExtension/index.d.ts.map +0 -1
  72. package/lib/generators/extension/BaseExtensionGenerator.d.ts +0 -19
  73. package/lib/generators/extension/BaseExtensionGenerator.d.ts.map +0 -1
  74. package/lib/generators/extension/index.d.ts +0 -26
  75. package/lib/generators/extension/index.d.ts.map +0 -1
  76. package/lib/generators/fieldCustomizer/index.d.ts +0 -24
  77. package/lib/generators/fieldCustomizer/index.d.ts.map +0 -1
  78. package/lib/generators/formCustomizer/index.d.ts +0 -24
  79. package/lib/generators/formCustomizer/index.d.ts.map +0 -1
  80. package/lib/generators/genericAdaptiveCardExtension/index.d.ts +0 -21
  81. package/lib/generators/genericAdaptiveCardExtension/index.d.ts.map +0 -1
  82. package/lib/generators/library/index.d.ts +0 -23
  83. package/lib/generators/library/index.d.ts.map +0 -1
  84. package/lib/generators/searchAdaptiveCardExtension/index.d.ts +0 -19
  85. package/lib/generators/searchAdaptiveCardExtension/index.d.ts.map +0 -1
  86. package/lib/generators/searchQueryModifier/index.d.ts +0 -23
  87. package/lib/generators/searchQueryModifier/index.d.ts.map +0 -1
  88. package/lib/generators/solution/index.d.ts +0 -19
  89. package/lib/generators/solution/index.d.ts.map +0 -1
  90. package/lib/generators/webpart/index.d.ts +0 -23
  91. package/lib/generators/webpart/index.d.ts.map +0 -1
@@ -1,8 +1,28 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PackageJsonManager = void 0;
4
- const JsonManager_1 = require("./JsonManager");
5
- class PackageJsonManager extends JsonManager_1.JsonManager {
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "PackageJsonManager", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return PackageJsonManager;
9
+ }
10
+ });
11
+ const _JsonManager = require("./JsonManager");
12
+ function _define_property(obj, key, value) {
13
+ if (key in obj) {
14
+ Object.defineProperty(obj, key, {
15
+ value: value,
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true
19
+ });
20
+ } else {
21
+ obj[key] = value;
22
+ }
23
+ return obj;
24
+ }
25
+ class PackageJsonManager extends _JsonManager.JsonManager {
6
26
  static load(filepath, fs) {
7
27
  if (this._instance) {
8
28
  throw new Error(`Cannot create a second instance of PackageJsonManager`);
@@ -10,8 +30,7 @@ class PackageJsonManager extends JsonManager_1.JsonManager {
10
30
  let data;
11
31
  try {
12
32
  data = fs.readJSON(filepath);
13
- }
14
- catch (error) {
33
+ } catch (error) {
15
34
  data = undefined;
16
35
  }
17
36
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -45,5 +64,6 @@ class PackageJsonManager extends JsonManager_1.JsonManager {
45
64
  PackageJsonManager.instance.data.resolutions[dependency] = resolution;
46
65
  }
47
66
  }
48
- exports.PackageJsonManager = PackageJsonManager;
49
- //# sourceMappingURL=PackageJsonManager.js.map
67
+ _define_property(PackageJsonManager, "_instance", void 0);
68
+
69
+ //#sourceMappingUrl=./PackageJsonManager.js.map
@@ -1,9 +1,29 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PackageSolutionJsonManager = void 0;
4
- const YeomanConfiguration_1 = require("./YeomanConfiguration");
5
- const JsonManager_1 = require("./JsonManager");
6
- class PackageSolutionJsonManager extends JsonManager_1.JsonManager {
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "PackageSolutionJsonManager", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return PackageSolutionJsonManager;
9
+ }
10
+ });
11
+ const _YeomanConfiguration = require("./YeomanConfiguration");
12
+ const _JsonManager = require("./JsonManager");
13
+ function _define_property(obj, key, value) {
14
+ if (key in obj) {
15
+ Object.defineProperty(obj, key, {
16
+ value: value,
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true
20
+ });
21
+ } else {
22
+ obj[key] = value;
23
+ }
24
+ return obj;
25
+ }
26
+ class PackageSolutionJsonManager extends _JsonManager.JsonManager {
7
27
  static load(filepath, fs) {
8
28
  if (this._instance) {
9
29
  throw new Error(`Cannot create a second instance of PackageSolutionJsonManager`);
@@ -11,8 +31,7 @@ class PackageSolutionJsonManager extends JsonManager_1.JsonManager {
11
31
  let data;
12
32
  try {
13
33
  data = fs.readJSON(filepath);
14
- }
15
- catch (error) {
34
+ } catch (error) {
16
35
  data = undefined;
17
36
  }
18
37
  if (!data) {
@@ -30,11 +49,9 @@ class PackageSolutionJsonManager extends JsonManager_1.JsonManager {
30
49
  return this._instance;
31
50
  }
32
51
  getSkipFeatureDeployment() {
33
- var _a;
34
52
  try {
35
- return !!((_a = this.data.solution) === null || _a === void 0 ? void 0 : _a.skipFeatureDeployment);
36
- }
37
- catch (error) {
53
+ return !!this.data.solution?.skipFeatureDeployment;
54
+ } catch (error) {
38
55
  return false;
39
56
  }
40
57
  }
@@ -52,13 +69,13 @@ class PackageSolutionJsonManager extends JsonManager_1.JsonManager {
52
69
  if (solutionContext.isDomainIsolated !== undefined) {
53
70
  data.solution.isDomainIsolated = solutionContext.isDomainIsolated;
54
71
  }
55
- if (YeomanConfiguration_1.YeomanConfiguration.environment === 'spo') {
72
+ if (_YeomanConfiguration.YeomanConfiguration.environment === 'spo') {
56
73
  data.solution.developer = {
57
74
  name: '',
58
75
  websiteUrl: '',
59
76
  privacyUrl: '',
60
77
  termsOfUseUrl: '',
61
- mpnId: `Undefined-${YeomanConfiguration_1.YeomanConfiguration.version}`
78
+ mpnId: `Undefined-${_YeomanConfiguration.YeomanConfiguration.version}`
62
79
  };
63
80
  }
64
81
  data.paths = {
@@ -105,9 +122,10 @@ class PackageSolutionJsonManager extends JsonManager_1.JsonManager {
105
122
  }
106
123
  let manifests = feature.assets.elementManifests;
107
124
  if (!manifests) {
108
- manifests = feature.assets.elementManifests = ['elements.xml'];
109
- }
110
- else {
125
+ manifests = feature.assets.elementManifests = [
126
+ 'elements.xml'
127
+ ];
128
+ } else {
111
129
  if (manifests.indexOf('elements.xml') === -1) {
112
130
  manifests.push('elements.xml');
113
131
  }
@@ -122,16 +140,16 @@ class PackageSolutionJsonManager extends JsonManager_1.JsonManager {
122
140
  }
123
141
  }
124
142
  /**
125
- * Returns the existing feature that doesn't have componentIds.
126
- * We can use the same feature to add additional elements
127
- */
128
- _tryGetFeatureToReuse(solution) {
143
+ * Returns the existing feature that doesn't have componentIds.
144
+ * We can use the same feature to add additional elements
145
+ */ _tryGetFeatureToReuse(solution) {
129
146
  if (!solution.features) {
130
147
  return undefined;
131
148
  }
132
- const noComponendIdsFeatures = solution.features.filter((feature) => !feature.componentIds || !feature.componentIds.length);
149
+ const noComponendIdsFeatures = solution.features.filter((feature)=>!feature.componentIds || !feature.componentIds.length);
133
150
  return noComponendIdsFeatures.length ? noComponendIdsFeatures[0] : undefined;
134
151
  }
135
152
  }
136
- exports.PackageSolutionJsonManager = PackageSolutionJsonManager;
137
- //# sourceMappingURL=PackageSolutionJsonManager.js.map
153
+ _define_property(PackageSolutionJsonManager, "_instance", void 0);
154
+
155
+ //#sourceMappingUrl=./PackageSolutionJsonManager.js.map
@@ -1,32 +1,70 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "ServeJsonManager", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return ServeJsonManager;
7
9
  }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
10
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.ServeJsonManager = void 0;
27
- const _ = __importStar(require("lodash"));
28
- const JsonManager_1 = require("./JsonManager");
29
- class ServeJsonManager extends JsonManager_1.JsonManager {
11
+ const _lodash = /*#__PURE__*/ _interop_require_wildcard(require("lodash"));
12
+ const _JsonManager = require("./JsonManager");
13
+ function _define_property(obj, key, value) {
14
+ if (key in obj) {
15
+ Object.defineProperty(obj, key, {
16
+ value: value,
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true
20
+ });
21
+ } else {
22
+ obj[key] = value;
23
+ }
24
+ return obj;
25
+ }
26
+ function _getRequireWildcardCache(nodeInterop) {
27
+ if (typeof WeakMap !== "function") return null;
28
+ var cacheBabelInterop = new WeakMap();
29
+ var cacheNodeInterop = new WeakMap();
30
+ return (_getRequireWildcardCache = function(nodeInterop) {
31
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
32
+ })(nodeInterop);
33
+ }
34
+ function _interop_require_wildcard(obj, nodeInterop) {
35
+ if (!nodeInterop && obj && obj.__esModule) {
36
+ return obj;
37
+ }
38
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
39
+ return {
40
+ default: obj
41
+ };
42
+ }
43
+ var cache = _getRequireWildcardCache(nodeInterop);
44
+ if (cache && cache.has(obj)) {
45
+ return cache.get(obj);
46
+ }
47
+ var newObj = {
48
+ __proto__: null
49
+ };
50
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
51
+ for(var key in obj){
52
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
53
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
54
+ if (desc && (desc.get || desc.set)) {
55
+ Object.defineProperty(newObj, key, desc);
56
+ } else {
57
+ newObj[key] = obj[key];
58
+ }
59
+ }
60
+ }
61
+ newObj.default = obj;
62
+ if (cache) {
63
+ cache.set(obj, newObj);
64
+ }
65
+ return newObj;
66
+ }
67
+ class ServeJsonManager extends _JsonManager.JsonManager {
30
68
  static load(filepath, fs) {
31
69
  if (this._instance) {
32
70
  throw new Error(`Cannot create a second instance of ServeJsonManager`);
@@ -34,8 +72,7 @@ class ServeJsonManager extends JsonManager_1.JsonManager {
34
72
  let data;
35
73
  try {
36
74
  data = fs.readJSON(filepath);
37
- }
38
- catch (error) {
75
+ } catch (error) {
39
76
  // Bootstrap the serve.json file with the basic information
40
77
  data = undefined;
41
78
  }
@@ -65,11 +102,12 @@ class ServeJsonManager extends JsonManager_1.JsonManager {
65
102
  this.data.serveConfigurations[name] = configuration;
66
103
  }
67
104
  setUpForWebParts() {
68
- _.merge(this.data, {
105
+ _lodash.merge(this.data, {
69
106
  initialPage: 'https://{tenantDomain}/_layouts/workbench.aspx',
70
107
  https: true
71
108
  });
72
109
  }
73
110
  }
74
- exports.ServeJsonManager = ServeJsonManager;
75
- //# sourceMappingURL=ServeJsonManager.js.map
111
+ _define_property(ServeJsonManager, "_instance", void 0);
112
+
113
+ //#sourceMappingUrl=./ServeJsonManager.js.map
@@ -1,8 +1,28 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TeamsManifestJsonManager = void 0;
4
- const JsonManager_1 = require("./JsonManager");
5
- class TeamsManifestJsonManager extends JsonManager_1.JsonManager {
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "TeamsManifestJsonManager", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return TeamsManifestJsonManager;
9
+ }
10
+ });
11
+ const _JsonManager = require("./JsonManager");
12
+ function _define_property(obj, key, value) {
13
+ if (key in obj) {
14
+ Object.defineProperty(obj, key, {
15
+ value: value,
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true
19
+ });
20
+ } else {
21
+ obj[key] = value;
22
+ }
23
+ return obj;
24
+ }
25
+ class TeamsManifestJsonManager extends _JsonManager.JsonManager {
6
26
  static load(filepath, fs) {
7
27
  if (this._instance) {
8
28
  throw new Error(`Cannot create a second instance of TeamsManifestJsonManager`);
@@ -10,8 +30,7 @@ class TeamsManifestJsonManager extends JsonManager_1.JsonManager {
10
30
  let data;
11
31
  try {
12
32
  data = fs.readJSON(filepath);
13
- }
14
- catch (error) {
33
+ } catch (error) {
15
34
  data = undefined;
16
35
  }
17
36
  if (!data) {
@@ -35,20 +54,13 @@ class TeamsManifestJsonManager extends JsonManager_1.JsonManager {
35
54
  data.description.short = teamsManifestData.componentDescription;
36
55
  data.description.full = teamsManifestData.componentDescription;
37
56
  /*
38
- * 'dest' query parameter must be encoded to avoid being processed
39
- * as separate query parameters by the server.
40
- * %3F = ?
41
- * %26 = &
42
- */
43
- data.configurableTabs[0].configurationUrl =
44
- 'https://{teamSiteDomain}{teamSitePath}/_layouts/15/TeamsLogon.aspx' +
45
- '?SPFX=true' +
46
- '&dest={teamSitePath}/_layouts/15/teamshostedapp.aspx' +
47
- '%3FopenPropertyPane=true' +
48
- '%26teams' +
49
- `%26componentId=${teamsManifestData.componentId}` +
50
- '%26forceLocale={locale}';
57
+ * 'dest' query parameter must be encoded to avoid being processed
58
+ * as separate query parameters by the server.
59
+ * %3F = ?
60
+ * %26 = &
61
+ */ data.configurableTabs[0].configurationUrl = 'https://{teamSiteDomain}{teamSitePath}/_layouts/15/TeamsLogon.aspx' + '?SPFX=true' + '&dest={teamSitePath}/_layouts/15/teamshostedapp.aspx' + '%3FopenPropertyPane=true' + '%26teams' + `%26componentId=${teamsManifestData.componentId}` + '%26forceLocale={locale}';
51
62
  }
52
63
  }
53
- exports.TeamsManifestJsonManager = TeamsManifestJsonManager;
54
- //# sourceMappingURL=TeamsManifestJsonManager.js.map
64
+ _define_property(TeamsManifestJsonManager, "_instance", void 0);
65
+
66
+ //#sourceMappingUrl=./TeamsManifestJsonManager.js.map
@@ -1,6 +1,26 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.YeomanConfiguration = void 0;
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "YeomanConfiguration", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return YeomanConfiguration;
9
+ }
10
+ });
11
+ function _define_property(obj, key, value) {
12
+ if (key in obj) {
13
+ Object.defineProperty(obj, key, {
14
+ value: value,
15
+ enumerable: true,
16
+ configurable: true,
17
+ writable: true
18
+ });
19
+ } else {
20
+ obj[key] = value;
21
+ }
22
+ return obj;
23
+ }
4
24
  // eslint-disable-next-line @typescript-eslint/typedef
5
25
  const _strings = {
6
26
  libraryName: 'libraryName',
@@ -11,10 +31,6 @@ const _strings = {
11
31
  packageManager: 'packageManager',
12
32
  useHeft: 'useHeft'
13
33
  };
14
- /**
15
- * This class wraps an untyped property bag with types for
16
- * the generator.
17
- */
18
34
  class YeomanConfiguration {
19
35
  static setStore(yeomanConfiguration) {
20
36
  YeomanConfiguration._store = yeomanConfiguration;
@@ -56,5 +72,6 @@ class YeomanConfiguration {
56
72
  YeomanConfiguration._store.set(_strings.useHeft, value);
57
73
  }
58
74
  }
59
- exports.YeomanConfiguration = YeomanConfiguration;
60
- //# sourceMappingURL=YeomanConfiguration.js.map
75
+ _define_property(YeomanConfiguration, "_store", void 0);
76
+
77
+ //#sourceMappingUrl=./YeomanConfiguration.js.map
@@ -1,4 +1 @@
1
- {
2
- "@microsoft/microsoft-graph-client": "3.0.2",
3
- "@microsoft/teams-js": "2.24.0"
4
- }
1
+ {}