@haddowg/json-api-client 1.1.0 → 1.2.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.
@@ -64,7 +64,7 @@ interface RelationDescriptor {
64
64
  */
65
65
  countable?: CountableDescriptor;
66
66
  /**
67
- * The paginator kind this relation's OWN related/relationship endpoints advertise
67
+ * The paginator this relation's OWN related/relationship endpoints advertise
68
68
  * (`GET /{type}/{id}/{rel}` / `.../relationships/{rel}`), when it DIVERGES from the related
69
69
  * type's collection-level {@link ResourceDescriptor.paginator}. A related endpoint may paginate
70
70
  * differently than the related type's own collection (e.g. a cursor-paginated related to-many
@@ -72,9 +72,37 @@ interface RelationDescriptor {
72
72
  * related/embedded to-many array's `$page.kind` from this per-relation value first, falling back
73
73
  * to the related type's collection paginator (D6a). Absent when the two agree (the common case).
74
74
  */
75
- paginator?: PaginatorKind;
75
+ paginator?: PaginatorDescriptor;
76
76
  }
77
- type PaginatorKind = 'page' | 'offset' | 'cursor' | 'none';
77
+ /** A built-in pagination strategy. */
78
+ type PaginatorStrategy = 'page' | 'offset' | 'cursor' | 'fixed';
79
+ /** The strategy that answers a read, or `none` for an unpaginated endpoint. */
80
+ type PaginatorKind = PaginatorStrategy | 'none';
81
+ /**
82
+ * A role a page parameter fills. `page`: number, size; `offset`: offset, limit; `cursor`: after,
83
+ * before, size; `fixed`: number.
84
+ */
85
+ type PaginatorRole = 'number' | 'size' | 'offset' | 'limit' | 'after' | 'before';
86
+ /** A strategy whose roles are filled by renamed wire keys, e.g. `{ number: 'p', size: 'size' }`. */
87
+ interface StrategyDescriptor {
88
+ strategy: PaginatorStrategy;
89
+ keys: Readonly<Partial<Record<PaginatorRole, string>>>;
90
+ }
91
+ /**
92
+ * A MultiPaginator menu: the client picks an arm by its `kind` (sent as `page[kind]`), and the
93
+ * server answers with `default` when the request names none. Arm keys are the `kind` values.
94
+ */
95
+ interface MenuDescriptor {
96
+ strategy: 'multi';
97
+ default: string;
98
+ arms: Readonly<Record<string, PaginatorStrategy | StrategyDescriptor>>;
99
+ }
100
+ /**
101
+ * How an endpoint paginates. A bare kind uses the canonical wire keys (`page[number]`,
102
+ * `page[size]`, ...); a {@link StrategyDescriptor} names renamed keys; a {@link MenuDescriptor}
103
+ * offers several strategies.
104
+ */
105
+ type PaginatorDescriptor = PaginatorKind | StrategyDescriptor | MenuDescriptor;
78
106
  type ClientIdPolicy = 'forbidden' | 'optional' | 'required';
79
107
  /** Where a custom action is invoked: collection-scoped (`/{type}/-actions/{name}`) or resource-scoped (`/{type}/{id}/-actions/{name}`). */
80
108
  type ActionScope = 'collection' | 'resource';
@@ -145,7 +173,7 @@ interface ResourceDescriptor {
145
173
  relations: Readonly<Record<string, RelationDescriptor>>;
146
174
  /** Per-operation path templates, e.g. `{ fetchOne: '/albums/{id}' }`. */
147
175
  paths: Readonly<Record<string, string>>;
148
- paginator: PaginatorKind;
176
+ paginator: PaginatorDescriptor;
149
177
  clientId: ClientIdPolicy;
150
178
  /**
151
179
  * The `withCount` count tokens + negotiation profile for this type's read endpoints.
@@ -187,6 +215,168 @@ interface AtomicDescriptor {
187
215
  path: string;
188
216
  }
189
217
  //#endregion
218
+ //#region src/pagination.d.ts
219
+ /** The wire key for each role when the server keeps the default names. */
220
+ declare const CANONICAL_PAGE_KEYS: {
221
+ readonly page: {
222
+ readonly number: "number";
223
+ readonly size: "size";
224
+ };
225
+ readonly offset: {
226
+ readonly offset: "offset";
227
+ readonly limit: "limit";
228
+ };
229
+ readonly cursor: {
230
+ readonly after: "after";
231
+ readonly before: "before";
232
+ readonly size: "size";
233
+ };
234
+ readonly fixed: {
235
+ readonly number: "number";
236
+ };
237
+ readonly none: {};
238
+ };
239
+ /** Role -> wire key for the strategy that answered. */
240
+ type PageKeys = Readonly<Partial<Record<PaginatorRole, string>>>;
241
+ /** The strategy that answers one read, with its wire keys and, for a menu pick, the arm's `kind`. */
242
+ interface ResolvedPaginator {
243
+ kind: PaginatorKind;
244
+ keys: PageKeys;
245
+ /** The menu arm the request picked with `page[kind]`. Absent when it picked none (the default). */
246
+ arm?: string;
247
+ }
248
+ /**
249
+ * Resolve the strategy that answers a read from the endpoint's paginator and the `page` the
250
+ * request sends. A menu answers with the arm named by `page.kind`, else its `default`.
251
+ */
252
+ declare function resolvePaginator(paginator: PaginatorDescriptor | undefined, page?: Readonly<Record<string, unknown>>): ResolvedPaginator;
253
+ /** Navigation links by relation (`first`/`prev`/`next`/`last`), when present. */
254
+ interface PageLinks {
255
+ first?: string;
256
+ prev?: string;
257
+ next?: string;
258
+ last?: string;
259
+ }
260
+ /** Normalised pagination state on a collection, as the runtime builds it; count-free-safe. */
261
+ interface Page {
262
+ kind: PaginatorKind;
263
+ /** Role -> wire key for the strategy that answered. */
264
+ keys: PageKeys;
265
+ /** The menu arm the request picked with `page[kind]`, when it picked one. */
266
+ arm?: string;
267
+ /** The raw `meta.page` block, when present (shape varies by kind). */
268
+ meta?: Record<string, unknown>;
269
+ links: PageLinks;
270
+ }
271
+ /**
272
+ * The `meta.page` block each built-in strategy renders. `total`/`lastPage` (and `to` on an empty
273
+ * page) are absent when the server does not count.
274
+ */
275
+ type PageMeta<K extends PaginatorKind> = K extends 'page' ? {
276
+ currentPage: number;
277
+ perPage: number;
278
+ from: number;
279
+ to?: number;
280
+ total?: number;
281
+ lastPage?: number;
282
+ } : K extends 'fixed' ? {
283
+ currentPage: number;
284
+ total?: number;
285
+ lastPage?: number;
286
+ } : K extends 'offset' ? {
287
+ offset: number;
288
+ limit: number;
289
+ from: number;
290
+ to?: number;
291
+ total?: number;
292
+ } : K extends 'cursor' ? {
293
+ perPage: number;
294
+ from?: string;
295
+ to?: string;
296
+ hasMore: boolean;
297
+ } : Record<string, unknown>;
298
+ /** `$page` typed by the strategy `K` that answers, its wire keys and the picked menu arm. */
299
+ type TypedPage<K extends PaginatorKind, Keys extends PageKeys, Arm extends string | undefined = undefined> = {
300
+ kind: K;
301
+ keys: Keys;
302
+ meta?: PageMeta<K>;
303
+ links: PageLinks;
304
+ } & (Arm extends string ? {
305
+ arm: Arm;
306
+ } : {
307
+ arm?: never;
308
+ });
309
+ /** A non-menu paginator entry as `{ strategy, keys }` (a bare kind takes the canonical keys). */
310
+ type StrategyOf<P> = P extends PaginatorKind ? {
311
+ strategy: P;
312
+ keys: (typeof CANONICAL_PAGE_KEYS)[P];
313
+ } : P extends StrategyDescriptor ? P : never;
314
+ /** Cursors are opaque strings; every other role is a count. */
315
+ type RoleValue<R> = R extends 'after' | 'before' ? string : number;
316
+ /** The page members one strategy accepts, keyed by their wire names. */
317
+ type StrategyParams<S> = S extends {
318
+ keys: infer K;
319
+ } ? { -readonly [R in keyof K as K[R] extends string ? K[R] : never]?: RoleValue<R> } : never;
320
+ /** True when `P` is the loose `PaginatorDescriptor` union rather than a generated literal. */
321
+ type IsLoose<P> = [PaginatorKind] extends [P] ? true : false;
322
+ type ArmName<M extends MenuDescriptor> = Extract<keyof M['arms'], string>;
323
+ type ArmParams<M extends MenuDescriptor, A> = A extends ArmName<M> ? {
324
+ kind: A;
325
+ } & StrategyParams<StrategyOf<M['arms'][A]>> : never;
326
+ type KeysOfUnion<U> = U extends unknown ? keyof U : never;
327
+ /**
328
+ * The default arm's members without `kind`. Members only another arm reads are `never`: the
329
+ * server would select that arm by them, while the response is typed as the default.
330
+ */
331
+ type DefaultArmParams<M extends MenuDescriptor> = StrategyParams<StrategyOf<M['arms'][M['default']]>> & {
332
+ kind?: undefined;
333
+ } & { [X in Exclude<KeysOfUnion<StrategyParams<StrategyOf<M['arms'][ArmName<M>]>>>, keyof StrategyParams<StrategyOf<M['arms'][M['default']]>>>]?: never };
334
+ /**
335
+ * The `page` parameter an endpoint with paginator `P` accepts: its strategy's members under
336
+ * their wire keys (numbers, cursors as strings). A menu takes one arm tagged by `kind`, or the
337
+ * default arm's members untagged. `never` for an unpaginated endpoint; a loose record when the
338
+ * descriptor is not a generated literal.
339
+ */
340
+ type PageParams<P> = IsLoose<P> extends true ? Readonly<Record<string, unknown>> : P extends 'none' ? never : P extends MenuDescriptor ? ArmParams<P, ArmName<P>> | DefaultArmParams<P> : StrategyParams<StrategyOf<P>>;
341
+ /** The member of page parameter union `P` that argument `Q` selects by its `kind`, if any. */
342
+ type SelectedArm<Q, P> = Q extends {
343
+ kind: infer K;
344
+ } ? Extract<P, {
345
+ kind: K;
346
+ }> : Extract<P, {
347
+ kind?: undefined;
348
+ }>;
349
+ /**
350
+ * A page argument `Q` with any member outside the arm it selects turned into `never`, so a typo,
351
+ * or another arm's member, is an error.
352
+ */
353
+ type ExactPageParams<Q, P> = Q & { [K in Exclude<keyof Q, KeysOfUnion<[SelectedArm<Q, P>] extends [never] ? P : SelectedArm<Q, P>>>]: never };
354
+ type StrategyPage<S, Arm extends string | undefined = undefined> = S extends {
355
+ strategy: infer K extends PaginatorStrategy;
356
+ keys: infer Keys extends PageKeys;
357
+ } ? TypedPage<K, Keys, Arm> : Page;
358
+ type MenuPage<M extends MenuDescriptor, Q> = [Q] extends [never] ? StrategyPage<StrategyOf<M['arms'][M['default']]>> : Q extends {
359
+ kind: infer A extends ArmName<M>;
360
+ } ? StrategyPage<StrategyOf<M['arms'][A]>, A> : StrategyPage<StrategyOf<M['arms'][M['default']]>>;
361
+ /**
362
+ * The `$page` a read on an endpoint with paginator `P` carries, given the `page` argument `Q`
363
+ * it sent: the picked menu arm's strategy, the default's when it picked none, else the
364
+ * endpoint's own strategy.
365
+ */
366
+ type PageOf<P, Q = undefined> = IsLoose<P> extends true ? Page : P extends MenuDescriptor ? MenuPage<P, Q> : P extends 'none' ? TypedPage<'none', Record<never, never>> : StrategyPage<StrategyOf<P>>;
367
+ /**
368
+ * The `page` argument that reads another page from the strategy that answered `P` (a `$page`):
369
+ * its members under their wire keys, tagged with the menu arm it picked. A loose record for an
370
+ * untyped `Page`.
371
+ */
372
+ type PageParamsOf<P extends Page> = PaginatorKind extends P['kind'] ? Readonly<Record<string, string | number>> : StrategyParams<{
373
+ keys: P['keys'];
374
+ }> & (P extends {
375
+ arm: infer A extends string;
376
+ } ? {
377
+ kind: A;
378
+ } : unknown);
379
+ //#endregion
190
380
  //#region src/materialise.d.ts
191
381
  /** A trimmed, by-reference top-level envelope shared by every resource from one response. */
192
382
  interface DocumentEnvelope {
@@ -204,19 +394,6 @@ interface Edge {
204
394
  links?: Record<string, unknown>;
205
395
  meta?: Record<string, unknown>;
206
396
  }
207
- /** Normalised pagination, discriminated by paginator kind; count-free-safe. */
208
- interface Page {
209
- kind: PaginatorKind;
210
- /** The raw `meta.page` block, when present (shape varies by kind). */
211
- meta?: Record<string, unknown>;
212
- /** Navigation links by relation (`first`/`prev`/`next`/`last`), when present. */
213
- links: {
214
- first?: string;
215
- prev?: string;
216
- next?: string;
217
- last?: string;
218
- };
219
- }
220
397
  /** The uniform shape `$rel(name)` returns. */
221
398
  interface RelationView {
222
399
  data?: unknown;
@@ -257,10 +434,11 @@ interface MaterialiseContext {
257
434
  * Re-fetch + re-materialise a link (wired in Build 4); returns the materialised value.
258
435
  * `linkage` propagates the originating surface so a paginated relationship-endpoint
259
436
  * array re-materialises as identifiers (not resources) on `$next()`/`$prev()`. `paginator`
260
- * carries the current page's kind so the re-materialised page reports the same `$page.kind`
261
- * (a divergent per-relation paginator, or an EMPTY next page that carries no member to sniff).
437
+ * carries the strategy that answered the current page, so the re-materialised page reports the
438
+ * same `$page` (a divergent per-relation paginator, a picked menu arm, or an EMPTY next page
439
+ * that carries no member to sniff).
262
440
  */
263
- navigate: (url: string, linkage?: boolean, paginator?: PaginatorKind, signal?: AbortSignal) => Promise<unknown>;
441
+ navigate: (url: string, linkage?: boolean, paginator?: ResolvedPaginator, signal?: AbortSignal) => Promise<unknown>;
264
442
  /**
265
443
  * The opt-in per-resource validator (ADR 0004), resolved from `ClientOptions.validate`. When
266
444
  * present, every wire resource in `data`/`included` is validated against its per-type schema
@@ -301,14 +479,15 @@ interface RawRelationship {
301
479
  * full resource) — a structural guess can't tell them apart for an attribute-less,
302
480
  * relation-less resource, so the caller passes the surface it issued.
303
481
  *
304
- * `paginatorOverride` sets the top-level array's `$page.kind` for a related/relationship read,
305
- * where the paginator is the RELATION's (which may diverge from the related type's collection —
306
- * D6a) and an empty page carries no member to sniff a type from. `primaryType` is preferred for a
482
+ * `paginatorOverride` sets the top-level array's `$page` for a related/relationship read, where the
483
+ * paginator is the RELATION's (which may diverge from the related type's collection — D6a), for a
484
+ * menu read that picked an arm, and where an empty page carries no member to sniff a type from. A
485
+ * bare kind is read with its canonical wire keys. `primaryType` is preferred for a
307
486
  * top-level collection read (statically-known); both override the sniff-from-`data[0]` fallback.
308
487
  */
309
- declare function materialise(doc: Document, ctx: MaterialiseContext, linkage?: boolean, primaryType?: string, paginatorOverride?: PaginatorKind): unknown;
488
+ declare function materialise(doc: Document, ctx: MaterialiseContext, linkage?: boolean, primaryType?: string, paginatorOverride?: ResolvedPaginator | PaginatorKind): unknown;
310
489
  /**
311
- * A to-many relation's paginator kind. The relation's OWN related/relationship endpoint may
490
+ * A to-many relation's paginator. The relation's OWN related/relationship endpoint may
312
491
  * paginate differently than the related type's top-level collection (D6a), so prefer the
313
492
  * per-relation `paginator` (carried in the descriptor only when it diverges); otherwise fall back
314
493
  * to the related type's own paginator (the relationship and related endpoints both paginate that
@@ -316,6 +495,8 @@ declare function materialise(doc: Document, ctx: MaterialiseContext, linkage?: b
316
495
  * resolves off its first declared related type (its members span types, matching the relationship
317
496
  * endpoint's first-member resolution).
318
497
  */
498
+ declare function relatedPaginator(relation: RelationDescriptor | undefined, ctx: MaterialiseContext): PaginatorDescriptor | undefined;
499
+ /** The kind a relation's related read answers with when it sends no `page`. See {@link relatedPaginator}. */
319
500
  declare function relatedPaginatorKind(relation: RelationDescriptor | undefined, ctx: MaterialiseContext): PaginatorKind;
320
501
  //#endregion
321
502
  //#region src/types.d.ts
@@ -489,11 +670,13 @@ declare function runAtomic<D extends ApiDescriptor, A, W, const Ops>(request: Js
489
670
  * a real, read-only `T[]` carrying the non-enumerable relationship-level envelope
490
671
  * (`$page`/`$links`/`$meta`) plus link-driven `$next()`/`$prev()` navigation. The same
491
672
  * model backs top-level collections, related-endpoint collections, and hydrated/linkage
492
- * to-many relationship values ("one model, three surfaces").
673
+ * to-many relationship values ("one model, three surfaces"). `P` types `$page` by the strategy
674
+ * that answered (see {@link PageOf}); following a link keeps it.
493
675
  */
494
- type Collection<T> = ReadonlyArray<T> & Omit<ArrayEnvelope, '$next' | '$prev'> & {
495
- $next(options?: NavigateOptions): Promise<Collection<T> | undefined>;
496
- $prev(options?: NavigateOptions): Promise<Collection<T> | undefined>;
676
+ type Collection<T, P = Page> = ReadonlyArray<T> & Omit<ArrayEnvelope, '$page' | '$next' | '$prev'> & {
677
+ readonly $page: P;
678
+ $next(options?: NavigateOptions): Promise<Collection<T, P> | undefined>;
679
+ $prev(options?: NavigateOptions): Promise<Collection<T, P> | undefined>;
497
680
  };
498
681
  /**
499
682
  * The edge-local accessors carried by a materialised related VALUE (a per-edge view):
@@ -553,6 +736,15 @@ type PickSelected<Obj, Sel> = [Sel] extends [AllFields] ? Obj : Pick<Obj, Extrac
553
736
  type RelatedType<D extends ApiDescriptor, T extends TypeName<D>, R extends RelationName<D, T>> = Extract<D[T]['relations'][R]['types'][number], TypeName<D>>;
554
737
  /** True when relation `R` of type `T` is to-many. */
555
738
  type IsMany<D extends ApiDescriptor, T extends TypeName<D>, R extends RelationName<D, T>> = D[T]['relations'][R]['cardinality'] extends 'many' ? true : false;
739
+ /**
740
+ * The paginator relation `R`'s related/relationship endpoints use: the relation's own when it
741
+ * diverges (D6a), else its first related type's collection paginator (as the runtime resolves).
742
+ */
743
+ type RelationPaginator<D extends ApiDescriptor, T extends TypeName<D>, R extends RelationName<D, T>> = D[T]['relations'][R] extends {
744
+ paginator: infer P;
745
+ } ? P : D[T]['relations'][R]['types'][0] extends infer First extends TypeName<D> ? D[First]['paginator'] : 'none';
746
+ /** The `$page` of relation `R`'s to-many value read with page argument `Q` (none = the default). */
747
+ type RelationPage<D extends ApiDescriptor, T extends TypeName<D>, R extends RelationName<D, T>, Q = undefined> = PageOf<RelationPaginator<D, T, R>, Q>;
556
748
  /**
557
749
  * The bare resource-identifier shape a non-included (but linked) relation takes,
558
750
  * carrying the per-edge `$edge`/`$pivot` accessors the runtime attaches to every
@@ -584,7 +776,7 @@ type Identifier<TType extends string, Pivot = Record<string, unknown>> = TType e
584
776
  * (Excluded to-many stays a `Collection`: linkage may still be present, and a lazy
585
777
  * to-many materialises as an augmented array regardless — only its members differ.)
586
778
  */
587
- type RelationValue<D extends ApiDescriptor, A, T extends TypeName<D>, R extends RelationName<D, T>, Inc, F = unknown> = R extends Inc ? IsMany<D, T, R> extends true ? Collection<Hydrated<D, A, RelatedType<D, T, R>, F>> : Hydrated<D, A, RelatedType<D, T, R>, F> | null : IsMany<D, T, R> extends true ? Collection<Identifier<RelatedType<D, T, R>>> : Identifier<RelatedType<D, T, R>> | null | undefined;
779
+ type RelationValue<D extends ApiDescriptor, A, T extends TypeName<D>, R extends RelationName<D, T>, Inc, F = unknown> = R extends Inc ? IsMany<D, T, R> extends true ? Collection<Hydrated<D, A, RelatedType<D, T, R>, F>, RelationPage<D, T, R>> : Hydrated<D, A, RelatedType<D, T, R>, F> | null : IsMany<D, T, R> extends true ? Collection<Identifier<RelatedType<D, T, R>>, RelationPage<D, T, R>> : Identifier<RelatedType<D, T, R>> | null | undefined;
588
780
  /**
589
781
  * The relation slots of type `T`, each typed by cardinality and include-presence, then
590
782
  * narrowed to the fieldset selection for `T` (relations are sparse-fieldset members too — an
@@ -669,14 +861,16 @@ type FieldsMap<D extends ApiDescriptor> = { [T in TypeName<D>]?: readonly Member
669
861
  * `fields` entries are constrained to real members.
670
862
  */
671
863
  type MemberName<D extends ApiDescriptor, T extends TypeName<D>> = Extract<keyof D[T]['attributes'], string> | RelationName<D, T>;
864
+ /** The `page` argument a collection read of type `T` accepts (see {@link PageParams}). */
865
+ type ListPageParams<D extends ApiDescriptor, T extends TypeName<D>> = PageParams<D[T]['paginator']>;
672
866
  /**
673
867
  * A read query carrying a typed, narrowing `include`, a typed `fields` (drives sparse-fieldset
674
- * return narrowing), a `withCount` constrained to the type's count tokens, plus the loose
675
- * JSON:API query families. `Inc`/`F` are inferred (as `const`) at the call site. Used for the
868
+ * return narrowing), a `withCount` constrained to the type's count tokens, a `page` typed by the
869
+ * collection's paginator (`Pg` drives the `$page` type), plus the loose JSON:API query families. `Inc`/`F` are inferred (as `const`) at the call site. Used for the
676
870
  * COLLECTION read (`list`); the single-resource read (`get`) uses {@link SingleReadQuery}, which
677
871
  * drops `withCount` (no `GET /{type}/{id}` endpoint advertises it).
678
872
  */
679
- interface TypedReadQuery<D extends ApiDescriptor, T extends TypeName<D>, Inc extends readonly IncludePath<D, T>[], F extends FieldsMap<D> = FieldsMap<D>> {
873
+ interface TypedReadQuery<D extends ApiDescriptor, T extends TypeName<D>, Inc extends readonly IncludePath<D, T>[], F extends FieldsMap<D> = FieldsMap<D>, Pg extends ListPageParams<D, T> | undefined = ListPageParams<D, T> | undefined> {
680
874
  /** The relations to include — drives static narrowing; constrained to the advertised paths. */
681
875
  include?: Inc;
682
876
  /** Filter the collection — keys constrained to the type's advertised `filter[...]` params. */
@@ -687,7 +881,11 @@ interface TypedReadQuery<D extends ApiDescriptor, T extends TypeName<D>, Inc ext
687
881
  fields?: F;
688
882
  /** Relationship-count tokens (the Countable profile) — comma-joined onto `withCount`. */
689
883
  withCount?: readonly CountToken<D, T>[];
690
- page?: Record<string, unknown>;
884
+ /**
885
+ * The page to read, under the paginator's wire keys. On a menu, `kind` picks a strategy;
886
+ * without it the server answers with its default.
887
+ */
888
+ page?: ExactPageParams<Pg, ListPageParams<D, T>>;
691
889
  /** Cancels the read when signalled (e.g. a superseded request). Not sent to the server. */
692
890
  signal?: AbortSignal;
693
891
  }
@@ -711,13 +909,16 @@ interface SingleReadQuery<D extends ApiDescriptor, T extends TypeName<D>, Inc ex
711
909
  * narrowed to the requested sparse fieldset.
712
910
  */
713
911
  type ReadResult<D extends ApiDescriptor, A, T extends TypeName<D>, Inc extends readonly IncludePath<D, T>[] = [], F = unknown> = ResourceObjectView<D, A, T, IncludedRelations<D, T, Inc>, F>;
714
- /** A loose read query (filter/sort/include/fields/page/withCount) for the relationship/related endpoints. */
715
- interface RelationReadQuery {
912
+ /**
913
+ * A read query for the relationship/related endpoints: loose filter/sort/include/fields/withCount,
914
+ * and a `page` of type `Pg` (typed from the relation's paginator on a typed accessor).
915
+ */
916
+ interface RelationReadQuery<Pg = Readonly<Record<string, unknown>>> {
716
917
  filter?: Record<string, unknown>;
717
918
  sort?: string | readonly string[];
718
919
  include?: readonly string[];
719
920
  fields?: Record<string, readonly string[]>;
720
- page?: Record<string, unknown>;
921
+ page?: Pg;
721
922
  /**
722
923
  * Relationship-count tokens (`_self_` + the relation's countable relations) — the related/
723
924
  * relationship endpoints advertise their own `withCount`, and the client negotiates the
@@ -743,13 +944,15 @@ type PivotFieldsOf<D extends ApiDescriptor, T extends TypeName<D>, R extends Rel
743
944
  * the hydrated member (or `null`) for to-one. Each member's `$pivot` is typed from the
744
945
  * relation's `pivotFields` (D33).
745
946
  */
746
- type RelatedValue<D extends ApiDescriptor, A, T extends TypeName<D>, R extends RelationName<D, T>> = IsMany<D, T, R> extends true ? Collection<Hydrated<D, A, RelatedType<D, T, R>, unknown, PivotFieldsOf<D, T, R>>> : Hydrated<D, A, RelatedType<D, T, R>, unknown, PivotFieldsOf<D, T, R>> | null;
947
+ type RelatedValue<D extends ApiDescriptor, A, T extends TypeName<D>, R extends RelationName<D, T>, Q = undefined> = IsMany<D, T, R> extends true ? Collection<Hydrated<D, A, RelatedType<D, T, R>, unknown, PivotFieldsOf<D, T, R>>, RelationPage<D, T, R, Q>> : Hydrated<D, A, RelatedType<D, T, R>, unknown, PivotFieldsOf<D, T, R>> | null;
747
948
  /**
748
949
  * A linkage VALUE for relation `R` (the `/relationships/{rel}` endpoint, identifiers only):
749
950
  * a `Collection` of identifier members for to-many, a single identifier (or `null`) for to-one.
750
951
  * Each member's `$pivot` is typed from the relation's `pivotFields` (D33).
751
952
  */
752
- type LinkageValue<D extends ApiDescriptor, T extends TypeName<D>, R extends RelationName<D, T>> = IsMany<D, T, R> extends true ? Collection<Identifier<RelatedType<D, T, R>, PivotFieldsOf<D, T, R>>> : Identifier<RelatedType<D, T, R>, PivotFieldsOf<D, T, R>> | null;
953
+ type LinkageValue<D extends ApiDescriptor, T extends TypeName<D>, R extends RelationName<D, T>, Q = undefined> = IsMany<D, T, R> extends true ? Collection<Identifier<RelatedType<D, T, R>, PivotFieldsOf<D, T, R>>, RelationPage<D, T, R, Q>> : Identifier<RelatedType<D, T, R>, PivotFieldsOf<D, T, R>> | null;
954
+ /** The `page` argument relation `R`'s to-many reads accept; `never` for a to-one. */
955
+ type RelationPageParams<D extends ApiDescriptor, T extends TypeName<D>, R extends RelationName<D, T>> = IsMany<D, T, R> extends true ? PageParams<RelationPaginator<D, T, R>> : never;
753
956
  /**
754
957
  * A relationship accessor off a {@link ResourceHandle} (`client.albums.id('1').tracks`):
755
958
  * reads — `.get()` (linkage) / `.related()` (related collection); writes — to-many
@@ -763,8 +966,8 @@ type LinkageValue<D extends ApiDescriptor, T extends TypeName<D>, R extends Rela
763
966
  * linkage, or `void` when the server replies `204`.
764
967
  */
765
968
  interface RelationshipAccessor<D extends ApiDescriptor, A, T extends TypeName<D>, R extends RelationName<D, T>> {
766
- get: ExposesRelationship<D, T, R> extends true ? (query?: RelationReadQuery) => Promise<LinkageValue<D, T, R>> : never;
767
- related: ExposesRelated<D, T, R> extends true ? (query?: RelationReadQuery) => Promise<RelatedValue<D, A, T, R>> : never;
969
+ get: ExposesRelationship<D, T, R> extends true ? <const Pg extends RelationPageParams<D, T, R> | undefined = undefined>(query?: RelationReadQuery<ExactPageParams<Pg, RelationPageParams<D, T, R>>>) => Promise<LinkageValue<D, T, R, Pg>> : never;
970
+ related: ExposesRelated<D, T, R> extends true ? <const Pg extends RelationPageParams<D, T, R> | undefined = undefined>(query?: RelationReadQuery<ExactPageParams<Pg, RelationPageParams<D, T, R>>>) => Promise<RelatedValue<D, A, T, R, Pg>> : never;
768
971
  add: RelationMutation<D, T, R, 'add', readonly WriteRef<D, T, R>[]>;
769
972
  remove: RelationMutation<D, T, R, 'remove', readonly LinkageRefOf<RelatedType<D, T, R>>[]>;
770
973
  replace: RelationMutation<D, T, R, 'replace', readonly WriteRef<D, T, R>[]>;
@@ -993,7 +1196,7 @@ type ResourceHandle<D extends ApiDescriptor, A, W, T extends TypeName<D>, Act =
993
1196
  } & RelationshipAccessors<D, A, T>;
994
1197
  /** The collection-scoped accessor for one wire type (`client.albums`). */
995
1198
  interface TypeAccessor<D extends ApiDescriptor, A, W, T extends TypeName<D>, Act = DefaultActionTypes> {
996
- list<const Inc extends readonly IncludePath<D, T>[] = [], const F extends FieldsMap<D> = {}>(query?: TypedReadQuery<D, T, Inc, F>): Promise<Collection<ReadResult<D, A, T, Inc, F>>>;
1199
+ list<const Inc extends readonly IncludePath<D, T>[] = [], const F extends FieldsMap<D> = {}, const Pg extends ListPageParams<D, T> | undefined = undefined>(query?: TypedReadQuery<D, T, Inc, F, Pg>): Promise<Collection<ReadResult<D, A, T, Inc, F>, PageOf<D[T]['paginator'], Pg>>>;
997
1200
  get<const Inc extends readonly IncludePath<D, T>[] = [], const F extends FieldsMap<D> = {}>(id: string, query?: SingleReadQuery<D, T, Inc, F>): Promise<ReadResult<D, A, T, Inc, F>>;
998
1201
  create<const Inc extends readonly IncludePath<D, T>[] = [], const F extends FieldsMap<D> = {}>(input: CreateInput<D, W, T>, opts?: WriteOptions<D, T, Inc, F>): Promise<ReadResult<D, A, T, Inc, F>>;
999
1202
  id(id: string): ResourceHandle<D, A, W, T, Act>;
@@ -1004,9 +1207,10 @@ interface TypeAccessor<D extends ApiDescriptor, A, W, T extends TypeName<D>, Act
1004
1207
  * The descriptor-driven client surface: one {@link TypeAccessor} per wire type. `W` is the
1005
1208
  * generated `WriteAttributes` map (per-type `{ create; update }` attribute pairs) and `Act`
1006
1209
  * the generated per-action body-type map; both thread through to the write/action surfaces and
1007
- * default so read-only / codegen-less callers compile.
1210
+ * default so read-only / codegen-less callers compile. `E` is the server's documented
1211
+ * error-code union, carried at the type level only (read it back with `ErrorCodeOf`).
1008
1212
  */
1009
- type Client<D extends ApiDescriptor, A = DefaultAttributes<D>, W = DefaultWriteAttributes<D>, Act = DefaultActionTypes> = { [T in TypeName<D>]: TypeAccessor<D, A, W, T, Act> } & {
1213
+ type Client<D extends ApiDescriptor, A = DefaultAttributes<D>, W = DefaultWriteAttributes<D>, Act = DefaultActionTypes, E extends string = string> = { [T in TypeName<D>]: TypeAccessor<D, A, W, T, Act> } & {
1010
1214
  /**
1011
1215
  * Run an Atomic Operations batch (CONTEXT.md "Atomic — typed transaction builder"): the
1012
1216
  * callback records `create`/`update`/`delete` ops on a non-type-scoped recorder (each carries
@@ -1024,7 +1228,13 @@ type Client<D extends ApiDescriptor, A = DefaultAttributes<D>, W = DefaultWriteA
1024
1228
  * - return void/nothing -> the loose, ordered `AtomicResult[]` (backward-compatible).
1025
1229
  */
1026
1230
  atomic<const Ops>(build: (tx: AtomicRecorder<D, W>) => Ops): Promise<Ops extends readonly AtomicHandle[] ? AtomicResults<D, A, Ops> : AtomicResult[]>;
1231
+ readonly [errorCodes]?: E;
1027
1232
  };
1233
+ declare const errorCodes: unique symbol;
1234
+ /** The error-code union a client type carries, or `string` for one that carries none. */
1235
+ type ErrorCodeOf<T> = T extends {
1236
+ readonly [errorCodes]?: infer C extends string;
1237
+ } ? C : string;
1028
1238
  /**
1029
1239
  * The fallback attribute map when a caller doesn't supply the generated `Attributes`
1030
1240
  * (direct `createClient` users without codegen): every type's attributes are an open
@@ -1113,9 +1323,9 @@ declare const HANDLE_RESERVED: ReadonlySet<string>;
1113
1323
  * not per-type codegen: `client.<type>` yields a {@link TypeAccessor}, `.id(id)` a handle,
1114
1324
  * and a handle's relation accessors drive the relationship/related endpoints. Navigation
1115
1325
  * (`$next()`/`$prev()`, related links) is wired through `materialise`'s `navigate` seam,
1116
- * which executes the (absolute) link and re-materialises.
1326
+ * which resolves the server's link against `baseUrl`, executes it and re-materialises.
1117
1327
  */
1118
- declare function createClient<D extends ApiDescriptor, A = DefaultAttributes<D>, W = DefaultWriteAttributes<D>, Act = DefaultActionTypes>(descriptor: D, options: ClientOptions): Client<D, A, W, Act>;
1328
+ declare function createClient<D extends ApiDescriptor, A = DefaultAttributes<D>, W = DefaultWriteAttributes<D>, Act = DefaultActionTypes, E extends string = string>(descriptor: D, options: ClientOptions): Client<D, A, W, Act, E>;
1119
1329
  //#endregion
1120
1330
  //#region src/request.d.ts
1121
1331
  /**
@@ -1150,8 +1360,17 @@ interface JsonApiContext {
1150
1360
  /** A single read/write request, before serialisation. */
1151
1361
  interface JsonApiRequest {
1152
1362
  method: string;
1153
- /** A path relative to `baseUrl`, or an absolute `http(s)://` URL (e.g. a page link). */
1363
+ /**
1364
+ * A path appended to `baseUrl` (a filled path template such as `/albums/1`), or an absolute
1365
+ * `http(s)://` URL. With {@link link} set, a link from the server instead.
1366
+ */
1154
1367
  path: string;
1368
+ /**
1369
+ * `path` is a link the server sent (a `links` member such as `next`, or a `Location` header).
1370
+ * It resolves against `baseUrl` per RFC 3986, so a root-relative `/api/v5/albums?page[number]=2`
1371
+ * keeps the base's origin but not its path, where a path template is appended to the base.
1372
+ */
1373
+ link?: boolean;
1155
1374
  query?: ReadQuery;
1156
1375
  body?: unknown;
1157
1376
  /**
@@ -1195,8 +1414,8 @@ interface JsonApiRequest {
1195
1414
  */
1196
1415
  declare function serializeQuery(query: ReadQuery): string;
1197
1416
  /**
1198
- * Execute a request: build the URL (verbatim when already absolute — for page links —
1199
- * else `baseUrl + path`), apply content negotiation and any async per-request headers,
1417
+ * Execute a request: build the URL (a server link resolved against `baseUrl`, an absolute path
1418
+ * verbatim, else `baseUrl + path`), apply content negotiation and any async per-request headers,
1200
1419
  * then drive the transport. A 2xx with a body parses to a {@link Document}; an empty /
1201
1420
  * 204 body resolves to `undefined`. A non-2xx throws a {@link JsonApiError} carrying the
1202
1421
  * parsed error objects (tolerating a non-JSON error body with an empty list).
@@ -1270,5 +1489,5 @@ declare function assertJsonApiDocument(body: unknown): asserts body is Document;
1270
1489
  */
1271
1490
  declare function validateDocument(body: Document, validator: ResolvedValidator): void;
1272
1491
  //#endregion
1273
- export { SortQuery as $, DefaultActionTypes as A, Page as At, IncludePath as B, ApiDescriptor as Bt, fetchTransport as C, mediaType as Ct, Collection as D, EdgeEnvelope as Dt, Client as E, Edge as Et, FieldsMap as F, relatedPaginatorKind as Ft, ReadResult as G, PaginatorKind as Gt, LinkageRef as H, Cardinality as Ht, FilterKey as I, ActionDescriptor as It, RelationshipAccessor as J, ResourceDescriptor as Jt, RelationName as K, RelationDescriptor as Kt, FilterQuery as L, ActionInput as Lt, DefaultWriteAttributes as M, ResourceEnvelope as Mt, EdgeMembers as N, ResourceLinks as Nt, CountToken as O, MaterialiseContext as Ot, FieldSelectionMap as P, materialise as Pt, SingleReadQuery as Q, HydratedMember as R, ActionOutput as Rt, TransportResponse as S, ResourceIdentifier as St, AtomicResultOf as T, DocumentEnvelope as Tt, MemberName as U, ClientIdPolicy as Ut, IncludedRelations as V, AtomicDescriptor as Vt, PivotInput as W, CountableDescriptor as Wt, ResourceHandle as X, ResourceAccessors as Y, ResourceObjectView as Z, HANDLE_RESERVED as _, ATOMIC_EXT as _t, Validator as a, WriteOptions as at, JsonApiTransport as b, LocalIdentifier as bt, resolveValidator as c, AtomicDeleteHandle as ct, JsonApiContext as d, AtomicRef as dt, SortToken as et, JsonApiRequest as f, AtomicResult as ft, ClientOptions as g, runAtomic as gt, serializeQuery as h, AtomicUpdateInput as ht, ValidationOption as i, UpdateInput as it, DefaultAttributes as j, RelationView as jt, CreateInput as k, NavigateOptions as kt, validateDocument as l, AtomicHandle as lt, execute as m, AtomicUpdateHandle as mt, SchemaMap as n, TypeName as nt, WireResource as o, AtomicCreateHandle as ot, ReadQuery as p, AtomicResults as pt, RelationReadQuery as q, RelationMutations as qt, ValidationConfig as r, TypedReadQuery as rt, assertJsonApiDocument as s, AtomicCreateInput as st, ResolvedValidator as t, TypeAccessor as tt, Document as u, AtomicRecorder as ut, HeadersInit as v, ATOMIC_MEDIA_TYPE as vt, ActionsAccessor as w, ArrayEnvelope as wt, TransportRequest as x, MediaTypeParams as xt, createClient as y, JSON_API_MEDIA_TYPE as yt, IdentifierMember as z, ActionScope as zt };
1274
- //# sourceMappingURL=validate-CfrCMZkA.d.cts.map
1492
+ export { ResourceAccessors as $, ActionInput as $t, DefaultActionTypes as A, Edge as At, IdentifierMember as B, CANONICAL_PAGE_KEYS as Bt, fetchTransport as C, JSON_API_MEDIA_TYPE as Ct, Collection as D, mediaType as Dt, Client as E, ResourceIdentifier as Et, FieldSelectionMap as F, ResourceEnvelope as Ft, MemberName as G, PageMeta as Gt, IncludedRelations as H, Page as Ht, FieldsMap as I, ResourceLinks as It, RelationName as J, PageParamsOf as Jt, PivotInput as K, PageOf as Kt, FilterKey as L, materialise as Lt, DefaultWriteAttributes as M, MaterialiseContext as Mt, EdgeMembers as N, NavigateOptions as Nt, CountToken as O, ArrayEnvelope as Ot, ErrorCodeOf as P, RelationView as Pt, RelationshipAccessor as Q, ActionDescriptor as Qt, FilterQuery as R, relatedPaginator as Rt, TransportResponse as S, ATOMIC_MEDIA_TYPE as St, AtomicResultOf as T, MediaTypeParams as Tt, LinkageRef as U, PageKeys as Ut, IncludePath as V, ExactPageParams as Vt, ListPageParams as W, PageLinks as Wt, RelationPaginator as X, TypedPage as Xt, RelationPageParams as Y, ResolvedPaginator as Yt, RelationReadQuery as Z, resolvePaginator as Zt, HANDLE_RESERVED as _, AtomicResults as _t, Validator as a, ClientIdPolicy as an, TypeAccessor as at, JsonApiTransport as b, runAtomic as bt, resolveValidator as c, PaginatorDescriptor as cn, UpdateInput as ct, JsonApiContext as d, PaginatorStrategy as dn, AtomicCreateInput as dt, ActionOutput as en, ResourceHandle as et, JsonApiRequest as f, RelationDescriptor as fn, AtomicDeleteHandle as ft, ClientOptions as g, AtomicResult as gt, serializeQuery as h, StrategyDescriptor as hn, AtomicRef as ht, ValidationOption as i, Cardinality as in, SortToken as it, DefaultAttributes as j, EdgeEnvelope as jt, CreateInput as k, DocumentEnvelope as kt, validateDocument as l, PaginatorKind as ln, WriteOptions as lt, execute as m, ResourceDescriptor as mn, AtomicRecorder as mt, SchemaMap as n, ApiDescriptor as nn, SingleReadQuery as nt, WireResource as o, CountableDescriptor as on, TypeName as ot, ReadQuery as p, RelationMutations as pn, AtomicHandle as pt, ReadResult as q, PageParams as qt, ValidationConfig as r, AtomicDescriptor as rn, SortQuery as rt, assertJsonApiDocument as s, MenuDescriptor as sn, TypedReadQuery as st, ResolvedValidator as t, ActionScope as tn, ResourceObjectView as tt, Document as u, PaginatorRole as un, AtomicCreateHandle as ut, HeadersInit as v, AtomicUpdateHandle as vt, ActionsAccessor as w, LocalIdentifier as wt, TransportRequest as x, ATOMIC_EXT as xt, createClient as y, AtomicUpdateInput as yt, HydratedMember as z, relatedPaginatorKind as zt };
1493
+ //# sourceMappingURL=validate-DgCUbzgT.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-DgCUbzgT.d.cts","names":[],"sources":["../src/descriptor.ts","../src/pagination.ts","../src/materialise.ts","../src/types.ts","../src/atomic.ts","../src/result-types.ts","../src/transport.ts","../src/client.ts","../src/request.ts","../src/validate.ts"],"mappings":"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"}