@orbit/jsonapi
Version:
JSON:API support for Orbit.
52 lines (51 loc) • 2.52 kB
TypeScript
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;
}