couchdb-web-node-plugin
Version:
A couchdb server, model instance conflict handler, rest api, authentication, session management, schema validator and model relation guarantee for webNode.
126 lines (125 loc) • 6.58 kB
TypeScript
import { Logger, Mapping, ValueOf } from 'clientnode';
import { AbortControllerStack, ModelRolesMapping, Roles, Configuration, Connection, ConnectorConfiguration, CoreConfiguration, DatabaseConnectorConfiguration, Model, ModelConfiguration, Models, NormalizedRoles, PropertyDefinition, Services, SpecialPropertyNames } from './type';
export declare const TOGGLE_LATEST_REVISION_DETERMINING: unique symbol;
export declare const log: Logger;
/**
* Determines plugin to hook into any write operations.
* @param configuration - This's plugin configuration object.
* @returns A pouchdb plugin in object style.
*/
export declare const getPouchDBPlugin: (configuration: CoreConfiguration) => {
installCouchDBWebNodePlugin: (this: Connection, description: string) => void;
};
export declare const removeDeprecatedIndexes: (connection: Connection<object>, models: Models, modelConfiguration: ModelConfiguration) => Promise<void>;
/**
* Converts internal declarative database connector configuration object
* into a database compatible one.
* @param configuration - Connector configuration object.
* @param abortControllerStack - Stack to put abort signals to. They will be
* shifted and used for fetch calls.
* @returns Database compatible configuration object.
*/
export declare const getConnectorOptions: (configuration: ConnectorConfiguration, abortControllerStack?: AbortControllerStack) => DatabaseConnectorConfiguration;
/**
* Determines a representation for given plain object.
* @param object - Object to represent.
* @param maximumRepresentationTryLength - Maximum representation string to
* process.
* @param maximumRepresentationLength - Maximum length of returned
* representation.
* @returns Representation string.
*/
export declare const mayStripRepresentation: (object: unknown, maximumRepresentationTryLength: number, maximumRepresentationLength: number) => string;
/**
* Updates/creates a design document in database with a validation function
* set to given code.
* @param databaseConnection - Database connection to use for document
* updates.
* @param documentName - Design document name.
* @param documentData - Design document data.
* @param description - Used to produce semantic logging messages.
* @param doLogging - Enables logging.
* @param idName - Property name for ids.
* @param revisionName - Property name for revisions.
* @param designDocumentNamePrefix - Document name prefix indicating deign
* documents.
* @returns Promise which will be resolved after given document has updated
* successfully.
*/
export declare const ensureValidationDocumentPresence: (databaseConnection: Connection, documentName: string, documentData: Mapping, description: string, doLogging?: boolean, idName?: SpecialPropertyNames["id"], revisionName?: SpecialPropertyNames["revision"], designDocumentNamePrefix?: string) => Promise<void>;
/**
* Initializes a database connection instance.
* @param services - An object with stored service instances.
* @param configuration - Mutable by plugins extended configuration object.
* @param checkForDatabaseReachability - Indicates whether to check for
* reachability of newly created database.
* @returns Given and extended object of services.
*/
export declare const initializeConnection: (services: Services, configuration: Configuration, checkForDatabaseReachability?: boolean) => Promise<Services>;
/**
* Determines the effective database URL to connect to based on given
* configuration.
* @param configuration - Couchdb configuration object.
* @param withDatabase - Indicates whether the URL should contain the database
* name or not.
* @param withCredentials - Indicates whether the URL should contain the
* credentials or not.
* @returns The effective URL.
*/
export declare const getEffectiveURL: (configuration: CoreConfiguration, withDatabase?: boolean, withCredentials?: boolean) => string;
/**
* Waits for given promise to be resolved or given timeout has been exceeded.
* @param promise - Promise to wait for.
* @param timeoutInSeconds - Timeout in seconds.
* @param description - Used to produce semantic logging messages.
* @returns A promise which will be resolved after given promise is resolved or
* given timeout has been exceeded.
*/
export declare const waitWithTimeout: (promise: Promise<unknown>, timeoutInSeconds: number, description: string) => Promise<void>;
/**
* Determines a mapping of all models to roles who are allowed to edit
* corresponding model instances.
* @param modelConfiguration - Model specification object.
* @returns The mapping object.
*/
export declare const determineModelRolesMapping: (modelConfiguration: ModelConfiguration) => ModelRolesMapping;
/**
* Determines whether given value of a model is a property specification.
* @param value - Value to analyze.
* @returns Boolean indicating the case.
*/
export declare const isPropertyDefinition: (value: ValueOf<Model>) => value is PropertyDefinition;
/**
* Determines all property names which are indexable in a generic manner.
* @param modelConfiguration - Model specification object.
* @param model - Model to determine property names from.
* @returns The mapping object.
*/
export declare const determineGenericIndexablePropertyNames: (modelConfiguration: ModelConfiguration, model: Model) => Array<string>;
/**
* Extend given model with all specified one.
* @param model - Model to extend.
* @param modelConfiguration - Model specification object.
* @param _name - Model name to extend. Only needed for debugging purposes.
* @returns Given model in extended version.
*/
export declare const applyModelInheritance: (model: Model, modelConfiguration: ModelConfiguration, _name?: string) => Partial<Model>;
/**
* Apply default property definitions to given model.
* @param model - Model to extends its properties.
* @param modelConfiguration - Model configuration to take into account.
* @returns Extended model.
*/
export declare const applyDefaultPropertyConfigurations: (model: Model, modelConfiguration: ModelConfiguration) => Model;
/**
* Extend default specification with specific one.
* @param modelConfiguration - Model specification object.
* @returns Models with extended specific specifications.
*/
export declare const applyModelsInheritance: (modelConfiguration: ModelConfiguration) => Models;
/**
* Convert given roles to its normalized representation.
* @param roles - Unstructured role's description.
* @returns Normalized roles representation.
*/
export declare const normalizeRoles: (roles: Roles) => NormalizedRoles;