PocketbaseResponseStrategy
Response strategy for the PocketBase driver
Parses PocketBase records-list responses:
{ "page": 1, "perPage": 30, "totalItems": 48, "totalPages": 2, "items": [{ "id": "abc123", "title": "Hello" }]}Default key paths are configured in PocketbaseResponseOptions —
all flat keys, resolved by the inherited dot-path traversal (a flat
key is just a one-segment path). PocketBase does not include
navigation links in the envelope, so firstPageUrl, prevPageUrl,
nextPageUrl, and lastPageUrl resolve to undefined unless the
consumer overrides their paths via PaginationConfig; from/to
are computed from page × perPage. This class exists so
DriverEnum.POCKETBASE resolves to a distinct identity at the DI
layer even though the parsing logic is shared with JSON:API, NestJS,
and Strapi.
When the request was sent with skipTotal=1 (not emitted by this
driver), PocketBase reports totalItems/totalPages as -1;
override the paths or treat the values accordingly if you opt into
that server-side optimisation.
Constructor
Section titled “Constructor”new PocketbaseResponseStrategy()Methods
Section titled “Methods”paginate()
Section titled “paginate()”paginate(response: RawResponse, options: ResponseOptions): PaginatedCollection<T>Parse a nested-envelope pagination response into a PaginatedCollection
| Parameter | Type | Description |
|---|---|---|
response |
RawResponse |
The raw API response object |
options |
ResponseOptions |
The response key name configuration (dot-notation paths supported) |
Returns — A typed PaginatedCollection instance
resolve()
Section titled “resolve()”resolve(response: RawResponse, path: string): unknownResolve a value from a response object using a dot-notation path
Supports both flat keys ('data') and nested paths ('meta.totalItems').
| Parameter | Type | Description |
|---|---|---|
response |
RawResponse |
The raw response object |
path |
string |
The dot-notation path to resolve |
Returns — The resolved value, or undefined if any segment is missing
resolveFrom()
Section titled “resolveFrom()”resolveFrom(response: RawResponse, options: ResponseOptions, currentPage: number, perPage?: number): number | undefinedResolve the “from” index value
If options.from resolves to a value in the response, use it.
Otherwise compute (currentPage - 1) * perPage + 1 when both are known.
| Parameter | Type | Description |
|---|---|---|
response |
RawResponse |
The raw response object |
options |
ResponseOptions |
The response key name configuration |
currentPage |
number |
The current page number |
perPage |
number |
The number of items per page |
Returns — The “from” index, or undefined when neither path nor inputs suffice
resolveTo()
Section titled “resolveTo()”resolveTo(response: RawResponse, options: ResponseOptions, currentPage: number, perPage?: number, total?: number): number | undefinedResolve the “to” index value
If options.to resolves to a value in the response, use it.
Otherwise compute Math.min(currentPage * perPage, total) when all
three are known.
| Parameter | Type | Description |
|---|---|---|
response |
RawResponse |
The raw response object |
options |
ResponseOptions |
The response key name configuration |
currentPage |
number |
The current page number |
perPage |
number |
The number of items per page |
total |
number |
The total number of items |
Returns — The “to” index, or undefined when neither path nor inputs suffice
