@pnp/cli-microsoft365 6.5.0-beta.f8b8018 → 6.6.0-beta.2339ae2
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.
- package/.eslintrc.js +2 -0
- package/Dockerfile +1 -0
- package/dist/Command.js +17 -7
- package/dist/cli/Cli.js +15 -11
- package/dist/m365/cli/commands/config/config-set.js +1 -0
- package/dist/m365/commands/request.js +18 -1
- package/dist/m365/pa/commands/app/app-export.js +197 -0
- package/dist/m365/pa/commands.js +1 -0
- package/dist/m365/pp/commands/tenant/tenant-settings-set.js +261 -0
- package/dist/m365/pp/commands.js +2 -1
- package/dist/m365/purview/commands/threatassessment/threatassessment-get.js +79 -0
- package/dist/m365/purview/commands.js +2 -1
- package/dist/m365/spfx/commands/project/project-doctor/doctor-1.17.0.js +23 -0
- package/dist/m365/spfx/commands/project/project-doctor/doctor-1.17.1.js +23 -0
- package/dist/m365/spfx/commands/project/project-doctor.js +3 -1
- package/dist/m365/spfx/commands/project/project-upgrade/{upgrade-1.17.0-rc.1.js → upgrade-1.17.0.js} +26 -26
- package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.17.1.js +55 -0
- package/dist/m365/spfx/commands/project/project-upgrade.js +14 -15
- package/dist/m365/spfx/commands/spfx-doctor.js +30 -0
- package/dist/m365/spo/commands/file/file-move.js +1 -1
- package/dist/m365/spo/commands/file/file-retentionlabel-ensure.js +22 -1
- package/dist/m365/spo/commands/listitem/ListItemFieldValueResult.js +3 -0
- package/dist/m365/spo/commands/listitem/listitem-add.js +6 -5
- package/dist/m365/spo/commands/listitem/listitem-batch-add.js +18 -1
- package/dist/m365/spo/commands/listitem/listitem-get.js +21 -6
- package/dist/m365/spo/commands/listitem/listitem-retentionlabel-ensure.js +35 -1
- package/dist/m365/spo/commands/listitem/listitem-set.js +5 -6
- package/dist/m365/spo/commands/web/web-set.js +33 -13
- package/dist/settingsNames.js +2 -1
- package/dist/utils/fsUtil.js +1 -1
- package/docs/docs/_clisettings.md +1 -0
- package/docs/docs/cmd/aad/o365group/o365group-add.md +3 -3
- package/docs/docs/cmd/pa/app/app-export.md +52 -0
- package/docs/docs/cmd/pp/tenant/tenant-settings-set.md +218 -0
- package/docs/docs/cmd/purview/threatassessment/threatassessment-get.md +191 -0
- package/docs/docs/cmd/request.md +10 -4
- package/docs/docs/cmd/spfx/project/project-upgrade.md +2 -2
- package/docs/docs/cmd/spo/file/file-retentionlabel-ensure.md +12 -1
- package/docs/docs/cmd/spo/listitem/listitem-add.md +12 -1
- package/docs/docs/cmd/spo/listitem/listitem-batch-add.md +12 -9
- package/docs/docs/cmd/spo/listitem/listitem-get.md +14 -5
- package/docs/docs/cmd/spo/listitem/listitem-retentionlabel-ensure.md +15 -2
- package/docs/docs/cmd/spo/listitem/listitem-set.md +12 -1
- package/npm-shrinkwrap.json +460 -273
- package/package.json +14 -12
|
@@ -467,6 +467,36 @@ class SpfxDoctorCommand extends base_project_command_1.BaseProjectCommand {
|
|
|
467
467
|
range: '^4',
|
|
468
468
|
fix: 'npm i -g yo@4'
|
|
469
469
|
}
|
|
470
|
+
},
|
|
471
|
+
'1.17.0': {
|
|
472
|
+
gulpCli: {
|
|
473
|
+
range: '^1 || ^2',
|
|
474
|
+
fix: 'npm i -g gulp-cli@2'
|
|
475
|
+
},
|
|
476
|
+
node: {
|
|
477
|
+
range: '>=16.13.0 <17.0.0',
|
|
478
|
+
fix: 'Install Node.js >=16.13.0 <17.0.0'
|
|
479
|
+
},
|
|
480
|
+
sp: SharePointVersion.SPO,
|
|
481
|
+
yo: {
|
|
482
|
+
range: '^4',
|
|
483
|
+
fix: 'npm i -g yo@4'
|
|
484
|
+
}
|
|
485
|
+
},
|
|
486
|
+
'1.17.1': {
|
|
487
|
+
gulpCli: {
|
|
488
|
+
range: '^1 || ^2',
|
|
489
|
+
fix: 'npm i -g gulp-cli@2'
|
|
490
|
+
},
|
|
491
|
+
node: {
|
|
492
|
+
range: '>=16.13.0 <17.0.0',
|
|
493
|
+
fix: 'Install Node.js >=16.13.0 <17.0.0'
|
|
494
|
+
},
|
|
495
|
+
sp: SharePointVersion.SPO,
|
|
496
|
+
yo: {
|
|
497
|
+
range: '^4',
|
|
498
|
+
fix: 'npm i -g yo@4'
|
|
499
|
+
}
|
|
470
500
|
}
|
|
471
501
|
};
|
|
472
502
|
__classPrivateFieldGet(this, _SpfxDoctorCommand_instances, "m", _SpfxDoctorCommand_initTelemetry).call(this);
|
|
@@ -147,7 +147,7 @@ class SpoFileMoveCommand extends SpoCommand_1.default {
|
|
|
147
147
|
yield Cli_1.Cli.executeCommand(removeCommand, { options: Object.assign(Object.assign({}, removeOptions), { _: [] }) });
|
|
148
148
|
}
|
|
149
149
|
catch (err) {
|
|
150
|
-
if (err
|
|
150
|
+
if (err !== undefined && err.message !== undefined && err.message.includes('does not exist')) {
|
|
151
151
|
}
|
|
152
152
|
else {
|
|
153
153
|
throw err;
|
|
@@ -42,6 +42,9 @@ class SpoFileRetentionLabelEnsureCommand extends SpoCommand_1.default {
|
|
|
42
42
|
return __awaiter(this, void 0, void 0, function* () {
|
|
43
43
|
try {
|
|
44
44
|
const fileProperties = yield this.getFileProperties(logger, args);
|
|
45
|
+
if (args.options.assetId) {
|
|
46
|
+
yield this.applyAssetId(args.options.webUrl, fileProperties.ListItemAllFields.ParentList.Id, fileProperties.ListItemAllFields.Id, args.options.assetId);
|
|
47
|
+
}
|
|
45
48
|
const options = {
|
|
46
49
|
webUrl: args.options.webUrl,
|
|
47
50
|
listId: fileProperties.ListItemAllFields.ParentList.Id,
|
|
@@ -84,12 +87,28 @@ class SpoFileRetentionLabelEnsureCommand extends SpoCommand_1.default {
|
|
|
84
87
|
return yield request_1.default.get(requestOptions);
|
|
85
88
|
});
|
|
86
89
|
}
|
|
90
|
+
applyAssetId(webUrl, listId, listItemId, assetId) {
|
|
91
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
const requestUrl = `${webUrl}/_api/web/lists(guid'${formatting_1.formatting.encodeQueryParameter(listId)}')`;
|
|
93
|
+
const requestBody = { "formValues": [{ "FieldName": "ComplianceAssetId", "FieldValue": assetId }] };
|
|
94
|
+
const requestOptions = {
|
|
95
|
+
url: `${requestUrl}/items(${listItemId})/ValidateUpdateListItem()`,
|
|
96
|
+
headers: {
|
|
97
|
+
'accept': 'application/json;odata=nometadata'
|
|
98
|
+
},
|
|
99
|
+
data: requestBody,
|
|
100
|
+
responseType: 'json'
|
|
101
|
+
};
|
|
102
|
+
yield request_1.default.post(requestOptions);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
87
105
|
}
|
|
88
106
|
_SpoFileRetentionLabelEnsureCommand_instances = new WeakSet(), _SpoFileRetentionLabelEnsureCommand_initTelemetry = function _SpoFileRetentionLabelEnsureCommand_initTelemetry() {
|
|
89
107
|
this.telemetry.push((args) => {
|
|
90
108
|
Object.assign(this.telemetryProperties, {
|
|
91
109
|
fileUrl: typeof args.options.fileUrl !== 'undefined',
|
|
92
|
-
fileId: typeof args.options.fileId !== 'undefined'
|
|
110
|
+
fileId: typeof args.options.fileId !== 'undefined',
|
|
111
|
+
assetId: typeof args.options.assetId !== 'undefined'
|
|
93
112
|
});
|
|
94
113
|
});
|
|
95
114
|
}, _SpoFileRetentionLabelEnsureCommand_initOptions = function _SpoFileRetentionLabelEnsureCommand_initOptions() {
|
|
@@ -101,6 +120,8 @@ _SpoFileRetentionLabelEnsureCommand_instances = new WeakSet(), _SpoFileRetention
|
|
|
101
120
|
option: '--fileUrl [fileUrl]'
|
|
102
121
|
}, {
|
|
103
122
|
option: '-i, --fileId [fileId]'
|
|
123
|
+
}, {
|
|
124
|
+
option: '-a, --assetId [assetId]'
|
|
104
125
|
});
|
|
105
126
|
}, _SpoFileRetentionLabelEnsureCommand_initValidators = function _SpoFileRetentionLabelEnsureCommand_initValidators() {
|
|
106
127
|
this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -15,6 +15,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
15
15
|
};
|
|
16
16
|
var _SpoListItemAddCommand_instances, _SpoListItemAddCommand_initTelemetry, _SpoListItemAddCommand_initOptions, _SpoListItemAddCommand_initValidators, _SpoListItemAddCommand_initTypes, _SpoListItemAddCommand_initOptionSets;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const os = require("os");
|
|
18
19
|
const request_1 = require("../../../../request");
|
|
19
20
|
const formatting_1 = require("../../../../utils/formatting");
|
|
20
21
|
const spo_1 = require("../../../../utils/spo");
|
|
@@ -139,16 +140,16 @@ class SpoListItemAddCommand extends SpoCommand_1.default {
|
|
|
139
140
|
const response = yield request_1.default.post(requestOptions);
|
|
140
141
|
// Response is from /AddValidateUpdateItemUsingPath POST call, perform get on added item to get all field values
|
|
141
142
|
const fieldValues = response.value;
|
|
143
|
+
if (fieldValues.some(f => f.HasException)) {
|
|
144
|
+
throw `Creating the item failed with the following errors: ${os.EOL}${fieldValues.filter(f => f.HasException).map(f => { return `- ${f.FieldName} - ${f.ErrorMessage}`; }).join(os.EOL)}`;
|
|
145
|
+
}
|
|
142
146
|
const idField = fieldValues.filter((thisField) => {
|
|
143
147
|
return (thisField.FieldName === "Id");
|
|
144
148
|
});
|
|
145
149
|
if (this.debug) {
|
|
146
|
-
logger.logToStderr(`
|
|
150
|
+
logger.logToStderr(`Field values returned:`);
|
|
147
151
|
logger.logToStderr(fieldValues);
|
|
148
|
-
logger.logToStderr(`Id returned by AddValidateUpdateItemUsingPath: ${idField}`);
|
|
149
|
-
}
|
|
150
|
-
if (idField.length === 0) {
|
|
151
|
-
throw `Item didn't add successfully`;
|
|
152
|
+
logger.logToStderr(`Id returned by AddValidateUpdateItemUsingPath: ${idField[0].FieldValue}`);
|
|
152
153
|
}
|
|
153
154
|
requestOptions = {
|
|
154
155
|
url: `${requestUrl}/items(${idField[0].FieldValue})`,
|
|
@@ -23,6 +23,7 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
|
23
23
|
var _SpoListItemBatchAddCommand_instances, _SpoListItemBatchAddCommand_initTelemetry, _SpoListItemBatchAddCommand_initOptions, _SpoListItemBatchAddCommand_initValidators, _SpoListItemBatchAddCommand_initTypes, _SpoListItemBatchAddCommand_initOptionSets;
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
25
|
const fs = require("fs");
|
|
26
|
+
const os = require("os");
|
|
26
27
|
const request_1 = require("../../../../request");
|
|
27
28
|
const uuid_1 = require("uuid");
|
|
28
29
|
const formatting_1 = require("../../../../utils/formatting");
|
|
@@ -116,7 +117,11 @@ class SpoListItemBatchAddCommand extends SpoCommand_1.default {
|
|
|
116
117
|
},
|
|
117
118
|
data: requestBody.join('')
|
|
118
119
|
};
|
|
119
|
-
yield request_1.default.post(requestOptions);
|
|
120
|
+
const response = yield request_1.default.post(requestOptions);
|
|
121
|
+
const parsedResponse = this.parseBatchResponseBody(response);
|
|
122
|
+
if (parsedResponse.some(r => r.HasException)) {
|
|
123
|
+
throw `Creating some items failed with the following errors: ${os.EOL}${parsedResponse.filter(f => f.HasException).map(f => { return `- Line ${f.csvLineNumber}: ${f.FieldName} - ${f.ErrorMessage}`; }).join(os.EOL)}`;
|
|
124
|
+
}
|
|
120
125
|
});
|
|
121
126
|
}
|
|
122
127
|
parseBatchRequestBody(items, batchId, requestUrl) {
|
|
@@ -142,6 +147,18 @@ class SpoListItemBatchAddCommand extends SpoCommand_1.default {
|
|
|
142
147
|
batchBody.push(`--batch_${batchId}--\n`);
|
|
143
148
|
return batchBody;
|
|
144
149
|
}
|
|
150
|
+
parseBatchResponseBody(response) {
|
|
151
|
+
const batchResults = [];
|
|
152
|
+
response.split('\r\n')
|
|
153
|
+
.filter((line) => line.startsWith('{'))
|
|
154
|
+
.forEach((line, index) => {
|
|
155
|
+
const parsedResponse = JSON.parse(line);
|
|
156
|
+
parsedResponse.value.forEach((fieldValueResult) => {
|
|
157
|
+
batchResults.push(Object.assign({ csvLineNumber: (index + 2) }, fieldValueResult));
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
return batchResults;
|
|
161
|
+
}
|
|
145
162
|
getSingleItemRequestBody(row) {
|
|
146
163
|
const requestBody = [];
|
|
147
164
|
Object.keys(row).forEach(key => {
|
|
@@ -58,8 +58,14 @@ class SpoListItemGetCommand extends SpoCommand_1.default {
|
|
|
58
58
|
const propertiesToExpand = propertiesWithSlash.map(e => e.split('/')[0]);
|
|
59
59
|
const expandPropertiesArray = propertiesToExpand.filter((item, pos) => propertiesToExpand.indexOf(item) === pos);
|
|
60
60
|
const fieldExpand = expandPropertiesArray.length > 0 ? `&$expand=${expandPropertiesArray.join(",")}` : ``;
|
|
61
|
+
if (args.options.id) {
|
|
62
|
+
requestUrl += `/items(${args.options.id})`;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
requestUrl += `/GetItemByUniqueId(guid'${args.options.uniqueId}')`;
|
|
66
|
+
}
|
|
61
67
|
const requestOptions = {
|
|
62
|
-
url: `${requestUrl}
|
|
68
|
+
url: `${requestUrl}?$select=${formatting_1.formatting.encodeQueryParameter(propertiesSelect.join(","))}${fieldExpand}`,
|
|
63
69
|
headers: {
|
|
64
70
|
'accept': 'application/json;odata=nometadata'
|
|
65
71
|
},
|
|
@@ -68,7 +74,7 @@ class SpoListItemGetCommand extends SpoCommand_1.default {
|
|
|
68
74
|
try {
|
|
69
75
|
const itemProperties = yield request_1.default.get(requestOptions);
|
|
70
76
|
if (args.options.withPermissions) {
|
|
71
|
-
requestOptions.url = `${requestUrl}/
|
|
77
|
+
requestOptions.url = `${requestUrl}/RoleAssignments?$expand=Member,RoleDefinitionBindings`;
|
|
72
78
|
const response = yield request_1.default.get(requestOptions);
|
|
73
79
|
response.value.forEach((r) => {
|
|
74
80
|
r.RoleDefinitionBindings = formatting_1.formatting.setFriendlyPermissions(r.RoleDefinitionBindings);
|
|
@@ -90,6 +96,8 @@ _SpoListItemGetCommand_instances = new WeakSet(), _SpoListItemGetCommand_initTel
|
|
|
90
96
|
listId: typeof args.options.listId !== 'undefined',
|
|
91
97
|
listTitle: typeof args.options.listTitle !== 'undefined',
|
|
92
98
|
listUrl: typeof args.options.listUrl !== 'undefined',
|
|
99
|
+
id: typeof args.options.id !== 'undefined',
|
|
100
|
+
uniqueId: typeof args.options.uniqueId !== 'undefined',
|
|
93
101
|
withPermissions: !!args.options.withPermissions
|
|
94
102
|
});
|
|
95
103
|
});
|
|
@@ -97,7 +105,9 @@ _SpoListItemGetCommand_instances = new WeakSet(), _SpoListItemGetCommand_initTel
|
|
|
97
105
|
this.options.unshift({
|
|
98
106
|
option: '-u, --webUrl <webUrl>'
|
|
99
107
|
}, {
|
|
100
|
-
option: '-i, --id
|
|
108
|
+
option: '-i, --id [id]'
|
|
109
|
+
}, {
|
|
110
|
+
option: '--uniqueId [uniqueId]'
|
|
101
111
|
}, {
|
|
102
112
|
option: '-l, --listId [listId]'
|
|
103
113
|
}, {
|
|
@@ -119,15 +129,20 @@ _SpoListItemGetCommand_instances = new WeakSet(), _SpoListItemGetCommand_initTel
|
|
|
119
129
|
!validation_1.validation.isValidGuid(args.options.listId)) {
|
|
120
130
|
return `${args.options.listId} in option listId is not a valid GUID`;
|
|
121
131
|
}
|
|
122
|
-
if (
|
|
132
|
+
if (args.options.id &&
|
|
133
|
+
isNaN(parseInt(args.options.id))) {
|
|
123
134
|
return `${args.options.id} is not a number`;
|
|
124
135
|
}
|
|
136
|
+
if (args.options.uniqueId &&
|
|
137
|
+
!validation_1.validation.isValidGuid(args.options.uniqueId)) {
|
|
138
|
+
return `${args.options.uniqueId} in option uniqueId is not a valid GUID`;
|
|
139
|
+
}
|
|
125
140
|
return true;
|
|
126
141
|
}));
|
|
127
142
|
}, _SpoListItemGetCommand_initTypes = function _SpoListItemGetCommand_initTypes() {
|
|
128
|
-
this.types.string.push('webUrl', 'listId', 'listTitle', 'id', 'properties');
|
|
143
|
+
this.types.string.push('webUrl', 'listId', 'listTitle', 'id', 'uniqueId', 'properties');
|
|
129
144
|
}, _SpoListItemGetCommand_initOptionSets = function _SpoListItemGetCommand_initOptionSets() {
|
|
130
|
-
this.optionSets.push({ options: ['listId', 'listTitle', 'listUrl'] });
|
|
145
|
+
this.optionSets.push({ options: ['listId', 'listTitle', 'listUrl'] }, { options: ['id', 'uniqueId'] });
|
|
131
146
|
};
|
|
132
147
|
module.exports = new SpoListItemGetCommand();
|
|
133
148
|
//# sourceMappingURL=listitem-get.js.map
|
|
@@ -42,6 +42,9 @@ class SpoListItemRetentionLabelEnsureCommand extends SpoCommand_1.default {
|
|
|
42
42
|
return __awaiter(this, void 0, void 0, function* () {
|
|
43
43
|
try {
|
|
44
44
|
const labelInformation = yield this.getLabelInformation(args.options, logger);
|
|
45
|
+
if (args.options.assetId) {
|
|
46
|
+
yield this.applyAssetId(args.options, logger);
|
|
47
|
+
}
|
|
45
48
|
yield this.applyLabel(args.options, labelInformation, logger);
|
|
46
49
|
}
|
|
47
50
|
catch (err) {
|
|
@@ -106,6 +109,34 @@ class SpoListItemRetentionLabelEnsureCommand extends SpoCommand_1.default {
|
|
|
106
109
|
yield request_1.default.post(requestOptions);
|
|
107
110
|
});
|
|
108
111
|
}
|
|
112
|
+
applyAssetId(options, logger) {
|
|
113
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
114
|
+
if (this.verbose) {
|
|
115
|
+
logger.logToStderr(`Applying the asset Id ${options.assetId}...`);
|
|
116
|
+
}
|
|
117
|
+
let requestUrl = `${options.webUrl}/_api/web`;
|
|
118
|
+
if (options.listId) {
|
|
119
|
+
requestUrl += `/lists(guid'${formatting_1.formatting.encodeQueryParameter(options.listId)}')/items(${options.listItemId})/ValidateUpdateListItem()`;
|
|
120
|
+
}
|
|
121
|
+
else if (options.listTitle) {
|
|
122
|
+
requestUrl += `/lists/getByTitle('${formatting_1.formatting.encodeQueryParameter(options.listTitle)}')/items(${options.listItemId})/ValidateUpdateListItem()`;
|
|
123
|
+
}
|
|
124
|
+
else if (options.listUrl) {
|
|
125
|
+
const listServerRelativeUrl = urlUtil_1.urlUtil.getServerRelativePath(options.webUrl, options.listUrl);
|
|
126
|
+
requestUrl += `/GetList(@listUrl)/items(${options.listItemId})/ValidateUpdateListItem()?@listUrl='${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}'`;
|
|
127
|
+
}
|
|
128
|
+
const requestBody = { "formValues": [{ "FieldName": "ComplianceAssetId", "FieldValue": options.assetId }] };
|
|
129
|
+
const requestOptions = {
|
|
130
|
+
url: requestUrl,
|
|
131
|
+
headers: {
|
|
132
|
+
'accept': 'application/json;odata=nometadata'
|
|
133
|
+
},
|
|
134
|
+
data: requestBody,
|
|
135
|
+
responseType: 'json'
|
|
136
|
+
};
|
|
137
|
+
yield request_1.default.post(requestOptions);
|
|
138
|
+
});
|
|
139
|
+
}
|
|
109
140
|
}
|
|
110
141
|
_SpoListItemRetentionLabelEnsureCommand_instances = new WeakSet(), _SpoListItemRetentionLabelEnsureCommand_initTelemetry = function _SpoListItemRetentionLabelEnsureCommand_initTelemetry() {
|
|
111
142
|
this.telemetry.push((args) => {
|
|
@@ -114,7 +145,8 @@ _SpoListItemRetentionLabelEnsureCommand_instances = new WeakSet(), _SpoListItemR
|
|
|
114
145
|
listTitle: typeof args.options.listTitle !== 'undefined',
|
|
115
146
|
listUrl: typeof args.options.listUrl !== 'undefined',
|
|
116
147
|
name: typeof args.options.name !== 'undefined',
|
|
117
|
-
id: typeof args.options.id !== 'undefined'
|
|
148
|
+
id: typeof args.options.id !== 'undefined',
|
|
149
|
+
assetId: typeof args.options.assetId !== 'undefined'
|
|
118
150
|
});
|
|
119
151
|
});
|
|
120
152
|
}, _SpoListItemRetentionLabelEnsureCommand_initOptions = function _SpoListItemRetentionLabelEnsureCommand_initOptions() {
|
|
@@ -132,6 +164,8 @@ _SpoListItemRetentionLabelEnsureCommand_instances = new WeakSet(), _SpoListItemR
|
|
|
132
164
|
option: '-n, --name [name]'
|
|
133
165
|
}, {
|
|
134
166
|
option: '-i, --id [id]'
|
|
167
|
+
}, {
|
|
168
|
+
option: '-a, --assetId [assetId]'
|
|
135
169
|
});
|
|
136
170
|
}, _SpoListItemRetentionLabelEnsureCommand_initValidators = function _SpoListItemRetentionLabelEnsureCommand_initValidators() {
|
|
137
171
|
this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -15,6 +15,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
15
15
|
};
|
|
16
16
|
var _SpoListItemSetCommand_instances, _SpoListItemSetCommand_initTelemetry, _SpoListItemSetCommand_initOptions, _SpoListItemSetCommand_initValidators, _SpoListItemSetCommand_initTypes, _SpoListItemSetCommand_initOptionSets;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const os = require("os");
|
|
18
19
|
const config_1 = require("../../../../config");
|
|
19
20
|
const request_1 = require("../../../../request");
|
|
20
21
|
const formatting_1 = require("../../../../utils/formatting");
|
|
@@ -185,13 +186,11 @@ class SpoListItemSetCommand extends SpoCommand_1.default {
|
|
|
185
186
|
}
|
|
186
187
|
else {
|
|
187
188
|
// Response is from /ValidateUpdateListItem POST call, perform get on updated item to get all field values
|
|
188
|
-
const
|
|
189
|
-
if (
|
|
190
|
-
throw `
|
|
191
|
-
}
|
|
192
|
-
else {
|
|
193
|
-
itemId = returnedData[0].ItemId;
|
|
189
|
+
const fieldValues = response.value;
|
|
190
|
+
if (fieldValues.some(f => f.HasException)) {
|
|
191
|
+
throw `Updating the items has failed with the following errors: ${os.EOL}${fieldValues.filter(f => f.HasException).map(f => { return `- ${f.FieldName} - ${f.ErrorMessage}`; }).join(os.EOL)}`;
|
|
194
192
|
}
|
|
193
|
+
itemId = fieldValues[0].ItemId;
|
|
195
194
|
}
|
|
196
195
|
const requestOptionsItems = {
|
|
197
196
|
url: `${requestUrl}/items(${itemId})`,
|
|
@@ -69,20 +69,37 @@ class SpoWebSetCommand extends SpoCommand_1.default {
|
|
|
69
69
|
const searchScope = args.options.searchScope.toLowerCase();
|
|
70
70
|
payload.SearchScope = SpoWebSetCommand.searchScopeOptions.indexOf(searchScope);
|
|
71
71
|
}
|
|
72
|
-
const requestOptions = {
|
|
73
|
-
url: `${args.options.url}/_api/web`,
|
|
74
|
-
headers: {
|
|
75
|
-
'content-type': 'application/json;odata=nometadata',
|
|
76
|
-
accept: 'application/json;odata=nometadata'
|
|
77
|
-
},
|
|
78
|
-
responseType: 'json',
|
|
79
|
-
data: payload
|
|
80
|
-
};
|
|
81
|
-
if (this.verbose) {
|
|
82
|
-
logger.logToStderr(`Updating properties of subsite ${args.options.url}...`);
|
|
83
|
-
}
|
|
84
72
|
try {
|
|
73
|
+
const requestOptions = {
|
|
74
|
+
url: `${args.options.url}/_api/web`,
|
|
75
|
+
headers: {
|
|
76
|
+
'content-type': 'application/json;odata=nometadata',
|
|
77
|
+
accept: 'application/json;odata=nometadata'
|
|
78
|
+
},
|
|
79
|
+
responseType: 'json',
|
|
80
|
+
data: payload
|
|
81
|
+
};
|
|
82
|
+
if (this.verbose) {
|
|
83
|
+
logger.logToStderr(`Updating properties of subsite ${args.options.url}...`);
|
|
84
|
+
}
|
|
85
85
|
yield request_1.default.patch(requestOptions);
|
|
86
|
+
if (typeof args.options.welcomePage !== 'undefined') {
|
|
87
|
+
if (this.verbose) {
|
|
88
|
+
logger.logToStderr(`Setting welcome page to: ${args.options.welcomePage}...`);
|
|
89
|
+
}
|
|
90
|
+
const requestOptions = {
|
|
91
|
+
url: `${args.options.url}/_api/web/RootFolder`,
|
|
92
|
+
headers: {
|
|
93
|
+
'content-type': 'application/json;odata=nometadata',
|
|
94
|
+
accept: 'application/json;odata=nometadata'
|
|
95
|
+
},
|
|
96
|
+
responseType: 'json',
|
|
97
|
+
data: {
|
|
98
|
+
WelcomePage: args.options.welcomePage
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
yield request_1.default.patch(requestOptions);
|
|
102
|
+
}
|
|
86
103
|
}
|
|
87
104
|
catch (err) {
|
|
88
105
|
this.handleRejectedODataJsonPromise(err);
|
|
@@ -105,7 +122,8 @@ _SpoWebSetCommand_instances = new WeakSet(), _SpoWebSetCommand_initTelemetry = f
|
|
|
105
122
|
quickLaunchEnabled: typeof args.options.quickLaunchEnabled !== 'undefined',
|
|
106
123
|
footerEnabled: typeof args.options.footerEnabled !== 'undefined',
|
|
107
124
|
navAudienceTargetingEnabled: typeof args.options.navAudienceTargetingEnabled !== 'undefined',
|
|
108
|
-
searchScope: args.options.searchScope !== 'undefined'
|
|
125
|
+
searchScope: typeof args.options.searchScope !== 'undefined',
|
|
126
|
+
welcomePage: typeof args.options.welcomePage !== 'undefined'
|
|
109
127
|
});
|
|
110
128
|
this.trackUnknownOptions(this.telemetryProperties, args.options);
|
|
111
129
|
});
|
|
@@ -139,6 +157,8 @@ _SpoWebSetCommand_instances = new WeakSet(), _SpoWebSetCommand_initTelemetry = f
|
|
|
139
157
|
}, {
|
|
140
158
|
option: '--searchScope [searchScope]',
|
|
141
159
|
autocomplete: SpoWebSetCommand.searchScopeOptions
|
|
160
|
+
}, {
|
|
161
|
+
option: '--welcomePage [welcomePage]'
|
|
142
162
|
});
|
|
143
163
|
}, _SpoWebSetCommand_initTypes = function _SpoWebSetCommand_initTypes() {
|
|
144
164
|
this.types.boolean.push('megaMenuEnabled', 'footerEnabled', 'quickLaunchEnabled', 'navAudienceTargetingEnabled');
|
package/dist/settingsNames.js
CHANGED
|
@@ -15,7 +15,8 @@ const settingsNames = {
|
|
|
15
15
|
output: 'output',
|
|
16
16
|
printErrorsAsPlainText: 'printErrorsAsPlainText',
|
|
17
17
|
prompt: 'prompt',
|
|
18
|
-
showHelpOnFailure: 'showHelpOnFailure'
|
|
18
|
+
showHelpOnFailure: 'showHelpOnFailure',
|
|
19
|
+
showSpinner: 'showSpinner'
|
|
19
20
|
};
|
|
20
21
|
exports.settingsNames = settingsNames;
|
|
21
22
|
//# sourceMappingURL=settingsNames.js.map
|
package/dist/utils/fsUtil.js
CHANGED
|
@@ -42,7 +42,7 @@ const addFileCommands = {
|
|
|
42
42
|
addFileCommand: 'cat > [FILEPATH] << EOF [FILECONTENT]EOF'
|
|
43
43
|
},
|
|
44
44
|
powershell: {
|
|
45
|
-
addFileCommand: `@
|
|
45
|
+
addFileCommand: `@'[FILECONTENT]'@ | Out-File -FilePath [FILEPATH]`
|
|
46
46
|
},
|
|
47
47
|
cmd: {
|
|
48
48
|
addFileCommand: `echo [FILECONTENT] > [FILEPATH]`
|
|
@@ -18,3 +18,4 @@ Setting name|Definition|Default value
|
|
|
18
18
|
`printErrorsAsPlainText`|When output mode is set to `json`, print error messages as plain-text rather than JSON|`true`
|
|
19
19
|
`prompt`|Prompts for missing values in required options|`false`
|
|
20
20
|
`showHelpOnFailure`|Automatically display help when executing a command failed|`true`
|
|
21
|
+
`showSpinner`|Display spinner when executing commands|`true`
|
|
@@ -48,7 +48,7 @@ m365 aad o365group add [options]
|
|
|
48
48
|
## Remarks
|
|
49
49
|
|
|
50
50
|
When specifying the path to the logo image you can use both relative and absolute paths. Note, that ~ in the path, will not be resolved and will most likely result in an error.
|
|
51
|
-
If an invalid user is provided in the comma-separated list
|
|
51
|
+
If an invalid user is provided in the comma-separated list of Owners or Members, the command operation will fail and the Microsoft 365 Group will not be created.
|
|
52
52
|
|
|
53
53
|
## Examples
|
|
54
54
|
|
|
@@ -76,13 +76,13 @@ Create a public Microsoft 365 Group and set specified users as its members
|
|
|
76
76
|
m365 aad o365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --members "DebraB@contoso.onmicrosoft.com,DiegoS@contoso.onmicrosoft.com"
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
Create a public Microsoft 365 Group and
|
|
79
|
+
Create a public Microsoft 365 Group and allow only group members to be able to post conversations to the group.
|
|
80
80
|
|
|
81
81
|
```sh
|
|
82
82
|
m365 aad o365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --allowMembersToPost
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
Create a public Microsoft 365 Group and
|
|
85
|
+
Create a public Microsoft 365 Group and hide it from the Outlook experiences (web and client).
|
|
86
86
|
|
|
87
87
|
```sh
|
|
88
88
|
m365 aad o365group add --displayName Finance --description "This is the Contoso Finance Group. Please come here and check out the latest news, posts, files, and more." --mailNickname finance --hideGroupInOutlook
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# pa app export
|
|
2
|
+
|
|
3
|
+
Exports the specified Power App
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
m365 pa app export [options]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Options
|
|
12
|
+
|
|
13
|
+
`-i, --id <id>`
|
|
14
|
+
: The id of the Power App to export
|
|
15
|
+
|
|
16
|
+
`-e, --environment <environment>`
|
|
17
|
+
: The name of the environment for which to export the app
|
|
18
|
+
|
|
19
|
+
`-n, --packageDisplayName [packageDisplayName]`
|
|
20
|
+
: The display name to use in the exported package
|
|
21
|
+
|
|
22
|
+
`-d, --packageDescription [packageDescription]`
|
|
23
|
+
: The description to use in the exported package
|
|
24
|
+
|
|
25
|
+
`-c, --packageCreatedBy [packageCreatedBy]`
|
|
26
|
+
: The name of the person to be used as the creator of the exported package
|
|
27
|
+
|
|
28
|
+
`-s, --packageSourceEnvironment [packageSourceEnvironment]`
|
|
29
|
+
: The name of the source environment from which the exported package was taken
|
|
30
|
+
|
|
31
|
+
`-p, --path [path]`
|
|
32
|
+
: The path to save the exported package to. If not specified the app will be exported in the current working directory
|
|
33
|
+
|
|
34
|
+
--8<-- "docs/cmd/_global.md"
|
|
35
|
+
|
|
36
|
+
## Examples
|
|
37
|
+
|
|
38
|
+
Export the specified Power App as a ZIP file
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
m365 pa app export --environment Default-d87a7535-dd31-4437-bfe1-95340acd55c5 --id 3989cb59-ce1a-4a5c-bb78-257c5c39381d
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Export the specified Power App as a ZIP file with the package displayname, package description, the one who created it, the package source environment and the path
|
|
45
|
+
|
|
46
|
+
```sh
|
|
47
|
+
m365 pa app export --environment Default-d87a7535-dd31-4437-bfe1-95340acd55c5 --id 3989cb59-ce1a-4a5c-bb78-257c5c39381d --packageDisplayName "PowerApp" --packageDescription "Power App Description" --packageCreatedBy "John Doe" --packageSourceEnvironment "Contoso" --path "C:/Users/John/Documents"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Response
|
|
51
|
+
|
|
52
|
+
The command won't return a response on success.
|