The fields filterDeclaredFields sets aside, each with the scope its verdict is over:
every searchFields entry of a text descriptor — it ORs them, so one is dead only when no
layer in scope carries it —, and the field (and subField) of a descriptor that lists no
layer. proximity names no field.
⚠️ Not a runtime diagnostic: a page holds the layers of its active theme only, and « carried by
none » is a verdict over ALL of them. A caller that cannot read every layer in scope must say
the verdict is undecided, never that the field is missing.
The scoped fields, in declaration order; none when the filter is disabled.
Example
filterScopedFields({ enabled:true, fields: [{ id:"q", kind:"text", searchFields: ["properties.name", "properties.adresse"] }] }); // → two fields, each over every layer of the profile (`layers: null`)
The fields filterDeclaredFields sets aside, each with the scope its verdict is over: every
searchFieldsentry of atextdescriptor — it ORs them, so one is dead only when no layer in scope carries it —, and thefield(andsubField) of a descriptor that lists no layer.proximitynames no field.⚠️ Not a runtime diagnostic: a page holds the layers of its active theme only, and « carried by none » is a verdict over ALL of them. A caller that cannot read every layer in scope must say the verdict is undecided, never that the field is missing.