@code-pushup/cli 0.8.10 → 0.8.12
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/index.js +209 -186
- package/package.json +1 -1
- package/src/lib/implementation/config-middleware.d.ts +25 -25
package/index.js
CHANGED
|
@@ -14,7 +14,7 @@ import { join as join2 } from "node:path";
|
|
|
14
14
|
// packages/utils/src/lib/execute-process.ts
|
|
15
15
|
import { spawn } from "node:child_process";
|
|
16
16
|
|
|
17
|
-
// packages/utils/src/lib/
|
|
17
|
+
// packages/utils/src/lib/reports/utils.ts
|
|
18
18
|
import { join } from "node:path";
|
|
19
19
|
|
|
20
20
|
// packages/models/src/lib/audit.ts
|
|
@@ -51,6 +51,46 @@ function errorItems(items, transform = (items2) => items2.join(", ")) {
|
|
|
51
51
|
function exists(value) {
|
|
52
52
|
return value != null;
|
|
53
53
|
}
|
|
54
|
+
function getMissingRefsForCategories(categories, plugins) {
|
|
55
|
+
const missingRefs = [];
|
|
56
|
+
const auditRefsFromCategory = categories.flatMap(
|
|
57
|
+
({ refs }) => refs.filter(({ type }) => type === "audit").map(({ plugin, slug }) => `${plugin}/${slug}`)
|
|
58
|
+
);
|
|
59
|
+
const auditRefsFromPlugins = plugins.flatMap(
|
|
60
|
+
({ audits, slug: pluginSlug }) => {
|
|
61
|
+
return audits.map(({ slug }) => `${pluginSlug}/${slug}`);
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
const missingAuditRefs = hasMissingStrings(
|
|
65
|
+
auditRefsFromCategory,
|
|
66
|
+
auditRefsFromPlugins
|
|
67
|
+
);
|
|
68
|
+
if (Array.isArray(missingAuditRefs) && missingAuditRefs.length > 0) {
|
|
69
|
+
missingRefs.push(...missingAuditRefs);
|
|
70
|
+
}
|
|
71
|
+
const groupRefsFromCategory = categories.flatMap(
|
|
72
|
+
({ refs }) => refs.filter(({ type }) => type === "group").map(({ plugin, slug }) => `${plugin}#${slug} (group)`)
|
|
73
|
+
);
|
|
74
|
+
const groupRefsFromPlugins = plugins.flatMap(
|
|
75
|
+
({ groups, slug: pluginSlug }) => {
|
|
76
|
+
return Array.isArray(groups) ? groups.map(({ slug }) => `${pluginSlug}#${slug} (group)`) : [];
|
|
77
|
+
}
|
|
78
|
+
);
|
|
79
|
+
const missingGroupRefs = hasMissingStrings(
|
|
80
|
+
groupRefsFromCategory,
|
|
81
|
+
groupRefsFromPlugins
|
|
82
|
+
);
|
|
83
|
+
if (Array.isArray(missingGroupRefs) && missingGroupRefs.length > 0) {
|
|
84
|
+
missingRefs.push(...missingGroupRefs);
|
|
85
|
+
}
|
|
86
|
+
return missingRefs.length ? missingRefs : false;
|
|
87
|
+
}
|
|
88
|
+
function missingRefsForCategoriesErrorMsg(categories, plugins) {
|
|
89
|
+
const missingRefs = getMissingRefsForCategories(categories, plugins);
|
|
90
|
+
return `The following category references need to point to an audit or group: ${errorItems(
|
|
91
|
+
missingRefs
|
|
92
|
+
)}`;
|
|
93
|
+
}
|
|
54
94
|
|
|
55
95
|
// packages/models/src/lib/implementation/schemas.ts
|
|
56
96
|
function executionMetaSchema(options2 = {
|
|
@@ -109,15 +149,13 @@ function positiveIntSchema(description) {
|
|
|
109
149
|
return z.number({ description }).int().nonnegative();
|
|
110
150
|
}
|
|
111
151
|
function packageVersionSchema(options2) {
|
|
112
|
-
|
|
113
|
-
versionDescription = versionDescription || "NPM version of the package";
|
|
114
|
-
optional = !!optional;
|
|
152
|
+
const { versionDescription = "NPM version of the package", required } = options2 ?? {};
|
|
115
153
|
const packageSchema = z.string({ description: "NPM package name" });
|
|
116
154
|
const versionSchema = z.string({ description: versionDescription });
|
|
117
155
|
return z.object(
|
|
118
156
|
{
|
|
119
|
-
packageName:
|
|
120
|
-
version:
|
|
157
|
+
packageName: required ? packageSchema : packageSchema.optional(),
|
|
158
|
+
version: required ? versionSchema : versionSchema.optional()
|
|
121
159
|
},
|
|
122
160
|
{ description: "NPM package name and version of a published package" }
|
|
123
161
|
);
|
|
@@ -179,7 +217,7 @@ var pluginAuditsSchema = z2.array(auditSchema, {
|
|
|
179
217
|
);
|
|
180
218
|
function duplicateSlugsInAuditsErrorMsg(audits) {
|
|
181
219
|
const duplicateRefs = getDuplicateSlugsInAudits(audits);
|
|
182
|
-
return `In plugin audits the slugs are not unique: ${errorItems(
|
|
220
|
+
return `In plugin audits the following slugs are not unique: ${errorItems(
|
|
183
221
|
duplicateRefs
|
|
184
222
|
)}`;
|
|
185
223
|
}
|
|
@@ -368,7 +406,9 @@ function getDuplicateRefsInGroups(groups) {
|
|
|
368
406
|
}
|
|
369
407
|
function duplicateSlugsInGroupsErrorMsg(groups) {
|
|
370
408
|
const duplicateRefs = getDuplicateSlugsInGroups(groups);
|
|
371
|
-
return `In groups the slugs are not unique: ${errorItems(
|
|
409
|
+
return `In groups the following slugs are not unique: ${errorItems(
|
|
410
|
+
duplicateRefs
|
|
411
|
+
)}`;
|
|
372
412
|
}
|
|
373
413
|
function getDuplicateSlugsInGroups(groups) {
|
|
374
414
|
return Array.isArray(groups) ? hasDuplicateStrings(groups.map(({ slug }) => slug)) : false;
|
|
@@ -394,9 +434,7 @@ var onProgressSchema = z8.function().args(z8.unknown()).returns(z8.void());
|
|
|
394
434
|
var runnerFunctionSchema = z8.function().args(onProgressSchema.optional()).returns(z8.union([auditOutputsSchema, z8.promise(auditOutputsSchema)]));
|
|
395
435
|
|
|
396
436
|
// packages/models/src/lib/plugin-config.ts
|
|
397
|
-
var pluginMetaSchema = packageVersionSchema(
|
|
398
|
-
optional: true
|
|
399
|
-
}).merge(
|
|
437
|
+
var pluginMetaSchema = packageVersionSchema().merge(
|
|
400
438
|
metaSchema({
|
|
401
439
|
titleDescription: "Descriptive name",
|
|
402
440
|
descriptionDescription: "Description (markdown)",
|
|
@@ -405,7 +443,7 @@ var pluginMetaSchema = packageVersionSchema({
|
|
|
405
443
|
})
|
|
406
444
|
).merge(
|
|
407
445
|
z9.object({
|
|
408
|
-
slug: slugSchema("
|
|
446
|
+
slug: slugSchema("Unique plugin slug within core config"),
|
|
409
447
|
icon: materialIconSchema
|
|
410
448
|
})
|
|
411
449
|
);
|
|
@@ -422,20 +460,17 @@ var pluginConfigSchema = pluginMetaSchema.merge(pluginDataSchema).refine(
|
|
|
422
460
|
);
|
|
423
461
|
function missingRefsFromGroupsErrorMsg(pluginCfg) {
|
|
424
462
|
const missingRefs = getMissingRefsFromGroups(pluginCfg);
|
|
425
|
-
return `
|
|
463
|
+
return `The following group references need to point to an existing audit in this plugin config: ${errorItems(
|
|
426
464
|
missingRefs
|
|
427
465
|
)}`;
|
|
428
466
|
}
|
|
429
467
|
function getMissingRefsFromGroups(pluginCfg) {
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
);
|
|
437
|
-
}
|
|
438
|
-
return false;
|
|
468
|
+
return hasMissingStrings(
|
|
469
|
+
pluginCfg.groups?.flatMap(
|
|
470
|
+
({ refs: audits }) => audits.map(({ slug: ref }) => ref)
|
|
471
|
+
) ?? [],
|
|
472
|
+
pluginCfg.audits.map(({ slug }) => slug)
|
|
473
|
+
);
|
|
439
474
|
}
|
|
440
475
|
|
|
441
476
|
// packages/models/src/lib/upload-config.ts
|
|
@@ -445,19 +480,15 @@ var uploadConfigSchema = z10.object({
|
|
|
445
480
|
apiKey: z10.string({
|
|
446
481
|
description: "API key with write access to portal (use `process.env` for security)"
|
|
447
482
|
}),
|
|
448
|
-
organization:
|
|
449
|
-
|
|
450
|
-
}),
|
|
451
|
-
project: z10.string({
|
|
452
|
-
description: "Project in code versioning system"
|
|
453
|
-
})
|
|
483
|
+
organization: slugSchema("Organization slug from Code PushUp portal"),
|
|
484
|
+
project: slugSchema("Project slug from Code PushUp portal")
|
|
454
485
|
});
|
|
455
486
|
|
|
456
487
|
// packages/models/src/lib/core-config.ts
|
|
457
488
|
var unrefinedCoreConfigSchema = z11.object({
|
|
458
489
|
plugins: z11.array(pluginConfigSchema, {
|
|
459
490
|
description: "List of plugins to be used (official, community-provided, or custom)"
|
|
460
|
-
}),
|
|
491
|
+
}).min(1),
|
|
461
492
|
/** portal configuration for persisting results */
|
|
462
493
|
persist: persistConfigSchema.optional(),
|
|
463
494
|
/** portal configuration for uploading results */
|
|
@@ -467,52 +498,15 @@ var unrefinedCoreConfigSchema = z11.object({
|
|
|
467
498
|
var coreConfigSchema = refineCoreConfig(unrefinedCoreConfigSchema);
|
|
468
499
|
function refineCoreConfig(schema) {
|
|
469
500
|
return schema.refine(
|
|
470
|
-
(coreCfg) => !getMissingRefsForCategories(coreCfg),
|
|
501
|
+
(coreCfg) => !getMissingRefsForCategories(coreCfg.categories, coreCfg.plugins),
|
|
471
502
|
(coreCfg) => ({
|
|
472
|
-
message: missingRefsForCategoriesErrorMsg(
|
|
503
|
+
message: missingRefsForCategoriesErrorMsg(
|
|
504
|
+
coreCfg.categories,
|
|
505
|
+
coreCfg.plugins
|
|
506
|
+
)
|
|
473
507
|
})
|
|
474
508
|
);
|
|
475
509
|
}
|
|
476
|
-
function missingRefsForCategoriesErrorMsg(coreCfg) {
|
|
477
|
-
const missingRefs = getMissingRefsForCategories(coreCfg);
|
|
478
|
-
return `In the categories, the following plugin refs do not exist in the provided plugins: ${errorItems(
|
|
479
|
-
missingRefs
|
|
480
|
-
)}`;
|
|
481
|
-
}
|
|
482
|
-
function getMissingRefsForCategories(coreCfg) {
|
|
483
|
-
const missingRefs = [];
|
|
484
|
-
const auditRefsFromCategory = coreCfg.categories.flatMap(
|
|
485
|
-
({ refs }) => refs.filter(({ type }) => type === "audit").map(({ plugin, slug }) => `${plugin}/${slug}`)
|
|
486
|
-
);
|
|
487
|
-
const auditRefsFromPlugins = coreCfg.plugins.flatMap(
|
|
488
|
-
({ audits, slug: pluginSlug }) => {
|
|
489
|
-
return audits.map(({ slug }) => `${pluginSlug}/${slug}`);
|
|
490
|
-
}
|
|
491
|
-
);
|
|
492
|
-
const missingAuditRefs = hasMissingStrings(
|
|
493
|
-
auditRefsFromCategory,
|
|
494
|
-
auditRefsFromPlugins
|
|
495
|
-
);
|
|
496
|
-
if (Array.isArray(missingAuditRefs) && missingAuditRefs.length > 0) {
|
|
497
|
-
missingRefs.push(...missingAuditRefs);
|
|
498
|
-
}
|
|
499
|
-
const groupRefsFromCategory = coreCfg.categories.flatMap(
|
|
500
|
-
({ refs }) => refs.filter(({ type }) => type === "group").map(({ plugin, slug }) => `${plugin}#${slug} (group)`)
|
|
501
|
-
);
|
|
502
|
-
const groupRefsFromPlugins = coreCfg.plugins.flatMap(
|
|
503
|
-
({ groups, slug: pluginSlug }) => {
|
|
504
|
-
return Array.isArray(groups) ? groups.map(({ slug }) => `${pluginSlug}#${slug} (group)`) : [];
|
|
505
|
-
}
|
|
506
|
-
);
|
|
507
|
-
const missingGroupRefs = hasMissingStrings(
|
|
508
|
-
groupRefsFromCategory,
|
|
509
|
-
groupRefsFromPlugins
|
|
510
|
-
);
|
|
511
|
-
if (Array.isArray(missingGroupRefs) && missingGroupRefs.length > 0) {
|
|
512
|
-
missingRefs.push(...missingGroupRefs);
|
|
513
|
-
}
|
|
514
|
-
return missingRefs.length ? missingRefs : false;
|
|
515
|
-
}
|
|
516
510
|
|
|
517
511
|
// packages/models/src/lib/implementation/constants.ts
|
|
518
512
|
var PERSIST_OUTPUT_DIR = ".code-pushup";
|
|
@@ -532,9 +526,32 @@ var pluginReportSchema = pluginMetaSchema.merge(
|
|
|
532
526
|
audits: z12.array(auditReportSchema),
|
|
533
527
|
groups: z12.array(groupSchema).optional()
|
|
534
528
|
})
|
|
529
|
+
).refine(
|
|
530
|
+
(pluginReport) => !getMissingRefsFromGroups2(pluginReport.audits, pluginReport.groups ?? []),
|
|
531
|
+
(pluginReport) => ({
|
|
532
|
+
message: missingRefsFromGroupsErrorMsg2(
|
|
533
|
+
pluginReport.audits,
|
|
534
|
+
pluginReport.groups ?? []
|
|
535
|
+
)
|
|
536
|
+
})
|
|
535
537
|
);
|
|
538
|
+
function missingRefsFromGroupsErrorMsg2(audits, groups) {
|
|
539
|
+
const missingRefs = getMissingRefsFromGroups2(audits, groups);
|
|
540
|
+
return `group references need to point to an existing audit in this plugin report: ${errorItems(
|
|
541
|
+
missingRefs
|
|
542
|
+
)}`;
|
|
543
|
+
}
|
|
544
|
+
function getMissingRefsFromGroups2(audits, groups) {
|
|
545
|
+
return hasMissingStrings(
|
|
546
|
+
groups.flatMap(
|
|
547
|
+
({ refs: auditRefs }) => auditRefs.map(({ slug: ref }) => ref)
|
|
548
|
+
),
|
|
549
|
+
audits.map(({ slug }) => slug)
|
|
550
|
+
);
|
|
551
|
+
}
|
|
536
552
|
var reportSchema = packageVersionSchema({
|
|
537
|
-
versionDescription: "NPM version of the CLI"
|
|
553
|
+
versionDescription: "NPM version of the CLI",
|
|
554
|
+
required: true
|
|
538
555
|
}).merge(
|
|
539
556
|
executionMetaSchema({
|
|
540
557
|
descriptionDate: "Start date and time of the collect run",
|
|
@@ -544,18 +561,20 @@ var reportSchema = packageVersionSchema({
|
|
|
544
561
|
z12.object(
|
|
545
562
|
{
|
|
546
563
|
categories: z12.array(categoryConfigSchema),
|
|
547
|
-
plugins: z12.array(pluginReportSchema)
|
|
564
|
+
plugins: z12.array(pluginReportSchema).min(1)
|
|
548
565
|
},
|
|
549
566
|
{ description: "Collect output data" }
|
|
550
567
|
)
|
|
568
|
+
).refine(
|
|
569
|
+
(report) => !getMissingRefsForCategories(report.categories, report.plugins),
|
|
570
|
+
(report) => ({
|
|
571
|
+
message: missingRefsForCategoriesErrorMsg(
|
|
572
|
+
report.categories,
|
|
573
|
+
report.plugins
|
|
574
|
+
)
|
|
575
|
+
})
|
|
551
576
|
);
|
|
552
577
|
|
|
553
|
-
// packages/utils/src/lib/constants.ts
|
|
554
|
-
var SCORE_COLOR_RANGE = {
|
|
555
|
-
GREEN_MIN: 0.9,
|
|
556
|
-
YELLOW_MIN: 0.5
|
|
557
|
-
};
|
|
558
|
-
|
|
559
578
|
// packages/utils/src/lib/file-system.ts
|
|
560
579
|
import { bundleRequire } from "bundle-require";
|
|
561
580
|
import chalk from "chalk";
|
|
@@ -681,7 +700,14 @@ async function importEsmModule(options2) {
|
|
|
681
700
|
return mod.default;
|
|
682
701
|
}
|
|
683
702
|
|
|
684
|
-
// packages/utils/src/lib/
|
|
703
|
+
// packages/utils/src/lib/reports/constants.ts
|
|
704
|
+
var NEW_LINE = "\n";
|
|
705
|
+
var SCORE_COLOR_RANGE = {
|
|
706
|
+
GREEN_MIN: 0.9,
|
|
707
|
+
YELLOW_MIN: 0.5
|
|
708
|
+
};
|
|
709
|
+
|
|
710
|
+
// packages/utils/src/lib/reports/utils.ts
|
|
685
711
|
var FOOTER_PREFIX = "Made with \u2764 by";
|
|
686
712
|
var CODE_PUSHUP_DOMAIN = "code-pushup.dev";
|
|
687
713
|
var README_LINK = "https://github.com/flowup/quality-metrics-cli#readme";
|
|
@@ -964,83 +990,6 @@ function groupByStatus(results) {
|
|
|
964
990
|
);
|
|
965
991
|
}
|
|
966
992
|
|
|
967
|
-
// packages/utils/src/lib/md/details.ts
|
|
968
|
-
function details(title, content, cfg = { open: false }) {
|
|
969
|
-
return `<details${cfg.open ? " open" : ""}>
|
|
970
|
-
<summary>${title}</summary>
|
|
971
|
-
${content}
|
|
972
|
-
</details>
|
|
973
|
-
`;
|
|
974
|
-
}
|
|
975
|
-
|
|
976
|
-
// packages/utils/src/lib/md/headline.ts
|
|
977
|
-
function headline(text, hierarchy = 1) {
|
|
978
|
-
return `${new Array(hierarchy).fill("#").join("")} ${text}`;
|
|
979
|
-
}
|
|
980
|
-
function h2(text) {
|
|
981
|
-
return headline(text, 2);
|
|
982
|
-
}
|
|
983
|
-
function h3(text) {
|
|
984
|
-
return headline(text, 3);
|
|
985
|
-
}
|
|
986
|
-
|
|
987
|
-
// packages/utils/src/lib/md/constants.ts
|
|
988
|
-
var NEW_LINE = "\n";
|
|
989
|
-
|
|
990
|
-
// packages/utils/src/lib/md/table.ts
|
|
991
|
-
var alignString = /* @__PURE__ */ new Map([
|
|
992
|
-
["l", ":--"],
|
|
993
|
-
["c", ":--:"],
|
|
994
|
-
["r", "--:"]
|
|
995
|
-
]);
|
|
996
|
-
function tableMd(data, align) {
|
|
997
|
-
if (data.length === 0) {
|
|
998
|
-
throw new Error("Data can't be empty");
|
|
999
|
-
}
|
|
1000
|
-
align = align || data[0]?.map(() => "c");
|
|
1001
|
-
const _data = data.map((arr) => "|" + arr.join("|") + "|");
|
|
1002
|
-
const secondRow = "|" + align?.map((s) => alignString.get(s)).join("|") + "|";
|
|
1003
|
-
return _data.shift() + NEW_LINE + secondRow + NEW_LINE + _data.join(NEW_LINE);
|
|
1004
|
-
}
|
|
1005
|
-
function tableHtml(data) {
|
|
1006
|
-
if (data.length === 0) {
|
|
1007
|
-
throw new Error("Data can't be empty");
|
|
1008
|
-
}
|
|
1009
|
-
const _data = data.map((arr, index) => {
|
|
1010
|
-
if (index === 0) {
|
|
1011
|
-
return "<tr>" + arr.map((s) => `<th>${s}</th>`).join("") + "</tr>";
|
|
1012
|
-
}
|
|
1013
|
-
return "<tr>" + arr.map((s) => `<td>${s}</td>`).join("") + "</tr>";
|
|
1014
|
-
});
|
|
1015
|
-
return "<table>" + _data.join("") + "</table>";
|
|
1016
|
-
}
|
|
1017
|
-
|
|
1018
|
-
// packages/utils/src/lib/md/font-style.ts
|
|
1019
|
-
var stylesMap = {
|
|
1020
|
-
i: "_",
|
|
1021
|
-
// italic
|
|
1022
|
-
b: "**",
|
|
1023
|
-
// bold
|
|
1024
|
-
s: "~",
|
|
1025
|
-
// strike through
|
|
1026
|
-
c: "`"
|
|
1027
|
-
// code
|
|
1028
|
-
};
|
|
1029
|
-
function style(text, styles = ["b"]) {
|
|
1030
|
-
return styles.reduce((t, s) => `${stylesMap[s]}${t}${stylesMap[s]}`, text);
|
|
1031
|
-
}
|
|
1032
|
-
|
|
1033
|
-
// packages/utils/src/lib/md/link.ts
|
|
1034
|
-
function link(href, text) {
|
|
1035
|
-
return `[${text || href}](${href})`;
|
|
1036
|
-
}
|
|
1037
|
-
|
|
1038
|
-
// packages/utils/src/lib/md/list.ts
|
|
1039
|
-
function li(text, order = "unordered") {
|
|
1040
|
-
const style2 = order === "unordered" ? "-" : "- [ ]";
|
|
1041
|
-
return `${style2} ${text}`;
|
|
1042
|
-
}
|
|
1043
|
-
|
|
1044
993
|
// packages/utils/src/lib/progress.ts
|
|
1045
994
|
import chalk2 from "chalk";
|
|
1046
995
|
import { MultiProgressBars } from "multi-progress-bars";
|
|
@@ -1095,8 +1044,82 @@ function getProgressBar(taskName) {
|
|
|
1095
1044
|
};
|
|
1096
1045
|
}
|
|
1097
1046
|
|
|
1098
|
-
// packages/utils/src/lib/
|
|
1099
|
-
function
|
|
1047
|
+
// packages/utils/src/lib/reports/md/details.ts
|
|
1048
|
+
function details(title, content, cfg = { open: false }) {
|
|
1049
|
+
return `<details${cfg.open ? " open" : ""}>
|
|
1050
|
+
<summary>${title}</summary>
|
|
1051
|
+
${content}
|
|
1052
|
+
</details>
|
|
1053
|
+
`;
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
// packages/utils/src/lib/reports/md/font-style.ts
|
|
1057
|
+
var stylesMap = {
|
|
1058
|
+
i: "_",
|
|
1059
|
+
// italic
|
|
1060
|
+
b: "**",
|
|
1061
|
+
// bold
|
|
1062
|
+
s: "~",
|
|
1063
|
+
// strike through
|
|
1064
|
+
c: "`"
|
|
1065
|
+
// code
|
|
1066
|
+
};
|
|
1067
|
+
function style(text, styles = ["b"]) {
|
|
1068
|
+
return styles.reduce((t, s) => `${stylesMap[s]}${t}${stylesMap[s]}`, text);
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1071
|
+
// packages/utils/src/lib/reports/md/headline.ts
|
|
1072
|
+
function headline(text, hierarchy = 1) {
|
|
1073
|
+
return `${new Array(hierarchy).fill("#").join("")} ${text}`;
|
|
1074
|
+
}
|
|
1075
|
+
function h2(text) {
|
|
1076
|
+
return headline(text, 2);
|
|
1077
|
+
}
|
|
1078
|
+
function h3(text) {
|
|
1079
|
+
return headline(text, 3);
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1082
|
+
// packages/utils/src/lib/reports/md/link.ts
|
|
1083
|
+
function link(href, text) {
|
|
1084
|
+
return `[${text || href}](${href})`;
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
// packages/utils/src/lib/reports/md/list.ts
|
|
1088
|
+
function li(text, order = "unordered") {
|
|
1089
|
+
const style2 = order === "unordered" ? "-" : "- [ ]";
|
|
1090
|
+
return `${style2} ${text}`;
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
// packages/utils/src/lib/reports/md/table.ts
|
|
1094
|
+
var alignString = /* @__PURE__ */ new Map([
|
|
1095
|
+
["l", ":--"],
|
|
1096
|
+
["c", ":--:"],
|
|
1097
|
+
["r", "--:"]
|
|
1098
|
+
]);
|
|
1099
|
+
function tableMd(data, align) {
|
|
1100
|
+
if (data.length === 0) {
|
|
1101
|
+
throw new Error("Data can't be empty");
|
|
1102
|
+
}
|
|
1103
|
+
align = align || data[0]?.map(() => "c");
|
|
1104
|
+
const _data = data.map((arr) => "|" + arr.join("|") + "|");
|
|
1105
|
+
const secondRow = "|" + align?.map((s) => alignString.get(s)).join("|") + "|";
|
|
1106
|
+
return _data.shift() + NEW_LINE + secondRow + NEW_LINE + _data.join(NEW_LINE);
|
|
1107
|
+
}
|
|
1108
|
+
function tableHtml(data) {
|
|
1109
|
+
if (data.length === 0) {
|
|
1110
|
+
throw new Error("Data can't be empty");
|
|
1111
|
+
}
|
|
1112
|
+
const _data = data.map((arr, index) => {
|
|
1113
|
+
if (index === 0) {
|
|
1114
|
+
return "<tr>" + arr.map((s) => `<th>${s}</th>`).join("") + "</tr>";
|
|
1115
|
+
}
|
|
1116
|
+
return "<tr>" + arr.map((s) => `<td>${s}</td>`).join("") + "</tr>";
|
|
1117
|
+
});
|
|
1118
|
+
return "<table>" + _data.join("") + "</table>";
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
// packages/utils/src/lib/reports/generate-md-report.ts
|
|
1122
|
+
function generateMdReport(report, commitData) {
|
|
1100
1123
|
let md = reportToHeaderSection() + NEW_LINE;
|
|
1101
1124
|
md += reportToOverviewSection(report) + NEW_LINE + NEW_LINE;
|
|
1102
1125
|
md += reportToCategoriesSection(report) + NEW_LINE + NEW_LINE;
|
|
@@ -1277,14 +1300,14 @@ function getAuditResult(audit, isHtml = false) {
|
|
|
1277
1300
|
return isHtml ? `<b>${displayValue || value}</b>` : style(String(displayValue || value));
|
|
1278
1301
|
}
|
|
1279
1302
|
|
|
1280
|
-
// packages/utils/src/lib/
|
|
1303
|
+
// packages/utils/src/lib/reports/generate-stdout-summary.ts
|
|
1281
1304
|
import cliui from "@isaacs/cliui";
|
|
1282
1305
|
import chalk3 from "chalk";
|
|
1283
1306
|
import Table from "cli-table3";
|
|
1284
1307
|
function addLine(line = "") {
|
|
1285
1308
|
return line + NEW_LINE;
|
|
1286
1309
|
}
|
|
1287
|
-
function
|
|
1310
|
+
function generateStdoutSummary(report) {
|
|
1288
1311
|
let output = "";
|
|
1289
1312
|
output += addLine(reportToHeaderSection2(report));
|
|
1290
1313
|
output += addLine();
|
|
@@ -1380,7 +1403,7 @@ function deepClone(obj) {
|
|
|
1380
1403
|
return cloned;
|
|
1381
1404
|
}
|
|
1382
1405
|
|
|
1383
|
-
// packages/utils/src/lib/scoring.ts
|
|
1406
|
+
// packages/utils/src/lib/reports/scoring.ts
|
|
1384
1407
|
function calculateScore(refs, scoreFn) {
|
|
1385
1408
|
const { numerator, denominator } = refs.reduce(
|
|
1386
1409
|
(acc, ref) => {
|
|
@@ -1448,27 +1471,7 @@ function scoreReport(report) {
|
|
|
1448
1471
|
return scoredReport;
|
|
1449
1472
|
}
|
|
1450
1473
|
|
|
1451
|
-
// packages/utils/src/lib/
|
|
1452
|
-
function getLogVerbose(verbose) {
|
|
1453
|
-
return (...args) => {
|
|
1454
|
-
if (verbose) {
|
|
1455
|
-
console.info(...args);
|
|
1456
|
-
}
|
|
1457
|
-
};
|
|
1458
|
-
}
|
|
1459
|
-
function getExecVerbose(verbose) {
|
|
1460
|
-
return (fn) => {
|
|
1461
|
-
if (verbose) {
|
|
1462
|
-
fn();
|
|
1463
|
-
}
|
|
1464
|
-
};
|
|
1465
|
-
}
|
|
1466
|
-
var verboseUtils = (verbose) => ({
|
|
1467
|
-
log: getLogVerbose(verbose),
|
|
1468
|
-
exec: getExecVerbose(verbose)
|
|
1469
|
-
});
|
|
1470
|
-
|
|
1471
|
-
// packages/utils/src/lib/sort-report.ts
|
|
1474
|
+
// packages/utils/src/lib/reports/sorting.ts
|
|
1472
1475
|
function sortReport(report) {
|
|
1473
1476
|
const { categories, plugins } = report;
|
|
1474
1477
|
const sortedCategories = categories.map((category) => {
|
|
@@ -1518,6 +1521,26 @@ function sortReport(report) {
|
|
|
1518
1521
|
};
|
|
1519
1522
|
}
|
|
1520
1523
|
|
|
1524
|
+
// packages/utils/src/lib/verbose-utils.ts
|
|
1525
|
+
function getLogVerbose(verbose) {
|
|
1526
|
+
return (...args) => {
|
|
1527
|
+
if (verbose) {
|
|
1528
|
+
console.info(...args);
|
|
1529
|
+
}
|
|
1530
|
+
};
|
|
1531
|
+
}
|
|
1532
|
+
function getExecVerbose(verbose) {
|
|
1533
|
+
return (fn) => {
|
|
1534
|
+
if (verbose) {
|
|
1535
|
+
fn();
|
|
1536
|
+
}
|
|
1537
|
+
};
|
|
1538
|
+
}
|
|
1539
|
+
var verboseUtils = (verbose) => ({
|
|
1540
|
+
log: getLogVerbose(verbose),
|
|
1541
|
+
exec: getExecVerbose(verbose)
|
|
1542
|
+
});
|
|
1543
|
+
|
|
1521
1544
|
// packages/core/src/lib/implementation/persist.ts
|
|
1522
1545
|
var PersistDirError = class extends Error {
|
|
1523
1546
|
constructor(outputDir) {
|
|
@@ -1532,7 +1555,7 @@ var PersistError = class extends Error {
|
|
|
1532
1555
|
async function persistReport(report, options2) {
|
|
1533
1556
|
const { outputDir, filename, format } = options2;
|
|
1534
1557
|
const sortedScoredReport = sortReport(scoreReport(report));
|
|
1535
|
-
console.info(
|
|
1558
|
+
console.info(generateStdoutSummary(sortedScoredReport));
|
|
1536
1559
|
const results = [];
|
|
1537
1560
|
if (format.includes("json")) {
|
|
1538
1561
|
results.push({
|
|
@@ -1545,7 +1568,7 @@ async function persistReport(report, options2) {
|
|
|
1545
1568
|
validateCommitData(commitData);
|
|
1546
1569
|
results.push({
|
|
1547
1570
|
format: "md",
|
|
1548
|
-
content:
|
|
1571
|
+
content: generateMdReport(sortedScoredReport, commitData)
|
|
1549
1572
|
});
|
|
1550
1573
|
}
|
|
1551
1574
|
if (!existsSync(outputDir)) {
|
|
@@ -1690,7 +1713,7 @@ function auditOutputsCorrelateWithPluginOutput(auditOutputs, pluginConfigAudits)
|
|
|
1690
1713
|
|
|
1691
1714
|
// packages/core/package.json
|
|
1692
1715
|
var name = "@code-pushup/core";
|
|
1693
|
-
var version = "0.8.
|
|
1716
|
+
var version = "0.8.12";
|
|
1694
1717
|
|
|
1695
1718
|
// packages/core/src/lib/implementation/collect.ts
|
|
1696
1719
|
async function collect(options2) {
|
package/package.json
CHANGED
|
@@ -1,17 +1,30 @@
|
|
|
1
1
|
import { CoreConfig } from '@code-pushup/models';
|
|
2
2
|
import { GeneralCliOptions, OnlyPluginsOptions } from './model';
|
|
3
3
|
export declare function configMiddleware<T extends Partial<GeneralCliOptions & CoreConfig & OnlyPluginsOptions>>(processArgs: T): Promise<{
|
|
4
|
-
|
|
4
|
+
categories: {
|
|
5
|
+
slug: string;
|
|
6
|
+
refs: {
|
|
7
|
+
slug: string;
|
|
8
|
+
weight: number;
|
|
9
|
+
type: "audit" | "group";
|
|
10
|
+
plugin: string;
|
|
11
|
+
}[];
|
|
5
12
|
title: string;
|
|
13
|
+
description?: string | undefined;
|
|
14
|
+
docsUrl?: string | undefined;
|
|
15
|
+
isBinary?: boolean | undefined;
|
|
16
|
+
}[];
|
|
17
|
+
plugins: {
|
|
6
18
|
slug: string;
|
|
7
|
-
icon: "slug" | "search" | "blink" | "key" | "folder-robot" | "folder-src" | "folder-dist" | "folder-css" | "folder-sass" | "folder-images" | "folder-scripts" | "folder-node" | "folder-javascript" | "folder-json" | "folder-font" | "folder-bower" | "folder-test" | "folder-jinja" | "folder-markdown" | "folder-php" | "folder-phpmailer" | "folder-sublime" | "folder-docs" | "folder-git" | "folder-github" | "folder-gitlab" | "folder-vscode" | "folder-views" | "folder-vue" | "folder-vuepress" | "folder-expo" | "folder-config" | "folder-i18n" | "folder-components" | "folder-verdaccio" | "folder-aurelia" | "folder-resource" | "folder-lib" | "folder-theme" | "folder-webpack" | "folder-global" | "folder-public" | "folder-include" | "folder-docker" | "folder-database" | "folder-log" | "folder-target" | "folder-temp" | "folder-aws" | "folder-audio" | "folder-video" | "folder-kubernetes" | "folder-import" | "folder-export" | "folder-wakatime" | "folder-circleci" | "folder-wordpress" | "folder-gradle" | "folder-coverage" | "folder-class" | "folder-other" | "folder-lua" | "folder-typescript" | "folder-graphql" | "folder-routes" | "folder-ci" | "folder-benchmark" | "folder-messages" | "folder-less" | "folder-gulp" | "folder-python" | "folder-mojo" | "folder-moon" | "folder-debug" | "folder-fastlane" | "folder-plugin" | "folder-middleware" | "folder-controller" | "folder-ansible" | "folder-server" | "folder-client" | "folder-tasks" | "folder-android" | "folder-ios" | "folder-upload" | "folder-download" | "folder-tools" | "folder-helper" | "folder-serverless" | "folder-api" | "folder-app" | "folder-apollo" | "folder-archive" | "folder-batch" | "folder-buildkite" | "folder-cluster" | "folder-command" | "folder-constant" | "folder-container" | "folder-content" | "folder-context" | "folder-core" | "folder-delta" | "folder-dump" | "folder-examples" | "folder-environment" | "folder-functions" | "folder-generator" | "folder-hook" | "folder-job" | "folder-keys" | "folder-layout" | "folder-mail" | "folder-mappings" | "folder-meta" | "folder-changesets" | "folder-packages" | "folder-shared" | "folder-shader" | "folder-stack" | "folder-template" | "folder-utils" | "folder-supabase" | "folder-private" | "folder-linux" | "folder-windows" | "folder-macos" | "folder-error" | "folder-event" | "folder-secure" | "folder-custom" | "folder-mock" | "folder-syntax" | "folder-vm" | "folder-stylus" | "folder-flow" | "folder-rules" | "folder-review" | "folder-animation" | "folder-guard" | "folder-prisma" | "folder-pipe" | "folder-svg" | "folder-terraform" | "folder-mobile" | "folder-stencil" | "folder-firebase" | "folder-svelte" | "folder-update" | "folder-intellij" | "folder-azure-pipelines" | "folder-mjml" | "folder-admin" | "folder-scala" | "folder-connection" | "folder-quasar" | "folder-next" | "folder-cobol" | "folder-yarn" | "folder-husky" | "folder-storybook" | "folder-base" | "folder-cart" | "folder-home" | "folder-project" | "folder-interface" | "folder-netlify" | "folder-enum" | "folder-contract" | "folder-queue" | "folder-vercel" | "folder-cypress" | "folder-decorators" | "folder-java" | "folder-resolver" | "folder-angular" | "folder-unity" | "folder-pdf" | "folder-proto" | "folder-plastic" | "folder-gamemaker" | "folder-mercurial" | "folder-godot" | "folder-lottie" | "folder-taskfile" | "folder-robot-open" | "folder-src-open" | "folder-dist-open" | "folder-css-open" | "folder-sass-open" | "folder-images-open" | "folder-scripts-open" | "folder-node-open" | "folder-javascript-open" | "folder-json-open" | "folder-font-open" | "folder-bower-open" | "folder-test-open" | "folder-jinja-open" | "folder-markdown-open" | "folder-php-open" | "folder-phpmailer-open" | "folder-sublime-open" | "folder-docs-open" | "folder-git-open" | "folder-github-open" | "folder-gitlab-open" | "folder-vscode-open" | "folder-views-open" | "folder-vue-open" | "folder-vuepress-open" | "folder-expo-open" | "folder-config-open" | "folder-i18n-open" | "folder-components-open" | "folder-verdaccio-open" | "folder-aurelia-open" | "folder-resource-open" | "folder-lib-open" | "folder-theme-open" | "folder-webpack-open" | "folder-global-open" | "folder-public-open" | "folder-include-open" | "folder-docker-open" | "folder-database-open" | "folder-log-open" | "folder-target-open" | "folder-temp-open" | "folder-aws-open" | "folder-audio-open" | "folder-video-open" | "folder-kubernetes-open" | "folder-import-open" | "folder-export-open" | "folder-wakatime-open" | "folder-circleci-open" | "folder-wordpress-open" | "folder-gradle-open" | "folder-coverage-open" | "folder-class-open" | "folder-other-open" | "folder-lua-open" | "folder-typescript-open" | "folder-graphql-open" | "folder-routes-open" | "folder-ci-open" | "folder-benchmark-open" | "folder-messages-open" | "folder-less-open" | "folder-gulp-open" | "folder-python-open" | "folder-mojo-open" | "folder-moon-open" | "folder-debug-open" | "folder-fastlane-open" | "folder-plugin-open" | "folder-middleware-open" | "folder-controller-open" | "folder-ansible-open" | "folder-server-open" | "folder-client-open" | "folder-tasks-open" | "folder-android-open" | "folder-ios-open" | "folder-upload-open" | "folder-download-open" | "folder-tools-open" | "folder-helper-open" | "folder-serverless-open" | "folder-api-open" | "folder-app-open" | "folder-apollo-open" | "folder-archive-open" | "folder-batch-open" | "folder-buildkite-open" | "folder-cluster-open" | "folder-command-open" | "folder-constant-open" | "folder-container-open" | "folder-content-open" | "folder-context-open" | "folder-core-open" | "folder-delta-open" | "folder-dump-open" | "folder-examples-open" | "folder-environment-open" | "folder-functions-open" | "folder-generator-open" | "folder-hook-open" | "folder-job-open" | "folder-keys-open" | "folder-layout-open" | "folder-mail-open" | "folder-mappings-open" | "folder-meta-open" | "folder-changesets-open" | "folder-packages-open" | "folder-shared-open" | "folder-shader-open" | "folder-stack-open" | "folder-template-open" | "folder-utils-open" | "folder-supabase-open" | "folder-private-open" | "folder-linux-open" | "folder-windows-open" | "folder-macos-open" | "folder-error-open" | "folder-event-open" | "folder-secure-open" | "folder-custom-open" | "folder-mock-open" | "folder-syntax-open" | "folder-vm-open" | "folder-stylus-open" | "folder-flow-open" | "folder-rules-open" | "folder-review-open" | "folder-animation-open" | "folder-guard-open" | "folder-prisma-open" | "folder-pipe-open" | "folder-svg-open" | "folder-terraform-open" | "folder-mobile-open" | "folder-stencil-open" | "folder-firebase-open" | "folder-svelte-open" | "folder-update-open" | "folder-intellij-open" | "folder-azure-pipelines-open" | "folder-mjml-open" | "folder-admin-open" | "folder-scala-open" | "folder-connection-open" | "folder-quasar-open" | "folder-next-open" | "folder-cobol-open" | "folder-yarn-open" | "folder-husky-open" | "folder-storybook-open" | "folder-base-open" | "folder-cart-open" | "folder-home-open" | "folder-project-open" | "folder-interface-open" | "folder-netlify-open" | "folder-enum-open" | "folder-contract-open" | "folder-queue-open" | "folder-vercel-open" | "folder-cypress-open" | "folder-decorators-open" | "folder-java-open" | "folder-resolver-open" | "folder-angular-open" | "folder-unity-open" | "folder-pdf-open" | "folder-proto-open" | "folder-plastic-open" | "folder-gamemaker-open" | "folder-mercurial-open" | "folder-godot-open" | "folder-lottie-open" | "folder-taskfile-open" | "html" | "pug" | "markdown" | "css" | "sass" | "less" | "json" | "hjson" | "jinja" | "proto" | "sublime" | "twine" | "yaml" | "xml" | "image" | "javascript" | "react" | "react_ts" | "routing" | "settings" | "typescript-def" | "markojs" | "astro" | "pdf" | "table" | "vscode" | "visualstudio" | "database" | "kusto" | "csharp" | "qsharp" | "zip" | "vala" | "zig" | "exe" | "hex" | "java" | "jar" | "javaclass" | "c" | "h" | "cpp" | "hpp" | "objective-c" | "objective-cpp" | "rc" | "go" | "python" | "python-misc" | "url" | "console" | "powershell" | "gradle" | "word" | "certificate" | "font" | "lib" | "ruby" | "fsharp" | "swift" | "arduino" | "docker" | "tex" | "powerpoint" | "video" | "virtual" | "email" | "audio" | "coffee" | "document" | "graphql" | "rust" | "raml" | "xaml" | "haskell" | "kotlin" | "otne" | "git" | "lua" | "clojure" | "groovy" | "r" | "dart" | "dart_generated" | "actionscript" | "mxml" | "autohotkey" | "flash" | "swc" | "cmake" | "assembly" | "vue" | "ocaml" | "odin" | "javascript-map" | "css-map" | "lock" | "handlebars" | "perl" | "haxe" | "test-ts" | "test-jsx" | "test-js" | "angular" | "angular-component" | "angular-guard" | "angular-service" | "angular-pipe" | "angular-directive" | "angular-resolver" | "puppet" | "elixir" | "livescript" | "erlang" | "twig" | "julia" | "elm" | "purescript" | "smarty" | "stylus" | "reason" | "bucklescript" | "merlin" | "verilog" | "mathematica" | "wolframlanguage" | "nunjucks" | "robot" | "solidity" | "autoit" | "haml" | "yang" | "mjml" | "terraform" | "laravel" | "applescript" | "cake" | "cucumber" | "nim" | "apiblueprint" | "riot" | "vfl" | "kl" | "postcss" | "todo" | "coldfusion" | "cabal" | "nix" | "slim" | "http" | "restql" | "kivy" | "graphcool" | "sbt" | "android" | "tune" | "gitlab" | "jenkins" | "figma" | "crystal" | "drone" | "cuda" | "log" | "dotjs" | "ejs" | "wakatime" | "processing" | "storybook" | "wepy" | "hcl" | "san" | "django" | "red" | "makefile" | "foxpro" | "i18n" | "webassembly" | "jupyter" | "d" | "mdx" | "mdsvex" | "ballerina" | "racket" | "bazel" | "mint" | "velocity" | "godot" | "godot-assets" | "azure-pipelines" | "azure" | "vagrant" | "prisma" | "razor" | "abc" | "asciidoc" | "edge" | "scheme" | "lisp" | "3d" | "svg" | "svelte" | "vim" | "moonscript" | "advpl_prw" | "advpl_ptm" | "advpl_tlpp" | "advpl_include" | "disc" | "fortran" | "tcl" | "liquid" | "prolog" | "coconut" | "sketch" | "pawn" | "forth" | "uml" | "meson" | "dhall" | "sml" | "opam" | "imba" | "drawio" | "pascal" | "shaderlab" | "sas" | "nuget" | "command" | "denizenscript" | "nginx" | "minecraft" | "rescript" | "rescript-interface" | "brainfuck" | "bicep" | "cobol" | "grain" | "lolcode" | "idris" | "pipeline" | "opa" | "windicss" | "scala" | "lilypond" | "vlang" | "chess" | "gemini" | "tsconfig" | "tauri" | "jsconfig" | "ada" | "horusec" | "coala" | "dinophp" | "teal" | "template" | "shader" | "siyuan" | "ndst" | "tobi" | "gleam" | "steadybit" | "tree" | "cadence" | "antlr" | "stylable" | "pinejs" | "taskfile" | "gamemaker" | "tldraw" | "typst" | "mermaid" | "mojo" | "roblox" | "spwn" | "templ" | "chrome" | "stan" | "abap" | "lottie" | "apps-script" | "playwright" | "go-mod" | "gemfile" | "rubocop" | "rspec" | "semgrep" | "vue-config" | "nuxt" | "vercel" | "verdaccio" | "next" | "remix" | "posthtml" | "webpack" | "ionic" | "gulp" | "nodejs" | "npm" | "yarn" | "turborepo" | "babel" | "blitz" | "contributing" | "readme" | "changelog" | "architecture" | "credits" | "authors" | "flow" | "favicon" | "karma" | "bithound" | "svgo" | "appveyor" | "travis" | "codecov" | "sonarcloud" | "protractor" | "fusebox" | "heroku" | "editorconfig" | "bower" | "eslint" | "conduct" | "watchman" | "aurelia" | "auto" | "mocha" | "firebase" | "rollup" | "hack" | "hardhat" | "stylelint" | "code-climate" | "prettier" | "renovate" | "apollo" | "nodemon" | "webhint" | "browserlist" | "snyk" | "sequelize" | "gatsby" | "circleci" | "cloudfoundry" | "grunt" | "jest" | "fastlane" | "helm" | "wallaby" | "stencil" | "semantic-release" | "bitbucket" | "istanbul" | "tailwindcss" | "buildkite" | "netlify" | "nest" | "moon" | "percy" | "gitpod" | "codeowners" | "gcp" | "husky" | "tilt" | "capacitor" | "adonis" | "commitlint" | "buck" | "nrwl" | "dune" | "roadmap" | "stryker" | "modernizr" | "stitches" | "replit" | "snowpack" | "quasar" | "dependabot" | "vite" | "vitest" | "lerna" | "textlint" | "sentry" | "phpunit" | "php-cs-fixer" | "robots" | "maven" | "serverless" | "supabase" | "ember" | "poetry" | "parcel" | "astyle" | "lighthouse" | "svgr" | "rome" | "cypress" | "plop" | "tobimake" | "pnpm" | "gridsome" | "caddy" | "bun" | "nano-staged" | "craco" | "mercurial" | "deno" | "plastic" | "unocss" | "ifanr-cloud" | "concourse" | "werf" | "panda" | "biome" | "esbuild" | "puppeteer" | "kubernetes" | "matlab" | "diff" | "typescript" | "php" | "salesforce" | "blink_light" | "jinja_light" | "crystal_light" | "drone_light" | "wakatime_light" | "hcl_light" | "uml_light" | "chess_light" | "tldraw_light" | "rubocop_light" | "vercel_light" | "next_light" | "remix_light" | "turborepo_light" | "auto_light" | "stylelint_light" | "code-climate_light" | "browserlist_light" | "circleci_light" | "semantic-release_light" | "netlify_light" | "stitches_light" | "snowpack_light" | "pnpm_light" | "bun_light" | "nano-staged_light" | "deno_light" | "folder-jinja_light" | "folder-intellij_light" | "folder-jinja-open_light" | "folder-intellij-open_light" | "file" | "folder" | "folder-open" | "folder-root" | "folder-root-open" | "php_elephant" | "php_elephant_pink" | "go_gopher" | "nodejs_alt" | "silverstripe";
|
|
19
|
+
title: string;
|
|
20
|
+
icon: "slug" | "file" | "command" | "search" | "blink" | "key" | "folder-robot" | "folder-src" | "folder-dist" | "folder-css" | "folder-sass" | "folder-images" | "folder-scripts" | "folder-node" | "folder-javascript" | "folder-json" | "folder-font" | "folder-bower" | "folder-test" | "folder-jinja" | "folder-markdown" | "folder-php" | "folder-phpmailer" | "folder-sublime" | "folder-docs" | "folder-git" | "folder-github" | "folder-gitlab" | "folder-vscode" | "folder-views" | "folder-vue" | "folder-vuepress" | "folder-expo" | "folder-config" | "folder-i18n" | "folder-components" | "folder-verdaccio" | "folder-aurelia" | "folder-resource" | "folder-lib" | "folder-theme" | "folder-webpack" | "folder-global" | "folder-public" | "folder-include" | "folder-docker" | "folder-database" | "folder-log" | "folder-target" | "folder-temp" | "folder-aws" | "folder-audio" | "folder-video" | "folder-kubernetes" | "folder-import" | "folder-export" | "folder-wakatime" | "folder-circleci" | "folder-wordpress" | "folder-gradle" | "folder-coverage" | "folder-class" | "folder-other" | "folder-lua" | "folder-typescript" | "folder-graphql" | "folder-routes" | "folder-ci" | "folder-benchmark" | "folder-messages" | "folder-less" | "folder-gulp" | "folder-python" | "folder-mojo" | "folder-moon" | "folder-debug" | "folder-fastlane" | "folder-plugin" | "folder-middleware" | "folder-controller" | "folder-ansible" | "folder-server" | "folder-client" | "folder-tasks" | "folder-android" | "folder-ios" | "folder-upload" | "folder-download" | "folder-tools" | "folder-helper" | "folder-serverless" | "folder-api" | "folder-app" | "folder-apollo" | "folder-archive" | "folder-batch" | "folder-buildkite" | "folder-cluster" | "folder-command" | "folder-constant" | "folder-container" | "folder-content" | "folder-context" | "folder-core" | "folder-delta" | "folder-dump" | "folder-examples" | "folder-environment" | "folder-functions" | "folder-generator" | "folder-hook" | "folder-job" | "folder-keys" | "folder-layout" | "folder-mail" | "folder-mappings" | "folder-meta" | "folder-changesets" | "folder-packages" | "folder-shared" | "folder-shader" | "folder-stack" | "folder-template" | "folder-utils" | "folder-supabase" | "folder-private" | "folder-linux" | "folder-windows" | "folder-macos" | "folder-error" | "folder-event" | "folder-secure" | "folder-custom" | "folder-mock" | "folder-syntax" | "folder-vm" | "folder-stylus" | "folder-flow" | "folder-rules" | "folder-review" | "folder-animation" | "folder-guard" | "folder-prisma" | "folder-pipe" | "folder-svg" | "folder-terraform" | "folder-mobile" | "folder-stencil" | "folder-firebase" | "folder-svelte" | "folder-update" | "folder-intellij" | "folder-azure-pipelines" | "folder-mjml" | "folder-admin" | "folder-scala" | "folder-connection" | "folder-quasar" | "folder-next" | "folder-cobol" | "folder-yarn" | "folder-husky" | "folder-storybook" | "folder-base" | "folder-cart" | "folder-home" | "folder-project" | "folder-interface" | "folder-netlify" | "folder-enum" | "folder-contract" | "folder-queue" | "folder-vercel" | "folder-cypress" | "folder-decorators" | "folder-java" | "folder-resolver" | "folder-angular" | "folder-unity" | "folder-pdf" | "folder-proto" | "folder-plastic" | "folder-gamemaker" | "folder-mercurial" | "folder-godot" | "folder-lottie" | "folder-taskfile" | "folder-robot-open" | "folder-src-open" | "folder-dist-open" | "folder-css-open" | "folder-sass-open" | "folder-images-open" | "folder-scripts-open" | "folder-node-open" | "folder-javascript-open" | "folder-json-open" | "folder-font-open" | "folder-bower-open" | "folder-test-open" | "folder-jinja-open" | "folder-markdown-open" | "folder-php-open" | "folder-phpmailer-open" | "folder-sublime-open" | "folder-docs-open" | "folder-git-open" | "folder-github-open" | "folder-gitlab-open" | "folder-vscode-open" | "folder-views-open" | "folder-vue-open" | "folder-vuepress-open" | "folder-expo-open" | "folder-config-open" | "folder-i18n-open" | "folder-components-open" | "folder-verdaccio-open" | "folder-aurelia-open" | "folder-resource-open" | "folder-lib-open" | "folder-theme-open" | "folder-webpack-open" | "folder-global-open" | "folder-public-open" | "folder-include-open" | "folder-docker-open" | "folder-database-open" | "folder-log-open" | "folder-target-open" | "folder-temp-open" | "folder-aws-open" | "folder-audio-open" | "folder-video-open" | "folder-kubernetes-open" | "folder-import-open" | "folder-export-open" | "folder-wakatime-open" | "folder-circleci-open" | "folder-wordpress-open" | "folder-gradle-open" | "folder-coverage-open" | "folder-class-open" | "folder-other-open" | "folder-lua-open" | "folder-typescript-open" | "folder-graphql-open" | "folder-routes-open" | "folder-ci-open" | "folder-benchmark-open" | "folder-messages-open" | "folder-less-open" | "folder-gulp-open" | "folder-python-open" | "folder-mojo-open" | "folder-moon-open" | "folder-debug-open" | "folder-fastlane-open" | "folder-plugin-open" | "folder-middleware-open" | "folder-controller-open" | "folder-ansible-open" | "folder-server-open" | "folder-client-open" | "folder-tasks-open" | "folder-android-open" | "folder-ios-open" | "folder-upload-open" | "folder-download-open" | "folder-tools-open" | "folder-helper-open" | "folder-serverless-open" | "folder-api-open" | "folder-app-open" | "folder-apollo-open" | "folder-archive-open" | "folder-batch-open" | "folder-buildkite-open" | "folder-cluster-open" | "folder-command-open" | "folder-constant-open" | "folder-container-open" | "folder-content-open" | "folder-context-open" | "folder-core-open" | "folder-delta-open" | "folder-dump-open" | "folder-examples-open" | "folder-environment-open" | "folder-functions-open" | "folder-generator-open" | "folder-hook-open" | "folder-job-open" | "folder-keys-open" | "folder-layout-open" | "folder-mail-open" | "folder-mappings-open" | "folder-meta-open" | "folder-changesets-open" | "folder-packages-open" | "folder-shared-open" | "folder-shader-open" | "folder-stack-open" | "folder-template-open" | "folder-utils-open" | "folder-supabase-open" | "folder-private-open" | "folder-linux-open" | "folder-windows-open" | "folder-macos-open" | "folder-error-open" | "folder-event-open" | "folder-secure-open" | "folder-custom-open" | "folder-mock-open" | "folder-syntax-open" | "folder-vm-open" | "folder-stylus-open" | "folder-flow-open" | "folder-rules-open" | "folder-review-open" | "folder-animation-open" | "folder-guard-open" | "folder-prisma-open" | "folder-pipe-open" | "folder-svg-open" | "folder-terraform-open" | "folder-mobile-open" | "folder-stencil-open" | "folder-firebase-open" | "folder-svelte-open" | "folder-update-open" | "folder-intellij-open" | "folder-azure-pipelines-open" | "folder-mjml-open" | "folder-admin-open" | "folder-scala-open" | "folder-connection-open" | "folder-quasar-open" | "folder-next-open" | "folder-cobol-open" | "folder-yarn-open" | "folder-husky-open" | "folder-storybook-open" | "folder-base-open" | "folder-cart-open" | "folder-home-open" | "folder-project-open" | "folder-interface-open" | "folder-netlify-open" | "folder-enum-open" | "folder-contract-open" | "folder-queue-open" | "folder-vercel-open" | "folder-cypress-open" | "folder-decorators-open" | "folder-java-open" | "folder-resolver-open" | "folder-angular-open" | "folder-unity-open" | "folder-pdf-open" | "folder-proto-open" | "folder-plastic-open" | "folder-gamemaker-open" | "folder-mercurial-open" | "folder-godot-open" | "folder-lottie-open" | "folder-taskfile-open" | "html" | "pug" | "markdown" | "css" | "sass" | "less" | "json" | "hjson" | "jinja" | "proto" | "sublime" | "twine" | "yaml" | "xml" | "image" | "javascript" | "react" | "react_ts" | "routing" | "settings" | "typescript-def" | "markojs" | "astro" | "pdf" | "table" | "vscode" | "visualstudio" | "database" | "kusto" | "csharp" | "qsharp" | "zip" | "vala" | "zig" | "exe" | "hex" | "java" | "jar" | "javaclass" | "c" | "h" | "cpp" | "hpp" | "objective-c" | "objective-cpp" | "rc" | "go" | "python" | "python-misc" | "url" | "console" | "powershell" | "gradle" | "word" | "certificate" | "font" | "lib" | "ruby" | "fsharp" | "swift" | "arduino" | "docker" | "tex" | "powerpoint" | "video" | "virtual" | "email" | "audio" | "coffee" | "document" | "graphql" | "rust" | "raml" | "xaml" | "haskell" | "kotlin" | "otne" | "git" | "lua" | "clojure" | "groovy" | "r" | "dart" | "dart_generated" | "actionscript" | "mxml" | "autohotkey" | "flash" | "swc" | "cmake" | "assembly" | "vue" | "ocaml" | "odin" | "javascript-map" | "css-map" | "lock" | "handlebars" | "perl" | "haxe" | "test-ts" | "test-jsx" | "test-js" | "angular" | "angular-component" | "angular-guard" | "angular-service" | "angular-pipe" | "angular-directive" | "angular-resolver" | "puppet" | "elixir" | "livescript" | "erlang" | "twig" | "julia" | "elm" | "purescript" | "smarty" | "stylus" | "reason" | "bucklescript" | "merlin" | "verilog" | "mathematica" | "wolframlanguage" | "nunjucks" | "robot" | "solidity" | "autoit" | "haml" | "yang" | "mjml" | "terraform" | "laravel" | "applescript" | "cake" | "cucumber" | "nim" | "apiblueprint" | "riot" | "vfl" | "kl" | "postcss" | "todo" | "coldfusion" | "cabal" | "nix" | "slim" | "http" | "restql" | "kivy" | "graphcool" | "sbt" | "android" | "tune" | "gitlab" | "jenkins" | "figma" | "crystal" | "drone" | "cuda" | "log" | "dotjs" | "ejs" | "wakatime" | "processing" | "storybook" | "wepy" | "hcl" | "san" | "django" | "red" | "makefile" | "foxpro" | "i18n" | "webassembly" | "jupyter" | "d" | "mdx" | "mdsvex" | "ballerina" | "racket" | "bazel" | "mint" | "velocity" | "godot" | "godot-assets" | "azure-pipelines" | "azure" | "vagrant" | "prisma" | "razor" | "abc" | "asciidoc" | "edge" | "scheme" | "lisp" | "3d" | "svg" | "svelte" | "vim" | "moonscript" | "advpl_prw" | "advpl_ptm" | "advpl_tlpp" | "advpl_include" | "disc" | "fortran" | "tcl" | "liquid" | "prolog" | "coconut" | "sketch" | "pawn" | "forth" | "uml" | "meson" | "dhall" | "sml" | "opam" | "imba" | "drawio" | "pascal" | "shaderlab" | "sas" | "nuget" | "denizenscript" | "nginx" | "minecraft" | "rescript" | "rescript-interface" | "brainfuck" | "bicep" | "cobol" | "grain" | "lolcode" | "idris" | "pipeline" | "opa" | "windicss" | "scala" | "lilypond" | "vlang" | "chess" | "gemini" | "tsconfig" | "tauri" | "jsconfig" | "ada" | "horusec" | "coala" | "dinophp" | "teal" | "template" | "shader" | "siyuan" | "ndst" | "tobi" | "gleam" | "steadybit" | "tree" | "cadence" | "antlr" | "stylable" | "pinejs" | "taskfile" | "gamemaker" | "tldraw" | "typst" | "mermaid" | "mojo" | "roblox" | "spwn" | "templ" | "chrome" | "stan" | "abap" | "lottie" | "apps-script" | "playwright" | "go-mod" | "gemfile" | "rubocop" | "rspec" | "semgrep" | "vue-config" | "nuxt" | "vercel" | "verdaccio" | "next" | "remix" | "posthtml" | "webpack" | "ionic" | "gulp" | "nodejs" | "npm" | "yarn" | "turborepo" | "babel" | "blitz" | "contributing" | "readme" | "changelog" | "architecture" | "credits" | "authors" | "flow" | "favicon" | "karma" | "bithound" | "svgo" | "appveyor" | "travis" | "codecov" | "sonarcloud" | "protractor" | "fusebox" | "heroku" | "editorconfig" | "bower" | "eslint" | "conduct" | "watchman" | "aurelia" | "auto" | "mocha" | "firebase" | "rollup" | "hack" | "hardhat" | "stylelint" | "code-climate" | "prettier" | "renovate" | "apollo" | "nodemon" | "webhint" | "browserlist" | "snyk" | "sequelize" | "gatsby" | "circleci" | "cloudfoundry" | "grunt" | "jest" | "fastlane" | "helm" | "wallaby" | "stencil" | "semantic-release" | "bitbucket" | "istanbul" | "tailwindcss" | "buildkite" | "netlify" | "nest" | "moon" | "percy" | "gitpod" | "codeowners" | "gcp" | "husky" | "tilt" | "capacitor" | "adonis" | "commitlint" | "buck" | "nrwl" | "dune" | "roadmap" | "stryker" | "modernizr" | "stitches" | "replit" | "snowpack" | "quasar" | "dependabot" | "vite" | "vitest" | "lerna" | "textlint" | "sentry" | "phpunit" | "php-cs-fixer" | "robots" | "maven" | "serverless" | "supabase" | "ember" | "poetry" | "parcel" | "astyle" | "lighthouse" | "svgr" | "rome" | "cypress" | "plop" | "tobimake" | "pnpm" | "gridsome" | "caddy" | "bun" | "nano-staged" | "craco" | "mercurial" | "deno" | "plastic" | "unocss" | "ifanr-cloud" | "concourse" | "werf" | "panda" | "biome" | "esbuild" | "puppeteer" | "kubernetes" | "matlab" | "diff" | "typescript" | "php" | "salesforce" | "blink_light" | "jinja_light" | "crystal_light" | "drone_light" | "wakatime_light" | "hcl_light" | "uml_light" | "chess_light" | "tldraw_light" | "rubocop_light" | "vercel_light" | "next_light" | "remix_light" | "turborepo_light" | "auto_light" | "stylelint_light" | "code-climate_light" | "browserlist_light" | "circleci_light" | "semantic-release_light" | "netlify_light" | "stitches_light" | "snowpack_light" | "pnpm_light" | "bun_light" | "nano-staged_light" | "deno_light" | "folder-jinja_light" | "folder-intellij_light" | "folder-jinja-open_light" | "folder-intellij-open_light" | "folder" | "folder-open" | "folder-root" | "folder-root-open" | "php_elephant" | "php_elephant_pink" | "go_gopher" | "nodejs_alt" | "silverstripe";
|
|
8
21
|
runner: ({
|
|
9
22
|
command: string;
|
|
10
23
|
outputFile: string;
|
|
11
24
|
args?: string[] | undefined;
|
|
12
25
|
outputTransform?: ((args_0: unknown, ...args_1: unknown[]) => {
|
|
13
|
-
value: number;
|
|
14
26
|
slug: string;
|
|
27
|
+
value: number;
|
|
15
28
|
score: number;
|
|
16
29
|
displayValue?: string | undefined;
|
|
17
30
|
details?: {
|
|
@@ -30,8 +43,8 @@ export declare function configMiddleware<T extends Partial<GeneralCliOptions & C
|
|
|
30
43
|
}[];
|
|
31
44
|
} | undefined;
|
|
32
45
|
}[] | Promise<{
|
|
33
|
-
value: number;
|
|
34
46
|
slug: string;
|
|
47
|
+
value: number;
|
|
35
48
|
score: number;
|
|
36
49
|
displayValue?: string | undefined;
|
|
37
50
|
details?: {
|
|
@@ -51,8 +64,8 @@ export declare function configMiddleware<T extends Partial<GeneralCliOptions & C
|
|
|
51
64
|
} | undefined;
|
|
52
65
|
}[]>) | undefined;
|
|
53
66
|
} | ((args_0: ((args_0: unknown, ...args_1: unknown[]) => void) | undefined, ...args_1: unknown[]) => {
|
|
54
|
-
value: number;
|
|
55
67
|
slug: string;
|
|
68
|
+
value: number;
|
|
56
69
|
score: number;
|
|
57
70
|
displayValue?: string | undefined;
|
|
58
71
|
details?: {
|
|
@@ -71,8 +84,8 @@ export declare function configMiddleware<T extends Partial<GeneralCliOptions & C
|
|
|
71
84
|
}[];
|
|
72
85
|
} | undefined;
|
|
73
86
|
}[] | Promise<{
|
|
74
|
-
value: number;
|
|
75
87
|
slug: string;
|
|
88
|
+
value: number;
|
|
76
89
|
score: number;
|
|
77
90
|
displayValue?: string | undefined;
|
|
78
91
|
details?: {
|
|
@@ -95,8 +108,8 @@ export declare function configMiddleware<T extends Partial<GeneralCliOptions & C
|
|
|
95
108
|
outputFile: string;
|
|
96
109
|
args?: string[] | undefined;
|
|
97
110
|
outputTransform?: ((args_0: unknown, ...args_1: unknown[]) => {
|
|
98
|
-
value: number;
|
|
99
111
|
slug: string;
|
|
112
|
+
value: number;
|
|
100
113
|
score: number;
|
|
101
114
|
displayValue?: string | undefined;
|
|
102
115
|
details?: {
|
|
@@ -115,8 +128,8 @@ export declare function configMiddleware<T extends Partial<GeneralCliOptions & C
|
|
|
115
128
|
}[];
|
|
116
129
|
} | undefined;
|
|
117
130
|
}[] | Promise<{
|
|
118
|
-
value: number;
|
|
119
131
|
slug: string;
|
|
132
|
+
value: number;
|
|
120
133
|
score: number;
|
|
121
134
|
displayValue?: string | undefined;
|
|
122
135
|
details?: {
|
|
@@ -136,8 +149,8 @@ export declare function configMiddleware<T extends Partial<GeneralCliOptions & C
|
|
|
136
149
|
} | undefined;
|
|
137
150
|
}[]>) | undefined;
|
|
138
151
|
} | ((args_0: ((args_0: unknown, ...args_1: unknown[]) => void) | undefined, ...args_1: unknown[]) => {
|
|
139
|
-
value: number;
|
|
140
152
|
slug: string;
|
|
153
|
+
value: number;
|
|
141
154
|
score: number;
|
|
142
155
|
displayValue?: string | undefined;
|
|
143
156
|
details?: {
|
|
@@ -156,8 +169,8 @@ export declare function configMiddleware<T extends Partial<GeneralCliOptions & C
|
|
|
156
169
|
}[];
|
|
157
170
|
} | undefined;
|
|
158
171
|
}[] | Promise<{
|
|
159
|
-
value: number;
|
|
160
172
|
slug: string;
|
|
173
|
+
value: number;
|
|
161
174
|
score: number;
|
|
162
175
|
displayValue?: string | undefined;
|
|
163
176
|
details?: {
|
|
@@ -177,8 +190,8 @@ export declare function configMiddleware<T extends Partial<GeneralCliOptions & C
|
|
|
177
190
|
} | undefined;
|
|
178
191
|
}[]>) | undefined);
|
|
179
192
|
audits: {
|
|
180
|
-
title: string;
|
|
181
193
|
slug: string;
|
|
194
|
+
title: string;
|
|
182
195
|
description?: string | undefined;
|
|
183
196
|
docsUrl?: string | undefined;
|
|
184
197
|
}[];
|
|
@@ -187,29 +200,16 @@ export declare function configMiddleware<T extends Partial<GeneralCliOptions & C
|
|
|
187
200
|
packageName?: string | undefined;
|
|
188
201
|
version?: string | undefined;
|
|
189
202
|
groups?: {
|
|
190
|
-
title: string;
|
|
191
203
|
slug: string;
|
|
192
204
|
refs: {
|
|
193
205
|
slug: string;
|
|
194
206
|
weight: number;
|
|
195
207
|
}[];
|
|
208
|
+
title: string;
|
|
196
209
|
description?: string | undefined;
|
|
197
210
|
docsUrl?: string | undefined;
|
|
198
211
|
}[] | undefined;
|
|
199
212
|
}[];
|
|
200
|
-
categories: {
|
|
201
|
-
title: string;
|
|
202
|
-
slug: string;
|
|
203
|
-
refs: {
|
|
204
|
-
type: "audit" | "group";
|
|
205
|
-
slug: string;
|
|
206
|
-
weight: number;
|
|
207
|
-
plugin: string;
|
|
208
|
-
}[];
|
|
209
|
-
description?: string | undefined;
|
|
210
|
-
docsUrl?: string | undefined;
|
|
211
|
-
isBinary?: boolean | undefined;
|
|
212
|
-
}[];
|
|
213
213
|
persist?: {
|
|
214
214
|
outputDir?: string | undefined;
|
|
215
215
|
filename?: string | undefined;
|