@pnp/cli-microsoft365 12.0.0-beta.e4f7675 → 12.0.0-beta.feb621e

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 (188) hide show
  1. package/.devproxy/generate-openapi-spec.json +1 -1
  2. package/allCommands.json +1 -1
  3. package/allCommandsFull.json +1 -1
  4. package/dist/Auth.js +2 -6
  5. package/dist/auth/FileTokenStorage.js +0 -3
  6. package/dist/auth/msalCachePlugin.js +201 -12
  7. package/dist/googleAnalytics.js +96 -0
  8. package/dist/m365/commands/logout.js +2 -4
  9. package/dist/m365/entra/commands/m365group/m365group-remove.js +4 -3
  10. package/dist/m365/spe/commands/container/container-remove.js +6 -7
  11. package/dist/m365/spfx/commands/SpfxCompatibilityMatrix.js +15 -0
  12. package/dist/m365/spfx/commands/project/project-doctor/doctor-1.24.0-rc.0.js +19 -0
  13. package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
  14. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN012021_TSC_excludeDirectories.js +43 -0
  15. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN027002_OVERRIDES_qs.js +33 -0
  16. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN027003_OVERRIDES_uuid.js +33 -0
  17. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.24.0-rc.0.js +77 -0
  18. package/dist/m365/spfx/commands/project/project-upgrade.js +12 -11
  19. package/dist/m365/spo/commands/app/app-add.js +35 -56
  20. package/dist/m365/spo/commands/app/app-deploy.js +41 -59
  21. package/dist/m365/spo/commands/app/app-get.js +40 -56
  22. package/dist/m365/spo/commands/app/app-install.js +20 -41
  23. package/dist/m365/spo/commands/app/app-instance-list.js +12 -24
  24. package/dist/m365/spo/commands/app/app-list.js +26 -44
  25. package/dist/m365/spo/commands/app/app-remove.js +32 -52
  26. package/dist/m365/spo/commands/app/app-retract.js +32 -51
  27. package/dist/m365/spo/commands/app/app-teamspackage-download.js +35 -54
  28. package/dist/m365/spo/commands/app/app-uninstall.js +21 -44
  29. package/dist/m365/spo/commands/app/app-upgrade.js +20 -41
  30. package/dist/m365/spo/commands/feature/feature-disable.js +20 -50
  31. package/dist/m365/spo/commands/feature/feature-enable.js +22 -50
  32. package/dist/m365/spo/commands/feature/feature-list.js +11 -36
  33. package/dist/m365/spo/commands/field/field-add.js +33 -62
  34. package/dist/m365/spo/commands/field/field-get.js +30 -57
  35. package/dist/m365/spo/commands/field/field-list.js +21 -46
  36. package/dist/m365/spo/commands/field/field-remove.js +32 -63
  37. package/dist/m365/spo/commands/field/field-set.js +34 -66
  38. package/dist/m365/spo/commands/file/file-archive.js +1 -1
  39. package/dist/m365/spo/commands/file/file-get.js +4 -3
  40. package/dist/m365/spo/commands/file/file-remove.js +5 -5
  41. package/dist/m365/spo/commands/file/file-unarchive.js +1 -1
  42. package/dist/m365/spo/commands/folder/folder-archive.js +1 -1
  43. package/dist/m365/spo/commands/folder/folder-remove.js +5 -5
  44. package/dist/m365/spo/commands/folder/folder-unarchive.js +90 -0
  45. package/dist/m365/spo/commands/hidedefaultthemes/hidedefaultthemes-get.js +5 -0
  46. package/dist/m365/spo/commands/hidedefaultthemes/hidedefaultthemes-set.js +8 -26
  47. package/dist/m365/spo/commands/homesite/homesite-list.js +5 -0
  48. package/dist/m365/spo/commands/hubsite/hubsite-connect.js +38 -63
  49. package/dist/m365/spo/commands/hubsite/hubsite-data-get.js +11 -27
  50. package/dist/m365/spo/commands/hubsite/hubsite-disconnect.js +25 -47
  51. package/dist/m365/spo/commands/hubsite/hubsite-get.js +25 -37
  52. package/dist/m365/spo/commands/hubsite/hubsite-list.js +12 -24
  53. package/dist/m365/spo/commands/hubsite/hubsite-register.js +10 -18
  54. package/dist/m365/spo/commands/hubsite/hubsite-rights-grant.js +14 -32
  55. package/dist/m365/spo/commands/hubsite/hubsite-rights-revoke.js +12 -29
  56. package/dist/m365/spo/commands/hubsite/hubsite-set.js +19 -46
  57. package/dist/m365/spo/commands/hubsite/hubsite-unregister.js +11 -27
  58. package/dist/m365/spo/commands/list/list-remove.js +4 -4
  59. package/dist/m365/spo/commands/listitem/listitem-batch-remove.js +5 -4
  60. package/dist/m365/spo/commands/listitem/listitem-get.js +1 -12
  61. package/dist/m365/spo/commands/listitem/listitem-remove.js +8 -5
  62. package/dist/m365/spo/commands/navigation/navigation-node-list.js +6 -4
  63. package/dist/m365/spo/commands/page/page-remove.js +7 -7
  64. package/dist/m365/spo/commands/site/site-remove.js +7 -7
  65. package/dist/m365/spo/commands/spo-get.js +5 -0
  66. package/dist/m365/spo/commands/spo-set.js +10 -21
  67. package/dist/m365/spo/commands/tenant/tenant-appcatalog-add.js +1 -1
  68. package/dist/m365/spo/commands/user/user-ensure.js +24 -60
  69. package/dist/m365/spo/commands/user/user-get.js +25 -65
  70. package/dist/m365/spo/commands/user/user-list.js +10 -18
  71. package/dist/m365/spo/commands/user/user-remove.js +26 -68
  72. package/dist/m365/spo/commands/userprofile/userprofile-get.js +10 -23
  73. package/dist/m365/spo/commands/userprofile/userprofile-set.js +10 -19
  74. package/dist/m365/spo/commands/web/web-add.js +20 -55
  75. package/dist/m365/spo/commands/web/web-clientsidewebpart-list.js +10 -18
  76. package/dist/m365/spo/commands/web/web-get.js +12 -30
  77. package/dist/m365/spo/commands/web/web-installedlanguage-list.js +10 -18
  78. package/dist/m365/spo/commands/web/web-list.js +10 -18
  79. package/dist/m365/spo/commands/web/web-reindex.js +10 -18
  80. package/dist/m365/spo/commands/web/web-remove.js +11 -27
  81. package/dist/m365/spo/commands/web/web-retentionlabel-list.js +10 -18
  82. package/dist/m365/spo/commands/web/web-roleassignment-add.js +40 -64
  83. package/dist/m365/spo/commands/web/web-roleassignment-remove.js +31 -58
  84. package/dist/m365/spo/commands/web/web-roleinheritance-break.js +12 -36
  85. package/dist/m365/spo/commands/web/web-roleinheritance-reset.js +11 -29
  86. package/dist/m365/spo/commands/web/web-rule-get.js +47 -0
  87. package/dist/m365/spo/commands/web/web-rule-list.js +6 -4
  88. package/dist/m365/spo/commands/web/web-rule-remove.js +0 -3
  89. package/dist/m365/spo/commands/web/web-set.js +26 -96
  90. package/dist/m365/spo/commands.js +3 -3
  91. package/dist/m365/teams/commands/channel/channel-add.js +46 -57
  92. package/dist/m365/teams/commands/channel/channel-get.js +41 -48
  93. package/dist/m365/teams/commands/channel/channel-list.js +28 -42
  94. package/dist/m365/teams/commands/channel/channel-member-add.js +53 -54
  95. package/dist/m365/teams/commands/channel/channel-member-list.js +47 -55
  96. package/dist/m365/teams/commands/channel/channel-member-remove.js +62 -62
  97. package/dist/m365/teams/commands/channel/channel-member-set.js +61 -65
  98. package/dist/m365/teams/commands/channel/channel-remove.js +47 -49
  99. package/dist/m365/teams/commands/channel/channel-set.js +47 -54
  100. package/dist/m365/teams/commands/chat/chat-get.js +30 -45
  101. package/dist/m365/teams/commands/chat/chat-list.js +22 -42
  102. package/dist/m365/teams/commands/chat/chat-member-add.js +43 -64
  103. package/dist/m365/teams/commands/chat/chat-member-list.js +10 -23
  104. package/dist/m365/teams/commands/chat/chat-member-remove.js +28 -50
  105. package/dist/m365/teams/commands/chat/chat-message-send.js +32 -55
  106. package/dist/m365/util/commands/accesstoken/accesstoken-get.js +10 -28
  107. package/dist/telemetry.js +7 -11
  108. package/dist/utils/spo.js +1 -3
  109. package/dist/utils/urlUtil.js +2 -2
  110. package/docs/docs/cmd/entra/m365group/m365group-remove.mdx +4 -4
  111. package/docs/docs/cmd/spe/container/container-remove.mdx +5 -5
  112. package/docs/docs/cmd/spo/file/file-archive.mdx +9 -1
  113. package/docs/docs/cmd/spo/file/file-checkin.mdx +2 -2
  114. package/docs/docs/cmd/spo/file/file-checkout-undo.mdx +1 -1
  115. package/docs/docs/cmd/spo/file/file-checkout.mdx +2 -2
  116. package/docs/docs/cmd/spo/file/file-copy.mdx +2 -2
  117. package/docs/docs/cmd/spo/file/file-get.mdx +6 -6
  118. package/docs/docs/cmd/spo/file/file-remove.mdx +4 -4
  119. package/docs/docs/cmd/spo/file/file-retentionlabel-ensure.mdx +1 -1
  120. package/docs/docs/cmd/spo/file/file-retentionlabel-remove.mdx +1 -1
  121. package/docs/docs/cmd/spo/file/file-roleassignment-add.mdx +1 -1
  122. package/docs/docs/cmd/spo/file/file-roleassignment-remove.mdx +1 -1
  123. package/docs/docs/cmd/spo/file/file-roleinheritance-break.mdx +3 -3
  124. package/docs/docs/cmd/spo/file/file-roleinheritance-reset.mdx +2 -2
  125. package/docs/docs/cmd/spo/file/file-sharinginfo-get.mdx +2 -2
  126. package/docs/docs/cmd/spo/file/file-sharinglink-add.mdx +22 -1
  127. package/docs/docs/cmd/spo/file/file-sharinglink-clear.mdx +24 -1
  128. package/docs/docs/cmd/spo/file/file-sharinglink-get.mdx +22 -1
  129. package/docs/docs/cmd/spo/file/file-sharinglink-list.mdx +22 -1
  130. package/docs/docs/cmd/spo/file/file-sharinglink-remove.mdx +24 -1
  131. package/docs/docs/cmd/spo/file/file-sharinglink-set.mdx +22 -1
  132. package/docs/docs/cmd/spo/file/file-unarchive.mdx +9 -1
  133. package/docs/docs/cmd/spo/file/file-version-clear.mdx +1 -1
  134. package/docs/docs/cmd/spo/file/file-version-get.mdx +1 -1
  135. package/docs/docs/cmd/spo/file/file-version-keep.mdx +1 -1
  136. package/docs/docs/cmd/spo/file/file-version-list.mdx +1 -1
  137. package/docs/docs/cmd/spo/file/file-version-remove.mdx +1 -1
  138. package/docs/docs/cmd/spo/file/file-version-restore.mdx +1 -1
  139. package/docs/docs/cmd/spo/folder/folder-archive.mdx +7 -1
  140. package/docs/docs/cmd/spo/folder/folder-copy.mdx +1 -1
  141. package/docs/docs/cmd/spo/folder/folder-get.mdx +2 -2
  142. package/docs/docs/cmd/spo/folder/folder-remove.mdx +4 -4
  143. package/docs/docs/cmd/spo/folder/folder-retentionlabel-ensure.mdx +1 -1
  144. package/docs/docs/cmd/spo/folder/folder-retentionlabel-remove.mdx +1 -1
  145. package/docs/docs/cmd/spo/folder/folder-sharinglink-add.mdx +22 -1
  146. package/docs/docs/cmd/spo/folder/folder-sharinglink-clear.mdx +23 -0
  147. package/docs/docs/cmd/spo/folder/folder-sharinglink-get.mdx +21 -0
  148. package/docs/docs/cmd/spo/folder/folder-sharinglink-list.mdx +22 -1
  149. package/docs/docs/cmd/spo/folder/folder-sharinglink-remove.mdx +24 -1
  150. package/docs/docs/cmd/spo/folder/folder-sharinglink-set.mdx +21 -0
  151. package/docs/docs/cmd/spo/folder/folder-unarchive.mdx +76 -0
  152. package/docs/docs/cmd/spo/list/list-remove.mdx +4 -4
  153. package/docs/docs/cmd/spo/listitem/listitem-batch-remove.mdx +8 -2
  154. package/docs/docs/cmd/spo/listitem/listitem-get.mdx +0 -6
  155. package/docs/docs/cmd/spo/listitem/listitem-remove.mdx +8 -2
  156. package/docs/docs/cmd/spo/navigation/navigation-node-list.mdx +37 -27
  157. package/docs/docs/cmd/spo/page/page-remove.mdx +4 -4
  158. package/docs/docs/cmd/spo/site/site-apppermission-add.mdx +52 -21
  159. package/docs/docs/cmd/spo/site/site-remove.mdx +3 -3
  160. package/docs/docs/cmd/spo/web/web-rule-get.mdx +108 -0
  161. package/docs/docs/cmd/spo/web/web-rule-list.mdx +8 -12
  162. package/docs/docs/cmd/spo/web/web-rule-remove.mdx +0 -6
  163. package/docs/docs/cmd/spp/model/model-get.mdx +1 -1
  164. package/docs/docs/cmd/spp/model/model-remove.mdx +1 -1
  165. package/docs/docs/cmd/teams/app/app-install.mdx +21 -0
  166. package/docs/docs/cmd/teams/app/app-list.mdx +19 -0
  167. package/docs/docs/cmd/teams/app/app-publish.mdx +17 -0
  168. package/docs/docs/cmd/teams/app/app-remove.mdx +19 -0
  169. package/docs/docs/cmd/teams/app/app-uninstall.mdx +21 -0
  170. package/docs/docs/cmd/teams/app/app-update.mdx +19 -0
  171. package/docs/docs/cmd/tenant/people/people-profilecardproperty-add.mdx +19 -0
  172. package/docs/docs/cmd/tenant/people/people-profilecardproperty-get.mdx +19 -0
  173. package/docs/docs/cmd/tenant/people/people-profilecardproperty-list.mdx +19 -0
  174. package/docs/docs/cmd/tenant/people/people-profilecardproperty-remove.mdx +19 -0
  175. package/docs/docs/cmd/tenant/people/people-profilecardproperty-set.mdx +19 -0
  176. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-health-get.mdx +19 -0
  177. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-health-list.mdx +19 -0
  178. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-healthissue-get.mdx +19 -0
  179. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-healthissue-list.mdx +19 -0
  180. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-message-get.mdx +19 -0
  181. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-message-list.mdx +19 -0
  182. package/docs/docs/cmd/viva/engage/engage-message-add.mdx +17 -0
  183. package/docs/docs/cmd/viva/engage/engage-message-get.mdx +17 -0
  184. package/docs/docs/cmd/viva/engage/engage-message-list.mdx +17 -0
  185. package/docs/docs/cmd/viva/engage/engage-message-remove.mdx +19 -0
  186. package/npm-shrinkwrap.json +1120 -3216
  187. package/package.json +24 -38
  188. package/dist/appInsights.js +0 -43
@@ -1,14 +1,22 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var _SpoAppListCommand_instances, _SpoAppListCommand_initTelemetry, _SpoAppListCommand_initOptions, _SpoAppListCommand_initValidators;
1
+ import { z } from 'zod';
2
+ import { globalOptionsZod } from '../../../../Command.js';
7
3
  import { odata } from '../../../../utils/odata.js';
8
4
  import { spo } from '../../../../utils/spo.js';
9
5
  import { validation } from '../../../../utils/validation.js';
6
+ import { zod } from '../../../../utils/zod.js';
10
7
  import commands from '../../commands.js';
11
8
  import { SpoAppBaseCommand } from './SpoAppBaseCommand.js';
9
+ const appCatalogScopeOptions = { tenant: 'tenant', sitecollection: 'sitecollection' };
10
+ export const options = z.strictObject({
11
+ ...globalOptionsZod.shape,
12
+ appCatalogScope: zod.coercedEnum(appCatalogScopeOptions).optional().alias('s'),
13
+ appCatalogUrl: z.string()
14
+ .refine(url => validation.isValidSharePointUrl(url) === true, {
15
+ error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
16
+ })
17
+ .optional()
18
+ .alias('u')
19
+ });
12
20
  class SpoAppListCommand extends SpoAppBaseCommand {
13
21
  get name() {
14
22
  return commands.APP_LIST;
@@ -19,12 +27,18 @@ class SpoAppListCommand extends SpoAppBaseCommand {
19
27
  defaultProperties() {
20
28
  return [`Title`, `ID`, `Deployed`, `AppCatalogVersion`];
21
29
  }
22
- constructor() {
23
- super();
24
- _SpoAppListCommand_instances.add(this);
25
- __classPrivateFieldGet(this, _SpoAppListCommand_instances, "m", _SpoAppListCommand_initTelemetry).call(this);
26
- __classPrivateFieldGet(this, _SpoAppListCommand_instances, "m", _SpoAppListCommand_initOptions).call(this);
27
- __classPrivateFieldGet(this, _SpoAppListCommand_instances, "m", _SpoAppListCommand_initValidators).call(this);
30
+ get schema() {
31
+ return options;
32
+ }
33
+ getRefinedSchema(schema) {
34
+ return schema
35
+ .refine(opts => opts.appCatalogScope !== 'sitecollection' || opts.appCatalogUrl !== undefined, {
36
+ error: 'You must specify appCatalogUrl when the appCatalogScope is sitecollection',
37
+ path: ['appCatalogUrl'],
38
+ params: {
39
+ customCode: 'required'
40
+ }
41
+ });
28
42
  }
29
43
  async commandAction(logger, args) {
30
44
  const scope = (args.options.appCatalogScope) ? args.options.appCatalogScope.toLowerCase() : 'tenant';
@@ -42,37 +56,5 @@ class SpoAppListCommand extends SpoAppBaseCommand {
42
56
  }
43
57
  }
44
58
  }
45
- _SpoAppListCommand_instances = new WeakSet(), _SpoAppListCommand_initTelemetry = function _SpoAppListCommand_initTelemetry() {
46
- this.telemetry.push((args) => {
47
- Object.assign(this.telemetryProperties, {
48
- appCatalogUrl: (!(!args.options.appCatalogUrl)).toString(),
49
- appCatalogScope: args.options.appCatalogScope || 'tenant'
50
- });
51
- });
52
- }, _SpoAppListCommand_initOptions = function _SpoAppListCommand_initOptions() {
53
- this.options.unshift({
54
- option: '-s, --appCatalogScope [appCatalogScope]',
55
- autocomplete: ['tenant', 'sitecollection']
56
- }, {
57
- option: '-u, --appCatalogUrl [appCatalogUrl]'
58
- });
59
- }, _SpoAppListCommand_initValidators = function _SpoAppListCommand_initValidators() {
60
- this.validators.push(async (args) => {
61
- // verify either 'tenant' or 'sitecollection' specified if scope provided
62
- if (args.options.appCatalogScope) {
63
- const testScope = args.options.appCatalogScope.toLowerCase();
64
- if (!(testScope === 'tenant' || testScope === 'sitecollection')) {
65
- return `appCatalogScope must be either 'tenant' or 'sitecollection'`;
66
- }
67
- if (testScope === 'sitecollection' && !args.options.appCatalogUrl) {
68
- return `You must specify appCatalogUrl when the appCatalogScope is sitecollection`;
69
- }
70
- if (args.options.appCatalogUrl) {
71
- return validation.isValidSharePointUrl(args.options.appCatalogUrl);
72
- }
73
- }
74
- return true;
75
- });
76
- };
77
59
  export default new SpoAppListCommand();
78
60
  //# sourceMappingURL=app-list.js.map
@@ -1,16 +1,30 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var _SpoAppRemoveCommand_instances, _SpoAppRemoveCommand_initTelemetry, _SpoAppRemoveCommand_initOptions, _SpoAppRemoveCommand_initValidators;
1
+ import { z } from 'zod';
7
2
  import { cli } from '../../../../cli/cli.js';
3
+ import { globalOptionsZod } from '../../../../Command.js';
8
4
  import request from '../../../../request.js';
9
5
  import { formatting } from '../../../../utils/formatting.js';
10
6
  import { spo } from '../../../../utils/spo.js';
11
7
  import { validation } from '../../../../utils/validation.js';
8
+ import { zod } from '../../../../utils/zod.js';
12
9
  import commands from '../../commands.js';
13
10
  import { SpoAppBaseCommand } from './SpoAppBaseCommand.js';
11
+ const appCatalogScopeOptions = { tenant: 'tenant', sitecollection: 'sitecollection' };
12
+ export const options = z.strictObject({
13
+ ...globalOptionsZod.shape,
14
+ id: z.string()
15
+ .refine(id => validation.isValidGuid(id), {
16
+ error: e => `${e.input} is not a valid GUID`
17
+ })
18
+ .alias('i'),
19
+ appCatalogUrl: z.string()
20
+ .refine(url => validation.isValidSharePointUrl(url) === true, {
21
+ error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
22
+ })
23
+ .optional()
24
+ .alias('u'),
25
+ appCatalogScope: zod.coercedEnum(appCatalogScopeOptions).optional().alias('s'),
26
+ force: z.boolean().optional().alias('f')
27
+ });
14
28
  class SpoAppRemoveCommand extends SpoAppBaseCommand {
15
29
  get name() {
16
30
  return commands.APP_REMOVE;
@@ -18,12 +32,18 @@ class SpoAppRemoveCommand extends SpoAppBaseCommand {
18
32
  get description() {
19
33
  return 'Removes the specified app from the specified app catalog';
20
34
  }
21
- constructor() {
22
- super();
23
- _SpoAppRemoveCommand_instances.add(this);
24
- __classPrivateFieldGet(this, _SpoAppRemoveCommand_instances, "m", _SpoAppRemoveCommand_initTelemetry).call(this);
25
- __classPrivateFieldGet(this, _SpoAppRemoveCommand_instances, "m", _SpoAppRemoveCommand_initOptions).call(this);
26
- __classPrivateFieldGet(this, _SpoAppRemoveCommand_instances, "m", _SpoAppRemoveCommand_initValidators).call(this);
35
+ get schema() {
36
+ return options;
37
+ }
38
+ getRefinedSchema(schema) {
39
+ return schema
40
+ .refine(opts => opts.appCatalogScope !== 'sitecollection' || opts.appCatalogUrl !== undefined, {
41
+ error: 'You must specify appCatalogUrl when the appCatalogScope is sitecollection',
42
+ path: ['appCatalogUrl'],
43
+ params: {
44
+ customCode: 'required'
45
+ }
46
+ });
27
47
  }
28
48
  async commandAction(logger, args) {
29
49
  const scope = (args.options.appCatalogScope) ? args.options.appCatalogScope.toLowerCase() : 'tenant';
@@ -57,45 +77,5 @@ class SpoAppRemoveCommand extends SpoAppBaseCommand {
57
77
  }
58
78
  }
59
79
  }
60
- _SpoAppRemoveCommand_instances = new WeakSet(), _SpoAppRemoveCommand_initTelemetry = function _SpoAppRemoveCommand_initTelemetry() {
61
- this.telemetry.push((args) => {
62
- Object.assign(this.telemetryProperties, {
63
- appCatalogUrl: (!(!args.options.appCatalogUrl)).toString(),
64
- force: (!(!args.options.force)).toString(),
65
- appCatalogScope: args.options.appCatalogScope || 'tenant'
66
- });
67
- });
68
- }, _SpoAppRemoveCommand_initOptions = function _SpoAppRemoveCommand_initOptions() {
69
- this.options.unshift({
70
- option: '-i, --id <id>'
71
- }, {
72
- option: '-u, --appCatalogUrl [appCatalogUrl]'
73
- }, {
74
- option: '-s, --appCatalogScope [appCatalogScope]',
75
- autocomplete: ['tenant', 'sitecollection']
76
- }, {
77
- option: '-f, --force'
78
- });
79
- }, _SpoAppRemoveCommand_initValidators = function _SpoAppRemoveCommand_initValidators() {
80
- this.validators.push(async (args) => {
81
- // verify either 'tenant' or 'sitecollection' specified if scope provided
82
- if (args.options.appCatalogScope) {
83
- const testScope = args.options.appCatalogScope.toLowerCase();
84
- if (!(testScope === 'tenant' || testScope === 'sitecollection')) {
85
- return `appCatalogScope must be either 'tenant' or 'sitecollection' if specified`;
86
- }
87
- if (testScope === 'sitecollection' && !args.options.appCatalogUrl) {
88
- return `You must specify appCatalogUrl when the appCatalogScope is sitecollection`;
89
- }
90
- }
91
- if (!validation.isValidGuid(args.options.id)) {
92
- return `${args.options.id} is not a valid GUID`;
93
- }
94
- if (args.options.appCatalogUrl) {
95
- return validation.isValidSharePointUrl(args.options.appCatalogUrl);
96
- }
97
- return true;
98
- });
99
- };
100
80
  export default new SpoAppRemoveCommand();
101
81
  //# sourceMappingURL=app-remove.js.map
@@ -1,16 +1,30 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var _SpoAppRetractCommand_instances, _SpoAppRetractCommand_initTelemetry, _SpoAppRetractCommand_initOptions, _SpoAppRetractCommand_initValidators;
1
+ import { z } from 'zod';
7
2
  import { cli } from '../../../../cli/cli.js';
3
+ import { globalOptionsZod } from '../../../../Command.js';
8
4
  import request from '../../../../request.js';
9
5
  import { formatting } from '../../../../utils/formatting.js';
10
6
  import { spo } from '../../../../utils/spo.js';
11
7
  import { validation } from '../../../../utils/validation.js';
8
+ import { zod } from '../../../../utils/zod.js';
12
9
  import commands from '../../commands.js';
13
10
  import { SpoAppBaseCommand } from './SpoAppBaseCommand.js';
11
+ const appCatalogScopeOptions = { tenant: 'tenant', sitecollection: 'sitecollection' };
12
+ export const options = z.strictObject({
13
+ ...globalOptionsZod.shape,
14
+ id: z.string()
15
+ .refine(id => validation.isValidGuid(id), {
16
+ error: e => `${e.input} is not a valid GUID`
17
+ })
18
+ .alias('i'),
19
+ appCatalogUrl: z.string()
20
+ .refine(url => validation.isValidSharePointUrl(url) === true, {
21
+ error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
22
+ })
23
+ .optional()
24
+ .alias('u'),
25
+ appCatalogScope: zod.coercedEnum(appCatalogScopeOptions).optional().alias('s'),
26
+ force: z.boolean().optional().alias('f')
27
+ });
14
28
  class SpoAppRetractCommand extends SpoAppBaseCommand {
15
29
  get name() {
16
30
  return commands.APP_RETRACT;
@@ -18,12 +32,18 @@ class SpoAppRetractCommand extends SpoAppBaseCommand {
18
32
  get description() {
19
33
  return 'Retracts the specified app from the specified app catalog';
20
34
  }
21
- constructor() {
22
- super();
23
- _SpoAppRetractCommand_instances.add(this);
24
- __classPrivateFieldGet(this, _SpoAppRetractCommand_instances, "m", _SpoAppRetractCommand_initTelemetry).call(this);
25
- __classPrivateFieldGet(this, _SpoAppRetractCommand_instances, "m", _SpoAppRetractCommand_initOptions).call(this);
26
- __classPrivateFieldGet(this, _SpoAppRetractCommand_instances, "m", _SpoAppRetractCommand_initValidators).call(this);
35
+ get schema() {
36
+ return options;
37
+ }
38
+ getRefinedSchema(schema) {
39
+ return schema
40
+ .refine(opts => opts.appCatalogScope !== 'sitecollection' || opts.appCatalogUrl !== undefined, {
41
+ error: 'You must specify appCatalogUrl when the appCatalogScope is sitecollection',
42
+ path: ['appCatalogUrl'],
43
+ params: {
44
+ customCode: 'required'
45
+ }
46
+ });
27
47
  }
28
48
  async commandAction(logger, args) {
29
49
  const scope = (args.options.appCatalogScope) ? args.options.appCatalogScope.toLowerCase() : 'tenant';
@@ -57,44 +77,5 @@ class SpoAppRetractCommand extends SpoAppBaseCommand {
57
77
  }
58
78
  }
59
79
  }
60
- _SpoAppRetractCommand_instances = new WeakSet(), _SpoAppRetractCommand_initTelemetry = function _SpoAppRetractCommand_initTelemetry() {
61
- this.telemetry.push((args) => {
62
- Object.assign(this.telemetryProperties, {
63
- appCatalogUrl: (!(!args.options.appCatalogUrl)).toString(),
64
- force: (!(!args.options.force)).toString(),
65
- appCatalogScope: args.options.appCatalogScope || 'tenant'
66
- });
67
- });
68
- }, _SpoAppRetractCommand_initOptions = function _SpoAppRetractCommand_initOptions() {
69
- this.options.unshift({
70
- option: '-i, --id <id>'
71
- }, {
72
- option: '-u, --appCatalogUrl [appCatalogUrl]'
73
- }, {
74
- option: '-s, --appCatalogScope [appCatalogScope]',
75
- autocomplete: ['tenant', 'sitecollection']
76
- }, {
77
- option: '-f, --force'
78
- });
79
- }, _SpoAppRetractCommand_initValidators = function _SpoAppRetractCommand_initValidators() {
80
- this.validators.push(async (args) => {
81
- if (args.options.appCatalogScope) {
82
- const testScope = args.options.appCatalogScope.toLowerCase();
83
- if (!(testScope === 'tenant' || testScope === 'sitecollection')) {
84
- return `appCatalogScope must be either 'tenant' or 'sitecollection' if specified`;
85
- }
86
- if (testScope === 'sitecollection' && !args.options.appCatalogUrl) {
87
- return `You must specify appCatalogUrl when the appCatalogScope is sitecollection`;
88
- }
89
- }
90
- if (!validation.isValidGuid(args.options.id)) {
91
- return `${args.options.id} is not a valid GUID`;
92
- }
93
- if (args.options.appCatalogUrl) {
94
- return validation.isValidSharePointUrl(args.options.appCatalogUrl);
95
- }
96
- return true;
97
- });
98
- };
99
80
  export default new SpoAppRetractCommand();
100
81
  //# sourceMappingURL=app-retract.js.map
@@ -1,11 +1,7 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var _SpoAppTeamsPackageDownloadCommand_instances, _SpoAppTeamsPackageDownloadCommand_initTelemetry, _SpoAppTeamsPackageDownloadCommand_initOptions, _SpoAppTeamsPackageDownloadCommand_initValidators;
7
1
  import fs from 'fs';
8
2
  import path from 'path';
3
+ import { z } from 'zod';
4
+ import { globalOptionsZod } from '../../../../Command.js';
9
5
  import request from '../../../../request.js';
10
6
  import { formatting } from '../../../../utils/formatting.js';
11
7
  import { spo } from '../../../../utils/spo.js';
@@ -13,6 +9,27 @@ import { urlUtil } from '../../../../utils/urlUtil.js';
13
9
  import { validation } from '../../../../utils/validation.js';
14
10
  import commands from '../../commands.js';
15
11
  import { SpoAppBaseCommand } from './SpoAppBaseCommand.js';
12
+ export const options = z.strictObject({
13
+ ...globalOptionsZod.shape,
14
+ appItemId: z.number().optional(),
15
+ appItemUniqueId: z.string()
16
+ .refine(id => validation.isValidGuid(id), {
17
+ error: e => `${e.input} is not a valid GUID`
18
+ })
19
+ .optional(),
20
+ appName: z.string().optional(),
21
+ fileName: z.string()
22
+ .refine(fileName => !fs.existsSync(fileName), {
23
+ error: e => `File ${e.input} already exists`
24
+ })
25
+ .optional(),
26
+ appCatalogUrl: z.string()
27
+ .refine(url => validation.isValidSharePointUrl(url) === true, {
28
+ error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
29
+ })
30
+ .optional()
31
+ .alias('u')
32
+ });
16
33
  class SpoAppTeamsPackageDownloadCommand extends SpoAppBaseCommand {
17
34
  get name() {
18
35
  return commands.APP_TEAMSPACKAGE_DOWNLOAD;
@@ -20,12 +37,18 @@ class SpoAppTeamsPackageDownloadCommand extends SpoAppBaseCommand {
20
37
  get description() {
21
38
  return 'Downloads Teams app package for an SPFx solution deployed to tenant app catalog';
22
39
  }
23
- constructor() {
24
- super();
25
- _SpoAppTeamsPackageDownloadCommand_instances.add(this);
26
- __classPrivateFieldGet(this, _SpoAppTeamsPackageDownloadCommand_instances, "m", _SpoAppTeamsPackageDownloadCommand_initTelemetry).call(this);
27
- __classPrivateFieldGet(this, _SpoAppTeamsPackageDownloadCommand_instances, "m", _SpoAppTeamsPackageDownloadCommand_initOptions).call(this);
28
- __classPrivateFieldGet(this, _SpoAppTeamsPackageDownloadCommand_instances, "m", _SpoAppTeamsPackageDownloadCommand_initValidators).call(this);
40
+ get schema() {
41
+ return options;
42
+ }
43
+ getRefinedSchema(schema) {
44
+ return schema
45
+ .refine(opts => [opts.appItemUniqueId, opts.appItemId, opts.appName].filter(x => x !== undefined).length === 1, {
46
+ error: 'Specify appItemUniqueId, appItemId or appName but not multiple',
47
+ params: {
48
+ customCode: 'optionSet',
49
+ options: ['appItemUniqueId', 'appItemId', 'appName']
50
+ }
51
+ });
29
52
  }
30
53
  async commandAction(logger, args) {
31
54
  try {
@@ -125,47 +148,5 @@ class SpoAppTeamsPackageDownloadCommand extends SpoAppBaseCommand {
125
148
  this.appCatalogUrl = appCatalogUrl;
126
149
  }
127
150
  }
128
- _SpoAppTeamsPackageDownloadCommand_instances = new WeakSet(), _SpoAppTeamsPackageDownloadCommand_initTelemetry = function _SpoAppTeamsPackageDownloadCommand_initTelemetry() {
129
- this.telemetry.push((args) => {
130
- Object.assign(this.telemetryProperties, {
131
- appCatalogUrl: typeof args.options.appCatalogUrl !== 'undefined',
132
- appItemUniqueId: typeof args.options.appItemUniqueId !== 'undefined',
133
- appItemId: typeof args.options.appItemId !== 'undefined',
134
- appName: typeof args.options.appName !== 'undefined',
135
- fileName: typeof args.options.fileName !== 'undefined'
136
- });
137
- });
138
- }, _SpoAppTeamsPackageDownloadCommand_initOptions = function _SpoAppTeamsPackageDownloadCommand_initOptions() {
139
- this.options.unshift({ option: '--appItemId [appItemId]' }, { option: '--appItemUniqueId [appItemUniqueId]' }, { option: '--appName [appName]' }, { option: '--fileName [fileName]' }, { option: '-u, --appCatalogUrl [appCatalogUrl]' });
140
- }, _SpoAppTeamsPackageDownloadCommand_initValidators = function _SpoAppTeamsPackageDownloadCommand_initValidators() {
141
- this.validators.push(async (args) => {
142
- if (!args.options.appItemUniqueId &&
143
- !args.options.appItemId &&
144
- !args.options.appName) {
145
- return `Specify appItemUniqueId, appItemId or appName`;
146
- }
147
- if ((args.options.appItemUniqueId && args.options.appItemId) ||
148
- (args.options.appItemUniqueId && args.options.appName) ||
149
- (args.options.appItemId && args.options.appName)) {
150
- return `Specify appItemUniqueId, appItemId or appName but not multiple`;
151
- }
152
- if (args.options.appItemUniqueId &&
153
- !validation.isValidGuid(args.options.appItemUniqueId)) {
154
- return `${args.options.appItemUniqueId} is not a valid GUID`;
155
- }
156
- if (args.options.appItemId &&
157
- isNaN(args.options.appItemId)) {
158
- return `${args.options.appItemId} is not a number`;
159
- }
160
- if (args.options.fileName &&
161
- fs.existsSync(args.options.fileName)) {
162
- return `File ${args.options.fileName} already exists`;
163
- }
164
- if (args.options.appCatalogUrl) {
165
- return validation.isValidSharePointUrl(args.options.appCatalogUrl);
166
- }
167
- return true;
168
- });
169
- };
170
151
  export default new SpoAppTeamsPackageDownloadCommand();
171
152
  //# sourceMappingURL=app-teamspackage-download.js.map
@@ -1,15 +1,28 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var _SpoAppUninstallCommand_instances, _SpoAppUninstallCommand_initTelemetry, _SpoAppUninstallCommand_initOptions, _SpoAppUninstallCommand_initValidators;
1
+ import { z } from 'zod';
7
2
  import { cli } from '../../../../cli/cli.js';
3
+ import { globalOptionsZod } from '../../../../Command.js';
8
4
  import request from '../../../../request.js';
9
5
  import { formatting } from '../../../../utils/formatting.js';
10
6
  import { validation } from '../../../../utils/validation.js';
7
+ import { zod } from '../../../../utils/zod.js';
11
8
  import SpoCommand from '../../../base/SpoCommand.js';
12
9
  import commands from '../../commands.js';
10
+ const appCatalogScopeOptions = { tenant: 'tenant', sitecollection: 'sitecollection' };
11
+ export const options = z.strictObject({
12
+ ...globalOptionsZod.shape,
13
+ id: z.string()
14
+ .refine(id => validation.isValidGuid(id), {
15
+ error: e => `${e.input} is not a valid GUID`
16
+ })
17
+ .alias('i'),
18
+ siteUrl: z.string()
19
+ .refine(url => validation.isValidSharePointUrl(url) === true, {
20
+ error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
21
+ })
22
+ .alias('s'),
23
+ appCatalogScope: zod.coercedEnum(appCatalogScopeOptions).optional(),
24
+ force: z.boolean().optional().alias('f')
25
+ });
13
26
  class SpoAppUninstallCommand extends SpoCommand {
14
27
  get name() {
15
28
  return commands.APP_UNINSTALL;
@@ -17,12 +30,8 @@ class SpoAppUninstallCommand extends SpoCommand {
17
30
  get description() {
18
31
  return 'Uninstalls an app from the site';
19
32
  }
20
- constructor() {
21
- super();
22
- _SpoAppUninstallCommand_instances.add(this);
23
- __classPrivateFieldGet(this, _SpoAppUninstallCommand_instances, "m", _SpoAppUninstallCommand_initTelemetry).call(this);
24
- __classPrivateFieldGet(this, _SpoAppUninstallCommand_instances, "m", _SpoAppUninstallCommand_initOptions).call(this);
25
- __classPrivateFieldGet(this, _SpoAppUninstallCommand_instances, "m", _SpoAppUninstallCommand_initValidators).call(this);
33
+ get schema() {
34
+ return options;
26
35
  }
27
36
  async commandAction(logger, args) {
28
37
  const uninstallApp = async () => {
@@ -54,37 +63,5 @@ class SpoAppUninstallCommand extends SpoCommand {
54
63
  }
55
64
  }
56
65
  }
57
- _SpoAppUninstallCommand_instances = new WeakSet(), _SpoAppUninstallCommand_initTelemetry = function _SpoAppUninstallCommand_initTelemetry() {
58
- this.telemetry.push((args) => {
59
- Object.assign(this.telemetryProperties, {
60
- force: (!(!args.options.force)).toString(),
61
- appCatalogScope: args.options.appCatalogScope || 'tenant'
62
- });
63
- });
64
- }, _SpoAppUninstallCommand_initOptions = function _SpoAppUninstallCommand_initOptions() {
65
- this.options.unshift({
66
- option: '-i, --id <id>'
67
- }, {
68
- option: '-s, --siteUrl <siteUrl>'
69
- }, {
70
- option: '--appCatalogScope [appCatalogScope]',
71
- autocomplete: ['tenant', 'sitecollection']
72
- }, {
73
- option: '-f, --force'
74
- });
75
- }, _SpoAppUninstallCommand_initValidators = function _SpoAppUninstallCommand_initValidators() {
76
- this.validators.push(async (args) => {
77
- if (args.options.appCatalogScope) {
78
- const testScope = args.options.appCatalogScope.toLowerCase();
79
- if (!(testScope === 'tenant' || testScope === 'sitecollection')) {
80
- return `appCatalogScope must be either 'tenant' or 'sitecollection' if specified`;
81
- }
82
- }
83
- if (!validation.isValidGuid(args.options.id)) {
84
- return `${args.options.id} is not a valid GUID`;
85
- }
86
- return validation.isValidSharePointUrl(args.options.siteUrl);
87
- });
88
- };
89
66
  export default new SpoAppUninstallCommand();
90
67
  //# sourceMappingURL=app-uninstall.js.map
@@ -1,14 +1,26 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var _SpoAppUpgradeCommand_instances, _SpoAppUpgradeCommand_initTelemetry, _SpoAppUpgradeCommand_initOptions, _SpoAppUpgradeCommand_initValidators;
1
+ import { z } from 'zod';
2
+ import { globalOptionsZod } from '../../../../Command.js';
7
3
  import request from '../../../../request.js';
8
4
  import { formatting } from '../../../../utils/formatting.js';
9
5
  import { validation } from '../../../../utils/validation.js';
6
+ import { zod } from '../../../../utils/zod.js';
10
7
  import SpoCommand from '../../../base/SpoCommand.js';
11
8
  import commands from '../../commands.js';
9
+ const appCatalogScopeOptions = { tenant: 'tenant', sitecollection: 'sitecollection' };
10
+ export const options = z.strictObject({
11
+ ...globalOptionsZod.shape,
12
+ id: z.string()
13
+ .refine(id => validation.isValidGuid(id), {
14
+ error: e => `${e.input} is not a valid GUID`
15
+ })
16
+ .alias('i'),
17
+ siteUrl: z.string()
18
+ .refine(url => validation.isValidSharePointUrl(url) === true, {
19
+ error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
20
+ })
21
+ .alias('s'),
22
+ appCatalogScope: zod.coercedEnum(appCatalogScopeOptions).optional()
23
+ });
12
24
  class SpoAppUpgradeCommand extends SpoCommand {
13
25
  get name() {
14
26
  return commands.APP_UPGRADE;
@@ -16,12 +28,8 @@ class SpoAppUpgradeCommand extends SpoCommand {
16
28
  get description() {
17
29
  return 'Upgrades app in the specified site';
18
30
  }
19
- constructor() {
20
- super();
21
- _SpoAppUpgradeCommand_instances.add(this);
22
- __classPrivateFieldGet(this, _SpoAppUpgradeCommand_instances, "m", _SpoAppUpgradeCommand_initTelemetry).call(this);
23
- __classPrivateFieldGet(this, _SpoAppUpgradeCommand_instances, "m", _SpoAppUpgradeCommand_initOptions).call(this);
24
- __classPrivateFieldGet(this, _SpoAppUpgradeCommand_instances, "m", _SpoAppUpgradeCommand_initValidators).call(this);
31
+ get schema() {
32
+ return options;
25
33
  }
26
34
  async commandAction(logger, args) {
27
35
  const scope = (args.options.appCatalogScope) ? args.options.appCatalogScope.toLowerCase() : 'tenant';
@@ -42,34 +50,5 @@ class SpoAppUpgradeCommand extends SpoCommand {
42
50
  }
43
51
  }
44
52
  }
45
- _SpoAppUpgradeCommand_instances = new WeakSet(), _SpoAppUpgradeCommand_initTelemetry = function _SpoAppUpgradeCommand_initTelemetry() {
46
- this.telemetry.push((args) => {
47
- Object.assign(this.telemetryProperties, {
48
- appCatalogScope: args.options.appCatalogScope || 'tenant'
49
- });
50
- });
51
- }, _SpoAppUpgradeCommand_initOptions = function _SpoAppUpgradeCommand_initOptions() {
52
- this.options.unshift({
53
- option: '-i, --id <id>'
54
- }, {
55
- option: '-s, --siteUrl <siteUrl>'
56
- }, {
57
- option: '--appCatalogScope [appCatalogScope]',
58
- autocomplete: ['tenant', 'sitecollection']
59
- });
60
- }, _SpoAppUpgradeCommand_initValidators = function _SpoAppUpgradeCommand_initValidators() {
61
- this.validators.push(async (args) => {
62
- if (args.options.appCatalogScope) {
63
- const testScope = args.options.appCatalogScope.toLowerCase();
64
- if (!(testScope === 'tenant' || testScope === 'sitecollection')) {
65
- return `appCatalogScope must be either 'tenant' or 'sitecollection' if specified`;
66
- }
67
- }
68
- if (!validation.isValidGuid(args.options.id)) {
69
- return `${args.options.id} is not a valid GUID`;
70
- }
71
- return validation.isValidSharePointUrl(args.options.siteUrl);
72
- });
73
- };
74
53
  export default new SpoAppUpgradeCommand();
75
54
  //# sourceMappingURL=app-upgrade.js.map