@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.
Files changed (219) hide show
  1. package/.devcontainer/Dockerfile +12 -19
  2. package/.devcontainer/devcontainer.json +24 -17
  3. package/Dockerfile +5 -2
  4. package/dist/Auth.js +2 -8
  5. package/dist/AuthServer.js +2 -4
  6. package/dist/cli/Cli.js +16 -0
  7. package/dist/m365/aad/commands/app/app-add.js +258 -249
  8. package/dist/m365/aad/commands/app/app-get.js +65 -62
  9. package/dist/m365/aad/commands/app/app-remove.js +22 -23
  10. package/dist/m365/aad/commands/app/app-role-add.js +35 -34
  11. package/dist/m365/aad/commands/app/app-role-list.js +22 -23
  12. package/dist/m365/aad/commands/app/app-role-remove.js +76 -73
  13. package/dist/m365/aad/commands/app/app-set.js +103 -103
  14. package/dist/m365/aad/commands/approleassignment/approleassignment-add.js +16 -14
  15. package/dist/m365/aad/commands/approleassignment/approleassignment-list.js +43 -52
  16. package/dist/m365/aad/commands/approleassignment/approleassignment-remove.js +20 -16
  17. package/dist/m365/aad/commands/o365group/o365group-add.js +40 -37
  18. package/dist/m365/aad/commands/o365group/o365group-conversation-post-list.js +7 -6
  19. package/dist/m365/aad/commands/o365group/o365group-list.js +6 -11
  20. package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-clear.js +7 -8
  21. package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-restore.js +23 -24
  22. package/dist/m365/aad/commands/o365group/o365group-set.js +15 -20
  23. package/dist/m365/aad/commands/o365group/o365group-teamify.js +15 -16
  24. package/dist/m365/aad/commands/o365group/o365group-user-list.js +17 -10
  25. package/dist/m365/aad/commands/o365group/o365group-user-set.js +17 -10
  26. package/dist/m365/aad/commands/policy/policy-list.js +12 -13
  27. package/dist/m365/aad/commands/siteclassification/siteclassification-enable.js +1 -3
  28. package/dist/m365/aad/commands/siteclassification/siteclassification-set.js +19 -20
  29. package/dist/m365/aad/commands/sp/sp-add.js +22 -23
  30. package/dist/m365/aad/commands/sp/sp-get.js +22 -23
  31. package/dist/m365/app/commands/app-open.js +4 -14
  32. package/dist/m365/cli/commands/cli-issue.js +4 -10
  33. package/dist/m365/cli/commands/cli-reconsent.js +2 -8
  34. package/dist/m365/cli/commands/config/config-set.js +1 -0
  35. package/dist/m365/commands/docs.js +2 -8
  36. package/dist/m365/commands/login.js +20 -0
  37. package/dist/m365/commands/setupPresets.js +2 -0
  38. package/dist/m365/file/commands/convert/convert-pdf.js +147 -143
  39. package/dist/m365/file/commands/file-add.js +87 -93
  40. package/dist/m365/file/commands/file-list.js +49 -55
  41. package/dist/m365/flow/commands/flow-list.js +35 -2
  42. package/dist/m365/flow/commands/flow-remove.js +2 -3
  43. package/dist/m365/flow/commands/run/run-resubmit.js +11 -10
  44. package/dist/m365/onedrive/commands/onedrive-list.js +21 -32
  45. package/dist/m365/outlook/commands/message/message-list.js +18 -23
  46. package/dist/m365/outlook/commands/message/message-move.js +15 -20
  47. package/dist/m365/pa/commands/app/app-export.js +3 -4
  48. package/dist/m365/pa/commands/app/app-get.js +11 -9
  49. package/dist/m365/pa/commands/app/app-remove.js +1 -1
  50. package/dist/m365/pa/commands/pcf/pcf-init.js +1 -2
  51. package/dist/m365/pa/commands/solution/solution-init.js +1 -2
  52. package/dist/m365/pa/commands/solution/solution-reference-add.js +1 -2
  53. package/dist/m365/planner/commands/bucket/bucket-add.js +15 -13
  54. package/dist/m365/planner/commands/bucket/bucket-get.js +27 -28
  55. package/dist/m365/planner/commands/bucket/bucket-list.js +15 -13
  56. package/dist/m365/planner/commands/bucket/bucket-remove.js +33 -34
  57. package/dist/m365/planner/commands/bucket/bucket-set.js +33 -34
  58. package/dist/m365/planner/commands/plan/plan-add.js +49 -52
  59. package/dist/m365/planner/commands/plan/plan-set.js +19 -20
  60. package/dist/m365/planner/commands/task/task-add.js +75 -78
  61. package/dist/m365/planner/commands/task/task-checklistitem-add.js +11 -10
  62. package/dist/m365/planner/commands/task/task-checklistitem-remove.js +10 -8
  63. package/dist/m365/planner/commands/task/task-get.js +53 -56
  64. package/dist/m365/planner/commands/task/task-list.js +23 -24
  65. package/dist/m365/planner/commands/task/task-reference-add.js +11 -10
  66. package/dist/m365/planner/commands/task/task-reference-remove.js +13 -14
  67. package/dist/m365/planner/commands/task/task-remove.js +44 -48
  68. package/dist/m365/planner/commands/task/task-set.js +83 -87
  69. package/dist/m365/pp/commands/card/card-get.js +6 -1
  70. package/dist/m365/purview/commands/retentionevent/retentionevent-add.js +0 -5
  71. package/dist/m365/purview/commands/retentionevent/retentionevent-get.js +0 -5
  72. package/dist/m365/purview/commands/retentionevent/retentionevent-list.js +0 -5
  73. package/dist/m365/purview/commands/retentionevent/retentionevent-remove.js +0 -5
  74. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-add.js +0 -5
  75. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-get.js +0 -5
  76. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-list.js +0 -5
  77. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-remove.js +0 -5
  78. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-set.js +0 -5
  79. package/dist/m365/purview/commands/retentionlabel/retentionlabel-add.js +0 -5
  80. package/dist/m365/purview/commands/retentionlabel/retentionlabel-get.js +0 -5
  81. package/dist/m365/purview/commands/retentionlabel/retentionlabel-list.js +0 -5
  82. package/dist/m365/purview/commands/retentionlabel/retentionlabel-remove.js +19 -22
  83. package/dist/m365/purview/commands/retentionlabel/retentionlabel-set.js +0 -5
  84. package/dist/m365/spfx/commands/project/JsonRule.js +1 -1
  85. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN021003_PKG_engines_node.js +1 -0
  86. package/dist/m365/spo/commands/app/app-teamspackage-download.js +17 -24
  87. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-set.js +154 -0
  88. package/dist/m365/spo/commands/commandset/commandset-set.js +11 -2
  89. package/dist/m365/spo/commands/contenttype/contenttype-set.js +49 -2
  90. package/dist/m365/spo/commands/file/file-checkout-undo.js +119 -0
  91. package/dist/m365/spo/commands/homesite/homesite-remove.js +1 -1
  92. package/dist/m365/spo/commands/list/list-sensitivitylabel-ensure.js +127 -0
  93. package/dist/m365/spo/commands/navigation/navigation-node-add.js +31 -1
  94. package/dist/m365/spo/commands/navigation/navigation-node-set.js +31 -2
  95. package/dist/m365/{teams/Message.js → spo/commands/tenant/Solution.js} +1 -1
  96. package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-set.js +156 -0
  97. package/dist/m365/spo/commands/tenant/tenant-commandset-add.js +215 -0
  98. package/dist/m365/spo/commands/tenant/tenant-commandset-get.js +114 -0
  99. package/dist/m365/spo/commands/tenant/tenant-commandset-list.js +50 -0
  100. package/dist/m365/spo/commands/tenant/tenant-commandset-set.js +1 -1
  101. package/dist/m365/spo/commands/term/term-group-add.js +14 -10
  102. package/dist/m365/spo/commands.js +7 -0
  103. package/dist/m365/teams/commands/team/team-add.js +53 -50
  104. package/dist/m365/util/commands/accesstoken/accesstoken-get.js +10 -7
  105. package/dist/settingsNames.js +1 -0
  106. package/dist/utils/browserUtil.js +23 -0
  107. package/dist/utils/md.js +1 -3
  108. package/dist/utils/spo.js +60 -0
  109. package/docs/docs/cmd/aad/app/app-add.mdx +113 -0
  110. package/docs/docs/cmd/aad/app/app-get.mdx +217 -0
  111. package/docs/docs/cmd/aad/app/app-list.mdx +21 -0
  112. package/docs/docs/cmd/aad/app/app-role-add.mdx +4 -0
  113. package/docs/docs/cmd/aad/app/app-role-list.mdx +63 -0
  114. package/docs/docs/cmd/aad/app/app-role-remove.mdx +4 -0
  115. package/docs/docs/cmd/aad/app/app-set.mdx +4 -0
  116. package/docs/docs/cmd/aad/approleassignment/approleassignment-add.mdx +61 -0
  117. package/docs/docs/cmd/aad/approleassignment/approleassignment-list.mdx +59 -0
  118. package/docs/docs/cmd/aad/approleassignment/approleassignment-remove.mdx +4 -0
  119. package/docs/docs/cmd/aad/group/group-get.mdx +24 -0
  120. package/docs/docs/cmd/aad/group/group-list.mdx +98 -0
  121. package/docs/docs/cmd/aad/groupsetting/groupsetting-add.mdx +114 -0
  122. package/docs/docs/cmd/aad/groupsetting/groupsetting-get.mdx +115 -0
  123. package/docs/docs/cmd/aad/groupsetting/groupsetting-list.mdx +115 -0
  124. package/docs/docs/cmd/aad/groupsetting/groupsetting-remove.mdx +4 -0
  125. package/docs/docs/cmd/aad/groupsetting/groupsetting-set.mdx +4 -0
  126. package/docs/docs/cmd/aad/groupsettingtemplate/groupsettingtemplate-get.mdx +63 -0
  127. package/docs/docs/cmd/aad/groupsettingtemplate/groupsettingtemplate-list.mdx +63 -0
  128. package/docs/docs/cmd/aad/o365group/o365group-add.mdx +122 -0
  129. package/docs/docs/cmd/aad/o365group/o365group-conversation-list.mdx +68 -0
  130. package/docs/docs/cmd/aad/o365group/o365group-conversation-post-list.mdx +77 -0
  131. package/docs/docs/cmd/aad/o365group/o365group-get.mdx +122 -0
  132. package/docs/docs/cmd/aad/o365group/o365group-list.mdx +99 -0
  133. package/docs/docs/cmd/aad/o365group/o365group-recyclebinitem-clear.mdx +4 -0
  134. package/docs/docs/cmd/aad/o365group/o365group-recyclebinitem-list.mdx +96 -0
  135. package/docs/docs/cmd/aad/o365group/o365group-recyclebinitem-remove.mdx +4 -0
  136. package/docs/docs/cmd/aad/o365group/o365group-recyclebinitem-restore.mdx +4 -0
  137. package/docs/docs/cmd/aad/o365group/o365group-remove.mdx +4 -0
  138. package/docs/docs/cmd/aad/o365group/o365group-renew.mdx +4 -0
  139. package/docs/docs/cmd/aad/o365group/o365group-report-activitycounts.mdx +48 -0
  140. package/docs/docs/cmd/aad/o365group/o365group-report-activitydetail.mdx +60 -0
  141. package/docs/docs/cmd/aad/o365group/o365group-report-activityfilecounts.mdx +46 -0
  142. package/docs/docs/cmd/aad/o365group/o365group-report-activitygroupcounts.mdx +46 -0
  143. package/docs/docs/cmd/aad/o365group/o365group-report-activitystorage.mdx +46 -0
  144. package/docs/docs/cmd/aad/o365group/o365group-set.mdx +4 -0
  145. package/docs/docs/cmd/aad/o365group/o365group-teamify.mdx +4 -0
  146. package/docs/docs/cmd/aad/o365group/o365group-user-add.mdx +4 -0
  147. package/docs/docs/cmd/aad/o365group/o365group-user-list.mdx +56 -0
  148. package/docs/docs/cmd/aad/o365group/o365group-user-remove.mdx +4 -0
  149. package/docs/docs/cmd/aad/o365group/o365group-user-set.mdx +8 -4
  150. package/docs/docs/cmd/aad/oauth2grant/oauth2grant-add.mdx +4 -0
  151. package/docs/docs/cmd/aad/oauth2grant/oauth2grant-list.mdx +59 -0
  152. package/docs/docs/cmd/aad/oauth2grant/oauth2grant-remove.mdx +4 -0
  153. package/docs/docs/cmd/aad/oauth2grant/oauth2grant-set.mdx +4 -0
  154. package/docs/docs/cmd/aad/policy/policy-list.mdx +77 -0
  155. package/docs/docs/cmd/aad/siteclassification/siteclassification-disable.mdx +4 -0
  156. package/docs/docs/cmd/aad/siteclassification/siteclassification-enable.mdx +4 -0
  157. package/docs/docs/cmd/aad/siteclassification/siteclassification-get.mdx +57 -0
  158. package/docs/docs/cmd/aad/siteclassification/siteclassification-set.mdx +4 -0
  159. package/docs/docs/cmd/aad/sp/sp-add.mdx +136 -0
  160. package/docs/docs/cmd/aad/sp/sp-get.mdx +166 -0
  161. package/docs/docs/cmd/aad/user/user-get.mdx +75 -0
  162. package/docs/docs/cmd/aad/user/user-guest-add.mdx +23 -0
  163. package/docs/docs/cmd/aad/user/user-hibp.mdx +82 -0
  164. package/docs/docs/cmd/aad/user/user-license-add.mdx +2 -2
  165. package/docs/docs/cmd/aad/user/user-license-remove.mdx +2 -2
  166. package/docs/docs/cmd/aad/user/user-list.mdx +52 -0
  167. package/docs/docs/cmd/aad/user/user-password-validate.mdx +67 -0
  168. package/docs/docs/cmd/aad/user/user-signin-list.mdx +131 -0
  169. package/docs/docs/cmd/flow/flow-list.mdx +11 -3
  170. package/docs/docs/cmd/login.mdx +39 -0
  171. package/docs/docs/cmd/purview/retentionevent/retentionevent-add.mdx +0 -6
  172. package/docs/docs/cmd/purview/retentionevent/retentionevent-get.mdx +0 -6
  173. package/docs/docs/cmd/purview/retentionevent/retentionevent-list.mdx +0 -7
  174. package/docs/docs/cmd/purview/retentionevent/retentionevent-remove.mdx +0 -6
  175. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-add.mdx +0 -6
  176. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-get.mdx +0 -6
  177. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-list.mdx +0 -6
  178. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-remove.mdx +0 -6
  179. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-set.mdx +0 -6
  180. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-add.mdx +0 -6
  181. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-get.mdx +0 -6
  182. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-list.mdx +0 -6
  183. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-remove.mdx +0 -6
  184. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-set.mdx +0 -6
  185. package/docs/docs/cmd/setup.mdx +2 -0
  186. package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-set.mdx +72 -0
  187. package/docs/docs/cmd/spo/commandset/commandset-set.mdx +12 -3
  188. package/docs/docs/cmd/spo/file/file-checkout-undo.mdx +55 -0
  189. package/docs/docs/cmd/spo/list/list-sensitivitylabel-ensure.mdx +64 -0
  190. package/docs/docs/cmd/spo/navigation/navigation-node-add.mdx +7 -4
  191. package/docs/docs/cmd/spo/navigation/navigation-node-set.mdx +9 -0
  192. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-set.mdx +81 -0
  193. package/docs/docs/cmd/spo/tenant/tenant-commandset-add.mdx +183 -0
  194. package/docs/docs/cmd/spo/tenant/tenant-commandset-get.mdx +155 -0
  195. package/docs/docs/cmd/spo/tenant/tenant-commandset-list.mdx +114 -0
  196. package/docs/docs/cmd/spo/tenant/tenant-commandset-set.mdx +1 -1
  197. package/docs/docs/cmd/spo/term/term-group-add.mdx +63 -4
  198. package/docs/docs/cmd/status.mdx +6 -3
  199. package/docs/docs/cmd/util/accesstoken/accesstoken-get.mdx +12 -2
  200. package/npm-shrinkwrap.json +299 -272
  201. package/package.json +17 -17
  202. package/dist/m365/aad/commands/approleassignment/AppRoleAssignment.js +0 -3
  203. package/dist/m365/aad/commands/approleassignment/ServicePrincipal.js +0 -3
  204. package/dist/m365/aad/commands/groupsetting/GroupSetting.js +0 -3
  205. package/dist/m365/aad/commands/groupsettingtemplate/GroupSettingTemplate.js +0 -3
  206. package/dist/m365/aad/commands/siteclassification/DirectorySetting.js +0 -10
  207. package/dist/m365/aad/commands/siteclassification/DirectorySettingTemplatesRsp.js +0 -3
  208. package/dist/m365/aad/commands/siteclassification/DirectorySettingValue.js +0 -3
  209. package/dist/m365/outlook/Message.js +0 -3
  210. package/dist/m365/spo/commands/site/SitePermission.js +0 -3
  211. package/dist/m365/teams/Channel.js +0 -3
  212. package/dist/m365/teams/ConversationMember.js +0 -3
  213. package/dist/m365/teams/Reply.js +0 -3
  214. package/dist/m365/teams/Tab.js +0 -3
  215. package/dist/m365/teams/Team.js +0 -3
  216. package/dist/m365/teams/TeamsApp.js +0 -3
  217. package/dist/m365/teams/TeamsAppInstallation.js +0 -3
  218. package/dist/m365/teams/TeamsTabConfiguration.js +0 -3
  219. 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(open) {
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 this.openBrowser(issueLink);
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(open);
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 this._open(url);
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
- // _open is never set before hitting this line, but this check
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
- if (args.options.sourceFile.toLowerCase().startsWith('https://')) {
123
- return Promise.resolve(args.options.sourceFile);
124
- }
125
- if (this.verbose) {
126
- logger.logToStderr('Uploading local file temporarily for conversion...');
127
- }
128
- const driveUrl = `${this.resource}/v1.0/${isAppOnlyAccessToken ? 'drive/root' : 'me/drive/root'}`;
129
- // we need the original file extension because otherwise Graph won't be able
130
- // to convert the file to PDF
131
- this.sourceFileGraphUrl = `${driveUrl}:/${(0, uuid_1.v4)()}${path.extname(args.options.sourceFile)}`;
132
- if (this.debug) {
133
- logger.logToStderr(`Source is a local file. Uploading to ${this.sourceFileGraphUrl}...`);
134
- }
135
- return this.uploadFile(args.options.sourceFile, this.sourceFileGraphUrl);
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
- const requestOptions = {
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
- return request_1.default.put(requestOptions);
167
- })
168
- .then((res) => res.webUrl);
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
- if (this.debug) {
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(`Returning previously resolved Graph drive item URL ${fileGraphUrl}`);
192
+ logger.logToStderr(`Resolving Graph drive item URL for ${fileWebUrl}`);
195
193
  }
196
- return Promise.resolve(fileGraphUrl);
197
- }
198
- const _url = url.parse(fileWebUrl);
199
- let siteId = '';
200
- let driveRelativeFileUrl = '';
201
- return this
202
- .getGraphSiteInfoFromFullUrl(_url.host, _url.path)
203
- .then(siteInfo => {
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
- return this.getDriveId(logger, siteId, siteRelativeFileUrlChunks[1]);
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
- const siteId = '';
232
- const urlChunks = urlPath.split('/');
233
- return new Promise((resolve, reject) => {
234
- this.getGraphSiteInfo(hostName, urlChunks, 0, siteId, resolve, reject);
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, resolve, reject) {
252
- let currentPath = urlChunks.slice(0, currentChunk + 1).join('/');
253
- if (currentPath.endsWith('/sites') ||
254
- currentPath.endsWith('/teams') ||
255
- currentPath.endsWith('/personal')) {
256
- return this.getGraphSiteInfo(hostName, urlChunks, ++currentChunk, '', resolve, reject);
257
- }
258
- if (!currentPath.startsWith('/')) {
259
- currentPath = '/' + 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
- else {
284
- reject(err);
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
- const requestOptions = {
296
- url: `${this.resource}/v1.0/sites/${graphSiteId}/drives?$select=webUrl,id`,
297
- headers: {
298
- accept: 'application/json;odata.metadata=none'
299
- },
300
- responseType: 'json'
301
- };
302
- return request_1.default
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
- return Promise.reject('Drive not found');
312
+ throw 'Drive not found';
311
313
  }
312
- return Promise.resolve(drive.id);
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
- if (this.verbose) {
324
- logger.logToStderr('Converting file...');
325
- }
326
- const requestOptions = {
327
- url: `${graphFileUrl}:/content?format=pdf`,
328
- headers: {
329
- accept: 'application/json;odata.metadata=none'
330
- },
331
- responseType: 'stream'
332
- };
333
- return request_1.default.get(requestOptions);
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
- if (this.verbose) {
343
- logger.logToStderr(`Writing converted PDF file to ${localFilePath}...`);
344
- }
345
- return new Promise((resolve, reject) => {
346
- // write the downloaded file to disk
347
- const writer = fs.createWriteStream(localFilePath);
348
- fileResponse.data.pipe(writer);
349
- writer.on('error', err => {
350
- reject(err);
351
- });
352
- writer.on('close', () => {
353
- resolve();
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
- // if the target was a local path, we're done.
368
- // Otherwise, upload the file to the specified URL
369
- if (targetIsLocalFile) {
370
- if (this.debug) {
371
- logger.logToStderr('Specified target is a local file. Not uploading.');
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
- return Promise.resolve();
374
- }
375
- if (this.verbose) {
376
- logger.logToStderr(`Uploading converted PDF file to ${targetFileUrl}...`);
377
- }
378
- return this
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
- // if the source was a remote file, we're done,
393
- // otherwise delete the temporary uploaded file
394
- if (!sourceIsLocalFile) {
395
- if (this.debug) {
396
- logger.logToStderr('Source file was URL. Not removing.');
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
- return Promise.resolve();
399
- }
400
- if (this.verbose) {
401
- logger.logToStderr(`Deleting the temporary file at ${sourceFileUrl}...`);
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: {