Files
kubernetes/prod/kafkachat/chat-backend/node_modules/nano/lib/nano.d.ts
T
2026-05-31 16:07:30 +02:00

1840 lines
67 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* @file nano.d.ts
*
* Type definitions for nano 6.4
*
* Project: https://github.com/apache/couchdb-nano
*
* Definitions by: Tim Jacobi <https://github.com/timjacobi>
* Kovács Vince <https://github.com/vincekovacs>
* Glynn Bird <https://github.com/glynnbird>
* Kyle Chine <https://github.com/kylechine>
* Jean-Christophe Hoelt <https://github.com/j3k0>
*
* Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
*
* TypeScript Version: 2.3
*/
/// <reference types="node" />
import { EventEmitter } from "events";
/** nano entry function */
declare function nano(
config: nano.Configuration | string
): nano.ServerScope;
declare namespace nano {
/** RequestDefaults.auth options */
interface RequestDefaultOptionsAuth {
username: string,
password: string
}
/** RequestDefaults options */
interface RequestDefaultsOptions {
timeout?: number;
agent?: any;
headers?: object;
auth?: RequestDefaultOptionsAuth;
jar?: boolean;
}
/** Nano configuration */
interface Configuration {
/** The URL of the CouchDB service, including username and password if required e.g.
* http://username:password@hostname:port
*/
url: string;
/** For cookie authentication */
cookie?: string;
/** HTTP request options
* @see README: {@link https://www.npmjs.com/package/nano#pool-size-and-open-sockets}
*/
requestDefaults?: RequestDefaultsOptions;
/** Logging function
* @see README: {@link https://www.npmjs.com/package/nano#logging}
*/
log?(id: string, args: any): void;
/** Set to false to prevent parsing of url
* @see README: {@link https://www.npmjs.com/package/nano#configuration}
*/
parseUrl?: boolean;
}
type Callback<R> = (error: RequestError | null, response: R, headers?: any) => void;
/** An error triggered by nano */
interface RequestError extends Error {
/** An error code. */
error?: string; // 'not_found', 'file_exists'
/** Human readable reason for the error. */
reason?: string; // 'missing', 'The database could not be created, the file already exists.';
/** Was the problem at the socket or couch level */
scope?: 'couch' | 'socket';
/** Status code returned by the server */
statusCode?: number; // 404;
/** Request sent to Couch */
request?: {
method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
headers?: { [key: string]: string | number };
uri?: string; // 'http://couchhost:5984/db/tsp2',
qs?: any; // { revs_info: true }
};
/** Response headers */
headers?: { [key: string]: string | number };
/** Error identifier */
errid?: 'non_200' | 'request'; // string; // 'non_200'
description?: string;
}
/** Server scope */
interface ServerScope {
/**
* An object containing the nano configurations.
* @see README: {@link https://www.npmjs.com/package/nano#nanoconfig}
*/
readonly config: ServerConfig;
db: DatabaseScope;
/**
* Returns a database object that allows you to perform operations against that database.
* @see README: {@link https://www.npmjs.com/package/nano#nanousename}
*/
use<D>(db: string): DocumentScope<D>;
/**
* Returns a database object that allows you to perform operations against that database.
* @see README: {@link https://www.npmjs.com/package/nano#nanoscopename}
*/
scope<D>(db: string): DocumentScope<D>;
/**
* Initiates a custom request
* @see README: {@link https://www.npmjs.com/package/nano#nanorequestopts-callback}
**/
request(opts: RequestOptions | string, callback?: Callback<any>): Promise<any>;
/**
* Initiates a custom request
* @see README: {@link https://www.npmjs.com/package/nano#nanorequestopts-callback}
**/
relax(opts: RequestOptions | string, callback?: Callback<any>): Promise<any>;
/**
* Initiates a custom request
* @see README: {@link https://www.npmjs.com/package/nano#nanorequestopts-callback}
**/
dinosaur(opts: RequestOptions | string, callback?: Callback<any>): Promise<any>;
/**
* Initiates new session for specified user credentials by providing Cookie value.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/authn.html#cookie-authentication} */
auth(username: string, userpass: string, callback?: Callback<DatabaseAuthResponse>): Promise<DatabaseAuthResponse>;
/**
* Returns information about the authenticated user, including a User Context Object, the authentication method and database that were used, and a list of configured authentication handlers on the server.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/authn.html#get--_session} */
session(callback?: Callback<DatabaseSessionResponse>): Promise<DatabaseSessionResponse>;
/**
* Returns a list of all database events in the CouchDB instance.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/common.html#get--_db_updates} */
updates(callback?: Callback<DatabaseUpdatesResponse>): Promise<DatabaseUpdatesResponse>;
/**
* Returns a list of all database events in the CouchDB instance.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/common.html#get--_db_updates} */
updates(params: UpdatesParams, callback?: Callback<DatabaseUpdatesResponse>): Promise<DatabaseUpdatesResponse>;
/**
* Requests one or more Universally Unique Identifiers (UUIDs) from the CouchDB instance.
* @see Docs: {@link https://docs.couchdb.org/en/stable/api/server/common.html#uuids}
*/
uuids(num?: number, callback?: Callback<any>): Promise<UUIDObject>;
/**
* Accessing the root of a CouchDB instance returns meta information about the instance.
* @see Docs: {@link https://docs.couchdb.org/en/stable/api/server/common.html#api-server-root} */
info(callback?: Callback<InfoResponse>): Promise<InfoResponse>;
}
interface UUIDObject {
uuids: string[];
}
/**
* Response to CouchDB root API call - cluster information.
* @see Docs: {@link https://docs.couchdb.org/en/stable/api/server/common.html#api-server-root} */
interface InfoResponse {
couchdb: string;
version: string;
git_sha: string;
uuid: string;
features: string[];
vendor: { name: string }
}
/**
* Database creation options
* @see Docs: {@link https://docs.couchdb.org/en/stable/api/database/common.html#put--db} */
interface DatabaseCreateParams {
n?: number;
partitioned?: boolean;
q?: number;
}
/** Database scope */
interface DatabaseScope {
replication: {
enable(source: string, target: string, opts0: object, callback0?: Callback<DatabaseCreateResponse>): Promise<DatabaseCreateResponse>;
disable(id:string, rev: string, opts0: object, callback0?: Callback<DatabaseCreateResponse>): Promise<DatabaseCreateResponse>;
query(id: string, opts0: object, callback0?: Callback<DatabaseGetResponse>): Promise<DatabaseGetResponse>;
};
/**
* Create database.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/common.html#put--db} */
create(name: string, params?: DatabaseCreateParams, callback?: Callback<DatabaseCreateResponse>): Promise<DatabaseCreateResponse>;
/** Get database information.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/common.html#get--db} */
get(name: string, callback?: Callback<DatabaseGetResponse>): Promise<DatabaseGetResponse>;
/** Delete database.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/common.html#delete--db} */
destroy(name: string, callback?: Callback<OkResponse>): Promise<OkResponse>;
/** List databases.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/common.html#get--_all_dbs} */
list(callback?: Callback<string[]>): Promise<string[]>;
/** List databases as a stream.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/common.html#get--_all_dbs} */
listAsStream(): NodeJS.ReadStream;
/** Use a specific database.
* @see README: {@link https://www.npmjs.com/package/nano#nanousename} */
use<D>(db: string): DocumentScope<D>;
/** Request compaction on a database.
* @see Docs: {@link https://docs.couchdb.org/en/stable/api/database/compact.html} */
compact(name: string, callback?: Callback<OkResponse>): Promise<OkResponse>;
/** Request compaction of a database's view indexes.
* @see Docs: {@link https://docs.couchdb.org/en/stable/api/database/compact.html} */
compact(name: string, designname: string, callback?: Callback<OkResponse>): Promise<OkResponse>;
/** Request a replication operation.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/common.html#post--_replicate} */
replicate<D>(
source: string | DocumentScope<D>,
target: string | DocumentScope<D>,
callback?: Callback<DatabaseReplicateResponse>
): Promise<DatabaseReplicateResponse>;
/** Reqiest a replication
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/common.html#post--_replicate} */
replicate<D>(
source: string | DocumentScope<D>,
target: string | DocumentScope<D>,
options: DatabaseReplicateOptions,
callback?: Callback<DatabaseReplicateResponse>
): Promise<DatabaseReplicateResponse>;
/** Return sorted list of changes to a database.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/changes.html#get--db-_changes} */
changes(name: string, callback?: Callback<DatabaseChangesResponse>): Promise<DatabaseChangesResponse>;
/** Return sorted list of changes to a database with options.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/compact.html#post--db-_compact} */
changes(name: string, params: DatabaseChangesParams, callback?: Callback<DatabaseChangesResponse>): Promise<DatabaseChangesResponse>;
/** Return sorted list of changes to a database as a stream.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/changes.html#get--db-_changes} */
changesAsStream(name: string): NodeJS.ReadStream;
/** Return sorted list of changes to a database with options as a stream.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/compact.html#post--db-_compact} */
changesAsStream(name: string, params: DatabaseChangesParams): NodeJS.ReadStream;
/** Return a list of all database events.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/common.html#get--_db_updates} */
updates(callback?: Callback<DatabaseUpdatesResponse>): Promise<DatabaseUpdatesResponse>;
/** Return a list of all database event with options
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/common.html#get--_db_updates} */
updates(params: UpdatesParams, callback?: Callback<DatabaseUpdatesResponse>): Promise<DatabaseUpdatesResponse>;
}
/** ChangesReader options */
interface ChangesReaderOptions {
/** number of changes per API call */
batchSize?: number;
/** whether to get a faster changes feed by supplying 'seq_interval' */
fastChanges?: boolean;
/** where to begin the changes feed: 0, now or a sequence token */
since?: string | number;
/** whether to return document bodies too */
includeDocs?: boolean;
/** number of milliseconds when the longpoll request will timeout */
timeout?: number;
/** whether to require a callback before performing the next request (get/start only) */
wait?: boolean;
/** additional query string parameters */
qs?: object;
/** a MangoSelector defining the slice of the changes feed to return */
selector?: MangoSelector;
}
/** ChangesReader functions */
interface ChangesReaderScope {
/** fetch changes forever */
start(opts: ChangesReaderOptions): EventEmitter;
/** fetch changes and stop when an empty batch is received */
get(opts: ChangesReaderOptions): EventEmitter;
/** spool the change in one long feed, instead of batches */
spool(opts: ChangesReaderOptions): EventEmitter;
/** stop consuming the changes feed */
stop(): void;
/** pause consuming the changes feed */
pause(): void;
/** resume consuming the changes feed */
resume(): void;
}
/** Documents scope */
interface DocumentScope<D> {
/**
* An object containing the nano configurations.
* @see README: {@link https://www.npmjs.com/package/nano#nanoconfig} */
readonly config: ServerConfig;
/** Get database info
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/common.html#get--db} */
info(callback?: Callback<DatabaseGetResponse>): Promise<DatabaseGetResponse>;
/** Request a replication opertation with this datbase as the target.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/common.html#post--_replicate} */
replicate<D>(
target: string | DocumentScope<D>,
callback?: Callback<DatabaseReplicateResponse>
): Promise<DatabaseReplicateResponse>;
/** Request a replication opertation with this datbase as the target with options.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/common.html#post--_replicate} */
replicate(
target: string | DocumentScope<D>,
options: any,
callback?: Callback<DatabaseReplicateResponse>
): Promise<DatabaseReplicateResponse>;
/** Request compaction on this database.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/compact.html#post--db-_compact} */
compact(callback?: Callback<OkResponse>): Promise<OkResponse>;
/** Return sorted list of changes to this database.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/changes.html#get--db-_changes} */
changes(callback?: Callback<DatabaseChangesResponse>): Promise<DatabaseChangesResponse>;
/** Return sorted list of changes to this database with options.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/changes.html#get--db-_changes} */
changes(params: DatabaseChangesParams, callback?: Callback<DatabaseChangesResponse>): Promise<DatabaseChangesResponse>;
/** Changes feed follower.
* @see README: {@link https://www.npmjs.com/package/nano#reading-changes-feed} */
changesReader: ChangesReaderScope;
/** Initiates new session for specified user credentials by providing Cookie value.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/authn.html#cookie-authentication} */
auth(username: string, userpass: string, callback?: Callback<DatabaseAuthResponse>): Promise<DatabaseAuthResponse>;
/** Returns information about the authenticated user, including a User Context Object, the authentication method and database that were used, and a list of configured authentication handlers on the server.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/authn.html#get--_session} */
session(callback?: Callback<DatabaseSessionResponse>): Promise<DatabaseSessionResponse>;
/** Insert a document into this database.
* @see POST Docs: {@link http://docs.couchdb.org/en/latest/api/database/common.html#post--db}
* @see PUT Docs: {@link http://docs.couchdb.org/en/latest/api/document/common.html#put--db-docid} */
insert(document: ViewDocument<D> | D & MaybeDocument, callback?: Callback<DocumentInsertResponse>): Promise<DocumentInsertResponse>;
/**
* Insert a document into this database with options.
* @see POST Docs: {@link http://docs.couchdb.org/en/latest/api/database/common.html#post--db}
* @see PUT Docs: {@link http://docs.couchdb.org/en/latest/api/document/common.html#put--db-docid} */
insert(
document: ViewDocument<D> | D & MaybeDocument,
params: DocumentInsertParams | string | null,
callback?: Callback<DocumentInsertResponse>
): Promise<DocumentInsertResponse>;
/** Fetch a document from this database.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/document/common.html#get--db-docid} */
get(docname: string, callback?: Callback<DocumentGetResponse & D>): Promise<DocumentGetResponse & D>;
/** Fetch a document from this database with options.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/document/common.html#get--db-docid} */
get(docname: string, params?: DocumentGetParams, callback?: Callback<DocumentGetResponse & D>): Promise<DocumentGetResponse & D>;
/** Fetch document meta data, useful for fetching a document's current revision.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/document/common.html#head--db-docid} */
head(docname: string, callback?: Callback<DocumentHeadResponseHeaders>): Promise<DocumentHeadResponseHeaders>;
/** Delete a document from this database.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/document/common.html#delete--db-docid} */
destroy(docname: string, rev: string, callback?: Callback<DocumentDestroyResponse>): Promise<DocumentDestroyResponse>;
/** Bulk insert/update/delete multiple documents in this database.
* @see Docs: {@link https://docs.couchdb.org/en/stable/api/database/bulk-api.html#db-bulk-docs} */
bulk(docs: BulkModifyDocsWrapper, callback?: Callback<DocumentBulkResponse[]>): Promise<DocumentBulkResponse[]>;
/** Bulk insert/update/delete multiple documents in this database, with options.
* @see Docs: {@link https://docs.couchdb.org/en/stable/api/database/bulk-api.html#db-bulk-docs} */
bulk(docs: BulkModifyDocsWrapper, params: any, callback?: Callback<DocumentInsertResponse[]>): Promise<DocumentInsertResponse[]>;
/** List documents from this database.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/bulk-api.html#get--db-_all_docs} */
list(callback?: Callback<DocumentListResponse<D>>): Promise<DocumentListResponse<D>>;
/** List documents from this database with options.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/bulk-api.html#get--db-_all_docs} */
list(params: DocumentListParams, callback?: Callback<DocumentListResponse<D>>): Promise<DocumentListResponse<D>>;
/** List document from this database as a stream.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/bulk-api.html#get--db-_all_docs} */
listAsStream(): NodeJS.ReadStream;
/** List document from this database as a stream with options.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/bulk-api.html#get--db-_all_docs} */
listAsStream(params: DocumentListParams): NodeJS.ReadStream;
/** Fetch a list of documents by _id.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/bulk-api.html#post--db-_all_docs} */
fetch(docnames: BulkFetchDocsWrapper, callback?: Callback<DocumentFetchResponse<D>>): Promise<DocumentFetchResponse<D>>;
/** Fetch a list of documents by _id with options.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/bulk-api.html#post--db-_all_docs} */
fetch(
docnames: BulkFetchDocsWrapper,
params: DocumentFetchParams,
callback?: Callback<DocumentFetchResponse<D>>
): Promise<DocumentFetchResponse<D>>;
/** Fetch revisions of a list of document _ids.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/bulk-api.html#post--db-_all_docs} */
fetchRevs(docnames: BulkFetchDocsWrapper, callback?: Callback<DocumentFetchRevsResponse<D>>): Promise<DocumentFetchRevsResponse<D>>;
/** Fetch revisions of a list of document _ids with options.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/bulk-api.html#post--db-_all_docs} */
fetchRevs(
docnames: BulkFetchDocsWrapper,
params: DocumentFetchParams,
callback?: Callback<DocumentFetchRevsResponse<D>>
): Promise<DocumentFetchRevsResponse<D>>;
/** Create a Mango index.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/find.html#db-index} */
createIndex(indexDef: CreateIndexRequest,
callback?: Callback<CreateIndexResponse>
): Promise<CreateIndexResponse>;
/** Multipart HTTP functions */
multipart: Multipart<D>;
/** Attachment functions */
attachment: Attachment;
/** Apply a show function to a document.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/render.html#get--db-_design-ddoc-_show-func} */
show(
designname: string,
showname: string,
doc_id: string,
callback?: Callback<any>
): Promise<any>;
/** Apply a show function to a document.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/render.html#get--db-_design-ddoc-_show-func} */
show(
designname: string,
showname: string,
doc_id: string,
params: any,
callback?: Callback<any>
): Promise<any>;
/** Executes an update function on the server side for the supplied document id.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/render.html#put--db-_design-ddoc-_update-func-docid} */
atomic<R>(
designname: string,
updatename: string,
docname: string,
callback?: Callback<R>
): Promise<R>;
/** Executes an update function on the server side for the supplied document id with body.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/render.html#put--db-_design-ddoc-_update-func-docid} */
atomic<R>(
designname: string,
updatename: string,
docname: string,
body: any,
callback?: Callback<R>
): Promise<R>;
/** Executes an update function on the server side for the supplied document id.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/render.html#put--db-_design-ddoc-_update-func-docid} */
updateWithHandler(
designname: string,
updatename: string,
docname: string,
callback?: Callback<OkResponse>
): Promise<OkResponse>;
/** Executes an update function on the server side for the supplied document id with body.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/render.html#put--db-_design-ddoc-_update-func-docid} */
updateWithHandler(
designname: string,
updatename: string,
docname: string,
body: any,
callback?: Callback<OkResponse>
): Promise<OkResponse>;
/** Executes a search request against the named index.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/ddoc/search.html#db-design-design-doc-search-index-name} */
search<V>(
designname: string,
searchname: string,
params: DocumentSearchParams,
callback?: Callback<DocumentSearchResponse<V>>
): Promise<DocumentSearchResponse<V>>;
/** Executes a search request against the named index as a stream.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/ddoc/search.html#db-design-design-doc-search-index-name} */
searchAsStream<V>(
designname: string,
searchname: string,
params: DocumentSearchParams
): NodeJS.ReadStream;
/** Low-level wrapper that executes a view from a Design Document.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/views.html#get--db-_design-ddoc-_view-view} */
baseView<V>(
designname: string,
viewname: string,
meta: any,
params?: any,
callback?: Callback<any>
): Promise<any>;
/** Executes a view from a Design Document.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/views.html#get--db-_design-ddoc-_view-view} */
view<V>(
designname: string,
viewname: string,
callback?: Callback<DocumentViewResponse<V,D>>
): Promise<DocumentViewResponse<V,D>>;
/** Executes a view from a Design Document, with options.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/views.html#get--db-_design-ddoc-_view-view} */
view<V>(
designname: string,
viewname: string,
params: DocumentViewParams,
callback?: Callback<DocumentViewResponse<V,D>>
): Promise<DocumentViewResponse<V,D>>;
/** Executes a view from a Design Document as a stream
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/views.html#get--db-_design-ddoc-_view-view} */
viewAsStream<V>(
designname: string,
viewname: string
): NodeJS.ReadStream;
/** Executes a view from a Design Document, with options as a stream
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/views.html#get--db-_design-ddoc-_view-view} */
viewAsStream<V>(
designname: string,
viewname: string,
params: DocumentViewParams
): NodeJS.ReadStream;
/** Applies a list function to a view.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/render.html#db-design-design-doc-list-list-name-view-name} */
viewWithList(
designname: string,
viewname: string,
listname: string,
callback?: Callback<any>
): Promise<any>;
/** Applies a list function to a view with options.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/render.html#db-design-design-doc-list-list-name-view-name} */
viewWithList(
designname: string,
viewname: string,
listname: string,
params: DocumentViewParams,
callback?: Callback<any>
): Promise<any>;
/** Applies a list function to a view as a stream.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/render.html#db-design-design-doc-list-list-name-view-name} */
viewWithListAsStream(
designname: string,
viewname: string,
listname: string,
callback?: Callback<any>
): NodeJS.ReadStream;
/** Applies a list function to a view with options as a stream.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/render.html#db-design-design-doc-list-list-name-view-name} */
viewWithListAsStream(
designname: string,
viewname: string,
listname: string,
params: DocumentViewParams,
callback?: Callback<any>
): NodeJS.ReadStream;
/** Run Mango query.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/find.html#db-find} */
find(query: MangoQuery, callback?: Callback<MangoResponse<D>>): Promise <MangoResponse<D>>;
/** Server scope */
server: ServerScope;
/** Fetch information about a single partition in this database.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/partitioned-dbs.html#db-partition-partition} */
partitionInfo(partitionKey: string, callback?: Callback<PartitionInfoResponse>): Promise <PartitionInfoResponse>;
/** List documents in a single partition in this database.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/partitioned-dbs.html#db-partition-partition-all-docs} */
partitionedList(partitionKey: string, params?: DocumentFetchParams, callback?: Callback<DocumentListResponse<D>>): Promise<DocumentListResponse<D>>;
/** List documents in a single partition in this database as a stream.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/partitioned-dbs.html#db-partition-partition-all-docs} */
partitionedListAsStream(partitionKey: string, params?: DocumentFetchParams): NodeJS.ReadStream;
/** Run Mango query a single partition in this database.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/partitioned-dbs.html#db-partition-partition-id-find} */
partitionedFind(partitionKey: string, query: MangoQuery, callback?: Callback<MangoResponse<D>>): Promise <MangoResponse<D>>;
/** Run Mango query a single partition in this database, as a stream.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/partitioned-dbs.html#db-partition-partition-id-find} */
partitionedFindAsStream(partitionKey: string, query: MangoQuery): NodeJS.ReadStream;
/** Run a full-text search in a single partition in this database. */
partitionedSearch<V>(
partitionKey: string,
designname: string,
searchname: string,
params: DocumentSearchParams,
callback?: Callback<DocumentSearchResponse<V>>
): Promise<DocumentSearchResponse<V>>;
/** Run a full-text search in a single partition in this database, as a stream. */
partitionedSearchAsStream(
partitionKey: string,
designname: string,
searchname: string,
params: DocumentSearchParams
): NodeJS.ReadStream;
/** Executes the specified view function in a single partition from the specified design document.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/partitioned-dbs.html#db-partition-partition-design-design-doc-view-view-name} */
partitionedView<V>(
partitionKey: string,
designname: string,
viewname: string,
params: DocumentViewParams,
callback?: Callback<DocumentViewResponse<V,D>>
): Promise<DocumentViewResponse<V,D>>;
/** Executes the specified view function in a single partition from the specified design document, as a stream
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/partitioned-dbs.html#db-partition-partition-design-design-doc-view-view-name} */
partitionedViewAsStream<V>(
partitionKey: string,
designname: string,
viewname: string,
params: DocumentViewParams
): NodeJS.ReadStream;
}
/** attachment data */
interface AttachmentData {
name: string;
data: any;
content_type: any;
}
/** Multi-part HTTP functions */
interface Multipart<D> {
/** Create doc with multiple attachments using mutlipart HTTP request.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/document/common.html#creating-multiple-attachments} */
insert(doc: D, attachments: AttachmentData[], callback?: Callback<DocumentInsertResponse>): Promise<DocumentInsertResponse>;
/** Create doc with multiple attachments using mutlipart HTTP request with options.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/document/common.html#creating-multiple-attachments} */
insert(doc: D, attachments: AttachmentData[], params: any, callback?: Callback<DocumentInsertResponse>): Promise<DocumentInsertResponse>;
/** Fetch document and its attachments as a multipart HTTP request.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/document/common.html#efficient-multiple-attachments-retrieving} */
get(docname: string, callback?: Callback<any>): Promise<any>;
/** Fetch document and its attachments as a multipart HTTP request with options.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/document/common.html#efficient-multiple-attachments-retrieving} */
get(docname: string, params: any, callback?: Callback<any>): Promise<any>;
}
/** Attachment functions */
interface Attachment {
/** Insert an attachment.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/document/attachments.html#put--db-docid-attname} */
insert(
docname: string,
attname: string,
att: any,
contenttype: string,
callback?: Callback<DocumentInsertResponse>
): Promise<DocumentInsertResponse>;
/** Insert an attachment with options.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/document/attachments.html#put--db-docid-attname} */
insert(
docname: string,
attname: string,
att: any,
contenttype: string,
params: any,
callback?: Callback<DocumentInsertResponse>
): Promise<DocumentInsertResponse>;
/** Get an attachment.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/document/attachments.html#get--db-docid-attname} */
get(docname: string, attname: string, callback?: Callback<Buffer>): Promise<Buffer>;
/** Get an attachment as a stream.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/document/attachments.html#get--db-docid-attname} */
getAsStream(docname: string, attname: string): NodeJS.ReadStream;
/** Get an attachment with options.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/document/attachments.html#get--db-docid-attname} */
get(
docname: string,
attname: string,
params: any,
callback?: Callback<Buffer>
): Promise<Buffer>;
/** Delete an attachment.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/document/attachments.html#delete--db-docid-attname} */
destroy(docname: string, attname: string, callback?: Callback<any>): Promise<any>;
/** Delete an attachment with options.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/document/attachments.html#delete--db-docid-attname} */
destroy(
docname: string,
attname: string,
params: any,
callback?: Callback<any>
): Promise<any>;
}
/** Server configuration */
interface ServerConfig {
url: string;
db: string;
}
/** Custom request options
* @see README: {@link https://www.npmjs.com/package/nano#nanorequestopts-callback}*/
interface RequestOptions {
db?: string;
method?: string;
path?: string;
doc?: string;
att?: string;
qs?: any;
content_type?: string;
headers?: any;
body?: any;
encoding?: string;
multipart?: any[];
}
/** Global changes feed paramters.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/common.html#get--_db_updates} */
interface UpdatesParams {
feed: "longpoll" | "continuous" | "eventsource";
timeout: number;
heartbeat: boolean;
since: string;
}
interface BulkModifyDocsWrapper {
docs: any[];
}
interface BulkFetchDocsWrapper {
keys: string[];
}
// -------------------------------------
// Document
// -------------------------------------
interface MaybeIdentifiedDocument {
_id?: string;
}
interface IdentifiedDocument {
_id: string;
}
interface MaybeRevisionedDocument {
_rev?: string;
}
interface RevisionedDocument {
_rev: string;
}
interface MaybeDocument extends MaybeIdentifiedDocument, MaybeRevisionedDocument {
}
interface Document extends IdentifiedDocument, RevisionedDocument {
}
// -------------------------------------
// View
// -------------------------------------
type DocumentInfer<D> = (doc: D & Document) => void
interface View<D> {
map?: string | DocumentInfer<D>;
reduce?: string | DocumentInfer<D>
}
interface ViewDocument<D> extends IdentifiedDocument {
views: {
[name: string]: View<D>
};
}
// -------------------------------------
// Database scope request and response
// -------------------------------------
/** Database creation options
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/common.html#put--db} */
interface DatabaseCreateResponse {
/** Operation status. Available in case of success */
ok?: boolean;
/** Error type. Available if response code is 4xx */
error?: string;
/** Error description. Available if response code is 4xx */
reason?: string;
}
/** Database information response.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/common.html#get--db} */
interface DatabaseGetResponse {
/** Set to true if the database compaction routine is operating on this database. */
compact_running: boolean;
/** The name of the database. */
db_name: string;
/** The version of the physical format used for the data when it is stored on disk. */
disk_format_version: number;
/** The number of bytes of live data inside the database file. */
data_size: number;
/** The length of the database file on disk. Views indexes are not included in the calculation. */
disk_size: number;
/** A count of the documents in the specified database. */
doc_count: number;
/** Number of deleted documents */
doc_del_count: number;
/** Timestamp of when the database was opened, expressed in microseconds since the epoch. */
instance_start_time: string;
/** The number of purge operations on the database. */
purge_seq: number | string;
sizes: {
/** The size of live data inside the database, in bytes. */
active: number;
/** The uncompressed size of database contents in bytes. */
external: number;
/** The size of the database file on disk in bytes. Views indexes */
file: number;
};
/** The current number of updates to the database. */
update_seq: number | string;
}
/** OK response
* @see Delete docs: {@link http://docs.couchdb.org/en/latest/api/database/common.html#delete--db}
* @see Compaction docs: {@link http://docs.couchdb.org/en/latest/api/database/compact.html#post--db-_compact} */
interface OkResponse {
/** Operation status */
ok: boolean;
}
/** Database _replicate options.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/common.html#post--_replicate} */
interface DatabaseReplicateOptions {
/** Cancels the replication */
cancel?: boolean;
/** Configure the replication to be continuous */
continuous?: boolean;
/** Creates the target database. Required administrators privileges on target server. */
create_target?: boolean;
/** Array of document IDs to be synchronized */
doc_ids?: string[];
/** The name of a filter function. */
filter?: string;
/** Address of a proxy server through which replication should occur (protocol can be “http” or “socks5”) */
proxy?: string;
/** Source database name or URL */
source?: string;
/** Target database name or URL */
target?: string;
}
/** Database replication history.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/common.html#post--_replicate} */
interface DatabaseReplicationHistoryItem {
/** Number of document write failures */
doc_write_failures: number;
/** Number of documents read */
docs_read: number;
/** Number of documents written to target */
docs_written: number;
/** Last sequence number in changes stream */
end_last_seq: number;
/** Date/Time replication operation completed in RFC 2822 format */
end_time: string;
/** Number of missing documents checked */
missing_checked: number;
/** Number of missing documents found */
missing_found: number;
/** Last recorded sequence number */
recorded_seq: number;
/** Session ID for this replication operation */
session_id: string;
/** First sequence number in changes stream */
start_last_seq: number;
/** Date/Time replication operation started in RFC 2822 format */
start_time: string;
}
/** Database _replicate response.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/common.html#post--_replicate} */
interface DatabaseReplicateResponse {
/** Replication history */
history: DatabaseReplicationHistoryItem[];
/** Replication status */
ok: boolean;
/** Replication protocol version */
replication_id_version: number;
/** Unique session ID */
session_id: string;
/** Last sequence number read from source database */
source_last_seq: number;
}
/** Database _changes parameters.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/changes.html#get--db-_changes} */
interface DatabaseChangesParams {
/** List of document IDs to filter the changes feed as valid JSON array.
*
* Used with _doc_ids filter. Since length of URL is limited, it is better to use POST /{db}/_changes instead. */
doc_ids?: string[];
/** Includes conflicts information in response.
*
* Ignored if `include_docs` isnt true.
*
* @default false */
conflicts?: boolean;
/** Return the change results in descending sequence order (most recent change first).
*
* @default false */
descending?: boolean;
/** Polling mode.
*
* - `"normal"` Specifies Normal Polling Mode. All past changes are returned immediately. Default.
* - `"longpoll"` Specifies Long Polling Mode. Waits until at least one change has occurred, sends the change, then
* closes the connection. Most commonly used in conjunction with since=now, to wait for the next change.
* - `"continuous"` Sets Continuous Mode. Sends a line of JSON per event. Keeps the socket open until timeout.
* - `"eventsource"` Sets Event Source Mode. Works the same as Continuous Mode, but sends the events in EventSource
* format.
*
* @detault "normal" */
feed?: "normal" | "longpoll" | "continuous" | "eventsource";
/** Reference to a filter function from a design document.
*
* The filter function will filter whole stream emitting only filtered events. See the section Change Notifications
* in the book CouchDB The Definitive Guide for more information. */
filter?: string;
/** Period in milliseconds after which an empty line is sent in the results.
*
* Only applicable for longpoll, continuous, and eventsource feeds. Overrides any timeout to keep the feed alive
* indefinitely. May be true to use default value.
*
* @default 60000 */
heartbeat?: number;
/** Include the associated document with each result.
*
* If there are conflicts, only the winning revision is returned.
*
* @default false */
include_docs?: boolean;
/** Include the Base64-encoded content of attachments in the documents that are included if include_docs is true.
*
* Ignored if include_docs isnt true.
*
* @default false */
attachments?: boolean;
/** Include encoding information in attachment stubs.
*
* Only used if include_docs is true and the particular attachment is compressed. Ignored if include_docs isnt
* true.
*
* @default false */
att_encoding_info?: boolean;
/** Limit number of result rows to the specified value.
*
* Note that using 0 here has the same effect as 1. */
limit?: number;
/** Start the results from the change immediately after the given update sequence.
*
* Can be valid update sequence or now value.
*
* @default 0 */
since?: string | number;
/** Specifies how many revisions are returned in the changes array.
*
* The default, `"main_only"`, will only return the current “winning” revision; `"all_docs"` will return all leaf
* revisions (including conflicts and deleted former conflicts).
*
* @default "main_only" */
style?: string;
/** Maximum period in milliseconds to wait for a change before the response is sent, even if there are no results.
*
* Only applicable for longpoll or continuous feeds. Default value is specified by httpd/changes_timeout
* configuration option. Note that 60000 value is also the default maximum timeout to prevent undetected dead
* connections. */
timeout?: number;
/** Allows to use view functions as filters.
*
* Documents counted as “passed” for view filter in case if map function emits at least one record for them.
*
* @see Docs: {@link https://docs.couchdb.org/en/stable/api/database/changes.html#changes-filter-view|_view} for more info. */
view?: string;
}
/** Database change item.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/changes.html#get--db-_changes} */
interface DatabaseChangesResultItem {
/** List of documents leaves with single field rev. */
changes: Array<{ rev: string }>;
/** Document ID. */
id: string;
/** Update sequence. */
seq: any;
/** true if the document is deleted. */
deleted: boolean;
}
/** Database _changes response.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/changes.html#get--db-_changes} */
interface DatabaseChangesResponse {
/** Last change update sequence */
last_seq: any;
/** Count of remaining items in the feed */
pending: number;
/** Changes made to a database */
results: DatabaseChangesResultItem[];
}
/** Database authentication response.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/authn.html#cookie-authentication} */
interface DatabaseAuthResponse {
/** Operation status */
ok: boolean;
/** Username */
name: string;
/** List of user roles */
roles: string[];
}
/** Database _session response.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/authn.html#get--_session} */
interface DatabaseSessionResponse {
/** Operation status */
ok: boolean;
/** User context for the current user */
userCtx: any;
/** Server authentication configuration */
info: any;
}
/** Database global changes result item.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/common.html#get--_db_updates} */
interface DatabaseUpdatesResultItem {
/** Database name. */
db_name: string;
/** A database event is one of created, updated, deleted. */
type: string;
/** Update sequence of the event. */
seq: any;
}
/** Global changes response.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/server/common.html#get--_db_updates} */
interface DatabaseUpdatesResponse {
/** An array of database events.
*
* For longpoll and continuous modes, the entire response is the contents of the results array. */
results: DatabaseUpdatesResultItem[];
/** The last sequence ID reported. */
last_seq: string;
}
// -------------------------------------
// Document scope request and response
// -------------------------------------
/** Bulk API per-document response. */
interface DocumentResponseRowMeta {
id: string;
key: string;
value: {
rev: string;
};
error?: string;
}
/** Bulk API per-document response with document body. */
interface DocumentResponseRow<D> extends DocumentResponseRowMeta {
doc?: D & Document;
}
/** Bulk API response.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/bulk-api.html#post--db-_bulk_docs} */
interface DocumentBulkResponse {
/** Document ID. Available in all cases */
id: string;
/** New document revision token. Available if document has saved without errors. */
rev?: string;
/** Error type. Available if response code is 4xx */
error?: string;
/** Error reason. Available if response code is 4xx */
reason?: string;
}
/** Document insert parameters.
* @see POST docs: {@link http://docs.couchdb.org/en/latest/api/database/common.html#post--db}
* @see PUT docs: {@link http://docs.couchdb.org/en/latest/api/document/common.html#put--db-docid} */
interface DocumentInsertParams {
/** Document ID */
docName?: string;
/** Documents revision if updating an existing document. Alternative to If-Match header or document key. */
rev?: string;
/** Stores document in batch mode. */
batch?: "ok";
/** Prevents insertion of a conflicting document.
*
* If false, a well-formed `_rev` must be included in the document. `new_edits=false` is used by the replicator to
* insert documents into the target database even if that leads to the creation of conflicts.
*
* @default true */
new_edits?: boolean;
}
/** Document insert response:
* @see POST docs: {@link http://docs.couchdb.org/en/latest/api/database/common.html#post--db}
* @see PUT docs: {@link http://docs.couchdb.org/en/latest/api/document/common.html#put--db-docid} */
interface DocumentInsertResponse {
/** Document ID */
id: string;
/** Operation status */
ok: boolean;
/** Revision MVCC token */
rev: string;
}
/** Document delete response.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/document/common.html#delete--db-docid} */
interface DocumentDestroyResponse {
/** Document ID */
id: string;
/** Operation status */
ok: boolean;
/** Revision MVCC token */
rev: string;
}
/** Document get parameters.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/document/common.html#get--db-docid} */
interface DocumentGetParams {
/** Includes attachments bodies in response.
*
* @default false */
attachments?: boolean;
/** Includes encoding information in attachment stubs if the particular attachment is compressed.
*
* @default false */
att_encoding_info?: boolean;
/** Includes attachments only since specified revisions.
*
* Doesnt includes attachments for specified revisions. */
atts_since?: any[];
/** Includes information about conflicts in document.
*
* @default false */
conflicts?: boolean;
/** Includes information about deleted conflicted revisions.
*
* @default false */
deleted_conflicts?: boolean;
/** Forces retrieving latest “leaf” revision, no matter what rev was requested.
*
* @default false */
latest?: boolean;
/** Includes last update sequence for the document.
*
* @default false */
local_seq?: boolean;
/** Acts same as specifying all conflicts, deleted_conflicts and revs_info query parameters.
*
* @default false */
meta?: boolean;
/** Retrieves documents of specified leaf revisions.
*
* Additionally, it accepts value as all to return all leaf revisions. */
open_revs?: any[];
/** Retrieves document of specified revision. */
rev?: string;
/** Includes list of all known document revisions. */
revs?: boolean;
/** Includes detailed information for all known document revisions.
*
* @default false */
revs_info?: boolean;
}
/** Document get response:
* @see docs: {@link http://docs.couchdb.org/en/latest/api/document/common.html#get--db-docid} */
interface DocumentGetResponse {
/** Document ID. */
_id: string;
/** Revision MVCC token. */
_rev: string;
/** Deletion flag. Available if document was removed. */
_deleted?: boolean;
/** Attachments stubs. Available if document has any attachments. */
_attachments?: any;
/** List of conflicted revisions. Available if requested with conflicts=true query parameter. */
_conflicts?: any[];
/** List of deleted conflicted revisions. Available if requested with deleted_conflicts=true query parameter. */
_deleted_conflicts?: any[];
/** Documents update sequence in current database. Available if requested with local_seq=true query parameter. */
_local_seq?: string;
/** List of objects with information about local revisions and their status.
*
* Available if requested with open_revs query parameter. */
_revs_info?: any[];
/** List of local revision tokens without.
*
* Available if requested with revs=true query parameter. */
_revisions?: any;
}
/** Document head response headers:
* @see docs: {@link https://docs.couchdb.org/en/latest/api/document/common.html#head--db-docid} */
interface DocumentHeadResponseHeaders {
/** Double quoted documents revision token. */
etag: string;
}
/** _all_docs parameters
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/bulk-api.html#get--db-_all_docs} */
interface DocumentListParams {
/** Includes conflicts information in response.
*
* Ignored if include_docs isnt true.
*
* @default false */
conflicts?: boolean;
/** Return the documents in descending by key order.
*
* @default false */
descending?: boolean;
/** Stop returning records when the specified key is reached. */
endkey?: string;
/** Stop returning records when the specified key is reached.
*
* end_key is an alias for endkey */
end_key?: string;
/** Stop returning records when the specified document ID is reached. */
end_key_doc_id?: string;
/** Include the full content of the documents in the return.
*
* @default false */
include_docs?: boolean;
/** Specifies whether the specified end key should be included in the result.
*
* @default true */
inclusive_end?: boolean;
/** Return only documents that match the specified key. */
key?: string;
/** Return only documents that match the specified keys. */
keys?: string | string[];
/** Limit the number of the returned documents to the specified number. */
limit?: number;
/** Skip this number of records before starting to return the results.
*
* @default 0 */
skip?: number;
/** Allow the results from a stale view to be used.
*
* Using a stale view wont trigger a rebuild of all views within the encompassing design doc.
*
* Supported values: "ok" and "update_after". */
stale?: string;
/** Return records starting with the specified key. */
startkey?: string;
/** Return records starting with the specified key.
*
* start_key is an alias for startkey */
start_key?: string;
/** Return records starting with the specified document ID. */
start_key_doc_id?: string;
/** Response includes an update_seq value indicating which sequence id of the underlying database the view reflects.
*
* @default false */
update_seq?: boolean;
}
/** _all_docs response.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/bulk-api.html#get--db-_all_docs} */
interface DocumentListResponse<D> {
/** Offset where the document list started. */
offset: number;
/** Array of view row objects.
*
* By default the information returned contains only the document ID and revision. */
rows: Array<DocumentResponseRow<D>>;
/** Number of documents in the database/view.
*
* Note that this is not the number of rows returned in the actual query. */
total_rows: number;
/** Current update sequence for the database. */
update_seq?: number | string;
}
/** Fetch with POST _all_docs parameters.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/database/bulk-api.html#post--db-_all_docs} */
interface DocumentFetchParams {
conflicts?: boolean;
descending?: boolean;
end_key?: string;
end_key_doc_id?: string;
include_docs?: boolean;
inclusive_end?: boolean;
key?: string;
keys?: string | string[];
limit?: number;
skip?: number;
stale?: string;
start_key?: string;
start_key_doc_id?: string;
update_seq?: boolean;
}
/** Document fetch error */
interface DocumentLookupFailure {
key: string;
error: string;
}
/** Fetch with POST _all_docs response
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/database/bulk-api.html#post--db-_all_docs} */
interface DocumentFetchResponse<D> {
offset: number;
rows: Array<DocumentResponseRow<D> | DocumentLookupFailure>;
total_rows: number;
update_seq?: number | string;
}
/** Fetch revisions response
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/database/bulk-api.html#post--db-_all_docs} */
interface DocumentFetchRevsResponse<D> {
offset: number;
rows: Array<DocumentResponseRow<D> | DocumentLookupFailure>;
total_rows: number;
update_seq?: number | string;
}
/** Search response
* @see Docs: {@link https://docs.couchdb.org/en/latest/ddocs/search.html#queries} */
interface DocumentSearchResponse<V> {
/** Array of search results */
rows: Array<{
id: string;
order: number[];
fields: object;
key: string;
doc?: V;
}>;
/** Number of documents in the search resykts */
total_rows: number;
/** token which if supplied to a subsequent search will return the next page of results. */
bookmark: string;
/** facet counts */
counts?: object;
/** facet range results */
ranges?: object;
highlights?: object;
}
/** Partitioned database info response.
* @see Docs: {@link https://docs.couchdb.org/en/latest/partitioned-dbs/index.html} */
interface PartitionInfoResponse {
/** Database name */
db_name: string;
/** Partition sizes */
sizes: {
active: number;
external: number;
}
/** Partition name */
partition: string;
/** Document count */
doc_count: number;
/** Deleted document count */
doc_del_count: number;
}
/** Document search parameters:
* @see Docs: {@link https://docs.couchdb.org/en/latest/ddocs/search.html#queries} */
interface DocumentSearchParams {
/** A bookmark that was received from a previous search. Used for pagination. */
bookmark?: string;
/** An array of field names for which facet counts are requested. */
counts?: string[];
/** Filters the result set using key value pairs supplied to the drilldown parameter. */
drilldown?: string[];
/** The name of a string field to group results by. */
group_field?: string;
/** The maximum group count when used in conjunction with group_field. */
group_limit?: number;
/** Defines the order of the groups in a search when used with group_field. */
group_sort?: string | string[];
/** Which fields are to be highlighted. */
highlight_fields?: string[];
/** String used before a highlighted word.
*
* @default <em> */
highlight_pre_tag?: string;
/** String used after a highlighted word.
*
* @default </em> */
highlight_post_tag?: string;
/** The number of gradments that are returned in highlights.
*
* @default 1 */
highlight_number?: number;
/** The number of characters in each fragment for highlight.
*
* @default 100 */
highlight_size?: number;
/** Include the full document bodies in the response.
*
* @default false */
include_docs?: boolean;
/** An array of fields to include in the search results */
include_fields?: string[];
/** The maximum number of returned documents.
*
* Positive integer up to 200. */
limit?: number;
/** Alias of 'query'.
*
* One of q or query must be present. */
q?: string;
/** The Lucene query to perform.
*
* One of q or query must be present. */
query?: string;
/** Defines ranges for faceted numeric search fields. */
ranges?: object;
/** Specifies the sort order of the results. */
sort?: string | string[];
/** Do not wait for the index to finish building to return results. */
stale?: boolean;
}
/** View query parameters.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/views.html#get--db-_design-ddoc-_view-view} */
interface DocumentViewParams {
/** Includes conflicts information in response.
*
* Ignored if include_docs isnt true.
*
* @default false */
conflicts?: boolean;
/** Return the documents in descending by key order.
*
* @default false */
descending?: boolean;
/** Stop returning records when the specified key is reached. */
endkey?: any;
/** Alias for endkey param. */
end_key?: any;
/** Stop returning records when the specified document ID is reached.
*
* Requires endkey to be specified for this to have any effect. */
endkey_docid?: string;
/** Alias for endkey_docid param. */
end_key_doc_id?: string;
/** Group the results using the reduce function to a group or single row.
*
* @default false */
group?: boolean;
/** Specify the group level to be used. */
group_level?: number;
/** Include the associated document with each row.
*
* @default false */
include_docs?: boolean;
/** Include the Base64-encoded content of attachments in the documents that are included if include_docs is true.
*
* Ignored if include_docs isnt true.
*
* @default false */
attachments?: boolean;
/** Include encoding information in attachment stubs.
*
* Only if include_docs is true and the particular attachment is compressed.
*
* Ignored if include_docs isnt true.
*
* @default false */
att_encoding_info?: boolean;
/** Specifies whether the specified end key should be included in the result.
*
* @default true */
inclusive_end?: boolean;
/** Return only documents that match the specified key. */
key?: any;
/** Return only documents where the key matches one of the keys specified in the array. */
keys?: any[];
/** Limit the number of the returned documents to the specified number. */
limit?: number;
/** Use the reduction function.
*
* @default true */
reduce?: boolean;
/** Skip this number of records before starting to return the results.
*
* @default 0 */
skip?: number;
/** Sort returned rows.
*
* Setting this to false offers a performance boost. The total_rows and offset fields are not available when this is
* set to false.
*
* @default true */
sorted?: boolean;
/** Whether or not the view results should be returned from a stable set of shards.
*
* @default false */
stable?: boolean;
/** Allow the results from a stale view to be used.
*
* Supported values: ok, update_after and false.
*
* - ok is equivalent to stable=true&update=false.
* - update_after is equivalent to stable=true&update=lazy.
* - false is equivalent to stable=false&update=true.
*/
stale?: string;
/** Return records starting with the specified key. */
startkey?: any;
/** Alias for startkey param */
start_key?: any;
/** Return records starting with the specified document ID.
*
* Requires startkey to be specified for this to have any effect. */
startkey_docid?: string;
/** Alias for startkey_docid param */
start_key_doc_id?: string;
/** Whether or not the view in question should be updated prior to responding to the user.
*
* Supported values: true, false, lazy.
*
* @default true */
update?: string;
/** Response includes an update_seq value indicating which sequence id of the database the view reflects.
*
* @default false */
update_seq?: boolean;
}
/** View response.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/ddoc/views.html#get--db-_design-ddoc-_view-view} */
interface DocumentViewResponse<V,D> {
/** Offset where the document list started. */
offset: number;
/** Array of view row objects.
*
* By default the information returned contains only the document ID and revision. */
rows: Array<{
id: string;
key: string;
value: V;
doc?: D & Document;
}>;
/** Number of documents in the database/view. */
total_rows: number;
/** Current update sequence for the database */
update_seq?: any;
}
type MangoValue = number | string | Date | boolean | object | null;
type MangoOperator = '$lt' | '$lte' | '$eq' | '$ne' | '$gte' | '$gt' |
'$exists' | '$type' |
'$in' | '$nin' | '$size' | '$mod' | '$regex' |
'$or' | '$and' | '$nor' | '$not' | '$all' | '$allMatch' | '$elemMatch';
/** Mango selector syntax.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/find.html#selector-syntax} */
type MangoSelector = {
[K in MangoOperator | string]: MangoSelector| MangoSelector[] | MangoValue | MangoValue[];
}
/** Mango sort syntax
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/find.html#sort-syntax} */
type SortOrder = string | string[] | { [key: string]: 'asc' | 'desc' };
/** Mango query syntax.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/database/find.html#db-find} */
interface MangoQuery {
/** JSON object describing criteria used to select documents. */
selector: MangoSelector;
/** Maximum number of results returned. @default 25 */
limit?: number;
/** Skip the first 'n' results, where 'n' is the value specified. */
skip?: number;
/** JSON array following sort syntax. */
sort?: SortOrder[];
/** JSON array specifying which fields of each object should be returned.
*
* If it is omitted, the entire object is returned.
*
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/find.html#filtering-fields} */
fields?: string[];
/* Instruct a query to use a specific index.
*
* Specified either as "<design_document>" or ["<design_document>", "<index_name>"]. */
use_index?: string | [string, string];
/** Read quorum needed for the result.
*
* @default 1 */
r?: number;
/** A string that enables you to specify which page of results you require.
*
* Used for paging through result sets. */
bookmark?: string;
/** Whether to update the index prior to returning the result.
*
* @default true */
update?: boolean;
/** Whether or not the view results should be returned from a “stable” set of shards. */
stable?: boolean;
/** Combination of update = false and stable = true options.
*
* Possible options: "ok", false (default). */
stale?: 'ok' | false;
/** Include execution statistics in the query response.
*
* Optional, default: false. */
execution_stats?: boolean;
}
/** Mango response.
* @see Docs: {@link https://docs.couchdb.org/en/latest/api/database/find.html#db-find} */
interface MangoResponse<D> {
/** Array of documents matching the search.
*
* In each matching document, the fields specified in the fields part of the request body are listed, along with
* their values. */
docs: (D & {_id: string, _rev:string})[];
/** A string that enables you to specify which page of results you require.
*
* Used for paging through result sets. */
bookmark?: string;
/** Execution warnings */
warning?: string;
/** Basic execution statistics for a specific request. */
execution_stats?: MangoExecutionStats;
}
/** Mango execution stats.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/find.html#execution-statistics} */
interface MangoExecutionStats {
/** Number of index keys examined. Currently always 0. */
total_keys_examined: number;
/** Number of documents fetched from the database / index.
*
* Equivalent to using include_docs = true in a view. */
total_docs_examined: number;
/** Number of documents fetched from the database using an out-of-band document fetch.
*
* This is only non-zero when read quorum > 1 is specified in the query parameters. */
total_quorum_docs_examined: number;
/** Number of results returned from the query. */
results_returned: number;
/** Total execution time in milliseconds as measured by the database. */
execution_time_ms: number;
}
/** Mango create index parameters.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/find.html#db-index} */
interface CreateIndexRequest{
/** JSON object describing the index to create */
index: {
/** Array of field names following the sort syntax. */
fields: SortOrder[],
/** A selector to apply to documents at indexing time, creating a partial index. */
partial_filter_selector?: MangoSelector
},
/** Name of the design document in which the index will be created. */
ddoc?: string
/** Name of the index. If no name is provided, a name will be generated automatically. */
name?: string,
/** Can be "json" or "text".
*
* @default "json" */
type?: 'json' | 'text',
/** This field sets whether the created index will be a partitioned or global index. */
partitioned?: boolean
}
/** Mango create index response.
* @see Docs: {@link http://docs.couchdb.org/en/latest/api/database/find.html#db-index} */
interface CreateIndexResponse {
/** Flag to show whether the index was created or one already exists.
*
* Can be “created” or “exists”. */
result: string,
/** Id of the design document the index was created in. */
id: string,
/** Name of the index created. */
name: string
}
}
export = nano;