@code-pushup/core 0.8.9 → 0.8.11
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 +169 -99
- package/package.json +1 -1
- package/src/lib/implementation/json-to-gql.d.ts +3 -3
package/index.js
CHANGED
|
@@ -43,6 +43,46 @@ function errorItems(items, transform = (items2) => items2.join(", ")) {
|
|
|
43
43
|
function exists(value) {
|
|
44
44
|
return value != null;
|
|
45
45
|
}
|
|
46
|
+
function getMissingRefsForCategories(categories, plugins) {
|
|
47
|
+
const missingRefs = [];
|
|
48
|
+
const auditRefsFromCategory = categories.flatMap(
|
|
49
|
+
({ refs }) => refs.filter(({ type }) => type === "audit").map(({ plugin, slug }) => `${plugin}/${slug}`)
|
|
50
|
+
);
|
|
51
|
+
const auditRefsFromPlugins = plugins.flatMap(
|
|
52
|
+
({ audits, slug: pluginSlug }) => {
|
|
53
|
+
return audits.map(({ slug }) => `${pluginSlug}/${slug}`);
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
const missingAuditRefs = hasMissingStrings(
|
|
57
|
+
auditRefsFromCategory,
|
|
58
|
+
auditRefsFromPlugins
|
|
59
|
+
);
|
|
60
|
+
if (Array.isArray(missingAuditRefs) && missingAuditRefs.length > 0) {
|
|
61
|
+
missingRefs.push(...missingAuditRefs);
|
|
62
|
+
}
|
|
63
|
+
const groupRefsFromCategory = categories.flatMap(
|
|
64
|
+
({ refs }) => refs.filter(({ type }) => type === "group").map(({ plugin, slug }) => `${plugin}#${slug} (group)`)
|
|
65
|
+
);
|
|
66
|
+
const groupRefsFromPlugins = plugins.flatMap(
|
|
67
|
+
({ groups, slug: pluginSlug }) => {
|
|
68
|
+
return Array.isArray(groups) ? groups.map(({ slug }) => `${pluginSlug}#${slug} (group)`) : [];
|
|
69
|
+
}
|
|
70
|
+
);
|
|
71
|
+
const missingGroupRefs = hasMissingStrings(
|
|
72
|
+
groupRefsFromCategory,
|
|
73
|
+
groupRefsFromPlugins
|
|
74
|
+
);
|
|
75
|
+
if (Array.isArray(missingGroupRefs) && missingGroupRefs.length > 0) {
|
|
76
|
+
missingRefs.push(...missingGroupRefs);
|
|
77
|
+
}
|
|
78
|
+
return missingRefs.length ? missingRefs : false;
|
|
79
|
+
}
|
|
80
|
+
function missingRefsForCategoriesErrorMsg(categories, plugins) {
|
|
81
|
+
const missingRefs = getMissingRefsForCategories(categories, plugins);
|
|
82
|
+
return `The following category references need to point to an audit or group: ${errorItems(
|
|
83
|
+
missingRefs
|
|
84
|
+
)}`;
|
|
85
|
+
}
|
|
46
86
|
|
|
47
87
|
// packages/models/src/lib/implementation/schemas.ts
|
|
48
88
|
function executionMetaSchema(options = {
|
|
@@ -101,15 +141,13 @@ function positiveIntSchema(description) {
|
|
|
101
141
|
return z.number({ description }).int().nonnegative();
|
|
102
142
|
}
|
|
103
143
|
function packageVersionSchema(options) {
|
|
104
|
-
|
|
105
|
-
versionDescription = versionDescription || "NPM version of the package";
|
|
106
|
-
optional = !!optional;
|
|
144
|
+
const { versionDescription = "NPM version of the package", required } = options ?? {};
|
|
107
145
|
const packageSchema = z.string({ description: "NPM package name" });
|
|
108
146
|
const versionSchema = z.string({ description: versionDescription });
|
|
109
147
|
return z.object(
|
|
110
148
|
{
|
|
111
|
-
packageName:
|
|
112
|
-
version:
|
|
149
|
+
packageName: required ? packageSchema : packageSchema.optional(),
|
|
150
|
+
version: required ? versionSchema : versionSchema.optional()
|
|
113
151
|
},
|
|
114
152
|
{ description: "NPM package name and version of a published package" }
|
|
115
153
|
);
|
|
@@ -171,7 +209,7 @@ var pluginAuditsSchema = z2.array(auditSchema, {
|
|
|
171
209
|
);
|
|
172
210
|
function duplicateSlugsInAuditsErrorMsg(audits) {
|
|
173
211
|
const duplicateRefs = getDuplicateSlugsInAudits(audits);
|
|
174
|
-
return `In plugin audits the slugs are not unique: ${errorItems(
|
|
212
|
+
return `In plugin audits the following slugs are not unique: ${errorItems(
|
|
175
213
|
duplicateRefs
|
|
176
214
|
)}`;
|
|
177
215
|
}
|
|
@@ -360,7 +398,9 @@ function getDuplicateRefsInGroups(groups) {
|
|
|
360
398
|
}
|
|
361
399
|
function duplicateSlugsInGroupsErrorMsg(groups) {
|
|
362
400
|
const duplicateRefs = getDuplicateSlugsInGroups(groups);
|
|
363
|
-
return `In groups the slugs are not unique: ${errorItems(
|
|
401
|
+
return `In groups the following slugs are not unique: ${errorItems(
|
|
402
|
+
duplicateRefs
|
|
403
|
+
)}`;
|
|
364
404
|
}
|
|
365
405
|
function getDuplicateSlugsInGroups(groups) {
|
|
366
406
|
return Array.isArray(groups) ? hasDuplicateStrings(groups.map(({ slug }) => slug)) : false;
|
|
@@ -386,9 +426,7 @@ var onProgressSchema = z8.function().args(z8.unknown()).returns(z8.void());
|
|
|
386
426
|
var runnerFunctionSchema = z8.function().args(onProgressSchema.optional()).returns(z8.union([auditOutputsSchema, z8.promise(auditOutputsSchema)]));
|
|
387
427
|
|
|
388
428
|
// packages/models/src/lib/plugin-config.ts
|
|
389
|
-
var pluginMetaSchema = packageVersionSchema(
|
|
390
|
-
optional: true
|
|
391
|
-
}).merge(
|
|
429
|
+
var pluginMetaSchema = packageVersionSchema().merge(
|
|
392
430
|
metaSchema({
|
|
393
431
|
titleDescription: "Descriptive name",
|
|
394
432
|
descriptionDescription: "Description (markdown)",
|
|
@@ -397,7 +435,7 @@ var pluginMetaSchema = packageVersionSchema({
|
|
|
397
435
|
})
|
|
398
436
|
).merge(
|
|
399
437
|
z9.object({
|
|
400
|
-
slug: slugSchema("
|
|
438
|
+
slug: slugSchema("Unique plugin slug within core config"),
|
|
401
439
|
icon: materialIconSchema
|
|
402
440
|
})
|
|
403
441
|
);
|
|
@@ -414,20 +452,17 @@ var pluginConfigSchema = pluginMetaSchema.merge(pluginDataSchema).refine(
|
|
|
414
452
|
);
|
|
415
453
|
function missingRefsFromGroupsErrorMsg(pluginCfg) {
|
|
416
454
|
const missingRefs = getMissingRefsFromGroups(pluginCfg);
|
|
417
|
-
return `
|
|
455
|
+
return `The following group references need to point to an existing audit in this plugin config: ${errorItems(
|
|
418
456
|
missingRefs
|
|
419
457
|
)}`;
|
|
420
458
|
}
|
|
421
459
|
function getMissingRefsFromGroups(pluginCfg) {
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
);
|
|
429
|
-
}
|
|
430
|
-
return false;
|
|
460
|
+
return hasMissingStrings(
|
|
461
|
+
pluginCfg.groups?.flatMap(
|
|
462
|
+
({ refs: audits }) => audits.map(({ slug: ref }) => ref)
|
|
463
|
+
) ?? [],
|
|
464
|
+
pluginCfg.audits.map(({ slug }) => slug)
|
|
465
|
+
);
|
|
431
466
|
}
|
|
432
467
|
|
|
433
468
|
// packages/models/src/lib/upload-config.ts
|
|
@@ -437,19 +472,15 @@ var uploadConfigSchema = z10.object({
|
|
|
437
472
|
apiKey: z10.string({
|
|
438
473
|
description: "API key with write access to portal (use `process.env` for security)"
|
|
439
474
|
}),
|
|
440
|
-
organization:
|
|
441
|
-
|
|
442
|
-
}),
|
|
443
|
-
project: z10.string({
|
|
444
|
-
description: "Project in code versioning system"
|
|
445
|
-
})
|
|
475
|
+
organization: slugSchema("Organization slug from Code PushUp portal"),
|
|
476
|
+
project: slugSchema("Project slug from Code PushUp portal")
|
|
446
477
|
});
|
|
447
478
|
|
|
448
479
|
// packages/models/src/lib/core-config.ts
|
|
449
480
|
var unrefinedCoreConfigSchema = z11.object({
|
|
450
481
|
plugins: z11.array(pluginConfigSchema, {
|
|
451
482
|
description: "List of plugins to be used (official, community-provided, or custom)"
|
|
452
|
-
}),
|
|
483
|
+
}).min(1),
|
|
453
484
|
/** portal configuration for persisting results */
|
|
454
485
|
persist: persistConfigSchema.optional(),
|
|
455
486
|
/** portal configuration for uploading results */
|
|
@@ -459,52 +490,15 @@ var unrefinedCoreConfigSchema = z11.object({
|
|
|
459
490
|
var coreConfigSchema = refineCoreConfig(unrefinedCoreConfigSchema);
|
|
460
491
|
function refineCoreConfig(schema) {
|
|
461
492
|
return schema.refine(
|
|
462
|
-
(coreCfg) => !getMissingRefsForCategories(coreCfg),
|
|
493
|
+
(coreCfg) => !getMissingRefsForCategories(coreCfg.categories, coreCfg.plugins),
|
|
463
494
|
(coreCfg) => ({
|
|
464
|
-
message: missingRefsForCategoriesErrorMsg(
|
|
495
|
+
message: missingRefsForCategoriesErrorMsg(
|
|
496
|
+
coreCfg.categories,
|
|
497
|
+
coreCfg.plugins
|
|
498
|
+
)
|
|
465
499
|
})
|
|
466
500
|
);
|
|
467
501
|
}
|
|
468
|
-
function missingRefsForCategoriesErrorMsg(coreCfg) {
|
|
469
|
-
const missingRefs = getMissingRefsForCategories(coreCfg);
|
|
470
|
-
return `In the categories, the following plugin refs do not exist in the provided plugins: ${errorItems(
|
|
471
|
-
missingRefs
|
|
472
|
-
)}`;
|
|
473
|
-
}
|
|
474
|
-
function getMissingRefsForCategories(coreCfg) {
|
|
475
|
-
const missingRefs = [];
|
|
476
|
-
const auditRefsFromCategory = coreCfg.categories.flatMap(
|
|
477
|
-
({ refs }) => refs.filter(({ type }) => type === "audit").map(({ plugin, slug }) => `${plugin}/${slug}`)
|
|
478
|
-
);
|
|
479
|
-
const auditRefsFromPlugins = coreCfg.plugins.flatMap(
|
|
480
|
-
({ audits, slug: pluginSlug }) => {
|
|
481
|
-
return audits.map(({ slug }) => `${pluginSlug}/${slug}`);
|
|
482
|
-
}
|
|
483
|
-
);
|
|
484
|
-
const missingAuditRefs = hasMissingStrings(
|
|
485
|
-
auditRefsFromCategory,
|
|
486
|
-
auditRefsFromPlugins
|
|
487
|
-
);
|
|
488
|
-
if (Array.isArray(missingAuditRefs) && missingAuditRefs.length > 0) {
|
|
489
|
-
missingRefs.push(...missingAuditRefs);
|
|
490
|
-
}
|
|
491
|
-
const groupRefsFromCategory = coreCfg.categories.flatMap(
|
|
492
|
-
({ refs }) => refs.filter(({ type }) => type === "group").map(({ plugin, slug }) => `${plugin}#${slug} (group)`)
|
|
493
|
-
);
|
|
494
|
-
const groupRefsFromPlugins = coreCfg.plugins.flatMap(
|
|
495
|
-
({ groups, slug: pluginSlug }) => {
|
|
496
|
-
return Array.isArray(groups) ? groups.map(({ slug }) => `${pluginSlug}#${slug} (group)`) : [];
|
|
497
|
-
}
|
|
498
|
-
);
|
|
499
|
-
const missingGroupRefs = hasMissingStrings(
|
|
500
|
-
groupRefsFromCategory,
|
|
501
|
-
groupRefsFromPlugins
|
|
502
|
-
);
|
|
503
|
-
if (Array.isArray(missingGroupRefs) && missingGroupRefs.length > 0) {
|
|
504
|
-
missingRefs.push(...missingGroupRefs);
|
|
505
|
-
}
|
|
506
|
-
return missingRefs.length ? missingRefs : false;
|
|
507
|
-
}
|
|
508
502
|
|
|
509
503
|
// packages/models/src/lib/implementation/constants.ts
|
|
510
504
|
var PERSIST_OUTPUT_DIR = ".code-pushup";
|
|
@@ -524,9 +518,32 @@ var pluginReportSchema = pluginMetaSchema.merge(
|
|
|
524
518
|
audits: z12.array(auditReportSchema),
|
|
525
519
|
groups: z12.array(groupSchema).optional()
|
|
526
520
|
})
|
|
521
|
+
).refine(
|
|
522
|
+
(pluginReport) => !getMissingRefsFromGroups2(pluginReport.audits, pluginReport.groups ?? []),
|
|
523
|
+
(pluginReport) => ({
|
|
524
|
+
message: missingRefsFromGroupsErrorMsg2(
|
|
525
|
+
pluginReport.audits,
|
|
526
|
+
pluginReport.groups ?? []
|
|
527
|
+
)
|
|
528
|
+
})
|
|
527
529
|
);
|
|
530
|
+
function missingRefsFromGroupsErrorMsg2(audits, groups) {
|
|
531
|
+
const missingRefs = getMissingRefsFromGroups2(audits, groups);
|
|
532
|
+
return `group references need to point to an existing audit in this plugin report: ${errorItems(
|
|
533
|
+
missingRefs
|
|
534
|
+
)}`;
|
|
535
|
+
}
|
|
536
|
+
function getMissingRefsFromGroups2(audits, groups) {
|
|
537
|
+
return hasMissingStrings(
|
|
538
|
+
groups.flatMap(
|
|
539
|
+
({ refs: auditRefs }) => auditRefs.map(({ slug: ref }) => ref)
|
|
540
|
+
),
|
|
541
|
+
audits.map(({ slug }) => slug)
|
|
542
|
+
);
|
|
543
|
+
}
|
|
528
544
|
var reportSchema = packageVersionSchema({
|
|
529
|
-
versionDescription: "NPM version of the CLI"
|
|
545
|
+
versionDescription: "NPM version of the CLI",
|
|
546
|
+
required: true
|
|
530
547
|
}).merge(
|
|
531
548
|
executionMetaSchema({
|
|
532
549
|
descriptionDate: "Start date and time of the collect run",
|
|
@@ -536,10 +553,18 @@ var reportSchema = packageVersionSchema({
|
|
|
536
553
|
z12.object(
|
|
537
554
|
{
|
|
538
555
|
categories: z12.array(categoryConfigSchema),
|
|
539
|
-
plugins: z12.array(pluginReportSchema)
|
|
556
|
+
plugins: z12.array(pluginReportSchema).min(1)
|
|
540
557
|
},
|
|
541
558
|
{ description: "Collect output data" }
|
|
542
559
|
)
|
|
560
|
+
).refine(
|
|
561
|
+
(report) => !getMissingRefsForCategories(report.categories, report.plugins),
|
|
562
|
+
(report) => ({
|
|
563
|
+
message: missingRefsForCategoriesErrorMsg(
|
|
564
|
+
report.categories,
|
|
565
|
+
report.plugins
|
|
566
|
+
)
|
|
567
|
+
})
|
|
543
568
|
);
|
|
544
569
|
|
|
545
570
|
// packages/utils/src/lib/constants.ts
|
|
@@ -808,13 +833,13 @@ function getGroupWithAudits(refSlug, refPlugin, plugins) {
|
|
|
808
833
|
},
|
|
809
834
|
[]
|
|
810
835
|
);
|
|
811
|
-
const audits = groupAudits.sort(
|
|
836
|
+
const audits = groupAudits.sort(compareCategoryAudits);
|
|
812
837
|
return {
|
|
813
838
|
...groupWithAudits,
|
|
814
839
|
audits
|
|
815
840
|
};
|
|
816
841
|
}
|
|
817
|
-
function
|
|
842
|
+
function compareCategoryAudits(a, b) {
|
|
818
843
|
if (a.weight !== b.weight) {
|
|
819
844
|
return b.weight - a.weight;
|
|
820
845
|
}
|
|
@@ -826,7 +851,7 @@ function sortCategoryAudits(a, b) {
|
|
|
826
851
|
}
|
|
827
852
|
return a.title.localeCompare(b.title);
|
|
828
853
|
}
|
|
829
|
-
function
|
|
854
|
+
function compareAudits(a, b) {
|
|
830
855
|
if (a.score !== b.score) {
|
|
831
856
|
return a.score - b.score;
|
|
832
857
|
}
|
|
@@ -1120,23 +1145,18 @@ function reportToCategoriesSection(report) {
|
|
|
1120
1145
|
category.score
|
|
1121
1146
|
)} Score: ${style(formatReportScore(category.score))}`;
|
|
1122
1147
|
const categoryDocs = getDocsAndDescription(category);
|
|
1123
|
-
const
|
|
1124
|
-
(
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
{ groups: [], audits: [] }
|
|
1136
|
-
);
|
|
1137
|
-
const audits = auditsAndGroups.audits.sort(sortCategoryAudits).map((audit) => auditItemToCategorySection(audit, plugins)).join(NEW_LINE);
|
|
1138
|
-
const groups = auditsAndGroups.groups.map((group) => groupItemToCategorySection(group, plugins)).join("");
|
|
1139
|
-
return acc + NEW_LINE + categoryTitle + NEW_LINE + NEW_LINE + categoryDocs + categoryScore + NEW_LINE + groups + NEW_LINE + audits;
|
|
1148
|
+
const categoryMDItems = category.refs.reduce((acc2, ref) => {
|
|
1149
|
+
if (ref.type === "group") {
|
|
1150
|
+
const group = getGroupWithAudits(ref.slug, ref.plugin, plugins);
|
|
1151
|
+
const mdGroupItem = groupItemToCategorySection(group, plugins);
|
|
1152
|
+
return acc2 + mdGroupItem + NEW_LINE;
|
|
1153
|
+
} else {
|
|
1154
|
+
const audit = getAuditByRef(ref, plugins);
|
|
1155
|
+
const mdAuditItem = auditItemToCategorySection(audit, plugins);
|
|
1156
|
+
return acc2 + mdAuditItem + NEW_LINE;
|
|
1157
|
+
}
|
|
1158
|
+
}, "");
|
|
1159
|
+
return acc + NEW_LINE + categoryTitle + NEW_LINE + NEW_LINE + categoryDocs + categoryScore + NEW_LINE + categoryMDItems;
|
|
1140
1160
|
}, "");
|
|
1141
1161
|
return h2("\u{1F3F7} Categories") + NEW_LINE + categoryDetails;
|
|
1142
1162
|
}
|
|
@@ -1175,7 +1195,7 @@ function groupItemToCategorySection(group, plugins) {
|
|
|
1175
1195
|
}
|
|
1176
1196
|
function reportToAuditsSection(report) {
|
|
1177
1197
|
const auditsSection = report.plugins.reduce((acc, plugin) => {
|
|
1178
|
-
const auditsData = plugin.audits.
|
|
1198
|
+
const auditsData = plugin.audits.reduce((acc2, audit) => {
|
|
1179
1199
|
const auditTitle = `${audit.title} (${getPluginNameFromSlug(
|
|
1180
1200
|
audit.plugin,
|
|
1181
1201
|
report.plugins
|
|
@@ -1198,7 +1218,7 @@ function reportToAuditsSection(report) {
|
|
|
1198
1218
|
}
|
|
1199
1219
|
const detailsTableData = [
|
|
1200
1220
|
detailsTableHeaders,
|
|
1201
|
-
...audit.details.issues.
|
|
1221
|
+
...audit.details.issues.map((issue) => {
|
|
1202
1222
|
const severity = `${getSeverityIcon(issue.severity)} <i>${issue.severity}</i>`;
|
|
1203
1223
|
const message = issue.message;
|
|
1204
1224
|
if (!issue.source) {
|
|
@@ -1302,7 +1322,7 @@ function reportToDetailSection(report) {
|
|
|
1302
1322
|
output += addLine(chalk3.magentaBright.bold(`${title} audits`));
|
|
1303
1323
|
output += addLine();
|
|
1304
1324
|
const ui = cliui({ width: 80 });
|
|
1305
|
-
audits.
|
|
1325
|
+
audits.forEach(({ score, title: title2, displayValue, value }) => {
|
|
1306
1326
|
ui.div(
|
|
1307
1327
|
{
|
|
1308
1328
|
text: withColor({ score, text: "\u25CF" }),
|
|
@@ -1462,6 +1482,56 @@ var verboseUtils = (verbose) => ({
|
|
|
1462
1482
|
exec: getExecVerbose(verbose)
|
|
1463
1483
|
});
|
|
1464
1484
|
|
|
1485
|
+
// packages/utils/src/lib/sort-report.ts
|
|
1486
|
+
function sortReport(report) {
|
|
1487
|
+
const { categories, plugins } = report;
|
|
1488
|
+
const sortedCategories = categories.map((category) => {
|
|
1489
|
+
const { audits, groups } = category.refs.reduce(
|
|
1490
|
+
(acc, ref) => ({
|
|
1491
|
+
...acc,
|
|
1492
|
+
...ref.type === "group" ? {
|
|
1493
|
+
groups: [
|
|
1494
|
+
...acc.groups,
|
|
1495
|
+
getGroupWithAudits(ref.slug, ref.plugin, plugins)
|
|
1496
|
+
]
|
|
1497
|
+
} : {
|
|
1498
|
+
audits: [...acc.audits, getAuditByRef(ref, plugins)]
|
|
1499
|
+
}
|
|
1500
|
+
}),
|
|
1501
|
+
{ groups: [], audits: [] }
|
|
1502
|
+
);
|
|
1503
|
+
const sortedAuditsAndGroups = [
|
|
1504
|
+
...groups,
|
|
1505
|
+
...audits.sort(compareCategoryAudits)
|
|
1506
|
+
];
|
|
1507
|
+
const sortedRefs = category.refs.slice().sort((a, b) => {
|
|
1508
|
+
const aIndex = sortedAuditsAndGroups.findIndex(
|
|
1509
|
+
(ref) => ref.slug === a.slug
|
|
1510
|
+
);
|
|
1511
|
+
const bIndex = sortedAuditsAndGroups.findIndex(
|
|
1512
|
+
(ref) => ref.slug === b.slug
|
|
1513
|
+
);
|
|
1514
|
+
return aIndex - bIndex;
|
|
1515
|
+
});
|
|
1516
|
+
return { ...category, refs: sortedRefs };
|
|
1517
|
+
});
|
|
1518
|
+
const sortedPlugins = plugins.map((plugin) => ({
|
|
1519
|
+
...plugin,
|
|
1520
|
+
audits: plugin.audits.sort(compareAudits).map((audit) => ({
|
|
1521
|
+
...audit,
|
|
1522
|
+
details: {
|
|
1523
|
+
...audit.details,
|
|
1524
|
+
issues: audit?.details?.issues.slice().sort(compareIssues) || []
|
|
1525
|
+
}
|
|
1526
|
+
}))
|
|
1527
|
+
}));
|
|
1528
|
+
return {
|
|
1529
|
+
...report,
|
|
1530
|
+
categories: sortedCategories,
|
|
1531
|
+
plugins: sortedPlugins
|
|
1532
|
+
};
|
|
1533
|
+
}
|
|
1534
|
+
|
|
1465
1535
|
// packages/core/src/lib/implementation/persist.ts
|
|
1466
1536
|
var PersistDirError = class extends Error {
|
|
1467
1537
|
constructor(outputDir) {
|
|
@@ -1475,8 +1545,8 @@ var PersistError = class extends Error {
|
|
|
1475
1545
|
};
|
|
1476
1546
|
async function persistReport(report, options) {
|
|
1477
1547
|
const { outputDir, filename, format } = options;
|
|
1478
|
-
const
|
|
1479
|
-
console.info(reportToStdout(
|
|
1548
|
+
const sortedScoredReport = sortReport(scoreReport(report));
|
|
1549
|
+
console.info(reportToStdout(sortedScoredReport));
|
|
1480
1550
|
const results = [];
|
|
1481
1551
|
if (format.includes("json")) {
|
|
1482
1552
|
results.push({
|
|
@@ -1489,7 +1559,7 @@ async function persistReport(report, options) {
|
|
|
1489
1559
|
validateCommitData(commitData);
|
|
1490
1560
|
results.push({
|
|
1491
1561
|
format: "md",
|
|
1492
|
-
content: reportToMd(
|
|
1562
|
+
content: reportToMd(sortedScoredReport, commitData)
|
|
1493
1563
|
});
|
|
1494
1564
|
}
|
|
1495
1565
|
if (!existsSync(outputDir)) {
|
|
@@ -1634,7 +1704,7 @@ function auditOutputsCorrelateWithPluginOutput(auditOutputs, pluginConfigAudits)
|
|
|
1634
1704
|
|
|
1635
1705
|
// packages/core/package.json
|
|
1636
1706
|
var name = "@code-pushup/core";
|
|
1637
|
-
var version = "0.8.
|
|
1707
|
+
var version = "0.8.11";
|
|
1638
1708
|
|
|
1639
1709
|
// packages/core/src/lib/implementation/collect.ts
|
|
1640
1710
|
async function collect(options) {
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { CategoryConfigRefType, IssueSourceType, IssueSeverity as PortalIssueSeverity } from '@code-pushup/portal-client';
|
|
2
2
|
import { Report } from '@code-pushup/models';
|
|
3
3
|
export declare function jsonToGql(report: Report): {
|
|
4
|
-
packageName: string
|
|
5
|
-
packageVersion: string
|
|
4
|
+
packageName: string;
|
|
5
|
+
packageVersion: string;
|
|
6
6
|
commandStartDate: string;
|
|
7
7
|
commandDuration: number;
|
|
8
8
|
plugins: {
|
|
@@ -38,7 +38,7 @@ export declare function jsonToGql(report: Report): {
|
|
|
38
38
|
weight: number;
|
|
39
39
|
}[];
|
|
40
40
|
}[] | undefined;
|
|
41
|
-
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";
|
|
41
|
+
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";
|
|
42
42
|
slug: string;
|
|
43
43
|
title: string;
|
|
44
44
|
packageName: string | undefined;
|