@code-pushup/cli 0.56.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.
Files changed (84) hide show
  1. package/package.json +10 -9
  2. package/src/index.js +6 -0
  3. package/src/index.js.map +1 -0
  4. package/src/lib/autorun/autorun-command.js +43 -0
  5. package/src/lib/autorun/autorun-command.js.map +1 -0
  6. package/src/lib/cli.js +40 -0
  7. package/src/lib/cli.js.map +1 -0
  8. package/src/lib/collect/collect-command.js +38 -0
  9. package/src/lib/collect/collect-command.js.map +1 -0
  10. package/src/lib/commands.js +21 -0
  11. package/src/lib/commands.js.map +1 -0
  12. package/src/lib/compare/compare-command.d.ts +1 -1
  13. package/src/lib/compare/compare-command.js +24 -0
  14. package/src/lib/compare/compare-command.js.map +1 -0
  15. package/src/lib/constants.js +3 -0
  16. package/src/lib/constants.js.map +1 -0
  17. package/src/lib/history/history-command.js +50 -0
  18. package/src/lib/history/history-command.js.map +1 -0
  19. package/src/lib/history/history.model.js +2 -0
  20. package/src/lib/history/history.model.js.map +1 -0
  21. package/src/lib/history/history.options.d.ts +1 -1
  22. package/src/lib/history/history.options.js +41 -0
  23. package/src/lib/history/history.options.js.map +1 -0
  24. package/src/lib/history/utils.d.ts +1 -1
  25. package/src/lib/history/utils.js +27 -0
  26. package/src/lib/history/utils.js.map +1 -0
  27. package/src/lib/implementation/compare.model.js +2 -0
  28. package/src/lib/implementation/compare.model.js.map +1 -0
  29. package/src/lib/implementation/compare.options.d.ts +1 -1
  30. package/src/lib/implementation/compare.options.js +19 -0
  31. package/src/lib/implementation/compare.options.js.map +1 -0
  32. package/src/lib/implementation/core-config.middleware.d.ts +3 -3
  33. package/src/lib/implementation/core-config.middleware.js +31 -0
  34. package/src/lib/implementation/core-config.middleware.js.map +1 -0
  35. package/src/lib/implementation/core-config.model.js +2 -0
  36. package/src/lib/implementation/core-config.model.js.map +1 -0
  37. package/src/lib/implementation/core-config.options.d.ts +1 -1
  38. package/src/lib/implementation/core-config.options.js +43 -0
  39. package/src/lib/implementation/core-config.options.js.map +1 -0
  40. package/src/lib/implementation/filter.middleware.d.ts +4 -1
  41. package/src/lib/implementation/filter.middleware.js +81 -0
  42. package/src/lib/implementation/filter.middleware.js.map +1 -0
  43. package/src/lib/implementation/filter.middleware.utils.d.ts +11 -0
  44. package/src/lib/implementation/filter.middleware.utils.js +41 -0
  45. package/src/lib/implementation/filter.middleware.utils.js.map +1 -0
  46. package/src/lib/implementation/filter.model.js +2 -0
  47. package/src/lib/implementation/filter.model.js.map +1 -0
  48. package/src/lib/implementation/filter.options.d.ts +1 -1
  49. package/src/lib/implementation/filter.options.js +36 -0
  50. package/src/lib/implementation/filter.options.js.map +1 -0
  51. package/src/lib/implementation/formatting.js +26 -0
  52. package/src/lib/implementation/formatting.js.map +1 -0
  53. package/src/lib/implementation/global.model.d.ts +1 -1
  54. package/src/lib/implementation/global.model.js +2 -0
  55. package/src/lib/implementation/global.model.js.map +1 -0
  56. package/src/lib/implementation/global.options.d.ts +1 -1
  57. package/src/lib/implementation/global.options.js +23 -0
  58. package/src/lib/implementation/global.options.js.map +1 -0
  59. package/src/lib/implementation/global.utils.js +45 -0
  60. package/src/lib/implementation/global.utils.js.map +1 -0
  61. package/src/lib/implementation/logging.js +24 -0
  62. package/src/lib/implementation/logging.js.map +1 -0
  63. package/src/lib/implementation/merge-diffs.model.js +2 -0
  64. package/src/lib/implementation/merge-diffs.model.js.map +1 -0
  65. package/src/lib/implementation/merge-diffs.options.d.ts +1 -1
  66. package/src/lib/implementation/merge-diffs.options.js +10 -0
  67. package/src/lib/implementation/merge-diffs.options.js.map +1 -0
  68. package/src/lib/implementation/validate-filter-options.utils.d.ts +7 -4
  69. package/src/lib/implementation/validate-filter-options.utils.js +119 -0
  70. package/src/lib/implementation/validate-filter-options.utils.js.map +1 -0
  71. package/src/lib/merge-diffs/merge-diffs-command.js +22 -0
  72. package/src/lib/merge-diffs/merge-diffs-command.js.map +1 -0
  73. package/src/lib/middlewares.js +13 -0
  74. package/src/lib/middlewares.js.map +1 -0
  75. package/src/lib/options.d.ts +1 -1
  76. package/src/lib/options.js +17 -0
  77. package/src/lib/options.js.map +1 -0
  78. package/src/lib/print-config/print-config-command.js +17 -0
  79. package/src/lib/print-config/print-config-command.js.map +1 -0
  80. package/src/lib/upload/upload-command.js +26 -0
  81. package/src/lib/upload/upload-command.js.map +1 -0
  82. package/src/lib/yargs-cli.js +105 -0
  83. package/src/lib/yargs-cli.js.map +1 -0
  84. package/index.js +0 -4262
@@ -0,0 +1,81 @@
1
+ import { filterItemRefsBy } from '@code-pushup/utils';
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
5
+ export function filterMiddleware(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);
9
+ if (skipCategories.length === 0 &&
10
+ onlyCategories.length === 0 &&
11
+ skipPlugins.length === 0 &&
12
+ onlyPlugins.length === 0) {
13
+ if (rcCategories && categories) {
14
+ validateSkippedCategories(rcCategories, categories, verbose);
15
+ }
16
+ return {
17
+ ...originalProcessArgs,
18
+ ...(categories && { categories }),
19
+ plugins,
20
+ };
21
+ }
22
+ handleConflictingOptions('categories', onlyCategories, skipCategories);
23
+ handleConflictingOptions('plugins', onlyPlugins, skipPlugins);
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 });
28
+ const finalCategories = filteredCategories
29
+ ? filterItemRefsBy(filteredCategories, ref => filteredPlugins.some(plugin => plugin.slug === ref.plugin))
30
+ : filteredCategories;
31
+ validateFinalState({ categories: finalCategories, plugins: filteredPlugins }, { categories: rcCategories, plugins: rcPlugins });
32
+ return {
33
+ ...originalProcessArgs,
34
+ plugins: filteredPlugins,
35
+ categories: finalCategories,
36
+ };
37
+ }
38
+ function applyCategoryFilters({ categories, plugins }, skippedCategories, options) {
39
+ const { skipCategories = [], onlyCategories = [], verbose = false } = options;
40
+ if ((skipCategories.length === 0 && onlyCategories.length === 0) ||
41
+ ((!categories || categories.length === 0) && skippedCategories.length === 0)) {
42
+ return categories;
43
+ }
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');
47
+ }
48
+ function applyPluginFilters({ categories, plugins }, skippedPlugins, options) {
49
+ const { skipPlugins = [], onlyPlugins = [], verbose = false } = options;
50
+ const filteredPlugins = filterPluginsFromCategories({
51
+ categories,
52
+ plugins,
53
+ });
54
+ if (skipPlugins.length === 0 && onlyPlugins.length === 0) {
55
+ return filteredPlugins;
56
+ }
57
+ validateFilterOption('skipPlugins', { plugins: filteredPlugins, categories }, { itemsToFilter: skipPlugins, skippedItems: skippedPlugins, verbose });
58
+ validateFilterOption('onlyPlugins', { plugins: filteredPlugins, categories }, { itemsToFilter: onlyPlugins, skippedItems: skippedPlugins, verbose });
59
+ return applyFilters(filteredPlugins, skipPlugins, onlyPlugins, 'slug');
60
+ }
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);
80
+ }
81
+ //# sourceMappingURL=filter.middleware.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=filter.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.model.js","sourceRoot":"","sources":["../../../../../../packages/cli/src/lib/implementation/filter.model.ts"],"names":[],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  import type { Options } from 'yargs';
2
- import type { FilterCliOptions } from './filter.model';
2
+ import type { FilterCliOptions } from './filter.model.js';
3
3
  export declare const skipCategoriesOption: Options;
4
4
  export declare const onlyCategoriesOption: Options;
5
5
  export declare const skipPluginsOption: Options;
@@ -0,0 +1,36 @@
1
+ import { coerceArray } from './global.utils.js';
2
+ export const skipCategoriesOption = {
3
+ describe: 'List of categories to skip. If not set all categories are run.',
4
+ type: 'array',
5
+ default: [],
6
+ coerce: coerceArray,
7
+ };
8
+ export const onlyCategoriesOption = {
9
+ describe: 'List of categories to run. If not set all categories are run.',
10
+ type: 'array',
11
+ default: [],
12
+ coerce: coerceArray,
13
+ };
14
+ export const skipPluginsOption = {
15
+ describe: 'List of plugins to skip. If not set all plugins are run.',
16
+ type: 'array',
17
+ default: [],
18
+ coerce: coerceArray,
19
+ alias: 'P',
20
+ };
21
+ export const onlyPluginsOption = {
22
+ describe: 'List of plugins to run. If not set all plugins are run.',
23
+ type: 'array',
24
+ default: [],
25
+ coerce: coerceArray,
26
+ alias: 'p',
27
+ };
28
+ export function yargsFilterOptionsDefinition() {
29
+ return {
30
+ skipCategories: skipCategoriesOption,
31
+ onlyCategories: onlyCategoriesOption,
32
+ skipPlugins: skipPluginsOption,
33
+ onlyPlugins: onlyPluginsOption,
34
+ };
35
+ }
36
+ //# sourceMappingURL=filter.options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.options.js","sourceRoot":"","sources":["../../../../../../packages/cli/src/lib/implementation/filter.options.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,MAAM,oBAAoB,GAAY;IAC3C,QAAQ,EAAE,gEAAgE;IAC1E,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,WAAW;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAY;IAC3C,QAAQ,EAAE,+DAA+D;IACzE,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,WAAW;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAY;IACxC,QAAQ,EAAE,0DAA0D;IACpE,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,GAAG;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAY;IACxC,QAAQ,EAAE,yDAAyD;IACnE,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,GAAG;CACX,CAAC;AAEF,MAAM,UAAU,4BAA4B;IAI1C,OAAO;QACL,cAAc,EAAE,oBAAoB;QACpC,cAAc,EAAE,oBAAoB;QACpC,WAAW,EAAE,iBAAiB;QAC9B,WAAW,EAAE,iBAAiB;KAC/B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { bold, dim, green } from 'ansis';
2
+ export function titleStyle(title) {
3
+ return `${bold(title)}`;
4
+ }
5
+ export function headerStyle(title) {
6
+ return `${green(title)}`;
7
+ }
8
+ export function descriptionStyle(title) {
9
+ return `${dim(title)}`;
10
+ }
11
+ export function formatObjectValue(opts, propName) {
12
+ const description = opts[propName];
13
+ return {
14
+ ...opts,
15
+ ...(typeof description === 'string' && {
16
+ [propName]: descriptionStyle(description),
17
+ }),
18
+ };
19
+ }
20
+ export function formatNestedValues(options, propName) {
21
+ return Object.fromEntries(Object.entries(options).map(([key, opts]) => [
22
+ key,
23
+ formatObjectValue(opts, propName),
24
+ ]));
25
+ }
26
+ //# sourceMappingURL=formatting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../../../../../packages/cli/src/lib/implementation/formatting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEzC,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAI,IAAO,EAAE,QAAiB;IAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO;QACL,GAAG,IAAI;QACP,GAAG,CAAC,OAAO,WAAW,KAAK,QAAQ,IAAI;YACrC,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,WAAW,CAAC;SAC1C,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAA0B,EAC1B,QAAiB;IAEjB,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3C,GAAG;QACH,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC;KAClC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import type { GlobalOptions } from '@code-pushup/core';
2
- import type { ConfigCliOptions } from './core-config.model';
2
+ import type { ConfigCliOptions } from './core-config.model.js';
3
3
  export type GeneralCliOptions = ConfigCliOptions & GlobalOptions;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=global.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.model.js","sourceRoot":"","sources":["../../../../../../packages/cli/src/lib/implementation/global.model.ts"],"names":[],"mappings":""}
@@ -1,3 +1,3 @@
1
1
  import type { Options } from 'yargs';
2
- import type { GeneralCliOptions } from './global.model';
2
+ import type { GeneralCliOptions } from './global.model.js';
3
3
  export declare function yargsGlobalOptionsDefinition(): Record<keyof GeneralCliOptions, Options>;
@@ -0,0 +1,23 @@
1
+ export function yargsGlobalOptionsDefinition() {
2
+ return {
3
+ progress: {
4
+ describe: 'Show progress bar in stdout.',
5
+ type: 'boolean',
6
+ default: true,
7
+ },
8
+ verbose: {
9
+ describe: 'When true creates more verbose output. This is helpful when debugging.',
10
+ type: 'boolean',
11
+ default: false,
12
+ },
13
+ config: {
14
+ describe: 'Path to config file. By default it loads code-pushup.config.(ts|mjs|js).',
15
+ type: 'string',
16
+ },
17
+ tsconfig: {
18
+ describe: 'Path to a TypeScript config, to be used when loading config file.',
19
+ type: 'string',
20
+ },
21
+ };
22
+ }
23
+ //# sourceMappingURL=global.options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.options.js","sourceRoot":"","sources":["../../../../../../packages/cli/src/lib/implementation/global.options.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,4BAA4B;IAI1C,OAAO;QACL,QAAQ,EAAE;YACR,QAAQ,EAAE,8BAA8B;YACxC,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,IAAI;SACd;QACD,OAAO,EAAE;YACP,QAAQ,EACN,wEAAwE;YAC1E,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf;QACD,MAAM,EAAE;YACN,QAAQ,EACN,0EAA0E;YAC5E,IAAI,EAAE,QAAQ;SACf;QACD,QAAQ,EAAE;YACR,QAAQ,EACN,mEAAmE;YACrE,IAAI,EAAE,QAAQ;SACf;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,45 @@
1
+ import yargs from 'yargs';
2
+ import { toArray, ui } from '@code-pushup/utils';
3
+ import { OptionValidationError } from './validate-filter-options.utils.js';
4
+ export function filterKebabCaseKeys(obj) {
5
+ return Object.entries(obj)
6
+ .filter(([key]) => !key.includes('-'))
7
+ .reduce((acc, [key, value]) => typeof value === 'string' ||
8
+ (typeof value === 'object' && Array.isArray(obj[key]))
9
+ ? { ...acc, [key]: value }
10
+ : typeof value === 'object' && !Array.isArray(value) && value != null
11
+ ? {
12
+ ...acc,
13
+ [key]: filterKebabCaseKeys(value),
14
+ }
15
+ : { ...acc, [key]: value }, {});
16
+ }
17
+ // Log error and flush stdout to ensure all logs are printed
18
+ // before Yargs exits or rethrows the error.
19
+ // This prevents log suppression, especially in async execution.
20
+ // Related issue: https://github.com/yargs/yargs/issues/2118
21
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
+ export function logErrorBeforeThrow(fn) {
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ return (async (...args) => {
25
+ try {
26
+ return await fn(...args);
27
+ }
28
+ catch (error) {
29
+ if (error instanceof OptionValidationError) {
30
+ ui().logger.error(error.message);
31
+ await new Promise(resolve => process.stdout.write('', resolve));
32
+ yargs().exit(1, error);
33
+ }
34
+ else {
35
+ console.error(error);
36
+ await new Promise(resolve => process.stdout.write('', resolve));
37
+ throw error;
38
+ }
39
+ }
40
+ });
41
+ }
42
+ export function coerceArray(param) {
43
+ return [...new Set(toArray(param).flatMap(f => f.split(',')))];
44
+ }
45
+ //# sourceMappingURL=global.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.utils.js","sourceRoot":"","sources":["../../../../../../packages/cli/src/lib/implementation/global.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,MAAM,UAAU,mBAAmB,CACjC,GAAM;IAEN,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;SACvB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACrC,MAAM,CACL,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACpB,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE;QAC1B,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI;YACnE,CAAC,CAAC;gBACE,GAAG,GAAG;gBACN,CAAC,GAAG,CAAC,EAAE,mBAAmB,CAAC,KAAgC,CAAC;aAC7D;YACH,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAChC,EAAE,CACE,CAAC;AACX,CAAC;AAED,4DAA4D;AAC5D,4CAA4C;AAC5C,gEAAgE;AAChE,4DAA4D;AAC5D,8DAA8D;AAC9D,MAAM,UAAU,mBAAmB,CACjC,EAAK;IAEL,8DAA8D;IAC9D,OAAO,CAAC,KAAK,EAAE,GAAG,IAAW,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;gBAC3C,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACjC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;gBAChE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;gBAChE,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC,CAAM,CAAC;AACV,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { bold, gray } from 'ansis';
2
+ import { link, ui } from '@code-pushup/utils';
3
+ export function renderConfigureCategoriesHint() {
4
+ ui().logger.info(gray(`💡 Configure categories to see the scores in an overview table. See: ${link('https://github.com/code-pushup/cli/blob/main/packages/cli/README.md')}`));
5
+ }
6
+ export function uploadSuccessfulLog(url) {
7
+ ui().logger.success('Upload successful!');
8
+ ui().logger.success(link(url));
9
+ }
10
+ export function collectSuccessfulLog() {
11
+ ui().logger.success('Collecting report successful!');
12
+ }
13
+ export function renderIntegratePortalHint() {
14
+ ui()
15
+ .sticker()
16
+ .add(bold.gray('💡 Integrate the portal'))
17
+ .add('')
18
+ .add(`${gray('❯')} Upload a report to the server - ${gray('npx code-pushup upload')}`)
19
+ .add(` ${link('https://github.com/code-pushup/cli/tree/main/packages/cli#upload-command')}`)
20
+ .add(`${gray('❯')} ${gray('Portal Integration')} - ${link('https://github.com/code-pushup/cli/blob/main/packages/cli/README.md#portal-integration')}`)
21
+ .add(`${gray('❯')} ${gray('Upload Command')} - ${link('https://github.com/code-pushup/cli/blob/main/packages/cli/README.md#portal-integration')}`)
22
+ .render();
23
+ }
24
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../../../../packages/cli/src/lib/implementation/logging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,UAAU,6BAA6B;IAC3C,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CACd,IAAI,CACF,wEAAwE,IAAI,CAC1E,qEAAqE,CACtE,EAAE,CACJ,CACF,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC1C,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,EAAE,EAAE;SACD,OAAO,EAAE;SACT,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;SACzC,GAAG,CAAC,EAAE,CAAC;SACP,GAAG,CACF,GAAG,IAAI,CAAC,GAAG,CAAC,oCAAoC,IAAI,CAClD,wBAAwB,CACzB,EAAE,CACJ;SACA,GAAG,CACF,KAAK,IAAI,CACP,0EAA0E,CAC3E,EAAE,CACJ;SACA,GAAG,CACF,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,IAAI,CAClD,wFAAwF,CACzF,EAAE,CACJ;SACA,GAAG,CACF,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAC9C,wFAAwF,CACzF,EAAE,CACJ;SACA,MAAM,EAAE,CAAC;AACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=merge-diffs.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-diffs.model.js","sourceRoot":"","sources":["../../../../../../packages/cli/src/lib/implementation/merge-diffs.model.ts"],"names":[],"mappings":""}
@@ -1,3 +1,3 @@
1
1
  import type { Options } from 'yargs';
2
- import type { MergeDiffsOptions } from './merge-diffs.model';
2
+ import type { MergeDiffsOptions } from './merge-diffs.model.js';
3
3
  export declare function yargsMergeDiffsOptionsDefinition(): Record<keyof MergeDiffsOptions, Options>;
@@ -0,0 +1,10 @@
1
+ export function yargsMergeDiffsOptionsDefinition() {
2
+ return {
3
+ files: {
4
+ describe: 'List of report-diff.json paths',
5
+ type: 'array',
6
+ demandOption: true,
7
+ },
8
+ };
9
+ }
10
+ //# sourceMappingURL=merge-diffs.options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-diffs.options.js","sourceRoot":"","sources":["../../../../../../packages/cli/src/lib/implementation/merge-diffs.options.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,gCAAgC;IAI9C,OAAO;QACL,KAAK,EAAE;YACL,QAAQ,EAAE,gCAAgC;YAC1C,IAAI,EAAE,OAAO;YACb,YAAY,EAAE,IAAI;SACnB;KACF,CAAC;AACJ,CAAC"}
@@ -1,13 +1,16 @@
1
- import type { CategoryConfig, PluginConfig } from '@code-pushup/models';
2
- import type { FilterOptionType, Filterables } from './filter.model';
1
+ import type { PluginConfig } from '@code-pushup/models';
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;
@@ -0,0 +1,119 @@
1
+ import { capitalize, filterItemRefsBy, pluralize, ui, } from '@code-pushup/utils';
2
+ export class OptionValidationError extends Error {
3
+ }
4
+ // eslint-disable-next-line max-lines-per-function
5
+ export function validateFilterOption(option, { plugins, categories = [] }, { itemsToFilter, skippedItems, verbose, }) {
6
+ const validItems = isCategoryOption(option)
7
+ ? categories.map(({ slug }) => slug)
8
+ : isPluginOption(option)
9
+ ? plugins.map(({ slug }) => slug)
10
+ : [];
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
+ }
23
+ ui().logger.warning(message);
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
+ }
30
+ if (isPluginOption(option) && categories.length > 0 && verbose) {
31
+ const removedCategories = filterItemRefsBy(categories, ({ plugin }) => isOnlyOption(option)
32
+ ? !itemsToFilterSet.has(plugin)
33
+ : itemsToFilterSet.has(plugin)).map(({ slug }) => slug);
34
+ if (removedCategories.length > 0) {
35
+ ui().logger.info(`The --${option} argument removed the following categories: ${removedCategories.join(', ')}.`);
36
+ }
37
+ }
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
+ }
54
+ export function validateFinalState(filteredItems, originalItems) {
55
+ const { categories: filteredCategories = [], plugins: filteredPlugins } = filteredItems;
56
+ const { categories: originalCategories = [], plugins: originalPlugins } = originalItems;
57
+ if (filteredCategories.length === 0 &&
58
+ filteredPlugins.length === 0 &&
59
+ (originalPlugins.length > 0 || originalCategories.length > 0)) {
60
+ const availablePlugins = originalPlugins.map(p => p.slug).join(', ') || 'none';
61
+ const availableCategories = originalCategories.map(c => c.slug).join(', ') || 'none';
62
+ throw new OptionValidationError(`Nothing to report. No plugins or categories are available after filtering. Available plugins: ${availablePlugins}. Available categories: ${availableCategories}.`);
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);
73
+ }
74
+ function isCategoryOption(option) {
75
+ return option.endsWith('Categories');
76
+ }
77
+ function isPluginOption(option) {
78
+ return option.endsWith('Plugins');
79
+ }
80
+ export function isOnlyOption(option) {
81
+ return option.startsWith('only');
82
+ }
83
+ export function getItemType(option, count) {
84
+ const itemType = isCategoryOption(option)
85
+ ? 'category'
86
+ : isPluginOption(option)
87
+ ? 'plugin'
88
+ : 'item';
89
+ return pluralize(itemType, count);
90
+ }
91
+ export function createValidationMessage(option, invalidItems, validItems) {
92
+ const invalidItem = getItemType(option, invalidItems.length);
93
+ const invalidItemText = invalidItems.length === 1
94
+ ? `a ${invalidItem} that does not exist:`
95
+ : `${invalidItem} that do not exist:`;
96
+ const invalidSlugs = invalidItems.join(', ');
97
+ const validItem = getItemType(option, validItems.size);
98
+ const validItemText = validItems.size === 1
99
+ ? `The only valid ${validItem} is`
100
+ : `Valid ${validItem} are`;
101
+ const validSlugs = [...validItems].join(', ');
102
+ return `The --${option} argument references ${invalidItemText} ${invalidSlugs}. ${validItemText} ${validSlugs}.`;
103
+ }
104
+ export function handleConflictingOptions(type, onlyItems, skipItems) {
105
+ const conflictingItems = onlyItems.filter(item => skipItems.includes(item));
106
+ if (conflictingItems.length > 0) {
107
+ const conflictSubject = () => {
108
+ switch (type) {
109
+ case 'categories':
110
+ return conflictingItems.length > 1 ? 'categories are' : 'category is';
111
+ case 'plugins':
112
+ return conflictingItems.length > 1 ? 'plugins are' : 'plugin is';
113
+ }
114
+ };
115
+ const conflictingSlugs = conflictingItems.join(', ');
116
+ throw new OptionValidationError(`The following ${conflictSubject()} specified in both --only${capitalize(type)} and --skip${capitalize(type)}: ${conflictingSlugs}. Please choose one option.`);
117
+ }
118
+ }
119
+ //# sourceMappingURL=validate-filter-options.utils.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,22 @@
1
+ import { bold, gray } from 'ansis';
2
+ import { mergeDiffs } from '@code-pushup/core';
3
+ import { ui } from '@code-pushup/utils';
4
+ import { CLI_NAME } from '../constants.js';
5
+ import { yargsMergeDiffsOptionsDefinition } from '../implementation/merge-diffs.options.js';
6
+ export function yargsMergeDiffsCommandObject() {
7
+ const command = 'merge-diffs';
8
+ return {
9
+ command,
10
+ describe: 'Combine many report diffs into a single diff file',
11
+ builder: yargsMergeDiffsOptionsDefinition(),
12
+ handler: async (args) => {
13
+ ui().logger.log(bold(CLI_NAME));
14
+ ui().logger.info(gray(`Run ${command}...`));
15
+ const options = args;
16
+ const { files, persist } = options;
17
+ const outputPath = await mergeDiffs(files, persist);
18
+ ui().logger.info(`Reports diff written to ${bold(outputPath)}`);
19
+ },
20
+ };
21
+ }
22
+ //# sourceMappingURL=merge-diffs-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-diffs-command.js","sourceRoot":"","sources":["../../../../../../packages/cli/src/lib/merge-diffs/merge-diffs-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AAE5F,MAAM,UAAU,4BAA4B;IAC1C,MAAM,OAAO,GAAG,aAAa,CAAC;IAC9B,OAAO;QACL,OAAO;QACP,QAAQ,EAAE,mDAAmD;QAC7D,OAAO,EAAE,gCAAgC,EAAE;QAC3C,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;YAC/B,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC;YAE5C,MAAM,OAAO,GAAG,IAEf,CAAC;YACF,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YAEnC,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAEpD,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;KACsB,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { coreConfigMiddleware } from './implementation/core-config.middleware.js';
2
+ import { filterMiddleware } from './implementation/filter.middleware.js';
3
+ export const middlewares = [
4
+ {
5
+ middlewareFunction: coreConfigMiddleware,
6
+ applyBeforeValidation: false,
7
+ },
8
+ {
9
+ middlewareFunction: filterMiddleware,
10
+ applyBeforeValidation: false,
11
+ },
12
+ ];
13
+ //# sourceMappingURL=middlewares.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewares.js","sourceRoot":"","sources":["../../../../../packages/cli/src/lib/middlewares.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAEzE,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB;QACE,kBAAkB,EAAE,oBAAqD;QACzE,qBAAqB,EAAE,KAAK;KAC7B;IACD;QACE,kBAAkB,EAAE,gBAAiD;QACrE,qBAAqB,EAAE,KAAK;KAC7B;CACF,CAAC"}
@@ -10,9 +10,9 @@ export declare const options: {
10
10
  "upload.project": import("yargs").Options;
11
11
  "upload.apiKey": import("yargs").Options;
12
12
  "upload.server": import("yargs").Options;
13
- tsconfig: import("yargs").Options;
14
13
  progress: import("yargs").Options;
15
14
  verbose: import("yargs").Options;
15
+ tsconfig: import("yargs").Options;
16
16
  config: import("yargs").Options;
17
17
  };
18
18
  export declare const groups: {