arangojs 7.8.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +264 -3
- package/CONTRIBUTING.md +1 -1
- package/MIGRATING.md +126 -2
- package/README.md +7 -13
- package/analyzer.d.ts +531 -253
- package/analyzer.d.ts.map +1 -1
- package/analyzer.js +9 -8
- package/analyzer.js.map +1 -1
- package/aql.d.ts +122 -139
- package/aql.d.ts.map +1 -1
- package/aql.js +146 -148
- package/aql.js.map +1 -1
- package/collection.d.ts +311 -310
- package/collection.d.ts.map +1 -1
- package/collection.js +163 -96
- package/collection.js.map +1 -1
- package/connection.d.ts +65 -52
- package/connection.d.ts.map +1 -1
- package/connection.js +142 -140
- package/connection.js.map +1 -1
- package/cursor.d.ts +108 -26
- package/cursor.d.ts.map +1 -1
- package/cursor.js +24 -23
- package/cursor.js.map +1 -1
- package/database.d.ts +298 -330
- package/database.d.ts.map +1 -1
- package/database.js +178 -252
- package/database.js.map +1 -1
- package/documents.d.ts +3 -4
- package/documents.d.ts.map +1 -1
- package/documents.js +0 -1
- package/documents.js.map +1 -1
- package/error.d.ts +3 -6
- package/error.d.ts.map +1 -1
- package/error.js +5 -7
- package/error.js.map +1 -1
- package/foxx-manifest.d.ts +7 -8
- package/foxx-manifest.d.ts.map +1 -1
- package/foxx-manifest.js +1 -1
- package/foxx-manifest.js.map +1 -1
- package/graph.d.ts +38 -56
- package/graph.d.ts.map +1 -1
- package/graph.js +59 -63
- package/graph.js.map +1 -1
- package/index.d.ts +6 -8
- package/index.d.ts.map +1 -1
- package/index.js +1 -6
- package/index.js.map +1 -1
- package/indexes.d.ts +348 -127
- package/indexes.d.ts.map +1 -1
- package/indexes.js +1 -3
- package/indexes.js.map +1 -1
- package/lib/blob.d.ts +0 -2
- package/lib/blob.d.ts.map +1 -1
- package/lib/blob.js +0 -1
- package/lib/blob.js.map +1 -1
- package/lib/btoa.d.ts +1 -3
- package/lib/btoa.d.ts.map +1 -1
- package/lib/btoa.js +3 -5
- package/lib/btoa.js.map +1 -1
- package/lib/btoa.web.d.ts +1 -3
- package/lib/btoa.web.d.ts.map +1 -1
- package/lib/btoa.web.js +4 -6
- package/lib/btoa.web.js.map +1 -1
- package/lib/codes.d.ts +2 -2
- package/lib/codes.d.ts.map +1 -1
- package/lib/codes.js +3 -3
- package/lib/codes.js.map +1 -1
- package/lib/errback.d.ts +0 -2
- package/lib/errback.d.ts.map +1 -1
- package/lib/errback.js.map +1 -1
- package/lib/joinPath.d.ts +0 -2
- package/lib/joinPath.d.ts.map +1 -1
- package/lib/joinPath.js +0 -2
- package/lib/joinPath.js.map +1 -1
- package/lib/joinPath.web.d.ts +1 -3
- package/lib/joinPath.web.d.ts.map +1 -1
- package/lib/joinPath.web.js +7 -4
- package/lib/joinPath.web.js.map +1 -1
- package/lib/multipart.d.ts +0 -4
- package/lib/multipart.d.ts.map +1 -1
- package/lib/multipart.js +16 -37
- package/lib/multipart.js.map +1 -1
- package/lib/multipart.web.d.ts +0 -2
- package/lib/multipart.web.d.ts.map +1 -1
- package/lib/multipart.web.js +0 -2
- package/lib/multipart.web.js.map +1 -1
- package/lib/normalizeUrl.d.ts +0 -2
- package/lib/normalizeUrl.d.ts.map +1 -1
- package/lib/normalizeUrl.js +0 -2
- package/lib/normalizeUrl.js.map +1 -1
- package/lib/omit.d.ts +1 -3
- package/lib/omit.d.ts.map +1 -1
- package/lib/omit.js +1 -2
- package/lib/omit.js.map +1 -1
- package/lib/querystringify.d.ts +4 -0
- package/lib/querystringify.d.ts.map +1 -0
- package/lib/querystringify.js +20 -0
- package/lib/querystringify.js.map +1 -0
- package/lib/querystringify.web.d.ts +2 -0
- package/lib/querystringify.web.d.ts.map +1 -0
- package/lib/querystringify.web.js +30 -0
- package/lib/querystringify.web.js.map +1 -0
- package/lib/request.d.ts +0 -1
- package/lib/request.d.ts.map +1 -1
- package/lib/request.js +6 -3
- package/lib/request.js.map +1 -1
- package/lib/request.node.d.ts +2 -8
- package/lib/request.node.d.ts.map +1 -1
- package/lib/request.node.js +16 -7
- package/lib/request.node.js.map +1 -1
- package/lib/request.web.d.ts +2 -3
- package/lib/request.web.d.ts.map +1 -1
- package/lib/request.web.js +26 -29
- package/lib/request.web.js.map +1 -1
- package/lib/xhr.d.ts +1 -3
- package/lib/xhr.d.ts.map +1 -1
- package/lib/xhr.js +0 -2
- package/lib/xhr.js.map +1 -1
- package/package.json +5 -6
- package/route.d.ts +1 -2
- package/route.d.ts.map +1 -1
- package/route.js +1 -2
- package/route.js.map +1 -1
- package/transaction.d.ts +31 -6
- package/transaction.d.ts.map +1 -1
- package/transaction.js +13 -6
- package/transaction.js.map +1 -1
- package/view.d.ts +237 -181
- package/view.d.ts.map +1 -1
- package/view.js +17 -25
- package/view.js.map +1 -1
- package/web.js +1 -1
- package/web.js.map +1 -1
- package/lib/error.d.ts +0 -18
- package/lib/error.d.ts.map +0 -1
- package/lib/error.js +0 -18
- package/lib/error.js.map +0 -1
package/connection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * ```ts\n * import type { Config } from \"arangojs/connection\";\n * ```\n *\n * The \"connection\" module provides connection and configuration related types\n * for TypeScript.\n *\n * @packageDocumentation\n */\nimport { ClientRequest } from \"http\";\nimport { AgentOptions as NodeAgentOptions } from \"https\";\nimport { stringify as querystringify } from \"querystring\";\nimport { LinkedList } from \"x3-linkedlist\";\nimport { Database } from \"./database\";\nimport {\n ArangoError,\n HttpError,\n isArangoError,\n isArangoErrorResponse,\n isSystemError,\n} from \"./error\";\nimport { btoa } from \"./lib/btoa\";\nimport { ERROR_ARANGO_CONFLICT } from \"./lib/codes\";\nimport { Errback } from \"./lib/errback\";\nimport { normalizeUrl } from \"./lib/normalizeUrl\";\nimport {\n ArangojsError,\n ArangojsResponse,\n createRequest,\n isBrowser,\n RequestFunction,\n} from \"./lib/request\";\n\nconst MIME_JSON = /\\/(json|javascript)(\\W|$)/;\nconst LEADER_ENDPOINT_HEADER = \"x-arango-endpoint\";\n\n/**\n * Generic type representing an object with values of a given value type.\n *\n * @param T - Type of the object's property values.\n */\nexport type Dict<T> = { [key: string]: T };\n\n/**\n * Determines the behavior when multiple URLs are used:\n *\n * - `\"NONE\"`: No load balancing. All requests will be handled by the first\n * URL in the list until a network error is encountered. On network error,\n * arangojs will advance to using the next URL in the list.\n *\n * - `\"ONE_RANDOM\"`: Randomly picks one URL from the list initially, then\n * behaves like `\"NONE\"`.\n *\n * - `\"ROUND_ROBIN\"`: Every sequential request uses the next URL in the list.\n */\nexport type LoadBalancingStrategy = \"NONE\" | \"ROUND_ROBIN\" | \"ONE_RANDOM\";\n\n/**\n * An arbitrary object with string values representing HTTP headers and their\n * values.\n *\n * Header names should always be lowercase.\n */\nexport type Headers = Dict<string>;\n\n/**\n * An arbitrary object with scalar values representing query string parameters\n * and their values.\n */\nexport type Params = Dict<any>;\n\n/**\n * Generic properties shared by all ArangoDB HTTP API responses.\n */\nexport type ArangoResponseMetadata = {\n /**\n * Indicates that the request was successful.\n */\n error: false;\n /**\n * Response status code, typically `200`.\n */\n code: number;\n};\n\nfunction clean<T>(obj: T) {\n const result = {} as typeof obj;\n for (const key of Object.keys(obj)) {\n const value = (obj as any)[key];\n if (value === undefined) continue;\n (result as any)[key] = value;\n }\n return result;\n}\n\n/**\n * Credentials for HTTP Basic authentication.\n */\nexport type BasicAuthCredentials = {\n /**\n * Username to use for authentication, e.g. `\"root\"`.\n */\n username: string;\n /**\n * Password to use for authentication. Defaults to an empty string.\n */\n password?: string;\n};\n\n/**\n * Credentials for HTTP Bearer token authentication.\n */\nexport type BearerAuthCredentials = {\n /**\n * Bearer token to use for authentication.\n */\n token: string;\n};\n\nfunction isBearerAuth(auth: any): auth is BearerAuthCredentials {\n return auth.hasOwnProperty(\"token\");\n}\n\n/**\n * @internal\n * @hidden\n */\nfunction generateStackTrace() {\n let err = new Error();\n if (!err.stack) {\n try {\n throw err;\n } catch (e) {\n err = e;\n }\n }\n return err;\n}\n\n/**\n * @internal\n * @hidden\n */\ntype UrlInfo = {\n absolutePath?: boolean;\n basePath?: string;\n path?: string;\n qs?: string | Params;\n};\n\n/**\n * Options of the `xhr` module that can be set using `agentOptions` when using\n * arangojs in the browser. Additionally `maxSockets` can be used to control\n * the maximum number of parallel requests.\n *\n * See also: {@link https://www.npmjs.com/package/xhr | `xhr` on npm }.\n */\nexport type XhrOptions = {\n /**\n * Maximum number of parallel requests arangojs will perform. If any\n * additional requests are attempted, they will be enqueued until one of the\n * active requests has completed.\n */\n maxSockets?: number;\n /**\n * Number of milliseconds to wait for a response.\n *\n * Default: `0` (disabled)\n */\n timeout?: number;\n /**\n * Callback that will be invoked immediately before the `send` method of the\n * request is called.\n *\n * See also {@link RequestInterceptors}.\n */\n beforeSend?: (xhrObject: any) => void;\n /**\n * `XMLHttpRequest` object to use instead of the native implementation.\n */\n xhr?: any;\n /**\n * (Internet Explorer 10 and lower only.) Whether `XDomainRequest` should be\n * used instead of `XMLHttpRequest`. Only required for performing\n * cross-domain requests in older versions of Internet Explorer.\n */\n useXdr?: boolean;\n /**\n * Specifies whether browser credentials (e.g. cookies) should be sent if\n * performing a cross-domain request.\n *\n * See {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials | `XMLHttpRequest.withCredentials`}.\n */\n withCredentials?: boolean;\n};\n\n/**\n * Additional options for intercepting the request/response. These methods\n * are primarily intended for tracking network related metrics.\n */\nexport type RequestInterceptors = {\n /**\n * Callback that will be invoked with the finished request object before it\n * is finalized. In the browser the request may already have been sent.\n *\n * @param req - Request object or XHR instance used for this request.\n */\n before?: (req: ClientRequest) => void;\n /**\n * Callback that will be invoked when the server response has been received\n * and processed or when the request has been failed without a response.\n *\n * The originating request will be available as the `request` property\n * on either the error or response object.\n *\n * @param err - Error encountered when handling this request or `null`.\n * @param res - Response object for this request, if no error occurred.\n */\n after?: (err: ArangojsError | null, res?: ArangojsResponse) => void;\n};\n\n/**\n * Options for performing a request with arangojs.\n */\nexport type RequestOptions = {\n /**\n * @internal\n *\n * Identifier of a specific ArangoDB host to use when more than one is known.\n */\n host?: number;\n /**\n * HTTP method to use in order to perform the request.\n *\n * Default: `\"GET\"`\n */\n method?: string;\n /**\n * Request body data.\n */\n body?: any;\n /**\n * If set to `true`, the response body will not be interpreted as JSON and\n * instead passed as-is.\n */\n expectBinary?: boolean;\n /**\n * If set to `true`, the request body will not be converted to JSON and\n * instead passed as-is.\n */\n isBinary?: boolean;\n /**\n * Whether ArangoDB is allowed to perform a dirty read to respond to this\n * request. If set to `true`, the response may reflect a dirty state from\n * a non-authoritative server.\n */\n allowDirtyRead?: boolean;\n /**\n * If set to a positive number, the request will automatically be retried at\n * most this many times if it results in a write-write conflict.\n *\n * Default: `0`\n */\n retryOnConflict?: number;\n /**\n * HTTP headers to pass along with this request in addition to the default\n * headers generated by arangojs.\n */\n headers?: Headers;\n /**\n * Time in milliseconds after which arangojs will abort the request if the\n * socket has not already timed out.\n *\n * See also `agentOptions.timeout` in {@link Config}.\n */\n timeout?: number;\n /**\n * Optional prefix path to prepend to the `path`.\n */\n basePath?: string;\n /**\n * URL path, relative to the `basePath` and server domain.\n */\n path?: string;\n /**\n * URL parameters to pass as part of the query string.\n */\n qs?: string | Params;\n};\n\n/**\n * @internal\n * @hidden\n */\ntype Task = {\n host?: number;\n stack?: () => string;\n allowDirtyRead: boolean;\n retryOnConflict: number;\n resolve: (res: ArangojsResponse) => void;\n reject: (error: Error) => void;\n retries: number;\n options: {\n method: string;\n expectBinary: boolean;\n timeout?: number;\n url: { pathname: string; search?: string };\n headers: Headers;\n body: any;\n };\n};\n\n/**\n * Options for creating the Node.js `http.Agent` or `https.Agent`.\n *\n * In browser environments this option can be used to pass additional options\n * to the underlying calls of the\n * {@link https://www.npmjs.com/package/xhr | xhr module}.\n *\n * See also {@link https://nodejs.org/api/http.html#http_new_agent_options | `http.Agent`}\n * and {@link https://nodejs.org/api/https.html#https_new_agent_options | `https.Agent`}\n * (when using TLS).\n */\nexport type AgentOptions = NodeAgentOptions | XhrOptions;\n\n/**\n * Options for configuring arangojs.\n */\nexport type Config = {\n /**\n * Name of the database to use.\n *\n * Default: `\"_system\"`\n */\n databaseName?: string;\n /**\n * Base URL of the ArangoDB server or list of server URLs.\n *\n * When working with a cluster or a single server with leader/follower\n * failover, the method {@link Database.acquireHostList} can be used to\n * automatically pick up additional coordinators/followers at any point.\n *\n * When running ArangoDB on a unix socket, e.g. `/tmp/arangodb.sock`, the\n * following URL formats are supported for unix sockets:\n *\n * - `unix:///tmp/arangodb.sock` (no SSL)\n * - `http+unix:///tmp/arangodb.sock` (or `https+unix://` for SSL)\n * - `http://unix:/tmp/arangodb.sock` (or `https://unix:` for SSL)\n *\n * Additionally `ssl` and `tls` are treated as synonymous with `https` and\n * `tcp` is treated as synonymous with `http`, so the following URLs are\n * considered identical:\n *\n * - `tcp://localhost:8529` and `http://localhost:8529`\n * - `ssl://localhost:8529` and `https://localhost:8529`\n * - `tcp+unix:///tmp/arangodb.sock` and `http+unix:///tmp/arangodb.sock`\n * - `ssl+unix:///tmp/arangodb.sock` and `https+unix:///tmp/arangodb.sock`\n * - `tcp://unix:/tmp/arangodb.sock` and `http://unix:/tmp/arangodb.sock`\n * - `ssl://unix:/tmp/arangodb.sock` and `https://unix:/tmp/arangodb.sock`\n *\n * See also `auth` for passing authentication credentials.\n *\n * Default: `\"http://localhost:8529\"`\n */\n url?: string | string[];\n /**\n * Credentials to use for authentication.\n *\n * See also {@link Database.useBasicAuth} and {@link Database.useBearerAuth}.\n *\n * Default: `{ username: \"root\", password: \"\" }`\n */\n auth?: BasicAuthCredentials | BearerAuthCredentials;\n /**\n * Numeric representation of the ArangoDB version the driver should expect.\n * The format is defined as `XYYZZ` where `X` is the major version, `Y` is\n * the zero-filled two-digit minor version and `Z` is the zero-filled two-digit\n * bugfix version, e.g. `30102` for 3.1.2, `20811` for 2.8.11.\n *\n * Depending on this value certain methods may become unavailable or change\n * their behavior to remain compatible with different versions of ArangoDB.\n *\n * Default: `30400`\n */\n arangoVersion?: number;\n /**\n * Determines the behavior when multiple URLs are provided:\n *\n * - `\"NONE\"`: No load balancing. All requests will be handled by the first\n * URL in the list until a network error is encountered. On network error,\n * arangojs will advance to using the next URL in the list.\n *\n * - `\"ONE_RANDOM\"`: Randomly picks one URL from the list initially, then\n * behaves like `\"NONE\"`.\n *\n * - `\"ROUND_ROBIN\"`: Every sequential request uses the next URL in the list.\n *\n * Default: `\"NONE\"`\n */\n loadBalancingStrategy?: LoadBalancingStrategy;\n /**\n * Determines the behavior when a request fails because the underlying\n * connection to the server could not be opened\n * (i.e. {@link https://nodejs.org/api/errors.html#errors_common_system_errors | `ECONNREFUSED` in Node.js}):\n *\n * - `false`: the request fails immediately.\n *\n * - `0`: the request is retried until a server can be reached but only a\n * total number of times matching the number of known servers (including\n * the initial failed request).\n *\n * - any other number: the request is retried until a server can be reached\n * the request has been retried a total of `maxRetries` number of times\n * (not including the initial failed request).\n *\n * When working with a single server without leader/follower failover, the\n * retries (if any) will be made to the same server.\n *\n * This setting currently has no effect when using arangojs in a browser.\n *\n * **Note**: Requests bound to a specific server (e.g. fetching query results)\n * will never be retried automatically and ignore this setting.\n *\n * Default: `0`\n */\n maxRetries?: false | number;\n /**\n * An http `Agent` instance to use for connections.\n *\n * By default a new `Agent` instance will be created using the `agentOptions`.\n *\n * This option has no effect when using the browser version of arangojs.\n *\n * See also: {@link https://nodejs.org/api/http.html#http_new_agent_options | `http.Agent`}\n * and {@link https://nodejs.org/api/https.html#https_new_agent_options | `https.Agent`}\n * (when using TLS).\n */\n agent?: any;\n /**\n * Options used to create that underlying HTTP/HTTPS `Agent` (or the `xhr`\n * module when using arangojs in the browser). This will be ignored if\n * `agent` is also provided.\n *\n * The option `maxSockets` is also used to limit how many requests\n * arangojs will perform concurrently. The maximum number of requests is\n * equal to `maxSockets`.\n *\n * **Note:** arangojs will limit the number of concurrent requests based on\n * this value even if an `agent` is provided.\n *\n * **Note:** when using `ROUND_ROBIN` load balancing and passing an array of\n * URLs in the `url` option, the default value of `maxSockets` will be set\n * to `3 * url.length` instead of `3`.\n *\n * Default (Node.js): `{ maxSockets: 3, keepAlive: true, keepAliveMsecs: 1000 }`\n *\n * Default (browser): `{ maxSockets: 3, useXDR: true, withCredentials: true }`\n */\n agentOptions?: AgentOptions & RequestInterceptors;\n /**\n * An object with additional headers to send with every request.\n *\n * If an `\"authorization\"` header is provided, it will be overridden when\n * using {@link Database.useBasicAuth}, {@link Database.useBearerAuth} or\n * the `auth` configuration option.\n */\n headers?: Headers;\n /**\n * If set to `true`, arangojs will generate stack traces every time a request\n * is initiated and augment the stack traces of any errors it generates.\n *\n * **Warning**: This will cause arangojs to generate stack traces in advance\n * even if the request does not result in an error. Generating stack traces\n * may negatively impact performance.\n */\n precaptureStackTraces?: boolean;\n /**\n * Limits the number of values of server-reported response queue times that\n * will be stored and accessible using {@link Database.queueTime}. If set to\n * a finite value, older values will be discarded to make room for new values\n * when that limit is reached.\n *\n * Default: `10`\n */\n responseQueueTimeSamples?: number;\n};\n\n/**\n * Indicates whether the given value represents a {@link Connection}.\n *\n * @param connection - A value that might be a connection.\n *\n * @internal\n * @hidden\n */\nexport function isArangoConnection(connection: any): connection is Connection {\n return Boolean(connection && connection.isArangoConnection);\n}\n\n/**\n * Represents a connection pool shared by one or more databases.\n *\n * @internal\n * @hidden\n */\nexport class Connection {\n protected _activeTasks: number = 0;\n protected _agent?: any;\n protected _agentOptions: { [key: string]: any };\n protected _arangoVersion: number = 30400;\n protected _headers: Headers;\n protected _loadBalancingStrategy: LoadBalancingStrategy;\n protected _useFailOver: boolean;\n protected _shouldRetry: boolean;\n protected _maxRetries: number;\n protected _maxTasks: number;\n protected _queue = new LinkedList<Task>();\n protected _databases = new Map<string, Database>();\n protected _hosts: RequestFunction[] = [];\n protected _urls: string[] = [];\n protected _activeHost: number;\n protected _activeDirtyHost: number;\n protected _transactionId: string | null = null;\n protected _precaptureStackTraces: boolean;\n protected _responseQueueTimeSamples: number;\n protected _queueTimes = new LinkedList<[number, number]>();\n\n /**\n * @internal\n *\n * Creates a new `Connection` instance.\n *\n * @param config - An object with configuration options.\n *\n * @hidden\n */\n constructor(config: Omit<Config, \"databaseName\"> = {}) {\n const URLS = config.url\n ? Array.isArray(config.url)\n ? config.url\n : [config.url]\n : [\"http://localhost:8529\"];\n const MAX_SOCKETS =\n 3 * (config.loadBalancingStrategy === \"ROUND_ROBIN\" ? URLS.length : 1);\n\n if (config.arangoVersion !== undefined) {\n this._arangoVersion = config.arangoVersion;\n }\n this._agent = config.agent;\n this._agentOptions = isBrowser\n ? { maxSockets: MAX_SOCKETS, ...config.agentOptions }\n : {\n maxSockets: MAX_SOCKETS,\n keepAlive: true,\n keepAliveMsecs: 1000,\n scheduling: \"lifo\",\n ...config.agentOptions,\n };\n this._maxTasks = this._agentOptions.maxSockets;\n this._headers = { ...config.headers };\n this._loadBalancingStrategy = config.loadBalancingStrategy ?? \"NONE\";\n this._useFailOver = this._loadBalancingStrategy !== \"ROUND_ROBIN\";\n this._precaptureStackTraces = Boolean(config.precaptureStackTraces);\n this._responseQueueTimeSamples = config.responseQueueTimeSamples ?? 10;\n if (this._responseQueueTimeSamples < 0) {\n this._responseQueueTimeSamples = Infinity;\n }\n if (config.maxRetries === false) {\n this._shouldRetry = false;\n this._maxRetries = 0;\n } else {\n this._shouldRetry = true;\n this._maxRetries = config.maxRetries ?? 0;\n }\n\n this.addToHostList(URLS);\n\n if (config.auth) {\n if (isBearerAuth(config.auth)) {\n this.setBearerAuth(config.auth);\n } else {\n this.setBasicAuth(config.auth);\n }\n }\n\n if (this._loadBalancingStrategy === \"ONE_RANDOM\") {\n this._activeHost = Math.floor(Math.random() * this._hosts.length);\n this._activeDirtyHost = Math.floor(Math.random() * this._hosts.length);\n } else {\n this._activeHost = 0;\n this._activeDirtyHost = 0;\n }\n }\n\n /**\n * @internal\n *\n * Indicates that this object represents an ArangoDB connection.\n */\n get isArangoConnection(): true {\n return true;\n }\n\n get queueTime() {\n return {\n getLatest: () => this._queueTimes.last?.value[1],\n getValues: () => Array.from(this._queueTimes.values()),\n getAvg: () => {\n let avg = 0;\n for (const [, [, value]] of this._queueTimes) {\n avg += value / this._queueTimes.length;\n }\n return avg;\n },\n };\n }\n\n protected _runQueue() {\n if (!this._queue.length || this._activeTasks >= this._maxTasks) return;\n const task = this._queue.shift()!;\n let host = this._activeHost;\n if (task.host !== undefined) {\n host = task.host;\n } else if (task.allowDirtyRead) {\n host = this._activeDirtyHost;\n this._activeDirtyHost = (this._activeDirtyHost + 1) % this._hosts.length;\n task.options.headers[\"x-arango-allow-dirty-read\"] = \"true\";\n } else if (this._loadBalancingStrategy === \"ROUND_ROBIN\") {\n this._activeHost = (this._activeHost + 1) % this._hosts.length;\n }\n this._activeTasks += 1;\n const callback: Errback<ArangojsResponse> = (err, res) => {\n this._activeTasks -= 1;\n if (err) {\n if (\n !task.allowDirtyRead &&\n this._hosts.length > 1 &&\n this._activeHost === host &&\n this._useFailOver\n ) {\n this._activeHost = (this._activeHost + 1) % this._hosts.length;\n }\n if (\n isArangoError(err) &&\n err.errorNum === ERROR_ARANGO_CONFLICT &&\n task.retryOnConflict > 0\n ) {\n task.retryOnConflict -= 1;\n this._queue.push(task);\n } else if (\n !task.host &&\n this._shouldRetry &&\n task.retries < (this._maxRetries || this._hosts.length - 1) &&\n isSystemError(err) &&\n err.syscall === \"connect\" &&\n err.code === \"ECONNREFUSED\"\n ) {\n task.retries += 1;\n this._queue.push(task);\n } else {\n if (task.stack) {\n err.stack += task.stack();\n }\n task.reject(err);\n }\n } else {\n const response = res!;\n if (\n response.statusCode === 503 &&\n response.headers[LEADER_ENDPOINT_HEADER]\n ) {\n const url = response.headers[LEADER_ENDPOINT_HEADER]!;\n const [index] = this.addToHostList(url);\n task.host = index;\n if (this._activeHost === host) {\n this._activeHost = index;\n }\n this._queue.push(task);\n } else {\n response.arangojsHostId = host;\n task.resolve(response);\n }\n }\n this._runQueue();\n };\n try {\n this._hosts[host](task.options, callback);\n } catch (e) {\n callback(e);\n }\n }\n\n protected _buildUrl({ basePath, path, qs }: UrlInfo) {\n const pathname = `${basePath || \"\"}${path || \"\"}`;\n let search;\n if (qs) {\n if (typeof qs === \"string\") search = `?${qs}`;\n else search = `?${querystringify(clean(qs))}`;\n }\n return search ? { pathname, search } : { pathname };\n }\n\n setBearerAuth(auth: BearerAuthCredentials) {\n this.setHeader(\"authorization\", `Bearer ${auth.token}`);\n }\n\n setBasicAuth(auth: BasicAuthCredentials) {\n this.setHeader(\n \"authorization\",\n `Basic ${btoa(`${auth.username}:${auth.password}`)}`\n );\n }\n\n setResponseQueueTimeSamples(responseQueueTimeSamples: number) {\n if (responseQueueTimeSamples < 0) {\n responseQueueTimeSamples = Infinity;\n }\n this._responseQueueTimeSamples = responseQueueTimeSamples;\n while (this._responseQueueTimeSamples < this._queueTimes.length) {\n this._queueTimes.shift();\n }\n }\n\n /**\n * @internal\n *\n * Fetches a {@link Database} instance for the given database name from the\n * internal cache, if available.\n *\n * @param databaseName - Name of the database.\n */\n database(databaseName: string): Database | undefined;\n /**\n * @internal\n *\n * Adds a {@link Database} instance for the given database name to the\n * internal cache.\n *\n * @param databaseName - Name of the database.\n * @param database - Database instance to add to the cache.\n */\n database(databaseName: string, database: Database): Database;\n /**\n * @internal\n *\n * Clears any {@link Database} instance stored for the given database name\n * from the internal cache, if present.\n *\n * @param databaseName - Name of the database.\n * @param database - Must be `null`.\n */\n database(databaseName: string, database: null): undefined;\n database(\n databaseName: string,\n database?: Database | null\n ): Database | undefined {\n if (database === null) {\n this._databases.delete(databaseName);\n return undefined;\n }\n if (!database) {\n return this._databases.get(databaseName);\n }\n this._databases.set(databaseName, database);\n return database;\n }\n\n /**\n * @internal\n *\n * Adds the given URL or URLs to the host list.\n *\n * See {@link Connection.acquireHostList}.\n *\n * @param urls - URL or URLs to add.\n */\n addToHostList(urls: string | string[]): number[] {\n const cleanUrls = (Array.isArray(urls) ? urls : [urls]).map((url) =>\n normalizeUrl(url)\n );\n const newUrls = cleanUrls.filter((url) => this._urls.indexOf(url) === -1);\n this._urls.push(...newUrls);\n this._hosts.push(\n ...newUrls.map((url: string) =>\n createRequest(url, this._agentOptions, this._agent)\n )\n );\n return cleanUrls.map((url) => this._urls.indexOf(url));\n }\n\n /**\n * @internal\n *\n * Sets the connection's active `transactionId`.\n *\n * While set, all requests will use this ID, ensuring the requests are executed\n * within the transaction if possible. Setting the ID manually may cause\n * unexpected behavior.\n *\n * See also {@link Connection.clearTransactionId}.\n *\n * @param transactionId - ID of the active transaction.\n */\n setTransactionId(transactionId: string) {\n this._transactionId = transactionId;\n }\n\n /**\n * @internal\n *\n * Clears the connection's active `transactionId`.\n */\n clearTransactionId() {\n this._transactionId = null;\n }\n\n /**\n * @internal\n *\n * Sets the header `headerName` with the given `value` or clears the header if\n * `value` is `null`.\n *\n * @param headerName - Name of the header to set.\n * @param value - Value of the header.\n */\n setHeader(headerName: string, value: string | null) {\n if (value === null) {\n delete this._headers[headerName];\n } else {\n this._headers[headerName] = value;\n }\n }\n\n /**\n * @internal\n *\n * Closes all open connections.\n *\n * See {@link Database.close}.\n */\n close() {\n for (const host of this._hosts) {\n if (host.close) host.close();\n }\n }\n\n /**\n * @internal\n *\n * Waits for propagation.\n *\n * See {@link Database.waitForPropagation}.\n *\n * @param request - Request to perform against each coordinator.\n * @param timeout - Maximum number of milliseconds to wait for propagation.\n */\n async waitForPropagation(request: RequestOptions, timeout = Infinity) {\n const numHosts = this._hosts.length;\n const propagated = [] as number[];\n const started = Date.now();\n let host = 0;\n while (true) {\n if (propagated.length === numHosts) {\n return;\n }\n while (propagated.includes(host)) {\n host = (host + 1) % numHosts;\n }\n try {\n await this.request({ ...request, host });\n } catch (e) {\n if (started + timeout < Date.now()) {\n throw e;\n }\n await new Promise((resolve) => setTimeout(resolve, 1000));\n continue;\n }\n if (!propagated.includes(host)) {\n propagated.push(host);\n }\n }\n }\n\n /**\n * @internal\n *\n * Performs a request using the arangojs connection pool.\n */\n request<T = ArangojsResponse>(\n {\n host,\n method = \"GET\",\n body,\n expectBinary = false,\n isBinary = false,\n allowDirtyRead = false,\n retryOnConflict = 0,\n timeout = 0,\n headers,\n ...urlInfo\n }: RequestOptions,\n transform?: (res: ArangojsResponse) => T\n ): Promise<T> {\n return new Promise((resolve, reject) => {\n let contentType = \"text/plain\";\n if (isBinary) {\n contentType = \"application/octet-stream\";\n } else if (body) {\n if (typeof body === \"object\") {\n body = JSON.stringify(body);\n contentType = \"application/json\";\n } else {\n body = String(body);\n }\n }\n\n const extraHeaders: Headers = {\n ...this._headers,\n \"content-type\": contentType,\n \"x-arango-version\": String(this._arangoVersion),\n };\n\n if (this._transactionId) {\n extraHeaders[\"x-arango-trx-id\"] = this._transactionId;\n }\n\n const task: Task = {\n retries: 0,\n host,\n allowDirtyRead,\n retryOnConflict,\n options: {\n url: this._buildUrl(urlInfo),\n headers: { ...extraHeaders, ...headers },\n timeout,\n method,\n expectBinary,\n body,\n },\n reject,\n resolve: (res: ArangojsResponse) => {\n const contentType = res.headers[\"content-type\"];\n const queueTime = res.headers[\"x-arango-queue-time-seconds\"];\n if (queueTime) {\n this._queueTimes.push([Date.now(), Number(queueTime)]);\n while (this._responseQueueTimeSamples < this._queueTimes.length) {\n this._queueTimes.shift();\n }\n }\n let parsedBody: any = undefined;\n if (res.body.length && contentType && contentType.match(MIME_JSON)) {\n try {\n parsedBody = res.body;\n parsedBody = JSON.parse(parsedBody);\n } catch (e) {\n if (!expectBinary) {\n if (typeof parsedBody !== \"string\") {\n parsedBody = res.body.toString(\"utf-8\");\n }\n e.response = res;\n if (task.stack) {\n e.stack += task.stack();\n }\n reject(e);\n return;\n }\n }\n } else if (res.body && !expectBinary) {\n parsedBody = res.body.toString(\"utf-8\");\n } else {\n parsedBody = res.body;\n }\n if (isArangoErrorResponse(parsedBody)) {\n res.body = parsedBody;\n const err = new ArangoError(res);\n if (task.stack) {\n err.stack += task.stack();\n }\n reject(err);\n } else if (res.statusCode && res.statusCode >= 400) {\n res.body = parsedBody;\n const err = new HttpError(res);\n if (task.stack) {\n err.stack += task.stack();\n }\n reject(err);\n } else {\n if (!expectBinary) res.body = parsedBody;\n resolve(transform ? transform(res) : (res as any));\n }\n },\n };\n\n if (this._precaptureStackTraces) {\n if (typeof Error.captureStackTrace === \"function\") {\n const capture = {} as { readonly stack: string };\n Error.captureStackTrace(capture);\n task.stack = () =>\n `\\n${capture.stack.split(\"\\n\").slice(3).join(\"\\n\")}`;\n } else {\n const capture = generateStackTrace() as { readonly stack: string };\n if (Object.prototype.hasOwnProperty.call(capture, \"stack\")) {\n task.stack = () =>\n `\\n${capture.stack.split(\"\\n\").slice(4).join(\"\\n\")}`;\n }\n }\n }\n\n this._queue.push(task);\n this._runQueue();\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * ```ts\n * import type { Config } from \"arangojs/connection\";\n * ```\n *\n * The \"connection\" module provides connection and configuration related types\n * for TypeScript.\n *\n * @packageDocumentation\n */\nimport { ClientRequest } from \"http\";\nimport { AgentOptions as NodeAgentOptions } from \"https\";\nimport { LinkedList } from \"x3-linkedlist\";\nimport { Database } from \"./database\";\nimport {\n ArangoError,\n HttpError,\n isArangoError,\n isArangoErrorResponse,\n isSystemError,\n} from \"./error\";\nimport { base64Encode } from \"./lib/btoa\";\nimport {\n ERROR_ARANGO_CONFLICT,\n ERROR_ARANGO_MAINTENANCE_MODE,\n} from \"./lib/codes\";\nimport { Errback } from \"./lib/errback\";\nimport { normalizeUrl } from \"./lib/normalizeUrl\";\nimport { querystringify } from \"./lib/querystringify\";\nimport {\n ArangojsError,\n ArangojsResponse,\n createRequest,\n isBrowser,\n RequestFunction,\n} from \"./lib/request\";\n\nconst MIME_JSON = /\\/(json|javascript)(\\W|$)/;\nconst LEADER_ENDPOINT_HEADER = \"x-arango-endpoint\";\n\n/**\n * Determines the behavior when multiple URLs are used:\n *\n * - `\"NONE\"`: No load balancing. All requests will be handled by the first\n * URL in the list until a network error is encountered. On network error,\n * arangojs will advance to using the next URL in the list.\n *\n * - `\"ONE_RANDOM\"`: Randomly picks one URL from the list initially, then\n * behaves like `\"NONE\"`.\n *\n * - `\"ROUND_ROBIN\"`: Every sequential request uses the next URL in the list.\n */\nexport type LoadBalancingStrategy = \"NONE\" | \"ROUND_ROBIN\" | \"ONE_RANDOM\";\n\n/**\n * An arbitrary object with string values representing HTTP headers and their\n * values.\n *\n * Header names should always be lowercase.\n */\nexport type Headers = Record<string, string>;\n\n/**\n * An arbitrary object with scalar values representing query string parameters\n * and their values.\n */\nexport type Params = Record<string, any>;\n\n/**\n * Generic properties shared by all ArangoDB HTTP API responses.\n */\nexport type ArangoResponseMetadata = {\n /**\n * Indicates that the request was successful.\n */\n error: false;\n /**\n * Response status code, typically `200`.\n */\n code: number;\n};\n\n/**\n * Extends the given base type `T` with the generic HTTP API response properties.\n */\nexport type ArangoApiResponse<T> = T & ArangoResponseMetadata;\n\n/**\n * Credentials for HTTP Basic authentication.\n */\nexport type BasicAuthCredentials = {\n /**\n * Username to use for authentication, e.g. `\"root\"`.\n */\n username: string;\n /**\n * Password to use for authentication. Defaults to an empty string.\n */\n password?: string;\n};\n\n/**\n * Credentials for HTTP Bearer token authentication.\n */\nexport type BearerAuthCredentials = {\n /**\n * Bearer token to use for authentication.\n */\n token: string;\n};\n\nfunction isBearerAuth(auth: any): auth is BearerAuthCredentials {\n return auth.hasOwnProperty(\"token\");\n}\n\n/**\n * @internal\n */\nfunction generateStackTrace() {\n let err = new Error();\n if (!err.stack) {\n try {\n throw err;\n } catch (e: any) {\n err = e;\n }\n }\n return err;\n}\n\n/**\n * @internal\n */\ntype UrlInfo = {\n absolutePath?: boolean;\n basePath?: string;\n path?: string;\n qs?: string | Params;\n};\n\n/**\n * Options of the `xhr` module that can be set using `agentOptions` when using\n * arangojs in the browser. Additionally `maxSockets` can be used to control\n * the maximum number of parallel requests.\n *\n * See also: [`xhr` on npm](https://www.npmjs.com/package/xhr).\n */\nexport type XhrOptions = {\n /**\n * Maximum number of parallel requests arangojs will perform. If any\n * additional requests are attempted, they will be enqueued until one of the\n * active requests has completed.\n */\n maxSockets?: number;\n /**\n * Number of milliseconds to wait for a response.\n *\n * Default: `0` (disabled)\n */\n timeout?: number;\n /**\n * Callback that will be invoked immediately before the `send` method of the\n * request is called.\n *\n * See also {@link RequestInterceptors}.\n */\n beforeSend?: (xhrObject: any) => void;\n /**\n * `XMLHttpRequest` object to use instead of the native implementation.\n */\n xhr?: any;\n /**\n * (Internet Explorer 10 and lower only.) Whether `XDomainRequest` should be\n * used instead of `XMLHttpRequest`. Only required for performing\n * cross-domain requests in older versions of Internet Explorer.\n */\n useXdr?: boolean;\n /**\n * Specifies whether browser credentials (e.g. cookies) should be sent if\n * performing a cross-domain request.\n *\n * See [`XMLHttpRequest.withCredentials`](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials).\n */\n withCredentials?: boolean;\n};\n\n/**\n * Additional options for intercepting the request/response. These methods\n * are primarily intended for tracking network related metrics.\n */\nexport type RequestInterceptors = {\n /**\n * Callback that will be invoked with the finished request object before it\n * is finalized. In the browser the request may already have been sent.\n *\n * @param req - Request object or XHR instance used for this request.\n */\n before?: (req: ClientRequest) => void;\n /**\n * Callback that will be invoked when the server response has been received\n * and processed or when the request has been failed without a response.\n *\n * The originating request will be available as the `request` property\n * on either the error or response object.\n *\n * @param err - Error encountered when handling this request or `null`.\n * @param res - Response object for this request, if no error occurred.\n */\n after?: (err: ArangojsError | null, res?: ArangojsResponse) => void;\n};\n\n/**\n * Options for performing a request with arangojs.\n */\nexport type RequestOptions = {\n /**\n * @internal\n *\n * Identifier of a specific ArangoDB host to use when more than one is known.\n */\n hostUrl?: string;\n /**\n * HTTP method to use in order to perform the request.\n *\n * Default: `\"GET\"`\n */\n method?: string;\n /**\n * Request body data.\n */\n body?: any;\n /**\n * If set to `true`, the response body will not be interpreted as JSON and\n * instead passed as-is.\n */\n expectBinary?: boolean;\n /**\n * If set to `true`, the request body will not be converted to JSON and\n * instead passed as-is.\n */\n isBinary?: boolean;\n /**\n * Whether ArangoDB is allowed to perform a dirty read to respond to this\n * request. If set to `true`, the response may reflect a dirty state from\n * a non-authoritative server.\n */\n allowDirtyRead?: boolean;\n /**\n * If set to a positive number, the request will automatically be retried at\n * most this many times if it results in a write-write conflict.\n *\n * Default: `config.retryOnConflict`\n */\n retryOnConflict?: number;\n /**\n * HTTP headers to pass along with this request in addition to the default\n * headers generated by arangojs.\n */\n headers?: Headers;\n /**\n * Time in milliseconds after which arangojs will abort the request if the\n * socket has not already timed out.\n *\n * See also `agentOptions.timeout` in {@link Config}.\n */\n timeout?: number;\n /**\n * Optional prefix path to prepend to the `path`.\n */\n basePath?: string;\n /**\n * URL path, relative to the `basePath` and server domain.\n */\n path?: string;\n /**\n * URL parameters to pass as part of the query string.\n */\n qs?: string | Params;\n};\n\n/**\n * @internal\n */\ntype Task = {\n hostUrl?: string;\n stack?: () => string;\n allowDirtyRead: boolean;\n retryOnConflict: number;\n resolve: (result: any) => void;\n reject: (error: Error) => void;\n transform?: (res: ArangojsResponse) => any;\n retries: number;\n options: {\n method: string;\n expectBinary: boolean;\n timeout?: number;\n url: { pathname: string; search?: string };\n headers: Headers;\n body: any;\n };\n};\n\n/**\n * Options for creating the Node.js `http.Agent` or `https.Agent`.\n *\n * In browser environments this option can be used to pass additional options\n * to the underlying calls of the\n * [xhr module](https://www.npmjs.com/package/xhr).\n *\n * See also [`http.Agent`](https://nodejs.org/api/http.html#http_new_agent_options)\n * and [`https.Agent`](https://nodejs.org/api/https.html#https_new_agent_options)\n * (when using TLS).\n */\nexport type AgentOptions = NodeAgentOptions | XhrOptions;\n\n/**\n * Options for configuring arangojs.\n */\nexport type Config = {\n /**\n * Name of the database to use.\n *\n * Default: `\"_system\"`\n */\n databaseName?: string;\n /**\n * Base URL of the ArangoDB server or list of server URLs.\n *\n * When working with a cluster or a single server with leader/follower\n * failover, the method {@link database.Database#acquireHostList} can be used to\n * automatically pick up additional coordinators/followers at any point.\n *\n * When running ArangoDB on a unix socket, e.g. `/tmp/arangodb.sock`, the\n * following URL formats are supported for unix sockets:\n *\n * - `unix:///tmp/arangodb.sock` (no SSL)\n * - `http+unix:///tmp/arangodb.sock` (or `https+unix://` for SSL)\n * - `http://unix:/tmp/arangodb.sock` (or `https://unix:` for SSL)\n *\n * Additionally `ssl` and `tls` are treated as synonymous with `https` and\n * `tcp` is treated as synonymous with `http`, so the following URLs are\n * considered identical:\n *\n * - `tcp://127.0.0.1:8529` and `http://127.0.0.1:8529`\n * - `ssl://127.0.0.1:8529` and `https://127.0.0.1:8529`\n * - `tcp+unix:///tmp/arangodb.sock` and `http+unix:///tmp/arangodb.sock`\n * - `ssl+unix:///tmp/arangodb.sock` and `https+unix:///tmp/arangodb.sock`\n * - `tcp://unix:/tmp/arangodb.sock` and `http://unix:/tmp/arangodb.sock`\n * - `ssl://unix:/tmp/arangodb.sock` and `https://unix:/tmp/arangodb.sock`\n *\n * See also `auth` for passing authentication credentials.\n *\n * Default: `\"http://127.0.0.1:8529\"`\n */\n url?: string | string[];\n /**\n * Credentials to use for authentication.\n *\n * See also {@link database.Database#useBasicAuth} and\n * {@link database.Database#useBearerAuth}.\n *\n * Default: `{ username: \"root\", password: \"\" }`\n */\n auth?: BasicAuthCredentials | BearerAuthCredentials;\n /**\n * Numeric representation of the ArangoDB version the driver should expect.\n * The format is defined as `XYYZZ` where `X` is the major version, `Y` is\n * the zero-filled two-digit minor version and `Z` is the zero-filled two-digit\n * bugfix version, e.g. `30102` for 3.1.2, `20811` for 2.8.11.\n *\n * Depending on this value certain methods may become unavailable or change\n * their behavior to remain compatible with different versions of ArangoDB.\n *\n * Default: `30900`\n */\n arangoVersion?: number;\n /**\n * Determines the behavior when multiple URLs are provided:\n *\n * - `\"NONE\"`: No load balancing. All requests will be handled by the first\n * URL in the list until a network error is encountered. On network error,\n * arangojs will advance to using the next URL in the list.\n *\n * - `\"ONE_RANDOM\"`: Randomly picks one URL from the list initially, then\n * behaves like `\"NONE\"`.\n *\n * - `\"ROUND_ROBIN\"`: Every sequential request uses the next URL in the list.\n *\n * Default: `\"NONE\"`\n */\n loadBalancingStrategy?: LoadBalancingStrategy;\n /**\n * Determines the behavior when a request fails because the underlying\n * connection to the server could not be opened\n * (i.e. [`ECONNREFUSED` in Node.js](https://nodejs.org/api/errors.html#errors_common_system_errors)):\n *\n * - `false`: the request fails immediately.\n *\n * - `0`: the request is retried until a server can be reached but only a\n * total number of times matching the number of known servers (including\n * the initial failed request).\n *\n * - any other number: the request is retried until a server can be reached\n * or the request has been retried a total of `maxRetries` number of times\n * (not including the initial failed request).\n *\n * When working with a single server without leader/follower failover, the\n * retries (if any) will be made to the same server.\n *\n * This setting currently has no effect when using arangojs in a browser.\n *\n * **Note**: Requests bound to a specific server (e.g. fetching query results)\n * will never be retried automatically and ignore this setting.\n *\n * **Note**: To set the number of retries when a write-write conflict is\n * encountered, see `retryOnConflict` instead.\n *\n * Default: `0`\n */\n maxRetries?: false | number;\n /**\n * If set to a positive number, requests will automatically be retried at\n * most this many times if they result in a write-write conflict.\n *\n * Default: `0`\n */\n retryOnConflict?: number;\n /**\n * An http `Agent` instance to use for connections.\n *\n * By default a new `Agent` instance will be created using the `agentOptions`.\n *\n * This option has no effect when using the browser version of arangojs.\n *\n * See also [`http.Agent`](https://nodejs.org/api/http.html#http_new_agent_options)\n * and [`https.Agent`](https://nodejs.org/api/https.html#https_new_agent_options)\n * (when using TLS).\n */\n agent?: any;\n /**\n * Options used to create that underlying HTTP/HTTPS `Agent` (or the `xhr`\n * module when using arangojs in the browser). This will be ignored if\n * `agent` is also provided.\n *\n * The option `maxSockets` is also used to limit how many requests\n * arangojs will perform concurrently. The maximum number of requests is\n * equal to `maxSockets`.\n *\n * **Note:** arangojs will limit the number of concurrent requests based on\n * this value even if an `agent` is provided.\n *\n * **Note:** when using `ROUND_ROBIN` load balancing and passing an array of\n * URLs in the `url` option, the default value of `maxSockets` will be set\n * to `3 * url.length` instead of `3`.\n *\n * Default (Node.js): `{ maxSockets: 3, keepAlive: true, keepAliveMsecs: 1000 }`\n *\n * Default (browser): `{ maxSockets: 3, useXDR: true, withCredentials: true }`\n */\n agentOptions?: AgentOptions & RequestInterceptors;\n /**\n * An object with additional headers to send with every request.\n *\n * If an `\"authorization\"` header is provided, it will be overridden when\n * using {@link database.Database#useBasicAuth}, {@link database.Database#useBearerAuth} or\n * the `auth` configuration option.\n */\n headers?: Headers;\n /**\n * If set to `true`, arangojs will generate stack traces every time a request\n * is initiated and augment the stack traces of any errors it generates.\n *\n * **Warning**: This will cause arangojs to generate stack traces in advance\n * even if the request does not result in an error. Generating stack traces\n * may negatively impact performance.\n */\n precaptureStackTraces?: boolean;\n /**\n * Limits the number of values of server-reported response queue times that\n * will be stored and accessible using {@link database.Database#queueTime}. If set to\n * a finite value, older values will be discarded to make room for new values\n * when that limit is reached.\n *\n * Default: `10`\n */\n responseQueueTimeSamples?: number;\n};\n\n/**\n * Indicates whether the given value represents a {@link Connection}.\n *\n * @param connection - A value that might be a connection.\n *\n * @internal\n */\nexport function isArangoConnection(connection: any): connection is Connection {\n return Boolean(connection && connection.isArangoConnection);\n}\n\n/**\n * Represents a connection pool shared by one or more databases.\n *\n * @internal\n */\nexport class Connection {\n protected _activeTasks: number = 0;\n protected _agent?: any;\n protected _agentOptions: { [key: string]: any };\n protected _arangoVersion: number = 30900;\n protected _headers: Headers;\n protected _loadBalancingStrategy: LoadBalancingStrategy;\n protected _maxRetries: number | false;\n protected _retryOnConflict: number;\n protected _maxTasks: number;\n protected _queue = new LinkedList<Task>();\n protected _databases = new Map<string, Database>();\n protected _hosts: RequestFunction[] = [];\n protected _hostUrls: string[] = [];\n protected _activeHostUrl: string;\n protected _activeDirtyHostUrl: string;\n protected _transactionId: string | null = null;\n protected _precaptureStackTraces: boolean;\n protected _queueTimes = new LinkedList<[number, number]>();\n protected _responseQueueTimeSamples: number;\n\n /**\n * @internal\n *\n * Creates a new `Connection` instance.\n *\n * @param config - An object with configuration options.\n *\n */\n constructor(config: Omit<Config, \"databaseName\"> = {}) {\n const URLS = config.url\n ? Array.isArray(config.url)\n ? config.url\n : [config.url]\n : [\"http://127.0.0.1:8529\"];\n const MAX_SOCKETS =\n 3 * (config.loadBalancingStrategy === \"ROUND_ROBIN\" ? URLS.length : 1);\n\n if (config.arangoVersion !== undefined) {\n this._arangoVersion = config.arangoVersion;\n }\n this._agent = config.agent;\n this._agentOptions = isBrowser\n ? { maxSockets: MAX_SOCKETS, ...config.agentOptions }\n : {\n maxSockets: MAX_SOCKETS,\n keepAlive: true,\n keepAliveMsecs: 1000,\n scheduling: \"lifo\",\n ...config.agentOptions,\n };\n this._maxTasks = this._agentOptions.maxSockets;\n this._headers = { ...config.headers };\n this._loadBalancingStrategy = config.loadBalancingStrategy ?? \"NONE\";\n this._precaptureStackTraces = Boolean(config.precaptureStackTraces);\n this._responseQueueTimeSamples = config.responseQueueTimeSamples ?? 10;\n this._retryOnConflict = config.retryOnConflict ?? 0;\n if (this._responseQueueTimeSamples < 0) {\n this._responseQueueTimeSamples = Infinity;\n }\n if (config.maxRetries === false) {\n this._maxRetries = false;\n } else {\n this._maxRetries = Number(config.maxRetries ?? 0);\n }\n\n this.addToHostList(URLS);\n\n if (config.auth) {\n if (isBearerAuth(config.auth)) {\n this.setBearerAuth(config.auth);\n } else {\n this.setBasicAuth(config.auth);\n }\n }\n\n if (this._loadBalancingStrategy === \"ONE_RANDOM\") {\n this._activeHostUrl =\n this._hostUrls[Math.floor(Math.random() * this._hostUrls.length)];\n this._activeDirtyHostUrl =\n this._hostUrls[Math.floor(Math.random() * this._hostUrls.length)];\n } else {\n this._activeHostUrl = this._hostUrls[0];\n this._activeDirtyHostUrl = this._hostUrls[0];\n }\n }\n\n /**\n * @internal\n *\n * Indicates that this object represents an ArangoDB connection.\n */\n get isArangoConnection(): true {\n return true;\n }\n\n get queueTime() {\n return {\n getLatest: () => this._queueTimes.last?.value[1],\n getValues: () => Array.from(this._queueTimes.values()),\n getAvg: () => {\n let avg = 0;\n for (const [, [, value]] of this._queueTimes) {\n avg += value / this._queueTimes.length;\n }\n return avg;\n },\n };\n }\n\n protected _runQueue() {\n if (!this._queue.length || this._activeTasks >= this._maxTasks) return;\n const task = this._queue.shift()!;\n let hostUrl = this._activeHostUrl;\n if (task.hostUrl !== undefined) {\n hostUrl = task.hostUrl;\n } else if (task.allowDirtyRead) {\n hostUrl = this._activeDirtyHostUrl;\n this._activeDirtyHostUrl =\n this._hostUrls[\n (this._hostUrls.indexOf(this._activeDirtyHostUrl) + 1) %\n this._hostUrls.length\n ];\n task.options.headers[\"x-arango-allow-dirty-read\"] = \"true\";\n } else if (this._loadBalancingStrategy === \"ROUND_ROBIN\") {\n this._activeHostUrl =\n this._hostUrls[\n (this._hostUrls.indexOf(this._activeHostUrl) + 1) %\n this._hostUrls.length\n ];\n }\n this._activeTasks += 1;\n const callback: Errback<ArangojsResponse> = (err, res) => {\n this._activeTasks -= 1;\n if (!err && res) {\n if (res.statusCode === 503 && res.headers[LEADER_ENDPOINT_HEADER]) {\n const url = res.headers[LEADER_ENDPOINT_HEADER]!;\n const [cleanUrl] = this.addToHostList(url);\n task.hostUrl = cleanUrl;\n if (this._activeHostUrl === hostUrl) {\n this._activeHostUrl = cleanUrl;\n }\n this._queue.push(task);\n } else {\n res.arangojsHostUrl = hostUrl;\n const contentType = res.headers[\"content-type\"];\n const queueTime = res.headers[\"x-arango-queue-time-seconds\"];\n if (queueTime) {\n this._queueTimes.push([Date.now(), Number(queueTime)]);\n while (this._responseQueueTimeSamples < this._queueTimes.length) {\n this._queueTimes.shift();\n }\n }\n let parsedBody: any = undefined;\n if (res.body.length && contentType && contentType.match(MIME_JSON)) {\n try {\n parsedBody = res.body;\n parsedBody = JSON.parse(parsedBody);\n } catch (e: any) {\n if (!task.options.expectBinary) {\n if (typeof parsedBody !== \"string\") {\n parsedBody = res.body.toString(\"utf-8\");\n }\n e.res = res;\n if (task.stack) {\n e.stack += task.stack();\n }\n callback(e);\n return;\n }\n }\n } else if (res.body && !task.options.expectBinary) {\n parsedBody = res.body.toString(\"utf-8\");\n } else {\n parsedBody = res.body;\n }\n if (isArangoErrorResponse(parsedBody)) {\n res.body = parsedBody;\n err = new ArangoError(res);\n } else if (res.statusCode && res.statusCode >= 400) {\n res.body = parsedBody;\n err = new HttpError(res);\n } else {\n if (!task.options.expectBinary) res.body = parsedBody;\n task.resolve(task.transform ? task.transform(res) : (res as any));\n }\n }\n }\n if (err) {\n if (\n !task.allowDirtyRead &&\n this._hosts.length > 1 &&\n this._activeHostUrl === hostUrl &&\n this._loadBalancingStrategy !== \"ROUND_ROBIN\"\n ) {\n this._activeHostUrl =\n this._hostUrls[\n (this._hostUrls.indexOf(this._activeHostUrl) + 1) %\n this._hostUrls.length\n ];\n }\n if (\n isArangoError(err) &&\n err.errorNum === ERROR_ARANGO_CONFLICT &&\n task.retryOnConflict > 0\n ) {\n task.retryOnConflict -= 1;\n this._queue.push(task);\n } else if (\n ((isSystemError(err) &&\n err.syscall === \"connect\" &&\n err.code === \"ECONNREFUSED\") ||\n (isArangoError(err) &&\n err.errorNum === ERROR_ARANGO_MAINTENANCE_MODE)) &&\n task.hostUrl === undefined &&\n this._maxRetries !== false &&\n task.retries < (this._maxRetries || this._hosts.length - 1)\n ) {\n task.retries += 1;\n this._queue.push(task);\n } else {\n if (task.stack) {\n err.stack += task.stack();\n }\n task.reject(err);\n }\n }\n this._runQueue();\n };\n try {\n this._hosts[this._hostUrls.indexOf(hostUrl)](task.options, callback);\n } catch (e: any) {\n callback(e);\n }\n }\n\n protected _buildUrl({ basePath, path, qs }: UrlInfo) {\n const pathname = `${basePath || \"\"}${path || \"\"}`;\n let search;\n if (qs) {\n if (typeof qs === \"string\") search = `?${qs}`;\n else search = `?${querystringify(qs)}`;\n }\n return search ? { pathname, search } : { pathname };\n }\n\n setBearerAuth(auth: BearerAuthCredentials) {\n this.setHeader(\"authorization\", `Bearer ${auth.token}`);\n }\n\n setBasicAuth(auth: BasicAuthCredentials) {\n this.setHeader(\n \"authorization\",\n `Basic ${base64Encode(`${auth.username}:${auth.password}`)}`\n );\n }\n\n setResponseQueueTimeSamples(responseQueueTimeSamples: number) {\n if (responseQueueTimeSamples < 0) {\n responseQueueTimeSamples = Infinity;\n }\n this._responseQueueTimeSamples = responseQueueTimeSamples;\n while (this._responseQueueTimeSamples < this._queueTimes.length) {\n this._queueTimes.shift();\n }\n }\n\n /**\n * @internal\n *\n * Fetches a {@link database.Database} instance for the given database name from the\n * internal cache, if available.\n *\n * @param databaseName - Name of the database.\n */\n database(databaseName: string): Database | undefined;\n /**\n * @internal\n *\n * Adds a {@link database.Database} instance for the given database name to the\n * internal cache.\n *\n * @param databaseName - Name of the database.\n * @param database - Database instance to add to the cache.\n */\n database(databaseName: string, database: Database): Database;\n /**\n * @internal\n *\n * Clears any {@link database.Database} instance stored for the given database name\n * from the internal cache, if present.\n *\n * @param databaseName - Name of the database.\n * @param database - Must be `null`.\n */\n database(databaseName: string, database: null): undefined;\n database(\n databaseName: string,\n database?: Database | null\n ): Database | undefined {\n if (database === null) {\n this._databases.delete(databaseName);\n return undefined;\n }\n if (!database) {\n return this._databases.get(databaseName);\n }\n this._databases.set(databaseName, database);\n return database;\n }\n\n /**\n * @internal\n *\n * Replaces the host list with the given URLs.\n *\n * See {@link Connection#acquireHostList}.\n *\n * @param urls - URLs to use as host list.\n */\n setHostList(urls: string[]): void {\n const cleanUrls = urls.map((url) => normalizeUrl(url));\n this._hosts.splice(\n 0,\n this._hosts.length,\n ...cleanUrls.map((url) => {\n const i = this._hostUrls.indexOf(url);\n if (i !== -1) return this._hosts[i];\n return createRequest(url, this._agentOptions, this._agent);\n })\n );\n this._hostUrls.splice(0, this._hostUrls.length, ...cleanUrls);\n }\n\n /**\n * @internal\n *\n * Adds the given URL or URLs to the host list.\n *\n * See {@link Connection#acquireHostList}.\n *\n * @param urls - URL or URLs to add.\n */\n addToHostList(urls: string | string[]): string[] {\n const cleanUrls = (Array.isArray(urls) ? urls : [urls]).map((url) =>\n normalizeUrl(url)\n );\n const newUrls = cleanUrls.filter(\n (url) => this._hostUrls.indexOf(url) === -1\n );\n this._hostUrls.push(...newUrls);\n this._hosts.push(\n ...newUrls.map((url: string) =>\n createRequest(url, this._agentOptions, this._agent)\n )\n );\n return cleanUrls;\n }\n\n /**\n * @internal\n *\n * Sets the connection's active `transactionId`.\n *\n * While set, all requests will use this ID, ensuring the requests are executed\n * within the transaction if possible. Setting the ID manually may cause\n * unexpected behavior.\n *\n * See also {@link Connection#clearTransactionId}.\n *\n * @param transactionId - ID of the active transaction.\n */\n setTransactionId(transactionId: string) {\n this._transactionId = transactionId;\n }\n\n /**\n * @internal\n *\n * Clears the connection's active `transactionId`.\n */\n clearTransactionId() {\n this._transactionId = null;\n }\n\n /**\n * @internal\n *\n * Sets the header `headerName` with the given `value` or clears the header if\n * `value` is `null`.\n *\n * @param headerName - Name of the header to set.\n * @param value - Value of the header.\n */\n setHeader(headerName: string, value: string | null) {\n if (value === null) {\n delete this._headers[headerName];\n } else {\n this._headers[headerName] = value;\n }\n }\n\n /**\n * @internal\n *\n * Closes all open connections.\n *\n * See {@link database.Database#close}.\n */\n close() {\n for (const host of this._hosts) {\n if (host.close) host.close();\n }\n }\n\n /**\n * @internal\n *\n * Waits for propagation.\n *\n * See {@link database.Database#waitForPropagation}.\n *\n * @param request - Request to perform against each coordinator.\n * @param timeout - Maximum number of milliseconds to wait for propagation.\n */\n async waitForPropagation(request: RequestOptions, timeout = Infinity) {\n const numHosts = this._hosts.length;\n const propagated = [] as string[];\n const started = Date.now();\n let index = 0;\n while (true) {\n if (propagated.length === numHosts) {\n return;\n }\n while (propagated.includes(this._hostUrls[index])) {\n index = (index + 1) % numHosts;\n }\n const hostUrl = this._hostUrls[index];\n try {\n await this.request({ ...request, hostUrl });\n } catch (e: any) {\n if (started + timeout < Date.now()) {\n throw e;\n }\n await new Promise((resolve) => setTimeout(resolve, 1000));\n continue;\n }\n if (!propagated.includes(hostUrl)) {\n propagated.push(hostUrl);\n }\n }\n }\n\n /**\n * @internal\n *\n * Performs a request using the arangojs connection pool.\n */\n request<T = ArangojsResponse>(\n {\n hostUrl,\n method = \"GET\",\n body,\n expectBinary = false,\n isBinary = false,\n allowDirtyRead = false,\n retryOnConflict = this._retryOnConflict,\n timeout = 0,\n headers,\n ...urlInfo\n }: RequestOptions,\n transform?: (res: ArangojsResponse) => T\n ): Promise<T> {\n return new Promise((resolve, reject) => {\n let contentType = \"text/plain\";\n if (isBinary) {\n contentType = \"application/octet-stream\";\n } else if (body) {\n if (typeof body === \"object\") {\n body = JSON.stringify(body);\n contentType = \"application/json\";\n } else {\n body = String(body);\n }\n }\n\n const extraHeaders: Headers = {\n ...this._headers,\n \"content-type\": contentType,\n \"x-arango-version\": String(this._arangoVersion),\n };\n\n if (this._transactionId) {\n extraHeaders[\"x-arango-trx-id\"] = this._transactionId;\n }\n\n const task: Task = {\n retries: 0,\n hostUrl,\n allowDirtyRead,\n retryOnConflict,\n options: {\n url: this._buildUrl(urlInfo),\n headers: { ...extraHeaders, ...headers },\n timeout,\n method,\n expectBinary,\n body,\n },\n reject,\n resolve,\n transform,\n };\n\n if (this._precaptureStackTraces) {\n if (typeof Error.captureStackTrace === \"function\") {\n const capture = {} as { readonly stack: string };\n Error.captureStackTrace(capture);\n task.stack = () =>\n `\\n${capture.stack.split(\"\\n\").slice(3).join(\"\\n\")}`;\n } else {\n const capture = generateStackTrace() as { readonly stack: string };\n if (Object.prototype.hasOwnProperty.call(capture, \"stack\")) {\n task.stack = () =>\n `\\n${capture.stack.split(\"\\n\").slice(4).join(\"\\n\")}`;\n }\n }\n }\n\n this._queue.push(task);\n this._runQueue();\n });\n }\n}\n"]}
|
package/cursor.d.ts
CHANGED
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
* @packageDocumentation
|
|
9
9
|
*/
|
|
10
10
|
import { LinkedList } from "x3-linkedlist";
|
|
11
|
-
import { Dict } from "./connection";
|
|
12
11
|
import { Database } from "./database";
|
|
13
12
|
/**
|
|
14
13
|
* Additional information about the cursor.
|
|
@@ -24,15 +23,96 @@ export interface CursorExtras {
|
|
|
24
23
|
/**
|
|
25
24
|
* Query execution plan for the executed query.
|
|
26
25
|
*/
|
|
27
|
-
plan?: any
|
|
26
|
+
plan?: Record<string, any>;
|
|
28
27
|
/**
|
|
29
28
|
* Additional profiling information for the executed query.
|
|
30
29
|
*/
|
|
31
|
-
profile?:
|
|
30
|
+
profile?: Record<string, number>;
|
|
32
31
|
/**
|
|
33
32
|
* Additional statistics about the query execution.
|
|
34
33
|
*/
|
|
35
|
-
stats?:
|
|
34
|
+
stats?: CursorStats;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Additional statics about the query execution of the cursor.
|
|
38
|
+
*/
|
|
39
|
+
export interface CursorStats {
|
|
40
|
+
/**
|
|
41
|
+
* Total number of index entries read from in-memory caches for indexes of
|
|
42
|
+
* type edge or persistent.
|
|
43
|
+
*/
|
|
44
|
+
cacheHits: number;
|
|
45
|
+
/**
|
|
46
|
+
* Total number of cache read attempts for index entries that could not be
|
|
47
|
+
* served from in-memory caches for indexes of type edge or persistent.
|
|
48
|
+
*/
|
|
49
|
+
cacheMisses: number;
|
|
50
|
+
/**
|
|
51
|
+
* Total number of cursor objects created during query execution.
|
|
52
|
+
*/
|
|
53
|
+
cursorsCreated: number;
|
|
54
|
+
/**
|
|
55
|
+
* Total number of times an existing cursor object was repurposed.
|
|
56
|
+
*/
|
|
57
|
+
cursorsRearmed: number;
|
|
58
|
+
/**
|
|
59
|
+
* Total number of data-modification operations successfully executed.
|
|
60
|
+
*/
|
|
61
|
+
writesExecuted: number;
|
|
62
|
+
/**
|
|
63
|
+
* Total number of data-modification operations that were unsuccessful, but have been ignored because of query option ignoreErrors.
|
|
64
|
+
*/
|
|
65
|
+
writesIgnored: number;
|
|
66
|
+
/**
|
|
67
|
+
* Total number of documents iterated over when scanning a collection without an index.
|
|
68
|
+
*/
|
|
69
|
+
scannedFull: number;
|
|
70
|
+
/**
|
|
71
|
+
* Total number of documents iterated over when scanning a collection using an index.
|
|
72
|
+
*/
|
|
73
|
+
scannedIndex: number;
|
|
74
|
+
/**
|
|
75
|
+
* Total number of documents that were removed after executing a filter condition in a FilterNode.
|
|
76
|
+
*/
|
|
77
|
+
filtered: number;
|
|
78
|
+
/**
|
|
79
|
+
* Maximum memory usage of the query while it was running.
|
|
80
|
+
*/
|
|
81
|
+
peakMemoryUsage: number;
|
|
82
|
+
/**
|
|
83
|
+
* Execution time of the query in seconds.
|
|
84
|
+
*/
|
|
85
|
+
executionTime: number;
|
|
86
|
+
/**
|
|
87
|
+
* Total number of documents that matched the search condition if the query’s final top-level LIMIT statement were not present.
|
|
88
|
+
*/
|
|
89
|
+
fullCount?: number;
|
|
90
|
+
/**
|
|
91
|
+
* Total number of cluster-internal HTTP requests performed.
|
|
92
|
+
*/
|
|
93
|
+
httpRequests: number;
|
|
94
|
+
/**
|
|
95
|
+
* Runtime statistics per query execution node if `profile` was set to `2` or greater.
|
|
96
|
+
*/
|
|
97
|
+
nodes?: {
|
|
98
|
+
/**
|
|
99
|
+
* Execution node ID to correlate this node with nodes in the `extra.plan`.
|
|
100
|
+
*/
|
|
101
|
+
id: number;
|
|
102
|
+
/**
|
|
103
|
+
* Number of calls in this node.
|
|
104
|
+
*/
|
|
105
|
+
calls: number;
|
|
106
|
+
/**
|
|
107
|
+
* Number of temporary result items returned by this node.
|
|
108
|
+
*/
|
|
109
|
+
items: number;
|
|
110
|
+
filter: number;
|
|
111
|
+
/**
|
|
112
|
+
* Execution time of this node in seconds.
|
|
113
|
+
*/
|
|
114
|
+
runtime: number;
|
|
115
|
+
}[];
|
|
36
116
|
}
|
|
37
117
|
interface BatchView<T = any> {
|
|
38
118
|
isEmpty: boolean;
|
|
@@ -75,12 +155,11 @@ export declare class BatchedArrayCursor<T = any> {
|
|
|
75
155
|
protected _extra: CursorExtras;
|
|
76
156
|
protected _hasMore: boolean;
|
|
77
157
|
protected _id: string | undefined;
|
|
78
|
-
protected
|
|
158
|
+
protected _hostUrl?: string;
|
|
79
159
|
protected _allowDirtyRead?: boolean;
|
|
80
160
|
protected _itemsCursor: ArrayCursor<T>;
|
|
81
161
|
/**
|
|
82
162
|
* @internal
|
|
83
|
-
* @hidden
|
|
84
163
|
*/
|
|
85
164
|
constructor(db: Database, body: {
|
|
86
165
|
extra: any;
|
|
@@ -88,12 +167,12 @@ export declare class BatchedArrayCursor<T = any> {
|
|
|
88
167
|
hasMore: boolean;
|
|
89
168
|
id: string;
|
|
90
169
|
count: number;
|
|
91
|
-
},
|
|
170
|
+
}, hostUrl?: string, allowDirtyRead?: boolean);
|
|
92
171
|
protected _more(): Promise<void>;
|
|
93
172
|
/**
|
|
94
173
|
* An {@link ArrayCursor} providing item-wise access to the cursor result set.
|
|
95
174
|
*
|
|
96
|
-
* See also {@link ArrayCursor
|
|
175
|
+
* See also {@link ArrayCursor#batches}.
|
|
97
176
|
*/
|
|
98
177
|
get items(): ArrayCursor<T>;
|
|
99
178
|
/**
|
|
@@ -215,7 +294,7 @@ export declare class BatchedArrayCursor<T = any> {
|
|
|
215
294
|
* before it is fully depleted.
|
|
216
295
|
*
|
|
217
296
|
* See also:
|
|
218
|
-
*
|
|
297
|
+
* [`Array.prototype.forEach`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach).
|
|
219
298
|
*
|
|
220
299
|
* @param callback - Function to execute on each element.
|
|
221
300
|
*
|
|
@@ -258,11 +337,11 @@ export declare class BatchedArrayCursor<T = any> {
|
|
|
258
337
|
*
|
|
259
338
|
* **Note**: This creates an array of all return values, which may impact
|
|
260
339
|
* memory use when working with very large query result sets. Consider using
|
|
261
|
-
* {@link BatchedArrayCursor
|
|
262
|
-
* {@link BatchedArrayCursor
|
|
340
|
+
* {@link BatchedArrayCursor#forEach}, {@link BatchedArrayCursor#reduce} or
|
|
341
|
+
* {@link BatchedArrayCursor#flatMap} instead.
|
|
263
342
|
*
|
|
264
343
|
* See also:
|
|
265
|
-
*
|
|
344
|
+
* [`Array.prototype.map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map).
|
|
266
345
|
*
|
|
267
346
|
* @param R - Return type of the `callback` function.
|
|
268
347
|
* @param callback - Function to execute on each element.
|
|
@@ -292,7 +371,7 @@ export declare class BatchedArrayCursor<T = any> {
|
|
|
292
371
|
* before it is fully depleted.
|
|
293
372
|
*
|
|
294
373
|
* See also:
|
|
295
|
-
*
|
|
374
|
+
* [`Array.prototype.flatMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap).
|
|
296
375
|
*
|
|
297
376
|
* @param R - Return type of the `callback` function.
|
|
298
377
|
* @param callback - Function to execute on each element.
|
|
@@ -332,7 +411,7 @@ export declare class BatchedArrayCursor<T = any> {
|
|
|
332
411
|
* for the last batch.
|
|
333
412
|
*
|
|
334
413
|
* **Note**: Most complex uses of the `reduce` method can be replaced with
|
|
335
|
-
* simpler code using {@link BatchedArrayCursor
|
|
414
|
+
* simpler code using {@link BatchedArrayCursor#forEach} or the `for await`
|
|
336
415
|
* syntax.
|
|
337
416
|
*
|
|
338
417
|
* **Note**: If the result set spans multiple batches, any remaining batches
|
|
@@ -341,7 +420,7 @@ export declare class BatchedArrayCursor<T = any> {
|
|
|
341
420
|
* before it is fully depleted.
|
|
342
421
|
*
|
|
343
422
|
* See also:
|
|
344
|
-
*
|
|
423
|
+
* [`Array.prototype.reduce`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce).
|
|
345
424
|
*
|
|
346
425
|
* @param R - Return type of the `reducer` function.
|
|
347
426
|
* @param reducer - Function to execute on each element.
|
|
@@ -407,7 +486,7 @@ export declare class BatchedArrayCursor<T = any> {
|
|
|
407
486
|
* before it is fully depleted.
|
|
408
487
|
*
|
|
409
488
|
* See also:
|
|
410
|
-
*
|
|
489
|
+
* [`Array.prototype.reduce`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce).
|
|
411
490
|
*
|
|
412
491
|
* @param R - Return type of the `reducer` function.
|
|
413
492
|
* @param reducer - Function to execute on each element.
|
|
@@ -451,7 +530,7 @@ export declare class BatchedArrayCursor<T = any> {
|
|
|
451
530
|
}
|
|
452
531
|
/**
|
|
453
532
|
* The `ArrayCursor` type represents a cursor returned from a
|
|
454
|
-
* {@link Database
|
|
533
|
+
* {@link database.Database#query}.
|
|
455
534
|
*
|
|
456
535
|
* When using TypeScript, cursors can be cast to a specific item type in order
|
|
457
536
|
* to increase type safety.
|
|
@@ -481,12 +560,15 @@ export declare class BatchedArrayCursor<T = any> {
|
|
|
481
560
|
export declare class ArrayCursor<T = any> {
|
|
482
561
|
protected _batches: BatchedArrayCursor<T>;
|
|
483
562
|
protected _view: BatchView<T>;
|
|
563
|
+
/**
|
|
564
|
+
* @internal
|
|
565
|
+
*/
|
|
484
566
|
constructor(batchedCursor: BatchedArrayCursor, view: BatchView<T>);
|
|
485
567
|
/**
|
|
486
568
|
* A {@link BatchedArrayCursor} providing batch-wise access to the cursor
|
|
487
569
|
* result set.
|
|
488
570
|
*
|
|
489
|
-
* See also {@link BatchedArrayCursor
|
|
571
|
+
* See also {@link BatchedArrayCursor#items}.
|
|
490
572
|
*/
|
|
491
573
|
get batches(): BatchedArrayCursor<T>;
|
|
492
574
|
/**
|
|
@@ -568,7 +650,7 @@ export declare class ArrayCursor<T = any> {
|
|
|
568
650
|
* before it is fully depleted.
|
|
569
651
|
*
|
|
570
652
|
* See also:
|
|
571
|
-
*
|
|
653
|
+
* [`Array.prototype.forEach`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach).
|
|
572
654
|
*
|
|
573
655
|
* @param callback - Function to execute on each element.
|
|
574
656
|
*
|
|
@@ -601,11 +683,11 @@ export declare class ArrayCursor<T = any> {
|
|
|
601
683
|
*
|
|
602
684
|
* **Note**: This creates an array of all return values, which may impact
|
|
603
685
|
* memory use when working with very large query result sets. Consider using
|
|
604
|
-
* {@link ArrayCursor
|
|
605
|
-
* {@link ArrayCursor
|
|
686
|
+
* {@link ArrayCursor#forEach}, {@link ArrayCursor#reduce} or
|
|
687
|
+
* {@link ArrayCursor#flatMap} instead.
|
|
606
688
|
*
|
|
607
689
|
* See also:
|
|
608
|
-
*
|
|
690
|
+
* [`Array.prototype.map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map).
|
|
609
691
|
*
|
|
610
692
|
* @param R - Return type of the `callback` function.
|
|
611
693
|
* @param callback - Function to execute on each element.
|
|
@@ -632,7 +714,7 @@ export declare class ArrayCursor<T = any> {
|
|
|
632
714
|
* before it is fully depleted.
|
|
633
715
|
*
|
|
634
716
|
* See also:
|
|
635
|
-
*
|
|
717
|
+
* [`Array.prototype.flatMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap).
|
|
636
718
|
*
|
|
637
719
|
* @param R - Return type of the `callback` function.
|
|
638
720
|
* @param callback - Function to execute on each element.
|
|
@@ -666,7 +748,7 @@ export declare class ArrayCursor<T = any> {
|
|
|
666
748
|
* for the last item.
|
|
667
749
|
*
|
|
668
750
|
* **Note**: Most complex uses of the `reduce` method can be replaced with
|
|
669
|
-
* simpler code using {@link ArrayCursor
|
|
751
|
+
* simpler code using {@link ArrayCursor#forEach} or the `for await` syntax.
|
|
670
752
|
*
|
|
671
753
|
* **Note**: If the result set spans multiple batches, any remaining batches
|
|
672
754
|
* will only be fetched on demand. Depending on the cursor's TTL and the
|
|
@@ -674,7 +756,7 @@ export declare class ArrayCursor<T = any> {
|
|
|
674
756
|
* before it is fully depleted.
|
|
675
757
|
*
|
|
676
758
|
* See also:
|
|
677
|
-
*
|
|
759
|
+
* [`Array.prototype.reduce`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce).
|
|
678
760
|
*
|
|
679
761
|
* @param R - Return type of the `reducer` function.
|
|
680
762
|
* @param reducer - Function to execute on each element.
|
|
@@ -734,7 +816,7 @@ export declare class ArrayCursor<T = any> {
|
|
|
734
816
|
* before it is fully depleted.
|
|
735
817
|
*
|
|
736
818
|
* See also:
|
|
737
|
-
*
|
|
819
|
+
* [`Array.prototype.reduce`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce).
|
|
738
820
|
*
|
|
739
821
|
* @param R - Return type of the `reducer` function.
|
|
740
822
|
* @param reducer - Function to execute on each element.
|
package/cursor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../src/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../src/cursor.ts"],"names":[],"mappings":"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"}
|