This commit is contained in:
Marek
2026-03-24 00:04:55 +01:00
commit c5229e48ed
4225 changed files with 511461 additions and 0 deletions

View File

@@ -0,0 +1,116 @@
<?xml version="1.0" ?>
<xsd:schema xmlns="http://symfony.com/schema/dic/serializer-mapping"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://symfony.com/schema/dic/serializer-mapping"
elementFormDefault="qualified">
<xsd:annotation>
<xsd:documentation><![CDATA[
Symfony Serializer Mapping Schema, version 1.0
Authors: Kévin Dunglas, Samuel Roze
A serializer mapping connects attributes with serialization groups.
]]></xsd:documentation>
</xsd:annotation>
<xsd:element name="serializer" type="serializer" />
<xsd:complexType name="serializer">
<xsd:annotation>
<xsd:documentation><![CDATA[
The root element of the serializer mapping definition.
]]></xsd:documentation>
</xsd:annotation>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="class" type="class" />
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="class">
<xsd:annotation>
<xsd:documentation><![CDATA[
Contains serialization groups for a single class.
Nested elements may be class property and/or getter definitions.
]]></xsd:documentation>
</xsd:annotation>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="attribute" type="attribute" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="discriminator-map" type="discriminator-map" />
</xsd:choice>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
<xsd:complexType name="discriminator-map">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="mapping" type="discriminator-map-mapping" maxOccurs="unbounded" />
</xsd:choice>
<xsd:attribute name="type-property" type="xsd:string" use="required" />
<xsd:attribute name="default-type" type="xsd:string" />
</xsd:complexType>
<xsd:complexType name="discriminator-map-mapping">
<xsd:attribute name="type" type="xsd:string" use="required" />
<xsd:attribute name="class" type="xsd:string" use="required" />
</xsd:complexType>
<xsd:complexType name="attribute">
<xsd:annotation>
<xsd:documentation><![CDATA[
Contains serialization groups and max depth for attributes. The name of the attribute should be given in the "name" option.
]]></xsd:documentation>
</xsd:annotation>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="group" type="xsd:string" maxOccurs="unbounded" />
<xsd:element name="context" type="context" maxOccurs="unbounded" />
<xsd:element name="normalization_context" type="context" maxOccurs="unbounded" />
<xsd:element name="denormalization_context" type="context" maxOccurs="unbounded" />
</xsd:choice>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="max-depth">
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="serialized-name">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="serialized-path">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="ignore" type="xsd:boolean" />
</xsd:complexType>
<xsd:complexType name="context">
<xsd:choice maxOccurs="unbounded">
<xsd:element name="group" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="entry" type="context-root-entry" maxOccurs="unbounded" />
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="context-root-entry" mixed="true">
<xsd:sequence minOccurs="0">
<xsd:element name="entry" type="context-entry" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute type="xsd:string" name="name" use="required" />
</xsd:complexType>
<xsd:complexType name="context-entry" mixed="true">
<xsd:sequence minOccurs="0">
<xsd:element name="entry" type="context-entry" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute type="xsd:string" name="name" />
</xsd:complexType>
</xsd:schema>

View File

@@ -0,0 +1,418 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Symfony Serializer Mapping Schema",
"description": "JSON schema for Symfony's serialization mapping",
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^[A-Za-z0-9\\\\_]+$": {
"type": "object",
"description": "Class metadata configuration",
"additionalProperties": false,
"properties": {
"attributes": {
"type": "object",
"description": "Attribute metadata configurations",
"additionalProperties": {
"oneOf": [
{
"type": "object",
"description": "Attribute metadata configuration",
"additionalProperties": false,
"properties": {
"groups": {
"type": "array",
"items": {
"type": "string"
},
"description": "Serialization groups for this attribute"
},
"max_depth": {
"type": "integer",
"minimum": 0,
"description": "Maximum serialization depth for this attribute"
},
"serialized_name": {
"type": "string",
"minLength": 1,
"description": "Custom name for serialization"
},
"serialized_path": {
"type": "string",
"description": "Property path for serialization (e.g., '[one][two]')"
},
"ignore": {
"type": "boolean",
"description": "Whether to ignore this attribute during serialization"
},
"contexts": {
"type": "array",
"items": {
"type": "object",
"description": "Context entry with optional groups",
"additionalProperties": false,
"properties": {
"context": {
"$ref": "#/definitions/contextObject"
},
"normalization_context": {
"$ref": "#/definitions/contextObject"
},
"denormalization_context": {
"$ref": "#/definitions/contextObject"
},
"groups": {
"type": "array",
"items": {
"type": "string"
},
"description": "Groups this context applies to"
}
},
"anyOf": [
{
"required": ["context"]
},
{
"required": ["normalization_context"]
},
{
"required": ["denormalization_context"]
}
]
},
"description": "Context configurations for this attribute"
}
}
},
{
"type": "null",
"description": "Empty attribute metadata"
}
]
}
},
"discriminator_map": {
"type": "object",
"description": "Class discriminator mapping configuration",
"additionalProperties": false,
"required": ["type_property", "mapping"],
"properties": {
"type_property": {
"type": "string",
"description": "Property name used to determine the class type"
},
"mapping": {
"type": "object",
"description": "Mapping from type values to class names",
"additionalProperties": {
"type": "string"
}
},
"default_type": {
"type": "string",
"description": "Default type when no mapping is found"
}
}
}
}
}
},
"definitions": {
"contextObject": {
"type": "object",
"description": "Context object with key-value pairs",
"properties": {
"circular_reference_limit": {
"type": "integer",
"minimum": 1,
"description": "How many loops of circular reference to allow while normalizing"
},
"object_to_populate": {
"type": "object",
"description": "Object to be updated instead of creating a new instance"
},
"groups": {
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "string"
}
],
"description": "Groups containing attributes to (de)normalize"
},
"attributes": {
"type": "object",
"description": "Attributes to (de)normalize"
},
"allow_extra_attributes": {
"type": "boolean",
"description": "Whether to ignore extra attributes or throw an exception"
},
"default_constructor_arguments": {
"type": "object",
"description": "Hashmap of classes containing hashmaps of constructor argument => default value"
},
"callbacks": {
"type": "object",
"description": "Hashmap of field name => callable to normalize this field"
},
"circular_reference_handler": {
"type": "object",
"description": "Handler to call when a circular reference has been detected"
},
"ignored_attributes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Attributes to be skipped when normalizing an object tree"
},
"require_all_properties": {
"type": "boolean",
"description": "Whether to require all properties to be listed in the input"
},
"enable_max_depth": {
"type": "boolean",
"description": "Whether to respect the max depth metadata on fields"
},
"depth_key_pattern": {
"type": "string",
"description": "Pattern to keep track of the current depth (must contain exactly two string placeholders)"
},
"disable_type_enforcement": {
"type": "boolean",
"description": "Whether verifying types match during denormalization"
},
"skip_null_values": {
"type": "boolean",
"description": "Whether fields with the value null should be output during normalization"
},
"skip_uninitialized_values": {
"type": "boolean",
"description": "Whether uninitialized typed class properties should be excluded during normalization"
},
"max_depth_handler": {
"type": "object",
"description": "Callback to allow to set a value for an attribute when the max depth has been reached"
},
"exclude_from_cache_keys": {
"type": "array",
"items": {
"type": "string"
},
"description": "Context keys not relevant to determine which attributes to (de)normalize"
},
"deep_object_to_populate": {
"type": "boolean",
"description": "Whether to tell the denormalizer to also populate existing objects on attributes"
},
"preserve_empty_objects": {
"type": "boolean",
"description": "Whether an empty object should be kept as an object or converted to a list"
},
"normalize_visibility": {
"type": "integer",
"description": "Whether fields should be output based on visibility (PropertyNormalizer)"
},
"format": {
"type": "string",
"description": "Format of the date (DateTimeNormalizer)"
},
"timezone": {
"oneOf": [
{
"type": "string"
},
{
"type": "object"
}
],
"description": "Timezone of the date (DateTimeNormalizer)"
},
"forceTimezone": {
"type": "boolean",
"description": "Whether to enforce the timezone during denormalization (DateTimeNormalizer)"
},
"cast": {
"enum": ["int", "float"],
"description": "Cast type for DateTime (DateTimeNormalizer)"
},
"encode_options": {
"type": "integer",
"minimum": 1,
"description": "json_encode flags bitmask (JsonEncoder)"
},
"decode_options": {
"type": "integer",
"minimum": 1,
"description": "json_decode flags bitmask (JsonEncoder)"
},
"associative": {
"type": "boolean",
"description": "Whether decoded objects will be given as associative arrays (JsonEncoder)"
},
"recursion_depth": {
"type": "integer",
"minimum": 1,
"description": "Maximum recursion depth (JsonEncoder)"
},
"as_collection": {
"type": "boolean",
"description": "Whether the decoded result should be considered as a collection (XmlEncoder/CsvEncoder)"
},
"decoder_ignored_node_types": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Node types to ignore while decoding (XmlEncoder)"
},
"encoder_ignored_node_types": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Node types to ignore while encoding (XmlEncoder)"
},
"encoding": {
"type": "string",
"description": "DOMDocument encoding (XmlEncoder)"
},
"format_output": {
"type": "boolean",
"description": "Whether to encode with indentation and extra space (XmlEncoder)"
},
"load_options": {
"type": "integer",
"minimum": 1,
"description": "DOMDocument::loadXml options bitmask (XmlEncoder)"
},
"save_options": {
"type": "integer",
"minimum": 1,
"description": "DOMDocument::saveXml options bitmask (XmlEncoder)"
},
"remove_empty_tags": {
"type": "boolean",
"description": "Whether to keep empty nodes (XmlEncoder)"
},
"root_node_name": {
"type": "string",
"description": "Name of the root node (XmlEncoder)"
},
"standalone": {
"type": "boolean",
"description": "Whether the document will be standalone (XmlEncoder)"
},
"type_cast_attributes": {
"type": "boolean",
"description": "Whether casting numeric string attributes to integers or floats (XmlEncoder)"
},
"version": {
"type": "string",
"description": "Version number of the document (XmlEncoder)"
},
"cdata_wrapping": {
"type": "boolean",
"description": "Whether to wrap strings within CDATA sections (XmlEncoder)"
},
"cdata_wrapping_pattern": {
"type": "string",
"description": "Pattern used to evaluate if a CDATA section should be added (XmlEncoder)"
},
"ignore_empty_attributes": {
"type": "boolean",
"description": "Whether to ignore empty attributes (XmlEncoder)"
},
"preserve_numeric_keys": {
"type": "boolean",
"description": "Whether to preserve numeric keys in array (XmlEncoder)"
},
"inline_threshold": {
"type": "integer",
"description": "Threshold to switch to inline YAML (YamlEncoder)"
},
"indent_level": {
"type": "integer",
"minimum": 0,
"description": "Indentation level (YamlEncoder)"
},
"flags": {
"type": "integer",
"description": "Yaml::dump flags bitmask (YamlEncoder)"
},
"preserved_empty_objects": {
"type": "boolean",
"description": "Whether to preserve empty objects or convert them to null (YamlEncoder)"
},
"delimiter": {
"type": "string",
"maxLength": 1,
"description": "Column delimiter character (CsvEncoder)"
},
"enclosure": {
"type": "string",
"maxLength": 1,
"description": "Field enclosure character (CsvEncoder)"
},
"escape_char": {
"type": "string",
"maxLength": 1,
"description": "Escape character (CsvEncoder, deprecated)"
},
"key_separator": {
"type": "string",
"description": "Key separator when (un)flattening arrays (CsvEncoder)"
},
"headers": {
"type": "array",
"description": "Headers (CsvEncoder)"
},
"escaped_formulas": {
"type": "boolean",
"description": "Whether formulas should be escaped (CsvEncoder)"
},
"no_headers": {
"type": "boolean",
"description": "Whether the input/output is containing headers (CsvEncoder)"
},
"end_of_line": {
"type": "string",
"description": "End of line characters (CsvEncoder)"
},
"output_utf8_bom": {
"type": "boolean",
"description": "Whether to add the UTF-8 Byte Order Mark (CsvEncoder)"
}
},
"additionalProperties": {
"oneOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array"
},
{
"type": "object"
}
]
}
}
}
}