@code-pushup/cli 0.57.0 → 0.58.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-pushup/cli",
3
- "version": "0.57.0",
3
+ "version": "0.58.0",
4
4
  "license": "MIT",
5
5
  "description": "A CLI to run all kinds of code quality measurements to align your team with company goals",
6
6
  "homepage": "https://code-pushup.dev",
@@ -42,9 +42,9 @@
42
42
  "code-pushup": "./src/index.js"
43
43
  },
44
44
  "dependencies": {
45
- "@code-pushup/models": "0.57.0",
46
- "@code-pushup/core": "0.57.0",
47
- "@code-pushup/utils": "0.57.0",
45
+ "@code-pushup/models": "0.58.0",
46
+ "@code-pushup/core": "0.58.0",
47
+ "@code-pushup/utils": "0.58.0",
48
48
  "yargs": "^17.7.2",
49
49
  "ansis": "^3.3.0",
50
50
  "simple-git": "^3.20.0"
@@ -1,2 +1,5 @@
1
+ import type { CoreConfig, PluginConfig } from '@code-pushup/models';
1
2
  import type { FilterOptions } from './filter.model.js';
2
3
  export declare function filterMiddleware<T extends FilterOptions>(originalProcessArgs: T): T;
4
+ export declare function filterSkippedInPlugins(plugins: PluginConfig[]): PluginConfig[];
5
+ export declare function filterSkippedCategories(categories: CoreConfig['categories'], plugins: CoreConfig['plugins']): CoreConfig['categories'];
@@ -1,45 +1,52 @@
1
1
  import { filterItemRefsBy } from '@code-pushup/utils';
2
- import { handleConflictingOptions, validateFilterOption, validateFinalState, } from './validate-filter-options.utils.js';
2
+ import { applyFilters, extractSkippedItems, filterPluginsFromCategories, filterSkippedItems, isValidCategoryRef, } from './filter.middleware.utils.js';
3
+ import { handleConflictingOptions, validateFilterOption, validateFinalState, validateSkippedCategories, } from './validate-filter-options.utils.js';
4
+ // eslint-disable-next-line max-lines-per-function
3
5
  export function filterMiddleware(originalProcessArgs) {
4
- const { plugins, categories, skipCategories = [], onlyCategories = [], skipPlugins = [], onlyPlugins = [], verbose = false, } = originalProcessArgs;
6
+ const { categories: rcCategories, plugins: rcPlugins, skipCategories = [], onlyCategories = [], skipPlugins = [], onlyPlugins = [], verbose = false, } = originalProcessArgs;
7
+ const plugins = filterSkippedInPlugins(rcPlugins);
8
+ const categories = filterSkippedCategories(rcCategories, plugins);
5
9
  if (skipCategories.length === 0 &&
6
10
  onlyCategories.length === 0 &&
7
11
  skipPlugins.length === 0 &&
8
12
  onlyPlugins.length === 0) {
9
- return originalProcessArgs;
13
+ if (rcCategories && categories) {
14
+ validateSkippedCategories(rcCategories, categories, verbose);
15
+ }
16
+ return {
17
+ ...originalProcessArgs,
18
+ ...(categories && { categories }),
19
+ plugins,
20
+ };
10
21
  }
11
22
  handleConflictingOptions('categories', onlyCategories, skipCategories);
12
23
  handleConflictingOptions('plugins', onlyPlugins, skipPlugins);
13
- const filteredCategories = applyCategoryFilters({ categories, plugins }, skipCategories, onlyCategories, verbose);
14
- const filteredPlugins = applyPluginFilters({ categories: filteredCategories, plugins }, skipPlugins, onlyPlugins, verbose);
24
+ const skippedPlugins = extractSkippedItems(rcPlugins, plugins);
25
+ const skippedCategories = extractSkippedItems(rcCategories, categories);
26
+ const filteredCategories = applyCategoryFilters({ categories, plugins }, skippedCategories, { skipCategories, onlyCategories, verbose });
27
+ const filteredPlugins = applyPluginFilters({ categories: filteredCategories, plugins }, skippedPlugins, { skipPlugins, onlyPlugins, verbose });
15
28
  const finalCategories = filteredCategories
16
29
  ? filterItemRefsBy(filteredCategories, ref => filteredPlugins.some(plugin => plugin.slug === ref.plugin))
17
30
  : filteredCategories;
18
- validateFinalState({ categories: finalCategories, plugins: filteredPlugins }, { categories, plugins });
31
+ validateFinalState({ categories: finalCategories, plugins: filteredPlugins }, { categories: rcCategories, plugins: rcPlugins });
19
32
  return {
20
33
  ...originalProcessArgs,
21
34
  plugins: filteredPlugins,
22
35
  categories: finalCategories,
23
36
  };
24
37
  }
25
- function applyFilters(items, skipItems, onlyItems, key) {
26
- return items.filter(item => {
27
- const itemKey = item[key];
28
- return (!skipItems.includes(itemKey) &&
29
- (onlyItems.length === 0 || onlyItems.includes(itemKey)));
30
- });
31
- }
32
- function applyCategoryFilters({ categories, plugins }, skipCategories, onlyCategories, verbose) {
38
+ function applyCategoryFilters({ categories, plugins }, skippedCategories, options) {
39
+ const { skipCategories = [], onlyCategories = [], verbose = false } = options;
33
40
  if ((skipCategories.length === 0 && onlyCategories.length === 0) ||
34
- !categories ||
35
- categories.length === 0) {
41
+ ((!categories || categories.length === 0) && skippedCategories.length === 0)) {
36
42
  return categories;
37
43
  }
38
- validateFilterOption('skipCategories', { plugins, categories }, { itemsToFilter: skipCategories, verbose });
39
- validateFilterOption('onlyCategories', { plugins, categories }, { itemsToFilter: onlyCategories, verbose });
40
- return applyFilters(categories, skipCategories, onlyCategories, 'slug');
44
+ validateFilterOption('skipCategories', { plugins, categories }, { itemsToFilter: skipCategories, skippedItems: skippedCategories, verbose });
45
+ validateFilterOption('onlyCategories', { plugins, categories }, { itemsToFilter: onlyCategories, skippedItems: skippedCategories, verbose });
46
+ return applyFilters(categories ?? [], skipCategories, onlyCategories, 'slug');
41
47
  }
42
- function applyPluginFilters({ categories, plugins }, skipPlugins, onlyPlugins, verbose) {
48
+ function applyPluginFilters({ categories, plugins }, skippedPlugins, options) {
49
+ const { skipPlugins = [], onlyPlugins = [], verbose = false } = options;
43
50
  const filteredPlugins = filterPluginsFromCategories({
44
51
  categories,
45
52
  plugins,
@@ -47,15 +54,28 @@ function applyPluginFilters({ categories, plugins }, skipPlugins, onlyPlugins, v
47
54
  if (skipPlugins.length === 0 && onlyPlugins.length === 0) {
48
55
  return filteredPlugins;
49
56
  }
50
- validateFilterOption('skipPlugins', { plugins: filteredPlugins, categories }, { itemsToFilter: skipPlugins, verbose });
51
- validateFilterOption('onlyPlugins', { plugins: filteredPlugins, categories }, { itemsToFilter: onlyPlugins, verbose });
57
+ validateFilterOption('skipPlugins', { plugins: filteredPlugins, categories }, { itemsToFilter: skipPlugins, skippedItems: skippedPlugins, verbose });
58
+ validateFilterOption('onlyPlugins', { plugins: filteredPlugins, categories }, { itemsToFilter: onlyPlugins, skippedItems: skippedPlugins, verbose });
52
59
  return applyFilters(filteredPlugins, skipPlugins, onlyPlugins, 'slug');
53
60
  }
54
- function filterPluginsFromCategories({ categories, plugins, }) {
55
- if (!categories || categories.length === 0) {
56
- return plugins;
57
- }
58
- const validPluginSlugs = new Set(categories.flatMap(category => category.refs.map(ref => ref.plugin)));
59
- return plugins.filter(plugin => validPluginSlugs.has(plugin.slug));
61
+ export function filterSkippedInPlugins(plugins) {
62
+ return plugins.map((plugin) => {
63
+ const filteredAudits = filterSkippedItems(plugin.audits);
64
+ return {
65
+ ...plugin,
66
+ ...(plugin.groups && {
67
+ groups: filterItemRefsBy(filterSkippedItems(plugin.groups), ref => filteredAudits.some(({ slug }) => slug === ref.slug)),
68
+ }),
69
+ audits: filteredAudits,
70
+ };
71
+ });
72
+ }
73
+ export function filterSkippedCategories(categories, plugins) {
74
+ return categories
75
+ ?.map(category => {
76
+ const validRefs = category.refs.filter(ref => isValidCategoryRef(ref, plugins));
77
+ return validRefs.length > 0 ? { ...category, refs: validRefs } : null;
78
+ })
79
+ .filter((category) => category != null);
60
80
  }
61
81
  //# sourceMappingURL=filter.middleware.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.middleware.js","sourceRoot":"","sources":["../../../../../../packages/cli/src/lib/implementation/filter.middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter.middleware.js","sourceRoot":"","sources":["../../../../../../packages/cli/src/lib/implementation/filter.middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { CategoryRef, CoreConfig } from '@code-pushup/models';
2
+ import type { Filterables } from './filter.model';
3
+ export declare function applyFilters<T>(items: T[], skipItems: string[], onlyItems: string[], key: keyof T): T[];
4
+ export declare function extractSkippedItems<T extends {
5
+ slug: string;
6
+ }>(originalItems: T[] | undefined, filteredItems: T[] | undefined): string[];
7
+ export declare function filterSkippedItems<T extends {
8
+ isSkipped?: boolean;
9
+ }>(items: T[] | undefined): Omit<T, 'isSkipped'>[];
10
+ export declare function isValidCategoryRef(ref: CategoryRef, plugins: Filterables['plugins']): boolean;
11
+ export declare function filterPluginsFromCategories({ categories, plugins, }: Filterables): CoreConfig['plugins'];
@@ -0,0 +1,41 @@
1
+ export function applyFilters(items, skipItems, onlyItems, key) {
2
+ return items.filter(item => {
3
+ const itemKey = item[key];
4
+ return (!skipItems.includes(itemKey) &&
5
+ (onlyItems.length === 0 || onlyItems.includes(itemKey)));
6
+ });
7
+ }
8
+ export function extractSkippedItems(originalItems, filteredItems) {
9
+ if (!originalItems || !filteredItems) {
10
+ return [];
11
+ }
12
+ const filteredSlugs = new Set(filteredItems.map(({ slug }) => slug));
13
+ return originalItems
14
+ .filter(({ slug }) => !filteredSlugs.has(slug))
15
+ .map(({ slug }) => slug);
16
+ }
17
+ export function filterSkippedItems(items) {
18
+ return (items ?? [])
19
+ .filter(({ isSkipped }) => isSkipped !== true)
20
+ .map(({ isSkipped, ...props }) => props);
21
+ }
22
+ export function isValidCategoryRef(ref, plugins) {
23
+ const plugin = plugins.find(({ slug }) => slug === ref.plugin);
24
+ if (!plugin) {
25
+ return false;
26
+ }
27
+ switch (ref.type) {
28
+ case 'audit':
29
+ return plugin.audits.some(({ slug }) => slug === ref.slug);
30
+ case 'group':
31
+ return plugin.groups?.some(({ slug }) => slug === ref.slug) ?? false;
32
+ }
33
+ }
34
+ export function filterPluginsFromCategories({ categories, plugins, }) {
35
+ if (!categories || categories.length === 0) {
36
+ return plugins;
37
+ }
38
+ const validPluginSlugs = new Set(categories.flatMap(category => category.refs.map(ref => ref.plugin)));
39
+ return plugins.filter(plugin => validPluginSlugs.has(plugin.slug));
40
+ }
41
+ //# sourceMappingURL=filter.middleware.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.middleware.utils.js","sourceRoot":"","sources":["../../../../../../packages/cli/src/lib/implementation/filter.middleware.utils.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,YAAY,CAC1B,KAAU,EACV,SAAmB,EACnB,SAAmB,EACnB,GAAY;IAEZ,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAsB,CAAC;QAC/C,OAAO,CACL,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC5B,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CACxD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,aAA8B,EAC9B,aAA8B;IAE9B,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,EAAE,CAAC;QACrC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,OAAO,aAAa;SACjB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC9C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAsB;IAEtB,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;SACjB,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC;SAC7C,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,GAAgB,EAChB,OAA+B;IAE/B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IACD,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7D,KAAK,OAAO;YACV,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;IACzE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,EAC1C,UAAU,EACV,OAAO,GACK;IACZ,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CACrE,CAAC;IACF,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,CAAC"}
@@ -1,13 +1,16 @@
1
- import type { CategoryConfig, PluginConfig } from '@code-pushup/models';
1
+ import type { PluginConfig } from '@code-pushup/models';
2
2
  import type { FilterOptionType, Filterables } from './filter.model.js';
3
3
  export declare class OptionValidationError extends Error {
4
4
  }
5
- export declare function validateFilterOption(option: FilterOptionType, { plugins, categories }: Filterables, { itemsToFilter, verbose }: {
5
+ export declare function validateFilterOption(option: FilterOptionType, { plugins, categories }: Filterables, { itemsToFilter, skippedItems, verbose, }: {
6
6
  itemsToFilter: string[];
7
+ skippedItems: string[];
7
8
  verbose: boolean;
8
9
  }): void;
10
+ export declare function validateSkippedCategories(originalCategories: NonNullable<Filterables['categories']>, filteredCategories: NonNullable<Filterables['categories']>, verbose: boolean): void;
9
11
  export declare function validateFinalState(filteredItems: Filterables, originalItems: Filterables): void;
12
+ export declare function pluginHasZeroWeightRefs(plugin: Pick<PluginConfig, 'groups' | 'audits'>): boolean;
10
13
  export declare function isOnlyOption(option: FilterOptionType): boolean;
11
14
  export declare function getItemType(option: FilterOptionType, count: number): string;
12
- export declare function createValidationMessage(option: FilterOptionType, invalidItems: string[], validItems: Pick<PluginConfig | CategoryConfig, 'slug'>[]): string;
15
+ export declare function createValidationMessage(option: FilterOptionType, invalidItems: string[], validItems: Set<string>): string;
13
16
  export declare function handleConflictingOptions(type: 'categories' | 'plugins', onlyItems: string[], skipItems: string[]): void;
@@ -1,32 +1,56 @@
1
1
  import { capitalize, filterItemRefsBy, pluralize, ui, } from '@code-pushup/utils';
2
2
  export class OptionValidationError extends Error {
3
3
  }
4
- export function validateFilterOption(option, { plugins, categories = [] }, { itemsToFilter, verbose }) {
5
- const itemsToFilterSet = new Set(itemsToFilter);
4
+ // eslint-disable-next-line max-lines-per-function
5
+ export function validateFilterOption(option, { plugins, categories = [] }, { itemsToFilter, skippedItems, verbose, }) {
6
6
  const validItems = isCategoryOption(option)
7
- ? categories
7
+ ? categories.map(({ slug }) => slug)
8
8
  : isPluginOption(option)
9
- ? plugins
9
+ ? plugins.map(({ slug }) => slug)
10
10
  : [];
11
- const invalidItems = itemsToFilter.filter(item => !validItems.some(({ slug }) => slug === item));
12
- const message = createValidationMessage(option, invalidItems, validItems);
13
- if (isOnlyOption(option) &&
14
- itemsToFilterSet.size > 0 &&
15
- itemsToFilterSet.size === invalidItems.length) {
16
- throw new OptionValidationError(message);
17
- }
18
- if (invalidItems.length > 0) {
11
+ const itemsToFilterSet = new Set(itemsToFilter);
12
+ const skippedItemsSet = new Set(skippedItems);
13
+ const validItemsSet = new Set(validItems);
14
+ const nonExistentItems = itemsToFilter.filter(item => !validItemsSet.has(item) && !skippedItemsSet.has(item));
15
+ const skippedValidItems = itemsToFilter.filter(item => skippedItemsSet.has(item));
16
+ if (nonExistentItems.length > 0) {
17
+ const message = createValidationMessage(option, nonExistentItems, validItemsSet);
18
+ if (isOnlyOption(option) &&
19
+ itemsToFilterSet.size > 0 &&
20
+ itemsToFilterSet.size === nonExistentItems.length) {
21
+ throw new OptionValidationError(message);
22
+ }
19
23
  ui().logger.warning(message);
20
24
  }
25
+ if (skippedValidItems.length > 0 && verbose) {
26
+ const item = getItemType(option, skippedValidItems.length);
27
+ const prefix = skippedValidItems.length === 1 ? `a skipped` : `skipped`;
28
+ ui().logger.warning(`The --${option} argument references ${prefix} ${item}: ${skippedValidItems.join(', ')}.`);
29
+ }
21
30
  if (isPluginOption(option) && categories.length > 0 && verbose) {
22
- const removedCategorySlugs = filterItemRefsBy(categories, ({ plugin }) => isOnlyOption(option)
31
+ const removedCategories = filterItemRefsBy(categories, ({ plugin }) => isOnlyOption(option)
23
32
  ? !itemsToFilterSet.has(plugin)
24
33
  : itemsToFilterSet.has(plugin)).map(({ slug }) => slug);
25
- if (removedCategorySlugs.length > 0) {
26
- ui().logger.info(`The --${option} argument removed the following categories: ${removedCategorySlugs.join(', ')}.`);
34
+ if (removedCategories.length > 0) {
35
+ ui().logger.info(`The --${option} argument removed the following categories: ${removedCategories.join(', ')}.`);
27
36
  }
28
37
  }
29
38
  }
39
+ export function validateSkippedCategories(originalCategories, filteredCategories, verbose) {
40
+ const skippedCategories = originalCategories.filter(original => !filteredCategories.some(({ slug }) => slug === original.slug));
41
+ if (skippedCategories.length > 0 && verbose) {
42
+ skippedCategories.forEach(category => {
43
+ ui().logger.info(`Category ${category.slug} was removed because all its refs were skipped. Affected refs: ${category.refs
44
+ .map(ref => `${ref.slug} (${ref.type})`)
45
+ .join(', ')}`);
46
+ });
47
+ }
48
+ if (filteredCategories.length === 0) {
49
+ throw new OptionValidationError(`No categories remain after filtering. Removed categories: ${skippedCategories
50
+ .map(({ slug }) => slug)
51
+ .join(', ')}`);
52
+ }
53
+ }
30
54
  export function validateFinalState(filteredItems, originalItems) {
31
55
  const { categories: filteredCategories = [], plugins: filteredPlugins } = filteredItems;
32
56
  const { categories: originalCategories = [], plugins: originalPlugins } = originalItems;
@@ -37,6 +61,15 @@ export function validateFinalState(filteredItems, originalItems) {
37
61
  const availableCategories = originalCategories.map(c => c.slug).join(', ') || 'none';
38
62
  throw new OptionValidationError(`Nothing to report. No plugins or categories are available after filtering. Available plugins: ${availablePlugins}. Available categories: ${availableCategories}.`);
39
63
  }
64
+ if (filteredPlugins.some(pluginHasZeroWeightRefs)) {
65
+ throw new OptionValidationError('Some groups in the filtered plugins have only zero-weight references. Please adjust your filters or weights.');
66
+ }
67
+ }
68
+ export function pluginHasZeroWeightRefs(plugin) {
69
+ if (!plugin.groups || plugin.groups.length === 0) {
70
+ return false;
71
+ }
72
+ return plugin.groups.some(group => group.refs.reduce((sum, ref) => sum + ref.weight, 0) === 0);
40
73
  }
41
74
  function isCategoryOption(option) {
42
75
  return option.endsWith('Categories');
@@ -61,11 +94,11 @@ export function createValidationMessage(option, invalidItems, validItems) {
61
94
  ? `a ${invalidItem} that does not exist:`
62
95
  : `${invalidItem} that do not exist:`;
63
96
  const invalidSlugs = invalidItems.join(', ');
64
- const validItem = getItemType(option, validItems.length);
65
- const validItemText = validItems.length === 1
97
+ const validItem = getItemType(option, validItems.size);
98
+ const validItemText = validItems.size === 1
66
99
  ? `The only valid ${validItem} is`
67
100
  : `Valid ${validItem} are`;
68
- const validSlugs = validItems.map(({ slug }) => slug).join(', ');
101
+ const validSlugs = [...validItems].join(', ');
69
102
  return `The --${option} argument references ${invalidItemText} ${invalidSlugs}. ${validItemText} ${validSlugs}.`;
70
103
  }
71
104
  export function handleConflictingOptions(type, onlyItems, skipItems) {
@@ -1 +1 @@
1
- {"version":3,"file":"validate-filter-options.utils.js","sourceRoot":"","sources":["../../../../../../packages/cli/src/lib/implementation/validate-filter-options.utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-filter-options.utils.js","sourceRoot":"","sources":["../../../../../../packages/cli/src/lib/implementation/validate-filter-options.utils.ts"],"names":[],"mappings":"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"}