UNPKG

@orbit/jsonapi

Version:

JSON:API support for Orbit.

39 lines (38 loc) 1.79 kB
import { Dict } from '@orbit/utils'; import { RecordQuery, RecordIdentity, RecordQueryExpression, RecordOperation, RecordQueryExpressionResult } from '@orbit/records'; import { FullResponse } from '@orbit/data'; import { JSONAPIRequestProcessor } from '../jsonapi-request-processor'; import { JSONAPIRequestOptions } from './jsonapi-request-options'; import { JSONAPIResponse } from '../jsonapi-response'; export interface QueryRequest { op: string; options?: JSONAPIRequestOptions; } export interface FindRecordRequest extends QueryRequest { op: 'findRecord'; record: RecordIdentity; } export interface FindRecordsRequest extends QueryRequest { op: 'findRecords'; type: string; } export interface FindRelatedRecordRequest extends QueryRequest { op: 'findRelatedRecord'; record: RecordIdentity; relationship: string; } export interface FindRelatedRecordsRequest extends QueryRequest { op: 'findRelatedRecords'; record: RecordIdentity; relationship: string; } export declare type RecordQueryRequest = FindRecordRequest | FindRecordsRequest | FindRelatedRecordRequest | FindRelatedRecordsRequest; export declare type QueryRequestProcessorResponse = FullResponse<RecordQueryExpressionResult, JSONAPIResponse, RecordOperation>; export interface QueryRequestProcessor { (requestProcessor: JSONAPIRequestProcessor, request: RecordQueryRequest): Promise<QueryRequestProcessorResponse>; } export declare function getQueryRequests(requestProcessor: JSONAPIRequestProcessor, query: RecordQuery): RecordQueryRequest[]; export interface ExpressionToRequestConverter { (expression: RecordQueryExpression, requestProcessor: JSONAPIRequestProcessor): RecordQueryRequest; } export declare const QueryRequestProcessors: Dict<QueryRequestProcessor>;