@pnp/cli-microsoft365 6.3.0-beta.655c566 → 6.3.0-beta.80fcd21

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 (127) hide show
  1. package/dist/appInsights.js +2 -1
  2. package/dist/cli/Cli.js +58 -1
  3. package/dist/m365/aad/commands/license/license-list.js +41 -0
  4. package/dist/m365/aad/commands/user/user-add.js +223 -0
  5. package/dist/m365/aad/commands/user/user-license-add.js +88 -0
  6. package/dist/m365/aad/commands/user/user-license-list.js +99 -0
  7. package/dist/m365/aad/commands/user/user-license-remove.js +114 -0
  8. package/dist/m365/aad/commands/user/user-recyclebinitem-clear.js +103 -0
  9. package/dist/m365/aad/commands/user/user-recyclebinitem-list.js +41 -0
  10. package/dist/m365/aad/commands/user/user-recyclebinitem-remove.js +92 -0
  11. package/dist/m365/aad/commands/user/user-recyclebinitem-restore.js +77 -0
  12. package/dist/m365/aad/commands/user/user-remove.js +107 -0
  13. package/dist/m365/aad/commands.js +10 -0
  14. package/dist/m365/flow/commands/environment/FlowEnvironmentDetails.js +3 -0
  15. package/dist/m365/flow/commands/environment/environment-get.js +26 -11
  16. package/dist/m365/pa/commands/environment/environment-get.js +13 -5
  17. package/dist/m365/planner/commands/plan/plan-get.js +17 -10
  18. package/dist/m365/planner/commands/plan/plan-remove.js +1 -1
  19. package/dist/m365/planner/commands/roster/roster-member-remove.js +140 -0
  20. package/dist/m365/planner/commands.js +1 -0
  21. package/dist/m365/pp/commands/environment/environment-get.js +18 -9
  22. package/dist/m365/purview/commands/retentionevent/retentionevent-get.js +3 -4
  23. package/dist/m365/purview/commands/retentionevent/retentionevent-list.js +3 -4
  24. package/dist/m365/purview/commands/retentionevent/retentionevent-remove.js +97 -0
  25. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-get.js +5 -0
  26. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-list.js +3 -4
  27. package/dist/m365/purview/commands/retentionlabel/retentionlabel-add.js +5 -0
  28. package/dist/m365/purview/commands/retentionlabel/retentionlabel-get.js +5 -0
  29. package/dist/m365/purview/commands/retentionlabel/retentionlabel-list.js +5 -0
  30. package/dist/m365/purview/commands/retentionlabel/retentionlabel-remove.js +5 -0
  31. package/dist/m365/purview/commands/retentionlabel/retentionlabel-set.js +11 -1
  32. package/dist/m365/purview/commands.js +1 -0
  33. package/dist/m365/spo/commands/customaction/customaction-get.js +17 -66
  34. package/dist/m365/spo/commands/customaction/customaction-list.js +2 -36
  35. package/dist/m365/spo/commands/customaction/customaction-remove.js +11 -18
  36. package/dist/m365/spo/commands/file/file-move.js +0 -2
  37. package/dist/m365/spo/commands/folder/folder-copy.js +0 -2
  38. package/dist/m365/spo/commands/folder/folder-move.js +0 -2
  39. package/dist/m365/spo/commands/site/site-add.js +0 -3
  40. package/dist/m365/spo/commands/site/site-remove.js +0 -3
  41. package/dist/m365/spo/commands/site/site-set.js +0 -2
  42. package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-remove.js +0 -1
  43. package/dist/m365/teams/commands/team/team-add.js +3 -8
  44. package/dist/utils/aadUser.js +38 -0
  45. package/dist/utils/planner.js +1 -4
  46. package/dist/utils/session.js +18 -0
  47. package/dist/utils/spo.js +64 -12
  48. package/docs/docs/cmd/aad/license/license-list.md +87 -0
  49. package/docs/docs/cmd/aad/user/user-add.md +168 -0
  50. package/docs/docs/cmd/aad/user/user-license-add.md +108 -0
  51. package/docs/docs/cmd/aad/user/user-license-list.md +98 -0
  52. package/docs/docs/cmd/aad/user/user-license-remove.md +43 -0
  53. package/docs/docs/cmd/aad/user/user-recyclebinitem-clear.md +42 -0
  54. package/docs/docs/cmd/aad/user/user-recyclebinitem-list.md +82 -0
  55. package/docs/docs/cmd/aad/user/user-recyclebinitem-remove.md +45 -0
  56. package/docs/docs/cmd/aad/user/user-recyclebinitem-restore.md +99 -0
  57. package/docs/docs/cmd/aad/user/user-remove.md +51 -0
  58. package/docs/docs/cmd/aad/user/user-set.md +1 -1
  59. package/docs/docs/cmd/flow/environment/environment-get.md +31 -3
  60. package/docs/docs/cmd/login.md +26 -0
  61. package/docs/docs/cmd/logout.md +4 -0
  62. package/docs/docs/cmd/pa/environment/environment-get.md +8 -2
  63. package/docs/docs/cmd/planner/plan/plan-get.md +12 -12
  64. package/docs/docs/cmd/planner/roster/roster-member-remove.md +51 -0
  65. package/docs/docs/cmd/purview/retentionevent/retentionevent-list.md +1 -1
  66. package/docs/docs/cmd/purview/retentionevent/retentionevent-remove.md +45 -0
  67. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-get.md +3 -0
  68. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-list.md +1 -1
  69. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-add.md +3 -0
  70. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-get.md +3 -0
  71. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-list.md +3 -0
  72. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-remove.md +3 -0
  73. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-set.md +3 -0
  74. package/docs/docs/cmd/request.md +74 -0
  75. package/docs/docs/cmd/spo/homesite/homesite-get.md +20 -1
  76. package/docs/docs/cmd/spo/homesite/homesite-remove.md +8 -2
  77. package/docs/docs/cmd/spo/homesite/homesite-set.md +8 -2
  78. package/docs/docs/cmd/spo/hubsite/hubsite-connect.md +9 -9
  79. package/docs/docs/cmd/spo/hubsite/hubsite-data-get.md +34 -5
  80. package/docs/docs/cmd/spo/hubsite/hubsite-disconnect.md +6 -6
  81. package/docs/docs/cmd/spo/hubsite/hubsite-get.md +36 -19
  82. package/docs/docs/cmd/spo/hubsite/hubsite-list.md +59 -1
  83. package/docs/docs/cmd/spo/hubsite/hubsite-register.md +30 -1
  84. package/docs/docs/cmd/spo/hubsite/hubsite-rights-grant.md +6 -6
  85. package/docs/docs/cmd/spo/hubsite/hubsite-rights-revoke.md +4 -4
  86. package/docs/docs/cmd/spo/hubsite/hubsite-set.md +40 -15
  87. package/docs/docs/cmd/spo/hubsite/hubsite-unregister.md +4 -4
  88. package/docs/docs/cmd/spo/knowledgehub/knowledgehub-get.md +7 -1
  89. package/docs/docs/cmd/spo/knowledgehub/knowledgehub-remove.md +9 -3
  90. package/docs/docs/cmd/spo/knowledgehub/knowledgehub-set.md +8 -2
  91. package/docs/docs/cmd/spo/list/list-add.md +123 -57
  92. package/docs/docs/cmd/spo/list/list-contenttype-add.md +50 -5
  93. package/docs/docs/cmd/spo/list/list-contenttype-default-set.md +4 -4
  94. package/docs/docs/cmd/spo/list/list-contenttype-list.md +49 -4
  95. package/docs/docs/cmd/spo/list/list-contenttype-remove.md +6 -6
  96. package/docs/docs/cmd/spo/list/list-get.md +70 -4
  97. package/docs/docs/cmd/spo/list/list-list.md +70 -2
  98. package/docs/docs/cmd/spo/list/list-remove.md +6 -6
  99. package/docs/docs/cmd/spo/list/list-retentionlabel-ensure.md +2 -2
  100. package/docs/docs/cmd/spo/list/list-retentionlabel-get.md +36 -3
  101. package/docs/docs/cmd/spo/list/list-retentionlabel-remove.md +3 -3
  102. package/docs/docs/cmd/spo/list/list-roleassignment-add.md +6 -6
  103. package/docs/docs/cmd/spo/list/list-roleassignment-remove.md +3 -3
  104. package/docs/docs/cmd/spo/list/list-roleinheritance-break.md +9 -9
  105. package/docs/docs/cmd/spo/list/list-roleinheritance-reset.md +7 -7
  106. package/docs/docs/cmd/spo/list/list-set.md +61 -61
  107. package/docs/docs/cmd/spo/list/list-sitescript-get.md +35 -3
  108. package/docs/docs/cmd/spo/list/list-view-add.md +66 -5
  109. package/docs/docs/cmd/spo/list/list-view-field-add.md +10 -10
  110. package/docs/docs/cmd/spo/list/list-view-get.md +61 -0
  111. package/docs/docs/cmd/spo/list/list-view-list.md +61 -0
  112. package/docs/docs/cmd/spo/list/list-view-set.md +1 -1
  113. package/docs/docs/cmd/spo/list/list-webhook-add.md +19 -0
  114. package/docs/docs/cmd/spo/list/list-webhook-get.md +19 -0
  115. package/docs/docs/cmd/spo/list/list-webhook-list.md +19 -0
  116. package/docs/docs/cmd/spo/listitem/listitem-add.md +29 -0
  117. package/docs/docs/cmd/spo/listitem/listitem-attachment-list.md +17 -2
  118. package/docs/docs/cmd/spo/listitem/listitem-get.md +57 -0
  119. package/docs/docs/cmd/spo/listitem/listitem-isrecord.md +6 -0
  120. package/docs/docs/cmd/spo/listitem/listitem-list.md +28 -0
  121. package/docs/docs/cmd/spo/listitem/listitem-record-declare.md +15 -0
  122. package/docs/docs/cmd/spo/listitem/listitem-set.md +30 -0
  123. package/docs/docs/cmd/spo/navigation/navigation-node-add.md +22 -0
  124. package/docs/docs/cmd/status.md +46 -0
  125. package/docs/docs/cmd/version.md +26 -0
  126. package/npm-shrinkwrap.json +912 -876
  127. package/package.json +13 -12
@@ -15,8 +15,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
15
15
  };
16
16
  var _SpoCustomActionGetCommand_instances, _SpoCustomActionGetCommand_initTelemetry, _SpoCustomActionGetCommand_initOptions, _SpoCustomActionGetCommand_initValidators, _SpoCustomActionGetCommand_initOptionSets;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- const request_1 = require("../../../../request");
19
18
  const formatting_1 = require("../../../../utils/formatting");
19
+ const spo_1 = require("../../../../utils/spo");
20
20
  const validation_1 = require("../../../../utils/validation");
21
21
  const SpoCommand_1 = require("../../../base/SpoCommand");
22
22
  const commands_1 = require("../../commands");
@@ -38,19 +38,8 @@ class SpoCustomActionGetCommand extends SpoCommand_1.default {
38
38
  commandAction(logger, args) {
39
39
  return __awaiter(this, void 0, void 0, function* () {
40
40
  try {
41
- let customAction;
42
- if (args.options.scope && args.options.scope.toLowerCase() !== "all") {
43
- customAction = yield this.getCustomAction(args.options);
44
- }
45
- else {
46
- customAction = yield this.searchAllScopes(args.options);
47
- }
48
- if (customAction["odata.null"] === true) {
49
- if (this.verbose) {
50
- logger.logToStderr(`Custom action with id ${args.options.id} not found`);
51
- }
52
- }
53
- else {
41
+ const customAction = yield this.getCustomAction(args.options);
42
+ if (customAction) {
54
43
  logger.log({
55
44
  ClientSideComponentId: customAction.ClientSideComponentId,
56
45
  ClientSideComponentProperties: customAction.ClientSideComponentProperties,
@@ -80,60 +69,22 @@ class SpoCustomActionGetCommand extends SpoCommand_1.default {
80
69
  });
81
70
  }
82
71
  getCustomAction(options) {
83
- const filter = options.id ?
84
- `('${formatting_1.formatting.encodeQueryParameter(options.id)}')` :
85
- `?$filter=Title eq '${formatting_1.formatting.encodeQueryParameter(options.title)}'`;
86
- const requestOptions = {
87
- url: `${options.webUrl}/_api/${options.scope}/UserCustomActions${filter}`,
88
- headers: {
89
- accept: 'application/json;odata=nometadata'
90
- },
91
- responseType: 'json'
92
- };
93
- if (options.id) {
94
- return request_1.default
95
- .get(requestOptions)
96
- .then((res) => {
97
- return Promise.resolve(res);
98
- });
99
- }
100
- return request_1.default
101
- .get(requestOptions)
102
- .then((res) => {
103
- if (res.value.length === 1) {
104
- return Promise.resolve(res.value[0]);
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ if (options.id) {
74
+ const customAction = yield spo_1.spo.getCustomActionById(options.webUrl, options.id, options.scope);
75
+ if (!customAction) {
76
+ throw `No user custom action with id '${options.id}' found`;
77
+ }
78
+ return customAction;
105
79
  }
106
- if (res.value.length === 0) {
107
- return Promise.reject(`No user custom action with title '${options.title}' found`);
80
+ const customActions = yield spo_1.spo.getCustomActions(options.webUrl, options.scope, `Title eq '${formatting_1.formatting.encodeQueryParameter(options.title)}'`);
81
+ if (customActions.length === 1) {
82
+ return customActions[0];
108
83
  }
109
- return Promise.reject(`Multiple user custom actions with title '${options.title}' found. Please disambiguate using IDs: ${res.value.map(a => a.Id).join(', ')}`);
110
- });
111
- }
112
- /**
113
- * Get request with `web` scope is send first.
114
- * If custom action not found then
115
- * another get request is send with `site` scope.
116
- */
117
- searchAllScopes(options) {
118
- return new Promise((resolve, reject) => {
119
- options.scope = "Web";
120
- this
121
- .getCustomAction(options)
122
- .then((webResult) => {
123
- if (webResult["odata.null"] !== true) {
124
- return resolve(webResult);
125
- }
126
- options.scope = "Site";
127
- this
128
- .getCustomAction(options)
129
- .then((siteResult) => {
130
- return resolve(siteResult);
131
- }, (err) => {
132
- reject(err);
133
- });
134
- }, (err) => {
135
- reject(err);
136
- });
84
+ if (customActions.length === 0) {
85
+ throw `No user custom action with title '${options.title}' found`;
86
+ }
87
+ throw `Multiple user custom actions with title '${options.title}' found. Please disambiguate using IDs: ${customActions.map(a => a.Id).join(', ')}`;
137
88
  });
138
89
  }
139
90
  humanizeScope(scope) {
@@ -15,7 +15,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
15
15
  };
16
16
  var _SpoCustomActionListCommand_instances, _SpoCustomActionListCommand_initTelemetry, _SpoCustomActionListCommand_initOptions, _SpoCustomActionListCommand_initValidators;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- const odata_1 = require("../../../../utils/odata");
18
+ const spo_1 = require("../../../../utils/spo");
19
19
  const validation_1 = require("../../../../utils/validation");
20
20
  const SpoCommand_1 = require("../../../base/SpoCommand");
21
21
  const commands_1 = require("../../commands");
@@ -44,13 +44,7 @@ class SpoCustomActionListCommand extends SpoCommand_1.default {
44
44
  logger.logToStderr(`Attempt to get custom actions list with scope: ${scope}`);
45
45
  logger.logToStderr('');
46
46
  }
47
- let customActions;
48
- if (scope && scope.toLowerCase() !== "all") {
49
- customActions = yield this.getCustomActions(args.options);
50
- }
51
- else {
52
- customActions = yield this.searchAllScopes(args.options);
53
- }
47
+ const customActions = yield spo_1.spo.getCustomActions(args.options.webUrl, args.options.scope);
54
48
  if (customActions.length === 0) {
55
49
  if (this.verbose) {
56
50
  logger.logToStderr(`Custom actions not found`);
@@ -68,34 +62,6 @@ class SpoCustomActionListCommand extends SpoCommand_1.default {
68
62
  }
69
63
  });
70
64
  }
71
- getCustomActions(options) {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- const response = yield odata_1.odata.getAllItems(`${options.webUrl}/_api/${options.scope}/UserCustomActions`);
74
- return response;
75
- });
76
- }
77
- /**
78
- * Two REST GET requests with `web` and `site` scope are sent.
79
- * The results are combined in one array.
80
- */
81
- searchAllScopes(options) {
82
- return new Promise((resolve, reject) => {
83
- options.scope = "Web";
84
- let webCustomActions = [];
85
- this
86
- .getCustomActions(options)
87
- .then((customActions) => {
88
- webCustomActions = customActions;
89
- options.scope = "Site";
90
- return this.getCustomActions(options);
91
- })
92
- .then((siteCustomActions) => {
93
- resolve(siteCustomActions.concat(webCustomActions));
94
- }, (err) => {
95
- reject(err);
96
- });
97
- });
98
- }
99
65
  humanizeScope(scope) {
100
66
  switch (scope) {
101
67
  case 2:
@@ -18,6 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const Cli_1 = require("../../../../cli/Cli");
19
19
  const request_1 = require("../../../../request");
20
20
  const formatting_1 = require("../../../../utils/formatting");
21
+ const spo_1 = require("../../../../utils/spo");
21
22
  const validation_1 = require("../../../../utils/validation");
22
23
  const SpoCommand_1 = require("../../../base/SpoCommand");
23
24
  const commands_1 = require("../../commands");
@@ -74,26 +75,18 @@ class SpoCustomActionRemoveCommand extends SpoCommand_1.default {
74
75
  });
75
76
  }
76
77
  getCustomActionId(options) {
77
- if (options.id) {
78
- return Promise.resolve(options.id);
79
- }
80
- const customActionRequestOptions = {
81
- url: `${options.webUrl}/_api/${options.scope}/UserCustomActions?$filter=Title eq '${formatting_1.formatting.encodeQueryParameter(options.title)}'`,
82
- headers: {
83
- accept: 'application/json;odata=nometadata'
84
- },
85
- responseType: 'json'
86
- };
87
- return request_1.default
88
- .get(customActionRequestOptions)
89
- .then((res) => {
90
- if (res.value.length === 1) {
91
- return Promise.resolve(res.value[0].Id);
78
+ return __awaiter(this, void 0, void 0, function* () {
79
+ if (options.id) {
80
+ return Promise.resolve(options.id);
81
+ }
82
+ const customActions = yield spo_1.spo.getCustomActions(options.webUrl, options.scope, `Title eq '${formatting_1.formatting.encodeQueryParameter(options.title)}'`);
83
+ if (customActions.length === 1) {
84
+ return customActions[0].Id;
92
85
  }
93
- if (res.value.length === 0) {
94
- return Promise.reject(`No user custom action with title '${options.title}' found`);
86
+ if (customActions.length === 0) {
87
+ throw `No user custom action with title '${options.title}' found`;
95
88
  }
96
- return Promise.reject(`Multiple user custom actions with title '${options.title}' found. Please disambiguate using IDs: ${res.value.map(a => a.Id).join(', ')}`);
89
+ throw `Multiple user custom actions with title '${options.title}' found. Please disambiguate using IDs: ${customActions.map(a => a.Id).join(', ')}`;
97
90
  });
98
91
  }
99
92
  removeScopedCustomAction(options) {
@@ -82,7 +82,6 @@ class SpoFileMoveCommand extends SpoCommand_1.default {
82
82
  responseType: 'json'
83
83
  };
84
84
  const jobInfo = yield request_1.default.post(requestOptions);
85
- this.dots = '';
86
85
  const copyJobInfo = jobInfo.value[0];
87
86
  const progressPollInterval = 1800; // 30 * 60; //used previously implemented interval. The API does not provide guidance on what value should be used.
88
87
  yield new Promise((resolve, reject) => {
@@ -94,7 +93,6 @@ class SpoFileMoveCommand extends SpoCommand_1.default {
94
93
  resolve,
95
94
  reject,
96
95
  logger,
97
- dots: this.dots,
98
96
  debug: this.debug,
99
97
  verbose: this.verbose
100
98
  });
@@ -64,7 +64,6 @@ class SpoFolderCopyCommand extends SpoCommand_1.default {
64
64
  };
65
65
  try {
66
66
  const jobInfo = yield request_1.default.post(requestOptions);
67
- this.dots = '';
68
67
  const copyJobInfo = jobInfo.value[0];
69
68
  const progressPollInterval = 30 * 60; //used previously implemented interval. The API does not provide guidance on what value should be used.
70
69
  yield new Promise((resolve, reject) => {
@@ -76,7 +75,6 @@ class SpoFolderCopyCommand extends SpoCommand_1.default {
76
75
  resolve,
77
76
  reject,
78
77
  logger,
79
- dots: this.dots,
80
78
  debug: this.debug,
81
79
  verbose: this.verbose
82
80
  });
@@ -65,7 +65,6 @@ class SpoFolderMoveCommand extends SpoCommand_1.default {
65
65
  };
66
66
  try {
67
67
  const jobInfo = yield request_1.default.post(requestOptions);
68
- this.dots = '';
69
68
  const copyJobInfo = jobInfo.value[0];
70
69
  const progressPollInterval = 30 * 60; //used previously implemented interval. The API does not provide guidance on what value should be used.
71
70
  yield new Promise((resolve, reject) => {
@@ -77,7 +76,6 @@ class SpoFolderMoveCommand extends SpoCommand_1.default {
77
76
  resolve,
78
77
  reject,
79
78
  logger,
80
- dots: this.dots,
81
79
  debug: this.debug,
82
80
  verbose: this.verbose
83
81
  });
@@ -166,7 +166,6 @@ class SpoSiteAddCommand extends SpoCommand_1.default {
166
166
  }
167
167
  createClassicSite(logger, args) {
168
168
  return __awaiter(this, void 0, void 0, function* () {
169
- this.dots = '';
170
169
  try {
171
170
  this.spoAdminUrl = yield spo_1.spo.getSpoAdminUrl(logger, this.debug);
172
171
  this.context = yield spo_1.spo.ensureFormDigest(this.spoAdminUrl, logger, this.context, this.debug);
@@ -228,7 +227,6 @@ class SpoSiteAddCommand extends SpoCommand_1.default {
228
227
  reject,
229
228
  logger,
230
229
  currentContext: this.context,
231
- dots: this.dots,
232
230
  verbose: this.verbose,
233
231
  debug: this.debug
234
232
  });
@@ -362,7 +360,6 @@ class SpoSiteAddCommand extends SpoCommand_1.default {
362
360
  reject,
363
361
  logger,
364
362
  currentContext: this.context,
365
- dots: this.dots,
366
363
  verbose: this.verbose,
367
364
  debug: this.debug
368
365
  });
@@ -43,7 +43,6 @@ class SpoSiteRemoveCommand extends SpoCommand_1.default {
43
43
  return __awaiter(this, void 0, void 0, function* () {
44
44
  const removeSite = () => __awaiter(this, void 0, void 0, function* () {
45
45
  try {
46
- this.dots = '';
47
46
  if (args.options.fromRecycleBin) {
48
47
  yield this.deleteSiteWithoutGroup(logger, args);
49
48
  }
@@ -203,7 +202,6 @@ class SpoSiteRemoveCommand extends SpoCommand_1.default {
203
202
  reject,
204
203
  logger,
205
204
  currentContext: this.context,
206
- dots: this.dots,
207
205
  debug: this.debug,
208
206
  verbose: this.verbose
209
207
  });
@@ -248,7 +246,6 @@ class SpoSiteRemoveCommand extends SpoCommand_1.default {
248
246
  reject,
249
247
  logger,
250
248
  currentContext: this.context,
251
- dots: this.dots,
252
249
  debug: this.debug,
253
250
  verbose: this.verbose
254
251
  });
@@ -46,7 +46,6 @@ class SpoSiteSetCommand extends SpoCommand_1.default {
46
46
  commandAction(logger, args) {
47
47
  return __awaiter(this, void 0, void 0, function* () {
48
48
  try {
49
- this.dots = '';
50
49
  this.tenantId = yield spo_1.spo.getTenantId(logger, this.debug);
51
50
  this.spoAdminUrl = yield spo_1.spo.getSpoAdminUrl(logger, this.debug);
52
51
  this.context = yield spo_1.spo.ensureFormDigest(this.spoAdminUrl, logger, this.context, this.debug);
@@ -128,7 +127,6 @@ class SpoSiteSetCommand extends SpoCommand_1.default {
128
127
  reject,
129
128
  logger,
130
129
  currentContext: this.context,
131
- dots: this.dots,
132
130
  debug: this.debug,
133
131
  verbose: this.verbose
134
132
  });
@@ -74,7 +74,6 @@ class SpoTenantRecycleBinItemRemoveCommand extends SpoCommand_1.default {
74
74
  reject,
75
75
  logger,
76
76
  currentContext: this.context,
77
- dots: this.dots,
78
77
  debug: this.debug,
79
78
  verbose: this.verbose
80
79
  });
@@ -44,7 +44,6 @@ class TeamsTeamAddCommand extends GraphCommand_1.default {
44
44
  }
45
45
  commandAction(logger, args) {
46
46
  return __awaiter(this, void 0, void 0, function* () {
47
- this.dots = '';
48
47
  let requestBody;
49
48
  if (args.options.template) {
50
49
  if (this.verbose) {
@@ -95,7 +94,7 @@ class TeamsTeamAddCommand extends GraphCommand_1.default {
95
94
  }
96
95
  else {
97
96
  setTimeout(() => {
98
- this.waitUntilFinished(requestOptions, resolve, reject, logger, this.dots);
97
+ this.waitUntilFinished(requestOptions, resolve, reject, logger);
99
98
  }, this.pollingInterval);
100
99
  }
101
100
  }));
@@ -113,11 +112,7 @@ class TeamsTeamAddCommand extends GraphCommand_1.default {
113
112
  }
114
113
  });
115
114
  }
116
- waitUntilFinished(requestOptions, resolve, reject, logger, dots) {
117
- if (!this.debug && this.verbose) {
118
- dots += '.';
119
- process.stdout.write(`\r${dots}`);
120
- }
115
+ waitUntilFinished(requestOptions, resolve, reject, logger) {
121
116
  request_1.default
122
117
  .get(requestOptions)
123
118
  .then((teamsAsyncOperation) => {
@@ -133,7 +128,7 @@ class TeamsTeamAddCommand extends GraphCommand_1.default {
133
128
  return;
134
129
  }
135
130
  setTimeout(() => {
136
- this.waitUntilFinished(requestOptions, resolve, reject, logger, dots);
131
+ this.waitUntilFinished(requestOptions, resolve, reject, logger);
137
132
  }, this.pollingInterval);
138
133
  }).catch(err => reject(err));
139
134
  }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.aadUser = void 0;
13
+ const request_1 = require("../request");
14
+ const formatting_1 = require("./formatting");
15
+ const graphResource = 'https://graph.microsoft.com';
16
+ exports.aadUser = {
17
+ /**
18
+ * Retrieve the id of a user by its UPN.
19
+ * @param upn User UPN.
20
+ */
21
+ getUserIdByUpn(upn) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ const requestOptions = {
24
+ url: `${graphResource}/v1.0/users?$filter=userPrincipalName eq '${formatting_1.formatting.encodeQueryParameter(upn)}'&$select=Id`,
25
+ headers: {
26
+ accept: 'application/json;odata.metadata=none'
27
+ },
28
+ responseType: 'json'
29
+ };
30
+ const res = yield request_1.default.get(requestOptions);
31
+ if (res.value.length === 0) {
32
+ throw Error(`The specified user with user name ${upn} does not exist.`);
33
+ }
34
+ return res.value[0].id;
35
+ });
36
+ }
37
+ };
38
+ //# sourceMappingURL=aadUser.js.map
@@ -57,15 +57,12 @@ exports.planner = {
57
57
  * @param groupId Owner group ID.
58
58
  * @param rosterId Roster ID.
59
59
  */
60
- getPlanByTitle(title, groupId, rosterId, metadata = 'none') {
60
+ getPlanByTitle(title, groupId, metadata = 'none') {
61
61
  return __awaiter(this, void 0, void 0, function* () {
62
62
  let plans = [];
63
63
  if (groupId) {
64
64
  plans = yield this.getPlansByGroupId(groupId, metadata);
65
65
  }
66
- else if (rosterId) {
67
- plans = yield this.getPlansByRosterId(rosterId, metadata);
68
- }
69
66
  const filteredPlans = plans.filter(p => p.title && p.title.toLowerCase() === title.toLowerCase());
70
67
  if (!filteredPlans.length) {
71
68
  throw Error(`The specified plan '${title}' does not exist.`);
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.session = void 0;
4
+ const crypto = require("crypto");
5
+ const cache_1 = require("./cache");
6
+ exports.session = {
7
+ getId(pid) {
8
+ const key = `${pid.toString()}_session`;
9
+ let sessionId = cache_1.cache.getValue(key);
10
+ if (sessionId) {
11
+ return sessionId;
12
+ }
13
+ sessionId = crypto.randomBytes(24).toString('base64');
14
+ cache_1.cache.setValue(key, sessionId);
15
+ return sessionId;
16
+ }
17
+ };
18
+ //# sourceMappingURL=session.js.map
package/dist/utils/spo.js CHANGED
@@ -18,6 +18,7 @@ const config_1 = require("../config");
18
18
  const base_permissions_1 = require("../m365/spo/base-permissions");
19
19
  const request_1 = require("../request");
20
20
  const formatting_1 = require("./formatting");
21
+ const odata_1 = require("./odata");
21
22
  exports.spo = {
22
23
  getRequestDigest(siteUrl) {
23
24
  const requestOptions = {
@@ -55,7 +56,7 @@ exports.spo = {
55
56
  });
56
57
  });
57
58
  },
58
- waitUntilFinished({ operationId, siteUrl, resolve, reject, logger, currentContext, dots, debug, verbose }) {
59
+ waitUntilFinished({ operationId, siteUrl, resolve, reject, logger, currentContext, debug, verbose }) {
59
60
  exports.spo
60
61
  .ensureFormDigest(siteUrl, logger, currentContext, debug)
61
62
  .then((res) => {
@@ -63,10 +64,6 @@ exports.spo = {
63
64
  if (debug) {
64
65
  logger.logToStderr(`Checking if operation ${operationId} completed...`);
65
66
  }
66
- if (!debug && verbose) {
67
- dots += '.';
68
- process.stdout.write(`\r${dots}`);
69
- }
70
67
  const requestOptions = {
71
68
  url: `${siteUrl}/_vti_bin/client.svc/ProcessQuery`,
72
69
  headers: {
@@ -100,7 +97,6 @@ exports.spo = {
100
97
  reject,
101
98
  logger,
102
99
  currentContext,
103
- dots,
104
100
  debug,
105
101
  verbose
106
102
  });
@@ -108,7 +104,7 @@ exports.spo = {
108
104
  }
109
105
  });
110
106
  },
111
- waitUntilCopyJobFinished({ copyJobInfo, siteUrl, pollingInterval, resolve, reject, logger, dots, debug, verbose }) {
107
+ waitUntilCopyJobFinished({ copyJobInfo, siteUrl, pollingInterval, resolve, reject, logger, debug, verbose }) {
112
108
  const requestUrl = `${siteUrl}/_api/site/GetCopyJobProgress`;
113
109
  const requestOptions = {
114
110
  url: requestUrl,
@@ -118,10 +114,6 @@ exports.spo = {
118
114
  data: { "copyJobInfo": copyJobInfo },
119
115
  responseType: 'json'
120
116
  };
121
- if (!debug && verbose) {
122
- dots += '.';
123
- process.stdout.write(`\r${dots}`);
124
- }
125
117
  request_1.default
126
118
  .post(requestOptions)
127
119
  .then((resp) => {
@@ -148,7 +140,7 @@ exports.spo = {
148
140
  }
149
141
  else {
150
142
  setTimeout(() => {
151
- exports.spo.waitUntilCopyJobFinished({ copyJobInfo, siteUrl, pollingInterval, resolve, reject, logger, dots, debug, verbose });
143
+ exports.spo.waitUntilCopyJobFinished({ copyJobInfo, siteUrl, pollingInterval, resolve, reject, logger, debug, verbose });
152
144
  }, pollingInterval);
153
145
  }
154
146
  });
@@ -484,6 +476,66 @@ exports.spo = {
484
476
  const res = yield request_1.default.get(requestOptions);
485
477
  return res;
486
478
  });
479
+ },
480
+ /**
481
+ * Retrieves a list of Custom Actions from a SharePoint site.
482
+ * @param webUrl Web url
483
+ * @param scope The scope of custom actions to retrieve, allowed values "Site", "Web" or "All".
484
+ * @param filter An OData filter query to limit the results.
485
+ */
486
+ getCustomActions(webUrl, scope, filter) {
487
+ return __awaiter(this, void 0, void 0, function* () {
488
+ if (scope && scope !== "All" && scope !== "Site" && scope !== "Web") {
489
+ throw `Invalid scope '${scope}'. Allowed values are 'Site', 'Web' or 'All'.`;
490
+ }
491
+ const queryString = filter ? `?$filter=${filter}` : "";
492
+ if (scope && scope !== "All") {
493
+ return yield odata_1.odata.getAllItems(`${webUrl}/_api/${scope}/UserCustomActions${queryString}`);
494
+ }
495
+ const customActions = [
496
+ ...yield odata_1.odata.getAllItems(`${webUrl}/_api/Site/UserCustomActions${queryString}`),
497
+ ...yield odata_1.odata.getAllItems(`${webUrl}/_api/Web/UserCustomActions${queryString}`)
498
+ ];
499
+ return customActions;
500
+ });
501
+ },
502
+ /**
503
+ * Retrieves a Custom Actions from a SharePoint site by Id.
504
+ * @param webUrl Web url
505
+ * @param id The Id of the Custom Action
506
+ * @param scope The scope of custom actions to retrieve, allowed values "Site", "Web" or "All".
507
+ */
508
+ getCustomActionById(webUrl, id, scope) {
509
+ return __awaiter(this, void 0, void 0, function* () {
510
+ if (scope && scope !== "All" && scope !== "Site" && scope !== "Web") {
511
+ throw `Invalid scope '${scope}'. Allowed values are 'Site', 'Web' or 'All'.`;
512
+ }
513
+ function getById(webUrl, id, scope) {
514
+ return __awaiter(this, void 0, void 0, function* () {
515
+ const requestOptions = {
516
+ url: `${webUrl}/_api/${scope}/UserCustomActions(guid'${id}')`,
517
+ headers: {
518
+ accept: 'application/json;odata=nometadata'
519
+ },
520
+ responseType: 'json'
521
+ };
522
+ const result = yield request_1.default.get(requestOptions);
523
+ if (result["odata.null"] === true) {
524
+ return undefined;
525
+ }
526
+ return result;
527
+ });
528
+ }
529
+ if (scope && scope !== "All") {
530
+ return yield getById(webUrl, id, scope);
531
+ }
532
+ const customActionOnWeb = yield getById(webUrl, id, "Web");
533
+ if (customActionOnWeb) {
534
+ return customActionOnWeb;
535
+ }
536
+ const customActionOnSite = yield getById(webUrl, id, "Site");
537
+ return customActionOnSite;
538
+ });
487
539
  }
488
540
  };
489
541
  //# sourceMappingURL=spo.js.map