Skip to content

Commit 1e7d304

Browse files
committed
fix(models,utils,plugin-axe): improve type handling
1 parent 6d66b16 commit 1e7d304

File tree

5 files changed

+16
-11
lines changed

5 files changed

+16
-11
lines changed

packages/models/docs/models-reference.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1374,7 +1374,7 @@ _Union of the following possible types:_
13741374

13751375
- `string` (_url_)
13761376
- `Array<string (_url_)>`
1377-
- _Object with dynamic keys of type_ `string` (_url_) _and values of type_ `number` (_>0_)
1377+
- _Object with dynamic keys of type_ `string` (_url_) _and values of type_ `number` (_0_)
13781378

13791379
## Report
13801380

packages/models/src/lib/plugin-config.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
packageVersionSchema,
99
scoreTargetSchema,
1010
slugSchema,
11+
weightSchema,
1112
} from './implementation/schemas.js';
1213
import { formatSlugsList, hasMissingStrings } from './implementation/utils.js';
1314
import { runnerConfigSchema, runnerFunctionSchema } from './runner-config.js';
@@ -73,7 +74,7 @@ export const pluginConfigSchema = pluginMetaSchema
7374
export type PluginConfig = z.infer<typeof pluginConfigSchema>;
7475

7576
export const pluginUrlsSchema = z
76-
.union([z.url(), z.array(z.url()), z.record(z.url(), z.number().positive())])
77+
.union([z.url(), z.array(z.url()), z.record(z.url(), weightSchema)])
7778
.meta({
7879
title: 'PluginUrls',
7980
description:

packages/plugin-axe/src/lib/axe-plugin.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import { createRequire } from 'node:module';
2-
import type { PluginConfig, PluginUrls } from '@code-pushup/models';
2+
import {
3+
type PluginConfig,
4+
type PluginUrls,
5+
validate,
6+
} from '@code-pushup/models';
37
import { normalizeUrlInput } from '@code-pushup/utils';
4-
import type { AxePluginOptions } from './config.js';
5-
import { AXE_DEFAULT_PRESET, AXE_PLUGIN_SLUG } from './constants.js';
8+
import { type AxePluginOptions, axePluginOptionsSchema } from './config.js';
9+
import { AXE_PLUGIN_SLUG } from './constants.js';
610
import { processAuditsAndGroups } from './processing.js';
711
import { createRunnerFunction } from './runner/runner.js';
812

@@ -16,10 +20,9 @@ import { createRunnerFunction } from './runner/runner.js';
1620
*/
1721
export function axePlugin(
1822
urls: PluginUrls,
19-
options?: AxePluginOptions,
23+
options: AxePluginOptions = {},
2024
): PluginConfig {
21-
const scoreTargets = options?.scoreTargets;
22-
const preset = options?.preset ?? AXE_DEFAULT_PRESET;
25+
const { preset, scoreTargets } = validate(axePluginOptionsSchema, options);
2326

2427
const { urls: normalizedUrls, context } = normalizeUrlInput(urls);
2528

packages/plugin-axe/src/lib/runner/transform.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,15 +96,16 @@ function toIssue(node: NodeResult, result: Result, url: string): Issue {
9696
};
9797
}
9898

99-
function impactToSeverity(impact?: ImpactValue): IssueSeverity {
99+
function impactToSeverity(impact: ImpactValue | undefined): IssueSeverity {
100100
switch (impact) {
101101
case 'critical':
102102
case 'serious':
103103
return 'error';
104104
case 'moderate':
105105
return 'warning';
106106
case 'minor':
107-
default:
107+
case null:
108+
case undefined:
108109
return 'info';
109110
}
110111
}

packages/utils/src/lib/reports/formatting.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ export function formatFileLink(
177177
* Wraps HTML tags in backticks to prevent markdown parsers
178178
* from interpreting them as actual HTML.
179179
*/
180-
export function wrapTags(text?: string): string {
180+
export function wrapTags(text: string | undefined): string {
181181
if (!text) {
182182
return '';
183183
}

0 commit comments

Comments
 (0)