@orbit/jsonapi
Version:
JSON:API support for Orbit.
72 lines (71 loc) • 3.56 kB
TypeScript
import { RecordKeyMap, RecordSchema, RecordQueryExpression, RecordTransform, RecordQuery } from '@orbit/records';
import { Dict } from '@orbit/utils';
import { RecordTransformRequest } from './lib/transform-requests';
import { RecordQueryRequest } from './lib/query-requests';
import { ResourceDocument } from './resource-document';
import { RecordDocument } from './record-document';
import { JSONAPIRequestOptions } from './lib/jsonapi-request-options';
import { JSONAPIURLBuilder, JSONAPIURLBuilderSettings } from './jsonapi-url-builder';
import { JSONAPISerializer, JSONAPISerializerSettings } from './jsonapi-serializer';
import { SerializerForFn, SerializerClassForFn, SerializerSettingsForFn } from '@orbit/serializers';
import { RecordOperation } from '@orbit/records';
import { JSONAPIResponse } from './jsonapi-response';
export interface FetchSettings {
headers?: Dict<any>;
method?: string;
json?: Dict<any>;
body?: string;
params?: Dict<any>;
timeout?: number;
credentials?: string;
cache?: string;
redirect?: string;
referrer?: string;
referrerPolicy?: string;
integrity?: string;
}
export interface JSONAPIRequestProcessorSettings {
sourceName: string;
serializerFor?: SerializerForFn;
serializerClassFor?: SerializerClassForFn;
serializerSettingsFor?: SerializerSettingsForFn;
SerializerClass?: new (settings: JSONAPISerializerSettings) => JSONAPISerializer;
URLBuilderClass?: new (settings: JSONAPIURLBuilderSettings) => JSONAPIURLBuilder;
namespace?: string;
host?: string;
defaultFetchSettings?: FetchSettings;
allowedContentTypes?: string[];
schema: RecordSchema;
keyMap?: RecordKeyMap;
}
export declare class JSONAPIRequestProcessor {
sourceName: string;
urlBuilder: JSONAPIURLBuilder;
allowedContentTypes: string[];
defaultFetchSettings: FetchSettings;
schema: RecordSchema;
keyMap?: RecordKeyMap;
protected _serializer?: JSONAPISerializer;
protected _serializerFor: SerializerForFn;
constructor(settings: JSONAPIRequestProcessorSettings);
/**
* @deprecated since v0.17, use `serializerFor` instead
*/
get serializer(): JSONAPISerializer;
get serializerFor(): SerializerForFn;
fetch(url: string, customSettings?: FetchSettings): Promise<JSONAPIResponse>;
initFetchSettings(customSettings?: FetchSettings): FetchSettings;
operationsFromDeserializedDocument(deserialized: RecordDocument): RecordOperation[];
buildFetchSettings(request: RecordQueryRequest | RecordTransformRequest): FetchSettings;
mergeRequestOptions(options: JSONAPIRequestOptions | undefined | (JSONAPIRequestOptions | undefined)[]): JSONAPIRequestOptions | undefined;
/**
* @deprecated since v0.17, use `mergeRequestOptions` instead
*/
customRequestOptions(queryOrTransform: RecordQuery | RecordTransform, queryExpressionOrOperation: RecordQueryExpression | RecordOperation): JSONAPIRequestOptions | undefined;
preprocessResponseDocument(document: ResourceDocument | undefined, request: RecordQueryRequest | RecordTransformRequest): void;
protected responseHasContent(response: Response, ignoreUnrecognizedContent?: boolean): boolean;
protected initDefaultFetchSettings(settings: JSONAPIRequestProcessorSettings): void;
protected handleFetchResponse(response: Response): Promise<JSONAPIResponse>;
protected handleFetchResponseError(response: Response, data?: unknown): Promise<Error>;
protected handleFetchError(e: Error | string): Promise<Error>;
}