-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathjsdocs-plugin.ts
More file actions
53 lines (49 loc) · 1.37 KB
/
jsdocs-plugin.ts
File metadata and controls
53 lines (49 loc) · 1.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import { type PluginConfig, validate } from '@code-pushup/models';
import { type JsDocsPluginConfig, jsDocsPluginConfigSchema } from './config.js';
import {
GROUPS,
PLUGIN_DESCRIPTION,
PLUGIN_DOCS_URL,
PLUGIN_SLUG,
PLUGIN_TITLE,
} from './constants.js';
import { createRunnerFunction } from './runner/runner.js';
import {
filterAuditsByPluginConfig,
filterGroupsByOnlyAudits,
logAuditsAndGroups,
} from './utils.js';
/**
* Instantiates Code PushUp documentation coverage plugin for core config.
*
* @example
* import jsDocsPlugin from '@code-pushup/jsdocs-plugin'
*
* export default {
* // ... core config ...
* plugins: [
* // ... other plugins ...
* jsDocsPlugin(['**/*.ts'])
* ]
* }
*
* @returns Plugin configuration.
*/
export function jsDocsPlugin(config: JsDocsPluginConfig): PluginConfig {
const jsDocsConfig = validate(jsDocsPluginConfigSchema, config);
const scoreTargets = jsDocsConfig.scoreTargets;
const groups = filterGroupsByOnlyAudits(GROUPS, jsDocsConfig);
const audits = filterAuditsByPluginConfig(jsDocsConfig);
logAuditsAndGroups(audits, groups);
return {
slug: PLUGIN_SLUG,
title: PLUGIN_TITLE,
icon: 'folder-docs',
description: PLUGIN_DESCRIPTION,
docsUrl: PLUGIN_DOCS_URL,
groups,
audits,
runner: createRunnerFunction(jsDocsConfig),
...(scoreTargets && { scoreTargets }),
};
}