@pnp/cli-microsoft365 10.5.0 → 10.6.0-beta.195c8d5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.cjs +3 -1
- package/allCommands.json +1 -1
- package/allCommandsFull.json +1 -1
- package/dist/Auth.js +2 -1
- package/dist/Command.js +14 -26
- package/dist/auth/MsalNetworkClient.js +32 -0
- package/dist/config.js +2 -0
- package/dist/m365/adaptivecard/commands/adaptivecard-send.js +2 -1
- package/dist/m365/app/commands/app-get.js +3 -13
- package/dist/m365/app/commands/permission/permission-list.js +4 -14
- package/dist/m365/base/SpoCommand.js +2 -1
- package/dist/m365/commands/request.js +3 -12
- package/dist/m365/commands/setup.js +2 -0
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-add.js +10 -5
- package/dist/m365/entra/commands/app/app-add.js +5 -0
- package/dist/m365/entra/commands/app/app-get.js +27 -21
- package/dist/m365/entra/commands/app/app-permission-list.js +28 -22
- package/dist/m365/entra/commands/app/app-remove.js +22 -19
- package/dist/m365/entra/commands/app/app-role-add.js +22 -19
- package/dist/m365/entra/commands/app/app-role-list.js +22 -19
- package/dist/m365/entra/commands/app/app-role-remove.js +39 -36
- package/dist/m365/entra/commands/app/app-set.js +45 -19
- package/dist/m365/entra/commands/group/group-add.js +1 -0
- package/dist/m365/entra/commands/group/group-set.js +12 -6
- package/dist/m365/entra/commands/policy/policy-list.js +46 -3
- package/dist/m365/entra/commands/user/user-add.js +1 -0
- package/dist/m365/entra/commands/user/user-list.js +2 -1
- package/dist/m365/external/commands/item/item-add.js +2 -1
- package/dist/m365/flow/commands/flow-list.js +1 -1
- package/dist/m365/graph/commands/openextension/openextension-add.js +73 -0
- package/dist/m365/graph/commands/openextension/openextension-get.js +57 -0
- package/dist/m365/graph/commands/openextension/openextension-list.js +62 -0
- package/dist/m365/graph/commands/openextension/openextension-remove.js +68 -0
- package/dist/m365/graph/commands.js +4 -0
- package/dist/m365/pp/commands/card/card-clone.js +12 -16
- package/dist/m365/pp/commands/card/card-get.js +13 -19
- package/dist/m365/pp/commands/card/card-remove.js +13 -16
- package/dist/m365/pp/commands/solution/solution-get.js +5 -11
- package/dist/m365/pp/commands/solution/solution-publish.js +6 -16
- package/dist/m365/pp/commands/solution/solution-remove.js +4 -13
- package/dist/m365/spfx/commands/project/project-doctor/doctor-1.21.0.js +25 -0
- package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002029_DEVDEP_microsoft_rush_stack_compiler_5_3.js +13 -0
- package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.21.0.js +63 -0
- package/dist/m365/spfx/commands/project/project-upgrade.js +2 -1
- package/dist/m365/spfx/commands/spfx-doctor.js +15 -0
- package/dist/m365/spo/commands/folder/folder-roleassignment-add.js +12 -47
- package/dist/m365/spo/commands/folder/folder-roleassignment-remove.js +13 -31
- package/dist/m365/spo/commands/listitem/listitem-roleassignment-add.js +12 -43
- package/dist/m365/spo/commands/listitem/listitem-roleassignment-remove.js +8 -27
- package/dist/m365/spo/commands/web/web-roleassignment-add.js +22 -47
- package/dist/m365/spo/commands/web/web-roleassignment-remove.js +17 -32
- package/dist/m365/tenant/commands/people/people-profilecardproperty-add.js +4 -3
- package/dist/m365/tenant/commands/people/people-profilecardproperty-set.js +4 -3
- package/dist/m365/todo/commands/list/list-remove.js +1 -1
- package/dist/m365/util/commands/accesstoken/accesstoken-get.js +13 -3
- package/dist/utils/accessToken.js +8 -0
- package/dist/utils/entraApp.js +3 -1
- package/dist/utils/optionsUtils.js +28 -0
- package/dist/utils/powerPlatform.js +51 -1
- package/dist/utils/prompt.js +9 -2
- package/dist/utils/spo.js +32 -3
- package/docs/docs/cmd/entra/policy/policy-list.mdx +1 -1
- package/docs/docs/cmd/graph/directoryextension/directoryextension-get.mdx +2 -3
- package/docs/docs/cmd/graph/openextension/openextension-add.mdx +120 -0
- package/docs/docs/cmd/graph/openextension/openextension-get.mdx +111 -0
- package/docs/docs/cmd/graph/openextension/openextension-list.mdx +129 -0
- package/docs/docs/cmd/graph/openextension/openextension-remove.mdx +59 -0
- package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -4
- package/docs/docs/cmd/util/accesstoken/accesstoken-get.mdx +72 -0
- package/npm-shrinkwrap.json +517 -481
- package/package.json +15 -15
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { globalOptionsZod } from '../../../../Command.js';
|
|
3
|
+
import { zod } from '../../../../utils/zod.js';
|
|
4
|
+
import { validation } from '../../../../utils/validation.js';
|
|
5
|
+
import GraphCommand from '../../../base/GraphCommand.js';
|
|
6
|
+
import commands from '../../commands.js';
|
|
7
|
+
import { odata } from '../../../../utils/odata.js';
|
|
8
|
+
const options = globalOptionsZod
|
|
9
|
+
.extend({
|
|
10
|
+
resourceId: zod.alias('i', z.string()),
|
|
11
|
+
resourceType: zod.alias('t', z.enum(['user', 'group', 'device', 'organization']))
|
|
12
|
+
})
|
|
13
|
+
.strict();
|
|
14
|
+
class GraphOpenExtensionListCommand extends GraphCommand {
|
|
15
|
+
get name() {
|
|
16
|
+
return commands.OPENEXTENSION_LIST;
|
|
17
|
+
}
|
|
18
|
+
get description() {
|
|
19
|
+
return 'Retrieves all open extensions for a resource';
|
|
20
|
+
}
|
|
21
|
+
defaultProperties() {
|
|
22
|
+
return ['id', 'extensionName'];
|
|
23
|
+
}
|
|
24
|
+
get schema() {
|
|
25
|
+
return options;
|
|
26
|
+
}
|
|
27
|
+
getRefinedSchema(schema) {
|
|
28
|
+
return schema
|
|
29
|
+
.refine(options => options.resourceType !== 'group' && options.resourceType !== 'device' && options.resourceType !== 'organization' ||
|
|
30
|
+
(options.resourceId && validation.isValidGuid(options.resourceId)), options => ({
|
|
31
|
+
message: `The '${options.resourceId}' must be a valid GUID`,
|
|
32
|
+
path: ['resourceId']
|
|
33
|
+
}))
|
|
34
|
+
.refine(options => options.resourceType !== 'user' ||
|
|
35
|
+
(options.resourceId && (validation.isValidGuid(options.resourceId) || validation.isValidUserPrincipalName(options.resourceId))), options => ({
|
|
36
|
+
message: `The '${options.resourceId}' must be a valid GUID or user principal name`,
|
|
37
|
+
path: ['resourceId']
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
async commandAction(logger, args) {
|
|
41
|
+
try {
|
|
42
|
+
const requestOptions = {
|
|
43
|
+
url: `${this.resource}/v1.0/${args.options.resourceType}${args.options.resourceType === 'organization' ? '' : 's'}/${args.options.resourceId}/extensions`,
|
|
44
|
+
headers: {
|
|
45
|
+
accept: 'application/json;odata.metadata=none',
|
|
46
|
+
'content-type': 'application/json'
|
|
47
|
+
},
|
|
48
|
+
responseType: 'json'
|
|
49
|
+
};
|
|
50
|
+
if (args.options.verbose) {
|
|
51
|
+
await logger.logToStderr(`Retrieving open extensions for the ${args.options.resourceType} with id '${args.options.resourceId}'...`);
|
|
52
|
+
}
|
|
53
|
+
const res = await odata.getAllItems(requestOptions);
|
|
54
|
+
await logger.log(res);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
this.handleRejectedODataJsonPromise(err);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export default new GraphOpenExtensionListCommand();
|
|
62
|
+
//# sourceMappingURL=openextension-list.js.map
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { globalOptionsZod } from '../../../../Command.js';
|
|
3
|
+
import { zod } from '../../../../utils/zod.js';
|
|
4
|
+
import { validation } from '../../../../utils/validation.js';
|
|
5
|
+
import GraphCommand from '../../../base/GraphCommand.js';
|
|
6
|
+
import commands from '../../commands.js';
|
|
7
|
+
import { cli } from '../../../../cli/cli.js';
|
|
8
|
+
import request from '../../../../request.js';
|
|
9
|
+
const options = globalOptionsZod
|
|
10
|
+
.extend({
|
|
11
|
+
resourceId: zod.alias('i', z.string()),
|
|
12
|
+
resourceType: zod.alias('t', z.enum(['user', 'group', 'device', 'organization'])),
|
|
13
|
+
name: zod.alias('n', z.string()),
|
|
14
|
+
force: zod.alias('f', z.boolean().optional())
|
|
15
|
+
})
|
|
16
|
+
.strict();
|
|
17
|
+
class GraphOpenExtensionRemoveCommand extends GraphCommand {
|
|
18
|
+
get name() {
|
|
19
|
+
return commands.OPENEXTENSION_REMOVE;
|
|
20
|
+
}
|
|
21
|
+
get description() {
|
|
22
|
+
return 'Removes a specific open extension for a resource';
|
|
23
|
+
}
|
|
24
|
+
get schema() {
|
|
25
|
+
return options;
|
|
26
|
+
}
|
|
27
|
+
getRefinedSchema(schema) {
|
|
28
|
+
return schema
|
|
29
|
+
.refine(options => options.resourceType !== 'group' && options.resourceType !== 'device' && options.resourceType !== 'organization' || (options.resourceId && validation.isValidGuid(options.resourceId)), options => ({
|
|
30
|
+
message: `The '${options.resourceId}' must be a valid GUID`,
|
|
31
|
+
path: ['resourceId']
|
|
32
|
+
}))
|
|
33
|
+
.refine(options => options.resourceType !== 'user' || (options.resourceId && (validation.isValidGuid(options.resourceId) || validation.isValidUserPrincipalName(options.resourceId))), options => ({
|
|
34
|
+
message: `The '${options.resourceId}' must be a valid GUID or user principal name`,
|
|
35
|
+
path: ['resourceId']
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
async commandAction(logger, args) {
|
|
39
|
+
const removeOpenExtension = async () => {
|
|
40
|
+
try {
|
|
41
|
+
if (this.verbose) {
|
|
42
|
+
await logger.logToStderr(`Removing open extension for resource ${args.options.resourceId}...`);
|
|
43
|
+
}
|
|
44
|
+
const requestOptions = {
|
|
45
|
+
url: `${this.resource}/v1.0/${args.options.resourceType}${args.options.resourceType === 'organization' ? '' : 's'}/${args.options.resourceId}/extensions/${args.options.name}`,
|
|
46
|
+
headers: {
|
|
47
|
+
accept: 'application/json;odata.metadata=none'
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
await request.delete(requestOptions);
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
this.handleRejectedODataJsonPromise(err);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
if (args.options.force) {
|
|
57
|
+
await removeOpenExtension();
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
const result = await cli.promptForConfirmation({ message: `Are you sure you want to remove open extension '${args.options.name}' from resource '${args.options.resourceId}' of type '${args.options.resourceType}'?` });
|
|
61
|
+
if (result) {
|
|
62
|
+
await removeOpenExtension();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export default new GraphOpenExtensionRemoveCommand();
|
|
68
|
+
//# sourceMappingURL=openextension-remove.js.map
|
|
@@ -4,6 +4,10 @@ export default {
|
|
|
4
4
|
DIRECTORYEXTENSION_ADD: `${prefix} directoryextension add`,
|
|
5
5
|
DIRECTORYEXTENSION_GET: `${prefix} directoryextension get`,
|
|
6
6
|
DIRECTORYEXTENSION_REMOVE: `${prefix} directoryextension remove`,
|
|
7
|
+
OPENEXTENSION_ADD: `${prefix} openextension add`,
|
|
8
|
+
OPENEXTENSION_GET: `${prefix} openextension get`,
|
|
9
|
+
OPENEXTENSION_LIST: `${prefix} openextension list`,
|
|
10
|
+
OPENEXTENSION_REMOVE: `${prefix} openextension remove`,
|
|
7
11
|
SCHEMAEXTENSION_ADD: `${prefix} schemaextension add`,
|
|
8
12
|
SCHEMAEXTENSION_GET: `${prefix} schemaextension get`,
|
|
9
13
|
SCHEMAEXTENSION_LIST: `${prefix} schemaextension list`,
|
|
@@ -4,13 +4,11 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
4
4
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
5
|
};
|
|
6
6
|
var _PpCardCloneCommand_instances, _PpCardCloneCommand_initTelemetry, _PpCardCloneCommand_initOptions, _PpCardCloneCommand_initOptionSets, _PpCardCloneCommand_initValidators;
|
|
7
|
-
import { cli } from '../../../../cli/cli.js';
|
|
8
7
|
import request from '../../../../request.js';
|
|
9
8
|
import { powerPlatform } from '../../../../utils/powerPlatform.js';
|
|
10
9
|
import { validation } from '../../../../utils/validation.js';
|
|
11
10
|
import PowerPlatformCommand from '../../../base/PowerPlatformCommand.js';
|
|
12
11
|
import commands from '../../commands.js';
|
|
13
|
-
import ppCardGetCommand from './card-get.js';
|
|
14
12
|
class PpCardCloneCommand extends PowerPlatformCommand {
|
|
15
13
|
get name() {
|
|
16
14
|
return commands.CARD_CLONE;
|
|
@@ -30,28 +28,26 @@ class PpCardCloneCommand extends PowerPlatformCommand {
|
|
|
30
28
|
if (this.verbose) {
|
|
31
29
|
await logger.logToStderr(`Cloning a card from '${args.options.id || args.options.name}'...`);
|
|
32
30
|
}
|
|
33
|
-
const res = await this.cloneCard(args);
|
|
31
|
+
const res = await this.cloneCard(args, logger);
|
|
34
32
|
await logger.log(res);
|
|
35
33
|
}
|
|
36
|
-
async getCardId(args) {
|
|
34
|
+
async getCardId(args, dynamicsApiUrl, logger) {
|
|
37
35
|
if (args.options.id) {
|
|
38
36
|
return args.options.id;
|
|
39
37
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
verbose: this.verbose
|
|
46
|
-
};
|
|
47
|
-
const output = await cli.executeCommandWithOutput(ppCardGetCommand, { options: { ...options, _: [] } });
|
|
48
|
-
const getCardOutput = JSON.parse(output.stdout);
|
|
49
|
-
return getCardOutput.cardid;
|
|
38
|
+
if (this.verbose) {
|
|
39
|
+
await logger.logToStderr(`Retrieving the card Id for card '${args.options.name}'`);
|
|
40
|
+
}
|
|
41
|
+
const card = await powerPlatform.getCardByName(dynamicsApiUrl, args.options.name);
|
|
42
|
+
return card.cardid;
|
|
50
43
|
}
|
|
51
|
-
async cloneCard(args) {
|
|
44
|
+
async cloneCard(args, logger) {
|
|
52
45
|
try {
|
|
53
46
|
const dynamicsApiUrl = await powerPlatform.getDynamicsInstanceApiUrl(args.options.environmentName, args.options.asAdmin);
|
|
54
|
-
const cardId = await this.getCardId(args);
|
|
47
|
+
const cardId = await this.getCardId(args, dynamicsApiUrl, logger);
|
|
48
|
+
if (this.verbose) {
|
|
49
|
+
await logger.logToStderr(`Cloning the card with id '${cardId}'`);
|
|
50
|
+
}
|
|
55
51
|
const requestOptions = {
|
|
56
52
|
url: `${dynamicsApiUrl}/api/data/v9.1/CardCreateClone`,
|
|
57
53
|
headers: {
|
|
@@ -4,13 +4,11 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
4
4
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
5
|
};
|
|
6
6
|
var _PpCardGetCommand_instances, _PpCardGetCommand_initTelemetry, _PpCardGetCommand_initOptions, _PpCardGetCommand_initOptionSets, _PpCardGetCommand_initValidators;
|
|
7
|
-
import { cli } from '../../../../cli/cli.js';
|
|
8
7
|
import request from '../../../../request.js';
|
|
9
8
|
import { powerPlatform } from '../../../../utils/powerPlatform.js';
|
|
10
9
|
import { validation } from '../../../../utils/validation.js';
|
|
11
10
|
import PowerPlatformCommand from '../../../base/PowerPlatformCommand.js';
|
|
12
11
|
import commands from '../../commands.js';
|
|
13
|
-
import { formatting } from '../../../../utils/formatting.js';
|
|
14
12
|
class PpCardGetCommand extends PowerPlatformCommand {
|
|
15
13
|
get name() {
|
|
16
14
|
return commands.CARD_GET;
|
|
@@ -32,35 +30,31 @@ class PpCardGetCommand extends PowerPlatformCommand {
|
|
|
32
30
|
}
|
|
33
31
|
try {
|
|
34
32
|
const dynamicsApiUrl = await powerPlatform.getDynamicsInstanceApiUrl(args.options.environmentName, args.options.asAdmin);
|
|
35
|
-
const res = await this.getCard(dynamicsApiUrl, args.options);
|
|
33
|
+
const res = await this.getCard(dynamicsApiUrl, args.options, logger);
|
|
36
34
|
await logger.log(res);
|
|
37
35
|
}
|
|
38
36
|
catch (err) {
|
|
39
37
|
this.handleRejectedODataJsonPromise(err);
|
|
40
38
|
}
|
|
41
39
|
}
|
|
42
|
-
async getCard(dynamicsApiUrl, options) {
|
|
40
|
+
async getCard(dynamicsApiUrl, options, logger) {
|
|
41
|
+
if (options.name) {
|
|
42
|
+
if (this.verbose) {
|
|
43
|
+
await logger.logToStderr(`Retrieving the card with name '${options.name}'`);
|
|
44
|
+
}
|
|
45
|
+
return await powerPlatform.getCardByName(dynamicsApiUrl, options.name);
|
|
46
|
+
}
|
|
47
|
+
if (this.verbose) {
|
|
48
|
+
await logger.logToStderr(`Retrieving the card with id '${options.id}'`);
|
|
49
|
+
}
|
|
43
50
|
const requestOptions = {
|
|
51
|
+
url: `${dynamicsApiUrl}/api/data/v9.1/cards(${options.id})`,
|
|
44
52
|
headers: {
|
|
45
53
|
accept: 'application/json;odata.metadata=none'
|
|
46
54
|
},
|
|
47
55
|
responseType: 'json'
|
|
48
56
|
};
|
|
49
|
-
|
|
50
|
-
requestOptions.url = `${dynamicsApiUrl}/api/data/v9.1/cards(${options.id})`;
|
|
51
|
-
const result = await request.get(requestOptions);
|
|
52
|
-
return result;
|
|
53
|
-
}
|
|
54
|
-
requestOptions.url = `${dynamicsApiUrl}/api/data/v9.1/cards?$filter=name eq '${options.name}'`;
|
|
55
|
-
const result = await request.get(requestOptions);
|
|
56
|
-
if (result.value.length === 0) {
|
|
57
|
-
throw `The specified card '${options.name}' does not exist.`;
|
|
58
|
-
}
|
|
59
|
-
if (result.value.length > 1) {
|
|
60
|
-
const resultAsKeyValuePair = formatting.convertArrayToHashTable('cardid', result.value);
|
|
61
|
-
return cli.handleMultipleResultsFound(`Multiple cards with name '${options.name}' found`, resultAsKeyValuePair);
|
|
62
|
-
}
|
|
63
|
-
return result.value[0];
|
|
57
|
+
return await request.get(requestOptions);
|
|
64
58
|
}
|
|
65
59
|
}
|
|
66
60
|
_PpCardGetCommand_instances = new WeakSet(), _PpCardGetCommand_initTelemetry = function _PpCardGetCommand_initTelemetry() {
|
|
@@ -10,7 +10,6 @@ import { powerPlatform } from '../../../../utils/powerPlatform.js';
|
|
|
10
10
|
import { validation } from '../../../../utils/validation.js';
|
|
11
11
|
import PowerPlatformCommand from '../../../base/PowerPlatformCommand.js';
|
|
12
12
|
import commands from '../../commands.js';
|
|
13
|
-
import ppCardGetCommand from './card-get.js';
|
|
14
13
|
class PpCardRemoveCommand extends PowerPlatformCommand {
|
|
15
14
|
get name() {
|
|
16
15
|
return commands.CARD_REMOVE;
|
|
@@ -31,34 +30,32 @@ class PpCardRemoveCommand extends PowerPlatformCommand {
|
|
|
31
30
|
await logger.logToStderr(`Removing card '${args.options.id || args.options.name}'...`);
|
|
32
31
|
}
|
|
33
32
|
if (args.options.force) {
|
|
34
|
-
await this.deleteCard(args);
|
|
33
|
+
await this.deleteCard(args, logger);
|
|
35
34
|
}
|
|
36
35
|
else {
|
|
37
36
|
const result = await cli.promptForConfirmation({ message: `Are you sure you want to remove card '${args.options.id || args.options.name}'?` });
|
|
38
37
|
if (result) {
|
|
39
|
-
await this.deleteCard(args);
|
|
38
|
+
await this.deleteCard(args, logger);
|
|
40
39
|
}
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
|
-
async getCardId(args) {
|
|
42
|
+
async getCardId(args, dynamicsApiUrl, logger) {
|
|
44
43
|
if (args.options.id) {
|
|
45
44
|
return args.options.id;
|
|
46
45
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
verbose: this.verbose
|
|
53
|
-
};
|
|
54
|
-
const output = await cli.executeCommandWithOutput(ppCardGetCommand, { options: { ...options, _: [] } });
|
|
55
|
-
const getCardOutput = JSON.parse(output.stdout);
|
|
56
|
-
return getCardOutput.cardid;
|
|
46
|
+
if (this.verbose) {
|
|
47
|
+
await logger.logToStderr(`Retrieving the card with name '${args.options.name}'`);
|
|
48
|
+
}
|
|
49
|
+
const card = await powerPlatform.getCardByName(dynamicsApiUrl, args.options.name);
|
|
50
|
+
return card.cardid;
|
|
57
51
|
}
|
|
58
|
-
async deleteCard(args) {
|
|
52
|
+
async deleteCard(args, logger) {
|
|
59
53
|
try {
|
|
60
54
|
const dynamicsApiUrl = await powerPlatform.getDynamicsInstanceApiUrl(args.options.environmentName, args.options.asAdmin);
|
|
61
|
-
const cardId = await this.getCardId(args);
|
|
55
|
+
const cardId = await this.getCardId(args, dynamicsApiUrl, logger);
|
|
56
|
+
if (this.verbose) {
|
|
57
|
+
await logger.logToStderr(`Deleting card with Id '${cardId}'`);
|
|
58
|
+
}
|
|
62
59
|
const requestOptions = {
|
|
63
60
|
url: `${dynamicsApiUrl}/api/data/v9.1/cards(${cardId})`,
|
|
64
61
|
headers: {
|
|
@@ -49,23 +49,17 @@ class PpSolutionGetCommand extends PowerPlatformCommand {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
async getSolution(dynamicsApiUrl, options) {
|
|
52
|
+
if (options.name) {
|
|
53
|
+
return powerPlatform.getSolutionByName(dynamicsApiUrl, options.name);
|
|
54
|
+
}
|
|
52
55
|
const requestOptions = {
|
|
53
56
|
headers: {
|
|
54
57
|
accept: 'application/json;odata.metadata=none'
|
|
55
58
|
},
|
|
56
59
|
responseType: 'json'
|
|
57
60
|
};
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const result = await request.get(requestOptions);
|
|
61
|
-
return result;
|
|
62
|
-
}
|
|
63
|
-
requestOptions.url = `${dynamicsApiUrl}/api/data/v9.0/solutions?$filter=isvisible eq true and uniquename eq \'${options.name}\'&$expand=publisherid($select=friendlyname)&$select=solutionid,uniquename,version,publisherid,installedon,solutionpackageversion,friendlyname,versionnumber&api-version=9.1`;
|
|
64
|
-
const result = await request.get(requestOptions);
|
|
65
|
-
if (result.value.length === 0) {
|
|
66
|
-
throw `The specified solution '${options.name}' does not exist.`;
|
|
67
|
-
}
|
|
68
|
-
return result.value[0];
|
|
61
|
+
requestOptions.url = `${dynamicsApiUrl}/api/data/v9.0/solutions(${options.id})?$expand=publisherid($select=friendlyname)&$select=solutionid,uniquename,version,publisherid,installedon,solutionpackageversion,friendlyname,versionnumber&api-version=9.1`;
|
|
62
|
+
return request.get(requestOptions);
|
|
69
63
|
}
|
|
70
64
|
}
|
|
71
65
|
_PpSolutionGetCommand_instances = new WeakSet(), _PpSolutionGetCommand_initTelemetry = function _PpSolutionGetCommand_initTelemetry() {
|
|
@@ -4,14 +4,12 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
4
4
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
5
|
};
|
|
6
6
|
var _PpSolutionPublishCommand_instances, _PpSolutionPublishCommand_initTelemetry, _PpSolutionPublishCommand_initOptions, _PpSolutionPublishCommand_initOptionSets, _PpSolutionPublishCommand_initValidators;
|
|
7
|
-
import { cli } from '../../../../cli/cli.js';
|
|
8
7
|
import request from '../../../../request.js';
|
|
9
8
|
import { formatting } from '../../../../utils/formatting.js';
|
|
10
9
|
import { powerPlatform } from '../../../../utils/powerPlatform.js';
|
|
11
10
|
import { validation } from '../../../../utils/validation.js';
|
|
12
11
|
import PowerPlatformCommand from '../../../base/PowerPlatformCommand.js';
|
|
13
12
|
import commands from '../../commands.js';
|
|
14
|
-
import ppSolutionGetCommand from './solution-get.js';
|
|
15
13
|
class PpSolutionPublishCommand extends PowerPlatformCommand {
|
|
16
14
|
get name() {
|
|
17
15
|
return commands.SOLUTION_PUBLISH;
|
|
@@ -29,8 +27,8 @@ class PpSolutionPublishCommand extends PowerPlatformCommand {
|
|
|
29
27
|
}
|
|
30
28
|
async commandAction(logger, args) {
|
|
31
29
|
try {
|
|
32
|
-
const dynamicsApiUrl = await powerPlatform.getDynamicsInstanceApiUrl(args.options.
|
|
33
|
-
const solutionId = await this.getSolutionId(args, logger);
|
|
30
|
+
const dynamicsApiUrl = await powerPlatform.getDynamicsInstanceApiUrl(args.options.environment, args.options.asAdmin);
|
|
31
|
+
const solutionId = await this.getSolutionId(args, dynamicsApiUrl, logger);
|
|
34
32
|
const solutionComponents = await this.getSolutionComponents(dynamicsApiUrl, solutionId, logger);
|
|
35
33
|
const parameterXml = await this.buildXmlRequestObject(solutionComponents, logger);
|
|
36
34
|
const requestOptions = {
|
|
@@ -71,23 +69,15 @@ class PpSolutionPublishCommand extends PowerPlatformCommand {
|
|
|
71
69
|
const response = await request.get(requestOptions);
|
|
72
70
|
return response.value;
|
|
73
71
|
}
|
|
74
|
-
async getSolutionId(args, logger) {
|
|
72
|
+
async getSolutionId(args, dynamicsApiUrl, logger) {
|
|
75
73
|
if (args.options.id) {
|
|
76
74
|
return args.options.id;
|
|
77
75
|
}
|
|
78
76
|
if (this.verbose) {
|
|
79
|
-
await logger.logToStderr(`Retrieving solutionId
|
|
77
|
+
await logger.logToStderr(`Retrieving solutionId...`);
|
|
80
78
|
}
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
name: args.options.name,
|
|
84
|
-
output: 'json',
|
|
85
|
-
debug: this.debug,
|
|
86
|
-
verbose: this.verbose
|
|
87
|
-
};
|
|
88
|
-
const output = await cli.executeCommandWithOutput(ppSolutionGetCommand, { options: { ...options, _: [] } });
|
|
89
|
-
const getSolutionOutput = JSON.parse(output.stdout);
|
|
90
|
-
return getSolutionOutput.solutionid;
|
|
79
|
+
const solution = await powerPlatform.getSolutionByName(dynamicsApiUrl, args.options.name);
|
|
80
|
+
return solution.solutionid;
|
|
91
81
|
}
|
|
92
82
|
async buildXmlRequestObject(solutionComponents, logger) {
|
|
93
83
|
if (this.verbose) {
|
|
@@ -10,7 +10,6 @@ import { powerPlatform } from '../../../../utils/powerPlatform.js';
|
|
|
10
10
|
import { validation } from '../../../../utils/validation.js';
|
|
11
11
|
import PowerPlatformCommand from '../../../base/PowerPlatformCommand.js';
|
|
12
12
|
import commands from '../../commands.js';
|
|
13
|
-
import ppSolutionGetCommand from './solution-get.js';
|
|
14
13
|
class PpSolutionRemoveCommand extends PowerPlatformCommand {
|
|
15
14
|
get name() {
|
|
16
15
|
return commands.SOLUTION_REMOVE;
|
|
@@ -40,25 +39,17 @@ class PpSolutionRemoveCommand extends PowerPlatformCommand {
|
|
|
40
39
|
}
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
|
-
async getSolutionId(args) {
|
|
42
|
+
async getSolutionId(args, dynamicsApiUrl) {
|
|
44
43
|
if (args.options.id) {
|
|
45
44
|
return args.options.id;
|
|
46
45
|
}
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
name: args.options.name,
|
|
50
|
-
output: 'json',
|
|
51
|
-
debug: this.debug,
|
|
52
|
-
verbose: this.verbose
|
|
53
|
-
};
|
|
54
|
-
const output = await cli.executeCommandWithOutput(ppSolutionGetCommand, { options: { ...options, _: [] } });
|
|
55
|
-
const getSolutionOutput = JSON.parse(output.stdout);
|
|
56
|
-
return getSolutionOutput.solutionid;
|
|
46
|
+
const solution = await powerPlatform.getSolutionByName(dynamicsApiUrl, args.options.name);
|
|
47
|
+
return solution.solutionid;
|
|
57
48
|
}
|
|
58
49
|
async deleteSolution(args) {
|
|
59
50
|
try {
|
|
60
51
|
const dynamicsApiUrl = await powerPlatform.getDynamicsInstanceApiUrl(args.options.environmentName, args.options.asAdmin);
|
|
61
|
-
const solutionId = await this.getSolutionId(args);
|
|
52
|
+
const solutionId = await this.getSolutionId(args, dynamicsApiUrl);
|
|
62
53
|
const requestOptions = {
|
|
63
54
|
url: `${dynamicsApiUrl}/api/data/v9.1/solutions(${solutionId})`,
|
|
64
55
|
headers: {
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FN002021_DEVDEP_rushstack_eslint_config } from '../project-upgrade/rules/FN002021_DEVDEP_rushstack_eslint_config.js';
|
|
2
|
+
import { FN001008_DEP_react } from './rules/FN001008_DEP_react.js';
|
|
3
|
+
import { FN001009_DEP_react_dom } from './rules/FN001009_DEP_react_dom.js';
|
|
4
|
+
import { FN001035_DEP_fluentui_react } from './rules/FN001035_DEP_fluentui_react.js';
|
|
5
|
+
import { FN002004_DEVDEP_gulp } from './rules/FN002004_DEVDEP_gulp.js';
|
|
6
|
+
import { FN002007_DEVDEP_ajv } from './rules/FN002007_DEVDEP_ajv.js';
|
|
7
|
+
import { FN002013_DEVDEP_types_webpack_env } from './rules/FN002013_DEVDEP_types_webpack_env.js';
|
|
8
|
+
import { FN002015_DEVDEP_types_react } from './rules/FN002015_DEVDEP_types_react.js';
|
|
9
|
+
import { FN002016_DEVDEP_types_react_dom } from './rules/FN002016_DEVDEP_types_react_dom.js';
|
|
10
|
+
import { FN002019_DEVDEP_microsoft_rush_stack_compiler } from './rules/FN002019_DEVDEP_microsoft_rush_stack_compiler.js';
|
|
11
|
+
import { FN021001_PKG_spfx_deps_versions_match_project_version } from './rules/FN021001_PKG_spfx_deps_versions_match_project_version.js';
|
|
12
|
+
export default [
|
|
13
|
+
new FN001008_DEP_react('17'),
|
|
14
|
+
new FN001009_DEP_react_dom('17'),
|
|
15
|
+
new FN001035_DEP_fluentui_react('^8.106.4'),
|
|
16
|
+
new FN002004_DEVDEP_gulp('4.0.2'),
|
|
17
|
+
new FN002007_DEVDEP_ajv('^6.12.5'),
|
|
18
|
+
new FN002013_DEVDEP_types_webpack_env('~1.15.2'),
|
|
19
|
+
new FN002015_DEVDEP_types_react('17'),
|
|
20
|
+
new FN002016_DEVDEP_types_react_dom('17'),
|
|
21
|
+
new FN002019_DEVDEP_microsoft_rush_stack_compiler(['5.3']),
|
|
22
|
+
new FN002021_DEVDEP_rushstack_eslint_config('4.0.1'),
|
|
23
|
+
new FN021001_PKG_spfx_deps_versions_match_project_version(true)
|
|
24
|
+
];
|
|
25
|
+
//# sourceMappingURL=doctor-1.21.0.js.map
|
|
@@ -71,7 +71,8 @@ class SpfxProjectDoctorCommand extends BaseProjectCommand {
|
|
|
71
71
|
'1.18.1',
|
|
72
72
|
'1.18.2',
|
|
73
73
|
'1.19.0',
|
|
74
|
-
'1.20.0'
|
|
74
|
+
'1.20.0',
|
|
75
|
+
'1.21.0'
|
|
75
76
|
];
|
|
76
77
|
__classPrivateFieldGet(this, _SpfxProjectDoctorCommand_instances, "m", _SpfxProjectDoctorCommand_initTelemetry).call(this);
|
|
77
78
|
__classPrivateFieldGet(this, _SpfxProjectDoctorCommand_instances, "m", _SpfxProjectDoctorCommand_initOptions).call(this);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DependencyRule } from "./DependencyRule.js";
|
|
2
|
+
export class FN002029_DEVDEP_microsoft_rush_stack_compiler_5_3 extends DependencyRule {
|
|
3
|
+
constructor(packageVersion) {
|
|
4
|
+
super('@microsoft/rush-stack-compiler-5.3', packageVersion, true);
|
|
5
|
+
}
|
|
6
|
+
get id() {
|
|
7
|
+
return 'FN002029';
|
|
8
|
+
}
|
|
9
|
+
get supersedes() {
|
|
10
|
+
return ['FN002010', 'FN002011', 'FN002012', 'FN002017', 'FN002018', 'FN002020', 'FN002028'];
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=FN002029_DEVDEP_microsoft_rush_stack_compiler_5_3.js.map
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { FN001001_DEP_microsoft_sp_core_library } from './rules/FN001001_DEP_microsoft_sp_core_library.js';
|
|
2
|
+
import { FN001002_DEP_microsoft_sp_lodash_subset } from './rules/FN001002_DEP_microsoft_sp_lodash_subset.js';
|
|
3
|
+
import { FN001003_DEP_microsoft_sp_office_ui_fabric_core } from './rules/FN001003_DEP_microsoft_sp_office_ui_fabric_core.js';
|
|
4
|
+
import { FN001004_DEP_microsoft_sp_webpart_base } from './rules/FN001004_DEP_microsoft_sp_webpart_base.js';
|
|
5
|
+
import { FN001011_DEP_microsoft_sp_dialog } from './rules/FN001011_DEP_microsoft_sp_dialog.js';
|
|
6
|
+
import { FN001012_DEP_microsoft_sp_application_base } from './rules/FN001012_DEP_microsoft_sp_application_base.js';
|
|
7
|
+
import { FN001013_DEP_microsoft_decorators } from './rules/FN001013_DEP_microsoft_decorators.js';
|
|
8
|
+
import { FN001014_DEP_microsoft_sp_listview_extensibility } from './rules/FN001014_DEP_microsoft_sp_listview_extensibility.js';
|
|
9
|
+
import { FN001021_DEP_microsoft_sp_property_pane } from './rules/FN001021_DEP_microsoft_sp_property_pane.js';
|
|
10
|
+
import { FN001023_DEP_microsoft_sp_component_base } from './rules/FN001023_DEP_microsoft_sp_component_base.js';
|
|
11
|
+
import { FN001024_DEP_microsoft_sp_diagnostics } from './rules/FN001024_DEP_microsoft_sp_diagnostics.js';
|
|
12
|
+
import { FN001025_DEP_microsoft_sp_dynamic_data } from './rules/FN001025_DEP_microsoft_sp_dynamic_data.js';
|
|
13
|
+
import { FN001026_DEP_microsoft_sp_extension_base } from './rules/FN001026_DEP_microsoft_sp_extension_base.js';
|
|
14
|
+
import { FN001027_DEP_microsoft_sp_http } from './rules/FN001027_DEP_microsoft_sp_http.js';
|
|
15
|
+
import { FN001028_DEP_microsoft_sp_list_subscription } from './rules/FN001028_DEP_microsoft_sp_list_subscription.js';
|
|
16
|
+
import { FN001029_DEP_microsoft_sp_loader } from './rules/FN001029_DEP_microsoft_sp_loader.js';
|
|
17
|
+
import { FN001030_DEP_microsoft_sp_module_interfaces } from './rules/FN001030_DEP_microsoft_sp_module_interfaces.js';
|
|
18
|
+
import { FN001031_DEP_microsoft_sp_odata_types } from './rules/FN001031_DEP_microsoft_sp_odata_types.js';
|
|
19
|
+
import { FN001032_DEP_microsoft_sp_page_context } from './rules/FN001032_DEP_microsoft_sp_page_context.js';
|
|
20
|
+
import { FN001034_DEP_microsoft_sp_adaptive_card_extension_base } from './rules/FN001034_DEP_microsoft_sp_adaptive_card_extension_base.js';
|
|
21
|
+
import { FN002001_DEVDEP_microsoft_sp_build_web } from './rules/FN002001_DEVDEP_microsoft_sp_build_web.js';
|
|
22
|
+
import { FN002002_DEVDEP_microsoft_sp_module_interfaces } from './rules/FN002002_DEVDEP_microsoft_sp_module_interfaces.js';
|
|
23
|
+
import { FN002022_DEVDEP_microsoft_eslint_plugin_spfx } from './rules/FN002022_DEVDEP_microsoft_eslint_plugin_spfx.js';
|
|
24
|
+
import { FN002023_DEVDEP_microsoft_eslint_config_spfx } from './rules/FN002023_DEVDEP_microsoft_eslint_config_spfx.js';
|
|
25
|
+
import { FN002024_DEVDEP_eslint } from './rules/FN002024_DEVDEP_eslint.js';
|
|
26
|
+
import { FN002026_DEVDEP_typescript } from './rules/FN002026_DEVDEP_typescript.js';
|
|
27
|
+
import { FN002029_DEVDEP_microsoft_rush_stack_compiler_5_3 } from './rules/FN002029_DEVDEP_microsoft_rush_stack_compiler_5_3.js';
|
|
28
|
+
import { FN010001_YORC_version } from './rules/FN010001_YORC_version.js';
|
|
29
|
+
import { FN012017_TSC_extends } from './rules/FN012017_TSC_extends.js';
|
|
30
|
+
import { FN021003_PKG_engines_node } from './rules/FN021003_PKG_engines_node.js';
|
|
31
|
+
export default [
|
|
32
|
+
new FN001001_DEP_microsoft_sp_core_library('1.21.0'),
|
|
33
|
+
new FN001002_DEP_microsoft_sp_lodash_subset('1.21.0'),
|
|
34
|
+
new FN001003_DEP_microsoft_sp_office_ui_fabric_core('1.21.0'),
|
|
35
|
+
new FN001004_DEP_microsoft_sp_webpart_base('1.21.0'),
|
|
36
|
+
new FN001011_DEP_microsoft_sp_dialog('1.21.0'),
|
|
37
|
+
new FN001012_DEP_microsoft_sp_application_base('1.21.0'),
|
|
38
|
+
new FN001014_DEP_microsoft_sp_listview_extensibility('1.21.0'),
|
|
39
|
+
new FN001021_DEP_microsoft_sp_property_pane('1.21.0'),
|
|
40
|
+
new FN001023_DEP_microsoft_sp_component_base('1.21.0'),
|
|
41
|
+
new FN001024_DEP_microsoft_sp_diagnostics('1.21.0'),
|
|
42
|
+
new FN001025_DEP_microsoft_sp_dynamic_data('1.21.0'),
|
|
43
|
+
new FN001026_DEP_microsoft_sp_extension_base('1.21.0'),
|
|
44
|
+
new FN001027_DEP_microsoft_sp_http('1.21.0'),
|
|
45
|
+
new FN001028_DEP_microsoft_sp_list_subscription('1.21.0'),
|
|
46
|
+
new FN001029_DEP_microsoft_sp_loader('1.21.0'),
|
|
47
|
+
new FN001030_DEP_microsoft_sp_module_interfaces('1.21.0'),
|
|
48
|
+
new FN001031_DEP_microsoft_sp_odata_types('1.21.0'),
|
|
49
|
+
new FN001032_DEP_microsoft_sp_page_context('1.21.0'),
|
|
50
|
+
new FN001013_DEP_microsoft_decorators('1.21.0'),
|
|
51
|
+
new FN001034_DEP_microsoft_sp_adaptive_card_extension_base('1.21.0'),
|
|
52
|
+
new FN002001_DEVDEP_microsoft_sp_build_web('1.21.0'),
|
|
53
|
+
new FN002002_DEVDEP_microsoft_sp_module_interfaces('1.21.0'),
|
|
54
|
+
new FN002024_DEVDEP_eslint('8.57.1'),
|
|
55
|
+
new FN002022_DEVDEP_microsoft_eslint_plugin_spfx('1.21.0'),
|
|
56
|
+
new FN002023_DEVDEP_microsoft_eslint_config_spfx('1.21.0'),
|
|
57
|
+
new FN002026_DEVDEP_typescript('5.3.3'),
|
|
58
|
+
new FN002029_DEVDEP_microsoft_rush_stack_compiler_5_3('0.1.0'),
|
|
59
|
+
new FN010001_YORC_version('1.21.0'),
|
|
60
|
+
new FN012017_TSC_extends('./node_modules/@microsoft/rush-stack-compiler-5.3/includes/tsconfig-web.json'),
|
|
61
|
+
new FN021003_PKG_engines_node('>=22.14.0 < 23.0.0')
|
|
62
|
+
];
|
|
63
|
+
//# sourceMappingURL=upgrade-1.21.0.js.map
|
|
@@ -73,7 +73,8 @@ class SpfxProjectUpgradeCommand extends BaseProjectCommand {
|
|
|
73
73
|
'1.18.1',
|
|
74
74
|
'1.18.2',
|
|
75
75
|
'1.19.0',
|
|
76
|
-
'1.20.0'
|
|
76
|
+
'1.20.0',
|
|
77
|
+
'1.21.0'
|
|
77
78
|
];
|
|
78
79
|
__classPrivateFieldGet(this, _SpfxProjectUpgradeCommand_instances, "m", _SpfxProjectUpgradeCommand_initTelemetry).call(this);
|
|
79
80
|
__classPrivateFieldGet(this, _SpfxProjectUpgradeCommand_instances, "m", _SpfxProjectUpgradeCommand_initOptions).call(this);
|
|
@@ -590,6 +590,21 @@ class SpfxDoctorCommand extends BaseProjectCommand {
|
|
|
590
590
|
range: '^4 || ^5',
|
|
591
591
|
fix: 'npm i -g yo@5'
|
|
592
592
|
}
|
|
593
|
+
},
|
|
594
|
+
'1.21.0': {
|
|
595
|
+
gulpCli: {
|
|
596
|
+
range: '^1 || ^2 || ^3',
|
|
597
|
+
fix: 'npm i -g gulp-cli@3'
|
|
598
|
+
},
|
|
599
|
+
node: {
|
|
600
|
+
range: '>=22.14.0 < 23.0.0',
|
|
601
|
+
fix: 'Install Node.js >=22.14.0 < 23.0.0'
|
|
602
|
+
},
|
|
603
|
+
sp: SharePointVersion.SPO,
|
|
604
|
+
yo: {
|
|
605
|
+
range: '^4 || ^5',
|
|
606
|
+
fix: 'npm i -g yo@5'
|
|
607
|
+
}
|
|
593
608
|
}
|
|
594
609
|
};
|
|
595
610
|
this.output = '';
|