UNPKG

@orbit/records

Version:

A flexible data access and synchronization layer.

66 lines (65 loc) 3.05 kB
import { RequestOptions, Source, SourceClass, SourceSettings } from '@orbit/data'; import { Dict } from '@orbit/utils'; import { StandardValidator, ValidatorForFn } from '@orbit/validators'; import { RecordKeyMap } from './record-key-map'; import { RecordNormalizer } from './record-normalizer'; import { RecordQueryBuilder } from './record-query-builder'; import { RecordSchema } from './record-schema'; import { RecordTransformBuilder } from './record-transform-builder'; import { StandardRecordValidator } from './record-validators/standard-record-validators'; export interface RecordSourceQueryOptions extends RequestOptions { raiseNotFoundExceptions?: boolean; } export interface RecordSourceSettings<QO extends RequestOptions = RecordSourceQueryOptions, TO extends RequestOptions = RequestOptions, QB = RecordQueryBuilder, TB = RecordTransformBuilder> extends SourceSettings<QO, TO, QB, TB> { schema: RecordSchema; keyMap?: RecordKeyMap; normalizer?: RecordNormalizer; /** * A completely custom set of validators. */ validatorFor?: ValidatorForFn<StandardValidator | StandardRecordValidator>; /** * Custom validators to override, and be merged with, the standard ones which * will be built as long as `autoValidate !== false`. */ validators?: Dict<StandardValidator | StandardRecordValidator>; /** * Automatically validate the contents of all requests. * * If true, builds a `validatorFor` function if one has not been provided. * This will include standard validators as well as any custom `validators` * that may be provided. * * @default true */ autoValidate?: boolean; /** * Automatically upgrade this source whenever its schema is upgraded. * * Override the `upgrade` method to provide an upgrade implementation. * * @default true */ autoUpgrade?: boolean; } export declare type RecordSourceClass<QO extends RequestOptions = RecordSourceQueryOptions, TO extends RequestOptions = RequestOptions, QB = RecordQueryBuilder, TB = RecordTransformBuilder> = SourceClass<QO, TO, QB, TB>; /** * Abstract base class for record-based sources. */ export declare abstract class RecordSource<QO extends RequestOptions = RecordSourceQueryOptions, TO extends RequestOptions = RequestOptions, QB = RecordQueryBuilder, TB = RecordTransformBuilder> extends Source<QO, TO, QB, TB> { protected _keyMap?: RecordKeyMap; protected _schema: RecordSchema; protected _validatorFor?: ValidatorForFn<StandardValidator | StandardRecordValidator>; protected _queryBuilder: QB; protected _transformBuilder: TB; constructor(settings: RecordSourceSettings<QO, TO, QB, TB>); get schema(): RecordSchema; get keyMap(): RecordKeyMap | undefined; get validatorFor(): ValidatorForFn<StandardValidator | StandardRecordValidator> | undefined; get queryBuilder(): QB; get transformBuilder(): TB; /** * Upgrade source as part of a schema upgrade. */ upgrade(): Promise<void>; }