@lde/search 0.23.1 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/query.js CHANGED
@@ -1,5 +1,9 @@
1
- import { fieldNamed, filterOperatorFor, ID_FIELD, isoToUnixSeconds, } from './schema.js';
1
+ import { fieldNamed, filterOperatorFor, ID_FIELD, isoToUnixSeconds, nestedReferenceType, } from './schema.js';
2
2
  import { MAX_JOIN_DEPTH } from './join-graph.js';
3
+ /** Whether a criterion welds conditions to one entry ({@link WeldedCriterion}). */
4
+ export function isWelded(criterion) {
5
+ return 'entry' in criterion;
6
+ }
3
7
  // The kind→operator table lives with the field model in schema.ts (one source
4
8
  // for the query IR, the surfaces, the adapters AND declaration validation);
5
9
  // re-exported here so the query-IR module stays the natural import site.
@@ -50,6 +54,96 @@ export function isUnsatisfiable(query) {
50
54
  criterion.in.length === 0);
51
55
  });
52
56
  }
57
+ /**
58
+ * The checks every leaf criterion answers to, wherever it sits: the field is
59
+ * declared and `filterable` on the type it constrains, its operator matches
60
+ * that field's kind, and a `date` range's bounds are readable.
61
+ *
62
+ * Shared by an ordinary criterion and by each condition welded to an entry, so
63
+ * a welded condition is held to exactly the same rules – there is no second,
64
+ * weaker validator for the inside of an edge. `field` is the path to report
65
+ * under, which differs between the two.
66
+ */
67
+ function collectLeafIssues(criterion, constrained, field, issues) {
68
+ const declared = fieldNamed(constrained, criterion.field);
69
+ if (declared === undefined) {
70
+ issues.push({ part: 'where', field, reason: 'unknown-field' });
71
+ return;
72
+ }
73
+ if (declared.filterable !== true) {
74
+ issues.push({ part: 'where', field, reason: 'not-filterable' });
75
+ return;
76
+ }
77
+ if (filterOperatorFor(declared.kind) !== filterOperator(criterion)) {
78
+ issues.push({ part: 'where', field, reason: 'operator-mismatch' });
79
+ return;
80
+ }
81
+ if (declared.kind === 'date' && 'range' in criterion) {
82
+ // A `date` bound is ISO 8601 at the edge and Unix seconds in storage, so a
83
+ // bound the codec cannot read has nothing to compare against. Both bounds
84
+ // are checked, so a caller who wrote two bad ones is told about both
85
+ // instead of fixing one to be told about the other.
86
+ for (const bound of [criterion.range.min, criterion.range.max]) {
87
+ if (typeof bound === 'string' && isoToUnixSeconds(bound) === undefined) {
88
+ issues.push({
89
+ part: 'where',
90
+ field,
91
+ value: bound,
92
+ reason: 'unparseable-bound',
93
+ });
94
+ }
95
+ }
96
+ }
97
+ }
98
+ /**
99
+ * Resolve an {@link CriterionBase.on} path against the schema, classifying each
100
+ * hop by what the declaration says it is: a {@link ReferenceField.joinable}
101
+ * reference is a join, an inline reference is a nesting.
102
+ *
103
+ * **Nested hops must come last.** A join is a clause about another collection
104
+ * and a nesting is a clause about a field of this document, so a join can
105
+ * contain a nesting (`$people(…)` around `edge.role`) but a nesting cannot
106
+ * contain a join – there is no collection to address from inside an array
107
+ * element. Once inside a nesting, therefore, a joinable name is as unwalkable
108
+ * as an unknown one and both report `unknown-nesting`.
109
+ *
110
+ * Only join hops count against {@link MAX_JOIN_DEPTH}: the cap exists to bound
111
+ * round trips, and a nesting hop costs none.
112
+ */
113
+ export function resolvePath(searchType, path, schema, joins) {
114
+ const joinPath = [];
115
+ const nestedPath = [];
116
+ let current = searchType;
117
+ for (const name of path) {
118
+ const field = fieldNamed(current, name);
119
+ const nested = field === undefined ? undefined : nestedReferenceType(schema, field);
120
+ if (nested !== undefined) {
121
+ nestedPath.push(name);
122
+ current = nested;
123
+ continue;
124
+ }
125
+ if (nestedPath.length > 0) {
126
+ // Already inside a document, where the only hop that means anything is
127
+ // another nesting. A join addresses a collection and there is none to
128
+ // address from inside an array element, so a joinable name here is as
129
+ // unwalkable as an unknown one – one reason covers both.
130
+ return 'unknown-nesting';
131
+ }
132
+ // Checked as the budget is spent, not after the walk: a path over the cap
133
+ // is too deep whether or not its last hop would have resolved, and saying
134
+ // so is more use than reporting the hop that happened to fail first.
135
+ if (joinPath.length === MAX_JOIN_DEPTH) {
136
+ return 'join-too-deep';
137
+ }
138
+ const target = joins?.resolve(current, [name]);
139
+ if (target === undefined) {
140
+ return 'unknown-join';
141
+ }
142
+ joinPath.push(name);
143
+ current = target;
144
+ }
145
+ return { leafType: current, joinPath, nestedPath };
146
+ }
53
147
  /** The `field` a joined issue is reported under: the path and the leaf name
54
148
  * together, so a message says which hop and which field, not just which
55
149
  * field. `dataset.publisher.id` reads the way the criterion was written. */
@@ -107,23 +201,29 @@ export function validateQuery(query, searchType, schema, joins) {
107
201
  // supplied none cannot serve a joined criterion at all.
108
202
  const on = criterion.on ?? [];
109
203
  let constrained = searchType;
204
+ let nested = false;
110
205
  if (on.length > 0) {
111
- if (on.length > MAX_JOIN_DEPTH) {
112
- issues.push({ part: 'where', field, reason: 'join-too-deep' });
206
+ const resolved = resolvePath(searchType, on, schema, joins);
207
+ if (typeof resolved === 'string') {
208
+ issues.push({ part: 'where', field, reason: resolved });
113
209
  continue;
114
210
  }
115
- const target = joins?.resolve(searchType, on);
116
- if (target === undefined) {
117
- issues.push({ part: 'where', field, reason: 'unknown-join' });
118
- continue;
119
- }
120
- constrained = target;
211
+ constrained = resolved.leafType;
212
+ nested = resolved.nestedPath.length > 0;
121
213
  }
122
214
  // `id` is filterable on every type without being declared by any: it is
123
215
  // the document’s IRI, so the lookup exists wherever documents do.
124
216
  // Membership only – an IRI has no range and no truth value.
125
217
  if (name === ID_FIELD) {
126
- if (filterOperator(criterion) !== 'in') {
218
+ // …but only where documents do. An entry inside a nested reference is
219
+ // read, not addressed: it has no document key, and the `id` a `local`
220
+ // lookup stores is the ENDPOINT’s, which the identity companion is
221
+ // what filters on. Accepting it here would compile to the ROOT
222
+ // document’s `id` and silently answer a different question.
223
+ if (nested) {
224
+ issues.push({ part: 'where', field, reason: 'unknown-nesting' });
225
+ }
226
+ else if (filterOperator(criterion) !== 'in') {
127
227
  issues.push({
128
228
  part: 'where',
129
229
  field,
@@ -133,36 +233,23 @@ export function validateQuery(query, searchType, schema, joins) {
133
233
  continue;
134
234
  }
135
235
  const declared = fieldNamed(constrained, name);
136
- if (declared === undefined) {
137
- issues.push({ part: 'where', field, reason: 'unknown-field' });
138
- }
139
- else if (declared.filterable !== true) {
140
- issues.push({ part: 'where', field, reason: 'not-filterable' });
141
- }
142
- else if (filterOperatorFor(declared.kind) !== filterOperator(criterion)) {
143
- issues.push({
144
- part: 'where',
145
- field,
146
- reason: 'operator-mismatch',
147
- });
148
- }
149
- else if (declared.kind === 'date' && 'range' in criterion) {
150
- // A `date` bound is ISO 8601 at the edge and Unix seconds in storage,
151
- // so a bound the codec cannot read has nothing to compare against.
152
- // Both bounds are checked, so a caller who wrote two bad ones is told
153
- // about both instead of fixing one to be told about the other.
154
- for (const bound of [criterion.range.min, criterion.range.max]) {
155
- if (typeof bound === 'string' &&
156
- isoToUnixSeconds(bound) === undefined) {
157
- issues.push({
158
- part: 'where',
159
- field,
160
- value: bound,
161
- reason: 'unparseable-bound',
162
- });
163
- }
236
+ // A welded criterion names the NESTED REFERENCE and constrains fields of
237
+ // the type it nests, so each condition is checked one level in – against
238
+ // that reference type, and reported under the path a consumer wrote.
239
+ if (isWelded(criterion)) {
240
+ const entryType = declared === undefined
241
+ ? undefined
242
+ : nestedReferenceType(schema, declared);
243
+ if (entryType === undefined) {
244
+ issues.push({ part: 'where', field, reason: 'not-weldable' });
245
+ continue;
246
+ }
247
+ for (const welded of criterion.entry) {
248
+ collectLeafIssues(welded, entryType, [...on, name, welded.field].join('.'), issues);
164
249
  }
250
+ continue;
165
251
  }
252
+ collectLeafIssues(criterion, constrained, field, issues);
166
253
  }
167
254
  }
168
255
  for (const name of query.facets) {
@@ -188,12 +275,19 @@ export function validateQuery(query, searchType, schema, joins) {
188
275
  return issues;
189
276
  }
190
277
  /**
191
- * Walk a projection level by level: each key names a `lookup` reference on the
192
- * type that level belongs to, each `fields` entry an `output` field of the
193
- * target it resolves against, and each nested `resolve` repeats against that
194
- * target. A level whose reference is unresolvable stops there – its subtree
195
- * belongs to a target that does not exist, so reporting it too would bury the
196
- * one mistake under its consequences.
278
+ * Walk a projection level by level. A level is one of two things, and the
279
+ * difference is what it costs rather than how it is written:
280
+ *
281
+ * - a **lookup** level names a `lookup` reference, resolves against that
282
+ * target’s collection, and costs one batched round trip;
283
+ * - a **nested** level names an inline reference and descends into its entries,
284
+ * costing nothing – the entries are already in the hit. Its `fields` name
285
+ * nothing to fetch, because the entries carry what they carry; only the
286
+ * levels *below* it can ask for anything.
287
+ *
288
+ * A level whose reference is unresolvable stops there: its subtree belongs to a
289
+ * target that does not exist, so reporting it too would bury the one mistake
290
+ * under its consequences.
197
291
  */
198
292
  function collectProjectionIssues(projection, searchType, schema, issues) {
199
293
  for (const [name, level] of Object.entries(projection ?? {})) {
@@ -202,6 +296,13 @@ function collectProjectionIssues(projection, searchType, schema, issues) {
202
296
  issues.push({ part: 'resolve', field: name, reason: 'unknown-field' });
203
297
  continue;
204
298
  }
299
+ // Descending into an inline reference is free, so a nested level is valid
300
+ // wherever the entries exist – what it is *for* is the lookup below it.
301
+ const nested = nestedReferenceType(schema, field);
302
+ if (nested !== undefined) {
303
+ collectProjectionIssues(level.resolve, nested, schema, issues);
304
+ continue;
305
+ }
205
306
  if (field.kind !== 'reference' || field.ref?.strategy !== 'lookup') {
206
307
  issues.push({ part: 'resolve', field: name, reason: 'not-resolvable' });
207
308
  continue;
package/dist/schema.d.ts CHANGED
@@ -186,7 +186,10 @@ export interface KeywordField extends SearchFieldBase, Searchable {
186
186
  * `‹Target›Reference`, since type names must be unique).
187
187
  * - `inline` carries fields denormalised from the **parent’s** RDF framing at
188
188
  * index time, shaped by the declared {@link ReferenceType} `typeName` names –
189
- * so its typeName can never name a root type.
189
+ * so its typeName can never name a root type. Pointed at a node the graph put
190
+ * *between* subject and endpoint, the nested node is the **edge**, and
191
+ * {@link ReferenceStrategy.identity `identity`} names the nested reference
192
+ * that carries the endpoint.
190
193
  */
191
194
  export type ReferenceStrategy = {
192
195
  readonly strategy: 'idOnly';
@@ -198,12 +201,67 @@ export type ReferenceStrategy = {
198
201
  * that belong to no such set. */
199
202
  readonly typeName?: string;
200
203
  readonly target?: never;
204
+ readonly identity?: never;
201
205
  } | {
202
206
  readonly strategy: 'lookup';
203
207
  readonly target: string;
208
+ /**
209
+ * Also project the target’s **own fields from this document’s frame**, so
210
+ * the reference stores what the referring document states about the
211
+ * referent alongside the id – and the resolved document overlays it at
212
+ * query time rather than being the only source of it.
213
+ *
214
+ * What it buys is one field where there were two. A referent the graph
215
+ * names inline – a literal, a blank node – has no id, so a plain
216
+ * reference stores nothing for it and a deployment needs a second, text
217
+ * field beside this one to show it at all; the two are then parallel
218
+ * arrays that cannot be paired. With `local`, an unidentified referent is
219
+ * an entry like any other, minus its `id`.
220
+ *
221
+ * Stored **unconditionally**, not only where there is no id, because the
222
+ * two failures differ: at index time the question is *is this referent
223
+ * identified*, at query time it is *is that document indexed*. A referent
224
+ * whose document is missing from the target’s collection therefore still
225
+ * carries what this document said about it, instead of degrading to a
226
+ * bare IRI.
227
+ *
228
+ * Opt-in, because it changes what the field stores – a nested object
229
+ * rather than an id – and because framing must reach one step further to
230
+ * read the target’s fields off the referent
231
+ * ({@link inlineFramingDepth}). A schema that declares none pays neither.
232
+ */
233
+ readonly local?: boolean;
234
+ readonly identity?: never;
204
235
  } | {
205
236
  readonly strategy: 'inline';
206
237
  readonly typeName: string;
238
+ /**
239
+ * The `name` of a **nested reference field** of this reference type whose
240
+ * ids identify each entry’s endpoint – required to declare `filterable`
241
+ * or `facetable` on the inline reference itself, and meaningless without
242
+ * one ({@link searchSchema} enforces both directions).
243
+ *
244
+ * A nested object is not something an engine can filter or facet, so an
245
+ * inline reference that opts into either fans out an **identity
246
+ * companion**: a flat physical field holding the ids its entries
247
+ * reference ({@link physicalFields}), which the engine filters and facets
248
+ * in the nested object’s place. The same mechanism `${name}_facet`
249
+ * already uses – one logical field, two physical fields, one holding a
250
+ * derived subset of the other.
251
+ *
252
+ * Declared rather than inferred, because a reference type may carry more
253
+ * than one nested reference and only the schema author knows which one
254
+ * identifies the edge. Naming it is also what gives the companion a
255
+ * **target**: the named field’s own `target` is the Root Type whose keys
256
+ * these ids are, which is what a facet policy is inherited through
257
+ * ({@link inheritedFacetKeys}) and what types the filter at the surface.
258
+ *
259
+ * The companion holds ids only, so a facet over it is exact and
260
+ * identity-keyed: an entry whose endpoint the graph named inline – a
261
+ * literal, a blank node – contributes no bucket rather than a bucket
262
+ * keyed on a label, so two endpoints that share a label are never merged.
263
+ */
264
+ readonly identity?: string;
207
265
  };
208
266
  /** An IRI-valued reference to another entity, resolved at the surface. */
209
267
  export interface ReferenceField extends SearchFieldBase, Searchable {
@@ -371,6 +429,40 @@ export interface KeyField {
371
429
  */
372
430
  readonly pick?: (candidates: readonly string[]) => string | undefined;
373
431
  }
432
+ /**
433
+ * A {@link RootType}’s **facet policy**: which of its documents get a facet
434
+ * bucket, as a predicate over the document key. Declared once, on the type,
435
+ * and inherited by every facetable reference that *names* the type – a
436
+ * `lookup`’s `target`, an `idOnly`’s `labelSource` ({@link labelSourceNameOf})
437
+ * – because *which of a type’s ids deserve a bucket* is a fact about the type,
438
+ * not about each field that points at it. A per-field policy would be one rule
439
+ * declared N times, and forgetting one would silently reintroduce the buckets
440
+ * on that facet alone.
441
+ *
442
+ * Only the facet narrows. The referring field keeps **every** value: a
443
+ * document still displays the excluded referent, and a `where` filter on its
444
+ * IRI still matches exactly. *Facets are discovery, filters are exact.*
445
+ *
446
+ * The mechanism is a second physical field per inheriting facet –
447
+ * `${name}_facet`, holding the admitted subset ({@link physicalFields}) – which
448
+ * the engine facets instead of the field itself, so the facet is exact under
449
+ * any bucket cap: the engine never sees an excluded value. Declaring a policy
450
+ * therefore changes the collection definition of every type that references
451
+ * this one; an engine adapter that reuses a live collection must notice.
452
+ *
453
+ * **The failure mode is silence.** A predicate that admits none of a type’s
454
+ * keys – a type whose alignments are not what it tests for, or stored values
455
+ * that are still node IRIs because the type was keyed after its references
456
+ * were indexed – empties every facet referencing the type without an error.
457
+ * Give each type its own predicate rather than reuse another’s, and key a type
458
+ * ({@link RootType.key}) before declaring a policy over its keys.
459
+ */
460
+ export interface FacetKeys {
461
+ /** Whether a document key gets a bucket. Must be **pure**: it is applied per
462
+ * document at projection time, so an impure one would bucket one document
463
+ * and not its twin. */
464
+ readonly only: (id: string) => boolean;
465
+ }
374
466
  /**
375
467
  * A **Root Type**: a {@link SearchType} that is indexed. It declares a `class`,
376
468
  * roots are selected for it, a Writer owns a collection for it, and the
@@ -386,6 +478,10 @@ export interface RootType extends SearchTypeBase {
386
478
  /** Which declared field holds this type’s document key, when it is not the
387
479
  * node’s own IRI ({@link KeyField}, {@link documentKeyOf}). */
388
480
  readonly key?: KeyField;
481
+ /** Which of this type’s documents get a facet bucket, on every facetable
482
+ * reference that names this type ({@link FacetKeys}). Unset, every
483
+ * document does. */
484
+ readonly facetKeys?: FacetKeys;
389
485
  }
390
486
  /**
391
487
  * A **Reference Type**: a {@link SearchType} reached only through an
@@ -407,6 +503,9 @@ export interface ReferenceType extends SearchTypeBase {
407
503
  * referrer rather than keyed in a collection of its own. `never` for the
408
504
  * same reason `class` is. */
409
505
  readonly key?: never;
506
+ /** Nothing references a Reference Type by id, so there is no facet for a
507
+ * policy to narrow. `never` for the same reason `key` is. */
508
+ readonly facetKeys?: never;
410
509
  }
411
510
  /**
412
511
  * One type’s complete search declaration: its logical API `name`, the queryable
@@ -499,14 +598,21 @@ export declare function isInlineReference(field: SearchField): field is Referenc
499
598
  };
500
599
  };
501
600
  /**
502
- * The {@link ReferenceType} a **surfaced** inline reference nests – an
503
- * `output` inline reference’s referent shape – or `undefined` for every other
504
- * field. The one predicate the collection definition, result reconstruction and
505
- * the API surfaces share, so they cannot disagree about which fields carry a
506
- * nested Search Document and which carry a bare IRI: an inline reference
507
- * declaring no Role is a reading device, pruned before the writer
508
- * ({@link isInternalField}), and a `labelOnly`/`idOnly` reference stays an id
509
- * (plus a resolved label).
601
+ * The {@link ReferenceType} an inline reference **stores entries of**, or
602
+ * `undefined` for every other field. The one predicate the collection
603
+ * definition, result reconstruction and the API surfaces share, so they cannot
604
+ * disagree about which fields carry nested Search Documents and which carry a
605
+ * bare IRI: a `labelOnly`/`idOnly` reference stays an id (plus a resolved
606
+ * label).
607
+ *
608
+ * The line is *any Role at all*, not `output`: an inline reference declaring no
609
+ * Role is a reading device, pruned before the writer
610
+ * ({@link isInternalField}), while one that is `filterable` or `facetable`
611
+ * without being `output` still has its entries stored – they are what a nested
612
+ * filter constrains and what the
613
+ * {@link ReferenceStrategy.identity identity companion} is harvested from. Only
614
+ * `output` decides whether they are *surfaced*, which is the surfaces’ own
615
+ * question ({@link outputFields}).
510
616
  *
511
617
  * A schema built by {@link searchSchema} always resolves the reference type of
512
618
  * its own types; `undefined` for a type declared against another schema.
@@ -527,12 +633,27 @@ export declare function nestedReferenceType(schema: SearchSchema, field: SearchF
527
633
  */
528
634
  export declare function nestedFieldName(parent: string, name: string): string;
529
635
  /**
530
- * The framing depth a Root Type needs: how many hops the inline reference graph
531
- * reaches from it (`Dataset → Subset → Measurement` is two), floored at one so
532
- * the existing single-hop embed for non-inline references is preserved. Depth is
533
- * a property of the declaration, bounded because {@link searchSchema} rejects
534
- * inline cycles – never a knob or a constant. Framing bounded per batch keeps
535
- * memory bounded by the unit of work (ADR 12), not the graph.
636
+ * The framing depth a Root Type needs: how far the **furthest value it declares**
637
+ * lies from it, in hops. Depth is a property of the declaration, bounded because
638
+ * {@link searchSchema} rejects inline cycles – never a knob or a constant.
639
+ * Framing bounded per batch keeps memory bounded by the unit of work (ADR 12),
640
+ * not the graph.
641
+ *
642
+ * Reach is measured in hops and depth in *intermediate* nodes, so depth is one
643
+ * less: reading `<a>/<b>` off a root needs the root’s own triples plus those of
644
+ * the node `<a>` reaches, which is depth 1. Floored at one, preserving the
645
+ * single-hop embed a non-inline reference has always had.
646
+ *
647
+ * Three things add hops, and counting only the first is what let a value fall
648
+ * outside the frame and be stored as absent, in silence:
649
+ *
650
+ * - **a property path**, which may traverse (`<a>/<b>` is two hops);
651
+ * - **an inline reference**, whose referent’s own fields reach on from wherever
652
+ * its path landed;
653
+ * - **a reference naming a keyed target**, whose document key is read one hop
654
+ * past the referent (ADR 22) – so a reference reached through an inline
655
+ * chain needs its key hop inside the frame too, or it stores an un-keyed id
656
+ * that matches nothing in the target’s collection.
536
657
  */
537
658
  export declare function inlineFramingDepth(schema: SearchSchema, searchType: SearchType): number;
538
659
  /** The label field name a type falls back to when it declares no
@@ -565,7 +686,7 @@ export declare function labelSourceNameOf(field: ReferenceField): string | undef
565
686
  */
566
687
  export interface SearchTypeIssue {
567
688
  readonly field: string;
568
- readonly reason: 'duplicate-field-name' | 'invalid-field-name' | 'unknown-kind' | 'invalid-locale' | 'missing-ref' | 'missing-ref-type-name' | 'ref-not-allowed' | 'text-requires-locales' | 'locales-not-allowed' | 'facet-ranges-not-allowed' | 'searchable-not-allowed' | 'transform-not-allowed' | 'derive-with-path' | 'from-not-allowed' | 'from-with-path' | 'from-with-derive' | 'from-with-inline-ref' | 'unknown-projection-value' | 'duplicate-projection-value' | 'text-not-filterable' | 'text-not-facetable' | 'joinable-not-allowed' | 'joinable-without-label-source' | 'joinable-with-inline-ref' | 'reserved-field-name' | 'key-field-unknown' | 'key-field-not-reference' | 'key-field-without-path' | 'key-field-not-array' | 'key-field-inline' | 'key-pick-not-a-function' | 'key-not-allowed';
689
+ readonly reason: 'duplicate-field-name' | 'invalid-field-name' | 'unknown-kind' | 'invalid-locale' | 'missing-ref' | 'missing-ref-type-name' | 'ref-not-allowed' | 'text-requires-locales' | 'locales-not-allowed' | 'facet-ranges-not-allowed' | 'searchable-not-allowed' | 'transform-not-allowed' | 'derive-with-path' | 'from-not-allowed' | 'from-with-path' | 'from-with-derive' | 'from-with-inline-ref' | 'unknown-projection-value' | 'duplicate-projection-value' | 'text-not-filterable' | 'text-not-facetable' | 'joinable-not-allowed' | 'joinable-without-label-source' | 'joinable-with-inline-ref' | 'reserved-field-name' | 'key-field-unknown' | 'key-field-not-reference' | 'key-field-without-path' | 'key-field-not-array' | 'key-field-inline' | 'key-pick-not-a-function' | 'key-not-allowed' | 'facet-keys-only-not-a-function' | 'facet-keys-not-allowed';
569
690
  }
570
691
  /**
571
692
  * The reserved logical name of a document’s IRI – the one field every indexed
@@ -638,7 +759,10 @@ export declare const OR_KEY = "or";
638
759
  * the dataset off a declaration no rule picks between;
639
760
  * - a {@link RootType.key} names a declared, `path`-bearing, `array`,
640
761
  * non-`inline` `reference` field of this type, and its `pick` is a function
641
- * ({@link keyIssues}); a {@link ReferenceType} declares no key at all.
762
+ * ({@link keyIssues}); a {@link ReferenceType} declares no key at all;
763
+ * - a {@link RootType.facetKeys} policy’s `only` is a function
764
+ * ({@link facetKeysIssues}); a {@link ReferenceType} declares no policy at
765
+ * all.
642
766
  *
643
767
  * Pure and total: returns every issue rather than throwing;
644
768
  * {@link assertValidSearchType} is the throwing entry point.
@@ -667,7 +791,56 @@ export interface PhysicalFields {
667
791
  /** Per-locale folded sort keys `${name}_sort_${locale}` (localized text,
668
792
  * `sortable`); a non-localized field sorts on its own `name` field. */
669
793
  readonly sort: readonly string[];
794
+ /** The field a facet on this field reads, when `facetable`: the field’s own
795
+ * `name`, or the `${name}_facet` companion holding the subset its target’s
796
+ * {@link FacetKeys facet policy} admits. `undefined` for a field that is
797
+ * not facetable. */
798
+ readonly facet: string | undefined;
799
+ /**
800
+ * The **identity companion** an inline reference filters and facets through:
801
+ * `${name}_id`, holding the ids its entries reference
802
+ * ({@link ReferenceStrategy.identity}). `undefined` for every other field –
803
+ * an ordinary field filters on its own `name`.
804
+ *
805
+ * A nested object is not a value an engine filters or facets, so this is the
806
+ * flat field it filters and facets in its place. The logical field keeps one
807
+ * name at the surface; only the physical fanout knows there are two.
808
+ */
809
+ readonly identity: string | undefined;
670
810
  }
811
+ /** The physical name of an inline reference’s
812
+ * {@link ReferenceStrategy.identity identity companion}. */
813
+ export declare function identityFieldName(name: string): string;
814
+ /**
815
+ * The Root Type whose labels a reference’s **facet buckets** read – its own
816
+ * label source, or, for an inline reference, the one its
817
+ * {@link ReferenceStrategy.identity identity companion} points at.
818
+ *
819
+ * The same one-level-in reading {@link inheritedFacetKeys} makes, and for the
820
+ * same reason: the companion holds that field’s ids, so the type that names
821
+ * those ids is the type that can label them. Kept together with it so a facet
822
+ * cannot inherit a policy from one type and its labels from another – or, as
823
+ * happened first, inherit the policy and no labels at all.
824
+ */
825
+ export declare function labelTargetNameOf(field: SearchField, schema: SearchSchema | undefined): string | undefined;
826
+ /**
827
+ * The Root Type a {@link ReferenceStrategy.local local} lookup projects its
828
+ * referents through, or `undefined` for every other field. Such a reference
829
+ * stores nested documents shaped by the **target’s own declaration** – so it
830
+ * needs no reference type of its own, and reconstructs through the same path a
831
+ * resolved referent does.
832
+ */
833
+ export declare function localLookupTypeOf(field: SearchField, schema: SearchSchema | undefined): RootType | undefined;
834
+ /**
835
+ * The nested reference an inline reference’s
836
+ * {@link ReferenceStrategy.identity identity companion} harvests, or
837
+ * `undefined` where the field declares none (or the schema cannot resolve its
838
+ * reference type). The one reading of *which nested field identifies the edge*,
839
+ * so the projection (which harvests it), {@link inheritedFacetKeys} (which
840
+ * reads its target’s facet policy) and an adapter’s filter compiler cannot
841
+ * resolve it differently.
842
+ */
843
+ export declare function identityFieldOf(field: SearchField, schema: SearchSchema | undefined): ReferenceField | undefined;
671
844
  /**
672
845
  * The display fields of a localized `text` field are pattern-based, not
673
846
  * enumerated per declared locale: projection stores `${name}_${lang}` for
@@ -851,9 +1024,36 @@ export declare function isoToUnixSeconds(iso: string): number | undefined;
851
1024
  export declare function unixSecondsToIso(seconds: number): string;
852
1025
  /**
853
1026
  * Derive the **indexed** physical engine field names a declaration produces:
854
- * the per-locale `search`/`sort` fanout. A localized `text` field’s display
855
- * fields are pattern-based and not enumerated here – see {@link displayFieldName}
856
- * and its siblings.
1027
+ * the per-locale `search`/`sort` fanout, and the field a `facet` reads. A
1028
+ * localized `text` field’s display fields are pattern-based and not enumerated
1029
+ * here – see {@link displayFieldName} and its siblings.
1030
+ *
1031
+ * The facet is the one member that depends on more than the declaration: a
1032
+ * facetable reference whose target declares a {@link FacetKeys facet policy}
1033
+ * facets a `${name}_facet` companion rather than itself, and only the `schema`
1034
+ * can resolve that target ({@link inheritedFacetKeys}). Without one the field
1035
+ * facets on its own name – the same reading the projection makes without a
1036
+ * schema, where it cannot re-key a reference either.
1037
+ */
1038
+ export declare function physicalFields(field: SearchField, schema?: SearchSchema): PhysicalFields;
1039
+ /**
1040
+ * The {@link FacetKeys facet policy} a field inherits: the `facetKeys` of the
1041
+ * Root Type it names ({@link labelSourceNameOf}), when the field is a facetable
1042
+ * reference and the schema resolves that type. The boundary is *naming the
1043
+ * target* – the same line along which a reference is re-keyed and a join is
1044
+ * drawn – so a reference that names no type inherits nothing, whatever type
1045
+ * its values happen to point at; and a `derive`d reference, which produces its
1046
+ * own values rather than reading a referent, is re-keyed by nothing and so
1047
+ * narrowed by nothing either. The one reading the projection (which writes the
1048
+ * companion) and {@link physicalFields} (which names it) share.
1049
+ *
1050
+ * An **inline** reference names its target one level in, through the nested
1051
+ * reference its {@link ReferenceStrategy.identity identity companion} harvests
1052
+ * ({@link identityFieldOf}). The boundary is the same one: the companion holds
1053
+ * that field’s ids, so the policy that narrows a facet over those ids is the
1054
+ * policy of the type that field names. Reading it through the nested field
1055
+ * rather than declaring it twice is what keeps *which of a type’s ids deserve
1056
+ * a bucket* a fact about the type.
857
1057
  */
858
- export declare function physicalFields(field: SearchField): PhysicalFields;
1058
+ export declare function inheritedFacetKeys(field: SearchField, schema: SearchSchema | undefined): FacetKeys | undefined;
859
1059
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}