@jxsuite/schema 0.28.2 → 0.28.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/class-schema.json +341 -341
- package/defs/cem.schema.ts +11 -11
- package/defs/children-value.schema.ts +6 -6
- package/defs/class-def.schema.ts +131 -131
- package/defs/content-type-def.schema.ts +18 -18
- package/defs/element-def.schema.ts +36 -36
- package/defs/expression-node.schema.ts +37 -37
- package/defs/external-class-def.schema.ts +41 -41
- package/defs/function-def.schema.ts +31 -31
- package/defs/head-entry.schema.ts +6 -6
- package/defs/image-config.schema.ts +16 -16
- package/defs/json-schema-type.schema.ts +1 -1
- package/defs/project-config.schema.ts +122 -122
- package/defs/pure-type-def.schema.ts +12 -12
- package/defs/ref-object.schema.ts +19 -19
- package/defs/state-entry.schema.ts +3 -3
- package/defs/style-object.schema.ts +7 -7
- package/defs/tag-name.schema.ts +1 -1
- package/defs/typed-state-def.schema.ts +14 -14
- package/package.json +3 -1
- package/project-schema.json +284 -284
- package/schema.json +987 -987
- package/src/format-registry.ts +28 -13
- package/src/guards.ts +195 -0
- package/src/parse.ts +57 -0
- package/src/schema.ts +229 -225
- package/types.ts +340 -51
package/defs/cem.schema.ts
CHANGED
|
@@ -2,29 +2,29 @@ export const cemParameterSchema = {
|
|
|
2
2
|
description:
|
|
3
3
|
"A CEM-compatible parameter definition for a function. " +
|
|
4
4
|
"Follows the Custom Elements Manifest Parameter shape.",
|
|
5
|
-
type: "object",
|
|
6
|
-
required: ["name"],
|
|
7
5
|
properties: {
|
|
8
|
-
|
|
9
|
-
type: { description: "Parameter type (JSON Schema or CEM { text } format)." },
|
|
6
|
+
default: { description: "Default value for the parameter." },
|
|
10
7
|
description: { description: "Parameter documentation.", type: "string" },
|
|
8
|
+
name: { description: "Parameter name.", type: "string" },
|
|
11
9
|
optional: { description: "Whether the parameter is optional.", type: "boolean" },
|
|
12
|
-
|
|
10
|
+
type: { description: "Parameter type (JSON Schema or CEM { text } format)." },
|
|
13
11
|
},
|
|
12
|
+
required: ["name"],
|
|
13
|
+
type: "object",
|
|
14
14
|
} as const;
|
|
15
15
|
|
|
16
16
|
export const cemEventSchema = {
|
|
17
17
|
description:
|
|
18
|
-
"A CEM-compatible event definition.
|
|
19
|
-
type: "object",
|
|
20
|
-
required: ["name"],
|
|
18
|
+
"A CEM-compatible event definition. Describes a CustomEvent the function dispatches.",
|
|
21
19
|
properties: {
|
|
22
|
-
name: { description: "Event name (e.g. 'task-toggled').", type: "string" },
|
|
23
|
-
type: { description: "Event type (e.g. { text: 'CustomEvent' })." },
|
|
24
|
-
description: { description: "Event documentation.", type: "string" },
|
|
25
20
|
deprecated: {
|
|
26
21
|
description: "Deprecation notice.",
|
|
27
22
|
oneOf: [{ type: "boolean" }, { type: "string" }],
|
|
28
23
|
},
|
|
24
|
+
description: { description: "Event documentation.", type: "string" },
|
|
25
|
+
name: { description: "Event name (e.g. 'task-toggled').", type: "string" },
|
|
26
|
+
type: { description: "Event type (e.g. { text: 'CustomEvent' })." },
|
|
29
27
|
},
|
|
28
|
+
required: ["name"],
|
|
29
|
+
type: "object",
|
|
30
30
|
} as const;
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
export const arrayNamespaceSchema = {
|
|
2
|
+
additionalProperties: false,
|
|
2
3
|
description: "Dynamic mapped list. Re-renders when the items state entry changes.",
|
|
3
|
-
type: "object",
|
|
4
|
-
required: ["$prototype", "items", "map"],
|
|
5
4
|
properties: {
|
|
6
|
-
$prototype: {
|
|
5
|
+
$prototype: { const: "Array", type: "string" },
|
|
6
|
+
filter: { $ref: "#/$defs/RefObject" },
|
|
7
7
|
items: {
|
|
8
8
|
oneOf: [{ $ref: "#/$defs/RefObject" }, { type: "array" }],
|
|
9
9
|
},
|
|
10
10
|
map: { $ref: "#/$defs/ElementDef" },
|
|
11
|
-
filter: { $ref: "#/$defs/RefObject" },
|
|
12
11
|
sort: { $ref: "#/$defs/RefObject" },
|
|
13
12
|
},
|
|
14
|
-
|
|
13
|
+
required: ["$prototype", "items", "map"],
|
|
14
|
+
type: "object",
|
|
15
15
|
} as const;
|
|
16
16
|
|
|
17
17
|
export const childrenValueSchema = {
|
|
18
18
|
description: "Static array of child definitions, or an Array namespace for dynamic lists.",
|
|
19
19
|
oneOf: [
|
|
20
20
|
{
|
|
21
|
-
type: "array",
|
|
22
21
|
items: {
|
|
23
22
|
oneOf: [{ $ref: "#/$defs/ElementDef" }, { type: "string" }, { type: "number" }],
|
|
24
23
|
},
|
|
24
|
+
type: "array",
|
|
25
25
|
},
|
|
26
26
|
{ $ref: "#/$defs/ArrayNamespace" },
|
|
27
27
|
],
|
package/defs/class-def.schema.ts
CHANGED
|
@@ -1,277 +1,277 @@
|
|
|
1
1
|
export const classParameterDefSchema = {
|
|
2
2
|
description: "A typed parameter definition for a class.",
|
|
3
|
-
type: "object",
|
|
4
|
-
required: ["identifier"],
|
|
5
3
|
properties: {
|
|
6
|
-
|
|
7
|
-
type:
|
|
4
|
+
default: {},
|
|
5
|
+
description: { type: "string" },
|
|
6
|
+
examples: { type: "array" },
|
|
8
7
|
format: {
|
|
9
8
|
description: 'When "json-schema", this parameter\'s value is itself a JSON Schema.',
|
|
10
9
|
type: "string",
|
|
11
10
|
},
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
examples: { type: "array" },
|
|
11
|
+
identifier: { type: "string" },
|
|
12
|
+
type: {},
|
|
15
13
|
},
|
|
14
|
+
required: ["identifier"],
|
|
15
|
+
type: "object",
|
|
16
16
|
} as const;
|
|
17
17
|
|
|
18
18
|
export const classFieldDefSchema = {
|
|
19
19
|
description: "A class field definition with access control and scope.",
|
|
20
|
-
type: "object",
|
|
21
20
|
properties: {
|
|
22
|
-
role: { type: "string", const: "field" },
|
|
23
|
-
access: { type: "string", enum: ["public", "private", "protected"] },
|
|
24
|
-
scope: { type: "string", enum: ["instance", "static"] },
|
|
25
|
-
identifier: { type: "string" },
|
|
26
|
-
type: {},
|
|
27
21
|
$prototype: {
|
|
28
22
|
description: 'Data source prototype for this field (e.g., "Request").',
|
|
29
23
|
type: "string",
|
|
30
24
|
},
|
|
31
|
-
|
|
25
|
+
access: { enum: ["public", "private", "protected"], type: "string" },
|
|
32
26
|
default: {},
|
|
33
27
|
description: { type: "string" },
|
|
34
28
|
examples: { type: "array" },
|
|
29
|
+
identifier: { type: "string" },
|
|
30
|
+
initializer: {},
|
|
31
|
+
role: { const: "field", type: "string" },
|
|
32
|
+
scope: { enum: ["instance", "static"], type: "string" },
|
|
33
|
+
type: {},
|
|
35
34
|
},
|
|
35
|
+
type: "object",
|
|
36
36
|
} as const;
|
|
37
37
|
|
|
38
38
|
export const classConstructorDefSchema = {
|
|
39
39
|
description: "Class constructor definition.",
|
|
40
|
-
type: "object",
|
|
41
40
|
properties: {
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
$prototype: { const: "Function", type: "string" },
|
|
42
|
+
body: {
|
|
43
|
+
oneOf: [{ type: "string" }, { items: { type: "string" }, type: "array" }],
|
|
44
|
+
},
|
|
45
|
+
description: { type: "string" },
|
|
44
46
|
parameters: {
|
|
45
|
-
type: "array",
|
|
46
47
|
items: {
|
|
47
48
|
oneOf: [
|
|
48
49
|
{
|
|
49
|
-
type: "object",
|
|
50
|
-
required: ["$ref"],
|
|
51
|
-
properties: { $ref: { type: "string" } },
|
|
52
50
|
additionalProperties: false,
|
|
51
|
+
properties: { $ref: { type: "string" } },
|
|
52
|
+
required: ["$ref"],
|
|
53
|
+
type: "object",
|
|
53
54
|
},
|
|
54
55
|
{ $ref: "#/$defs/ClassParameterDef" },
|
|
55
56
|
],
|
|
56
57
|
},
|
|
58
|
+
type: "array",
|
|
57
59
|
},
|
|
60
|
+
role: { const: "constructor", type: "string" },
|
|
58
61
|
superCall: {
|
|
59
|
-
type: "object",
|
|
60
62
|
properties: {
|
|
61
|
-
arguments: {
|
|
63
|
+
arguments: { items: { type: "string" }, type: "array" },
|
|
62
64
|
},
|
|
65
|
+
type: "object",
|
|
63
66
|
},
|
|
64
|
-
body: {
|
|
65
|
-
oneOf: [{ type: "string" }, { type: "array", items: { type: "string" } }],
|
|
66
|
-
},
|
|
67
|
-
description: { type: "string" },
|
|
68
67
|
},
|
|
68
|
+
type: "object",
|
|
69
69
|
} as const;
|
|
70
70
|
|
|
71
71
|
export const classMethodDefSchema = {
|
|
72
72
|
description:
|
|
73
73
|
"A class method or accessor definition. Capability roles (parse, serialize, discover, load) " +
|
|
74
74
|
"mark static methods that hosts (compiler, server, studio) invoke for format dispatch.",
|
|
75
|
-
type: "object",
|
|
76
75
|
properties: {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
$prototype: { const: "Function", type: "string" },
|
|
77
|
+
access: { enum: ["public", "private", "protected"], type: "string" },
|
|
78
|
+
body: {
|
|
79
|
+
oneOf: [{ type: "string" }, { items: { type: "string" }, type: "array" }],
|
|
80
80
|
},
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
timing: {
|
|
86
|
-
description:
|
|
87
|
-
"Execution environments allowed to call this capability directly. " +
|
|
88
|
-
"Hosts outside the list round-trip through the dev server.",
|
|
89
|
-
type: "array",
|
|
90
|
-
items: { type: "string", enum: ["compiler", "server", "client"] },
|
|
81
|
+
description: { type: "string" },
|
|
82
|
+
getter: {
|
|
83
|
+
properties: { body: { type: "string" } },
|
|
84
|
+
type: "object",
|
|
91
85
|
},
|
|
86
|
+
identifier: { type: "string" },
|
|
92
87
|
parameters: {
|
|
93
|
-
type: "array",
|
|
94
88
|
items: {
|
|
95
89
|
oneOf: [
|
|
96
90
|
{
|
|
97
|
-
type: "object",
|
|
98
|
-
required: ["$ref"],
|
|
99
|
-
properties: { $ref: { type: "string" } },
|
|
100
91
|
additionalProperties: false,
|
|
92
|
+
properties: { $ref: { type: "string" } },
|
|
93
|
+
required: ["$ref"],
|
|
94
|
+
type: "object",
|
|
101
95
|
},
|
|
102
96
|
{ $ref: "#/$defs/ClassParameterDef" },
|
|
103
97
|
],
|
|
104
98
|
},
|
|
99
|
+
type: "array",
|
|
105
100
|
},
|
|
106
101
|
returnType: {},
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
getter: {
|
|
111
|
-
type: "object",
|
|
112
|
-
properties: { body: { type: "string" } },
|
|
102
|
+
role: {
|
|
103
|
+
enum: ["method", "accessor", "parse", "serialize", "discover", "load"],
|
|
104
|
+
type: "string",
|
|
113
105
|
},
|
|
106
|
+
scope: { enum: ["instance", "static"], type: "string" },
|
|
114
107
|
setter: {
|
|
115
|
-
type: "object",
|
|
116
108
|
properties: {
|
|
117
|
-
parameters: { type: "array" },
|
|
118
109
|
body: { type: "string" },
|
|
110
|
+
parameters: { type: "array" },
|
|
119
111
|
},
|
|
112
|
+
type: "object",
|
|
113
|
+
},
|
|
114
|
+
timing: {
|
|
115
|
+
description:
|
|
116
|
+
"Execution environments allowed to call this capability directly. " +
|
|
117
|
+
"Hosts outside the list round-trip through the dev server.",
|
|
118
|
+
items: { enum: ["compiler", "server", "client"], type: "string" },
|
|
119
|
+
type: "array",
|
|
120
120
|
},
|
|
121
|
-
description: { type: "string" },
|
|
122
121
|
},
|
|
122
|
+
type: "object",
|
|
123
123
|
} as const;
|
|
124
124
|
|
|
125
125
|
export const formatDefSchema = {
|
|
126
126
|
description:
|
|
127
127
|
"Format participation marker. A class carrying this block is auto-discovered from the " +
|
|
128
128
|
"project imports map and used for file-extension dispatch by the compiler, server, and studio.",
|
|
129
|
-
type: "object",
|
|
130
|
-
required: ["extensions"],
|
|
131
129
|
properties: {
|
|
132
|
-
extensions: {
|
|
133
|
-
description: 'File extensions this format claims, with leading dot (e.g. [".md"]).',
|
|
134
|
-
type: "array",
|
|
135
|
-
items: { type: "string", pattern: "^\\." },
|
|
136
|
-
minItems: 1,
|
|
137
|
-
},
|
|
138
|
-
mediaType: {
|
|
139
|
-
description: "MIME type for the format (icons, labels, HTTP).",
|
|
140
|
-
type: "string",
|
|
141
|
-
},
|
|
142
130
|
documentKinds: {
|
|
143
131
|
description:
|
|
144
132
|
'"page"/"component" allow the extension in pages/components discovery; ' +
|
|
145
133
|
'"content" allows it as a content-type source.',
|
|
134
|
+
items: { enum: ["page", "component", "content"], type: "string" },
|
|
146
135
|
type: "array",
|
|
147
|
-
items: { type: "string", enum: ["page", "component", "content"] },
|
|
148
136
|
},
|
|
149
137
|
exportTarget: {
|
|
150
138
|
description: "When true, site builds emit a serialized sidecar per page in this format.",
|
|
151
139
|
type: "boolean",
|
|
152
140
|
},
|
|
141
|
+
extensions: {
|
|
142
|
+
description: 'File extensions this format claims, with leading dot (e.g. [".md"]).',
|
|
143
|
+
items: { pattern: "^\\.", type: "string" },
|
|
144
|
+
minItems: 1,
|
|
145
|
+
type: "array",
|
|
146
|
+
},
|
|
147
|
+
mediaType: {
|
|
148
|
+
description: "MIME type for the format (icons, labels, HTTP).",
|
|
149
|
+
type: "string",
|
|
150
|
+
},
|
|
153
151
|
remote: {
|
|
154
152
|
description: "When true, the load capability accepts http(s) URLs as sources.",
|
|
155
153
|
type: "boolean",
|
|
156
154
|
},
|
|
157
155
|
},
|
|
156
|
+
required: ["extensions"],
|
|
157
|
+
type: "object",
|
|
158
158
|
} as const;
|
|
159
159
|
|
|
160
160
|
export const studioHintsSchema = {
|
|
161
161
|
description:
|
|
162
162
|
"Studio control-surface hints for a format class: editor modes, document-mode rules, " +
|
|
163
163
|
"templates, and the element/nesting constraints that gate structural editing.",
|
|
164
|
-
type: "object",
|
|
165
164
|
properties: {
|
|
166
|
-
icon: { type: "string" },
|
|
167
|
-
modes: {
|
|
168
|
-
description: "Editor modes the studio offers for documents of this format.",
|
|
169
|
-
type: "array",
|
|
170
|
-
items: { type: "string" },
|
|
171
|
-
},
|
|
172
165
|
documentMode: {
|
|
173
|
-
type: "object",
|
|
174
166
|
properties: {
|
|
175
|
-
default: { type: "string", enum: ["content", "component"] },
|
|
176
167
|
componentWhen: {
|
|
177
168
|
description:
|
|
178
169
|
"Treat the document as a component when this top-level/frontmatter key matches the regex.",
|
|
179
|
-
type: "object",
|
|
180
170
|
properties: {
|
|
181
171
|
frontmatterKey: { type: "string" },
|
|
182
172
|
matches: { type: "string" },
|
|
183
173
|
},
|
|
174
|
+
type: "object",
|
|
184
175
|
},
|
|
176
|
+
default: { enum: ["content", "component"], type: "string" },
|
|
185
177
|
},
|
|
186
|
-
|
|
187
|
-
newFileTemplate: {
|
|
188
|
-
description: "Initial source text for newly created files of this format.",
|
|
189
|
-
type: "string",
|
|
178
|
+
type: "object",
|
|
190
179
|
},
|
|
191
180
|
elements: {
|
|
192
181
|
description: "Element allowlist and nesting constraints for structural editing.",
|
|
193
|
-
type: "object",
|
|
194
182
|
properties: {
|
|
195
|
-
block: {
|
|
196
|
-
inline: {
|
|
197
|
-
void: { type: "array", items: { type: "string" } },
|
|
198
|
-
textOnly: { type: "array", items: { type: "string" } },
|
|
183
|
+
block: { items: { type: "string" }, type: "array" },
|
|
184
|
+
inline: { items: { type: "string" }, type: "array" },
|
|
199
185
|
nesting: {
|
|
200
|
-
description:
|
|
201
|
-
'Per-parent child rules keyed by tag (or "_root"): ' +
|
|
202
|
-
"{ block, inline, directive } booleans or { only: [tags] }.",
|
|
203
|
-
type: "object",
|
|
204
186
|
additionalProperties: {
|
|
205
|
-
type: "object",
|
|
206
187
|
properties: {
|
|
207
188
|
block: { type: "boolean" },
|
|
208
|
-
inline: { type: "boolean" },
|
|
209
189
|
directive: { type: "boolean" },
|
|
210
|
-
|
|
190
|
+
inline: { type: "boolean" },
|
|
191
|
+
only: { items: { type: "string" }, type: "array" },
|
|
211
192
|
},
|
|
193
|
+
type: "object",
|
|
212
194
|
},
|
|
195
|
+
description:
|
|
196
|
+
'Per-parent child rules keyed by tag (or "_root"): ' +
|
|
197
|
+
"{ block, inline, directive } booleans or { only: [tags] }.",
|
|
198
|
+
type: "object",
|
|
213
199
|
},
|
|
200
|
+
textOnly: { items: { type: "string" }, type: "array" },
|
|
201
|
+
void: { items: { type: "string" }, type: "array" },
|
|
214
202
|
},
|
|
203
|
+
type: "object",
|
|
204
|
+
},
|
|
205
|
+
icon: { type: "string" },
|
|
206
|
+
modes: {
|
|
207
|
+
description: "Editor modes the studio offers for documents of this format.",
|
|
208
|
+
items: { type: "string" },
|
|
209
|
+
type: "array",
|
|
210
|
+
},
|
|
211
|
+
newFileTemplate: {
|
|
212
|
+
description: "Initial source text for newly created files of this format.",
|
|
213
|
+
type: "string",
|
|
215
214
|
},
|
|
216
215
|
},
|
|
216
|
+
type: "object",
|
|
217
217
|
} as const;
|
|
218
218
|
|
|
219
219
|
export const classDefSchema = {
|
|
220
|
+
additionalProperties: false,
|
|
220
221
|
description:
|
|
221
222
|
'A .class.json schema-defined class. $prototype must be "Class". ' +
|
|
222
223
|
"Defines fields, constructor, methods, and type parameters via $defs. " +
|
|
223
224
|
"Optionally points to a JS module via $implementation for hybrid execution.",
|
|
224
|
-
type: "object",
|
|
225
|
-
required: ["$prototype", "title"],
|
|
226
225
|
properties: {
|
|
227
|
-
$schema: { type: "string" },
|
|
228
|
-
$id: { type: "string" },
|
|
229
|
-
$prototype: { type: "string", const: "Class" },
|
|
230
|
-
title: {
|
|
231
|
-
description: "PascalCase class name, used as the export name.",
|
|
232
|
-
type: "string",
|
|
233
|
-
},
|
|
234
|
-
description: { type: "string" },
|
|
235
|
-
format: { $ref: "#/$defs/FormatDef" },
|
|
236
|
-
$studio: { $ref: "#/$defs/StudioHints" },
|
|
237
|
-
extends: {
|
|
238
|
-
description: "Base class — string name or $ref to another .class.json.",
|
|
239
|
-
oneOf: [
|
|
240
|
-
{ type: "string" },
|
|
241
|
-
{ type: "object", required: ["$ref"], properties: { $ref: { type: "string" } } },
|
|
242
|
-
],
|
|
243
|
-
},
|
|
244
|
-
$implementation: {
|
|
245
|
-
description: "Relative path to a JS module containing the actual class implementation.",
|
|
246
|
-
type: "string",
|
|
247
|
-
},
|
|
248
226
|
$defs: {
|
|
249
227
|
description: "Class members: parameters, returnTypes, fields, constructor, methods.",
|
|
250
|
-
type: "object",
|
|
251
228
|
properties: {
|
|
252
|
-
|
|
253
|
-
description: "Reusable typed parameter schemas, keyed by name.",
|
|
254
|
-
type: "object",
|
|
255
|
-
additionalProperties: { $ref: "#/$defs/ClassParameterDef" },
|
|
256
|
-
},
|
|
257
|
-
returnTypes: {
|
|
258
|
-
description: "Output type schemas, keyed by name.",
|
|
259
|
-
type: "object",
|
|
260
|
-
additionalProperties: { type: "object" },
|
|
261
|
-
},
|
|
229
|
+
constructor: { $ref: "#/$defs/ClassConstructorDef" },
|
|
262
230
|
fields: {
|
|
231
|
+
additionalProperties: { $ref: "#/$defs/ClassFieldDef" },
|
|
263
232
|
description: "Class fields with role, access, scope, and type information.",
|
|
264
233
|
type: "object",
|
|
265
|
-
additionalProperties: { $ref: "#/$defs/ClassFieldDef" },
|
|
266
234
|
},
|
|
267
|
-
constructor: { $ref: "#/$defs/ClassConstructorDef" },
|
|
268
235
|
methods: {
|
|
236
|
+
additionalProperties: { $ref: "#/$defs/ClassMethodDef" },
|
|
269
237
|
description: "Class methods and accessors.",
|
|
270
238
|
type: "object",
|
|
271
|
-
|
|
239
|
+
},
|
|
240
|
+
parameters: {
|
|
241
|
+
additionalProperties: { $ref: "#/$defs/ClassParameterDef" },
|
|
242
|
+
description: "Reusable typed parameter schemas, keyed by name.",
|
|
243
|
+
type: "object",
|
|
244
|
+
},
|
|
245
|
+
returnTypes: {
|
|
246
|
+
additionalProperties: { type: "object" },
|
|
247
|
+
description: "Output type schemas, keyed by name.",
|
|
248
|
+
type: "object",
|
|
272
249
|
},
|
|
273
250
|
},
|
|
251
|
+
type: "object",
|
|
252
|
+
},
|
|
253
|
+
$id: { type: "string" },
|
|
254
|
+
$implementation: {
|
|
255
|
+
description: "Relative path to a JS module containing the actual class implementation.",
|
|
256
|
+
type: "string",
|
|
257
|
+
},
|
|
258
|
+
$prototype: { const: "Class", type: "string" },
|
|
259
|
+
$schema: { type: "string" },
|
|
260
|
+
$studio: { $ref: "#/$defs/StudioHints" },
|
|
261
|
+
description: { type: "string" },
|
|
262
|
+
extends: {
|
|
263
|
+
description: "Base class — string name or $ref to another .class.json.",
|
|
264
|
+
oneOf: [
|
|
265
|
+
{ type: "string" },
|
|
266
|
+
{ properties: { $ref: { type: "string" } }, required: ["$ref"], type: "object" },
|
|
267
|
+
],
|
|
268
|
+
},
|
|
269
|
+
format: { $ref: "#/$defs/FormatDef" },
|
|
270
|
+
title: {
|
|
271
|
+
description: "PascalCase class name, used as the export name.",
|
|
272
|
+
type: "string",
|
|
274
273
|
},
|
|
275
274
|
},
|
|
276
|
-
|
|
275
|
+
required: ["$prototype", "title"],
|
|
276
|
+
type: "object",
|
|
277
277
|
} as const;
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
export const contentTypeDefSchema = {
|
|
2
2
|
description:
|
|
3
3
|
"Content type definition. Defines the source directory, frontmatter schema, and element dependencies.",
|
|
4
|
-
type: "object",
|
|
5
4
|
properties: {
|
|
6
|
-
|
|
7
|
-
description: "
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
$elements: {
|
|
6
|
+
description: "Custom elements available in markdown directives for this content type.",
|
|
7
|
+
items: {
|
|
8
|
+
oneOf: [
|
|
9
|
+
{
|
|
10
|
+
properties: { $ref: { type: "string" } },
|
|
11
|
+
required: ["$ref"],
|
|
12
|
+
type: "object",
|
|
13
|
+
},
|
|
14
|
+
{ type: "string" },
|
|
15
|
+
],
|
|
16
|
+
},
|
|
17
|
+
type: "array",
|
|
10
18
|
},
|
|
11
19
|
format: {
|
|
12
20
|
description:
|
|
@@ -19,19 +27,11 @@ export const contentTypeDefSchema = {
|
|
|
19
27
|
description: "JSON Schema for validating frontmatter of content type entries.",
|
|
20
28
|
type: "object",
|
|
21
29
|
},
|
|
22
|
-
|
|
23
|
-
description: "
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
oneOf: [
|
|
27
|
-
{
|
|
28
|
-
type: "object",
|
|
29
|
-
required: ["$ref"],
|
|
30
|
-
properties: { $ref: { type: "string" } },
|
|
31
|
-
},
|
|
32
|
-
{ type: "string" },
|
|
33
|
-
],
|
|
34
|
-
},
|
|
30
|
+
source: {
|
|
31
|
+
description: "Path to the content directory relative to the project root.",
|
|
32
|
+
examples: ["./content/blog/", "./content/docs/"],
|
|
33
|
+
type: "string",
|
|
35
34
|
},
|
|
36
35
|
},
|
|
36
|
+
type: "object",
|
|
37
37
|
} as const;
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
export const attributesObjectSchema = {
|
|
2
|
-
description: "HTML attributes and ARIA attributes set via element.setAttribute().",
|
|
3
|
-
type: "object",
|
|
4
2
|
additionalProperties: {
|
|
5
3
|
oneOf: [
|
|
6
4
|
{ type: "string" },
|
|
@@ -9,11 +7,11 @@ export const attributesObjectSchema = {
|
|
|
9
7
|
{ $ref: "#/$defs/RefObject" },
|
|
10
8
|
],
|
|
11
9
|
},
|
|
10
|
+
description: "HTML attributes and ARIA attributes set via element.setAttribute().",
|
|
11
|
+
type: "object",
|
|
12
12
|
} as const;
|
|
13
13
|
|
|
14
14
|
export const propsObjectSchema = {
|
|
15
|
-
description: "Explicit prop passing at a component boundary.",
|
|
16
|
-
type: "object",
|
|
17
15
|
additionalProperties: {
|
|
18
16
|
oneOf: [
|
|
19
17
|
{ type: "string" },
|
|
@@ -24,6 +22,8 @@ export const propsObjectSchema = {
|
|
|
24
22
|
{ $ref: "#/$defs/RefObject" },
|
|
25
23
|
],
|
|
26
24
|
},
|
|
25
|
+
description: "Explicit prop passing at a component boundary.",
|
|
26
|
+
type: "object",
|
|
27
27
|
} as const;
|
|
28
28
|
|
|
29
29
|
export const elementPropertyValueSchema = {
|
|
@@ -37,62 +37,62 @@ export const elementPropertyValueSchema = {
|
|
|
37
37
|
} as const;
|
|
38
38
|
|
|
39
39
|
export const switchDefSchema = {
|
|
40
|
+
additionalProperties: false,
|
|
40
41
|
description: "Reactive $ref that drives which case to render.",
|
|
41
|
-
type: "object",
|
|
42
|
-
required: ["$ref"],
|
|
43
42
|
properties: { $ref: { $ref: "#/$defs/InternalRef" } },
|
|
44
|
-
|
|
43
|
+
required: ["$ref"],
|
|
44
|
+
type: "object",
|
|
45
45
|
} as const;
|
|
46
46
|
|
|
47
47
|
export const switchNodeSchema = {
|
|
48
|
-
type: "object",
|
|
49
|
-
required: ["$switch", "cases"],
|
|
50
48
|
properties: {
|
|
51
|
-
tagName: { $ref: "#/$defs/TagName" },
|
|
52
49
|
$switch: { $ref: "#/$defs/SwitchDef" },
|
|
53
50
|
cases: {
|
|
54
|
-
type: "object",
|
|
55
51
|
additionalProperties: {
|
|
56
52
|
oneOf: [{ $ref: "#/$defs/ElementDef" }, { $ref: "#/$defs/ExternalComponentRef" }],
|
|
57
53
|
},
|
|
54
|
+
type: "object",
|
|
58
55
|
},
|
|
56
|
+
tagName: { $ref: "#/$defs/TagName" },
|
|
59
57
|
},
|
|
58
|
+
required: ["$switch", "cases"],
|
|
59
|
+
type: "object",
|
|
60
60
|
} as const;
|
|
61
61
|
|
|
62
62
|
export const elementDefSchema = {
|
|
63
|
+
additionalProperties: { $ref: "#/$defs/ElementPropertyValue" },
|
|
63
64
|
description: "A Jx element definition. Maps directly to a DOM element.",
|
|
64
|
-
type: "object",
|
|
65
|
-
required: ["tagName"],
|
|
66
65
|
properties: {
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
"$map/index": { $ref: "#/$defs/RefObject" },
|
|
67
|
+
"$map/item": { $ref: "#/$defs/RefObject" },
|
|
68
|
+
$props: { $ref: "#/$defs/PropsObject" },
|
|
69
|
+
$ref: { $ref: "#/$defs/ExternalRef" },
|
|
70
|
+
$switch: { $ref: "#/$defs/SwitchDef" },
|
|
71
|
+
alt: { $ref: "#/$defs/StringOrRef" },
|
|
72
|
+
attributes: { $ref: "#/$defs/AttributesObject" },
|
|
73
|
+
checked: { $ref: "#/$defs/BoolOrRef" },
|
|
74
|
+
children: { $ref: "#/$defs/ChildrenValue" },
|
|
69
75
|
className: { $ref: "#/$defs/StringOrRef" },
|
|
70
|
-
|
|
76
|
+
dir: { enum: ["ltr", "rtl", "auto"], type: "string" },
|
|
77
|
+
disabled: { $ref: "#/$defs/BoolOrRef" },
|
|
78
|
+
hidden: { $ref: "#/$defs/BoolOrRef" },
|
|
79
|
+
href: { $ref: "#/$defs/StringOrRef" },
|
|
80
|
+
id: { type: "string" },
|
|
71
81
|
innerHTML: { $ref: "#/$defs/StringOrRef" },
|
|
72
82
|
innerText: { $ref: "#/$defs/StringOrRef" },
|
|
73
|
-
hidden: { $ref: "#/$defs/BoolOrRef" },
|
|
74
|
-
tabIndex: { $ref: "#/$defs/NumberOrRef" },
|
|
75
|
-
title: { $ref: "#/$defs/StringOrRef" },
|
|
76
83
|
lang: { $ref: "#/$defs/StringOrRef" },
|
|
77
|
-
dir: { type: "string", enum: ["ltr", "rtl", "auto"] },
|
|
78
|
-
value: { $ref: "#/$defs/StringOrRef" },
|
|
79
|
-
checked: { $ref: "#/$defs/BoolOrRef" },
|
|
80
|
-
disabled: { $ref: "#/$defs/BoolOrRef" },
|
|
81
|
-
selected: { $ref: "#/$defs/BoolOrRef" },
|
|
82
|
-
src: { $ref: "#/$defs/StringOrRef" },
|
|
83
|
-
href: { $ref: "#/$defs/StringOrRef" },
|
|
84
|
-
alt: { $ref: "#/$defs/StringOrRef" },
|
|
85
|
-
type: { $ref: "#/$defs/StringOrRef" },
|
|
86
84
|
name: { $ref: "#/$defs/StringOrRef" },
|
|
87
85
|
placeholder: { $ref: "#/$defs/StringOrRef" },
|
|
88
|
-
|
|
86
|
+
selected: { $ref: "#/$defs/BoolOrRef" },
|
|
87
|
+
src: { $ref: "#/$defs/StringOrRef" },
|
|
89
88
|
style: { $ref: "#/$defs/StyleObject" },
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
89
|
+
tabIndex: { $ref: "#/$defs/NumberOrRef" },
|
|
90
|
+
tagName: { $ref: "#/$defs/TagName" },
|
|
91
|
+
textContent: { $ref: "#/$defs/StringOrRef" },
|
|
92
|
+
title: { $ref: "#/$defs/StringOrRef" },
|
|
93
|
+
type: { $ref: "#/$defs/StringOrRef" },
|
|
94
|
+
value: { $ref: "#/$defs/StringOrRef" },
|
|
96
95
|
},
|
|
97
|
-
|
|
96
|
+
required: ["tagName"],
|
|
97
|
+
type: "object",
|
|
98
98
|
} as const;
|