mongodb-memory-server-core
Version:
MongoDB Server for testing (core package, without autodownload). The server will allow you to connect your favourite ODM or client library to the MongoDB Server and run parallel integration tests isolated from each other.
172 lines • 6.66 kB
TypeScript
import { ChildProcess } from 'child_process';
import { AutomaticAuth } from '../MongoMemoryServer';
import { Stats } from 'fs';
import { BinaryLike } from 'crypto';
import { StorageEngine } from './MongoInstance';
import * as semver from 'semver';
/**
* This is here, because NodeJS does not have a FSError type
*/
interface ErrorWithCode extends Error {
code: string;
}
/**
* This is here, because NodeJS does not have a FSError type
* @param err Value to check agains
* @returns `true` if it is a error with code, `false` if not
*/
export declare function errorWithCode(err: unknown): err is ErrorWithCode;
/**
* Return input or default database
* @param {string} dbName
*/
export declare function generateDbName(dbName?: string): string;
/**
* Extracts the host and port information from a mongodb URI string.
* @param {string} uri mongodb URI
*/
export declare function getHost(uri: string): string;
/**
* Basic MongoDB Connection string
* @param host the host ip or an list of hosts
* @param port the host port or undefined if "host" is an list of hosts
* @param dbName the database to add to the uri (in mongodb its the auth database, in mongoose its the default database for models)
* @param query extra uri-query options (joined with "&")
*/
export declare function uriTemplate(host: string, port: number | undefined, dbName: string, query?: string[]): string;
/**
* Because since node 4.0.0 the internal util.is* functions got deprecated
* @param val Any value to test if null or undefined
*/
export declare function isNullOrUndefined(val: unknown): val is null | undefined;
/**
* Assert an condition, if "false" throw error
* Note: it is not named "assert" to differentiate between node and jest types
* @param cond The Condition to throw
* @param error An Custom Error to throw
*/
export declare function assertion(cond: unknown, error?: Error): asserts cond;
/**
* Kill an ChildProcess
* @param childprocess The Process to kill
* @param name the name used in the logs
* @param mongodPort the port for the mongod process (for easier logging)
*/
export declare function killProcess(childprocess: ChildProcess, name: string, mongodPort?: number): Promise<void>;
/**
* Check if the given Process is still alive
* @param {number} pid The Process PID
*/
export declare function isAlive(pid?: number): boolean;
/**
* Call "process.nextTick" to ensure an function is exectued directly after all code surrounding it
* look at the following link to get to know on why this needed: https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/#process-nexttick (read full documentation)
*/
export declare function ensureAsync(): Promise<void>;
/**
* Convert Partitial input into full-defaulted output
* @param opts Partitial input options
*/
export declare function authDefault(opts: AutomaticAuth): Required<AutomaticAuth>;
/**
* Run "fs.promises.stat", but return "undefined" if error is "ENOENT" or "EACCES"
* follows symlinks
* @param path The Path to Stat
* @throws if the error is not "ENOENT" or "EACCES"
*/
export declare function statPath(path: string): Promise<Stats | undefined>;
/**
* Like "fs.existsSync" but async
* uses "utils.statPath"
* follows symlinks
* @param path The Path to check for
*/
export declare function pathExists(path: string): Promise<boolean>;
/**
* Cleanup interface to provide easy to understand arguments for clean-up
*/
export interface Cleanup {
/**
* Setting this to `true` will activate cleanup
* @default true
*/
doCleanup?: boolean;
/**
* Setting this to `true` will cleanup the directory even if it is *not* a temporary directory
* @default false
*/
force?: boolean;
}
/**
* This Class is used to have unified types for base-manager functions
*/
export declare abstract class ManagerBase {
abstract start(forceSamePort: boolean): Promise<void>;
abstract start(): Promise<void>;
abstract stop(cleanup: Cleanup): Promise<boolean>;
abstract [Symbol.asyncDispose](): Promise<void>;
}
/**
* This Class is used to have unified types for advanced-manager functions
*/
export declare abstract class ManagerAdvanced extends ManagerBase {
abstract getUri(otherDB?: string | boolean): string;
abstract cleanup(cleanup: Cleanup): Promise<void>;
}
/**
* Check that the Binary has sufficient Permissions to be executed
* @param path The Path to check
*/
export declare function checkBinaryPermissions(path: string): Promise<void>;
/**
* Make Directory, wrapper for native mkdir with recursive true
* @param path The Path to create
* @returns Nothing
*/
export declare function mkdir(path: string): Promise<void>;
/**
* Create a Temporary directory with prefix, and optionally at "atPath"
* @param prefix The prefix to use to create the tmpdir
* @param atPath Optionally set a custom path other than "os.tmpdir"
* @returns The created Path
*/
export declare function createTmpDir(prefix: string, atPath?: string): Promise<string>;
/**
* Removes the given "path", if it is a directory, and does not throw a error if not existing
* @param dirPath The Directory Path to delete
* @returns "true" if deleted, otherwise "false"
*/
export declare function removeDir(dirPath: string): Promise<void>;
/**
* Helper function to have uuidv4 generation and definition in one place
* @returns a uuid-v4
*/
export declare function uuidv4(): string;
/**
* Helper function to have md5 generation and definition in one place
* @param content the content to checksum
* @returns a md5 of the input
*/
export declare function md5(content: BinaryLike): string;
/**
* Helper function to have md5 generation and definition in one place for a file
* @param file the location of a file to read for a hash
* @returns a md5 of the input file
*/
export declare function md5FromFile(file: string): Promise<string>;
/**
* Helper function to get the lockfile for the provided `version` in `downloadDir`
* @param downloadDir The Download directory of the binary
* @param version The version to be downlaoded
* @returns The lockfile path
*/
export declare function lockfilePath(downloadDir: string, version: string): string;
/**
* Get the storage engine for the given given binary version, and issue a warning if it needs to be changed
* @param storageEngine The engine that is configured
* @param coercedVersion The binary version as semver
* @returns The engine that actually will run in the given binary version
*/
export declare function getStorageEngine(storageEngine: StorageEngine | undefined, coercedVersion: semver.SemVer): StorageEngine;
export {};
//# sourceMappingURL=utils.d.ts.map