SieveResponseStrategy
Response strategy for the Sieve (.NET) driver
Sieve itself does not define a response envelope — it returns an
IQueryable that the ASP.NET developer wraps in a paging DTO of their
choosing. This strategy therefore ships a sensible default mapping
for the common hand-rolled PagedResult<T> shape:
{ "data": [{ "id": 1, "title": "Hello" }], "page": 2, "pageSize": 10, "total": 48, "totalPages": 5}Every key path is configurable through Config.response (dot
notation supported), so any wrapper shape — { items, meta: {...} },
{ results, pagination: {...} } — can be mapped without subclassing.
Defaults are encoded in SieveResponseOptions. from/to are
computed from page × pageSize by the inherited traversal
algorithm, and the navigation-URL slots resolve to undefined unless
paths are provided.
The dot-notation traversal is inherited from
AbstractDotPathResponseStrategy; this class exists so
DriverEnum.SIEVE resolves to a distinct identity at the DI layer.
Constructor
Section titled “Constructor”new SieveResponseStrategy()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
