UNPKG

@orbit/jsonapi

Version:

JSON:API support for Orbit.

52 lines (51 loc) 2.52 kB
import { Dict } from '@orbit/utils'; import { InitializedRecord, RecordIdentity, RecordOperation, RecordTransform, RecordOperationResult } 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 BaseTransformRecordRequest { op: string; options?: JSONAPIRequestOptions; record: RecordIdentity; } export interface TransformRecordRelationshipRequest extends BaseTransformRecordRequest { relationship: string; } export interface AddRecordRequest extends BaseTransformRecordRequest { op: 'addRecord'; record: InitializedRecord; } export interface RemoveRecordRequest extends BaseTransformRecordRequest { op: 'removeRecord'; } export interface UpdateRecordRequest extends BaseTransformRecordRequest { op: 'updateRecord'; record: InitializedRecord; } export interface AddToRelatedRecordsRequest extends TransformRecordRelationshipRequest { op: 'addToRelatedRecords'; relatedRecords: RecordIdentity[]; } export interface RemoveFromRelatedRecordsRequest extends TransformRecordRelationshipRequest { op: 'removeFromRelatedRecords'; relatedRecords: RecordIdentity[]; } export interface ReplaceRelatedRecordRequest extends TransformRecordRelationshipRequest { op: 'replaceRelatedRecord'; relatedRecord: RecordIdentity; } export interface ReplaceRelatedRecordsRequest extends TransformRecordRelationshipRequest { op: 'replaceRelatedRecord'; relatedRecords: RecordIdentity[]; } export declare type RecordTransformRequest = AddRecordRequest | RemoveRecordRequest | UpdateRecordRequest | AddToRelatedRecordsRequest | RemoveFromRelatedRecordsRequest | ReplaceRelatedRecordRequest | ReplaceRelatedRecordsRequest; export declare type TransformRequestProcessorResponse = FullResponse<RecordOperationResult, JSONAPIResponse, RecordOperation>; export interface TransformRequestProcessor { (requestProcessor: JSONAPIRequestProcessor, request: RecordTransformRequest): Promise<TransformRequestProcessorResponse>; } export declare const TransformRequestProcessors: Dict<TransformRequestProcessor>; export declare function getTransformRequests(requestProcessor: JSONAPIRequestProcessor, transform: RecordTransform): RecordTransformRequest[]; export interface OperationToRequestConverter { (operation: RecordOperation): RecordTransformRequest; }