@pnp/cli-microsoft365 11.8.0-beta.ae98113 → 11.9.0-beta.0365d84
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/allCommandsFull.json +1 -1
- package/dist/cli/cli.js +49 -13
- package/dist/index.js +9 -1
- package/dist/m365/adaptivecard/commands/adaptivecard-send.js +4 -1
- package/dist/m365/app/commands/permission/permission-add.js +4 -1
- package/dist/m365/booking/commands/business/business-get.js +5 -1
- package/dist/m365/commands/login.js +26 -6
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-get.js +5 -1
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-remove.js +10 -2
- package/dist/m365/entra/commands/organization/organization-set.js +14 -3
- package/dist/m365/entra/commands/roleassignment/roleassignment-add.js +10 -2
- package/dist/m365/entra/commands/roledefinition/roledefinition-get.js +10 -2
- package/dist/m365/entra/commands/roledefinition/roledefinition-remove.js +10 -2
- package/dist/m365/entra/commands/roledefinition/roledefinition-set.js +14 -3
- package/dist/m365/entra/commands/user/user-session-revoke.js +5 -1
- package/dist/m365/exo/commands/approleassignment/approleassignment-add.js +60 -12
- package/dist/m365/flow/commands/environment/environment-get.js +5 -1
- package/dist/m365/graph/commands/directoryextension/directoryextension-add.js +5 -1
- package/dist/m365/graph/commands/directoryextension/directoryextension-get.js +15 -3
- package/dist/m365/graph/commands/directoryextension/directoryextension-list.js +5 -1
- package/dist/m365/graph/commands/directoryextension/directoryextension-remove.js +15 -3
- package/dist/m365/outlook/commands/mail/mail-searchfolder-add.js +5 -1
- package/dist/m365/outlook/commands/mailbox/mailbox-settings-get.js +5 -1
- package/dist/m365/outlook/commands/mailbox/mailbox-settings-set.js +9 -2
- package/dist/m365/pa/commands/environment/environment-get.js +5 -1
- package/dist/m365/pp/commands/environment/environment-get.js +5 -1
- package/dist/m365/pp/commands/website/website-get.js +5 -1
- package/dist/m365/spe/commands/container/container-add.js +5 -1
- package/dist/m365/spe/commands/container/container-recyclebinitem-list.js +5 -1
- package/dist/m365/spe/commands/container/container-recyclebinitem-remove.js +10 -2
- package/dist/m365/spe/commands/container/container-recyclebinitem-restore.js +10 -2
- package/dist/m365/spe/commands/container/container-remove.js +10 -2
- package/dist/m365/spe/commands/containertype/containertype-get.js +5 -1
- package/dist/m365/spe/commands/containertype/containertype-remove.js +5 -1
- package/dist/m365/spfx/commands/SpfxCompatibilityMatrix.js +1 -1
- package/dist/m365/spfx/commands/project/project-doctor/{doctor-1.23.0-rc.0.js → doctor-1.23.0.js} +1 -1
- package/dist/m365/spfx/commands/project/project-doctor.js +7 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/DependencyRule.js +11 -5
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002035_DEVDEP_types_heft_jest.js +2 -2
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002036_DEVDEP_types_jest.js +10 -0
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN027001_OVERRIDES_rushstack_heft.js +33 -0
- package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.22.0.js +2 -2
- package/dist/m365/spfx/commands/project/project-upgrade/{upgrade-1.23.0-rc.0.js → upgrade-1.23.0.js} +39 -31
- package/dist/m365/spfx/commands/project/project-upgrade.js +36 -19
- package/dist/m365/spo/commands/file/file-version-keep.js +5 -1
- package/dist/m365/spo/commands/homesite/homesite-add.js +5 -1
- package/dist/m365/spo/commands/homesite/homesite-set.js +9 -2
- package/dist/m365/spo/commands/list/list-defaultvalue-clear.js +10 -2
- package/dist/m365/spo/commands/list/list-defaultvalue-get.js +5 -1
- package/dist/m365/spo/commands/list/list-defaultvalue-list.js +5 -1
- package/dist/m365/spo/commands/list/list-defaultvalue-remove.js +5 -1
- package/dist/m365/spo/commands/list/list-defaultvalue-set.js +5 -1
- package/dist/m365/spo/commands/list/list-view-add.js +17 -4
- package/dist/m365/spo/commands/page/page-get.js +5 -1
- package/dist/m365/spo/commands/web/web-alert-list.js +10 -2
- package/dist/m365/spp/commands/autofillcolumn/autofillcolumn-set.js +10 -2
- package/dist/m365/spp/commands/model/model-apply.js +10 -2
- package/dist/m365/teams/commands/callrecord/callrecord-list.js +5 -1
- package/dist/m365/viva/commands/engage/engage-community-user-add.js +20 -4
- package/dist/m365/viva/commands/engage/engage-community-user-list.js +10 -2
- package/dist/m365/viva/commands/engage/engage-community-user-remove.js +16 -7
- package/dist/m365/viva/commands/engage/engage-role-member-list.js +5 -1
- package/dist/request.js +1 -1
- package/dist/utils/packageManager.js +38 -7
- package/dist/utils/prompt.js +1 -7
- package/docs/docs/cmd/spfx/project/project-upgrade.mdx +2 -2
- package/npm-shrinkwrap.json +1579 -503
- package/package.json +37 -19
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN021009_PKG_overrides_rushstack_heft.js +0 -45
|
@@ -26,7 +26,11 @@ class OutlookMailboxSettingsGetCommand extends GraphCommand {
|
|
|
26
26
|
getRefinedSchema(schema) {
|
|
27
27
|
return schema
|
|
28
28
|
.refine(options => !(options.userId && options.userName), {
|
|
29
|
-
error: 'Specify either userId or userName, but not both'
|
|
29
|
+
error: 'Specify either userId or userName, but not both',
|
|
30
|
+
params: {
|
|
31
|
+
customCode: 'optionSet',
|
|
32
|
+
options: ['userId', 'userName']
|
|
33
|
+
}
|
|
30
34
|
});
|
|
31
35
|
}
|
|
32
36
|
async commandAction(logger, args) {
|
|
@@ -45,7 +45,11 @@ class OutlookMailboxSettingsSetCommand extends GraphCommand {
|
|
|
45
45
|
getRefinedSchema(schema) {
|
|
46
46
|
return schema
|
|
47
47
|
.refine(options => !(options.userId && options.userName), {
|
|
48
|
-
error: 'Specify either userId or userName, but not both'
|
|
48
|
+
error: 'Specify either userId or userName, but not both',
|
|
49
|
+
params: {
|
|
50
|
+
customCode: 'optionSet',
|
|
51
|
+
options: ['userId', 'userName']
|
|
52
|
+
}
|
|
49
53
|
})
|
|
50
54
|
.refine(options => [
|
|
51
55
|
options.workingDays, options.workingHoursStartTime, options.workingHoursEndTime, options.workingHoursTimeZone,
|
|
@@ -53,7 +57,10 @@ class OutlookMailboxSettingsSetCommand extends GraphCommand {
|
|
|
53
57
|
options.autoReplyStartDateTime, options.autoReplyStartTimeZone, options.autoReplyEndDateTime, options.autoReplyEndTimeZone,
|
|
54
58
|
options.timeFormat, options.timeZone, options.dateFormat, options.delegateMeetingMessageDeliveryOptions, options.language
|
|
55
59
|
].filter(o => o !== undefined).length > 0, {
|
|
56
|
-
error: 'Specify at least one of the following options: workingDays, workingHoursStartTime, workingHoursEndTime, workingHoursTimeZone, autoReplyStatus, autoReplyExternalAudience, autoReplyExternalMessage, autoReplyInternalMessage, autoReplyStartDateTime, autoReplyStartTimeZone, autoReplyEndDateTime, autoReplyEndTimeZone, timeFormat, timeZone, dateFormat, delegateMeetingMessageDeliveryOptions, or language'
|
|
60
|
+
error: 'Specify at least one of the following options: workingDays, workingHoursStartTime, workingHoursEndTime, workingHoursTimeZone, autoReplyStatus, autoReplyExternalAudience, autoReplyExternalMessage, autoReplyInternalMessage, autoReplyStartDateTime, autoReplyStartTimeZone, autoReplyEndDateTime, autoReplyEndTimeZone, timeFormat, timeZone, dateFormat, delegateMeetingMessageDeliveryOptions, or language',
|
|
61
|
+
params: {
|
|
62
|
+
customCode: 'required'
|
|
63
|
+
}
|
|
57
64
|
});
|
|
58
65
|
}
|
|
59
66
|
async commandAction(logger, args) {
|
|
@@ -22,7 +22,11 @@ class PaEnvironmentGetCommand extends PowerAppsCommand {
|
|
|
22
22
|
getRefinedSchema(schema) {
|
|
23
23
|
return schema
|
|
24
24
|
.refine(options => !!options.name !== !!options.default, {
|
|
25
|
-
error: `Specify either name or default, but not both
|
|
25
|
+
error: `Specify either name or default, but not both.`,
|
|
26
|
+
params: {
|
|
27
|
+
customCode: 'optionSet',
|
|
28
|
+
options: ['name', 'default']
|
|
29
|
+
}
|
|
26
30
|
});
|
|
27
31
|
}
|
|
28
32
|
async commandAction(logger, args) {
|
|
@@ -23,7 +23,11 @@ class PpEnvironmentGetCommand extends PowerPlatformCommand {
|
|
|
23
23
|
getRefinedSchema(schema) {
|
|
24
24
|
return schema
|
|
25
25
|
.refine(options => !!options.name !== !!options.default, {
|
|
26
|
-
error: `Specify either name or default, but not both
|
|
26
|
+
error: `Specify either name or default, but not both.`,
|
|
27
|
+
params: {
|
|
28
|
+
customCode: 'optionSet',
|
|
29
|
+
options: ['name', 'default']
|
|
30
|
+
}
|
|
27
31
|
});
|
|
28
32
|
}
|
|
29
33
|
async commandAction(logger, args) {
|
|
@@ -28,7 +28,11 @@ class PpWebSiteGetCommand extends PowerPlatformCommand {
|
|
|
28
28
|
getRefinedSchema(schema) {
|
|
29
29
|
return schema
|
|
30
30
|
.refine(options => [options.url, options.id, options.name].filter(x => x !== undefined).length === 1, {
|
|
31
|
-
error: `Specify either url, id or name, but not multiple
|
|
31
|
+
error: `Specify either url, id or name, but not multiple.`,
|
|
32
|
+
params: {
|
|
33
|
+
customCode: 'optionSet',
|
|
34
|
+
options: ['url', 'id', 'name']
|
|
35
|
+
}
|
|
32
36
|
});
|
|
33
37
|
}
|
|
34
38
|
async commandAction(logger, args) {
|
|
@@ -31,7 +31,11 @@ class SpeContainerAddCommand extends GraphCommand {
|
|
|
31
31
|
getRefinedSchema(schema) {
|
|
32
32
|
return schema
|
|
33
33
|
.refine((options) => [options.containerTypeId, options.containerTypeName].filter(o => o !== undefined).length === 1, {
|
|
34
|
-
error: 'Use one of the following options: containerTypeId or containerTypeName.'
|
|
34
|
+
error: 'Use one of the following options: containerTypeId or containerTypeName.',
|
|
35
|
+
params: {
|
|
36
|
+
customCode: 'optionSet',
|
|
37
|
+
options: ['containerTypeId', 'containerTypeName']
|
|
38
|
+
}
|
|
35
39
|
});
|
|
36
40
|
}
|
|
37
41
|
async commandAction(logger, args) {
|
|
@@ -25,7 +25,11 @@ class SpeContainerRecycleBinItemListCommand extends GraphCommand {
|
|
|
25
25
|
getRefinedSchema(schema) {
|
|
26
26
|
return schema
|
|
27
27
|
.refine((options) => [options.containerTypeId, options.containerTypeName].filter(o => o !== undefined).length === 1, {
|
|
28
|
-
error: 'Use one of the following options: containerTypeId or containerTypeName.'
|
|
28
|
+
error: 'Use one of the following options: containerTypeId or containerTypeName.',
|
|
29
|
+
params: {
|
|
30
|
+
customCode: 'optionSet',
|
|
31
|
+
options: ['containerTypeId', 'containerTypeName']
|
|
32
|
+
}
|
|
29
33
|
});
|
|
30
34
|
}
|
|
31
35
|
async commandAction(logger, args) {
|
|
@@ -28,10 +28,18 @@ class SpeContainerRecycleBinItemRemoveCommand extends GraphCommand {
|
|
|
28
28
|
getRefinedSchema(schema) {
|
|
29
29
|
return schema
|
|
30
30
|
.refine((options) => [options.id, options.name].filter(o => o !== undefined).length === 1, {
|
|
31
|
-
error: 'Use one of the following options: id or name.'
|
|
31
|
+
error: 'Use one of the following options: id or name.',
|
|
32
|
+
params: {
|
|
33
|
+
customCode: 'optionSet',
|
|
34
|
+
options: ['id', 'name']
|
|
35
|
+
}
|
|
32
36
|
})
|
|
33
37
|
.refine((options) => !options.name || [options.containerTypeId, options.containerTypeName].filter(o => o !== undefined).length === 1, {
|
|
34
|
-
error: 'Use one of the following options when specifying the container name: containerTypeId or containerTypeName.'
|
|
38
|
+
error: 'Use one of the following options when specifying the container name: containerTypeId or containerTypeName.',
|
|
39
|
+
params: {
|
|
40
|
+
customCode: 'optionSet',
|
|
41
|
+
options: ['containerTypeId', 'containerTypeName']
|
|
42
|
+
}
|
|
35
43
|
})
|
|
36
44
|
.refine((options) => options.name || [options.containerTypeId, options.containerTypeName].filter(o => o !== undefined).length === 0, {
|
|
37
45
|
error: 'Options containerTypeId and containerTypeName are only required when removing a container by name.'
|
|
@@ -27,10 +27,18 @@ class SpeContainerRecycleBinItemRestoreCommand extends GraphCommand {
|
|
|
27
27
|
getRefinedSchema(schema) {
|
|
28
28
|
return schema
|
|
29
29
|
.refine((options) => [options.id, options.name].filter(o => o !== undefined).length === 1, {
|
|
30
|
-
error: 'Use one of the following options: id or name.'
|
|
30
|
+
error: 'Use one of the following options: id or name.',
|
|
31
|
+
params: {
|
|
32
|
+
customCode: 'optionSet',
|
|
33
|
+
options: ['id', 'name']
|
|
34
|
+
}
|
|
31
35
|
})
|
|
32
36
|
.refine((options) => !options.name || [options.containerTypeId, options.containerTypeName].filter(o => o !== undefined).length === 1, {
|
|
33
|
-
error: 'Use one of the following options when specifying the container name: containerTypeId or containerTypeName.'
|
|
37
|
+
error: 'Use one of the following options when specifying the container name: containerTypeId or containerTypeName.',
|
|
38
|
+
params: {
|
|
39
|
+
customCode: 'optionSet',
|
|
40
|
+
options: ['containerTypeId', 'containerTypeName']
|
|
41
|
+
}
|
|
34
42
|
})
|
|
35
43
|
.refine((options) => options.name || [options.containerTypeId, options.containerTypeName].filter(o => o !== undefined).length === 0, {
|
|
36
44
|
error: 'Options containerTypeId and containerTypeName are only required when restoring a container by name.'
|
|
@@ -27,10 +27,18 @@ class SpeContainerRemoveCommand extends GraphCommand {
|
|
|
27
27
|
getRefinedSchema(schema) {
|
|
28
28
|
return schema
|
|
29
29
|
.refine((options) => [options.id, options.name].filter(o => o !== undefined).length === 1, {
|
|
30
|
-
error: 'Use one of the following options: id or name.'
|
|
30
|
+
error: 'Use one of the following options: id or name.',
|
|
31
|
+
params: {
|
|
32
|
+
customCode: 'optionSet',
|
|
33
|
+
options: ['id', 'name']
|
|
34
|
+
}
|
|
31
35
|
})
|
|
32
36
|
.refine((options) => !options.name || [options.containerTypeId, options.containerTypeName].filter(o => o !== undefined).length === 1, {
|
|
33
|
-
error: 'Use one of the following options when specifying the container name: containerTypeId or containerTypeName.'
|
|
37
|
+
error: 'Use one of the following options when specifying the container name: containerTypeId or containerTypeName.',
|
|
38
|
+
params: {
|
|
39
|
+
customCode: 'optionSet',
|
|
40
|
+
options: ['containerTypeId', 'containerTypeName']
|
|
41
|
+
}
|
|
34
42
|
})
|
|
35
43
|
.refine((options) => options.name || [options.containerTypeId, options.containerTypeName].filter(o => o !== undefined).length === 0, {
|
|
36
44
|
error: 'Options containerTypeId and containerTypeName are only required when deleting a container by name.'
|
|
@@ -24,7 +24,11 @@ class SpeContainerTypeGetCommand extends GraphDelegatedCommand {
|
|
|
24
24
|
getRefinedSchema(schema) {
|
|
25
25
|
return schema
|
|
26
26
|
.refine(options => [options.id, options.name].filter(o => o !== undefined).length === 1, {
|
|
27
|
-
error: 'Use one of the following options: id or name.'
|
|
27
|
+
error: 'Use one of the following options: id or name.',
|
|
28
|
+
params: {
|
|
29
|
+
customCode: 'optionSet',
|
|
30
|
+
options: ['id', 'name']
|
|
31
|
+
}
|
|
28
32
|
});
|
|
29
33
|
}
|
|
30
34
|
async commandAction(logger, args) {
|
|
@@ -26,7 +26,11 @@ class SpeContainerTypeRemoveCommand extends SpoCommand {
|
|
|
26
26
|
getRefinedSchema(schema) {
|
|
27
27
|
return schema
|
|
28
28
|
.refine(options => [options.id, options.name].filter(o => o !== undefined).length === 1, {
|
|
29
|
-
error: 'Use one of the following options: id, name.'
|
|
29
|
+
error: 'Use one of the following options: id, name.',
|
|
30
|
+
params: {
|
|
31
|
+
customCode: 'optionSet',
|
|
32
|
+
options: ['id', 'name']
|
|
33
|
+
}
|
|
30
34
|
});
|
|
31
35
|
}
|
|
32
36
|
async commandAction(logger, args) {
|
|
@@ -77,7 +77,7 @@ class SpfxProjectDoctorCommand extends BaseProjectCommand {
|
|
|
77
77
|
'1.22.0',
|
|
78
78
|
'1.22.1',
|
|
79
79
|
'1.22.2',
|
|
80
|
-
'1.23.0
|
|
80
|
+
'1.23.0'
|
|
81
81
|
];
|
|
82
82
|
__classPrivateFieldGet(this, _SpfxProjectDoctorCommand_instances, "m", _SpfxProjectDoctorCommand_initTelemetry).call(this);
|
|
83
83
|
__classPrivateFieldGet(this, _SpfxProjectDoctorCommand_instances, "m", _SpfxProjectDoctorCommand_initOptions).call(this);
|
|
@@ -308,6 +308,8 @@ ${f.resolution}
|
|
|
308
308
|
const packagesDepExact = [];
|
|
309
309
|
const packagesDepUn = [];
|
|
310
310
|
const packagesDevUn = [];
|
|
311
|
+
const packagesOverride = [];
|
|
312
|
+
const packagesOverrideRemove = [];
|
|
311
313
|
findings.forEach(f => {
|
|
312
314
|
packageManager.mapPackageManagerCommand({
|
|
313
315
|
command: f.resolution,
|
|
@@ -315,6 +317,8 @@ ${f.resolution}
|
|
|
315
317
|
packagesDepExact,
|
|
316
318
|
packagesDepUn,
|
|
317
319
|
packagesDevUn,
|
|
320
|
+
packagesOverride,
|
|
321
|
+
packagesOverrideRemove,
|
|
318
322
|
packageMgr: this.packageManager
|
|
319
323
|
});
|
|
320
324
|
});
|
|
@@ -323,6 +327,8 @@ ${f.resolution}
|
|
|
323
327
|
packagesDevExact,
|
|
324
328
|
packagesDepUn,
|
|
325
329
|
packagesDevUn,
|
|
330
|
+
packagesOverride,
|
|
331
|
+
packagesOverrideRemove,
|
|
326
332
|
packageMgr: this.packageManager
|
|
327
333
|
});
|
|
328
334
|
if (this.packageManager === 'npm') {
|
|
@@ -7,7 +7,7 @@ var _DependencyRule_instances, _DependencyRule_needsUpdate, _DependencyRule_getM
|
|
|
7
7
|
import semver from 'semver';
|
|
8
8
|
import { JsonRule } from '../../JsonRule.js';
|
|
9
9
|
export class DependencyRule extends JsonRule {
|
|
10
|
-
constructor(packageName, packageVersion, isDevDep = false, isOptional = false, add = true) {
|
|
10
|
+
constructor(packageName, packageVersion, isDevDep = false, isOptional = false, add = true, isOverride = false) {
|
|
11
11
|
super();
|
|
12
12
|
_DependencyRule_instances.add(this);
|
|
13
13
|
this.packageName = packageName;
|
|
@@ -15,14 +15,20 @@ export class DependencyRule extends JsonRule {
|
|
|
15
15
|
this.isDevDep = isDevDep;
|
|
16
16
|
this.isOptional = isOptional;
|
|
17
17
|
this.add = add;
|
|
18
|
+
this.isOverride = isOverride;
|
|
18
19
|
}
|
|
19
20
|
get title() {
|
|
20
21
|
return this.packageName;
|
|
21
22
|
}
|
|
22
23
|
get description() {
|
|
23
|
-
return `${(this.add ? 'Upgrade' : 'Remove')} SharePoint Framework ${(this.isDevDep ? 'dev ' : '')}dependency package ${this.packageName}`;
|
|
24
|
+
return `${(this.add ? 'Upgrade' : 'Remove')} SharePoint Framework ${(this.isOverride ? 'override ' : this.isDevDep ? 'dev ' : '')}dependency package ${this.packageName}`;
|
|
24
25
|
}
|
|
25
26
|
get resolution() {
|
|
27
|
+
if (this.isOverride) {
|
|
28
|
+
return this.add ?
|
|
29
|
+
`override overrides.${this.packageName}=${this.packageVersion}` :
|
|
30
|
+
`removeOverride overrides.${this.packageName}`;
|
|
31
|
+
}
|
|
26
32
|
return this.add ?
|
|
27
33
|
`${(this.isDevDep ? 'installDev' : 'install')} ${this.packageName}@${this.packageVersion}` :
|
|
28
34
|
`${(this.isDevDep ? 'uninstallDev' : 'uninstall')} ${this.packageName}`;
|
|
@@ -44,10 +50,10 @@ export class DependencyRule extends JsonRule {
|
|
|
44
50
|
if (!project.packageJson) {
|
|
45
51
|
return;
|
|
46
52
|
}
|
|
47
|
-
const projectDependencies = this.isDevDep ? project.packageJson.devDependencies : project.packageJson.dependencies;
|
|
53
|
+
const projectDependencies = this.isOverride ? project.packageJson.overrides : this.isDevDep ? project.packageJson.devDependencies : project.packageJson.dependencies;
|
|
48
54
|
const versionEntry = projectDependencies ? projectDependencies[this.packageName] : '';
|
|
49
55
|
if (this.add) {
|
|
50
|
-
let jsonProperty = this.isDevDep ? 'devDependencies' : 'dependencies';
|
|
56
|
+
let jsonProperty = this.isOverride ? 'overrides' : this.isDevDep ? 'devDependencies' : 'dependencies';
|
|
51
57
|
if (versionEntry) {
|
|
52
58
|
jsonProperty += `.${this.packageName}`;
|
|
53
59
|
if (__classPrivateFieldGet(this, _DependencyRule_instances, "m", _DependencyRule_needsUpdate).call(this, this.packageVersion, versionEntry)) {
|
|
@@ -67,7 +73,7 @@ export class DependencyRule extends JsonRule {
|
|
|
67
73
|
}
|
|
68
74
|
}
|
|
69
75
|
else {
|
|
70
|
-
const jsonProperty = `${(this.isDevDep ? 'devDependencies' : 'dependencies')}.${this.packageName}`;
|
|
76
|
+
const jsonProperty = `${(this.isOverride ? 'overrides' : this.isDevDep ? 'devDependencies' : 'dependencies')}.${this.packageName}`;
|
|
71
77
|
if (versionEntry) {
|
|
72
78
|
const node = this.getAstNodeFromFile(project.packageJson, jsonProperty);
|
|
73
79
|
this.addFindingWithPosition(findings, node);
|
package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002035_DEVDEP_types_heft_jest.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DependencyRule } from "./DependencyRule.js";
|
|
2
2
|
export class FN002035_DEVDEP_types_heft_jest extends DependencyRule {
|
|
3
|
-
constructor(packageVersion) {
|
|
4
|
-
super('@types/heft-jest', packageVersion, true);
|
|
3
|
+
constructor(packageVersion, add = true) {
|
|
4
|
+
super('@types/heft-jest', packageVersion, true, false, add);
|
|
5
5
|
}
|
|
6
6
|
get id() {
|
|
7
7
|
return 'FN002035';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DependencyRule } from "./DependencyRule.js";
|
|
2
|
+
export class FN002036_DEVDEP_types_jest extends DependencyRule {
|
|
3
|
+
constructor(packageVersion) {
|
|
4
|
+
super('@types/jest', packageVersion, true);
|
|
5
|
+
}
|
|
6
|
+
get id() {
|
|
7
|
+
return 'FN002036';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=FN002036_DEVDEP_types_jest.js.map
|
package/dist/m365/spfx/commands/project/project-upgrade/rules/FN027001_OVERRIDES_rushstack_heft.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { DependencyRule } from "./DependencyRule.js";
|
|
2
|
+
export class FN027001_OVERRIDES_rushstack_heft extends DependencyRule {
|
|
3
|
+
constructor(version) {
|
|
4
|
+
super('@rushstack/heft', version, false, false, true, true);
|
|
5
|
+
}
|
|
6
|
+
get id() {
|
|
7
|
+
return 'FN027001';
|
|
8
|
+
}
|
|
9
|
+
visit(project, findings) {
|
|
10
|
+
// If an override entry for the package already exists in package.json,
|
|
11
|
+
// emit an extra finding to remove the existing override first. This avoids
|
|
12
|
+
// having to use a separate remove-override rule (e.g. FN027002) in the upgrade scripts.
|
|
13
|
+
if (project.packageJson?.overrides?.[this.packageName] &&
|
|
14
|
+
project.packageJson.overrides[this.packageName] !== this.packageVersion) {
|
|
15
|
+
const node = this.getAstNodeFromFile(project.packageJson, `overrides.${this.packageName}`);
|
|
16
|
+
findings.push({
|
|
17
|
+
id: `${this.id}_REMOVE`,
|
|
18
|
+
title: this.packageName,
|
|
19
|
+
description: `Remove existing SharePoint Framework override dependency package ${this.packageName}`,
|
|
20
|
+
occurrences: [{
|
|
21
|
+
file: this.file,
|
|
22
|
+
resolution: `removeOverride overrides.${this.packageName}`,
|
|
23
|
+
position: this.getPositionFromNode(node)
|
|
24
|
+
}],
|
|
25
|
+
resolutionType: 'cmd',
|
|
26
|
+
severity: 'Required',
|
|
27
|
+
supersedes: []
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
super.visit(project, findings);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=FN027001_OVERRIDES_rushstack_heft.js.map
|
|
@@ -48,7 +48,7 @@ import { FN021005_PKG_scripts_test } from './rules/FN021005_PKG_scripts_test.js'
|
|
|
48
48
|
import { FN021006_PKG_scripts_clean } from './rules/FN021006_PKG_scripts_clean.js';
|
|
49
49
|
import { FN021007_PKG_scripts_start } from './rules/FN021007_PKG_scripts_start.js';
|
|
50
50
|
import { FN021008_PKG_scripts_eject_webpack } from './rules/FN021008_PKG_scripts_eject_webpack.js';
|
|
51
|
-
import {
|
|
51
|
+
import { FN027001_OVERRIDES_rushstack_heft } from './rules/FN027001_OVERRIDES_rushstack_heft.js';
|
|
52
52
|
import { FN023003_GITIGNORE_libdts } from './rules/FN023003_GITIGNORE_libdts.js';
|
|
53
53
|
import { FN023004_GITIGNORE_libcommonjs } from './rules/FN023004_GITIGNORE_libcommonjs.js';
|
|
54
54
|
import { FN023005_GITIGNORE_libesm } from './rules/FN023005_GITIGNORE_libesm.js';
|
|
@@ -151,7 +151,7 @@ export default [
|
|
|
151
151
|
new FN021006_PKG_scripts_clean('heft clean'),
|
|
152
152
|
new FN021007_PKG_scripts_start('heft start --clean'),
|
|
153
153
|
new FN021008_PKG_scripts_eject_webpack('heft eject-webpack'),
|
|
154
|
-
new
|
|
154
|
+
new FN027001_OVERRIDES_rushstack_heft('1.1.2'),
|
|
155
155
|
new FN023003_GITIGNORE_libdts(),
|
|
156
156
|
new FN023004_GITIGNORE_libcommonjs(),
|
|
157
157
|
new FN023005_GITIGNORE_libesm(),
|
package/dist/m365/spfx/commands/project/project-upgrade/{upgrade-1.23.0-rc.0.js → upgrade-1.23.0.js}
RENAMED
|
@@ -28,39 +28,43 @@ import { FN002030_DEVDEP_microsoft_spfx_web_build_rig } from './rules/FN002030_D
|
|
|
28
28
|
import { FN002031_DEVDEP_rushstack_heft } from './rules/FN002031_DEVDEP_rushstack_heft.js';
|
|
29
29
|
import { FN002032_DEVDEP_typescript_eslint_parser } from './rules/FN002032_DEVDEP_typescript_eslint_parser.js';
|
|
30
30
|
import { FN002034_DEVDEP_microsoft_spfx_heft_plugins } from './rules/FN002034_DEVDEP_microsoft_spfx_heft_plugins.js';
|
|
31
|
+
import { FN002035_DEVDEP_types_heft_jest } from './rules/FN002035_DEVDEP_types_heft_jest.js';
|
|
32
|
+
import { FN002036_DEVDEP_types_jest } from './rules/FN002036_DEVDEP_types_jest.js';
|
|
31
33
|
import { FN010001_YORC_version } from './rules/FN010001_YORC_version.js';
|
|
32
34
|
import { FN015008_FILE_eslintrc_js } from './rules/FN015008_FILE_eslintrc_js.js';
|
|
33
35
|
import { FN015016_FILE_eslint_config_js } from './rules/FN015016_FILE_eslint_config_js.js';
|
|
34
|
-
import {
|
|
36
|
+
import { FN022001_SCSS_remove_fabric_react } from './rules/FN022001_SCSS_remove_fabric_react.js';
|
|
37
|
+
import { FN022002_SCSS_add_fabric_react } from './rules/FN022002_SCSS_add_fabric_react.js';
|
|
38
|
+
import { FN027001_OVERRIDES_rushstack_heft } from './rules/FN027001_OVERRIDES_rushstack_heft.js';
|
|
35
39
|
export default [
|
|
36
|
-
new FN001001_DEP_microsoft_sp_core_library('1.23.0
|
|
37
|
-
new FN001002_DEP_microsoft_sp_lodash_subset('1.23.0
|
|
38
|
-
new FN001003_DEP_microsoft_sp_office_ui_fabric_core('1.23.0
|
|
39
|
-
new FN001004_DEP_microsoft_sp_webpart_base('1.23.0
|
|
40
|
-
new FN001011_DEP_microsoft_sp_dialog('1.23.0
|
|
41
|
-
new FN001012_DEP_microsoft_sp_application_base('1.23.0
|
|
42
|
-
new FN001014_DEP_microsoft_sp_listview_extensibility('1.23.0
|
|
43
|
-
new FN001021_DEP_microsoft_sp_property_pane('1.23.0
|
|
44
|
-
new FN001023_DEP_microsoft_sp_component_base('1.23.0
|
|
45
|
-
new FN001024_DEP_microsoft_sp_diagnostics('1.23.0
|
|
46
|
-
new FN001025_DEP_microsoft_sp_dynamic_data('1.23.0
|
|
47
|
-
new FN001026_DEP_microsoft_sp_extension_base('1.23.0
|
|
48
|
-
new FN001027_DEP_microsoft_sp_http('1.23.0
|
|
49
|
-
new FN001028_DEP_microsoft_sp_list_subscription('1.23.0
|
|
50
|
-
new FN001029_DEP_microsoft_sp_loader('1.23.0
|
|
51
|
-
new FN001030_DEP_microsoft_sp_module_interfaces('1.23.0
|
|
52
|
-
new FN001031_DEP_microsoft_sp_odata_types('1.23.0
|
|
53
|
-
new FN001032_DEP_microsoft_sp_page_context('1.23.0
|
|
54
|
-
new FN001013_DEP_microsoft_decorators('1.23.0
|
|
55
|
-
new FN001034_DEP_microsoft_sp_adaptive_card_extension_base('1.23.0
|
|
56
|
-
new FN002002_DEVDEP_microsoft_sp_module_interfaces('1.23.0
|
|
57
|
-
new FN002022_DEVDEP_microsoft_eslint_plugin_spfx('1.23.0
|
|
58
|
-
new FN002023_DEVDEP_microsoft_eslint_config_spfx('1.23.0
|
|
59
|
-
new FN002030_DEVDEP_microsoft_spfx_web_build_rig('1.23.0
|
|
60
|
-
new FN002034_DEVDEP_microsoft_spfx_heft_plugins('1.23.0
|
|
61
|
-
new FN010001_YORC_version('1.23.0
|
|
62
|
-
new FN002031_DEVDEP_rushstack_heft('1.2.
|
|
63
|
-
new
|
|
40
|
+
new FN001001_DEP_microsoft_sp_core_library('1.23.0'),
|
|
41
|
+
new FN001002_DEP_microsoft_sp_lodash_subset('1.23.0'),
|
|
42
|
+
new FN001003_DEP_microsoft_sp_office_ui_fabric_core('1.23.0'),
|
|
43
|
+
new FN001004_DEP_microsoft_sp_webpart_base('1.23.0'),
|
|
44
|
+
new FN001011_DEP_microsoft_sp_dialog('1.23.0'),
|
|
45
|
+
new FN001012_DEP_microsoft_sp_application_base('1.23.0'),
|
|
46
|
+
new FN001014_DEP_microsoft_sp_listview_extensibility('1.23.0'),
|
|
47
|
+
new FN001021_DEP_microsoft_sp_property_pane('1.23.0'),
|
|
48
|
+
new FN001023_DEP_microsoft_sp_component_base('1.23.0'),
|
|
49
|
+
new FN001024_DEP_microsoft_sp_diagnostics('1.23.0'),
|
|
50
|
+
new FN001025_DEP_microsoft_sp_dynamic_data('1.23.0'),
|
|
51
|
+
new FN001026_DEP_microsoft_sp_extension_base('1.23.0'),
|
|
52
|
+
new FN001027_DEP_microsoft_sp_http('1.23.0'),
|
|
53
|
+
new FN001028_DEP_microsoft_sp_list_subscription('1.23.0'),
|
|
54
|
+
new FN001029_DEP_microsoft_sp_loader('1.23.0'),
|
|
55
|
+
new FN001030_DEP_microsoft_sp_module_interfaces('1.23.0'),
|
|
56
|
+
new FN001031_DEP_microsoft_sp_odata_types('1.23.0'),
|
|
57
|
+
new FN001032_DEP_microsoft_sp_page_context('1.23.0'),
|
|
58
|
+
new FN001013_DEP_microsoft_decorators('1.23.0'),
|
|
59
|
+
new FN001034_DEP_microsoft_sp_adaptive_card_extension_base('1.23.0'),
|
|
60
|
+
new FN002002_DEVDEP_microsoft_sp_module_interfaces('1.23.0'),
|
|
61
|
+
new FN002022_DEVDEP_microsoft_eslint_plugin_spfx('1.23.0'),
|
|
62
|
+
new FN002023_DEVDEP_microsoft_eslint_config_spfx('1.23.0'),
|
|
63
|
+
new FN002030_DEVDEP_microsoft_spfx_web_build_rig('1.23.0'),
|
|
64
|
+
new FN002034_DEVDEP_microsoft_spfx_heft_plugins('1.23.0'),
|
|
65
|
+
new FN010001_YORC_version('1.23.0'),
|
|
66
|
+
new FN002031_DEVDEP_rushstack_heft('1.2.17'),
|
|
67
|
+
new FN027001_OVERRIDES_rushstack_heft('1.2.17'),
|
|
64
68
|
new FN002025_DEVDEP_eslint_plugin_react_hooks('5.2.0'),
|
|
65
69
|
new FN002024_DEVDEP_eslint('9.37.0'),
|
|
66
70
|
new FN015016_FILE_eslint_config_js(true, `const spfxProfile = require('@microsoft/eslint-config-spfx/lib/flat-profiles/react');
|
|
@@ -79,6 +83,10 @@ module.exports = [
|
|
|
79
83
|
];`),
|
|
80
84
|
new FN015008_FILE_eslintrc_js(false),
|
|
81
85
|
new FN002021_DEVDEP_rushstack_eslint_config('4.5.2', false),
|
|
82
|
-
new FN002032_DEVDEP_typescript_eslint_parser('8.46.2', false)
|
|
86
|
+
new FN002032_DEVDEP_typescript_eslint_parser('8.46.2', false),
|
|
87
|
+
new FN002035_DEVDEP_types_heft_jest('1.0.2', false),
|
|
88
|
+
new FN002036_DEVDEP_types_jest('30.0.0'),
|
|
89
|
+
new FN022001_SCSS_remove_fabric_react('~@fluentui/react/dist/sass/References.scss'),
|
|
90
|
+
new FN022002_SCSS_add_fabric_react('pkg:@fluentui/react/dist/sass/References.scss')
|
|
83
91
|
];
|
|
84
|
-
//# sourceMappingURL=upgrade-1.23.0
|
|
92
|
+
//# sourceMappingURL=upgrade-1.23.0.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import os from 'os';
|
|
3
3
|
import path from 'path';
|
|
4
|
-
//
|
|
5
|
-
import { prerelease } from 'semver';
|
|
4
|
+
// Uncomment to support upgrading to preview releases
|
|
5
|
+
// import { prerelease } from 'semver';
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
import { CommandError, globalOptionsZod } from '../../../../Command.js';
|
|
8
8
|
import { fsUtil } from '../../../../utils/fsUtil.js';
|
|
@@ -12,7 +12,7 @@ import { BaseProjectCommand } from './base-project-command.js';
|
|
|
12
12
|
import { FN017001_MISC_npm_dedupe } from './project-upgrade/rules/FN017001_MISC_npm_dedupe.js';
|
|
13
13
|
export const options = z.strictObject({
|
|
14
14
|
...globalOptionsZod.shape,
|
|
15
|
-
packageManager: z.enum(['npm', 'pnpm'
|
|
15
|
+
packageManager: z.enum(['npm', 'pnpm']).default('npm'),
|
|
16
16
|
preview: z.boolean().optional(),
|
|
17
17
|
toVersion: z.string().optional().alias('v'),
|
|
18
18
|
shell: z.enum(['bash', 'powershell', 'cmd']).default('powershell'),
|
|
@@ -86,7 +86,7 @@ class SpfxProjectUpgradeCommand extends BaseProjectCommand {
|
|
|
86
86
|
'1.22.0',
|
|
87
87
|
'1.22.1',
|
|
88
88
|
'1.22.2',
|
|
89
|
-
'1.23.0
|
|
89
|
+
'1.23.0'
|
|
90
90
|
];
|
|
91
91
|
}
|
|
92
92
|
async commandAction(logger, args) {
|
|
@@ -95,16 +95,16 @@ class SpfxProjectUpgradeCommand extends BaseProjectCommand {
|
|
|
95
95
|
throw new CommandError(`Couldn't find project root folder`, SpfxProjectUpgradeCommand.ERROR_NO_PROJECT_ROOT_FOLDER);
|
|
96
96
|
}
|
|
97
97
|
this.toVersion = args.options.toVersion ? args.options.toVersion : this.supportedVersions[this.supportedVersions.length - 1];
|
|
98
|
-
//
|
|
99
|
-
if (!args.options.toVersion &&
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
98
|
+
// Uncomment to support upgrading to preview releases
|
|
99
|
+
// if (!args.options.toVersion &&
|
|
100
|
+
// !args.options.preview &&
|
|
101
|
+
// prerelease(this.toVersion)) {
|
|
102
|
+
// // no version and no preview specified while the current version to
|
|
103
|
+
// // upgrade to is a prerelease so let's grab the first non-preview version
|
|
104
|
+
// // since we're supporting only one preview version, it's sufficient for
|
|
105
|
+
// // us to take second to last version
|
|
106
|
+
// this.toVersion = this.supportedVersions[this.supportedVersions.length - 2];
|
|
107
|
+
// }
|
|
108
108
|
this.packageManager = args.options.packageManager || 'npm';
|
|
109
109
|
this.shell = args.options.shell || 'powershell';
|
|
110
110
|
if (this.supportedVersions.indexOf(this.toVersion) < 0) {
|
|
@@ -201,7 +201,15 @@ class SpfxProjectUpgradeCommand extends BaseProjectCommand {
|
|
|
201
201
|
// replace package operation tokens with command for the specific package manager
|
|
202
202
|
findingsToReport.forEach(f => {
|
|
203
203
|
// matches must be in this particular order to avoid false matches, eg.
|
|
204
|
-
// uninstallDev contains install
|
|
204
|
+
// uninstallDev contains install, removeOverride contains override
|
|
205
|
+
if (f.resolution.startsWith('removeOverride')) {
|
|
206
|
+
f.resolution = f.resolution.replace('removeOverride', packageManager.getPackageManagerCommand('removeOverride', this.packageManager));
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (f.resolution.startsWith('override')) {
|
|
210
|
+
f.resolution = f.resolution.replace('override', packageManager.getPackageManagerCommand('override', this.packageManager));
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
205
213
|
if (f.resolution.startsWith('uninstallDev')) {
|
|
206
214
|
f.resolution = f.resolution.replace('uninstallDev', packageManager.getPackageManagerCommand('uninstallDev', this.packageManager));
|
|
207
215
|
return;
|
|
@@ -296,7 +304,9 @@ class SpfxProjectUpgradeCommand extends BaseProjectCommand {
|
|
|
296
304
|
.filter((command) => command.indexOf(packageManager.getPackageManagerCommand('install', this.packageManager)) === -1 &&
|
|
297
305
|
command.indexOf(packageManager.getPackageManagerCommand('installDev', this.packageManager)) === -1 &&
|
|
298
306
|
command.indexOf(packageManager.getPackageManagerCommand('uninstall', this.packageManager)) === -1 &&
|
|
299
|
-
command.indexOf(packageManager.getPackageManagerCommand('uninstallDev', this.packageManager)) === -1
|
|
307
|
+
command.indexOf(packageManager.getPackageManagerCommand('uninstallDev', this.packageManager)) === -1 &&
|
|
308
|
+
command.indexOf(packageManager.getPackageManagerCommand('override', this.packageManager)) === -1 &&
|
|
309
|
+
command.indexOf(packageManager.getPackageManagerCommand('removeOverride', this.packageManager)) === -1))).join(os.EOL), os.EOL,
|
|
300
310
|
os.EOL,
|
|
301
311
|
Object.keys(reportData.modificationPerFile).map(file => {
|
|
302
312
|
return [
|
|
@@ -356,7 +366,9 @@ ${f.resolution}
|
|
|
356
366
|
.filter((command) => command.indexOf(packageManager.getPackageManagerCommand('install', this.packageManager)) === -1 &&
|
|
357
367
|
command.indexOf(packageManager.getPackageManagerCommand('installDev', this.packageManager)) === -1 &&
|
|
358
368
|
command.indexOf(packageManager.getPackageManagerCommand('uninstall', this.packageManager)) === -1 &&
|
|
359
|
-
command.indexOf(packageManager.getPackageManagerCommand('uninstallDev', this.packageManager)) === -1
|
|
369
|
+
command.indexOf(packageManager.getPackageManagerCommand('uninstallDev', this.packageManager)) === -1 &&
|
|
370
|
+
command.indexOf(packageManager.getPackageManagerCommand('override', this.packageManager)) === -1 &&
|
|
371
|
+
command.indexOf(packageManager.getPackageManagerCommand('removeOverride', this.packageManager)) === -1))).join(os.EOL), os.EOL,
|
|
360
372
|
'```', os.EOL,
|
|
361
373
|
os.EOL,
|
|
362
374
|
'### Modify files', os.EOL,
|
|
@@ -433,16 +445,19 @@ ${f.resolution}
|
|
|
433
445
|
const packagesDepExact = [];
|
|
434
446
|
const packagesDepUn = [];
|
|
435
447
|
const packagesDevUn = [];
|
|
448
|
+
const packagesOverride = [];
|
|
449
|
+
const packagesOverrideRemove = [];
|
|
436
450
|
findings.forEach(f => {
|
|
437
451
|
if (f.resolutionType === 'cmd') {
|
|
438
|
-
if (f.resolution.indexOf('npm') > -1
|
|
439
|
-
f.resolution.indexOf('yarn') > -1) {
|
|
452
|
+
if (f.resolution.indexOf('npm') > -1) {
|
|
440
453
|
packageManager.mapPackageManagerCommand({
|
|
441
454
|
command: f.resolution,
|
|
442
455
|
packagesDevExact,
|
|
443
456
|
packagesDepExact,
|
|
444
457
|
packagesDepUn,
|
|
445
458
|
packagesDevUn,
|
|
459
|
+
packagesOverride,
|
|
460
|
+
packagesOverrideRemove,
|
|
446
461
|
packageMgr: this.packageManager
|
|
447
462
|
});
|
|
448
463
|
}
|
|
@@ -468,6 +483,8 @@ ${f.resolution}
|
|
|
468
483
|
packagesDevExact,
|
|
469
484
|
packagesDepUn,
|
|
470
485
|
packagesDevUn,
|
|
486
|
+
packagesOverride,
|
|
487
|
+
packagesOverrideRemove,
|
|
471
488
|
packageMgr: this.packageManager
|
|
472
489
|
});
|
|
473
490
|
if (this.packageManager === 'npm') {
|
|
@@ -31,7 +31,11 @@ class SpoFileVersionKeepCommand extends SpoCommand {
|
|
|
31
31
|
getRefinedSchema(schema) {
|
|
32
32
|
return schema
|
|
33
33
|
.refine(options => [options.fileUrl, options.fileId].filter(o => o !== undefined).length === 1, {
|
|
34
|
-
error: `Specify 'fileUrl' or 'fileId', but not both
|
|
34
|
+
error: `Specify 'fileUrl' or 'fileId', but not both.`,
|
|
35
|
+
params: {
|
|
36
|
+
customCode: 'optionSet',
|
|
37
|
+
options: ['fileUrl', 'fileId']
|
|
38
|
+
}
|
|
35
39
|
});
|
|
36
40
|
}
|
|
37
41
|
async commandAction(logger, args) {
|
|
@@ -37,7 +37,11 @@ class SpoHomeSiteAddCommand extends SpoCommand {
|
|
|
37
37
|
getRefinedSchema(schema) {
|
|
38
38
|
return schema
|
|
39
39
|
.refine((options) => [options.audienceIds, options.audienceNames].filter(o => o !== undefined).length <= 1, {
|
|
40
|
-
message: 'You must specify either audienceIds or audienceNames but not both.'
|
|
40
|
+
message: 'You must specify either audienceIds or audienceNames but not both.',
|
|
41
|
+
params: {
|
|
42
|
+
customCode: 'optionSet',
|
|
43
|
+
options: ['audienceIds', 'audienceNames']
|
|
44
|
+
}
|
|
41
45
|
});
|
|
42
46
|
}
|
|
43
47
|
async commandAction(logger, args) {
|