-
Notifications
You must be signed in to change notification settings - Fork 22
Expand file tree
/
Copy pathschema.ts
More file actions
116 lines (99 loc) · 2.13 KB
/
schema.ts
File metadata and controls
116 lines (99 loc) · 2.13 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
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
104
105
106
107
108
109
110
111
112
113
114
115
116
/**
* Schema structure returned by loadSchema
*/
export interface Format {
pattern: string
}
export interface Entity {
name: string
type: string
format: string
}
export interface Value {
value: string
}
export interface SchemaObjects {
datatypes: Record<string, Value>
enums: Record<string, Value>
entities: Record<string, Entity>
extensions: Record<string, Value>
files: Record<string, unknown>
formats: Record<string, Format>
suffixes: Record<string, Value>
}
export interface SchemaRules {
entities: string[]
files: SchemaFiles
modalities: Record<string, unknown>
directories: Record<string, Record<string, DirectoryRule>>
}
export interface DirectoryRule {
name: string
entity: string
level: string
value: string
subdirs: string[]
opaque: boolean
}
export interface SchemaFiles {
common: Record<string, unknown>
deriv: Record<string, unknown>
raw: Record<string, unknown>
}
export interface ExpressionTest {
expression: string
result: string
}
export interface SchemaMeta {
expression_tests: ExpressionTest[]
}
export interface Schema {
objects: SchemaObjects
rules: SchemaRules
schema_version: string
meta: SchemaMeta
}
export interface SchemaIssue {
code: string
message: string
level?: string
}
export type GenericSchema = { [key: string]: GenericRule | GenericSchema }
export interface GenericRule {
selectors?: string[]
checks?: string[]
columns?: Record<string, string>
additional_columns?: string
initial_columns?: string[]
fields: Record<string, SchemaFields>
issue?: SchemaIssue
extensions?: string[]
suffixes?: string[]
stem?: string
path?: string
datatypes?: string[]
pattern?: string
name?: string
format?: string
required?: string
index_columns?: string[]
metadata?: Record<string, string>
}
export interface SchemaFields {
level: string
level_addendum?: string
issue?: SchemaIssue
}
export interface SchemaType {
type: string
format?: string
enum?: string[]
items?: SchemaType[]
minItems?: number
maxItems?: number
unit?: string
}
interface AnyOf {
anyOf: SchemaType[]
}
export type SchemaTypeLike = AnyOf | SchemaType