This is an automated email from the ASF dual-hosted git repository. glynnbird pushed a commit to branch issue77 in repository https://gitbox.apache.org/repos/asf/couchdb-nano.git
commit 03c4b747ba80ed1da2ce321c87656a7ae4f3e5f3 Author: Glynn Bird <[email protected]> AuthorDate: Mon Jun 25 15:54:58 2018 +0100 add typescript definition in this repo - issue #77 --- lib/nano.d.ts | 1143 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 + 2 files changed, 1145 insertions(+) diff --git a/lib/nano.d.ts b/lib/nano.d.ts new file mode 100644 index 0000000..ec6142c --- /dev/null +++ b/lib/nano.d.ts @@ -0,0 +1,1143 @@ +// 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> +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.3 + +/// <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; + // http://docs.couchdb.org/en/latest/api/database/find.html#db-find + find(query: MangoQuery, callback?: Callback<MangoResponse<D>>): 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 { + include_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 administrator’s 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 isn’t 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 isn’t 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 isn’t 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 document’s 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 { + // Document’s 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. Doesn’t 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; + + // Attachment’s 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[]; + + // Document’s 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 isn’t 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?: 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 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. + 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 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 isn’t 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 isn’t 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 isn’t 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; + } + + type MangoValue = number | string | Date | boolean; + + // http://docs.couchdb.org/en/latest/api/database/find.html#selector-syntax + interface MangoSelector { + [key: string]: MangoSelector | MangoValue | MangoValue[]; + } + + // http://docs.couchdb.org/en/latest/api/database/find.html#sort-syntax + type SortOrder = string | string[] | { [key: string]: 'asc' | 'desc' }; + + interface MangoQuery { + // JSON object describing criteria used to select documents. + selector: MangoSelector; + + // Maximum number of results returned. Default is 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. + // 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. This defaults to 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 is 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; + } + + 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[]; + + // 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; + } + + // 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; + } +} + +export = nano; \ No newline at end of file diff --git a/package.json b/package.json index 3d8dabf..83938b7 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "database" ], "dependencies": { + "@types/request": "^2.47.1", "cloudant-follow": "~0.17.0", "debug": "^2.2.0", "errs": "^0.3.2", @@ -44,6 +45,7 @@ "checkcoverage": "istanbul check-coverage --statements 100 --functions 100 --lines 100 --branches 100" }, "main": "./lib/nano.js", + "types": "./lib/nano.d.ts", "engines": { "node": ">=6" },
