@pnp/cli-microsoft365 6.7.0 → 6.8.0-beta.00c3a00
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/.mocharc.json +1 -0
- package/README.md +6 -1
- package/dist/Command.js +6 -0
- package/dist/chili/chili.js +298 -0
- package/dist/chili/index.js +20 -0
- package/dist/cli/Cli.js +2 -2
- package/dist/m365/aad/commands/user/user-add.js +30 -21
- package/dist/m365/app/commands/permission/permission-add.js +279 -0
- package/dist/m365/app/commands.js +1 -0
- package/dist/m365/commands/commands.js +2 -0
- package/dist/m365/commands/docs.js +42 -0
- package/dist/m365/commands/login.js +1 -1
- package/dist/m365/commands/setup.js +180 -0
- package/dist/m365/commands/setupPresets.js +25 -0
- package/dist/m365/pa/commands/app/app-consent-set.js +101 -0
- package/dist/m365/pa/commands.js +1 -0
- package/dist/m365/planner/commands/roster/roster-plan-list.js +102 -0
- package/dist/m365/planner/commands.js +1 -0
- package/dist/m365/purview/commands/sensitivitylabel/sensitivitylabel-get.js +97 -0
- package/dist/m365/purview/commands/sensitivitylabel/sensitivitylabel-list.js +85 -0
- package/dist/m365/purview/commands/sensitivitylabel/sensitivitylabel-policysettings-list.js +89 -0
- package/dist/m365/purview/commands.js +3 -0
- package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.15.2.js +2 -0
- package/dist/m365/spfx/commands/spfx-doctor.js +14 -30
- package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-remove.js +146 -0
- package/dist/m365/spo/commands/file/file-checkin.js +8 -3
- package/dist/m365/spo/commands/file/file-checkout.js +8 -3
- package/dist/m365/spo/commands/file/file-copy.js +4 -4
- package/dist/m365/spo/commands/file/file-get.js +3 -1
- package/dist/m365/spo/commands/file/file-list.js +17 -6
- package/dist/m365/spo/commands/file/file-move.js +6 -7
- package/dist/m365/spo/commands/file/file-remove.js +6 -12
- package/dist/m365/spo/commands/file/file-rename.js +3 -3
- package/dist/m365/spo/commands/file/file-roleassignment-add.js +2 -1
- package/dist/m365/spo/commands/file/file-roleassignment-remove.js +3 -3
- package/dist/m365/spo/commands/file/file-roleinheritance-break.js +2 -1
- package/dist/m365/spo/commands/file/file-roleinheritance-reset.js +2 -1
- package/dist/m365/spo/commands/file/file-sharinginfo-get.js +4 -2
- package/dist/m365/spo/commands/file/file-version-clear.js +3 -1
- package/dist/m365/spo/commands/file/file-version-get.js +3 -1
- package/dist/m365/spo/commands/file/file-version-remove.js +3 -1
- package/dist/m365/spo/commands/file/file-version-restore.js +3 -1
- package/dist/m365/spo/commands/folder/folder-copy.js +4 -4
- package/dist/m365/spo/commands/folder/folder-get.js +5 -2
- package/dist/m365/spo/commands/folder/folder-move.js +3 -2
- package/dist/m365/spo/commands/folder/folder-rename.js +5 -2
- package/dist/m365/spo/commands/list/list-get.js +30 -3
- package/dist/m365/spo/commands/list/list-list.js +39 -2
- package/dist/m365/spo/commands/listitem/listitem-batch-set.js +308 -0
- package/dist/m365/spo/commands/page/page-section-add.js +2 -3
- package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-permissionrequest-list.js +46 -1
- package/dist/m365/spo/commands/site/site-recyclebinitem-move.js +119 -0
- package/dist/m365/spo/commands/site/site-recyclebinitem-remove.js +106 -0
- package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-get.js +30 -39
- package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-list.js +47 -0
- package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-remove.js +151 -0
- package/dist/m365/spo/commands/tenant/tenant-commandset-remove.js +152 -0
- package/dist/m365/spo/commands/tenant/tenant-commandset-set.js +203 -0
- package/dist/m365/spo/commands/tenant/tenant-settings-set.js +4 -0
- package/dist/m365/spo/commands/term/term-add.js +13 -4
- package/dist/m365/spo/commands/term/term-get.js +14 -5
- package/dist/m365/spo/commands/term/term-group-get.js +12 -3
- package/dist/m365/spo/commands/term/term-group-list.js +39 -4
- package/dist/m365/spo/commands/term/term-list.js +18 -9
- package/dist/m365/spo/commands/term/term-set-add.js +13 -4
- package/dist/m365/spo/commands/term/term-set-get.js +12 -3
- package/dist/m365/spo/commands/term/term-set-list.js +12 -3
- package/dist/m365/spo/commands.js +9 -0
- package/dist/m365/teams/commands/chat/chat-member-remove.js +137 -0
- package/dist/m365/teams/commands/meeting/meeting-transcript-list.js +124 -0
- package/dist/m365/teams/commands.js +2 -0
- package/dist/utils/formatting.js +35 -11
- package/dist/utils/pid.js +5 -0
- package/dist/utils/spo.js +1 -1
- package/docs/docs/cmd/aad/o365group/o365group-get.md +0 -12
- package/docs/docs/cmd/aad/user/user-add.md +4 -0
- package/docs/docs/cmd/aad/user/user-set.md +2 -2
- package/docs/docs/cmd/app/permission/permission-add.md +53 -0
- package/docs/docs/cmd/cli/cli-consent.md +6 -0
- package/docs/docs/cmd/cli/cli-doctor.md +17 -0
- package/docs/docs/cmd/cli/cli-issue.md +6 -0
- package/docs/docs/cmd/cli/cli-reconsent.md +6 -0
- package/docs/docs/cmd/cli/completion/completion-sh-setup.md +6 -0
- package/docs/docs/cmd/cli/config/config-get.md +6 -0
- package/docs/docs/cmd/docs.md +51 -0
- package/docs/docs/cmd/flow/environment/environment-list.md +18 -0
- package/docs/docs/cmd/flow/flow-get.md +20 -0
- package/docs/docs/cmd/flow/flow-list.md +17 -0
- package/docs/docs/cmd/graph/changelog/changelog-list.md +52 -0
- package/docs/docs/cmd/graph/schemaextension/schemaextension-add.md +61 -0
- package/docs/docs/cmd/graph/schemaextension/schemaextension-get.md +61 -0
- package/docs/docs/cmd/graph/schemaextension/schemaextension-list.md +61 -0
- package/docs/docs/cmd/graph/schemaextension/schemaextension-remove.md +4 -0
- package/docs/docs/cmd/graph/schemaextension/schemaextension-set.md +4 -0
- package/docs/docs/cmd/graph/subscription/subscription-add.md +73 -0
- package/docs/docs/cmd/login.md +1 -1
- package/docs/docs/cmd/onedrive/onedrive-list.md +225 -0
- package/docs/docs/cmd/onedrive/report/report-activityfilecounts.md +39 -0
- package/docs/docs/cmd/onedrive/report/report-activityusercounts.md +39 -0
- package/docs/docs/cmd/onedrive/report/report-activityuserdetail.md +43 -0
- package/docs/docs/cmd/onedrive/report/report-usageaccountcounts.md +38 -0
- package/docs/docs/cmd/onedrive/report/report-usageaccountdetail.md +43 -0
- package/docs/docs/cmd/onedrive/report/report-usagefilecounts.md +38 -0
- package/docs/docs/cmd/onedrive/report/report-usagestorage.md +37 -0
- package/docs/docs/cmd/onenote/notebook/notebook-list.md +79 -0
- package/docs/docs/cmd/pa/app/app-consent-set.md +47 -0
- package/docs/docs/cmd/planner/plan/plan-get.md +1 -1
- package/docs/docs/cmd/planner/plan/plan-list.md +1 -1
- package/docs/docs/cmd/planner/roster/roster-add.md +2 -1
- package/docs/docs/cmd/planner/roster/roster-get.md +1 -1
- package/docs/docs/cmd/planner/roster/roster-plan-list.md +109 -0
- package/docs/docs/cmd/planner/roster/roster-remove.md +2 -1
- package/docs/docs/cmd/planner/task/task-get.md +0 -6
- package/docs/docs/cmd/planner/task/task-set.md +1 -1
- package/docs/docs/cmd/purview/retentionevent/retentionevent-add.md +6 -7
- package/docs/docs/cmd/purview/retentionevent/retentionevent-get.md +6 -7
- package/docs/docs/cmd/purview/retentionevent/retentionevent-list.md +4 -4
- package/docs/docs/cmd/purview/retentionevent/retentionevent-remove.md +4 -4
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-add.md +10 -10
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-get.md +11 -11
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-list.md +10 -10
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-remove.md +10 -10
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-set.md +10 -10
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-add.md +12 -12
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-get.md +8 -9
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-list.md +8 -9
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-remove.md +8 -8
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-set.md +8 -8
- package/docs/docs/cmd/purview/sensitivitylabel/sensitivitylabel-get.md +118 -0
- package/docs/docs/cmd/purview/sensitivitylabel/sensitivitylabel-list.md +111 -0
- package/docs/docs/cmd/purview/sensitivitylabel/sensitivitylabel-policysettings-list.md +97 -0
- package/docs/docs/cmd/search/externalconnection/externalconnection-get.md +17 -0
- package/docs/docs/cmd/search/externalconnection/externalconnection-list.md +17 -0
- package/docs/docs/cmd/setup.md +86 -0
- package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-add.md +1 -1
- package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-remove.md +77 -0
- package/docs/docs/cmd/spo/commandset/commandset-set.md +1 -1
- package/docs/docs/cmd/spo/contenttype/contenttype-set.md +2 -2
- package/docs/docs/cmd/spo/customaction/customaction-add.md +1 -1
- package/docs/docs/cmd/spo/customaction/customaction-set.md +1 -1
- package/docs/docs/cmd/spo/feature/feature-enable.md +2 -2
- package/docs/docs/cmd/spo/file/file-add.md +1 -1
- package/docs/docs/cmd/spo/file/file-checkin.md +1 -1
- package/docs/docs/cmd/spo/file/file-checkout.md +1 -1
- package/docs/docs/cmd/spo/file/file-copy.md +1 -1
- package/docs/docs/cmd/spo/file/file-get.md +1 -1
- package/docs/docs/cmd/spo/file/file-list.md +9 -6
- package/docs/docs/cmd/spo/file/file-move.md +3 -3
- package/docs/docs/cmd/spo/file/file-remove.md +12 -0
- package/docs/docs/cmd/spo/file/file-rename.md +1 -1
- package/docs/docs/cmd/spo/file/file-retentionlabel-ensure.md +3 -3
- package/docs/docs/cmd/spo/file/file-retentionlabel-remove.md +2 -2
- package/docs/docs/cmd/spo/file/file-roleassignment-add.md +1 -1
- package/docs/docs/cmd/spo/file/file-roleassignment-remove.md +1 -1
- package/docs/docs/cmd/spo/file/file-roleinheritance-break.md +1 -1
- package/docs/docs/cmd/spo/file/file-roleinheritance-reset.md +1 -1
- package/docs/docs/cmd/spo/file/file-sharinginfo-get.md +1 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-add.md +1 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-clear.md +1 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-get.md +1 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-list.md +1 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-remove.md +1 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-set.md +1 -1
- package/docs/docs/cmd/spo/file/file-version-clear.md +2 -2
- package/docs/docs/cmd/spo/file/file-version-get.md +1 -1
- package/docs/docs/cmd/spo/file/file-version-list.md +1 -1
- package/docs/docs/cmd/spo/file/file-version-remove.md +1 -1
- package/docs/docs/cmd/spo/file/file-version-restore.md +1 -1
- package/docs/docs/cmd/spo/folder/folder-add.md +9 -3
- package/docs/docs/cmd/spo/folder/folder-copy.md +2 -2
- package/docs/docs/cmd/spo/folder/folder-get.md +7 -7
- package/docs/docs/cmd/spo/folder/folder-list.md +11 -11
- package/docs/docs/cmd/spo/folder/folder-move.md +1 -1
- package/docs/docs/cmd/spo/folder/folder-remove.md +7 -7
- package/docs/docs/cmd/spo/folder/folder-rename.md +11 -5
- package/docs/docs/cmd/spo/folder/folder-retentionlabel-ensure.md +3 -3
- package/docs/docs/cmd/spo/folder/folder-retentionlabel-remove.md +1 -1
- package/docs/docs/cmd/spo/folder/folder-roleinheritance-break.md +1 -1
- package/docs/docs/cmd/spo/folder/folder-roleinheritance-reset.md +4 -4
- package/docs/docs/cmd/spo/list/list-get.md +10 -0
- package/docs/docs/cmd/spo/list/list-list.md +28 -0
- package/docs/docs/cmd/spo/listitem/listitem-batch-set.md +67 -0
- package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-list.md +19 -0
- package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-remove.md +12 -0
- package/docs/docs/cmd/spo/orgnewssite/orgnewssite-list.md +6 -0
- package/docs/docs/cmd/spo/page/page-column-get.md +15 -0
- package/docs/docs/cmd/spo/page/page-column-list.md +16 -0
- package/docs/docs/cmd/spo/page/page-control-get.md +18 -0
- package/docs/docs/cmd/spo/page/page-control-list.md +18 -0
- package/docs/docs/cmd/spo/page/page-copy.md +35 -0
- package/docs/docs/cmd/spo/page/page-get.md +39 -0
- package/docs/docs/cmd/spo/page/page-list.md +53 -0
- package/docs/docs/cmd/spo/page/page-section-get.md +12 -0
- package/docs/docs/cmd/spo/page/page-section-list.md +13 -0
- package/docs/docs/cmd/spo/page/page-template-list.md +31 -0
- package/docs/docs/cmd/spo/propertybag/propertybag-get.md +6 -0
- package/docs/docs/cmd/spo/propertybag/propertybag-list.md +13 -0
- package/docs/docs/cmd/spo/report/report-activityfilecounts.md +7 -0
- package/docs/docs/cmd/spo/report/report-activitypages.md +7 -0
- package/docs/docs/cmd/spo/report/report-activityusercounts.md +7 -0
- package/docs/docs/cmd/spo/report/report-activityuserdetail.md +7 -0
- package/docs/docs/cmd/spo/report/report-siteusagedetail.md +7 -0
- package/docs/docs/cmd/spo/report/report-siteusagefilecounts.md +7 -0
- package/docs/docs/cmd/spo/report/report-siteusagepages.md +7 -0
- package/docs/docs/cmd/spo/report/report-siteusagesitecounts.md +7 -0
- package/docs/docs/cmd/spo/report/report-siteusagestorage.md +7 -0
- package/docs/docs/cmd/spo/roledefinition/roledefinition-get.md +20 -0
- package/docs/docs/cmd/spo/roledefinition/roledefinition-list.md +20 -0
- package/docs/docs/cmd/spo/serviceprincipal/serviceprincipal-grant-add.md +20 -0
- package/docs/docs/cmd/spo/serviceprincipal/serviceprincipal-grant-list.md +18 -0
- package/docs/docs/cmd/spo/serviceprincipal/serviceprincipal-permissionrequest-approve.md +20 -0
- package/docs/docs/cmd/spo/serviceprincipal/serviceprincipal-permissionrequest-list.md +17 -0
- package/docs/docs/cmd/spo/serviceprincipal/serviceprincipal-set.md +13 -0
- package/docs/docs/cmd/spo/site/site-recyclebinitem-move.md +43 -0
- package/docs/docs/cmd/spo/site/site-recyclebinitem-remove.md +45 -0
- package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-add.md +1 -1
- package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-list.md +103 -0
- package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-remove.md +49 -0
- package/docs/docs/cmd/spo/tenant/tenant-commandset-remove.md +49 -0
- package/docs/docs/cmd/spo/tenant/tenant-commandset-set.md +57 -0
- package/docs/docs/cmd/spo/tenant/tenant-settings-set.md +57 -54
- package/docs/docs/cmd/spo/term/term-add.md +107 -6
- package/docs/docs/cmd/spo/term/term-get.md +111 -10
- package/docs/docs/cmd/spo/term/term-group-get.md +71 -5
- package/docs/docs/cmd/spo/term/term-group-list.md +70 -2
- package/docs/docs/cmd/spo/term/term-list.md +80 -8
- package/docs/docs/cmd/spo/term/term-set-add.md +95 -11
- package/docs/docs/cmd/spo/term/term-set-get.md +92 -8
- package/docs/docs/cmd/spo/term/term-set-list.md +85 -5
- package/docs/docs/cmd/teams/app/app-list.md +17 -0
- package/docs/docs/cmd/teams/app/app-publish.md +18 -1
- package/docs/docs/cmd/teams/channel/channel-add.md +20 -0
- package/docs/docs/cmd/teams/channel/channel-get.md +21 -0
- package/docs/docs/cmd/teams/channel/channel-list.md +21 -0
- package/docs/docs/cmd/teams/channel/channel-member-list.md +20 -0
- package/docs/docs/cmd/teams/channel/channel-member-set.md +21 -0
- package/docs/docs/cmd/teams/chat/chat-get.md +22 -0
- package/docs/docs/cmd/teams/chat/chat-list.md +22 -0
- package/docs/docs/cmd/teams/chat/chat-member-list.md +20 -0
- package/docs/docs/cmd/teams/chat/chat-member-remove.md +52 -0
- package/docs/docs/cmd/teams/chat/chat-message-list.md +23 -0
- package/docs/docs/cmd/teams/funsettings/funsettings-list.md +15 -0
- package/docs/docs/cmd/teams/guestsettings/guestsettings-list.md +13 -0
- package/docs/docs/cmd/teams/meeting/meeting-transcript-list.md +96 -0
- package/docs/docs/cmd/teams/membersettings/membersettings-list.md +17 -0
- package/docs/docs/cmd/teams/tab/tab-remove.md +1 -1
- package/docs/docs/cmd/version.md +1 -1
- package/docs/docs/cmd/yammer/group/group-list.md +42 -0
- package/docs/docs/cmd/yammer/message/message-add.md +32 -0
- package/docs/docs/cmd/yammer/message/message-get.md +32 -0
- package/docs/docs/cmd/yammer/message/message-list.md +34 -0
- package/docs/docs/cmd/yammer/network/network-list.md +70 -0
- package/docs/docs/cmd/yammer/report/report-activitycounts.md +7 -0
- package/docs/docs/cmd/yammer/report/report-activityusercounts.md +7 -0
- package/docs/docs/cmd/yammer/report/report-activityuserdetail.md +7 -0
- package/docs/docs/cmd/yammer/report/report-deviceusagedistributionusercounts.md +7 -0
- package/docs/docs/cmd/yammer/report/report-deviceusageusercounts.md +7 -0
- package/docs/docs/cmd/yammer/report/report-deviceusageuserdetail.md +7 -0
- package/docs/docs/cmd/yammer/report/report-groupsactivitycounts.md +7 -0
- package/docs/docs/cmd/yammer/report/report-groupsactivitydetail.md +7 -0
- package/docs/docs/cmd/yammer/report/report-groupsactivitygroupcounts.md +7 -0
- package/docs/docs/cmd/yammer/user/user-get.md +55 -0
- package/docs/docs/cmd/yammer/user/user-list.md +55 -0
- package/docs/docs/cmd/yammer/yammer-search.md +15 -3
- package/npm-shrinkwrap.json +269 -336
- package/package.json +15 -13
|
@@ -37,18 +37,18 @@ class SpoFolderCopyCommand extends SpoCommand_1.default {
|
|
|
37
37
|
__classPrivateFieldGet(this, _SpoFolderCopyCommand_instances, "m", _SpoFolderCopyCommand_initValidators).call(this);
|
|
38
38
|
}
|
|
39
39
|
getExcludedOptionsWithUrls() {
|
|
40
|
-
return ['targetUrl'];
|
|
40
|
+
return ['targetUrl', 'sourceUrl'];
|
|
41
41
|
}
|
|
42
42
|
commandAction(logger, args) {
|
|
43
43
|
return __awaiter(this, void 0, void 0, function* () {
|
|
44
44
|
const webUrl = args.options.webUrl;
|
|
45
45
|
const parsedUrl = url.parse(webUrl);
|
|
46
46
|
const tenantUrl = `${parsedUrl.protocol}//${parsedUrl.hostname}`;
|
|
47
|
-
const
|
|
47
|
+
const serverRelativePath = urlUtil_1.urlUtil.getServerRelativePath(webUrl, args.options.sourceUrl);
|
|
48
|
+
const sourceAbsoluteUrl = urlUtil_1.urlUtil.urlCombine(tenantUrl, serverRelativePath);
|
|
48
49
|
const allowSchemaMismatch = args.options.allowSchemaMismatch || false;
|
|
49
|
-
const requestUrl = urlUtil_1.urlUtil.urlCombine(webUrl, '/_api/site/CreateCopyJobs');
|
|
50
50
|
const requestOptions = {
|
|
51
|
-
url:
|
|
51
|
+
url: urlUtil_1.urlUtil.urlCombine(webUrl, '/_api/site/CreateCopyJobs'),
|
|
52
52
|
headers: {
|
|
53
53
|
'accept': 'application/json;odata=nometadata'
|
|
54
54
|
},
|
|
@@ -38,6 +38,9 @@ class SpoFolderGetCommand extends SpoCommand_1.default {
|
|
|
38
38
|
__classPrivateFieldGet(this, _SpoFolderGetCommand_instances, "m", _SpoFolderGetCommand_initValidators).call(this);
|
|
39
39
|
__classPrivateFieldGet(this, _SpoFolderGetCommand_instances, "m", _SpoFolderGetCommand_initOptionSets).call(this);
|
|
40
40
|
}
|
|
41
|
+
getExcludedOptionsWithUrls() {
|
|
42
|
+
return ['url'];
|
|
43
|
+
}
|
|
41
44
|
commandAction(logger, args) {
|
|
42
45
|
return __awaiter(this, void 0, void 0, function* () {
|
|
43
46
|
if (this.verbose) {
|
|
@@ -48,8 +51,8 @@ class SpoFolderGetCommand extends SpoCommand_1.default {
|
|
|
48
51
|
requestUrl += `/GetFolderById('${formatting_1.formatting.encodeQueryParameter(args.options.id)}')`;
|
|
49
52
|
}
|
|
50
53
|
else if (args.options.url) {
|
|
51
|
-
const
|
|
52
|
-
requestUrl += `/GetFolderByServerRelativeUrl('${formatting_1.formatting.encodeQueryParameter(
|
|
54
|
+
const serverRelativePath = urlUtil_1.urlUtil.getServerRelativePath(args.options.webUrl, args.options.url);
|
|
55
|
+
requestUrl += `/GetFolderByServerRelativeUrl('${formatting_1.formatting.encodeQueryParameter(serverRelativePath)}')`;
|
|
53
56
|
}
|
|
54
57
|
if (args.options.withPermissions) {
|
|
55
58
|
requestUrl += `?$expand=ListItemAllFields/HasUniqueRoleAssignments,ListItemAllFields/RoleAssignments/Member,ListItemAllFields/RoleAssignments/RoleDefinitionBindings`;
|
|
@@ -37,14 +37,15 @@ class SpoFolderMoveCommand extends SpoCommand_1.default {
|
|
|
37
37
|
__classPrivateFieldGet(this, _SpoFolderMoveCommand_instances, "m", _SpoFolderMoveCommand_initValidators).call(this);
|
|
38
38
|
}
|
|
39
39
|
getExcludedOptionsWithUrls() {
|
|
40
|
-
return ['targetUrl'];
|
|
40
|
+
return ['targetUrl', 'sourceUrl'];
|
|
41
41
|
}
|
|
42
42
|
commandAction(logger, args) {
|
|
43
43
|
return __awaiter(this, void 0, void 0, function* () {
|
|
44
44
|
const webUrl = args.options.webUrl;
|
|
45
45
|
const parsedUrl = url.parse(webUrl);
|
|
46
46
|
const tenantUrl = `${parsedUrl.protocol}//${parsedUrl.hostname}`;
|
|
47
|
-
const
|
|
47
|
+
const sourceRelUrl = urlUtil_1.urlUtil.getServerRelativePath(webUrl, args.options.sourceUrl);
|
|
48
|
+
const sourceAbsoluteUrl = urlUtil_1.urlUtil.urlCombine(tenantUrl, sourceRelUrl);
|
|
48
49
|
const allowSchemaMismatch = args.options.allowSchemaMismatch || false;
|
|
49
50
|
const requestUrl = urlUtil_1.urlUtil.urlCombine(webUrl, '/_api/site/CreateCopyJobs');
|
|
50
51
|
const requestOptions = {
|
|
@@ -35,6 +35,9 @@ class SpoFolderRenameCommand extends SpoCommand_1.default {
|
|
|
35
35
|
__classPrivateFieldGet(this, _SpoFolderRenameCommand_instances, "m", _SpoFolderRenameCommand_initOptions).call(this);
|
|
36
36
|
__classPrivateFieldGet(this, _SpoFolderRenameCommand_instances, "m", _SpoFolderRenameCommand_initValidators).call(this);
|
|
37
37
|
}
|
|
38
|
+
getExcludedOptionsWithUrls() {
|
|
39
|
+
return ['url'];
|
|
40
|
+
}
|
|
38
41
|
commandAction(logger, args) {
|
|
39
42
|
return __awaiter(this, void 0, void 0, function* () {
|
|
40
43
|
try {
|
|
@@ -45,8 +48,8 @@ class SpoFolderRenameCommand extends SpoCommand_1.default {
|
|
|
45
48
|
if (this.verbose) {
|
|
46
49
|
logger.logToStderr(`Renaming folder ${args.options.url} to ${args.options.name}`);
|
|
47
50
|
}
|
|
48
|
-
const
|
|
49
|
-
const serverRelativeUrlWithoutOldFolder =
|
|
51
|
+
const serverRelativePath = urlUtil_1.urlUtil.getServerRelativePath(args.options.webUrl, args.options.url);
|
|
52
|
+
const serverRelativeUrlWithoutOldFolder = serverRelativePath.substring(0, serverRelativePath.lastIndexOf('/'));
|
|
50
53
|
const renamedServerRelativeUrl = `${serverRelativeUrlWithoutOldFolder}/${args.options.name}`;
|
|
51
54
|
const requestOptions = {
|
|
52
55
|
url: `${args.options.webUrl}/_vti_bin/client.svc/ProcessQuery`,
|
|
@@ -53,10 +53,17 @@ class SpoListGetCommand extends SpoCommand_1.default {
|
|
|
53
53
|
const listServerRelativeUrl = urlUtil_1.urlUtil.getServerRelativePath(args.options.webUrl, args.options.url);
|
|
54
54
|
requestUrl += `GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')`;
|
|
55
55
|
}
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
const fieldsProperties = this.formatSelectProperties(args.options.properties, args.options.withPermissions);
|
|
57
|
+
const queryParams = [];
|
|
58
|
+
if (fieldsProperties.selectProperties.length > 0) {
|
|
59
|
+
queryParams.push(`$select=${fieldsProperties.selectProperties.join(',')}`);
|
|
60
|
+
}
|
|
61
|
+
if (fieldsProperties.expandProperties.length > 0) {
|
|
62
|
+
queryParams.push(`$expand=${fieldsProperties.expandProperties.join(',')}`);
|
|
63
|
+
}
|
|
64
|
+
const querystring = queryParams.length > 0 ? `?${queryParams.join('&')}` : ``;
|
|
58
65
|
const requestOptions = {
|
|
59
|
-
url: requestUrl
|
|
66
|
+
url: `${requestUrl}${querystring}`,
|
|
60
67
|
headers: {
|
|
61
68
|
'accept': 'application/json;odata=nometadata'
|
|
62
69
|
},
|
|
@@ -76,6 +83,26 @@ class SpoListGetCommand extends SpoCommand_1.default {
|
|
|
76
83
|
}
|
|
77
84
|
});
|
|
78
85
|
}
|
|
86
|
+
formatSelectProperties(properties, withPermissions) {
|
|
87
|
+
const selectProperties = [];
|
|
88
|
+
let expandProperties = [];
|
|
89
|
+
if (withPermissions) {
|
|
90
|
+
expandProperties = ['HasUniqueRoleAssignments', 'RoleAssignments/Member', 'RoleAssignments/RoleDefinitionBindings'];
|
|
91
|
+
}
|
|
92
|
+
if (properties) {
|
|
93
|
+
properties.split(',').forEach((property) => {
|
|
94
|
+
const subparts = property.trim().split('/');
|
|
95
|
+
if (subparts.length > 1) {
|
|
96
|
+
expandProperties.push(subparts[0]);
|
|
97
|
+
}
|
|
98
|
+
selectProperties.push(property.trim());
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
selectProperties: [...new Set(selectProperties)],
|
|
103
|
+
expandProperties: [...new Set(expandProperties)]
|
|
104
|
+
};
|
|
105
|
+
}
|
|
79
106
|
}
|
|
80
107
|
_SpoListGetCommand_instances = new WeakSet(), _SpoListGetCommand_initTelemetry = function _SpoListGetCommand_initTelemetry() {
|
|
81
108
|
this.telemetry.push((args) => {
|
|
@@ -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 _SpoListListCommand_instances, _SpoListListCommand_initOptions, _SpoListListCommand_initValidators;
|
|
16
|
+
var _SpoListListCommand_instances, _SpoListListCommand_initOptions, _SpoListListCommand_initValidators, _SpoListListCommand_initTelemetry;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
const odata_1 = require("../../../../utils/odata");
|
|
19
19
|
const validation_1 = require("../../../../utils/validation");
|
|
@@ -34,6 +34,7 @@ class SpoListListCommand extends SpoCommand_1.default {
|
|
|
34
34
|
_SpoListListCommand_instances.add(this);
|
|
35
35
|
__classPrivateFieldGet(this, _SpoListListCommand_instances, "m", _SpoListListCommand_initOptions).call(this);
|
|
36
36
|
__classPrivateFieldGet(this, _SpoListListCommand_instances, "m", _SpoListListCommand_initValidators).call(this);
|
|
37
|
+
__classPrivateFieldGet(this, _SpoListListCommand_instances, "m", _SpoListListCommand_initTelemetry).call(this);
|
|
37
38
|
}
|
|
38
39
|
commandAction(logger, args) {
|
|
39
40
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -41,7 +42,12 @@ class SpoListListCommand extends SpoCommand_1.default {
|
|
|
41
42
|
logger.logToStderr(`Retrieving all lists in site at ${args.options.webUrl}...`);
|
|
42
43
|
}
|
|
43
44
|
try {
|
|
44
|
-
const
|
|
45
|
+
const fieldProperties = this.formatSelectProperties(args.options.properties);
|
|
46
|
+
const queryParams = [`$expand=${fieldProperties.expandProperties.join(',')}`, `$select=${fieldProperties.selectProperties.join(',')}`];
|
|
47
|
+
if (args.options.filter) {
|
|
48
|
+
queryParams.push(`$filter=${args.options.filter}`);
|
|
49
|
+
}
|
|
50
|
+
const listInstances = yield odata_1.odata.getAllItems(`${args.options.webUrl}/_api/web/lists?${queryParams.join('&')}`);
|
|
45
51
|
listInstances.forEach(l => {
|
|
46
52
|
l.Url = l.RootFolder.ServerRelativeUrl;
|
|
47
53
|
});
|
|
@@ -52,13 +58,44 @@ class SpoListListCommand extends SpoCommand_1.default {
|
|
|
52
58
|
}
|
|
53
59
|
});
|
|
54
60
|
}
|
|
61
|
+
formatSelectProperties(fields) {
|
|
62
|
+
const selectProperties = ['RootFolder/ServerRelativeUrl'];
|
|
63
|
+
const expandProperties = ['RootFolder'];
|
|
64
|
+
if (!fields) {
|
|
65
|
+
selectProperties.push('*');
|
|
66
|
+
}
|
|
67
|
+
if (fields) {
|
|
68
|
+
fields.split(',').forEach((field) => {
|
|
69
|
+
const subparts = field.trim().split('/');
|
|
70
|
+
if (subparts.length > 1) {
|
|
71
|
+
expandProperties.push(subparts[0]);
|
|
72
|
+
}
|
|
73
|
+
selectProperties.push(field.trim());
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
selectProperties: [...new Set(selectProperties)],
|
|
78
|
+
expandProperties: [...new Set(expandProperties)]
|
|
79
|
+
};
|
|
80
|
+
}
|
|
55
81
|
}
|
|
56
82
|
_SpoListListCommand_instances = new WeakSet(), _SpoListListCommand_initOptions = function _SpoListListCommand_initOptions() {
|
|
57
83
|
this.options.unshift({
|
|
58
84
|
option: '-u, --webUrl <webUrl>'
|
|
85
|
+
}, {
|
|
86
|
+
option: '-p, --properties [properties]'
|
|
87
|
+
}, {
|
|
88
|
+
option: '-f, --filter [filter]'
|
|
59
89
|
});
|
|
60
90
|
}, _SpoListListCommand_initValidators = function _SpoListListCommand_initValidators() {
|
|
61
91
|
this.validators.push((args) => __awaiter(this, void 0, void 0, function* () { return validation_1.validation.isValidSharePointUrl(args.options.webUrl); }));
|
|
92
|
+
}, _SpoListListCommand_initTelemetry = function _SpoListListCommand_initTelemetry() {
|
|
93
|
+
this.telemetry.push((args) => {
|
|
94
|
+
Object.assign(this.telemetryProperties, {
|
|
95
|
+
properties: typeof args.options.properties !== 'undefined',
|
|
96
|
+
filter: typeof args.options.filter !== 'undefined'
|
|
97
|
+
});
|
|
98
|
+
});
|
|
62
99
|
};
|
|
63
100
|
module.exports = new SpoListListCommand();
|
|
64
101
|
//# sourceMappingURL=list-list.js.map
|
|
@@ -0,0 +1,308 @@
|
|
|
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 __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
17
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
18
|
+
var m = o[Symbol.asyncIterator], i;
|
|
19
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
20
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
21
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
22
|
+
};
|
|
23
|
+
var _SpoListItemBatchSetCommand_instances, _SpoListItemBatchSetCommand_initTelemetry, _SpoListItemBatchSetCommand_initOptions, _SpoListItemBatchSetCommand_initValidators, _SpoListItemBatchSetCommand_initOptionSets;
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
const fs = require("fs");
|
|
26
|
+
const config_1 = require("../../../../config");
|
|
27
|
+
const request_1 = require("../../../../request");
|
|
28
|
+
const formatting_1 = require("../../../../utils/formatting");
|
|
29
|
+
const odata_1 = require("../../../../utils/odata");
|
|
30
|
+
const spo_1 = require("../../../../utils/spo");
|
|
31
|
+
const urlUtil_1 = require("../../../../utils/urlUtil");
|
|
32
|
+
const validation_1 = require("../../../../utils/validation");
|
|
33
|
+
const SpoCommand_1 = require("../../../base/SpoCommand");
|
|
34
|
+
const commands_1 = require("../../commands");
|
|
35
|
+
class SpoListItemBatchSetCommand extends SpoCommand_1.default {
|
|
36
|
+
get name() {
|
|
37
|
+
return commands_1.default.LISTITEM_BATCH_SET;
|
|
38
|
+
}
|
|
39
|
+
get description() {
|
|
40
|
+
return 'Updates list items in a batch';
|
|
41
|
+
}
|
|
42
|
+
constructor() {
|
|
43
|
+
super();
|
|
44
|
+
_SpoListItemBatchSetCommand_instances.add(this);
|
|
45
|
+
__classPrivateFieldGet(this, _SpoListItemBatchSetCommand_instances, "m", _SpoListItemBatchSetCommand_initTelemetry).call(this);
|
|
46
|
+
__classPrivateFieldGet(this, _SpoListItemBatchSetCommand_instances, "m", _SpoListItemBatchSetCommand_initOptions).call(this);
|
|
47
|
+
__classPrivateFieldGet(this, _SpoListItemBatchSetCommand_instances, "m", _SpoListItemBatchSetCommand_initValidators).call(this);
|
|
48
|
+
__classPrivateFieldGet(this, _SpoListItemBatchSetCommand_instances, "m", _SpoListItemBatchSetCommand_initOptionSets).call(this);
|
|
49
|
+
}
|
|
50
|
+
commandAction(logger, args) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
try {
|
|
53
|
+
if (this.verbose) {
|
|
54
|
+
logger.logToStderr(`Starting to create batch items from csv at path ${args.options.filePath}`);
|
|
55
|
+
}
|
|
56
|
+
const csvContent = fs.readFileSync(args.options.filePath, 'utf8');
|
|
57
|
+
const jsonContent = formatting_1.formatting.parseCsvToJson(csvContent);
|
|
58
|
+
const amountOfRows = jsonContent.length;
|
|
59
|
+
const idColumn = args.options.idColumn || 'ID';
|
|
60
|
+
if (!jsonContent[0].hasOwnProperty(idColumn)) {
|
|
61
|
+
throw `The specified value for idColumn does not exist in the array. Specified idColumn is '${args.options.idColumn || 'ID'}'. Please specify the correct value.`;
|
|
62
|
+
}
|
|
63
|
+
const listId = yield this.getListId(args.options, logger);
|
|
64
|
+
const fields = yield this.getListFields(args.options, listId, jsonContent, idColumn, logger);
|
|
65
|
+
const userFields = fields.filter(field => field.TypeAsString === 'UserMulti' || field.TypeAsString === 'User');
|
|
66
|
+
const resolvedUsers = yield this.getUsersFromCsv(args.options.webUrl, jsonContent, userFields);
|
|
67
|
+
const formDigestValue = (yield spo_1.spo.getRequestDigest(args.options.webUrl)).FormDigestValue;
|
|
68
|
+
const objectIdentity = (yield spo_1.spo.getCurrentWebIdentity(args.options.webUrl, formDigestValue)).objectIdentity;
|
|
69
|
+
let counter = 0;
|
|
70
|
+
while (jsonContent.length > 0) {
|
|
71
|
+
const entriesToProcess = jsonContent.splice(0, 50);
|
|
72
|
+
const objectPaths = [], actions = [];
|
|
73
|
+
let index = 1;
|
|
74
|
+
for (const row of entriesToProcess) {
|
|
75
|
+
counter += 1;
|
|
76
|
+
objectPaths.push(`<Identity Id="${index}" Name="${objectIdentity}:list:${listId}:item:${row[idColumn]},1" />`);
|
|
77
|
+
const [actionString, updatedIndex] = this.mapActions(index, row, fields, resolvedUsers, args.options.systemUpdate);
|
|
78
|
+
index = updatedIndex;
|
|
79
|
+
actions.push(actionString);
|
|
80
|
+
}
|
|
81
|
+
if (this.verbose) {
|
|
82
|
+
logger.logToStderr(`Writing away batch of items, currently at: ${counter}/${amountOfRows}.`);
|
|
83
|
+
}
|
|
84
|
+
yield this.sendBatchRequest(args.options.webUrl, this.getRequestBody(objectPaths, actions));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
this.handleRejectedODataJsonPromise(err);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
getRequestBody(objectPaths, actions) {
|
|
93
|
+
return `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config_1.default.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions>${actions.join('')}</Actions><ObjectPaths>${objectPaths.join('')}</ObjectPaths></Request>`;
|
|
94
|
+
}
|
|
95
|
+
sendBatchRequest(webUrl, requestBody) {
|
|
96
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
97
|
+
const requestOptions = {
|
|
98
|
+
url: `${webUrl}/_vti_bin/client.svc/ProcessQuery`,
|
|
99
|
+
headers: {
|
|
100
|
+
'Content-Type': 'text/xml'
|
|
101
|
+
},
|
|
102
|
+
data: requestBody
|
|
103
|
+
};
|
|
104
|
+
const res = yield request_1.default.post(requestOptions);
|
|
105
|
+
const json = JSON.parse(res);
|
|
106
|
+
const response = json[0];
|
|
107
|
+
if (response.ErrorInfo) {
|
|
108
|
+
throw response.ErrorInfo.ErrorMessage + ' - ' + response.ErrorInfo.ErrorValue;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
mapActions(index, row, fields, users, systemUpdate) {
|
|
113
|
+
const objectPathId = index;
|
|
114
|
+
let actionString = '';
|
|
115
|
+
fields.forEach((field) => {
|
|
116
|
+
if (row[field.InternalName] === undefined || row[field.InternalName] === '') {
|
|
117
|
+
actionString += `<Method Name="ParseAndSetFieldValue" Id="${index += 1}" ObjectPathId="${objectPathId}"><Parameters><Parameter Type="String">${field.InternalName}</Parameter><Parameter Type="String"></Parameter></Parameters></Method>`;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
switch (field.TypeAsString) {
|
|
121
|
+
case 'User':
|
|
122
|
+
const userDetail = users.find(us => us.email === row[field.InternalName]);
|
|
123
|
+
actionString += `<Method Name="ParseAndSetFieldValue" Id="${index += 1}" ObjectPathId="${objectPathId}"><Parameters><Parameter Type="String">${field.InternalName}</Parameter><Parameter Type="String">${userDetail.id}</Parameter></Parameters></Method>`;
|
|
124
|
+
break;
|
|
125
|
+
case 'UserMulti':
|
|
126
|
+
const userMultiString = row[field.InternalName].toString().split(';').map((element) => {
|
|
127
|
+
const userDetail = users.find(us => us.email === element);
|
|
128
|
+
return `<Object TypeId="{c956ab54-16bd-4c18-89d2-996f57282a6f}"><Property Name="Email" Type="Null" /><Property Name="LookupId" Type="Int32">${userDetail.id}</Property><Property Name="LookupValue" Type="Null" /></Object>`;
|
|
129
|
+
});
|
|
130
|
+
actionString += `<Method Name="SetFieldValue" Id="${index += 1}" ObjectPathId="${objectPathId}"><Parameters><Parameter Type="String">${field.InternalName}</Parameter><Parameter Type="Array">${userMultiString.join('')}</Parameter></Parameters></Method>`;
|
|
131
|
+
break;
|
|
132
|
+
case 'Lookup':
|
|
133
|
+
actionString += `<Method Name="SetFieldValue" Id="${index += 1}" ObjectPathId="${objectPathId}"><Parameters><Parameter Type="String">${field.InternalName}</Parameter><Parameter TypeId="{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}"><Property Name="LookupId" Type="Int32">${row[field.InternalName]}</Property><Property Name="LookupValue" Type="Null"/></Parameter></Parameters></Method>`;
|
|
134
|
+
break;
|
|
135
|
+
case 'LookupMulti':
|
|
136
|
+
const lookupMultiString = row[field.InternalName].toString().split(';').map((element) => {
|
|
137
|
+
return `<Object TypeId="{f1d34cc0-9b50-4a78-be78-d5facfcccfb7}"><Property Name="LookupId" Type="Int32">${element}</Property><Property Name="LookupValue" Type="Null" /></Object>`;
|
|
138
|
+
});
|
|
139
|
+
actionString += `<Method Name="SetFieldValue" Id="${index += 1}" ObjectPathId="${objectPathId}"><Parameters><Parameter Type="String">${field.InternalName}</Parameter><Parameter Type="Array">${lookupMultiString.join('')}</Parameter></Parameters></Method>`;
|
|
140
|
+
break;
|
|
141
|
+
default:
|
|
142
|
+
actionString += `<Method Name="ParseAndSetFieldValue" Id="${index += 1}" ObjectPathId="${objectPathId}"><Parameters><Parameter Type="String">${field.InternalName}</Parameter><Parameter Type="String">${row[field.InternalName].toString()}</Parameter></Parameters></Method>`;
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
actionString += `<Method Name="${systemUpdate ? 'System' : ''}Update" Id="${index += 1}" ObjectPathId="${objectPathId}"/>`;
|
|
148
|
+
return [actionString, index];
|
|
149
|
+
}
|
|
150
|
+
getListFields(options, listId, jsonContent, idColumn, logger) {
|
|
151
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
152
|
+
if (this.verbose) {
|
|
153
|
+
logger.logToStderr(`Retrieving fields for list with id ${listId}`);
|
|
154
|
+
}
|
|
155
|
+
const filterFields = [];
|
|
156
|
+
const objectKeys = Object.keys(jsonContent[0]);
|
|
157
|
+
const index = objectKeys.indexOf(idColumn, 0);
|
|
158
|
+
if (index > -1) {
|
|
159
|
+
objectKeys.splice(index, 1);
|
|
160
|
+
}
|
|
161
|
+
objectKeys.map(objectKey => {
|
|
162
|
+
filterFields.push(`InternalName eq '${objectKey}'`);
|
|
163
|
+
});
|
|
164
|
+
const fields = yield odata_1.odata.getAllItems(`${options.webUrl}/_api/web/lists(guid'${formatting_1.formatting.encodeQueryParameter(listId)}')/fields?$select=InternalName,TypeAsString&$filter=${filterFields.join(' or ')}`);
|
|
165
|
+
if (fields.length !== objectKeys.length) {
|
|
166
|
+
const fieldsThatDontExist = [];
|
|
167
|
+
objectKeys.forEach(key => {
|
|
168
|
+
const field = fields.find(field => field.InternalName === key);
|
|
169
|
+
if (!field) {
|
|
170
|
+
fieldsThatDontExist.push(key);
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
throw `Following fields specified in the csv do not exist on the list: ${fieldsThatDontExist.join(', ')}`;
|
|
174
|
+
}
|
|
175
|
+
return fields;
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
getListId(options, logger) {
|
|
179
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
180
|
+
if (options.listId) {
|
|
181
|
+
return options.listId;
|
|
182
|
+
}
|
|
183
|
+
if (this.verbose) {
|
|
184
|
+
logger.logToStderr('Retrieving list id');
|
|
185
|
+
}
|
|
186
|
+
let listUrl = `${options.webUrl}/_api/web`;
|
|
187
|
+
if (options.listTitle) {
|
|
188
|
+
listUrl += `/lists/getByTitle('${formatting_1.formatting.encodeQueryParameter(options.listTitle)}')`;
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
const listServerRelativeUrl = urlUtil_1.urlUtil.getServerRelativePath(options.webUrl, options.listUrl);
|
|
192
|
+
listUrl += `/GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')`;
|
|
193
|
+
}
|
|
194
|
+
const requestOptions = {
|
|
195
|
+
url: `${listUrl}?$select=Id`,
|
|
196
|
+
headers: {
|
|
197
|
+
'accept': 'application/json;odata=nometadata'
|
|
198
|
+
},
|
|
199
|
+
responseType: 'json'
|
|
200
|
+
};
|
|
201
|
+
const listResult = yield request_1.default.get(requestOptions);
|
|
202
|
+
return listResult.Id;
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
getUsersFromCsv(webUrl, jsonContent, userFields) {
|
|
206
|
+
var _a, e_1, _b, _c;
|
|
207
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
208
|
+
if (userFields.length === 0) {
|
|
209
|
+
return [];
|
|
210
|
+
}
|
|
211
|
+
const userFieldValues = [];
|
|
212
|
+
const emailsToResolve = this.getEmailsToEnsure(jsonContent, userFields);
|
|
213
|
+
try {
|
|
214
|
+
for (var _d = true, emailsToResolve_1 = __asyncValues(emailsToResolve), emailsToResolve_1_1; emailsToResolve_1_1 = yield emailsToResolve_1.next(), _a = emailsToResolve_1_1.done, !_a;) {
|
|
215
|
+
_c = emailsToResolve_1_1.value;
|
|
216
|
+
_d = false;
|
|
217
|
+
try {
|
|
218
|
+
const email = _c;
|
|
219
|
+
const requestOptions = {
|
|
220
|
+
url: `${webUrl}/_api/web/ensureUser('${email}')?$select=Id`,
|
|
221
|
+
headers: {
|
|
222
|
+
accept: 'application/json',
|
|
223
|
+
'content-type': 'application/json'
|
|
224
|
+
},
|
|
225
|
+
responseType: 'json'
|
|
226
|
+
};
|
|
227
|
+
const response = yield request_1.default.post(requestOptions);
|
|
228
|
+
userFieldValues.push({ email: email, id: response.Id });
|
|
229
|
+
}
|
|
230
|
+
finally {
|
|
231
|
+
_d = true;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
236
|
+
finally {
|
|
237
|
+
try {
|
|
238
|
+
if (!_d && !_a && (_b = emailsToResolve_1.return)) yield _b.call(emailsToResolve_1);
|
|
239
|
+
}
|
|
240
|
+
finally { if (e_1) throw e_1.error; }
|
|
241
|
+
}
|
|
242
|
+
return userFieldValues;
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
getEmailsToEnsure(jsonContent, userFields) {
|
|
246
|
+
const emailsToResolve = [];
|
|
247
|
+
userFields.forEach((userField) => {
|
|
248
|
+
jsonContent.forEach(row => {
|
|
249
|
+
const fieldValue = row[userField.InternalName];
|
|
250
|
+
if (fieldValue !== undefined && fieldValue !== '') {
|
|
251
|
+
const emailsSplitted = fieldValue.split(';');
|
|
252
|
+
emailsSplitted.forEach((email) => {
|
|
253
|
+
if (!emailsToResolve.some(existingMail => existingMail === email)) {
|
|
254
|
+
emailsToResolve.push(email);
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
return emailsToResolve;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
_SpoListItemBatchSetCommand_instances = new WeakSet(), _SpoListItemBatchSetCommand_initTelemetry = function _SpoListItemBatchSetCommand_initTelemetry() {
|
|
264
|
+
this.telemetry.push((args) => {
|
|
265
|
+
Object.assign(this.telemetryProperties, {
|
|
266
|
+
idColumn: typeof args.options.idColumn !== 'undefined',
|
|
267
|
+
listId: typeof args.options.listId !== 'undefined',
|
|
268
|
+
listTitle: typeof args.options.listTitle !== 'undefined',
|
|
269
|
+
listUrl: typeof args.options.listUrl !== 'undefined',
|
|
270
|
+
systemUpdate: !!args.options.systemUpdate
|
|
271
|
+
});
|
|
272
|
+
});
|
|
273
|
+
}, _SpoListItemBatchSetCommand_initOptions = function _SpoListItemBatchSetCommand_initOptions() {
|
|
274
|
+
this.options.unshift({
|
|
275
|
+
option: '-p, --filePath <filePath>'
|
|
276
|
+
}, {
|
|
277
|
+
option: '-u, --webUrl <webUrl>'
|
|
278
|
+
}, {
|
|
279
|
+
option: '-l, --listId [listId]'
|
|
280
|
+
}, {
|
|
281
|
+
option: '-t, --listTitle [listTitle]'
|
|
282
|
+
}, {
|
|
283
|
+
option: '--listUrl [listUrl]'
|
|
284
|
+
}, {
|
|
285
|
+
option: '--idColumn [idColumn]'
|
|
286
|
+
}, {
|
|
287
|
+
option: '-s, --systemUpdate'
|
|
288
|
+
});
|
|
289
|
+
}, _SpoListItemBatchSetCommand_initValidators = function _SpoListItemBatchSetCommand_initValidators() {
|
|
290
|
+
this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
|
|
291
|
+
const isValidSharePointUrl = validation_1.validation.isValidSharePointUrl(args.options.webUrl);
|
|
292
|
+
if (isValidSharePointUrl !== true) {
|
|
293
|
+
return isValidSharePointUrl;
|
|
294
|
+
}
|
|
295
|
+
if (args.options.listId &&
|
|
296
|
+
!validation_1.validation.isValidGuid(args.options.listId)) {
|
|
297
|
+
return `${args.options.listId} in option listId is not a valid GUID`;
|
|
298
|
+
}
|
|
299
|
+
if (!fs.existsSync(args.options.filePath)) {
|
|
300
|
+
return `File with path ${args.options.filePath} does not exist`;
|
|
301
|
+
}
|
|
302
|
+
return true;
|
|
303
|
+
}));
|
|
304
|
+
}, _SpoListItemBatchSetCommand_initOptionSets = function _SpoListItemBatchSetCommand_initOptionSets() {
|
|
305
|
+
this.optionSets.push({ options: ['listId', 'listTitle', 'listUrl'] });
|
|
306
|
+
};
|
|
307
|
+
module.exports = new SpoListItemBatchSetCommand();
|
|
308
|
+
//# sourceMappingURL=listitem-batch-set.js.map
|
|
@@ -15,7 +15,6 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
15
15
|
};
|
|
16
16
|
var _SpoPageSectionAddCommand_instances, _SpoPageSectionAddCommand_initTelemetry, _SpoPageSectionAddCommand_initOptions, _SpoPageSectionAddCommand_initValidators;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
const util_1 = require("util");
|
|
19
18
|
const request_1 = require("../../../../request");
|
|
20
19
|
const formatting_1 = require("../../../../utils/formatting");
|
|
21
20
|
const validation_1 = require("../../../../utils/validation");
|
|
@@ -64,7 +63,7 @@ class SpoPageSectionAddCommand extends SpoCommand_1.default {
|
|
|
64
63
|
},
|
|
65
64
|
responseType: 'json'
|
|
66
65
|
};
|
|
67
|
-
|
|
66
|
+
yield request_1.default.post(requestOptions);
|
|
68
67
|
}
|
|
69
68
|
// get columns
|
|
70
69
|
const columns = canvasContent
|
|
@@ -187,7 +186,7 @@ _SpoPageSectionAddCommand_instances = new WeakSet(), _SpoPageSectionAddCommand_i
|
|
|
187
186
|
return `${args.options.sectionTemplate} is not a valid section template. Allowed values are OneColumn|OneColumnFullWidth|TwoColumn|ThreeColumn|TwoColumnLeft|TwoColumnRight`;
|
|
188
187
|
}
|
|
189
188
|
if (typeof args.options.order !== 'undefined') {
|
|
190
|
-
if (!
|
|
189
|
+
if (!Number.isInteger(args.options.order) || args.options.order < 1) {
|
|
191
190
|
return 'The value of parameter order must be 1 or higher';
|
|
192
191
|
}
|
|
193
192
|
}
|
|
@@ -46,8 +46,21 @@ class SpoServicePrincipalPermissionRequestListCommand extends SpoCommand_1.defau
|
|
|
46
46
|
throw response.ErrorInfo.ErrorMessage;
|
|
47
47
|
}
|
|
48
48
|
else {
|
|
49
|
+
let spoWebAppServicePrincipalPermissionRequestResult = [];
|
|
49
50
|
const result = json[json.length - 1]._Child_Items_;
|
|
50
|
-
|
|
51
|
+
if (result.length > 0) {
|
|
52
|
+
const spoClientExtensibilityWebApplicationPrincipalId = yield this.getSPOClientExtensibilityWebApplicationPrincipalId();
|
|
53
|
+
if (spoClientExtensibilityWebApplicationPrincipalId !== null) {
|
|
54
|
+
const oAuth2PermissionGrants = yield this.getOAuth2PermissionGrants(spoClientExtensibilityWebApplicationPrincipalId);
|
|
55
|
+
if (oAuth2PermissionGrants) {
|
|
56
|
+
spoWebAppServicePrincipalPermissionRequestResult = result.filter(x => oAuth2PermissionGrants.indexOf(x.Scope) === -1);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (spoWebAppServicePrincipalPermissionRequestResult.length === 0) {
|
|
61
|
+
spoWebAppServicePrincipalPermissionRequestResult = result;
|
|
62
|
+
}
|
|
63
|
+
logger.log(spoWebAppServicePrincipalPermissionRequestResult.map(r => {
|
|
51
64
|
return {
|
|
52
65
|
Id: r.Id.replace('/Guid(', '').replace(')/', ''),
|
|
53
66
|
Resource: r.Resource,
|
|
@@ -62,6 +75,38 @@ class SpoServicePrincipalPermissionRequestListCommand extends SpoCommand_1.defau
|
|
|
62
75
|
}
|
|
63
76
|
});
|
|
64
77
|
}
|
|
78
|
+
getOAuth2PermissionGrants(spoClientExtensibilityWebApplicationPrincipalId) {
|
|
79
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
+
const requestOptions = {
|
|
81
|
+
url: `https://graph.microsoft.com/v1.0/oAuth2Permissiongrants/?$filter=clientId eq '${spoClientExtensibilityWebApplicationPrincipalId}' and consentType eq 'AllPrincipals'`,
|
|
82
|
+
headers: {
|
|
83
|
+
accept: 'application/json;odata.metadata=none'
|
|
84
|
+
},
|
|
85
|
+
responseType: 'json'
|
|
86
|
+
};
|
|
87
|
+
const response = yield request_1.default.get(requestOptions);
|
|
88
|
+
if (response.value && response.value.length > 0) {
|
|
89
|
+
return response.value[0].scope.split(' ');
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
getSPOClientExtensibilityWebApplicationPrincipalId() {
|
|
95
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
const requestOptions = {
|
|
97
|
+
url: `https://graph.microsoft.com/v1.0/servicePrincipals/?$filter=displayName eq 'SharePoint Online Client Extensibility Web Application Principal'`,
|
|
98
|
+
headers: {
|
|
99
|
+
accept: 'application/json;odata.metadata=none'
|
|
100
|
+
},
|
|
101
|
+
responseType: 'json'
|
|
102
|
+
};
|
|
103
|
+
const response = yield request_1.default.get(requestOptions);
|
|
104
|
+
if (response.value && response.value.length > 0) {
|
|
105
|
+
return response.value[0].id;
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
65
110
|
}
|
|
66
111
|
module.exports = new SpoServicePrincipalPermissionRequestListCommand();
|
|
67
112
|
//# sourceMappingURL=serviceprincipal-permissionrequest-list.js.map
|