@pnp/cli-microsoft365 6.1.0 → 6.2.0-beta.02615ee

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 (63) hide show
  1. package/.eslintrc.js +6 -0
  2. package/dist/m365/aad/commands/approleassignment/approleassignment-add.js +3 -0
  3. package/dist/m365/onenote/commands/page/page-list.js +137 -0
  4. package/dist/m365/onenote/commands.js +2 -1
  5. package/dist/m365/pp/commands/aibuildermodel/aibuildermodel-get.js +110 -0
  6. package/dist/m365/pp/commands/aibuildermodel/aibuildermodel-list.js +68 -0
  7. package/dist/m365/pp/commands/aibuildermodel/aibuildermodel-remove.js +130 -0
  8. package/dist/m365/pp/commands.js +3 -0
  9. package/dist/m365/purview/commands/retentionlabel/retentionlabel-add.js +143 -0
  10. package/dist/m365/purview/commands/retentionlabel/retentionlabel-get.js +70 -0
  11. package/dist/m365/purview/commands.js +2 -0
  12. package/dist/m365/spo/commands/file/GraphFileDetails.js +3 -0
  13. package/dist/m365/spo/commands/file/file-sharinginfo-get.js +12 -12
  14. package/dist/m365/spo/commands/file/file-sharinglink-get.js +116 -0
  15. package/dist/m365/spo/commands/file/file-sharinglink-list.js +133 -0
  16. package/dist/m365/spo/commands/file/file-sharinglink-remove.js +135 -0
  17. package/dist/m365/spo/commands/group/group-member-add.js +33 -6
  18. package/dist/m365/spo/commands/group/group-member-remove.js +78 -33
  19. package/dist/m365/spo/commands/list/list-retentionlabel-ensure.js +10 -2
  20. package/dist/m365/spo/commands/listitem/ListItemRetentionLabel.js +3 -0
  21. package/dist/m365/spo/commands/listitem/SiteRetentionLabel.js +3 -0
  22. package/dist/m365/spo/commands/listitem/listitem-list.js +1 -1
  23. package/dist/m365/spo/commands/listitem/listitem-record-lock.js +129 -0
  24. package/dist/m365/spo/commands/listitem/listitem-record-unlock.js +129 -0
  25. package/dist/m365/spo/commands/listitem/listitem-retentionlabel-ensure.js +161 -0
  26. package/dist/m365/spo/commands/term/term-list.js +99 -29
  27. package/dist/m365/spo/commands.js +6 -0
  28. package/dist/m365/teams/commands/chat/chat-list.js +29 -7
  29. package/dist/request.js +2 -2
  30. package/docs/docs/cmd/onenote/page/page-list.md +140 -0
  31. package/docs/docs/cmd/planner/bucket/bucket-add.md +17 -0
  32. package/docs/docs/cmd/planner/bucket/bucket-get.md +17 -0
  33. package/docs/docs/cmd/planner/bucket/bucket-list.md +17 -0
  34. package/docs/docs/cmd/planner/plan/plan-add.md +40 -0
  35. package/docs/docs/cmd/planner/plan/plan-get.md +21 -0
  36. package/docs/docs/cmd/planner/plan/plan-list.md +19 -0
  37. package/docs/docs/cmd/planner/plan/plan-set.md +20 -0
  38. package/docs/docs/cmd/pp/aibuildermodel/aibuildermodel-get.md +99 -0
  39. package/docs/docs/cmd/pp/aibuildermodel/aibuildermodel-list.md +95 -0
  40. package/docs/docs/cmd/pp/aibuildermodel/aibuildermodel-remove.md +53 -0
  41. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-add.md +128 -0
  42. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-get.md +95 -0
  43. package/docs/docs/cmd/spo/cdn/cdn-get.md +1 -1
  44. package/docs/docs/cmd/spo/cdn/cdn-origin-add.md +1 -1
  45. package/docs/docs/cmd/spo/cdn/cdn-origin-list.md +1 -1
  46. package/docs/docs/cmd/spo/cdn/cdn-origin-remove.md +1 -1
  47. package/docs/docs/cmd/spo/cdn/cdn-policy-list.md +1 -1
  48. package/docs/docs/cmd/spo/cdn/cdn-policy-set.md +1 -1
  49. package/docs/docs/cmd/spo/cdn/cdn-set.md +1 -1
  50. package/docs/docs/cmd/spo/file/file-sharinglink-get.md +107 -0
  51. package/docs/docs/cmd/spo/file/file-sharinglink-list.md +106 -0
  52. package/docs/docs/cmd/spo/file/file-sharinglink-remove.md +52 -0
  53. package/docs/docs/cmd/spo/group/group-member-add.md +22 -4
  54. package/docs/docs/cmd/spo/group/group-member-remove.md +24 -6
  55. package/docs/docs/cmd/spo/list/list-retentionlabel-ensure.md +8 -5
  56. package/docs/docs/cmd/spo/listitem/listitem-list.md +5 -5
  57. package/docs/docs/cmd/spo/listitem/listitem-record-lock.md +52 -0
  58. package/docs/docs/cmd/spo/listitem/listitem-record-unlock.md +52 -0
  59. package/docs/docs/cmd/spo/listitem/listitem-retentionlabel-ensure.md +58 -0
  60. package/docs/docs/cmd/spo/term/term-list.md +138 -0
  61. package/docs/docs/cmd/teams/chat/chat-list.md +16 -4
  62. package/npm-shrinkwrap.json +184 -204
  63. package/package.json +13 -12
package/.eslintrc.js CHANGED
@@ -5,11 +5,13 @@ const dictionary = [
5
5
  'activation',
6
6
  'activations',
7
7
  'adaptive',
8
+ 'ai',
8
9
  'app',
9
10
  'apply',
10
11
  'approve',
11
12
  'assets',
12
13
  'bin',
14
+ 'builder',
13
15
  'catalog',
14
16
  'checklist',
15
17
  'client',
@@ -31,6 +33,7 @@ const dictionary = [
31
33
  'home',
32
34
  'hub',
33
35
  'in',
36
+ 'info',
34
37
  'inheritance',
35
38
  'init',
36
39
  'install',
@@ -39,9 +42,11 @@ const dictionary = [
39
42
  'issue',
40
43
  'label',
41
44
  'list',
45
+ 'link',
42
46
  'management',
43
47
  'member',
44
48
  'messaging',
49
+ 'model',
45
50
  'news',
46
51
  'oauth2',
47
52
  'office365',
@@ -60,6 +65,7 @@ const dictionary = [
60
65
  'service',
61
66
  'setting',
62
67
  'settings',
68
+ 'sharing',
63
69
  'side',
64
70
  'site',
65
71
  'status',
@@ -58,6 +58,9 @@ class AadAppRoleAssignmentAddCommand extends GraphCommand_1.default {
58
58
  };
59
59
  try {
60
60
  const servicePrincipalResult = yield request_1.default.get(getServicePrinciplesRequestOptions);
61
+ if (servicePrincipalResult.value.length === 0) {
62
+ return Promise.reject(`The specified service principal doesn't exist`);
63
+ }
61
64
  if (servicePrincipalResult.value.length > 1) {
62
65
  throw 'More than one service principal found. Please use the appId or appObjectId option to make sure the right service principal is specified.';
63
66
  }
@@ -0,0 +1,137 @@
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 _OneNotePageListCommand_instances, _OneNotePageListCommand_initTelemetry, _OneNotePageListCommand_initOptions, _OneNotePageListCommand_initValidators, _OneNotePageListCommand_initOptionSets;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const request_1 = require("../../../../request");
19
+ const odata_1 = require("../../../../utils/odata");
20
+ const validation_1 = require("../../../../utils/validation");
21
+ const aadGroup_1 = require("../../../../utils/aadGroup");
22
+ const GraphCommand_1 = require("../../../base/GraphCommand");
23
+ const commands_1 = require("../../commands");
24
+ class OneNotePageListCommand extends GraphCommand_1.default {
25
+ get name() {
26
+ return commands_1.default.PAGE_LIST;
27
+ }
28
+ get description() {
29
+ return 'Retrieve a list of OneNote pages.';
30
+ }
31
+ defaultProperties() {
32
+ return ['createdDateTime', 'title', 'id'];
33
+ }
34
+ constructor() {
35
+ super();
36
+ _OneNotePageListCommand_instances.add(this);
37
+ __classPrivateFieldGet(this, _OneNotePageListCommand_instances, "m", _OneNotePageListCommand_initTelemetry).call(this);
38
+ __classPrivateFieldGet(this, _OneNotePageListCommand_instances, "m", _OneNotePageListCommand_initOptions).call(this);
39
+ __classPrivateFieldGet(this, _OneNotePageListCommand_instances, "m", _OneNotePageListCommand_initValidators).call(this);
40
+ __classPrivateFieldGet(this, _OneNotePageListCommand_instances, "m", _OneNotePageListCommand_initOptionSets).call(this);
41
+ }
42
+ getEndpointUrl(args) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ let endpoint = `${this.resource}/v1.0/`;
45
+ if (args.options.userId) {
46
+ endpoint += `users/${args.options.userId}`;
47
+ }
48
+ else if (args.options.userName) {
49
+ endpoint += `users/${args.options.userName}`;
50
+ }
51
+ else if (args.options.groupId) {
52
+ endpoint += `groups/${args.options.groupId}`;
53
+ }
54
+ else if (args.options.groupName) {
55
+ const groupId = yield this.getGroupId(args.options.groupName);
56
+ endpoint += `groups/${groupId}`;
57
+ }
58
+ else if (args.options.webUrl) {
59
+ const siteId = yield this.getSpoSiteId(args.options.webUrl);
60
+ endpoint += `sites/${siteId}`;
61
+ }
62
+ else {
63
+ endpoint += 'me';
64
+ }
65
+ endpoint += '/onenote/pages';
66
+ return endpoint;
67
+ });
68
+ }
69
+ getGroupId(groupName) {
70
+ return __awaiter(this, void 0, void 0, function* () {
71
+ const group = yield aadGroup_1.aadGroup.getGroupByDisplayName(groupName);
72
+ return group.id;
73
+ });
74
+ }
75
+ getSpoSiteId(webUrl) {
76
+ return __awaiter(this, void 0, void 0, function* () {
77
+ const url = new URL(webUrl);
78
+ const requestOptions = {
79
+ url: `${this.resource}/v1.0/sites/${url.hostname}:${url.pathname}`,
80
+ headers: {
81
+ accept: 'application/json;odata.metadata=none'
82
+ },
83
+ responseType: 'json'
84
+ };
85
+ const site = yield request_1.default.get(requestOptions);
86
+ return site.id;
87
+ });
88
+ }
89
+ commandAction(logger, args) {
90
+ return __awaiter(this, void 0, void 0, function* () {
91
+ try {
92
+ const endpoint = yield this.getEndpointUrl(args);
93
+ const items = yield odata_1.odata.getAllItems(endpoint);
94
+ logger.log(items);
95
+ }
96
+ catch (err) {
97
+ this.handleRejectedODataJsonPromise(err);
98
+ }
99
+ });
100
+ }
101
+ }
102
+ _OneNotePageListCommand_instances = new WeakSet(), _OneNotePageListCommand_initTelemetry = function _OneNotePageListCommand_initTelemetry() {
103
+ this.telemetry.push((args) => {
104
+ Object.assign(this.telemetryProperties, {
105
+ userId: typeof args.options.userId !== 'undefined',
106
+ userName: typeof args.options.userName !== 'undefined',
107
+ groupId: typeof args.options.groupId !== 'undefined',
108
+ groupName: typeof args.options.groupName !== 'undefined',
109
+ webUrl: typeof args.options.webUrl !== 'undefined'
110
+ });
111
+ });
112
+ }, _OneNotePageListCommand_initOptions = function _OneNotePageListCommand_initOptions() {
113
+ this.options.unshift({ option: '--userId [userId]' }, { option: '--userName [userName]' }, { option: '--groupId [groupId]' }, { option: '--groupName [groupName]' }, { option: '-u, --webUrl [webUrl]' });
114
+ }, _OneNotePageListCommand_initValidators = function _OneNotePageListCommand_initValidators() {
115
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
116
+ if (args.options.userId && !validation_1.validation.isValidGuid(args.options.userId)) {
117
+ return `${args.options.userId} is not a valid GUID`;
118
+ }
119
+ if (args.options.groupId && !validation_1.validation.isValidGuid(args.options.groupId)) {
120
+ return `${args.options.groupId} is not a valid GUID`;
121
+ }
122
+ if (args.options.webUrl) {
123
+ return validation_1.validation.isValidSharePointUrl(args.options.webUrl);
124
+ }
125
+ return true;
126
+ }));
127
+ }, _OneNotePageListCommand_initOptionSets = function _OneNotePageListCommand_initOptionSets() {
128
+ this.optionSets.push({
129
+ options: ['userId', 'userName', 'groupId', 'groupName', 'webUrl'],
130
+ runsWhen: (args) => {
131
+ const options = [args.options.userId, args.options.userName, args.options.groupId, args.options.groupName, args.options.webUrl];
132
+ return options.some(item => item !== undefined);
133
+ }
134
+ });
135
+ };
136
+ module.exports = new OneNotePageListCommand();
137
+ //# sourceMappingURL=page-list.js.map
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const prefix = 'onenote';
4
4
  exports.default = {
5
- NOTEBOOK_LIST: `${prefix} notebook list`
5
+ NOTEBOOK_LIST: `${prefix} notebook list`,
6
+ PAGE_LIST: `${prefix} page list`
6
7
  };
7
8
  //# sourceMappingURL=commands.js.map
@@ -0,0 +1,110 @@
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 _PpAiBuilderModelGetCommand_instances, _PpAiBuilderModelGetCommand_initTelemetry, _PpAiBuilderModelGetCommand_initOptions, _PpAiBuilderModelGetCommand_initOptionSets, _PpAiBuilderModelGetCommand_initValidators;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const request_1 = require("../../../../request");
19
+ const powerPlatform_1 = require("../../../../utils/powerPlatform");
20
+ const validation_1 = require("../../../../utils/validation");
21
+ const PowerPlatformCommand_1 = require("../../../base/PowerPlatformCommand");
22
+ const commands_1 = require("../../commands");
23
+ class PpAiBuilderModelGetCommand extends PowerPlatformCommand_1.default {
24
+ get name() {
25
+ return commands_1.default.AIBUILDERMODEL_GET;
26
+ }
27
+ get description() {
28
+ return 'Get an AI builder model in the specified Power Platform environment.';
29
+ }
30
+ defaultProperties() {
31
+ return ['msdyn_name', 'msdyn_aimodelid', 'createdon', 'modifiedon'];
32
+ }
33
+ constructor() {
34
+ super();
35
+ _PpAiBuilderModelGetCommand_instances.add(this);
36
+ __classPrivateFieldGet(this, _PpAiBuilderModelGetCommand_instances, "m", _PpAiBuilderModelGetCommand_initTelemetry).call(this);
37
+ __classPrivateFieldGet(this, _PpAiBuilderModelGetCommand_instances, "m", _PpAiBuilderModelGetCommand_initOptions).call(this);
38
+ __classPrivateFieldGet(this, _PpAiBuilderModelGetCommand_instances, "m", _PpAiBuilderModelGetCommand_initOptionSets).call(this);
39
+ __classPrivateFieldGet(this, _PpAiBuilderModelGetCommand_instances, "m", _PpAiBuilderModelGetCommand_initValidators).call(this);
40
+ }
41
+ commandAction(logger, args) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ if (this.verbose) {
44
+ logger.logToStderr(`Retrieving an AI builder model '${args.options.id || args.options.name}'...`);
45
+ }
46
+ try {
47
+ const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environment, args.options.asAdmin);
48
+ const res = yield this.getAiBuilderModel(dynamicsApiUrl, args.options);
49
+ logger.log(res);
50
+ }
51
+ catch (err) {
52
+ this.handleRejectedODataJsonPromise(err);
53
+ }
54
+ });
55
+ }
56
+ getAiBuilderModel(dynamicsApiUrl, options) {
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ const requestOptions = {
59
+ headers: {
60
+ accept: 'application/json;odata.metadata=none'
61
+ },
62
+ responseType: 'json'
63
+ };
64
+ if (options.id) {
65
+ requestOptions.url = `${dynamicsApiUrl}/api/data/v9.1/msdyn_aimodels(${options.id})?$filter=iscustomizable/Value eq true`;
66
+ const result = yield request_1.default.get(requestOptions);
67
+ return result;
68
+ }
69
+ requestOptions.url = `${dynamicsApiUrl}/api/data/v9.1/msdyn_aimodels?$filter=msdyn_name eq '${options.name}' and iscustomizable/Value eq true`;
70
+ const result = yield request_1.default.get(requestOptions);
71
+ if (result.value.length === 0) {
72
+ throw `The specified AI builder model '${options.name}' does not exist.`;
73
+ }
74
+ if (result.value.length > 1) {
75
+ throw `Multiple AI builder models with name '${options.name}' found: ${result.value.map(x => x.msdyn_aimodelid).join(',')}`;
76
+ }
77
+ return result.value[0];
78
+ });
79
+ }
80
+ }
81
+ _PpAiBuilderModelGetCommand_instances = new WeakSet(), _PpAiBuilderModelGetCommand_initTelemetry = function _PpAiBuilderModelGetCommand_initTelemetry() {
82
+ this.telemetry.push((args) => {
83
+ Object.assign(this.telemetryProperties, {
84
+ id: typeof args.options.id !== 'undefined',
85
+ name: typeof args.options.name !== 'undefined',
86
+ asAdmin: !!args.options.asAdmin
87
+ });
88
+ });
89
+ }, _PpAiBuilderModelGetCommand_initOptions = function _PpAiBuilderModelGetCommand_initOptions() {
90
+ this.options.unshift({
91
+ option: '-e, --environment <environment>'
92
+ }, {
93
+ option: '-i, --id [id]'
94
+ }, {
95
+ option: '-n, --name [name]'
96
+ }, {
97
+ option: '--asAdmin'
98
+ });
99
+ }, _PpAiBuilderModelGetCommand_initOptionSets = function _PpAiBuilderModelGetCommand_initOptionSets() {
100
+ this.optionSets.push({ options: ['id', 'name'] });
101
+ }, _PpAiBuilderModelGetCommand_initValidators = function _PpAiBuilderModelGetCommand_initValidators() {
102
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
103
+ if (args.options.id && !validation_1.validation.isValidGuid(args.options.id)) {
104
+ return `${args.options.id} is not a valid GUID`;
105
+ }
106
+ return true;
107
+ }));
108
+ };
109
+ module.exports = new PpAiBuilderModelGetCommand();
110
+ //# sourceMappingURL=aibuildermodel-get.js.map
@@ -0,0 +1,68 @@
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 _PpAiBuilderModelListCommand_instances, _PpAiBuilderModelListCommand_initTelemetry, _PpAiBuilderModelListCommand_initOptions;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const odata_1 = require("../../../../utils/odata");
19
+ const powerPlatform_1 = require("../../../../utils/powerPlatform");
20
+ const PowerPlatformCommand_1 = require("../../../base/PowerPlatformCommand");
21
+ const commands_1 = require("../../commands");
22
+ class PpAiBuilderModelListCommand extends PowerPlatformCommand_1.default {
23
+ get name() {
24
+ return commands_1.default.AIBUILDERMODEL_LIST;
25
+ }
26
+ get description() {
27
+ return 'List available AI builder models in the specified Power Platform environment.';
28
+ }
29
+ defaultProperties() {
30
+ return ['msdyn_name', 'msdyn_aimodelid', 'createdon', 'modifiedon'];
31
+ }
32
+ constructor() {
33
+ super();
34
+ _PpAiBuilderModelListCommand_instances.add(this);
35
+ __classPrivateFieldGet(this, _PpAiBuilderModelListCommand_instances, "m", _PpAiBuilderModelListCommand_initTelemetry).call(this);
36
+ __classPrivateFieldGet(this, _PpAiBuilderModelListCommand_instances, "m", _PpAiBuilderModelListCommand_initOptions).call(this);
37
+ }
38
+ commandAction(logger, args) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ if (this.verbose) {
41
+ logger.logToStderr(`Retrieving available AI Builder models`);
42
+ }
43
+ try {
44
+ const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environment, args.options.asAdmin);
45
+ const aimodels = yield odata_1.odata.getAllItems(`${dynamicsApiUrl}/api/data/v9.0/msdyn_aimodels?$filter=iscustomizable/Value eq true`);
46
+ logger.log(aimodels);
47
+ }
48
+ catch (err) {
49
+ this.handleRejectedODataJsonPromise(err);
50
+ }
51
+ });
52
+ }
53
+ }
54
+ _PpAiBuilderModelListCommand_instances = new WeakSet(), _PpAiBuilderModelListCommand_initTelemetry = function _PpAiBuilderModelListCommand_initTelemetry() {
55
+ this.telemetry.push((args) => {
56
+ Object.assign(this.telemetryProperties, {
57
+ asAdmin: !!args.options.asAdmin
58
+ });
59
+ });
60
+ }, _PpAiBuilderModelListCommand_initOptions = function _PpAiBuilderModelListCommand_initOptions() {
61
+ this.options.unshift({
62
+ option: '-e, --environment <environment>'
63
+ }, {
64
+ option: '--asAdmin'
65
+ });
66
+ };
67
+ module.exports = new PpAiBuilderModelListCommand();
68
+ //# sourceMappingURL=aibuildermodel-list.js.map
@@ -0,0 +1,130 @@
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 _PpAiBuilderModelRemoveCommand_instances, _PpAiBuilderModelRemoveCommand_initTelemetry, _PpAiBuilderModelRemoveCommand_initOptions, _PpAiBuilderModelRemoveCommand_initOptionSets, _PpAiBuilderModelRemoveCommand_initValidators;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const powerPlatform_1 = require("../../../../utils/powerPlatform");
19
+ const PowerPlatformCommand_1 = require("../../../base/PowerPlatformCommand");
20
+ const commands_1 = require("../../commands");
21
+ const request_1 = require("../../../../request");
22
+ const validation_1 = require("../../../../utils/validation");
23
+ const Cli_1 = require("../../../../cli/Cli");
24
+ const PpAiBuilderModelGetCommand = require("./aibuildermodel-get");
25
+ class PpAiBuilderModelRemoveCommand extends PowerPlatformCommand_1.default {
26
+ get name() {
27
+ return commands_1.default.AIBUILDERMODEL_REMOVE;
28
+ }
29
+ get description() {
30
+ return 'Removes an AI builder model in the specified Power Platform environment.';
31
+ }
32
+ constructor() {
33
+ super();
34
+ _PpAiBuilderModelRemoveCommand_instances.add(this);
35
+ __classPrivateFieldGet(this, _PpAiBuilderModelRemoveCommand_instances, "m", _PpAiBuilderModelRemoveCommand_initTelemetry).call(this);
36
+ __classPrivateFieldGet(this, _PpAiBuilderModelRemoveCommand_instances, "m", _PpAiBuilderModelRemoveCommand_initOptions).call(this);
37
+ __classPrivateFieldGet(this, _PpAiBuilderModelRemoveCommand_instances, "m", _PpAiBuilderModelRemoveCommand_initValidators).call(this);
38
+ __classPrivateFieldGet(this, _PpAiBuilderModelRemoveCommand_instances, "m", _PpAiBuilderModelRemoveCommand_initOptionSets).call(this);
39
+ }
40
+ commandAction(logger, args) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ if (this.verbose) {
43
+ logger.logToStderr(`Removing AI builder model '${args.options.id || args.options.name}'...`);
44
+ }
45
+ if (args.options.confirm) {
46
+ yield this.deleteAiBuilderModel(args);
47
+ }
48
+ else {
49
+ const result = yield Cli_1.Cli.prompt({
50
+ type: 'confirm',
51
+ name: 'continue',
52
+ default: false,
53
+ message: `Are you sure you want to remove AI builder model '${args.options.id || args.options.name}'?`
54
+ });
55
+ if (result.continue) {
56
+ yield this.deleteAiBuilderModel(args);
57
+ }
58
+ }
59
+ });
60
+ }
61
+ getAiBuilderModelId(args) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ if (args.options.id) {
64
+ return args.options.id;
65
+ }
66
+ const options = {
67
+ environment: args.options.environment,
68
+ name: args.options.name,
69
+ output: 'json',
70
+ debug: this.debug,
71
+ verbose: this.verbose
72
+ };
73
+ const output = yield Cli_1.Cli.executeCommandWithOutput(PpAiBuilderModelGetCommand, { options: Object.assign(Object.assign({}, options), { _: [] }) });
74
+ const getAiBuilderModelOutput = JSON.parse(output.stdout);
75
+ return getAiBuilderModelOutput.msdyn_aimodelid;
76
+ });
77
+ }
78
+ deleteAiBuilderModel(args) {
79
+ return __awaiter(this, void 0, void 0, function* () {
80
+ try {
81
+ const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environment, args.options.asAdmin);
82
+ const aiBuilderModelId = yield this.getAiBuilderModelId(args);
83
+ const requestOptions = {
84
+ url: `${dynamicsApiUrl}/api/data/v9.1/msdyn_aimodels(${aiBuilderModelId})`,
85
+ headers: {
86
+ accept: 'application/json;odata.metadata=none'
87
+ },
88
+ responseType: 'json'
89
+ };
90
+ yield request_1.default.delete(requestOptions);
91
+ }
92
+ catch (err) {
93
+ this.handleRejectedODataJsonPromise(err);
94
+ }
95
+ });
96
+ }
97
+ }
98
+ _PpAiBuilderModelRemoveCommand_instances = new WeakSet(), _PpAiBuilderModelRemoveCommand_initTelemetry = function _PpAiBuilderModelRemoveCommand_initTelemetry() {
99
+ this.telemetry.push((args) => {
100
+ Object.assign(this.telemetryProperties, {
101
+ id: typeof args.options.id !== 'undefined',
102
+ name: typeof args.options.name !== 'undefined',
103
+ asAdmin: !!args.options.asAdmin,
104
+ confirm: !!args.options.confirm
105
+ });
106
+ });
107
+ }, _PpAiBuilderModelRemoveCommand_initOptions = function _PpAiBuilderModelRemoveCommand_initOptions() {
108
+ this.options.unshift({
109
+ option: '-e, --environment <environment>'
110
+ }, {
111
+ option: '-i, --id [id]'
112
+ }, {
113
+ option: '-n, --name [name]'
114
+ }, {
115
+ option: '--asAdmin'
116
+ }, {
117
+ option: '--confirm'
118
+ });
119
+ }, _PpAiBuilderModelRemoveCommand_initOptionSets = function _PpAiBuilderModelRemoveCommand_initOptionSets() {
120
+ this.optionSets.push({ options: ['id', 'name'] });
121
+ }, _PpAiBuilderModelRemoveCommand_initValidators = function _PpAiBuilderModelRemoveCommand_initValidators() {
122
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
123
+ if (args.options.id && !validation_1.validation.isValidGuid(args.options.id)) {
124
+ return `${args.options.id} is not a valid GUID`;
125
+ }
126
+ return true;
127
+ }));
128
+ };
129
+ module.exports = new PpAiBuilderModelRemoveCommand();
130
+ //# sourceMappingURL=aibuildermodel-remove.js.map
@@ -2,6 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const prefix = 'pp';
4
4
  exports.default = {
5
+ AIBUILDERMODEL_GET: `${prefix} aibuildermodel get`,
6
+ AIBUILDERMODEL_LIST: `${prefix} aibuildermodel list`,
7
+ AIBUILDERMODEL_REMOVE: `${prefix} aibuildermodel remove`,
5
8
  CARD_CLONE: `${prefix} card clone`,
6
9
  CARD_GET: `${prefix} card get`,
7
10
  CARD_LIST: `${prefix} card list`,
@@ -0,0 +1,143 @@
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 _PurviewRetentionLabelAddCommand_instances, _PurviewRetentionLabelAddCommand_initTelemetry, _PurviewRetentionLabelAddCommand_initOptions, _PurviewRetentionLabelAddCommand_initValidators;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const request_1 = require("../../../../request");
19
+ const GraphCommand_1 = require("../../../base/GraphCommand");
20
+ const commands_1 = require("../../commands");
21
+ class PurviewRetentionLabelAddCommand extends GraphCommand_1.default {
22
+ get name() {
23
+ return commands_1.default.RETENTIONLABEL_ADD;
24
+ }
25
+ get description() {
26
+ return 'Create a retention label';
27
+ }
28
+ constructor() {
29
+ super();
30
+ _PurviewRetentionLabelAddCommand_instances.add(this);
31
+ __classPrivateFieldGet(this, _PurviewRetentionLabelAddCommand_instances, "m", _PurviewRetentionLabelAddCommand_initTelemetry).call(this);
32
+ __classPrivateFieldGet(this, _PurviewRetentionLabelAddCommand_instances, "m", _PurviewRetentionLabelAddCommand_initOptions).call(this);
33
+ __classPrivateFieldGet(this, _PurviewRetentionLabelAddCommand_instances, "m", _PurviewRetentionLabelAddCommand_initValidators).call(this);
34
+ }
35
+ commandAction(logger, args) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ const retentionTrigger = args.options.retentionTrigger ? args.options.retentionTrigger : 'dateLabeled';
38
+ const defaultRecordBehavior = args.options.defaultRecordBehavior ? args.options.defaultRecordBehavior : 'startLocked';
39
+ const requestBody = {
40
+ displayName: args.options.displayName,
41
+ behaviorDuringRetentionPeriod: args.options.behaviorDuringRetentionPeriod,
42
+ actionAfterRetentionPeriod: args.options.actionAfterRetentionPeriod,
43
+ retentionTrigger: retentionTrigger,
44
+ retentionDuration: {
45
+ '@odata.type': '#microsoft.graph.security.retentionDurationInDays',
46
+ days: args.options.retentionDuration
47
+ },
48
+ defaultRecordBehavior: defaultRecordBehavior
49
+ };
50
+ if (args.options.descriptionForAdmins) {
51
+ if (this.verbose) {
52
+ logger.logToStderr(`Using '${args.options.descriptionForAdmins}' as descriptionForAdmins`);
53
+ }
54
+ requestBody.descriptionForAdmins = args.options.descriptionForAdmins;
55
+ }
56
+ if (args.options.descriptionForUsers) {
57
+ if (this.verbose) {
58
+ logger.logToStderr(`Using '${args.options.descriptionForUsers}' as descriptionForUsers`);
59
+ }
60
+ requestBody.descriptionForUsers = args.options.descriptionForUsers;
61
+ }
62
+ if (args.options.labelToBeApplied) {
63
+ if (this.verbose) {
64
+ logger.logToStderr(`Using '${args.options.labelToBeApplied}' as labelToBeApplied...`);
65
+ }
66
+ requestBody.labelToBeApplied = args.options.labelToBeApplied;
67
+ }
68
+ const requestOptions = {
69
+ url: `${this.resource}/beta/security/labels/retentionLabels`,
70
+ headers: {
71
+ accept: 'application/json;odata.metadata=none'
72
+ },
73
+ data: requestBody,
74
+ responseType: 'json'
75
+ };
76
+ try {
77
+ const response = yield request_1.default.post(requestOptions);
78
+ logger.log(response);
79
+ }
80
+ catch (err) {
81
+ this.handleRejectedODataPromise(err);
82
+ }
83
+ });
84
+ }
85
+ }
86
+ _PurviewRetentionLabelAddCommand_instances = new WeakSet(), _PurviewRetentionLabelAddCommand_initTelemetry = function _PurviewRetentionLabelAddCommand_initTelemetry() {
87
+ this.telemetry.push((args) => {
88
+ Object.assign(this.telemetryProperties, {
89
+ retentionTrigger: typeof args.options.retentionTrigger !== 'undefined',
90
+ defaultRecordBehavior: typeof args.options.defaultRecordBehavior !== 'undefined',
91
+ descriptionForUsers: typeof args.options.descriptionForUsers !== 'undefined',
92
+ descriptionForAdmins: typeof args.options.descriptionForAdmins !== 'undefined',
93
+ labelToBeApplied: typeof args.options.labelToBeApplied !== 'undefined'
94
+ });
95
+ });
96
+ }, _PurviewRetentionLabelAddCommand_initOptions = function _PurviewRetentionLabelAddCommand_initOptions() {
97
+ this.options.unshift({
98
+ option: '-n, --displayName <displayName>'
99
+ }, {
100
+ option: '--behaviorDuringRetentionPeriod <behaviorDuringRetentionPeriod>',
101
+ autocomplete: ['doNotRetain', 'retain', 'retainAsRecord', 'retainAsRegulatoryRecord']
102
+ }, {
103
+ option: '--actionAfterRetentionPeriod <actionAfterRetentionPeriod>',
104
+ autocomplete: ['none', 'delete', 'startDispositionReview']
105
+ }, {
106
+ option: '--retentionDuration <retentionDuration>'
107
+ }, {
108
+ option: '-t, --retentionTrigger [retentionTrigger]',
109
+ autocomplete: ['dateLabeled', 'dateCreated', 'dateModified', 'dateOfEvent']
110
+ }, {
111
+ option: '--defaultRecordBehavior [defaultRecordBehavior]',
112
+ autocomplete: ['startLocked', 'startUnlocked']
113
+ }, {
114
+ option: '--descriptionForUsers [descriptionForUsers]'
115
+ }, {
116
+ option: '--descriptionForAdmins [descriptionForAdmins]'
117
+ }, {
118
+ option: '--labelToBeApplied [labelToBeApplied]'
119
+ });
120
+ }, _PurviewRetentionLabelAddCommand_initValidators = function _PurviewRetentionLabelAddCommand_initValidators() {
121
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
122
+ if (isNaN(args.options.retentionDuration)) {
123
+ return `Specified retentionDuration ${args.options.retentionDuration} is not a number`;
124
+ }
125
+ if (['doNotRetain', 'retain', 'retainAsRecord', 'retainAsRegulatoryRecord'].indexOf(args.options.behaviorDuringRetentionPeriod) === -1) {
126
+ return `${args.options.behaviorDuringRetentionPeriod} is not a valid behavior of a document with the label. Allowed values are doNotRetain|retain|retainAsRecord|retainAsRegulatoryRecord`;
127
+ }
128
+ if (['none', 'delete', 'startDispositionReview'].indexOf(args.options.actionAfterRetentionPeriod) === -1) {
129
+ return `${args.options.actionAfterRetentionPeriod} is not a valid action to take on a document with the label. Allowed values are none|delete|startDispositionReview`;
130
+ }
131
+ if (args.options.retentionTrigger &&
132
+ ['dateLabeled', 'dateCreated', 'dateModified', 'dateOfEvent'].indexOf(args.options.retentionTrigger) === -1) {
133
+ return `${args.options.retentionTrigger} is not a valid action retention duration calculation. Allowed values are dateLabeled|dateCreated|dateModified|dateOfEvent`;
134
+ }
135
+ if (args.options.defaultRecordBehavior &&
136
+ ['startLocked', 'startUnlocked'].indexOf(args.options.defaultRecordBehavior) === -1) {
137
+ return `${args.options.defaultRecordBehavior} is not a valid state of a record label. Allowed values are startLocked|startUnlocked`;
138
+ }
139
+ return true;
140
+ }));
141
+ };
142
+ module.exports = new PurviewRetentionLabelAddCommand();
143
+ //# sourceMappingURL=retentionlabel-add.js.map