@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/project-schema.json
CHANGED
|
@@ -1,377 +1,377 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
"description": "Schema for Jx project.json files. A project.json file is the root anchor file for a Jx project, declaring site metadata, default settings, global styles, content types, and build configuration.",
|
|
6
|
-
"type": "object",
|
|
7
|
-
"properties": {
|
|
8
|
-
"name": {
|
|
9
|
-
"description": "Human-readable project name.",
|
|
10
|
-
"type": "string",
|
|
11
|
-
"default": "Jx Site",
|
|
12
|
-
"examples": [
|
|
13
|
-
"My Portfolio",
|
|
14
|
-
"Jx Example Site"
|
|
15
|
-
]
|
|
16
|
-
},
|
|
17
|
-
"url": {
|
|
18
|
-
"description": "Production URL of the deployed site.",
|
|
19
|
-
"type": "string",
|
|
20
|
-
"examples": [
|
|
21
|
-
"https://example.com",
|
|
22
|
-
"https://jxsuite.com"
|
|
23
|
-
]
|
|
24
|
-
},
|
|
25
|
-
"defaults": {
|
|
26
|
-
"description": "Default settings applied to all pages unless overridden.",
|
|
27
|
-
"type": "object",
|
|
2
|
+
"$defs": {
|
|
3
|
+
"ContentTypeDef": {
|
|
4
|
+
"description": "Content type definition. Defines the source directory, frontmatter schema, and element dependencies.",
|
|
28
5
|
"properties": {
|
|
29
|
-
"
|
|
30
|
-
"description": "
|
|
31
|
-
"
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
6
|
+
"$elements": {
|
|
7
|
+
"description": "Custom elements available in markdown directives for this content type.",
|
|
8
|
+
"items": {
|
|
9
|
+
"oneOf": [
|
|
10
|
+
{
|
|
11
|
+
"properties": {
|
|
12
|
+
"$ref": {
|
|
13
|
+
"type": "string"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"required": [
|
|
17
|
+
"$ref"
|
|
18
|
+
],
|
|
19
|
+
"type": "object"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"type": "string"
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"type": "array"
|
|
43
27
|
},
|
|
44
|
-
"
|
|
45
|
-
"description": "
|
|
46
|
-
"type": "string"
|
|
47
|
-
"default": "en"
|
|
28
|
+
"format": {
|
|
29
|
+
"description": "Import name of a format class declared in the project imports map (e.g. \"Markdown\", \"Csv\"). When omitted, the format is derived from the source file extension via the format registry. \"json\" is the only built-in.",
|
|
30
|
+
"type": "string"
|
|
48
31
|
},
|
|
49
|
-
"
|
|
50
|
-
"description": "
|
|
51
|
-
"type": "
|
|
52
|
-
|
|
32
|
+
"schema": {
|
|
33
|
+
"description": "JSON Schema for validating frontmatter of content type entries.",
|
|
34
|
+
"type": "object"
|
|
35
|
+
},
|
|
36
|
+
"source": {
|
|
37
|
+
"description": "Path to the content directory relative to the project root.",
|
|
38
|
+
"examples": [
|
|
39
|
+
"./content/blog/",
|
|
40
|
+
"./content/docs/"
|
|
41
|
+
],
|
|
42
|
+
"type": "string"
|
|
53
43
|
}
|
|
54
|
-
}
|
|
44
|
+
},
|
|
45
|
+
"type": "object"
|
|
55
46
|
},
|
|
56
|
-
"
|
|
57
|
-
"description": "
|
|
58
|
-
"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
"properties": {
|
|
62
|
-
"tagName": {
|
|
47
|
+
"ImageConfig": {
|
|
48
|
+
"description": "Image optimization configuration for the project.",
|
|
49
|
+
"properties": {
|
|
50
|
+
"formats": {
|
|
51
|
+
"items": {
|
|
63
52
|
"type": "string"
|
|
64
53
|
},
|
|
65
|
-
"
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
54
|
+
"type": "array"
|
|
55
|
+
},
|
|
56
|
+
"lazyLoad": {
|
|
57
|
+
"type": "boolean"
|
|
58
|
+
},
|
|
59
|
+
"optimize": {
|
|
60
|
+
"type": "boolean"
|
|
61
|
+
},
|
|
62
|
+
"quality": {
|
|
63
|
+
"properties": {
|
|
64
|
+
"avif": {
|
|
65
|
+
"type": "number"
|
|
66
|
+
},
|
|
67
|
+
"jpeg": {
|
|
68
|
+
"type": "number"
|
|
69
|
+
},
|
|
70
|
+
"png": {
|
|
71
|
+
"type": "number"
|
|
72
|
+
},
|
|
73
|
+
"webp": {
|
|
74
|
+
"type": "number"
|
|
69
75
|
}
|
|
70
|
-
}
|
|
76
|
+
},
|
|
77
|
+
"type": "object"
|
|
78
|
+
},
|
|
79
|
+
"remoteDomains": {
|
|
80
|
+
"description": "Hostnames whose remote (https) images are optimized through /cdn-cgi/image transform URLs (cloudflare service only), e.g. [\"drive.usercontent.google.com\"]. Remote sources from other hosts are left untouched.",
|
|
81
|
+
"items": {
|
|
82
|
+
"type": "string"
|
|
83
|
+
},
|
|
84
|
+
"type": "array"
|
|
85
|
+
},
|
|
86
|
+
"service": {
|
|
87
|
+
"description": "How images are optimized: \"build\" runs Sharp at build time; \"cloudflare\" emits /cdn-cgi/image transform URLs served by Cloudflare Image Transformations (requires the feature to be enabled on the serving zone).",
|
|
88
|
+
"enum": [
|
|
89
|
+
"build",
|
|
90
|
+
"cloudflare"
|
|
91
|
+
],
|
|
92
|
+
"type": "string"
|
|
93
|
+
},
|
|
94
|
+
"sizes": {
|
|
95
|
+
"type": "string"
|
|
96
|
+
},
|
|
97
|
+
"widths": {
|
|
98
|
+
"items": {
|
|
99
|
+
"type": "number"
|
|
100
|
+
},
|
|
101
|
+
"type": "array"
|
|
71
102
|
}
|
|
72
103
|
},
|
|
73
|
-
"
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
"attributes": {
|
|
85
|
-
"name": "generator",
|
|
86
|
-
"content": "Jx"
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
]
|
|
90
|
-
]
|
|
104
|
+
"type": "object"
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
"$id": "https://jxsuite.com/schema/project/v1",
|
|
108
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
109
|
+
"additionalProperties": false,
|
|
110
|
+
"description": "Schema for Jx project.json files. A project.json file is the root anchor file for a Jx project, declaring site metadata, default settings, global styles, content types, and build configuration.",
|
|
111
|
+
"properties": {
|
|
112
|
+
"$defs": {
|
|
113
|
+
"description": "Global type definitions available to all pages.",
|
|
114
|
+
"type": "object"
|
|
91
115
|
},
|
|
92
116
|
"$elements": {
|
|
93
117
|
"description": "Global custom element dependencies available to all pages. Items are $ref objects or npm package specifier strings.",
|
|
94
|
-
"type": "array",
|
|
95
118
|
"items": {
|
|
96
119
|
"oneOf": [
|
|
97
120
|
{
|
|
98
|
-
"
|
|
99
|
-
"required": [
|
|
100
|
-
"$ref"
|
|
101
|
-
],
|
|
121
|
+
"additionalProperties": false,
|
|
102
122
|
"properties": {
|
|
103
123
|
"$ref": {
|
|
104
124
|
"type": "string"
|
|
105
125
|
}
|
|
106
126
|
},
|
|
107
|
-
"
|
|
127
|
+
"required": [
|
|
128
|
+
"$ref"
|
|
129
|
+
],
|
|
130
|
+
"type": "object"
|
|
108
131
|
},
|
|
109
132
|
{
|
|
110
133
|
"type": "string"
|
|
111
134
|
}
|
|
112
135
|
]
|
|
113
|
-
}
|
|
114
|
-
},
|
|
115
|
-
"imports": {
|
|
116
|
-
"description": "Global import map: $prototype names to .class.json file paths. Makes external classes available by name in all pages.",
|
|
117
|
-
"type": "object",
|
|
118
|
-
"additionalProperties": {
|
|
119
|
-
"type": "string"
|
|
120
136
|
},
|
|
121
|
-
"
|
|
122
|
-
{
|
|
123
|
-
"Markdown": "@jxsuite/parser/Markdown.class.json",
|
|
124
|
-
"MarkdownCollection": "@jxsuite/parser/MarkdownCollection.class.json"
|
|
125
|
-
}
|
|
126
|
-
]
|
|
137
|
+
"type": "array"
|
|
127
138
|
},
|
|
128
|
-
"$
|
|
129
|
-
"description": "
|
|
130
|
-
"type": "object",
|
|
131
|
-
"additionalProperties": {
|
|
132
|
-
"type": "string"
|
|
133
|
-
},
|
|
139
|
+
"$head": {
|
|
140
|
+
"description": "Global <head> entries applied to all pages. Array of element definitions for meta tags, link tags, script tags, etc.",
|
|
134
141
|
"examples": [
|
|
135
|
-
|
|
136
|
-
"--sm": "(min-width: 640px)",
|
|
137
|
-
"--md": "(min-width: 768px)",
|
|
138
|
-
"--lg": "(min-width: 1024px)"
|
|
139
|
-
}
|
|
140
|
-
]
|
|
141
|
-
},
|
|
142
|
-
"style": {
|
|
143
|
-
"description": "Global CSS styles applied to the <body> element. Uses the same camelCase CSSOM convention as component styles.",
|
|
144
|
-
"type": "object",
|
|
145
|
-
"additionalProperties": {
|
|
146
|
-
"oneOf": [
|
|
147
|
-
{
|
|
148
|
-
"type": "string"
|
|
149
|
-
},
|
|
142
|
+
[
|
|
150
143
|
{
|
|
151
|
-
"
|
|
144
|
+
"attributes": {
|
|
145
|
+
"href": "/favicon.svg",
|
|
146
|
+
"rel": "icon"
|
|
147
|
+
},
|
|
148
|
+
"tagName": "link"
|
|
152
149
|
},
|
|
153
150
|
{
|
|
154
|
-
"
|
|
151
|
+
"attributes": {
|
|
152
|
+
"content": "Jx",
|
|
153
|
+
"name": "generator"
|
|
154
|
+
},
|
|
155
|
+
"tagName": "meta"
|
|
155
156
|
}
|
|
156
157
|
]
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
158
|
+
],
|
|
159
|
+
"items": {
|
|
160
|
+
"properties": {
|
|
161
|
+
"attributes": {
|
|
162
|
+
"additionalProperties": {
|
|
163
|
+
"type": "string"
|
|
164
|
+
},
|
|
165
|
+
"type": "object"
|
|
166
|
+
},
|
|
167
|
+
"tagName": {
|
|
168
|
+
"type": "string"
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
"type": "object"
|
|
172
|
+
},
|
|
173
|
+
"type": "array"
|
|
173
174
|
},
|
|
174
|
-
"
|
|
175
|
-
"description": "Static redirect rules. Maps source paths to destination paths.",
|
|
176
|
-
"type": "object",
|
|
175
|
+
"$media": {
|
|
177
176
|
"additionalProperties": {
|
|
178
177
|
"type": "string"
|
|
179
178
|
},
|
|
179
|
+
"description": "Named media breakpoints following CSS @custom-media convention. Available in all component style objects.",
|
|
180
180
|
"examples": [
|
|
181
181
|
{
|
|
182
|
-
"
|
|
182
|
+
"--lg": "(min-width: 1024px)",
|
|
183
|
+
"--md": "(min-width: 768px)",
|
|
184
|
+
"--sm": "(min-width: 640px)"
|
|
183
185
|
}
|
|
184
|
-
]
|
|
185
|
-
|
|
186
|
-
"copy": {
|
|
187
|
-
"description": "Declarative file copy map. Keys are source paths (relative to project root), values are destination paths (relative to outDir).",
|
|
188
|
-
"type": "object",
|
|
189
|
-
"additionalProperties": {
|
|
190
|
-
"type": "string"
|
|
191
|
-
}
|
|
186
|
+
],
|
|
187
|
+
"type": "object"
|
|
192
188
|
},
|
|
193
189
|
"build": {
|
|
194
190
|
"description": "Build configuration.",
|
|
195
|
-
"type": "object",
|
|
196
191
|
"properties": {
|
|
197
|
-
"
|
|
198
|
-
"description": "
|
|
199
|
-
"
|
|
200
|
-
|
|
192
|
+
"adapter": {
|
|
193
|
+
"description": "Platform adapter for deployment-specific output.",
|
|
194
|
+
"enum": [
|
|
195
|
+
"netlify",
|
|
196
|
+
"vercel",
|
|
197
|
+
"cloudflare"
|
|
198
|
+
],
|
|
199
|
+
"type": "string"
|
|
201
200
|
},
|
|
202
201
|
"format": {
|
|
202
|
+
"default": "directory",
|
|
203
203
|
"description": "Output format.",
|
|
204
|
-
"type": "string",
|
|
205
204
|
"enum": [
|
|
206
205
|
"directory",
|
|
207
206
|
"single"
|
|
208
207
|
],
|
|
209
|
-
"
|
|
208
|
+
"type": "string"
|
|
209
|
+
},
|
|
210
|
+
"outDir": {
|
|
211
|
+
"default": "./dist",
|
|
212
|
+
"description": "Output directory for compiled site.",
|
|
213
|
+
"type": "string"
|
|
210
214
|
},
|
|
211
215
|
"trailingSlash": {
|
|
216
|
+
"default": "always",
|
|
212
217
|
"description": "Trailing slash behavior for generated URLs.",
|
|
213
|
-
"type": "string",
|
|
214
218
|
"enum": [
|
|
215
219
|
"always",
|
|
216
220
|
"never",
|
|
217
221
|
"ignore"
|
|
218
222
|
],
|
|
219
|
-
"
|
|
223
|
+
"type": "string"
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
"type": "object"
|
|
227
|
+
},
|
|
228
|
+
"contentTypes": {
|
|
229
|
+
"additionalProperties": {
|
|
230
|
+
"$ref": "#/$defs/ContentTypeDef"
|
|
231
|
+
},
|
|
232
|
+
"description": "Content type definitions. Each key is a content type name; the value defines the source directory, frontmatter schema, and element dependencies.",
|
|
233
|
+
"type": "object"
|
|
234
|
+
},
|
|
235
|
+
"copy": {
|
|
236
|
+
"additionalProperties": {
|
|
237
|
+
"type": "string"
|
|
238
|
+
},
|
|
239
|
+
"description": "Declarative file copy map. Keys are source paths (relative to project root), values are destination paths (relative to outDir).",
|
|
240
|
+
"type": "object"
|
|
241
|
+
},
|
|
242
|
+
"defaults": {
|
|
243
|
+
"description": "Default settings applied to all pages unless overridden.",
|
|
244
|
+
"properties": {
|
|
245
|
+
"charset": {
|
|
246
|
+
"default": "utf8",
|
|
247
|
+
"description": "Default charset for the page.",
|
|
248
|
+
"type": "string"
|
|
220
249
|
},
|
|
221
|
-
"
|
|
222
|
-
"
|
|
223
|
-
"
|
|
224
|
-
"
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
250
|
+
"lang": {
|
|
251
|
+
"default": "en",
|
|
252
|
+
"description": "Default lang attribute for the <html> element.",
|
|
253
|
+
"type": "string"
|
|
254
|
+
},
|
|
255
|
+
"layout": {
|
|
256
|
+
"default": null,
|
|
257
|
+
"description": "Default layout file path applied to all pages. Set to null to render pages without a layout.",
|
|
258
|
+
"examples": [
|
|
259
|
+
"./layouts/base.json"
|
|
260
|
+
],
|
|
261
|
+
"oneOf": [
|
|
262
|
+
{
|
|
263
|
+
"type": "string"
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"type": "null"
|
|
267
|
+
}
|
|
228
268
|
]
|
|
229
269
|
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
"images": {
|
|
233
|
-
"$ref": "#/$defs/ImageConfig"
|
|
270
|
+
},
|
|
271
|
+
"type": "object"
|
|
234
272
|
},
|
|
235
273
|
"i18n": {
|
|
236
274
|
"description": "Internationalization configuration.",
|
|
237
|
-
"type": "object",
|
|
238
275
|
"properties": {
|
|
239
276
|
"defaultLocale": {
|
|
240
277
|
"description": "Default locale code.",
|
|
241
|
-
"type": "string",
|
|
242
278
|
"examples": [
|
|
243
279
|
"en"
|
|
244
|
-
]
|
|
280
|
+
],
|
|
281
|
+
"type": "string"
|
|
245
282
|
},
|
|
246
283
|
"locales": {
|
|
247
284
|
"description": "Available locale codes.",
|
|
248
|
-
"type": "array",
|
|
249
|
-
"items": {
|
|
250
|
-
"type": "string"
|
|
251
|
-
},
|
|
252
285
|
"examples": [
|
|
253
286
|
[
|
|
254
287
|
"en",
|
|
255
288
|
"fr",
|
|
256
289
|
"de"
|
|
257
290
|
]
|
|
258
|
-
]
|
|
291
|
+
],
|
|
292
|
+
"items": {
|
|
293
|
+
"type": "string"
|
|
294
|
+
},
|
|
295
|
+
"type": "array"
|
|
259
296
|
},
|
|
260
297
|
"routing": {
|
|
261
298
|
"description": "Locale routing strategy.",
|
|
262
|
-
"type": "string",
|
|
263
299
|
"enum": [
|
|
264
300
|
"prefix-except-default",
|
|
265
301
|
"prefix-always"
|
|
266
|
-
]
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
},
|
|
271
|
-
"additionalProperties": false,
|
|
272
|
-
"$defs": {
|
|
273
|
-
"ImageConfig": {
|
|
274
|
-
"description": "Image optimization configuration for the project.",
|
|
275
|
-
"type": "object",
|
|
276
|
-
"properties": {
|
|
277
|
-
"optimize": {
|
|
278
|
-
"type": "boolean"
|
|
279
|
-
},
|
|
280
|
-
"widths": {
|
|
281
|
-
"type": "array",
|
|
282
|
-
"items": {
|
|
283
|
-
"type": "number"
|
|
284
|
-
}
|
|
285
|
-
},
|
|
286
|
-
"formats": {
|
|
287
|
-
"type": "array",
|
|
288
|
-
"items": {
|
|
289
|
-
"type": "string"
|
|
290
|
-
}
|
|
291
|
-
},
|
|
292
|
-
"quality": {
|
|
293
|
-
"type": "object",
|
|
294
|
-
"properties": {
|
|
295
|
-
"webp": {
|
|
296
|
-
"type": "number"
|
|
297
|
-
},
|
|
298
|
-
"avif": {
|
|
299
|
-
"type": "number"
|
|
300
|
-
},
|
|
301
|
-
"jpeg": {
|
|
302
|
-
"type": "number"
|
|
303
|
-
},
|
|
304
|
-
"png": {
|
|
305
|
-
"type": "number"
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
},
|
|
309
|
-
"sizes": {
|
|
302
|
+
],
|
|
310
303
|
"type": "string"
|
|
311
|
-
},
|
|
312
|
-
"lazyLoad": {
|
|
313
|
-
"type": "boolean"
|
|
314
|
-
},
|
|
315
|
-
"service": {
|
|
316
|
-
"description": "How images are optimized: \"build\" runs Sharp at build time; \"cloudflare\" emits /cdn-cgi/image transform URLs served by Cloudflare Image Transformations (requires the feature to be enabled on the serving zone).",
|
|
317
|
-
"type": "string",
|
|
318
|
-
"enum": [
|
|
319
|
-
"build",
|
|
320
|
-
"cloudflare"
|
|
321
|
-
]
|
|
322
|
-
},
|
|
323
|
-
"remoteDomains": {
|
|
324
|
-
"description": "Hostnames whose remote (https) images are optimized through /cdn-cgi/image transform URLs (cloudflare service only), e.g. [\"drive.usercontent.google.com\"]. Remote sources from other hosts are left untouched.",
|
|
325
|
-
"type": "array",
|
|
326
|
-
"items": {
|
|
327
|
-
"type": "string"
|
|
328
|
-
}
|
|
329
304
|
}
|
|
330
|
-
}
|
|
305
|
+
},
|
|
306
|
+
"type": "object"
|
|
331
307
|
},
|
|
332
|
-
"
|
|
333
|
-
"
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
"format": {
|
|
345
|
-
"description": "Import name of a format class declared in the project imports map (e.g. \"Markdown\", \"Csv\"). When omitted, the format is derived from the source file extension via the format registry. \"json\" is the only built-in.",
|
|
346
|
-
"type": "string"
|
|
347
|
-
},
|
|
348
|
-
"schema": {
|
|
349
|
-
"description": "JSON Schema for validating frontmatter of content type entries.",
|
|
350
|
-
"type": "object"
|
|
351
|
-
},
|
|
352
|
-
"$elements": {
|
|
353
|
-
"description": "Custom elements available in markdown directives for this content type.",
|
|
354
|
-
"type": "array",
|
|
355
|
-
"items": {
|
|
356
|
-
"oneOf": [
|
|
357
|
-
{
|
|
358
|
-
"type": "object",
|
|
359
|
-
"required": [
|
|
360
|
-
"$ref"
|
|
361
|
-
],
|
|
362
|
-
"properties": {
|
|
363
|
-
"$ref": {
|
|
364
|
-
"type": "string"
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
},
|
|
368
|
-
{
|
|
369
|
-
"type": "string"
|
|
370
|
-
}
|
|
371
|
-
]
|
|
372
|
-
}
|
|
308
|
+
"images": {
|
|
309
|
+
"$ref": "#/$defs/ImageConfig"
|
|
310
|
+
},
|
|
311
|
+
"imports": {
|
|
312
|
+
"additionalProperties": {
|
|
313
|
+
"type": "string"
|
|
314
|
+
},
|
|
315
|
+
"description": "Global import map: $prototype names to .class.json file paths. Makes external classes available by name in all pages.",
|
|
316
|
+
"examples": [
|
|
317
|
+
{
|
|
318
|
+
"Markdown": "@jxsuite/parser/Markdown.class.json",
|
|
319
|
+
"MarkdownCollection": "@jxsuite/parser/MarkdownCollection.class.json"
|
|
373
320
|
}
|
|
374
|
-
|
|
321
|
+
],
|
|
322
|
+
"type": "object"
|
|
323
|
+
},
|
|
324
|
+
"name": {
|
|
325
|
+
"default": "Jx Site",
|
|
326
|
+
"description": "Human-readable project name.",
|
|
327
|
+
"examples": [
|
|
328
|
+
"My Portfolio",
|
|
329
|
+
"Jx Example Site"
|
|
330
|
+
],
|
|
331
|
+
"type": "string"
|
|
332
|
+
},
|
|
333
|
+
"redirects": {
|
|
334
|
+
"additionalProperties": {
|
|
335
|
+
"type": "string"
|
|
336
|
+
},
|
|
337
|
+
"description": "Static redirect rules. Maps source paths to destination paths.",
|
|
338
|
+
"examples": [
|
|
339
|
+
{
|
|
340
|
+
"/old-about": "/about"
|
|
341
|
+
}
|
|
342
|
+
],
|
|
343
|
+
"type": "object"
|
|
344
|
+
},
|
|
345
|
+
"state": {
|
|
346
|
+
"description": "Site-wide reactive state available to all pages.",
|
|
347
|
+
"type": "object"
|
|
348
|
+
},
|
|
349
|
+
"style": {
|
|
350
|
+
"additionalProperties": {
|
|
351
|
+
"oneOf": [
|
|
352
|
+
{
|
|
353
|
+
"type": "string"
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"type": "number"
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"type": "object"
|
|
360
|
+
}
|
|
361
|
+
]
|
|
362
|
+
},
|
|
363
|
+
"description": "Global CSS styles applied to the <body> element. Uses the same camelCase CSSOM convention as component styles.",
|
|
364
|
+
"type": "object"
|
|
365
|
+
},
|
|
366
|
+
"url": {
|
|
367
|
+
"description": "Production URL of the deployed site.",
|
|
368
|
+
"examples": [
|
|
369
|
+
"https://example.com",
|
|
370
|
+
"https://jxsuite.com"
|
|
371
|
+
],
|
|
372
|
+
"type": "string"
|
|
375
373
|
}
|
|
376
|
-
}
|
|
374
|
+
},
|
|
375
|
+
"title": "Jx Project",
|
|
376
|
+
"type": "object"
|
|
377
377
|
}
|