@pnp/cli-microsoft365 7.0.0-beta.4ebf3ad → 7.0.0-beta.669444a

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 (167) hide show
  1. package/.eslintrc.cjs +1 -1
  2. package/dist/Auth.js +2 -1
  3. package/dist/Command.js +1 -1
  4. package/dist/cli/Cli.js +19 -2
  5. package/dist/m365/aad/commands/{o365group/o365group-add.js → m365group/m365group-add.js} +17 -17
  6. package/dist/m365/aad/commands/{o365group/o365group-conversation-list.js → m365group/m365group-conversation-list.js} +10 -10
  7. package/dist/m365/aad/commands/{o365group/o365group-conversation-post-list.js → m365group/m365group-conversation-post-list.js} +14 -14
  8. package/dist/m365/aad/commands/{o365group/o365group-get.js → m365group/m365group-get.js} +13 -10
  9. package/dist/m365/aad/commands/{o365group/o365group-list.js → m365group/m365group-list.js} +13 -28
  10. package/dist/m365/aad/commands/{o365group/o365group-recyclebinitem-clear.js → m365group/m365group-recyclebinitem-clear.js} +15 -15
  11. package/dist/m365/aad/commands/{o365group/o365group-recyclebinitem-list.js → m365group/m365group-recyclebinitem-list.js} +10 -10
  12. package/dist/m365/aad/commands/{o365group/o365group-recyclebinitem-remove.js → m365group/m365group-recyclebinitem-remove.js} +14 -14
  13. package/dist/m365/aad/commands/{o365group/o365group-recyclebinitem-restore.js → m365group/m365group-recyclebinitem-restore.js} +14 -14
  14. package/dist/m365/aad/commands/{o365group/o365group-remove.js → m365group/m365group-remove.js} +12 -12
  15. package/dist/m365/aad/commands/{o365group/o365group-renew.js → m365group/m365group-renew.js} +10 -10
  16. package/dist/m365/aad/commands/{o365group/o365group-report-activitycounts.js → m365group/m365group-report-activitycounts.js} +4 -4
  17. package/dist/m365/aad/commands/{o365group/o365group-report-activitydetail.js → m365group/m365group-report-activitydetail.js} +4 -4
  18. package/dist/m365/aad/commands/{o365group/o365group-report-activityfilecounts.js → m365group/m365group-report-activityfilecounts.js} +4 -4
  19. package/dist/m365/aad/commands/{o365group/o365group-report-activitygroupcounts.js → m365group/m365group-report-activitygroupcounts.js} +4 -4
  20. package/dist/m365/aad/commands/{o365group/o365group-report-activitystorage.js → m365group/m365group-report-activitystorage.js} +4 -4
  21. package/dist/m365/aad/commands/{o365group/o365group-set.js → m365group/m365group-set.js} +17 -17
  22. package/dist/m365/aad/commands/{o365group/o365group-teamify.js → m365group/m365group-teamify.js} +14 -14
  23. package/dist/m365/aad/commands/{o365group/o365group-user-add.js → m365group/m365group-user-add.js} +14 -14
  24. package/dist/m365/aad/commands/{o365group/o365group-user-list.js → m365group/m365group-user-list.js} +12 -12
  25. package/dist/m365/aad/commands/{o365group/o365group-user-remove.js → m365group/m365group-user-remove.js} +14 -14
  26. package/dist/m365/aad/commands/{o365group/o365group-user-set.js → m365group/m365group-user-set.js} +15 -15
  27. package/dist/m365/aad/commands.js +22 -22
  28. package/dist/m365/cli/commands/config/config-list.js +16 -0
  29. package/dist/m365/cli/commands.js +1 -0
  30. package/dist/m365/pa/commands/app/app-permission-ensure.js +162 -0
  31. package/dist/m365/pa/commands/app/app-permission-list.js +2 -2
  32. package/dist/m365/pa/commands/app/app-permission-remove.js +153 -0
  33. package/dist/m365/pa/commands.js +2 -0
  34. package/dist/m365/planner/commands/bucket/bucket-add.js +2 -2
  35. package/dist/m365/planner/commands/bucket/bucket-get.js +2 -2
  36. package/dist/m365/planner/commands/bucket/bucket-list.js +2 -2
  37. package/dist/m365/planner/commands/bucket/bucket-remove.js +2 -2
  38. package/dist/m365/planner/commands/bucket/bucket-set.js +2 -2
  39. package/dist/m365/planner/commands/plan/plan-get.js +1 -2
  40. package/dist/m365/planner/commands/plan/plan-list.js +4 -5
  41. package/dist/m365/planner/commands/plan/plan-set.js +2 -2
  42. package/dist/m365/spfx/commands/project/project-externalize/rules/PnPJsRule.js +2 -2
  43. package/dist/m365/spfx/commands/spfx-doctor.js +73 -103
  44. package/dist/m365/spo/commands/file/file-add.js +13 -13
  45. package/dist/m365/spo/commands/file/file-checkin.js +1 -1
  46. package/dist/m365/spo/commands/file/file-checkout.js +1 -1
  47. package/dist/m365/spo/commands/file/file-copy.js +36 -4
  48. package/dist/m365/spo/commands/file/file-list.js +4 -4
  49. package/dist/m365/spo/commands/file/file-move.js +74 -98
  50. package/dist/m365/spo/commands/file/file-remove.js +6 -6
  51. package/dist/m365/spo/commands/file/file-rename.js +2 -2
  52. package/dist/m365/spo/commands/file/file-retentionlabel-ensure.js +1 -1
  53. package/dist/m365/spo/commands/file/file-retentionlabel-remove.js +1 -1
  54. package/dist/m365/spo/commands/file/file-roleassignment-add.js +1 -1
  55. package/dist/m365/spo/commands/file/file-roleassignment-remove.js +1 -1
  56. package/dist/m365/spo/commands/file/file-roleinheritance-break.js +1 -1
  57. package/dist/m365/spo/commands/file/file-roleinheritance-reset.js +1 -1
  58. package/dist/m365/spo/commands/file/file-version-clear.js +1 -1
  59. package/dist/m365/spo/commands/file/file-version-get.js +1 -1
  60. package/dist/m365/spo/commands/file/file-version-list.js +1 -1
  61. package/dist/m365/spo/commands/file/file-version-remove.js +1 -1
  62. package/dist/m365/spo/commands/file/file-version-restore.js +1 -1
  63. package/dist/m365/spo/commands/folder/folder-add.js +2 -4
  64. package/dist/m365/spo/commands/folder/folder-copy.js +89 -45
  65. package/dist/m365/spo/commands/folder/folder-get.js +1 -1
  66. package/dist/m365/spo/commands/folder/folder-list.js +2 -2
  67. package/dist/m365/spo/commands/folder/folder-move.js +89 -47
  68. package/dist/m365/spo/commands/folder/folder-remove.js +7 -4
  69. package/dist/m365/spo/commands/folder/folder-rename.js +13 -17
  70. package/dist/m365/spo/commands/folder/folder-retentionlabel-ensure.js +1 -1
  71. package/dist/m365/spo/commands/folder/folder-retentionlabel-remove.js +1 -1
  72. package/dist/m365/spo/commands/folder/folder-roleassignment-add.js +1 -1
  73. package/dist/m365/spo/commands/folder/folder-roleassignment-remove.js +1 -1
  74. package/dist/m365/spo/commands/folder/folder-roleinheritance-break.js +1 -1
  75. package/dist/m365/spo/commands/folder/folder-roleinheritance-reset.js +1 -1
  76. package/dist/m365/spo/commands/group/group-list.js +0 -1
  77. package/dist/m365/spo/commands/navigation/navigation-node-set.js +2 -2
  78. package/dist/m365/spo/commands/site/site-set.js +2 -2
  79. package/dist/m365/spo/commands/theme/theme-list.js +1 -9
  80. package/dist/utils/planner.js +4 -3
  81. package/dist/utils/spo.js +13 -54
  82. package/docs/docs/cmd/aad/{o365group/o365group-add.mdx → m365group/m365group-add.mdx} +13 -13
  83. package/docs/docs/cmd/aad/{o365group/o365group-conversation-list.mdx → m365group/m365group-conversation-list.mdx} +4 -4
  84. package/docs/docs/cmd/aad/{o365group/o365group-conversation-post-list.mdx → m365group/m365group-conversation-post-list.mdx} +8 -8
  85. package/docs/docs/cmd/aad/{o365group/o365group-get.mdx → m365group/m365group-get.mdx} +6 -6
  86. package/docs/docs/cmd/aad/{o365group/o365group-list.mdx → m365group/m365group-list.mdx} +12 -29
  87. package/docs/docs/cmd/aad/{o365group/o365group-recyclebinitem-clear.mdx → m365group/m365group-recyclebinitem-clear.mdx} +5 -5
  88. package/docs/docs/cmd/aad/{o365group/o365group-recyclebinitem-list.mdx → m365group/m365group-recyclebinitem-list.mdx} +8 -8
  89. package/docs/docs/cmd/aad/{o365group/o365group-recyclebinitem-remove.mdx → m365group/m365group-recyclebinitem-remove.mdx} +6 -6
  90. package/docs/docs/cmd/aad/{o365group/o365group-recyclebinitem-restore.mdx → m365group/m365group-recyclebinitem-restore.mdx} +6 -6
  91. package/docs/docs/cmd/aad/{o365group/o365group-remove.mdx → m365group/m365group-remove.mdx} +6 -6
  92. package/docs/docs/cmd/aad/{o365group/o365group-renew.mdx → m365group/m365group-renew.mdx} +4 -4
  93. package/docs/docs/cmd/aad/{o365group/o365group-report-activitycounts.mdx → m365group/m365group-report-activitycounts.mdx} +6 -6
  94. package/docs/docs/cmd/aad/{o365group/o365group-report-activitydetail.mdx → m365group/m365group-report-activitydetail.mdx} +7 -7
  95. package/docs/docs/cmd/aad/{o365group/o365group-report-activityfilecounts.mdx → m365group/m365group-report-activityfilecounts.mdx} +6 -6
  96. package/docs/docs/cmd/aad/{o365group/o365group-report-activitygroupcounts.mdx → m365group/m365group-report-activitygroupcounts.mdx} +6 -6
  97. package/docs/docs/cmd/aad/{o365group/o365group-report-activitystorage.mdx → m365group/m365group-report-activitystorage.mdx} +6 -6
  98. package/docs/docs/cmd/aad/{o365group/o365group-set.mdx → m365group/m365group-set.mdx} +8 -8
  99. package/docs/docs/cmd/aad/{o365group/o365group-teamify.mdx → m365group/m365group-teamify.mdx} +5 -5
  100. package/docs/docs/cmd/aad/{o365group/o365group-user-add.mdx → m365group/m365group-user-add.mdx} +5 -5
  101. package/docs/docs/cmd/aad/{o365group/o365group-user-list.mdx → m365group/m365group-user-list.mdx} +7 -7
  102. package/docs/docs/cmd/aad/{o365group/o365group-user-remove.mdx → m365group/m365group-user-remove.mdx} +5 -5
  103. package/docs/docs/cmd/aad/{o365group/o365group-user-set.mdx → m365group/m365group-user-set.mdx} +5 -5
  104. package/docs/docs/cmd/aad/user/user-set.mdx +1 -1
  105. package/docs/docs/cmd/cli/config/config-list.mdx +78 -0
  106. package/docs/docs/cmd/flow/flow-enable.mdx +2 -2
  107. package/docs/docs/cmd/login.mdx +6 -0
  108. package/docs/docs/cmd/pa/app/app-permission-ensure.mdx +85 -0
  109. package/docs/docs/cmd/pa/app/app-permission-remove.mdx +74 -0
  110. package/docs/docs/cmd/planner/plan/plan-add.mdx +1 -1
  111. package/docs/docs/cmd/pp/dataverse/dataverse-table-get.mdx +2 -2
  112. package/docs/docs/cmd/pp/dataverse/dataverse-table-list.mdx +2 -2
  113. package/docs/docs/cmd/pp/dataverse/dataverse-table-remove.mdx +3 -3
  114. package/docs/docs/cmd/spo/file/file-add.mdx +1 -1
  115. package/docs/docs/cmd/spo/file/file-checkin.mdx +1 -1
  116. package/docs/docs/cmd/spo/file/file-checkout-undo.mdx +1 -9
  117. package/docs/docs/cmd/spo/file/file-checkout.mdx +1 -1
  118. package/docs/docs/cmd/spo/file/file-copy.mdx +20 -16
  119. package/docs/docs/cmd/spo/file/file-get.mdx +1 -1
  120. package/docs/docs/cmd/spo/file/file-list.mdx +2 -2
  121. package/docs/docs/cmd/spo/file/file-move.mdx +36 -18
  122. package/docs/docs/cmd/spo/file/file-remove.mdx +8 -8
  123. package/docs/docs/cmd/spo/file/file-rename.mdx +3 -3
  124. package/docs/docs/cmd/spo/file/file-retentionlabel-ensure.mdx +2 -2
  125. package/docs/docs/cmd/spo/file/file-retentionlabel-remove.mdx +3 -3
  126. package/docs/docs/cmd/spo/file/file-roleassignment-add.mdx +1 -1
  127. package/docs/docs/cmd/spo/file/file-roleassignment-remove.mdx +1 -1
  128. package/docs/docs/cmd/spo/file/file-roleinheritance-break.mdx +1 -1
  129. package/docs/docs/cmd/spo/file/file-roleinheritance-reset.mdx +1 -1
  130. package/docs/docs/cmd/spo/file/file-sharinginfo-get.mdx +1 -1
  131. package/docs/docs/cmd/spo/file/file-sharinglink-add.mdx +1 -1
  132. package/docs/docs/cmd/spo/file/file-sharinglink-clear.mdx +1 -1
  133. package/docs/docs/cmd/spo/file/file-sharinglink-get.mdx +1 -1
  134. package/docs/docs/cmd/spo/file/file-sharinglink-list.mdx +1 -1
  135. package/docs/docs/cmd/spo/file/file-sharinglink-remove.mdx +1 -1
  136. package/docs/docs/cmd/spo/file/file-sharinglink-set.mdx +1 -1
  137. package/docs/docs/cmd/spo/file/file-version-clear.mdx +1 -1
  138. package/docs/docs/cmd/spo/file/file-version-get.mdx +1 -1
  139. package/docs/docs/cmd/spo/file/file-version-list.mdx +1 -1
  140. package/docs/docs/cmd/spo/file/file-version-remove.mdx +1 -1
  141. package/docs/docs/cmd/spo/file/file-version-restore.mdx +1 -1
  142. package/docs/docs/cmd/spo/folder/folder-add.mdx +76 -1
  143. package/docs/docs/cmd/spo/folder/folder-copy.mdx +39 -12
  144. package/docs/docs/cmd/spo/folder/folder-get.mdx +1 -1
  145. package/docs/docs/cmd/spo/folder/folder-list.mdx +1 -1
  146. package/docs/docs/cmd/spo/folder/folder-move.mdx +40 -13
  147. package/docs/docs/cmd/spo/folder/folder-remove.mdx +1 -1
  148. package/docs/docs/cmd/spo/folder/folder-rename.mdx +5 -1
  149. package/docs/docs/cmd/spo/folder/folder-retentionlabel-ensure.mdx +1 -1
  150. package/docs/docs/cmd/spo/folder/folder-retentionlabel-remove.mdx +1 -1
  151. package/docs/docs/cmd/spo/folder/folder-roleassignment-add.mdx +2 -2
  152. package/docs/docs/cmd/spo/folder/folder-roleassignment-remove.mdx +1 -1
  153. package/docs/docs/cmd/spo/folder/folder-roleinheritance-break.mdx +1 -1
  154. package/docs/docs/cmd/spo/folder/folder-roleinheritance-reset.mdx +1 -1
  155. package/docs/docs/cmd/spo/listitem/listitem-attachment-list.mdx +1 -1
  156. package/docs/docs/cmd/spo/site/site-add.mdx +1 -1
  157. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-add.mdx +1 -1
  158. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-list.mdx +1 -1
  159. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-remove.mdx +1 -1
  160. package/docs/docs/cmd/spo/tenant/tenant-commandset-add.mdx +1 -1
  161. package/docs/docs/cmd/spo/tenant/tenant-commandset-remove.mdx +1 -1
  162. package/docs/docs/cmd/spo/tenant/tenant-commandset-set.mdx +1 -1
  163. package/docs/docs/cmd/teams/team/team-add.mdx +1 -1
  164. package/docs/docs/cmd/yammer/network/network-list.mdx +1 -1
  165. package/npm-shrinkwrap.json +142 -88
  166. package/package.json +13 -13
  167. /package/dist/m365/aad/commands/{o365group → m365group}/GroupExtended.js +0 -0
@@ -6,7 +6,9 @@ export default {
6
6
  APP_REMOVE: `${prefix} app remove`,
7
7
  APP_CONSENT_SET: `${prefix} app consent set`,
8
8
  APP_OWNER_SET: `${prefix} app owner set`,
9
+ APP_PERMISSION_ENSURE: `${prefix} app permission ensure`,
9
10
  APP_PERMISSION_LIST: `${prefix} app permission list`,
11
+ APP_PERMISSION_REMOVE: `${prefix} app permission remove`,
10
12
  CONNECTOR_EXPORT: `${prefix} connector export`,
11
13
  CONNECTOR_LIST: `${prefix} connector list`,
12
14
  ENVIRONMENT_GET: `${prefix} environment get`,
@@ -59,8 +59,8 @@ class PlannerBucketAddCommand extends GraphCommand {
59
59
  const plan = await planner.getPlanByTitle(args.options.planTitle, groupId);
60
60
  return plan.id;
61
61
  }
62
- const plans = await planner.getPlansByRosterId(args.options.rosterId);
63
- return plans[0].id;
62
+ const plan = await planner.getPlanByRosterId(args.options.rosterId);
63
+ return plan.id;
64
64
  }
65
65
  async getGroupId(args) {
66
66
  if (args.options.ownerGroupId) {
@@ -68,8 +68,8 @@ class PlannerBucketGetCommand extends GraphCommand {
68
68
  const plan = await planner.getPlanByTitle(planTitle, groupId);
69
69
  return plan.id;
70
70
  }
71
- const plans = await planner.getPlansByRosterId(rosterId);
72
- return plans[0].id;
71
+ const plan = await planner.getPlanByRosterId(rosterId);
72
+ return plan.id;
73
73
  }
74
74
  async getBucketById(id) {
75
75
  const requestOptions = {
@@ -47,8 +47,8 @@ class PlannerBucketListCommand extends GraphCommand {
47
47
  const plan = await planner.getPlanByTitle(args.options.planTitle, groupId);
48
48
  return plan.id;
49
49
  }
50
- const plans = await planner.getPlansByRosterId(args.options.rosterId);
51
- return plans[0].id;
50
+ const plan = await planner.getPlanByRosterId(args.options.rosterId);
51
+ return plan.id;
52
52
  }
53
53
  async getGroupId(args) {
54
54
  if (args.options.ownerGroupId) {
@@ -98,8 +98,8 @@ class PlannerBucketRemoveCommand extends GraphCommand {
98
98
  const plan = await planner.getPlanByTitle(planTitle, groupId);
99
99
  return plan.id;
100
100
  }
101
- const plans = await planner.getPlansByRosterId(rosterId);
102
- return plans[0].id;
101
+ const plan = await planner.getPlanByRosterId(rosterId);
102
+ return plan.id;
103
103
  }
104
104
  async getGroupId(args) {
105
105
  const { ownerGroupId, ownerGroupName } = args.options;
@@ -89,8 +89,8 @@ class PlannerBucketSetCommand extends GraphCommand {
89
89
  const plan = await planner.getPlanByTitle(planTitle, groupId);
90
90
  return plan.id;
91
91
  }
92
- const plans = await planner.getPlansByRosterId(rosterId);
93
- return plans[0].id;
92
+ const plan = await planner.getPlanByRosterId(rosterId);
93
+ return plan.id;
94
94
  }
95
95
  async getGroupId(args) {
96
96
  const { ownerGroupId, ownerGroupName } = args.options;
@@ -38,8 +38,7 @@ class PlannerPlanGetCommand extends GraphCommand {
38
38
  else {
39
39
  let plan = {};
40
40
  if (args.options.rosterId) {
41
- const plans = await planner.getPlansByRosterId(args.options.rosterId);
42
- plan = plans[0];
41
+ plan = await planner.getPlanByRosterId(args.options.rosterId);
43
42
  }
44
43
  else {
45
44
  let groupId = undefined;
@@ -29,17 +29,16 @@ class PlannerPlanListCommand extends GraphCommand {
29
29
  }
30
30
  async commandAction(logger, args) {
31
31
  try {
32
- let plannerPlans = null;
32
+ let plannerPlans = [];
33
33
  if (args.options.ownerGroupId || args.options.ownerGroupName) {
34
34
  const groupId = await this.getGroupId(args);
35
35
  plannerPlans = await planner.getPlansByGroupId(groupId);
36
36
  }
37
37
  else {
38
- plannerPlans = await planner.getPlansByRosterId(args.options.rosterId);
39
- }
40
- if (plannerPlans && plannerPlans.length > 0) {
41
- await logger.log(plannerPlans);
38
+ const plan = await planner.getPlanByRosterId(args.options.rosterId);
39
+ plannerPlans.push(plan);
42
40
  }
41
+ await logger.log(plannerPlans);
43
42
  }
44
43
  catch (err) {
45
44
  this.handleRejectedODataJsonPromise(err);
@@ -47,8 +47,8 @@ class PlannerPlanSetCommand extends GraphCommand {
47
47
  }
48
48
  let groupId = '';
49
49
  if (args.options.rosterId) {
50
- const plans = await planner.getPlansByRosterId(args.options.rosterId);
51
- return plans[0].id;
50
+ const plan = await planner.getPlanByRosterId(args.options.rosterId);
51
+ return plan.id;
52
52
  }
53
53
  else {
54
54
  groupId = await this.getGroupId(args);
@@ -42,7 +42,7 @@ export class PnPJsRule extends BasicDependencyRule {
42
42
  }
43
43
  ];
44
44
  }
45
- visit(project) {
45
+ async visit(project) {
46
46
  const findings = this.pnpModules
47
47
  .map(x => this.getModuleAndParents(project, x.key))
48
48
  .reduce((x, y) => [...x, ...y]);
@@ -67,7 +67,7 @@ export class PnPJsRule extends BasicDependencyRule {
67
67
  targetValue: 'require(\"tslib\");'
68
68
  })));
69
69
  }
70
- return Promise.resolve({ entries: findings, suggestions: fileEdits });
70
+ return { entries: findings, suggestions: fileEdits };
71
71
  }
72
72
  getEntryFilesList(project) {
73
73
  return project && project.manifests ? project.manifests.map(x => x.path.replace('.manifest.json', '.ts')) : [];
@@ -603,31 +603,21 @@ class SpfxDoctorCommand extends BaseProjectCommand {
603
603
  this.handleRejectedPromise(err);
604
604
  }
605
605
  }
606
- checkSharePointCompatibility(spfxVersion, prerequisites, args, fixes, logger) {
607
- return new Promise(async (resolve, reject) => {
608
- if (args.options.env) {
609
- const sp = this.spVersionStringToEnum(args.options.env);
610
- if ((prerequisites.sp & sp) === sp) {
611
- await logger.log(formatting.getStatus(CheckStatus.Success, `Supported in ${SharePointVersion[sp]}`));
612
- resolve();
613
- }
614
- else {
615
- await logger.log(formatting.getStatus(CheckStatus.Failure, `Not supported in ${SharePointVersion[sp]}`));
616
- fixes.push(`Use SharePoint Framework v${(sp === SharePointVersion.SP2016 ? '1.1' : '1.4.1')}`);
617
- reject(`SharePoint Framework v${spfxVersion} is not supported in ${SharePointVersion[sp]}`);
618
- }
619
- }
620
- else {
621
- resolve();
606
+ async checkSharePointCompatibility(spfxVersion, prerequisites, args, fixes, logger) {
607
+ if (args.options.env) {
608
+ const sp = this.spVersionStringToEnum(args.options.env);
609
+ if ((prerequisites.sp & sp) === sp) {
610
+ await logger.log(formatting.getStatus(CheckStatus.Success, `Supported in ${SharePointVersion[sp]}`));
611
+ return;
622
612
  }
623
- });
613
+ await logger.log(formatting.getStatus(CheckStatus.Failure, `Not supported in ${SharePointVersion[sp]}`));
614
+ fixes.push(`Use SharePoint Framework v${(sp === SharePointVersion.SP2016 ? '1.1' : '1.4.1')}`);
615
+ throw `SharePoint Framework v${spfxVersion} is not supported in ${SharePointVersion[sp]}`;
616
+ }
624
617
  }
625
- checkNodeVersion(prerequisites, fixes, logger) {
626
- return Promise
627
- .resolve(this.getNodeVersion())
628
- .then((nodeVersion) => {
629
- this.checkStatus('Node', nodeVersion, prerequisites.node, OptionalOrRequired.Required, fixes, logger);
630
- });
618
+ async checkNodeVersion(prerequisites, fixes, logger) {
619
+ const nodeVersion = this.getNodeVersion();
620
+ this.checkStatus('Node', nodeVersion, prerequisites.node, OptionalOrRequired.Required, fixes, logger);
631
621
  }
632
622
  async checkSharePointFrameworkVersion(spfxVersionRequested, fixes, logger) {
633
623
  let spfxVersionDetected = await this.getSPFxVersionFromYoRcFile(logger);
@@ -646,54 +636,42 @@ class SpfxDoctorCommand extends BaseProjectCommand {
646
636
  fixes.push(versionCheck.fix);
647
637
  }
648
638
  }
649
- checkYo(prerequisites, fixes, logger) {
650
- return this
651
- .getPackageVersion('yo', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger)
652
- .then(async (yoVersion) => {
653
- if (yoVersion) {
654
- this.checkStatus('yo', yoVersion, prerequisites.yo, OptionalOrRequired.Required, fixes, logger);
655
- }
656
- else {
657
- await logger.log(formatting.getStatus(CheckStatus.Failure, `yo not found`));
658
- fixes.push(prerequisites.yo.fix);
659
- }
660
- });
639
+ async checkYo(prerequisites, fixes, logger) {
640
+ const yoVersion = await this.getPackageVersion('yo', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger);
641
+ if (yoVersion) {
642
+ this.checkStatus('yo', yoVersion, prerequisites.yo, OptionalOrRequired.Required, fixes, logger);
643
+ }
644
+ else {
645
+ await logger.log(formatting.getStatus(CheckStatus.Failure, `yo not found`));
646
+ fixes.push(prerequisites.yo.fix);
647
+ }
661
648
  }
662
- checkGulpCli(prerequisites, fixes, logger) {
663
- return this
664
- .getPackageVersion('gulp-cli', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger)
665
- .then(async (gulpCliVersion) => {
666
- if (gulpCliVersion) {
667
- this.checkStatus('gulp-cli', gulpCliVersion, prerequisites.gulpCli, OptionalOrRequired.Required, fixes, logger);
668
- }
669
- else {
670
- await logger.log(formatting.getStatus(CheckStatus.Failure, `gulp-cli not found`));
671
- fixes.push(prerequisites.gulpCli.fix);
672
- }
673
- });
649
+ async checkGulpCli(prerequisites, fixes, logger) {
650
+ const gulpCliVersion = await this.getPackageVersion('gulp-cli', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger);
651
+ if (gulpCliVersion) {
652
+ this.checkStatus('gulp-cli', gulpCliVersion, prerequisites.gulpCli, OptionalOrRequired.Required, fixes, logger);
653
+ }
654
+ else {
655
+ await logger.log(formatting.getStatus(CheckStatus.Failure, `gulp-cli not found`));
656
+ fixes.push(prerequisites.gulpCli.fix);
657
+ }
674
658
  }
675
- checkGulp(fixes, logger) {
676
- return this
677
- .getPackageVersion('gulp', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger)
678
- .then(async (gulpVersion) => {
679
- if (gulpVersion) {
680
- await logger.log(formatting.getStatus(CheckStatus.Failure, `gulp should be removed`));
681
- fixes.push('npm un -g gulp');
682
- }
683
- });
659
+ async checkGulp(fixes, logger) {
660
+ const gulpVersion = await this.getPackageVersion('gulp', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger);
661
+ if (gulpVersion) {
662
+ await logger.log(formatting.getStatus(CheckStatus.Failure, `gulp should be removed`));
663
+ fixes.push('npm un -g gulp');
664
+ }
684
665
  }
685
- checkTypeScript(fixes, logger) {
686
- return this
687
- .getPackageVersion('typescript', PackageSearchMode.LocalOnly, HandlePromise.Continue, logger)
688
- .then(async (typeScriptVersion) => {
689
- if (typeScriptVersion) {
690
- await logger.log(formatting.getStatus(CheckStatus.Failure, `typescript v${typeScriptVersion} installed in the project`));
691
- fixes.push('npm un typescript');
692
- }
693
- else {
694
- await logger.log(formatting.getStatus(CheckStatus.Success, `bundled typescript used`));
695
- }
696
- });
666
+ async checkTypeScript(fixes, logger) {
667
+ const typeScriptVersion = await this.getPackageVersion('typescript', PackageSearchMode.LocalOnly, HandlePromise.Continue, logger);
668
+ if (typeScriptVersion) {
669
+ await logger.log(formatting.getStatus(CheckStatus.Failure, `typescript v${typeScriptVersion} installed in the project`));
670
+ fixes.push('npm un typescript');
671
+ }
672
+ else {
673
+ await logger.log(formatting.getStatus(CheckStatus.Success, `bundled typescript used`));
674
+ }
697
675
  }
698
676
  spVersionStringToEnum(sp) {
699
677
  return SharePointVersion[sp.toUpperCase()];
@@ -742,43 +720,35 @@ class SpfxDoctorCommand extends BaseProjectCommand {
742
720
  }
743
721
  }
744
722
  }
745
- getPackageVersion(packageName, searchMode, handlePromise, logger) {
746
- return new Promise((resolve, reject) => {
747
- const args = ['ls', packageName, '--depth=0', '--json'];
748
- if (searchMode === PackageSearchMode.GlobalOnly) {
723
+ async getPackageVersion(packageName, searchMode, handlePromise, logger) {
724
+ const args = ['ls', packageName, '--depth=0', '--json'];
725
+ if (searchMode === PackageSearchMode.GlobalOnly) {
726
+ args.push('-g');
727
+ }
728
+ let version;
729
+ try {
730
+ version = await this.getPackageVersionFromNpm(args, logger);
731
+ }
732
+ catch {
733
+ if (searchMode === PackageSearchMode.LocalAndGlobal) {
749
734
  args.push('-g');
735
+ version = await this.getPackageVersionFromNpm(args, logger);
750
736
  }
751
- this
752
- .getPackageVersionFromNpm(args, logger)
753
- .then((version) => {
754
- return Promise.resolve(version);
755
- })
756
- .catch(() => {
757
- if (searchMode === PackageSearchMode.LocalAndGlobal) {
758
- args.push('-g');
759
- return this.getPackageVersionFromNpm(args, logger);
760
- }
761
- else {
762
- return Promise.resolve('');
763
- }
764
- })
765
- .then((version) => {
766
- if (version) {
767
- resolve(version);
768
- }
769
- else {
770
- if (handlePromise === HandlePromise.Continue) {
771
- resolve('');
772
- }
773
- else {
774
- reject();
775
- }
776
- }
777
- })
778
- .catch((err) => {
779
- reject(err);
780
- });
781
- });
737
+ else {
738
+ version = '';
739
+ }
740
+ }
741
+ if (version) {
742
+ return version;
743
+ }
744
+ else {
745
+ if (handlePromise === HandlePromise.Continue) {
746
+ return '';
747
+ }
748
+ else {
749
+ throw new Error();
750
+ }
751
+ }
782
752
  }
783
753
  getPackageVersionFromNpm(args, logger) {
784
754
  return new Promise(async (resolve, reject) => {
@@ -54,7 +54,7 @@ class SpoFileAddCommand extends SpoCommand {
54
54
  try {
55
55
  try {
56
56
  const requestOptions = {
57
- url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(folderPath)}')`,
57
+ url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(folderPath)}')`,
58
58
  headers: {
59
59
  'accept': 'application/json;odata=nometadata'
60
60
  }
@@ -88,7 +88,7 @@ class SpoFileAddCommand extends SpoCommand {
88
88
  // initiate chunked upload session
89
89
  const uploadId = v4();
90
90
  const requestOptions = {
91
- url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(folderPath)}')/Files/GetByPathOrAddStub(DecodedUrl='${formatting.encodeQueryParameter(fileName)}')/StartUpload(uploadId=guid'${uploadId}')`,
91
+ url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(folderPath)}')/Files/GetByPathOrAddStub(DecodedUrl='${formatting.encodeQueryParameter(fileName)}')/StartUpload(uploadId=guid'${uploadId}')`,
92
92
  headers: {
93
93
  'accept': 'application/json;odata=nometadata'
94
94
  }
@@ -116,7 +116,7 @@ class SpoFileAddCommand extends SpoCommand {
116
116
  await logger.logToStderr('Cancelling upload session due to error...');
117
117
  }
118
118
  const requestOptions = {
119
- url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(folderPath)}')/Files('${formatting.encodeQueryParameter(fileName)}')/cancelupload(uploadId=guid'${uploadId}')`,
119
+ url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(folderPath)}')/Files('${formatting.encodeQueryParameter(fileName)}')/cancelupload(uploadId=guid'${uploadId}')`,
120
120
  headers: {
121
121
  'accept': 'application/json;odata=nometadata'
122
122
  }
@@ -138,7 +138,7 @@ class SpoFileAddCommand extends SpoCommand {
138
138
  const fileBody = fs.readFileSync(fullPath);
139
139
  const bodyLength = fileBody.byteLength;
140
140
  const requestOptions = {
141
- url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(folderPath)}')/Files/Add(url='${formatting.encodeQueryParameter(fileName)}', overwrite=true)`,
141
+ url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(folderPath)}')/Files/Add(url='${formatting.encodeQueryParameter(fileName)}', overwrite=true)`,
142
142
  data: fileBody,
143
143
  headers: {
144
144
  'accept': 'application/json;odata=nometadata',
@@ -180,7 +180,7 @@ class SpoFileAddCommand extends SpoCommand {
180
180
  }
181
181
  // approve the existing file with given comment
182
182
  const requestOptions = {
183
- url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(folderPath)}')/Files('${formatting.encodeQueryParameter(fileName)}')/approve(comment='${formatting.encodeQueryParameter(args.options.approveComment || '')}')`,
183
+ url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(folderPath)}')/Files('${formatting.encodeQueryParameter(fileName)}')/approve(comment='${formatting.encodeQueryParameter(args.options.approveComment || '')}')`,
184
184
  headers: {
185
185
  'accept': 'application/json;odata=nometadata'
186
186
  },
@@ -197,7 +197,7 @@ class SpoFileAddCommand extends SpoCommand {
197
197
  }
198
198
  // publish the existing file with given comment
199
199
  const requestOptions = {
200
- url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(folderPath)}')/Files('${formatting.encodeQueryParameter(fileName)}')/publish(comment='${formatting.encodeQueryParameter(args.options.publishComment || '')}')`,
200
+ url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(folderPath)}')/Files('${formatting.encodeQueryParameter(fileName)}')/publish(comment='${formatting.encodeQueryParameter(args.options.publishComment || '')}')`,
201
201
  headers: {
202
202
  'accept': 'application/json;odata=nometadata'
203
203
  },
@@ -211,7 +211,7 @@ class SpoFileAddCommand extends SpoCommand {
211
211
  // in a case the command has done checkout
212
212
  // then have to rollback the checkout
213
213
  const requestOptions = {
214
- url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(folderPath)}')/Files('${formatting.encodeQueryParameter(fileName)}')/UndoCheckOut()`
214
+ url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(folderPath)}')/Files('${formatting.encodeQueryParameter(fileName)}')/UndoCheckOut()`
215
215
  };
216
216
  try {
217
217
  await request.post(requestOptions);
@@ -250,14 +250,14 @@ class SpoFileAddCommand extends SpoCommand {
250
250
  async fileCheckOut(fileName, webUrl, folder) {
251
251
  // check if file already exists, otherwise it can't be checked out
252
252
  const requestOptionsGetFile = {
253
- url: `${webUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(folder)}')/Files('${formatting.encodeQueryParameter(fileName)}')`,
253
+ url: `${webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(folder)}')/Files('${formatting.encodeQueryParameter(fileName)}')`,
254
254
  headers: {
255
255
  'accept': 'application/json;odata=nometadata'
256
256
  }
257
257
  };
258
258
  await request.get(requestOptionsGetFile);
259
259
  const requestOptionsCheckOut = {
260
- url: `${webUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(folder)}')/Files('${formatting.encodeQueryParameter(fileName)}')/CheckOut()`,
260
+ url: `${webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(folder)}')/Files('${formatting.encodeQueryParameter(fileName)}')/CheckOut()`,
261
261
  headers: {
262
262
  'accept': 'application/json;odata=nometadata'
263
263
  },
@@ -281,7 +281,7 @@ class SpoFileAddCommand extends SpoCommand {
281
281
  fileBuffer = fileBuffer.slice(0, readCount);
282
282
  }
283
283
  const requestOptions = {
284
- url: `${info.WebUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(info.FolderPath)}')/Files('${formatting.encodeQueryParameter(info.Name)}')/${isLastChunk ? 'Finish' : 'Continue'}Upload(uploadId=guid'${info.Id}',fileOffset=${offset})`,
284
+ url: `${info.WebUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(info.FolderPath)}')/Files('${formatting.encodeQueryParameter(info.Name)}')/${isLastChunk ? 'Finish' : 'Continue'}Upload(uploadId=guid'${info.Id}',fileOffset=${offset})`,
285
285
  data: fileBuffer,
286
286
  headers: {
287
287
  'accept': 'application/json;odata=nometadata',
@@ -338,7 +338,7 @@ class SpoFileAddCommand extends SpoCommand {
338
338
  await logger.logToStderr(`Getting list details in order to get its available content types afterwards...`);
339
339
  }
340
340
  const requestOptions = {
341
- url: `${webUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(folder)}')/Files('${formatting.encodeQueryParameter(fileName)}')/ListItemAllFields/ParentList?$Select=Id,EnableModeration,EnableVersioning,EnableMinorVersions`,
341
+ url: `${webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(folder)}')/Files('${formatting.encodeQueryParameter(fileName)}')/ListItemAllFields/ParentList?$Select=Id,EnableModeration,EnableVersioning,EnableMinorVersions`,
342
342
  headers: {
343
343
  'accept': 'application/json;odata=nometadata'
344
344
  },
@@ -361,7 +361,7 @@ class SpoFileAddCommand extends SpoCommand {
361
361
  }
362
362
  // update the existing file list item fields
363
363
  const requestOptions = {
364
- url: `${webUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(folderPath)}')/Files('${formatting.encodeQueryParameter(fileName)}')/ListItemAllFields/ValidateUpdateListItem()`,
364
+ url: `${webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(folderPath)}')/Files('${formatting.encodeQueryParameter(fileName)}')/ListItemAllFields/ValidateUpdateListItem()`,
365
365
  headers: {
366
366
  'accept': 'application/json;odata=nometadata'
367
367
  },
@@ -380,7 +380,7 @@ class SpoFileAddCommand extends SpoCommand {
380
380
  }
381
381
  async fileCheckIn(args, fileName) {
382
382
  const requestOptions = {
383
- url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting.encodeQueryParameter(args.options.folder)}')/Files('${formatting.encodeQueryParameter(fileName)}')/CheckIn(comment='${formatting.encodeQueryParameter(args.options.checkInComment || '')}',checkintype=0)`,
383
+ url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(args.options.folder)}')/Files('${formatting.encodeQueryParameter(fileName)}')/CheckIn(comment='${formatting.encodeQueryParameter(args.options.checkInComment || '')}',checkintype=0)`,
384
384
  headers: {
385
385
  'accept': 'application/json;odata=nometadata'
386
386
  },
@@ -55,7 +55,7 @@ class SpoFileCheckinCommand extends SpoCommand {
55
55
  }
56
56
  if (args.options.url) {
57
57
  const serverRelativePath = urlUtil.getServerRelativePath(args.options.webUrl, args.options.url);
58
- requestUrl = `${args.options.webUrl}/_api/web/GetFileByServerRelativeUrl('${formatting.encodeQueryParameter(serverRelativePath)}')/checkin(comment='${comment}',checkintype=${type})`;
58
+ requestUrl = `${args.options.webUrl}/_api/web/GetFileByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativePath)}')/checkin(comment='${comment}',checkintype=${type})`;
59
59
  }
60
60
  const requestOptions = {
61
61
  url: requestUrl,
@@ -35,7 +35,7 @@ class SpoFileCheckoutCommand extends SpoCommand {
35
35
  }
36
36
  if (args.options.url) {
37
37
  const serverRelativePath = urlUtil.getServerRelativePath(args.options.webUrl, args.options.url);
38
- requestUrl = `${args.options.webUrl}/_api/web/GetFileByServerRelativeUrl('${formatting.encodeQueryParameter(serverRelativePath)}')/checkout`;
38
+ requestUrl = `${args.options.webUrl}/_api/web/GetFileByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativePath)}')/checkout`;
39
39
  }
40
40
  const requestOptions = {
41
41
  url: requestUrl,
@@ -3,7 +3,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
3
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
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
- var _SpoFileCopyCommand_instances, _SpoFileCopyCommand_initTelemetry, _SpoFileCopyCommand_initOptions, _SpoFileCopyCommand_initValidators;
6
+ var _SpoFileCopyCommand_instances, _SpoFileCopyCommand_initTelemetry, _SpoFileCopyCommand_initOptions, _SpoFileCopyCommand_initValidators, _SpoFileCopyCommand_initOptionSets;
7
7
  import request from '../../../../request.js';
8
8
  import { urlUtil } from '../../../../utils/urlUtil.js';
9
9
  import { validation } from '../../../../utils/validation.js';
@@ -23,10 +23,12 @@ class SpoFileCopyCommand extends SpoCommand {
23
23
  __classPrivateFieldGet(this, _SpoFileCopyCommand_instances, "m", _SpoFileCopyCommand_initTelemetry).call(this);
24
24
  __classPrivateFieldGet(this, _SpoFileCopyCommand_instances, "m", _SpoFileCopyCommand_initOptions).call(this);
25
25
  __classPrivateFieldGet(this, _SpoFileCopyCommand_instances, "m", _SpoFileCopyCommand_initValidators).call(this);
26
+ __classPrivateFieldGet(this, _SpoFileCopyCommand_instances, "m", _SpoFileCopyCommand_initOptionSets).call(this);
26
27
  }
27
28
  async commandAction(logger, args) {
28
29
  try {
29
- const sourcePath = this.getAbsoluteUrl(args.options.webUrl, urlUtil.getServerRelativePath(args.options.webUrl, args.options.sourceUrl));
30
+ const sourceServerRelativePath = await this.getSourcePath(logger, args.options);
31
+ const sourcePath = this.getAbsoluteUrl(args.options.webUrl, sourceServerRelativePath);
30
32
  let destinationPath = this.getAbsoluteUrl(args.options.webUrl, args.options.targetUrl) + '/';
31
33
  if (args.options.newName) {
32
34
  destinationPath += args.options.newName;
@@ -54,6 +56,7 @@ class SpoFileCopyCommand extends SpoCommand {
54
56
  overwrite: args.options.nameConflictBehavior === 'replace',
55
57
  options: {
56
58
  KeepBoth: args.options.nameConflictBehavior === 'rename',
59
+ ResetAuthorAndCreatedOnCopy: !!args.options.resetAuthorAndCreated,
57
60
  ShouldBypassSharedLocks: !!args.options.bypassSharedLock
58
61
  }
59
62
  }
@@ -64,6 +67,23 @@ class SpoFileCopyCommand extends SpoCommand {
64
67
  this.handleRejectedODataJsonPromise(err);
65
68
  }
66
69
  }
70
+ async getSourcePath(logger, options) {
71
+ if (options.sourceUrl) {
72
+ return urlUtil.getServerRelativePath(options.webUrl, options.sourceUrl);
73
+ }
74
+ if (this.verbose) {
75
+ await logger.logToStderr(`Retrieving server-relative path for file with ID '${options.sourceId}'...`);
76
+ }
77
+ const requestOptions = {
78
+ url: `${options.webUrl}/_api/Web/GetFileById('${options.sourceId}')?$select=ServerRelativePath`,
79
+ headers: {
80
+ accept: 'application/json;odata=nometadata'
81
+ },
82
+ responseType: 'json'
83
+ };
84
+ const file = await request.get(requestOptions);
85
+ return file.ServerRelativePath.DecodedUrl;
86
+ }
67
87
  getAbsoluteUrl(webUrl, url) {
68
88
  return url.startsWith('https://') ? url : urlUtil.getAbsoluteUrl(webUrl, url);
69
89
  }
@@ -71,8 +91,11 @@ class SpoFileCopyCommand extends SpoCommand {
71
91
  _SpoFileCopyCommand_instances = new WeakSet(), _SpoFileCopyCommand_initTelemetry = function _SpoFileCopyCommand_initTelemetry() {
72
92
  this.telemetry.push((args) => {
73
93
  Object.assign(this.telemetryProperties, {
94
+ sourceUrl: typeof args.options.sourceUrl !== 'undefined',
95
+ sourceId: typeof args.options.sourceId !== 'undefined',
74
96
  newName: typeof args.options.newName !== 'undefined',
75
97
  nameConflictBehavior: args.options.nameConflictBehavior || false,
98
+ resetAuthorAndCreated: !!args.options.resetAuthorAndCreated,
76
99
  bypassSharedLock: !!args.options.bypassSharedLock
77
100
  });
78
101
  });
@@ -80,7 +103,9 @@ _SpoFileCopyCommand_instances = new WeakSet(), _SpoFileCopyCommand_initTelemetry
80
103
  this.options.unshift({
81
104
  option: '-u, --webUrl <webUrl>'
82
105
  }, {
83
- option: '-s, --sourceUrl <sourceUrl>'
106
+ option: '-s, --sourceUrl [sourceUrl]'
107
+ }, {
108
+ option: '-i, --sourceId [sourceId]'
84
109
  }, {
85
110
  option: '-t, --targetUrl <targetUrl>'
86
111
  }, {
@@ -88,6 +113,8 @@ _SpoFileCopyCommand_instances = new WeakSet(), _SpoFileCopyCommand_initTelemetry
88
113
  }, {
89
114
  option: '--nameConflictBehavior [nameConflictBehavior]',
90
115
  autocomplete: this.nameConflictBehaviorOptions
116
+ }, {
117
+ option: '--resetAuthorAndCreated'
91
118
  }, {
92
119
  option: '--bypassSharedLock'
93
120
  });
@@ -97,11 +124,16 @@ _SpoFileCopyCommand_instances = new WeakSet(), _SpoFileCopyCommand_initTelemetry
97
124
  if (isValidSharePointUrl !== true) {
98
125
  return isValidSharePointUrl;
99
126
  }
127
+ if (args.options.sourceId && !validation.isValidGuid(args.options.sourceId)) {
128
+ return `${args.options.sourceId} is not a valid GUID for sourceId.`;
129
+ }
100
130
  if (args.options.nameConflictBehavior && this.nameConflictBehaviorOptions.indexOf(args.options.nameConflictBehavior) === -1) {
101
- return `${args.options.nameConflictBehavior} is not a valid nameConflictBehavior value. Allowed values: ${this.nameConflictBehaviorOptions.join(', ')}`;
131
+ return `${args.options.nameConflictBehavior} is not a valid nameConflictBehavior value. Allowed values: ${this.nameConflictBehaviorOptions.join(', ')}.`;
102
132
  }
103
133
  return true;
104
134
  });
135
+ }, _SpoFileCopyCommand_initOptionSets = function _SpoFileCopyCommand_initOptionSets() {
136
+ this.optionSets.push({ options: ['sourceUrl', 'sourceId'] });
105
137
  };
106
138
  export default new SpoFileCopyCommand();
107
139
  //# sourceMappingURL=file-copy.js.map
@@ -56,7 +56,7 @@ class SpoFileListCommand extends SpoCommand {
56
56
  }
57
57
  const allFiles = [];
58
58
  const serverRelativePath = urlUtil.getServerRelativePath(args.options.webUrl, folderUrl);
59
- const requestUrl = `${args.options.webUrl}/_api/web/GetFolderByServerRelativeUrl(@url)/Files?@url='${formatting.encodeQueryParameter(serverRelativePath)}'`;
59
+ const requestUrl = `${args.options.webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativePath)}')/Files`;
60
60
  const queryParams = [`$skip=${skip}`, `$top=${SpoFileListCommand.pageSize}`];
61
61
  if (fieldProperties.expandProperties.length > 0) {
62
62
  queryParams.push(`$expand=${fieldProperties.expandProperties.join(',')}`);
@@ -68,7 +68,7 @@ class SpoFileListCommand extends SpoCommand {
68
68
  queryParams.push(`$filter=${args.options.filter}`);
69
69
  }
70
70
  const requestOptions = {
71
- url: `${requestUrl}&${queryParams.join('&')}`,
71
+ url: `${requestUrl}?${queryParams.join('&')}`,
72
72
  method: 'GET',
73
73
  headers: {
74
74
  'accept': 'application/json;odata=nometadata'
@@ -90,9 +90,9 @@ class SpoFileListCommand extends SpoCommand {
90
90
  }
91
91
  const allFolders = [];
92
92
  const serverRelativeUrl = urlUtil.getServerRelativePath(args.options.webUrl, folderUrl);
93
- const requestUrl = `${args.options.webUrl}/_api/web/GetFolderByServerRelativeUrl(@url)/Folders?@url='${formatting.encodeQueryParameter(serverRelativeUrl)}'`;
93
+ const requestUrl = `${args.options.webUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}')/Folders`;
94
94
  const requestOptions = {
95
- url: `${requestUrl}&$skip=${skip}&$top=${SpoFileListCommand.pageSize}&$select=ServerRelativeUrl`,
95
+ url: `${requestUrl}?$skip=${skip}&$top=${SpoFileListCommand.pageSize}&$select=ServerRelativeUrl`,
96
96
  method: 'GET',
97
97
  headers: {
98
98
  'accept': 'application/json;odata=nometadata'