@pnp/cli-microsoft365 6.9.0-beta.1cd2525 → 6.9.0-beta.3158148

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 (180) hide show
  1. package/.devcontainer/Dockerfile +12 -19
  2. package/.devcontainer/devcontainer.json +24 -17
  3. package/Dockerfile +3 -1
  4. package/dist/Auth.js +2 -8
  5. package/dist/AuthServer.js +2 -4
  6. package/dist/cli/Cli.js +2 -2
  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/aad/commands/sp/sp-list.js +78 -0
  32. package/dist/m365/aad/commands.js +1 -0
  33. package/dist/m365/app/commands/app-open.js +4 -14
  34. package/dist/m365/base/AzmgmtItemsListCommand.js +31 -33
  35. package/dist/m365/cli/commands/cli-issue.js +4 -10
  36. package/dist/m365/cli/commands/cli-reconsent.js +2 -8
  37. package/dist/m365/cli/commands/config/config-set.js +0 -1
  38. package/dist/m365/commands/docs.js +2 -8
  39. package/dist/m365/commands/login.js +20 -0
  40. package/dist/m365/flow/commands/flow-list.js +30 -12
  41. package/dist/m365/flow/commands/flow-remove.js +2 -3
  42. package/dist/m365/flow/commands/run/run-resubmit.js +11 -10
  43. package/dist/m365/onedrive/commands/onedrive-list.js +21 -32
  44. package/dist/m365/outlook/commands/message/message-list.js +18 -23
  45. package/dist/m365/outlook/commands/message/message-move.js +15 -20
  46. package/dist/m365/pa/commands/app/app-export.js +3 -4
  47. package/dist/m365/pa/commands/app/app-get.js +11 -9
  48. package/dist/m365/pa/commands/app/app-remove.js +1 -1
  49. package/dist/m365/pa/commands/pcf/pcf-init.js +1 -2
  50. package/dist/m365/pa/commands/solution/solution-init.js +1 -2
  51. package/dist/m365/pa/commands/solution/solution-reference-add.js +1 -2
  52. package/dist/m365/pp/commands/managementapp/managementapp-add.js +19 -20
  53. package/dist/m365/purview/commands/retentionevent/retentionevent-add.js +3 -3
  54. package/dist/m365/purview/commands/retentionevent/retentionevent-get.js +1 -1
  55. package/dist/m365/purview/commands/retentionevent/retentionevent-list.js +1 -1
  56. package/dist/m365/purview/commands/retentionevent/retentionevent-remove.js +1 -1
  57. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-add.js +1 -1
  58. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-get.js +1 -1
  59. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-list.js +1 -1
  60. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-remove.js +1 -1
  61. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-set.js +1 -1
  62. package/dist/m365/spfx/commands/project/project-doctor/doctor-1.17.3.js +25 -0
  63. package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
  64. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002027_DEVDEP_fluentui_react.js +14 -0
  65. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.17.3.js +59 -0
  66. package/dist/m365/spfx/commands/project/project-upgrade.js +2 -1
  67. package/dist/m365/spfx/commands/spfx-doctor.js +15 -0
  68. package/dist/m365/spo/commands/app/app-teamspackage-download.js +17 -24
  69. package/dist/m365/spo/commands/apppage/apppage-set.js +1 -1
  70. package/dist/m365/spo/commands/contenttype/contenttype-field-set.js +65 -94
  71. package/dist/m365/spo/commands/customaction/customaction-clear.js +4 -12
  72. package/dist/m365/spo/commands/customaction/customaction-remove.js +12 -23
  73. package/dist/m365/spo/commands/customaction/customaction-set.js +21 -29
  74. package/dist/m365/spo/commands/file/file-add.js +133 -133
  75. package/dist/m365/spo/commands/file/file-checkout-undo.js +119 -0
  76. package/dist/m365/spo/commands/file/file-rename.js +11 -9
  77. package/dist/m365/spo/commands/file/file-retentionlabel-ensure.js +2 -2
  78. package/dist/m365/spo/commands/file/file-roleassignment-add.js +41 -61
  79. package/dist/m365/spo/commands/file/file-roleassignment-remove.js +3 -0
  80. package/dist/m365/spo/commands/file/file-roleinheritance-break.js +3 -0
  81. package/dist/m365/spo/commands/file/file-roleinheritance-reset.js +3 -0
  82. package/dist/m365/spo/commands/file/file-sharinginfo-get.js +23 -21
  83. package/dist/m365/spo/commands/file/file-version-clear.js +1 -1
  84. package/dist/m365/spo/commands/file/file-version-remove.js +1 -1
  85. package/dist/m365/spo/commands/file/file-version-restore.js +1 -1
  86. package/dist/m365/spo/commands/folder/folder-roleassignment-add.js +3 -3
  87. package/dist/m365/spo/commands/folder/folder-roleassignment-remove.js +1 -1
  88. package/dist/m365/spo/commands/group/group-member-add.js +17 -16
  89. package/dist/m365/spo/commands/group/group-set.js +20 -20
  90. package/dist/m365/spo/commands/homesite/homesite-remove.js +1 -1
  91. package/dist/m365/spo/commands/hubsite/hubsite-get.js +33 -31
  92. package/dist/m365/spo/commands/hubsite/hubsite-list.js +18 -29
  93. package/dist/m365/spo/commands/hubsite/hubsite-unregister.js +3 -0
  94. package/dist/m365/spo/commands/list/list-add.js +1 -1
  95. package/dist/m365/spo/commands/list/list-contenttype-default-set.js +1 -1
  96. package/dist/m365/spo/commands/list/list-roleassignment-add.js +45 -52
  97. package/dist/m365/spo/commands/list/list-roleassignment-remove.js +33 -38
  98. package/dist/m365/spo/commands/list/list-sensitivitylabel-ensure.js +13 -3
  99. package/dist/m365/spo/commands/list/list-view-field-add.js +12 -10
  100. package/dist/m365/spo/commands/list/list-view-field-remove.js +12 -10
  101. package/dist/m365/spo/commands/list/list-view-field-set.js +12 -10
  102. package/dist/m365/spo/commands/list/list-view-remove.js +3 -0
  103. package/dist/m365/spo/commands/listitem/listitem-roleassignment-add.js +41 -61
  104. package/dist/m365/spo/commands/listitem/listitem-roleassignment-remove.js +71 -74
  105. package/dist/m365/spo/commands/listitem/listitem-roleinheritance-break.js +36 -34
  106. package/dist/m365/spo/commands/listitem/listitem-roleinheritance-reset.js +32 -30
  107. package/dist/m365/spo/commands/navigation/navigation-node-remove.js +24 -22
  108. package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-remove.js +29 -27
  109. package/dist/m365/spo/commands/orgnewssite/orgnewssite-remove.js +26 -24
  110. package/dist/m365/spo/commands/page/page-clientsidewebpart-add.js +34 -40
  111. package/dist/m365/spo/commands/sitedesign/sitedesign-task-remove.js +23 -21
  112. package/dist/m365/spo/commands/sitescript/sitescript-remove.js +24 -22
  113. package/dist/m365/spo/commands/spo-search.js +7 -15
  114. package/dist/m365/spo/commands/storageentity/storageentity-remove.js +29 -27
  115. package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-set.js +156 -0
  116. package/dist/m365/spo/commands.js +2 -0
  117. package/dist/m365/teams/commands/app/app-install.js +23 -21
  118. package/dist/m365/teams/commands/app/app-remove.js +3 -0
  119. package/dist/m365/teams/commands/app/app-uninstall.js +3 -0
  120. package/dist/m365/teams/commands/app/app-update.js +15 -16
  121. package/dist/m365/teams/commands/channel/channel-add.js +40 -39
  122. package/dist/m365/teams/commands/channel/channel-get.js +23 -25
  123. package/dist/m365/teams/commands/channel/channel-list.js +6 -7
  124. package/dist/m365/teams/commands/channel/channel-member-add.js +61 -60
  125. package/dist/m365/teams/commands/channel/channel-member-list.js +20 -22
  126. package/dist/m365/teams/commands/channel/channel-member-remove.js +43 -48
  127. package/dist/m365/teams/commands/channel/channel-member-set.js +36 -39
  128. package/dist/m365/teams/commands/channel/channel-remove.js +4 -1
  129. package/dist/m365/teams/commands/funsettings/funsettings-list.js +3 -0
  130. package/dist/m365/teams/commands/funsettings/funsettings-set.js +3 -0
  131. package/dist/m365/teams/commands/tab/tab-get.js +34 -37
  132. package/dist/m365/teams/commands/team/team-archive.js +6 -7
  133. package/dist/m365/teams/commands/team/team-get.js +6 -7
  134. package/dist/m365/teams/commands/team/team-list.js +9 -11
  135. package/dist/m365/teams/commands/team/team-remove.js +6 -7
  136. package/dist/m365/teams/commands/team/team-unarchive.js +6 -7
  137. package/dist/m365/teams/commands/user/user-app-list.js +13 -11
  138. package/dist/m365/teams/commands/user/user-list.js +7 -4
  139. package/dist/m365/tenant/commands/security/security-alerts-list.js +25 -26
  140. package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-health-list.js +13 -14
  141. package/dist/m365/todo/commands/list/list-remove.js +39 -36
  142. package/dist/m365/todo/commands/list/list-set.js +16 -14
  143. package/dist/m365/todo/commands/task/task-add.js +14 -14
  144. package/dist/m365/util/commands/accesstoken/accesstoken-get.js +10 -7
  145. package/dist/settingsNames.js +0 -1
  146. package/dist/utils/browserUtil.js +23 -0
  147. package/docs/docs/cmd/aad/sp/sp-list.mdx +162 -0
  148. package/docs/docs/cmd/flow/flow-list.mdx +15 -0
  149. package/docs/docs/cmd/login.mdx +39 -0
  150. package/docs/docs/cmd/setup.mdx +2 -0
  151. package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
  152. package/docs/docs/cmd/spo/file/file-checkout-undo.mdx +55 -0
  153. package/docs/docs/cmd/spo/file/file-retentionlabel-ensure.mdx +1 -1
  154. package/docs/docs/cmd/spo/folder/folder-retentionlabel-ensure.mdx +1 -1
  155. package/docs/docs/cmd/spo/list/list-sensitivitylabel-ensure.mdx +14 -5
  156. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-set.mdx +81 -0
  157. package/docs/docs/cmd/spo/tenant/tenant-settings-set.mdx +6 -0
  158. package/docs/docs/cmd/status.mdx +6 -3
  159. package/docs/docs/cmd/util/accesstoken/accesstoken-get.mdx +12 -2
  160. package/npm-shrinkwrap.json +299 -272
  161. package/package.json +17 -17
  162. package/dist/m365/aad/commands/approleassignment/AppRoleAssignment.js +0 -3
  163. package/dist/m365/aad/commands/approleassignment/ServicePrincipal.js +0 -3
  164. package/dist/m365/aad/commands/groupsetting/GroupSetting.js +0 -3
  165. package/dist/m365/aad/commands/groupsettingtemplate/GroupSettingTemplate.js +0 -3
  166. package/dist/m365/aad/commands/siteclassification/DirectorySetting.js +0 -10
  167. package/dist/m365/aad/commands/siteclassification/DirectorySettingTemplatesRsp.js +0 -3
  168. package/dist/m365/aad/commands/siteclassification/DirectorySettingValue.js +0 -3
  169. package/dist/m365/outlook/Message.js +0 -3
  170. package/dist/m365/spo/commands/site/SitePermission.js +0 -3
  171. package/dist/m365/teams/Channel.js +0 -3
  172. package/dist/m365/teams/ConversationMember.js +0 -3
  173. package/dist/m365/teams/Message.js +0 -3
  174. package/dist/m365/teams/Reply.js +0 -3
  175. package/dist/m365/teams/Tab.js +0 -3
  176. package/dist/m365/teams/Team.js +0 -3
  177. package/dist/m365/teams/TeamsApp.js +0 -3
  178. package/dist/m365/teams/TeamsAppInstallation.js +0 -3
  179. package/dist/m365/teams/TeamsTabConfiguration.js +0 -3
  180. package/dist/m365/teams/commands/Meeting.js +0 -3
@@ -0,0 +1,78 @@
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 _AadSpListCommand_instances, _AadSpListCommand_initTelemetry, _AadSpListCommand_initOptions;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const odata_1 = require("../../../../utils/odata");
19
+ const GraphCommand_1 = require("../../../base/GraphCommand");
20
+ const commands_1 = require("../../commands");
21
+ class AadSpListCommand extends GraphCommand_1.default {
22
+ get name() {
23
+ return commands_1.default.SP_LIST;
24
+ }
25
+ defaultProperties() {
26
+ return ['appId', 'displayName', 'tag'];
27
+ }
28
+ get description() {
29
+ return 'Lists the service principals in the directory';
30
+ }
31
+ constructor() {
32
+ super();
33
+ _AadSpListCommand_instances.add(this);
34
+ __classPrivateFieldGet(this, _AadSpListCommand_instances, "m", _AadSpListCommand_initTelemetry).call(this);
35
+ __classPrivateFieldGet(this, _AadSpListCommand_instances, "m", _AadSpListCommand_initOptions).call(this);
36
+ }
37
+ commandAction(logger, args) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ if (this.verbose) {
40
+ logger.logToStderr(`Retrieving service principal information...`);
41
+ }
42
+ try {
43
+ let requestUrl = `${this.resource}/v1.0/servicePrincipals`;
44
+ const filter = [];
45
+ if (args.options.tag) {
46
+ filter.push(`(tags/any(t:t eq '${args.options.tag}'))`);
47
+ }
48
+ if (args.options.displayName) {
49
+ filter.push(`(displayName eq '${args.options.displayName}')`);
50
+ }
51
+ if (filter.length > 0) {
52
+ requestUrl += `?$filter=${filter.join(' and ')}`;
53
+ }
54
+ const res = yield odata_1.odata.getAllItems(requestUrl);
55
+ logger.log(res);
56
+ }
57
+ catch (err) {
58
+ this.handleRejectedODataJsonPromise(err);
59
+ }
60
+ });
61
+ }
62
+ }
63
+ _AadSpListCommand_instances = new WeakSet(), _AadSpListCommand_initTelemetry = function _AadSpListCommand_initTelemetry() {
64
+ this.telemetry.push((args) => {
65
+ Object.assign(this.telemetryProperties, {
66
+ displayName: typeof args.options.displayName !== 'undefined',
67
+ tag: typeof args.options.tag !== 'undefined'
68
+ });
69
+ });
70
+ }, _AadSpListCommand_initOptions = function _AadSpListCommand_initOptions() {
71
+ this.options.unshift({
72
+ option: '--displayName [displayName]'
73
+ }, {
74
+ option: '--tag [tag]'
75
+ });
76
+ };
77
+ module.exports = new AadSpListCommand();
78
+ //# sourceMappingURL=sp-list.js.map
@@ -56,6 +56,7 @@ exports.default = {
56
56
  SITECLASSIFICATION_SET: `${prefix} siteclassification set`,
57
57
  SP_ADD: `${prefix} sp add`,
58
58
  SP_GET: `${prefix} sp get`,
59
+ SP_LIST: `${prefix} sp list`,
59
60
  USER_ADD: `${prefix} user add`,
60
61
  USER_GET: `${prefix} user get`,
61
62
  USER_GUEST_ADD: `${prefix} user guest add`,
@@ -17,6 +17,7 @@ var _AppOpenCommand_instances, _AppOpenCommand_initTelemetry, _AppOpenCommand_in
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const Cli_1 = require("../../../cli/Cli");
19
19
  const settingsNames_1 = require("../../../settingsNames");
20
+ const browserUtil_1 = require("../../../utils/browserUtil");
20
21
  const AppCommand_1 = require("../../base/AppCommand");
21
22
  const commands_1 = require("../commands");
22
23
  class AppOpenCommand extends AppCommand_1.default {
@@ -43,26 +44,15 @@ class AppOpenCommand extends AppCommand_1.default {
43
44
  });
44
45
  }
45
46
  logOrOpenUrl(args, logger) {
46
- return new Promise((resolve, reject) => {
47
+ return __awaiter(this, void 0, void 0, function* () {
47
48
  const previewPrefix = args.options.preview === true ? "preview." : "";
48
49
  const url = `https://${previewPrefix}portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/Overview/appId/${this.appId}/isMSAApp/`;
49
50
  if (Cli_1.Cli.getInstance().getSettingWithDefaultValue(settingsNames_1.settingsNames.autoOpenLinksInBrowser, false) === false) {
50
51
  logger.log(`Use a web browser to open the page ${url}`);
51
- return resolve();
52
+ return;
52
53
  }
53
54
  logger.log(`Opening the following page in your browser: ${url}`);
54
- // 'open' is required here so we can lazy load the dependency.
55
- // _open is never set before hitting this line, but this check
56
- // is implemented so that we can stub it when testing.
57
- /* c8 ignore next 3 */
58
- if (!this._open) {
59
- this._open = require('open');
60
- }
61
- this._open(url).then(() => {
62
- resolve();
63
- }, (error) => {
64
- reject(error);
65
- });
55
+ yield browserUtil_1.browserUtil.open(url);
66
56
  });
67
57
  }
68
58
  }
@@ -1,4 +1,13 @@
1
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
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.AzmgmtItemsListCommand = void 0;
4
13
  const url = require("url");
@@ -10,7 +19,7 @@ class AzmgmtItemsListCommand extends AzmgmtCommand_1.default {
10
19
  this.items = [];
11
20
  }
12
21
  getAllItems(_url, logger, firstRun) {
13
- return new Promise((resolve, reject) => {
22
+ return __awaiter(this, void 0, void 0, function* () {
14
23
  const requestOptions = {
15
24
  url: _url,
16
25
  headers: {
@@ -18,39 +27,28 @@ class AzmgmtItemsListCommand extends AzmgmtCommand_1.default {
18
27
  },
19
28
  responseType: 'json'
20
29
  };
21
- request_1.default
22
- .get(requestOptions)
23
- .then((res) => {
24
- if (firstRun) {
25
- this.items = [];
30
+ const res = yield request_1.default.get(requestOptions);
31
+ if (firstRun) {
32
+ this.items = [];
33
+ }
34
+ this.items = this.items.concat(res.value);
35
+ if (res.nextLink) {
36
+ // when retrieving Flows as admin, the API returns nextLink
37
+ // pointing to https://emea.api.flow.microsoft.com:11777
38
+ // which leads to authentication exceptions because it's not an AAD
39
+ // resource for which we can retrieve an access token, so we need to
40
+ // rewrite it back to the API management URL
41
+ const nextLinkUrl = new url.URL(res.nextLink);
42
+ if (nextLinkUrl.host !== 'management.azure.com') {
43
+ nextLinkUrl.host = 'management.azure.com';
44
+ nextLinkUrl.port = '';
26
45
  }
27
- this.items = this.items.concat(res.value);
28
- if (res.nextLink) {
29
- // when retrieving Flows as admin, the API returns nextLink
30
- // pointing to https://emea.api.flow.microsoft.com:11777
31
- // which leads to authentication exceptions because it's not an AAD
32
- // resource for which we can retrieve an access token, so we need to
33
- // rewrite it back to the API management URL
34
- const nextLinkUrl = new url.URL(res.nextLink);
35
- if (nextLinkUrl.host !== 'management.azure.com') {
36
- nextLinkUrl.host = 'management.azure.com';
37
- nextLinkUrl.port = '';
38
- }
39
- const nextLink = nextLinkUrl.href;
40
- this
41
- .getAllItems(nextLink, logger, false)
42
- .then(() => {
43
- resolve();
44
- }, (err) => {
45
- reject(err);
46
- });
47
- }
48
- else {
49
- resolve();
50
- }
51
- }, (err) => {
52
- reject(err);
53
- });
46
+ const nextLink = nextLinkUrl.href;
47
+ yield this.getAllItems(nextLink, logger, false);
48
+ }
49
+ else {
50
+ return;
51
+ }
54
52
  });
55
53
  }
56
54
  }
@@ -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,7 +43,6 @@ 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:
47
46
  case settingsNames_1.settingsNames.printErrorsAsPlainText:
48
47
  case settingsNames_1.settingsNames.prompt:
49
48
  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();
@@ -38,21 +38,28 @@ class FlowListCommand extends AzmgmtItemsListCommand_1.AzmgmtItemsListCommand {
38
38
  }
39
39
  commandAction(logger, args) {
40
40
  return __awaiter(this, void 0, void 0, function* () {
41
- const url = `${this.resource}providers/Microsoft.ProcessSimple${args.options.asAdmin ? '/scopes/admin' : ''}/environments/${formatting_1.formatting.encodeQueryParameter(args.options.environmentName)}/flows?api-version=2016-11-01`;
42
41
  try {
43
- if (args.options.asAdmin || !args.options.sharingStatus || args.options.sharingStatus === 'ownedByMe') {
42
+ const { environmentName, asAdmin, sharingStatus, includeSolutions } = args.options;
43
+ if (sharingStatus === 'personal') {
44
+ const url = this.getApiUrl(environmentName, asAdmin, includeSolutions, 'personal');
44
45
  yield this.getAllItems(url, logger, true);
45
46
  }
46
- else if (args.options.sharingStatus === 'personal') {
47
- yield this.getFilteredItems(url, logger, 'personal', true);
47
+ else if (sharingStatus === 'sharedWithMe') {
48
+ const url = this.getApiUrl(environmentName, asAdmin, includeSolutions, 'team');
49
+ yield this.getAllItems(url, logger, true);
48
50
  }
49
- else if (args.options.sharingStatus === 'sharedWithMe') {
50
- yield this.getFilteredItems(url, logger, 'team', true);
51
+ else if (sharingStatus === 'all') {
52
+ let url = this.getApiUrl(environmentName, asAdmin, includeSolutions, 'personal');
53
+ yield this.getAllItems(url, logger, true);
54
+ url = this.getApiUrl(environmentName, asAdmin, includeSolutions, 'team');
55
+ yield this.getAllItems(url, logger, false);
51
56
  }
52
57
  else {
53
- yield this.getFilteredItems(url, logger, 'personal', true);
54
- yield this.getFilteredItems(url, logger, 'team', false);
58
+ const url = this.getApiUrl(environmentName, asAdmin, includeSolutions);
59
+ yield this.getAllItems(url, logger, true);
55
60
  }
61
+ // Remove duplicates
62
+ this.items = this.items.filter((flow, index, self) => index === self.findIndex(f => f.id === flow.id));
56
63
  if (this.items.length > 0) {
57
64
  this.items.forEach(i => {
58
65
  i.displayName = i.properties.displayName;
@@ -70,16 +77,25 @@ class FlowListCommand extends AzmgmtItemsListCommand_1.AzmgmtItemsListCommand {
70
77
  }
71
78
  });
72
79
  }
73
- getFilteredItems(url, logger, filter, firstRun) {
74
- return __awaiter(this, void 0, void 0, function* () {
75
- yield this.getAllItems(`${url}&$filter=search('${filter}')`, logger, firstRun);
76
- });
80
+ getApiUrl(environmentName, asAdmin, includeSolutionFlows, filter) {
81
+ let url = `${this.resource}providers/Microsoft.ProcessSimple${asAdmin ? '/scopes/admin' : ''}/environments/${formatting_1.formatting.encodeQueryParameter(environmentName)}/flows?api-version=2016-11-01`;
82
+ if (filter === 'personal') {
83
+ url += `&$filter=search('personal')`;
84
+ }
85
+ else if (filter === 'team') {
86
+ url += `&$filter=search('team')`;
87
+ }
88
+ if (includeSolutionFlows) {
89
+ url += '&include=includeSolutionCloudFlows';
90
+ }
91
+ return url;
77
92
  }
78
93
  }
79
94
  _FlowListCommand_instances = new WeakSet(), _FlowListCommand_initTelemetry = function _FlowListCommand_initTelemetry() {
80
95
  this.telemetry.push((args) => {
81
96
  Object.assign(this.telemetryProperties, {
82
97
  sharingStatus: typeof args.options.sharingStatus !== 'undefined',
98
+ includeSolutions: !!args.options.includeSolutions,
83
99
  asAdmin: !!args.options.asAdmin
84
100
  });
85
101
  });
@@ -89,6 +105,8 @@ _FlowListCommand_instances = new WeakSet(), _FlowListCommand_initTelemetry = fun
89
105
  }, {
90
106
  option: '--sharingStatus [sharingStatus]',
91
107
  autocomplete: this.allowedSharingStatuses
108
+ }, {
109
+ option: '--includeSolutions'
92
110
  }, {
93
111
  option: '--asAdmin'
94
112
  });
@@ -15,7 +15,6 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
15
15
  };
16
16
  var _FlowRemoveCommand_instances, _FlowRemoveCommand_initTelemetry, _FlowRemoveCommand_initOptions, _FlowRemoveCommand_initValidators;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- const chalk = require("chalk");
19
18
  const Cli_1 = require("../../../cli/Cli");
20
19
  const request_1 = require("../../../request");
21
20
  const formatting_1 = require("../../../utils/formatting");
@@ -44,7 +43,7 @@ class FlowRemoveCommand extends AzmgmtCommand_1.default {
44
43
  const removeFlow = () => __awaiter(this, void 0, void 0, function* () {
45
44
  const requestOptions = {
46
45
  url: `${this.resource}providers/Microsoft.ProcessSimple/${args.options.asAdmin ? 'scopes/admin/' : ''}environments/${formatting_1.formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting_1.formatting.encodeQueryParameter(args.options.name)}?api-version=2016-11-01`,
47
- resolveWithFullResponse: true,
46
+ fullResponse: true,
48
47
  headers: {
49
48
  accept: 'application/json'
50
49
  },
@@ -55,7 +54,7 @@ class FlowRemoveCommand extends AzmgmtCommand_1.default {
55
54
  // handle 204 and throw error message to cmd when invalid flow id is passed
56
55
  // https://github.com/pnp/cli-microsoft365/issues/1063#issuecomment-537218957
57
56
  if (rawRes.statusCode === 204) {
58
- logger.log(chalk.red(`Error: Resource '${args.options.name}' does not exist in environment '${args.options.environmentName}'`));
57
+ throw `Error: Resource '${args.options.name}' does not exist in environment '${args.options.environmentName}'`;
59
58
  }
60
59
  }
61
60
  catch (err) {
@@ -77,16 +77,17 @@ class FlowRunResubmitCommand extends AzmgmtCommand_1.default {
77
77
  });
78
78
  }
79
79
  getTriggerName(environment, flow) {
80
- const requestOptions = {
81
- url: `${this.resource}providers/Microsoft.ProcessSimple/environments/${formatting_1.formatting.encodeQueryParameter(environment)}/flows/${formatting_1.formatting.encodeQueryParameter(flow)}/triggers?api-version=2016-11-01`,
82
- headers: {
83
- accept: 'application/json'
84
- },
85
- responseType: 'json'
86
- };
87
- return request_1.default
88
- .get(requestOptions)
89
- .then((res) => Promise.resolve(res.value[0].name));
80
+ return __awaiter(this, void 0, void 0, function* () {
81
+ const requestOptions = {
82
+ url: `${this.resource}providers/Microsoft.ProcessSimple/environments/${formatting_1.formatting.encodeQueryParameter(environment)}/flows/${formatting_1.formatting.encodeQueryParameter(flow)}/triggers?api-version=2016-11-01`,
83
+ headers: {
84
+ accept: 'application/json'
85
+ },
86
+ responseType: 'json'
87
+ };
88
+ const res = yield request_1.default.get(requestOptions);
89
+ return res.value[0].name;
90
+ });
90
91
  }
91
92
  }
92
93
  _FlowRunResubmitCommand_instances = new WeakSet(), _FlowRunResubmitCommand_initTelemetry = function _FlowRunResubmitCommand_initTelemetry() {
@@ -41,39 +41,28 @@ class OneDriveListCommand extends SpoCommand_1.default {
41
41
  });
42
42
  }
43
43
  getAllSites(spoAdminUrl, startIndex, formDigest, logger) {
44
- return new Promise((resolve, reject) => {
45
- spo_1.spo
46
- .ensureFormDigest(spoAdminUrl, logger, formDigest, this.debug)
47
- .then((res) => {
48
- const requestOptions = {
49
- url: `${spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
50
- headers: {
51
- 'X-RequestDigest': res.FormDigestValue
52
- },
53
- data: `<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><ObjectPath Id="2" ObjectPathId="1" /><ObjectPath Id="4" ObjectPathId="3" /><Query Id="5" ObjectPathId="3"><Query SelectAllProperties="true"><Properties /></Query><ChildItemQuery SelectAllProperties="true"><Properties /></ChildItemQuery></Query></Actions><ObjectPaths><Constructor Id="1" TypeId="{268004ae-ef6b-4e9b-8425-127220d84719}" /><Method Id="3" ParentId="1" Name="GetSitePropertiesFromSharePointByFilters"><Parameters><Parameter TypeId="{b92aeee2-c92c-4b67-abcc-024e471bc140}"><Property Name="IncludeDetail" Type="Boolean">false</Property><Property Name="IncludePersonalSite" Type="Enum">1</Property><Property Name="StartIndex" Type="String">${startIndex}</Property><Property Name="Template" Type="String">SPSPERS</Property></Parameter></Parameters></Method></ObjectPaths></Request>`
54
- };
55
- return request_1.default.post(requestOptions);
56
- })
57
- .then((res) => {
58
- const json = JSON.parse(res);
59
- const response = json[0];
60
- if (response.ErrorInfo) {
61
- reject(response.ErrorInfo.ErrorMessage);
62
- return;
63
- }
64
- else {
65
- const sites = json[json.length - 1];
66
- this.allSites.push(...sites._Child_Items_);
67
- if (sites.NextStartIndexFromSharePoint) {
68
- this
69
- .getAllSites(spoAdminUrl, sites.NextStartIndexFromSharePoint, formDigest, logger)
70
- .then(_ => resolve(), err => reject(err));
71
- }
72
- else {
73
- resolve();
74
- }
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ const formDigestInfo = yield spo_1.spo.ensureFormDigest(spoAdminUrl, logger, formDigest, this.debug);
46
+ const requestOptions = {
47
+ url: `${spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
48
+ headers: {
49
+ 'X-RequestDigest': formDigestInfo.FormDigestValue
50
+ },
51
+ data: `<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><ObjectPath Id="2" ObjectPathId="1" /><ObjectPath Id="4" ObjectPathId="3" /><Query Id="5" ObjectPathId="3"><Query SelectAllProperties="true"><Properties /></Query><ChildItemQuery SelectAllProperties="true"><Properties /></ChildItemQuery></Query></Actions><ObjectPaths><Constructor Id="1" TypeId="{268004ae-ef6b-4e9b-8425-127220d84719}" /><Method Id="3" ParentId="1" Name="GetSitePropertiesFromSharePointByFilters"><Parameters><Parameter TypeId="{b92aeee2-c92c-4b67-abcc-024e471bc140}"><Property Name="IncludeDetail" Type="Boolean">false</Property><Property Name="IncludePersonalSite" Type="Enum">1</Property><Property Name="StartIndex" Type="String">${startIndex}</Property><Property Name="Template" Type="String">SPSPERS</Property></Parameter></Parameters></Method></ObjectPaths></Request>`
52
+ };
53
+ const res = yield request_1.default.post(requestOptions);
54
+ const json = JSON.parse(res);
55
+ const response = json[0];
56
+ if (response.ErrorInfo) {
57
+ throw (response.ErrorInfo.ErrorMessage);
58
+ }
59
+ else {
60
+ const sites = json[json.length - 1];
61
+ this.allSites.push(...sites._Child_Items_);
62
+ if (sites.NextStartIndexFromSharePoint) {
63
+ yield this.getAllSites(spoAdminUrl, sites.NextStartIndexFromSharePoint, formDigest, logger);
75
64
  }
76
- }, err => reject(err));
65
+ }
77
66
  });
78
67
  }
79
68
  }
@@ -53,16 +53,16 @@ class OutlookMessageListCommand extends GraphCommand_1.default {
53
53
  });
54
54
  }
55
55
  getFolderId(args) {
56
- if (!args.options.folderId && !args.options.folderName) {
57
- return Promise.resolve('');
58
- }
59
- if (args.options.folderId) {
60
- return Promise.resolve(args.options.folderId);
61
- }
62
- if (Outlook_1.Outlook.wellKnownFolderNames.indexOf(args.options.folderName) > -1) {
63
- return Promise.resolve(args.options.folderName);
64
- }
65
- return new Promise((resolve, reject) => {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ if (!args.options.folderId && !args.options.folderName) {
58
+ return '';
59
+ }
60
+ if (args.options.folderId) {
61
+ return args.options.folderId;
62
+ }
63
+ if (Outlook_1.Outlook.wellKnownFolderNames.indexOf(args.options.folderName) > -1) {
64
+ return args.options.folderName;
65
+ }
66
66
  const requestOptions = {
67
67
  url: `${this.resource}/v1.0/me/mailFolders?$filter=displayName eq '${formatting_1.formatting.encodeQueryParameter(args.options.folderName)}'&$select=id`,
68
68
  headers: {
@@ -70,19 +70,14 @@ class OutlookMessageListCommand extends GraphCommand_1.default {
70
70
  },
71
71
  responseType: 'json'
72
72
  };
73
- request_1.default
74
- .get(requestOptions)
75
- .then((response) => {
76
- if (response.value.length === 1) {
77
- return resolve(response.value[0].id);
78
- }
79
- if (response.value.length === 0) {
80
- return reject(`Folder with name '${args.options.folderName}' not found`);
81
- }
82
- if (response.value.length > 1) {
83
- return reject(`Multiple folders with name '${args.options.folderName}' found. Please disambiguate:${os.EOL}${response.value.map(f => `- ${f.id}`).join(os.EOL)}`);
84
- }
85
- }, err => reject(err));
73
+ const response = yield request_1.default.get(requestOptions);
74
+ if (response.value.length === 0) {
75
+ throw `Folder with name '${args.options.folderName}' not found`;
76
+ }
77
+ if (response.value.length > 1) {
78
+ throw `Multiple folders with name '${args.options.folderName}' found. Please disambiguate:${os.EOL}${response.value.map(f => `- ${f.id}`).join(os.EOL)}`;
79
+ }
80
+ return response.value[0].id;
86
81
  });
87
82
  }
88
83
  }