@code-pushup/models 0.56.0 → 0.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/package.json +6 -5
  2. package/src/index.d.ts +21 -21
  3. package/src/index.js +22 -0
  4. package/src/index.js.map +1 -0
  5. package/src/lib/audit-output.d.ts +24 -0
  6. package/src/lib/audit-output.js +37 -0
  7. package/src/lib/audit-output.js.map +1 -0
  8. package/src/lib/audit.d.ts +16 -0
  9. package/src/lib/audit.js +33 -0
  10. package/src/lib/audit.js.map +1 -0
  11. package/src/lib/category-config.d.ts +24 -0
  12. package/src/lib/category-config.js +47 -0
  13. package/src/lib/category-config.js.map +1 -0
  14. package/src/lib/commit.d.ts +8 -0
  15. package/src/lib/commit.js +16 -0
  16. package/src/lib/commit.js.map +1 -0
  17. package/src/lib/core-config.d.ts +1785 -866
  18. package/src/lib/core-config.js +31 -0
  19. package/src/lib/core-config.js.map +1 -0
  20. package/src/lib/group.d.ts +35 -0
  21. package/src/lib/group.js +41 -0
  22. package/src/lib/group.js.map +1 -0
  23. package/src/lib/implementation/configuration.js +3 -0
  24. package/src/lib/implementation/configuration.js.map +1 -0
  25. package/src/lib/implementation/constants.d.ts +1 -1
  26. package/src/lib/implementation/constants.js +4 -0
  27. package/src/lib/implementation/constants.js.map +1 -0
  28. package/src/lib/implementation/limits.js +5 -0
  29. package/src/lib/implementation/limits.js.map +1 -0
  30. package/src/lib/implementation/schemas.d.ts +31 -13
  31. package/src/lib/implementation/schemas.js +133 -0
  32. package/src/lib/implementation/schemas.js.map +1 -0
  33. package/src/lib/implementation/utils.d.ts +3 -3
  34. package/src/lib/implementation/utils.js +72 -0
  35. package/src/lib/implementation/utils.js.map +1 -0
  36. package/src/lib/issue.d.ts +16 -0
  37. package/src/lib/issue.js +14 -0
  38. package/src/lib/issue.js.map +1 -0
  39. package/src/lib/persist-config.d.ts +16 -0
  40. package/src/lib/persist-config.js +11 -0
  41. package/src/lib/persist-config.js.map +1 -0
  42. package/src/lib/plugin-config.d.ts +68 -0
  43. package/src/lib/plugin-config.js +37 -0
  44. package/src/lib/plugin-config.js.map +1 -0
  45. package/src/lib/report.d.ts +84 -0
  46. package/src/lib/report.js +49 -0
  47. package/src/lib/report.js.map +1 -0
  48. package/src/lib/reports-diff.d.ts +68 -0
  49. package/src/lib/reports-diff.js +79 -0
  50. package/src/lib/reports-diff.js.map +1 -0
  51. package/src/lib/runner-config.d.ts +54 -0
  52. package/src/lib/runner-config.js +31 -0
  53. package/src/lib/runner-config.js.map +1 -0
  54. package/src/lib/source.d.ts +8 -0
  55. package/src/lib/source.js +14 -0
  56. package/src/lib/source.js.map +1 -0
  57. package/src/lib/table.d.ts +48 -0
  58. package/src/lib/table.js +37 -0
  59. package/src/lib/table.js.map +1 -0
  60. package/src/lib/upload-config.d.ts +8 -0
  61. package/src/lib/upload-config.js +16 -0
  62. package/src/lib/upload-config.js.map +1 -0
  63. package/index.js +0 -753
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Regular expression to validate a slug for categories, plugins and audits.
3
+ * - audit (e.g. 'max-lines')
4
+ * - category (e.g. 'performance')
5
+ * Also validates ``and ` `
6
+ */
7
+ export const slugRegex = /^[a-z\d]+(?:-[a-z\d]+)*$/;
8
+ /**
9
+ * Regular expression to validate a filename.
10
+ */
11
+ export const filenameRegex = /^(?!.*[ \\/:*?"<>|]).+$/;
12
+ /**
13
+ * helper function to validate string arrays
14
+ *
15
+ * @param strings
16
+ */
17
+ export function hasDuplicateStrings(strings) {
18
+ const sortedStrings = strings.toSorted();
19
+ const duplStrings = sortedStrings.filter((item, index) => index !== 0 && item === sortedStrings[index - 1]);
20
+ return duplStrings.length === 0 ? false : [...new Set(duplStrings)];
21
+ }
22
+ /**
23
+ * helper function to validate string arrays
24
+ *
25
+ * @param toCheck
26
+ * @param existing
27
+ */
28
+ export function hasMissingStrings(toCheck, existing) {
29
+ const nonExisting = toCheck.filter(s => !existing.includes(s));
30
+ return nonExisting.length === 0 ? false : nonExisting;
31
+ }
32
+ /**
33
+ * helper for error items
34
+ */
35
+ export function errorItems(items, transform = itemArr => itemArr.join(', ')) {
36
+ return transform(items || []);
37
+ }
38
+ export function exists(value) {
39
+ return value != null;
40
+ }
41
+ /**
42
+ * Get category references that do not point to any audit or group
43
+ * @param categories
44
+ * @param plugins
45
+ * @returns Array of missing references.
46
+ */
47
+ export function getMissingRefsForCategories(categories, plugins) {
48
+ if (!categories || categories.length === 0) {
49
+ return false;
50
+ }
51
+ const auditRefsFromCategory = categories.flatMap(({ refs }) => refs
52
+ .filter(({ type }) => type === 'audit')
53
+ .map(({ plugin, slug }) => `${plugin}/${slug}`));
54
+ const auditRefsFromPlugins = plugins.flatMap(({ audits, slug: pluginSlug }) => audits.map(({ slug }) => `${pluginSlug}/${slug}`));
55
+ const missingAuditRefs = hasMissingStrings(auditRefsFromCategory, auditRefsFromPlugins);
56
+ const groupRefsFromCategory = categories.flatMap(({ refs }) => refs
57
+ .filter(({ type }) => type === 'group')
58
+ .map(({ plugin, slug }) => `${plugin}#${slug} (group)`));
59
+ const groupRefsFromPlugins = plugins.flatMap(({ groups, slug: pluginSlug }) => Array.isArray(groups)
60
+ ? groups.map(({ slug }) => `${pluginSlug}#${slug} (group)`)
61
+ : []);
62
+ const missingGroupRefs = hasMissingStrings(groupRefsFromCategory, groupRefsFromPlugins);
63
+ const missingRefs = [missingAuditRefs, missingGroupRefs]
64
+ .filter((refs) => Array.isArray(refs) && refs.length > 0)
65
+ .flat();
66
+ return missingRefs.length > 0 ? missingRefs : false;
67
+ }
68
+ export function missingRefsForCategoriesErrorMsg(categories, plugins) {
69
+ const missingRefs = getMissingRefsForCategories(categories, plugins);
70
+ return `The following category references need to point to an audit or group: ${errorItems(missingRefs)}`;
71
+ }
72
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../packages/models/src/lib/implementation/utils.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,13 @@
1
1
  import { z } from 'zod';
2
2
  export declare const issueSeveritySchema: z.ZodEnum<["info", "warning", "error"]>;
3
+ /**
4
+ * Type Definition: `IssueSeverity`
5
+ *
6
+ * This type is derived from a Zod schema and represents
7
+ * the validated structure of `IssueSeverity` used within the application.
8
+ *
9
+ * @see {@link https://github.com/code-pushup/cli/blob/main/packages/models/docs/models-reference.md#issueseverity}
10
+ */
3
11
  export type IssueSeverity = z.infer<typeof issueSeveritySchema>;
4
12
  export declare const issueSchema: z.ZodObject<{
5
13
  message: z.ZodString;
@@ -64,4 +72,12 @@ export declare const issueSchema: z.ZodObject<{
64
72
  } | undefined;
65
73
  } | undefined;
66
74
  }>;
75
+ /**
76
+ * Type Definition: `Issue`
77
+ *
78
+ * This type is derived from a Zod schema and represents
79
+ * the validated structure of `Issue` used within the application.
80
+ *
81
+ * @see {@link https://github.com/code-pushup/cli/blob/main/packages/models/docs/models-reference.md#issue}
82
+ */
67
83
  export type Issue = z.infer<typeof issueSchema>;
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ import { MAX_ISSUE_MESSAGE_LENGTH } from './implementation/limits.js';
3
+ import { sourceFileLocationSchema } from './source.js';
4
+ export const issueSeveritySchema = z.enum(['info', 'warning', 'error'], {
5
+ description: 'Severity level',
6
+ });
7
+ export const issueSchema = z.object({
8
+ message: z
9
+ .string({ description: 'Descriptive error message' })
10
+ .max(MAX_ISSUE_MESSAGE_LENGTH),
11
+ severity: issueSeveritySchema,
12
+ source: sourceFileLocationSchema.optional(),
13
+ }, { description: 'Issue information' });
14
+ //# sourceMappingURL=issue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue.js","sourceRoot":"","sources":["../../../../../packages/models/src/lib/issue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE;IACtE,WAAW,EAAE,gBAAgB;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CACjC;IACE,OAAO,EAAE,CAAC;SACP,MAAM,CAAC,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;SACpD,GAAG,CAAC,wBAAwB,CAAC;IAChC,QAAQ,EAAE,mBAAmB;IAC7B,MAAM,EAAE,wBAAwB,CAAC,QAAQ,EAAE;CAC5C,EACD,EAAE,WAAW,EAAE,mBAAmB,EAAE,CACrC,CAAC"}
@@ -1,5 +1,13 @@
1
1
  import { z } from 'zod';
2
2
  export declare const formatSchema: z.ZodEnum<["json", "md"]>;
3
+ /**
4
+ * Type Definition: `Format`
5
+ *
6
+ * This type is derived from a Zod schema and represents
7
+ * the validated structure of `Format` used within the application.
8
+ *
9
+ * @see {@link https://github.com/code-pushup/cli/blob/main/packages/models/docs/models-reference.md#format}
10
+ */
3
11
  export type Format = z.infer<typeof formatSchema>;
4
12
  export declare const persistConfigSchema: z.ZodObject<{
5
13
  outputDir: z.ZodOptional<z.ZodString>;
@@ -14,4 +22,12 @@ export declare const persistConfigSchema: z.ZodObject<{
14
22
  filename?: string | undefined;
15
23
  format?: ("json" | "md")[] | undefined;
16
24
  }>;
25
+ /**
26
+ * Type Definition: `PersistConfig`
27
+ *
28
+ * This type is derived from a Zod schema and represents
29
+ * the validated structure of `PersistConfig` used within the application.
30
+ *
31
+ * @see {@link https://github.com/code-pushup/cli/blob/main/packages/models/docs/models-reference.md#persistconfig}
32
+ */
17
33
  export type PersistConfig = z.infer<typeof persistConfigSchema>;
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ import { fileNameSchema, filePathSchema } from './implementation/schemas.js';
3
+ export const formatSchema = z.enum(['json', 'md']);
4
+ export const persistConfigSchema = z.object({
5
+ outputDir: filePathSchema.describe('Artifacts folder').optional(),
6
+ filename: fileNameSchema
7
+ .describe('Artifacts file name (without extension)')
8
+ .optional(),
9
+ format: z.array(formatSchema).optional(),
10
+ });
11
+ //# sourceMappingURL=persist-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persist-config.js","sourceRoot":"","sources":["../../../../../packages/models/src/lib/persist-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAGnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,cAAc,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;IACjE,QAAQ,EAAE,cAAc;SACrB,QAAQ,CAAC,yCAAyC,CAAC;SACnD,QAAQ,EAAE;IACb,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC"}