@orbit/jsonapi
Version:
JSON:API support for Orbit.
39 lines (38 loc) • 2.16 kB
TypeScript
import { FilterSpecifier, RecordKeyMap, PageSpecifier, SortSpecifier } from '@orbit/records';
import { Dict } from '@orbit/utils';
import { JSONAPISerializer } from './jsonapi-serializer';
import { SerializerForFn } from '@orbit/serializers';
import { RecordQueryRequest } from './lib/query-requests';
import { RecordTransformRequest } from './lib/transform-requests';
export interface JSONAPIURLBuilderSettings {
host?: string;
namespace?: string;
serializer?: JSONAPISerializer;
serializerFor: SerializerForFn;
keyMap?: RecordKeyMap;
}
export declare class JSONAPIURLBuilder {
host?: string;
namespace?: string;
serializerFor: SerializerForFn;
serializer?: JSONAPISerializer;
keyMap?: RecordKeyMap;
constructor(settings: JSONAPIURLBuilderSettings);
resourceNamespace(type?: string): string | undefined;
resourceHost(type?: string): string | undefined;
resourceURL(type: string, id?: string): string;
resourcePath(type: string, id?: string): string;
resourceRelationshipURL(type: string, id: string, relationship: string): string;
relatedResourceURL(type: string, id: string, relationship: string): string;
buildFilterParam(filters: FilterSpecifier[] | Dict<unknown | unknown[]>, request?: RecordQueryRequest | RecordTransformRequest): Dict<unknown>[];
buildSortParam(sortSpecifiers: (SortSpecifier | string)[] | string, request?: RecordQueryRequest | RecordTransformRequest): string;
buildPageParam(pageSpecifier: PageSpecifier, request?: RecordQueryRequest | RecordTransformRequest): Dict<unknown>;
buildIncludeParam(includeSpecifier: string | string[] | string[][], request?: RecordQueryRequest | RecordTransformRequest): string;
buildFieldsParam(fieldsSpecifier: Dict<string | string[]>, request?: RecordQueryRequest | RecordTransformRequest): Dict<string>;
appendQueryParams(url: string, params: Dict<string>): string;
protected serializeFieldParam(field: string, options?: {
type?: string;
kind?: 'attribute' | 'relationship';
}): string;
protected serializeRelationshipInPath(type: string | undefined, relationship: string): string;
}