@vizejs/vite-plugin-musea 0.12.0 → 0.14.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/dist/{a11y-C6xqILwZ.js → a11y-7maCHrYD.js} +164 -143
- package/dist/a11y-7maCHrYD.js.map +1 -0
- package/dist/a11y-CjpWs0s0.js +3 -0
- package/dist/autogen-Dx-SIBf_.js +3 -0
- package/dist/{autogen-ymQnARZK.js → autogen-dfLosbY_.js} +97 -85
- package/dist/autogen-dfLosbY_.js.map +1 -0
- package/dist/cli/index.d.ts +61 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/{cli.js → cli/index.js} +146 -138
- package/dist/cli/index.js.map +1 -0
- package/dist/gallery/assets/{cssMode-CcXMra0m.js → cssMode-Bh8Yx3kR.js} +1 -1
- package/dist/gallery/assets/{editor.api-DngZ07MW.js → editor.api-CmduODkO.js} +1 -1
- package/dist/gallery/assets/{editor.main-B7YVyVYi.js → editor.main-BGzZ6mZ7.js} +2 -2
- package/dist/gallery/assets/{freemarker2-VkSVdked.js → freemarker2-Cn3sOnVM.js} +1 -1
- package/dist/gallery/assets/{handlebars-YowBDP4W.js → handlebars-Bxtt_XDm.js} +1 -1
- package/dist/gallery/assets/{html-DJtSoeLQ.js → html-wxaydg4H.js} +1 -1
- package/dist/gallery/assets/{htmlMode-CfXIwSy5.js → htmlMode-EOxgEq0U.js} +1 -1
- package/dist/gallery/assets/{index-0_abCQYn.css → index-Cp7AWs0x.css} +1 -1
- package/dist/gallery/assets/{index-D94E3YZ4.js → index-DiHal_rf.js} +3 -3
- package/dist/gallery/assets/{javascript-OR93O4ZK.js → javascript-DN4Z2eWk.js} +1 -1
- package/dist/gallery/assets/{jsonMode-Cgol9YnW.js → jsonMode-tuRq32My.js} +1 -1
- package/dist/gallery/assets/{liquid-CrwTQQjB.js → liquid-D4J1rGOp.js} +1 -1
- package/dist/gallery/assets/{mdx-DwR18PX6.js → mdx-DxeOF6WC.js} +1 -1
- package/dist/gallery/assets/{monaco.contribution-CtStVxRd.js → monaco.contribution-C457czx3.js} +2 -2
- package/dist/gallery/assets/{python-D86nvZ4A.js → python-HLp-R9eA.js} +1 -1
- package/dist/gallery/assets/{razor-1784i4Ae.js → razor-2U4-SYvG.js} +1 -1
- package/dist/gallery/assets/{tsMode-DMkSHunc.js → tsMode-jWuA-Omz.js} +1 -1
- package/dist/gallery/assets/{typescript-Bu4A5btR.js → typescript-rOoZv0aH.js} +1 -1
- package/dist/gallery/assets/{xml-Sny7sZAt.js → xml-BfA65ILD.js} +1 -1
- package/dist/gallery/assets/{yaml-DKD1HvU8.js → yaml-CddGDANN.js} +1 -1
- package/dist/gallery/index.html +2 -2
- package/dist/index.css +488 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +342 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +925 -1320
- package/dist/index.js.map +1 -1
- package/dist/{vrt-CrjRhMVE.js → vrt-5_c9P1YY.js} +224 -184
- package/dist/vrt-5_c9P1YY.js.map +1 -0
- package/dist/{vrt-BuMkTrLK.d.ts → vrt-D6OumJUH.d.ts} +76 -260
- package/dist/vrt-D6OumJUH.d.ts.map +1 -0
- package/dist/vrt.d.ts +1 -1
- package/dist/vrt.js +1 -1
- package/package.json +7 -7
- package/dist/a11y-C6xqILwZ.js.map +0 -1
- package/dist/a11y-cQIJXM5k.d.ts +0 -61
- package/dist/a11y-cQIJXM5k.d.ts.map +0 -1
- package/dist/a11y.d.ts +0 -3
- package/dist/a11y.js +0 -3
- package/dist/autogen-D3Zjc3zI.d.ts +0 -64
- package/dist/autogen-D3Zjc3zI.d.ts.map +0 -1
- package/dist/autogen-ymQnARZK.js.map +0 -1
- package/dist/autogen.d.ts +0 -2
- package/dist/autogen.js +0 -3
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/vrt-BuMkTrLK.d.ts.map +0 -1
- package/dist/vrt-CrjRhMVE.js.map +0 -1
|
@@ -1,119 +1,21 @@
|
|
|
1
|
-
import { BrowserContext, Page } from "playwright";
|
|
1
|
+
import { Browser, BrowserContext, Page } from "playwright";
|
|
2
2
|
|
|
3
|
-
//#region src/types.d.ts
|
|
3
|
+
//#region src/types/vrt.d.ts
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
* All properties are optional — unspecified colors inherit from the `base` built-in theme.
|
|
5
|
+
* Viewport configuration.
|
|
7
6
|
*/
|
|
8
7
|
/**
|
|
9
|
-
*
|
|
10
|
-
* All properties are optional — unspecified colors inherit from the `base` built-in theme.
|
|
11
|
-
*/
|
|
12
|
-
interface MuseaThemeColors {
|
|
13
|
-
bgPrimary?: string;
|
|
14
|
-
bgSecondary?: string;
|
|
15
|
-
bgTertiary?: string;
|
|
16
|
-
bgElevated?: string;
|
|
17
|
-
accent?: string;
|
|
18
|
-
accentHover?: string;
|
|
19
|
-
accentSubtle?: string;
|
|
20
|
-
text?: string;
|
|
21
|
-
textSecondary?: string;
|
|
22
|
-
textMuted?: string;
|
|
23
|
-
border?: string;
|
|
24
|
-
borderSubtle?: string;
|
|
25
|
-
success?: string;
|
|
26
|
-
error?: string;
|
|
27
|
-
info?: string;
|
|
28
|
-
warning?: string;
|
|
29
|
-
shadow?: string;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Custom theme definition.
|
|
33
|
-
*/
|
|
34
|
-
interface MuseaTheme {
|
|
35
|
-
/** Unique name for this theme. */
|
|
36
|
-
name: string;
|
|
37
|
-
/** Built-in theme to inherit unspecified colors from. @default 'dark' */
|
|
38
|
-
base?: "dark" | "light";
|
|
39
|
-
/** Color overrides. */
|
|
40
|
-
colors: MuseaThemeColors;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Musea plugin options.
|
|
8
|
+
* Viewport configuration.
|
|
44
9
|
*/
|
|
45
|
-
interface
|
|
46
|
-
/**
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
*/
|
|
55
|
-
exclude?: string[];
|
|
56
|
-
/**
|
|
57
|
-
* Base path for Musea gallery UI.
|
|
58
|
-
* @default '/__musea__'
|
|
59
|
-
*/
|
|
60
|
-
basePath?: string;
|
|
61
|
-
/**
|
|
62
|
-
* Enable Storybook CSF output.
|
|
63
|
-
* @default false
|
|
64
|
-
*/
|
|
65
|
-
storybookCompat?: boolean;
|
|
66
|
-
/**
|
|
67
|
-
* Storybook output directory (when storybookCompat is true).
|
|
68
|
-
* @default '.storybook/stories'
|
|
69
|
-
*/
|
|
70
|
-
storybookOutDir?: string;
|
|
71
|
-
/**
|
|
72
|
-
* Enable inline <art> blocks in regular .vue SFC files.
|
|
73
|
-
* When enabled, regular .vue files containing <art> blocks will be
|
|
74
|
-
* included in the gallery. Use <Self> to reference the host component.
|
|
75
|
-
* @default false
|
|
76
|
-
*/
|
|
77
|
-
inlineArt?: boolean;
|
|
78
|
-
/**
|
|
79
|
-
* VRT (Visual Regression Testing) configuration.
|
|
80
|
-
*/
|
|
81
|
-
vrt?: VrtOptions;
|
|
82
|
-
/**
|
|
83
|
-
* Path to Style Dictionary tokens JSON file or directory.
|
|
84
|
-
* Supports standard Style Dictionary format.
|
|
85
|
-
* @example 'src/tokens.json' or 'src/tokens/'
|
|
86
|
-
*/
|
|
87
|
-
tokensPath?: string;
|
|
88
|
-
/**
|
|
89
|
-
* Gallery theme configuration.
|
|
90
|
-
*
|
|
91
|
-
* - `'dark'` / `'light'` — use a built-in theme (default: `'dark'`)
|
|
92
|
-
* - `'system'` — follow the OS color-scheme preference
|
|
93
|
-
* - `MuseaTheme` — single custom theme (replaces defaults)
|
|
94
|
-
* - `MuseaTheme[]` — multiple custom themes (first is default, user can switch)
|
|
95
|
-
*/
|
|
96
|
-
theme?: "dark" | "light" | "system" | MuseaTheme | MuseaTheme[];
|
|
97
|
-
/**
|
|
98
|
-
* CSS files to inject into component preview iframes.
|
|
99
|
-
* Useful for loading global styles (custom properties, resets, fonts, etc.)
|
|
100
|
-
* that components depend on.
|
|
101
|
-
*
|
|
102
|
-
* Paths are resolved relative to the project root.
|
|
103
|
-
* @example ['app/assets/styles/main.css']
|
|
104
|
-
*/
|
|
105
|
-
previewCss?: string[];
|
|
106
|
-
/**
|
|
107
|
-
* Path to a module that exports a default setup function for preview iframes.
|
|
108
|
-
* The function receives the Vue `App` instance and can install plugins
|
|
109
|
-
* (e.g. vue-i18n, vue-router) before the component is mounted.
|
|
110
|
-
*
|
|
111
|
-
* Signature: `(app: App) => void | Promise<void>`
|
|
112
|
-
*
|
|
113
|
-
* Path is resolved relative to the project root.
|
|
114
|
-
* @example 'musea.preview.ts'
|
|
115
|
-
*/
|
|
116
|
-
previewSetup?: string;
|
|
10
|
+
interface ViewportConfig {
|
|
11
|
+
/** Width in pixels */
|
|
12
|
+
width: number;
|
|
13
|
+
/** Height in pixels */
|
|
14
|
+
height: number;
|
|
15
|
+
/** Device scale factor */
|
|
16
|
+
deviceScaleFactor?: number;
|
|
17
|
+
/** Viewport name for identification */
|
|
18
|
+
name?: string;
|
|
117
19
|
}
|
|
118
20
|
/**
|
|
119
21
|
* VRT configuration options.
|
|
@@ -136,18 +38,55 @@ interface VrtOptions {
|
|
|
136
38
|
viewports?: ViewportConfig[];
|
|
137
39
|
}
|
|
138
40
|
/**
|
|
139
|
-
*
|
|
41
|
+
* Screenshot capture configuration.
|
|
140
42
|
*/
|
|
141
|
-
interface
|
|
142
|
-
/**
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
|
|
43
|
+
interface CaptureConfig {
|
|
44
|
+
/** Capture full page vs viewport only */
|
|
45
|
+
fullPage?: boolean;
|
|
46
|
+
/** Wait for network idle before capture */
|
|
47
|
+
waitForNetwork?: boolean;
|
|
48
|
+
/** Additional wait time after load (ms) */
|
|
49
|
+
settleTime?: number;
|
|
50
|
+
/** CSS selector to wait for */
|
|
51
|
+
waitSelector?: string;
|
|
52
|
+
/** Elements to hide before capture (CSS selectors) */
|
|
53
|
+
hideElements?: string[];
|
|
54
|
+
/** Elements to mask before capture (CSS selectors) */
|
|
55
|
+
maskElements?: string[];
|
|
150
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Image comparison configuration.
|
|
59
|
+
*/
|
|
60
|
+
interface ComparisonConfig {
|
|
61
|
+
/** Anti-aliasing detection */
|
|
62
|
+
antiAliasing?: boolean;
|
|
63
|
+
/** Alpha channel comparison */
|
|
64
|
+
alpha?: boolean;
|
|
65
|
+
/** Diff image output format */
|
|
66
|
+
diffStyle?: "overlay" | "sideBySide" | "diffOnly" | "animated";
|
|
67
|
+
/** Diff highlight color */
|
|
68
|
+
diffColor?: {
|
|
69
|
+
r: number;
|
|
70
|
+
g: number;
|
|
71
|
+
b: number;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* CI-specific configuration.
|
|
76
|
+
*/
|
|
77
|
+
interface CiConfig {
|
|
78
|
+
/** Fail build on any diff */
|
|
79
|
+
failOnDiff?: boolean;
|
|
80
|
+
/** Auto-update baselines on main branch */
|
|
81
|
+
autoUpdateOnMain?: boolean;
|
|
82
|
+
/** Generate JSON report for CI */
|
|
83
|
+
jsonReport?: boolean;
|
|
84
|
+
/** Retry failed tests */
|
|
85
|
+
retries?: number;
|
|
86
|
+
} //#endregion
|
|
87
|
+
//#region src/types/art.d.ts
|
|
88
|
+
|
|
89
|
+
//# sourceMappingURL=vrt.d.ts.map
|
|
151
90
|
/**
|
|
152
91
|
* Art file metadata.
|
|
153
92
|
*/
|
|
@@ -201,136 +140,10 @@ interface CsfOutput {
|
|
|
201
140
|
code: string;
|
|
202
141
|
/** Suggested filename */
|
|
203
142
|
filename: string;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Palette API response.
|
|
207
|
-
*/
|
|
208
|
-
interface PaletteApiResponse {
|
|
209
|
-
title: string;
|
|
210
|
-
controls: PaletteControl[];
|
|
211
|
-
groups: string[];
|
|
212
|
-
json: string;
|
|
213
|
-
typescript: string;
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Single prop control definition.
|
|
217
|
-
*/
|
|
218
|
-
interface PaletteControl {
|
|
219
|
-
name: string;
|
|
220
|
-
control: ControlKind;
|
|
221
|
-
default_value?: unknown;
|
|
222
|
-
description?: string;
|
|
223
|
-
required: boolean;
|
|
224
|
-
options: Array<{
|
|
225
|
-
label: string;
|
|
226
|
-
value: unknown;
|
|
227
|
-
}>;
|
|
228
|
-
range?: {
|
|
229
|
-
min: number;
|
|
230
|
-
max: number;
|
|
231
|
-
step?: number;
|
|
232
|
-
};
|
|
233
|
-
group?: string;
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Supported control kinds for the props panel.
|
|
237
|
-
*/
|
|
238
|
-
type ControlKind = "text" | "number" | "boolean" | "range" | "select" | "radio" | "color" | "date" | "object" | "array" | "file" | "raw";
|
|
239
|
-
/**
|
|
240
|
-
* Analysis API response (Props/Emits info).
|
|
241
|
-
*/
|
|
242
|
-
interface AnalysisApiResponse {
|
|
243
|
-
props: Array<{
|
|
244
|
-
name: string;
|
|
245
|
-
type: string;
|
|
246
|
-
required: boolean;
|
|
247
|
-
default_value?: unknown;
|
|
248
|
-
}>;
|
|
249
|
-
emits: string[];
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Screenshot capture configuration.
|
|
253
|
-
*/
|
|
254
|
-
interface CaptureConfig {
|
|
255
|
-
/** Capture full page vs viewport only */
|
|
256
|
-
fullPage?: boolean;
|
|
257
|
-
/** Wait for network idle before capture */
|
|
258
|
-
waitForNetwork?: boolean;
|
|
259
|
-
/** Additional wait time after load (ms) */
|
|
260
|
-
settleTime?: number;
|
|
261
|
-
/** CSS selector to wait for */
|
|
262
|
-
waitSelector?: string;
|
|
263
|
-
/** Elements to hide before capture (CSS selectors) */
|
|
264
|
-
hideElements?: string[];
|
|
265
|
-
/** Elements to mask before capture (CSS selectors) */
|
|
266
|
-
maskElements?: string[];
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* Image comparison configuration.
|
|
270
|
-
*/
|
|
271
|
-
interface ComparisonConfig {
|
|
272
|
-
/** Anti-aliasing detection */
|
|
273
|
-
antiAliasing?: boolean;
|
|
274
|
-
/** Alpha channel comparison */
|
|
275
|
-
alpha?: boolean;
|
|
276
|
-
/** Diff image output format */
|
|
277
|
-
diffStyle?: "overlay" | "sideBySide" | "diffOnly" | "animated";
|
|
278
|
-
/** Diff highlight color */
|
|
279
|
-
diffColor?: {
|
|
280
|
-
r: number;
|
|
281
|
-
g: number;
|
|
282
|
-
b: number;
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
/**
|
|
286
|
-
* CI-specific configuration.
|
|
287
|
-
*/
|
|
288
|
-
interface CiConfig {
|
|
289
|
-
/** Fail build on any diff */
|
|
290
|
-
failOnDiff?: boolean;
|
|
291
|
-
/** Auto-update baselines on main branch */
|
|
292
|
-
autoUpdateOnMain?: boolean;
|
|
293
|
-
/** Generate JSON report for CI */
|
|
294
|
-
jsonReport?: boolean;
|
|
295
|
-
/** Retry failed tests */
|
|
296
|
-
retries?: number;
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* Accessibility testing options.
|
|
300
|
-
*/
|
|
301
|
-
interface A11yOptions {
|
|
302
|
-
/** Enable a11y auditing during VRT */
|
|
303
|
-
enabled?: boolean;
|
|
304
|
-
/** axe-core rules to include */
|
|
305
|
-
includeRules?: string[];
|
|
306
|
-
/** axe-core rules to exclude */
|
|
307
|
-
excludeRules?: string[];
|
|
308
|
-
/** WCAG level (A, AA, AAA) */
|
|
309
|
-
level?: "A" | "AA" | "AAA";
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* Accessibility audit result.
|
|
313
|
-
*/
|
|
314
|
-
interface A11yResult {
|
|
315
|
-
artPath: string;
|
|
316
|
-
variantName: string;
|
|
317
|
-
violations: A11yViolation[];
|
|
318
|
-
passes: number;
|
|
319
|
-
incomplete: number;
|
|
320
|
-
}
|
|
321
|
-
/**
|
|
322
|
-
* Single accessibility violation.
|
|
323
|
-
*/
|
|
324
|
-
interface A11yViolation {
|
|
325
|
-
id: string;
|
|
326
|
-
impact: "minor" | "moderate" | "serious" | "critical";
|
|
327
|
-
description: string;
|
|
328
|
-
helpUrl: string;
|
|
329
|
-
nodes: number;
|
|
330
143
|
} //#endregion
|
|
331
|
-
//#region src/vrt/
|
|
144
|
+
//#region src/vrt/types.d.ts
|
|
332
145
|
|
|
333
|
-
//# sourceMappingURL=
|
|
146
|
+
//# sourceMappingURL=art.d.ts.map
|
|
334
147
|
/**
|
|
335
148
|
* VRT test result for a single variant.
|
|
336
149
|
*/
|
|
@@ -386,6 +199,10 @@ interface PixelCompareOptions {
|
|
|
386
199
|
b: number;
|
|
387
200
|
};
|
|
388
201
|
}
|
|
202
|
+
|
|
203
|
+
//#endregion
|
|
204
|
+
//#region src/vrt/runner.d.ts
|
|
205
|
+
//# sourceMappingURL=types.d.ts.map
|
|
389
206
|
/**
|
|
390
207
|
* VRT runner using Playwright.
|
|
391
208
|
*/
|
|
@@ -397,6 +214,14 @@ declare class MuseaVrtRunner {
|
|
|
397
214
|
private browser;
|
|
398
215
|
private startTime;
|
|
399
216
|
constructor(options?: ExtendedVrtOptions);
|
|
217
|
+
/** @internal */
|
|
218
|
+
getBrowser(): Browser | null;
|
|
219
|
+
/** @internal */
|
|
220
|
+
getOptions(): Required<VrtOptions>;
|
|
221
|
+
/** @internal */
|
|
222
|
+
getCapture(): Required<CaptureConfig>;
|
|
223
|
+
/** @internal */
|
|
224
|
+
getComparison(): ComparisonConfig;
|
|
400
225
|
/**
|
|
401
226
|
* Initialize Playwright browser.
|
|
402
227
|
*/
|
|
@@ -450,15 +275,6 @@ declare class MuseaVrtRunner {
|
|
|
450
275
|
* Get VRT summary statistics.
|
|
451
276
|
*/
|
|
452
277
|
getSummary(results: VrtResult[]): VrtSummary;
|
|
453
|
-
/**
|
|
454
|
-
* Build URL for variant preview.
|
|
455
|
-
*/
|
|
456
|
-
private buildVariantUrl;
|
|
457
|
-
/**
|
|
458
|
-
* Compare two PNG images and generate a diff image.
|
|
459
|
-
* Returns pixel difference statistics.
|
|
460
|
-
*/
|
|
461
|
-
private compareImages;
|
|
462
278
|
}
|
|
463
279
|
|
|
464
280
|
//#endregion
|
|
@@ -477,5 +293,5 @@ declare function generateVrtJsonReport(results: VrtResult[], summary: VrtSummary
|
|
|
477
293
|
//#endregion
|
|
478
294
|
//# sourceMappingURL=report.d.ts.map
|
|
479
295
|
|
|
480
|
-
export {
|
|
481
|
-
//# sourceMappingURL=vrt-
|
|
296
|
+
export { ArtFileInfo, ArtMetadata, ArtVariant, CaptureConfig, CiConfig, ComparisonConfig, CsfOutput, ExtendedVrtOptions, MuseaVrtRunner as MuseaVrtRunner$1, PixelCompareOptions, ViewportConfig, VrtOptions, VrtResult, VrtSummary, generateVrtJsonReport as generateVrtJsonReport$1, generateVrtReport as generateVrtReport$1 };
|
|
297
|
+
//# sourceMappingURL=vrt-D6OumJUH.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vrt-D6OumJUH.d.ts","names":[],"sources":["../src/types/vrt.ts","../src/types/art.ts","../src/vrt/types.ts","../src/vrt/runner.ts","../src/vrt/report.ts"],"sourcesContent":null,"mappings":";;;;;;;;;UAGiB,cAAA;;;EAAA;;;;EAcA;;;;AAuBjB;;UAvBiB,UAAA;;AAyCjB;;;;EAciB;;;;;;;ACrEjB;;cD+Bc;;AClBd;;;UDwBiB,aAAA;ECbA;EAAW,QAAA,CAAA,EAAA,OAAA;EAAA;EAIL,cAEX,CAAA,EAAA,OAAA;EAAU;;;;EAkBL;;;;;;;AC1CjB;UFiDiB,gBAAA;;;EE/BA;;;;EAYA;EAAmB,SAAA,CAAA,EAAA;IACxB,CAAA,EAAA,MAAA;IACG,CAAA,EAAA,MAAA;IACR,CAAA,EAAA,MAAA;EAAQ,CAAA;AAHuC;;;;AAWrC,UFsBA,QAAA,CEtBmB;;;;;;;ECfvB;EAAc,OAAA,CAAA,EAAA,MAAA;CAAA;;;;;;;UFhCV,WAAA;;;EDAA,SAAA,CAAA,EAAA,MAAc;;;;EAcd,KAAA,CAAA,EAAA,MAAU;;;;AAuB3B;UCxBiB,UAAA;;;ED0CA,SAAA,EAAA,OAAA;;SCrCR;;ADmDT;;;UC7CiB,WAAA;;;;EAxBA,QAAA,EA4BL,WA5BgB;;YA8BhB;;EAjBK,cAAU,EAAA,OAAA;;;;EAWV,SAAA,EAAA,OAAW;EAAA;EAAA,UAIhB,EAAA,MAAA;EAAW;EAED,QAAA,CAAA,EAAA,OAAA;;;;AAkBtB;;;UAAiB,SAAA;;;;EC1CA,QAAA,EAAA,MAAS;;;;;;;AFN1B;UEMiB,SAAA;;;EFQA,QAAA,EELL,cFsBE;;;;EAMG,QAAA,CAAA,EAAA,MAAa;;;;EAkBb,KAAA,CAAA,EAAA,MAAA;;;;AAcjB;;UE7CiB,UAAA;;;;;EDxBA,OAAA,EAAA,MAAW;;;;AAa5B;;UCuBiB,kBAAA,SAA2B;YAChC;EDbK,UAAA,CAAA,ECcF,gBDda;EAAA,EAAA,CAAA,ECerB,QDfqB;EAAA;EAIL,IAEX,CAAA,EAAA,OAAA;AAAU;;;;AAkBL,UCDA,mBAAA,CDCS;;;;;;;EC1CT;;;;IAkBA,CAAA,EAAA,MAAU;;;;;;;AFV3B;;;cGkBa,cAAA;EHKI,QAAA,OAAA;;;;EAkBA,QAAA,OAAA;;wBGfM;;EH6BN,UAAA,CAAA,CAAQ,EGLT,OHKS,GAAA,IAAA;;gBGAT,SAAS;;gBAKT,SAAS;;mBAKN;EF/EF;;;UEsFD;EFzEC;;;WEkFA;EFvEA;;;EAIM,KAEX,CAAA,CAAA,EE2EK,OF3EL,CAAA,IAAA,CAAA;EAAU;;;UEkFN;EFhEC;;;wBEuEa,iCAAiC,QAAQ;;;;EDjHtD,QAAA,CAAA,QAAS,ECmKZ,WDhKF,EAAA,EAAA,OAAc,EAAA,MAAA,EAAA,SAAA,EAAA;;MCmKrB,QAAQ;;ADpJb;;yBCgKS,4CAEK,kCAET,QAAQ;;ADxJb;;EAAoC,UACxB,CAAA,QAAA,EC8JiB,cD9JjB,CAAA,EC8JkC,OD9JlC,CAAA;IACG,IAAA,EC6J+C,ID7J/C;IACR,OAAA,EC4JsE,cD5JtE;EAAQ,CAAA,CAAA;EAHuC;;;2BC8KrB,cAAc;EDnK9B;;;0BCwLe,gCAAgC;;;;EAvMnD,YAAA,CAAA,QAAc,EAqNI,WArNJ,EAAA,CAAA,EAqNoB,OArNpB,CAAA,MAAA,CAAA;EAAA;;;EAgCJ,UAKE,CAAA,OAAA,EAoNH,SApNG,EAAA,CAAA,EAoNW,UApNX;;;;;;;;;AHvDzB;iBIDgB,iBAAA,UAA2B,sBAAsB;;;AJwBjE;iBI+OgB,qBAAA,UAA+B,sBAAsB"}
|
package/dist/vrt.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ExtendedVrtOptions, MuseaVrtRunner$1 as MuseaVrtRunner, PixelCompareOptions, VrtResult, VrtSummary, generateVrtJsonReport$1 as generateVrtJsonReport, generateVrtReport$1 as generateVrtReport } from "./vrt-
|
|
1
|
+
import { ExtendedVrtOptions, MuseaVrtRunner$1 as MuseaVrtRunner, PixelCompareOptions, VrtResult, VrtSummary, generateVrtJsonReport$1 as generateVrtJsonReport, generateVrtReport$1 as generateVrtReport } from "./vrt-D6OumJUH.js";
|
|
2
2
|
export { ExtendedVrtOptions, MuseaVrtRunner, PixelCompareOptions, VrtResult, VrtSummary, MuseaVrtRunner as default, generateVrtJsonReport, generateVrtReport };
|
package/dist/vrt.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { MuseaVrtRunner, generateVrtJsonReport, generateVrtReport, vrt_default } from "./vrt-
|
|
1
|
+
import { MuseaVrtRunner, generateVrtJsonReport, generateVrtReport, vrt_default } from "./vrt-5_c9P1YY.js";
|
|
2
2
|
|
|
3
3
|
export { MuseaVrtRunner, vrt_default as default, generateVrtJsonReport, generateVrtReport };
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vizejs/vite-plugin-musea",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Vite plugin for Musea - Component gallery for Vue components",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"bin": {
|
|
9
|
-
"musea-vrt": "./dist/cli.js"
|
|
9
|
+
"musea-vrt": "./dist/cli/index.js"
|
|
10
10
|
},
|
|
11
11
|
"exports": {
|
|
12
12
|
".": {
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"types": "./dist/vrt.d.ts"
|
|
19
19
|
},
|
|
20
20
|
"./cli": {
|
|
21
|
-
"import": "./dist/cli.js",
|
|
22
|
-
"types": "./dist/cli.d.ts"
|
|
21
|
+
"import": "./dist/cli/index.js",
|
|
22
|
+
"types": "./dist/cli/index.d.ts"
|
|
23
23
|
},
|
|
24
24
|
"./a11y": {
|
|
25
25
|
"import": "./dist/a11y.js",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"pngjs": "^7.0.0",
|
|
55
|
-
"@vizejs/native": "0.
|
|
55
|
+
"@vizejs/native": "0.14.0"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@mdi/js": "^7.4.47",
|
|
@@ -68,13 +68,13 @@
|
|
|
68
68
|
"vite": "^8.0.0-beta.0",
|
|
69
69
|
"vue": "^3.5.0",
|
|
70
70
|
"vue-router": "^4.5.0",
|
|
71
|
-
"@vizejs/vite-plugin": "0.
|
|
71
|
+
"@vizejs/vite-plugin": "0.14.0"
|
|
72
72
|
},
|
|
73
73
|
"peerDependencies": {
|
|
74
74
|
"axe-core": "^4.7.0",
|
|
75
75
|
"playwright": "^1.40.0",
|
|
76
76
|
"vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-beta.0",
|
|
77
|
-
"@vizejs/vite-plugin": "0.
|
|
77
|
+
"@vizejs/vite-plugin": "0.14.0"
|
|
78
78
|
},
|
|
79
79
|
"peerDependenciesMeta": {
|
|
80
80
|
"playwright": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"a11y-C6xqILwZ.js","names":["options: A11yOptions","artFiles: ArtFileInfo[]","baseUrl: string","vrtRunner?: MuseaVrtRunner","results: A11yResult[]","defaultViewport: ViewportConfig","page: Page | null","context: { page: Page; context: { close(): Promise<void> } } | null","page: Page","artPath: string","variantName: string","violations: A11yViolation[]","impact: string","runOnly: Record<string, unknown>","tags: string[]","rules: Record<string, { enabled: boolean }>","str: string"],"sources":["../src/a11y.ts"],"sourcesContent":["/**\n * Accessibility (a11y) testing module for Musea.\n * Uses axe-core for automated accessibility auditing via Playwright.\n */\n\nimport type { Page } from \"playwright\";\nimport type {\n ArtFileInfo,\n A11yResult,\n A11yViolation,\n A11yOptions,\n ViewportConfig,\n} from \"./types.js\";\nimport type { MuseaVrtRunner } from \"./vrt.js\";\nimport path from \"node:path\";\n\n/**\n * A11y audit summary.\n */\nexport interface A11ySummary {\n totalComponents: number;\n totalVariants: number;\n totalViolations: number;\n criticalCount: number;\n seriousCount: number;\n moderateCount: number;\n minorCount: number;\n}\n\n/**\n * axe-core result shape (subset).\n */\ninterface AxeResult {\n violations: Array<{\n id: string;\n impact: string;\n description: string;\n helpUrl: string;\n nodes: Array<unknown>;\n }>;\n passes: Array<unknown>;\n incomplete: Array<unknown>;\n}\n\n/**\n * A11y runner using axe-core via Playwright.\n */\nexport class MuseaA11yRunner {\n private options: Required<A11yOptions>;\n\n constructor(options: A11yOptions = {}) {\n this.options = {\n enabled: options.enabled ?? true,\n includeRules: options.includeRules ?? [],\n excludeRules: options.excludeRules ?? [],\n level: options.level ?? \"AA\",\n };\n }\n\n /**\n * Run a11y audits on all art file variants.\n * Reuses VRT runner's browser if available.\n */\n async runAudits(\n artFiles: ArtFileInfo[],\n baseUrl: string,\n vrtRunner?: MuseaVrtRunner,\n ): Promise<A11yResult[]> {\n const results: A11yResult[] = [];\n const defaultViewport: ViewportConfig = { width: 1280, height: 720, name: \"desktop\" };\n\n for (const art of artFiles) {\n for (const variant of art.variants) {\n if (variant.skipVrt) continue;\n\n let page: Page | null = null;\n let context: { page: Page; context: { close(): Promise<void> } } | null = null;\n\n try {\n if (vrtRunner) {\n context = await vrtRunner.createPage(defaultViewport);\n page = context.page;\n } else {\n // Standalone mode: launch own browser\n const { chromium } = await import(\"playwright\");\n const browser = await chromium.launch({ headless: true });\n const ctx = await browser.newContext({\n viewport: { width: defaultViewport.width, height: defaultViewport.height },\n });\n page = await ctx.newPage();\n context = { page, context: ctx };\n }\n\n const variantUrl = this.buildVariantUrl(baseUrl, art.path, variant.name);\n await page.goto(variantUrl, { waitUntil: \"networkidle\" });\n await page.waitForSelector(\".musea-variant\", { timeout: 10000 });\n await page.waitForTimeout(200);\n\n const result = await this.auditPage(page, art.path, variant.name);\n results.push(result);\n } catch (error) {\n results.push({\n artPath: art.path,\n variantName: variant.name,\n violations: [\n {\n id: \"audit-error\",\n impact: \"critical\",\n description: `Audit failed: ${error instanceof Error ? error.message : String(error)}`,\n helpUrl: \"\",\n nodes: 0,\n },\n ],\n passes: 0,\n incomplete: 0,\n });\n } finally {\n if (context) {\n await context.context.close();\n }\n }\n }\n }\n\n return results;\n }\n\n /**\n * Audit a single page using axe-core.\n */\n async auditPage(page: Page, artPath: string, variantName: string): Promise<A11yResult> {\n // Inject axe-core into the page\n const axeSource = await this.getAxeSource();\n await page.evaluate(axeSource);\n\n // Build axe-core run options\n const runOptions = this.buildAxeOptions();\n\n // Run axe-core\n const axeResult = (await page.evaluate((opts) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (window as any).axe.run(document, opts);\n }, runOptions)) as AxeResult;\n\n // Map to our result format\n const violations: A11yViolation[] = axeResult.violations.map((v) => ({\n id: v.id,\n impact: v.impact as A11yViolation[\"impact\"],\n description: v.description,\n helpUrl: v.helpUrl,\n nodes: v.nodes.length,\n }));\n\n return {\n artPath,\n variantName,\n violations,\n passes: axeResult.passes.length,\n incomplete: axeResult.incomplete.length,\n };\n }\n\n /**\n * Get summary statistics from results.\n */\n getSummary(results: A11yResult[]): A11ySummary {\n const components = new Set(results.map((r) => r.artPath));\n const allViolations = results.flatMap((r) => r.violations);\n\n return {\n totalComponents: components.size,\n totalVariants: results.length,\n totalViolations: allViolations.length,\n criticalCount: allViolations.filter((v) => v.impact === \"critical\").length,\n seriousCount: allViolations.filter((v) => v.impact === \"serious\").length,\n moderateCount: allViolations.filter((v) => v.impact === \"moderate\").length,\n minorCount: allViolations.filter((v) => v.impact === \"minor\").length,\n };\n }\n\n /**\n * Generate HTML report.\n */\n generateHtmlReport(results: A11yResult[]): string {\n const summary = this.getSummary(results);\n const timestamp = new Date().toLocaleString(\"ja-JP\", {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n\n const impactColor = (impact: string): string => {\n switch (impact) {\n case \"critical\":\n return \"#f87171\";\n case \"serious\":\n return \"#fb923c\";\n case \"moderate\":\n return \"#fbbf24\";\n case \"minor\":\n return \"#60a5fa\";\n default:\n return \"#7b8494\";\n }\n };\n\n const resultItems = results\n .filter((r) => r.violations.length > 0)\n .map((r) => {\n const artName = path.basename(r.artPath, \".art.vue\");\n const violationRows = r.violations\n .map(\n (v) => `\n <tr>\n <td><span style=\"color:${impactColor(v.impact)};font-weight:600;text-transform:uppercase;font-size:0.6875rem\">${escapeHtml(v.impact)}</span></td>\n <td><code>${escapeHtml(v.id)}</code></td>\n <td>${escapeHtml(v.description)}</td>\n <td>${v.nodes}</td>\n <td>${v.helpUrl ? `<a href=\"${escapeHtml(v.helpUrl)}\" target=\"_blank\" style=\"color:#60a5fa\">docs</a>` : \"\"}</td>\n </tr>`,\n )\n .join(\"\");\n\n return `\n <div class=\"result\">\n <div class=\"result-header\">\n <div class=\"result-info\">\n <span class=\"result-name\">${escapeHtml(artName)} / ${escapeHtml(r.variantName)}</span>\n <span class=\"result-count\">${r.violations.length} violation(s)</span>\n </div>\n </div>\n <table class=\"violations-table\">\n <thead><tr><th>Impact</th><th>Rule</th><th>Description</th><th>Nodes</th><th>Help</th></tr></thead>\n <tbody>${violationRows}</tbody>\n </table>\n </div>`;\n })\n .join(\"\");\n\n return `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>A11y Report - Musea</title>\n <style>\n :root {\n --musea-bg-primary: #0d0d0d;\n --musea-bg-secondary: #1a1815;\n --musea-bg-tertiary: #252220;\n --musea-accent: #a34828;\n --musea-text: #e6e9f0;\n --musea-text-muted: #7b8494;\n --musea-border: #3a3530;\n }\n * { box-sizing: border-box; margin: 0; padding: 0; }\n body {\n font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n background: var(--musea-bg-primary);\n color: var(--musea-text);\n min-height: 100vh;\n line-height: 1.5;\n }\n .header {\n background: var(--musea-bg-secondary);\n border-bottom: 1px solid var(--musea-border);\n padding: 1rem 2rem;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n .logo { font-size: 1.25rem; font-weight: 700; color: var(--musea-accent); }\n .header-meta { color: var(--musea-text-muted); font-size: 0.8125rem; }\n .main { max-width: 1200px; margin: 0 auto; padding: 2rem; }\n .summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 1rem; margin-bottom: 2rem; }\n .stat { background: var(--musea-bg-secondary); border: 1px solid var(--musea-border); border-radius: 8px; padding: 1rem; text-align: center; }\n .stat-value { font-size: 1.75rem; font-weight: 700; font-variant-numeric: tabular-nums; }\n .stat-label { color: var(--musea-text-muted); font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.08em; }\n .stat.critical .stat-value { color: #f87171; }\n .stat.serious .stat-value { color: #fb923c; }\n .stat.moderate .stat-value { color: #fbbf24; }\n .stat.minor .stat-value { color: #60a5fa; }\n .stat.total .stat-value { color: var(--musea-text); }\n .results { display: flex; flex-direction: column; gap: 1rem; }\n .result { background: var(--musea-bg-secondary); border: 1px solid var(--musea-border); border-radius: 8px; overflow: hidden; }\n .result-header { padding: 1rem; background: var(--musea-bg-tertiary); display: flex; justify-content: space-between; align-items: center; }\n .result-name { font-weight: 600; }\n .result-count { color: var(--musea-text-muted); font-size: 0.8125rem; }\n .violations-table { width: 100%; border-collapse: collapse; font-size: 0.8125rem; }\n .violations-table th { padding: 0.75rem 1rem; text-align: left; color: var(--musea-text-muted); font-weight: 500; font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.08em; border-bottom: 1px solid var(--musea-border); }\n .violations-table td { padding: 0.75rem 1rem; border-bottom: 1px solid var(--musea-border); }\n .violations-table code { background: var(--musea-bg-tertiary); padding: 0.125rem 0.375rem; border-radius: 3px; font-size: 0.75rem; }\n .all-clear { background: rgba(74, 222, 128, 0.1); border: 1px solid rgba(74, 222, 128, 0.2); border-radius: 8px; padding: 2rem; text-align: center; }\n .all-clear-text { color: #4ade80; font-weight: 600; }\n </style>\n</head>\n<body>\n <header class=\"header\">\n <div><span class=\"logo\">Musea</span> <span style=\"color:var(--musea-text-muted);font-size:0.875rem;margin-left:1rem\">Accessibility Report</span></div>\n <div class=\"header-meta\">${timestamp}</div>\n </header>\n <main class=\"main\">\n <div class=\"summary\">\n <div class=\"stat total\"><div class=\"stat-value\">${summary.totalViolations}</div><div class=\"stat-label\">Violations</div></div>\n <div class=\"stat critical\"><div class=\"stat-value\">${summary.criticalCount}</div><div class=\"stat-label\">Critical</div></div>\n <div class=\"stat serious\"><div class=\"stat-value\">${summary.seriousCount}</div><div class=\"stat-label\">Serious</div></div>\n <div class=\"stat moderate\"><div class=\"stat-value\">${summary.moderateCount}</div><div class=\"stat-label\">Moderate</div></div>\n <div class=\"stat minor\"><div class=\"stat-value\">${summary.minorCount}</div><div class=\"stat-label\">Minor</div></div>\n </div>\n ${\n summary.totalViolations === 0\n ? `<div class=\"all-clear\"><div class=\"all-clear-text\">No accessibility violations found across ${summary.totalVariants} variant(s)</div></div>`\n : `<div class=\"results\">${resultItems}</div>`\n }\n </main>\n</body>\n</html>`;\n }\n\n /**\n * Generate JSON report for CI integration.\n */\n generateJsonReport(results: A11yResult[]): string {\n const summary = this.getSummary(results);\n return JSON.stringify(\n {\n timestamp: new Date().toISOString(),\n summary,\n results: results.map((r) => ({\n art: path.basename(r.artPath, \".art.vue\"),\n variant: r.variantName,\n violations: r.violations,\n passes: r.passes,\n incomplete: r.incomplete,\n })),\n },\n null,\n 2,\n );\n }\n\n /**\n * Get axe-core source code for injection.\n */\n private async getAxeSource(): Promise<string> {\n try {\n const axeCore = await import(\"axe-core\");\n return axeCore.source;\n } catch {\n throw new Error(\n \"axe-core is not installed. Install it as a peer dependency: npm install axe-core\",\n );\n }\n }\n\n /**\n * Build axe-core run options from configuration.\n */\n private buildAxeOptions(): Record<string, unknown> {\n const runOnly: Record<string, unknown> = {};\n\n // Set WCAG level\n const tags: string[] = [];\n switch (this.options.level) {\n case \"A\":\n tags.push(\"wcag2a\", \"wcag21a\");\n break;\n case \"AA\":\n tags.push(\"wcag2a\", \"wcag2aa\", \"wcag21a\", \"wcag21aa\", \"wcag22aa\");\n break;\n case \"AAA\":\n tags.push(\"wcag2a\", \"wcag2aa\", \"wcag2aaa\", \"wcag21a\", \"wcag21aa\", \"wcag22aa\");\n break;\n }\n\n if (tags.length > 0) {\n runOnly.type = \"tag\";\n runOnly.values = tags;\n }\n\n const rules: Record<string, { enabled: boolean }> = {};\n\n for (const ruleId of this.options.includeRules) {\n rules[ruleId] = { enabled: true };\n }\n for (const ruleId of this.options.excludeRules) {\n rules[ruleId] = { enabled: false };\n }\n\n return {\n ...(Object.keys(runOnly).length > 0 ? { runOnly } : {}),\n ...(Object.keys(rules).length > 0 ? { rules } : {}),\n };\n }\n\n private buildVariantUrl(baseUrl: string, artPath: string, variantName: string): string {\n const encodedPath = encodeURIComponent(artPath);\n const encodedVariant = encodeURIComponent(variantName);\n return `${baseUrl}/__musea__/preview?art=${encodedPath}&variant=${encodedVariant}`;\n }\n}\n\nfunction escapeHtml(str: string): string {\n return str\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n}\n"],"mappings":"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"}
|
package/dist/a11y-cQIJXM5k.d.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { A11yOptions, A11yResult, ArtFileInfo, MuseaVrtRunner$1 as MuseaVrtRunner } from "./vrt-BuMkTrLK.js";
|
|
2
|
-
import { Page } from "playwright";
|
|
3
|
-
|
|
4
|
-
//#region src/a11y.d.ts
|
|
5
|
-
/**
|
|
6
|
-
* A11y audit summary.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* A11y audit summary.
|
|
11
|
-
*/
|
|
12
|
-
interface A11ySummary {
|
|
13
|
-
totalComponents: number;
|
|
14
|
-
totalVariants: number;
|
|
15
|
-
totalViolations: number;
|
|
16
|
-
criticalCount: number;
|
|
17
|
-
seriousCount: number;
|
|
18
|
-
moderateCount: number;
|
|
19
|
-
minorCount: number;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* A11y runner using axe-core via Playwright.
|
|
23
|
-
*/
|
|
24
|
-
declare class MuseaA11yRunner {
|
|
25
|
-
private options;
|
|
26
|
-
constructor(options?: A11yOptions);
|
|
27
|
-
/**
|
|
28
|
-
* Run a11y audits on all art file variants.
|
|
29
|
-
* Reuses VRT runner's browser if available.
|
|
30
|
-
*/
|
|
31
|
-
runAudits(artFiles: ArtFileInfo[], baseUrl: string, vrtRunner?: MuseaVrtRunner): Promise<A11yResult[]>;
|
|
32
|
-
/**
|
|
33
|
-
* Audit a single page using axe-core.
|
|
34
|
-
*/
|
|
35
|
-
auditPage(page: Page, artPath: string, variantName: string): Promise<A11yResult>;
|
|
36
|
-
/**
|
|
37
|
-
* Get summary statistics from results.
|
|
38
|
-
*/
|
|
39
|
-
getSummary(results: A11yResult[]): A11ySummary;
|
|
40
|
-
/**
|
|
41
|
-
* Generate HTML report.
|
|
42
|
-
*/
|
|
43
|
-
generateHtmlReport(results: A11yResult[]): string;
|
|
44
|
-
/**
|
|
45
|
-
* Generate JSON report for CI integration.
|
|
46
|
-
*/
|
|
47
|
-
generateJsonReport(results: A11yResult[]): string;
|
|
48
|
-
/**
|
|
49
|
-
* Get axe-core source code for injection.
|
|
50
|
-
*/
|
|
51
|
-
private getAxeSource;
|
|
52
|
-
/**
|
|
53
|
-
* Build axe-core run options from configuration.
|
|
54
|
-
*/
|
|
55
|
-
private buildAxeOptions;
|
|
56
|
-
private buildVariantUrl;
|
|
57
|
-
} //#endregion
|
|
58
|
-
|
|
59
|
-
//# sourceMappingURL=a11y.d.ts.map
|
|
60
|
-
export { A11ySummary, MuseaA11yRunner as MuseaA11yRunner$1 };
|
|
61
|
-
//# sourceMappingURL=a11y-cQIJXM5k.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"a11y-cQIJXM5k.d.ts","names":[],"sources":["../src/a11y.ts"],"sourcesContent":null,"mappings":";;;;;;;;AAmBA;;;UAAiB,WAAA;EA4BJ,eAAA,EAAA,MAAe;EAAA,aAAA,EAAA,MAAA;EAAA,eAGL,EAAA,MAAA;EAAgB,aAczB,EAAA,MAAA;EAAW,YAET,EAAA,MAAA;EAAc,aACjB,EAAA,MAAA;EAAU,UAAlB,EAAA,MAAA;;;;;AAkGgC,cAtHxB,eAAA,CAsHwB;EAAW,QAkBlB,OAAA;EAAU,WA6IV,CAAA,OAAA,CAAA,EAlRP,WAkRO;EAAU;;;;sBApQ1B,4CAEE,iBACX,QAAQ;;;;kBA+DW,6CAA6C,QAAQ;;;;sBAmCvD,eAAe;;;;8BAkBP;;;;8BA6IA"}
|
package/dist/a11y.d.ts
DELETED
package/dist/a11y.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
//#region src/autogen.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* Variant auto-generation module.
|
|
4
|
-
* Generates .art.vue files from component prop analysis.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Autogen configuration options.
|
|
8
|
-
*/
|
|
9
|
-
interface AutogenOptions {
|
|
10
|
-
/** Maximum number of variants to generate (default: 20) */
|
|
11
|
-
maxVariants?: number;
|
|
12
|
-
/** Include a "Default" variant with all default values (default: true) */
|
|
13
|
-
includeDefault?: boolean;
|
|
14
|
-
/** Include boolean toggle variants (default: true) */
|
|
15
|
-
includeBooleanToggles?: boolean;
|
|
16
|
-
/** Include enum/union variants (default: true) */
|
|
17
|
-
includeEnumVariants?: boolean;
|
|
18
|
-
/** Include boundary value variants for numbers (default: false) */
|
|
19
|
-
includeBoundaryValues?: boolean;
|
|
20
|
-
/** Include empty string variants for optional strings (default: false) */
|
|
21
|
-
includeEmptyStrings?: boolean;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Prop definition for variant generation.
|
|
25
|
-
*/
|
|
26
|
-
interface PropDefinition {
|
|
27
|
-
name: string;
|
|
28
|
-
propType: string;
|
|
29
|
-
required: boolean;
|
|
30
|
-
defaultValue?: unknown;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Generated variant.
|
|
34
|
-
*/
|
|
35
|
-
interface GeneratedVariant {
|
|
36
|
-
name: string;
|
|
37
|
-
isDefault: boolean;
|
|
38
|
-
props: Record<string, unknown>;
|
|
39
|
-
description?: string;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Autogen output.
|
|
43
|
-
*/
|
|
44
|
-
interface AutogenOutput {
|
|
45
|
-
variants: GeneratedVariant[];
|
|
46
|
-
artFileContent: string;
|
|
47
|
-
componentName: string;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Generate .art.vue file for a component.
|
|
51
|
-
*
|
|
52
|
-
* @param componentPath - Path to the Vue component file
|
|
53
|
-
* @param options - Auto-generation options
|
|
54
|
-
* @returns Generated .art.vue content and metadata
|
|
55
|
-
*/
|
|
56
|
-
declare function generateArtFile(componentPath: string, options?: AutogenOptions): Promise<AutogenOutput>;
|
|
57
|
-
/**
|
|
58
|
-
* Write generated .art.vue file to disk.
|
|
59
|
-
*/
|
|
60
|
-
declare function writeArtFile(componentPath: string, options?: AutogenOptions, outputPath?: string): Promise<string>; //#endregion
|
|
61
|
-
|
|
62
|
-
//# sourceMappingURL=autogen.d.ts.map
|
|
63
|
-
export { AutogenOptions, AutogenOutput, GeneratedVariant, PropDefinition, generateArtFile as generateArtFile$1, writeArtFile as writeArtFile$1 };
|
|
64
|
-
//# sourceMappingURL=autogen-D3Zjc3zI.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autogen-D3Zjc3zI.d.ts","names":[],"sources":["../src/autogen.ts"],"sourcesContent":null,"mappings":";;;;;;;;UAYiB,cAAA;EAAA;;;;EAkBA;;;;EAUA;;;;AAUjB;;;;UApBiB,cAAA;;;;EAqFK,YAAA,CAAA,EAAA,OAAe;;;;;AAG3B,UA9EO,gBAAA,CA8EP;;;SA3ED;EAiJa,WAAA,CAAA,EAAA,MAAY;;;;AAIxB;UA9IO,aAAA;YACL;;;;;;;;;;;iBAgEU,eAAA,kCAEX,iBACR,QAAQ;;;;iBAsEW,YAAA,kCAEX,sCAER"}
|