@orbit/records
Version:
A flexible data access and synchronization layer.
66 lines (65 loc) • 3.05 kB
TypeScript
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>;
}