-
Notifications
You must be signed in to change notification settings - Fork 679
/
validator.ts
65 lines (55 loc) · 1.78 KB
/
validator.ts
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
54
55
56
57
58
59
60
61
62
63
64
65
import type { Application } from "../application";
import type { ProjectReflection } from "../models/index";
import { Component, ChildableComponent } from "../utils/component";
import { ValidatorComponent } from "./components";
import { validateExports } from "./exports";
import { validateDocumentation } from "./documentation";
import { validateLinks } from "./links";
import { ValidatorEvents } from "./validator-events";
@Component({
name: "validator",
internal: true,
childClass: ValidatorComponent,
})
export class Validator extends ChildableComponent<
Application,
ValidatorComponent
> {
/**
* General events
*/
/**
* Triggered when the converter begins converting a project.
* The listener will be given a {@link Context} object.
* @event
*/
static readonly EVENT_RUN = ValidatorEvents.RUN;
constructor(owner: Application) {
super(owner);
}
validate(project: ProjectReflection) {
const checks = this.application.options.getValue("validation");
const start = Date.now();
if (checks.notExported) {
validateExports(
project,
this.application.logger,
this.application.options.getValue("intentionallyNotExported")
);
}
if (checks.notDocumented) {
validateDocumentation(
project,
this.application.logger,
this.application.options.getValue("requiredToBeDocumented")
);
}
if (checks.invalidLink) {
validateLinks(project, this.application.logger);
}
this.trigger(Validator.EVENT_RUN, project);
this.application.logger.verbose(
`Validation took ${Date.now() - start}ms`
);
}
}