arangojs
Version:
The official ArangoDB JavaScript driver.
1 lines • 16.3 kB
Source Map (JSON)
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/route.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * ```ts\n * import type { Route } from \"arangojs/route.js\";\n * ```\n *\n * The \"route\" module provides route related types and interfaces for TypeScript.\n *\n * @packageDocumentation\n */\nimport { RequestOptions } from \"./connection.js\";\nimport { Database } from \"./database.js\";\nimport { ArangojsResponse } from \"./lib/request.js\";\nimport { mergeHeaders } from \"./lib/mergeHeaders.js\";\n\n/**\n * Represents an arbitrary route relative to an ArangoDB database.\n */\nexport class Route {\n protected _db: Database;\n protected _path: string;\n protected _headers: Headers;\n\n /**\n * @internal\n */\n constructor(\n db: Database,\n path: string = \"\",\n headers: Headers | Record<string, string> = {}\n ) {\n if (!path) path = \"\";\n else if (path.charAt(0) !== \"/\") path = `/${path}`;\n this._db = db;\n this._path = path;\n this._headers = headers instanceof Headers ? headers : new Headers(headers);\n }\n\n /**\n * Creates a new route relative to this route that inherits any of its default\n * HTTP headers.\n *\n * @param path - Path relative to this route.\n * @param headers - Additional headers that will be sent with each request.\n *\n * @example\n * ```js\n * const db = new Database();\n * const foxx = db.route(\"/my-foxx-service\");\n * const users = foxx.route(\"/users\");\n * ```\n */\n route(path: string, headers?: Headers | Record<string, string>) {\n if (!path) path = \"\";\n else if (path.charAt(0) !== \"/\") path = `/${path}`;\n return new Route(\n this._db,\n this._path + path,\n mergeHeaders(this._headers, headers)\n );\n }\n\n /**\n * Performs an arbitrary HTTP request relative to this route and returns the\n * server response.\n *\n * @param options - Options for performing the request.\n *\n * @example\n * ```js\n * const db = new Database();\n * const foxx = db.route(\"/my-foxx-service\");\n * const res = await foxx.request({\n * method: \"POST\",\n * path: \"/users\",\n * body: {\n * username: \"admin\",\n * password: \"hunter2\"\n * }\n * });\n * ```\n */\n request(options?: RequestOptions) {\n const opts = { ...options };\n if (!opts.path || opts.path === \"/\") opts.path = \"\";\n else if (!this._path || opts.path.charAt(0) === \"/\") opts.path = opts.path;\n else opts.path = `/${opts.path}`;\n opts.basePath = this._path;\n opts.headers = mergeHeaders(this._headers, opts.headers);\n opts.method = opts.method ? opts.method.toUpperCase() : \"GET\";\n return this._db.request(opts, false);\n }\n\n /**\n * Performs a DELETE request against the given path relative to this route\n * and returns the server response.\n *\n * @param path - Path relative to this route.\n * @param search - Query string parameters for this request.\n * @param headers - Additional headers to send with this request.\n *\n * @example\n * ```js\n * const db = new Database();\n * const foxx = db.route(\"/my-foxx-service\");\n * const res = await foxx.delete(\"/users/admin\");\n * ```\n */\n delete(\n path: string,\n search?: URLSearchParams | Record<string, any>,\n headers?: Headers | Record<string, string>\n ): Promise<ArangojsResponse>;\n /**\n * Performs a DELETE request against the given path relative to this route\n * and returns the server response.\n *\n * @param search - Query string parameters for this request.\n * @param headers - Additional headers to send with this request.\n *\n * @example\n * ```js\n * const db = new Database();\n * const foxx = db.route(\"/my-foxx-service\");\n * const user = foxx.roue(\"/users/admin\");\n * const res = await user.delete();\n * ```\n */\n delete(\n search?: URLSearchParams | Record<string, any>,\n headers?: Headers | Record<string, string>\n ): Promise<ArangojsResponse>;\n delete(...args: any[]): Promise<ArangojsResponse> {\n const path = typeof args[0] === \"string\" ? args.shift() : undefined;\n const [search, headers] = args;\n return this.request({ method: \"DELETE\", path, search, headers });\n }\n\n /**\n * Performs a GET request against the given path relative to this route\n * and returns the server response.\n *\n * @param path - Path relative to this route.\n * @param search - Query string parameters for this request.\n * @param headers - Additional headers to send with this request.\n *\n * @example\n * ```js\n * const db = new Database();\n * const foxx = db.route(\"/my-foxx-service\");\n * const res = await foxx.get(\"/users\", { offset: 10, limit: 5 });\n * ```\n */\n get(\n path: string,\n search?: URLSearchParams | Record<string, any>,\n headers?: Headers | Record<string, string>\n ): Promise<ArangojsResponse>;\n /**\n * Performs a GET request against the given path relative to this route\n * and returns the server response.\n *\n * @param search - Query string parameters for this request.\n * @param headers - Additional headers to send with this request.\n *\n * @example\n * ```js\n * const db = new Database();\n * const foxx = db.route(\"/my-foxx-service\");\n * const users = foxx.route(\"/users\");\n * const res = await users.get({ offset: 10, limit: 5 });\n * ```\n */\n get(\n search?: URLSearchParams | Record<string, any>,\n headers?: Headers | Record<string, string>\n ): Promise<ArangojsResponse>;\n get(...args: any[]): Promise<ArangojsResponse> {\n const path = typeof args[0] === \"string\" ? args.shift() : undefined;\n const [search, headers] = args;\n return this.request({ method: \"GET\", path, search, headers });\n }\n\n /**\n * Performs a HEAD request against the given path relative to this route\n * and returns the server response.\n *\n * @param path - Path relative to this route.\n * @param search - Query string parameters for this request.\n * @param headers - Additional headers to send with this request.\n *\n * @example\n * ```js\n * const db = new Database();\n * const foxx = db.route(\"/my-foxx-service\");\n * const res = await foxx.head(\"/users\", { offset: 10, limit: 5 });\n * ```\n */\n head(\n path: string,\n search?: URLSearchParams | Record<string, any>,\n headers?: Headers | Record<string, string>\n ): Promise<ArangojsResponse>;\n /**\n * Performs a HEAD request against the given path relative to this route\n * and returns the server response.\n *\n * @param search - Query string parameters for this request.\n * @param headers - Additional headers to send with this request.\n *\n * @example\n * ```js\n * const db = new Database();\n * const foxx = db.route(\"/my-foxx-service\");\n * const users = foxx.route(\"/users\");\n * const res = await users.head({ offset: 10, limit: 5 });\n * ```\n */\n head(\n search?: URLSearchParams | Record<string, any>,\n headers?: Headers | Record<string, string>\n ): Promise<ArangojsResponse>;\n head(...args: any[]): Promise<ArangojsResponse> {\n const path = typeof args[0] === \"string\" ? args.shift() : undefined;\n const [search, headers] = args;\n return this.request({ method: \"HEAD\", path, search, headers });\n }\n\n /**\n * Performs a PATCH request against the given path relative to this route\n * and returns the server response.\n *\n * @param path - Path relative to this route.\n * @param body - Body of the request object.\n * @param search - Query string parameters for this request.\n * @param headers - Additional headers to send with this request.\n *\n * @example\n * ```js\n * const db = new Database();\n * const foxx = db.route(\"/my-foxx-service\");\n * const res = await foxx.patch(\"/users/admin\", { password: \"admin\" });\n * ```\n */\n patch(\n path: string,\n body?: any,\n search?: URLSearchParams | Record<string, any>,\n headers?: Headers | Record<string, string>\n ): Promise<ArangojsResponse>;\n /**\n * Performs a PATCH request against the given path relative to this route\n * and returns the server response.\n *\n * **Note**: `body` must not be a `string`.\n *\n * @param body - Body of the request object. Must not be a string.\n * @param search - Query string parameters for this request.\n * @param headers - Additional headers to send with this request.\n *\n * @example\n * ```js\n * const db = new Database();\n * const foxx = db.route(\"/my-foxx-service\");\n * const user = foxx.route(\"/users/admin\")\n * const res = await user.patch({ password: \"admin\" });\n * ```\n */\n patch(\n body?: any,\n search?: URLSearchParams | Record<string, any>,\n headers?: Headers | Record<string, string>\n ): Promise<ArangojsResponse>;\n patch(...args: any[]): Promise<ArangojsResponse> {\n const path = typeof args[0] === \"string\" ? args.shift() : undefined;\n const [body, search, headers] = args;\n return this.request({ method: \"PATCH\", path, body, search, headers });\n }\n\n /**\n * Performs a POST request against the given path relative to this route\n * and returns the server response.\n *\n * @param path - Path relative to this route.\n * @param body - Body of the request object.\n * @param search - Query string parameters for this request.\n * @param headers - Additional headers to send with this request.\n *\n * @example\n * ```js\n * const db = new Database();\n * const foxx = db.route(\"/my-foxx-service\");\n * const res = await foxx.post(\"/users\", {\n * username: \"admin\",\n * password: \"hunter2\"\n * });\n * ```\n */\n post(\n path: string,\n body?: any,\n search?: URLSearchParams | Record<string, any>,\n headers?: Headers | Record<string, string>\n ): Promise<ArangojsResponse>;\n /**\n * Performs a POST request against the given path relative to this route\n * and returns the server response.\n *\n * **Note**: `body` must not be a `string`.\n *\n * @param body - Body of the request object. Must not be a string.\n * @param search - Query string parameters for this request.\n * @param headers - Additional headers to send with this request.\n *\n * @example\n * ```js\n * const db = new Database();\n * const foxx = db.route(\"/my-foxx-service\");\n * const users = foxx.route(\"/users\");\n * const res = await users.post({\n * username: \"admin\",\n * password: \"hunter2\"\n * });\n * ```\n */\n post(\n body?: any,\n search?: URLSearchParams | Record<string, any>,\n headers?: Headers | Record<string, string>\n ): Promise<ArangojsResponse>;\n post(...args: any[]): Promise<ArangojsResponse> {\n const path = typeof args[0] === \"string\" ? args.shift() : undefined;\n const [body, search, headers] = args;\n return this.request({ method: \"POST\", path, body, search, headers });\n }\n\n /**\n * Performs a PUT request against the given path relative to this route\n * and returns the server response.\n *\n * @param path - Path relative to this route.\n * @param body - Body of the request object.\n * @param search - Query string parameters for this request.\n * @param headers - Additional headers to send with this request.\n *\n * @example\n * ```js\n * const db = new Database();\n * const foxx = db.route(\"/my-foxx-service\");\n * const res = await foxx.put(\"/users/admin/password\", { password: \"admin\" });\n * ```\n */\n put(\n path: string,\n body?: any,\n search?: URLSearchParams | Record<string, any>,\n headers?: Headers | Record<string, string>\n ): Promise<ArangojsResponse>;\n /**\n * Performs a PUT request against the given path relative to this route\n * and returns the server response.\n *\n * **Note**: `body` must not be a `string`.\n *\n * @param body - Body of the request object. Must not be a string.\n * @param search - Query string parameters for this request.\n * @param headers - Additional headers to send with this request.\n *\n * @example\n * ```js\n * const db = new Database();\n * const foxx = db.route(\"/my-foxx-service\");\n * const password = foxx.route(\"/users/admin/password\");\n * const res = await password.put({ password: \"admin\" });\n * ```\n */\n put(\n body?: any,\n search?: URLSearchParams | Record<string, any>,\n headers?: Headers | Record<string, string>\n ): Promise<ArangojsResponse>;\n put(...args: any[]): Promise<ArangojsResponse> {\n const path = typeof args[0] === \"string\" ? args.shift() : undefined;\n const [body, search, headers] = args;\n return this.request({ method: \"PUT\", path, body, search, headers });\n }\n}\n"]}