@pnp/cli-microsoft365 5.9.0-beta.7a142b7 → 5.9.0-beta.86c5624

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 (47) hide show
  1. package/.eslintrc.js +13 -0
  2. package/README.md +5 -0
  3. package/dist/appInsights.js +2 -0
  4. package/dist/m365/pp/commands/dataverse/dataverse-table-list.js +75 -0
  5. package/dist/m365/pp/commands/solution/Solution.js +3 -0
  6. package/dist/m365/pp/commands/solution/solution-list.js +87 -0
  7. package/dist/m365/pp/commands/tenant/tenant-settings-list.js +45 -0
  8. package/dist/m365/pp/commands.js +4 -1
  9. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.14.0.js +0 -2
  10. package/dist/m365/spfx/commands/spfx-doctor.js +52 -7
  11. package/dist/m365/spo/commands/eventreceiver/EventReceiver.js +3 -0
  12. package/dist/m365/spo/commands/eventreceiver/eventreceiver-remove.js +182 -0
  13. package/dist/m365/spo/commands/file/file-copy.js +25 -39
  14. package/dist/m365/spo/commands/file/file-move.js +24 -37
  15. package/dist/m365/spo/commands/file/file-rename.js +19 -16
  16. package/dist/m365/spo/commands/file/file-roleassignment-add.js +231 -0
  17. package/dist/m365/spo/commands/file/file-roleassignment-remove.js +180 -0
  18. package/dist/m365/spo/commands/file/file-roleinheritance-reset.js +1 -1
  19. package/dist/m365/spo/commands/folder/folder-roleinheritance-break.js +94 -0
  20. package/dist/m365/spo/commands/folder/folder-roleinheritance-reset.js +89 -0
  21. package/dist/m365/spo/commands/group/AssociatedGroupPropertiesCollection.js +3 -0
  22. package/dist/m365/spo/commands/group/group-list.js +49 -10
  23. package/dist/m365/spo/commands/list/list-roleassignment-add.js +10 -10
  24. package/dist/m365/spo/commands/list/list-roleassignment-remove.js +8 -8
  25. package/dist/m365/spo/commands/listitem/listitem-roleassignment-remove.js +8 -8
  26. package/dist/m365/spo/commands/web/web-roleassignment-add.js +10 -10
  27. package/dist/m365/spo/commands/web/web-roleassignment-remove.js +8 -8
  28. package/dist/m365/spo/commands.js +5 -0
  29. package/dist/utils/cache.js +81 -0
  30. package/dist/utils/pid.js +57 -0
  31. package/dist/utils/powerPlatform.js +42 -0
  32. package/docs/docs/cmd/pp/dataverse/dataverse-table-list.md +33 -0
  33. package/docs/docs/cmd/pp/environment/environment-list.md +1 -1
  34. package/docs/docs/cmd/pp/solution/solution-list.md +33 -0
  35. package/docs/docs/cmd/pp/tenant/tenant-settings-list.md +26 -0
  36. package/docs/docs/cmd/spfx/spfx-doctor.md +10 -1
  37. package/docs/docs/cmd/spo/eventreceiver/eventreceiver-remove.md +69 -0
  38. package/docs/docs/cmd/spo/file/file-roleassignment-add.md +57 -0
  39. package/docs/docs/cmd/spo/file/file-roleassignment-remove.md +54 -0
  40. package/docs/docs/cmd/spo/folder/folder-roleinheritance-break.md +39 -0
  41. package/docs/docs/cmd/spo/folder/folder-roleinheritance-reset.md +36 -0
  42. package/docs/docs/cmd/spo/group/group-list.md +10 -1
  43. package/docs/docs/cmd/spo/hubsite/hubsite-disconnect.md +1 -1
  44. package/docs/docs/cmd/spo/hubsite/hubsite-get.md +3 -3
  45. package/npm-shrinkwrap.json +342 -357
  46. package/package.json +22 -18
  47. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN006006_CFG_PS_features.js +0 -60
@@ -0,0 +1,94 @@
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
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
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
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
+ };
16
+ var _SpoFolderRoleInheritanceBreakCommand_instances, _SpoFolderRoleInheritanceBreakCommand_initTelemetry, _SpoFolderRoleInheritanceBreakCommand_initOptions, _SpoFolderRoleInheritanceBreakCommand_initValidators;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const Cli_1 = require("../../../../cli/Cli");
19
+ const request_1 = require("../../../../request");
20
+ const formatting_1 = require("../../../../utils/formatting");
21
+ const validation_1 = require("../../../../utils/validation");
22
+ const SpoCommand_1 = require("../../../base/SpoCommand");
23
+ const commands_1 = require("../../commands");
24
+ class SpoFolderRoleInheritanceBreakCommand extends SpoCommand_1.default {
25
+ constructor() {
26
+ super();
27
+ _SpoFolderRoleInheritanceBreakCommand_instances.add(this);
28
+ __classPrivateFieldGet(this, _SpoFolderRoleInheritanceBreakCommand_instances, "m", _SpoFolderRoleInheritanceBreakCommand_initTelemetry).call(this);
29
+ __classPrivateFieldGet(this, _SpoFolderRoleInheritanceBreakCommand_instances, "m", _SpoFolderRoleInheritanceBreakCommand_initOptions).call(this);
30
+ __classPrivateFieldGet(this, _SpoFolderRoleInheritanceBreakCommand_instances, "m", _SpoFolderRoleInheritanceBreakCommand_initValidators).call(this);
31
+ }
32
+ get name() {
33
+ return commands_1.default.FOLDER_ROLEINHERITANCE_BREAK;
34
+ }
35
+ get description() {
36
+ return 'Breaks the role inheritance of a folder. Keeping existing permissions is the default behavior.';
37
+ }
38
+ commandAction(logger, args) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ const keepExistingPermissions = !args.options.clearExistingPermissions;
41
+ const breakFolderRoleInheritance = () => __awaiter(this, void 0, void 0, function* () {
42
+ try {
43
+ const requestOptions = {
44
+ url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativeUrl('${formatting_1.formatting.encodeQueryParameter(args.options.folderUrl)}')/ListItemAllFields/breakroleinheritance(${keepExistingPermissions})`,
45
+ headers: {
46
+ accept: 'application/json'
47
+ },
48
+ responseType: 'json'
49
+ };
50
+ yield request_1.default.post(requestOptions);
51
+ }
52
+ catch (err) {
53
+ this.handleRejectedODataJsonPromise(err);
54
+ }
55
+ });
56
+ if (args.options.confirm) {
57
+ yield breakFolderRoleInheritance();
58
+ }
59
+ else {
60
+ const result = yield Cli_1.Cli.prompt({
61
+ type: 'confirm',
62
+ name: 'continue',
63
+ default: false,
64
+ message: `Are you sure you want to break the role inheritance of folder ${args.options.folderUrl} located in site ${args.options.webUrl}?`
65
+ });
66
+ if (result.continue) {
67
+ yield breakFolderRoleInheritance();
68
+ }
69
+ }
70
+ });
71
+ }
72
+ }
73
+ _SpoFolderRoleInheritanceBreakCommand_instances = new WeakSet(), _SpoFolderRoleInheritanceBreakCommand_initTelemetry = function _SpoFolderRoleInheritanceBreakCommand_initTelemetry() {
74
+ this.telemetry.push((args) => {
75
+ Object.assign(this.telemetryProperties, {
76
+ clearExistingPermissions: !!args.options.clearExistingPermissions,
77
+ confirm: !!args.options.confirm
78
+ });
79
+ });
80
+ }, _SpoFolderRoleInheritanceBreakCommand_initOptions = function _SpoFolderRoleInheritanceBreakCommand_initOptions() {
81
+ this.options.unshift({
82
+ option: '-u, --webUrl <webUrl>'
83
+ }, {
84
+ option: '-f, --folderUrl <folderUrl>'
85
+ }, {
86
+ option: '-c, --clearExistingPermissions'
87
+ }, {
88
+ option: '--confirm'
89
+ });
90
+ }, _SpoFolderRoleInheritanceBreakCommand_initValidators = function _SpoFolderRoleInheritanceBreakCommand_initValidators() {
91
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () { return validation_1.validation.isValidSharePointUrl(args.options.webUrl); }));
92
+ };
93
+ module.exports = new SpoFolderRoleInheritanceBreakCommand();
94
+ //# sourceMappingURL=folder-roleinheritance-break.js.map
@@ -0,0 +1,89 @@
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
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
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
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
+ };
16
+ var _SpoFolderRoleInheritanceResetCommand_instances, _SpoFolderRoleInheritanceResetCommand_initTelemetry, _SpoFolderRoleInheritanceResetCommand_initOptions, _SpoFolderRoleInheritanceResetCommand_initValidators;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const Cli_1 = require("../../../../cli/Cli");
19
+ const request_1 = require("../../../../request");
20
+ const validation_1 = require("../../../../utils/validation");
21
+ const SpoCommand_1 = require("../../../base/SpoCommand");
22
+ const commands_1 = require("../../commands");
23
+ class SpoFolderRoleInheritanceResetCommand extends SpoCommand_1.default {
24
+ constructor() {
25
+ super();
26
+ _SpoFolderRoleInheritanceResetCommand_instances.add(this);
27
+ __classPrivateFieldGet(this, _SpoFolderRoleInheritanceResetCommand_instances, "m", _SpoFolderRoleInheritanceResetCommand_initTelemetry).call(this);
28
+ __classPrivateFieldGet(this, _SpoFolderRoleInheritanceResetCommand_instances, "m", _SpoFolderRoleInheritanceResetCommand_initOptions).call(this);
29
+ __classPrivateFieldGet(this, _SpoFolderRoleInheritanceResetCommand_instances, "m", _SpoFolderRoleInheritanceResetCommand_initValidators).call(this);
30
+ }
31
+ get name() {
32
+ return commands_1.default.FOLDER_ROLEINHERITANCE_RESET;
33
+ }
34
+ get description() {
35
+ return 'Restores the role inheritance of a folder';
36
+ }
37
+ commandAction(logger, args) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ const resetFolderRoleInheritance = () => __awaiter(this, void 0, void 0, function* () {
40
+ try {
41
+ const requestOptions = {
42
+ url: `${args.options.webUrl}/_api/web/GetFolderByServerRelativeUrl('${args.options.folderUrl}')/ListItemAllFields/resetroleinheritance`,
43
+ headers: {
44
+ accept: 'application/json;odata=nometadata'
45
+ },
46
+ responseType: 'json'
47
+ };
48
+ yield request_1.default.post(requestOptions);
49
+ }
50
+ catch (err) {
51
+ this.handleRejectedODataJsonPromise(err);
52
+ }
53
+ });
54
+ if (args.options.confirm) {
55
+ yield resetFolderRoleInheritance();
56
+ }
57
+ else {
58
+ const result = yield Cli_1.Cli.prompt({
59
+ type: 'confirm',
60
+ name: 'continue',
61
+ default: false,
62
+ message: `Are you sure you want to reset the role inheritance of folder ${args.options.folderUrl} located in site ${args.options.webUrl}?`
63
+ });
64
+ if (result.continue) {
65
+ yield resetFolderRoleInheritance();
66
+ }
67
+ }
68
+ });
69
+ }
70
+ }
71
+ _SpoFolderRoleInheritanceResetCommand_instances = new WeakSet(), _SpoFolderRoleInheritanceResetCommand_initTelemetry = function _SpoFolderRoleInheritanceResetCommand_initTelemetry() {
72
+ this.telemetry.push((args) => {
73
+ Object.assign(this.telemetryProperties, {
74
+ confirm: !!args.options.confirm
75
+ });
76
+ });
77
+ }, _SpoFolderRoleInheritanceResetCommand_initOptions = function _SpoFolderRoleInheritanceResetCommand_initOptions() {
78
+ this.options.unshift({
79
+ option: '-u, --webUrl <webUrl>'
80
+ }, {
81
+ option: '-f, --folderUrl <folderUrl>'
82
+ }, {
83
+ option: '--confirm'
84
+ });
85
+ }, _SpoFolderRoleInheritanceResetCommand_initValidators = function _SpoFolderRoleInheritanceResetCommand_initValidators() {
86
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () { return validation_1.validation.isValidSharePointUrl(args.options.webUrl); }));
87
+ };
88
+ module.exports = new SpoFolderRoleInheritanceResetCommand();
89
+ //# sourceMappingURL=folder-roleinheritance-reset.js.map
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=AssociatedGroupPropertiesCollection.js.map
@@ -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 _SpoGroupListCommand_instances, _SpoGroupListCommand_initOptions, _SpoGroupListCommand_initValidators;
16
+ var _SpoGroupListCommand_instances, _SpoGroupListCommand_initTelemetry, _SpoGroupListCommand_initOptions, _SpoGroupListCommand_initValidators;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const request_1 = require("../../../../request");
19
19
  const validation_1 = require("../../../../utils/validation");
@@ -23,6 +23,7 @@ class SpoGroupListCommand extends SpoCommand_1.default {
23
23
  constructor() {
24
24
  super();
25
25
  _SpoGroupListCommand_instances.add(this);
26
+ __classPrivateFieldGet(this, _SpoGroupListCommand_instances, "m", _SpoGroupListCommand_initTelemetry).call(this);
26
27
  __classPrivateFieldGet(this, _SpoGroupListCommand_instances, "m", _SpoGroupListCommand_initOptions).call(this);
27
28
  __classPrivateFieldGet(this, _SpoGroupListCommand_instances, "m", _SpoGroupListCommand_initValidators).call(this);
28
29
  }
@@ -33,34 +34,72 @@ class SpoGroupListCommand extends SpoCommand_1.default {
33
34
  return 'Lists all the groups within specific web';
34
35
  }
35
36
  defaultProperties() {
36
- return ['Id', 'Title', 'LoginName', 'IsHiddenInUI', 'PrincipalType'];
37
+ return ['Id', 'Title', 'LoginName', 'IsHiddenInUI', 'PrincipalType', 'Type'];
37
38
  }
38
39
  commandAction(logger, args) {
39
40
  return __awaiter(this, void 0, void 0, function* () {
40
41
  if (this.verbose) {
41
42
  logger.logToStderr(`Retrieving list of groups for specified web at ${args.options.webUrl}...`);
42
43
  }
43
- const requestUrl = `${args.options.webUrl}/_api/web/sitegroups`;
44
+ const baseUrl = `${args.options.webUrl}/_api/web`;
45
+ try {
46
+ if (!args.options.associatedGroupsOnly) {
47
+ yield this.getSiteGroups(baseUrl, logger);
48
+ }
49
+ else {
50
+ yield this.getAssociatedGroups(baseUrl, args.options, logger);
51
+ }
52
+ }
53
+ catch (err) {
54
+ this.handleRejectedODataJsonPromise(err);
55
+ }
56
+ });
57
+ }
58
+ getSiteGroups(baseUrl, logger) {
59
+ return __awaiter(this, void 0, void 0, function* () {
44
60
  const requestOptions = {
45
- url: requestUrl,
61
+ url: baseUrl + '/sitegroups',
46
62
  headers: {
47
63
  'accept': 'application/json;odata=nometadata'
48
64
  },
49
65
  responseType: 'json'
50
66
  };
51
- try {
52
- const groupProperties = yield request_1.default.get(requestOptions);
53
- logger.log(groupProperties.value);
67
+ const groupProperties = yield request_1.default.get(requestOptions);
68
+ logger.log(groupProperties.value);
69
+ });
70
+ }
71
+ getAssociatedGroups(baseUrl, options, logger) {
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ const requestOptions = {
74
+ url: baseUrl + '?$expand=AssociatedOwnerGroup,AssociatedMemberGroup,AssociatedVisitorGroup&$select=AssociatedOwnerGroup,AssociatedMemberGroup,AssociatedVisitorGroup',
75
+ headers: {
76
+ 'accept': 'application/json;odata=nometadata'
77
+ },
78
+ responseType: 'json'
79
+ };
80
+ const groupProperties = yield request_1.default.get(requestOptions);
81
+ if (!options.output || options.output === 'json') {
82
+ logger.log(groupProperties);
54
83
  }
55
- catch (err) {
56
- this.handleRejectedODataJsonPromise(err);
84
+ else {
85
+ //converted to text friendly output
86
+ const output = Object.getOwnPropertyNames(groupProperties).map(prop => (Object.assign({ Type: prop }, groupProperties[prop])));
87
+ logger.log(output);
57
88
  }
58
89
  });
59
90
  }
60
91
  }
61
- _SpoGroupListCommand_instances = new WeakSet(), _SpoGroupListCommand_initOptions = function _SpoGroupListCommand_initOptions() {
92
+ _SpoGroupListCommand_instances = new WeakSet(), _SpoGroupListCommand_initTelemetry = function _SpoGroupListCommand_initTelemetry() {
93
+ this.telemetry.push((args) => {
94
+ Object.assign(this.telemetryProperties, {
95
+ associatedGroupsOnly: (!(!args.options.associatedGroupsOnly)).toString()
96
+ });
97
+ });
98
+ }, _SpoGroupListCommand_initOptions = function _SpoGroupListCommand_initOptions() {
62
99
  this.options.unshift({
63
100
  option: '-u, --webUrl <webUrl>'
101
+ }, {
102
+ option: '--associatedGroupsOnly'
64
103
  });
65
104
  }, _SpoGroupListCommand_initValidators = function _SpoGroupListCommand_initValidators() {
66
105
  this.validators.push((args) => __awaiter(this, void 0, void 0, function* () { return validation_1.validation.isValidSharePointUrl(args.options.webUrl); }));
@@ -56,17 +56,17 @@ class SpoListRoleAssignmentAddCommand extends SpoCommand_1.default {
56
56
  const listServerRelativeUrl = urlUtil_1.urlUtil.getServerRelativePath(args.options.webUrl, args.options.listUrl);
57
57
  requestUrl += `GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')/`;
58
58
  }
59
- args.options.roleDefinitionId = yield this.GetRoleDefinitionId(args.options);
59
+ args.options.roleDefinitionId = yield this.getRoleDefinitionId(args.options);
60
60
  if (args.options.upn) {
61
- args.options.principalId = yield this.GetUserPrincipalId(args.options);
62
- yield this.AddRoleAssignment(requestUrl, logger, args.options);
61
+ args.options.principalId = yield this.getUserPrincipalId(args.options);
62
+ yield this.addRoleAssignment(requestUrl, logger, args.options);
63
63
  }
64
64
  else if (args.options.groupName) {
65
- args.options.principalId = yield this.GetGroupPrincipalId(args.options);
66
- this.AddRoleAssignment(requestUrl, logger, args.options);
65
+ args.options.principalId = yield this.getGroupPrincipalId(args.options);
66
+ this.addRoleAssignment(requestUrl, logger, args.options);
67
67
  }
68
68
  else {
69
- yield this.AddRoleAssignment(requestUrl, logger, args.options);
69
+ yield this.addRoleAssignment(requestUrl, logger, args.options);
70
70
  }
71
71
  }
72
72
  catch (err) {
@@ -74,7 +74,7 @@ class SpoListRoleAssignmentAddCommand extends SpoCommand_1.default {
74
74
  }
75
75
  });
76
76
  }
77
- AddRoleAssignment(requestUrl, logger, options) {
77
+ addRoleAssignment(requestUrl, logger, options) {
78
78
  const requestOptions = {
79
79
  url: `${requestUrl}roleassignments/addroleassignment(principalid='${options.principalId}',roledefid='${options.roleDefinitionId}')`,
80
80
  method: 'POST',
@@ -89,7 +89,7 @@ class SpoListRoleAssignmentAddCommand extends SpoCommand_1.default {
89
89
  .then(_ => Promise.resolve())
90
90
  .catch((err) => Promise.reject(err));
91
91
  }
92
- GetRoleDefinitionId(options) {
92
+ getRoleDefinitionId(options) {
93
93
  if (!options.roleDefinitionName) {
94
94
  return Promise.resolve(options.roleDefinitionId);
95
95
  }
@@ -108,7 +108,7 @@ class SpoListRoleAssignmentAddCommand extends SpoCommand_1.default {
108
108
  return Promise.reject(err);
109
109
  });
110
110
  }
111
- GetGroupPrincipalId(options) {
111
+ getGroupPrincipalId(options) {
112
112
  const groupGetCommandOptions = {
113
113
  webUrl: options.webUrl,
114
114
  name: options.groupName,
@@ -124,7 +124,7 @@ class SpoListRoleAssignmentAddCommand extends SpoCommand_1.default {
124
124
  return Promise.reject(err);
125
125
  });
126
126
  }
127
- GetUserPrincipalId(options) {
127
+ getUserPrincipalId(options) {
128
128
  const userGetCommandOptions = {
129
129
  webUrl: options.webUrl,
130
130
  email: options.upn,
@@ -57,15 +57,15 @@ class SpoListRoleAssignmentRemoveCommand extends SpoCommand_1.default {
57
57
  requestUrl += `GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')/`;
58
58
  }
59
59
  if (args.options.upn) {
60
- args.options.principalId = yield this.GetUserPrincipalId(args.options);
61
- yield this.RemoveRoleAssignment(requestUrl, logger, args.options);
60
+ args.options.principalId = yield this.getUserPrincipalId(args.options);
61
+ yield this.removeRoleAssignment(requestUrl, logger, args.options);
62
62
  }
63
63
  else if (args.options.groupName) {
64
- args.options.principalId = yield this.GetGroupPrincipalId(args.options);
65
- yield this.RemoveRoleAssignment(requestUrl, logger, args.options);
64
+ args.options.principalId = yield this.getGroupPrincipalId(args.options);
65
+ yield this.removeRoleAssignment(requestUrl, logger, args.options);
66
66
  }
67
67
  else {
68
- yield this.RemoveRoleAssignment(requestUrl, logger, args.options);
68
+ yield this.removeRoleAssignment(requestUrl, logger, args.options);
69
69
  }
70
70
  }
71
71
  catch (err) {
@@ -88,7 +88,7 @@ class SpoListRoleAssignmentRemoveCommand extends SpoCommand_1.default {
88
88
  }
89
89
  });
90
90
  }
91
- RemoveRoleAssignment(requestUrl, logger, options) {
91
+ removeRoleAssignment(requestUrl, logger, options) {
92
92
  const requestOptions = {
93
93
  url: `${requestUrl}roleassignments/removeroleassignment(principalid='${options.principalId}')`,
94
94
  method: 'POST',
@@ -103,7 +103,7 @@ class SpoListRoleAssignmentRemoveCommand extends SpoCommand_1.default {
103
103
  .then(_ => Promise.resolve())
104
104
  .catch((err) => Promise.reject(err));
105
105
  }
106
- GetGroupPrincipalId(options) {
106
+ getGroupPrincipalId(options) {
107
107
  const groupGetCommandOptions = {
108
108
  webUrl: options.webUrl,
109
109
  name: options.groupName,
@@ -119,7 +119,7 @@ class SpoListRoleAssignmentRemoveCommand extends SpoCommand_1.default {
119
119
  return Promise.reject(err);
120
120
  });
121
121
  }
122
- GetUserPrincipalId(options) {
122
+ getUserPrincipalId(options) {
123
123
  const userGetCommandOptions = {
124
124
  webUrl: options.webUrl,
125
125
  email: options.upn,
@@ -58,15 +58,15 @@ class SpoListItemRoleAssignmentRemoveCommand extends SpoCommand_1.default {
58
58
  }
59
59
  requestUrl += `items(${args.options.listItemId})/`;
60
60
  if (args.options.upn) {
61
- args.options.principalId = yield this.GetUserPrincipalId(args.options);
62
- yield this.RemoveRoleAssignment(requestUrl, logger, args.options);
61
+ args.options.principalId = yield this.getUserPrincipalId(args.options);
62
+ yield this.removeRoleAssignment(requestUrl, logger, args.options);
63
63
  }
64
64
  else if (args.options.groupName) {
65
- args.options.principalId = yield this.GetGroupPrincipalId(args.options);
66
- yield this.RemoveRoleAssignment(requestUrl, logger, args.options);
65
+ args.options.principalId = yield this.getGroupPrincipalId(args.options);
66
+ yield this.removeRoleAssignment(requestUrl, logger, args.options);
67
67
  }
68
68
  else {
69
- yield this.RemoveRoleAssignment(requestUrl, logger, args.options);
69
+ yield this.removeRoleAssignment(requestUrl, logger, args.options);
70
70
  }
71
71
  }
72
72
  catch (err) {
@@ -89,7 +89,7 @@ class SpoListItemRoleAssignmentRemoveCommand extends SpoCommand_1.default {
89
89
  }
90
90
  });
91
91
  }
92
- RemoveRoleAssignment(requestUrl, logger, options) {
92
+ removeRoleAssignment(requestUrl, logger, options) {
93
93
  const requestOptions = {
94
94
  url: `${requestUrl}roleassignments/removeroleassignment(principalid='${options.principalId}')`,
95
95
  method: 'POST',
@@ -104,7 +104,7 @@ class SpoListItemRoleAssignmentRemoveCommand extends SpoCommand_1.default {
104
104
  .then(_ => Promise.resolve())
105
105
  .catch((err) => Promise.reject(err));
106
106
  }
107
- GetGroupPrincipalId(options) {
107
+ getGroupPrincipalId(options) {
108
108
  const groupGetCommandOptions = {
109
109
  webUrl: options.webUrl,
110
110
  name: options.groupName,
@@ -120,7 +120,7 @@ class SpoListItemRoleAssignmentRemoveCommand extends SpoCommand_1.default {
120
120
  return Promise.reject(err);
121
121
  });
122
122
  }
123
- GetUserPrincipalId(options) {
123
+ getUserPrincipalId(options) {
124
124
  const userGetCommandOptions = {
125
125
  webUrl: options.webUrl,
126
126
  email: options.upn,
@@ -43,17 +43,17 @@ class SpoWebRoleAssignmentAddCommand extends SpoCommand_1.default {
43
43
  logger.logToStderr(`Adding role assignment to web ${args.options.webUrl}...`);
44
44
  }
45
45
  try {
46
- args.options.roleDefinitionId = yield this.GetRoleDefinitionId(args.options);
46
+ args.options.roleDefinitionId = yield this.getRoleDefinitionId(args.options);
47
47
  if (args.options.upn) {
48
- args.options.principalId = yield this.GetUserPrincipalId(args.options);
49
- yield this.AddRoleAssignment(logger, args.options);
48
+ args.options.principalId = yield this.getUserPrincipalId(args.options);
49
+ yield this.addRoleAssignment(logger, args.options);
50
50
  }
51
51
  else if (args.options.groupName) {
52
- args.options.principalId = yield this.GetGroupPrincipalId(args.options);
53
- yield this.AddRoleAssignment(logger, args.options);
52
+ args.options.principalId = yield this.getGroupPrincipalId(args.options);
53
+ yield this.addRoleAssignment(logger, args.options);
54
54
  }
55
55
  else {
56
- yield this.AddRoleAssignment(logger, args.options);
56
+ yield this.addRoleAssignment(logger, args.options);
57
57
  }
58
58
  }
59
59
  catch (err) {
@@ -61,7 +61,7 @@ class SpoWebRoleAssignmentAddCommand extends SpoCommand_1.default {
61
61
  }
62
62
  });
63
63
  }
64
- AddRoleAssignment(logger, options) {
64
+ addRoleAssignment(logger, options) {
65
65
  const requestOptions = {
66
66
  url: `${options.webUrl}/_api/web/roleassignments/addroleassignment(principalid='${options.principalId}',roledefid='${options.roleDefinitionId}')`,
67
67
  method: 'POST',
@@ -76,7 +76,7 @@ class SpoWebRoleAssignmentAddCommand extends SpoCommand_1.default {
76
76
  .then(_ => Promise.resolve())
77
77
  .catch((err) => Promise.reject(err));
78
78
  }
79
- GetRoleDefinitionId(options) {
79
+ getRoleDefinitionId(options) {
80
80
  if (!options.roleDefinitionName) {
81
81
  return Promise.resolve(options.roleDefinitionId);
82
82
  }
@@ -95,7 +95,7 @@ class SpoWebRoleAssignmentAddCommand extends SpoCommand_1.default {
95
95
  return Promise.reject(err);
96
96
  });
97
97
  }
98
- GetGroupPrincipalId(options) {
98
+ getGroupPrincipalId(options) {
99
99
  const groupGetCommandOptions = {
100
100
  webUrl: options.webUrl,
101
101
  name: options.groupName,
@@ -111,7 +111,7 @@ class SpoWebRoleAssignmentAddCommand extends SpoCommand_1.default {
111
111
  return Promise.reject(err);
112
112
  });
113
113
  }
114
- GetUserPrincipalId(options) {
114
+ getUserPrincipalId(options) {
115
115
  const userGetCommandOptions = {
116
116
  webUrl: options.webUrl,
117
117
  email: options.upn,
@@ -44,15 +44,15 @@ class SpoWebRoleAssignmentRemoveCommand extends SpoCommand_1.default {
44
44
  }
45
45
  try {
46
46
  if (args.options.upn) {
47
- args.options.principalId = yield this.GetUserPrincipalId(args.options);
48
- yield this.RemoveRoleAssignment(logger, args.options);
47
+ args.options.principalId = yield this.getUserPrincipalId(args.options);
48
+ yield this.removeRoleAssignment(logger, args.options);
49
49
  }
50
50
  else if (args.options.groupName) {
51
- args.options.principalId = yield this.GetGroupPrincipalId(args.options);
52
- yield this.RemoveRoleAssignment(logger, args.options);
51
+ args.options.principalId = yield this.getGroupPrincipalId(args.options);
52
+ yield this.removeRoleAssignment(logger, args.options);
53
53
  }
54
54
  else {
55
- yield this.RemoveRoleAssignment(logger, args.options);
55
+ yield this.removeRoleAssignment(logger, args.options);
56
56
  }
57
57
  }
58
58
  catch (err) {
@@ -75,7 +75,7 @@ class SpoWebRoleAssignmentRemoveCommand extends SpoCommand_1.default {
75
75
  }
76
76
  });
77
77
  }
78
- RemoveRoleAssignment(logger, options) {
78
+ removeRoleAssignment(logger, options) {
79
79
  const requestOptions = {
80
80
  url: `${options.webUrl}/_api/web/roleassignments/removeroleassignment(principalid='${options.principalId}')`,
81
81
  method: 'POST',
@@ -90,7 +90,7 @@ class SpoWebRoleAssignmentRemoveCommand extends SpoCommand_1.default {
90
90
  .then(_ => Promise.resolve())
91
91
  .catch((err) => Promise.reject(err));
92
92
  }
93
- GetGroupPrincipalId(options) {
93
+ getGroupPrincipalId(options) {
94
94
  const groupGetCommandOptions = {
95
95
  webUrl: options.webUrl,
96
96
  name: options.groupName,
@@ -106,7 +106,7 @@ class SpoWebRoleAssignmentRemoveCommand extends SpoCommand_1.default {
106
106
  return Promise.reject(err);
107
107
  });
108
108
  }
109
- GetUserPrincipalId(options) {
109
+ getUserPrincipalId(options) {
110
110
  const userGetCommandOptions = {
111
111
  webUrl: options.webUrl,
112
112
  email: options.upn,
@@ -38,6 +38,7 @@ exports.default = {
38
38
  CUSTOMACTION_REMOVE: `${prefix} customaction remove`,
39
39
  EVENTRECEIVER_GET: `${prefix} eventreceiver get`,
40
40
  EVENTRECEIVER_LIST: `${prefix} eventreceiver list`,
41
+ EVENTRECEIVER_REMOVE: `${prefix} eventreceiver remove`,
41
42
  EXTERNALUSER_LIST: `${prefix} externaluser list`,
42
43
  FEATURE_DISABLE: `${prefix} feature disable`,
43
44
  FEATURE_ENABLE: `${prefix} feature enable`,
@@ -56,6 +57,8 @@ exports.default = {
56
57
  FILE_MOVE: `${prefix} file move`,
57
58
  FILE_REMOVE: `${prefix} file remove`,
58
59
  FILE_RENAME: `${prefix} file rename`,
60
+ FILE_ROLEASSIGNMENT_ADD: `${prefix} file roleassignment add`,
61
+ FILE_ROLEASSIGNMENT_REMOVE: `${prefix} file roleassignment remove`,
59
62
  FILE_ROLEINHERITANCE_RESET: `${prefix} file roleinheritance reset`,
60
63
  FILE_SHARINGINFO_GET: `${prefix} file sharinginfo get`,
61
64
  FOLDER_ADD: `${prefix} folder add`,
@@ -65,6 +68,8 @@ exports.default = {
65
68
  FOLDER_MOVE: `${prefix} folder move`,
66
69
  FOLDER_REMOVE: `${prefix} folder remove`,
67
70
  FOLDER_RENAME: `${prefix} folder rename`,
71
+ FOLDER_ROLEINHERITANCE_BREAK: `${prefix} folder roleinheritance break`,
72
+ FOLDER_ROLEINHERITANCE_RESET: `${prefix} folder roleinheritance reset`,
68
73
  GET: `${prefix} get`,
69
74
  GROUP_ADD: `${prefix} group add`,
70
75
  GROUP_GET: `${prefix} group get`,
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cache = void 0;
4
+ const fs = require("fs");
5
+ const os = require("os");
6
+ const path = require("path");
7
+ const config_1 = require("../config");
8
+ const cacheFolderPath = path.join(os.tmpdir(), config_1.default.configstoreName.replace('config', 'cache'));
9
+ const mkdirOptions = { mode: 0o0700, recursive: true };
10
+ exports.cache = {
11
+ cacheFolderPath: cacheFolderPath,
12
+ getValue(key) {
13
+ this.clearExpired();
14
+ try {
15
+ const cacheFilePath = path.join(cacheFolderPath, key);
16
+ if (!fs.existsSync(cacheFilePath)) {
17
+ return undefined;
18
+ }
19
+ return fs.readFileSync(cacheFilePath, 'utf8');
20
+ }
21
+ catch (_a) {
22
+ return undefined;
23
+ }
24
+ },
25
+ setValue(key, value) {
26
+ this.clearExpired();
27
+ try {
28
+ fs.mkdirSync(cacheFolderPath, mkdirOptions);
29
+ const cacheFilePath = path.join(cacheFolderPath, key);
30
+ // we don't need to wait for the file to be written
31
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
32
+ fs.writeFile(cacheFilePath, value, () => { });
33
+ }
34
+ catch (_a) { }
35
+ },
36
+ clearExpired(cb) {
37
+ // we don't need to wait for this to complete
38
+ // even if it stops meanwhile, it will be picked up next time
39
+ fs.readdir(cacheFolderPath, (err, files) => {
40
+ if (err) {
41
+ if (cb) {
42
+ cb();
43
+ }
44
+ return;
45
+ }
46
+ const numFiles = files.length;
47
+ if (numFiles === 0) {
48
+ if (cb) {
49
+ cb();
50
+ }
51
+ return;
52
+ }
53
+ files.forEach((file, index) => {
54
+ fs.stat(path.join(cacheFolderPath, file), (err, stats) => {
55
+ if (err || stats.isDirectory()) {
56
+ if (cb && index === numFiles - 1) {
57
+ cb();
58
+ }
59
+ return;
60
+ }
61
+ // remove files that haven't been accessed in the last 24 hours
62
+ if (stats.atime.getTime() < Date.now() - 24 * 60 * 60 * 1000) {
63
+ // we don't need to wait for the file to be deleted
64
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
65
+ fs.unlink(path.join(cacheFolderPath, file), () => {
66
+ if (cb && index === numFiles - 1) {
67
+ cb();
68
+ }
69
+ });
70
+ }
71
+ else {
72
+ if (cb && index === numFiles - 1) {
73
+ cb();
74
+ }
75
+ }
76
+ });
77
+ });
78
+ });
79
+ }
80
+ };
81
+ //# sourceMappingURL=cache.js.map