@allgemein/schema-api
Version:
Library for schema api
165 lines (164 loc) • 5.85 kB
TypeScript
import { METADATA_TYPE } from './../Constants';
import { IPropertyOptions } from './../options/IPropertyOptions';
import { IEntityRef } from '../../api/IEntityRef';
import { IClassRef } from '../../api/IClassRef';
import { DefaultPropertyRef } from './DefaultPropertyRef';
import { IEntityOptions } from '../options/IEntityOptions';
import { DefaultEntityRef } from './DefaultEntityRef';
import { ISchemaOptions } from '../options/ISchemaOptions';
import { IObjectOptions } from '../options/IObjectOptions';
import { ISchemaRef } from '../../api/ISchemaRef';
import { SchemaRef } from '../SchemaRef';
import { AbstractRegistry } from './AbstractRegistry';
import { IAbstractOptions } from '../options/IAbstractOptions';
import { IRegistryOptions } from './IRegistryOptions';
/**
* Registry which handles by default class, schema, embeddalbes and properties, which are not handled by a specialized registry.
*
* This is a space for entities and their relations, which are grouped by a give "namespace" context.
*
* How entities are passed to the registry:
*
* 1. by annotations at startup (event from metadata registry)
* - properties are appended first by annotation then entities follow
* 2. by call for getEntityRefFor
* 3. append during runtime by event fired through metadata registry
* 4. append through reload method
*
*/
export declare class DefaultNamespacedRegistry extends AbstractRegistry {
private drained;
constructor(namespace: string, options?: IRegistryOptions);
/**
* Initialize events for metadata changes on runtime
*/
prepare(): void;
ready(timeout?: number): Promise<boolean>;
/**
* Apply already added entries to the metadata registry can be added to this registry
*/
drainAlreadyAdded(): void;
onMetadataAdd(context: METADATA_TYPE, options: IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions): Promise<void>;
onMetadataUpdate(context: METADATA_TYPE, options: IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions): Promise<void>;
onMetadataRemove(context: METADATA_TYPE, options: (IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions)[]): Promise<void>;
/**
* Check if object has the correct namespace for this registry handle
*
* @param options
*/
validNamespace(options: IAbstractOptions): boolean;
/**
* react on dynamically added context
*
* @param context
* @param entries
*/
onAdd(context: METADATA_TYPE, options: IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions): void;
getOrCreateSchemaRefByName(options: ISchemaOptions): ISchemaRef;
addSchemaToEntityRef(schemaRef: string | ISchemaRef, entityRef: IEntityRef, options?: {
override?: boolean;
onlyDefault?: boolean;
}): void;
/**
* react on dynamically removed context
*
* @param context
* @param entries
*/
onRemove(context: METADATA_TYPE, entries: (IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions)[]): void;
/**
* react on dynamically update context
*
* @param context
* @param entries
*/
onUpdate(context: METADATA_TYPE, options: IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions): void;
/**
* Return all registered schema references
*
* @param ref
* @return ISchemaRef[]
*/
getSchemaRefs(filter?: (x: ISchemaRef) => boolean): SchemaRef[];
/**
* Return schema references for an given entity or class reference
*
* @param ref
* @return ISchemaRef[]
*/
getSchemaRefsFor(ref: string): SchemaRef;
/**
* TODO
*
* @param filter
*/
getEntities(filter?: (x: IEntityRef) => boolean): IEntityRef[];
/**
* Can get get entity ref for function.
*
* @param fn
*/
getEntityRefFor(fn: string | object | Function, skipNsCheck?: boolean): DefaultEntityRef;
/**
* Returns property by name for a given class or entity ref
*
* @param filter
*/
getPropertyRef(ref: IClassRef | IEntityRef, name: string): DefaultPropertyRef;
/**
* Returns all properties for given class or entity ref
*
* @param ref
*/
getPropertyRefs(ref: IClassRef | IEntityRef): DefaultPropertyRef[];
/**
* Create properties for class or entity ref.
*/
createPropertiesForRef(clsRef: IClassRef): DefaultPropertyRef[];
/**
* Create default property reference
*
* @param options
*/
createPropertyForOptions(options: IPropertyOptions): DefaultPropertyRef;
/**
* Create default entity reference
*
* @param options
*/
createEntityForOptions(options: IEntityOptions): DefaultEntityRef;
/**
* Create default entity reference
*
* @param options
*/
createEmbeddableForOptions(options: IObjectOptions): IClassRef;
/**
* Create default schema reference
*
* @param options
*/
createSchemaForOptions(options: ISchemaOptions): SchemaRef;
/**
* Return metadata collected in the MetadataRegistry through annotation or explizit attached data.
*
* @param context
* @param target
* @return IAbstractOptions
*/
getMetadata(context: METADATA_TYPE, target: Function | string, propertyName?: string): IAbstractOptions;
getPropertyRefsFor(fn: string | object | Function): DefaultPropertyRef[];
create<T>(context: string, options: IAbstractOptions): T;
/**
* TODO
*/
add<T>(context: string, entry: T): T;
/**
* Create default entity reference
*
* @param options
*/
addClassRef(ref: IClassRef): IClassRef;
getClassRefFor(object: string | Function | IClassRef, type: METADATA_TYPE): IClassRef;
reset(): void;
}