@jxsuite/schema 1.5.0 → 1.8.0
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 +1 -0
- package/defs/children-value.schema.ts +10 -1
- package/defs/class-def.schema.ts +1 -0
- package/defs/element-def.schema.ts +1 -1
- package/defs/expression-node.schema.ts +4 -1
- package/defs/external-class-def.schema.ts +20 -2
- package/defs/head-entry.schema.ts +6 -1
- package/defs/image-config.schema.ts +7 -0
- package/defs/index.ts +2 -1
- package/defs/project-config.schema.ts +299 -7
- package/defs/tag-expression.schema.ts +98 -0
- package/defs/tag-name.schema.ts +13 -1
- package/package.json +7 -3
- package/project-schema.json +441 -5
- package/schema.json +186 -11
- package/schemas/project.core.schema.json +401 -5
- package/src/asset-paths.ts +21 -0
- package/src/extension-registry.ts +12 -0
- package/src/format-registry.ts +32 -2
- package/src/guards.ts +62 -1
- package/src/ijson.ts +205 -0
- package/src/intl.ts +155 -0
- package/src/locale.ts +429 -0
- package/src/media-type.ts +217 -0
- package/src/parse.ts +78 -1
- package/src/schema.ts +56 -3
- package/types.ts +191 -4
package/schema.json
CHANGED
|
@@ -634,6 +634,7 @@
|
|
|
634
634
|
"resolvePaths",
|
|
635
635
|
"lower",
|
|
636
636
|
"emit",
|
|
637
|
+
"head",
|
|
637
638
|
"assets",
|
|
638
639
|
"mount",
|
|
639
640
|
"dialect",
|
|
@@ -957,11 +958,24 @@
|
|
|
957
958
|
"domain": {
|
|
958
959
|
"type": "string"
|
|
959
960
|
},
|
|
960
|
-
"expires": {
|
|
961
|
-
"type": "string"
|
|
962
|
-
},
|
|
963
961
|
"filter": {
|
|
964
|
-
"
|
|
962
|
+
"anyOf": [
|
|
963
|
+
{
|
|
964
|
+
"$ref": "#/$defs/RefObject"
|
|
965
|
+
},
|
|
966
|
+
{
|
|
967
|
+
"description": "A single filter object, e.g. an equality shorthand.",
|
|
968
|
+
"type": "object"
|
|
969
|
+
},
|
|
970
|
+
{
|
|
971
|
+
"description": "Ordered filter rules, e.g. [{ field: \"Slug\", op: \"not empty\" }].",
|
|
972
|
+
"items": {
|
|
973
|
+
"type": "object"
|
|
974
|
+
},
|
|
975
|
+
"type": "array"
|
|
976
|
+
}
|
|
977
|
+
],
|
|
978
|
+
"description": "Filter configuration: a reactive $ref binding, a single filter object, or an ordered array of rules."
|
|
965
979
|
},
|
|
966
980
|
"headers": {
|
|
967
981
|
"additionalProperties": {
|
|
@@ -1542,7 +1556,7 @@
|
|
|
1542
1556
|
"title": "Pure method — genuine prototype methods; receiver in target, args in value"
|
|
1543
1557
|
},
|
|
1544
1558
|
{
|
|
1545
|
-
"description": "Invoke a callable, pure in formula position: target is the callee pointer — a named formula entry (#/state/…) or a blessed pure global via window#/ (Math.*, JSON.*, Object.keys/values/entries, and the Intl helpers Intl/formatNumber, Intl/formatDate, Intl/formatRelativeTime) — and value is the positional argument list (the splice args-in-value precedent). Argument order follows the callee's declared parameters.",
|
|
1559
|
+
"description": "Invoke a callable, pure in formula position: target is the callee pointer — a named formula entry (#/state/…) or a blessed pure global via window#/ (Math.*, JSON.*, Object.keys/values/entries, and the Intl helpers Intl/formatNumber, Intl/formatDate, Intl/formatRelativeTime, Intl/formatList, Intl/plural, Intl/compare, Intl/displayName, Intl/segment) — and value is the positional argument list (the splice args-in-value precedent). Argument order follows the callee's declared parameters.",
|
|
1546
1560
|
"not": {
|
|
1547
1561
|
"required": [
|
|
1548
1562
|
"initial"
|
|
@@ -1823,7 +1837,7 @@
|
|
|
1823
1837
|
"$ref": "#/$defs/NumberOrRef"
|
|
1824
1838
|
},
|
|
1825
1839
|
"tagName": {
|
|
1826
|
-
"$ref": "#/$defs/
|
|
1840
|
+
"$ref": "#/$defs/ElementTagName"
|
|
1827
1841
|
},
|
|
1828
1842
|
"textContent": {
|
|
1829
1843
|
"$ref": "#/$defs/StringOrRef"
|
|
@@ -6020,10 +6034,13 @@
|
|
|
6020
6034
|
"oneOf": [
|
|
6021
6035
|
{
|
|
6022
6036
|
"items": {
|
|
6023
|
-
"
|
|
6037
|
+
"anyOf": [
|
|
6024
6038
|
{
|
|
6025
6039
|
"$ref": "#/$defs/ElementDef"
|
|
6026
6040
|
},
|
|
6041
|
+
{
|
|
6042
|
+
"$ref": "#/$defs/SwitchNode"
|
|
6043
|
+
},
|
|
6027
6044
|
{
|
|
6028
6045
|
"$ref": "#/$defs/ArrayNamespace"
|
|
6029
6046
|
},
|
|
@@ -18249,6 +18266,16 @@
|
|
|
18249
18266
|
}
|
|
18250
18267
|
]
|
|
18251
18268
|
},
|
|
18269
|
+
"scroll-axis-lock": {
|
|
18270
|
+
"oneOf": [
|
|
18271
|
+
{
|
|
18272
|
+
"type": "string"
|
|
18273
|
+
},
|
|
18274
|
+
{
|
|
18275
|
+
"type": "number"
|
|
18276
|
+
}
|
|
18277
|
+
]
|
|
18278
|
+
},
|
|
18252
18279
|
"scroll-behavior": {
|
|
18253
18280
|
"oneOf": [
|
|
18254
18281
|
{
|
|
@@ -18569,6 +18596,16 @@
|
|
|
18569
18596
|
}
|
|
18570
18597
|
]
|
|
18571
18598
|
},
|
|
18599
|
+
"scrollAxisLock": {
|
|
18600
|
+
"oneOf": [
|
|
18601
|
+
{
|
|
18602
|
+
"type": "string"
|
|
18603
|
+
},
|
|
18604
|
+
{
|
|
18605
|
+
"type": "number"
|
|
18606
|
+
}
|
|
18607
|
+
]
|
|
18608
|
+
},
|
|
18572
18609
|
"scrollBehavior": {
|
|
18573
18610
|
"oneOf": [
|
|
18574
18611
|
{
|
|
@@ -22714,8 +22751,9 @@
|
|
|
22714
22751
|
"type": "object"
|
|
22715
22752
|
},
|
|
22716
22753
|
"TagName": {
|
|
22717
|
-
"description": "HTML element tag name or custom element name (must contain a hyphen per Web Components spec).",
|
|
22754
|
+
"description": "HTML element tag name or custom element name (must contain a hyphen per Web Components spec). A NAME, never an expression: no `${…}` position in the pipeline evaluates a tagName. Use `$switch`/`cases` to vary the element.",
|
|
22718
22755
|
"minLength": 1,
|
|
22756
|
+
"pattern": "^[a-zA-Z][a-zA-Z0-9._-]*$",
|
|
22719
22757
|
"type": "string",
|
|
22720
22758
|
"examples": [
|
|
22721
22759
|
"a",
|
|
@@ -22931,6 +22969,85 @@
|
|
|
22931
22969
|
"user-card"
|
|
22932
22970
|
]
|
|
22933
22971
|
},
|
|
22972
|
+
"TagExpression": {
|
|
22973
|
+
"anyOf": [
|
|
22974
|
+
{
|
|
22975
|
+
"additionalProperties": false,
|
|
22976
|
+
"description": "Two-way: `target` is the test, `value` the tag when it is truthy, `initial` the tag when it is not.",
|
|
22977
|
+
"properties": {
|
|
22978
|
+
"initial": {
|
|
22979
|
+
"$ref": "#/$defs/TagName"
|
|
22980
|
+
},
|
|
22981
|
+
"operator": {
|
|
22982
|
+
"const": "?:",
|
|
22983
|
+
"type": "string"
|
|
22984
|
+
},
|
|
22985
|
+
"target": {
|
|
22986
|
+
"$ref": "#/$defs/ExpressionOperand"
|
|
22987
|
+
},
|
|
22988
|
+
"value": {
|
|
22989
|
+
"$ref": "#/$defs/TagName"
|
|
22990
|
+
}
|
|
22991
|
+
},
|
|
22992
|
+
"required": [
|
|
22993
|
+
"operator",
|
|
22994
|
+
"target",
|
|
22995
|
+
"value",
|
|
22996
|
+
"initial"
|
|
22997
|
+
],
|
|
22998
|
+
"title": "?: — the tag when the test holds, and the tag when it does not"
|
|
22999
|
+
},
|
|
23000
|
+
{
|
|
23001
|
+
"additionalProperties": false,
|
|
23002
|
+
"description": "Multiway: `target` is the discriminant, matched against case keys by its string form. `default` is required — an element with no tag cannot exist.",
|
|
23003
|
+
"properties": {
|
|
23004
|
+
"cases": {
|
|
23005
|
+
"additionalProperties": {
|
|
23006
|
+
"$ref": "#/$defs/TagName"
|
|
23007
|
+
},
|
|
23008
|
+
"type": "object"
|
|
23009
|
+
},
|
|
23010
|
+
"default": {
|
|
23011
|
+
"$ref": "#/$defs/TagName"
|
|
23012
|
+
},
|
|
23013
|
+
"operator": {
|
|
23014
|
+
"const": "switch",
|
|
23015
|
+
"type": "string"
|
|
23016
|
+
},
|
|
23017
|
+
"target": {
|
|
23018
|
+
"$ref": "#/$defs/ExpressionOperand"
|
|
23019
|
+
}
|
|
23020
|
+
},
|
|
23021
|
+
"required": [
|
|
23022
|
+
"operator",
|
|
23023
|
+
"target",
|
|
23024
|
+
"cases",
|
|
23025
|
+
"default"
|
|
23026
|
+
],
|
|
23027
|
+
"title": "switch — one tag per discriminant value, with a required fallback"
|
|
23028
|
+
}
|
|
23029
|
+
],
|
|
23030
|
+
"description": "A tag name chosen at element creation. Every branch resolves to a `TagName`, so the candidate set is enumerable without evaluating anything."
|
|
23031
|
+
},
|
|
23032
|
+
"ElementTagName": {
|
|
23033
|
+
"anyOf": [
|
|
23034
|
+
{
|
|
23035
|
+
"$ref": "#/$defs/TagName"
|
|
23036
|
+
},
|
|
23037
|
+
{
|
|
23038
|
+
"additionalProperties": false,
|
|
23039
|
+
"properties": {
|
|
23040
|
+
"$expression": {
|
|
23041
|
+
"$ref": "#/$defs/TagExpression"
|
|
23042
|
+
}
|
|
23043
|
+
},
|
|
23044
|
+
"required": [
|
|
23045
|
+
"$expression"
|
|
23046
|
+
],
|
|
23047
|
+
"type": "object"
|
|
23048
|
+
}
|
|
23049
|
+
]
|
|
23050
|
+
},
|
|
22934
23051
|
"JsonSchemaType": {
|
|
22935
23052
|
"enum": [
|
|
22936
23053
|
"string",
|
|
@@ -22970,7 +23087,15 @@
|
|
|
22970
23087
|
"type": "string"
|
|
22971
23088
|
},
|
|
22972
23089
|
"textContent": {
|
|
22973
|
-
"
|
|
23090
|
+
"description": "Element content. An object is serialized to JSON inside the tag — that is how a JSON-LD block (`<script type=\"application/ld+json\">`) is authored.",
|
|
23091
|
+
"oneOf": [
|
|
23092
|
+
{
|
|
23093
|
+
"type": "string"
|
|
23094
|
+
},
|
|
23095
|
+
{
|
|
23096
|
+
"type": "object"
|
|
23097
|
+
}
|
|
23098
|
+
]
|
|
22974
23099
|
}
|
|
22975
23100
|
},
|
|
22976
23101
|
"required": [
|
|
@@ -22993,6 +23118,10 @@
|
|
|
22993
23118
|
"optimize": {
|
|
22994
23119
|
"type": "boolean"
|
|
22995
23120
|
},
|
|
23121
|
+
"picture": {
|
|
23122
|
+
"description": "Wrap a multi-format image in a <picture> with one <source> per format (default true). With it off the <img> carries a srcset in the preferred format alone, which browsers that cannot decode that format will still select from.",
|
|
23123
|
+
"type": "boolean"
|
|
23124
|
+
},
|
|
22996
23125
|
"quality": {
|
|
22997
23126
|
"properties": {
|
|
22998
23127
|
"avif": {
|
|
@@ -23135,9 +23264,9 @@
|
|
|
23135
23264
|
"type": "array"
|
|
23136
23265
|
},
|
|
23137
23266
|
"$head": {
|
|
23138
|
-
"description": "Page-level <head> entries. Array of
|
|
23267
|
+
"description": "Page-level <head> entries. Array of head entries for meta tags, link tags, script tags, etc. Merged with layout and site-level $head entries.",
|
|
23139
23268
|
"items": {
|
|
23140
|
-
"$ref": "#/$defs/
|
|
23269
|
+
"$ref": "#/$defs/HeadEntry"
|
|
23141
23270
|
},
|
|
23142
23271
|
"type": "array"
|
|
23143
23272
|
},
|
|
@@ -23150,6 +23279,32 @@
|
|
|
23150
23279
|
],
|
|
23151
23280
|
"type": "string"
|
|
23152
23281
|
},
|
|
23282
|
+
"$dir": {
|
|
23283
|
+
"description": "Base direction for this page's <html> element, overriding `defaults.dir`. Right-to-left content renders left-to-right without it.",
|
|
23284
|
+
"enum": [
|
|
23285
|
+
"ltr",
|
|
23286
|
+
"rtl",
|
|
23287
|
+
"auto"
|
|
23288
|
+
],
|
|
23289
|
+
"type": "string"
|
|
23290
|
+
},
|
|
23291
|
+
"$lang": {
|
|
23292
|
+
"description": "Language tag for this page's <html> element, overriding `defaults.lang` (site-architecture.md §8.4).",
|
|
23293
|
+
"examples": [
|
|
23294
|
+
"en",
|
|
23295
|
+
"fr",
|
|
23296
|
+
"ar-EG"
|
|
23297
|
+
],
|
|
23298
|
+
"type": "string"
|
|
23299
|
+
},
|
|
23300
|
+
"$translationKey": {
|
|
23301
|
+
"description": "This page's identity across languages, overriding the one its path implies (site-architecture.md §13.5). Two routes are translations when their keys match; the default key is the path with the locale prefix removed, which is right whenever the paths are parallel and wrong for a localized slug — /fr-ca/a-propos/ shares nothing with /about/ until one of them says so.",
|
|
23302
|
+
"examples": [
|
|
23303
|
+
"about",
|
|
23304
|
+
"blog/hello-world"
|
|
23305
|
+
],
|
|
23306
|
+
"type": "string"
|
|
23307
|
+
},
|
|
23153
23308
|
"$layout": {
|
|
23154
23309
|
"description": "Layout reference for pages. String path to a layout JSON file, or false to opt out of the default layout.",
|
|
23155
23310
|
"examples": [
|
|
@@ -23165,6 +23320,26 @@
|
|
|
23165
23320
|
}
|
|
23166
23321
|
]
|
|
23167
23322
|
},
|
|
23323
|
+
"$shadow": {
|
|
23324
|
+
"description": "Render this component into a shadow root instead of the light DOM (spec.md §16.6). Off unless set: a shadow root isolates the component's styles from the page and replaces the <slot> emulation with real slot distribution, so it changes how the component composes. Overrides `defaults.shadow` in both directions — `false` opts one component out of a project that opted in.",
|
|
23325
|
+
"oneOf": [
|
|
23326
|
+
{
|
|
23327
|
+
"enum": [
|
|
23328
|
+
"open",
|
|
23329
|
+
"closed"
|
|
23330
|
+
],
|
|
23331
|
+
"type": "string"
|
|
23332
|
+
},
|
|
23333
|
+
{
|
|
23334
|
+
"const": false,
|
|
23335
|
+
"type": "boolean"
|
|
23336
|
+
}
|
|
23337
|
+
]
|
|
23338
|
+
},
|
|
23339
|
+
"$sitemap": {
|
|
23340
|
+
"description": "Set false to exclude this page from sitemap.xml (site-architecture.md §8.4.1). Every other page with a URL is included.",
|
|
23341
|
+
"type": "boolean"
|
|
23342
|
+
},
|
|
23168
23343
|
"$media": {
|
|
23169
23344
|
"additionalProperties": {
|
|
23170
23345
|
"type": "string"
|