UNPKG

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.

97 lines (96 loc) 5.19 kB
import { Mapping, ValueOf } from 'clientnode'; import { AllowedModelRolesMapping, AllowedRoles, Configuration, Connection, ConnectorConfiguration, CoreConfiguration, DatabaseConnectorConfiguration, DatabasePlugin, Model, ModelConfiguration, Models, NormalizedAllowedRoles, PropertySpecification, Services, SpecialPropertyNames } from './type'; export declare const TOGGLE_LATEST_REVISION_DETERMINING: unique symbol; 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 abortSignalStack - 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, abortSignalStack?: Array<AbortSignal>) => 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 log - 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, log?: boolean, idName?: SpecialPropertyNames["id"], revisionName?: SpecialPropertyNames["revision"], designDocumentNamePrefix?: string) => Promise<void>; /** * Generates function to apply "latest/upsert" and ignore "NoChange" error * plugin for couchdb "bulkDocs" operations. * @param nativeBulkDocs - Original bulkDocs function to wrap. * @param configuration - Couchdb configuration object. * @returns Whatever bulkDocs returns. */ export declare const bulkDocsFactory: (nativeBulkDocs: Connection["bulkDocs"], configuration: CoreConfiguration) => DatabasePlugin; /** * Initializes a database connection instance. * @param services - An object with stored service instances. * @param configuration - Mutable by plugins extended configuration object. * @returns Given and extended object of services. */ export declare const initializeConnection: (services: Services, configuration: Configuration) => Promise<Services>; /** * 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 determineAllowedModelRolesMapping: (modelConfiguration: ModelConfiguration) => AllowedModelRolesMapping; /** * Determines whether given value of a model is a property specification. * @param value - Value to analyze. * @returns Boolean indicating the case. */ export declare const isPropertySpecification: (value: ValueOf<Model>) => value is PropertySpecification; /** * 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 modelName - Name of model to extend. * @param models - Pool of models to extend from. * @param extendPropertyName - Property name which indicates model * inheritance. * @returns Given model in extended version. */ export declare const extendModel: (modelName: string, models: Mapping<Partial<Model>>, extendPropertyName?: SpecialPropertyNames["extend"]) => Partial<Model>; /** * Extend default specification with specific one. * @param modelConfiguration - Model specification object. * @returns Models with extended specific specifications. */ export declare const extendModels: (modelConfiguration: ModelConfiguration) => Models; /** * Convert given roles to its normalized representation. * @param roles - Unstructured role's description. * @returns Normalized roles representation. */ export declare const normalizeAllowedRoles: (roles: AllowedRoles) => NormalizedAllowedRoles;