chore(Data model): #3585298 Add dataDependencies.entityFields to JavaScriptComponent

Add a new optional entityFields key to the dataDependencies mapping on JavaScriptComponent config entities, enabling code components to declare entity field data dependencies keyed by prop name. This is the first foundational step toward #3573831 (entity reference prop type).

Schema: entityFields is a sequence keyed by prop name, where each value is an array of field prop expressions (FieldPropExpression, FieldObjectPropsExpression, ReferenceFieldPropExpression).

Validation:

  • SequenceKeysMustMatch is extended with a matchType option (same-set — the existing default — or subset) so that entityFields keys can be validated as a subset of the component's props, reusing the existing constraint rather than adding a new one.
  • EntityFieldExpressionsSameTarget (new): ensures all expressions within a single prop target the same entity type and bundle.
  • ExpressionTargetEntityBundleExists (new): validates that each expression's target entity type and bundle actually exist.
  • JsComponentHasValidAndSupportedSdcMetadata now also enforces that a prop declared under entityFields cannot be marked as required (referenced entities may disappear; the component must tolerate NULL).

Dependency tracking: JavaScriptComponent::calculateDependencies() now walks every expression under dataDependencies.entityFields and adds the resulting field/bundle/module config dependencies, so that cascading deletes, config export/import order and cache invalidation work correctly.

OpenAPI schema updated to document entityFields on CodeComponent.

@todo Allow filtering SequenceKeysMustMatch in subset mode to only the subset of props that are actually entity reference props, once the entity reference prop type exists (#3573831).

Closes #3585298

Edited by Christian López Espínola

Merge request reports

Loading