@orbit/jsonapi
Version:
JSON:API support for Orbit.
96 lines (93 loc) • 5.65 kB
TypeScript
import { RequestOptions, FullResponse } from '@orbit/data';
import { RecordSource, RecordSourceSettings, RecordPullable, RecordPushable, RecordQueryable, RecordUpdatable, RecordOperation, RecordTransform, RecordQuery, RecordQueryResult, RecordTransformResult, RecordSourceQueryOptions, RecordQueryBuilder, RecordTransformBuilder } from '@orbit/records';
import { JSONAPIRequestProcessor, JSONAPIRequestProcessorSettings, FetchSettings } from './jsonapi-request-processor';
import { JSONAPISerializer, JSONAPISerializerSettings } from './jsonapi-serializer';
import { JSONAPIURLBuilder, JSONAPIURLBuilderSettings } from './jsonapi-url-builder';
import { QueryRequestProcessor, RecordQueryRequest, QueryRequestProcessorResponse } from './lib/query-requests';
import { TransformRequestProcessor, RecordTransformRequest, TransformRequestProcessorResponse } from './lib/transform-requests';
import { SerializerClassForFn, SerializerSettingsForFn, SerializerForFn } from '@orbit/serializers';
import { JSONAPIResponse } from './jsonapi-response';
interface JSONAPISharedRequestOptions {
maxRequests?: number;
parallelRequests?: boolean;
}
export interface JSONAPIQueryOptions extends RecordSourceQueryOptions, JSONAPISharedRequestOptions {
}
export interface JSONAPITransformOptions extends RequestOptions, JSONAPISharedRequestOptions {
}
export interface JSONAPISourceSettings<QO extends JSONAPIQueryOptions = JSONAPIQueryOptions, TO extends JSONAPITransformOptions = JSONAPITransformOptions, QB = RecordQueryBuilder, TB = RecordTransformBuilder> extends RecordSourceSettings<QO, TO, QB, TB> {
/**
* Deprecated in favor of `defaultTransformOptions.maxRequests`
*
* @deprecated since v0.17, remove in v0.18
*/
maxRequestsPerTransform?: number;
/**
* Deprecated in favor of `defaultQueryOptions.maxRequests`
*
* @deprecated since v0.17, remove in v0.18
*/
maxRequestsPerQuery?: number;
name?: string;
namespace?: string;
host?: string;
defaultFetchSettings?: FetchSettings;
allowedContentTypes?: string[];
serializerFor?: SerializerForFn;
serializerClassFor?: SerializerClassForFn;
serializerSettingsFor?: SerializerSettingsForFn;
SerializerClass?: new (settings: JSONAPISerializerSettings) => JSONAPISerializer;
RequestProcessorClass?: new (settings: JSONAPIRequestProcessorSettings) => JSONAPIRequestProcessor;
URLBuilderClass?: new (settings: JSONAPIURLBuilderSettings) => JSONAPIURLBuilder;
}
export interface JSONAPISource<QO extends JSONAPIQueryOptions = JSONAPIQueryOptions, TO extends JSONAPITransformOptions = JSONAPITransformOptions, QB = RecordQueryBuilder, TB = RecordTransformBuilder> extends RecordSource<QO, TO, QB, TB>, RecordPullable<JSONAPIResponse[]>, RecordPushable<JSONAPIResponse[]>, RecordQueryable<JSONAPIResponse[], QB, QO>, RecordUpdatable<JSONAPIResponse[], TB, TO> {
}
/**
Source for accessing a JSON API compliant RESTful API with a network fetch
request.
If a single transform or query requires more than one fetch request,
requests will be performed sequentially and resolved together. From the
perspective of Orbit, these operations will all succeed or fail together. The
`maxRequestsPerTransform` and `maxRequestsPerQuery` settings allow limits to be
set on this behavior. These settings should be set to `1` if your client/server
configuration is unable to resolve partially successful transforms / queries.
@class JSONAPISource
@extends Source
*/
export declare class JSONAPISource<QO extends JSONAPIQueryOptions = JSONAPIQueryOptions, TO extends JSONAPITransformOptions = JSONAPITransformOptions, QB = RecordQueryBuilder, TB = RecordTransformBuilder> extends RecordSource<QO, TO, QB, TB> implements RecordPullable<JSONAPIResponse[]>, RecordPushable<JSONAPIResponse[]>, RecordQueryable<JSONAPIResponse[], QB, QO>, RecordUpdatable<JSONAPIResponse[], TB, TO> {
requestProcessor: JSONAPIRequestProcessor;
constructor(settings: JSONAPISourceSettings<QO, TO, QB, TB>);
/**
* Deprecated in favor of `defaultTransformOptions.maxRequests`
*
* @deprecated since v0.17, remove in v0.18
*/
get maxRequestsPerTransform(): number | undefined;
/**
* Deprecated in favor of `defaultTransformOptions.maxRequests`
*
* @deprecated since v0.17, remove in v0.18
*/
set maxRequestsPerTransform(val: number | undefined);
/**
* Deprecated in favor of `defaultQueryOptions.maxRequests`
*
* @deprecated since v0.17, remove in v0.18
*/
get maxRequestsPerQuery(): number | undefined;
/**
* Deprecated in favor of `defaultQueryOptions.maxRequests`
*
* @deprecated since v0.17, remove in v0.18
*/
set maxRequestsPerQuery(val: number | undefined);
_push(transform: RecordTransform): Promise<FullResponse<undefined, JSONAPIResponse[], RecordOperation>>;
_pull(query: RecordQuery): Promise<FullResponse<undefined, JSONAPIResponse[], RecordOperation>>;
_query(query: RecordQuery): Promise<FullResponse<RecordQueryResult, JSONAPIResponse[], RecordOperation>>;
_update(transform: RecordTransform): Promise<FullResponse<RecordTransformResult, JSONAPIResponse[], RecordOperation>>;
protected getQueryRequestProcessor(request: RecordQueryRequest): QueryRequestProcessor;
protected getTransformRequestProcessor(request: RecordTransformRequest): TransformRequestProcessor;
protected processQueryRequests(query: RecordQuery): Promise<QueryRequestProcessorResponse[]>;
protected processTransformRequests(transform: RecordTransform): Promise<TransformRequestProcessorResponse[]>;
}
export {};