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,356 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Symfony Parameters and Services Configuration",
"description": "Defines application parameters and services, including imports and environment-specific conditionals.",
"$comment": "Root allows extension namespaces (framework:, doctrine:, etc.) via additionalProperties: true.",
"type": "object",
"properties": {
"imports": {
"type": "array",
"description": "Import other configuration resources.",
"$comment": "YAML examples:\n- { resource: 'services.yaml' }\n- { resource: packages/dev/services.yaml, ignore_errors: true }\n- 'other_file.yaml'",
"items": {
"oneOf": [
{ "type": "string" },
{
"type": "object",
"properties": {
"resource": { "type": "string" },
"type": { "type": ["string", "null"] },
"ignore_errors": { "type": "boolean" }
},
"required": ["resource"],
"additionalProperties": false
}
]
}
},
"parameters": {
"type": "object",
"description": "Defines application-wide parameters.",
"$comment": "Values support scalars, arrays and objects.",
"patternProperties": {
"^.+$": { "$ref": "#/$defs/parameterValue" }
},
"additionalProperties": false
},
"services": {
"type": "object",
"description": "Defines your application services.",
"$comment": "Service ids accept multiple shapes: object (full definition), '@alias' string (alias), null (empty definition), prototype (resource/namespace), stack, and short array syntax for arguments.",
"properties": {
"_defaults": {
"$ref": "#/$defs/serviceDefaults"
},
"_instanceof": {
"type": "object",
"patternProperties": {
"^.+$": { "$ref": "#/$defs/serviceInstanceof" }
},
"additionalProperties": false
}
},
"patternProperties": {
"^(?:[A-Za-z_\\x7f-\\xff][A-Za-z0-9_\\x7f-\\xff]*\\\\)+[A-Za-z_\\x7f-\\xff][A-Za-z0-9_\\x7f-\\xff]*$": {
"oneOf": [
{ "$ref": "#/$defs/serviceConcrete" },
{ "$ref": "#/$defs/serviceAliasObject" },
{ "$ref": "#/$defs/servicePrototype" },
{ "$ref": "#/$defs/serviceStack" },
{ "$ref": "#/$defs/serviceShortSyntax" },
{ "type": "null" },
{ "type": "string", "pattern": "^@.+" }
],
"$comment": "FQCN service ids: short array syntax is allowed here."
},
"^(?!_).+$": {
"oneOf": [
{ "$ref": "#/$defs/serviceConcrete" },
{ "$ref": "#/$defs/serviceAliasObject" },
{ "$ref": "#/$defs/servicePrototype" },
{ "$ref": "#/$defs/serviceStack" },
{ "type": "null" },
{ "type": "string", "pattern": "^@.+" }
],
"$comment": "Non-FQCN ids: short array syntax is not allowed."
}
},
"additionalProperties": false
}
},
"patternProperties": {
"^when@.+$": {
"$ref": "#",
"description": "A container for parameters and services that are only loaded in a specific environment."
}
},
"additionalProperties": true,
"$defs": {
"parameterValue": {
"oneOf": [
{ "type": "string" },
{ "type": "number" },
{ "type": "boolean" },
{ "type": "array" },
{ "type": "object" },
{ "type": "null" }
]
},
"scalarValue": {
"oneOf": [
{ "type": "string" },
{ "type": "number" },
{ "type": "boolean" },
{ "type": "null" }
]
},
"fqcn": {
"type": "string",
"pattern": "^(?:\\\\)?(?:[A-Za-z_\\\\x7f-\\\\xff][A-Za-z0-9_\\\\x7f-\\\\xff]*\\\\)+[A-Za-z_\\\\x7f-\\\\xff][A-Za-z0-9_\\\\x7f-\\\\xff]*$",
"$comment": "Fully-qualified class name, optional leading backslash; requires at least one namespace separator."
},
"arguments": {
"$comment": "Arguments can be an array (positional) or a map (named).",
"oneOf": [
{ "type": "array", "items": { "$ref": "#/$defs/parameterValue" } },
{ "type": "object", "additionalProperties": { "$ref": "#/$defs/parameterValue" } }
]
},
"tags": {
"$comment": "YAML examples:\n- ['kernel.event_subscriber', { name: 'kernel.event_listener', event: 'kernel.request' }, { my_tag: { attr: 1 } }].",
"type": "array",
"items": {
"oneOf": [
{ "type": "string" },
{
"type": "object",
"properties": { "name": { "type": "string" } },
"required": ["name"],
"additionalProperties": true
},
{
"type": "object",
"minProperties": 1,
"maxProperties": 1,
"additionalProperties": {
"type": "object",
"additionalProperties": { "$ref": "#/$defs/parameterValue" }
}
}
]
}
},
"calls": {
"$comment": "YAML examples:\n- ['setFoo', ['@bar'], true]\n- { method: 'setFoo', arguments: ['@bar'], returns_clone: true }\n- { setFoo: ['@bar'] }\n- { setFoo: !returns_clone ['@bar'] } (special YAML tag)",
"type": "array",
"items": {
"oneOf": [
{
"type": "array",
"minItems": 1,
"maxItems": 3,
"items": [
{ "type": "string" },
{
"oneOf": [
{ "type": "array", "items": { "$ref": "#/$defs/parameterValue" } },
{ "type": "object", "additionalProperties": { "$ref": "#/$defs/parameterValue" } }
]
},
{ "type": "boolean" }
]
},
{
"type": "object",
"properties": {
"method": { "type": "string" },
"arguments": { "$ref": "#/$defs/arguments" },
"returns_clone": { "type": "boolean" }
},
"required": ["method"],
"additionalProperties": false
},
{
"type": "object",
"minProperties": 1,
"maxProperties": 1,
"additionalProperties": { "$ref": "#/$defs/arguments" }
}
]
}
},
"deprecation": {
"$comment": "YamlFileLoader requires an object with 'package' and 'version'.",
"type": "object",
"properties": {
"package": { "type": "string" },
"version": { "type": "string" },
"message": { "type": "string" }
},
"required": ["package", "version"],
"additionalProperties": false
},
"callable": {
"$comment": "Either 'Class::method' or ['Class', 'method'].",
"oneOf": [
{ "type": "string" },
{
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": [ { "type": "string" }, { "type": "string" } ]
}
]
},
"serviceShortSyntax": {
"$comment": "Short syntax: service defined as arguments array. YAML example: App\\SomeService: ['@dependency', 'literal', 123]",
"type": "array",
"items": { "$ref": "#/$defs/parameterValue" }
},
"factoryCallable": {
"$comment": "Either '@service', 'Class::method', or [classOrService, method]. For ['null', method] the class is resolved from the service class when using 'constructor'.",
"oneOf": [
{ "type": "string" },
{
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": [ { "type": ["string", "null"] }, { "type": "string" } ]
}
]
},
"serviceAliasObject": {
"$comment": "Allowed keys for aliases are only 'alias', 'public', 'deprecated'.",
"type": "object",
"properties": {
"alias": { "type": "string" },
"public": { "type": "boolean" },
"deprecated": { "$ref": "#/$defs/deprecation" }
},
"required": ["alias"],
"additionalProperties": false
},
"serviceConcrete": {
"$comment": "'constructor' cannot be used together with 'factory'. If 'from_callable' is used, many other keys are not allowed (see YamlFileLoader).",
"type": "object",
"properties": {
"class": { "type": "string" },
"file": { "type": "string" },
"parent": { "type": "string" },
"shared": { "type": "boolean" },
"synthetic": { "type": "boolean" },
"lazy": { "oneOf": [ { "type": "boolean" }, { "$ref": "#/$defs/fqcn" } ] },
"public": { "type": "boolean" },
"abstract": { "type": "boolean" },
"deprecated": { "$ref": "#/$defs/deprecation" },
"factory": { "$ref": "#/$defs/factoryCallable" },
"configurator": { "$ref": "#/$defs/callable" },
"arguments": { "$ref": "#/$defs/arguments" },
"properties": { "type": "object", "additionalProperties": { "$ref": "#/$defs/parameterValue" } },
"calls": { "$ref": "#/$defs/calls" },
"tags": { "$ref": "#/$defs/tags" },
"resource_tags": { "$ref": "#/$defs/tags" },
"decorates": { "type": "string" },
"decoration_inner_name": { "type": "string" },
"decoration_priority": { "type": "integer" },
"decoration_on_invalid": { "oneOf": [ { "enum": ["exception", "ignore"] }, { "type": "null" } ], "$comment": "Use null (without quotes) for NULL_ON_INVALID_REFERENCE." },
"autowire": { "type": "boolean" },
"autoconfigure": { "type": "boolean" },
"bind": { "type": "object", "additionalProperties": { "$ref": "#/$defs/parameterValue" } },
"constructor": { "type": "string" },
"from_callable": { "$ref": "#/$defs/parameterValue", "$comment": "Will be wrapped by factory ['Closure','fromCallable'] and sets lazy=true unless class is 'Closure'." }
},
"additionalProperties": false
},
"servicePrototype": {
"$comment": "Prototype definitions register classes by scanning directories. 'namespace' requires 'resource'.",
"type": "object",
"properties": {
"resource": { "type": "string" },
"namespace": { "type": "string" },
"exclude": {
"oneOf": [
{ "type": "string" },
{ "type": "array", "items": { "type": "string" } }
]
},
"parent": { "type": "string" },
"shared": { "type": "boolean" },
"lazy": { "oneOf": [ { "type": "boolean" }, { "$ref": "#/$defs/fqcn" } ] },
"public": { "type": "boolean" },
"abstract": { "type": "boolean" },
"deprecated": { "$ref": "#/$defs/deprecation" },
"factory": { "$ref": "#/$defs/factoryCallable" },
"arguments": { "$ref": "#/$defs/arguments" },
"properties": { "type": "object", "additionalProperties": { "$ref": "#/$defs/parameterValue" } },
"configurator": { "$ref": "#/$defs/callable" },
"calls": { "$ref": "#/$defs/calls" },
"tags": { "$ref": "#/$defs/tags" },
"resource_tags": { "$ref": "#/$defs/tags" },
"autowire": { "type": "boolean" },
"autoconfigure": { "type": "boolean" },
"bind": { "type": "object", "additionalProperties": { "$ref": "#/$defs/parameterValue" } },
"constructor": { "type": "string" }
},
"required": ["resource"],
"allOf": [
{ "anyOf": [ { "not": { "required": ["namespace"] } }, { "required": ["resource"] } ] }
],
"additionalProperties": false
},
"serviceStack": {
"$comment": "A stack builds a service pipeline from multiple frames.",
"type": "object",
"properties": {
"stack": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/$defs/serviceConcrete" },
{ "$ref": "#/$defs/serviceAliasObject" },
{ "$ref": "#/$defs/servicePrototype" }
]
}
},
"public": { "type": "boolean" },
"deprecated": { "$ref": "#/$defs/deprecation" }
},
"required": ["stack"],
"additionalProperties": false
},
"serviceDefaults": {
"$comment": "Defaults applied to services declared in the current file.",
"type": "object",
"properties": {
"public": { "type": "boolean" },
"tags": { "$ref": "#/$defs/tags" },
"resource_tags": { "$ref": "#/$defs/tags" },
"autowire": { "type": "boolean" },
"autoconfigure": { "type": "boolean" },
"bind": {
"type": "object",
"additionalProperties": { "$ref": "#/$defs/parameterValue" }
}
},
"additionalProperties": false
},
"serviceInstanceof": {
"$comment": "Applied to services declared in the current file whose class matches the key (interface or parent class).",
"type": "object",
"properties": {
"shared": { "type": "boolean" },
"lazy": { "oneOf": [ { "type": "boolean" }, { "$ref": "#/$defs/fqcn" } ] },
"public": { "type": "boolean" },
"properties": { "type": "object", "additionalProperties": { "$ref": "#/$defs/parameterValue" } },
"configurator": { "$ref": "#/$defs/callable" },
"calls": { "$ref": "#/$defs/calls" },
"tags": { "$ref": "#/$defs/tags" },
"resource_tags": { "$ref": "#/$defs/tags" },
"autowire": { "type": "boolean" },
"bind": { "type": "object", "additionalProperties": { "$ref": "#/$defs/parameterValue" } },
"constructor": { "type": "string" }
},
"additionalProperties": false
}
}
}