@pnp/cli-microsoft365 6.0.0-beta.42305df → 6.0.0-beta.48a730d

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 (203) hide show
  1. package/.eslintrc.js +15 -2
  2. package/README.md +5 -0
  3. package/dist/Command.js +16 -2
  4. package/dist/m365/aad/commands/app/app-add.js +36 -13
  5. package/dist/m365/aad/commands/app/app-list.js +38 -0
  6. package/dist/m365/aad/commands/user/user-guest-add.js +103 -0
  7. package/dist/m365/aad/commands.js +2 -0
  8. package/dist/m365/commands/status.js +6 -1
  9. package/dist/m365/outlook/commands/mail/mail-send.js +55 -31
  10. package/dist/m365/outlook/commands/message/message-get.js +97 -0
  11. package/dist/m365/outlook/commands.js +1 -0
  12. package/dist/m365/planner/commands/bucket/bucket-get.js +1 -1
  13. package/dist/m365/planner/commands/plan/plan-get.js +5 -20
  14. package/dist/m365/pp/commands/Environment.js +3 -0
  15. package/dist/m365/pp/commands/card/card-get.js +110 -0
  16. package/dist/m365/pp/commands/card/card-list.js +68 -0
  17. package/dist/m365/pp/commands/card/card-remove.js +130 -0
  18. package/dist/m365/pp/commands/dataverse/dataverse-table-list.js +6 -12
  19. package/dist/m365/pp/commands/environment/environment-get.js +75 -0
  20. package/dist/m365/pp/commands/gateway/gateway-get.js +70 -0
  21. package/dist/m365/pp/commands/solution/Solution.js +3 -0
  22. package/dist/m365/pp/commands/solution/solution-get.js +117 -0
  23. package/dist/m365/pp/commands/solution/solution-list.js +87 -0
  24. package/dist/m365/pp/commands.js +7 -0
  25. package/dist/m365/spfx/commands/project/project-doctor.js +4 -1
  26. package/dist/m365/spfx/commands/project/project-externalize.js +4 -1
  27. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010001_YORC_version.js +2 -1
  28. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010002_YORC_isCreatingSolution.js +2 -1
  29. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010003_YORC_packageManager.js +2 -1
  30. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010004_YORC_componentType.js +2 -1
  31. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010005_YORC_environment.js +2 -1
  32. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010006_YORC_framework.js +3 -2
  33. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010007_YORC_isDomainIsolated.js +2 -1
  34. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010008_YORC_nodeVersion.js +2 -1
  35. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010009_YORC_sdkVersions_microsoft_graph_client.js +56 -0
  36. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN010010_YORC_sdkVersions_teams_js.js +56 -0
  37. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.14.0.js +0 -2
  38. package/dist/m365/spfx/commands/project/project-upgrade/{upgrade-1.16.0-beta.1.js → upgrade-1.16.0-beta.2.js} +44 -28
  39. package/dist/m365/spfx/commands/project/project-upgrade.js +5 -2
  40. package/dist/m365/spfx/commands/spfx-doctor.js +39 -9
  41. package/dist/m365/spo/commands/contenttype/contenttype-add.js +82 -43
  42. package/dist/m365/spo/commands/contenttype/contenttype-field-remove.js +53 -21
  43. package/dist/m365/spo/commands/contenttype/contenttype-get.js +35 -14
  44. package/dist/m365/spo/commands/eventreceiver/EventReceiver.js +3 -0
  45. package/dist/m365/spo/commands/eventreceiver/eventreceiver-remove.js +182 -0
  46. package/dist/m365/spo/commands/field/field-add.js +26 -1
  47. package/dist/m365/spo/commands/field/field-set.js +23 -13
  48. package/dist/m365/spo/commands/file/file-copy.js +25 -39
  49. package/dist/m365/spo/commands/file/file-move.js +24 -37
  50. package/dist/m365/spo/commands/file/file-rename.js +19 -16
  51. package/dist/m365/spo/commands/file/file-roleinheritance-break.js +129 -0
  52. package/dist/m365/spo/commands/folder/folder-list.js +35 -12
  53. package/dist/m365/spo/commands/folder/folder-roleassignment-remove.js +168 -0
  54. package/dist/m365/spo/commands/folder/folder-roleinheritance-break.js +11 -1
  55. package/dist/m365/spo/commands/folder/folder-roleinheritance-reset.js +12 -1
  56. package/dist/m365/spo/commands/group/AssociatedGroupPropertiesCollection.js +3 -0
  57. package/dist/m365/spo/commands/group/group-list.js +49 -10
  58. package/dist/m365/spo/commands/list/list-contenttype-add.js +21 -18
  59. package/dist/m365/spo/commands/list/list-contenttype-default-set.js +59 -47
  60. package/dist/m365/spo/commands/list/list-contenttype-list.js +16 -8
  61. package/dist/m365/spo/commands/list/list-contenttype-remove.js +16 -8
  62. package/dist/m365/spo/commands/list/list-roleassignment-add.js +10 -10
  63. package/dist/m365/spo/commands/list/list-roleassignment-remove.js +8 -8
  64. package/dist/m365/spo/commands/list/list-roleinheritance-break.js +14 -6
  65. package/dist/m365/spo/commands/list/list-roleinheritance-reset.js +14 -6
  66. package/dist/m365/spo/commands/list/list-webhook-add.js +19 -11
  67. package/dist/m365/spo/commands/list/list-webhook-get.js +17 -10
  68. package/dist/m365/spo/commands/list/list-webhook-list.js +17 -42
  69. package/dist/m365/spo/commands/list/list-webhook-remove.js +19 -11
  70. package/dist/m365/spo/commands/list/list-webhook-set.js +27 -20
  71. package/dist/m365/spo/commands/listitem/listitem-add.js +24 -14
  72. package/dist/m365/spo/commands/listitem/listitem-attachment-list.js +18 -8
  73. package/dist/m365/spo/commands/listitem/listitem-get.js +18 -8
  74. package/dist/m365/spo/commands/listitem/listitem-isrecord.js +20 -10
  75. package/dist/m365/spo/commands/listitem/listitem-list.js +21 -11
  76. package/dist/m365/spo/commands/listitem/listitem-record-declare.js +19 -12
  77. package/dist/m365/spo/commands/listitem/listitem-record-undeclare.js +24 -21
  78. package/dist/m365/spo/commands/listitem/listitem-remove.js +19 -11
  79. package/dist/m365/spo/commands/listitem/listitem-roleassignment-add.js +239 -0
  80. package/dist/m365/spo/commands/listitem/listitem-roleassignment-remove.js +8 -8
  81. package/dist/m365/spo/commands/listitem/listitem-roleinheritance-break.js +13 -5
  82. package/dist/m365/spo/commands/listitem/listitem-roleinheritance-reset.js +13 -5
  83. package/dist/m365/spo/commands/listitem/listitem-set.js +52 -44
  84. package/dist/m365/spo/commands/roledefinition/roledefinition-list.js +15 -2
  85. package/dist/m365/spo/commands/site/site-add.js +4 -11
  86. package/dist/m365/spo/commands/{hubsite/hubsite-connect.js → site/site-hubsite-connect.js} +10 -10
  87. package/dist/m365/spo/commands/{hubsite/hubsite-disconnect.js → site/site-hubsite-disconnect.js} +13 -13
  88. package/dist/m365/spo/commands/{hubsite/hubsite-theme-sync.js → site/site-hubsite-theme-sync.js} +11 -11
  89. package/dist/m365/spo/commands/web/web-roleassignment-add.js +10 -10
  90. package/dist/m365/spo/commands/web/web-roleassignment-remove.js +8 -8
  91. package/dist/m365/spo/commands/web/web-roleinheritance-break.js +100 -0
  92. package/dist/m365/spo/commands.js +8 -3
  93. package/dist/m365/teams/commands/channel/channel-add.js +9 -9
  94. package/dist/m365/teams/commands/team/team-set.js +0 -7
  95. package/dist/m365/todo/commands/list/list-get.js +89 -0
  96. package/dist/m365/todo/commands/task/task-add.js +55 -3
  97. package/dist/m365/todo/commands/task/task-get.js +108 -0
  98. package/dist/m365/todo/commands/task/task-set.js +53 -1
  99. package/dist/m365/todo/commands.js +2 -0
  100. package/dist/utils/md.js +8 -1
  101. package/docs/docs/_clisettings.md +18 -0
  102. package/docs/docs/cmd/aad/app/app-list.md +149 -0
  103. package/docs/docs/cmd/aad/user/user-guest-add.md +107 -0
  104. package/docs/docs/cmd/adaptivecard/adaptivecard-send.md +3 -0
  105. package/docs/docs/cmd/graph/schemaextension/schemaextension-add.md +4 -11
  106. package/docs/docs/cmd/graph/schemaextension/schemaextension-set.md +4 -10
  107. package/docs/docs/cmd/outlook/mail/mail-send.md +13 -0
  108. package/docs/docs/cmd/outlook/message/message-get.md +48 -0
  109. package/docs/docs/cmd/planner/bucket/bucket-add.md +29 -0
  110. package/docs/docs/cmd/planner/bucket/bucket-get.md +29 -0
  111. package/docs/docs/cmd/planner/bucket/bucket-list.md +30 -0
  112. package/docs/docs/cmd/planner/bucket/bucket-remove.md +4 -0
  113. package/docs/docs/cmd/planner/bucket/bucket-set.md +4 -0
  114. package/docs/docs/cmd/planner/plan/plan-add.md +123 -0
  115. package/docs/docs/cmd/planner/plan/plan-get.md +75 -6
  116. package/docs/docs/cmd/planner/plan/plan-list.md +45 -0
  117. package/docs/docs/cmd/planner/plan/plan-remove.md +4 -0
  118. package/docs/docs/cmd/planner/task/task-get.md +0 -3
  119. package/docs/docs/cmd/pp/card/card-get.md +51 -0
  120. package/docs/docs/cmd/pp/card/card-list.md +33 -0
  121. package/docs/docs/cmd/pp/card/card-remove.md +82 -0
  122. package/docs/docs/cmd/pp/dataverse/dataverse-table-list.md +2 -2
  123. package/docs/docs/cmd/pp/environment/environment-get.md +38 -0
  124. package/docs/docs/cmd/pp/environment/environment-list.md +1 -1
  125. package/docs/docs/cmd/pp/gateway/gateway-get.md +24 -0
  126. package/docs/docs/cmd/pp/solution/solution-get.md +51 -0
  127. package/docs/docs/cmd/pp/solution/solution-list.md +33 -0
  128. package/docs/docs/cmd/spfx/project/project-rename.md +1 -14
  129. package/docs/docs/cmd/spfx/project/project-upgrade.md +1 -1
  130. package/docs/docs/cmd/spfx/spfx-doctor.md +10 -1
  131. package/docs/docs/cmd/spo/contenttype/contenttype-add.md +20 -2
  132. package/docs/docs/cmd/spo/contenttype/contenttype-field-remove.md +22 -4
  133. package/docs/docs/cmd/spo/contenttype/contenttype-get.md +21 -3
  134. package/docs/docs/cmd/spo/customaction/customaction-add.md +3 -0
  135. package/docs/docs/cmd/spo/customaction/customaction-set.md +3 -2
  136. package/docs/docs/cmd/spo/eventreceiver/eventreceiver-get.md +2 -2
  137. package/docs/docs/cmd/spo/eventreceiver/eventreceiver-remove.md +69 -0
  138. package/docs/docs/cmd/spo/field/field-add.md +20 -2
  139. package/docs/docs/cmd/spo/field/field-set.md +15 -3
  140. package/docs/docs/cmd/spo/file/file-roleinheritance-break.md +54 -0
  141. package/docs/docs/cmd/spo/folder/folder-list.md +45 -0
  142. package/docs/docs/cmd/spo/folder/folder-roleassignment-remove.md +57 -0
  143. package/docs/docs/cmd/spo/folder/folder-roleinheritance-break.md +6 -0
  144. package/docs/docs/cmd/spo/folder/folder-roleinheritance-reset.md +6 -0
  145. package/docs/docs/cmd/spo/group/group-list.md +10 -1
  146. package/docs/docs/cmd/spo/hubsite/hubsite-register.md +2 -2
  147. package/docs/docs/cmd/spo/hubsite/hubsite-unregister.md +2 -2
  148. package/docs/docs/cmd/spo/list/list-contenttype-add.md +15 -6
  149. package/docs/docs/cmd/spo/list/list-contenttype-default-set.md +16 -7
  150. package/docs/docs/cmd/spo/list/list-contenttype-list.md +15 -6
  151. package/docs/docs/cmd/spo/list/list-contenttype-remove.md +16 -7
  152. package/docs/docs/cmd/spo/list/list-roleinheritance-break.md +11 -8
  153. package/docs/docs/cmd/spo/list/list-roleinheritance-reset.md +16 -7
  154. package/docs/docs/cmd/spo/list/list-view-set.md +14 -3
  155. package/docs/docs/cmd/spo/list/list-webhook-add.md +15 -16
  156. package/docs/docs/cmd/spo/list/list-webhook-get.md +16 -7
  157. package/docs/docs/cmd/spo/list/list-webhook-list.md +13 -10
  158. package/docs/docs/cmd/spo/list/list-webhook-remove.md +12 -10
  159. package/docs/docs/cmd/spo/list/list-webhook-set.md +21 -12
  160. package/docs/docs/cmd/spo/listitem/listitem-add.md +11 -2
  161. package/docs/docs/cmd/spo/listitem/listitem-attachment-list.md +11 -2
  162. package/docs/docs/cmd/spo/listitem/listitem-get.md +11 -2
  163. package/docs/docs/cmd/spo/listitem/listitem-isrecord.md +12 -2
  164. package/docs/docs/cmd/spo/listitem/listitem-list.md +10 -1
  165. package/docs/docs/cmd/spo/listitem/listitem-record-declare.md +7 -4
  166. package/docs/docs/cmd/spo/listitem/listitem-record-undeclare.md +11 -2
  167. package/docs/docs/cmd/spo/listitem/listitem-remove.md +11 -2
  168. package/docs/docs/cmd/spo/listitem/listitem-roleassignment-add.md +81 -0
  169. package/docs/docs/cmd/spo/listitem/listitem-roleinheritance-break.md +7 -4
  170. package/docs/docs/cmd/spo/listitem/listitem-roleinheritance-reset.md +8 -5
  171. package/docs/docs/cmd/spo/listitem/listitem-set.md +7 -4
  172. package/docs/docs/cmd/spo/page/page-clientsidewebpart-add.md +5 -10
  173. package/docs/docs/cmd/spo/page/page-control-set.md +2 -1
  174. package/docs/docs/cmd/spo/site/site-add.md +0 -3
  175. package/docs/docs/cmd/spo/{hubsite/hubsite-connect.md → site/site-hubsite-connect.md} +4 -4
  176. package/docs/docs/cmd/spo/{hubsite/hubsite-disconnect.md → site/site-hubsite-disconnect.md} +7 -7
  177. package/docs/docs/cmd/spo/{hubsite/hubsite-theme-sync.md → site/site-hubsite-theme-sync.md} +5 -5
  178. package/docs/docs/cmd/spo/term/term-add.md +5 -0
  179. package/docs/docs/cmd/spo/term/term-set-add.md +6 -1
  180. package/docs/docs/cmd/spo/web/web-roleinheritance-break.md +44 -0
  181. package/docs/docs/cmd/teams/channel/channel-add.md +4 -4
  182. package/docs/docs/cmd/teams/team/team-clone.md +0 -3
  183. package/docs/docs/cmd/teams/team/team-set.md +0 -3
  184. package/docs/docs/cmd/tenant/id/id-get.md +20 -0
  185. package/docs/docs/cmd/tenant/report/report-activeusercounts.md +35 -0
  186. package/docs/docs/cmd/tenant/report/report-activeuserdetail.md +49 -0
  187. package/docs/docs/cmd/tenant/report/report-office365activationcounts.md +32 -0
  188. package/docs/docs/cmd/tenant/report/report-office365activationsusercounts.md +30 -0
  189. package/docs/docs/cmd/tenant/report/report-office365activationsuserdetail.md +36 -0
  190. package/docs/docs/cmd/tenant/report/report-servicesusercounts.md +41 -0
  191. package/docs/docs/cmd/tenant/security/security-alerts-list.md +105 -0
  192. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-health-get.md +87 -0
  193. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-health-list.md +91 -0
  194. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-healthissue-get.md +62 -0
  195. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-healthissue-list.md +51 -0
  196. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-message-get.md +64 -0
  197. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-message-list.md +52 -0
  198. package/docs/docs/cmd/todo/list/list-get.md +61 -0
  199. package/docs/docs/cmd/todo/task/task-add.md +32 -5
  200. package/docs/docs/cmd/todo/task/task-get.md +75 -0
  201. package/docs/docs/cmd/todo/task/task-set.md +29 -2
  202. package/package.json +13 -3
  203. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN006006_CFG_PS_features.js +0 -60
@@ -66,7 +66,7 @@ class SpfxProjectUpgradeCommand extends base_project_command_1.BaseProjectComman
66
66
  '1.14.0',
67
67
  '1.15.0',
68
68
  '1.15.2',
69
- '1.16.0-beta.1'
69
+ '1.16.0-beta.2'
70
70
  ];
71
71
  __classPrivateFieldGet(this, _SpfxProjectUpgradeCommand_instances, "m", _SpfxProjectUpgradeCommand_initTelemetry).call(this);
72
72
  __classPrivateFieldGet(this, _SpfxProjectUpgradeCommand_instances, "m", _SpfxProjectUpgradeCommand_initOptions).call(this);
@@ -78,6 +78,9 @@ class SpfxProjectUpgradeCommand extends base_project_command_1.BaseProjectComman
78
78
  get description() {
79
79
  return 'Upgrades SharePoint Framework project to the specified version';
80
80
  }
81
+ get allowedOutputs() {
82
+ return ['json', 'text', 'md', 'tour'];
83
+ }
81
84
  commandAction(logger, args) {
82
85
  return __awaiter(this, void 0, void 0, function* () {
83
86
  this.projectRootPath = this.getProjectRoot(process.cwd());
@@ -494,7 +497,7 @@ _SpfxProjectUpgradeCommand_instances = new WeakSet(), _SpfxProjectUpgradeCommand
494
497
  });
495
498
  this.options.forEach(o => {
496
499
  if (o.option.indexOf('--output') > -1) {
497
- o.autocomplete = ['json', 'text', 'md', 'tour'];
500
+ o.autocomplete = this.allowedOutputs;
498
501
  }
499
502
  });
500
503
  }, _SpfxProjectUpgradeCommand_initValidators = function _SpfxProjectUpgradeCommand_initValidators() {
@@ -13,7 +13,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
13
13
  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");
14
14
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
15
  };
16
- var _SpfxDoctorCommand_instances, _SpfxDoctorCommand_initTelemetry, _SpfxDoctorCommand_initOptions, _SpfxDoctorCommand_initValidators, _SpfxDoctorCommand_initTypes;
16
+ var _SpfxDoctorCommand_instances, _SpfxDoctorCommand_initTelemetry, _SpfxDoctorCommand_initOptions, _SpfxDoctorCommand_initValidators;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const chalk = require("chalk");
19
19
  const child_process = require("child_process");
@@ -448,7 +448,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
448
448
  __classPrivateFieldGet(this, _SpfxDoctorCommand_instances, "m", _SpfxDoctorCommand_initTelemetry).call(this);
449
449
  __classPrivateFieldGet(this, _SpfxDoctorCommand_instances, "m", _SpfxDoctorCommand_initOptions).call(this);
450
450
  __classPrivateFieldGet(this, _SpfxDoctorCommand_instances, "m", _SpfxDoctorCommand_initValidators).call(this);
451
- __classPrivateFieldGet(this, _SpfxDoctorCommand_instances, "m", _SpfxDoctorCommand_initTypes).call(this);
451
+ }
452
+ get allowedOutputs() {
453
+ return ['text'];
452
454
  }
453
455
  get name() {
454
456
  return commands_1.default.DOCTOR;
@@ -457,6 +459,7 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
457
459
  return 'Verifies environment configuration for using the specific version of the SharePoint Framework';
458
460
  }
459
461
  commandAction(logger, args) {
462
+ var _a;
460
463
  return __awaiter(this, void 0, void 0, function* () {
461
464
  if (!args.options.output) {
462
465
  args.options.output = 'text';
@@ -469,7 +472,7 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
469
472
  let prerequisites;
470
473
  const fixes = [];
471
474
  try {
472
- spfxVersion = yield this.getSharePointFrameworkVersion(logger);
475
+ spfxVersion = (_a = args.options.spfxVersion) !== null && _a !== void 0 ? _a : yield this.getSharePointFrameworkVersion(logger);
473
476
  if (!spfxVersion) {
474
477
  logger.log(this.getStatus(CheckStatus.Failure, `SharePoint Framework`));
475
478
  throw `SharePoint Framework not found`;
@@ -479,7 +482,13 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
479
482
  logger.log(this.getStatus(CheckStatus.Failure, `SharePoint Framework v${spfxVersion}`));
480
483
  throw `spfx doctor doesn't support SPFx v${spfxVersion} at this moment`;
481
484
  }
482
- logger.log(this.getStatus(CheckStatus.Success, `SharePoint Framework v${spfxVersion}`));
485
+ if (args.options.spfxVersion) {
486
+ yield this.checkSharePointFrameworkVersion(args.options.spfxVersion, fixes, logger);
487
+ }
488
+ else {
489
+ // spfx was detected and if we are here, it means that we support it
490
+ logger.log(this.getStatus(CheckStatus.Success, `SharePoint Framework v${spfxVersion}`));
491
+ }
483
492
  yield this.checkSharePointCompatibility(spfxVersion, prerequisites, args, fixes, logger);
484
493
  yield this.checkNodeVersion(prerequisites, fixes, logger);
485
494
  yield this.checkYo(prerequisites, fixes, logger);
@@ -532,6 +541,23 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
532
541
  this.checkStatus('Node', nodeVersion, prerequisites.node, OptionalOrRequired.Required, fixes, logger);
533
542
  });
534
543
  }
544
+ checkSharePointFrameworkVersion(spfxVersionRequested, fixes, logger) {
545
+ return this
546
+ .getPackageVersion('@microsoft/generator-sharepoint', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger)
547
+ .then((spfxVersionDetected) => {
548
+ const versionCheck = {
549
+ range: spfxVersionRequested,
550
+ fix: `npm i -g @microsoft/generator-sharepoint@${spfxVersionRequested}`
551
+ };
552
+ if (spfxVersionDetected) {
553
+ this.checkStatus(`SharePoint Framework`, spfxVersionDetected, versionCheck, OptionalOrRequired.Required, fixes, logger);
554
+ }
555
+ else {
556
+ logger.log(this.getStatus(CheckStatus.Failure, `SharePoint Framework v${spfxVersionRequested} not found`));
557
+ fixes.push(versionCheck.fix);
558
+ }
559
+ });
560
+ }
535
561
  checkYo(prerequisites, fixes, logger) {
536
562
  return this
537
563
  .getPackageVersion('yo', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger)
@@ -710,13 +736,17 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
710
736
  _SpfxDoctorCommand_instances = new WeakSet(), _SpfxDoctorCommand_initTelemetry = function _SpfxDoctorCommand_initTelemetry() {
711
737
  this.telemetry.push((args) => {
712
738
  Object.assign(this.telemetryProperties, {
713
- env: args.options.env
739
+ env: args.options.env,
740
+ spfxVersion: args.options.spfxVersion
714
741
  });
715
742
  });
716
743
  }, _SpfxDoctorCommand_initOptions = function _SpfxDoctorCommand_initOptions() {
717
744
  this.options.unshift({
718
745
  option: '-e, --env [env]',
719
746
  autocomplete: ['sp2016', 'sp2019', 'spo']
747
+ }, {
748
+ option: '-v, --spfxVersion [spfxVersion]',
749
+ autocomplete: Object.keys(this.versions)
720
750
  });
721
751
  }, _SpfxDoctorCommand_initValidators = function _SpfxDoctorCommand_initValidators() {
722
752
  this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
@@ -726,13 +756,13 @@ _SpfxDoctorCommand_instances = new WeakSet(), _SpfxDoctorCommand_initTelemetry =
726
756
  return `${args.options.env} is not a valid SharePoint version. Valid versions are sp2016, sp2019 or spo`;
727
757
  }
728
758
  }
729
- if (args.options.output && args.options.output !== 'text') {
730
- return `The output option only accepts the type 'text'`;
759
+ if (args.options.spfxVersion) {
760
+ if (!this.versions[args.options.spfxVersion]) {
761
+ return `${args.options.spfxVersion} is not a supported SharePoint Framework version. Supported versions are ${Object.keys(this.versions).join(', ')}`;
762
+ }
731
763
  }
732
764
  return true;
733
765
  }));
734
- }, _SpfxDoctorCommand_initTypes = function _SpfxDoctorCommand_initTypes() {
735
- this.types.string.push('e', 'env');
736
766
  };
737
767
  module.exports = new SpfxDoctorCommand();
738
768
  //# sourceMappingURL=spfx-doctor.js.map
@@ -20,6 +20,7 @@ const config_1 = require("../../../../config");
20
20
  const request_1 = require("../../../../request");
21
21
  const formatting_1 = require("../../../../utils/formatting");
22
22
  const spo_1 = require("../../../../utils/spo");
23
+ const urlUtil_1 = require("../../../../utils/urlUtil");
23
24
  const validation_1 = require("../../../../utils/validation");
24
25
  const SpoCommand_1 = require("../../../base/SpoCommand");
25
26
  const commands_1 = require("../../commands");
@@ -42,7 +43,13 @@ class SpoContentTypeAddCommand extends SpoCommand_1.default {
42
43
  commandAction(logger, args) {
43
44
  return __awaiter(this, void 0, void 0, function* () {
44
45
  try {
45
- const parentInfo = yield this.getParentInfo(args.options.listTitle, args.options.webUrl, logger);
46
+ let parentInfo = '';
47
+ if (!args.options.listId && !args.options.listTitle && !args.options.listUrl) {
48
+ parentInfo = '<Property Id="5" ParentId="3" Name="Web" /><StaticProperty Id="3" TypeId="{3747adcd-a3c3-41b9-bfab-4a64dd2f1e0a}" Name="Current" />';
49
+ }
50
+ else {
51
+ parentInfo = yield this.getParentInfo(args.options, logger);
52
+ }
46
53
  if (this.verbose) {
47
54
  logger.logToStderr(`Retrieving request digest...`);
48
55
  }
@@ -69,6 +76,8 @@ class SpoContentTypeAddCommand extends SpoCommand_1.default {
69
76
  const options = {
70
77
  webUrl: args.options.webUrl,
71
78
  listTitle: args.options.listTitle,
79
+ listUrl: args.options.listUrl,
80
+ listId: args.options.listId,
72
81
  id: args.options.id,
73
82
  output: 'json',
74
83
  debug: this.debug,
@@ -90,60 +99,79 @@ class SpoContentTypeAddCommand extends SpoCommand_1.default {
90
99
  }
91
100
  });
92
101
  }
93
- getParentInfo(listTitle, webUrl, logger) {
94
- return new Promise((resolve, reject) => {
95
- if (!listTitle) {
96
- resolve('<Property Id="5" ParentId="3" Name="Web" /><StaticProperty Id="3" TypeId="{3747adcd-a3c3-41b9-bfab-4a64dd2f1e0a}" Name="Current" />');
97
- return;
102
+ getParentInfo(options, logger) {
103
+ return __awaiter(this, void 0, void 0, function* () {
104
+ const siteId = yield this.getSiteId(options.webUrl, logger);
105
+ const webId = yield this.getWebId(options.webUrl, logger);
106
+ const listId = yield this.getListId(options, logger);
107
+ return `<Identity Id="5" Name="1a48869e-c092-0000-1f61-81ec89809537|740c6a0b-85e2-48a0-a494-e0f1759d4aa7:site:${siteId}:web:${webId}:list:${listId}" />`;
108
+ });
109
+ }
110
+ getSiteId(webUrl, logger) {
111
+ return __awaiter(this, void 0, void 0, function* () {
112
+ if (this.verbose) {
113
+ logger.logToStderr(`Retrieving site collection id...`);
98
114
  }
99
- let siteId = '';
100
- let webId = '';
101
- (() => {
102
- if (this.verbose) {
103
- logger.logToStderr(`Retrieving site collection id...`);
104
- }
105
- const requestOptions = {
106
- url: `${webUrl}/_api/site?$select=Id`,
107
- headers: {
108
- accept: 'application/json;odata=nometadata'
109
- },
110
- responseType: 'json'
111
- };
112
- return request_1.default.get(requestOptions);
113
- })()
114
- .then((res) => {
115
- siteId = res.Id;
116
- if (this.verbose) {
117
- logger.logToStderr(`Retrieving site id...`);
118
- }
115
+ const requestOptions = {
116
+ url: `${webUrl}/_api/site?$select=Id`,
117
+ headers: {
118
+ accept: 'application/json;odata=nometadata'
119
+ },
120
+ responseType: 'json'
121
+ };
122
+ const siteResponse = yield request_1.default.get(requestOptions);
123
+ return siteResponse.Id;
124
+ });
125
+ }
126
+ getWebId(webUrl, logger) {
127
+ return __awaiter(this, void 0, void 0, function* () {
128
+ if (this.verbose) {
129
+ logger.logToStderr(`Retrieving web id...`);
130
+ }
131
+ const requestOptions = {
132
+ url: `${webUrl}/_api/web?$select=Id`,
133
+ headers: {
134
+ accept: 'application/json;odata=nometadata'
135
+ },
136
+ responseType: 'json'
137
+ };
138
+ const webResponse = yield request_1.default.get(requestOptions);
139
+ return webResponse.Id;
140
+ });
141
+ }
142
+ getListId(options, logger) {
143
+ return __awaiter(this, void 0, void 0, function* () {
144
+ if (this.verbose) {
145
+ logger.logToStderr(`Retrieving list id...`);
146
+ }
147
+ let listId = '';
148
+ if (options.listId) {
149
+ return options.listId;
150
+ }
151
+ else if (options.listTitle) {
119
152
  const requestOptions = {
120
- url: `${webUrl}/_api/web?$select=Id`,
153
+ url: `${options.webUrl}/_api/web/lists/getByTitle('${formatting_1.formatting.encodeQueryParameter(options.listTitle)}')?$select=Id`,
121
154
  headers: {
122
155
  accept: 'application/json;odata=nometadata'
123
156
  },
124
157
  responseType: 'json'
125
158
  };
126
- return request_1.default.get(requestOptions);
127
- })
128
- .then((res) => {
129
- webId = res.Id;
130
- if (this.verbose) {
131
- logger.logToStderr(`Retrieving list id...`);
132
- }
159
+ const listResponse = yield request_1.default.get(requestOptions);
160
+ listId = listResponse.Id;
161
+ }
162
+ else if (options.listUrl) {
163
+ const listServerRelativeUrl = urlUtil_1.urlUtil.getServerRelativePath(options.webUrl, options.listUrl);
133
164
  const requestOptions = {
134
- url: `${webUrl}/_api/web/lists/getByTitle('${formatting_1.formatting.encodeQueryParameter(listTitle)}')?$select=Id`,
165
+ url: `${options.webUrl}/_api/web/GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')?$select=Id`,
135
166
  headers: {
136
167
  accept: 'application/json;odata=nometadata'
137
168
  },
138
169
  responseType: 'json'
139
170
  };
140
- return request_1.default.get(requestOptions);
141
- })
142
- .then((res) => {
143
- resolve(`<Identity Id="5" Name="1a48869e-c092-0000-1f61-81ec89809537|740c6a0b-85e2-48a0-a494-e0f1759d4aa7:site:${siteId}:web:${webId}:list:${res.Id}" />`);
144
- }, (error) => {
145
- reject(error);
146
- });
171
+ const listResponse = yield request_1.default.get(requestOptions);
172
+ listId = listResponse.Id;
173
+ }
174
+ return listId;
147
175
  });
148
176
  }
149
177
  }
@@ -160,6 +188,10 @@ _SpoContentTypeAddCommand_instances = new WeakSet(), _SpoContentTypeAddCommand_i
160
188
  option: '-u, --webUrl <webUrl>'
161
189
  }, {
162
190
  option: '-l, --listTitle [listTitle]'
191
+ }, {
192
+ option: '--listId [listId]'
193
+ }, {
194
+ option: '--listUrl [listUrl]'
163
195
  }, {
164
196
  option: '-i, --id <id>'
165
197
  }, {
@@ -170,7 +202,14 @@ _SpoContentTypeAddCommand_instances = new WeakSet(), _SpoContentTypeAddCommand_i
170
202
  option: '-g, --group [group]'
171
203
  });
172
204
  }, _SpoContentTypeAddCommand_initValidators = function _SpoContentTypeAddCommand_initValidators() {
173
- this.validators.push((args) => __awaiter(this, void 0, void 0, function* () { return validation_1.validation.isValidSharePointUrl(args.options.webUrl); }));
205
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
206
+ if (args.options.listId) {
207
+ if (!validation_1.validation.isValidGuid(args.options.listId)) {
208
+ return `${args.options.listId} is not a valid GUID`;
209
+ }
210
+ }
211
+ return validation_1.validation.isValidSharePointUrl(args.options.webUrl);
212
+ }));
174
213
  }, _SpoContentTypeAddCommand_initTypes = function _SpoContentTypeAddCommand_initTypes() {
175
214
  this.types.string.push('id', 'i');
176
215
  };
@@ -19,6 +19,7 @@ const Cli_1 = require("../../../../cli/Cli");
19
19
  const request_1 = require("../../../../request");
20
20
  const formatting_1 = require("../../../../utils/formatting");
21
21
  const spo_1 = require("../../../../utils/spo");
22
+ const urlUtil_1 = require("../../../../utils/urlUtil");
22
23
  const validation_1 = require("../../../../utils/validation");
23
24
  const SpoCommand_1 = require("../../../base/SpoCommand");
24
25
  const commands_1 = require("../../commands");
@@ -72,30 +73,25 @@ class SpoContentTypeFieldRemoveCommand extends SpoCommand_1.default {
72
73
  logger.logToStderr(`WebId: ${webId}`);
73
74
  }
74
75
  let listId = undefined;
75
- // If ListTitle is provided
76
- if (args.options.listTitle) {
77
- // Request for the ListId
78
- const requestOptions = {
79
- url: `${args.options.webUrl}/_api/lists/GetByTitle('${formatting_1.formatting.encodeQueryParameter(args.options.listTitle)}')?$select=Id`,
80
- headers: {
81
- accept: 'application/json;odata=nometadata'
82
- },
83
- responseType: 'json'
84
- };
85
- const list = yield request_1.default.get(requestOptions);
86
- listId = list.Id;
87
- if (this.debug) {
88
- logger.logToStderr(`ListId: ${listId}`);
89
- }
76
+ if (args.options.listId) {
77
+ listId = args.options.listId;
78
+ }
79
+ else if (args.options.listTitle) {
80
+ listId = yield this.getListIdFromListTitle(args.options.webUrl, args.options.listTitle);
81
+ }
82
+ else if (args.options.listUrl) {
83
+ listId = yield this.getListIdFromListUrl(args.options.webUrl, args.options.listUrl);
84
+ }
85
+ if (this.debug) {
86
+ logger.logToStderr(`ListId: ${listId}`);
90
87
  }
91
88
  const reqDigest = yield spo_1.spo.getRequestDigest(args.options.webUrl);
92
89
  const requestDigest = reqDigest.FormDigestValue;
93
- const updateChildContentTypes = args.options.listTitle ? false : args.options.updateChildContentTypes === true;
90
+ const updateChildContentTypes = args.options.listTitle || args.options.listId || args.options.listUrl ? false : args.options.updateChildContentTypes === true;
94
91
  if (this.debug) {
95
- const additionalLog = args.options.listTitle ? `; ListTitle='${args.options.listTitle}'` : ` ; UpdateChildContentTypes='${updateChildContentTypes}`;
92
+ const additionalLog = args.options.listTitle ? `; ListTitle='${args.options.listTitle}'` : args.options.listId ? `; ListId='${args.options.listId}'` : args.options.listUrl ? `; ListUrl='${args.options.listUrl}'` : ` ; UpdateChildContentTypes='${updateChildContentTypes}`;
96
93
  logger.logToStderr(`Remove FieldLink from ContentType. FieldLinkId='${args.options.fieldLinkId}' ; ContentTypeId='${args.options.contentTypeId}' ${additionalLog}`);
97
94
  logger.logToStderr(`Execute ProcessQuery.`);
98
- logger.logToStderr('');
99
95
  }
100
96
  let requestBody = '';
101
97
  if (listId) {
@@ -138,13 +134,42 @@ class SpoContentTypeFieldRemoveCommand extends SpoCommand_1.default {
138
134
  }
139
135
  });
140
136
  }
137
+ getListIdFromListTitle(webUrl, listTitle) {
138
+ return __awaiter(this, void 0, void 0, function* () {
139
+ const requestOptions = {
140
+ url: `${webUrl}/_api/lists/GetByTitle('${formatting_1.formatting.encodeQueryParameter(listTitle)}')?$select=Id`,
141
+ headers: {
142
+ accept: 'application/json;odata=nometadata'
143
+ },
144
+ responseType: 'json'
145
+ };
146
+ const list = yield request_1.default.get(requestOptions);
147
+ return list.Id;
148
+ });
149
+ }
150
+ getListIdFromListUrl(webUrl, listUrl) {
151
+ return __awaiter(this, void 0, void 0, function* () {
152
+ const listServerRelativeUrl = urlUtil_1.urlUtil.getServerRelativePath(webUrl, listUrl);
153
+ const requestOptions = {
154
+ url: `${webUrl}/_api/web/GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')?$select=Id`,
155
+ headers: {
156
+ accept: 'application/json;odata=nometadata'
157
+ },
158
+ responseType: 'json'
159
+ };
160
+ const list = yield request_1.default.get(requestOptions);
161
+ return list.Id;
162
+ });
163
+ }
141
164
  }
142
165
  _SpoContentTypeFieldRemoveCommand_instances = new WeakSet(), _SpoContentTypeFieldRemoveCommand_initTelemetry = function _SpoContentTypeFieldRemoveCommand_initTelemetry() {
143
166
  this.telemetry.push((args) => {
144
167
  Object.assign(this.telemetryProperties, {
145
- listTitle: (!(!args.options.listTitle)).toString(),
146
- updateChildContentTypes: (!(!args.options.updateChildContentTypes)).toString(),
147
- confirm: (!(!args.options.confirm)).toString()
168
+ listTitle: typeof args.options.listTitle !== 'undefined',
169
+ listId: typeof args.options.listId !== 'undefined',
170
+ listUrl: typeof args.options.listUrl !== 'undefined',
171
+ updateChildContentTypes: !!args.options.updateChildContentTypes,
172
+ confirm: !!args.options.confirm
148
173
  });
149
174
  });
150
175
  }, _SpoContentTypeFieldRemoveCommand_initOptions = function _SpoContentTypeFieldRemoveCommand_initOptions() {
@@ -152,6 +177,10 @@ _SpoContentTypeFieldRemoveCommand_instances = new WeakSet(), _SpoContentTypeFiel
152
177
  option: '-u, --webUrl <webUrl>'
153
178
  }, {
154
179
  option: '-l, --listTitle [listTitle]'
180
+ }, {
181
+ option: '--listId [listId]'
182
+ }, {
183
+ option: '--listUrl [listUrl]'
155
184
  }, {
156
185
  option: '-i, --contentTypeId <contentTypeId>'
157
186
  }, {
@@ -166,6 +195,9 @@ _SpoContentTypeFieldRemoveCommand_instances = new WeakSet(), _SpoContentTypeFiel
166
195
  if (!validation_1.validation.isValidGuid(args.options.fieldLinkId)) {
167
196
  return `${args.options.fieldLinkId} is not a valid GUID`;
168
197
  }
198
+ if (args.options.listId && !validation_1.validation.isValidGuid(args.options.listId)) {
199
+ return `${args.options.listId} is not a valid GUID`;
200
+ }
169
201
  return validation_1.validation.isValidSharePointUrl(args.options.webUrl);
170
202
  }));
171
203
  }, _SpoContentTypeFieldRemoveCommand_initTypes = function _SpoContentTypeFieldRemoveCommand_initTypes() {
@@ -17,6 +17,7 @@ var _SpoContentTypeGetCommand_instances, _SpoContentTypeGetCommand_initTelemetry
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const request_1 = require("../../../../request");
19
19
  const formatting_1 = require("../../../../utils/formatting");
20
+ const urlUtil_1 = require("../../../../utils/urlUtil");
20
21
  const validation_1 = require("../../../../utils/validation");
21
22
  const SpoCommand_1 = require("../../../base/SpoCommand");
22
23
  const commands_1 = require("../../commands");
@@ -38,21 +39,32 @@ class SpoContentTypeGetCommand extends SpoCommand_1.default {
38
39
  }
39
40
  commandAction(logger, args) {
40
41
  return __awaiter(this, void 0, void 0, function* () {
42
+ let requestUrl = `${args.options.webUrl}/_api/web`;
43
+ if (args.options.listId) {
44
+ requestUrl += `/lists(guid'${formatting_1.formatting.encodeQueryParameter(args.options.listId)}')`;
45
+ }
46
+ else if (args.options.listTitle) {
47
+ requestUrl += `/lists/getByTitle('${formatting_1.formatting.encodeQueryParameter(args.options.listTitle)}')`;
48
+ }
49
+ else if (args.options.listUrl) {
50
+ const listServerRelativeUrl = urlUtil_1.urlUtil.getServerRelativePath(args.options.webUrl, args.options.listUrl);
51
+ requestUrl += `/GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')`;
52
+ }
53
+ requestUrl += "/contenttypes";
54
+ if (args.options.id) {
55
+ requestUrl += `('${encodeURIComponent(args.options.id)}')`;
56
+ }
57
+ else if (args.options.name) {
58
+ requestUrl += `?$filter=Name eq '${encodeURIComponent(args.options.name)}'`;
59
+ }
60
+ const requestOptions = {
61
+ url: requestUrl,
62
+ headers: {
63
+ accept: 'application/json;odata=nometadata'
64
+ },
65
+ responseType: 'json'
66
+ };
41
67
  try {
42
- let requestUrl = `${args.options.webUrl}/_api/web/${(args.options.listTitle ? `lists/getByTitle('${formatting_1.formatting.encodeQueryParameter(args.options.listTitle)}')/` : '')}contenttypes`;
43
- if (args.options.id) {
44
- requestUrl += `('${encodeURIComponent(args.options.id)}')`;
45
- }
46
- else if (args.options.name) {
47
- requestUrl += `?$filter=Name eq '${encodeURIComponent(args.options.name)}'`;
48
- }
49
- const requestOptions = {
50
- url: requestUrl,
51
- headers: {
52
- accept: 'application/json;odata=nometadata'
53
- },
54
- responseType: 'json'
55
- };
56
68
  let res = yield request_1.default.get(requestOptions);
57
69
  let errorMessage = '';
58
70
  if (args.options.name) {
@@ -80,7 +92,9 @@ class SpoContentTypeGetCommand extends SpoCommand_1.default {
80
92
  _SpoContentTypeGetCommand_instances = new WeakSet(), _SpoContentTypeGetCommand_initTelemetry = function _SpoContentTypeGetCommand_initTelemetry() {
81
93
  this.telemetry.push((args) => {
82
94
  Object.assign(this.telemetryProperties, {
95
+ listId: typeof args.options.listId !== 'undefined',
83
96
  listTitle: typeof args.options.listTitle !== 'undefined',
97
+ listUrl: typeof args.options.listUrl !== 'undefined',
84
98
  id: typeof args.options.id !== 'undefined',
85
99
  name: typeof args.options.name !== 'undefined'
86
100
  });
@@ -90,6 +104,10 @@ _SpoContentTypeGetCommand_instances = new WeakSet(), _SpoContentTypeGetCommand_i
90
104
  option: '-u, --webUrl <webUrl>'
91
105
  }, {
92
106
  option: '-l, --listTitle [listTitle]'
107
+ }, {
108
+ option: '--listId [listId]'
109
+ }, {
110
+ option: '--listUrl [listUrl]'
93
111
  }, {
94
112
  option: '-i, --id [id]'
95
113
  }, {
@@ -101,6 +119,9 @@ _SpoContentTypeGetCommand_instances = new WeakSet(), _SpoContentTypeGetCommand_i
101
119
  if (isValidSharePointUrl !== true) {
102
120
  return isValidSharePointUrl;
103
121
  }
122
+ if (args.options.listId && !validation_1.validation.isValidGuid(args.options.listId)) {
123
+ return `${args.options.listId} is not a valid GUID`;
124
+ }
104
125
  return true;
105
126
  }));
106
127
  }, _SpoContentTypeGetCommand_initTypes = function _SpoContentTypeGetCommand_initTypes() {
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=EventReceiver.js.map