Checks of features new in Neos 3.3
The checks of the metadata properties, components, attributes and directives that Neos 3.3 introduces: a cluster meets them once it starts using one of these features. See New checks by version for how to read this page, and New checks in Neos 3.3 for the checks an existing cluster can meet.
Dead letter topic of a server method
| Code | Message | Level | Fix |
|---|---|---|---|
M0100 |
Server method {0} uses its subscribed event "{1}" as dead letter topic, ... |
Error | Give PubSubDeadLetterEventName a topic other than the subscribed event — see Publish and subscribe. |
| — | Inconsistent properties detected for server methods subscribing to event '{0}': followed by Server methods {0} all define a PubSubDeadLetterEventName ... |
Error | Set PubSubDeadLetterEventName on only one of the server methods subscribing to the event. |
Property masking
The masking options of entity, entity view and UI view properties (MaskingType, MaskingVisiblePrefixLength, MaskingVisibleSuffixLength, MaskingRegularExpression, MaskingCharacter), checked by neos generate. An entity view or UI view property is only checked for the options it declares itself. A key is also checked on a derived entity that makes an inherited masked property one of its keys.
| Code | Message | Level | Fix |
|---|---|---|---|
| — | The property "{0}" cannot be masked: only String properties can be masked. |
Error | Remove the masking type, or mask a String property. |
| — | The visible prefix and suffix lengths of the property "{0}" are only allowed with the Partial masking type. |
Error | Remove MaskingVisiblePrefixLength and MaskingVisibleSuffixLength, or use the Partial masking type. |
| — | The visible prefix and suffix lengths of the property "{0}" cannot be negative. |
Error | Set MaskingVisiblePrefixLength and MaskingVisibleSuffixLength to 0 or more. |
| — | The visible parts regular expression of the property "{0}" is only allowed with the Regex masking type. |
Error | Remove MaskingRegularExpression, or use the Regex masking type. |
| — | The visible parts regular expression of the property "{0}" is invalid: {1} |
Error | Set or fix MaskingRegularExpression as {1} says. Back-references, lookarounds and atomic groups are not supported. |
| — | The masking character of the property "{0}" is only allowed with a masking type. |
Error | Remove MaskingCharacter, or set a masking type. |
| — | The masking character '{1}' of the property "{0}" is invalid: it must be a punctuation mark or a symbol, such as * or #. |
Error | Use a punctuation mark or a symbol, such as * or #. |
| — | The masking character '{1}' of the property "{0}" is a separator of the {2} masking type: choose another character, such as * or #. |
Error | Use a character that the format does not use as separator, such as * or #. |
| — | The key property "{0}" cannot be masked: keys appear in addresses, references and error messages. |
Error | Remove the masking type of the key property. |
| — | The property "{0}" is part of the alternate key "{1}" and cannot be masked: alternate keys appear in addresses, references and error messages. |
Error | Remove the masking type, or the property from the alternate key. |
M0102 |
The property "{0}" is masked but not encrypted: the mask only hides the value in the responses, the value stays readable in the database. ... |
Warning | Set IsEncrypted, or lower M0102. |
| — | The default grouping of the UI view "{1}" leaves out the property "{0}": its value or the label of its lookup is masked. |
Warning | Remove the property from DefaultGrouping. |
| — | The {2} summary of the property "{0}" of the UI view "{1}" is left out: it would aggregate a masked value. |
Warning | Remove the summary, or use the Count summary type. |
| — | The "{0}" element cannot edit the masked property "{1}": only a textbox without type or a form-field replaces its value as a whole. |
Error | Bind the property to a textbox without type, or to a form-field. |
Partial template slots
The slots of UI view templates (<partial-template-slot /> node, partial template type SlotContribution, Slot and Order properties), checked by neos generate.
| Code | Message | Level | Fix |
|---|---|---|---|
| — | The partial template "{0}" of the UIView "{1}" is a slot contribution but does not define its slot. |
Error | Set Slot on the contribution, or set its type to Standard. |
| — | The partial template "{0}" of the UIView "{1}" contributes to the slot "{2}", whose name is not in PascalCase. |
Error | Rename the slot in PascalCase. |
| — | The partial template "{0}" of the UIView "{1}" is a standard partial template but defines the slot "{2}". ... |
Error | Set its type to SlotContribution, or remove Slot. |
| — | The partial template "{0}" of the UIView "{1}" is a standard partial template but defines the order {2}. ... |
Error | Remove Order, or set the type to SlotContribution. |
| — | The partial template "{0}" contributes to the slot "{1}", which no template of the UI view "{2}" declares. |
Error | Declare the slot with a <partial-template-slot name="{1}" /> node in the UI view, or fix the slot name. |
| — | The slot "{0}" is declared more than once in the UI view "{1}". |
Error | Keep a single <partial-template-slot /> node per slot name. |
| — | The slot "{0}" cannot be declared in the partial template "{1}", which itself contributes to a slot. |
Error | Declare the slot in the UI view template or in a standard partial template. |
| — | The slot "{0}" cannot be declared inside a repeat. |
Error | Move the node out of the repeat. |
| — | The "{0}" value of the "{1}" attribute on the "{2}" element is invalid because the name of a slot must be in PascalCase. |
Error | Rename the slot in PascalCase. |
| — | The "{0}" element is unexpected, it will be ignored. — partial-template-slot in a UI component template |
Error | Declare the slot in a UI view template. |
| — | The "{0}" partial template is a slot contribution: only its slot can insert it, not its name. ... — a partial-template node naming it |
Error | Remove the partial-template node, or set the type of the partial template to Standard. |
Style classes
| Code | Message | Level | Fix |
|---|---|---|---|
| — | Invalid CSS in {0}: {1} — {1} gives the cause, such as unbalanced brackets, a missing .{class} rule or !important |
Error | Fix the CSS of the Css target as the second part of the message says. |
| — | The name of the style class '{0}' is invalid: it must be in PascalCase, i.e. start with an uppercase letter and contain only letters and digits. |
Error | Rename the style class in PascalCase: its CSS class is the kebab-case form of its name. |
| — | The CSS class '{1}' of the style class '{0}' is also the CSS class of the style class '{2}': ... |
Error | Rename one of the style classes, so that their names give different CSS classes (UIView and UiView both give ui-view). |
| — | The name "{0}" is invalid: its CSS class "{1}" is reserved for the framework ... |
Error | Rename the style class, so that its CSS class is not neos and does not start with neos- or wj-. |
| — | A style class must have at least one target. |
Error | Add a target to the style class, a Css target for example. |
| — | The Neos target of {0} cannot be combined with another target. |
Error | Keep the Neos target alone, or remove it. |
| — | Invalid Neos target in {0}: {1} — {1} gives the cause, such as a directive or a value that is not allowed |
Error | Fix the directive as the second part of the message says. |
| — | The Neos target of {0} must have at least one directive. |
Error | Add a directive to the Neos target, or remove it. |
M0109 |
The color {0} of the directive {1} of {2} is not defined by the themes {3}. ... |
Warning | Define the color in the listed themes, or use a color that every enabled theme of the cluster has. A theme that overrides the directive in its own Neos target is checked against the color of its override instead. |
M0108 |
The color {0} of the directive {1} of {2} is a deprecated standard color: use {3} instead. |
Warning | Use the color given by the message. |
| — | The CSS target of {0} must have exactly one value, named '{1}'. |
Error | Give the Css target a single value with the name the message gives. |
| — | The content of the target is required. |
Error | Write the CSS of the Css target in its content value. |
| — | The theme '{0}' overrides the style class '{1}', which does not exist. |
Error | Fix the style class name, or remove the override from the theme. |
| — | The theme '{0}' overrides the style class '{1}' of the module '{2}', which is not a dependency of the module '{3}'. |
Error | Add the ModuleAssociation to the module of the style class. |
| — | The theme '{0}' overrides the style class '{1}', which is internal to the module '{2}' and cannot be overridden from the module '{3}'. |
Error | Grant access with InternalAccessGrantedTo, or make the style class Public. |
| — | The theme '{0}' overrides the {2} target of the style class '{1}', which does not define this target. |
Error | Add this target to the style class, or remove the override. |
Style classes in UI templates
The style:classes directive applies style classes to an element: each class name written in its value is checked.
| Code | Message | Level | Fix |
|---|---|---|---|
M0058 |
The "{0}" class of the "{1}" attribute on the "{2}" element is invalid because it seems that the style class does not exist. ... |
Warning | Fix the class name: the kebab-case form of the name of the style class (FeaturedCard gives featured-card). |
M0058 |
The "{0}" class of the "{1}" attribute on the "{2}" element references a style class that belongs to a module this template's module does not depend on. |
Warning | Add the ModuleAssociation to the module of the style class. |
| — | The "{0}" class of the "{1}" attribute on the "{2}" element references a style class that is Internal and not accessible from this template's module. |
Error | Grant access with InternalAccessGrantedTo, or make the style class Public. |
Constants in UI templates
| Code | Message | Level | Fix |
|---|---|---|---|
| — | The "{0}" value of the {1} on the "{2}" element is invalid because it seems that the constant does not exist. |
Error | Fix the @Constants.Class.Name reference — see Constants. |
| — | The "{0}" value of the {1} on the "{2}" element references a constant whose .NET data type is not a supported primitive type ... |
Error | Reference a constant of a primitive type. |
| — | The "{0}" value of the {1} on the "{2}" element references a constant whose constants static class has a Backend scope: ... |
Error | Change the Scope of the constants static class, or stop using it in the template. |
| — | The "{0}" value of the {1} on the "{2}" element references a constant whose value uses a C# syntax form that is not supported in a UI template ... |
Error | Write the value of the constant as a plain literal. |
M0058 |
The "{0}" value of the {1} on the "{2}" element references a constant that belongs to a module this template's module does not depend on. |
Warning | Add the ModuleAssociation, or reference a constant of a module already associated. |
| — | The "{0}" value of the {1} on the "{2}" element references a constant that is Internal and not accessible from this template's module. |
Error | Grant access with InternalAccessGrantedTo, or make the constants static class Public. |
Components and directives
| Code | Message | Level | Fix |
|---|---|---|---|
| — | The "{0}" value of the {1} on the "{2}" element is invalid because the referenced method must not be asynchronous. — customize-method-name |
Error | Make the customize method synchronous — see Button. |
| — | The "threshold" attribute on the "{0}" element requires the "viewport" attribute to be set to a real breakpoint tier ... |
Error | Set a viewport other than extrasmall, or remove threshold — see Grid layout. |
| — | The "{0}" and "{1}" directives can't be used together on the "{2}" element. — layout:rendered-size and event:resize, canvas:* and layout:align-self-* |
Error | Keep only one of the two directives. |
| — | The value of the {0} on the "{1}" element must be bound. — layout:rendered-size |
Error | Bind layout:rendered-size to a settable field or property. |
M0058 |
The "{0}" attribute on the "{1}" element is unexpected, it will be ignored. — a canvas:* directive outside a canvas-layout |
Warning | Remove the directive, or place the element directly in a canvas-layout. |
| — | The value of the "{0}" attribute on the "{1}" element must be bound, or a number (px) optionally followed by "%". |
Error | Give a number, optionally followed by % — see Canvas directives. |
| — | The "{0}" directive on the "{1}" element cannot be used with {2}: in a canvas-layout, the size of a stretched axis is given by ... |
Error | Remove layout:width or layout:height on the stretched axis. |
| — | A "repeat" element with the "virtual" attribute cannot be placed in a "canvas-layout" element: ... |
Error | Remove virtual from the repeat — see Canvas layout. |
| — | The value of the "{0}" attribute on the "{1}" element is not in the enumeration ({2}). — align-horizontal and align-vertical of canvas-layout |
Error | Use one of the values listed in the message. |
| — | Same as above — layout:align-self-horizontal="space-between" on a canvas-layout child |
Error | Use one of the values listed in the message. |
| — | Same as above — bar-style of splitter, style:border-style, style:overflow, style:text-transform, style:user-select |
Error | Use one of the values listed in the message. |
M0058 |
Handle attributes only apply when the "bar-style" attribute is "handle". The "{0}" attribute on the "{1}" element will be ignored. |
Warning | Set bar-style="handle" or remove the handle attributes — see Splitter. |
| — | The value of the "{0}" attribute on the "{1}" element must be bound, or one to four numbers separated by spaces, ... — style:border-width, style:hover-border-width |
Error | Give one to four non-negative numbers. |
| — | The value of the "{0}" attribute on the "{1}" element must be bound or a decimal number (e.g. "0.6"). — style:font-scale, style:scale, style:hover-scale |
Error | Give a non-negative decimal number. |
| — | The value of the "{0}" attribute on the "{1}" element must be bound or a decimal number between 0 and 1 (e.g. "0.6"). — style:opacity, style:hover-opacity |
Error | Give a number between 0 and 1. |
| — | The value of the "{0}" attribute ... must be a number. — style:rotate*, style:shadow-offset-*, style:shadow-spread and their hover- forms, style:letter-spacing |
Error | Give a unitless number. |
| — | The value of the "{0}" attribute on the "{1}" element must be bound or a non-negative number. — style:shadow-blur, style:hover-shadow-blur, transition:duration |
Error | Give a unitless number of at least 0. |
| — | The value of the "{0}" attribute on the "{1}" element must be bound or two numbers separated by a space, ... — style:translate |
Error | Give two numbers, each optionally followed by % — see Style directives. |
| — | The value of the "{0}" attribute on the "{1}" element is not in the enumeration ({2}). — side or align of a popover |
Error | Give one of the listed values — see Popover. |
| — | The value of the "{0}" attribute on the "{1}" element must be an integer. — side-offset or arrow-size of a popover, track-thickness, track-border-width, thumb-size or thumb-border-width of an input-slider-discrete |
Error | Give a whole number of pixels, or a bound value — see Popover and Input slider discrete. |
| — | The value of the {0} on the "{1}" element must be a boolean. — show-arrow of a popover or show-markers of an input-slider-discrete |
Error | Give true, false or a bound value — see Popover and Input slider discrete. |
| — | The value of the "{0}" attribute on the "{1}" element must be an integer greater than or equal to {2}. — track-thickness and thumb-size (at least 1), track-border-width and thumb-border-width (at least 0) of an input-slider-discrete |
Error | Give a whole number of pixels within the minimum, or a bound value — see Input slider discrete. |
Additional data
The AllowAdditionalData entity option and the AdditionalData:StorageMode configuration key, checked by neos generate.
| Code | Message | Level | Fix |
|---|---|---|---|
| — | The additional data storage mode '{0}' is invalid. Expected values are 'Json' or 'Eav' (configuration key 'AdditionalData:StorageMode'). |
Error | Set AdditionalData:StorageMode to Json or Eav. |
| — | The entity '{0}' already defines a property named '{1}', which is reserved for the storage of additional data in Json storage mode. ... |
Error | Rename the property, or use the Eav storage mode. |
| — | The entity view '{0}' already defines a property named '{1}', which is reserved for the additional data (custom fields) of its entity. ... |
Error | Rename the property of the view. |
| — | The table '{0}' already defines a column named '{1}', which is reserved for the storage of additional data. |
Error | Rename the column. |
| — | The entity '{0}' enables additional data, which the YAML persistence does not support: the values would not be stored. Use a database persistence. |
Error | Use a database persistence, or remove AllowAdditionalData from the entity. |
| — | The entity '{0}' inherits from '{1}' a property named '{2}', which is reserved for the storage of additional data in Json storage mode. ... |
Error | Rename the inherited property, or use the Eav storage mode. |
| — | The entity '{0}' and its base entity '{1}' both enable additional data. Enable it on one of them only. |
Error | Keep AllowAdditionalData on the base entity or on the derived entity, not on both. |
| — | The entity view '{0}' enables additional data, but the OData queries on its additional data fields ($filter, $orderby) cannot be generated: {1} |
Error | In Eav storage mode, give the entity an integer or text primary key. In Json storage mode, map the key properties of the view to scalar properties of the entity. Otherwise, remove AllowAdditionalData from the entity. |