Files
DefinitelyTyped/types/nano/index.d.ts
Kovács Vince 8c5ae4678c [nano] Add attachment type and insert attachment method return type (#20430)
* Add AttachmentData to multipart insert method

* Add attachment insert method return type

* Update tests

* Fix tslint error
2017-10-10 12:56:03 -07:00

1049 lines
36 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.

// 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>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="node" />
import { EventEmitter } from "events";
import { CoreOptions, Request } from "request";
declare function nano(
config: nano.Configuration | string
): nano.ServerScope | nano.DocumentScope<any>;
declare namespace nano {
interface Configuration {
url: string;
cookie?: string;
requestDefaults?: CoreOptions;
log?(id: string, args: any): void;
parseUrl?: boolean;
request?(params: any): void;
}
type Callback<R> = (error: any, response: R, headers?: any) => void;
interface ServerScope {
readonly config: ServerConfig;
db: DatabaseScope;
use<D>(db: string): DocumentScope<D>;
scope<D>(db: string): DocumentScope<D>;
request: RequestFunction;
relax: RequestFunction;
dinosaur: RequestFunction;
// http://docs.couchdb.org/en/latest/api/server/authn.html#cookie-authentication
auth(username: string, userpass: string, callback?: Callback<DatabaseAuthResponse>): Request;
// http://docs.couchdb.org/en/latest/api/server/authn.html#get--_session
session(callback?: Callback<DatabaseSessionResponse>): Request;
// http://docs.couchdb.org/en/latest/api/server/common.html#get--_db_updates
updates(callback?: Callback<DatabaseUpdatesResponse>): Request;
// http://docs.couchdb.org/en/latest/api/server/common.html#get--_db_updates
updates(params: UpdatesParams, callback?: Callback<DatabaseUpdatesResponse>): Request;
followUpdates(callback?: Callback<any>): EventEmitter;
followUpdates(params: any, callback?: Callback<any>): EventEmitter;
uuids(num: number, callback: Callback<any>): Request;
}
interface DatabaseScope {
// http://docs.couchdb.org/en/latest/api/database/common.html#put--db
create(name: string, callback?: Callback<DatabaseCreateResponse>): Request;
// http://docs.couchdb.org/en/latest/api/database/common.html#get--db
get(name: string, callback?: Callback<DatabaseGetResponse>): Request;
// http://docs.couchdb.org/en/latest/api/database/common.html#delete--db
destroy(name: string, callback?: Callback<OkResponse>): Request;
// http://docs.couchdb.org/en/latest/api/server/common.html#get--_all_dbs
list(callback?: Callback<string[]>): Request;
use<D>(db: string): DocumentScope<D>;
compact(name: string, callback?: Callback<OkResponse>): Request;
// http://docs.couchdb.org/en/latest/api/database/compact.html#post--db-_compact
compact(name: string, designname: string, callback?: Callback<OkResponse>): Request;
// 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>
): Request;
// 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>
): Request;
// http://docs.couchdb.org/en/latest/api/database/changes.html#get--db-_changes
changes(name: string, callback?: Callback<DatabaseChangesResponse>): Request;
// http://docs.couchdb.org/en/latest/api/database/compact.html#post--db-_compact
changes(name: string, params: DatabaseChangesParams, callback?: Callback<DatabaseChangesResponse>): Request;
follow(source: string, callback?: Callback<any>): EventEmitter;
follow(source: string, params: DatabaseScopeFollowUpdatesParams, callback?: Callback<any>): EventEmitter;
followUpdates(params?: any, callback?: Callback<any>): EventEmitter;
// http://docs.couchdb.org/en/latest/api/server/common.html#get--_db_updates
updates(callback?: Callback<DatabaseUpdatesResponse>): Request;
// http://docs.couchdb.org/en/latest/api/server/common.html#get--_db_updates
updates(params: UpdatesParams, callback?: Callback<DatabaseUpdatesResponse>): Request;
}
interface DocumentScope<D> {
readonly config: ServerConfig;
// http://docs.couchdb.org/en/latest/api/database/common.html#get--db
info(callback?: Callback<DatabaseGetResponse>): Request;
// http://docs.couchdb.org/en/latest/api/server/common.html#post--_replicate
replicate<D>(
target: string | DocumentScope<D>,
callback?: Callback<DatabaseReplicateResponse>
): Request;
// http://docs.couchdb.org/en/latest/api/server/common.html#post--_replicate
replicate(
target: string | DocumentScope<D>,
options: any,
callback?: Callback<DatabaseReplicateResponse>
): Request;
// http://docs.couchdb.org/en/latest/api/database/compact.html#post--db-_compact
compact(callback?: Callback<any>): Request;
// http://docs.couchdb.org/en/latest/api/database/changes.html#get--db-_changes
changes(callback?: Callback<DatabaseChangesResponse>): Request;
// http://docs.couchdb.org/en/latest/api/database/changes.html#get--db-_changes
changes(params: DatabaseChangesParams, callback?: Callback<DatabaseChangesResponse>): Request;
follow(callback?: Callback<any>): EventEmitter;
follow(params: DocumentScopeFollowUpdatesParams, callback?: Callback<any>): EventEmitter;
// http://docs.couchdb.org/en/latest/api/server/authn.html#cookie-authentication
auth(username: string, userpass: string, callback?: Callback<DatabaseAuthResponse>): Request;
// http://docs.couchdb.org/en/latest/api/server/authn.html#get--_session
session(callback?: Callback<any>): Request;
// http://docs.couchdb.org/en/latest/api/database/common.html#post--db
// http://docs.couchdb.org/en/latest/api/document/common.html#put--db-docid
insert(document: ViewDocument<D> | D & MaybeDocument, callback?: Callback<DocumentInsertResponse>): Request;
// http://docs.couchdb.org/en/latest/api/database/common.html#post--db
// 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>
): Request;
// http://docs.couchdb.org/en/latest/api/document/common.html#get--db-docid
get(docname: string, callback?: Callback<DocumentGetResponse & D>): Request;
// http://docs.couchdb.org/en/latest/api/document/common.html#get--db-docid
get(docname: string, params?: DocumentGetParams, callback?: Callback<DocumentGetResponse & D>): Request;
// http://docs.couchdb.org/en/latest/api/document/common.html#head--db-docid
head(docname: string, callback: Callback<any>): Request;
// http://docs.couchdb.org/en/latest/api/document/common.html#copy--db-docid
copy(src_document: string, dst_document: string, callback?: Callback<DocumentCopyResponse>): Request;
// http://docs.couchdb.org/en/latest/api/document/common.html#copy--db-docid
copy(
src_document: string,
dst_document: string,
options: DocumentCopyOptions,
callback?: Callback<DocumentCopyResponse>
): Request;
// http://docs.couchdb.org/en/latest/api/document/common.html#delete--db-docid
destroy(docname: string, rev: string, callback?: Callback<DocumentDestroyResponse>): Request;
bulk(docs: BulkModifyDocsWrapper, callback?: Callback<any>): Request;
bulk(docs: BulkModifyDocsWrapper, params: any, callback?: Callback<any>): Request;
// http://docs.couchdb.org/en/latest/api/database/bulk-api.html#get--db-_all_docs
list(callback?: Callback<DocumentListResponse<D>>): Request;
// http://docs.couchdb.org/en/latest/api/database/bulk-api.html#get--db-_all_docs
list(params: DocumentListParams, callback?: Callback<DocumentListResponse<D>>): Request;
// http://docs.couchdb.org/en/latest/api/database/bulk-api.html#post--db-_all_docs
fetch(docnames: BulkFetchDocsWrapper, callback?: Callback<DocumentFetchResponse<D>>): Request;
// http://docs.couchdb.org/en/latest/api/database/bulk-api.html#post--db-_all_docs
fetch(
docnames: BulkFetchDocsWrapper,
params: DocumentFetchParams,
callback?: Callback<DocumentFetchResponse<D>>
): Request;
// http://docs.couchdb.org/en/latest/api/database/bulk-api.html#post--db-_all_docs
fetchRevs(docnames: BulkFetchDocsWrapper, callback?: Callback<DocumentFetchRevsResponse>): Request;
// http://docs.couchdb.org/en/latest/api/database/bulk-api.html#post--db-_all_docs
fetchRevs(
docnames: BulkFetchDocsWrapper,
params: DocumentFetchParams,
callback?: Callback<DocumentFetchRevsResponse>
): Request;
multipart: Multipart<D>;
attachment: Attachment;
// 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>
): Request;
// 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>
): Request;
// http://docs.couchdb.org/en/latest/api/ddoc/render.html#put--db-_design-ddoc-_update-func-docid
atomic(
designname: string,
updatename: string,
docname: string,
callback?: Callback<OkResponse>
): Request;
// http://docs.couchdb.org/en/latest/api/ddoc/render.html#put--db-_design-ddoc-_update-func-docid
atomic(
designname: string,
updatename: string,
docname: string,
body: any,
callback?: Callback<OkResponse>
): Request;
// 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>
): Request;
// 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>
): Request;
search(
designname: string,
searchname: string,
callback?: Callback<any>
): Request;
search(
designname: string,
searchname: string,
params: any,
callback?: Callback<any>
): Request;
spatial(
ddoc: string,
viewname: string,
callback?: Callback<any>
): Request;
spatial(
ddoc: string,
viewname: string,
params: any,
callback?: Callback<any>
): Request;
// http://docs.couchdb.org/en/latest/api/ddoc/views.html#get--db-_design-ddoc-_view-view
// http://docs.couchdb.org/en/latest/api/ddoc/views.html#post--db-_design-ddoc-_view-view
view<V>(
designname: string,
viewname: string,
callback?: Callback<DocumentViewResponse<V>>
): Request;
// http://docs.couchdb.org/en/latest/api/ddoc/views.html#get--db-_design-ddoc-_view-view
// http://docs.couchdb.org/en/latest/api/ddoc/views.html#post--db-_design-ddoc-_view-view
view<V>(
designname: string,
viewname: string,
params: DocumentViewParams,
callback?: Callback<DocumentViewResponse<V>>
): Request;
// 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>
): Request;
// 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>
): Request;
server: ServerScope;
}
interface AttachmentData {
name: string;
data: any;
content_type: any;
}
interface Multipart<D> {
// http://docs.couchdb.org/en/latest/api/document/common.html#creating-multiple-attachments
insert(doc: D, attachments: AttachmentData[], callback?: Callback<DocumentInsertResponse>): Request;
// http://docs.couchdb.org/en/latest/api/document/common.html#creating-multiple-attachments
insert(doc: D, attachments: AttachmentData[], params: any, callback?: Callback<DocumentInsertResponse>): Request;
get(docname: string, callback?: Callback<any>): Request;
get(docname: string, params: any, callback?: Callback<any>): Request;
}
interface Attachment {
insert(docname: string, attname: string, att: null, contenttype: string, params?: any): NodeJS.WritableStream;
insert(
docname: string,
attname: string,
att: any,
contenttype: string,
callback?: Callback<DocumentInsertResponse>
): Request;
insert(
docname: string,
attname: string,
att: any,
contenttype: string,
params: any,
callback?: Callback<DocumentInsertResponse>
): Request;
get(docname: string, attname: string): NodeJS.ReadableStream;
get(docname: string, attname: string, callback?: Callback<any>): Request;
get(
docname: string,
attname: string,
params: any,
callback?: Callback<any>
): Request;
destroy(docname: string, attname: string, callback?: Callback<any>): Request;
destroy(
docname: string,
attname: string,
params: any,
callback?: Callback<any>
): Request;
}
interface ServerConfig {
url: string;
db: string;
}
type RequestFunction = (
options?: RequestOptions | string,
callback?: Callback<any>
) => void;
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[];
}
// 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 DocumentScopeFollowUpdatesParams {
inlucde_docs?: boolean;
since?: string;
heartbeat?: number;
feed?: "continuous";
filter?: string | FollowUpdatesParamsFilterFunction;
query_params?: any;
headers?: any;
inactivity_ms?: number;
max_retry_seconds?: number;
initial_retry_delay?: number;
response_grace_time?: number;
}
interface DatabaseScopeFollowUpdatesParams
extends DocumentScopeFollowUpdatesParams {
db: string;
}
type FollowUpdatesParamsFilterFunction = (doc: any, req: any) => boolean;
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
// -------------------------------------
interface View<D> {
map?(doc: D & Document): void;
reduce?(doc: D & Document): void;
}
interface ViewDocument<D> extends IdentifiedDocument {
views: {
[name: string]: View<D>
};
}
// -------------------------------------
// Database scope request and response
// -------------------------------------
// 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;
}
// 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;
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;
}
// http://docs.couchdb.org/en/latest/api/database/common.html#delete--db
// http://docs.couchdb.org/en/latest/api/database/compact.html#post--db-_compact
interface OkResponse {
// Operation status
ok: boolean;
}
// 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;
}
// 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;
}
// 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;
}
// 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 is false.
conflicts?: boolean;
// Return the change results in descending sequence order (most recent change first). Default is false.
descending?: boolean;
// - 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.
feed?: "normal" | "longpoll" | "continuous" | "eventsource";
// Reference to a filter function from a design document that 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. Default is 60000.
// May be true to use default value.
heartbeat?: number;
// Include the associated document with each result. If there are conflicts, only the winning revision is returned.
// Default is 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 is false.
attachments?: boolean;
// Include encoding information in attachment stubs if include_docs is true and the particular attachment is
// compressed. Ignored if include_docs isnt true. Default is 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 is 0.
since?: 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).
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 _view for more info.
view?: string;
}
// 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;
}
// 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[];
}
// 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[];
}
// 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;
}
// 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;
}
// 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
// -------------------------------------
interface DocumentResponseRowMeta {
id: string;
key: string;
value: {
rev: string;
};
}
interface DocumentResponseRow<D> extends DocumentResponseRowMeta {
doc?: D & Document;
}
// http://docs.couchdb.org/en/latest/api/database/common.html#post--db
// http://docs.couchdb.org/en/latest/api/document/common.html#put--db-docid
interface DocumentInsertParams {
// 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. Possible values: true (default) and false. 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.
new_edits?: boolean;
}
// http://docs.couchdb.org/en/latest/api/database/common.html#post--db
// 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;
}
// 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;
}
// http://docs.couchdb.org/en/latest/api/document/common.html#get--db-docid
interface DocumentGetParams {
// Includes attachments bodies in response. Default is false.
attachments?: boolean;
// Includes encoding information in attachment stubs if the particular attachment is compressed. Default is
// 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 is false.
conflicts?: boolean;
// Includes information about deleted conflicted revisions. Default is false.
deleted_conflicts?: boolean;
// Forces retrieving latest “leaf” revision, no matter what rev was requested. Default is false.
latest?: boolean;
// Includes last update sequence for the document. Default is false.
local_seq?: boolean;
// Acts same as specifying all conflicts, deleted_conflicts and revs_info query parameters. Default is 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 is false.
revs_info?: boolean;
}
// 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;
}
interface DocumentCopyOptions {
overwrite?: boolean;
}
// http://docs.couchdb.org/en/latest/api/document/common.html#copy--db-docid
interface DocumentCopyResponse {
// Document ID
id: string;
// Operation status
ok: boolean;
// Revision MVCC token
rev: string;
}
// 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 is false.
conflicts?: boolean;
// Return the documents in descending by key order. Default is false.
descending?: boolean;
// Stop returning records when the specified key is reached.
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 is false.
include_docs?: boolean;
// Specifies whether the specified end key should be included in the result. Default is true.
inclusive_end?: boolean;
// Return only documents that match the specified key.
key?: string;
// Return only documents that match the specified keys.
keys?: string; // This can be string[] too ???
// 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 is 0.
skip?: number;
// Allow the results from a stale view to be used, without triggering 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.
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 is false.
update_seq?: boolean;
}
// 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;
}
interface DocumentFetchParams {
conflicts?: boolean;
descending?: boolean;
end_key?: string;
end_key_doc_id?: string;
inclusive_end?: boolean;
key?: string;
keys?: string; // This can be string[] too ???
limit?: number;
skip?: number;
stale?: string;
start_key?: string;
start_key_doc_id?: string;
update_seq?: boolean;
}
interface DocumentFetchResponse<D> {
offset: number;
rows: Array<DocumentResponseRow<D>>;
total_rows: number;
update_seq?: number;
}
interface DocumentFetchRevsResponse {
offset: number;
rows: DocumentResponseRowMeta[];
total_rows: number;
update_seq?: number;
}
// 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 is false.
conflicts?: boolean;
// Return the documents in descending by key order. Default is 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 is false.
group?: boolean;
// Specify the group level to be used.
group_level?: number;
// Include the associated document with each row. Default is 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 is false.
attachments?: boolean;
// Include encoding information in attachment stubs if include_docs is true and the particular attachment is
// compressed. Ignored if include_docs isnt true. Default is false.
att_encoding_info?: boolean;
// Specifies whether the specified end key should be included in the result. Default is 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 is true.
reduce?: boolean;
// Skip this number of records before starting to return the results. Default is 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 is true.
sorted?: boolean;
// Whether or not the view results should be returned from a stable set of shards. Default is 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 is true.
update?: string;
// Response includes an update_seq value indicating which sequence id of the database the view reflects.
// Default is false.
update_seq?: boolean;
}
// http://docs.couchdb.org/en/latest/api/ddoc/views.html#get--db-_design-ddoc-_view-view
interface DocumentViewResponse<V> {
// 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;
}>;
// Number of documents in the database/view.
total_rows: number;
// Current update sequence for the database
update_seq: any;
}
}
export = nano;