@pnp/cli-microsoft365 6.9.0-beta.41bb38c → 6.9.0-beta.8393174
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/.devcontainer/Dockerfile +12 -19
- package/.devcontainer/devcontainer.json +24 -17
- package/Dockerfile +5 -2
- package/dist/Auth.js +2 -8
- package/dist/AuthServer.js +2 -4
- package/dist/cli/Cli.js +16 -0
- package/dist/m365/aad/commands/app/app-add.js +258 -249
- package/dist/m365/aad/commands/app/app-get.js +65 -62
- package/dist/m365/aad/commands/app/app-remove.js +22 -23
- package/dist/m365/aad/commands/app/app-role-add.js +35 -34
- package/dist/m365/aad/commands/app/app-role-list.js +22 -23
- package/dist/m365/aad/commands/app/app-role-remove.js +76 -73
- package/dist/m365/aad/commands/app/app-set.js +103 -103
- package/dist/m365/aad/commands/approleassignment/approleassignment-add.js +16 -14
- package/dist/m365/aad/commands/approleassignment/approleassignment-list.js +43 -52
- package/dist/m365/aad/commands/approleassignment/approleassignment-remove.js +20 -16
- package/dist/m365/aad/commands/o365group/o365group-add.js +40 -37
- package/dist/m365/aad/commands/o365group/o365group-conversation-post-list.js +7 -6
- package/dist/m365/aad/commands/o365group/o365group-list.js +6 -11
- package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-clear.js +7 -8
- package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-restore.js +23 -24
- package/dist/m365/aad/commands/o365group/o365group-set.js +15 -20
- package/dist/m365/aad/commands/o365group/o365group-teamify.js +15 -16
- package/dist/m365/aad/commands/o365group/o365group-user-list.js +17 -10
- package/dist/m365/aad/commands/o365group/o365group-user-set.js +17 -10
- package/dist/m365/aad/commands/policy/policy-list.js +12 -13
- package/dist/m365/aad/commands/siteclassification/siteclassification-enable.js +1 -3
- package/dist/m365/aad/commands/siteclassification/siteclassification-set.js +19 -20
- package/dist/m365/aad/commands/sp/sp-add.js +22 -23
- package/dist/m365/aad/commands/sp/sp-get.js +22 -23
- package/dist/m365/app/commands/app-open.js +4 -14
- package/dist/m365/cli/commands/cli-issue.js +4 -10
- package/dist/m365/cli/commands/cli-reconsent.js +2 -8
- package/dist/m365/cli/commands/config/config-set.js +1 -0
- package/dist/m365/commands/docs.js +2 -8
- package/dist/m365/commands/login.js +20 -0
- package/dist/m365/commands/setupPresets.js +2 -0
- package/dist/m365/file/commands/convert/convert-pdf.js +147 -143
- package/dist/m365/file/commands/file-add.js +87 -93
- package/dist/m365/file/commands/file-list.js +49 -55
- package/dist/m365/flow/commands/flow-list.js +35 -2
- package/dist/m365/flow/commands/flow-remove.js +2 -3
- package/dist/m365/flow/commands/run/run-resubmit.js +11 -10
- package/dist/m365/onedrive/commands/onedrive-list.js +21 -32
- package/dist/m365/outlook/commands/message/message-list.js +18 -23
- package/dist/m365/outlook/commands/message/message-move.js +15 -20
- package/dist/m365/pa/commands/app/app-export.js +3 -4
- package/dist/m365/pa/commands/app/app-get.js +11 -9
- package/dist/m365/pa/commands/app/app-remove.js +1 -1
- package/dist/m365/pa/commands/pcf/pcf-init.js +1 -2
- package/dist/m365/pa/commands/solution/solution-init.js +1 -2
- package/dist/m365/pa/commands/solution/solution-reference-add.js +1 -2
- package/dist/m365/planner/commands/bucket/bucket-add.js +15 -13
- package/dist/m365/planner/commands/bucket/bucket-get.js +27 -28
- package/dist/m365/planner/commands/bucket/bucket-list.js +15 -13
- package/dist/m365/planner/commands/bucket/bucket-remove.js +33 -34
- package/dist/m365/planner/commands/bucket/bucket-set.js +33 -34
- package/dist/m365/planner/commands/plan/plan-add.js +49 -52
- package/dist/m365/planner/commands/plan/plan-set.js +19 -20
- package/dist/m365/planner/commands/task/task-add.js +75 -78
- package/dist/m365/planner/commands/task/task-checklistitem-add.js +11 -10
- package/dist/m365/planner/commands/task/task-checklistitem-remove.js +10 -8
- package/dist/m365/planner/commands/task/task-get.js +53 -56
- package/dist/m365/planner/commands/task/task-list.js +23 -24
- package/dist/m365/planner/commands/task/task-reference-add.js +11 -10
- package/dist/m365/planner/commands/task/task-reference-remove.js +13 -14
- package/dist/m365/planner/commands/task/task-remove.js +44 -48
- package/dist/m365/planner/commands/task/task-set.js +83 -87
- package/dist/m365/pp/commands/card/card-get.js +6 -1
- package/dist/m365/purview/commands/retentionevent/retentionevent-add.js +0 -5
- package/dist/m365/purview/commands/retentionevent/retentionevent-get.js +0 -5
- package/dist/m365/purview/commands/retentionevent/retentionevent-list.js +0 -5
- package/dist/m365/purview/commands/retentionevent/retentionevent-remove.js +0 -5
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-add.js +0 -5
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-get.js +0 -5
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-list.js +0 -5
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-remove.js +0 -5
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-set.js +0 -5
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-add.js +0 -5
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-get.js +0 -5
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-list.js +0 -5
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-remove.js +19 -22
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-set.js +0 -5
- package/dist/m365/spfx/commands/project/JsonRule.js +1 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN021003_PKG_engines_node.js +1 -0
- package/dist/m365/spo/commands/app/app-teamspackage-download.js +17 -24
- package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-set.js +154 -0
- package/dist/m365/spo/commands/commandset/commandset-set.js +11 -2
- package/dist/m365/spo/commands/contenttype/contenttype-set.js +49 -2
- package/dist/m365/spo/commands/file/file-checkout-undo.js +119 -0
- package/dist/m365/spo/commands/homesite/homesite-remove.js +1 -1
- package/dist/m365/spo/commands/list/list-sensitivitylabel-ensure.js +127 -0
- package/dist/m365/spo/commands/navigation/navigation-node-add.js +31 -1
- package/dist/m365/spo/commands/navigation/navigation-node-set.js +31 -2
- package/dist/m365/{teams/Message.js → spo/commands/tenant/Solution.js} +1 -1
- package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-set.js +156 -0
- package/dist/m365/spo/commands/tenant/tenant-commandset-add.js +215 -0
- package/dist/m365/spo/commands/tenant/tenant-commandset-get.js +114 -0
- package/dist/m365/spo/commands/tenant/tenant-commandset-list.js +50 -0
- package/dist/m365/spo/commands/tenant/tenant-commandset-set.js +1 -1
- package/dist/m365/spo/commands/term/term-group-add.js +14 -10
- package/dist/m365/spo/commands.js +7 -0
- package/dist/m365/teams/commands/team/team-add.js +53 -50
- package/dist/m365/util/commands/accesstoken/accesstoken-get.js +10 -7
- package/dist/settingsNames.js +1 -0
- package/dist/utils/browserUtil.js +23 -0
- package/dist/utils/md.js +1 -3
- package/dist/utils/spo.js +60 -0
- package/docs/docs/cmd/aad/app/app-add.mdx +113 -0
- package/docs/docs/cmd/aad/app/app-get.mdx +217 -0
- package/docs/docs/cmd/aad/app/app-list.mdx +21 -0
- package/docs/docs/cmd/aad/app/app-role-add.mdx +4 -0
- package/docs/docs/cmd/aad/app/app-role-list.mdx +63 -0
- package/docs/docs/cmd/aad/app/app-role-remove.mdx +4 -0
- package/docs/docs/cmd/aad/app/app-set.mdx +4 -0
- package/docs/docs/cmd/aad/approleassignment/approleassignment-add.mdx +61 -0
- package/docs/docs/cmd/aad/approleassignment/approleassignment-list.mdx +59 -0
- package/docs/docs/cmd/aad/approleassignment/approleassignment-remove.mdx +4 -0
- package/docs/docs/cmd/aad/group/group-get.mdx +24 -0
- package/docs/docs/cmd/aad/group/group-list.mdx +98 -0
- package/docs/docs/cmd/aad/groupsetting/groupsetting-add.mdx +114 -0
- package/docs/docs/cmd/aad/groupsetting/groupsetting-get.mdx +115 -0
- package/docs/docs/cmd/aad/groupsetting/groupsetting-list.mdx +115 -0
- package/docs/docs/cmd/aad/groupsetting/groupsetting-remove.mdx +4 -0
- package/docs/docs/cmd/aad/groupsetting/groupsetting-set.mdx +4 -0
- package/docs/docs/cmd/aad/groupsettingtemplate/groupsettingtemplate-get.mdx +63 -0
- package/docs/docs/cmd/aad/groupsettingtemplate/groupsettingtemplate-list.mdx +63 -0
- package/docs/docs/cmd/aad/o365group/o365group-add.mdx +122 -0
- package/docs/docs/cmd/aad/o365group/o365group-conversation-list.mdx +68 -0
- package/docs/docs/cmd/aad/o365group/o365group-conversation-post-list.mdx +77 -0
- package/docs/docs/cmd/aad/o365group/o365group-get.mdx +122 -0
- package/docs/docs/cmd/aad/o365group/o365group-list.mdx +99 -0
- package/docs/docs/cmd/aad/o365group/o365group-recyclebinitem-clear.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-recyclebinitem-list.mdx +96 -0
- package/docs/docs/cmd/aad/o365group/o365group-recyclebinitem-remove.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-recyclebinitem-restore.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-remove.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-renew.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-report-activitycounts.mdx +48 -0
- package/docs/docs/cmd/aad/o365group/o365group-report-activitydetail.mdx +60 -0
- package/docs/docs/cmd/aad/o365group/o365group-report-activityfilecounts.mdx +46 -0
- package/docs/docs/cmd/aad/o365group/o365group-report-activitygroupcounts.mdx +46 -0
- package/docs/docs/cmd/aad/o365group/o365group-report-activitystorage.mdx +46 -0
- package/docs/docs/cmd/aad/o365group/o365group-set.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-teamify.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-user-add.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-user-list.mdx +56 -0
- package/docs/docs/cmd/aad/o365group/o365group-user-remove.mdx +4 -0
- package/docs/docs/cmd/aad/o365group/o365group-user-set.mdx +8 -4
- package/docs/docs/cmd/aad/oauth2grant/oauth2grant-add.mdx +4 -0
- package/docs/docs/cmd/aad/oauth2grant/oauth2grant-list.mdx +59 -0
- package/docs/docs/cmd/aad/oauth2grant/oauth2grant-remove.mdx +4 -0
- package/docs/docs/cmd/aad/oauth2grant/oauth2grant-set.mdx +4 -0
- package/docs/docs/cmd/aad/policy/policy-list.mdx +77 -0
- package/docs/docs/cmd/aad/siteclassification/siteclassification-disable.mdx +4 -0
- package/docs/docs/cmd/aad/siteclassification/siteclassification-enable.mdx +4 -0
- package/docs/docs/cmd/aad/siteclassification/siteclassification-get.mdx +57 -0
- package/docs/docs/cmd/aad/siteclassification/siteclassification-set.mdx +4 -0
- package/docs/docs/cmd/aad/sp/sp-add.mdx +136 -0
- package/docs/docs/cmd/aad/sp/sp-get.mdx +166 -0
- package/docs/docs/cmd/aad/user/user-get.mdx +75 -0
- package/docs/docs/cmd/aad/user/user-guest-add.mdx +23 -0
- package/docs/docs/cmd/aad/user/user-hibp.mdx +82 -0
- package/docs/docs/cmd/aad/user/user-license-add.mdx +2 -2
- package/docs/docs/cmd/aad/user/user-license-remove.mdx +2 -2
- package/docs/docs/cmd/aad/user/user-list.mdx +52 -0
- package/docs/docs/cmd/aad/user/user-password-validate.mdx +67 -0
- package/docs/docs/cmd/aad/user/user-signin-list.mdx +131 -0
- package/docs/docs/cmd/flow/flow-list.mdx +11 -3
- package/docs/docs/cmd/login.mdx +39 -0
- package/docs/docs/cmd/purview/retentionevent/retentionevent-add.mdx +0 -6
- package/docs/docs/cmd/purview/retentionevent/retentionevent-get.mdx +0 -6
- package/docs/docs/cmd/purview/retentionevent/retentionevent-list.mdx +0 -7
- package/docs/docs/cmd/purview/retentionevent/retentionevent-remove.mdx +0 -6
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-add.mdx +0 -6
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-get.mdx +0 -6
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-list.mdx +0 -6
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-remove.mdx +0 -6
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-set.mdx +0 -6
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-add.mdx +0 -6
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-get.mdx +0 -6
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-list.mdx +0 -6
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-remove.mdx +0 -6
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-set.mdx +0 -6
- package/docs/docs/cmd/setup.mdx +2 -0
- package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-set.mdx +72 -0
- package/docs/docs/cmd/spo/commandset/commandset-set.mdx +12 -3
- package/docs/docs/cmd/spo/file/file-checkout-undo.mdx +55 -0
- package/docs/docs/cmd/spo/list/list-sensitivitylabel-ensure.mdx +64 -0
- package/docs/docs/cmd/spo/navigation/navigation-node-add.mdx +7 -4
- package/docs/docs/cmd/spo/navigation/navigation-node-set.mdx +9 -0
- package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-set.mdx +81 -0
- package/docs/docs/cmd/spo/tenant/tenant-commandset-add.mdx +183 -0
- package/docs/docs/cmd/spo/tenant/tenant-commandset-get.mdx +155 -0
- package/docs/docs/cmd/spo/tenant/tenant-commandset-list.mdx +114 -0
- package/docs/docs/cmd/spo/tenant/tenant-commandset-set.mdx +1 -1
- package/docs/docs/cmd/spo/term/term-group-add.mdx +63 -4
- package/docs/docs/cmd/status.mdx +6 -3
- package/docs/docs/cmd/util/accesstoken/accesstoken-get.mdx +12 -2
- package/npm-shrinkwrap.json +299 -272
- package/package.json +17 -17
- package/dist/m365/aad/commands/approleassignment/AppRoleAssignment.js +0 -3
- package/dist/m365/aad/commands/approleassignment/ServicePrincipal.js +0 -3
- package/dist/m365/aad/commands/groupsetting/GroupSetting.js +0 -3
- package/dist/m365/aad/commands/groupsettingtemplate/GroupSettingTemplate.js +0 -3
- package/dist/m365/aad/commands/siteclassification/DirectorySetting.js +0 -10
- package/dist/m365/aad/commands/siteclassification/DirectorySettingTemplatesRsp.js +0 -3
- package/dist/m365/aad/commands/siteclassification/DirectorySettingValue.js +0 -3
- package/dist/m365/outlook/Message.js +0 -3
- package/dist/m365/spo/commands/site/SitePermission.js +0 -3
- package/dist/m365/teams/Channel.js +0 -3
- package/dist/m365/teams/ConversationMember.js +0 -3
- package/dist/m365/teams/Reply.js +0 -3
- package/dist/m365/teams/Tab.js +0 -3
- package/dist/m365/teams/Team.js +0 -3
- package/dist/m365/teams/TeamsApp.js +0 -3
- package/dist/m365/teams/TeamsAppInstallation.js +0 -3
- package/dist/m365/teams/TeamsTabConfiguration.js +0 -3
- package/dist/m365/teams/commands/Meeting.js +0 -3
|
@@ -15,9 +15,9 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
15
15
|
};
|
|
16
16
|
var _CliIssueCommand_instances, _CliIssueCommand_initTelemetry, _CliIssueCommand_initOptions, _CliIssueCommand_initValidators;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
const open = require("open");
|
|
19
18
|
const AnonymousCommand_1 = require("../../base/AnonymousCommand");
|
|
20
19
|
const commands_1 = require("../commands");
|
|
20
|
+
const browserUtil_1 = require("../../../utils/browserUtil");
|
|
21
21
|
class CliIssueCommand extends AnonymousCommand_1.default {
|
|
22
22
|
get name() {
|
|
23
23
|
return commands_1.default.ISSUE;
|
|
@@ -25,9 +25,8 @@ class CliIssueCommand extends AnonymousCommand_1.default {
|
|
|
25
25
|
get description() {
|
|
26
26
|
return 'Returns, or opens a URL that takes the user to the right place in the CLI GitHub repo to create a new issue reporting bug, feedback, ideas, etc.';
|
|
27
27
|
}
|
|
28
|
-
constructor(
|
|
28
|
+
constructor() {
|
|
29
29
|
super();
|
|
30
|
-
this.open = open;
|
|
31
30
|
_CliIssueCommand_instances.add(this);
|
|
32
31
|
__classPrivateFieldGet(this, _CliIssueCommand_instances, "m", _CliIssueCommand_initTelemetry).call(this);
|
|
33
32
|
__classPrivateFieldGet(this, _CliIssueCommand_instances, "m", _CliIssueCommand_initOptions).call(this);
|
|
@@ -47,15 +46,10 @@ class CliIssueCommand extends AnonymousCommand_1.default {
|
|
|
47
46
|
issueLink = 'https://aka.ms/cli-m365/new-sample-script';
|
|
48
47
|
break;
|
|
49
48
|
}
|
|
50
|
-
yield
|
|
49
|
+
yield browserUtil_1.browserUtil.open(issueLink);
|
|
51
50
|
logger.log(issueLink);
|
|
52
51
|
});
|
|
53
52
|
}
|
|
54
|
-
openBrowser(issueLink) {
|
|
55
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
-
return this.open(issueLink, { wait: false });
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
53
|
}
|
|
60
54
|
_CliIssueCommand_instances = new WeakSet(), _CliIssueCommand_initTelemetry = function _CliIssueCommand_initTelemetry() {
|
|
61
55
|
this.telemetry.push((args) => {
|
|
@@ -81,5 +75,5 @@ CliIssueCommand.issueType = [
|
|
|
81
75
|
'command',
|
|
82
76
|
'sample'
|
|
83
77
|
];
|
|
84
|
-
module.exports = new CliIssueCommand(
|
|
78
|
+
module.exports = new CliIssueCommand();
|
|
85
79
|
//# sourceMappingURL=cli-issue.js.map
|
|
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
const Cli_1 = require("../../../cli/Cli");
|
|
13
13
|
const config_1 = require("../../../config");
|
|
14
14
|
const settingsNames_1 = require("../../../settingsNames");
|
|
15
|
+
const browserUtil_1 = require("../../../utils/browserUtil");
|
|
15
16
|
const AnonymousCommand_1 = require("../../base/AnonymousCommand");
|
|
16
17
|
const commands_1 = require("../commands");
|
|
17
18
|
class CliReconsentCommand extends AnonymousCommand_1.default {
|
|
@@ -29,15 +30,8 @@ class CliReconsentCommand extends AnonymousCommand_1.default {
|
|
|
29
30
|
return;
|
|
30
31
|
}
|
|
31
32
|
logger.log(`Opening the following page in your browser: ${url}`);
|
|
32
|
-
// _open is never set before hitting this line, but this check
|
|
33
|
-
// is implemented so that we can support lazy loading
|
|
34
|
-
// but also stub it for testing
|
|
35
|
-
/* c8 ignore next 3 */
|
|
36
|
-
if (!this._open) {
|
|
37
|
-
this._open = require('open');
|
|
38
|
-
}
|
|
39
33
|
try {
|
|
40
|
-
yield
|
|
34
|
+
yield browserUtil_1.browserUtil.open(url);
|
|
41
35
|
}
|
|
42
36
|
catch (err) {
|
|
43
37
|
this.handleRejectedODataJsonPromise(err);
|
|
@@ -43,6 +43,7 @@ class CliConfigSetCommand extends AnonymousCommand_1.default {
|
|
|
43
43
|
case settingsNames_1.settingsNames.csvQuoted:
|
|
44
44
|
case settingsNames_1.settingsNames.csvQuotedEmpty:
|
|
45
45
|
case settingsNames_1.settingsNames.disableTelemetry:
|
|
46
|
+
case settingsNames_1.settingsNames.interactive:
|
|
46
47
|
case settingsNames_1.settingsNames.printErrorsAsPlainText:
|
|
47
48
|
case settingsNames_1.settingsNames.prompt:
|
|
48
49
|
case settingsNames_1.settingsNames.showHelpOnFailure:
|
|
@@ -13,6 +13,7 @@ const AnonymousCommand_1 = require("../base/AnonymousCommand");
|
|
|
13
13
|
const Cli_1 = require("../../cli/Cli");
|
|
14
14
|
const commands_1 = require("./commands");
|
|
15
15
|
const settingsNames_1 = require("../../settingsNames");
|
|
16
|
+
const browserUtil_1 = require("../../utils/browserUtil");
|
|
16
17
|
const packageJSON = require('../../../package.json');
|
|
17
18
|
class DocsCommand extends AnonymousCommand_1.default {
|
|
18
19
|
get name() {
|
|
@@ -27,14 +28,7 @@ class DocsCommand extends AnonymousCommand_1.default {
|
|
|
27
28
|
if (Cli_1.Cli.getInstance().getSettingWithDefaultValue(settingsNames_1.settingsNames.autoOpenLinksInBrowser, false) === false) {
|
|
28
29
|
return;
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
-
// is implemented so that we can support lazy loading
|
|
32
|
-
// but also stub it for testing
|
|
33
|
-
/* c8 ignore next 3 */
|
|
34
|
-
if (!this._open) {
|
|
35
|
-
this._open = require('open');
|
|
36
|
-
}
|
|
37
|
-
yield this._open(packageJSON.homepage);
|
|
31
|
+
yield browserUtil_1.browserUtil.open(packageJSON.homepage);
|
|
38
32
|
});
|
|
39
33
|
}
|
|
40
34
|
}
|
|
@@ -19,6 +19,7 @@ const fs = require("fs");
|
|
|
19
19
|
const Auth_1 = require("../../Auth");
|
|
20
20
|
const Command_1 = require("../../Command");
|
|
21
21
|
const config_1 = require("../../config");
|
|
22
|
+
const accessToken_1 = require("../../utils/accessToken");
|
|
22
23
|
const misc_1 = require("../../utils/misc");
|
|
23
24
|
const commands_1 = require("./commands");
|
|
24
25
|
class LoginCommand extends Command_1.default {
|
|
@@ -90,6 +91,25 @@ class LoginCommand extends Command_1.default {
|
|
|
90
91
|
}
|
|
91
92
|
throw new Command_1.CommandError(error.message);
|
|
92
93
|
}
|
|
94
|
+
if (this.debug) {
|
|
95
|
+
logger.logToStderr({
|
|
96
|
+
connectedAs: accessToken_1.accessToken.getUserNameFromAccessToken(Auth_1.default.service.accessTokens[Auth_1.default.defaultResource].accessToken),
|
|
97
|
+
authType: Auth_1.AuthType[Auth_1.default.service.authType],
|
|
98
|
+
appId: Auth_1.default.service.appId,
|
|
99
|
+
appTenant: Auth_1.default.service.tenant,
|
|
100
|
+
accessToken: JSON.stringify(Auth_1.default.service.accessTokens, null, 2),
|
|
101
|
+
cloudType: Auth_1.CloudType[Auth_1.default.service.cloudType]
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
logger.logToStderr({
|
|
106
|
+
connectedAs: accessToken_1.accessToken.getUserNameFromAccessToken(Auth_1.default.service.accessTokens[Auth_1.default.defaultResource].accessToken),
|
|
107
|
+
authType: Auth_1.AuthType[Auth_1.default.service.authType],
|
|
108
|
+
appId: Auth_1.default.service.appId,
|
|
109
|
+
appTenant: Auth_1.default.service.tenant,
|
|
110
|
+
cloudType: Auth_1.CloudType[Auth_1.default.service.cloudType]
|
|
111
|
+
});
|
|
112
|
+
}
|
|
93
113
|
});
|
|
94
114
|
try {
|
|
95
115
|
yield Auth_1.default.clearConnectionInfo();
|
|
@@ -4,6 +4,7 @@ exports.powerShellPreset = exports.scriptingPreset = exports.interactivePreset =
|
|
|
4
4
|
exports.interactivePreset = {
|
|
5
5
|
autoOpenLinksInBrowser: true,
|
|
6
6
|
copyDeviceCodeToClipboard: true,
|
|
7
|
+
interactive: true,
|
|
7
8
|
output: 'text',
|
|
8
9
|
printErrorsAsPlainText: true,
|
|
9
10
|
prompt: true,
|
|
@@ -13,6 +14,7 @@ exports.interactivePreset = {
|
|
|
13
14
|
exports.scriptingPreset = {
|
|
14
15
|
autoOpenLinksInBrowser: false,
|
|
15
16
|
copyDeviceCodeToClipboard: false,
|
|
17
|
+
interactive: false,
|
|
16
18
|
output: 'json',
|
|
17
19
|
printErrorsAsPlainText: false,
|
|
18
20
|
prompt: false,
|
|
@@ -119,20 +119,22 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
119
119
|
* @returns Web URL of the file to upload
|
|
120
120
|
*/
|
|
121
121
|
getSourceFileUrl(logger, args, isAppOnlyAccessToken) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
122
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
+
if (args.options.sourceFile.toLowerCase().startsWith('https://')) {
|
|
124
|
+
return args.options.sourceFile;
|
|
125
|
+
}
|
|
126
|
+
if (this.verbose) {
|
|
127
|
+
logger.logToStderr('Uploading local file temporarily for conversion...');
|
|
128
|
+
}
|
|
129
|
+
const driveUrl = `${this.resource}/v1.0/${isAppOnlyAccessToken ? 'drive/root' : 'me/drive/root'}`;
|
|
130
|
+
// we need the original file extension because otherwise Graph won't be able
|
|
131
|
+
// to convert the file to PDF
|
|
132
|
+
this.sourceFileGraphUrl = `${driveUrl}:/${(0, uuid_1.v4)()}${path.extname(args.options.sourceFile)}`;
|
|
133
|
+
if (this.debug) {
|
|
134
|
+
logger.logToStderr(`Source is a local file. Uploading to ${this.sourceFileGraphUrl}...`);
|
|
135
|
+
}
|
|
136
|
+
return yield this.uploadFile(args.options.sourceFile, this.sourceFileGraphUrl);
|
|
137
|
+
});
|
|
136
138
|
}
|
|
137
139
|
/**
|
|
138
140
|
* Uploads the specified local file to a document library using Microsoft Graph
|
|
@@ -141,18 +143,17 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
141
143
|
* @returns Absolute URL of the uploaded file
|
|
142
144
|
*/
|
|
143
145
|
uploadFile(localFilePath, targetGraphFileUrl) {
|
|
144
|
-
|
|
145
|
-
url: `${targetGraphFileUrl}:/createUploadSession`,
|
|
146
|
-
headers: {
|
|
147
|
-
accept: 'application/json;odata.metadata=none'
|
|
148
|
-
},
|
|
149
|
-
responseType: 'json'
|
|
150
|
-
};
|
|
151
|
-
return request_1.default
|
|
152
|
-
.post(requestOptions)
|
|
153
|
-
.then((res) => {
|
|
154
|
-
const fileContents = fs.readFileSync(localFilePath);
|
|
146
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
155
147
|
const requestOptions = {
|
|
148
|
+
url: `${targetGraphFileUrl}:/createUploadSession`,
|
|
149
|
+
headers: {
|
|
150
|
+
accept: 'application/json;odata.metadata=none'
|
|
151
|
+
},
|
|
152
|
+
responseType: 'json'
|
|
153
|
+
};
|
|
154
|
+
const res = yield request_1.default.post(requestOptions);
|
|
155
|
+
const fileContents = fs.readFileSync(localFilePath);
|
|
156
|
+
const requestOptionsPut = {
|
|
156
157
|
url: res.uploadUrl,
|
|
157
158
|
headers: {
|
|
158
159
|
'x-anonymous': true,
|
|
@@ -163,9 +164,9 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
163
164
|
data: fileContents,
|
|
164
165
|
responseType: 'json'
|
|
165
166
|
};
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
167
|
+
const resPut = yield request_1.default.put(requestOptionsPut);
|
|
168
|
+
return resPut.webUrl;
|
|
169
|
+
});
|
|
169
170
|
}
|
|
170
171
|
/**
|
|
171
172
|
* Gets Graph's drive item URL for the specified file. If the user specified
|
|
@@ -186,21 +187,20 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
186
187
|
* @returns Graph's drive item URL for the specified file
|
|
187
188
|
*/
|
|
188
189
|
getGraphFileUrl(logger, fileWebUrl, fileGraphUrl) {
|
|
189
|
-
|
|
190
|
-
logger.logToStderr(`Resolving Graph drive item URL for ${fileWebUrl}`);
|
|
191
|
-
}
|
|
192
|
-
if (fileGraphUrl) {
|
|
190
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
193
191
|
if (this.debug) {
|
|
194
|
-
logger.logToStderr(`
|
|
192
|
+
logger.logToStderr(`Resolving Graph drive item URL for ${fileWebUrl}`);
|
|
195
193
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
194
|
+
if (fileGraphUrl) {
|
|
195
|
+
if (this.debug) {
|
|
196
|
+
logger.logToStderr(`Returning previously resolved Graph drive item URL ${fileGraphUrl}`);
|
|
197
|
+
}
|
|
198
|
+
return fileGraphUrl;
|
|
199
|
+
}
|
|
200
|
+
const _url = url.parse(fileWebUrl);
|
|
201
|
+
let siteId = '';
|
|
202
|
+
let driveRelativeFileUrl = '';
|
|
203
|
+
const siteInfo = yield this.getGraphSiteInfoFromFullUrl(_url.host, _url.path);
|
|
204
204
|
siteId = siteInfo.id;
|
|
205
205
|
let siteRelativeFileUrl = _url.path.replace(siteInfo.serverRelativeUrl, '');
|
|
206
206
|
// normalize site-relative URLs for root site collections and root sites
|
|
@@ -210,9 +210,7 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
210
210
|
const siteRelativeFileUrlChunks = siteRelativeFileUrl.split('/');
|
|
211
211
|
driveRelativeFileUrl = `/${siteRelativeFileUrlChunks.slice(2).join('/')}`;
|
|
212
212
|
// chunk 0 is empty because the URL starts with /
|
|
213
|
-
|
|
214
|
-
})
|
|
215
|
-
.then(driveId => {
|
|
213
|
+
const driveId = yield this.getDriveId(logger, siteId, siteRelativeFileUrlChunks[1]);
|
|
216
214
|
const graphUrl = `${this.resource}/v1.0/sites/${siteId}/drives/${driveId}/root:${driveRelativeFileUrl}`;
|
|
217
215
|
if (this.debug) {
|
|
218
216
|
logger.logToStderr(`Resolved URL ${graphUrl}`);
|
|
@@ -228,10 +226,10 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
228
226
|
* @returns ID and server-relative URL of the site denoted by urlPath
|
|
229
227
|
*/
|
|
230
228
|
getGraphSiteInfoFromFullUrl(hostName, urlPath) {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
this.getGraphSiteInfo(hostName, urlChunks, 0, siteId
|
|
229
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
230
|
+
const siteId = '';
|
|
231
|
+
const urlChunks = urlPath.split('/');
|
|
232
|
+
return yield this.getGraphSiteInfo(hostName, urlChunks, 0, siteId);
|
|
235
233
|
});
|
|
236
234
|
}
|
|
237
235
|
/**
|
|
@@ -248,40 +246,45 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
248
246
|
* @param reject Callback method to call when resolving site info failed
|
|
249
247
|
* @returns Graph site ID and server-relative URL of the site specified through chunks
|
|
250
248
|
*/
|
|
251
|
-
getGraphSiteInfo(hostName, urlChunks, currentChunk, lastSiteId
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
currentPath.endsWith('/
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
currentPath
|
|
260
|
-
|
|
261
|
-
const requestOptions = {
|
|
262
|
-
url: `${this.resource}/v1.0/sites/${hostName}:${currentPath}?$select=id`,
|
|
263
|
-
headers: {
|
|
264
|
-
accept: 'application/json;odata.metadata=none'
|
|
265
|
-
},
|
|
266
|
-
responseType: 'json'
|
|
267
|
-
};
|
|
268
|
-
request_1.default
|
|
269
|
-
.get(requestOptions)
|
|
270
|
-
.then((res) => {
|
|
271
|
-
this.getGraphSiteInfo(hostName, urlChunks, ++currentChunk, res.id, resolve, reject);
|
|
272
|
-
}, err => {
|
|
273
|
-
if (lastSiteId) {
|
|
274
|
-
let serverRelativeUrl = `${urlChunks.slice(0, currentChunk).join('/')}`;
|
|
275
|
-
if (!serverRelativeUrl.startsWith('/')) {
|
|
276
|
-
serverRelativeUrl = '/' + serverRelativeUrl;
|
|
277
|
-
}
|
|
278
|
-
resolve({
|
|
279
|
-
id: lastSiteId,
|
|
280
|
-
serverRelativeUrl: serverRelativeUrl
|
|
281
|
-
});
|
|
249
|
+
getGraphSiteInfo(hostName, urlChunks, currentChunk, lastSiteId) {
|
|
250
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
251
|
+
let currentPath = urlChunks.slice(0, currentChunk + 1).join('/');
|
|
252
|
+
if (currentPath.endsWith('/sites') ||
|
|
253
|
+
currentPath.endsWith('/teams') ||
|
|
254
|
+
currentPath.endsWith('/personal')) {
|
|
255
|
+
return yield this.getGraphSiteInfo(hostName, urlChunks, ++currentChunk, '');
|
|
256
|
+
}
|
|
257
|
+
if (!currentPath.startsWith('/')) {
|
|
258
|
+
currentPath = '/' + currentPath;
|
|
282
259
|
}
|
|
283
|
-
|
|
284
|
-
|
|
260
|
+
const requestOptions = {
|
|
261
|
+
url: `${this.resource}/v1.0/sites/${hostName}:${currentPath}?$select=id`,
|
|
262
|
+
headers: {
|
|
263
|
+
accept: 'application/json;odata.metadata=none'
|
|
264
|
+
},
|
|
265
|
+
responseType: 'json'
|
|
266
|
+
};
|
|
267
|
+
const getResult = (id, serverRelativeUrl) => {
|
|
268
|
+
return {
|
|
269
|
+
id,
|
|
270
|
+
serverRelativeUrl
|
|
271
|
+
};
|
|
272
|
+
};
|
|
273
|
+
try {
|
|
274
|
+
const res = yield request_1.default.get(requestOptions);
|
|
275
|
+
return yield this.getGraphSiteInfo(hostName, urlChunks, ++currentChunk, res.id);
|
|
276
|
+
}
|
|
277
|
+
catch (err) {
|
|
278
|
+
if (lastSiteId) {
|
|
279
|
+
let serverRelativeUrl = `${urlChunks.slice(0, currentChunk).join('/')}`;
|
|
280
|
+
if (!serverRelativeUrl.startsWith('/')) {
|
|
281
|
+
serverRelativeUrl = '/' + serverRelativeUrl;
|
|
282
|
+
}
|
|
283
|
+
return getResult(lastSiteId, serverRelativeUrl);
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
throw err;
|
|
287
|
+
}
|
|
285
288
|
}
|
|
286
289
|
});
|
|
287
290
|
}
|
|
@@ -292,24 +295,23 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
292
295
|
* @returns Graph drive ID of the specified document library
|
|
293
296
|
*/
|
|
294
297
|
getDriveId(logger, graphSiteId, siteRelativeListUrl) {
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
.get(requestOptions)
|
|
304
|
-
.then((res) => {
|
|
298
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
299
|
+
const requestOptions = {
|
|
300
|
+
url: `${this.resource}/v1.0/sites/${graphSiteId}/drives?$select=webUrl,id`,
|
|
301
|
+
headers: {
|
|
302
|
+
accept: 'application/json;odata.metadata=none'
|
|
303
|
+
},
|
|
304
|
+
responseType: 'json'
|
|
305
|
+
};
|
|
306
|
+
const res = yield request_1.default.get(requestOptions);
|
|
305
307
|
if (this.debug) {
|
|
306
308
|
logger.logToStderr(`Searching for drive with a URL ending with /${siteRelativeListUrl}...`);
|
|
307
309
|
}
|
|
308
310
|
const drive = res.value.find(d => d.webUrl.endsWith(`/${siteRelativeListUrl}`));
|
|
309
311
|
if (!drive) {
|
|
310
|
-
|
|
312
|
+
throw 'Drive not found';
|
|
311
313
|
}
|
|
312
|
-
return
|
|
314
|
+
return drive.id;
|
|
313
315
|
});
|
|
314
316
|
}
|
|
315
317
|
/**
|
|
@@ -320,17 +322,19 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
320
322
|
* the file converted to PDF. The URL must be called anonymously
|
|
321
323
|
*/
|
|
322
324
|
convertFile(logger, graphFileUrl) {
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
325
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
326
|
+
if (this.verbose) {
|
|
327
|
+
logger.logToStderr('Converting file...');
|
|
328
|
+
}
|
|
329
|
+
const requestOptions = {
|
|
330
|
+
url: `${graphFileUrl}:/content?format=pdf`,
|
|
331
|
+
headers: {
|
|
332
|
+
accept: 'application/json;odata.metadata=none'
|
|
333
|
+
},
|
|
334
|
+
responseType: 'stream'
|
|
335
|
+
};
|
|
336
|
+
return yield request_1.default.get(requestOptions);
|
|
337
|
+
});
|
|
334
338
|
}
|
|
335
339
|
/**
|
|
336
340
|
* Writes the contents of the specified file stream to a local file
|
|
@@ -339,18 +343,19 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
339
343
|
* @param localFilePath Local file path where to store the file
|
|
340
344
|
*/
|
|
341
345
|
writeFileToDisk(logger, fileResponse, localFilePath) {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
346
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
347
|
+
if (this.verbose) {
|
|
348
|
+
logger.logToStderr(`Writing converted PDF file to ${localFilePath}...`);
|
|
349
|
+
}
|
|
350
|
+
yield new Promise((resolve, reject) => {
|
|
351
|
+
const writer = fs.createWriteStream(localFilePath);
|
|
352
|
+
fileResponse.data.pipe(writer);
|
|
353
|
+
writer.on('error', err => {
|
|
354
|
+
reject(err);
|
|
355
|
+
});
|
|
356
|
+
writer.on('close', () => {
|
|
357
|
+
resolve();
|
|
358
|
+
});
|
|
354
359
|
});
|
|
355
360
|
});
|
|
356
361
|
}
|
|
@@ -364,21 +369,21 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
364
369
|
* @param targetFileUrl Web URL of the file to upload
|
|
365
370
|
*/
|
|
366
371
|
uploadConvertedFileIfNecessary(logger, targetIsLocalFile, localFilePath, targetFileUrl) {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
if (
|
|
371
|
-
|
|
372
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
373
|
+
// if the target was a local path, we're done.
|
|
374
|
+
// Otherwise, upload the file to the specified URL
|
|
375
|
+
if (targetIsLocalFile) {
|
|
376
|
+
if (this.debug) {
|
|
377
|
+
logger.logToStderr('Specified target is a local file. Not uploading.');
|
|
378
|
+
}
|
|
379
|
+
return;
|
|
372
380
|
}
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
.getGraphFileUrl(logger, targetFileUrl, undefined)
|
|
380
|
-
.then(targetGraphFileUrl => this.uploadFile(localFilePath, targetGraphFileUrl))
|
|
381
|
-
.then(_ => Promise.resolve());
|
|
381
|
+
if (this.verbose) {
|
|
382
|
+
logger.logToStderr(`Uploading converted PDF file to ${targetFileUrl}...`);
|
|
383
|
+
}
|
|
384
|
+
const targetGraphFileUrl = yield this.getGraphFileUrl(logger, targetFileUrl, undefined);
|
|
385
|
+
yield this.uploadFile(localFilePath, targetGraphFileUrl);
|
|
386
|
+
});
|
|
382
387
|
}
|
|
383
388
|
/**
|
|
384
389
|
* If the user specified local file to be converted to PDF, removes the file
|
|
@@ -389,20 +394,19 @@ class FileConvertPdfCommand extends GraphCommand_1.default {
|
|
|
389
394
|
* @param sourceFileUrl Web URL of the temporary source file to delete
|
|
390
395
|
*/
|
|
391
396
|
deleteRemoteSourceFileIfNecessary(logger, sourceIsLocalFile, sourceFileUrl) {
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
if (
|
|
396
|
-
|
|
397
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
398
|
+
// if the source was a remote file, we're done,
|
|
399
|
+
// otherwise delete the temporary uploaded file
|
|
400
|
+
if (!sourceIsLocalFile) {
|
|
401
|
+
if (this.debug) {
|
|
402
|
+
logger.logToStderr('Source file was URL. Not removing.');
|
|
403
|
+
}
|
|
404
|
+
return;
|
|
397
405
|
}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
}
|
|
403
|
-
return this
|
|
404
|
-
.getGraphFileUrl(logger, sourceFileUrl, this.sourceFileGraphUrl)
|
|
405
|
-
.then((graphFileUrl) => {
|
|
406
|
+
if (this.verbose) {
|
|
407
|
+
logger.logToStderr(`Deleting the temporary file at ${sourceFileUrl}...`);
|
|
408
|
+
}
|
|
409
|
+
const graphFileUrl = yield this.getGraphFileUrl(logger, sourceFileUrl, this.sourceFileGraphUrl);
|
|
406
410
|
const requestOptions = {
|
|
407
411
|
url: graphFileUrl,
|
|
408
412
|
headers: {
|