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
101
102
103
|
import type { TextDocuments, Connection, Range } from 'vscode-languageserver'
import type { TextDocument } from 'vscode-languageserver-textdocument'
export type ClassNamesTree = {
[key: string]: ClassNamesTree
}
export type ClassNamesContext = {
[key: string]: string[]
}
export type ClassNames = {
context: ClassNamesContext
classNames: ClassNamesTree
}
export type EditorState = {
connection: Connection
documents: TextDocuments<TextDocument>
documentSettings: Map<string, Settings>
globalSettings: Settings
userLanguages: Record<string, string>
capabilities: {
configuration: boolean
diagnosticRelatedInformation: boolean
}
}
type DiagnosticSeveritySetting = 'ignore' | 'warning' | 'error'
export type Settings = {
tabSize: number
emmetCompletions: boolean
includeLanguages: Record<string, string>
validate: boolean
lint: {
cssConflict: DiagnosticSeveritySetting
invalidApply: DiagnosticSeveritySetting
invalidScreen: DiagnosticSeveritySetting
invalidVariant: DiagnosticSeveritySetting
invalidConfigPath: DiagnosticSeveritySetting
invalidTailwindDirective: DiagnosticSeveritySetting
}
experimental: {
classRegex: string[]
showPixelValues: boolean
}
}
interface NotificationEmitter {
on: (name: string, handler: (args: any) => void) => void
off: (name: string, handler: (args: any) => void) => void
emit: (name: string, args: any) => Promise<any>
}
export type State = null | {
enabled: boolean
emitter?: NotificationEmitter
version?: string
configPath?: string
config?: any
modules?: {
tailwindcss: any
postcss: any
}
separator?: string
plugins?: any[]
variants?: string[]
classNames?: ClassNames
dependencies?: string[]
featureFlags?: { future: string[]; experimental: string[] }
editor?: EditorState
error?: Error
}
export type DocumentClassList = {
classList: string
range: Range
important?: boolean
}
export type DocumentClassName = {
className: string
range: Range
relativeRange: Range
classList: DocumentClassList
}
export type DocumentHelperFunction = {
full: string
helper: 'theme' | 'config'
value: string
quotes: '"' | "'"
range: Range
valueRange: Range
}
export type ClassNameMeta = {
source: 'base' | 'components' | 'utilities'
pseudo: string[]
scope: string[]
context: string[]
}
|