@code-pushup/models 0.69.5 → 0.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/index.d.ts +2 -1
- package/src/index.js +2 -1
- package/src/index.js.map +1 -1
- package/src/lib/audit-output.d.ts +108 -1188
- package/src/lib/audit-output.js +18 -24
- package/src/lib/audit-output.js.map +1 -1
- package/src/lib/audit.d.ts +4 -42
- package/src/lib/audit.js +4 -17
- package/src/lib/audit.js.map +1 -1
- package/src/lib/category-config.d.ts +22 -169
- package/src/lib/category-config.js +21 -28
- package/src/lib/category-config.js.map +1 -1
- package/src/lib/commit.d.ts +2 -12
- package/src/lib/commit.js +10 -13
- package/src/lib/commit.js.map +1 -1
- package/src/lib/configuration.d.ts +24 -0
- package/src/lib/configuration.js +16 -0
- package/src/lib/configuration.js.map +1 -0
- package/src/lib/core-config.d.ts +3104 -14160
- package/src/lib/core-config.js +6 -8
- package/src/lib/core-config.js.map +1 -1
- package/src/lib/group.d.ts +10 -124
- package/src/lib/group.js +6 -27
- package/src/lib/group.js.map +1 -1
- package/src/lib/implementation/checks.d.ts +8 -0
- package/src/lib/implementation/checks.js +28 -0
- package/src/lib/implementation/checks.js.map +1 -0
- package/src/lib/implementation/function.d.ts +22 -0
- package/src/lib/implementation/function.js +53 -0
- package/src/lib/implementation/function.js.map +1 -0
- package/src/lib/implementation/schemas.d.ts +868 -47
- package/src/lib/implementation/schemas.js +48 -41
- package/src/lib/implementation/schemas.js.map +1 -1
- package/src/lib/implementation/utils.d.ts +13 -2
- package/src/lib/implementation/utils.js +15 -11
- package/src/lib/implementation/utils.js.map +1 -1
- package/src/lib/issue.d.ts +13 -55
- package/src/lib/issue.js +10 -7
- package/src/lib/issue.js.map +1 -1
- package/src/lib/persist-config.d.ts +9 -11
- package/src/lib/plugin-config.d.ts +2057 -6578
- package/src/lib/plugin-config.js +16 -11
- package/src/lib/plugin-config.js.map +1 -1
- package/src/lib/report.d.ts +1859 -2580
- package/src/lib/report.js +7 -17
- package/src/lib/report.js.map +1 -1
- package/src/lib/reports-diff.d.ts +105 -2641
- package/src/lib/reports-diff.js +4 -2
- package/src/lib/reports-diff.js.map +1 -1
- package/src/lib/runner-config.d.ts +223 -3393
- package/src/lib/runner-config.js +15 -16
- package/src/lib/runner-config.js.map +1 -1
- package/src/lib/source.d.ts +2 -28
- package/src/lib/source.js +4 -2
- package/src/lib/source.js.map +1 -1
- package/src/lib/table.d.ts +39 -57
- package/src/lib/table.js +18 -16
- package/src/lib/table.js.map +1 -1
- package/src/lib/tree.d.ts +17 -211
- package/src/lib/tree.js +13 -7
- package/src/lib/tree.js.map +1 -1
- package/src/lib/upload-config.d.ts +1 -13
- package/src/lib/upload-config.js +6 -5
- package/src/lib/upload-config.js.map +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MATERIAL_ICONS } from 'vscode-material-icons';
|
|
2
|
-
import { z } from 'zod';
|
|
2
|
+
import { ZodError, z, } from 'zod';
|
|
3
3
|
import { MAX_DESCRIPTION_LENGTH, MAX_SLUG_LENGTH, MAX_TITLE_LENGTH, } from './limits.js';
|
|
4
4
|
import { filenameRegex, slugRegex } from './utils.js';
|
|
5
5
|
export const tableCellValueSchema = z
|
|
@@ -13,23 +13,25 @@ export function executionMetaSchema(options = {
|
|
|
13
13
|
descriptionDuration: 'Execution duration in ms',
|
|
14
14
|
}) {
|
|
15
15
|
return z.object({
|
|
16
|
-
date: z.string(
|
|
17
|
-
duration: z.number(
|
|
16
|
+
date: z.string().describe(options.descriptionDate),
|
|
17
|
+
duration: z.number().describe(options.descriptionDuration),
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
/** Schema for a slug of a categories, plugins or audits. */
|
|
21
21
|
export const slugSchema = z
|
|
22
|
-
.string(
|
|
22
|
+
.string()
|
|
23
23
|
.regex(slugRegex, {
|
|
24
24
|
message: 'The slug has to follow the pattern [0-9a-z] followed by multiple optional groups of -[0-9a-z]. e.g. my-slug',
|
|
25
25
|
})
|
|
26
26
|
.max(MAX_SLUG_LENGTH, {
|
|
27
27
|
message: `The slug can be max ${MAX_SLUG_LENGTH} characters long`,
|
|
28
|
-
})
|
|
28
|
+
})
|
|
29
|
+
.describe('Unique ID (human-readable, URL-safe)');
|
|
29
30
|
/** Schema for a general description property */
|
|
30
31
|
export const descriptionSchema = z
|
|
31
|
-
.string(
|
|
32
|
+
.string()
|
|
32
33
|
.max(MAX_DESCRIPTION_LENGTH)
|
|
34
|
+
.describe('Description (markdown)')
|
|
33
35
|
.optional();
|
|
34
36
|
/* Schema for a URL */
|
|
35
37
|
export const urlSchema = z.string().url();
|
|
@@ -40,26 +42,27 @@ export const docsUrlSchema = urlSchema
|
|
|
40
42
|
// eslint-disable-next-line unicorn/prefer-top-level-await, unicorn/catch-error-name
|
|
41
43
|
.catch(ctx => {
|
|
42
44
|
// if only URL validation fails, supress error since this metadata is optional anyway
|
|
43
|
-
if (ctx.
|
|
44
|
-
ctx.
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
if (ctx.issues.length === 1 &&
|
|
46
|
+
(ctx.issues[0]?.errors)
|
|
47
|
+
.flat()
|
|
48
|
+
.some(error => error.code === 'invalid_format' && error.format === 'url')) {
|
|
49
|
+
console.warn(`Ignoring invalid docsUrl: ${ctx.value}`);
|
|
47
50
|
return '';
|
|
48
51
|
}
|
|
49
|
-
throw ctx.error;
|
|
52
|
+
throw new ZodError(ctx.error.issues);
|
|
50
53
|
})
|
|
51
54
|
.describe('Documentation site');
|
|
52
55
|
/** Schema for a title of a plugin, category and audit */
|
|
53
56
|
export const titleSchema = z
|
|
54
|
-
.string(
|
|
55
|
-
.max(MAX_TITLE_LENGTH)
|
|
57
|
+
.string()
|
|
58
|
+
.max(MAX_TITLE_LENGTH)
|
|
59
|
+
.describe('Descriptive name');
|
|
56
60
|
/** Schema for score of audit, category or group */
|
|
57
61
|
export const scoreSchema = z
|
|
58
|
-
.number(
|
|
59
|
-
description: 'Value between 0 and 1',
|
|
60
|
-
})
|
|
62
|
+
.number()
|
|
61
63
|
.min(0)
|
|
62
|
-
.max(1)
|
|
64
|
+
.max(1)
|
|
65
|
+
.describe('Value between 0 and 1');
|
|
63
66
|
/** Schema for a property indicating whether an entity is filtered out */
|
|
64
67
|
export const isSkippedSchema = z.boolean().optional();
|
|
65
68
|
/**
|
|
@@ -68,7 +71,7 @@ export const isSkippedSchema = z.boolean().optional();
|
|
|
68
71
|
*/
|
|
69
72
|
export function metaSchema(options) {
|
|
70
73
|
const { descriptionDescription, titleDescription, docsUrlDescription, description, isSkippedDescription, } = options ?? {};
|
|
71
|
-
|
|
74
|
+
const meta = z.object({
|
|
72
75
|
title: titleDescription
|
|
73
76
|
? titleSchema.describe(titleDescription)
|
|
74
77
|
: titleSchema,
|
|
@@ -81,7 +84,8 @@ export function metaSchema(options) {
|
|
|
81
84
|
isSkipped: isSkippedDescription
|
|
82
85
|
? isSkippedSchema.describe(isSkippedDescription)
|
|
83
86
|
: isSkippedSchema,
|
|
84
|
-
}
|
|
87
|
+
});
|
|
88
|
+
return description ? meta.describe(description) : meta;
|
|
85
89
|
}
|
|
86
90
|
/** Schema for a generalFilePath */
|
|
87
91
|
export const filePathSchema = z
|
|
@@ -101,50 +105,53 @@ export const positiveIntSchema = z.number().int().positive();
|
|
|
101
105
|
export const nonnegativeNumberSchema = z.number().nonnegative();
|
|
102
106
|
export function packageVersionSchema(options) {
|
|
103
107
|
const { versionDescription = 'NPM version of the package', required } = options ?? {};
|
|
104
|
-
const packageSchema = z.string(
|
|
105
|
-
const versionSchema = z.string(
|
|
106
|
-
return z
|
|
108
|
+
const packageSchema = z.string().describe('NPM package name');
|
|
109
|
+
const versionSchema = z.string().describe(versionDescription);
|
|
110
|
+
return z
|
|
111
|
+
.object({
|
|
107
112
|
packageName: required ? packageSchema : packageSchema.optional(),
|
|
108
113
|
version: required ? versionSchema : versionSchema.optional(),
|
|
109
|
-
}
|
|
114
|
+
})
|
|
115
|
+
.describe('NPM package name and version of a published package');
|
|
110
116
|
}
|
|
111
117
|
/** Schema for a weight */
|
|
112
118
|
export const weightSchema = nonnegativeNumberSchema.describe('Coefficient for the given score (use weight 0 if only for display)');
|
|
113
119
|
export function weightedRefSchema(description, slugDescription) {
|
|
114
|
-
return z
|
|
120
|
+
return z
|
|
121
|
+
.object({
|
|
115
122
|
slug: slugSchema.describe(slugDescription),
|
|
116
123
|
weight: weightSchema.describe('Weight used to calculate score'),
|
|
117
|
-
}
|
|
124
|
+
})
|
|
125
|
+
.describe(description);
|
|
118
126
|
}
|
|
119
|
-
export function scorableSchema(description, refSchema, duplicateCheckFn
|
|
120
|
-
return z
|
|
127
|
+
export function scorableSchema(description, refSchema, duplicateCheckFn) {
|
|
128
|
+
return z
|
|
129
|
+
.object({
|
|
121
130
|
slug: slugSchema.describe('Human-readable unique ID, e.g. "performance"'),
|
|
122
131
|
refs: z
|
|
123
132
|
.array(refSchema)
|
|
124
133
|
.min(1, { message: 'In a category, there has to be at least one ref' })
|
|
125
134
|
// refs are unique
|
|
126
|
-
.
|
|
127
|
-
message: duplicateMessageFn(refs),
|
|
128
|
-
}))
|
|
135
|
+
.check(duplicateCheckFn)
|
|
129
136
|
// category weights are correct
|
|
130
|
-
.refine(hasNonZeroWeightedRef,
|
|
131
|
-
|
|
132
|
-
return {
|
|
133
|
-
message: `In a category, there has to be at least one ref with weight > 0. Affected refs: ${affectedRefs}`,
|
|
134
|
-
};
|
|
137
|
+
.refine(hasNonZeroWeightedRef, {
|
|
138
|
+
error: 'A category must have at least 1 ref with weight > 0.',
|
|
135
139
|
}),
|
|
136
|
-
}
|
|
140
|
+
})
|
|
141
|
+
.describe(description);
|
|
137
142
|
}
|
|
138
|
-
export const materialIconSchema = z
|
|
139
|
-
|
|
140
|
-
|
|
143
|
+
export const materialIconSchema = z
|
|
144
|
+
.enum(MATERIAL_ICONS)
|
|
145
|
+
.describe('Icon from VSCode Material Icons extension');
|
|
141
146
|
function hasNonZeroWeightedRef(refs) {
|
|
142
147
|
return refs.reduce((acc, { weight }) => weight + acc, 0) !== 0;
|
|
143
148
|
}
|
|
144
|
-
export const filePositionSchema = z
|
|
149
|
+
export const filePositionSchema = z
|
|
150
|
+
.object({
|
|
145
151
|
startLine: positiveIntSchema.describe('Start line'),
|
|
146
152
|
startColumn: positiveIntSchema.describe('Start column').optional(),
|
|
147
153
|
endLine: positiveIntSchema.describe('End line').optional(),
|
|
148
154
|
endColumn: positiveIntSchema.describe('End column').optional(),
|
|
149
|
-
}
|
|
155
|
+
})
|
|
156
|
+
.describe('Location in file');
|
|
150
157
|
//# sourceMappingURL=schemas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../../../../packages/models/src/lib/implementation/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../../../../packages/models/src/lib/implementation/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,10 +25,11 @@ export declare function hasDuplicateStrings(strings: string[]): string[] | false
|
|
|
25
25
|
* @param existing
|
|
26
26
|
*/
|
|
27
27
|
export declare function hasMissingStrings(toCheck: string[], existing: string[]): string[] | false;
|
|
28
|
+
export declare function formatSlugsList(slugs: string[]): string;
|
|
28
29
|
/**
|
|
29
30
|
* helper for error items
|
|
30
31
|
*/
|
|
31
|
-
export declare function errorItems(items: string[]
|
|
32
|
+
export declare function errorItems(items: string[], transform?: (itemArr: string[]) => string): string;
|
|
32
33
|
export declare function exists<T>(value: T): value is NonNullable<T>;
|
|
33
34
|
/**
|
|
34
35
|
* Get category references that do not point to any audit or group
|
|
@@ -37,4 +38,14 @@ export declare function exists<T>(value: T): value is NonNullable<T>;
|
|
|
37
38
|
* @returns Array of missing references.
|
|
38
39
|
*/
|
|
39
40
|
export declare function getMissingRefsForCategories(categories: CategoryConfig[] | undefined, plugins: PluginConfig[] | PluginReport[]): false | string[];
|
|
40
|
-
export declare function
|
|
41
|
+
export declare function findMissingSlugsInCategoryRefs({ categories, plugins, }: {
|
|
42
|
+
categories?: CategoryConfig[];
|
|
43
|
+
plugins: PluginConfig[] | PluginReport[];
|
|
44
|
+
}): false | {
|
|
45
|
+
message: string;
|
|
46
|
+
};
|
|
47
|
+
export declare function formatRef(ref: {
|
|
48
|
+
type: 'audit' | 'group';
|
|
49
|
+
plugin: string;
|
|
50
|
+
slug: string;
|
|
51
|
+
}): string;
|
|
@@ -29,6 +29,9 @@ export function hasMissingStrings(toCheck, existing) {
|
|
|
29
29
|
const nonExisting = toCheck.filter(s => !existing.includes(s));
|
|
30
30
|
return nonExisting.length === 0 ? false : nonExisting;
|
|
31
31
|
}
|
|
32
|
+
export function formatSlugsList(slugs) {
|
|
33
|
+
return slugs.map(slug => `"${slug}"`).join(', ');
|
|
34
|
+
}
|
|
32
35
|
/**
|
|
33
36
|
* helper for error items
|
|
34
37
|
*/
|
|
@@ -48,16 +51,12 @@ export function getMissingRefsForCategories(categories, plugins) {
|
|
|
48
51
|
if (!categories || categories.length === 0) {
|
|
49
52
|
return false;
|
|
50
53
|
}
|
|
51
|
-
const auditRefsFromCategory = categories.flatMap(({ refs }) => refs
|
|
52
|
-
|
|
53
|
-
.map(({ plugin, slug }) => `${plugin}/${slug}`));
|
|
54
|
-
const auditRefsFromPlugins = plugins.flatMap(({ audits, slug: pluginSlug }) => audits.map(({ slug }) => `${pluginSlug}/${slug}`));
|
|
54
|
+
const auditRefsFromCategory = categories.flatMap(({ refs }) => refs.filter(({ type }) => type === 'audit').map(formatRef));
|
|
55
|
+
const auditRefsFromPlugins = plugins.flatMap(({ audits, slug: plugin }) => audits.map(({ slug }) => formatRef({ type: 'audit', plugin, slug })));
|
|
55
56
|
const missingAuditRefs = hasMissingStrings(auditRefsFromCategory, auditRefsFromPlugins);
|
|
56
|
-
const groupRefsFromCategory = categories.flatMap(({ refs }) => refs
|
|
57
|
-
|
|
58
|
-
.map(({
|
|
59
|
-
const groupRefsFromPlugins = plugins.flatMap(({ groups, slug: pluginSlug }) => Array.isArray(groups)
|
|
60
|
-
? groups.map(({ slug }) => `${pluginSlug}#${slug} (group)`)
|
|
57
|
+
const groupRefsFromCategory = categories.flatMap(({ refs }) => refs.filter(({ type }) => type === 'group').map(formatRef));
|
|
58
|
+
const groupRefsFromPlugins = plugins.flatMap(({ groups, slug: plugin }) => Array.isArray(groups)
|
|
59
|
+
? groups.map(({ slug }) => formatRef({ type: 'group', plugin, slug }))
|
|
61
60
|
: []);
|
|
62
61
|
const missingGroupRefs = hasMissingStrings(groupRefsFromCategory, groupRefsFromPlugins);
|
|
63
62
|
const missingRefs = [missingAuditRefs, missingGroupRefs]
|
|
@@ -65,8 +64,13 @@ export function getMissingRefsForCategories(categories, plugins) {
|
|
|
65
64
|
.flat();
|
|
66
65
|
return missingRefs.length > 0 ? missingRefs : false;
|
|
67
66
|
}
|
|
68
|
-
export function
|
|
67
|
+
export function findMissingSlugsInCategoryRefs({ categories, plugins, }) {
|
|
69
68
|
const missingRefs = getMissingRefsForCategories(categories, plugins);
|
|
70
|
-
return
|
|
69
|
+
return (missingRefs && {
|
|
70
|
+
message: `Category references audits or groups which don't exist: ${missingRefs.join(', ')}`,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
export function formatRef(ref) {
|
|
74
|
+
return `${ref.type} "${ref.slug}" (plugin "${ref.plugin}")`;
|
|
71
75
|
}
|
|
72
76
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../packages/models/src/lib/implementation/utils.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,0BAA0B,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,yBAAyB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAiB;IACnD,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CACtC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAClE,CAAC;IAEF,OAAO,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAiB,EACjB,QAAkB;IAElB,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../packages/models/src/lib/implementation/utils.ts"],"names":[],"mappings":"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"}
|
package/src/lib/issue.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export declare const issueSeveritySchema: z.ZodEnum<
|
|
2
|
+
export declare const issueSeveritySchema: z.ZodEnum<{
|
|
3
|
+
error: "error";
|
|
4
|
+
info: "info";
|
|
5
|
+
warning: "warning";
|
|
6
|
+
}>;
|
|
3
7
|
/**
|
|
4
8
|
* Type Definition: `IssueSeverity`
|
|
5
9
|
*
|
|
@@ -11,7 +15,11 @@ export declare const issueSeveritySchema: z.ZodEnum<["info", "warning", "error"]
|
|
|
11
15
|
export type IssueSeverity = z.infer<typeof issueSeveritySchema>;
|
|
12
16
|
export declare const issueSchema: z.ZodObject<{
|
|
13
17
|
message: z.ZodString;
|
|
14
|
-
severity: z.ZodEnum<
|
|
18
|
+
severity: z.ZodEnum<{
|
|
19
|
+
error: "error";
|
|
20
|
+
info: "info";
|
|
21
|
+
warning: "warning";
|
|
22
|
+
}>;
|
|
15
23
|
source: z.ZodOptional<z.ZodObject<{
|
|
16
24
|
file: z.ZodString;
|
|
17
25
|
position: z.ZodOptional<z.ZodObject<{
|
|
@@ -19,59 +27,9 @@ export declare const issueSchema: z.ZodObject<{
|
|
|
19
27
|
startColumn: z.ZodOptional<z.ZodNumber>;
|
|
20
28
|
endLine: z.ZodOptional<z.ZodNumber>;
|
|
21
29
|
endColumn: z.ZodOptional<z.ZodNumber>;
|
|
22
|
-
},
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
endLine?: number | undefined;
|
|
26
|
-
endColumn?: number | undefined;
|
|
27
|
-
}, {
|
|
28
|
-
startLine: number;
|
|
29
|
-
startColumn?: number | undefined;
|
|
30
|
-
endLine?: number | undefined;
|
|
31
|
-
endColumn?: number | undefined;
|
|
32
|
-
}>>;
|
|
33
|
-
}, "strip", z.ZodTypeAny, {
|
|
34
|
-
file: string;
|
|
35
|
-
position?: {
|
|
36
|
-
startLine: number;
|
|
37
|
-
startColumn?: number | undefined;
|
|
38
|
-
endLine?: number | undefined;
|
|
39
|
-
endColumn?: number | undefined;
|
|
40
|
-
} | undefined;
|
|
41
|
-
}, {
|
|
42
|
-
file: string;
|
|
43
|
-
position?: {
|
|
44
|
-
startLine: number;
|
|
45
|
-
startColumn?: number | undefined;
|
|
46
|
-
endLine?: number | undefined;
|
|
47
|
-
endColumn?: number | undefined;
|
|
48
|
-
} | undefined;
|
|
49
|
-
}>>;
|
|
50
|
-
}, "strip", z.ZodTypeAny, {
|
|
51
|
-
message: string;
|
|
52
|
-
severity: "info" | "warning" | "error";
|
|
53
|
-
source?: {
|
|
54
|
-
file: string;
|
|
55
|
-
position?: {
|
|
56
|
-
startLine: number;
|
|
57
|
-
startColumn?: number | undefined;
|
|
58
|
-
endLine?: number | undefined;
|
|
59
|
-
endColumn?: number | undefined;
|
|
60
|
-
} | undefined;
|
|
61
|
-
} | undefined;
|
|
62
|
-
}, {
|
|
63
|
-
message: string;
|
|
64
|
-
severity: "info" | "warning" | "error";
|
|
65
|
-
source?: {
|
|
66
|
-
file: string;
|
|
67
|
-
position?: {
|
|
68
|
-
startLine: number;
|
|
69
|
-
startColumn?: number | undefined;
|
|
70
|
-
endLine?: number | undefined;
|
|
71
|
-
endColumn?: number | undefined;
|
|
72
|
-
} | undefined;
|
|
73
|
-
} | undefined;
|
|
74
|
-
}>;
|
|
30
|
+
}, z.core.$strip>>;
|
|
31
|
+
}, z.core.$strip>>;
|
|
32
|
+
}, z.core.$strip>;
|
|
75
33
|
/**
|
|
76
34
|
* Type Definition: `Issue`
|
|
77
35
|
*
|
package/src/lib/issue.js
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { MAX_ISSUE_MESSAGE_LENGTH } from './implementation/limits.js';
|
|
3
3
|
import { sourceFileLocationSchema } from './source.js';
|
|
4
|
-
export const issueSeveritySchema = z
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export const issueSchema = z
|
|
4
|
+
export const issueSeveritySchema = z
|
|
5
|
+
.enum(['info', 'warning', 'error'])
|
|
6
|
+
.describe('Severity level');
|
|
7
|
+
export const issueSchema = z
|
|
8
|
+
.object({
|
|
8
9
|
message: z
|
|
9
|
-
.string(
|
|
10
|
-
.max(MAX_ISSUE_MESSAGE_LENGTH)
|
|
10
|
+
.string()
|
|
11
|
+
.max(MAX_ISSUE_MESSAGE_LENGTH)
|
|
12
|
+
.describe('Descriptive error message'),
|
|
11
13
|
severity: issueSeveritySchema,
|
|
12
14
|
source: sourceFileLocationSchema.optional(),
|
|
13
|
-
}
|
|
15
|
+
})
|
|
16
|
+
.describe('Issue information');
|
|
14
17
|
//# sourceMappingURL=issue.js.map
|
package/src/lib/issue.js.map
CHANGED
|
@@ -1 +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,
|
|
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;KACjC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;KAClC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAG9B,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC;KACzB,MAAM,CAAC;IACN,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,wBAAwB,CAAC;SAC7B,QAAQ,CAAC,2BAA2B,CAAC;IACxC,QAAQ,EAAE,mBAAmB;IAC7B,MAAM,EAAE,wBAAwB,CAAC,QAAQ,EAAE;CAC5C,CAAC;KACD,QAAQ,CAAC,mBAAmB,CAAC,CAAC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export declare const formatSchema: z.ZodEnum<
|
|
2
|
+
export declare const formatSchema: z.ZodEnum<{
|
|
3
|
+
json: "json";
|
|
4
|
+
md: "md";
|
|
5
|
+
}>;
|
|
3
6
|
/**
|
|
4
7
|
* Type Definition: `Format`
|
|
5
8
|
*
|
|
@@ -12,16 +15,11 @@ export type Format = z.infer<typeof formatSchema>;
|
|
|
12
15
|
export declare const persistConfigSchema: z.ZodObject<{
|
|
13
16
|
outputDir: z.ZodOptional<z.ZodString>;
|
|
14
17
|
filename: z.ZodOptional<z.ZodString>;
|
|
15
|
-
format: z.ZodOptional<z.ZodArray<z.ZodEnum<
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}, {
|
|
21
|
-
outputDir?: string | undefined;
|
|
22
|
-
filename?: string | undefined;
|
|
23
|
-
format?: ("json" | "md")[] | undefined;
|
|
24
|
-
}>;
|
|
18
|
+
format: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
19
|
+
json: "json";
|
|
20
|
+
md: "md";
|
|
21
|
+
}>>>;
|
|
22
|
+
}, z.core.$strip>;
|
|
25
23
|
/**
|
|
26
24
|
* Type Definition: `PersistConfig`
|
|
27
25
|
*
|