///
import { IncrementOptions, DecrementOptions, AppendOptions, PrependOptions, BinaryCollection } from './binarycollection';
import { CppDocumentId, CppConnection, CppScanIterator, CppRangeScanOrchestratorOptions } from './binding';
import { Cluster } from './cluster';
import { CounterResult, ExistsResult, GetReplicaResult, GetResult, LookupInResult, LookupInReplicaResult, MutateInResult, MutationResult, ScanResult } from './crudoptypes';
import { CouchbaseList, CouchbaseMap, CouchbaseQueue, CouchbaseSet } from './datastructures';
import { DurabilityLevel, StoreSemantics } from './generaltypes';
import { MutationState } from './mutationstate';
import { CollectionQueryIndexManager } from './queryindexmanager';
import { RangeScan, SamplingScan, PrefixScan } from './rangeScan';
import { Scope } from './scope';
import { LookupInSpec, MutateInSpec } from './sdspecs';
import { StreamableReplicasPromise, StreamableScanPromise } from './streamablepromises';
import { Transcoder } from './transcoders';
import { NodeCallback, CasInput } from './utilities';
/**
* @category Key-Value
*/
export interface GetOptions {
/**
* Specifies a list of fields within the document which should be fetched.
* This allows for easy retrieval of select fields without incurring the
* overhead of fetching the whole document.
*/
project?: string[];
/**
* Indicates that the expiry of the document should be fetched alongside
* the data itself.
*/
withExpiry?: boolean;
/**
* Specifies an explicit transcoder to use for this specific operation.
*/
transcoder?: Transcoder;
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
}
/**
* @category Key-Value
*/
export interface ExistsOptions {
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
}
/**
* @category Key-Value
*/
export interface InsertOptions {
/**
* Specifies the expiry time for this document, specified in seconds.
*/
expiry?: number;
/**
* Specifies the level of synchronous durability for this operation.
*/
durabilityLevel?: DurabilityLevel;
/**
* Specifies the number of nodes this operation should be persisted to
* before it is considered successful. Note that this option is mutually
* exclusive of {@link durabilityLevel}.
*/
durabilityPersistTo?: number;
/**
* Specifies the number of nodes this operation should be replicated to
* before it is considered successful. Note that this option is mutually
* exclusive of {@link durabilityLevel}.
*/
durabilityReplicateTo?: number;
/**
* Specifies an explicit transcoder to use for this specific operation.
*/
transcoder?: Transcoder;
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
}
/**
* @category Key-Value
*/
export interface UpsertOptions {
/**
* Specifies the expiry time for this document, specified in seconds.
*/
expiry?: number;
/**
* Specifies that any existing expiry on the document should be preserved.
*/
preserveExpiry?: boolean;
/**
* Specifies the level of synchronous durability for this operation.
*/
durabilityLevel?: DurabilityLevel;
/**
* Specifies the number of nodes this operation should be persisted to
* before it is considered successful. Note that this option is mutually
* exclusive of {@link durabilityLevel}.
*/
durabilityPersistTo?: number;
/**
* Specifies the number of nodes this operation should be replicated to
* before it is considered successful. Note that this option is mutually
* exclusive of {@link durabilityLevel}.
*/
durabilityReplicateTo?: number;
/**
* Specifies an explicit transcoder to use for this specific operation.
*/
transcoder?: Transcoder;
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
}
/**
* @category Key-Value
*/
export interface ReplaceOptions {
/**
* Specifies the expiry time for this document, specified in seconds.
*/
expiry?: number;
/**
* Specifies that any existing expiry on the document should be preserved.
*/
preserveExpiry?: boolean;
/**
* If specified, indicates that operation should be failed if the CAS
* has changed from this value, indicating that the document has changed.
*/
cas?: CasInput;
/**
* Specifies the level of synchronous durability for this operation.
*/
durabilityLevel?: DurabilityLevel;
/**
* Specifies the number of nodes this operation should be persisted to
* before it is considered successful. Note that this option is mutually
* exclusive of {@link durabilityLevel}.
*/
durabilityPersistTo?: number;
/**
* Specifies the number of nodes this operation should be replicated to
* before it is considered successful. Note that this option is mutually
* exclusive of {@link durabilityLevel}.
*/
durabilityReplicateTo?: number;
/**
* Specifies an explicit transcoder to use for this specific operation.
*/
transcoder?: Transcoder;
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
}
/**
* @category Key-Value
*/
export interface RemoveOptions {
/**
* If specified, indicates that operation should be failed if the CAS
* has changed from this value, indicating that the document has changed.
*/
cas?: CasInput;
/**
* Specifies the level of synchronous durability for this operation.
*/
durabilityLevel?: DurabilityLevel;
/**
* Specifies the number of nodes this operation should be persisted to
* before it is considered successful. Note that this option is mutually
* exclusive of {@link durabilityLevel}.
*/
durabilityPersistTo?: number;
/**
* Specifies the number of nodes this operation should be replicated to
* before it is considered successful. Note that this option is mutually
* exclusive of {@link durabilityLevel}.
*/
durabilityReplicateTo?: number;
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
}
/**
* @category Key-Value
*/
export interface GetAnyReplicaOptions {
/**
* Specifies an explicit transcoder to use for this specific operation.
*/
transcoder?: Transcoder;
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
}
/**
* @category Key-Value
*/
export interface GetAllReplicasOptions {
/**
* Specifies an explicit transcoder to use for this specific operation.
*/
transcoder?: Transcoder;
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
}
/**
* @category Key-Value
*/
export interface TouchOptions {
/**
* Specifies the level of synchronous durability for this operation.
*/
durabilityLevel?: DurabilityLevel;
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
}
/**
* @category Key-Value
*/
export interface GetAndTouchOptions {
/**
* Specifies an explicit transcoder to use for this specific operation.
*/
transcoder?: Transcoder;
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
}
/**
* @category Key-Value
*/
export interface GetAndLockOptions {
/**
* Specifies an explicit transcoder to use for this specific operation.
*/
transcoder?: Transcoder;
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
}
/**
* @category Key-Value
*/
export interface UnlockOptions {
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
}
/**
* @category Key-Value
*/
export interface LookupInOptions {
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
/**
* For internal use only - allows access to deleted documents that are in 'tombstone' form
*
* @internal
*/
accessDeleted?: boolean;
}
/**
* @category Key-Value
*/
export interface LookupInAnyReplicaOptions {
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
}
/**
* @category Key-Value
*/
export interface LookupInAllReplicasOptions {
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
}
/**
* @category Key-Value
*/
export interface MutateInOptions {
/**
* Specifies the expiry time for this document, specified in seconds.
*/
expiry?: number;
/**
* Specifies that any existing expiry on the document should be preserved.
*/
preserveExpiry?: boolean;
/**
* If specified, indicates that operation should be failed if the CAS
* has changed from this value, indicating that the document has changed.
*/
cas?: CasInput;
/**
* Specifies the level of synchronous durability for this operation.
*/
durabilityLevel?: DurabilityLevel;
/**
* Specifies the number of nodes this operation should be persisted to
* before it is considered successful. Note that this option is mutually
* exclusive of {@link durabilityLevel}.
*/
durabilityPersistTo?: number;
/**
* Specifies the number of nodes this operation should be replicated to
* before it is considered successful. Note that this option is mutually
* exclusive of {@link durabilityLevel}.
*/
durabilityReplicateTo?: number;
/**
* Specifies the store semantics to use for this operation.
*/
storeSemantics?: StoreSemantics;
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
/**
* Specifies whether the operation should be performed with upsert semantics,
* creating the document if it does not already exist.
*
* @deprecated Use {@link MutateInOptions.storeSemantics} instead.
*/
upsertDocument?: boolean;
}
/**
* @category Key-Value
*/
export interface ScanOptions {
/**
* Specifies an explicit transcoder to use for this specific operation.
*/
transcoder?: Transcoder;
/**
* The timeout for this operation, represented in milliseconds.
*/
timeout?: number;
/**
* If the scan should only return document ids.
*/
idsOnly?: boolean;
/**
* The limit applied to the number of bytes returned from the server
* for each partition batch.
*/
batchByteLimit?: number;
/**
* The limit applied to the number of items returned from the server
* for each partition batch.
*/
batchItemLimit?: number;
/**
* Specifies a MutationState which the scan should be consistent with.
*
* @see {@link MutationState}
*/
consistentWith?: MutationState;
/**
* Specifies the number of vBuckets which the client should scan in parallel.
*/
concurrency?: number;
}
/**
* Exposes the operations which are available to be performed against a collection.
* Namely the ability to perform KV operations.
*
* @category Core
*/
export declare class Collection {
/**
* @internal
*/
static get DEFAULT_NAME(): string;
private _scope;
private _name;
private _conn;
private _kvScanTimeout;
private _scanBatchItemLimit;
private _scanBatchByteLimit;
/**
@internal
*/
constructor(scope: Scope, collectionName: string);
/**
@internal
*/
get conn(): CppConnection;
/**
@internal
*/
get cluster(): Cluster;
/**
@internal
*/
get scope(): Scope;
/**
@internal
*/
get transcoder(): Transcoder;
/**
@internal
*/
_mutationTimeout(durabilityLevel?: DurabilityLevel): number;
/**
* @internal
*/
_cppDocId(key: string): CppDocumentId;
/**
* @internal
*/
_encodeDoc(transcoder: Transcoder, value: any, callback: (err: Error | null, bytes: Buffer, flags: number) => void): void;
/**
* @internal
*/
_decodeDoc(transcoder: Transcoder, bytes: Buffer, flags: number, callback: (err: Error | null, content: any) => void): void;
/**
* @internal
*/
_subdocEncode(value: any): any;
/**
* @internal
*/
_subdocDecode(bytes: Buffer): any;
/**
* The name of the collection this Collection object references.
*/
get name(): string;
/**
* Retrieves the value of a document from the collection.
*
* @param key The document key to retrieve.
* @param options Optional parameters for this operation.
* @param callback A node-style callback to be invoked after execution.
*/
get(key: string, options?: GetOptions, callback?: NodeCallback): Promise;
private _projectedGet;
/**
* Checks whether a specific document exists or not.
*
* @param key The document key to check for existence.
* @param options Optional parameters for this operation.
* @param callback A node-style callback to be invoked after execution.
*/
exists(key: string, options?: ExistsOptions, callback?: NodeCallback): Promise;
/**
* @internal
*/
_getReplica(key: string, getAllReplicas: boolean, options?: {
transcoder?: Transcoder;
timeout?: number;
}, callback?: NodeCallback): StreamableReplicasPromise;
/**
* Retrieves the value of the document from any of the available replicas. This
* will return as soon as the first response is received from any replica node.
*
* @param key The document key to retrieve.
* @param options Optional parameters for this operation.
* @param callback A node-style callback to be invoked after execution.
*/
getAnyReplica(key: string, options?: GetAnyReplicaOptions, callback?: NodeCallback): Promise;
/**
* Retrieves the value of the document from all available replicas. Note that
* as replication is asynchronous, each node may return a different value.
*
* @param key The document key to retrieve.
* @param options Optional parameters for this operation.
* @param callback A node-style callback to be invoked after execution.
*/
getAllReplicas(key: string, options?: GetAllReplicasOptions, callback?: NodeCallback): Promise;
/**
* Inserts a new document to the collection, failing if the document already exists.
*
* @param key The document key to insert.
* @param value The value of the document to insert.
* @param options Optional parameters for this operation.
* @param callback A node-style callback to be invoked after execution.
*/
insert(key: string, value: any, options?: InsertOptions, callback?: NodeCallback): Promise;
/**
* Upserts a document to the collection. This operation succeeds whether or not the
* document already exists.
*
* @param key The document key to upsert.
* @param value The new value for the document.
* @param options Optional parameters for this operation.
* @param callback A node-style callback to be invoked after execution.
*/
upsert(key: string, value: any, options?: UpsertOptions, callback?: NodeCallback): Promise;
/**
* Replaces the value of an existing document. Failing if the document does not exist.
*
* @param key The document key to replace.
* @param value The new value for the document.
* @param options Optional parameters for this operation.
* @param callback A node-style callback to be invoked after execution.
*/
replace(key: string, value: any, options?: ReplaceOptions, callback?: NodeCallback): Promise;
/**
* Remove an existing document from the collection.
*
* @param key The document key to remove.
* @param options Optional parameters for this operation.
* @param callback A node-style callback to be invoked after execution.
*/
remove(key: string, options?: RemoveOptions, callback?: NodeCallback): Promise;
/**
* Retrieves the value of the document and simultanously updates the expiry time
* for the same document.
*
* @param key The document to fetch and touch.
* @param expiry The new expiry to apply to the document, specified in seconds.
* @param options Optional parameters for this operation.
* @param callback A node-style callback to be invoked after execution.
*/
getAndTouch(key: string, expiry: number, options?: GetAndTouchOptions, callback?: NodeCallback): Promise;
/**
* Updates the expiry on an existing document.
*
* @param key The document key to touch.
* @param expiry The new expiry to set for the document, specified in seconds.
* @param options Optional parameters for this operation.
* @param callback A node-style callback to be invoked after execution.
*/
touch(key: string, expiry: number, options?: TouchOptions, callback?: NodeCallback): Promise;
/**
* Locks a document and retrieves the value of that document at the time it is locked.
*
* @param key The document key to retrieve and lock.
* @param lockTime The amount of time to lock the document for, specified in seconds.
* @param options Optional parameters for this operation.
* @param callback A node-style callback to be invoked after execution.
*/
getAndLock(key: string, lockTime: number, options?: GetAndLockOptions, callback?: NodeCallback): Promise;
/**
* Unlocks a previously locked document.
*
* @param key The document key to unlock.
* @param cas The CAS of the document, used to validate lock ownership.
* @param options Optional parameters for this operation.
* @param callback A node-style callback to be invoked after execution.
*/
unlock(key: string, cas: CasInput, options?: UnlockOptions, callback?: NodeCallback): Promise;
/**
* @internal
*/
_continueScan(iterator: CppScanIterator, transcoder: Transcoder, emitter: StreamableScanPromise): void;
/**
* @internal
*/
_doScan(scanType: RangeScan | SamplingScan | PrefixScan, options: CppRangeScanOrchestratorOptions, transcoder: Transcoder, callback?: NodeCallback): StreamableScanPromise;
/**
* Performs a key-value scan operation.
*
* Use this API for low concurrency batch queries where latency is not a critical as the system
* may have to scan a lot of documents to find the matching documents.
* For low latency range queries, it is recommended that you use SQL++ with the necessary indexes.
*
* @param scanType The type of scan to execute.
* @param options Optional parameters for the scan operation.
* @param callback A node-style callback to be invoked after execution.
*/
scan(scanType: RangeScan | SamplingScan | PrefixScan, options?: ScanOptions, callback?: NodeCallback): Promise;
/**
* Performs a lookup-in operation against a document, fetching individual fields or
* information about specific fields inside the document value.
*
* @param key The document key to look in.
* @param specs A list of specs describing the data to fetch from the document.
* @param options Optional parameters for this operation.
* @param callback A node-style callback to be invoked after execution.
*/
lookupIn(key: string, specs: LookupInSpec[], options?: LookupInOptions, callback?: NodeCallback): Promise;
/**
* @internal
*/
_lookupInReplica(key: string, lookupInAllReplicas: boolean, specs: LookupInSpec[], options?: {
timeout?: number;
}, callback?: NodeCallback): StreamableReplicasPromise;
/**
* Performs a lookup-in operation against a document, fetching individual fields or
* information about specific fields inside the document value from any of the available
* replicas in the cluster.
*
* @param key The document key to look in.
* @param specs A list of specs describing the data to fetch from the document.
* @param options Optional parameters for this operation.
* @param callback A node-style callback to be invoked after execution.
*/
lookupInAnyReplica(key: string, specs: LookupInSpec[], options?: LookupInOptions, callback?: NodeCallback): Promise;
/**
* Performs a lookup-in operation against a document, fetching individual fields or
* information about specific fields inside the document value from all available replicas.
* Note that as replication is asynchronous, each node may return a different value.
*
* @param key The document key to look in.
* @param specs A list of specs describing the data to fetch from the document.
* @param options Optional parameters for this operation.
* @param callback A node-style callback to be invoked after execution.
*/
lookupInAllReplicas(key: string, specs: LookupInSpec[], options?: LookupInOptions, callback?: NodeCallback): Promise;
/**
* Performs a mutate-in operation against a document. Allowing atomic modification of
* specific fields within a document. Also enables access to document extended-attributes.
*
* @param key The document key to mutate.
* @param specs A list of specs describing the operations to perform on the document.
* @param options Optional parameters for this operation.
* @param callback A node-style callback to be invoked after execution.
*/
mutateIn(key: string, specs: MutateInSpec[], options?: MutateInOptions, callback?: NodeCallback): Promise;
/**
* Returns a CouchbaseList permitting simple list storage in a document.
*
* @param key The document key the data-structure resides in.
*/
list(key: string): CouchbaseList;
/**
* Returns a CouchbaseQueue permitting simple queue storage in a document.
*
* @param key The document key the data-structure resides in.
*/
queue(key: string): CouchbaseQueue;
/**
* Returns a CouchbaseMap permitting simple map storage in a document.
*
* @param key The document key the data-structure resides in.
*/
map(key: string): CouchbaseMap;
/**
* Returns a CouchbaseSet permitting simple set storage in a document.
*
* @param key The document key the data-structure resides in.
*/
set(key: string): CouchbaseSet;
/**
* Returns a BinaryCollection object reference, allowing access to various
* binary operations possible against a collection.
*/
binary(): BinaryCollection;
/**
* @internal
*/
_binaryIncrement(key: string, delta: number, options?: IncrementOptions, callback?: NodeCallback): Promise;
/**
* @internal
*/
_binaryDecrement(key: string, delta: number, options?: DecrementOptions, callback?: NodeCallback): Promise;
/**
* @internal
*/
_binaryAppend(key: string, value: string | Buffer, options?: AppendOptions, callback?: NodeCallback): Promise;
/**
* @internal
*/
_binaryPrepend(key: string, value: string | Buffer, options?: PrependOptions, callback?: NodeCallback): Promise;
/**
* Returns a CollectionQueryIndexManager which can be used to manage the query indexes
* of this collection.
*/
queryIndexes(): CollectionQueryIndexManager;
}