///
import { ResourceTransformFn, FullTransformFn, TransformFn, BeforeRenderFullTransformFn, BeforeRenderResourceTransformFn } from "./steps/make-transform-fn";
import { AdapterInstance } from "./db-adapters/AdapterInterface";
import { UrlTemplate } from "./types/UrlTemplate";
import Resource from "./types/Resource";
import ResourceIdentifier from "./types/ResourceIdentifier";
import { UrlTemplates, UrlTemplatesByType } from "./types";
import { IncomingMessage, ServerResponse } from "http";
export { Resource, ResourceIdentifier, TransformFn, IncomingMessage, ServerResponse };
export declare type InputURLTemplates = {
[linkName: string]: UrlTemplate | string;
};
export declare type ResourceTypeInfo = {
fields?: {
[fieldName: string]: any;
};
example?: string;
description?: string;
};
export declare type InputErrorsConfig = {
urlTemplates: {
about: InputURLTemplates['about'];
};
};
export declare type ErrorsConfig = {
urlTemplates: UrlTemplates;
};
export declare type ResourceTypeDescription = {
dbAdapter?: AdapterInstance;
info?: ResourceTypeInfo;
defaultIncludes?: string[];
parentType?: string;
urlTemplates?: InputURLTemplates;
beforeSave?: ResourceTransformFn | FullTransformFn;
beforeRender?: BeforeRenderResourceTransformFn | BeforeRenderFullTransformFn;
transformLinkage?: boolean;
pagination?: {
maxPageSize?: number;
defaultPageSize?: number;
};
};
export declare type ResourceTypeDescriptions = {
[typeName: string]: ResourceTypeDescription;
};
export declare type OutputResourceTypeDescription = ResourceTypeDescription & {
urlTemplates: UrlTemplates;
} & Required>;
export default class ResourceTypeRegistry {
private _types;
private _typesMetadata;
private _errorsConfig?;
constructor(typeDescs?: ResourceTypeDescriptions, descDefaults?: Partial, errorsConfig?: InputErrorsConfig);
errorsConfig(): ErrorsConfig | undefined;
type(typeName: string): OutputResourceTypeDescription | undefined;
hasType(typeName: string): boolean;
urlTemplates(): UrlTemplatesByType;
urlTemplates(type: string): UrlTemplates;
dbAdapter(typeName: string): AdapterInstance | undefined;
uniqueAdapters(): Map, string[]>;
beforeSave(typeName: string): TransformFn | TransformFn | undefined;
beforeRender(typeName: string): TransformFn | TransformFn | undefined;
defaultIncludes(typeName: string): string[] | undefined;
info(typeName: string): ResourceTypeInfo | undefined;
transformLinkage(typeName: string): boolean;
parentTypeName(typeName: string): string | undefined;
pagination(typeName: string): {
maxPageSize?: number | undefined;
defaultPageSize?: number | undefined;
} | undefined;
typeNames(): string[];
childTypeNames(typeName: string): string[];
rootTypeNames(): string[];
rootTypeNameOf(typeName: string): string;
typePathTo(typeName: string): string[];
asTypePath(typesList: string[], throughType?: string): false | string[];
private doGet(attrName, typeName);
private processTypeDesc(it);
private processUrlTemplates(it);
}