/
index.ts
100 lines (85 loc) · 2.16 KB
/
index.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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import * as postcss from "postcss";
export type PostCSSRoot = postcss.Root;
export interface AtRules {
fontFace: Array<{
name: string;
node: postcss.AtRule;
}>;
keyframes: postcss.AtRule[];
}
export interface RawContent<T = string> {
extension: string;
raw: T;
}
export interface RawCSS {
raw: string;
name?: string;
}
export interface ExtractorResultDetailed {
attributes: {
names: string[];
values: string[];
};
classes: string[];
ids: string[];
tags: string[];
undetermined: string[];
}
export type ExtractorResult = ExtractorResultDetailed | string[];
export type ExtractorFunction<T = string> = (content: T) => ExtractorResult;
export interface Extractors {
extensions: string[];
extractor: ExtractorFunction;
}
export type IgnoreType = "end" | "start" | "next";
export type StringRegExpArray = Array<RegExp | string>;
export type ComplexSafelist = {
standard?: StringRegExpArray;
deep?: RegExp[];
greedy?: RegExp[];
variables?: StringRegExpArray;
keyframes?: StringRegExpArray;
};
export type UserDefinedSafelist = StringRegExpArray | ComplexSafelist;
export interface UserDefinedOptions {
content: Array<string | RawContent>;
css: Array<string | RawCSS>;
defaultExtractor?: ExtractorFunction;
extractors?: Array<Extractors>;
fontFace?: boolean;
keyframes?: boolean;
output?: string;
rejected?: boolean;
rejectedCss?: boolean;
stdin?: boolean;
stdout?: boolean;
variables?: boolean;
safelist?: UserDefinedSafelist;
blocklist?: StringRegExpArray;
skippedContentGlobs?: Array<string>;
dynamicAttributes?: string[];
}
export interface Options {
content: Array<string | RawContent>;
css: Array<string | RawCSS>;
defaultExtractor: ExtractorFunction;
extractors: Array<Extractors>;
fontFace: boolean;
keyframes: boolean;
output?: string;
rejected: boolean;
rejectedCss: boolean;
stdin: boolean;
stdout: boolean;
variables: boolean;
safelist: Required<ComplexSafelist>;
blocklist: StringRegExpArray;
skippedContentGlobs: Array<string>;
dynamicAttributes: string[];
}
export interface ResultPurge {
css: string;
rejectedCss?: string;
file?: string;
rejected?: string[];
}