-
-
Notifications
You must be signed in to change notification settings - Fork 59
Expand file tree
/
Copy pathmanifest.schema.json
More file actions
219 lines (219 loc) · 7.96 KB
/
manifest.schema.json
File metadata and controls
219 lines (219 loc) · 7.96 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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://tabularis.dev/schemas/plugin-manifest.json",
"title": "Tabularis Plugin Manifest",
"description": "Schema for the manifest.json file required by every Tabularis database driver plugin.",
"type": "object",
"required": [
"id",
"name",
"version",
"executable",
"capabilities",
"data_types"
],
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z0-9-]+$",
"description": "Unique driver identifier (lowercase letters, digits, hyphens). Must match the plugin folder name."
},
"name": {
"type": "string",
"description": "Display name shown in the UI (e.g. \"DuckDB\")."
},
"version": {
"type": "string",
"pattern": "^\\d+\\.\\d+\\.\\d+$",
"description": "Plugin version in semver format (e.g. \"1.0.0\")."
},
"description": {
"type": "string",
"description": "Short description shown in the plugins list."
},
"default_port": {
"type": ["integer", "null"],
"description": "Default TCP port for the database. Use null for file-based databases."
},
"is_builtin": {
"type": "boolean",
"default": false,
"description": "true for built-in drivers shipped with Tabularis. External plugins should omit this field or set it to false."
},
"default_username": {
"type": "string",
"default": "",
"description": "Default username pre-filled in the connection modal (e.g. \"postgres\", \"root\"). Leave empty if there is no conventional default."
},
"executable": {
"type": "string",
"description": "Relative path to the plugin executable inside the plugin folder (without extension on Linux/macOS; Tabularis appends .exe on Windows automatically)."
},
"capabilities": {
"type": "object",
"description": "Feature flags that control which UI elements Tabularis renders for this driver.",
"required": [
"schemas",
"views",
"routines",
"file_based",
"identifier_quote",
"alter_primary_key"
],
"additionalProperties": false,
"properties": {
"schemas": {
"type": "boolean",
"description": "true if the database supports named schemas (e.g. PostgreSQL). Shows the schema selector in the connection UI."
},
"views": {
"type": "boolean",
"description": "true to enable the Views section in the database explorer."
},
"routines": {
"type": "boolean",
"description": "true to enable stored procedures and functions in the database explorer."
},
"file_based": {
"type": "boolean",
"description": "true for local file databases (e.g. SQLite, DuckDB). Replaces the host/port fields with a file path input."
},
"folder_based": {
"type": "boolean",
"default": false,
"description": "true for plugins that connect to a directory rather than a single file (e.g. CSV plugin). Replaces host/port fields with a folder picker."
},
"connection_string": {
"type": "boolean",
"default": true,
"description": "Optional capability for network drivers. Set false to hide connection string import in the UI."
},
"connectionString": {
"type": "boolean",
"default": true,
"description": "CamelCase alias of connection_string. Optional capability for network drivers."
},
"connection_string_example": {
"type": "string",
"default": "",
"description": "Optional placeholder example shown in the connection string field (e.g. \"postgres://user:pass@localhost:5432/db\")."
},
"connectionStringExample": {
"type": "string",
"default": "",
"description": "CamelCase alias of connection_string_example."
},
"identifier_quote": {
"type": "string",
"enum": ["\"", "`"],
"description": "Character used to quote SQL identifiers: double-quote for ANSI SQL, backtick for MySQL-style."
},
"alter_primary_key": {
"type": "boolean",
"description": "true if the database supports altering primary keys after table creation."
},
"auto_increment_keyword": {
"type": "string",
"default": "",
"description": "Keyword appended after the column type for auto-increment columns (e.g. \"AUTO_INCREMENT\" for MySQL). Empty string if not applicable."
},
"serial_type": {
"type": "string",
"default": "",
"description": "Replacement data type used for auto-increment columns (e.g. \"SERIAL\" for PostgreSQL). Empty string if not applicable."
},
"inline_pk": {
"type": "boolean",
"default": false,
"description": "true if primary key is defined inline in the column definition (e.g. SQLite AUTOINCREMENT style)."
},
"alter_column": {
"type": "boolean",
"default": false,
"description": "true if the driver supports ALTER TABLE MODIFY/ALTER COLUMN on existing tables."
},
"create_foreign_keys": {
"type": "boolean",
"default": false,
"description": "true if the driver properly supports creating foreign key constraints."
},
"no_connection_required": {
"type": "boolean",
"default": false,
"description": "true for API-based plugins that need no host/port/credentials (e.g. public REST APIs). Hides the entire connection form and skips database validation."
}
}
},
"interpreter": {
"type": "string",
"description": "Optional interpreter for script-based plugins (e.g. python3)."
},
"settings": {
"type": "array",
"description": "Optional list of configuration fields the plugin exposes to the user.",
"items": {
"type": "object",
"required": ["key", "label", "type"],
"additionalProperties": false,
"properties": {
"key": { "type": "string" },
"label": { "type": "string" },
"type": {
"type": "string",
"enum": ["string", "boolean", "number", "select"]
},
"default": {},
"description": { "type": "string" },
"required": { "type": "boolean", "default": false },
"options": { "type": "array", "items": { "type": "string" } }
}
}
},
"data_types": {
"type": "array",
"description": "List of SQL data types supported by this driver for column creation in the UI.",
"items": {
"type": "object",
"required": [
"name",
"category",
"requires_length",
"requires_precision"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "SQL type name as it appears in DDL (e.g. \"VARCHAR\", \"BIGINT\")."
},
"category": {
"type": "string",
"enum": [
"numeric",
"string",
"date",
"binary",
"json",
"spatial",
"other"
],
"description": "UI grouping category for this type."
},
"requires_length": {
"type": "boolean",
"description": "true if this type requires a length argument (e.g. VARCHAR(255))."
},
"requires_precision": {
"type": "boolean",
"description": "true if this type requires a precision/scale argument (e.g. DECIMAL(10,2))."
},
"default_length": {
"type": "string",
"description": "Optional default length value pre-filled in the UI (e.g. \"255\" for VARCHAR)."
}
}
}
}
}
}