diff --git a/api/redirect.js b/api/redirect.js new file mode 100644 index 0000000..42f31bb --- /dev/null +++ b/api/redirect.js @@ -0,0 +1,34 @@ +const sdk = require("node-appwrite"); + +export default async function handler(req, res) { + const { shortCode } = req.query; + + console.log("shortCode", shortCode); + + if (!shortCode) { + return res.status(400).json({ error: "shortCode is required" }); + } + + // Initialize Appwrite client + const client = new sdk.Client() + .setEndpoint(process.env.APPWRITE_ENDPOINT) + .setProject(process.env.APPWRITE_PROJECT); + + const database = new sdk.Databases(client); + + try { + // Retrieve the document by shortCode + const result = await database.getDocument( + process.env.URL_DB, + process.env.URL_COL, + shortCode + ); + + const longURL = result.longURL; + + // Redirect to the original URL + return res.redirect(302, longURL); + } catch (error) { + return res.status(404).json({ error: error.message }); + } +} diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..c200cb9 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,23 @@ +{ + "name": "url-shortener", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/node-appwrite": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/node-appwrite/-/node-appwrite-14.1.0.tgz", + "integrity": "sha512-kuKAZrdaAcGYOMUXtxNb1j+uIy+FIMiiU1dFkgwTXLsMLeLvC6HJ8/FH/kN9JyrWR2a2zcGN7gWfyQgWYoLMTA==", + "license": "BSD-3-Clause", + "dependencies": { + "node-fetch-native-with-agent": "1.7.2" + } + }, + "node_modules/node-fetch-native-with-agent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-fetch-native-with-agent/-/node-fetch-native-with-agent-1.7.2.tgz", + "integrity": "sha512-5MaOOCuJEvcckoz7/tjdx1M6OusOY6Xc5f459IaruGStWnKzlI1qpNgaAwmn4LmFYcsSlj+jBMk84wmmRxfk5g==", + "license": "MIT" + } + } +} diff --git a/node_modules/node-appwrite/LICENSE b/node_modules/node-appwrite/LICENSE new file mode 100644 index 0000000..5479bb8 --- /dev/null +++ b/node_modules/node-appwrite/LICENSE @@ -0,0 +1,12 @@ +Copyright (c) 2024 Appwrite (https://appwrite.io) and individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + + 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/node_modules/node-appwrite/README.md b/node_modules/node-appwrite/README.md new file mode 100644 index 0000000..d77ecca --- /dev/null +++ b/node_modules/node-appwrite/README.md @@ -0,0 +1,110 @@ +# Appwrite Node.js SDK + +![License](https://img.shields.io/github/license/appwrite/sdk-for-node.svg?style=flat-square) +![Version](https://img.shields.io/badge/api%20version-1.6.0-blue.svg?style=flat-square) +[![Build Status](https://img.shields.io/travis/com/appwrite/sdk-generator?style=flat-square)](https://travis-ci.com/appwrite/sdk-generator) +[![Twitter Account](https://img.shields.io/twitter/follow/appwrite?color=00acee&label=twitter&style=flat-square)](https://twitter.com/appwrite) +[![Discord](https://img.shields.io/discord/564160730845151244?label=discord&style=flat-square)](https://appwrite.io/discord) + +**This SDK is compatible with Appwrite server version 1.6.x. For older versions, please check [previous releases](https://github.com/appwrite/sdk-for-node/releases).** + + > This is the Node.js SDK for integrating with Appwrite from your Node.js server-side code. + If you're looking to integrate from the browser, you should check [appwrite/sdk-for-web](https://github.com/appwrite/sdk-for-web) + +Appwrite is an open-source backend as a service server that abstract and simplify complex and repetitive development tasks behind a very simple to use REST API. Appwrite aims to help you develop your apps faster and in a more secure way. Use the Node.js SDK to integrate your app with the Appwrite server to easily start interacting with all of Appwrite backend APIs and tools. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs) + +![Appwrite](https://github.com/appwrite/appwrite/raw/main/public/images/github.png) + +## Installation + +To install via [NPM](https://www.npmjs.com/): + +```bash +npm install node-appwrite --save +``` + + +## Getting Started + +### Init your SDK +Initialize your SDK with your Appwrite server API endpoint and project ID which can be found in your project settings page and your new API secret Key project API keys section. + +```js +const sdk = require('node-appwrite'); + +let client = new sdk.Client(); + +client + .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint + .setProject('5df5acd0d48c2') // Your project ID + .setKey('919c2d18fb5d4...a2ae413da83346ad2') // Your secret API key + .setSelfSigned() // Use only on dev mode with a self-signed SSL cert +; +``` + +### Make Your First Request +Once your SDK object is set, create any of the Appwrite service objects and choose any request to send. Full documentation for any service method you would like to use can be found in your SDK documentation or in the [API References](https://appwrite.io/docs) section. + +```js +let users = new sdk.Users(client); + +let promise = users.create(sdk.ID.unique(), "email@example.com", "+123456789", "password", "Walter O'Brien"); + +promise.then(function (response) { + console.log(response); +}, function (error) { + console.log(error); +}); +``` + +### Full Example +```js +const sdk = require('node-appwrite'); + +let client = new sdk.Client(); + +client + .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint + .setProject('5df5acd0d48c2') // Your project ID + .setKey('919c2d18fb5d4...a2ae413da83346ad2') // Your secret API key + .setSelfSigned() // Use only on dev mode with a self-signed SSL cert +; + +let users = new sdk.Users(client); +let promise = users.create(sdk.ID.unique(), "email@example.com", "+123456789", "password", "Walter O'Brien"); + +promise.then(function (response) { + console.log(response); +}, function (error) { + console.log(error); +}); +``` + +### Error Handling +The Appwrite Node SDK raises `AppwriteException` object with `message`, `code` and `response` properties. You can handle any errors by catching `AppwriteException` and present the `message` to the user or handle it yourself based on the provided error information. Below is an example. + +```js +let users = new sdk.Users(client); + +try { + let res = await users.create(sdk.ID.unique(), "email@example.com", "+123456789", "password", "Walter O'Brien"); +} catch(e) { + console.log(e.message); +} +``` + +### Learn more +You can use the following resources to learn more and get help +- 🚀 [Getting Started Tutorial](https://appwrite.io/docs/getting-started-for-server) +- 📜 [Appwrite Docs](https://appwrite.io/docs) +- 💬 [Discord Community](https://appwrite.io/discord) +- 🚂 [Appwrite Node Playground](https://github.com/appwrite/playground-for-node) + + +## Contribution + +This library is auto-generated by Appwrite custom [SDK Generator](https://github.com/appwrite/sdk-generator). To learn more about how you can help us improve this SDK, please check the [contribution guide](https://github.com/appwrite/sdk-generator/blob/master/CONTRIBUTING.md) before sending a pull-request. + +## License + +Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/client.d.mts b/node_modules/node-appwrite/dist/client.d.mts new file mode 100644 index 0000000..bb49d7e --- /dev/null +++ b/node_modules/node-appwrite/dist/client.d.mts @@ -0,0 +1,131 @@ +export { Models } from './models.mjs'; +export { Query, QueryTypes, QueryTypesList } from './query.mjs'; + +type Payload = { + [key: string]: any; +}; +type UploadProgress = { + $id: string; + progress: number; + sizeUploaded: number; + chunksTotal: number; + chunksUploaded: number; +}; +type Headers = { + [key: string]: string; +}; +declare class AppwriteException extends Error { + code: number; + response: string; + type: string; + constructor(message: string, code?: number, type?: string, response?: string); +} +declare class Client { + static CHUNK_SIZE: number; + config: { + endpoint: string; + selfSigned: boolean; + project: string; + key: string; + jwt: string; + locale: string; + session: string; + forwardeduseragent: string; + }; + headers: Headers; + /** + * Set Endpoint + * + * Your project endpoint + * + * @param {string} endpoint + * + * @returns {this} + */ + setEndpoint(endpoint: string): this; + /** + * Set self-signed + * + * @param {boolean} selfSigned + * + * @returns {this} + */ + setSelfSigned(selfSigned: boolean): this; + /** + * Add header + * + * @param {string} header + * @param {string} value + * + * @returns {this} + */ + addHeader(header: string, value: string): this; + /** + * Set Project + * + * Your project ID + * + * @param value string + * + * @return {this} + */ + setProject(value: string): this; + /** + * Set Key + * + * Your secret API key + * + * @param value string + * + * @return {this} + */ + setKey(value: string): this; + /** + * Set JWT + * + * Your secret JSON Web Token + * + * @param value string + * + * @return {this} + */ + setJWT(value: string): this; + /** + * Set Locale + * + * @param value string + * + * @return {this} + */ + setLocale(value: string): this; + /** + * Set Session + * + * The user session to authenticate with + * + * @param value string + * + * @return {this} + */ + setSession(value: string): this; + /** + * Set ForwardedUserAgent + * + * The user agent string of the client that made the request + * + * @param value string + * + * @return {this} + */ + setForwardedUserAgent(value: string): this; + prepareRequest(method: string, url: URL, headers?: Headers, params?: Payload): { + uri: string; + options: RequestInit; + }; + chunkedUpload(method: string, url: URL, headers: Headers | undefined, originalPayload: Payload | undefined, onProgress: (progress: UploadProgress) => void): Promise; + redirect(method: string, url: URL, headers?: Headers, params?: Payload): Promise; + call(method: string, url: URL, headers?: Headers, params?: Payload, responseType?: string): Promise; + static flatten(data: Payload, prefix?: string): Payload; +} + +export { AppwriteException, Client, Payload, UploadProgress }; diff --git a/node_modules/node-appwrite/dist/client.d.ts b/node_modules/node-appwrite/dist/client.d.ts new file mode 100644 index 0000000..bc162c3 --- /dev/null +++ b/node_modules/node-appwrite/dist/client.d.ts @@ -0,0 +1,131 @@ +export { Models } from './models.js'; +export { Query, QueryTypes, QueryTypesList } from './query.js'; + +type Payload = { + [key: string]: any; +}; +type UploadProgress = { + $id: string; + progress: number; + sizeUploaded: number; + chunksTotal: number; + chunksUploaded: number; +}; +type Headers = { + [key: string]: string; +}; +declare class AppwriteException extends Error { + code: number; + response: string; + type: string; + constructor(message: string, code?: number, type?: string, response?: string); +} +declare class Client { + static CHUNK_SIZE: number; + config: { + endpoint: string; + selfSigned: boolean; + project: string; + key: string; + jwt: string; + locale: string; + session: string; + forwardeduseragent: string; + }; + headers: Headers; + /** + * Set Endpoint + * + * Your project endpoint + * + * @param {string} endpoint + * + * @returns {this} + */ + setEndpoint(endpoint: string): this; + /** + * Set self-signed + * + * @param {boolean} selfSigned + * + * @returns {this} + */ + setSelfSigned(selfSigned: boolean): this; + /** + * Add header + * + * @param {string} header + * @param {string} value + * + * @returns {this} + */ + addHeader(header: string, value: string): this; + /** + * Set Project + * + * Your project ID + * + * @param value string + * + * @return {this} + */ + setProject(value: string): this; + /** + * Set Key + * + * Your secret API key + * + * @param value string + * + * @return {this} + */ + setKey(value: string): this; + /** + * Set JWT + * + * Your secret JSON Web Token + * + * @param value string + * + * @return {this} + */ + setJWT(value: string): this; + /** + * Set Locale + * + * @param value string + * + * @return {this} + */ + setLocale(value: string): this; + /** + * Set Session + * + * The user session to authenticate with + * + * @param value string + * + * @return {this} + */ + setSession(value: string): this; + /** + * Set ForwardedUserAgent + * + * The user agent string of the client that made the request + * + * @param value string + * + * @return {this} + */ + setForwardedUserAgent(value: string): this; + prepareRequest(method: string, url: URL, headers?: Headers, params?: Payload): { + uri: string; + options: RequestInit; + }; + chunkedUpload(method: string, url: URL, headers: Headers | undefined, originalPayload: Payload | undefined, onProgress: (progress: UploadProgress) => void): Promise; + redirect(method: string, url: URL, headers?: Headers, params?: Payload): Promise; + call(method: string, url: URL, headers?: Headers, params?: Payload, responseType?: string): Promise; + static flatten(data: Payload, prefix?: string): Payload; +} + +export { AppwriteException, Client, Payload, UploadProgress }; diff --git a/node_modules/node-appwrite/dist/client.js b/node_modules/node-appwrite/dist/client.js new file mode 100644 index 0000000..cb221f0 --- /dev/null +++ b/node_modules/node-appwrite/dist/client.js @@ -0,0 +1,306 @@ +'use strict'; + +var nodeFetchNativeWithAgent = require('node-fetch-native-with-agent'); +var agent = require('node-fetch-native-with-agent/agent'); +var query = require('./query'); + +class AppwriteException extends Error { + constructor(message, code = 0, type = "", response = "") { + super(message); + this.name = "AppwriteException"; + this.message = message; + this.code = code; + this.type = type; + this.response = response; + } +} +function getUserAgent() { + let ua = "AppwriteNodeJSSDK/14.1.0"; + const platform = []; + if (typeof process !== "undefined") { + if (typeof process.platform === "string") + platform.push(process.platform); + if (typeof process.arch === "string") + platform.push(process.arch); + } + if (platform.length > 0) { + ua += ` (${platform.join("; ")})`; + } + if (typeof navigator !== "undefined" && typeof navigator.userAgent === "string") { + ua += ` ${navigator.userAgent}`; + } else if (typeof globalThis.EdgeRuntime === "string") { + ua += ` EdgeRuntime`; + } else if (typeof process !== "undefined" && typeof process.version === "string") { + ua += ` Node.js/${process.version}`; + } + return ua; +} +const _Client = class _Client { + constructor() { + this.config = { + endpoint: "https://cloud.appwrite.io/v1", + selfSigned: false, + project: "", + key: "", + jwt: "", + locale: "", + session: "", + forwardeduseragent: "" + }; + this.headers = { + "x-sdk-name": "Node.js", + "x-sdk-platform": "server", + "x-sdk-language": "nodejs", + "x-sdk-version": "14.1.0", + "user-agent": getUserAgent(), + "X-Appwrite-Response-Format": "1.6.0" + }; + } + /** + * Set Endpoint + * + * Your project endpoint + * + * @param {string} endpoint + * + * @returns {this} + */ + setEndpoint(endpoint) { + this.config.endpoint = endpoint; + return this; + } + /** + * Set self-signed + * + * @param {boolean} selfSigned + * + * @returns {this} + */ + setSelfSigned(selfSigned) { + if (typeof globalThis.EdgeRuntime !== "undefined") { + console.warn("setSelfSigned is not supported in edge runtimes."); + } + this.config.selfSigned = selfSigned; + return this; + } + /** + * Add header + * + * @param {string} header + * @param {string} value + * + * @returns {this} + */ + addHeader(header, value) { + this.headers[header.toLowerCase()] = value; + return this; + } + /** + * Set Project + * + * Your project ID + * + * @param value string + * + * @return {this} + */ + setProject(value) { + this.headers["X-Appwrite-Project"] = value; + this.config.project = value; + return this; + } + /** + * Set Key + * + * Your secret API key + * + * @param value string + * + * @return {this} + */ + setKey(value) { + this.headers["X-Appwrite-Key"] = value; + this.config.key = value; + return this; + } + /** + * Set JWT + * + * Your secret JSON Web Token + * + * @param value string + * + * @return {this} + */ + setJWT(value) { + this.headers["X-Appwrite-JWT"] = value; + this.config.jwt = value; + return this; + } + /** + * Set Locale + * + * @param value string + * + * @return {this} + */ + setLocale(value) { + this.headers["X-Appwrite-Locale"] = value; + this.config.locale = value; + return this; + } + /** + * Set Session + * + * The user session to authenticate with + * + * @param value string + * + * @return {this} + */ + setSession(value) { + this.headers["X-Appwrite-Session"] = value; + this.config.session = value; + return this; + } + /** + * Set ForwardedUserAgent + * + * The user agent string of the client that made the request + * + * @param value string + * + * @return {this} + */ + setForwardedUserAgent(value) { + this.headers["X-Forwarded-User-Agent"] = value; + this.config.forwardeduseragent = value; + return this; + } + prepareRequest(method, url, headers = {}, params = {}) { + method = method.toUpperCase(); + headers = Object.assign({}, this.headers, headers); + let options = { + method, + headers, + ...agent.createAgent(this.config.endpoint, { rejectUnauthorized: !this.config.selfSigned }) + }; + if (method === "GET") { + for (const [key, value] of Object.entries(_Client.flatten(params))) { + url.searchParams.append(key, value); + } + } else { + switch (headers["content-type"]) { + case "application/json": + options.body = JSON.stringify(params); + break; + case "multipart/form-data": + const formData = new nodeFetchNativeWithAgent.FormData(); + for (const [key, value] of Object.entries(params)) { + if (value instanceof nodeFetchNativeWithAgent.File) { + formData.append(key, value, value.name); + } else if (Array.isArray(value)) { + for (const nestedValue of value) { + formData.append(`${key}[]`, nestedValue); + } + } else { + formData.append(key, value); + } + } + options.body = formData; + delete headers["content-type"]; + break; + } + } + return { uri: url.toString(), options }; + } + async chunkedUpload(method, url, headers = {}, originalPayload = {}, onProgress) { + const file = Object.values(originalPayload).find((value) => value instanceof nodeFetchNativeWithAgent.File); + if (file.size <= _Client.CHUNK_SIZE) { + return await this.call(method, url, headers, originalPayload); + } + let start = 0; + let response = null; + while (start < file.size) { + let end = start + _Client.CHUNK_SIZE; + if (end >= file.size) { + end = file.size; + } + headers["content-range"] = `bytes ${start}-${end - 1}/${file.size}`; + const chunk = file.slice(start, end); + let payload = { ...originalPayload, file: new nodeFetchNativeWithAgent.File([chunk], file.name) }; + response = await this.call(method, url, headers, payload); + if (onProgress && typeof onProgress === "function") { + onProgress({ + $id: response.$id, + progress: Math.round(end / file.size * 100), + sizeUploaded: end, + chunksTotal: Math.ceil(file.size / _Client.CHUNK_SIZE), + chunksUploaded: Math.ceil(end / _Client.CHUNK_SIZE) + }); + } + if (response && response.$id) { + headers["x-appwrite-id"] = response.$id; + } + start = end; + } + return response; + } + async redirect(method, url, headers = {}, params = {}) { + const { uri, options } = this.prepareRequest(method, url, headers, params); + const response = await nodeFetchNativeWithAgent.fetch(uri, { + ...options, + redirect: "manual" + }); + if (response.status !== 301 && response.status !== 302) { + throw new AppwriteException("Invalid redirect", response.status); + } + return response.headers.get("location") || ""; + } + async call(method, url, headers = {}, params = {}, responseType = "json") { + var _a; + const { uri, options } = this.prepareRequest(method, url, headers, params); + let data = null; + const response = await nodeFetchNativeWithAgent.fetch(uri, options); + const warnings = response.headers.get("x-appwrite-warning"); + if (warnings) { + warnings.split(";").forEach((warning) => console.warn("Warning: " + warning)); + } + if ((_a = response.headers.get("content-type")) == null ? void 0 : _a.includes("application/json")) { + data = await response.json(); + } else if (responseType === "arrayBuffer") { + data = await response.arrayBuffer(); + } else { + data = { + message: await response.text() + }; + } + if (400 <= response.status) { + throw new AppwriteException(data == null ? void 0 : data.message, response.status, data == null ? void 0 : data.type, data); + } + return data; + } + static flatten(data, prefix = "") { + let output = {}; + for (const [key, value] of Object.entries(data)) { + let finalKey = prefix ? prefix + "[" + key + "]" : key; + if (Array.isArray(value)) { + output = { ...output, ..._Client.flatten(value, finalKey) }; + } else { + output[finalKey] = value; + } + } + return output; + } +}; +_Client.CHUNK_SIZE = 1024 * 1024 * 5; +let Client = _Client; + +Object.defineProperty(exports, 'Query', { + enumerable: true, + get: function () { return query.Query; } +}); +exports.AppwriteException = AppwriteException; +exports.Client = Client; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=client.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/client.js.map b/node_modules/node-appwrite/dist/client.js.map new file mode 100644 index 0000000..658d468 --- /dev/null +++ b/node_modules/node-appwrite/dist/client.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { fetch, FormData, File } from 'node-fetch-native-with-agent';\nimport { createAgent } from 'node-fetch-native-with-agent/agent';\nimport { Models } from './models';\n\ntype Payload = {\n [key: string]: any;\n}\n\ntype UploadProgress = {\n $id: string;\n progress: number;\n sizeUploaded: number;\n chunksTotal: number;\n chunksUploaded: number;\n}\n\ntype Headers = {\n [key: string]: string;\n}\n\nclass AppwriteException extends Error {\n code: number;\n response: string;\n type: string;\n constructor(message: string, code: number = 0, type: string = '', response: string = '') {\n super(message);\n this.name = 'AppwriteException';\n this.message = message;\n this.code = code;\n this.type = type;\n this.response = response;\n }\n}\n\nfunction getUserAgent() {\n let ua = 'AppwriteNodeJSSDK/14.1.0';\n\n // `process` is a global in Node.js, but not fully available in all runtimes.\n const platform: string[] = [];\n if (typeof process !== 'undefined') {\n if (typeof process.platform === 'string') platform.push(process.platform);\n if (typeof process.arch === 'string') platform.push(process.arch);\n } \n if (platform.length > 0) {\n ua += ` (${platform.join('; ')})`;\n }\n\n // `navigator.userAgent` is available in Node.js 21 and later.\n // It's also part of the WinterCG spec, so many edge runtimes provide it.\n // https://common-min-api.proposal.wintercg.org/#requirements-for-navigatoruseragent\n // @ts-ignore\n if (typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string') {\n // @ts-ignore\n ua += ` ${navigator.userAgent}`;\n\n // @ts-ignore\n } else if (typeof globalThis.EdgeRuntime === 'string') {\n ua += ` EdgeRuntime`;\n\n // Older Node.js versions don't have `navigator.userAgent`, so we have to use `process.version`.\n } else if (typeof process !== 'undefined' && typeof process.version === 'string') {\n ua += ` Node.js/${process.version}`;\n }\n\n return ua;\n}\n\nclass Client {\n static CHUNK_SIZE = 1024 * 1024 * 5;\n\n config = {\n endpoint: 'https://cloud.appwrite.io/v1',\n selfSigned: false,\n project: '',\n key: '',\n jwt: '',\n locale: '',\n session: '',\n forwardeduseragent: '',\n };\n headers: Headers = {\n 'x-sdk-name': 'Node.js',\n 'x-sdk-platform': 'server',\n 'x-sdk-language': 'nodejs',\n 'x-sdk-version': '14.1.0',\n 'user-agent' : getUserAgent(),\n 'X-Appwrite-Response-Format': '1.6.0',\n };\n\n /**\n * Set Endpoint\n *\n * Your project endpoint\n *\n * @param {string} endpoint\n *\n * @returns {this}\n */\n setEndpoint(endpoint: string): this {\n this.config.endpoint = endpoint;\n\n return this;\n }\n\n /**\n * Set self-signed\n *\n * @param {boolean} selfSigned\n *\n * @returns {this}\n */\n setSelfSigned(selfSigned: boolean): this {\n // @ts-ignore\n if (typeof globalThis.EdgeRuntime !== 'undefined') {\n console.warn('setSelfSigned is not supported in edge runtimes.');\n }\n\n this.config.selfSigned = selfSigned;\n\n return this;\n }\n\n /**\n * Add header\n *\n * @param {string} header\n * @param {string} value\n *\n * @returns {this}\n */\n addHeader(header: string, value: string): this {\n this.headers[header.toLowerCase()] = value;\n\n return this;\n }\n\n /**\n * Set Project\n *\n * Your project ID\n *\n * @param value string\n *\n * @return {this}\n */\n setProject(value: string): this {\n this.headers['X-Appwrite-Project'] = value;\n this.config.project = value;\n return this;\n }\n /**\n * Set Key\n *\n * Your secret API key\n *\n * @param value string\n *\n * @return {this}\n */\n setKey(value: string): this {\n this.headers['X-Appwrite-Key'] = value;\n this.config.key = value;\n return this;\n }\n /**\n * Set JWT\n *\n * Your secret JSON Web Token\n *\n * @param value string\n *\n * @return {this}\n */\n setJWT(value: string): this {\n this.headers['X-Appwrite-JWT'] = value;\n this.config.jwt = value;\n return this;\n }\n /**\n * Set Locale\n *\n * @param value string\n *\n * @return {this}\n */\n setLocale(value: string): this {\n this.headers['X-Appwrite-Locale'] = value;\n this.config.locale = value;\n return this;\n }\n /**\n * Set Session\n *\n * The user session to authenticate with\n *\n * @param value string\n *\n * @return {this}\n */\n setSession(value: string): this {\n this.headers['X-Appwrite-Session'] = value;\n this.config.session = value;\n return this;\n }\n /**\n * Set ForwardedUserAgent\n *\n * The user agent string of the client that made the request\n *\n * @param value string\n *\n * @return {this}\n */\n setForwardedUserAgent(value: string): this {\n this.headers['X-Forwarded-User-Agent'] = value;\n this.config.forwardeduseragent = value;\n return this;\n }\n\n prepareRequest(method: string, url: URL, headers: Headers = {}, params: Payload = {}): { uri: string, options: RequestInit } {\n method = method.toUpperCase();\n\n headers = Object.assign({}, this.headers, headers);\n\n let options: RequestInit = {\n method,\n headers,\n ...createAgent(this.config.endpoint, { rejectUnauthorized: !this.config.selfSigned }),\n };\n\n if (method === 'GET') {\n for (const [key, value] of Object.entries(Client.flatten(params))) {\n url.searchParams.append(key, value);\n }\n } else {\n switch (headers['content-type']) {\n case 'application/json':\n options.body = JSON.stringify(params);\n break;\n\n case 'multipart/form-data':\n const formData = new FormData();\n\n for (const [key, value] of Object.entries(params)) {\n if (value instanceof File) {\n formData.append(key, value, value.name);\n } else if (Array.isArray(value)) {\n for (const nestedValue of value) {\n formData.append(`${key}[]`, nestedValue);\n }\n } else {\n formData.append(key, value);\n }\n }\n\n options.body = formData;\n delete headers['content-type'];\n break;\n }\n }\n\n return { uri: url.toString(), options };\n }\n\n async chunkedUpload(method: string, url: URL, headers: Headers = {}, originalPayload: Payload = {}, onProgress: (progress: UploadProgress) => void) {\n const file = Object.values(originalPayload).find((value) => value instanceof File);\n\n if (file.size <= Client.CHUNK_SIZE) {\n return await this.call(method, url, headers, originalPayload);\n }\n\n let start = 0;\n let response = null;\n\n while (start < file.size) {\n let end = start + Client.CHUNK_SIZE; // Prepare end for the next chunk\n if (end >= file.size) {\n end = file.size; // Adjust for the last chunk to include the last byte\n }\n\n headers['content-range'] = `bytes ${start}-${end-1}/${file.size}`;\n const chunk = file.slice(start, end);\n\n let payload = { ...originalPayload, file: new File([chunk], file.name)};\n\n response = await this.call(method, url, headers, payload);\n\n if (onProgress && typeof onProgress === 'function') {\n onProgress({\n $id: response.$id,\n progress: Math.round((end / file.size) * 100),\n sizeUploaded: end,\n chunksTotal: Math.ceil(file.size / Client.CHUNK_SIZE),\n chunksUploaded: Math.ceil(end / Client.CHUNK_SIZE)\n });\n }\n\n if (response && response.$id) {\n headers['x-appwrite-id'] = response.$id;\n }\n\n start = end;\n }\n\n return response;\n }\n\n async redirect(method: string, url: URL, headers: Headers = {}, params: Payload = {}): Promise {\n const { uri, options } = this.prepareRequest(method, url, headers, params);\n \n const response = await fetch(uri, {\n ...options,\n redirect: 'manual'\n });\n\n if (response.status !== 301 && response.status !== 302) {\n throw new AppwriteException('Invalid redirect', response.status);\n }\n\n return response.headers.get('location') || '';\n }\n\n async call(method: string, url: URL, headers: Headers = {}, params: Payload = {}, responseType = 'json'): Promise {\n const { uri, options } = this.prepareRequest(method, url, headers, params);\n\n let data: any = null;\n\n const response = await fetch(uri, options);\n\n const warnings = response.headers.get('x-appwrite-warning');\n if (warnings) {\n warnings.split(';').forEach((warning: string) => console.warn('Warning: ' + warning));\n }\n\n if (response.headers.get('content-type')?.includes('application/json')) {\n data = await response.json();\n } else if (responseType === 'arrayBuffer') {\n data = await response.arrayBuffer();\n } else {\n data = {\n message: await response.text()\n };\n }\n\n if (400 <= response.status) {\n throw new AppwriteException(data?.message, response.status, data?.type, data);\n }\n\n return data;\n }\n\n static flatten(data: Payload, prefix = ''): Payload {\n let output: Payload = {};\n\n for (const [key, value] of Object.entries(data)) {\n let finalKey = prefix ? prefix + '[' + key +']' : key;\n if (Array.isArray(value)) {\n output = { ...output, ...Client.flatten(value, finalKey) };\n } else {\n output[finalKey] = value;\n }\n }\n\n return output;\n }\n}\n\nexport { Client, AppwriteException };\nexport { Query } from './query';\nexport type { Models, Payload, UploadProgress };\nexport type { QueryTypes, QueryTypesList } from './query';\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/client.mjs b/node_modules/node-appwrite/dist/client.mjs new file mode 100644 index 0000000..e635087 --- /dev/null +++ b/node_modules/node-appwrite/dist/client.mjs @@ -0,0 +1,300 @@ +import { FormData, File, fetch } from 'node-fetch-native-with-agent'; +import { createAgent } from 'node-fetch-native-with-agent/agent'; +export { Query } from './query.mjs'; + +// src/client.ts +var AppwriteException = class extends Error { + constructor(message, code = 0, type = "", response = "") { + super(message); + this.name = "AppwriteException"; + this.message = message; + this.code = code; + this.type = type; + this.response = response; + } +}; +function getUserAgent() { + let ua = "AppwriteNodeJSSDK/14.1.0"; + const platform = []; + if (typeof process !== "undefined") { + if (typeof process.platform === "string") + platform.push(process.platform); + if (typeof process.arch === "string") + platform.push(process.arch); + } + if (platform.length > 0) { + ua += ` (${platform.join("; ")})`; + } + if (typeof navigator !== "undefined" && typeof navigator.userAgent === "string") { + ua += ` ${navigator.userAgent}`; + } else if (typeof globalThis.EdgeRuntime === "string") { + ua += ` EdgeRuntime`; + } else if (typeof process !== "undefined" && typeof process.version === "string") { + ua += ` Node.js/${process.version}`; + } + return ua; +} +var _Client = class _Client { + constructor() { + this.config = { + endpoint: "https://cloud.appwrite.io/v1", + selfSigned: false, + project: "", + key: "", + jwt: "", + locale: "", + session: "", + forwardeduseragent: "" + }; + this.headers = { + "x-sdk-name": "Node.js", + "x-sdk-platform": "server", + "x-sdk-language": "nodejs", + "x-sdk-version": "14.1.0", + "user-agent": getUserAgent(), + "X-Appwrite-Response-Format": "1.6.0" + }; + } + /** + * Set Endpoint + * + * Your project endpoint + * + * @param {string} endpoint + * + * @returns {this} + */ + setEndpoint(endpoint) { + this.config.endpoint = endpoint; + return this; + } + /** + * Set self-signed + * + * @param {boolean} selfSigned + * + * @returns {this} + */ + setSelfSigned(selfSigned) { + if (typeof globalThis.EdgeRuntime !== "undefined") { + console.warn("setSelfSigned is not supported in edge runtimes."); + } + this.config.selfSigned = selfSigned; + return this; + } + /** + * Add header + * + * @param {string} header + * @param {string} value + * + * @returns {this} + */ + addHeader(header, value) { + this.headers[header.toLowerCase()] = value; + return this; + } + /** + * Set Project + * + * Your project ID + * + * @param value string + * + * @return {this} + */ + setProject(value) { + this.headers["X-Appwrite-Project"] = value; + this.config.project = value; + return this; + } + /** + * Set Key + * + * Your secret API key + * + * @param value string + * + * @return {this} + */ + setKey(value) { + this.headers["X-Appwrite-Key"] = value; + this.config.key = value; + return this; + } + /** + * Set JWT + * + * Your secret JSON Web Token + * + * @param value string + * + * @return {this} + */ + setJWT(value) { + this.headers["X-Appwrite-JWT"] = value; + this.config.jwt = value; + return this; + } + /** + * Set Locale + * + * @param value string + * + * @return {this} + */ + setLocale(value) { + this.headers["X-Appwrite-Locale"] = value; + this.config.locale = value; + return this; + } + /** + * Set Session + * + * The user session to authenticate with + * + * @param value string + * + * @return {this} + */ + setSession(value) { + this.headers["X-Appwrite-Session"] = value; + this.config.session = value; + return this; + } + /** + * Set ForwardedUserAgent + * + * The user agent string of the client that made the request + * + * @param value string + * + * @return {this} + */ + setForwardedUserAgent(value) { + this.headers["X-Forwarded-User-Agent"] = value; + this.config.forwardeduseragent = value; + return this; + } + prepareRequest(method, url, headers = {}, params = {}) { + method = method.toUpperCase(); + headers = Object.assign({}, this.headers, headers); + let options = { + method, + headers, + ...createAgent(this.config.endpoint, { rejectUnauthorized: !this.config.selfSigned }) + }; + if (method === "GET") { + for (const [key, value] of Object.entries(_Client.flatten(params))) { + url.searchParams.append(key, value); + } + } else { + switch (headers["content-type"]) { + case "application/json": + options.body = JSON.stringify(params); + break; + case "multipart/form-data": + const formData = new FormData(); + for (const [key, value] of Object.entries(params)) { + if (value instanceof File) { + formData.append(key, value, value.name); + } else if (Array.isArray(value)) { + for (const nestedValue of value) { + formData.append(`${key}[]`, nestedValue); + } + } else { + formData.append(key, value); + } + } + options.body = formData; + delete headers["content-type"]; + break; + } + } + return { uri: url.toString(), options }; + } + async chunkedUpload(method, url, headers = {}, originalPayload = {}, onProgress) { + const file = Object.values(originalPayload).find((value) => value instanceof File); + if (file.size <= _Client.CHUNK_SIZE) { + return await this.call(method, url, headers, originalPayload); + } + let start = 0; + let response = null; + while (start < file.size) { + let end = start + _Client.CHUNK_SIZE; + if (end >= file.size) { + end = file.size; + } + headers["content-range"] = `bytes ${start}-${end - 1}/${file.size}`; + const chunk = file.slice(start, end); + let payload = { ...originalPayload, file: new File([chunk], file.name) }; + response = await this.call(method, url, headers, payload); + if (onProgress && typeof onProgress === "function") { + onProgress({ + $id: response.$id, + progress: Math.round(end / file.size * 100), + sizeUploaded: end, + chunksTotal: Math.ceil(file.size / _Client.CHUNK_SIZE), + chunksUploaded: Math.ceil(end / _Client.CHUNK_SIZE) + }); + } + if (response && response.$id) { + headers["x-appwrite-id"] = response.$id; + } + start = end; + } + return response; + } + async redirect(method, url, headers = {}, params = {}) { + const { uri, options } = this.prepareRequest(method, url, headers, params); + const response = await fetch(uri, { + ...options, + redirect: "manual" + }); + if (response.status !== 301 && response.status !== 302) { + throw new AppwriteException("Invalid redirect", response.status); + } + return response.headers.get("location") || ""; + } + async call(method, url, headers = {}, params = {}, responseType = "json") { + var _a; + const { uri, options } = this.prepareRequest(method, url, headers, params); + let data = null; + const response = await fetch(uri, options); + const warnings = response.headers.get("x-appwrite-warning"); + if (warnings) { + warnings.split(";").forEach((warning) => console.warn("Warning: " + warning)); + } + if ((_a = response.headers.get("content-type")) == null ? void 0 : _a.includes("application/json")) { + data = await response.json(); + } else if (responseType === "arrayBuffer") { + data = await response.arrayBuffer(); + } else { + data = { + message: await response.text() + }; + } + if (400 <= response.status) { + throw new AppwriteException(data == null ? void 0 : data.message, response.status, data == null ? void 0 : data.type, data); + } + return data; + } + static flatten(data, prefix = "") { + let output = {}; + for (const [key, value] of Object.entries(data)) { + let finalKey = prefix ? prefix + "[" + key + "]" : key; + if (Array.isArray(value)) { + output = { ...output, ..._Client.flatten(value, finalKey) }; + } else { + output[finalKey] = value; + } + } + return output; + } +}; +_Client.CHUNK_SIZE = 1024 * 1024 * 5; +var Client = _Client; + +export { AppwriteException, Client }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=client.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/client.mjs.map b/node_modules/node-appwrite/dist/client.mjs.map new file mode 100644 index 0000000..4f9321e --- /dev/null +++ b/node_modules/node-appwrite/dist/client.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { fetch, FormData, File } from 'node-fetch-native-with-agent';\nimport { createAgent } from 'node-fetch-native-with-agent/agent';\nimport { Models } from './models';\n\ntype Payload = {\n [key: string]: any;\n}\n\ntype UploadProgress = {\n $id: string;\n progress: number;\n sizeUploaded: number;\n chunksTotal: number;\n chunksUploaded: number;\n}\n\ntype Headers = {\n [key: string]: string;\n}\n\nclass AppwriteException extends Error {\n code: number;\n response: string;\n type: string;\n constructor(message: string, code: number = 0, type: string = '', response: string = '') {\n super(message);\n this.name = 'AppwriteException';\n this.message = message;\n this.code = code;\n this.type = type;\n this.response = response;\n }\n}\n\nfunction getUserAgent() {\n let ua = 'AppwriteNodeJSSDK/14.1.0';\n\n // `process` is a global in Node.js, but not fully available in all runtimes.\n const platform: string[] = [];\n if (typeof process !== 'undefined') {\n if (typeof process.platform === 'string') platform.push(process.platform);\n if (typeof process.arch === 'string') platform.push(process.arch);\n } \n if (platform.length > 0) {\n ua += ` (${platform.join('; ')})`;\n }\n\n // `navigator.userAgent` is available in Node.js 21 and later.\n // It's also part of the WinterCG spec, so many edge runtimes provide it.\n // https://common-min-api.proposal.wintercg.org/#requirements-for-navigatoruseragent\n // @ts-ignore\n if (typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string') {\n // @ts-ignore\n ua += ` ${navigator.userAgent}`;\n\n // @ts-ignore\n } else if (typeof globalThis.EdgeRuntime === 'string') {\n ua += ` EdgeRuntime`;\n\n // Older Node.js versions don't have `navigator.userAgent`, so we have to use `process.version`.\n } else if (typeof process !== 'undefined' && typeof process.version === 'string') {\n ua += ` Node.js/${process.version}`;\n }\n\n return ua;\n}\n\nclass Client {\n static CHUNK_SIZE = 1024 * 1024 * 5;\n\n config = {\n endpoint: 'https://cloud.appwrite.io/v1',\n selfSigned: false,\n project: '',\n key: '',\n jwt: '',\n locale: '',\n session: '',\n forwardeduseragent: '',\n };\n headers: Headers = {\n 'x-sdk-name': 'Node.js',\n 'x-sdk-platform': 'server',\n 'x-sdk-language': 'nodejs',\n 'x-sdk-version': '14.1.0',\n 'user-agent' : getUserAgent(),\n 'X-Appwrite-Response-Format': '1.6.0',\n };\n\n /**\n * Set Endpoint\n *\n * Your project endpoint\n *\n * @param {string} endpoint\n *\n * @returns {this}\n */\n setEndpoint(endpoint: string): this {\n this.config.endpoint = endpoint;\n\n return this;\n }\n\n /**\n * Set self-signed\n *\n * @param {boolean} selfSigned\n *\n * @returns {this}\n */\n setSelfSigned(selfSigned: boolean): this {\n // @ts-ignore\n if (typeof globalThis.EdgeRuntime !== 'undefined') {\n console.warn('setSelfSigned is not supported in edge runtimes.');\n }\n\n this.config.selfSigned = selfSigned;\n\n return this;\n }\n\n /**\n * Add header\n *\n * @param {string} header\n * @param {string} value\n *\n * @returns {this}\n */\n addHeader(header: string, value: string): this {\n this.headers[header.toLowerCase()] = value;\n\n return this;\n }\n\n /**\n * Set Project\n *\n * Your project ID\n *\n * @param value string\n *\n * @return {this}\n */\n setProject(value: string): this {\n this.headers['X-Appwrite-Project'] = value;\n this.config.project = value;\n return this;\n }\n /**\n * Set Key\n *\n * Your secret API key\n *\n * @param value string\n *\n * @return {this}\n */\n setKey(value: string): this {\n this.headers['X-Appwrite-Key'] = value;\n this.config.key = value;\n return this;\n }\n /**\n * Set JWT\n *\n * Your secret JSON Web Token\n *\n * @param value string\n *\n * @return {this}\n */\n setJWT(value: string): this {\n this.headers['X-Appwrite-JWT'] = value;\n this.config.jwt = value;\n return this;\n }\n /**\n * Set Locale\n *\n * @param value string\n *\n * @return {this}\n */\n setLocale(value: string): this {\n this.headers['X-Appwrite-Locale'] = value;\n this.config.locale = value;\n return this;\n }\n /**\n * Set Session\n *\n * The user session to authenticate with\n *\n * @param value string\n *\n * @return {this}\n */\n setSession(value: string): this {\n this.headers['X-Appwrite-Session'] = value;\n this.config.session = value;\n return this;\n }\n /**\n * Set ForwardedUserAgent\n *\n * The user agent string of the client that made the request\n *\n * @param value string\n *\n * @return {this}\n */\n setForwardedUserAgent(value: string): this {\n this.headers['X-Forwarded-User-Agent'] = value;\n this.config.forwardeduseragent = value;\n return this;\n }\n\n prepareRequest(method: string, url: URL, headers: Headers = {}, params: Payload = {}): { uri: string, options: RequestInit } {\n method = method.toUpperCase();\n\n headers = Object.assign({}, this.headers, headers);\n\n let options: RequestInit = {\n method,\n headers,\n ...createAgent(this.config.endpoint, { rejectUnauthorized: !this.config.selfSigned }),\n };\n\n if (method === 'GET') {\n for (const [key, value] of Object.entries(Client.flatten(params))) {\n url.searchParams.append(key, value);\n }\n } else {\n switch (headers['content-type']) {\n case 'application/json':\n options.body = JSON.stringify(params);\n break;\n\n case 'multipart/form-data':\n const formData = new FormData();\n\n for (const [key, value] of Object.entries(params)) {\n if (value instanceof File) {\n formData.append(key, value, value.name);\n } else if (Array.isArray(value)) {\n for (const nestedValue of value) {\n formData.append(`${key}[]`, nestedValue);\n }\n } else {\n formData.append(key, value);\n }\n }\n\n options.body = formData;\n delete headers['content-type'];\n break;\n }\n }\n\n return { uri: url.toString(), options };\n }\n\n async chunkedUpload(method: string, url: URL, headers: Headers = {}, originalPayload: Payload = {}, onProgress: (progress: UploadProgress) => void) {\n const file = Object.values(originalPayload).find((value) => value instanceof File);\n\n if (file.size <= Client.CHUNK_SIZE) {\n return await this.call(method, url, headers, originalPayload);\n }\n\n let start = 0;\n let response = null;\n\n while (start < file.size) {\n let end = start + Client.CHUNK_SIZE; // Prepare end for the next chunk\n if (end >= file.size) {\n end = file.size; // Adjust for the last chunk to include the last byte\n }\n\n headers['content-range'] = `bytes ${start}-${end-1}/${file.size}`;\n const chunk = file.slice(start, end);\n\n let payload = { ...originalPayload, file: new File([chunk], file.name)};\n\n response = await this.call(method, url, headers, payload);\n\n if (onProgress && typeof onProgress === 'function') {\n onProgress({\n $id: response.$id,\n progress: Math.round((end / file.size) * 100),\n sizeUploaded: end,\n chunksTotal: Math.ceil(file.size / Client.CHUNK_SIZE),\n chunksUploaded: Math.ceil(end / Client.CHUNK_SIZE)\n });\n }\n\n if (response && response.$id) {\n headers['x-appwrite-id'] = response.$id;\n }\n\n start = end;\n }\n\n return response;\n }\n\n async redirect(method: string, url: URL, headers: Headers = {}, params: Payload = {}): Promise {\n const { uri, options } = this.prepareRequest(method, url, headers, params);\n \n const response = await fetch(uri, {\n ...options,\n redirect: 'manual'\n });\n\n if (response.status !== 301 && response.status !== 302) {\n throw new AppwriteException('Invalid redirect', response.status);\n }\n\n return response.headers.get('location') || '';\n }\n\n async call(method: string, url: URL, headers: Headers = {}, params: Payload = {}, responseType = 'json'): Promise {\n const { uri, options } = this.prepareRequest(method, url, headers, params);\n\n let data: any = null;\n\n const response = await fetch(uri, options);\n\n const warnings = response.headers.get('x-appwrite-warning');\n if (warnings) {\n warnings.split(';').forEach((warning: string) => console.warn('Warning: ' + warning));\n }\n\n if (response.headers.get('content-type')?.includes('application/json')) {\n data = await response.json();\n } else if (responseType === 'arrayBuffer') {\n data = await response.arrayBuffer();\n } else {\n data = {\n message: await response.text()\n };\n }\n\n if (400 <= response.status) {\n throw new AppwriteException(data?.message, response.status, data?.type, data);\n }\n\n return data;\n }\n\n static flatten(data: Payload, prefix = ''): Payload {\n let output: Payload = {};\n\n for (const [key, value] of Object.entries(data)) {\n let finalKey = prefix ? prefix + '[' + key +']' : key;\n if (Array.isArray(value)) {\n output = { ...output, ...Client.flatten(value, finalKey) };\n } else {\n output[finalKey] = value;\n }\n }\n\n return output;\n }\n}\n\nexport { Client, AppwriteException };\nexport { Query } from './query';\nexport type { Models, Payload, UploadProgress };\nexport type { QueryTypes, QueryTypesList } from './query';\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/authentication-factor.d.mts b/node_modules/node-appwrite/dist/enums/authentication-factor.d.mts new file mode 100644 index 0000000..b22ec99 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/authentication-factor.d.mts @@ -0,0 +1,8 @@ +declare enum AuthenticationFactor { + Email = "email", + Phone = "phone", + Totp = "totp", + Recoverycode = "recoverycode" +} + +export { AuthenticationFactor }; diff --git a/node_modules/node-appwrite/dist/enums/authentication-factor.d.ts b/node_modules/node-appwrite/dist/enums/authentication-factor.d.ts new file mode 100644 index 0000000..b22ec99 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/authentication-factor.d.ts @@ -0,0 +1,8 @@ +declare enum AuthenticationFactor { + Email = "email", + Phone = "phone", + Totp = "totp", + Recoverycode = "recoverycode" +} + +export { AuthenticationFactor }; diff --git a/node_modules/node-appwrite/dist/enums/authentication-factor.js b/node_modules/node-appwrite/dist/enums/authentication-factor.js new file mode 100644 index 0000000..7a32870 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/authentication-factor.js @@ -0,0 +1,13 @@ +'use strict'; + +var AuthenticationFactor = /* @__PURE__ */ ((AuthenticationFactor2) => { + AuthenticationFactor2["Email"] = "email"; + AuthenticationFactor2["Phone"] = "phone"; + AuthenticationFactor2["Totp"] = "totp"; + AuthenticationFactor2["Recoverycode"] = "recoverycode"; + return AuthenticationFactor2; +})(AuthenticationFactor || {}); + +exports.AuthenticationFactor = AuthenticationFactor; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=authentication-factor.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/authentication-factor.js.map b/node_modules/node-appwrite/dist/enums/authentication-factor.js.map new file mode 100644 index 0000000..cd9ec35 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/authentication-factor.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/authentication-factor.ts"],"names":["AuthenticationFactor"],"mappings":"AAAO,IAAK,uBAAL,kBAAKA,0BAAL;AACH,EAAAA,sBAAA,WAAQ;AACR,EAAAA,sBAAA,WAAQ;AACR,EAAAA,sBAAA,UAAO;AACP,EAAAA,sBAAA,kBAAe;AAJP,SAAAA;AAAA,GAAA","sourcesContent":["export enum AuthenticationFactor {\n Email = 'email',\n Phone = 'phone',\n Totp = 'totp',\n Recoverycode = 'recoverycode',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/authentication-factor.mjs b/node_modules/node-appwrite/dist/enums/authentication-factor.mjs new file mode 100644 index 0000000..d4b0b05 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/authentication-factor.mjs @@ -0,0 +1,12 @@ +// src/enums/authentication-factor.ts +var AuthenticationFactor = /* @__PURE__ */ ((AuthenticationFactor2) => { + AuthenticationFactor2["Email"] = "email"; + AuthenticationFactor2["Phone"] = "phone"; + AuthenticationFactor2["Totp"] = "totp"; + AuthenticationFactor2["Recoverycode"] = "recoverycode"; + return AuthenticationFactor2; +})(AuthenticationFactor || {}); + +export { AuthenticationFactor }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=authentication-factor.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/authentication-factor.mjs.map b/node_modules/node-appwrite/dist/enums/authentication-factor.mjs.map new file mode 100644 index 0000000..06fa274 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/authentication-factor.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/authentication-factor.ts"],"names":["AuthenticationFactor"],"mappings":";AAAO,IAAK,uBAAL,kBAAKA,0BAAL;AACH,EAAAA,sBAAA,WAAQ;AACR,EAAAA,sBAAA,WAAQ;AACR,EAAAA,sBAAA,UAAO;AACP,EAAAA,sBAAA,kBAAe;AAJP,SAAAA;AAAA,GAAA","sourcesContent":["export enum AuthenticationFactor {\n Email = 'email',\n Phone = 'phone',\n Totp = 'totp',\n Recoverycode = 'recoverycode',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/authenticator-type.d.mts b/node_modules/node-appwrite/dist/enums/authenticator-type.d.mts new file mode 100644 index 0000000..dd32558 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/authenticator-type.d.mts @@ -0,0 +1,5 @@ +declare enum AuthenticatorType { + Totp = "totp" +} + +export { AuthenticatorType }; diff --git a/node_modules/node-appwrite/dist/enums/authenticator-type.d.ts b/node_modules/node-appwrite/dist/enums/authenticator-type.d.ts new file mode 100644 index 0000000..dd32558 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/authenticator-type.d.ts @@ -0,0 +1,5 @@ +declare enum AuthenticatorType { + Totp = "totp" +} + +export { AuthenticatorType }; diff --git a/node_modules/node-appwrite/dist/enums/authenticator-type.js b/node_modules/node-appwrite/dist/enums/authenticator-type.js new file mode 100644 index 0000000..067a159 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/authenticator-type.js @@ -0,0 +1,10 @@ +'use strict'; + +var AuthenticatorType = /* @__PURE__ */ ((AuthenticatorType2) => { + AuthenticatorType2["Totp"] = "totp"; + return AuthenticatorType2; +})(AuthenticatorType || {}); + +exports.AuthenticatorType = AuthenticatorType; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=authenticator-type.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/authenticator-type.js.map b/node_modules/node-appwrite/dist/enums/authenticator-type.js.map new file mode 100644 index 0000000..5d53e30 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/authenticator-type.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/authenticator-type.ts"],"names":["AuthenticatorType"],"mappings":"AAAO,IAAK,oBAAL,kBAAKA,uBAAL;AACH,EAAAA,mBAAA,UAAO;AADC,SAAAA;AAAA,GAAA","sourcesContent":["export enum AuthenticatorType {\n Totp = 'totp',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/authenticator-type.mjs b/node_modules/node-appwrite/dist/enums/authenticator-type.mjs new file mode 100644 index 0000000..6b8a2e9 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/authenticator-type.mjs @@ -0,0 +1,9 @@ +// src/enums/authenticator-type.ts +var AuthenticatorType = /* @__PURE__ */ ((AuthenticatorType2) => { + AuthenticatorType2["Totp"] = "totp"; + return AuthenticatorType2; +})(AuthenticatorType || {}); + +export { AuthenticatorType }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=authenticator-type.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/authenticator-type.mjs.map b/node_modules/node-appwrite/dist/enums/authenticator-type.mjs.map new file mode 100644 index 0000000..f33db3e --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/authenticator-type.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/authenticator-type.ts"],"names":["AuthenticatorType"],"mappings":";AAAO,IAAK,oBAAL,kBAAKA,uBAAL;AACH,EAAAA,mBAAA,UAAO;AADC,SAAAA;AAAA,GAAA","sourcesContent":["export enum AuthenticatorType {\n Totp = 'totp',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/browser.d.mts b/node_modules/node-appwrite/dist/enums/browser.d.mts new file mode 100644 index 0000000..663ccaa --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/browser.d.mts @@ -0,0 +1,18 @@ +declare enum Browser { + AvantBrowser = "aa", + AndroidWebViewBeta = "an", + GoogleChrome = "ch", + GoogleChromeIOS = "ci", + GoogleChromeMobile = "cm", + Chromium = "cr", + MozillaFirefox = "ff", + Safari = "sf", + MobileSafari = "mf", + MicrosoftEdge = "ps", + MicrosoftEdgeIOS = "oi", + OperaMini = "om", + Opera = "op", + OperaNext = "on" +} + +export { Browser }; diff --git a/node_modules/node-appwrite/dist/enums/browser.d.ts b/node_modules/node-appwrite/dist/enums/browser.d.ts new file mode 100644 index 0000000..663ccaa --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/browser.d.ts @@ -0,0 +1,18 @@ +declare enum Browser { + AvantBrowser = "aa", + AndroidWebViewBeta = "an", + GoogleChrome = "ch", + GoogleChromeIOS = "ci", + GoogleChromeMobile = "cm", + Chromium = "cr", + MozillaFirefox = "ff", + Safari = "sf", + MobileSafari = "mf", + MicrosoftEdge = "ps", + MicrosoftEdgeIOS = "oi", + OperaMini = "om", + Opera = "op", + OperaNext = "on" +} + +export { Browser }; diff --git a/node_modules/node-appwrite/dist/enums/browser.js b/node_modules/node-appwrite/dist/enums/browser.js new file mode 100644 index 0000000..6e157ad --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/browser.js @@ -0,0 +1,23 @@ +'use strict'; + +var Browser = /* @__PURE__ */ ((Browser2) => { + Browser2["AvantBrowser"] = "aa"; + Browser2["AndroidWebViewBeta"] = "an"; + Browser2["GoogleChrome"] = "ch"; + Browser2["GoogleChromeIOS"] = "ci"; + Browser2["GoogleChromeMobile"] = "cm"; + Browser2["Chromium"] = "cr"; + Browser2["MozillaFirefox"] = "ff"; + Browser2["Safari"] = "sf"; + Browser2["MobileSafari"] = "mf"; + Browser2["MicrosoftEdge"] = "ps"; + Browser2["MicrosoftEdgeIOS"] = "oi"; + Browser2["OperaMini"] = "om"; + Browser2["Opera"] = "op"; + Browser2["OperaNext"] = "on"; + return Browser2; +})(Browser || {}); + +exports.Browser = Browser; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=browser.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/browser.js.map b/node_modules/node-appwrite/dist/enums/browser.js.map new file mode 100644 index 0000000..d7617b9 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/browser.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/browser.ts"],"names":["Browser"],"mappings":"AAAO,IAAK,UAAL,kBAAKA,aAAL;AACH,EAAAA,SAAA,kBAAe;AACf,EAAAA,SAAA,wBAAqB;AACrB,EAAAA,SAAA,kBAAe;AACf,EAAAA,SAAA,qBAAkB;AAClB,EAAAA,SAAA,wBAAqB;AACrB,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,oBAAiB;AACjB,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,kBAAe;AACf,EAAAA,SAAA,mBAAgB;AAChB,EAAAA,SAAA,sBAAmB;AACnB,EAAAA,SAAA,eAAY;AACZ,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,eAAY;AAdJ,SAAAA;AAAA,GAAA","sourcesContent":["export enum Browser {\n AvantBrowser = 'aa',\n AndroidWebViewBeta = 'an',\n GoogleChrome = 'ch',\n GoogleChromeIOS = 'ci',\n GoogleChromeMobile = 'cm',\n Chromium = 'cr',\n MozillaFirefox = 'ff',\n Safari = 'sf',\n MobileSafari = 'mf',\n MicrosoftEdge = 'ps',\n MicrosoftEdgeIOS = 'oi',\n OperaMini = 'om',\n Opera = 'op',\n OperaNext = 'on',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/browser.mjs b/node_modules/node-appwrite/dist/enums/browser.mjs new file mode 100644 index 0000000..711fd75 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/browser.mjs @@ -0,0 +1,22 @@ +// src/enums/browser.ts +var Browser = /* @__PURE__ */ ((Browser2) => { + Browser2["AvantBrowser"] = "aa"; + Browser2["AndroidWebViewBeta"] = "an"; + Browser2["GoogleChrome"] = "ch"; + Browser2["GoogleChromeIOS"] = "ci"; + Browser2["GoogleChromeMobile"] = "cm"; + Browser2["Chromium"] = "cr"; + Browser2["MozillaFirefox"] = "ff"; + Browser2["Safari"] = "sf"; + Browser2["MobileSafari"] = "mf"; + Browser2["MicrosoftEdge"] = "ps"; + Browser2["MicrosoftEdgeIOS"] = "oi"; + Browser2["OperaMini"] = "om"; + Browser2["Opera"] = "op"; + Browser2["OperaNext"] = "on"; + return Browser2; +})(Browser || {}); + +export { Browser }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=browser.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/browser.mjs.map b/node_modules/node-appwrite/dist/enums/browser.mjs.map new file mode 100644 index 0000000..6865e67 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/browser.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/browser.ts"],"names":["Browser"],"mappings":";AAAO,IAAK,UAAL,kBAAKA,aAAL;AACH,EAAAA,SAAA,kBAAe;AACf,EAAAA,SAAA,wBAAqB;AACrB,EAAAA,SAAA,kBAAe;AACf,EAAAA,SAAA,qBAAkB;AAClB,EAAAA,SAAA,wBAAqB;AACrB,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,oBAAiB;AACjB,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,kBAAe;AACf,EAAAA,SAAA,mBAAgB;AAChB,EAAAA,SAAA,sBAAmB;AACnB,EAAAA,SAAA,eAAY;AACZ,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,eAAY;AAdJ,SAAAA;AAAA,GAAA","sourcesContent":["export enum Browser {\n AvantBrowser = 'aa',\n AndroidWebViewBeta = 'an',\n GoogleChrome = 'ch',\n GoogleChromeIOS = 'ci',\n GoogleChromeMobile = 'cm',\n Chromium = 'cr',\n MozillaFirefox = 'ff',\n Safari = 'sf',\n MobileSafari = 'mf',\n MicrosoftEdge = 'ps',\n MicrosoftEdgeIOS = 'oi',\n OperaMini = 'om',\n Opera = 'op',\n OperaNext = 'on',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/compression.d.mts b/node_modules/node-appwrite/dist/enums/compression.d.mts new file mode 100644 index 0000000..8bccb92 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/compression.d.mts @@ -0,0 +1,7 @@ +declare enum Compression { + None = "none", + Gzip = "gzip", + Zstd = "zstd" +} + +export { Compression }; diff --git a/node_modules/node-appwrite/dist/enums/compression.d.ts b/node_modules/node-appwrite/dist/enums/compression.d.ts new file mode 100644 index 0000000..8bccb92 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/compression.d.ts @@ -0,0 +1,7 @@ +declare enum Compression { + None = "none", + Gzip = "gzip", + Zstd = "zstd" +} + +export { Compression }; diff --git a/node_modules/node-appwrite/dist/enums/compression.js b/node_modules/node-appwrite/dist/enums/compression.js new file mode 100644 index 0000000..5f90d1a --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/compression.js @@ -0,0 +1,12 @@ +'use strict'; + +var Compression = /* @__PURE__ */ ((Compression2) => { + Compression2["None"] = "none"; + Compression2["Gzip"] = "gzip"; + Compression2["Zstd"] = "zstd"; + return Compression2; +})(Compression || {}); + +exports.Compression = Compression; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=compression.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/compression.js.map b/node_modules/node-appwrite/dist/enums/compression.js.map new file mode 100644 index 0000000..2ee00c9 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/compression.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/compression.ts"],"names":["Compression"],"mappings":"AAAO,IAAK,cAAL,kBAAKA,iBAAL;AACH,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,UAAO;AAHC,SAAAA;AAAA,GAAA","sourcesContent":["export enum Compression {\n None = 'none',\n Gzip = 'gzip',\n Zstd = 'zstd',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/compression.mjs b/node_modules/node-appwrite/dist/enums/compression.mjs new file mode 100644 index 0000000..5fe5004 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/compression.mjs @@ -0,0 +1,11 @@ +// src/enums/compression.ts +var Compression = /* @__PURE__ */ ((Compression2) => { + Compression2["None"] = "none"; + Compression2["Gzip"] = "gzip"; + Compression2["Zstd"] = "zstd"; + return Compression2; +})(Compression || {}); + +export { Compression }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=compression.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/compression.mjs.map b/node_modules/node-appwrite/dist/enums/compression.mjs.map new file mode 100644 index 0000000..c3a8d32 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/compression.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/compression.ts"],"names":["Compression"],"mappings":";AAAO,IAAK,cAAL,kBAAKA,iBAAL;AACH,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,UAAO;AAHC,SAAAA;AAAA,GAAA","sourcesContent":["export enum Compression {\n None = 'none',\n Gzip = 'gzip',\n Zstd = 'zstd',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/credit-card.d.mts b/node_modules/node-appwrite/dist/enums/credit-card.d.mts new file mode 100644 index 0000000..7fb4f0d --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/credit-card.d.mts @@ -0,0 +1,20 @@ +declare enum CreditCard { + AmericanExpress = "amex", + Argencard = "argencard", + Cabal = "cabal", + Cencosud = "cencosud", + DinersClub = "diners", + Discover = "discover", + Elo = "elo", + Hipercard = "hipercard", + JCB = "jcb", + Mastercard = "mastercard", + Naranja = "naranja", + TarjetaShopping = "targeta-shopping", + UnionChinaPay = "union-china-pay", + Visa = "visa", + MIR = "mir", + Maestro = "maestro" +} + +export { CreditCard }; diff --git a/node_modules/node-appwrite/dist/enums/credit-card.d.ts b/node_modules/node-appwrite/dist/enums/credit-card.d.ts new file mode 100644 index 0000000..7fb4f0d --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/credit-card.d.ts @@ -0,0 +1,20 @@ +declare enum CreditCard { + AmericanExpress = "amex", + Argencard = "argencard", + Cabal = "cabal", + Cencosud = "cencosud", + DinersClub = "diners", + Discover = "discover", + Elo = "elo", + Hipercard = "hipercard", + JCB = "jcb", + Mastercard = "mastercard", + Naranja = "naranja", + TarjetaShopping = "targeta-shopping", + UnionChinaPay = "union-china-pay", + Visa = "visa", + MIR = "mir", + Maestro = "maestro" +} + +export { CreditCard }; diff --git a/node_modules/node-appwrite/dist/enums/credit-card.js b/node_modules/node-appwrite/dist/enums/credit-card.js new file mode 100644 index 0000000..0c55434 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/credit-card.js @@ -0,0 +1,25 @@ +'use strict'; + +var CreditCard = /* @__PURE__ */ ((CreditCard2) => { + CreditCard2["AmericanExpress"] = "amex"; + CreditCard2["Argencard"] = "argencard"; + CreditCard2["Cabal"] = "cabal"; + CreditCard2["Cencosud"] = "cencosud"; + CreditCard2["DinersClub"] = "diners"; + CreditCard2["Discover"] = "discover"; + CreditCard2["Elo"] = "elo"; + CreditCard2["Hipercard"] = "hipercard"; + CreditCard2["JCB"] = "jcb"; + CreditCard2["Mastercard"] = "mastercard"; + CreditCard2["Naranja"] = "naranja"; + CreditCard2["TarjetaShopping"] = "targeta-shopping"; + CreditCard2["UnionChinaPay"] = "union-china-pay"; + CreditCard2["Visa"] = "visa"; + CreditCard2["MIR"] = "mir"; + CreditCard2["Maestro"] = "maestro"; + return CreditCard2; +})(CreditCard || {}); + +exports.CreditCard = CreditCard; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=credit-card.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/credit-card.js.map b/node_modules/node-appwrite/dist/enums/credit-card.js.map new file mode 100644 index 0000000..04a4642 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/credit-card.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/credit-card.ts"],"names":["CreditCard"],"mappings":"AAAO,IAAK,aAAL,kBAAKA,gBAAL;AACH,EAAAA,YAAA,qBAAkB;AAClB,EAAAA,YAAA,eAAY;AACZ,EAAAA,YAAA,WAAQ;AACR,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,eAAY;AACZ,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,qBAAkB;AAClB,EAAAA,YAAA,mBAAgB;AAChB,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,aAAU;AAhBF,SAAAA;AAAA,GAAA","sourcesContent":["export enum CreditCard {\n AmericanExpress = 'amex',\n Argencard = 'argencard',\n Cabal = 'cabal',\n Cencosud = 'cencosud',\n DinersClub = 'diners',\n Discover = 'discover',\n Elo = 'elo',\n Hipercard = 'hipercard',\n JCB = 'jcb',\n Mastercard = 'mastercard',\n Naranja = 'naranja',\n TarjetaShopping = 'targeta-shopping',\n UnionChinaPay = 'union-china-pay',\n Visa = 'visa',\n MIR = 'mir',\n Maestro = 'maestro',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/credit-card.mjs b/node_modules/node-appwrite/dist/enums/credit-card.mjs new file mode 100644 index 0000000..988c761 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/credit-card.mjs @@ -0,0 +1,24 @@ +// src/enums/credit-card.ts +var CreditCard = /* @__PURE__ */ ((CreditCard2) => { + CreditCard2["AmericanExpress"] = "amex"; + CreditCard2["Argencard"] = "argencard"; + CreditCard2["Cabal"] = "cabal"; + CreditCard2["Cencosud"] = "cencosud"; + CreditCard2["DinersClub"] = "diners"; + CreditCard2["Discover"] = "discover"; + CreditCard2["Elo"] = "elo"; + CreditCard2["Hipercard"] = "hipercard"; + CreditCard2["JCB"] = "jcb"; + CreditCard2["Mastercard"] = "mastercard"; + CreditCard2["Naranja"] = "naranja"; + CreditCard2["TarjetaShopping"] = "targeta-shopping"; + CreditCard2["UnionChinaPay"] = "union-china-pay"; + CreditCard2["Visa"] = "visa"; + CreditCard2["MIR"] = "mir"; + CreditCard2["Maestro"] = "maestro"; + return CreditCard2; +})(CreditCard || {}); + +export { CreditCard }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=credit-card.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/credit-card.mjs.map b/node_modules/node-appwrite/dist/enums/credit-card.mjs.map new file mode 100644 index 0000000..0f9f92e --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/credit-card.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/credit-card.ts"],"names":["CreditCard"],"mappings":";AAAO,IAAK,aAAL,kBAAKA,gBAAL;AACH,EAAAA,YAAA,qBAAkB;AAClB,EAAAA,YAAA,eAAY;AACZ,EAAAA,YAAA,WAAQ;AACR,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,eAAY;AACZ,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,qBAAkB;AAClB,EAAAA,YAAA,mBAAgB;AAChB,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,aAAU;AAhBF,SAAAA;AAAA,GAAA","sourcesContent":["export enum CreditCard {\n AmericanExpress = 'amex',\n Argencard = 'argencard',\n Cabal = 'cabal',\n Cencosud = 'cencosud',\n DinersClub = 'diners',\n Discover = 'discover',\n Elo = 'elo',\n Hipercard = 'hipercard',\n JCB = 'jcb',\n Mastercard = 'mastercard',\n Naranja = 'naranja',\n TarjetaShopping = 'targeta-shopping',\n UnionChinaPay = 'union-china-pay',\n Visa = 'visa',\n MIR = 'mir',\n Maestro = 'maestro',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/execution-method.d.mts b/node_modules/node-appwrite/dist/enums/execution-method.d.mts new file mode 100644 index 0000000..6b55cb6 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/execution-method.d.mts @@ -0,0 +1,10 @@ +declare enum ExecutionMethod { + GET = "GET", + POST = "POST", + PUT = "PUT", + PATCH = "PATCH", + DELETE = "DELETE", + OPTIONS = "OPTIONS" +} + +export { ExecutionMethod }; diff --git a/node_modules/node-appwrite/dist/enums/execution-method.d.ts b/node_modules/node-appwrite/dist/enums/execution-method.d.ts new file mode 100644 index 0000000..6b55cb6 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/execution-method.d.ts @@ -0,0 +1,10 @@ +declare enum ExecutionMethod { + GET = "GET", + POST = "POST", + PUT = "PUT", + PATCH = "PATCH", + DELETE = "DELETE", + OPTIONS = "OPTIONS" +} + +export { ExecutionMethod }; diff --git a/node_modules/node-appwrite/dist/enums/execution-method.js b/node_modules/node-appwrite/dist/enums/execution-method.js new file mode 100644 index 0000000..51c5264 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/execution-method.js @@ -0,0 +1,15 @@ +'use strict'; + +var ExecutionMethod = /* @__PURE__ */ ((ExecutionMethod2) => { + ExecutionMethod2["GET"] = "GET"; + ExecutionMethod2["POST"] = "POST"; + ExecutionMethod2["PUT"] = "PUT"; + ExecutionMethod2["PATCH"] = "PATCH"; + ExecutionMethod2["DELETE"] = "DELETE"; + ExecutionMethod2["OPTIONS"] = "OPTIONS"; + return ExecutionMethod2; +})(ExecutionMethod || {}); + +exports.ExecutionMethod = ExecutionMethod; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=execution-method.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/execution-method.js.map b/node_modules/node-appwrite/dist/enums/execution-method.js.map new file mode 100644 index 0000000..093cdbf --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/execution-method.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/execution-method.ts"],"names":["ExecutionMethod"],"mappings":"AAAO,IAAK,kBAAL,kBAAKA,qBAAL;AACH,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,aAAU;AANF,SAAAA;AAAA,GAAA","sourcesContent":["export enum ExecutionMethod {\n GET = 'GET',\n POST = 'POST',\n PUT = 'PUT',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n OPTIONS = 'OPTIONS',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/execution-method.mjs b/node_modules/node-appwrite/dist/enums/execution-method.mjs new file mode 100644 index 0000000..98f710b --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/execution-method.mjs @@ -0,0 +1,14 @@ +// src/enums/execution-method.ts +var ExecutionMethod = /* @__PURE__ */ ((ExecutionMethod2) => { + ExecutionMethod2["GET"] = "GET"; + ExecutionMethod2["POST"] = "POST"; + ExecutionMethod2["PUT"] = "PUT"; + ExecutionMethod2["PATCH"] = "PATCH"; + ExecutionMethod2["DELETE"] = "DELETE"; + ExecutionMethod2["OPTIONS"] = "OPTIONS"; + return ExecutionMethod2; +})(ExecutionMethod || {}); + +export { ExecutionMethod }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=execution-method.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/execution-method.mjs.map b/node_modules/node-appwrite/dist/enums/execution-method.mjs.map new file mode 100644 index 0000000..0c02a46 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/execution-method.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/execution-method.ts"],"names":["ExecutionMethod"],"mappings":";AAAO,IAAK,kBAAL,kBAAKA,qBAAL;AACH,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,aAAU;AANF,SAAAA;AAAA,GAAA","sourcesContent":["export enum ExecutionMethod {\n GET = 'GET',\n POST = 'POST',\n PUT = 'PUT',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n OPTIONS = 'OPTIONS',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/flag.d.mts b/node_modules/node-appwrite/dist/enums/flag.d.mts new file mode 100644 index 0000000..70c264e --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/flag.d.mts @@ -0,0 +1,199 @@ +declare enum Flag { + Afghanistan = "af", + Angola = "ao", + Albania = "al", + Andorra = "ad", + UnitedArabEmirates = "ae", + Argentina = "ar", + Armenia = "am", + AntiguaAndBarbuda = "ag", + Australia = "au", + Austria = "at", + Azerbaijan = "az", + Burundi = "bi", + Belgium = "be", + Benin = "bj", + BurkinaFaso = "bf", + Bangladesh = "bd", + Bulgaria = "bg", + Bahrain = "bh", + Bahamas = "bs", + BosniaAndHerzegovina = "ba", + Belarus = "by", + Belize = "bz", + Bolivia = "bo", + Brazil = "br", + Barbados = "bb", + BruneiDarussalam = "bn", + Bhutan = "bt", + Botswana = "bw", + CentralAfricanRepublic = "cf", + Canada = "ca", + Switzerland = "ch", + Chile = "cl", + China = "cn", + CoteDIvoire = "ci", + Cameroon = "cm", + DemocraticRepublicOfTheCongo = "cd", + RepublicOfTheCongo = "cg", + Colombia = "co", + Comoros = "km", + CapeVerde = "cv", + CostaRica = "cr", + Cuba = "cu", + Cyprus = "cy", + CzechRepublic = "cz", + Germany = "de", + Djibouti = "dj", + Dominica = "dm", + Denmark = "dk", + DominicanRepublic = "do", + Algeria = "dz", + Ecuador = "ec", + Egypt = "eg", + Eritrea = "er", + Spain = "es", + Estonia = "ee", + Ethiopia = "et", + Finland = "fi", + Fiji = "fj", + France = "fr", + MicronesiaFederatedStatesOf = "fm", + Gabon = "ga", + UnitedKingdom = "gb", + Georgia = "ge", + Ghana = "gh", + Guinea = "gn", + Gambia = "gm", + GuineaBissau = "gw", + EquatorialGuinea = "gq", + Greece = "gr", + Grenada = "gd", + Guatemala = "gt", + Guyana = "gy", + Honduras = "hn", + Croatia = "hr", + Haiti = "ht", + Hungary = "hu", + Indonesia = "id", + India = "in", + Ireland = "ie", + IranIslamicRepublicOf = "ir", + Iraq = "iq", + Iceland = "is", + Israel = "il", + Italy = "it", + Jamaica = "jm", + Jordan = "jo", + Japan = "jp", + Kazakhstan = "kz", + Kenya = "ke", + Kyrgyzstan = "kg", + Cambodia = "kh", + Kiribati = "ki", + SaintKittsAndNevis = "kn", + SouthKorea = "kr", + Kuwait = "kw", + LaoPeopleSDemocraticRepublic = "la", + Lebanon = "lb", + Liberia = "lr", + Libya = "ly", + SaintLucia = "lc", + Liechtenstein = "li", + SriLanka = "lk", + Lesotho = "ls", + Lithuania = "lt", + Luxembourg = "lu", + Latvia = "lv", + Morocco = "ma", + Monaco = "mc", + Moldova = "md", + Madagascar = "mg", + Maldives = "mv", + Mexico = "mx", + MarshallIslands = "mh", + NorthMacedonia = "mk", + Mali = "ml", + Malta = "mt", + Myanmar = "mm", + Montenegro = "me", + Mongolia = "mn", + Mozambique = "mz", + Mauritania = "mr", + Mauritius = "mu", + Malawi = "mw", + Malaysia = "my", + Namibia = "na", + Niger = "ne", + Nigeria = "ng", + Nicaragua = "ni", + Netherlands = "nl", + Norway = "no", + Nepal = "np", + Nauru = "nr", + NewZealand = "nz", + Oman = "om", + Pakistan = "pk", + Panama = "pa", + Peru = "pe", + Philippines = "ph", + Palau = "pw", + PapuaNewGuinea = "pg", + Poland = "pl", + FrenchPolynesia = "pf", + NorthKorea = "kp", + Portugal = "pt", + Paraguay = "py", + Qatar = "qa", + Romania = "ro", + Russia = "ru", + Rwanda = "rw", + SaudiArabia = "sa", + Sudan = "sd", + Senegal = "sn", + Singapore = "sg", + SolomonIslands = "sb", + SierraLeone = "sl", + ElSalvador = "sv", + SanMarino = "sm", + Somalia = "so", + Serbia = "rs", + SouthSudan = "ss", + SaoTomeAndPrincipe = "st", + Suriname = "sr", + Slovakia = "sk", + Slovenia = "si", + Sweden = "se", + Eswatini = "sz", + Seychelles = "sc", + Syria = "sy", + Chad = "td", + Togo = "tg", + Thailand = "th", + Tajikistan = "tj", + Turkmenistan = "tm", + TimorLeste = "tl", + Tonga = "to", + TrinidadAndTobago = "tt", + Tunisia = "tn", + Turkey = "tr", + Tuvalu = "tv", + Tanzania = "tz", + Uganda = "ug", + Ukraine = "ua", + Uruguay = "uy", + UnitedStates = "us", + Uzbekistan = "uz", + VaticanCity = "va", + SaintVincentAndTheGrenadines = "vc", + Venezuela = "ve", + Vietnam = "vn", + Vanuatu = "vu", + Samoa = "ws", + Yemen = "ye", + SouthAfrica = "za", + Zambia = "zm", + Zimbabwe = "zw" +} + +export { Flag }; diff --git a/node_modules/node-appwrite/dist/enums/flag.d.ts b/node_modules/node-appwrite/dist/enums/flag.d.ts new file mode 100644 index 0000000..70c264e --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/flag.d.ts @@ -0,0 +1,199 @@ +declare enum Flag { + Afghanistan = "af", + Angola = "ao", + Albania = "al", + Andorra = "ad", + UnitedArabEmirates = "ae", + Argentina = "ar", + Armenia = "am", + AntiguaAndBarbuda = "ag", + Australia = "au", + Austria = "at", + Azerbaijan = "az", + Burundi = "bi", + Belgium = "be", + Benin = "bj", + BurkinaFaso = "bf", + Bangladesh = "bd", + Bulgaria = "bg", + Bahrain = "bh", + Bahamas = "bs", + BosniaAndHerzegovina = "ba", + Belarus = "by", + Belize = "bz", + Bolivia = "bo", + Brazil = "br", + Barbados = "bb", + BruneiDarussalam = "bn", + Bhutan = "bt", + Botswana = "bw", + CentralAfricanRepublic = "cf", + Canada = "ca", + Switzerland = "ch", + Chile = "cl", + China = "cn", + CoteDIvoire = "ci", + Cameroon = "cm", + DemocraticRepublicOfTheCongo = "cd", + RepublicOfTheCongo = "cg", + Colombia = "co", + Comoros = "km", + CapeVerde = "cv", + CostaRica = "cr", + Cuba = "cu", + Cyprus = "cy", + CzechRepublic = "cz", + Germany = "de", + Djibouti = "dj", + Dominica = "dm", + Denmark = "dk", + DominicanRepublic = "do", + Algeria = "dz", + Ecuador = "ec", + Egypt = "eg", + Eritrea = "er", + Spain = "es", + Estonia = "ee", + Ethiopia = "et", + Finland = "fi", + Fiji = "fj", + France = "fr", + MicronesiaFederatedStatesOf = "fm", + Gabon = "ga", + UnitedKingdom = "gb", + Georgia = "ge", + Ghana = "gh", + Guinea = "gn", + Gambia = "gm", + GuineaBissau = "gw", + EquatorialGuinea = "gq", + Greece = "gr", + Grenada = "gd", + Guatemala = "gt", + Guyana = "gy", + Honduras = "hn", + Croatia = "hr", + Haiti = "ht", + Hungary = "hu", + Indonesia = "id", + India = "in", + Ireland = "ie", + IranIslamicRepublicOf = "ir", + Iraq = "iq", + Iceland = "is", + Israel = "il", + Italy = "it", + Jamaica = "jm", + Jordan = "jo", + Japan = "jp", + Kazakhstan = "kz", + Kenya = "ke", + Kyrgyzstan = "kg", + Cambodia = "kh", + Kiribati = "ki", + SaintKittsAndNevis = "kn", + SouthKorea = "kr", + Kuwait = "kw", + LaoPeopleSDemocraticRepublic = "la", + Lebanon = "lb", + Liberia = "lr", + Libya = "ly", + SaintLucia = "lc", + Liechtenstein = "li", + SriLanka = "lk", + Lesotho = "ls", + Lithuania = "lt", + Luxembourg = "lu", + Latvia = "lv", + Morocco = "ma", + Monaco = "mc", + Moldova = "md", + Madagascar = "mg", + Maldives = "mv", + Mexico = "mx", + MarshallIslands = "mh", + NorthMacedonia = "mk", + Mali = "ml", + Malta = "mt", + Myanmar = "mm", + Montenegro = "me", + Mongolia = "mn", + Mozambique = "mz", + Mauritania = "mr", + Mauritius = "mu", + Malawi = "mw", + Malaysia = "my", + Namibia = "na", + Niger = "ne", + Nigeria = "ng", + Nicaragua = "ni", + Netherlands = "nl", + Norway = "no", + Nepal = "np", + Nauru = "nr", + NewZealand = "nz", + Oman = "om", + Pakistan = "pk", + Panama = "pa", + Peru = "pe", + Philippines = "ph", + Palau = "pw", + PapuaNewGuinea = "pg", + Poland = "pl", + FrenchPolynesia = "pf", + NorthKorea = "kp", + Portugal = "pt", + Paraguay = "py", + Qatar = "qa", + Romania = "ro", + Russia = "ru", + Rwanda = "rw", + SaudiArabia = "sa", + Sudan = "sd", + Senegal = "sn", + Singapore = "sg", + SolomonIslands = "sb", + SierraLeone = "sl", + ElSalvador = "sv", + SanMarino = "sm", + Somalia = "so", + Serbia = "rs", + SouthSudan = "ss", + SaoTomeAndPrincipe = "st", + Suriname = "sr", + Slovakia = "sk", + Slovenia = "si", + Sweden = "se", + Eswatini = "sz", + Seychelles = "sc", + Syria = "sy", + Chad = "td", + Togo = "tg", + Thailand = "th", + Tajikistan = "tj", + Turkmenistan = "tm", + TimorLeste = "tl", + Tonga = "to", + TrinidadAndTobago = "tt", + Tunisia = "tn", + Turkey = "tr", + Tuvalu = "tv", + Tanzania = "tz", + Uganda = "ug", + Ukraine = "ua", + Uruguay = "uy", + UnitedStates = "us", + Uzbekistan = "uz", + VaticanCity = "va", + SaintVincentAndTheGrenadines = "vc", + Venezuela = "ve", + Vietnam = "vn", + Vanuatu = "vu", + Samoa = "ws", + Yemen = "ye", + SouthAfrica = "za", + Zambia = "zm", + Zimbabwe = "zw" +} + +export { Flag }; diff --git a/node_modules/node-appwrite/dist/enums/flag.js b/node_modules/node-appwrite/dist/enums/flag.js new file mode 100644 index 0000000..de0ef97 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/flag.js @@ -0,0 +1,204 @@ +'use strict'; + +var Flag = /* @__PURE__ */ ((Flag2) => { + Flag2["Afghanistan"] = "af"; + Flag2["Angola"] = "ao"; + Flag2["Albania"] = "al"; + Flag2["Andorra"] = "ad"; + Flag2["UnitedArabEmirates"] = "ae"; + Flag2["Argentina"] = "ar"; + Flag2["Armenia"] = "am"; + Flag2["AntiguaAndBarbuda"] = "ag"; + Flag2["Australia"] = "au"; + Flag2["Austria"] = "at"; + Flag2["Azerbaijan"] = "az"; + Flag2["Burundi"] = "bi"; + Flag2["Belgium"] = "be"; + Flag2["Benin"] = "bj"; + Flag2["BurkinaFaso"] = "bf"; + Flag2["Bangladesh"] = "bd"; + Flag2["Bulgaria"] = "bg"; + Flag2["Bahrain"] = "bh"; + Flag2["Bahamas"] = "bs"; + Flag2["BosniaAndHerzegovina"] = "ba"; + Flag2["Belarus"] = "by"; + Flag2["Belize"] = "bz"; + Flag2["Bolivia"] = "bo"; + Flag2["Brazil"] = "br"; + Flag2["Barbados"] = "bb"; + Flag2["BruneiDarussalam"] = "bn"; + Flag2["Bhutan"] = "bt"; + Flag2["Botswana"] = "bw"; + Flag2["CentralAfricanRepublic"] = "cf"; + Flag2["Canada"] = "ca"; + Flag2["Switzerland"] = "ch"; + Flag2["Chile"] = "cl"; + Flag2["China"] = "cn"; + Flag2["CoteDIvoire"] = "ci"; + Flag2["Cameroon"] = "cm"; + Flag2["DemocraticRepublicOfTheCongo"] = "cd"; + Flag2["RepublicOfTheCongo"] = "cg"; + Flag2["Colombia"] = "co"; + Flag2["Comoros"] = "km"; + Flag2["CapeVerde"] = "cv"; + Flag2["CostaRica"] = "cr"; + Flag2["Cuba"] = "cu"; + Flag2["Cyprus"] = "cy"; + Flag2["CzechRepublic"] = "cz"; + Flag2["Germany"] = "de"; + Flag2["Djibouti"] = "dj"; + Flag2["Dominica"] = "dm"; + Flag2["Denmark"] = "dk"; + Flag2["DominicanRepublic"] = "do"; + Flag2["Algeria"] = "dz"; + Flag2["Ecuador"] = "ec"; + Flag2["Egypt"] = "eg"; + Flag2["Eritrea"] = "er"; + Flag2["Spain"] = "es"; + Flag2["Estonia"] = "ee"; + Flag2["Ethiopia"] = "et"; + Flag2["Finland"] = "fi"; + Flag2["Fiji"] = "fj"; + Flag2["France"] = "fr"; + Flag2["MicronesiaFederatedStatesOf"] = "fm"; + Flag2["Gabon"] = "ga"; + Flag2["UnitedKingdom"] = "gb"; + Flag2["Georgia"] = "ge"; + Flag2["Ghana"] = "gh"; + Flag2["Guinea"] = "gn"; + Flag2["Gambia"] = "gm"; + Flag2["GuineaBissau"] = "gw"; + Flag2["EquatorialGuinea"] = "gq"; + Flag2["Greece"] = "gr"; + Flag2["Grenada"] = "gd"; + Flag2["Guatemala"] = "gt"; + Flag2["Guyana"] = "gy"; + Flag2["Honduras"] = "hn"; + Flag2["Croatia"] = "hr"; + Flag2["Haiti"] = "ht"; + Flag2["Hungary"] = "hu"; + Flag2["Indonesia"] = "id"; + Flag2["India"] = "in"; + Flag2["Ireland"] = "ie"; + Flag2["IranIslamicRepublicOf"] = "ir"; + Flag2["Iraq"] = "iq"; + Flag2["Iceland"] = "is"; + Flag2["Israel"] = "il"; + Flag2["Italy"] = "it"; + Flag2["Jamaica"] = "jm"; + Flag2["Jordan"] = "jo"; + Flag2["Japan"] = "jp"; + Flag2["Kazakhstan"] = "kz"; + Flag2["Kenya"] = "ke"; + Flag2["Kyrgyzstan"] = "kg"; + Flag2["Cambodia"] = "kh"; + Flag2["Kiribati"] = "ki"; + Flag2["SaintKittsAndNevis"] = "kn"; + Flag2["SouthKorea"] = "kr"; + Flag2["Kuwait"] = "kw"; + Flag2["LaoPeopleSDemocraticRepublic"] = "la"; + Flag2["Lebanon"] = "lb"; + Flag2["Liberia"] = "lr"; + Flag2["Libya"] = "ly"; + Flag2["SaintLucia"] = "lc"; + Flag2["Liechtenstein"] = "li"; + Flag2["SriLanka"] = "lk"; + Flag2["Lesotho"] = "ls"; + Flag2["Lithuania"] = "lt"; + Flag2["Luxembourg"] = "lu"; + Flag2["Latvia"] = "lv"; + Flag2["Morocco"] = "ma"; + Flag2["Monaco"] = "mc"; + Flag2["Moldova"] = "md"; + Flag2["Madagascar"] = "mg"; + Flag2["Maldives"] = "mv"; + Flag2["Mexico"] = "mx"; + Flag2["MarshallIslands"] = "mh"; + Flag2["NorthMacedonia"] = "mk"; + Flag2["Mali"] = "ml"; + Flag2["Malta"] = "mt"; + Flag2["Myanmar"] = "mm"; + Flag2["Montenegro"] = "me"; + Flag2["Mongolia"] = "mn"; + Flag2["Mozambique"] = "mz"; + Flag2["Mauritania"] = "mr"; + Flag2["Mauritius"] = "mu"; + Flag2["Malawi"] = "mw"; + Flag2["Malaysia"] = "my"; + Flag2["Namibia"] = "na"; + Flag2["Niger"] = "ne"; + Flag2["Nigeria"] = "ng"; + Flag2["Nicaragua"] = "ni"; + Flag2["Netherlands"] = "nl"; + Flag2["Norway"] = "no"; + Flag2["Nepal"] = "np"; + Flag2["Nauru"] = "nr"; + Flag2["NewZealand"] = "nz"; + Flag2["Oman"] = "om"; + Flag2["Pakistan"] = "pk"; + Flag2["Panama"] = "pa"; + Flag2["Peru"] = "pe"; + Flag2["Philippines"] = "ph"; + Flag2["Palau"] = "pw"; + Flag2["PapuaNewGuinea"] = "pg"; + Flag2["Poland"] = "pl"; + Flag2["FrenchPolynesia"] = "pf"; + Flag2["NorthKorea"] = "kp"; + Flag2["Portugal"] = "pt"; + Flag2["Paraguay"] = "py"; + Flag2["Qatar"] = "qa"; + Flag2["Romania"] = "ro"; + Flag2["Russia"] = "ru"; + Flag2["Rwanda"] = "rw"; + Flag2["SaudiArabia"] = "sa"; + Flag2["Sudan"] = "sd"; + Flag2["Senegal"] = "sn"; + Flag2["Singapore"] = "sg"; + Flag2["SolomonIslands"] = "sb"; + Flag2["SierraLeone"] = "sl"; + Flag2["ElSalvador"] = "sv"; + Flag2["SanMarino"] = "sm"; + Flag2["Somalia"] = "so"; + Flag2["Serbia"] = "rs"; + Flag2["SouthSudan"] = "ss"; + Flag2["SaoTomeAndPrincipe"] = "st"; + Flag2["Suriname"] = "sr"; + Flag2["Slovakia"] = "sk"; + Flag2["Slovenia"] = "si"; + Flag2["Sweden"] = "se"; + Flag2["Eswatini"] = "sz"; + Flag2["Seychelles"] = "sc"; + Flag2["Syria"] = "sy"; + Flag2["Chad"] = "td"; + Flag2["Togo"] = "tg"; + Flag2["Thailand"] = "th"; + Flag2["Tajikistan"] = "tj"; + Flag2["Turkmenistan"] = "tm"; + Flag2["TimorLeste"] = "tl"; + Flag2["Tonga"] = "to"; + Flag2["TrinidadAndTobago"] = "tt"; + Flag2["Tunisia"] = "tn"; + Flag2["Turkey"] = "tr"; + Flag2["Tuvalu"] = "tv"; + Flag2["Tanzania"] = "tz"; + Flag2["Uganda"] = "ug"; + Flag2["Ukraine"] = "ua"; + Flag2["Uruguay"] = "uy"; + Flag2["UnitedStates"] = "us"; + Flag2["Uzbekistan"] = "uz"; + Flag2["VaticanCity"] = "va"; + Flag2["SaintVincentAndTheGrenadines"] = "vc"; + Flag2["Venezuela"] = "ve"; + Flag2["Vietnam"] = "vn"; + Flag2["Vanuatu"] = "vu"; + Flag2["Samoa"] = "ws"; + Flag2["Yemen"] = "ye"; + Flag2["SouthAfrica"] = "za"; + Flag2["Zambia"] = "zm"; + Flag2["Zimbabwe"] = "zw"; + return Flag2; +})(Flag || {}); + +exports.Flag = Flag; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=flag.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/flag.js.map b/node_modules/node-appwrite/dist/enums/flag.js.map new file mode 100644 index 0000000..8eb4ce7 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/flag.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/flag.ts"],"names":["Flag"],"mappings":"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","sourcesContent":["export enum Flag {\n Afghanistan = 'af',\n Angola = 'ao',\n Albania = 'al',\n Andorra = 'ad',\n UnitedArabEmirates = 'ae',\n Argentina = 'ar',\n Armenia = 'am',\n AntiguaAndBarbuda = 'ag',\n Australia = 'au',\n Austria = 'at',\n Azerbaijan = 'az',\n Burundi = 'bi',\n Belgium = 'be',\n Benin = 'bj',\n BurkinaFaso = 'bf',\n Bangladesh = 'bd',\n Bulgaria = 'bg',\n Bahrain = 'bh',\n Bahamas = 'bs',\n BosniaAndHerzegovina = 'ba',\n Belarus = 'by',\n Belize = 'bz',\n Bolivia = 'bo',\n Brazil = 'br',\n Barbados = 'bb',\n BruneiDarussalam = 'bn',\n Bhutan = 'bt',\n Botswana = 'bw',\n CentralAfricanRepublic = 'cf',\n Canada = 'ca',\n Switzerland = 'ch',\n Chile = 'cl',\n China = 'cn',\n CoteDIvoire = 'ci',\n Cameroon = 'cm',\n DemocraticRepublicOfTheCongo = 'cd',\n RepublicOfTheCongo = 'cg',\n Colombia = 'co',\n Comoros = 'km',\n CapeVerde = 'cv',\n CostaRica = 'cr',\n Cuba = 'cu',\n Cyprus = 'cy',\n CzechRepublic = 'cz',\n Germany = 'de',\n Djibouti = 'dj',\n Dominica = 'dm',\n Denmark = 'dk',\n DominicanRepublic = 'do',\n Algeria = 'dz',\n Ecuador = 'ec',\n Egypt = 'eg',\n Eritrea = 'er',\n Spain = 'es',\n Estonia = 'ee',\n Ethiopia = 'et',\n Finland = 'fi',\n Fiji = 'fj',\n France = 'fr',\n MicronesiaFederatedStatesOf = 'fm',\n Gabon = 'ga',\n UnitedKingdom = 'gb',\n Georgia = 'ge',\n Ghana = 'gh',\n Guinea = 'gn',\n Gambia = 'gm',\n GuineaBissau = 'gw',\n EquatorialGuinea = 'gq',\n Greece = 'gr',\n Grenada = 'gd',\n Guatemala = 'gt',\n Guyana = 'gy',\n Honduras = 'hn',\n Croatia = 'hr',\n Haiti = 'ht',\n Hungary = 'hu',\n Indonesia = 'id',\n India = 'in',\n Ireland = 'ie',\n IranIslamicRepublicOf = 'ir',\n Iraq = 'iq',\n Iceland = 'is',\n Israel = 'il',\n Italy = 'it',\n Jamaica = 'jm',\n Jordan = 'jo',\n Japan = 'jp',\n Kazakhstan = 'kz',\n Kenya = 'ke',\n Kyrgyzstan = 'kg',\n Cambodia = 'kh',\n Kiribati = 'ki',\n SaintKittsAndNevis = 'kn',\n SouthKorea = 'kr',\n Kuwait = 'kw',\n LaoPeopleSDemocraticRepublic = 'la',\n Lebanon = 'lb',\n Liberia = 'lr',\n Libya = 'ly',\n SaintLucia = 'lc',\n Liechtenstein = 'li',\n SriLanka = 'lk',\n Lesotho = 'ls',\n Lithuania = 'lt',\n Luxembourg = 'lu',\n Latvia = 'lv',\n Morocco = 'ma',\n Monaco = 'mc',\n Moldova = 'md',\n Madagascar = 'mg',\n Maldives = 'mv',\n Mexico = 'mx',\n MarshallIslands = 'mh',\n NorthMacedonia = 'mk',\n Mali = 'ml',\n Malta = 'mt',\n Myanmar = 'mm',\n Montenegro = 'me',\n Mongolia = 'mn',\n Mozambique = 'mz',\n Mauritania = 'mr',\n Mauritius = 'mu',\n Malawi = 'mw',\n Malaysia = 'my',\n Namibia = 'na',\n Niger = 'ne',\n Nigeria = 'ng',\n Nicaragua = 'ni',\n Netherlands = 'nl',\n Norway = 'no',\n Nepal = 'np',\n Nauru = 'nr',\n NewZealand = 'nz',\n Oman = 'om',\n Pakistan = 'pk',\n Panama = 'pa',\n Peru = 'pe',\n Philippines = 'ph',\n Palau = 'pw',\n PapuaNewGuinea = 'pg',\n Poland = 'pl',\n FrenchPolynesia = 'pf',\n NorthKorea = 'kp',\n Portugal = 'pt',\n Paraguay = 'py',\n Qatar = 'qa',\n Romania = 'ro',\n Russia = 'ru',\n Rwanda = 'rw',\n SaudiArabia = 'sa',\n Sudan = 'sd',\n Senegal = 'sn',\n Singapore = 'sg',\n SolomonIslands = 'sb',\n SierraLeone = 'sl',\n ElSalvador = 'sv',\n SanMarino = 'sm',\n Somalia = 'so',\n Serbia = 'rs',\n SouthSudan = 'ss',\n SaoTomeAndPrincipe = 'st',\n Suriname = 'sr',\n Slovakia = 'sk',\n Slovenia = 'si',\n Sweden = 'se',\n Eswatini = 'sz',\n Seychelles = 'sc',\n Syria = 'sy',\n Chad = 'td',\n Togo = 'tg',\n Thailand = 'th',\n Tajikistan = 'tj',\n Turkmenistan = 'tm',\n TimorLeste = 'tl',\n Tonga = 'to',\n TrinidadAndTobago = 'tt',\n Tunisia = 'tn',\n Turkey = 'tr',\n Tuvalu = 'tv',\n Tanzania = 'tz',\n Uganda = 'ug',\n Ukraine = 'ua',\n Uruguay = 'uy',\n UnitedStates = 'us',\n Uzbekistan = 'uz',\n VaticanCity = 'va',\n SaintVincentAndTheGrenadines = 'vc',\n Venezuela = 've',\n Vietnam = 'vn',\n Vanuatu = 'vu',\n Samoa = 'ws',\n Yemen = 'ye',\n SouthAfrica = 'za',\n Zambia = 'zm',\n Zimbabwe = 'zw',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/flag.mjs b/node_modules/node-appwrite/dist/enums/flag.mjs new file mode 100644 index 0000000..9caf88b --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/flag.mjs @@ -0,0 +1,203 @@ +// src/enums/flag.ts +var Flag = /* @__PURE__ */ ((Flag2) => { + Flag2["Afghanistan"] = "af"; + Flag2["Angola"] = "ao"; + Flag2["Albania"] = "al"; + Flag2["Andorra"] = "ad"; + Flag2["UnitedArabEmirates"] = "ae"; + Flag2["Argentina"] = "ar"; + Flag2["Armenia"] = "am"; + Flag2["AntiguaAndBarbuda"] = "ag"; + Flag2["Australia"] = "au"; + Flag2["Austria"] = "at"; + Flag2["Azerbaijan"] = "az"; + Flag2["Burundi"] = "bi"; + Flag2["Belgium"] = "be"; + Flag2["Benin"] = "bj"; + Flag2["BurkinaFaso"] = "bf"; + Flag2["Bangladesh"] = "bd"; + Flag2["Bulgaria"] = "bg"; + Flag2["Bahrain"] = "bh"; + Flag2["Bahamas"] = "bs"; + Flag2["BosniaAndHerzegovina"] = "ba"; + Flag2["Belarus"] = "by"; + Flag2["Belize"] = "bz"; + Flag2["Bolivia"] = "bo"; + Flag2["Brazil"] = "br"; + Flag2["Barbados"] = "bb"; + Flag2["BruneiDarussalam"] = "bn"; + Flag2["Bhutan"] = "bt"; + Flag2["Botswana"] = "bw"; + Flag2["CentralAfricanRepublic"] = "cf"; + Flag2["Canada"] = "ca"; + Flag2["Switzerland"] = "ch"; + Flag2["Chile"] = "cl"; + Flag2["China"] = "cn"; + Flag2["CoteDIvoire"] = "ci"; + Flag2["Cameroon"] = "cm"; + Flag2["DemocraticRepublicOfTheCongo"] = "cd"; + Flag2["RepublicOfTheCongo"] = "cg"; + Flag2["Colombia"] = "co"; + Flag2["Comoros"] = "km"; + Flag2["CapeVerde"] = "cv"; + Flag2["CostaRica"] = "cr"; + Flag2["Cuba"] = "cu"; + Flag2["Cyprus"] = "cy"; + Flag2["CzechRepublic"] = "cz"; + Flag2["Germany"] = "de"; + Flag2["Djibouti"] = "dj"; + Flag2["Dominica"] = "dm"; + Flag2["Denmark"] = "dk"; + Flag2["DominicanRepublic"] = "do"; + Flag2["Algeria"] = "dz"; + Flag2["Ecuador"] = "ec"; + Flag2["Egypt"] = "eg"; + Flag2["Eritrea"] = "er"; + Flag2["Spain"] = "es"; + Flag2["Estonia"] = "ee"; + Flag2["Ethiopia"] = "et"; + Flag2["Finland"] = "fi"; + Flag2["Fiji"] = "fj"; + Flag2["France"] = "fr"; + Flag2["MicronesiaFederatedStatesOf"] = "fm"; + Flag2["Gabon"] = "ga"; + Flag2["UnitedKingdom"] = "gb"; + Flag2["Georgia"] = "ge"; + Flag2["Ghana"] = "gh"; + Flag2["Guinea"] = "gn"; + Flag2["Gambia"] = "gm"; + Flag2["GuineaBissau"] = "gw"; + Flag2["EquatorialGuinea"] = "gq"; + Flag2["Greece"] = "gr"; + Flag2["Grenada"] = "gd"; + Flag2["Guatemala"] = "gt"; + Flag2["Guyana"] = "gy"; + Flag2["Honduras"] = "hn"; + Flag2["Croatia"] = "hr"; + Flag2["Haiti"] = "ht"; + Flag2["Hungary"] = "hu"; + Flag2["Indonesia"] = "id"; + Flag2["India"] = "in"; + Flag2["Ireland"] = "ie"; + Flag2["IranIslamicRepublicOf"] = "ir"; + Flag2["Iraq"] = "iq"; + Flag2["Iceland"] = "is"; + Flag2["Israel"] = "il"; + Flag2["Italy"] = "it"; + Flag2["Jamaica"] = "jm"; + Flag2["Jordan"] = "jo"; + Flag2["Japan"] = "jp"; + Flag2["Kazakhstan"] = "kz"; + Flag2["Kenya"] = "ke"; + Flag2["Kyrgyzstan"] = "kg"; + Flag2["Cambodia"] = "kh"; + Flag2["Kiribati"] = "ki"; + Flag2["SaintKittsAndNevis"] = "kn"; + Flag2["SouthKorea"] = "kr"; + Flag2["Kuwait"] = "kw"; + Flag2["LaoPeopleSDemocraticRepublic"] = "la"; + Flag2["Lebanon"] = "lb"; + Flag2["Liberia"] = "lr"; + Flag2["Libya"] = "ly"; + Flag2["SaintLucia"] = "lc"; + Flag2["Liechtenstein"] = "li"; + Flag2["SriLanka"] = "lk"; + Flag2["Lesotho"] = "ls"; + Flag2["Lithuania"] = "lt"; + Flag2["Luxembourg"] = "lu"; + Flag2["Latvia"] = "lv"; + Flag2["Morocco"] = "ma"; + Flag2["Monaco"] = "mc"; + Flag2["Moldova"] = "md"; + Flag2["Madagascar"] = "mg"; + Flag2["Maldives"] = "mv"; + Flag2["Mexico"] = "mx"; + Flag2["MarshallIslands"] = "mh"; + Flag2["NorthMacedonia"] = "mk"; + Flag2["Mali"] = "ml"; + Flag2["Malta"] = "mt"; + Flag2["Myanmar"] = "mm"; + Flag2["Montenegro"] = "me"; + Flag2["Mongolia"] = "mn"; + Flag2["Mozambique"] = "mz"; + Flag2["Mauritania"] = "mr"; + Flag2["Mauritius"] = "mu"; + Flag2["Malawi"] = "mw"; + Flag2["Malaysia"] = "my"; + Flag2["Namibia"] = "na"; + Flag2["Niger"] = "ne"; + Flag2["Nigeria"] = "ng"; + Flag2["Nicaragua"] = "ni"; + Flag2["Netherlands"] = "nl"; + Flag2["Norway"] = "no"; + Flag2["Nepal"] = "np"; + Flag2["Nauru"] = "nr"; + Flag2["NewZealand"] = "nz"; + Flag2["Oman"] = "om"; + Flag2["Pakistan"] = "pk"; + Flag2["Panama"] = "pa"; + Flag2["Peru"] = "pe"; + Flag2["Philippines"] = "ph"; + Flag2["Palau"] = "pw"; + Flag2["PapuaNewGuinea"] = "pg"; + Flag2["Poland"] = "pl"; + Flag2["FrenchPolynesia"] = "pf"; + Flag2["NorthKorea"] = "kp"; + Flag2["Portugal"] = "pt"; + Flag2["Paraguay"] = "py"; + Flag2["Qatar"] = "qa"; + Flag2["Romania"] = "ro"; + Flag2["Russia"] = "ru"; + Flag2["Rwanda"] = "rw"; + Flag2["SaudiArabia"] = "sa"; + Flag2["Sudan"] = "sd"; + Flag2["Senegal"] = "sn"; + Flag2["Singapore"] = "sg"; + Flag2["SolomonIslands"] = "sb"; + Flag2["SierraLeone"] = "sl"; + Flag2["ElSalvador"] = "sv"; + Flag2["SanMarino"] = "sm"; + Flag2["Somalia"] = "so"; + Flag2["Serbia"] = "rs"; + Flag2["SouthSudan"] = "ss"; + Flag2["SaoTomeAndPrincipe"] = "st"; + Flag2["Suriname"] = "sr"; + Flag2["Slovakia"] = "sk"; + Flag2["Slovenia"] = "si"; + Flag2["Sweden"] = "se"; + Flag2["Eswatini"] = "sz"; + Flag2["Seychelles"] = "sc"; + Flag2["Syria"] = "sy"; + Flag2["Chad"] = "td"; + Flag2["Togo"] = "tg"; + Flag2["Thailand"] = "th"; + Flag2["Tajikistan"] = "tj"; + Flag2["Turkmenistan"] = "tm"; + Flag2["TimorLeste"] = "tl"; + Flag2["Tonga"] = "to"; + Flag2["TrinidadAndTobago"] = "tt"; + Flag2["Tunisia"] = "tn"; + Flag2["Turkey"] = "tr"; + Flag2["Tuvalu"] = "tv"; + Flag2["Tanzania"] = "tz"; + Flag2["Uganda"] = "ug"; + Flag2["Ukraine"] = "ua"; + Flag2["Uruguay"] = "uy"; + Flag2["UnitedStates"] = "us"; + Flag2["Uzbekistan"] = "uz"; + Flag2["VaticanCity"] = "va"; + Flag2["SaintVincentAndTheGrenadines"] = "vc"; + Flag2["Venezuela"] = "ve"; + Flag2["Vietnam"] = "vn"; + Flag2["Vanuatu"] = "vu"; + Flag2["Samoa"] = "ws"; + Flag2["Yemen"] = "ye"; + Flag2["SouthAfrica"] = "za"; + Flag2["Zambia"] = "zm"; + Flag2["Zimbabwe"] = "zw"; + return Flag2; +})(Flag || {}); + +export { Flag }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=flag.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/flag.mjs.map b/node_modules/node-appwrite/dist/enums/flag.mjs.map new file mode 100644 index 0000000..f419203 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/flag.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/flag.ts"],"names":["Flag"],"mappings":"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","sourcesContent":["export enum Flag {\n Afghanistan = 'af',\n Angola = 'ao',\n Albania = 'al',\n Andorra = 'ad',\n UnitedArabEmirates = 'ae',\n Argentina = 'ar',\n Armenia = 'am',\n AntiguaAndBarbuda = 'ag',\n Australia = 'au',\n Austria = 'at',\n Azerbaijan = 'az',\n Burundi = 'bi',\n Belgium = 'be',\n Benin = 'bj',\n BurkinaFaso = 'bf',\n Bangladesh = 'bd',\n Bulgaria = 'bg',\n Bahrain = 'bh',\n Bahamas = 'bs',\n BosniaAndHerzegovina = 'ba',\n Belarus = 'by',\n Belize = 'bz',\n Bolivia = 'bo',\n Brazil = 'br',\n Barbados = 'bb',\n BruneiDarussalam = 'bn',\n Bhutan = 'bt',\n Botswana = 'bw',\n CentralAfricanRepublic = 'cf',\n Canada = 'ca',\n Switzerland = 'ch',\n Chile = 'cl',\n China = 'cn',\n CoteDIvoire = 'ci',\n Cameroon = 'cm',\n DemocraticRepublicOfTheCongo = 'cd',\n RepublicOfTheCongo = 'cg',\n Colombia = 'co',\n Comoros = 'km',\n CapeVerde = 'cv',\n CostaRica = 'cr',\n Cuba = 'cu',\n Cyprus = 'cy',\n CzechRepublic = 'cz',\n Germany = 'de',\n Djibouti = 'dj',\n Dominica = 'dm',\n Denmark = 'dk',\n DominicanRepublic = 'do',\n Algeria = 'dz',\n Ecuador = 'ec',\n Egypt = 'eg',\n Eritrea = 'er',\n Spain = 'es',\n Estonia = 'ee',\n Ethiopia = 'et',\n Finland = 'fi',\n Fiji = 'fj',\n France = 'fr',\n MicronesiaFederatedStatesOf = 'fm',\n Gabon = 'ga',\n UnitedKingdom = 'gb',\n Georgia = 'ge',\n Ghana = 'gh',\n Guinea = 'gn',\n Gambia = 'gm',\n GuineaBissau = 'gw',\n EquatorialGuinea = 'gq',\n Greece = 'gr',\n Grenada = 'gd',\n Guatemala = 'gt',\n Guyana = 'gy',\n Honduras = 'hn',\n Croatia = 'hr',\n Haiti = 'ht',\n Hungary = 'hu',\n Indonesia = 'id',\n India = 'in',\n Ireland = 'ie',\n IranIslamicRepublicOf = 'ir',\n Iraq = 'iq',\n Iceland = 'is',\n Israel = 'il',\n Italy = 'it',\n Jamaica = 'jm',\n Jordan = 'jo',\n Japan = 'jp',\n Kazakhstan = 'kz',\n Kenya = 'ke',\n Kyrgyzstan = 'kg',\n Cambodia = 'kh',\n Kiribati = 'ki',\n SaintKittsAndNevis = 'kn',\n SouthKorea = 'kr',\n Kuwait = 'kw',\n LaoPeopleSDemocraticRepublic = 'la',\n Lebanon = 'lb',\n Liberia = 'lr',\n Libya = 'ly',\n SaintLucia = 'lc',\n Liechtenstein = 'li',\n SriLanka = 'lk',\n Lesotho = 'ls',\n Lithuania = 'lt',\n Luxembourg = 'lu',\n Latvia = 'lv',\n Morocco = 'ma',\n Monaco = 'mc',\n Moldova = 'md',\n Madagascar = 'mg',\n Maldives = 'mv',\n Mexico = 'mx',\n MarshallIslands = 'mh',\n NorthMacedonia = 'mk',\n Mali = 'ml',\n Malta = 'mt',\n Myanmar = 'mm',\n Montenegro = 'me',\n Mongolia = 'mn',\n Mozambique = 'mz',\n Mauritania = 'mr',\n Mauritius = 'mu',\n Malawi = 'mw',\n Malaysia = 'my',\n Namibia = 'na',\n Niger = 'ne',\n Nigeria = 'ng',\n Nicaragua = 'ni',\n Netherlands = 'nl',\n Norway = 'no',\n Nepal = 'np',\n Nauru = 'nr',\n NewZealand = 'nz',\n Oman = 'om',\n Pakistan = 'pk',\n Panama = 'pa',\n Peru = 'pe',\n Philippines = 'ph',\n Palau = 'pw',\n PapuaNewGuinea = 'pg',\n Poland = 'pl',\n FrenchPolynesia = 'pf',\n NorthKorea = 'kp',\n Portugal = 'pt',\n Paraguay = 'py',\n Qatar = 'qa',\n Romania = 'ro',\n Russia = 'ru',\n Rwanda = 'rw',\n SaudiArabia = 'sa',\n Sudan = 'sd',\n Senegal = 'sn',\n Singapore = 'sg',\n SolomonIslands = 'sb',\n SierraLeone = 'sl',\n ElSalvador = 'sv',\n SanMarino = 'sm',\n Somalia = 'so',\n Serbia = 'rs',\n SouthSudan = 'ss',\n SaoTomeAndPrincipe = 'st',\n Suriname = 'sr',\n Slovakia = 'sk',\n Slovenia = 'si',\n Sweden = 'se',\n Eswatini = 'sz',\n Seychelles = 'sc',\n Syria = 'sy',\n Chad = 'td',\n Togo = 'tg',\n Thailand = 'th',\n Tajikistan = 'tj',\n Turkmenistan = 'tm',\n TimorLeste = 'tl',\n Tonga = 'to',\n TrinidadAndTobago = 'tt',\n Tunisia = 'tn',\n Turkey = 'tr',\n Tuvalu = 'tv',\n Tanzania = 'tz',\n Uganda = 'ug',\n Ukraine = 'ua',\n Uruguay = 'uy',\n UnitedStates = 'us',\n Uzbekistan = 'uz',\n VaticanCity = 'va',\n SaintVincentAndTheGrenadines = 'vc',\n Venezuela = 've',\n Vietnam = 'vn',\n Vanuatu = 'vu',\n Samoa = 'ws',\n Yemen = 'ye',\n SouthAfrica = 'za',\n Zambia = 'zm',\n Zimbabwe = 'zw',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/image-format.d.mts b/node_modules/node-appwrite/dist/enums/image-format.d.mts new file mode 100644 index 0000000..3095321 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/image-format.d.mts @@ -0,0 +1,9 @@ +declare enum ImageFormat { + Jpg = "jpg", + Jpeg = "jpeg", + Gif = "gif", + Png = "png", + Webp = "webp" +} + +export { ImageFormat }; diff --git a/node_modules/node-appwrite/dist/enums/image-format.d.ts b/node_modules/node-appwrite/dist/enums/image-format.d.ts new file mode 100644 index 0000000..3095321 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/image-format.d.ts @@ -0,0 +1,9 @@ +declare enum ImageFormat { + Jpg = "jpg", + Jpeg = "jpeg", + Gif = "gif", + Png = "png", + Webp = "webp" +} + +export { ImageFormat }; diff --git a/node_modules/node-appwrite/dist/enums/image-format.js b/node_modules/node-appwrite/dist/enums/image-format.js new file mode 100644 index 0000000..095fec6 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/image-format.js @@ -0,0 +1,14 @@ +'use strict'; + +var ImageFormat = /* @__PURE__ */ ((ImageFormat2) => { + ImageFormat2["Jpg"] = "jpg"; + ImageFormat2["Jpeg"] = "jpeg"; + ImageFormat2["Gif"] = "gif"; + ImageFormat2["Png"] = "png"; + ImageFormat2["Webp"] = "webp"; + return ImageFormat2; +})(ImageFormat || {}); + +exports.ImageFormat = ImageFormat; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=image-format.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/image-format.js.map b/node_modules/node-appwrite/dist/enums/image-format.js.map new file mode 100644 index 0000000..bbe09b0 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/image-format.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/image-format.ts"],"names":["ImageFormat"],"mappings":"AAAO,IAAK,cAAL,kBAAKA,iBAAL;AACH,EAAAA,aAAA,SAAM;AACN,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,SAAM;AACN,EAAAA,aAAA,SAAM;AACN,EAAAA,aAAA,UAAO;AALC,SAAAA;AAAA,GAAA","sourcesContent":["export enum ImageFormat {\n Jpg = 'jpg',\n Jpeg = 'jpeg',\n Gif = 'gif',\n Png = 'png',\n Webp = 'webp',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/image-format.mjs b/node_modules/node-appwrite/dist/enums/image-format.mjs new file mode 100644 index 0000000..27c3981 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/image-format.mjs @@ -0,0 +1,13 @@ +// src/enums/image-format.ts +var ImageFormat = /* @__PURE__ */ ((ImageFormat2) => { + ImageFormat2["Jpg"] = "jpg"; + ImageFormat2["Jpeg"] = "jpeg"; + ImageFormat2["Gif"] = "gif"; + ImageFormat2["Png"] = "png"; + ImageFormat2["Webp"] = "webp"; + return ImageFormat2; +})(ImageFormat || {}); + +export { ImageFormat }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=image-format.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/image-format.mjs.map b/node_modules/node-appwrite/dist/enums/image-format.mjs.map new file mode 100644 index 0000000..c76b9e3 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/image-format.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/image-format.ts"],"names":["ImageFormat"],"mappings":";AAAO,IAAK,cAAL,kBAAKA,iBAAL;AACH,EAAAA,aAAA,SAAM;AACN,EAAAA,aAAA,UAAO;AACP,EAAAA,aAAA,SAAM;AACN,EAAAA,aAAA,SAAM;AACN,EAAAA,aAAA,UAAO;AALC,SAAAA;AAAA,GAAA","sourcesContent":["export enum ImageFormat {\n Jpg = 'jpg',\n Jpeg = 'jpeg',\n Gif = 'gif',\n Png = 'png',\n Webp = 'webp',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/image-gravity.d.mts b/node_modules/node-appwrite/dist/enums/image-gravity.d.mts new file mode 100644 index 0000000..efa9f5c --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/image-gravity.d.mts @@ -0,0 +1,13 @@ +declare enum ImageGravity { + Center = "center", + Topleft = "top-left", + Top = "top", + Topright = "top-right", + Left = "left", + Right = "right", + Bottomleft = "bottom-left", + Bottom = "bottom", + Bottomright = "bottom-right" +} + +export { ImageGravity }; diff --git a/node_modules/node-appwrite/dist/enums/image-gravity.d.ts b/node_modules/node-appwrite/dist/enums/image-gravity.d.ts new file mode 100644 index 0000000..efa9f5c --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/image-gravity.d.ts @@ -0,0 +1,13 @@ +declare enum ImageGravity { + Center = "center", + Topleft = "top-left", + Top = "top", + Topright = "top-right", + Left = "left", + Right = "right", + Bottomleft = "bottom-left", + Bottom = "bottom", + Bottomright = "bottom-right" +} + +export { ImageGravity }; diff --git a/node_modules/node-appwrite/dist/enums/image-gravity.js b/node_modules/node-appwrite/dist/enums/image-gravity.js new file mode 100644 index 0000000..5624170 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/image-gravity.js @@ -0,0 +1,18 @@ +'use strict'; + +var ImageGravity = /* @__PURE__ */ ((ImageGravity2) => { + ImageGravity2["Center"] = "center"; + ImageGravity2["Topleft"] = "top-left"; + ImageGravity2["Top"] = "top"; + ImageGravity2["Topright"] = "top-right"; + ImageGravity2["Left"] = "left"; + ImageGravity2["Right"] = "right"; + ImageGravity2["Bottomleft"] = "bottom-left"; + ImageGravity2["Bottom"] = "bottom"; + ImageGravity2["Bottomright"] = "bottom-right"; + return ImageGravity2; +})(ImageGravity || {}); + +exports.ImageGravity = ImageGravity; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=image-gravity.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/image-gravity.js.map b/node_modules/node-appwrite/dist/enums/image-gravity.js.map new file mode 100644 index 0000000..2dc875f --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/image-gravity.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/image-gravity.ts"],"names":["ImageGravity"],"mappings":"AAAO,IAAK,eAAL,kBAAKA,kBAAL;AACH,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,SAAM;AACN,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,UAAO;AACP,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,iBAAc;AATN,SAAAA;AAAA,GAAA","sourcesContent":["export enum ImageGravity {\n Center = 'center',\n Topleft = 'top-left',\n Top = 'top',\n Topright = 'top-right',\n Left = 'left',\n Right = 'right',\n Bottomleft = 'bottom-left',\n Bottom = 'bottom',\n Bottomright = 'bottom-right',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/image-gravity.mjs b/node_modules/node-appwrite/dist/enums/image-gravity.mjs new file mode 100644 index 0000000..dd49aa9 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/image-gravity.mjs @@ -0,0 +1,17 @@ +// src/enums/image-gravity.ts +var ImageGravity = /* @__PURE__ */ ((ImageGravity2) => { + ImageGravity2["Center"] = "center"; + ImageGravity2["Topleft"] = "top-left"; + ImageGravity2["Top"] = "top"; + ImageGravity2["Topright"] = "top-right"; + ImageGravity2["Left"] = "left"; + ImageGravity2["Right"] = "right"; + ImageGravity2["Bottomleft"] = "bottom-left"; + ImageGravity2["Bottom"] = "bottom"; + ImageGravity2["Bottomright"] = "bottom-right"; + return ImageGravity2; +})(ImageGravity || {}); + +export { ImageGravity }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=image-gravity.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/image-gravity.mjs.map b/node_modules/node-appwrite/dist/enums/image-gravity.mjs.map new file mode 100644 index 0000000..29a7425 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/image-gravity.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/image-gravity.ts"],"names":["ImageGravity"],"mappings":";AAAO,IAAK,eAAL,kBAAKA,kBAAL;AACH,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,SAAM;AACN,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,UAAO;AACP,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,iBAAc;AATN,SAAAA;AAAA,GAAA","sourcesContent":["export enum ImageGravity {\n Center = 'center',\n Topleft = 'top-left',\n Top = 'top',\n Topright = 'top-right',\n Left = 'left',\n Right = 'right',\n Bottomleft = 'bottom-left',\n Bottom = 'bottom',\n Bottomright = 'bottom-right',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/index-type.d.mts b/node_modules/node-appwrite/dist/enums/index-type.d.mts new file mode 100644 index 0000000..886d09e --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/index-type.d.mts @@ -0,0 +1,7 @@ +declare enum IndexType { + Key = "key", + Fulltext = "fulltext", + Unique = "unique" +} + +export { IndexType }; diff --git a/node_modules/node-appwrite/dist/enums/index-type.d.ts b/node_modules/node-appwrite/dist/enums/index-type.d.ts new file mode 100644 index 0000000..886d09e --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/index-type.d.ts @@ -0,0 +1,7 @@ +declare enum IndexType { + Key = "key", + Fulltext = "fulltext", + Unique = "unique" +} + +export { IndexType }; diff --git a/node_modules/node-appwrite/dist/enums/index-type.js b/node_modules/node-appwrite/dist/enums/index-type.js new file mode 100644 index 0000000..538472c --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/index-type.js @@ -0,0 +1,12 @@ +'use strict'; + +var IndexType = /* @__PURE__ */ ((IndexType2) => { + IndexType2["Key"] = "key"; + IndexType2["Fulltext"] = "fulltext"; + IndexType2["Unique"] = "unique"; + return IndexType2; +})(IndexType || {}); + +exports.IndexType = IndexType; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=index-type.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/index-type.js.map b/node_modules/node-appwrite/dist/enums/index-type.js.map new file mode 100644 index 0000000..51cc8e7 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/index-type.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/index-type.ts"],"names":["IndexType"],"mappings":"AAAO,IAAK,YAAL,kBAAKA,eAAL;AACH,EAAAA,WAAA,SAAM;AACN,EAAAA,WAAA,cAAW;AACX,EAAAA,WAAA,YAAS;AAHD,SAAAA;AAAA,GAAA","sourcesContent":["export enum IndexType {\n Key = 'key',\n Fulltext = 'fulltext',\n Unique = 'unique',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/index-type.mjs b/node_modules/node-appwrite/dist/enums/index-type.mjs new file mode 100644 index 0000000..be71cc9 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/index-type.mjs @@ -0,0 +1,11 @@ +// src/enums/index-type.ts +var IndexType = /* @__PURE__ */ ((IndexType2) => { + IndexType2["Key"] = "key"; + IndexType2["Fulltext"] = "fulltext"; + IndexType2["Unique"] = "unique"; + return IndexType2; +})(IndexType || {}); + +export { IndexType }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=index-type.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/index-type.mjs.map b/node_modules/node-appwrite/dist/enums/index-type.mjs.map new file mode 100644 index 0000000..aa0ed55 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/index-type.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/index-type.ts"],"names":["IndexType"],"mappings":";AAAO,IAAK,YAAL,kBAAKA,eAAL;AACH,EAAAA,WAAA,SAAM;AACN,EAAAA,WAAA,cAAW;AACX,EAAAA,WAAA,YAAS;AAHD,SAAAA;AAAA,GAAA","sourcesContent":["export enum IndexType {\n Key = 'key',\n Fulltext = 'fulltext',\n Unique = 'unique',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/messaging-provider-type.d.mts b/node_modules/node-appwrite/dist/enums/messaging-provider-type.d.mts new file mode 100644 index 0000000..4410c5e --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/messaging-provider-type.d.mts @@ -0,0 +1,7 @@ +declare enum MessagingProviderType { + Email = "email", + Sms = "sms", + Push = "push" +} + +export { MessagingProviderType }; diff --git a/node_modules/node-appwrite/dist/enums/messaging-provider-type.d.ts b/node_modules/node-appwrite/dist/enums/messaging-provider-type.d.ts new file mode 100644 index 0000000..4410c5e --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/messaging-provider-type.d.ts @@ -0,0 +1,7 @@ +declare enum MessagingProviderType { + Email = "email", + Sms = "sms", + Push = "push" +} + +export { MessagingProviderType }; diff --git a/node_modules/node-appwrite/dist/enums/messaging-provider-type.js b/node_modules/node-appwrite/dist/enums/messaging-provider-type.js new file mode 100644 index 0000000..6c8f7a3 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/messaging-provider-type.js @@ -0,0 +1,12 @@ +'use strict'; + +var MessagingProviderType = /* @__PURE__ */ ((MessagingProviderType2) => { + MessagingProviderType2["Email"] = "email"; + MessagingProviderType2["Sms"] = "sms"; + MessagingProviderType2["Push"] = "push"; + return MessagingProviderType2; +})(MessagingProviderType || {}); + +exports.MessagingProviderType = MessagingProviderType; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=messaging-provider-type.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/messaging-provider-type.js.map b/node_modules/node-appwrite/dist/enums/messaging-provider-type.js.map new file mode 100644 index 0000000..83aff34 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/messaging-provider-type.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/messaging-provider-type.ts"],"names":["MessagingProviderType"],"mappings":"AAAO,IAAK,wBAAL,kBAAKA,2BAAL;AACH,EAAAA,uBAAA,WAAQ;AACR,EAAAA,uBAAA,SAAM;AACN,EAAAA,uBAAA,UAAO;AAHC,SAAAA;AAAA,GAAA","sourcesContent":["export enum MessagingProviderType {\n Email = 'email',\n Sms = 'sms',\n Push = 'push',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/messaging-provider-type.mjs b/node_modules/node-appwrite/dist/enums/messaging-provider-type.mjs new file mode 100644 index 0000000..571a6cd --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/messaging-provider-type.mjs @@ -0,0 +1,11 @@ +// src/enums/messaging-provider-type.ts +var MessagingProviderType = /* @__PURE__ */ ((MessagingProviderType2) => { + MessagingProviderType2["Email"] = "email"; + MessagingProviderType2["Sms"] = "sms"; + MessagingProviderType2["Push"] = "push"; + return MessagingProviderType2; +})(MessagingProviderType || {}); + +export { MessagingProviderType }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=messaging-provider-type.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/messaging-provider-type.mjs.map b/node_modules/node-appwrite/dist/enums/messaging-provider-type.mjs.map new file mode 100644 index 0000000..04511d5 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/messaging-provider-type.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/messaging-provider-type.ts"],"names":["MessagingProviderType"],"mappings":";AAAO,IAAK,wBAAL,kBAAKA,2BAAL;AACH,EAAAA,uBAAA,WAAQ;AACR,EAAAA,uBAAA,SAAM;AACN,EAAAA,uBAAA,UAAO;AAHC,SAAAA;AAAA,GAAA","sourcesContent":["export enum MessagingProviderType {\n Email = 'email',\n Sms = 'sms',\n Push = 'push',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/name.d.mts b/node_modules/node-appwrite/dist/enums/name.d.mts new file mode 100644 index 0000000..62647c9 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/name.d.mts @@ -0,0 +1,16 @@ +declare enum Name { + V1database = "v1-database", + V1deletes = "v1-deletes", + V1audits = "v1-audits", + V1mails = "v1-mails", + V1functions = "v1-functions", + V1usage = "v1-usage", + V1usagedump = "v1-usage-dump", + V1webhooks = "v1-webhooks", + V1certificates = "v1-certificates", + V1builds = "v1-builds", + V1messaging = "v1-messaging", + V1migrations = "v1-migrations" +} + +export { Name }; diff --git a/node_modules/node-appwrite/dist/enums/name.d.ts b/node_modules/node-appwrite/dist/enums/name.d.ts new file mode 100644 index 0000000..62647c9 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/name.d.ts @@ -0,0 +1,16 @@ +declare enum Name { + V1database = "v1-database", + V1deletes = "v1-deletes", + V1audits = "v1-audits", + V1mails = "v1-mails", + V1functions = "v1-functions", + V1usage = "v1-usage", + V1usagedump = "v1-usage-dump", + V1webhooks = "v1-webhooks", + V1certificates = "v1-certificates", + V1builds = "v1-builds", + V1messaging = "v1-messaging", + V1migrations = "v1-migrations" +} + +export { Name }; diff --git a/node_modules/node-appwrite/dist/enums/name.js b/node_modules/node-appwrite/dist/enums/name.js new file mode 100644 index 0000000..0bb9312 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/name.js @@ -0,0 +1,21 @@ +'use strict'; + +var Name = /* @__PURE__ */ ((Name2) => { + Name2["V1database"] = "v1-database"; + Name2["V1deletes"] = "v1-deletes"; + Name2["V1audits"] = "v1-audits"; + Name2["V1mails"] = "v1-mails"; + Name2["V1functions"] = "v1-functions"; + Name2["V1usage"] = "v1-usage"; + Name2["V1usagedump"] = "v1-usage-dump"; + Name2["V1webhooks"] = "v1-webhooks"; + Name2["V1certificates"] = "v1-certificates"; + Name2["V1builds"] = "v1-builds"; + Name2["V1messaging"] = "v1-messaging"; + Name2["V1migrations"] = "v1-migrations"; + return Name2; +})(Name || {}); + +exports.Name = Name; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=name.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/name.js.map b/node_modules/node-appwrite/dist/enums/name.js.map new file mode 100644 index 0000000..44c36cf --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/name.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/name.ts"],"names":["Name"],"mappings":"AAAO,IAAK,OAAL,kBAAKA,UAAL;AACH,EAAAA,MAAA,gBAAa;AACb,EAAAA,MAAA,eAAY;AACZ,EAAAA,MAAA,cAAW;AACX,EAAAA,MAAA,aAAU;AACV,EAAAA,MAAA,iBAAc;AACd,EAAAA,MAAA,aAAU;AACV,EAAAA,MAAA,iBAAc;AACd,EAAAA,MAAA,gBAAa;AACb,EAAAA,MAAA,oBAAiB;AACjB,EAAAA,MAAA,cAAW;AACX,EAAAA,MAAA,iBAAc;AACd,EAAAA,MAAA,kBAAe;AAZP,SAAAA;AAAA,GAAA","sourcesContent":["export enum Name {\n V1database = 'v1-database',\n V1deletes = 'v1-deletes',\n V1audits = 'v1-audits',\n V1mails = 'v1-mails',\n V1functions = 'v1-functions',\n V1usage = 'v1-usage',\n V1usagedump = 'v1-usage-dump',\n V1webhooks = 'v1-webhooks',\n V1certificates = 'v1-certificates',\n V1builds = 'v1-builds',\n V1messaging = 'v1-messaging',\n V1migrations = 'v1-migrations',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/name.mjs b/node_modules/node-appwrite/dist/enums/name.mjs new file mode 100644 index 0000000..02d7e0e --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/name.mjs @@ -0,0 +1,20 @@ +// src/enums/name.ts +var Name = /* @__PURE__ */ ((Name2) => { + Name2["V1database"] = "v1-database"; + Name2["V1deletes"] = "v1-deletes"; + Name2["V1audits"] = "v1-audits"; + Name2["V1mails"] = "v1-mails"; + Name2["V1functions"] = "v1-functions"; + Name2["V1usage"] = "v1-usage"; + Name2["V1usagedump"] = "v1-usage-dump"; + Name2["V1webhooks"] = "v1-webhooks"; + Name2["V1certificates"] = "v1-certificates"; + Name2["V1builds"] = "v1-builds"; + Name2["V1messaging"] = "v1-messaging"; + Name2["V1migrations"] = "v1-migrations"; + return Name2; +})(Name || {}); + +export { Name }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=name.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/name.mjs.map b/node_modules/node-appwrite/dist/enums/name.mjs.map new file mode 100644 index 0000000..705d90c --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/name.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/name.ts"],"names":["Name"],"mappings":";AAAO,IAAK,OAAL,kBAAKA,UAAL;AACH,EAAAA,MAAA,gBAAa;AACb,EAAAA,MAAA,eAAY;AACZ,EAAAA,MAAA,cAAW;AACX,EAAAA,MAAA,aAAU;AACV,EAAAA,MAAA,iBAAc;AACd,EAAAA,MAAA,aAAU;AACV,EAAAA,MAAA,iBAAc;AACd,EAAAA,MAAA,gBAAa;AACb,EAAAA,MAAA,oBAAiB;AACjB,EAAAA,MAAA,cAAW;AACX,EAAAA,MAAA,iBAAc;AACd,EAAAA,MAAA,kBAAe;AAZP,SAAAA;AAAA,GAAA","sourcesContent":["export enum Name {\n V1database = 'v1-database',\n V1deletes = 'v1-deletes',\n V1audits = 'v1-audits',\n V1mails = 'v1-mails',\n V1functions = 'v1-functions',\n V1usage = 'v1-usage',\n V1usagedump = 'v1-usage-dump',\n V1webhooks = 'v1-webhooks',\n V1certificates = 'v1-certificates',\n V1builds = 'v1-builds',\n V1messaging = 'v1-messaging',\n V1migrations = 'v1-migrations',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/o-auth-provider.d.mts b/node_modules/node-appwrite/dist/enums/o-auth-provider.d.mts new file mode 100644 index 0000000..c3598dc --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/o-auth-provider.d.mts @@ -0,0 +1,43 @@ +declare enum OAuthProvider { + Amazon = "amazon", + Apple = "apple", + Auth0 = "auth0", + Authentik = "authentik", + Autodesk = "autodesk", + Bitbucket = "bitbucket", + Bitly = "bitly", + Box = "box", + Dailymotion = "dailymotion", + Discord = "discord", + Disqus = "disqus", + Dropbox = "dropbox", + Etsy = "etsy", + Facebook = "facebook", + Github = "github", + Gitlab = "gitlab", + Google = "google", + Linkedin = "linkedin", + Microsoft = "microsoft", + Notion = "notion", + Oidc = "oidc", + Okta = "okta", + Paypal = "paypal", + PaypalSandbox = "paypalSandbox", + Podio = "podio", + Salesforce = "salesforce", + Slack = "slack", + Spotify = "spotify", + Stripe = "stripe", + Tradeshift = "tradeshift", + TradeshiftBox = "tradeshiftBox", + Twitch = "twitch", + Wordpress = "wordpress", + Yahoo = "yahoo", + Yammer = "yammer", + Yandex = "yandex", + Zoho = "zoho", + Zoom = "zoom", + Mock = "mock" +} + +export { OAuthProvider }; diff --git a/node_modules/node-appwrite/dist/enums/o-auth-provider.d.ts b/node_modules/node-appwrite/dist/enums/o-auth-provider.d.ts new file mode 100644 index 0000000..c3598dc --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/o-auth-provider.d.ts @@ -0,0 +1,43 @@ +declare enum OAuthProvider { + Amazon = "amazon", + Apple = "apple", + Auth0 = "auth0", + Authentik = "authentik", + Autodesk = "autodesk", + Bitbucket = "bitbucket", + Bitly = "bitly", + Box = "box", + Dailymotion = "dailymotion", + Discord = "discord", + Disqus = "disqus", + Dropbox = "dropbox", + Etsy = "etsy", + Facebook = "facebook", + Github = "github", + Gitlab = "gitlab", + Google = "google", + Linkedin = "linkedin", + Microsoft = "microsoft", + Notion = "notion", + Oidc = "oidc", + Okta = "okta", + Paypal = "paypal", + PaypalSandbox = "paypalSandbox", + Podio = "podio", + Salesforce = "salesforce", + Slack = "slack", + Spotify = "spotify", + Stripe = "stripe", + Tradeshift = "tradeshift", + TradeshiftBox = "tradeshiftBox", + Twitch = "twitch", + Wordpress = "wordpress", + Yahoo = "yahoo", + Yammer = "yammer", + Yandex = "yandex", + Zoho = "zoho", + Zoom = "zoom", + Mock = "mock" +} + +export { OAuthProvider }; diff --git a/node_modules/node-appwrite/dist/enums/o-auth-provider.js b/node_modules/node-appwrite/dist/enums/o-auth-provider.js new file mode 100644 index 0000000..9c63ee9 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/o-auth-provider.js @@ -0,0 +1,48 @@ +'use strict'; + +var OAuthProvider = /* @__PURE__ */ ((OAuthProvider2) => { + OAuthProvider2["Amazon"] = "amazon"; + OAuthProvider2["Apple"] = "apple"; + OAuthProvider2["Auth0"] = "auth0"; + OAuthProvider2["Authentik"] = "authentik"; + OAuthProvider2["Autodesk"] = "autodesk"; + OAuthProvider2["Bitbucket"] = "bitbucket"; + OAuthProvider2["Bitly"] = "bitly"; + OAuthProvider2["Box"] = "box"; + OAuthProvider2["Dailymotion"] = "dailymotion"; + OAuthProvider2["Discord"] = "discord"; + OAuthProvider2["Disqus"] = "disqus"; + OAuthProvider2["Dropbox"] = "dropbox"; + OAuthProvider2["Etsy"] = "etsy"; + OAuthProvider2["Facebook"] = "facebook"; + OAuthProvider2["Github"] = "github"; + OAuthProvider2["Gitlab"] = "gitlab"; + OAuthProvider2["Google"] = "google"; + OAuthProvider2["Linkedin"] = "linkedin"; + OAuthProvider2["Microsoft"] = "microsoft"; + OAuthProvider2["Notion"] = "notion"; + OAuthProvider2["Oidc"] = "oidc"; + OAuthProvider2["Okta"] = "okta"; + OAuthProvider2["Paypal"] = "paypal"; + OAuthProvider2["PaypalSandbox"] = "paypalSandbox"; + OAuthProvider2["Podio"] = "podio"; + OAuthProvider2["Salesforce"] = "salesforce"; + OAuthProvider2["Slack"] = "slack"; + OAuthProvider2["Spotify"] = "spotify"; + OAuthProvider2["Stripe"] = "stripe"; + OAuthProvider2["Tradeshift"] = "tradeshift"; + OAuthProvider2["TradeshiftBox"] = "tradeshiftBox"; + OAuthProvider2["Twitch"] = "twitch"; + OAuthProvider2["Wordpress"] = "wordpress"; + OAuthProvider2["Yahoo"] = "yahoo"; + OAuthProvider2["Yammer"] = "yammer"; + OAuthProvider2["Yandex"] = "yandex"; + OAuthProvider2["Zoho"] = "zoho"; + OAuthProvider2["Zoom"] = "zoom"; + OAuthProvider2["Mock"] = "mock"; + return OAuthProvider2; +})(OAuthProvider || {}); + +exports.OAuthProvider = OAuthProvider; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=o-auth-provider.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/o-auth-provider.js.map b/node_modules/node-appwrite/dist/enums/o-auth-provider.js.map new file mode 100644 index 0000000..b0448e5 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/o-auth-provider.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/o-auth-provider.ts"],"names":["OAuthProvider"],"mappings":"AAAO,IAAK,gBAAL,kBAAKA,mBAAL;AACH,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,iBAAc;AACd,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,mBAAgB;AAChB,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,gBAAa;AACb,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,gBAAa;AACb,EAAAA,eAAA,mBAAgB;AAChB,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,UAAO;AAvCC,SAAAA;AAAA,GAAA","sourcesContent":["export enum OAuthProvider {\n Amazon = 'amazon',\n Apple = 'apple',\n Auth0 = 'auth0',\n Authentik = 'authentik',\n Autodesk = 'autodesk',\n Bitbucket = 'bitbucket',\n Bitly = 'bitly',\n Box = 'box',\n Dailymotion = 'dailymotion',\n Discord = 'discord',\n Disqus = 'disqus',\n Dropbox = 'dropbox',\n Etsy = 'etsy',\n Facebook = 'facebook',\n Github = 'github',\n Gitlab = 'gitlab',\n Google = 'google',\n Linkedin = 'linkedin',\n Microsoft = 'microsoft',\n Notion = 'notion',\n Oidc = 'oidc',\n Okta = 'okta',\n Paypal = 'paypal',\n PaypalSandbox = 'paypalSandbox',\n Podio = 'podio',\n Salesforce = 'salesforce',\n Slack = 'slack',\n Spotify = 'spotify',\n Stripe = 'stripe',\n Tradeshift = 'tradeshift',\n TradeshiftBox = 'tradeshiftBox',\n Twitch = 'twitch',\n Wordpress = 'wordpress',\n Yahoo = 'yahoo',\n Yammer = 'yammer',\n Yandex = 'yandex',\n Zoho = 'zoho',\n Zoom = 'zoom',\n Mock = 'mock',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/o-auth-provider.mjs b/node_modules/node-appwrite/dist/enums/o-auth-provider.mjs new file mode 100644 index 0000000..0847679 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/o-auth-provider.mjs @@ -0,0 +1,47 @@ +// src/enums/o-auth-provider.ts +var OAuthProvider = /* @__PURE__ */ ((OAuthProvider2) => { + OAuthProvider2["Amazon"] = "amazon"; + OAuthProvider2["Apple"] = "apple"; + OAuthProvider2["Auth0"] = "auth0"; + OAuthProvider2["Authentik"] = "authentik"; + OAuthProvider2["Autodesk"] = "autodesk"; + OAuthProvider2["Bitbucket"] = "bitbucket"; + OAuthProvider2["Bitly"] = "bitly"; + OAuthProvider2["Box"] = "box"; + OAuthProvider2["Dailymotion"] = "dailymotion"; + OAuthProvider2["Discord"] = "discord"; + OAuthProvider2["Disqus"] = "disqus"; + OAuthProvider2["Dropbox"] = "dropbox"; + OAuthProvider2["Etsy"] = "etsy"; + OAuthProvider2["Facebook"] = "facebook"; + OAuthProvider2["Github"] = "github"; + OAuthProvider2["Gitlab"] = "gitlab"; + OAuthProvider2["Google"] = "google"; + OAuthProvider2["Linkedin"] = "linkedin"; + OAuthProvider2["Microsoft"] = "microsoft"; + OAuthProvider2["Notion"] = "notion"; + OAuthProvider2["Oidc"] = "oidc"; + OAuthProvider2["Okta"] = "okta"; + OAuthProvider2["Paypal"] = "paypal"; + OAuthProvider2["PaypalSandbox"] = "paypalSandbox"; + OAuthProvider2["Podio"] = "podio"; + OAuthProvider2["Salesforce"] = "salesforce"; + OAuthProvider2["Slack"] = "slack"; + OAuthProvider2["Spotify"] = "spotify"; + OAuthProvider2["Stripe"] = "stripe"; + OAuthProvider2["Tradeshift"] = "tradeshift"; + OAuthProvider2["TradeshiftBox"] = "tradeshiftBox"; + OAuthProvider2["Twitch"] = "twitch"; + OAuthProvider2["Wordpress"] = "wordpress"; + OAuthProvider2["Yahoo"] = "yahoo"; + OAuthProvider2["Yammer"] = "yammer"; + OAuthProvider2["Yandex"] = "yandex"; + OAuthProvider2["Zoho"] = "zoho"; + OAuthProvider2["Zoom"] = "zoom"; + OAuthProvider2["Mock"] = "mock"; + return OAuthProvider2; +})(OAuthProvider || {}); + +export { OAuthProvider }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=o-auth-provider.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/o-auth-provider.mjs.map b/node_modules/node-appwrite/dist/enums/o-auth-provider.mjs.map new file mode 100644 index 0000000..a7d902b --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/o-auth-provider.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/o-auth-provider.ts"],"names":["OAuthProvider"],"mappings":";AAAO,IAAK,gBAAL,kBAAKA,mBAAL;AACH,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,iBAAc;AACd,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,cAAW;AACX,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,mBAAgB;AAChB,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,gBAAa;AACb,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,aAAU;AACV,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,gBAAa;AACb,EAAAA,eAAA,mBAAgB;AAChB,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,eAAY;AACZ,EAAAA,eAAA,WAAQ;AACR,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,YAAS;AACT,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,UAAO;AACP,EAAAA,eAAA,UAAO;AAvCC,SAAAA;AAAA,GAAA","sourcesContent":["export enum OAuthProvider {\n Amazon = 'amazon',\n Apple = 'apple',\n Auth0 = 'auth0',\n Authentik = 'authentik',\n Autodesk = 'autodesk',\n Bitbucket = 'bitbucket',\n Bitly = 'bitly',\n Box = 'box',\n Dailymotion = 'dailymotion',\n Discord = 'discord',\n Disqus = 'disqus',\n Dropbox = 'dropbox',\n Etsy = 'etsy',\n Facebook = 'facebook',\n Github = 'github',\n Gitlab = 'gitlab',\n Google = 'google',\n Linkedin = 'linkedin',\n Microsoft = 'microsoft',\n Notion = 'notion',\n Oidc = 'oidc',\n Okta = 'okta',\n Paypal = 'paypal',\n PaypalSandbox = 'paypalSandbox',\n Podio = 'podio',\n Salesforce = 'salesforce',\n Slack = 'slack',\n Spotify = 'spotify',\n Stripe = 'stripe',\n Tradeshift = 'tradeshift',\n TradeshiftBox = 'tradeshiftBox',\n Twitch = 'twitch',\n Wordpress = 'wordpress',\n Yahoo = 'yahoo',\n Yammer = 'yammer',\n Yandex = 'yandex',\n Zoho = 'zoho',\n Zoom = 'zoom',\n Mock = 'mock',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/password-hash.d.mts b/node_modules/node-appwrite/dist/enums/password-hash.d.mts new file mode 100644 index 0000000..e2cacd4 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/password-hash.d.mts @@ -0,0 +1,15 @@ +declare enum PasswordHash { + Sha1 = "sha1", + Sha224 = "sha224", + Sha256 = "sha256", + Sha384 = "sha384", + Sha512224 = "sha512/224", + Sha512256 = "sha512/256", + Sha512 = "sha512", + Sha3224 = "sha3-224", + Sha3256 = "sha3-256", + Sha3384 = "sha3-384", + Sha3512 = "sha3-512" +} + +export { PasswordHash }; diff --git a/node_modules/node-appwrite/dist/enums/password-hash.d.ts b/node_modules/node-appwrite/dist/enums/password-hash.d.ts new file mode 100644 index 0000000..e2cacd4 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/password-hash.d.ts @@ -0,0 +1,15 @@ +declare enum PasswordHash { + Sha1 = "sha1", + Sha224 = "sha224", + Sha256 = "sha256", + Sha384 = "sha384", + Sha512224 = "sha512/224", + Sha512256 = "sha512/256", + Sha512 = "sha512", + Sha3224 = "sha3-224", + Sha3256 = "sha3-256", + Sha3384 = "sha3-384", + Sha3512 = "sha3-512" +} + +export { PasswordHash }; diff --git a/node_modules/node-appwrite/dist/enums/password-hash.js b/node_modules/node-appwrite/dist/enums/password-hash.js new file mode 100644 index 0000000..a05f289 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/password-hash.js @@ -0,0 +1,20 @@ +'use strict'; + +var PasswordHash = /* @__PURE__ */ ((PasswordHash2) => { + PasswordHash2["Sha1"] = "sha1"; + PasswordHash2["Sha224"] = "sha224"; + PasswordHash2["Sha256"] = "sha256"; + PasswordHash2["Sha384"] = "sha384"; + PasswordHash2["Sha512224"] = "sha512/224"; + PasswordHash2["Sha512256"] = "sha512/256"; + PasswordHash2["Sha512"] = "sha512"; + PasswordHash2["Sha3224"] = "sha3-224"; + PasswordHash2["Sha3256"] = "sha3-256"; + PasswordHash2["Sha3384"] = "sha3-384"; + PasswordHash2["Sha3512"] = "sha3-512"; + return PasswordHash2; +})(PasswordHash || {}); + +exports.PasswordHash = PasswordHash; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=password-hash.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/password-hash.js.map b/node_modules/node-appwrite/dist/enums/password-hash.js.map new file mode 100644 index 0000000..90e00c9 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/password-hash.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/password-hash.ts"],"names":["PasswordHash"],"mappings":"AAAO,IAAK,eAAL,kBAAKA,kBAAL;AACH,EAAAA,cAAA,UAAO;AACP,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,eAAY;AACZ,EAAAA,cAAA,eAAY;AACZ,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AAXF,SAAAA;AAAA,GAAA","sourcesContent":["export enum PasswordHash {\n Sha1 = 'sha1',\n Sha224 = 'sha224',\n Sha256 = 'sha256',\n Sha384 = 'sha384',\n Sha512224 = 'sha512/224',\n Sha512256 = 'sha512/256',\n Sha512 = 'sha512',\n Sha3224 = 'sha3-224',\n Sha3256 = 'sha3-256',\n Sha3384 = 'sha3-384',\n Sha3512 = 'sha3-512',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/password-hash.mjs b/node_modules/node-appwrite/dist/enums/password-hash.mjs new file mode 100644 index 0000000..d445a9b --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/password-hash.mjs @@ -0,0 +1,19 @@ +// src/enums/password-hash.ts +var PasswordHash = /* @__PURE__ */ ((PasswordHash2) => { + PasswordHash2["Sha1"] = "sha1"; + PasswordHash2["Sha224"] = "sha224"; + PasswordHash2["Sha256"] = "sha256"; + PasswordHash2["Sha384"] = "sha384"; + PasswordHash2["Sha512224"] = "sha512/224"; + PasswordHash2["Sha512256"] = "sha512/256"; + PasswordHash2["Sha512"] = "sha512"; + PasswordHash2["Sha3224"] = "sha3-224"; + PasswordHash2["Sha3256"] = "sha3-256"; + PasswordHash2["Sha3384"] = "sha3-384"; + PasswordHash2["Sha3512"] = "sha3-512"; + return PasswordHash2; +})(PasswordHash || {}); + +export { PasswordHash }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=password-hash.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/password-hash.mjs.map b/node_modules/node-appwrite/dist/enums/password-hash.mjs.map new file mode 100644 index 0000000..dbca260 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/password-hash.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/password-hash.ts"],"names":["PasswordHash"],"mappings":";AAAO,IAAK,eAAL,kBAAKA,kBAAL;AACH,EAAAA,cAAA,UAAO;AACP,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,eAAY;AACZ,EAAAA,cAAA,eAAY;AACZ,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AAXF,SAAAA;AAAA,GAAA","sourcesContent":["export enum PasswordHash {\n Sha1 = 'sha1',\n Sha224 = 'sha224',\n Sha256 = 'sha256',\n Sha384 = 'sha384',\n Sha512224 = 'sha512/224',\n Sha512256 = 'sha512/256',\n Sha512 = 'sha512',\n Sha3224 = 'sha3-224',\n Sha3256 = 'sha3-256',\n Sha3384 = 'sha3-384',\n Sha3512 = 'sha3-512',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/relation-mutate.d.mts b/node_modules/node-appwrite/dist/enums/relation-mutate.d.mts new file mode 100644 index 0000000..42db89d --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/relation-mutate.d.mts @@ -0,0 +1,7 @@ +declare enum RelationMutate { + Cascade = "cascade", + Restrict = "restrict", + SetNull = "setNull" +} + +export { RelationMutate }; diff --git a/node_modules/node-appwrite/dist/enums/relation-mutate.d.ts b/node_modules/node-appwrite/dist/enums/relation-mutate.d.ts new file mode 100644 index 0000000..42db89d --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/relation-mutate.d.ts @@ -0,0 +1,7 @@ +declare enum RelationMutate { + Cascade = "cascade", + Restrict = "restrict", + SetNull = "setNull" +} + +export { RelationMutate }; diff --git a/node_modules/node-appwrite/dist/enums/relation-mutate.js b/node_modules/node-appwrite/dist/enums/relation-mutate.js new file mode 100644 index 0000000..13c4836 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/relation-mutate.js @@ -0,0 +1,12 @@ +'use strict'; + +var RelationMutate = /* @__PURE__ */ ((RelationMutate2) => { + RelationMutate2["Cascade"] = "cascade"; + RelationMutate2["Restrict"] = "restrict"; + RelationMutate2["SetNull"] = "setNull"; + return RelationMutate2; +})(RelationMutate || {}); + +exports.RelationMutate = RelationMutate; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=relation-mutate.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/relation-mutate.js.map b/node_modules/node-appwrite/dist/enums/relation-mutate.js.map new file mode 100644 index 0000000..c17516a --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/relation-mutate.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/relation-mutate.ts"],"names":["RelationMutate"],"mappings":"AAAO,IAAK,iBAAL,kBAAKA,oBAAL;AACH,EAAAA,gBAAA,aAAU;AACV,EAAAA,gBAAA,cAAW;AACX,EAAAA,gBAAA,aAAU;AAHF,SAAAA;AAAA,GAAA","sourcesContent":["export enum RelationMutate {\n Cascade = 'cascade',\n Restrict = 'restrict',\n SetNull = 'setNull',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/relation-mutate.mjs b/node_modules/node-appwrite/dist/enums/relation-mutate.mjs new file mode 100644 index 0000000..6f0be3b --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/relation-mutate.mjs @@ -0,0 +1,11 @@ +// src/enums/relation-mutate.ts +var RelationMutate = /* @__PURE__ */ ((RelationMutate2) => { + RelationMutate2["Cascade"] = "cascade"; + RelationMutate2["Restrict"] = "restrict"; + RelationMutate2["SetNull"] = "setNull"; + return RelationMutate2; +})(RelationMutate || {}); + +export { RelationMutate }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=relation-mutate.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/relation-mutate.mjs.map b/node_modules/node-appwrite/dist/enums/relation-mutate.mjs.map new file mode 100644 index 0000000..a5a7ec3 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/relation-mutate.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/relation-mutate.ts"],"names":["RelationMutate"],"mappings":";AAAO,IAAK,iBAAL,kBAAKA,oBAAL;AACH,EAAAA,gBAAA,aAAU;AACV,EAAAA,gBAAA,cAAW;AACX,EAAAA,gBAAA,aAAU;AAHF,SAAAA;AAAA,GAAA","sourcesContent":["export enum RelationMutate {\n Cascade = 'cascade',\n Restrict = 'restrict',\n SetNull = 'setNull',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/relationship-type.d.mts b/node_modules/node-appwrite/dist/enums/relationship-type.d.mts new file mode 100644 index 0000000..38b6543 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/relationship-type.d.mts @@ -0,0 +1,8 @@ +declare enum RelationshipType { + OneToOne = "oneToOne", + ManyToOne = "manyToOne", + ManyToMany = "manyToMany", + OneToMany = "oneToMany" +} + +export { RelationshipType }; diff --git a/node_modules/node-appwrite/dist/enums/relationship-type.d.ts b/node_modules/node-appwrite/dist/enums/relationship-type.d.ts new file mode 100644 index 0000000..38b6543 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/relationship-type.d.ts @@ -0,0 +1,8 @@ +declare enum RelationshipType { + OneToOne = "oneToOne", + ManyToOne = "manyToOne", + ManyToMany = "manyToMany", + OneToMany = "oneToMany" +} + +export { RelationshipType }; diff --git a/node_modules/node-appwrite/dist/enums/relationship-type.js b/node_modules/node-appwrite/dist/enums/relationship-type.js new file mode 100644 index 0000000..eb40ab1 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/relationship-type.js @@ -0,0 +1,13 @@ +'use strict'; + +var RelationshipType = /* @__PURE__ */ ((RelationshipType2) => { + RelationshipType2["OneToOne"] = "oneToOne"; + RelationshipType2["ManyToOne"] = "manyToOne"; + RelationshipType2["ManyToMany"] = "manyToMany"; + RelationshipType2["OneToMany"] = "oneToMany"; + return RelationshipType2; +})(RelationshipType || {}); + +exports.RelationshipType = RelationshipType; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=relationship-type.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/relationship-type.js.map b/node_modules/node-appwrite/dist/enums/relationship-type.js.map new file mode 100644 index 0000000..eecb5ee --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/relationship-type.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/relationship-type.ts"],"names":["RelationshipType"],"mappings":"AAAO,IAAK,mBAAL,kBAAKA,sBAAL;AACH,EAAAA,kBAAA,cAAW;AACX,EAAAA,kBAAA,eAAY;AACZ,EAAAA,kBAAA,gBAAa;AACb,EAAAA,kBAAA,eAAY;AAJJ,SAAAA;AAAA,GAAA","sourcesContent":["export enum RelationshipType {\n OneToOne = 'oneToOne',\n ManyToOne = 'manyToOne',\n ManyToMany = 'manyToMany',\n OneToMany = 'oneToMany',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/relationship-type.mjs b/node_modules/node-appwrite/dist/enums/relationship-type.mjs new file mode 100644 index 0000000..6e1f523 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/relationship-type.mjs @@ -0,0 +1,12 @@ +// src/enums/relationship-type.ts +var RelationshipType = /* @__PURE__ */ ((RelationshipType2) => { + RelationshipType2["OneToOne"] = "oneToOne"; + RelationshipType2["ManyToOne"] = "manyToOne"; + RelationshipType2["ManyToMany"] = "manyToMany"; + RelationshipType2["OneToMany"] = "oneToMany"; + return RelationshipType2; +})(RelationshipType || {}); + +export { RelationshipType }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=relationship-type.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/relationship-type.mjs.map b/node_modules/node-appwrite/dist/enums/relationship-type.mjs.map new file mode 100644 index 0000000..250fc49 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/relationship-type.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/relationship-type.ts"],"names":["RelationshipType"],"mappings":";AAAO,IAAK,mBAAL,kBAAKA,sBAAL;AACH,EAAAA,kBAAA,cAAW;AACX,EAAAA,kBAAA,eAAY;AACZ,EAAAA,kBAAA,gBAAa;AACb,EAAAA,kBAAA,eAAY;AAJJ,SAAAA;AAAA,GAAA","sourcesContent":["export enum RelationshipType {\n OneToOne = 'oneToOne',\n ManyToOne = 'manyToOne',\n ManyToMany = 'manyToMany',\n OneToMany = 'oneToMany',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/runtime.d.mts b/node_modules/node-appwrite/dist/enums/runtime.d.mts new file mode 100644 index 0000000..ffac7a6 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/runtime.d.mts @@ -0,0 +1,50 @@ +declare enum Runtime { + Node145 = "node-14.5", + Node160 = "node-16.0", + Node180 = "node-18.0", + Node190 = "node-19.0", + Node200 = "node-20.0", + Node210 = "node-21.0", + Php80 = "php-8.0", + Php81 = "php-8.1", + Php82 = "php-8.2", + Php83 = "php-8.3", + Ruby30 = "ruby-3.0", + Ruby31 = "ruby-3.1", + Ruby32 = "ruby-3.2", + Ruby33 = "ruby-3.3", + Python38 = "python-3.8", + Python39 = "python-3.9", + Python310 = "python-3.10", + Python311 = "python-3.11", + Python312 = "python-3.12", + Pythonml311 = "python-ml-3.11", + Deno140 = "deno-1.40", + Dart215 = "dart-2.15", + Dart216 = "dart-2.16", + Dart217 = "dart-2.17", + Dart218 = "dart-2.18", + Dart30 = "dart-3.0", + Dart31 = "dart-3.1", + Dart33 = "dart-3.3", + Dotnet31 = "dotnet-3.1", + Dotnet60 = "dotnet-6.0", + Dotnet70 = "dotnet-7.0", + Java80 = "java-8.0", + Java110 = "java-11.0", + Java170 = "java-17.0", + Java180 = "java-18.0", + Java210 = "java-21.0", + Swift55 = "swift-5.5", + Swift58 = "swift-5.8", + Swift59 = "swift-5.9", + Kotlin16 = "kotlin-1.6", + Kotlin18 = "kotlin-1.8", + Kotlin19 = "kotlin-1.9", + Cpp17 = "cpp-17", + Cpp20 = "cpp-20", + Bun10 = "bun-1.0", + Go123 = "go-1.23" +} + +export { Runtime }; diff --git a/node_modules/node-appwrite/dist/enums/runtime.d.ts b/node_modules/node-appwrite/dist/enums/runtime.d.ts new file mode 100644 index 0000000..ffac7a6 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/runtime.d.ts @@ -0,0 +1,50 @@ +declare enum Runtime { + Node145 = "node-14.5", + Node160 = "node-16.0", + Node180 = "node-18.0", + Node190 = "node-19.0", + Node200 = "node-20.0", + Node210 = "node-21.0", + Php80 = "php-8.0", + Php81 = "php-8.1", + Php82 = "php-8.2", + Php83 = "php-8.3", + Ruby30 = "ruby-3.0", + Ruby31 = "ruby-3.1", + Ruby32 = "ruby-3.2", + Ruby33 = "ruby-3.3", + Python38 = "python-3.8", + Python39 = "python-3.9", + Python310 = "python-3.10", + Python311 = "python-3.11", + Python312 = "python-3.12", + Pythonml311 = "python-ml-3.11", + Deno140 = "deno-1.40", + Dart215 = "dart-2.15", + Dart216 = "dart-2.16", + Dart217 = "dart-2.17", + Dart218 = "dart-2.18", + Dart30 = "dart-3.0", + Dart31 = "dart-3.1", + Dart33 = "dart-3.3", + Dotnet31 = "dotnet-3.1", + Dotnet60 = "dotnet-6.0", + Dotnet70 = "dotnet-7.0", + Java80 = "java-8.0", + Java110 = "java-11.0", + Java170 = "java-17.0", + Java180 = "java-18.0", + Java210 = "java-21.0", + Swift55 = "swift-5.5", + Swift58 = "swift-5.8", + Swift59 = "swift-5.9", + Kotlin16 = "kotlin-1.6", + Kotlin18 = "kotlin-1.8", + Kotlin19 = "kotlin-1.9", + Cpp17 = "cpp-17", + Cpp20 = "cpp-20", + Bun10 = "bun-1.0", + Go123 = "go-1.23" +} + +export { Runtime }; diff --git a/node_modules/node-appwrite/dist/enums/runtime.js b/node_modules/node-appwrite/dist/enums/runtime.js new file mode 100644 index 0000000..274baa1 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/runtime.js @@ -0,0 +1,55 @@ +'use strict'; + +var Runtime = /* @__PURE__ */ ((Runtime2) => { + Runtime2["Node145"] = "node-14.5"; + Runtime2["Node160"] = "node-16.0"; + Runtime2["Node180"] = "node-18.0"; + Runtime2["Node190"] = "node-19.0"; + Runtime2["Node200"] = "node-20.0"; + Runtime2["Node210"] = "node-21.0"; + Runtime2["Php80"] = "php-8.0"; + Runtime2["Php81"] = "php-8.1"; + Runtime2["Php82"] = "php-8.2"; + Runtime2["Php83"] = "php-8.3"; + Runtime2["Ruby30"] = "ruby-3.0"; + Runtime2["Ruby31"] = "ruby-3.1"; + Runtime2["Ruby32"] = "ruby-3.2"; + Runtime2["Ruby33"] = "ruby-3.3"; + Runtime2["Python38"] = "python-3.8"; + Runtime2["Python39"] = "python-3.9"; + Runtime2["Python310"] = "python-3.10"; + Runtime2["Python311"] = "python-3.11"; + Runtime2["Python312"] = "python-3.12"; + Runtime2["Pythonml311"] = "python-ml-3.11"; + Runtime2["Deno140"] = "deno-1.40"; + Runtime2["Dart215"] = "dart-2.15"; + Runtime2["Dart216"] = "dart-2.16"; + Runtime2["Dart217"] = "dart-2.17"; + Runtime2["Dart218"] = "dart-2.18"; + Runtime2["Dart30"] = "dart-3.0"; + Runtime2["Dart31"] = "dart-3.1"; + Runtime2["Dart33"] = "dart-3.3"; + Runtime2["Dotnet31"] = "dotnet-3.1"; + Runtime2["Dotnet60"] = "dotnet-6.0"; + Runtime2["Dotnet70"] = "dotnet-7.0"; + Runtime2["Java80"] = "java-8.0"; + Runtime2["Java110"] = "java-11.0"; + Runtime2["Java170"] = "java-17.0"; + Runtime2["Java180"] = "java-18.0"; + Runtime2["Java210"] = "java-21.0"; + Runtime2["Swift55"] = "swift-5.5"; + Runtime2["Swift58"] = "swift-5.8"; + Runtime2["Swift59"] = "swift-5.9"; + Runtime2["Kotlin16"] = "kotlin-1.6"; + Runtime2["Kotlin18"] = "kotlin-1.8"; + Runtime2["Kotlin19"] = "kotlin-1.9"; + Runtime2["Cpp17"] = "cpp-17"; + Runtime2["Cpp20"] = "cpp-20"; + Runtime2["Bun10"] = "bun-1.0"; + Runtime2["Go123"] = "go-1.23"; + return Runtime2; +})(Runtime || {}); + +exports.Runtime = Runtime; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=runtime.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/runtime.js.map b/node_modules/node-appwrite/dist/enums/runtime.js.map new file mode 100644 index 0000000..f910be1 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/runtime.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/runtime.ts"],"names":["Runtime"],"mappings":"AAAO,IAAK,UAAL,kBAAKA,aAAL;AACH,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,eAAY;AACZ,EAAAA,SAAA,eAAY;AACZ,EAAAA,SAAA,eAAY;AACZ,EAAAA,SAAA,iBAAc;AACd,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,WAAQ;AA9CA,SAAAA;AAAA,GAAA","sourcesContent":["export enum Runtime {\n Node145 = 'node-14.5',\n Node160 = 'node-16.0',\n Node180 = 'node-18.0',\n Node190 = 'node-19.0',\n Node200 = 'node-20.0',\n Node210 = 'node-21.0',\n Php80 = 'php-8.0',\n Php81 = 'php-8.1',\n Php82 = 'php-8.2',\n Php83 = 'php-8.3',\n Ruby30 = 'ruby-3.0',\n Ruby31 = 'ruby-3.1',\n Ruby32 = 'ruby-3.2',\n Ruby33 = 'ruby-3.3',\n Python38 = 'python-3.8',\n Python39 = 'python-3.9',\n Python310 = 'python-3.10',\n Python311 = 'python-3.11',\n Python312 = 'python-3.12',\n Pythonml311 = 'python-ml-3.11',\n Deno140 = 'deno-1.40',\n Dart215 = 'dart-2.15',\n Dart216 = 'dart-2.16',\n Dart217 = 'dart-2.17',\n Dart218 = 'dart-2.18',\n Dart30 = 'dart-3.0',\n Dart31 = 'dart-3.1',\n Dart33 = 'dart-3.3',\n Dotnet31 = 'dotnet-3.1',\n Dotnet60 = 'dotnet-6.0',\n Dotnet70 = 'dotnet-7.0',\n Java80 = 'java-8.0',\n Java110 = 'java-11.0',\n Java170 = 'java-17.0',\n Java180 = 'java-18.0',\n Java210 = 'java-21.0',\n Swift55 = 'swift-5.5',\n Swift58 = 'swift-5.8',\n Swift59 = 'swift-5.9',\n Kotlin16 = 'kotlin-1.6',\n Kotlin18 = 'kotlin-1.8',\n Kotlin19 = 'kotlin-1.9',\n Cpp17 = 'cpp-17',\n Cpp20 = 'cpp-20',\n Bun10 = 'bun-1.0',\n Go123 = 'go-1.23',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/runtime.mjs b/node_modules/node-appwrite/dist/enums/runtime.mjs new file mode 100644 index 0000000..67879b6 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/runtime.mjs @@ -0,0 +1,54 @@ +// src/enums/runtime.ts +var Runtime = /* @__PURE__ */ ((Runtime2) => { + Runtime2["Node145"] = "node-14.5"; + Runtime2["Node160"] = "node-16.0"; + Runtime2["Node180"] = "node-18.0"; + Runtime2["Node190"] = "node-19.0"; + Runtime2["Node200"] = "node-20.0"; + Runtime2["Node210"] = "node-21.0"; + Runtime2["Php80"] = "php-8.0"; + Runtime2["Php81"] = "php-8.1"; + Runtime2["Php82"] = "php-8.2"; + Runtime2["Php83"] = "php-8.3"; + Runtime2["Ruby30"] = "ruby-3.0"; + Runtime2["Ruby31"] = "ruby-3.1"; + Runtime2["Ruby32"] = "ruby-3.2"; + Runtime2["Ruby33"] = "ruby-3.3"; + Runtime2["Python38"] = "python-3.8"; + Runtime2["Python39"] = "python-3.9"; + Runtime2["Python310"] = "python-3.10"; + Runtime2["Python311"] = "python-3.11"; + Runtime2["Python312"] = "python-3.12"; + Runtime2["Pythonml311"] = "python-ml-3.11"; + Runtime2["Deno140"] = "deno-1.40"; + Runtime2["Dart215"] = "dart-2.15"; + Runtime2["Dart216"] = "dart-2.16"; + Runtime2["Dart217"] = "dart-2.17"; + Runtime2["Dart218"] = "dart-2.18"; + Runtime2["Dart30"] = "dart-3.0"; + Runtime2["Dart31"] = "dart-3.1"; + Runtime2["Dart33"] = "dart-3.3"; + Runtime2["Dotnet31"] = "dotnet-3.1"; + Runtime2["Dotnet60"] = "dotnet-6.0"; + Runtime2["Dotnet70"] = "dotnet-7.0"; + Runtime2["Java80"] = "java-8.0"; + Runtime2["Java110"] = "java-11.0"; + Runtime2["Java170"] = "java-17.0"; + Runtime2["Java180"] = "java-18.0"; + Runtime2["Java210"] = "java-21.0"; + Runtime2["Swift55"] = "swift-5.5"; + Runtime2["Swift58"] = "swift-5.8"; + Runtime2["Swift59"] = "swift-5.9"; + Runtime2["Kotlin16"] = "kotlin-1.6"; + Runtime2["Kotlin18"] = "kotlin-1.8"; + Runtime2["Kotlin19"] = "kotlin-1.9"; + Runtime2["Cpp17"] = "cpp-17"; + Runtime2["Cpp20"] = "cpp-20"; + Runtime2["Bun10"] = "bun-1.0"; + Runtime2["Go123"] = "go-1.23"; + return Runtime2; +})(Runtime || {}); + +export { Runtime }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=runtime.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/runtime.mjs.map b/node_modules/node-appwrite/dist/enums/runtime.mjs.map new file mode 100644 index 0000000..bc23a1b --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/runtime.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/runtime.ts"],"names":["Runtime"],"mappings":";AAAO,IAAK,UAAL,kBAAKA,aAAL;AACH,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,eAAY;AACZ,EAAAA,SAAA,eAAY;AACZ,EAAAA,SAAA,eAAY;AACZ,EAAAA,SAAA,iBAAc;AACd,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,WAAQ;AACR,EAAAA,SAAA,WAAQ;AA9CA,SAAAA;AAAA,GAAA","sourcesContent":["export enum Runtime {\n Node145 = 'node-14.5',\n Node160 = 'node-16.0',\n Node180 = 'node-18.0',\n Node190 = 'node-19.0',\n Node200 = 'node-20.0',\n Node210 = 'node-21.0',\n Php80 = 'php-8.0',\n Php81 = 'php-8.1',\n Php82 = 'php-8.2',\n Php83 = 'php-8.3',\n Ruby30 = 'ruby-3.0',\n Ruby31 = 'ruby-3.1',\n Ruby32 = 'ruby-3.2',\n Ruby33 = 'ruby-3.3',\n Python38 = 'python-3.8',\n Python39 = 'python-3.9',\n Python310 = 'python-3.10',\n Python311 = 'python-3.11',\n Python312 = 'python-3.12',\n Pythonml311 = 'python-ml-3.11',\n Deno140 = 'deno-1.40',\n Dart215 = 'dart-2.15',\n Dart216 = 'dart-2.16',\n Dart217 = 'dart-2.17',\n Dart218 = 'dart-2.18',\n Dart30 = 'dart-3.0',\n Dart31 = 'dart-3.1',\n Dart33 = 'dart-3.3',\n Dotnet31 = 'dotnet-3.1',\n Dotnet60 = 'dotnet-6.0',\n Dotnet70 = 'dotnet-7.0',\n Java80 = 'java-8.0',\n Java110 = 'java-11.0',\n Java170 = 'java-17.0',\n Java180 = 'java-18.0',\n Java210 = 'java-21.0',\n Swift55 = 'swift-5.5',\n Swift58 = 'swift-5.8',\n Swift59 = 'swift-5.9',\n Kotlin16 = 'kotlin-1.6',\n Kotlin18 = 'kotlin-1.8',\n Kotlin19 = 'kotlin-1.9',\n Cpp17 = 'cpp-17',\n Cpp20 = 'cpp-20',\n Bun10 = 'bun-1.0',\n Go123 = 'go-1.23',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/smtp-encryption.d.mts b/node_modules/node-appwrite/dist/enums/smtp-encryption.d.mts new file mode 100644 index 0000000..a96dd76 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/smtp-encryption.d.mts @@ -0,0 +1,7 @@ +declare enum SmtpEncryption { + None = "none", + Ssl = "ssl", + Tls = "tls" +} + +export { SmtpEncryption }; diff --git a/node_modules/node-appwrite/dist/enums/smtp-encryption.d.ts b/node_modules/node-appwrite/dist/enums/smtp-encryption.d.ts new file mode 100644 index 0000000..a96dd76 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/smtp-encryption.d.ts @@ -0,0 +1,7 @@ +declare enum SmtpEncryption { + None = "none", + Ssl = "ssl", + Tls = "tls" +} + +export { SmtpEncryption }; diff --git a/node_modules/node-appwrite/dist/enums/smtp-encryption.js b/node_modules/node-appwrite/dist/enums/smtp-encryption.js new file mode 100644 index 0000000..6ef7707 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/smtp-encryption.js @@ -0,0 +1,12 @@ +'use strict'; + +var SmtpEncryption = /* @__PURE__ */ ((SmtpEncryption2) => { + SmtpEncryption2["None"] = "none"; + SmtpEncryption2["Ssl"] = "ssl"; + SmtpEncryption2["Tls"] = "tls"; + return SmtpEncryption2; +})(SmtpEncryption || {}); + +exports.SmtpEncryption = SmtpEncryption; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=smtp-encryption.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/smtp-encryption.js.map b/node_modules/node-appwrite/dist/enums/smtp-encryption.js.map new file mode 100644 index 0000000..9e2ac01 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/smtp-encryption.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/smtp-encryption.ts"],"names":["SmtpEncryption"],"mappings":"AAAO,IAAK,iBAAL,kBAAKA,oBAAL;AACH,EAAAA,gBAAA,UAAO;AACP,EAAAA,gBAAA,SAAM;AACN,EAAAA,gBAAA,SAAM;AAHE,SAAAA;AAAA,GAAA","sourcesContent":["export enum SmtpEncryption {\n None = 'none',\n Ssl = 'ssl',\n Tls = 'tls',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/smtp-encryption.mjs b/node_modules/node-appwrite/dist/enums/smtp-encryption.mjs new file mode 100644 index 0000000..0e7100b --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/smtp-encryption.mjs @@ -0,0 +1,11 @@ +// src/enums/smtp-encryption.ts +var SmtpEncryption = /* @__PURE__ */ ((SmtpEncryption2) => { + SmtpEncryption2["None"] = "none"; + SmtpEncryption2["Ssl"] = "ssl"; + SmtpEncryption2["Tls"] = "tls"; + return SmtpEncryption2; +})(SmtpEncryption || {}); + +export { SmtpEncryption }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=smtp-encryption.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/enums/smtp-encryption.mjs.map b/node_modules/node-appwrite/dist/enums/smtp-encryption.mjs.map new file mode 100644 index 0000000..617f1e2 --- /dev/null +++ b/node_modules/node-appwrite/dist/enums/smtp-encryption.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/enums/smtp-encryption.ts"],"names":["SmtpEncryption"],"mappings":";AAAO,IAAK,iBAAL,kBAAKA,oBAAL;AACH,EAAAA,gBAAA,UAAO;AACP,EAAAA,gBAAA,SAAM;AACN,EAAAA,gBAAA,SAAM;AAHE,SAAAA;AAAA,GAAA","sourcesContent":["export enum SmtpEncryption {\n None = 'none',\n Ssl = 'ssl',\n Tls = 'tls',\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/id.d.mts b/node_modules/node-appwrite/dist/id.d.mts new file mode 100644 index 0000000..66e47d1 --- /dev/null +++ b/node_modules/node-appwrite/dist/id.d.mts @@ -0,0 +1,22 @@ +/** + * Helper class to generate ID strings for resources. + */ +declare class ID { + #private; + /** + * Uses the provided ID as the ID for the resource. + * + * @param {string} id + * @returns {string} + */ + static custom(id: string): string; + /** + * Have Appwrite generate a unique ID for you. + * + * @param {number} padding. Default is 7. + * @returns {string} + */ + static unique(padding?: number): string; +} + +export { ID }; diff --git a/node_modules/node-appwrite/dist/id.d.ts b/node_modules/node-appwrite/dist/id.d.ts new file mode 100644 index 0000000..66e47d1 --- /dev/null +++ b/node_modules/node-appwrite/dist/id.d.ts @@ -0,0 +1,22 @@ +/** + * Helper class to generate ID strings for resources. + */ +declare class ID { + #private; + /** + * Uses the provided ID as the ID for the resource. + * + * @param {string} id + * @returns {string} + */ + static custom(id: string): string; + /** + * Have Appwrite generate a unique ID for you. + * + * @param {number} padding. Default is 7. + * @returns {string} + */ + static unique(padding?: number): string; +} + +export { ID }; diff --git a/node_modules/node-appwrite/dist/id.js b/node_modules/node-appwrite/dist/id.js new file mode 100644 index 0000000..e2bb7cb --- /dev/null +++ b/node_modules/node-appwrite/dist/id.js @@ -0,0 +1,45 @@ +'use strict'; + +class ID { + /** + * Generate an hex ID based on timestamp. + * Recreated from https://www.php.net/manual/en/function.uniqid.php + * + * @returns {string} + */ + static #hexTimestamp() { + const now = /* @__PURE__ */ new Date(); + const sec = Math.floor(now.getTime() / 1e3); + const msec = now.getMilliseconds(); + const hexTimestamp = sec.toString(16) + msec.toString(16).padStart(5, "0"); + return hexTimestamp; + } + /** + * Uses the provided ID as the ID for the resource. + * + * @param {string} id + * @returns {string} + */ + static custom(id) { + return id; + } + /** + * Have Appwrite generate a unique ID for you. + * + * @param {number} padding. Default is 7. + * @returns {string} + */ + static unique(padding = 7) { + const baseId = ID.#hexTimestamp(); + let randomPadding = ""; + for (let i = 0; i < padding; i++) { + const randomHexDigit = Math.floor(Math.random() * 16).toString(16); + randomPadding += randomHexDigit; + } + return baseId + randomPadding; + } +} + +exports.ID = ID; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=id.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/id.js.map b/node_modules/node-appwrite/dist/id.js.map new file mode 100644 index 0000000..1729c31 --- /dev/null +++ b/node_modules/node-appwrite/dist/id.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/id.ts"],"names":[],"mappings":"AAGO,MAAM,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOZ,OAAO,gBAAwB;AAC3B,UAAM,MAAM,oBAAI,KAAK;AACrB,UAAM,MAAM,KAAK,MAAM,IAAI,QAAQ,IAAI,GAAI;AAC3C,UAAM,OAAO,IAAI,gBAAgB;AAGjC,UAAM,eAAe,IAAI,SAAS,EAAE,IAAI,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AACzE,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAc,OAAO,IAAoB;AACrC,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAc,OAAO,UAAkB,GAAW;AAE9C,UAAM,SAAS,GAAG,cAAc;AAChC,QAAI,gBAAgB;AACpB,aAAS,IAAI,GAAG,IAAI,SAAS,KAAK;AAC9B,YAAM,iBAAiB,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE,EAAE,SAAS,EAAE;AACjE,uBAAiB;AAAA,IACrB;AACA,WAAO,SAAS;AAAA,EACpB;AACJ","sourcesContent":["/**\n * Helper class to generate ID strings for resources.\n */\nexport class ID {\n /**\n * Generate an hex ID based on timestamp.\n * Recreated from https://www.php.net/manual/en/function.uniqid.php\n *\n * @returns {string}\n */\n static #hexTimestamp(): string {\n const now = new Date();\n const sec = Math.floor(now.getTime() / 1000);\n const msec = now.getMilliseconds();\n\n // Convert to hexadecimal\n const hexTimestamp = sec.toString(16) + msec.toString(16).padStart(5, '0');\n return hexTimestamp;\n }\n\n /**\n * Uses the provided ID as the ID for the resource.\n *\n * @param {string} id\n * @returns {string}\n */\n public static custom(id: string): string {\n return id\n }\n\n /**\n * Have Appwrite generate a unique ID for you.\n * \n * @param {number} padding. Default is 7.\n * @returns {string}\n */\n public static unique(padding: number = 7): string {\n // Generate a unique ID with padding to have a longer ID\n const baseId = ID.#hexTimestamp();\n let randomPadding = '';\n for (let i = 0; i < padding; i++) {\n const randomHexDigit = Math.floor(Math.random() * 16).toString(16);\n randomPadding += randomHexDigit;\n }\n return baseId + randomPadding;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/id.mjs b/node_modules/node-appwrite/dist/id.mjs new file mode 100644 index 0000000..7c6abf5 --- /dev/null +++ b/node_modules/node-appwrite/dist/id.mjs @@ -0,0 +1,44 @@ +// src/id.ts +var ID = class _ID { + /** + * Generate an hex ID based on timestamp. + * Recreated from https://www.php.net/manual/en/function.uniqid.php + * + * @returns {string} + */ + static #hexTimestamp() { + const now = /* @__PURE__ */ new Date(); + const sec = Math.floor(now.getTime() / 1e3); + const msec = now.getMilliseconds(); + const hexTimestamp = sec.toString(16) + msec.toString(16).padStart(5, "0"); + return hexTimestamp; + } + /** + * Uses the provided ID as the ID for the resource. + * + * @param {string} id + * @returns {string} + */ + static custom(id) { + return id; + } + /** + * Have Appwrite generate a unique ID for you. + * + * @param {number} padding. Default is 7. + * @returns {string} + */ + static unique(padding = 7) { + const baseId = _ID.#hexTimestamp(); + let randomPadding = ""; + for (let i = 0; i < padding; i++) { + const randomHexDigit = Math.floor(Math.random() * 16).toString(16); + randomPadding += randomHexDigit; + } + return baseId + randomPadding; + } +}; + +export { ID }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=id.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/id.mjs.map b/node_modules/node-appwrite/dist/id.mjs.map new file mode 100644 index 0000000..1914bc4 --- /dev/null +++ b/node_modules/node-appwrite/dist/id.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/id.ts"],"names":[],"mappings":";AAGO,IAAM,KAAN,MAAM,IAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOZ,OAAO,gBAAwB;AAC3B,UAAM,MAAM,oBAAI,KAAK;AACrB,UAAM,MAAM,KAAK,MAAM,IAAI,QAAQ,IAAI,GAAI;AAC3C,UAAM,OAAO,IAAI,gBAAgB;AAGjC,UAAM,eAAe,IAAI,SAAS,EAAE,IAAI,KAAK,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AACzE,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAc,OAAO,IAAoB;AACrC,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAc,OAAO,UAAkB,GAAW;AAE9C,UAAM,SAAS,IAAG,cAAc;AAChC,QAAI,gBAAgB;AACpB,aAAS,IAAI,GAAG,IAAI,SAAS,KAAK;AAC9B,YAAM,iBAAiB,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE,EAAE,SAAS,EAAE;AACjE,uBAAiB;AAAA,IACrB;AACA,WAAO,SAAS;AAAA,EACpB;AACJ","sourcesContent":["/**\n * Helper class to generate ID strings for resources.\n */\nexport class ID {\n /**\n * Generate an hex ID based on timestamp.\n * Recreated from https://www.php.net/manual/en/function.uniqid.php\n *\n * @returns {string}\n */\n static #hexTimestamp(): string {\n const now = new Date();\n const sec = Math.floor(now.getTime() / 1000);\n const msec = now.getMilliseconds();\n\n // Convert to hexadecimal\n const hexTimestamp = sec.toString(16) + msec.toString(16).padStart(5, '0');\n return hexTimestamp;\n }\n\n /**\n * Uses the provided ID as the ID for the resource.\n *\n * @param {string} id\n * @returns {string}\n */\n public static custom(id: string): string {\n return id\n }\n\n /**\n * Have Appwrite generate a unique ID for you.\n * \n * @param {number} padding. Default is 7.\n * @returns {string}\n */\n public static unique(padding: number = 7): string {\n // Generate a unique ID with padding to have a longer ID\n const baseId = ID.#hexTimestamp();\n let randomPadding = '';\n for (let i = 0; i < padding; i++) {\n const randomHexDigit = Math.floor(Math.random() * 16).toString(16);\n randomPadding += randomHexDigit;\n }\n return baseId + randomPadding;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/index.d.mts b/node_modules/node-appwrite/dist/index.d.mts new file mode 100644 index 0000000..29cb600 --- /dev/null +++ b/node_modules/node-appwrite/dist/index.d.mts @@ -0,0 +1,35 @@ +export { AppwriteException, Client, Payload, UploadProgress } from './client.mjs'; +export { Account } from './services/account.mjs'; +export { Avatars } from './services/avatars.mjs'; +export { Databases } from './services/databases.mjs'; +export { Functions } from './services/functions.mjs'; +export { Graphql } from './services/graphql.mjs'; +export { Health } from './services/health.mjs'; +export { Locale } from './services/locale.mjs'; +export { Messaging } from './services/messaging.mjs'; +export { Storage } from './services/storage.mjs'; +export { Teams } from './services/teams.mjs'; +export { Users } from './services/users.mjs'; +export { Query, QueryTypes, QueryTypesList } from './query.mjs'; +export { Permission } from './permission.mjs'; +export { Role } from './role.mjs'; +export { ID } from './id.mjs'; +export { AuthenticatorType } from './enums/authenticator-type.mjs'; +export { AuthenticationFactor } from './enums/authentication-factor.mjs'; +export { OAuthProvider } from './enums/o-auth-provider.mjs'; +export { Browser } from './enums/browser.mjs'; +export { CreditCard } from './enums/credit-card.mjs'; +export { Flag } from './enums/flag.mjs'; +export { RelationshipType } from './enums/relationship-type.mjs'; +export { RelationMutate } from './enums/relation-mutate.mjs'; +export { IndexType } from './enums/index-type.mjs'; +export { Runtime } from './enums/runtime.mjs'; +export { ExecutionMethod } from './enums/execution-method.mjs'; +export { Name } from './enums/name.mjs'; +export { SmtpEncryption } from './enums/smtp-encryption.mjs'; +export { Compression } from './enums/compression.mjs'; +export { ImageGravity } from './enums/image-gravity.mjs'; +export { ImageFormat } from './enums/image-format.mjs'; +export { PasswordHash } from './enums/password-hash.mjs'; +export { MessagingProviderType } from './enums/messaging-provider-type.mjs'; +export { Models } from './models.mjs'; diff --git a/node_modules/node-appwrite/dist/index.d.ts b/node_modules/node-appwrite/dist/index.d.ts new file mode 100644 index 0000000..80f417a --- /dev/null +++ b/node_modules/node-appwrite/dist/index.d.ts @@ -0,0 +1,35 @@ +export { AppwriteException, Client, Payload, UploadProgress } from './client.js'; +export { Account } from './services/account.js'; +export { Avatars } from './services/avatars.js'; +export { Databases } from './services/databases.js'; +export { Functions } from './services/functions.js'; +export { Graphql } from './services/graphql.js'; +export { Health } from './services/health.js'; +export { Locale } from './services/locale.js'; +export { Messaging } from './services/messaging.js'; +export { Storage } from './services/storage.js'; +export { Teams } from './services/teams.js'; +export { Users } from './services/users.js'; +export { Query, QueryTypes, QueryTypesList } from './query.js'; +export { Permission } from './permission.js'; +export { Role } from './role.js'; +export { ID } from './id.js'; +export { AuthenticatorType } from './enums/authenticator-type.js'; +export { AuthenticationFactor } from './enums/authentication-factor.js'; +export { OAuthProvider } from './enums/o-auth-provider.js'; +export { Browser } from './enums/browser.js'; +export { CreditCard } from './enums/credit-card.js'; +export { Flag } from './enums/flag.js'; +export { RelationshipType } from './enums/relationship-type.js'; +export { RelationMutate } from './enums/relation-mutate.js'; +export { IndexType } from './enums/index-type.js'; +export { Runtime } from './enums/runtime.js'; +export { ExecutionMethod } from './enums/execution-method.js'; +export { Name } from './enums/name.js'; +export { SmtpEncryption } from './enums/smtp-encryption.js'; +export { Compression } from './enums/compression.js'; +export { ImageGravity } from './enums/image-gravity.js'; +export { ImageFormat } from './enums/image-format.js'; +export { PasswordHash } from './enums/password-hash.js'; +export { MessagingProviderType } from './enums/messaging-provider-type.js'; +export { Models } from './models.js'; diff --git a/node_modules/node-appwrite/dist/index.js b/node_modules/node-appwrite/dist/index.js new file mode 100644 index 0000000..b057fa1 --- /dev/null +++ b/node_modules/node-appwrite/dist/index.js @@ -0,0 +1,180 @@ +'use strict'; + +var client = require('./client'); +var account = require('./services/account'); +var avatars = require('./services/avatars'); +var databases = require('./services/databases'); +var functions = require('./services/functions'); +var graphql = require('./services/graphql'); +var health = require('./services/health'); +var locale = require('./services/locale'); +var messaging = require('./services/messaging'); +var storage = require('./services/storage'); +var teams = require('./services/teams'); +var users = require('./services/users'); +var permission = require('./permission'); +var role = require('./role'); +var id = require('./id'); +var authenticatorType = require('./enums/authenticator-type'); +var authenticationFactor = require('./enums/authentication-factor'); +var oAuthProvider = require('./enums/o-auth-provider'); +var browser = require('./enums/browser'); +var creditCard = require('./enums/credit-card'); +var flag = require('./enums/flag'); +var relationshipType = require('./enums/relationship-type'); +var relationMutate = require('./enums/relation-mutate'); +var indexType = require('./enums/index-type'); +var runtime = require('./enums/runtime'); +var executionMethod = require('./enums/execution-method'); +var name = require('./enums/name'); +var smtpEncryption = require('./enums/smtp-encryption'); +var compression = require('./enums/compression'); +var imageGravity = require('./enums/image-gravity'); +var imageFormat = require('./enums/image-format'); +var passwordHash = require('./enums/password-hash'); +var messagingProviderType = require('./enums/messaging-provider-type'); + + + +Object.defineProperty(exports, 'AppwriteException', { + enumerable: true, + get: function () { return client.AppwriteException; } +}); +Object.defineProperty(exports, 'Client', { + enumerable: true, + get: function () { return client.Client; } +}); +Object.defineProperty(exports, 'Query', { + enumerable: true, + get: function () { return client.Query; } +}); +Object.defineProperty(exports, 'Account', { + enumerable: true, + get: function () { return account.Account; } +}); +Object.defineProperty(exports, 'Avatars', { + enumerable: true, + get: function () { return avatars.Avatars; } +}); +Object.defineProperty(exports, 'Databases', { + enumerable: true, + get: function () { return databases.Databases; } +}); +Object.defineProperty(exports, 'Functions', { + enumerable: true, + get: function () { return functions.Functions; } +}); +Object.defineProperty(exports, 'Graphql', { + enumerable: true, + get: function () { return graphql.Graphql; } +}); +Object.defineProperty(exports, 'Health', { + enumerable: true, + get: function () { return health.Health; } +}); +Object.defineProperty(exports, 'Locale', { + enumerable: true, + get: function () { return locale.Locale; } +}); +Object.defineProperty(exports, 'Messaging', { + enumerable: true, + get: function () { return messaging.Messaging; } +}); +Object.defineProperty(exports, 'Storage', { + enumerable: true, + get: function () { return storage.Storage; } +}); +Object.defineProperty(exports, 'Teams', { + enumerable: true, + get: function () { return teams.Teams; } +}); +Object.defineProperty(exports, 'Users', { + enumerable: true, + get: function () { return users.Users; } +}); +Object.defineProperty(exports, 'Permission', { + enumerable: true, + get: function () { return permission.Permission; } +}); +Object.defineProperty(exports, 'Role', { + enumerable: true, + get: function () { return role.Role; } +}); +Object.defineProperty(exports, 'ID', { + enumerable: true, + get: function () { return id.ID; } +}); +Object.defineProperty(exports, 'AuthenticatorType', { + enumerable: true, + get: function () { return authenticatorType.AuthenticatorType; } +}); +Object.defineProperty(exports, 'AuthenticationFactor', { + enumerable: true, + get: function () { return authenticationFactor.AuthenticationFactor; } +}); +Object.defineProperty(exports, 'OAuthProvider', { + enumerable: true, + get: function () { return oAuthProvider.OAuthProvider; } +}); +Object.defineProperty(exports, 'Browser', { + enumerable: true, + get: function () { return browser.Browser; } +}); +Object.defineProperty(exports, 'CreditCard', { + enumerable: true, + get: function () { return creditCard.CreditCard; } +}); +Object.defineProperty(exports, 'Flag', { + enumerable: true, + get: function () { return flag.Flag; } +}); +Object.defineProperty(exports, 'RelationshipType', { + enumerable: true, + get: function () { return relationshipType.RelationshipType; } +}); +Object.defineProperty(exports, 'RelationMutate', { + enumerable: true, + get: function () { return relationMutate.RelationMutate; } +}); +Object.defineProperty(exports, 'IndexType', { + enumerable: true, + get: function () { return indexType.IndexType; } +}); +Object.defineProperty(exports, 'Runtime', { + enumerable: true, + get: function () { return runtime.Runtime; } +}); +Object.defineProperty(exports, 'ExecutionMethod', { + enumerable: true, + get: function () { return executionMethod.ExecutionMethod; } +}); +Object.defineProperty(exports, 'Name', { + enumerable: true, + get: function () { return name.Name; } +}); +Object.defineProperty(exports, 'SmtpEncryption', { + enumerable: true, + get: function () { return smtpEncryption.SmtpEncryption; } +}); +Object.defineProperty(exports, 'Compression', { + enumerable: true, + get: function () { return compression.Compression; } +}); +Object.defineProperty(exports, 'ImageGravity', { + enumerable: true, + get: function () { return imageGravity.ImageGravity; } +}); +Object.defineProperty(exports, 'ImageFormat', { + enumerable: true, + get: function () { return imageFormat.ImageFormat; } +}); +Object.defineProperty(exports, 'PasswordHash', { + enumerable: true, + get: function () { return passwordHash.PasswordHash; } +}); +Object.defineProperty(exports, 'MessagingProviderType', { + enumerable: true, + get: function () { return messagingProviderType.MessagingProviderType; } +}); +//# sourceMappingURL=out.js.map +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/index.js.map b/node_modules/node-appwrite/dist/index.js.map new file mode 100644 index 0000000..1d7cf45 --- /dev/null +++ b/node_modules/node-appwrite/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"AAAA,SAAS,QAAQ,OAAO,yBAAyB;AACjD,SAAS,eAAe;AACxB,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AACxB,SAAS,cAAc;AACvB,SAAS,cAAc;AACvB,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AACxB,SAAS,aAAa;AACtB,SAAS,aAAa;AAGtB,SAAS,kBAAkB;AAC3B,SAAS,YAAY;AACrB,SAAS,UAAU;AACnB,SAAS,yBAAyB;AAClC,SAAS,4BAA4B;AACrC,SAAS,qBAAqB;AAC9B,SAAS,eAAe;AACxB,SAAS,kBAAkB;AAC3B,SAAS,YAAY;AACrB,SAAS,wBAAwB;AACjC,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AACxB,SAAS,uBAAuB;AAChC,SAAS,YAAY;AACrB,SAAS,sBAAsB;AAC/B,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,6BAA6B","sourcesContent":["export { Client, Query, AppwriteException } from './client';\nexport { Account } from './services/account';\nexport { Avatars } from './services/avatars';\nexport { Databases } from './services/databases';\nexport { Functions } from './services/functions';\nexport { Graphql } from './services/graphql';\nexport { Health } from './services/health';\nexport { Locale } from './services/locale';\nexport { Messaging } from './services/messaging';\nexport { Storage } from './services/storage';\nexport { Teams } from './services/teams';\nexport { Users } from './services/users';\nexport type { Models, Payload, UploadProgress } from './client';\nexport type { QueryTypes, QueryTypesList } from './query';\nexport { Permission } from './permission';\nexport { Role } from './role';\nexport { ID } from './id';\nexport { AuthenticatorType } from './enums/authenticator-type';\nexport { AuthenticationFactor } from './enums/authentication-factor';\nexport { OAuthProvider } from './enums/o-auth-provider';\nexport { Browser } from './enums/browser';\nexport { CreditCard } from './enums/credit-card';\nexport { Flag } from './enums/flag';\nexport { RelationshipType } from './enums/relationship-type';\nexport { RelationMutate } from './enums/relation-mutate';\nexport { IndexType } from './enums/index-type';\nexport { Runtime } from './enums/runtime';\nexport { ExecutionMethod } from './enums/execution-method';\nexport { Name } from './enums/name';\nexport { SmtpEncryption } from './enums/smtp-encryption';\nexport { Compression } from './enums/compression';\nexport { ImageGravity } from './enums/image-gravity';\nexport { ImageFormat } from './enums/image-format';\nexport { PasswordHash } from './enums/password-hash';\nexport { MessagingProviderType } from './enums/messaging-provider-type';\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/index.mjs b/node_modules/node-appwrite/dist/index.mjs new file mode 100644 index 0000000..8acce19 --- /dev/null +++ b/node_modules/node-appwrite/dist/index.mjs @@ -0,0 +1,35 @@ +export { AppwriteException, Client, Query } from './client.mjs'; +export { Account } from './services/account.mjs'; +export { Avatars } from './services/avatars.mjs'; +export { Databases } from './services/databases.mjs'; +export { Functions } from './services/functions.mjs'; +export { Graphql } from './services/graphql.mjs'; +export { Health } from './services/health.mjs'; +export { Locale } from './services/locale.mjs'; +export { Messaging } from './services/messaging.mjs'; +export { Storage } from './services/storage.mjs'; +export { Teams } from './services/teams.mjs'; +export { Users } from './services/users.mjs'; +export { Permission } from './permission.mjs'; +export { Role } from './role.mjs'; +export { ID } from './id.mjs'; +export { AuthenticatorType } from './enums/authenticator-type.mjs'; +export { AuthenticationFactor } from './enums/authentication-factor.mjs'; +export { OAuthProvider } from './enums/o-auth-provider.mjs'; +export { Browser } from './enums/browser.mjs'; +export { CreditCard } from './enums/credit-card.mjs'; +export { Flag } from './enums/flag.mjs'; +export { RelationshipType } from './enums/relationship-type.mjs'; +export { RelationMutate } from './enums/relation-mutate.mjs'; +export { IndexType } from './enums/index-type.mjs'; +export { Runtime } from './enums/runtime.mjs'; +export { ExecutionMethod } from './enums/execution-method.mjs'; +export { Name } from './enums/name.mjs'; +export { SmtpEncryption } from './enums/smtp-encryption.mjs'; +export { Compression } from './enums/compression.mjs'; +export { ImageGravity } from './enums/image-gravity.mjs'; +export { ImageFormat } from './enums/image-format.mjs'; +export { PasswordHash } from './enums/password-hash.mjs'; +export { MessagingProviderType } from './enums/messaging-provider-type.mjs'; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=index.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/index.mjs.map b/node_modules/node-appwrite/dist/index.mjs.map new file mode 100644 index 0000000..d2a502f --- /dev/null +++ b/node_modules/node-appwrite/dist/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";AAAA,SAAS,QAAQ,OAAO,yBAAyB;AACjD,SAAS,eAAe;AACxB,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AACxB,SAAS,cAAc;AACvB,SAAS,cAAc;AACvB,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AACxB,SAAS,aAAa;AACtB,SAAS,aAAa;AAGtB,SAAS,kBAAkB;AAC3B,SAAS,YAAY;AACrB,SAAS,UAAU;AACnB,SAAS,yBAAyB;AAClC,SAAS,4BAA4B;AACrC,SAAS,qBAAqB;AAC9B,SAAS,eAAe;AACxB,SAAS,kBAAkB;AAC3B,SAAS,YAAY;AACrB,SAAS,wBAAwB;AACjC,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AACxB,SAAS,uBAAuB;AAChC,SAAS,YAAY;AACrB,SAAS,sBAAsB;AAC/B,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAC7B,SAAS,6BAA6B","sourcesContent":["export { Client, Query, AppwriteException } from './client';\nexport { Account } from './services/account';\nexport { Avatars } from './services/avatars';\nexport { Databases } from './services/databases';\nexport { Functions } from './services/functions';\nexport { Graphql } from './services/graphql';\nexport { Health } from './services/health';\nexport { Locale } from './services/locale';\nexport { Messaging } from './services/messaging';\nexport { Storage } from './services/storage';\nexport { Teams } from './services/teams';\nexport { Users } from './services/users';\nexport type { Models, Payload, UploadProgress } from './client';\nexport type { QueryTypes, QueryTypesList } from './query';\nexport { Permission } from './permission';\nexport { Role } from './role';\nexport { ID } from './id';\nexport { AuthenticatorType } from './enums/authenticator-type';\nexport { AuthenticationFactor } from './enums/authentication-factor';\nexport { OAuthProvider } from './enums/o-auth-provider';\nexport { Browser } from './enums/browser';\nexport { CreditCard } from './enums/credit-card';\nexport { Flag } from './enums/flag';\nexport { RelationshipType } from './enums/relationship-type';\nexport { RelationMutate } from './enums/relation-mutate';\nexport { IndexType } from './enums/index-type';\nexport { Runtime } from './enums/runtime';\nexport { ExecutionMethod } from './enums/execution-method';\nexport { Name } from './enums/name';\nexport { SmtpEncryption } from './enums/smtp-encryption';\nexport { Compression } from './enums/compression';\nexport { ImageGravity } from './enums/image-gravity';\nexport { ImageFormat } from './enums/image-format';\nexport { PasswordHash } from './enums/password-hash';\nexport { MessagingProviderType } from './enums/messaging-provider-type';\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/inputFile.d.mts b/node_modules/node-appwrite/dist/inputFile.d.mts new file mode 100644 index 0000000..dea1427 --- /dev/null +++ b/node_modules/node-appwrite/dist/inputFile.d.mts @@ -0,0 +1,9 @@ +import { BinaryLike } from 'crypto'; + +declare class InputFile { + static fromBuffer(parts: Blob | BinaryLike, name: string): File; + static fromPath(path: string, name: string): File; + static fromPlainText(content: string, name: string): File; +} + +export { InputFile }; diff --git a/node_modules/node-appwrite/dist/inputFile.d.ts b/node_modules/node-appwrite/dist/inputFile.d.ts new file mode 100644 index 0000000..dea1427 --- /dev/null +++ b/node_modules/node-appwrite/dist/inputFile.d.ts @@ -0,0 +1,9 @@ +import { BinaryLike } from 'crypto'; + +declare class InputFile { + static fromBuffer(parts: Blob | BinaryLike, name: string): File; + static fromPath(path: string, name: string): File; + static fromPlainText(content: string, name: string): File; +} + +export { InputFile }; diff --git a/node_modules/node-appwrite/dist/inputFile.js b/node_modules/node-appwrite/dist/inputFile.js new file mode 100644 index 0000000..3e4578e --- /dev/null +++ b/node_modules/node-appwrite/dist/inputFile.js @@ -0,0 +1,23 @@ +'use strict'; + +var nodeFetchNativeWithAgent = require('node-fetch-native-with-agent'); +var fs = require('fs'); + +class InputFile { + static fromBuffer(parts, name) { + return new nodeFetchNativeWithAgent.File([parts], name); + } + static fromPath(path, name) { + const realPath = fs.realpathSync(path); + const contents = fs.readFileSync(realPath); + return this.fromBuffer(contents, name); + } + static fromPlainText(content, name) { + const arrayBytes = new TextEncoder().encode(content); + return this.fromBuffer(arrayBytes, name); + } +} + +exports.InputFile = InputFile; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=inputFile.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/inputFile.js.map b/node_modules/node-appwrite/dist/inputFile.js.map new file mode 100644 index 0000000..9f744b0 --- /dev/null +++ b/node_modules/node-appwrite/dist/inputFile.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/inputFile.ts"],"names":[],"mappings":"AAAA,SAAS,YAAY;AACrB,SAAS,cAAc,oBAAoB;AAGpC,MAAM,UAAU;AAAA,EACrB,OAAO,WACL,OACA,MACM;AACN,WAAO,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI;AAAA,EAC/B;AAAA,EAEA,OAAO,SAAS,MAAc,MAAoB;AAChD,UAAM,WAAW,aAAa,IAAI;AAClC,UAAM,WAAW,aAAa,QAAQ;AACtC,WAAO,KAAK,WAAW,UAAU,IAAI;AAAA,EACvC;AAAA,EAEA,OAAO,cAAc,SAAiB,MAAoB;AACxD,UAAM,aAAa,IAAI,YAAY,EAAE,OAAO,OAAO;AACnD,WAAO,KAAK,WAAW,YAAY,IAAI;AAAA,EACzC;AACF","sourcesContent":["import { File } from \"node-fetch-native-with-agent\";\nimport { realpathSync, readFileSync } from \"fs\";\nimport type { BinaryLike } from \"crypto\";\n\nexport class InputFile {\n static fromBuffer(\n parts: Blob | BinaryLike,\n name: string\n ): File {\n return new File([parts], name);\n }\n\n static fromPath(path: string, name: string): File {\n const realPath = realpathSync(path);\n const contents = readFileSync(realPath);\n return this.fromBuffer(contents, name);\n }\n\n static fromPlainText(content: string, name: string): File {\n const arrayBytes = new TextEncoder().encode(content);\n return this.fromBuffer(arrayBytes, name);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/inputFile.mjs b/node_modules/node-appwrite/dist/inputFile.mjs new file mode 100644 index 0000000..b9d7784 --- /dev/null +++ b/node_modules/node-appwrite/dist/inputFile.mjs @@ -0,0 +1,22 @@ +import { File } from 'node-fetch-native-with-agent'; +import { realpathSync, readFileSync } from 'fs'; + +// src/inputFile.ts +var InputFile = class { + static fromBuffer(parts, name) { + return new File([parts], name); + } + static fromPath(path, name) { + const realPath = realpathSync(path); + const contents = readFileSync(realPath); + return this.fromBuffer(contents, name); + } + static fromPlainText(content, name) { + const arrayBytes = new TextEncoder().encode(content); + return this.fromBuffer(arrayBytes, name); + } +}; + +export { InputFile }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=inputFile.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/inputFile.mjs.map b/node_modules/node-appwrite/dist/inputFile.mjs.map new file mode 100644 index 0000000..c874a64 --- /dev/null +++ b/node_modules/node-appwrite/dist/inputFile.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/inputFile.ts"],"names":[],"mappings":";AAAA,SAAS,YAAY;AACrB,SAAS,cAAc,oBAAoB;AAGpC,IAAM,YAAN,MAAgB;AAAA,EACrB,OAAO,WACL,OACA,MACM;AACN,WAAO,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI;AAAA,EAC/B;AAAA,EAEA,OAAO,SAAS,MAAc,MAAoB;AAChD,UAAM,WAAW,aAAa,IAAI;AAClC,UAAM,WAAW,aAAa,QAAQ;AACtC,WAAO,KAAK,WAAW,UAAU,IAAI;AAAA,EACvC;AAAA,EAEA,OAAO,cAAc,SAAiB,MAAoB;AACxD,UAAM,aAAa,IAAI,YAAY,EAAE,OAAO,OAAO;AACnD,WAAO,KAAK,WAAW,YAAY,IAAI;AAAA,EACzC;AACF","sourcesContent":["import { File } from \"node-fetch-native-with-agent\";\nimport { realpathSync, readFileSync } from \"fs\";\nimport type { BinaryLike } from \"crypto\";\n\nexport class InputFile {\n static fromBuffer(\n parts: Blob | BinaryLike,\n name: string\n ): File {\n return new File([parts], name);\n }\n\n static fromPath(path: string, name: string): File {\n const realPath = realpathSync(path);\n const contents = readFileSync(realPath);\n return this.fromBuffer(contents, name);\n }\n\n static fromPlainText(content: string, name: string): File {\n const arrayBytes = new TextEncoder().encode(content);\n return this.fromBuffer(arrayBytes, name);\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/models.d.mts b/node_modules/node-appwrite/dist/models.d.mts new file mode 100644 index 0000000..2517152 --- /dev/null +++ b/node_modules/node-appwrite/dist/models.d.mts @@ -0,0 +1,2512 @@ +/** + * Appwrite Models + */ +declare namespace Models { + /** + * Documents List + */ + type DocumentList = { + /** + * Total number of documents documents that matched your query. + */ + total: number; + /** + * List of documents. + */ + documents: Document[]; + }; + /** + * Collections List + */ + type CollectionList = { + /** + * Total number of collections documents that matched your query. + */ + total: number; + /** + * List of collections. + */ + collections: Collection[]; + }; + /** + * Databases List + */ + type DatabaseList = { + /** + * Total number of databases documents that matched your query. + */ + total: number; + /** + * List of databases. + */ + databases: Database[]; + }; + /** + * Indexes List + */ + type IndexList = { + /** + * Total number of indexes documents that matched your query. + */ + total: number; + /** + * List of indexes. + */ + indexes: Index[]; + }; + /** + * Users List + */ + type UserList = { + /** + * Total number of users documents that matched your query. + */ + total: number; + /** + * List of users. + */ + users: User[]; + }; + /** + * Sessions List + */ + type SessionList = { + /** + * Total number of sessions documents that matched your query. + */ + total: number; + /** + * List of sessions. + */ + sessions: Session[]; + }; + /** + * Identities List + */ + type IdentityList = { + /** + * Total number of identities documents that matched your query. + */ + total: number; + /** + * List of identities. + */ + identities: Identity[]; + }; + /** + * Logs List + */ + type LogList = { + /** + * Total number of logs documents that matched your query. + */ + total: number; + /** + * List of logs. + */ + logs: Log[]; + }; + /** + * Files List + */ + type FileList = { + /** + * Total number of files documents that matched your query. + */ + total: number; + /** + * List of files. + */ + files: File[]; + }; + /** + * Buckets List + */ + type BucketList = { + /** + * Total number of buckets documents that matched your query. + */ + total: number; + /** + * List of buckets. + */ + buckets: Bucket[]; + }; + /** + * Teams List + */ + type TeamList = { + /** + * Total number of teams documents that matched your query. + */ + total: number; + /** + * List of teams. + */ + teams: Team[]; + }; + /** + * Memberships List + */ + type MembershipList = { + /** + * Total number of memberships documents that matched your query. + */ + total: number; + /** + * List of memberships. + */ + memberships: Membership[]; + }; + /** + * Functions List + */ + type FunctionList = { + /** + * Total number of functions documents that matched your query. + */ + total: number; + /** + * List of functions. + */ + functions: Function[]; + }; + /** + * Runtimes List + */ + type RuntimeList = { + /** + * Total number of runtimes documents that matched your query. + */ + total: number; + /** + * List of runtimes. + */ + runtimes: Runtime[]; + }; + /** + * Deployments List + */ + type DeploymentList = { + /** + * Total number of deployments documents that matched your query. + */ + total: number; + /** + * List of deployments. + */ + deployments: Deployment[]; + }; + /** + * Executions List + */ + type ExecutionList = { + /** + * Total number of executions documents that matched your query. + */ + total: number; + /** + * List of executions. + */ + executions: Execution[]; + }; + /** + * Countries List + */ + type CountryList = { + /** + * Total number of countries documents that matched your query. + */ + total: number; + /** + * List of countries. + */ + countries: Country[]; + }; + /** + * Continents List + */ + type ContinentList = { + /** + * Total number of continents documents that matched your query. + */ + total: number; + /** + * List of continents. + */ + continents: Continent[]; + }; + /** + * Languages List + */ + type LanguageList = { + /** + * Total number of languages documents that matched your query. + */ + total: number; + /** + * List of languages. + */ + languages: Language[]; + }; + /** + * Currencies List + */ + type CurrencyList = { + /** + * Total number of currencies documents that matched your query. + */ + total: number; + /** + * List of currencies. + */ + currencies: Currency[]; + }; + /** + * Phones List + */ + type PhoneList = { + /** + * Total number of phones documents that matched your query. + */ + total: number; + /** + * List of phones. + */ + phones: Phone[]; + }; + /** + * Variables List + */ + type VariableList = { + /** + * Total number of variables documents that matched your query. + */ + total: number; + /** + * List of variables. + */ + variables: Variable[]; + }; + /** + * Locale codes list + */ + type LocaleCodeList = { + /** + * Total number of localeCodes documents that matched your query. + */ + total: number; + /** + * List of localeCodes. + */ + localeCodes: LocaleCode[]; + }; + /** + * Provider list + */ + type ProviderList = { + /** + * Total number of providers documents that matched your query. + */ + total: number; + /** + * List of providers. + */ + providers: Provider[]; + }; + /** + * Message list + */ + type MessageList = { + /** + * Total number of messages documents that matched your query. + */ + total: number; + /** + * List of messages. + */ + messages: Message[]; + }; + /** + * Topic list + */ + type TopicList = { + /** + * Total number of topics documents that matched your query. + */ + total: number; + /** + * List of topics. + */ + topics: Topic[]; + }; + /** + * Subscriber list + */ + type SubscriberList = { + /** + * Total number of subscribers documents that matched your query. + */ + total: number; + /** + * List of subscribers. + */ + subscribers: Subscriber[]; + }; + /** + * Target list + */ + type TargetList = { + /** + * Total number of targets documents that matched your query. + */ + total: number; + /** + * List of targets. + */ + targets: Target[]; + }; + /** + * Specifications List + */ + type SpecificationList = { + /** + * Total number of specifications documents that matched your query. + */ + total: number; + /** + * List of specifications. + */ + specifications: Specification[]; + }; + /** + * Database + */ + type Database = { + /** + * Database ID. + */ + $id: string; + /** + * Database name. + */ + name: string; + /** + * Database creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Database update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys. + */ + enabled: boolean; + }; + /** + * Collection + */ + type Collection = { + /** + * Collection ID. + */ + $id: string; + /** + * Collection creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Collection update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Collection permissions. [Learn more about permissions](https://appwrite.io/docs/permissions). + */ + $permissions: string[]; + /** + * Database ID. + */ + databaseId: string; + /** + * Collection name. + */ + name: string; + /** + * Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys. + */ + enabled: boolean; + /** + * Whether document-level permissions are enabled. [Learn more about permissions](https://appwrite.io/docs/permissions). + */ + documentSecurity: boolean; + /** + * Collection attributes. + */ + attributes: string[]; + /** + * Collection indexes. + */ + indexes: Index[]; + }; + /** + * Attributes List + */ + type AttributeList = { + /** + * Total number of attributes in the given collection. + */ + total: number; + /** + * List of attributes. + */ + attributes: string[]; + }; + /** + * AttributeString + */ + type AttributeString = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * Attribute size. + */ + size: number; + /** + * Default value for attribute when not provided. Cannot be set when attribute is required. + */ + default?: string; + }; + /** + * AttributeInteger + */ + type AttributeInteger = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * Minimum value to enforce for new documents. + */ + min?: number; + /** + * Maximum value to enforce for new documents. + */ + max?: number; + /** + * Default value for attribute when not provided. Cannot be set when attribute is required. + */ + default?: number; + }; + /** + * AttributeFloat + */ + type AttributeFloat = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * Minimum value to enforce for new documents. + */ + min?: number; + /** + * Maximum value to enforce for new documents. + */ + max?: number; + /** + * Default value for attribute when not provided. Cannot be set when attribute is required. + */ + default?: number; + }; + /** + * AttributeBoolean + */ + type AttributeBoolean = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * Default value for attribute when not provided. Cannot be set when attribute is required. + */ + default?: boolean; + }; + /** + * AttributeEmail + */ + type AttributeEmail = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * String format. + */ + format: string; + /** + * Default value for attribute when not provided. Cannot be set when attribute is required. + */ + default?: string; + }; + /** + * AttributeEnum + */ + type AttributeEnum = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * Array of elements in enumerated type. + */ + elements: string[]; + /** + * String format. + */ + format: string; + /** + * Default value for attribute when not provided. Cannot be set when attribute is required. + */ + default?: string; + }; + /** + * AttributeIP + */ + type AttributeIp = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * String format. + */ + format: string; + /** + * Default value for attribute when not provided. Cannot be set when attribute is required. + */ + default?: string; + }; + /** + * AttributeURL + */ + type AttributeUrl = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * String format. + */ + format: string; + /** + * Default value for attribute when not provided. Cannot be set when attribute is required. + */ + default?: string; + }; + /** + * AttributeDatetime + */ + type AttributeDatetime = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * ISO 8601 format. + */ + format: string; + /** + * Default value for attribute when not provided. Only null is optional + */ + default?: string; + }; + /** + * AttributeRelationship + */ + type AttributeRelationship = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * The ID of the related collection. + */ + relatedCollection: string; + /** + * The type of the relationship. + */ + relationType: string; + /** + * Is the relationship two-way? + */ + twoWay: boolean; + /** + * The key of the two-way relationship. + */ + twoWayKey: string; + /** + * How deleting the parent document will propagate to child documents. + */ + onDelete: string; + /** + * Whether this is the parent or child side of the relationship + */ + side: string; + }; + /** + * Index + */ + type Index = { + /** + * Index Key. + */ + key: string; + /** + * Index type. + */ + type: string; + /** + * Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an index. + */ + error: string; + /** + * Index attributes. + */ + attributes: string[]; + /** + * Index orders. + */ + orders?: string[]; + }; + /** + * Document + */ + type Document = { + /** + * Document ID. + */ + $id: string; + /** + * Collection ID. + */ + $collectionId: string; + /** + * Database ID. + */ + $databaseId: string; + /** + * Document creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Document update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Document permissions. [Learn more about permissions](https://appwrite.io/docs/permissions). + */ + $permissions: string[]; + [key: string]: any; + }; + /** + * Log + */ + type Log = { + /** + * Event name. + */ + event: string; + /** + * User ID. + */ + userId: string; + /** + * User Email. + */ + userEmail: string; + /** + * User Name. + */ + userName: string; + /** + * API mode when event triggered. + */ + mode: string; + /** + * IP session in use when the session was created. + */ + ip: string; + /** + * Log creation date in ISO 8601 format. + */ + time: string; + /** + * Operating system code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/os.json). + */ + osCode: string; + /** + * Operating system name. + */ + osName: string; + /** + * Operating system version. + */ + osVersion: string; + /** + * Client type. + */ + clientType: string; + /** + * Client code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/clients.json). + */ + clientCode: string; + /** + * Client name. + */ + clientName: string; + /** + * Client version. + */ + clientVersion: string; + /** + * Client engine name. + */ + clientEngine: string; + /** + * Client engine name. + */ + clientEngineVersion: string; + /** + * Device name. + */ + deviceName: string; + /** + * Device brand name. + */ + deviceBrand: string; + /** + * Device model name. + */ + deviceModel: string; + /** + * Country two-character ISO 3166-1 alpha code. + */ + countryCode: string; + /** + * Country name. + */ + countryName: string; + }; + /** + * User + */ + type User = { + /** + * User ID. + */ + $id: string; + /** + * User creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * User update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * User name. + */ + name: string; + /** + * Hashed user password. + */ + password?: string; + /** + * Password hashing algorithm. + */ + hash?: string; + /** + * Password hashing algorithm configuration. + */ + hashOptions?: object; + /** + * User registration date in ISO 8601 format. + */ + registration: string; + /** + * User status. Pass `true` for enabled and `false` for disabled. + */ + status: boolean; + /** + * Labels for the user. + */ + labels: string[]; + /** + * Password update time in ISO 8601 format. + */ + passwordUpdate: string; + /** + * User email address. + */ + email: string; + /** + * User phone number in E.164 format. + */ + phone: string; + /** + * Email verification status. + */ + emailVerification: boolean; + /** + * Phone verification status. + */ + phoneVerification: boolean; + /** + * Multi factor authentication status. + */ + mfa: boolean; + /** + * User preferences as a key-value object + */ + prefs: Preferences; + /** + * A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider. + */ + targets: Target[]; + /** + * Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours. + */ + accessedAt: string; + }; + /** + * AlgoMD5 + */ + type AlgoMd5 = { + /** + * Algo type. + */ + type: string; + }; + /** + * AlgoSHA + */ + type AlgoSha = { + /** + * Algo type. + */ + type: string; + }; + /** + * AlgoPHPass + */ + type AlgoPhpass = { + /** + * Algo type. + */ + type: string; + }; + /** + * AlgoBcrypt + */ + type AlgoBcrypt = { + /** + * Algo type. + */ + type: string; + }; + /** + * AlgoScrypt + */ + type AlgoScrypt = { + /** + * Algo type. + */ + type: string; + /** + * CPU complexity of computed hash. + */ + costCpu: number; + /** + * Memory complexity of computed hash. + */ + costMemory: number; + /** + * Parallelization of computed hash. + */ + costParallel: number; + /** + * Length used to compute hash. + */ + length: number; + }; + /** + * AlgoScryptModified + */ + type AlgoScryptModified = { + /** + * Algo type. + */ + type: string; + /** + * Salt used to compute hash. + */ + salt: string; + /** + * Separator used to compute hash. + */ + saltSeparator: string; + /** + * Key used to compute hash. + */ + signerKey: string; + }; + /** + * AlgoArgon2 + */ + type AlgoArgon2 = { + /** + * Algo type. + */ + type: string; + /** + * Memory used to compute hash. + */ + memoryCost: number; + /** + * Amount of time consumed to compute hash + */ + timeCost: number; + /** + * Number of threads used to compute hash. + */ + threads: number; + }; + /** + * Preferences + */ + type Preferences = { + [key: string]: any; + }; + /** + * Session + */ + type Session = { + /** + * Session ID. + */ + $id: string; + /** + * Session creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Session update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * User ID. + */ + userId: string; + /** + * Session expiration date in ISO 8601 format. + */ + expire: string; + /** + * Session Provider. + */ + provider: string; + /** + * Session Provider User ID. + */ + providerUid: string; + /** + * Session Provider Access Token. + */ + providerAccessToken: string; + /** + * The date of when the access token expires in ISO 8601 format. + */ + providerAccessTokenExpiry: string; + /** + * Session Provider Refresh Token. + */ + providerRefreshToken: string; + /** + * IP in use when the session was created. + */ + ip: string; + /** + * Operating system code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/os.json). + */ + osCode: string; + /** + * Operating system name. + */ + osName: string; + /** + * Operating system version. + */ + osVersion: string; + /** + * Client type. + */ + clientType: string; + /** + * Client code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/clients.json). + */ + clientCode: string; + /** + * Client name. + */ + clientName: string; + /** + * Client version. + */ + clientVersion: string; + /** + * Client engine name. + */ + clientEngine: string; + /** + * Client engine name. + */ + clientEngineVersion: string; + /** + * Device name. + */ + deviceName: string; + /** + * Device brand name. + */ + deviceBrand: string; + /** + * Device model name. + */ + deviceModel: string; + /** + * Country two-character ISO 3166-1 alpha code. + */ + countryCode: string; + /** + * Country name. + */ + countryName: string; + /** + * Returns true if this the current user session. + */ + current: boolean; + /** + * Returns a list of active session factors. + */ + factors: string[]; + /** + * Secret used to authenticate the user. Only included if the request was made with an API key + */ + secret: string; + /** + * Most recent date in ISO 8601 format when the session successfully passed MFA challenge. + */ + mfaUpdatedAt: string; + }; + /** + * Identity + */ + type Identity = { + /** + * Identity ID. + */ + $id: string; + /** + * Identity creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Identity update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * User ID. + */ + userId: string; + /** + * Identity Provider. + */ + provider: string; + /** + * ID of the User in the Identity Provider. + */ + providerUid: string; + /** + * Email of the User in the Identity Provider. + */ + providerEmail: string; + /** + * Identity Provider Access Token. + */ + providerAccessToken: string; + /** + * The date of when the access token expires in ISO 8601 format. + */ + providerAccessTokenExpiry: string; + /** + * Identity Provider Refresh Token. + */ + providerRefreshToken: string; + }; + /** + * Token + */ + type Token = { + /** + * Token ID. + */ + $id: string; + /** + * Token creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * User ID. + */ + userId: string; + /** + * Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload. + */ + secret: string; + /** + * Token expiration date in ISO 8601 format. + */ + expire: string; + /** + * Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email. + */ + phrase: string; + }; + /** + * JWT + */ + type Jwt = { + /** + * JWT encoded string. + */ + jwt: string; + }; + /** + * Locale + */ + type Locale = { + /** + * User IP address. + */ + ip: string; + /** + * Country code in [ISO 3166-1](http://en.wikipedia.org/wiki/ISO_3166-1) two-character format + */ + countryCode: string; + /** + * Country name. This field support localization. + */ + country: string; + /** + * Continent code. A two character continent code "AF" for Africa, "AN" for Antarctica, "AS" for Asia, "EU" for Europe, "NA" for North America, "OC" for Oceania, and "SA" for South America. + */ + continentCode: string; + /** + * Continent name. This field support localization. + */ + continent: string; + /** + * True if country is part of the European Union. + */ + eu: boolean; + /** + * Currency code in [ISO 4217-1](http://en.wikipedia.org/wiki/ISO_4217) three-character format + */ + currency: string; + }; + /** + * LocaleCode + */ + type LocaleCode = { + /** + * Locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) + */ + code: string; + /** + * Locale name + */ + name: string; + }; + /** + * File + */ + type File = { + /** + * File ID. + */ + $id: string; + /** + * Bucket ID. + */ + bucketId: string; + /** + * File creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * File update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * File permissions. [Learn more about permissions](https://appwrite.io/docs/permissions). + */ + $permissions: string[]; + /** + * File name. + */ + name: string; + /** + * File MD5 signature. + */ + signature: string; + /** + * File mime type. + */ + mimeType: string; + /** + * File original size in bytes. + */ + sizeOriginal: number; + /** + * Total number of chunks available + */ + chunksTotal: number; + /** + * Total number of chunks uploaded + */ + chunksUploaded: number; + }; + /** + * Bucket + */ + type Bucket = { + /** + * Bucket ID. + */ + $id: string; + /** + * Bucket creation time in ISO 8601 format. + */ + $createdAt: string; + /** + * Bucket update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Bucket permissions. [Learn more about permissions](https://appwrite.io/docs/permissions). + */ + $permissions: string[]; + /** + * Whether file-level security is enabled. [Learn more about permissions](https://appwrite.io/docs/permissions). + */ + fileSecurity: boolean; + /** + * Bucket name. + */ + name: string; + /** + * Bucket enabled. + */ + enabled: boolean; + /** + * Maximum file size supported. + */ + maximumFileSize: number; + /** + * Allowed file extensions. + */ + allowedFileExtensions: string[]; + /** + * Compression algorithm choosen for compression. Will be one of none, [gzip](https://en.wikipedia.org/wiki/Gzip), or [zstd](https://en.wikipedia.org/wiki/Zstd). + */ + compression: string; + /** + * Bucket is encrypted. + */ + encryption: boolean; + /** + * Virus scanning is enabled. + */ + antivirus: boolean; + }; + /** + * Team + */ + type Team = { + /** + * Team ID. + */ + $id: string; + /** + * Team creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Team update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Team name. + */ + name: string; + /** + * Total number of team members. + */ + total: number; + /** + * Team preferences as a key-value object + */ + prefs: Preferences; + }; + /** + * Membership + */ + type Membership = { + /** + * Membership ID. + */ + $id: string; + /** + * Membership creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Membership update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * User ID. + */ + userId: string; + /** + * User name. + */ + userName: string; + /** + * User email address. + */ + userEmail: string; + /** + * Team ID. + */ + teamId: string; + /** + * Team name. + */ + teamName: string; + /** + * Date, the user has been invited to join the team in ISO 8601 format. + */ + invited: string; + /** + * Date, the user has accepted the invitation to join the team in ISO 8601 format. + */ + joined: string; + /** + * User confirmation status, true if the user has joined the team or false otherwise. + */ + confirm: boolean; + /** + * Multi factor authentication status, true if the user has MFA enabled or false otherwise. + */ + mfa: boolean; + /** + * User list of roles + */ + roles: string[]; + }; + /** + * Function + */ + type Function = { + /** + * Function ID. + */ + $id: string; + /** + * Function creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Function update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Execution permissions. + */ + execute: string[]; + /** + * Function name. + */ + name: string; + /** + * Function enabled. + */ + enabled: boolean; + /** + * Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration. + */ + live: boolean; + /** + * Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project. + */ + logging: boolean; + /** + * Function execution runtime. + */ + runtime: string; + /** + * Function's active deployment ID. + */ + deployment: string; + /** + * Allowed permission scopes. + */ + scopes: string[]; + /** + * Function variables. + */ + vars: Variable[]; + /** + * Function trigger events. + */ + events: string[]; + /** + * Function execution schedult in CRON format. + */ + schedule: string; + /** + * Function execution timeout in seconds. + */ + timeout: number; + /** + * The entrypoint file used to execute the deployment. + */ + entrypoint: string; + /** + * The build command used to build the deployment. + */ + commands: string; + /** + * Version of Open Runtimes used for the function. + */ + version: string; + /** + * Function VCS (Version Control System) installation id. + */ + installationId: string; + /** + * VCS (Version Control System) Repository ID + */ + providerRepositoryId: string; + /** + * VCS (Version Control System) branch name + */ + providerBranch: string; + /** + * Path to function in VCS (Version Control System) repository + */ + providerRootDirectory: string; + /** + * Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests + */ + providerSilentMode: boolean; + /** + * Machine specification for builds and executions. + */ + specification: string; + }; + /** + * Runtime + */ + type Runtime = { + /** + * Runtime ID. + */ + $id: string; + /** + * Parent runtime key. + */ + key: string; + /** + * Runtime Name. + */ + name: string; + /** + * Runtime version. + */ + version: string; + /** + * Base Docker image used to build the runtime. + */ + base: string; + /** + * Image name of Docker Hub. + */ + image: string; + /** + * Name of the logo image. + */ + logo: string; + /** + * List of supported architectures. + */ + supports: string[]; + }; + /** + * Deployment + */ + type Deployment = { + /** + * Deployment ID. + */ + $id: string; + /** + * Deployment creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Deployment update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Type of deployment. + */ + type: string; + /** + * Resource ID. + */ + resourceId: string; + /** + * Resource type. + */ + resourceType: string; + /** + * The entrypoint file to use to execute the deployment code. + */ + entrypoint: string; + /** + * The code size in bytes. + */ + size: number; + /** + * The build output size in bytes. + */ + buildSize: number; + /** + * The current build ID. + */ + buildId: string; + /** + * Whether the deployment should be automatically activated. + */ + activate: boolean; + /** + * The deployment status. Possible values are "processing", "building", "waiting", "ready", and "failed". + */ + status: string; + /** + * The build logs. + */ + buildLogs: string; + /** + * The current build time in seconds. + */ + buildTime: number; + /** + * The name of the vcs provider repository + */ + providerRepositoryName: string; + /** + * The name of the vcs provider repository owner + */ + providerRepositoryOwner: string; + /** + * The url of the vcs provider repository + */ + providerRepositoryUrl: string; + /** + * The branch of the vcs repository + */ + providerBranch: string; + /** + * The commit hash of the vcs commit + */ + providerCommitHash: string; + /** + * The url of vcs commit author + */ + providerCommitAuthorUrl: string; + /** + * The name of vcs commit author + */ + providerCommitAuthor: string; + /** + * The commit message + */ + providerCommitMessage: string; + /** + * The url of the vcs commit + */ + providerCommitUrl: string; + /** + * The branch of the vcs repository + */ + providerBranchUrl: string; + }; + /** + * Execution + */ + type Execution = { + /** + * Execution ID. + */ + $id: string; + /** + * Execution creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Execution upate date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Execution roles. + */ + $permissions: string[]; + /** + * Function ID. + */ + functionId: string; + /** + * The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`. + */ + trigger: string; + /** + * The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`. + */ + status: string; + /** + * HTTP request method type. + */ + requestMethod: string; + /** + * HTTP request path and query. + */ + requestPath: string; + /** + * HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous. + */ + requestHeaders: Headers[]; + /** + * HTTP response status code. + */ + responseStatusCode: number; + /** + * HTTP response body. This will return empty unless execution is created as synchronous. + */ + responseBody: string; + /** + * HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous. + */ + responseHeaders: Headers[]; + /** + * Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload. + */ + logs: string; + /** + * Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload. + */ + errors: string; + /** + * Function execution duration in seconds. + */ + duration: number; + /** + * The scheduled time for execution. If left empty, execution will be queued immediately. + */ + scheduledAt?: string; + }; + /** + * Build + */ + type Build = { + /** + * Build ID. + */ + $id: string; + /** + * The deployment that created this build. + */ + deploymentId: string; + /** + * The build status. There are a few different types and each one means something different. \nFailed - The deployment build has failed. More details can usually be found in buildStderr\nReady - The deployment build was successful and the deployment is ready to be deployed\nProcessing - The deployment is currently waiting to have a build triggered\nBuilding - The deployment is currently being built + */ + status: string; + /** + * The stdout of the build. + */ + stdout: string; + /** + * The stderr of the build. + */ + stderr: string; + /** + * The deployment creation date in ISO 8601 format. + */ + startTime: string; + /** + * The time the build was finished in ISO 8601 format. + */ + endTime: string; + /** + * The build duration in seconds. + */ + duration: number; + /** + * The code size in bytes. + */ + size: number; + }; + /** + * Variable + */ + type Variable = { + /** + * Variable ID. + */ + $id: string; + /** + * Variable creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Variable creation date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Variable key. + */ + key: string; + /** + * Variable value. + */ + value: string; + /** + * Service to which the variable belongs. Possible values are "project", "function" + */ + resourceType: string; + /** + * ID of resource to which the variable belongs. If resourceType is "project", it is empty. If resourceType is "function", it is ID of the function. + */ + resourceId: string; + }; + /** + * Country + */ + type Country = { + /** + * Country name. + */ + name: string; + /** + * Country two-character ISO 3166-1 alpha code. + */ + code: string; + }; + /** + * Continent + */ + type Continent = { + /** + * Continent name. + */ + name: string; + /** + * Continent two letter code. + */ + code: string; + }; + /** + * Language + */ + type Language = { + /** + * Language name. + */ + name: string; + /** + * Language two-character ISO 639-1 codes. + */ + code: string; + /** + * Language native name. + */ + nativeName: string; + }; + /** + * Currency + */ + type Currency = { + /** + * Currency symbol. + */ + symbol: string; + /** + * Currency name. + */ + name: string; + /** + * Currency native symbol. + */ + symbolNative: string; + /** + * Number of decimal digits. + */ + decimalDigits: number; + /** + * Currency digit rounding. + */ + rounding: number; + /** + * Currency code in [ISO 4217-1](http://en.wikipedia.org/wiki/ISO_4217) three-character format. + */ + code: string; + /** + * Currency plural name + */ + namePlural: string; + }; + /** + * Phone + */ + type Phone = { + /** + * Phone code. + */ + code: string; + /** + * Country two-character ISO 3166-1 alpha code. + */ + countryCode: string; + /** + * Country name. + */ + countryName: string; + }; + /** + * Health Antivirus + */ + type HealthAntivirus = { + /** + * Antivirus version. + */ + version: string; + /** + * Antivirus status. Possible values can are: `disabled`, `offline`, `online` + */ + status: string; + }; + /** + * Health Queue + */ + type HealthQueue = { + /** + * Amount of actions in the queue. + */ + size: number; + }; + /** + * Health Status + */ + type HealthStatus = { + /** + * Name of the service. + */ + name: string; + /** + * Duration in milliseconds how long the health check took. + */ + ping: number; + /** + * Service status. Possible values can are: `pass`, `fail` + */ + status: string; + }; + /** + * Health Certificate + */ + type HealthCertificate = { + /** + * Certificate name + */ + name: string; + /** + * Subject SN + */ + subjectSN: string; + /** + * Issuer organisation + */ + issuerOrganisation: string; + /** + * Valid from + */ + validFrom: string; + /** + * Valid to + */ + validTo: string; + /** + * Signature type SN + */ + signatureTypeSN: string; + }; + /** + * Health Time + */ + type HealthTime = { + /** + * Current unix timestamp on trustful remote server. + */ + remoteTime: number; + /** + * Current unix timestamp of local server where Appwrite runs. + */ + localTime: number; + /** + * Difference of unix remote and local timestamps in milliseconds. + */ + diff: number; + }; + /** + * Headers + */ + type Headers = { + /** + * Header name. + */ + name: string; + /** + * Header value. + */ + value: string; + }; + /** + * Specification + */ + type Specification = { + /** + * Memory size in MB. + */ + memory: number; + /** + * Number of CPUs. + */ + cpus: number; + /** + * Is size enabled. + */ + enabled: boolean; + /** + * Size slug. + */ + slug: string; + }; + /** + * MFA Challenge + */ + type MfaChallenge = { + /** + * Token ID. + */ + $id: string; + /** + * Token creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * User ID. + */ + userId: string; + /** + * Token expiration date in ISO 8601 format. + */ + expire: string; + }; + /** + * MFA Recovery Codes + */ + type MfaRecoveryCodes = { + /** + * Recovery codes. + */ + recoveryCodes: string[]; + }; + /** + * MFAType + */ + type MfaType = { + /** + * Secret token used for TOTP factor. + */ + secret: string; + /** + * URI for authenticator apps. + */ + uri: string; + }; + /** + * MFAFactors + */ + type MfaFactors = { + /** + * Can TOTP be used for MFA challenge for this account. + */ + totp: boolean; + /** + * Can phone (SMS) be used for MFA challenge for this account. + */ + phone: boolean; + /** + * Can email be used for MFA challenge for this account. + */ + email: boolean; + /** + * Can recovery code be used for MFA challenge for this account. + */ + recoveryCode: boolean; + }; + /** + * Provider + */ + type Provider = { + /** + * Provider ID. + */ + $id: string; + /** + * Provider creation time in ISO 8601 format. + */ + $createdAt: string; + /** + * Provider update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * The name for the provider instance. + */ + name: string; + /** + * The name of the provider service. + */ + provider: string; + /** + * Is provider enabled? + */ + enabled: boolean; + /** + * Type of provider. + */ + type: string; + /** + * Provider credentials. + */ + credentials: object; + /** + * Provider options. + */ + options?: object; + }; + /** + * Message + */ + type Message = { + /** + * Message ID. + */ + $id: string; + /** + * Message creation time in ISO 8601 format. + */ + $createdAt: string; + /** + * Message update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Message provider type. + */ + providerType: string; + /** + * Topic IDs set as recipients. + */ + topics: string[]; + /** + * User IDs set as recipients. + */ + users: string[]; + /** + * Target IDs set as recipients. + */ + targets: string[]; + /** + * The scheduled time for message. + */ + scheduledAt?: string; + /** + * The time when the message was delivered. + */ + deliveredAt?: string; + /** + * Delivery errors if any. + */ + deliveryErrors?: string[]; + /** + * Number of recipients the message was delivered to. + */ + deliveredTotal: number; + /** + * Data of the message. + */ + data: object; + /** + * Status of delivery. + */ + status: string; + }; + /** + * Topic + */ + type Topic = { + /** + * Topic ID. + */ + $id: string; + /** + * Topic creation time in ISO 8601 format. + */ + $createdAt: string; + /** + * Topic update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * The name of the topic. + */ + name: string; + /** + * Total count of email subscribers subscribed to the topic. + */ + emailTotal: number; + /** + * Total count of SMS subscribers subscribed to the topic. + */ + smsTotal: number; + /** + * Total count of push subscribers subscribed to the topic. + */ + pushTotal: number; + /** + * Subscribe permissions. + */ + subscribe: string[]; + }; + /** + * Subscriber + */ + type Subscriber = { + /** + * Subscriber ID. + */ + $id: string; + /** + * Subscriber creation time in ISO 8601 format. + */ + $createdAt: string; + /** + * Subscriber update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Target ID. + */ + targetId: string; + /** + * Target. + */ + target: Target; + /** + * Topic ID. + */ + userId: string; + /** + * User Name. + */ + userName: string; + /** + * Topic ID. + */ + topicId: string; + /** + * The target provider type. Can be one of the following: `email`, `sms` or `push`. + */ + providerType: string; + }; + /** + * Target + */ + type Target = { + /** + * Target ID. + */ + $id: string; + /** + * Target creation time in ISO 8601 format. + */ + $createdAt: string; + /** + * Target update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Target Name. + */ + name: string; + /** + * User ID. + */ + userId: string; + /** + * Provider ID. + */ + providerId?: string; + /** + * The target provider type. Can be one of the following: `email`, `sms` or `push`. + */ + providerType: string; + /** + * The target identifier. + */ + identifier: string; + }; +} + +export { Models }; diff --git a/node_modules/node-appwrite/dist/models.d.ts b/node_modules/node-appwrite/dist/models.d.ts new file mode 100644 index 0000000..2517152 --- /dev/null +++ b/node_modules/node-appwrite/dist/models.d.ts @@ -0,0 +1,2512 @@ +/** + * Appwrite Models + */ +declare namespace Models { + /** + * Documents List + */ + type DocumentList = { + /** + * Total number of documents documents that matched your query. + */ + total: number; + /** + * List of documents. + */ + documents: Document[]; + }; + /** + * Collections List + */ + type CollectionList = { + /** + * Total number of collections documents that matched your query. + */ + total: number; + /** + * List of collections. + */ + collections: Collection[]; + }; + /** + * Databases List + */ + type DatabaseList = { + /** + * Total number of databases documents that matched your query. + */ + total: number; + /** + * List of databases. + */ + databases: Database[]; + }; + /** + * Indexes List + */ + type IndexList = { + /** + * Total number of indexes documents that matched your query. + */ + total: number; + /** + * List of indexes. + */ + indexes: Index[]; + }; + /** + * Users List + */ + type UserList = { + /** + * Total number of users documents that matched your query. + */ + total: number; + /** + * List of users. + */ + users: User[]; + }; + /** + * Sessions List + */ + type SessionList = { + /** + * Total number of sessions documents that matched your query. + */ + total: number; + /** + * List of sessions. + */ + sessions: Session[]; + }; + /** + * Identities List + */ + type IdentityList = { + /** + * Total number of identities documents that matched your query. + */ + total: number; + /** + * List of identities. + */ + identities: Identity[]; + }; + /** + * Logs List + */ + type LogList = { + /** + * Total number of logs documents that matched your query. + */ + total: number; + /** + * List of logs. + */ + logs: Log[]; + }; + /** + * Files List + */ + type FileList = { + /** + * Total number of files documents that matched your query. + */ + total: number; + /** + * List of files. + */ + files: File[]; + }; + /** + * Buckets List + */ + type BucketList = { + /** + * Total number of buckets documents that matched your query. + */ + total: number; + /** + * List of buckets. + */ + buckets: Bucket[]; + }; + /** + * Teams List + */ + type TeamList = { + /** + * Total number of teams documents that matched your query. + */ + total: number; + /** + * List of teams. + */ + teams: Team[]; + }; + /** + * Memberships List + */ + type MembershipList = { + /** + * Total number of memberships documents that matched your query. + */ + total: number; + /** + * List of memberships. + */ + memberships: Membership[]; + }; + /** + * Functions List + */ + type FunctionList = { + /** + * Total number of functions documents that matched your query. + */ + total: number; + /** + * List of functions. + */ + functions: Function[]; + }; + /** + * Runtimes List + */ + type RuntimeList = { + /** + * Total number of runtimes documents that matched your query. + */ + total: number; + /** + * List of runtimes. + */ + runtimes: Runtime[]; + }; + /** + * Deployments List + */ + type DeploymentList = { + /** + * Total number of deployments documents that matched your query. + */ + total: number; + /** + * List of deployments. + */ + deployments: Deployment[]; + }; + /** + * Executions List + */ + type ExecutionList = { + /** + * Total number of executions documents that matched your query. + */ + total: number; + /** + * List of executions. + */ + executions: Execution[]; + }; + /** + * Countries List + */ + type CountryList = { + /** + * Total number of countries documents that matched your query. + */ + total: number; + /** + * List of countries. + */ + countries: Country[]; + }; + /** + * Continents List + */ + type ContinentList = { + /** + * Total number of continents documents that matched your query. + */ + total: number; + /** + * List of continents. + */ + continents: Continent[]; + }; + /** + * Languages List + */ + type LanguageList = { + /** + * Total number of languages documents that matched your query. + */ + total: number; + /** + * List of languages. + */ + languages: Language[]; + }; + /** + * Currencies List + */ + type CurrencyList = { + /** + * Total number of currencies documents that matched your query. + */ + total: number; + /** + * List of currencies. + */ + currencies: Currency[]; + }; + /** + * Phones List + */ + type PhoneList = { + /** + * Total number of phones documents that matched your query. + */ + total: number; + /** + * List of phones. + */ + phones: Phone[]; + }; + /** + * Variables List + */ + type VariableList = { + /** + * Total number of variables documents that matched your query. + */ + total: number; + /** + * List of variables. + */ + variables: Variable[]; + }; + /** + * Locale codes list + */ + type LocaleCodeList = { + /** + * Total number of localeCodes documents that matched your query. + */ + total: number; + /** + * List of localeCodes. + */ + localeCodes: LocaleCode[]; + }; + /** + * Provider list + */ + type ProviderList = { + /** + * Total number of providers documents that matched your query. + */ + total: number; + /** + * List of providers. + */ + providers: Provider[]; + }; + /** + * Message list + */ + type MessageList = { + /** + * Total number of messages documents that matched your query. + */ + total: number; + /** + * List of messages. + */ + messages: Message[]; + }; + /** + * Topic list + */ + type TopicList = { + /** + * Total number of topics documents that matched your query. + */ + total: number; + /** + * List of topics. + */ + topics: Topic[]; + }; + /** + * Subscriber list + */ + type SubscriberList = { + /** + * Total number of subscribers documents that matched your query. + */ + total: number; + /** + * List of subscribers. + */ + subscribers: Subscriber[]; + }; + /** + * Target list + */ + type TargetList = { + /** + * Total number of targets documents that matched your query. + */ + total: number; + /** + * List of targets. + */ + targets: Target[]; + }; + /** + * Specifications List + */ + type SpecificationList = { + /** + * Total number of specifications documents that matched your query. + */ + total: number; + /** + * List of specifications. + */ + specifications: Specification[]; + }; + /** + * Database + */ + type Database = { + /** + * Database ID. + */ + $id: string; + /** + * Database name. + */ + name: string; + /** + * Database creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Database update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * If database is enabled. Can be 'enabled' or 'disabled'. When disabled, the database is inaccessible to users, but remains accessible to Server SDKs using API keys. + */ + enabled: boolean; + }; + /** + * Collection + */ + type Collection = { + /** + * Collection ID. + */ + $id: string; + /** + * Collection creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Collection update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Collection permissions. [Learn more about permissions](https://appwrite.io/docs/permissions). + */ + $permissions: string[]; + /** + * Database ID. + */ + databaseId: string; + /** + * Collection name. + */ + name: string; + /** + * Collection enabled. Can be 'enabled' or 'disabled'. When disabled, the collection is inaccessible to users, but remains accessible to Server SDKs using API keys. + */ + enabled: boolean; + /** + * Whether document-level permissions are enabled. [Learn more about permissions](https://appwrite.io/docs/permissions). + */ + documentSecurity: boolean; + /** + * Collection attributes. + */ + attributes: string[]; + /** + * Collection indexes. + */ + indexes: Index[]; + }; + /** + * Attributes List + */ + type AttributeList = { + /** + * Total number of attributes in the given collection. + */ + total: number; + /** + * List of attributes. + */ + attributes: string[]; + }; + /** + * AttributeString + */ + type AttributeString = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * Attribute size. + */ + size: number; + /** + * Default value for attribute when not provided. Cannot be set when attribute is required. + */ + default?: string; + }; + /** + * AttributeInteger + */ + type AttributeInteger = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * Minimum value to enforce for new documents. + */ + min?: number; + /** + * Maximum value to enforce for new documents. + */ + max?: number; + /** + * Default value for attribute when not provided. Cannot be set when attribute is required. + */ + default?: number; + }; + /** + * AttributeFloat + */ + type AttributeFloat = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * Minimum value to enforce for new documents. + */ + min?: number; + /** + * Maximum value to enforce for new documents. + */ + max?: number; + /** + * Default value for attribute when not provided. Cannot be set when attribute is required. + */ + default?: number; + }; + /** + * AttributeBoolean + */ + type AttributeBoolean = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * Default value for attribute when not provided. Cannot be set when attribute is required. + */ + default?: boolean; + }; + /** + * AttributeEmail + */ + type AttributeEmail = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * String format. + */ + format: string; + /** + * Default value for attribute when not provided. Cannot be set when attribute is required. + */ + default?: string; + }; + /** + * AttributeEnum + */ + type AttributeEnum = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * Array of elements in enumerated type. + */ + elements: string[]; + /** + * String format. + */ + format: string; + /** + * Default value for attribute when not provided. Cannot be set when attribute is required. + */ + default?: string; + }; + /** + * AttributeIP + */ + type AttributeIp = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * String format. + */ + format: string; + /** + * Default value for attribute when not provided. Cannot be set when attribute is required. + */ + default?: string; + }; + /** + * AttributeURL + */ + type AttributeUrl = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * String format. + */ + format: string; + /** + * Default value for attribute when not provided. Cannot be set when attribute is required. + */ + default?: string; + }; + /** + * AttributeDatetime + */ + type AttributeDatetime = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * ISO 8601 format. + */ + format: string; + /** + * Default value for attribute when not provided. Only null is optional + */ + default?: string; + }; + /** + * AttributeRelationship + */ + type AttributeRelationship = { + /** + * Attribute Key. + */ + key: string; + /** + * Attribute type. + */ + type: string; + /** + * Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an attribute. + */ + error: string; + /** + * Is attribute required? + */ + required: boolean; + /** + * Is attribute an array? + */ + array?: boolean; + /** + * The ID of the related collection. + */ + relatedCollection: string; + /** + * The type of the relationship. + */ + relationType: string; + /** + * Is the relationship two-way? + */ + twoWay: boolean; + /** + * The key of the two-way relationship. + */ + twoWayKey: string; + /** + * How deleting the parent document will propagate to child documents. + */ + onDelete: string; + /** + * Whether this is the parent or child side of the relationship + */ + side: string; + }; + /** + * Index + */ + type Index = { + /** + * Index Key. + */ + key: string; + /** + * Index type. + */ + type: string; + /** + * Index status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed` + */ + status: string; + /** + * Error message. Displays error generated on failure of creating or deleting an index. + */ + error: string; + /** + * Index attributes. + */ + attributes: string[]; + /** + * Index orders. + */ + orders?: string[]; + }; + /** + * Document + */ + type Document = { + /** + * Document ID. + */ + $id: string; + /** + * Collection ID. + */ + $collectionId: string; + /** + * Database ID. + */ + $databaseId: string; + /** + * Document creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Document update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Document permissions. [Learn more about permissions](https://appwrite.io/docs/permissions). + */ + $permissions: string[]; + [key: string]: any; + }; + /** + * Log + */ + type Log = { + /** + * Event name. + */ + event: string; + /** + * User ID. + */ + userId: string; + /** + * User Email. + */ + userEmail: string; + /** + * User Name. + */ + userName: string; + /** + * API mode when event triggered. + */ + mode: string; + /** + * IP session in use when the session was created. + */ + ip: string; + /** + * Log creation date in ISO 8601 format. + */ + time: string; + /** + * Operating system code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/os.json). + */ + osCode: string; + /** + * Operating system name. + */ + osName: string; + /** + * Operating system version. + */ + osVersion: string; + /** + * Client type. + */ + clientType: string; + /** + * Client code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/clients.json). + */ + clientCode: string; + /** + * Client name. + */ + clientName: string; + /** + * Client version. + */ + clientVersion: string; + /** + * Client engine name. + */ + clientEngine: string; + /** + * Client engine name. + */ + clientEngineVersion: string; + /** + * Device name. + */ + deviceName: string; + /** + * Device brand name. + */ + deviceBrand: string; + /** + * Device model name. + */ + deviceModel: string; + /** + * Country two-character ISO 3166-1 alpha code. + */ + countryCode: string; + /** + * Country name. + */ + countryName: string; + }; + /** + * User + */ + type User = { + /** + * User ID. + */ + $id: string; + /** + * User creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * User update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * User name. + */ + name: string; + /** + * Hashed user password. + */ + password?: string; + /** + * Password hashing algorithm. + */ + hash?: string; + /** + * Password hashing algorithm configuration. + */ + hashOptions?: object; + /** + * User registration date in ISO 8601 format. + */ + registration: string; + /** + * User status. Pass `true` for enabled and `false` for disabled. + */ + status: boolean; + /** + * Labels for the user. + */ + labels: string[]; + /** + * Password update time in ISO 8601 format. + */ + passwordUpdate: string; + /** + * User email address. + */ + email: string; + /** + * User phone number in E.164 format. + */ + phone: string; + /** + * Email verification status. + */ + emailVerification: boolean; + /** + * Phone verification status. + */ + phoneVerification: boolean; + /** + * Multi factor authentication status. + */ + mfa: boolean; + /** + * User preferences as a key-value object + */ + prefs: Preferences; + /** + * A user-owned message receiver. A single user may have multiple e.g. emails, phones, and a browser. Each target is registered with a single provider. + */ + targets: Target[]; + /** + * Most recent access date in ISO 8601 format. This attribute is only updated again after 24 hours. + */ + accessedAt: string; + }; + /** + * AlgoMD5 + */ + type AlgoMd5 = { + /** + * Algo type. + */ + type: string; + }; + /** + * AlgoSHA + */ + type AlgoSha = { + /** + * Algo type. + */ + type: string; + }; + /** + * AlgoPHPass + */ + type AlgoPhpass = { + /** + * Algo type. + */ + type: string; + }; + /** + * AlgoBcrypt + */ + type AlgoBcrypt = { + /** + * Algo type. + */ + type: string; + }; + /** + * AlgoScrypt + */ + type AlgoScrypt = { + /** + * Algo type. + */ + type: string; + /** + * CPU complexity of computed hash. + */ + costCpu: number; + /** + * Memory complexity of computed hash. + */ + costMemory: number; + /** + * Parallelization of computed hash. + */ + costParallel: number; + /** + * Length used to compute hash. + */ + length: number; + }; + /** + * AlgoScryptModified + */ + type AlgoScryptModified = { + /** + * Algo type. + */ + type: string; + /** + * Salt used to compute hash. + */ + salt: string; + /** + * Separator used to compute hash. + */ + saltSeparator: string; + /** + * Key used to compute hash. + */ + signerKey: string; + }; + /** + * AlgoArgon2 + */ + type AlgoArgon2 = { + /** + * Algo type. + */ + type: string; + /** + * Memory used to compute hash. + */ + memoryCost: number; + /** + * Amount of time consumed to compute hash + */ + timeCost: number; + /** + * Number of threads used to compute hash. + */ + threads: number; + }; + /** + * Preferences + */ + type Preferences = { + [key: string]: any; + }; + /** + * Session + */ + type Session = { + /** + * Session ID. + */ + $id: string; + /** + * Session creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Session update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * User ID. + */ + userId: string; + /** + * Session expiration date in ISO 8601 format. + */ + expire: string; + /** + * Session Provider. + */ + provider: string; + /** + * Session Provider User ID. + */ + providerUid: string; + /** + * Session Provider Access Token. + */ + providerAccessToken: string; + /** + * The date of when the access token expires in ISO 8601 format. + */ + providerAccessTokenExpiry: string; + /** + * Session Provider Refresh Token. + */ + providerRefreshToken: string; + /** + * IP in use when the session was created. + */ + ip: string; + /** + * Operating system code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/os.json). + */ + osCode: string; + /** + * Operating system name. + */ + osName: string; + /** + * Operating system version. + */ + osVersion: string; + /** + * Client type. + */ + clientType: string; + /** + * Client code name. View list of [available options](https://github.com/appwrite/appwrite/blob/master/docs/lists/clients.json). + */ + clientCode: string; + /** + * Client name. + */ + clientName: string; + /** + * Client version. + */ + clientVersion: string; + /** + * Client engine name. + */ + clientEngine: string; + /** + * Client engine name. + */ + clientEngineVersion: string; + /** + * Device name. + */ + deviceName: string; + /** + * Device brand name. + */ + deviceBrand: string; + /** + * Device model name. + */ + deviceModel: string; + /** + * Country two-character ISO 3166-1 alpha code. + */ + countryCode: string; + /** + * Country name. + */ + countryName: string; + /** + * Returns true if this the current user session. + */ + current: boolean; + /** + * Returns a list of active session factors. + */ + factors: string[]; + /** + * Secret used to authenticate the user. Only included if the request was made with an API key + */ + secret: string; + /** + * Most recent date in ISO 8601 format when the session successfully passed MFA challenge. + */ + mfaUpdatedAt: string; + }; + /** + * Identity + */ + type Identity = { + /** + * Identity ID. + */ + $id: string; + /** + * Identity creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Identity update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * User ID. + */ + userId: string; + /** + * Identity Provider. + */ + provider: string; + /** + * ID of the User in the Identity Provider. + */ + providerUid: string; + /** + * Email of the User in the Identity Provider. + */ + providerEmail: string; + /** + * Identity Provider Access Token. + */ + providerAccessToken: string; + /** + * The date of when the access token expires in ISO 8601 format. + */ + providerAccessTokenExpiry: string; + /** + * Identity Provider Refresh Token. + */ + providerRefreshToken: string; + }; + /** + * Token + */ + type Token = { + /** + * Token ID. + */ + $id: string; + /** + * Token creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * User ID. + */ + userId: string; + /** + * Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload. + */ + secret: string; + /** + * Token expiration date in ISO 8601 format. + */ + expire: string; + /** + * Security phrase of a token. Empty if security phrase was not requested when creating a token. It includes randomly generated phrase which is also sent in the external resource such as email. + */ + phrase: string; + }; + /** + * JWT + */ + type Jwt = { + /** + * JWT encoded string. + */ + jwt: string; + }; + /** + * Locale + */ + type Locale = { + /** + * User IP address. + */ + ip: string; + /** + * Country code in [ISO 3166-1](http://en.wikipedia.org/wiki/ISO_3166-1) two-character format + */ + countryCode: string; + /** + * Country name. This field support localization. + */ + country: string; + /** + * Continent code. A two character continent code "AF" for Africa, "AN" for Antarctica, "AS" for Asia, "EU" for Europe, "NA" for North America, "OC" for Oceania, and "SA" for South America. + */ + continentCode: string; + /** + * Continent name. This field support localization. + */ + continent: string; + /** + * True if country is part of the European Union. + */ + eu: boolean; + /** + * Currency code in [ISO 4217-1](http://en.wikipedia.org/wiki/ISO_4217) three-character format + */ + currency: string; + }; + /** + * LocaleCode + */ + type LocaleCode = { + /** + * Locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) + */ + code: string; + /** + * Locale name + */ + name: string; + }; + /** + * File + */ + type File = { + /** + * File ID. + */ + $id: string; + /** + * Bucket ID. + */ + bucketId: string; + /** + * File creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * File update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * File permissions. [Learn more about permissions](https://appwrite.io/docs/permissions). + */ + $permissions: string[]; + /** + * File name. + */ + name: string; + /** + * File MD5 signature. + */ + signature: string; + /** + * File mime type. + */ + mimeType: string; + /** + * File original size in bytes. + */ + sizeOriginal: number; + /** + * Total number of chunks available + */ + chunksTotal: number; + /** + * Total number of chunks uploaded + */ + chunksUploaded: number; + }; + /** + * Bucket + */ + type Bucket = { + /** + * Bucket ID. + */ + $id: string; + /** + * Bucket creation time in ISO 8601 format. + */ + $createdAt: string; + /** + * Bucket update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Bucket permissions. [Learn more about permissions](https://appwrite.io/docs/permissions). + */ + $permissions: string[]; + /** + * Whether file-level security is enabled. [Learn more about permissions](https://appwrite.io/docs/permissions). + */ + fileSecurity: boolean; + /** + * Bucket name. + */ + name: string; + /** + * Bucket enabled. + */ + enabled: boolean; + /** + * Maximum file size supported. + */ + maximumFileSize: number; + /** + * Allowed file extensions. + */ + allowedFileExtensions: string[]; + /** + * Compression algorithm choosen for compression. Will be one of none, [gzip](https://en.wikipedia.org/wiki/Gzip), or [zstd](https://en.wikipedia.org/wiki/Zstd). + */ + compression: string; + /** + * Bucket is encrypted. + */ + encryption: boolean; + /** + * Virus scanning is enabled. + */ + antivirus: boolean; + }; + /** + * Team + */ + type Team = { + /** + * Team ID. + */ + $id: string; + /** + * Team creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Team update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Team name. + */ + name: string; + /** + * Total number of team members. + */ + total: number; + /** + * Team preferences as a key-value object + */ + prefs: Preferences; + }; + /** + * Membership + */ + type Membership = { + /** + * Membership ID. + */ + $id: string; + /** + * Membership creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Membership update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * User ID. + */ + userId: string; + /** + * User name. + */ + userName: string; + /** + * User email address. + */ + userEmail: string; + /** + * Team ID. + */ + teamId: string; + /** + * Team name. + */ + teamName: string; + /** + * Date, the user has been invited to join the team in ISO 8601 format. + */ + invited: string; + /** + * Date, the user has accepted the invitation to join the team in ISO 8601 format. + */ + joined: string; + /** + * User confirmation status, true if the user has joined the team or false otherwise. + */ + confirm: boolean; + /** + * Multi factor authentication status, true if the user has MFA enabled or false otherwise. + */ + mfa: boolean; + /** + * User list of roles + */ + roles: string[]; + }; + /** + * Function + */ + type Function = { + /** + * Function ID. + */ + $id: string; + /** + * Function creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Function update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Execution permissions. + */ + execute: string[]; + /** + * Function name. + */ + name: string; + /** + * Function enabled. + */ + enabled: boolean; + /** + * Is the function deployed with the latest configuration? This is set to false if you've changed an environment variables, entrypoint, commands, or other settings that needs redeploy to be applied. When the value is false, redeploy the function to update it with the latest configuration. + */ + live: boolean; + /** + * Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project. + */ + logging: boolean; + /** + * Function execution runtime. + */ + runtime: string; + /** + * Function's active deployment ID. + */ + deployment: string; + /** + * Allowed permission scopes. + */ + scopes: string[]; + /** + * Function variables. + */ + vars: Variable[]; + /** + * Function trigger events. + */ + events: string[]; + /** + * Function execution schedult in CRON format. + */ + schedule: string; + /** + * Function execution timeout in seconds. + */ + timeout: number; + /** + * The entrypoint file used to execute the deployment. + */ + entrypoint: string; + /** + * The build command used to build the deployment. + */ + commands: string; + /** + * Version of Open Runtimes used for the function. + */ + version: string; + /** + * Function VCS (Version Control System) installation id. + */ + installationId: string; + /** + * VCS (Version Control System) Repository ID + */ + providerRepositoryId: string; + /** + * VCS (Version Control System) branch name + */ + providerBranch: string; + /** + * Path to function in VCS (Version Control System) repository + */ + providerRootDirectory: string; + /** + * Is VCS (Version Control System) connection is in silent mode? When in silence mode, no comments will be posted on the repository pull or merge requests + */ + providerSilentMode: boolean; + /** + * Machine specification for builds and executions. + */ + specification: string; + }; + /** + * Runtime + */ + type Runtime = { + /** + * Runtime ID. + */ + $id: string; + /** + * Parent runtime key. + */ + key: string; + /** + * Runtime Name. + */ + name: string; + /** + * Runtime version. + */ + version: string; + /** + * Base Docker image used to build the runtime. + */ + base: string; + /** + * Image name of Docker Hub. + */ + image: string; + /** + * Name of the logo image. + */ + logo: string; + /** + * List of supported architectures. + */ + supports: string[]; + }; + /** + * Deployment + */ + type Deployment = { + /** + * Deployment ID. + */ + $id: string; + /** + * Deployment creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Deployment update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Type of deployment. + */ + type: string; + /** + * Resource ID. + */ + resourceId: string; + /** + * Resource type. + */ + resourceType: string; + /** + * The entrypoint file to use to execute the deployment code. + */ + entrypoint: string; + /** + * The code size in bytes. + */ + size: number; + /** + * The build output size in bytes. + */ + buildSize: number; + /** + * The current build ID. + */ + buildId: string; + /** + * Whether the deployment should be automatically activated. + */ + activate: boolean; + /** + * The deployment status. Possible values are "processing", "building", "waiting", "ready", and "failed". + */ + status: string; + /** + * The build logs. + */ + buildLogs: string; + /** + * The current build time in seconds. + */ + buildTime: number; + /** + * The name of the vcs provider repository + */ + providerRepositoryName: string; + /** + * The name of the vcs provider repository owner + */ + providerRepositoryOwner: string; + /** + * The url of the vcs provider repository + */ + providerRepositoryUrl: string; + /** + * The branch of the vcs repository + */ + providerBranch: string; + /** + * The commit hash of the vcs commit + */ + providerCommitHash: string; + /** + * The url of vcs commit author + */ + providerCommitAuthorUrl: string; + /** + * The name of vcs commit author + */ + providerCommitAuthor: string; + /** + * The commit message + */ + providerCommitMessage: string; + /** + * The url of the vcs commit + */ + providerCommitUrl: string; + /** + * The branch of the vcs repository + */ + providerBranchUrl: string; + }; + /** + * Execution + */ + type Execution = { + /** + * Execution ID. + */ + $id: string; + /** + * Execution creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Execution upate date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Execution roles. + */ + $permissions: string[]; + /** + * Function ID. + */ + functionId: string; + /** + * The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`. + */ + trigger: string; + /** + * The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`. + */ + status: string; + /** + * HTTP request method type. + */ + requestMethod: string; + /** + * HTTP request path and query. + */ + requestPath: string; + /** + * HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous. + */ + requestHeaders: Headers[]; + /** + * HTTP response status code. + */ + responseStatusCode: number; + /** + * HTTP response body. This will return empty unless execution is created as synchronous. + */ + responseBody: string; + /** + * HTTP response headers as a key-value object. This will return only whitelisted headers. All headers are returned if execution is created as synchronous. + */ + responseHeaders: Headers[]; + /** + * Function logs. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload. + */ + logs: string; + /** + * Function errors. Includes the last 4,000 characters. This will return an empty string unless the response is returned using an API key or as part of a webhook payload. + */ + errors: string; + /** + * Function execution duration in seconds. + */ + duration: number; + /** + * The scheduled time for execution. If left empty, execution will be queued immediately. + */ + scheduledAt?: string; + }; + /** + * Build + */ + type Build = { + /** + * Build ID. + */ + $id: string; + /** + * The deployment that created this build. + */ + deploymentId: string; + /** + * The build status. There are a few different types and each one means something different. \nFailed - The deployment build has failed. More details can usually be found in buildStderr\nReady - The deployment build was successful and the deployment is ready to be deployed\nProcessing - The deployment is currently waiting to have a build triggered\nBuilding - The deployment is currently being built + */ + status: string; + /** + * The stdout of the build. + */ + stdout: string; + /** + * The stderr of the build. + */ + stderr: string; + /** + * The deployment creation date in ISO 8601 format. + */ + startTime: string; + /** + * The time the build was finished in ISO 8601 format. + */ + endTime: string; + /** + * The build duration in seconds. + */ + duration: number; + /** + * The code size in bytes. + */ + size: number; + }; + /** + * Variable + */ + type Variable = { + /** + * Variable ID. + */ + $id: string; + /** + * Variable creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * Variable creation date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Variable key. + */ + key: string; + /** + * Variable value. + */ + value: string; + /** + * Service to which the variable belongs. Possible values are "project", "function" + */ + resourceType: string; + /** + * ID of resource to which the variable belongs. If resourceType is "project", it is empty. If resourceType is "function", it is ID of the function. + */ + resourceId: string; + }; + /** + * Country + */ + type Country = { + /** + * Country name. + */ + name: string; + /** + * Country two-character ISO 3166-1 alpha code. + */ + code: string; + }; + /** + * Continent + */ + type Continent = { + /** + * Continent name. + */ + name: string; + /** + * Continent two letter code. + */ + code: string; + }; + /** + * Language + */ + type Language = { + /** + * Language name. + */ + name: string; + /** + * Language two-character ISO 639-1 codes. + */ + code: string; + /** + * Language native name. + */ + nativeName: string; + }; + /** + * Currency + */ + type Currency = { + /** + * Currency symbol. + */ + symbol: string; + /** + * Currency name. + */ + name: string; + /** + * Currency native symbol. + */ + symbolNative: string; + /** + * Number of decimal digits. + */ + decimalDigits: number; + /** + * Currency digit rounding. + */ + rounding: number; + /** + * Currency code in [ISO 4217-1](http://en.wikipedia.org/wiki/ISO_4217) three-character format. + */ + code: string; + /** + * Currency plural name + */ + namePlural: string; + }; + /** + * Phone + */ + type Phone = { + /** + * Phone code. + */ + code: string; + /** + * Country two-character ISO 3166-1 alpha code. + */ + countryCode: string; + /** + * Country name. + */ + countryName: string; + }; + /** + * Health Antivirus + */ + type HealthAntivirus = { + /** + * Antivirus version. + */ + version: string; + /** + * Antivirus status. Possible values can are: `disabled`, `offline`, `online` + */ + status: string; + }; + /** + * Health Queue + */ + type HealthQueue = { + /** + * Amount of actions in the queue. + */ + size: number; + }; + /** + * Health Status + */ + type HealthStatus = { + /** + * Name of the service. + */ + name: string; + /** + * Duration in milliseconds how long the health check took. + */ + ping: number; + /** + * Service status. Possible values can are: `pass`, `fail` + */ + status: string; + }; + /** + * Health Certificate + */ + type HealthCertificate = { + /** + * Certificate name + */ + name: string; + /** + * Subject SN + */ + subjectSN: string; + /** + * Issuer organisation + */ + issuerOrganisation: string; + /** + * Valid from + */ + validFrom: string; + /** + * Valid to + */ + validTo: string; + /** + * Signature type SN + */ + signatureTypeSN: string; + }; + /** + * Health Time + */ + type HealthTime = { + /** + * Current unix timestamp on trustful remote server. + */ + remoteTime: number; + /** + * Current unix timestamp of local server where Appwrite runs. + */ + localTime: number; + /** + * Difference of unix remote and local timestamps in milliseconds. + */ + diff: number; + }; + /** + * Headers + */ + type Headers = { + /** + * Header name. + */ + name: string; + /** + * Header value. + */ + value: string; + }; + /** + * Specification + */ + type Specification = { + /** + * Memory size in MB. + */ + memory: number; + /** + * Number of CPUs. + */ + cpus: number; + /** + * Is size enabled. + */ + enabled: boolean; + /** + * Size slug. + */ + slug: string; + }; + /** + * MFA Challenge + */ + type MfaChallenge = { + /** + * Token ID. + */ + $id: string; + /** + * Token creation date in ISO 8601 format. + */ + $createdAt: string; + /** + * User ID. + */ + userId: string; + /** + * Token expiration date in ISO 8601 format. + */ + expire: string; + }; + /** + * MFA Recovery Codes + */ + type MfaRecoveryCodes = { + /** + * Recovery codes. + */ + recoveryCodes: string[]; + }; + /** + * MFAType + */ + type MfaType = { + /** + * Secret token used for TOTP factor. + */ + secret: string; + /** + * URI for authenticator apps. + */ + uri: string; + }; + /** + * MFAFactors + */ + type MfaFactors = { + /** + * Can TOTP be used for MFA challenge for this account. + */ + totp: boolean; + /** + * Can phone (SMS) be used for MFA challenge for this account. + */ + phone: boolean; + /** + * Can email be used for MFA challenge for this account. + */ + email: boolean; + /** + * Can recovery code be used for MFA challenge for this account. + */ + recoveryCode: boolean; + }; + /** + * Provider + */ + type Provider = { + /** + * Provider ID. + */ + $id: string; + /** + * Provider creation time in ISO 8601 format. + */ + $createdAt: string; + /** + * Provider update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * The name for the provider instance. + */ + name: string; + /** + * The name of the provider service. + */ + provider: string; + /** + * Is provider enabled? + */ + enabled: boolean; + /** + * Type of provider. + */ + type: string; + /** + * Provider credentials. + */ + credentials: object; + /** + * Provider options. + */ + options?: object; + }; + /** + * Message + */ + type Message = { + /** + * Message ID. + */ + $id: string; + /** + * Message creation time in ISO 8601 format. + */ + $createdAt: string; + /** + * Message update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Message provider type. + */ + providerType: string; + /** + * Topic IDs set as recipients. + */ + topics: string[]; + /** + * User IDs set as recipients. + */ + users: string[]; + /** + * Target IDs set as recipients. + */ + targets: string[]; + /** + * The scheduled time for message. + */ + scheduledAt?: string; + /** + * The time when the message was delivered. + */ + deliveredAt?: string; + /** + * Delivery errors if any. + */ + deliveryErrors?: string[]; + /** + * Number of recipients the message was delivered to. + */ + deliveredTotal: number; + /** + * Data of the message. + */ + data: object; + /** + * Status of delivery. + */ + status: string; + }; + /** + * Topic + */ + type Topic = { + /** + * Topic ID. + */ + $id: string; + /** + * Topic creation time in ISO 8601 format. + */ + $createdAt: string; + /** + * Topic update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * The name of the topic. + */ + name: string; + /** + * Total count of email subscribers subscribed to the topic. + */ + emailTotal: number; + /** + * Total count of SMS subscribers subscribed to the topic. + */ + smsTotal: number; + /** + * Total count of push subscribers subscribed to the topic. + */ + pushTotal: number; + /** + * Subscribe permissions. + */ + subscribe: string[]; + }; + /** + * Subscriber + */ + type Subscriber = { + /** + * Subscriber ID. + */ + $id: string; + /** + * Subscriber creation time in ISO 8601 format. + */ + $createdAt: string; + /** + * Subscriber update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Target ID. + */ + targetId: string; + /** + * Target. + */ + target: Target; + /** + * Topic ID. + */ + userId: string; + /** + * User Name. + */ + userName: string; + /** + * Topic ID. + */ + topicId: string; + /** + * The target provider type. Can be one of the following: `email`, `sms` or `push`. + */ + providerType: string; + }; + /** + * Target + */ + type Target = { + /** + * Target ID. + */ + $id: string; + /** + * Target creation time in ISO 8601 format. + */ + $createdAt: string; + /** + * Target update date in ISO 8601 format. + */ + $updatedAt: string; + /** + * Target Name. + */ + name: string; + /** + * User ID. + */ + userId: string; + /** + * Provider ID. + */ + providerId?: string; + /** + * The target provider type. Can be one of the following: `email`, `sms` or `push`. + */ + providerType: string; + /** + * The target identifier. + */ + identifier: string; + }; +} + +export { Models }; diff --git a/node_modules/node-appwrite/dist/models.js b/node_modules/node-appwrite/dist/models.js new file mode 100644 index 0000000..f7e3ad4 --- /dev/null +++ b/node_modules/node-appwrite/dist/models.js @@ -0,0 +1,4 @@ +'use strict'; + +//# sourceMappingURL=out.js.map +//# sourceMappingURL=models.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/models.js.map b/node_modules/node-appwrite/dist/models.js.map new file mode 100644 index 0000000..a464c67 --- /dev/null +++ b/node_modules/node-appwrite/dist/models.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":""} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/models.mjs b/node_modules/node-appwrite/dist/models.mjs new file mode 100644 index 0000000..56ea1c5 --- /dev/null +++ b/node_modules/node-appwrite/dist/models.mjs @@ -0,0 +1,3 @@ + +//# sourceMappingURL=out.js.map +//# sourceMappingURL=models.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/models.mjs.map b/node_modules/node-appwrite/dist/models.mjs.map new file mode 100644 index 0000000..a464c67 --- /dev/null +++ b/node_modules/node-appwrite/dist/models.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":""} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/permission.d.mts b/node_modules/node-appwrite/dist/permission.d.mts new file mode 100644 index 0000000..cf73660 --- /dev/null +++ b/node_modules/node-appwrite/dist/permission.d.mts @@ -0,0 +1,45 @@ +/** + * Helper class to generate permission strings for resources. + */ +declare class Permission { + /** + * Generate read permission string for the provided role. + * + * @param {string} role + * @returns {string} + */ + static read: (role: string) => string; + /** + * Generate write permission string for the provided role. + * + * This is an alias of update, delete, and possibly create. + * Don't use write in combination with update, delete, or create. + * + * @param {string} role + * @returns {string} + */ + static write: (role: string) => string; + /** + * Generate create permission string for the provided role. + * + * @param {string} role + * @returns {string} + */ + static create: (role: string) => string; + /** + * Generate update permission string for the provided role. + * + * @param {string} role + * @returns {string} + */ + static update: (role: string) => string; + /** + * Generate delete permission string for the provided role. + * + * @param {string} role + * @returns {string} + */ + static delete: (role: string) => string; +} + +export { Permission }; diff --git a/node_modules/node-appwrite/dist/permission.d.ts b/node_modules/node-appwrite/dist/permission.d.ts new file mode 100644 index 0000000..cf73660 --- /dev/null +++ b/node_modules/node-appwrite/dist/permission.d.ts @@ -0,0 +1,45 @@ +/** + * Helper class to generate permission strings for resources. + */ +declare class Permission { + /** + * Generate read permission string for the provided role. + * + * @param {string} role + * @returns {string} + */ + static read: (role: string) => string; + /** + * Generate write permission string for the provided role. + * + * This is an alias of update, delete, and possibly create. + * Don't use write in combination with update, delete, or create. + * + * @param {string} role + * @returns {string} + */ + static write: (role: string) => string; + /** + * Generate create permission string for the provided role. + * + * @param {string} role + * @returns {string} + */ + static create: (role: string) => string; + /** + * Generate update permission string for the provided role. + * + * @param {string} role + * @returns {string} + */ + static update: (role: string) => string; + /** + * Generate delete permission string for the provided role. + * + * @param {string} role + * @returns {string} + */ + static delete: (role: string) => string; +} + +export { Permission }; diff --git a/node_modules/node-appwrite/dist/permission.js b/node_modules/node-appwrite/dist/permission.js new file mode 100644 index 0000000..9dfb2dc --- /dev/null +++ b/node_modules/node-appwrite/dist/permission.js @@ -0,0 +1,56 @@ +'use strict'; + +class Permission { +} +/** + * Generate read permission string for the provided role. + * + * @param {string} role + * @returns {string} + */ +Permission.read = (role) => { + return `read("${role}")`; +}; +/** + * Generate write permission string for the provided role. + * + * This is an alias of update, delete, and possibly create. + * Don't use write in combination with update, delete, or create. + * + * @param {string} role + * @returns {string} + */ +Permission.write = (role) => { + return `write("${role}")`; +}; +/** + * Generate create permission string for the provided role. + * + * @param {string} role + * @returns {string} + */ +Permission.create = (role) => { + return `create("${role}")`; +}; +/** + * Generate update permission string for the provided role. + * + * @param {string} role + * @returns {string} + */ +Permission.update = (role) => { + return `update("${role}")`; +}; +/** + * Generate delete permission string for the provided role. + * + * @param {string} role + * @returns {string} + */ +Permission.delete = (role) => { + return `delete("${role}")`; +}; + +exports.Permission = Permission; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=permission.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/permission.js.map b/node_modules/node-appwrite/dist/permission.js.map new file mode 100644 index 0000000..150238c --- /dev/null +++ b/node_modules/node-appwrite/dist/permission.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/permission.ts"],"names":[],"mappings":"AAGO,MAAM,WAAW;AAqDxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AArDa,WAOF,OAAO,CAAC,SAAyB;AACpC,SAAO,SAAS,IAAI;AACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AATS,WAoBF,QAAQ,CAAC,SAAyB;AACrC,SAAO,UAAU,IAAI;AACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAtBS,WA8BF,SAAS,CAAC,SAAyB;AACtC,SAAO,WAAW,IAAI;AAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAhCS,WAwCF,SAAS,CAAC,SAAyB;AACtC,SAAO,WAAW,IAAI;AAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA1CS,WAkDF,SAAS,CAAC,SAAyB;AACtC,SAAO,WAAW,IAAI;AAC1B","sourcesContent":["/**\n * Helper class to generate permission strings for resources.\n */\nexport class Permission {\n /**\n * Generate read permission string for the provided role.\n *\n * @param {string} role\n * @returns {string}\n */\n static read = (role: string): string => {\n return `read(\"${role}\")`;\n }\n\n /**\n * Generate write permission string for the provided role.\n *\n * This is an alias of update, delete, and possibly create.\n * Don't use write in combination with update, delete, or create.\n *\n * @param {string} role\n * @returns {string}\n */\n static write = (role: string): string => {\n return `write(\"${role}\")`;\n }\n\n /**\n * Generate create permission string for the provided role.\n *\n * @param {string} role\n * @returns {string}\n */\n static create = (role: string): string => {\n return `create(\"${role}\")`;\n }\n\n /**\n * Generate update permission string for the provided role.\n *\n * @param {string} role\n * @returns {string}\n */\n static update = (role: string): string => {\n return `update(\"${role}\")`;\n }\n\n /**\n * Generate delete permission string for the provided role.\n *\n * @param {string} role\n * @returns {string}\n */\n static delete = (role: string): string => {\n return `delete(\"${role}\")`;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/permission.mjs b/node_modules/node-appwrite/dist/permission.mjs new file mode 100644 index 0000000..609001d --- /dev/null +++ b/node_modules/node-appwrite/dist/permission.mjs @@ -0,0 +1,55 @@ +// src/permission.ts +var Permission = class { +}; +/** + * Generate read permission string for the provided role. + * + * @param {string} role + * @returns {string} + */ +Permission.read = (role) => { + return `read("${role}")`; +}; +/** + * Generate write permission string for the provided role. + * + * This is an alias of update, delete, and possibly create. + * Don't use write in combination with update, delete, or create. + * + * @param {string} role + * @returns {string} + */ +Permission.write = (role) => { + return `write("${role}")`; +}; +/** + * Generate create permission string for the provided role. + * + * @param {string} role + * @returns {string} + */ +Permission.create = (role) => { + return `create("${role}")`; +}; +/** + * Generate update permission string for the provided role. + * + * @param {string} role + * @returns {string} + */ +Permission.update = (role) => { + return `update("${role}")`; +}; +/** + * Generate delete permission string for the provided role. + * + * @param {string} role + * @returns {string} + */ +Permission.delete = (role) => { + return `delete("${role}")`; +}; + +export { Permission }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=permission.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/permission.mjs.map b/node_modules/node-appwrite/dist/permission.mjs.map new file mode 100644 index 0000000..67d3aae --- /dev/null +++ b/node_modules/node-appwrite/dist/permission.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/permission.ts"],"names":[],"mappings":";AAGO,IAAM,aAAN,MAAiB;AAqDxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AArDa,WAOF,OAAO,CAAC,SAAyB;AACpC,SAAO,SAAS,IAAI;AACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AATS,WAoBF,QAAQ,CAAC,SAAyB;AACrC,SAAO,UAAU,IAAI;AACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAtBS,WA8BF,SAAS,CAAC,SAAyB;AACtC,SAAO,WAAW,IAAI;AAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAhCS,WAwCF,SAAS,CAAC,SAAyB;AACtC,SAAO,WAAW,IAAI;AAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA1CS,WAkDF,SAAS,CAAC,SAAyB;AACtC,SAAO,WAAW,IAAI;AAC1B","sourcesContent":["/**\n * Helper class to generate permission strings for resources.\n */\nexport class Permission {\n /**\n * Generate read permission string for the provided role.\n *\n * @param {string} role\n * @returns {string}\n */\n static read = (role: string): string => {\n return `read(\"${role}\")`;\n }\n\n /**\n * Generate write permission string for the provided role.\n *\n * This is an alias of update, delete, and possibly create.\n * Don't use write in combination with update, delete, or create.\n *\n * @param {string} role\n * @returns {string}\n */\n static write = (role: string): string => {\n return `write(\"${role}\")`;\n }\n\n /**\n * Generate create permission string for the provided role.\n *\n * @param {string} role\n * @returns {string}\n */\n static create = (role: string): string => {\n return `create(\"${role}\")`;\n }\n\n /**\n * Generate update permission string for the provided role.\n *\n * @param {string} role\n * @returns {string}\n */\n static update = (role: string): string => {\n return `update(\"${role}\")`;\n }\n\n /**\n * Generate delete permission string for the provided role.\n *\n * @param {string} role\n * @returns {string}\n */\n static delete = (role: string): string => {\n return `delete(\"${role}\")`;\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/query.d.mts b/node_modules/node-appwrite/dist/query.d.mts new file mode 100644 index 0000000..3b8720d --- /dev/null +++ b/node_modules/node-appwrite/dist/query.d.mts @@ -0,0 +1,195 @@ +type QueryTypesSingle = string | number | boolean; +type QueryTypesList = string[] | number[] | boolean[] | Query[]; +type QueryTypes = QueryTypesSingle | QueryTypesList; +type AttributesTypes = string | string[]; +/** + * Helper class to generate query strings. + */ +declare class Query { + method: string; + attribute: AttributesTypes | undefined; + values: QueryTypesList | undefined; + /** + * Constructor for Query class. + * + * @param {string} method + * @param {AttributesTypes} attribute + * @param {QueryTypes} values + */ + constructor(method: string, attribute?: AttributesTypes, values?: QueryTypes); + /** + * Convert the query object to a JSON string. + * + * @returns {string} + */ + toString(): string; + /** + * Filter resources where attribute is equal to value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ + static equal: (attribute: string, value: QueryTypes) => string; + /** + * Filter resources where attribute is not equal to value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ + static notEqual: (attribute: string, value: QueryTypes) => string; + /** + * Filter resources where attribute is less than value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ + static lessThan: (attribute: string, value: QueryTypes) => string; + /** + * Filter resources where attribute is less than or equal to value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ + static lessThanEqual: (attribute: string, value: QueryTypes) => string; + /** + * Filter resources where attribute is greater than value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ + static greaterThan: (attribute: string, value: QueryTypes) => string; + /** + * Filter resources where attribute is greater than or equal to value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ + static greaterThanEqual: (attribute: string, value: QueryTypes) => string; + /** + * Filter resources where attribute is null. + * + * @param {string} attribute + * @returns {string} + */ + static isNull: (attribute: string) => string; + /** + * Filter resources where attribute is not null. + * + * @param {string} attribute + * @returns {string} + */ + static isNotNull: (attribute: string) => string; + /** + * Filter resources where attribute is between start and end (inclusive). + * + * @param {string} attribute + * @param {string | number} start + * @param {string | number} end + * @returns {string} + */ + static between: (attribute: string, start: string | number, end: string | number) => string; + /** + * Filter resources where attribute starts with value. + * + * @param {string} attribute + * @param {string} value + * @returns {string} + */ + static startsWith: (attribute: string, value: string) => string; + /** + * Filter resources where attribute ends with value. + * + * @param {string} attribute + * @param {string} value + * @returns {string} + */ + static endsWith: (attribute: string, value: string) => string; + /** + * Specify which attributes should be returned by the API call. + * + * @param {string[]} attributes + * @returns {string} + */ + static select: (attributes: string[]) => string; + /** + * Filter resources by searching attribute for value. + * A fulltext index on attribute is required for this query to work. + * + * @param {string} attribute + * @param {string} value + * @returns {string} + */ + static search: (attribute: string, value: string) => string; + /** + * Sort results by attribute descending. + * + * @param {string} attribute + * @returns {string} + */ + static orderDesc: (attribute: string) => string; + /** + * Sort results by attribute ascending. + * + * @param {string} attribute + * @returns {string} + */ + static orderAsc: (attribute: string) => string; + /** + * Return results after documentId. + * + * @param {string} documentId + * @returns {string} + */ + static cursorAfter: (documentId: string) => string; + /** + * Return results before documentId. + * + * @param {string} documentId + * @returns {string} + */ + static cursorBefore: (documentId: string) => string; + /** + * Return only limit results. + * + * @param {number} limit + * @returns {string} + */ + static limit: (limit: number) => string; + /** + * Filter resources by skipping the first offset results. + * + * @param {number} offset + * @returns {string} + */ + static offset: (offset: number) => string; + /** + * Filter resources where attribute contains the specified value. + * + * @param {string} attribute + * @param {string | string[]} value + * @returns {string} + */ + static contains: (attribute: string, value: string | string[]) => string; + /** + * Combine multiple queries using logical OR operator. + * + * @param {string[]} queries + * @returns {string} + */ + static or: (queries: string[]) => string; + /** + * Combine multiple queries using logical AND operator. + * + * @param {string[]} queries + * @returns {string} + */ + static and: (queries: string[]) => string; +} + +export { Query, QueryTypes, QueryTypesList }; diff --git a/node_modules/node-appwrite/dist/query.d.ts b/node_modules/node-appwrite/dist/query.d.ts new file mode 100644 index 0000000..3b8720d --- /dev/null +++ b/node_modules/node-appwrite/dist/query.d.ts @@ -0,0 +1,195 @@ +type QueryTypesSingle = string | number | boolean; +type QueryTypesList = string[] | number[] | boolean[] | Query[]; +type QueryTypes = QueryTypesSingle | QueryTypesList; +type AttributesTypes = string | string[]; +/** + * Helper class to generate query strings. + */ +declare class Query { + method: string; + attribute: AttributesTypes | undefined; + values: QueryTypesList | undefined; + /** + * Constructor for Query class. + * + * @param {string} method + * @param {AttributesTypes} attribute + * @param {QueryTypes} values + */ + constructor(method: string, attribute?: AttributesTypes, values?: QueryTypes); + /** + * Convert the query object to a JSON string. + * + * @returns {string} + */ + toString(): string; + /** + * Filter resources where attribute is equal to value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ + static equal: (attribute: string, value: QueryTypes) => string; + /** + * Filter resources where attribute is not equal to value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ + static notEqual: (attribute: string, value: QueryTypes) => string; + /** + * Filter resources where attribute is less than value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ + static lessThan: (attribute: string, value: QueryTypes) => string; + /** + * Filter resources where attribute is less than or equal to value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ + static lessThanEqual: (attribute: string, value: QueryTypes) => string; + /** + * Filter resources where attribute is greater than value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ + static greaterThan: (attribute: string, value: QueryTypes) => string; + /** + * Filter resources where attribute is greater than or equal to value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ + static greaterThanEqual: (attribute: string, value: QueryTypes) => string; + /** + * Filter resources where attribute is null. + * + * @param {string} attribute + * @returns {string} + */ + static isNull: (attribute: string) => string; + /** + * Filter resources where attribute is not null. + * + * @param {string} attribute + * @returns {string} + */ + static isNotNull: (attribute: string) => string; + /** + * Filter resources where attribute is between start and end (inclusive). + * + * @param {string} attribute + * @param {string | number} start + * @param {string | number} end + * @returns {string} + */ + static between: (attribute: string, start: string | number, end: string | number) => string; + /** + * Filter resources where attribute starts with value. + * + * @param {string} attribute + * @param {string} value + * @returns {string} + */ + static startsWith: (attribute: string, value: string) => string; + /** + * Filter resources where attribute ends with value. + * + * @param {string} attribute + * @param {string} value + * @returns {string} + */ + static endsWith: (attribute: string, value: string) => string; + /** + * Specify which attributes should be returned by the API call. + * + * @param {string[]} attributes + * @returns {string} + */ + static select: (attributes: string[]) => string; + /** + * Filter resources by searching attribute for value. + * A fulltext index on attribute is required for this query to work. + * + * @param {string} attribute + * @param {string} value + * @returns {string} + */ + static search: (attribute: string, value: string) => string; + /** + * Sort results by attribute descending. + * + * @param {string} attribute + * @returns {string} + */ + static orderDesc: (attribute: string) => string; + /** + * Sort results by attribute ascending. + * + * @param {string} attribute + * @returns {string} + */ + static orderAsc: (attribute: string) => string; + /** + * Return results after documentId. + * + * @param {string} documentId + * @returns {string} + */ + static cursorAfter: (documentId: string) => string; + /** + * Return results before documentId. + * + * @param {string} documentId + * @returns {string} + */ + static cursorBefore: (documentId: string) => string; + /** + * Return only limit results. + * + * @param {number} limit + * @returns {string} + */ + static limit: (limit: number) => string; + /** + * Filter resources by skipping the first offset results. + * + * @param {number} offset + * @returns {string} + */ + static offset: (offset: number) => string; + /** + * Filter resources where attribute contains the specified value. + * + * @param {string} attribute + * @param {string | string[]} value + * @returns {string} + */ + static contains: (attribute: string, value: string | string[]) => string; + /** + * Combine multiple queries using logical OR operator. + * + * @param {string[]} queries + * @returns {string} + */ + static or: (queries: string[]) => string; + /** + * Combine multiple queries using logical AND operator. + * + * @param {string[]} queries + * @returns {string} + */ + static and: (queries: string[]) => string; +} + +export { Query, QueryTypes, QueryTypesList }; diff --git a/node_modules/node-appwrite/dist/query.js b/node_modules/node-appwrite/dist/query.js new file mode 100644 index 0000000..75509f3 --- /dev/null +++ b/node_modules/node-appwrite/dist/query.js @@ -0,0 +1,206 @@ +'use strict'; + +const _Query = class _Query { + /** + * Constructor for Query class. + * + * @param {string} method + * @param {AttributesTypes} attribute + * @param {QueryTypes} values + */ + constructor(method, attribute, values) { + this.method = method; + this.attribute = attribute; + if (values !== void 0) { + if (Array.isArray(values)) { + this.values = values; + } else { + this.values = [values]; + } + } + } + /** + * Convert the query object to a JSON string. + * + * @returns {string} + */ + toString() { + return JSON.stringify({ + method: this.method, + attribute: this.attribute, + values: this.values + }); + } +}; +/** + * Filter resources where attribute is equal to value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ +_Query.equal = (attribute, value) => new _Query("equal", attribute, value).toString(); +/** + * Filter resources where attribute is not equal to value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ +_Query.notEqual = (attribute, value) => new _Query("notEqual", attribute, value).toString(); +/** + * Filter resources where attribute is less than value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ +_Query.lessThan = (attribute, value) => new _Query("lessThan", attribute, value).toString(); +/** + * Filter resources where attribute is less than or equal to value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ +_Query.lessThanEqual = (attribute, value) => new _Query("lessThanEqual", attribute, value).toString(); +/** + * Filter resources where attribute is greater than value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ +_Query.greaterThan = (attribute, value) => new _Query("greaterThan", attribute, value).toString(); +/** + * Filter resources where attribute is greater than or equal to value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ +_Query.greaterThanEqual = (attribute, value) => new _Query("greaterThanEqual", attribute, value).toString(); +/** + * Filter resources where attribute is null. + * + * @param {string} attribute + * @returns {string} + */ +_Query.isNull = (attribute) => new _Query("isNull", attribute).toString(); +/** + * Filter resources where attribute is not null. + * + * @param {string} attribute + * @returns {string} + */ +_Query.isNotNull = (attribute) => new _Query("isNotNull", attribute).toString(); +/** + * Filter resources where attribute is between start and end (inclusive). + * + * @param {string} attribute + * @param {string | number} start + * @param {string | number} end + * @returns {string} + */ +_Query.between = (attribute, start, end) => new _Query("between", attribute, [start, end]).toString(); +/** + * Filter resources where attribute starts with value. + * + * @param {string} attribute + * @param {string} value + * @returns {string} + */ +_Query.startsWith = (attribute, value) => new _Query("startsWith", attribute, value).toString(); +/** + * Filter resources where attribute ends with value. + * + * @param {string} attribute + * @param {string} value + * @returns {string} + */ +_Query.endsWith = (attribute, value) => new _Query("endsWith", attribute, value).toString(); +/** + * Specify which attributes should be returned by the API call. + * + * @param {string[]} attributes + * @returns {string} + */ +_Query.select = (attributes) => new _Query("select", void 0, attributes).toString(); +/** + * Filter resources by searching attribute for value. + * A fulltext index on attribute is required for this query to work. + * + * @param {string} attribute + * @param {string} value + * @returns {string} + */ +_Query.search = (attribute, value) => new _Query("search", attribute, value).toString(); +/** + * Sort results by attribute descending. + * + * @param {string} attribute + * @returns {string} + */ +_Query.orderDesc = (attribute) => new _Query("orderDesc", attribute).toString(); +/** + * Sort results by attribute ascending. + * + * @param {string} attribute + * @returns {string} + */ +_Query.orderAsc = (attribute) => new _Query("orderAsc", attribute).toString(); +/** + * Return results after documentId. + * + * @param {string} documentId + * @returns {string} + */ +_Query.cursorAfter = (documentId) => new _Query("cursorAfter", void 0, documentId).toString(); +/** + * Return results before documentId. + * + * @param {string} documentId + * @returns {string} + */ +_Query.cursorBefore = (documentId) => new _Query("cursorBefore", void 0, documentId).toString(); +/** + * Return only limit results. + * + * @param {number} limit + * @returns {string} + */ +_Query.limit = (limit) => new _Query("limit", void 0, limit).toString(); +/** + * Filter resources by skipping the first offset results. + * + * @param {number} offset + * @returns {string} + */ +_Query.offset = (offset) => new _Query("offset", void 0, offset).toString(); +/** + * Filter resources where attribute contains the specified value. + * + * @param {string} attribute + * @param {string | string[]} value + * @returns {string} + */ +_Query.contains = (attribute, value) => new _Query("contains", attribute, value).toString(); +/** + * Combine multiple queries using logical OR operator. + * + * @param {string[]} queries + * @returns {string} + */ +_Query.or = (queries) => new _Query("or", void 0, queries.map((query) => JSON.parse(query))).toString(); +/** + * Combine multiple queries using logical AND operator. + * + * @param {string[]} queries + * @returns {string} + */ +_Query.and = (queries) => new _Query("and", void 0, queries.map((query) => JSON.parse(query))).toString(); +let Query = _Query; + +exports.Query = Query; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=query.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/query.js.map b/node_modules/node-appwrite/dist/query.js.map new file mode 100644 index 0000000..1778acd --- /dev/null +++ b/node_modules/node-appwrite/dist/query.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/query.ts"],"names":[],"mappings":"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","sourcesContent":["type QueryTypesSingle = string | number | boolean;\nexport type QueryTypesList = string[] | number[] | boolean[] | Query[];\nexport type QueryTypes = QueryTypesSingle | QueryTypesList;\ntype AttributesTypes = string | string[];\n\n/**\n * Helper class to generate query strings.\n */\nexport class Query {\n method: string;\n attribute: AttributesTypes | undefined;\n values: QueryTypesList | undefined;\n\n /**\n * Constructor for Query class.\n *\n * @param {string} method\n * @param {AttributesTypes} attribute\n * @param {QueryTypes} values\n */\n constructor(\n method: string,\n attribute?: AttributesTypes,\n values?: QueryTypes\n ) {\n this.method = method;\n this.attribute = attribute;\n\n if (values !== undefined) {\n if (Array.isArray(values)) {\n this.values = values;\n } else {\n this.values = [values] as QueryTypesList;\n }\n }\n }\n\n /**\n * Convert the query object to a JSON string.\n *\n * @returns {string}\n */\n toString(): string {\n return JSON.stringify({\n method: this.method,\n attribute: this.attribute,\n values: this.values,\n });\n }\n\n /**\n * Filter resources where attribute is equal to value.\n *\n * @param {string} attribute\n * @param {QueryTypes} value\n * @returns {string}\n */\n static equal = (attribute: string, value: QueryTypes): string =>\n new Query(\"equal\", attribute, value).toString();\n\n /**\n * Filter resources where attribute is not equal to value.\n *\n * @param {string} attribute\n * @param {QueryTypes} value\n * @returns {string}\n */\n static notEqual = (attribute: string, value: QueryTypes): string =>\n new Query(\"notEqual\", attribute, value).toString();\n\n /**\n * Filter resources where attribute is less than value.\n *\n * @param {string} attribute\n * @param {QueryTypes} value\n * @returns {string}\n */\n static lessThan = (attribute: string, value: QueryTypes): string =>\n new Query(\"lessThan\", attribute, value).toString();\n\n /**\n * Filter resources where attribute is less than or equal to value.\n *\n * @param {string} attribute\n * @param {QueryTypes} value\n * @returns {string}\n */\n static lessThanEqual = (attribute: string, value: QueryTypes): string =>\n new Query(\"lessThanEqual\", attribute, value).toString();\n\n /**\n * Filter resources where attribute is greater than value.\n *\n * @param {string} attribute\n * @param {QueryTypes} value\n * @returns {string}\n */\n static greaterThan = (attribute: string, value: QueryTypes): string =>\n new Query(\"greaterThan\", attribute, value).toString();\n\n /**\n * Filter resources where attribute is greater than or equal to value.\n *\n * @param {string} attribute\n * @param {QueryTypes} value\n * @returns {string}\n */\n static greaterThanEqual = (attribute: string, value: QueryTypes): string =>\n new Query(\"greaterThanEqual\", attribute, value).toString();\n\n /**\n * Filter resources where attribute is null.\n *\n * @param {string} attribute\n * @returns {string}\n */\n static isNull = (attribute: string): string =>\n new Query(\"isNull\", attribute).toString();\n\n /**\n * Filter resources where attribute is not null.\n *\n * @param {string} attribute\n * @returns {string}\n */\n static isNotNull = (attribute: string): string =>\n new Query(\"isNotNull\", attribute).toString();\n\n /**\n * Filter resources where attribute is between start and end (inclusive).\n *\n * @param {string} attribute\n * @param {string | number} start\n * @param {string | number} end\n * @returns {string}\n */\n static between = (attribute: string, start: string | number, end: string | number): string =>\n new Query(\"between\", attribute, [start, end] as QueryTypesList).toString();\n\n /**\n * Filter resources where attribute starts with value.\n *\n * @param {string} attribute\n * @param {string} value\n * @returns {string}\n */\n static startsWith = (attribute: string, value: string): string =>\n new Query(\"startsWith\", attribute, value).toString();\n\n /**\n * Filter resources where attribute ends with value.\n *\n * @param {string} attribute\n * @param {string} value\n * @returns {string}\n */\n static endsWith = (attribute: string, value: string): string =>\n new Query(\"endsWith\", attribute, value).toString();\n\n /**\n * Specify which attributes should be returned by the API call.\n *\n * @param {string[]} attributes\n * @returns {string}\n */\n static select = (attributes: string[]): string =>\n new Query(\"select\", undefined, attributes).toString();\n\n /**\n * Filter resources by searching attribute for value.\n * A fulltext index on attribute is required for this query to work.\n *\n * @param {string} attribute\n * @param {string} value\n * @returns {string}\n */\n static search = (attribute: string, value: string): string =>\n new Query(\"search\", attribute, value).toString();\n\n /**\n * Sort results by attribute descending.\n *\n * @param {string} attribute\n * @returns {string}\n */\n static orderDesc = (attribute: string): string =>\n new Query(\"orderDesc\", attribute).toString();\n\n /**\n * Sort results by attribute ascending.\n *\n * @param {string} attribute\n * @returns {string}\n */\n static orderAsc = (attribute: string): string =>\n new Query(\"orderAsc\", attribute).toString();\n\n /**\n * Return results after documentId.\n *\n * @param {string} documentId\n * @returns {string}\n */\n static cursorAfter = (documentId: string): string =>\n new Query(\"cursorAfter\", undefined, documentId).toString();\n\n /**\n * Return results before documentId.\n *\n * @param {string} documentId\n * @returns {string}\n */\n static cursorBefore = (documentId: string): string =>\n new Query(\"cursorBefore\", undefined, documentId).toString();\n\n /**\n * Return only limit results.\n *\n * @param {number} limit\n * @returns {string}\n */\n static limit = (limit: number): string =>\n new Query(\"limit\", undefined, limit).toString();\n\n /**\n * Filter resources by skipping the first offset results.\n *\n * @param {number} offset\n * @returns {string}\n */\n static offset = (offset: number): string =>\n new Query(\"offset\", undefined, offset).toString();\n\n /**\n * Filter resources where attribute contains the specified value.\n *\n * @param {string} attribute\n * @param {string | string[]} value\n * @returns {string}\n */\n static contains = (attribute: string, value: string | string[]): string =>\n new Query(\"contains\", attribute, value).toString();\n\n /**\n * Combine multiple queries using logical OR operator.\n *\n * @param {string[]} queries\n * @returns {string}\n */\n static or = (queries: string[]) =>\n new Query(\"or\", undefined, queries.map((query) => JSON.parse(query))).toString();\n\n /**\n * Combine multiple queries using logical AND operator.\n *\n * @param {string[]} queries\n * @returns {string}\n */\n static and = (queries: string[]) =>\n new Query(\"and\", undefined, queries.map((query) => JSON.parse(query))).toString();\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/query.mjs b/node_modules/node-appwrite/dist/query.mjs new file mode 100644 index 0000000..24db8ee --- /dev/null +++ b/node_modules/node-appwrite/dist/query.mjs @@ -0,0 +1,205 @@ +// src/query.ts +var _Query = class _Query { + /** + * Constructor for Query class. + * + * @param {string} method + * @param {AttributesTypes} attribute + * @param {QueryTypes} values + */ + constructor(method, attribute, values) { + this.method = method; + this.attribute = attribute; + if (values !== void 0) { + if (Array.isArray(values)) { + this.values = values; + } else { + this.values = [values]; + } + } + } + /** + * Convert the query object to a JSON string. + * + * @returns {string} + */ + toString() { + return JSON.stringify({ + method: this.method, + attribute: this.attribute, + values: this.values + }); + } +}; +/** + * Filter resources where attribute is equal to value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ +_Query.equal = (attribute, value) => new _Query("equal", attribute, value).toString(); +/** + * Filter resources where attribute is not equal to value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ +_Query.notEqual = (attribute, value) => new _Query("notEqual", attribute, value).toString(); +/** + * Filter resources where attribute is less than value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ +_Query.lessThan = (attribute, value) => new _Query("lessThan", attribute, value).toString(); +/** + * Filter resources where attribute is less than or equal to value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ +_Query.lessThanEqual = (attribute, value) => new _Query("lessThanEqual", attribute, value).toString(); +/** + * Filter resources where attribute is greater than value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ +_Query.greaterThan = (attribute, value) => new _Query("greaterThan", attribute, value).toString(); +/** + * Filter resources where attribute is greater than or equal to value. + * + * @param {string} attribute + * @param {QueryTypes} value + * @returns {string} + */ +_Query.greaterThanEqual = (attribute, value) => new _Query("greaterThanEqual", attribute, value).toString(); +/** + * Filter resources where attribute is null. + * + * @param {string} attribute + * @returns {string} + */ +_Query.isNull = (attribute) => new _Query("isNull", attribute).toString(); +/** + * Filter resources where attribute is not null. + * + * @param {string} attribute + * @returns {string} + */ +_Query.isNotNull = (attribute) => new _Query("isNotNull", attribute).toString(); +/** + * Filter resources where attribute is between start and end (inclusive). + * + * @param {string} attribute + * @param {string | number} start + * @param {string | number} end + * @returns {string} + */ +_Query.between = (attribute, start, end) => new _Query("between", attribute, [start, end]).toString(); +/** + * Filter resources where attribute starts with value. + * + * @param {string} attribute + * @param {string} value + * @returns {string} + */ +_Query.startsWith = (attribute, value) => new _Query("startsWith", attribute, value).toString(); +/** + * Filter resources where attribute ends with value. + * + * @param {string} attribute + * @param {string} value + * @returns {string} + */ +_Query.endsWith = (attribute, value) => new _Query("endsWith", attribute, value).toString(); +/** + * Specify which attributes should be returned by the API call. + * + * @param {string[]} attributes + * @returns {string} + */ +_Query.select = (attributes) => new _Query("select", void 0, attributes).toString(); +/** + * Filter resources by searching attribute for value. + * A fulltext index on attribute is required for this query to work. + * + * @param {string} attribute + * @param {string} value + * @returns {string} + */ +_Query.search = (attribute, value) => new _Query("search", attribute, value).toString(); +/** + * Sort results by attribute descending. + * + * @param {string} attribute + * @returns {string} + */ +_Query.orderDesc = (attribute) => new _Query("orderDesc", attribute).toString(); +/** + * Sort results by attribute ascending. + * + * @param {string} attribute + * @returns {string} + */ +_Query.orderAsc = (attribute) => new _Query("orderAsc", attribute).toString(); +/** + * Return results after documentId. + * + * @param {string} documentId + * @returns {string} + */ +_Query.cursorAfter = (documentId) => new _Query("cursorAfter", void 0, documentId).toString(); +/** + * Return results before documentId. + * + * @param {string} documentId + * @returns {string} + */ +_Query.cursorBefore = (documentId) => new _Query("cursorBefore", void 0, documentId).toString(); +/** + * Return only limit results. + * + * @param {number} limit + * @returns {string} + */ +_Query.limit = (limit) => new _Query("limit", void 0, limit).toString(); +/** + * Filter resources by skipping the first offset results. + * + * @param {number} offset + * @returns {string} + */ +_Query.offset = (offset) => new _Query("offset", void 0, offset).toString(); +/** + * Filter resources where attribute contains the specified value. + * + * @param {string} attribute + * @param {string | string[]} value + * @returns {string} + */ +_Query.contains = (attribute, value) => new _Query("contains", attribute, value).toString(); +/** + * Combine multiple queries using logical OR operator. + * + * @param {string[]} queries + * @returns {string} + */ +_Query.or = (queries) => new _Query("or", void 0, queries.map((query) => JSON.parse(query))).toString(); +/** + * Combine multiple queries using logical AND operator. + * + * @param {string[]} queries + * @returns {string} + */ +_Query.and = (queries) => new _Query("and", void 0, queries.map((query) => JSON.parse(query))).toString(); +var Query = _Query; + +export { Query }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=query.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/query.mjs.map b/node_modules/node-appwrite/dist/query.mjs.map new file mode 100644 index 0000000..553a356 --- /dev/null +++ b/node_modules/node-appwrite/dist/query.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/query.ts"],"names":[],"mappings":"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","sourcesContent":["type QueryTypesSingle = string | number | boolean;\nexport type QueryTypesList = string[] | number[] | boolean[] | Query[];\nexport type QueryTypes = QueryTypesSingle | QueryTypesList;\ntype AttributesTypes = string | string[];\n\n/**\n * Helper class to generate query strings.\n */\nexport class Query {\n method: string;\n attribute: AttributesTypes | undefined;\n values: QueryTypesList | undefined;\n\n /**\n * Constructor for Query class.\n *\n * @param {string} method\n * @param {AttributesTypes} attribute\n * @param {QueryTypes} values\n */\n constructor(\n method: string,\n attribute?: AttributesTypes,\n values?: QueryTypes\n ) {\n this.method = method;\n this.attribute = attribute;\n\n if (values !== undefined) {\n if (Array.isArray(values)) {\n this.values = values;\n } else {\n this.values = [values] as QueryTypesList;\n }\n }\n }\n\n /**\n * Convert the query object to a JSON string.\n *\n * @returns {string}\n */\n toString(): string {\n return JSON.stringify({\n method: this.method,\n attribute: this.attribute,\n values: this.values,\n });\n }\n\n /**\n * Filter resources where attribute is equal to value.\n *\n * @param {string} attribute\n * @param {QueryTypes} value\n * @returns {string}\n */\n static equal = (attribute: string, value: QueryTypes): string =>\n new Query(\"equal\", attribute, value).toString();\n\n /**\n * Filter resources where attribute is not equal to value.\n *\n * @param {string} attribute\n * @param {QueryTypes} value\n * @returns {string}\n */\n static notEqual = (attribute: string, value: QueryTypes): string =>\n new Query(\"notEqual\", attribute, value).toString();\n\n /**\n * Filter resources where attribute is less than value.\n *\n * @param {string} attribute\n * @param {QueryTypes} value\n * @returns {string}\n */\n static lessThan = (attribute: string, value: QueryTypes): string =>\n new Query(\"lessThan\", attribute, value).toString();\n\n /**\n * Filter resources where attribute is less than or equal to value.\n *\n * @param {string} attribute\n * @param {QueryTypes} value\n * @returns {string}\n */\n static lessThanEqual = (attribute: string, value: QueryTypes): string =>\n new Query(\"lessThanEqual\", attribute, value).toString();\n\n /**\n * Filter resources where attribute is greater than value.\n *\n * @param {string} attribute\n * @param {QueryTypes} value\n * @returns {string}\n */\n static greaterThan = (attribute: string, value: QueryTypes): string =>\n new Query(\"greaterThan\", attribute, value).toString();\n\n /**\n * Filter resources where attribute is greater than or equal to value.\n *\n * @param {string} attribute\n * @param {QueryTypes} value\n * @returns {string}\n */\n static greaterThanEqual = (attribute: string, value: QueryTypes): string =>\n new Query(\"greaterThanEqual\", attribute, value).toString();\n\n /**\n * Filter resources where attribute is null.\n *\n * @param {string} attribute\n * @returns {string}\n */\n static isNull = (attribute: string): string =>\n new Query(\"isNull\", attribute).toString();\n\n /**\n * Filter resources where attribute is not null.\n *\n * @param {string} attribute\n * @returns {string}\n */\n static isNotNull = (attribute: string): string =>\n new Query(\"isNotNull\", attribute).toString();\n\n /**\n * Filter resources where attribute is between start and end (inclusive).\n *\n * @param {string} attribute\n * @param {string | number} start\n * @param {string | number} end\n * @returns {string}\n */\n static between = (attribute: string, start: string | number, end: string | number): string =>\n new Query(\"between\", attribute, [start, end] as QueryTypesList).toString();\n\n /**\n * Filter resources where attribute starts with value.\n *\n * @param {string} attribute\n * @param {string} value\n * @returns {string}\n */\n static startsWith = (attribute: string, value: string): string =>\n new Query(\"startsWith\", attribute, value).toString();\n\n /**\n * Filter resources where attribute ends with value.\n *\n * @param {string} attribute\n * @param {string} value\n * @returns {string}\n */\n static endsWith = (attribute: string, value: string): string =>\n new Query(\"endsWith\", attribute, value).toString();\n\n /**\n * Specify which attributes should be returned by the API call.\n *\n * @param {string[]} attributes\n * @returns {string}\n */\n static select = (attributes: string[]): string =>\n new Query(\"select\", undefined, attributes).toString();\n\n /**\n * Filter resources by searching attribute for value.\n * A fulltext index on attribute is required for this query to work.\n *\n * @param {string} attribute\n * @param {string} value\n * @returns {string}\n */\n static search = (attribute: string, value: string): string =>\n new Query(\"search\", attribute, value).toString();\n\n /**\n * Sort results by attribute descending.\n *\n * @param {string} attribute\n * @returns {string}\n */\n static orderDesc = (attribute: string): string =>\n new Query(\"orderDesc\", attribute).toString();\n\n /**\n * Sort results by attribute ascending.\n *\n * @param {string} attribute\n * @returns {string}\n */\n static orderAsc = (attribute: string): string =>\n new Query(\"orderAsc\", attribute).toString();\n\n /**\n * Return results after documentId.\n *\n * @param {string} documentId\n * @returns {string}\n */\n static cursorAfter = (documentId: string): string =>\n new Query(\"cursorAfter\", undefined, documentId).toString();\n\n /**\n * Return results before documentId.\n *\n * @param {string} documentId\n * @returns {string}\n */\n static cursorBefore = (documentId: string): string =>\n new Query(\"cursorBefore\", undefined, documentId).toString();\n\n /**\n * Return only limit results.\n *\n * @param {number} limit\n * @returns {string}\n */\n static limit = (limit: number): string =>\n new Query(\"limit\", undefined, limit).toString();\n\n /**\n * Filter resources by skipping the first offset results.\n *\n * @param {number} offset\n * @returns {string}\n */\n static offset = (offset: number): string =>\n new Query(\"offset\", undefined, offset).toString();\n\n /**\n * Filter resources where attribute contains the specified value.\n *\n * @param {string} attribute\n * @param {string | string[]} value\n * @returns {string}\n */\n static contains = (attribute: string, value: string | string[]): string =>\n new Query(\"contains\", attribute, value).toString();\n\n /**\n * Combine multiple queries using logical OR operator.\n *\n * @param {string[]} queries\n * @returns {string}\n */\n static or = (queries: string[]) =>\n new Query(\"or\", undefined, queries.map((query) => JSON.parse(query))).toString();\n\n /**\n * Combine multiple queries using logical AND operator.\n *\n * @param {string[]} queries\n * @returns {string}\n */\n static and = (queries: string[]) =>\n new Query(\"and\", undefined, queries.map((query) => JSON.parse(query))).toString();\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/role.d.mts b/node_modules/node-appwrite/dist/role.d.mts new file mode 100644 index 0000000..ff8963f --- /dev/null +++ b/node_modules/node-appwrite/dist/role.d.mts @@ -0,0 +1,72 @@ +/** + * Helper class to generate role strings for `Permission`. + */ +declare class Role { + /** + * Grants access to anyone. + * + * This includes authenticated and unauthenticated users. + * + * @returns {string} + */ + static any(): string; + /** + * Grants access to a specific user by user ID. + * + * You can optionally pass verified or unverified for + * `status` to target specific types of users. + * + * @param {string} id + * @param {string} status + * @returns {string} + */ + static user(id: string, status?: string): string; + /** + * Grants access to any authenticated or anonymous user. + * + * You can optionally pass verified or unverified for + * `status` to target specific types of users. + * + * @param {string} status + * @returns {string} + */ + static users(status?: string): string; + /** + * Grants access to any guest user without a session. + * + * Authenticated users don't have access to this role. + * + * @returns {string} + */ + static guests(): string; + /** + * Grants access to a team by team ID. + * + * You can optionally pass a role for `role` to target + * team members with the specified role. + * + * @param {string} id + * @param {string} role + * @returns {string} + */ + static team(id: string, role?: string): string; + /** + * Grants access to a specific member of a team. + * + * When the member is removed from the team, they will + * no longer have access. + * + * @param {string} id + * @returns {string} + */ + static member(id: string): string; + /** + * Grants access to a user with the specified label. + * + * @param {string} name + * @returns {string} + */ + static label(name: string): string; +} + +export { Role }; diff --git a/node_modules/node-appwrite/dist/role.d.ts b/node_modules/node-appwrite/dist/role.d.ts new file mode 100644 index 0000000..ff8963f --- /dev/null +++ b/node_modules/node-appwrite/dist/role.d.ts @@ -0,0 +1,72 @@ +/** + * Helper class to generate role strings for `Permission`. + */ +declare class Role { + /** + * Grants access to anyone. + * + * This includes authenticated and unauthenticated users. + * + * @returns {string} + */ + static any(): string; + /** + * Grants access to a specific user by user ID. + * + * You can optionally pass verified or unverified for + * `status` to target specific types of users. + * + * @param {string} id + * @param {string} status + * @returns {string} + */ + static user(id: string, status?: string): string; + /** + * Grants access to any authenticated or anonymous user. + * + * You can optionally pass verified or unverified for + * `status` to target specific types of users. + * + * @param {string} status + * @returns {string} + */ + static users(status?: string): string; + /** + * Grants access to any guest user without a session. + * + * Authenticated users don't have access to this role. + * + * @returns {string} + */ + static guests(): string; + /** + * Grants access to a team by team ID. + * + * You can optionally pass a role for `role` to target + * team members with the specified role. + * + * @param {string} id + * @param {string} role + * @returns {string} + */ + static team(id: string, role?: string): string; + /** + * Grants access to a specific member of a team. + * + * When the member is removed from the team, they will + * no longer have access. + * + * @param {string} id + * @returns {string} + */ + static member(id: string): string; + /** + * Grants access to a user with the specified label. + * + * @param {string} name + * @returns {string} + */ + static label(name: string): string; +} + +export { Role }; diff --git a/node_modules/node-appwrite/dist/role.js b/node_modules/node-appwrite/dist/role.js new file mode 100644 index 0000000..ef54e97 --- /dev/null +++ b/node_modules/node-appwrite/dist/role.js @@ -0,0 +1,96 @@ +'use strict'; + +class Role { + /** + * Grants access to anyone. + * + * This includes authenticated and unauthenticated users. + * + * @returns {string} + */ + static any() { + return "any"; + } + /** + * Grants access to a specific user by user ID. + * + * You can optionally pass verified or unverified for + * `status` to target specific types of users. + * + * @param {string} id + * @param {string} status + * @returns {string} + */ + static user(id, status = "") { + if (status === "") { + return `user:${id}`; + } + return `user:${id}/${status}`; + } + /** + * Grants access to any authenticated or anonymous user. + * + * You can optionally pass verified or unverified for + * `status` to target specific types of users. + * + * @param {string} status + * @returns {string} + */ + static users(status = "") { + if (status === "") { + return "users"; + } + return `users/${status}`; + } + /** + * Grants access to any guest user without a session. + * + * Authenticated users don't have access to this role. + * + * @returns {string} + */ + static guests() { + return "guests"; + } + /** + * Grants access to a team by team ID. + * + * You can optionally pass a role for `role` to target + * team members with the specified role. + * + * @param {string} id + * @param {string} role + * @returns {string} + */ + static team(id, role = "") { + if (role === "") { + return `team:${id}`; + } + return `team:${id}/${role}`; + } + /** + * Grants access to a specific member of a team. + * + * When the member is removed from the team, they will + * no longer have access. + * + * @param {string} id + * @returns {string} + */ + static member(id) { + return `member:${id}`; + } + /** + * Grants access to a user with the specified label. + * + * @param {string} name + * @returns {string} + */ + static label(name) { + return `label:${name}`; + } +} + +exports.Role = Role; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=role.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/role.js.map b/node_modules/node-appwrite/dist/role.js.map new file mode 100644 index 0000000..5009a20 --- /dev/null +++ b/node_modules/node-appwrite/dist/role.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/role.ts"],"names":[],"mappings":"AAGO,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASd,OAAc,MAAc;AACxB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,OAAc,KAAK,IAAY,SAAiB,IAAY;AACxD,QAAI,WAAW,IAAI;AACf,aAAO,QAAQ,EAAE;AAAA,IACrB;AACA,WAAO,QAAQ,EAAE,IAAI,MAAM;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAc,MAAM,SAAiB,IAAY;AAC7C,QAAI,WAAW,IAAI;AACf,aAAO;AAAA,IACX;AACA,WAAO,SAAS,MAAM;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAc,SAAiB;AAC3B,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,OAAc,KAAK,IAAY,OAAe,IAAY;AACtD,QAAI,SAAS,IAAI;AACb,aAAO,QAAQ,EAAE;AAAA,IACrB;AACA,WAAO,QAAQ,EAAE,IAAI,IAAI;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAc,OAAO,IAAoB;AACrC,WAAO,UAAU,EAAE;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAc,MAAM,MAAsB;AACtC,WAAO,SAAS,IAAI;AAAA,EACxB;AACJ","sourcesContent":["/**\n * Helper class to generate role strings for `Permission`.\n */\nexport class Role {\n\n /**\n * Grants access to anyone.\n * \n * This includes authenticated and unauthenticated users.\n * \n * @returns {string}\n */\n public static any(): string {\n return 'any'\n }\n\n /**\n * Grants access to a specific user by user ID.\n * \n * You can optionally pass verified or unverified for\n * `status` to target specific types of users.\n *\n * @param {string} id \n * @param {string} status \n * @returns {string}\n */\n public static user(id: string, status: string = ''): string {\n if (status === '') {\n return `user:${id}`\n }\n return `user:${id}/${status}`\n }\n\n /**\n * Grants access to any authenticated or anonymous user.\n * \n * You can optionally pass verified or unverified for\n * `status` to target specific types of users.\n * \n * @param {string} status \n * @returns {string}\n */\n public static users(status: string = ''): string {\n if (status === '') {\n return 'users'\n }\n return `users/${status}`\n }\n\n /**\n * Grants access to any guest user without a session.\n * \n * Authenticated users don't have access to this role.\n * \n * @returns {string}\n */\n public static guests(): string {\n return 'guests'\n }\n\n /**\n * Grants access to a team by team ID.\n * \n * You can optionally pass a role for `role` to target\n * team members with the specified role.\n * \n * @param {string} id \n * @param {string} role \n * @returns {string}\n */\n public static team(id: string, role: string = ''): string {\n if (role === '') {\n return `team:${id}`\n }\n return `team:${id}/${role}`\n }\n\n /**\n * Grants access to a specific member of a team.\n * \n * When the member is removed from the team, they will\n * no longer have access.\n * \n * @param {string} id \n * @returns {string}\n */\n public static member(id: string): string {\n return `member:${id}`\n }\n\n /**\n * Grants access to a user with the specified label.\n * \n * @param {string} name \n * @returns {string}\n */\n public static label(name: string): string {\n return `label:${name}`\n }\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/role.mjs b/node_modules/node-appwrite/dist/role.mjs new file mode 100644 index 0000000..6885a96 --- /dev/null +++ b/node_modules/node-appwrite/dist/role.mjs @@ -0,0 +1,95 @@ +// src/role.ts +var Role = class { + /** + * Grants access to anyone. + * + * This includes authenticated and unauthenticated users. + * + * @returns {string} + */ + static any() { + return "any"; + } + /** + * Grants access to a specific user by user ID. + * + * You can optionally pass verified or unverified for + * `status` to target specific types of users. + * + * @param {string} id + * @param {string} status + * @returns {string} + */ + static user(id, status = "") { + if (status === "") { + return `user:${id}`; + } + return `user:${id}/${status}`; + } + /** + * Grants access to any authenticated or anonymous user. + * + * You can optionally pass verified or unverified for + * `status` to target specific types of users. + * + * @param {string} status + * @returns {string} + */ + static users(status = "") { + if (status === "") { + return "users"; + } + return `users/${status}`; + } + /** + * Grants access to any guest user without a session. + * + * Authenticated users don't have access to this role. + * + * @returns {string} + */ + static guests() { + return "guests"; + } + /** + * Grants access to a team by team ID. + * + * You can optionally pass a role for `role` to target + * team members with the specified role. + * + * @param {string} id + * @param {string} role + * @returns {string} + */ + static team(id, role = "") { + if (role === "") { + return `team:${id}`; + } + return `team:${id}/${role}`; + } + /** + * Grants access to a specific member of a team. + * + * When the member is removed from the team, they will + * no longer have access. + * + * @param {string} id + * @returns {string} + */ + static member(id) { + return `member:${id}`; + } + /** + * Grants access to a user with the specified label. + * + * @param {string} name + * @returns {string} + */ + static label(name) { + return `label:${name}`; + } +}; + +export { Role }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=role.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/role.mjs.map b/node_modules/node-appwrite/dist/role.mjs.map new file mode 100644 index 0000000..eef61c6 --- /dev/null +++ b/node_modules/node-appwrite/dist/role.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/role.ts"],"names":[],"mappings":";AAGO,IAAM,OAAN,MAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASd,OAAc,MAAc;AACxB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,OAAc,KAAK,IAAY,SAAiB,IAAY;AACxD,QAAI,WAAW,IAAI;AACf,aAAO,QAAQ,EAAE;AAAA,IACrB;AACA,WAAO,QAAQ,EAAE,IAAI,MAAM;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAc,MAAM,SAAiB,IAAY;AAC7C,QAAI,WAAW,IAAI;AACf,aAAO;AAAA,IACX;AACA,WAAO,SAAS,MAAM;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAc,SAAiB;AAC3B,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,OAAc,KAAK,IAAY,OAAe,IAAY;AACtD,QAAI,SAAS,IAAI;AACb,aAAO,QAAQ,EAAE;AAAA,IACrB;AACA,WAAO,QAAQ,EAAE,IAAI,IAAI;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAc,OAAO,IAAoB;AACrC,WAAO,UAAU,EAAE;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAc,MAAM,MAAsB;AACtC,WAAO,SAAS,IAAI;AAAA,EACxB;AACJ","sourcesContent":["/**\n * Helper class to generate role strings for `Permission`.\n */\nexport class Role {\n\n /**\n * Grants access to anyone.\n * \n * This includes authenticated and unauthenticated users.\n * \n * @returns {string}\n */\n public static any(): string {\n return 'any'\n }\n\n /**\n * Grants access to a specific user by user ID.\n * \n * You can optionally pass verified or unverified for\n * `status` to target specific types of users.\n *\n * @param {string} id \n * @param {string} status \n * @returns {string}\n */\n public static user(id: string, status: string = ''): string {\n if (status === '') {\n return `user:${id}`\n }\n return `user:${id}/${status}`\n }\n\n /**\n * Grants access to any authenticated or anonymous user.\n * \n * You can optionally pass verified or unverified for\n * `status` to target specific types of users.\n * \n * @param {string} status \n * @returns {string}\n */\n public static users(status: string = ''): string {\n if (status === '') {\n return 'users'\n }\n return `users/${status}`\n }\n\n /**\n * Grants access to any guest user without a session.\n * \n * Authenticated users don't have access to this role.\n * \n * @returns {string}\n */\n public static guests(): string {\n return 'guests'\n }\n\n /**\n * Grants access to a team by team ID.\n * \n * You can optionally pass a role for `role` to target\n * team members with the specified role.\n * \n * @param {string} id \n * @param {string} role \n * @returns {string}\n */\n public static team(id: string, role: string = ''): string {\n if (role === '') {\n return `team:${id}`\n }\n return `team:${id}/${role}`\n }\n\n /**\n * Grants access to a specific member of a team.\n * \n * When the member is removed from the team, they will\n * no longer have access.\n * \n * @param {string} id \n * @returns {string}\n */\n public static member(id: string): string {\n return `member:${id}`\n }\n\n /**\n * Grants access to a user with the specified label.\n * \n * @param {string} name \n * @returns {string}\n */\n public static label(name: string): string {\n return `label:${name}`\n }\n}"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/account.d.mts b/node_modules/node-appwrite/dist/services/account.d.mts new file mode 100644 index 0000000..3ed9345 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/account.d.mts @@ -0,0 +1,477 @@ +import { Client } from '../client.mjs'; +import { Models } from '../models.mjs'; +import { AuthenticatorType } from '../enums/authenticator-type.mjs'; +import { AuthenticationFactor } from '../enums/authentication-factor.mjs'; +import { OAuthProvider } from '../enums/o-auth-provider.mjs'; +import '../query.mjs'; + +declare class Account { + client: Client; + constructor(client: Client); + /** + * Get account + * + * Get the currently logged in user. + * + * @throws {AppwriteException} + * @returns {Promise>} + */ + get(): Promise>; + /** + * Create account + * + * Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [/account/verfication](https://appwrite.io/docs/references/cloud/client-web/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https://appwrite.io/docs/references/cloud/client-web/account#createEmailSession). + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + create(userId: string, email: string, password: string, name?: string): Promise>; + /** + * Update email + * + * Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request. +This endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password. + + * + * @param {string} email + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateEmail(email: string, password: string): Promise>; + /** + * List Identities + * + * Get the list of identities for the currently logged in user. + * + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listIdentities(queries?: string[]): Promise; + /** + * Delete identity + * + * Delete an identity by its unique ID. + * + * @param {string} identityId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteIdentity(identityId: string): Promise<{}>; + /** + * Create JWT + * + * Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + createJWT(): Promise; + /** + * List logs + * + * Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log. + * + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listLogs(queries?: string[]): Promise; + /** + * Update MFA + * + * Enable or disable MFA on an account. + * + * @param {boolean} mfa + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateMFA(mfa: boolean): Promise>; + /** + * Create Authenticator + * + * Add an authenticator app to be used as an MFA factor. Verify the authenticator using the [verify authenticator](/docs/references/cloud/client-web/account#updateMfaAuthenticator) method. + * + * @param {AuthenticatorType} type + * @throws {AppwriteException} + * @returns {Promise} + */ + createMfaAuthenticator(type: AuthenticatorType): Promise; + /** + * Verify Authenticator + * + * Verify an authenticator app after adding it using the [add authenticator](/docs/references/cloud/client-web/account#createMfaAuthenticator) method. + * + * @param {AuthenticatorType} type + * @param {string} otp + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateMfaAuthenticator(type: AuthenticatorType, otp: string): Promise>; + /** + * Delete Authenticator + * + * Delete an authenticator for a user by ID. + * + * @param {AuthenticatorType} type + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteMfaAuthenticator(type: AuthenticatorType): Promise<{}>; + /** + * Create MFA Challenge + * + * Begin the process of MFA verification after sign-in. Finish the flow with [updateMfaChallenge](/docs/references/cloud/client-web/account#updateMfaChallenge) method. + * + * @param {AuthenticationFactor} factor + * @throws {AppwriteException} + * @returns {Promise} + */ + createMfaChallenge(factor: AuthenticationFactor): Promise; + /** + * Create MFA Challenge (confirmation) + * + * Complete the MFA challenge by providing the one-time password. Finish the process of MFA verification by providing the one-time password. To begin the flow, use [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method. + * + * @param {string} challengeId + * @param {string} otp + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + updateMfaChallenge(challengeId: string, otp: string): Promise<{}>; + /** + * List Factors + * + * List the factors available on the account to be used as a MFA challange. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listMfaFactors(): Promise; + /** + * Get MFA Recovery Codes + * + * Get recovery codes that can be used as backup for MFA flow. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to read recovery codes. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getMfaRecoveryCodes(): Promise; + /** + * Create MFA Recovery Codes + * + * Generate recovery codes as backup for MFA flow. It's recommended to generate and show then immediately after user successfully adds their authehticator. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + createMfaRecoveryCodes(): Promise; + /** + * Regenerate MFA Recovery Codes + * + * Regenerate recovery codes that can be used as backup for MFA flow. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to regenreate recovery codes. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + updateMfaRecoveryCodes(): Promise; + /** + * Update name + * + * Update currently logged in user account name. + * + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateName(name: string): Promise>; + /** + * Update password + * + * Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional. + * + * @param {string} password + * @param {string} oldPassword + * @throws {AppwriteException} + * @returns {Promise>} + */ + updatePassword(password: string, oldPassword?: string): Promise>; + /** + * Update phone + * + * Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST /account/verification/phone](https://appwrite.io/docs/references/cloud/client-web/account#createPhoneVerification) endpoint to send a confirmation SMS. + * + * @param {string} phone + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise>} + */ + updatePhone(phone: string, password: string): Promise>; + /** + * Get account preferences + * + * Get the preferences as a key-value object for the currently logged in user. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getPrefs(): Promise; + /** + * Update preferences + * + * Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded. + * + * @param {Partial} prefs + * @throws {AppwriteException} + * @returns {Promise>} + */ + updatePrefs(prefs: Partial): Promise>; + /** + * Create password recovery + * + * Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT /account/recovery](https://appwrite.io/docs/references/cloud/client-web/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour. + * + * @param {string} email + * @param {string} url + * @throws {AppwriteException} + * @returns {Promise} + */ + createRecovery(email: string, url: string): Promise; + /** + * Create password recovery (confirmation) + * + * Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST /account/recovery](https://appwrite.io/docs/references/cloud/client-web/account#createRecovery) endpoint. + +Please note that in order to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface. + * + * @param {string} userId + * @param {string} secret + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise} + */ + updateRecovery(userId: string, secret: string, password: string): Promise; + /** + * List sessions + * + * Get the list of active sessions across different devices for the currently logged in user. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listSessions(): Promise; + /** + * Delete sessions + * + * Delete all sessions from the user account and remove any sessions cookies from the end client. + * + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteSessions(): Promise<{}>; + /** + * Create anonymous session + * + * Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https://appwrite.io/docs/references/cloud/client-web/account#updateEmail) or create an [OAuth2 session](https://appwrite.io/docs/references/cloud/client-web/account#CreateOAuth2Session). + * + * @throws {AppwriteException} + * @returns {Promise} + */ + createAnonymousSession(): Promise; + /** + * Create email password session + * + * Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user. + +A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + * + * @param {string} email + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise} + */ + createEmailPasswordSession(email: string, password: string): Promise; + /** + * Update magic URL session + * + * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + updateMagicURLSession(userId: string, secret: string): Promise; + /** + * Update phone session + * + * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + updatePhoneSession(userId: string, secret: string): Promise; + /** + * Create session + * + * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + createSession(userId: string, secret: string): Promise; + /** + * Get session + * + * Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used. + * + * @param {string} sessionId + * @throws {AppwriteException} + * @returns {Promise} + */ + getSession(sessionId: string): Promise; + /** + * Update session + * + * Use this endpoint to extend a session's length. Extending a session is useful when session expiry is short. If the session was created using an OAuth provider, this endpoint refreshes the access token from the provider. + * + * @param {string} sessionId + * @throws {AppwriteException} + * @returns {Promise} + */ + updateSession(sessionId: string): Promise; + /** + * Delete session + * + * Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https://appwrite.io/docs/references/cloud/client-web/account#deleteSessions) instead. + * + * @param {string} sessionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteSession(sessionId: string): Promise<{}>; + /** + * Update status + * + * Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead. + * + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateStatus(): Promise>; + /** + * Create email token (OTP) + * + * Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes. + +A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + * + * @param {string} userId + * @param {string} email + * @param {boolean} phrase + * @throws {AppwriteException} + * @returns {Promise} + */ + createEmailToken(userId: string, email: string, phrase?: boolean): Promise; + /** + * Create magic URL token + * + * Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default. + +A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + + * + * @param {string} userId + * @param {string} email + * @param {string} url + * @param {boolean} phrase + * @throws {AppwriteException} + * @returns {Promise} + */ + createMagicURLToken(userId: string, email: string, url?: string, phrase?: boolean): Promise; + /** + * Create OAuth2 token + * + * Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed. + +If authentication succeeds, `userId` and `secret` of a token will be appended to the success URL as query parameters. These can be used to create a new session using the [Create session](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint. + +A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + * + * @param {OAuthProvider} provider + * @param {string} success + * @param {string} failure + * @param {string[]} scopes + * @throws {AppwriteException} + * @returns {Promise} + */ + createOAuth2Token(provider: OAuthProvider, success?: string, failure?: string, scopes?: string[]): Promise; + /** + * Create phone token + * + * Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes. + +A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + * + * @param {string} userId + * @param {string} phone + * @throws {AppwriteException} + * @returns {Promise} + */ + createPhoneToken(userId: string, phone: string): Promise; + /** + * Create email verification + * + * Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https://appwrite.io/docs/references/cloud/client-web/account#updateVerification). The verification link sent to the user's email address is valid for 7 days. + +Please note that in order to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface. + + * + * @param {string} url + * @throws {AppwriteException} + * @returns {Promise} + */ + createVerification(url: string): Promise; + /** + * Create email verification (confirmation) + * + * Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + updateVerification(userId: string, secret: string): Promise; + /** + * Create phone verification + * + * Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https://appwrite.io/docs/references/cloud/client-web/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https://appwrite.io/docs/references/cloud/client-web/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + createPhoneVerification(): Promise; + /** + * Update phone verification (confirmation) + * + * Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + updatePhoneVerification(userId: string, secret: string): Promise; +} + +export { Account }; diff --git a/node_modules/node-appwrite/dist/services/account.d.ts b/node_modules/node-appwrite/dist/services/account.d.ts new file mode 100644 index 0000000..86cf88f --- /dev/null +++ b/node_modules/node-appwrite/dist/services/account.d.ts @@ -0,0 +1,477 @@ +import { Client } from '../client.js'; +import { Models } from '../models.js'; +import { AuthenticatorType } from '../enums/authenticator-type.js'; +import { AuthenticationFactor } from '../enums/authentication-factor.js'; +import { OAuthProvider } from '../enums/o-auth-provider.js'; +import '../query.js'; + +declare class Account { + client: Client; + constructor(client: Client); + /** + * Get account + * + * Get the currently logged in user. + * + * @throws {AppwriteException} + * @returns {Promise>} + */ + get(): Promise>; + /** + * Create account + * + * Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [/account/verfication](https://appwrite.io/docs/references/cloud/client-web/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https://appwrite.io/docs/references/cloud/client-web/account#createEmailSession). + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + create(userId: string, email: string, password: string, name?: string): Promise>; + /** + * Update email + * + * Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request. +This endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password. + + * + * @param {string} email + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateEmail(email: string, password: string): Promise>; + /** + * List Identities + * + * Get the list of identities for the currently logged in user. + * + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listIdentities(queries?: string[]): Promise; + /** + * Delete identity + * + * Delete an identity by its unique ID. + * + * @param {string} identityId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteIdentity(identityId: string): Promise<{}>; + /** + * Create JWT + * + * Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + createJWT(): Promise; + /** + * List logs + * + * Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log. + * + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listLogs(queries?: string[]): Promise; + /** + * Update MFA + * + * Enable or disable MFA on an account. + * + * @param {boolean} mfa + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateMFA(mfa: boolean): Promise>; + /** + * Create Authenticator + * + * Add an authenticator app to be used as an MFA factor. Verify the authenticator using the [verify authenticator](/docs/references/cloud/client-web/account#updateMfaAuthenticator) method. + * + * @param {AuthenticatorType} type + * @throws {AppwriteException} + * @returns {Promise} + */ + createMfaAuthenticator(type: AuthenticatorType): Promise; + /** + * Verify Authenticator + * + * Verify an authenticator app after adding it using the [add authenticator](/docs/references/cloud/client-web/account#createMfaAuthenticator) method. + * + * @param {AuthenticatorType} type + * @param {string} otp + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateMfaAuthenticator(type: AuthenticatorType, otp: string): Promise>; + /** + * Delete Authenticator + * + * Delete an authenticator for a user by ID. + * + * @param {AuthenticatorType} type + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteMfaAuthenticator(type: AuthenticatorType): Promise<{}>; + /** + * Create MFA Challenge + * + * Begin the process of MFA verification after sign-in. Finish the flow with [updateMfaChallenge](/docs/references/cloud/client-web/account#updateMfaChallenge) method. + * + * @param {AuthenticationFactor} factor + * @throws {AppwriteException} + * @returns {Promise} + */ + createMfaChallenge(factor: AuthenticationFactor): Promise; + /** + * Create MFA Challenge (confirmation) + * + * Complete the MFA challenge by providing the one-time password. Finish the process of MFA verification by providing the one-time password. To begin the flow, use [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method. + * + * @param {string} challengeId + * @param {string} otp + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + updateMfaChallenge(challengeId: string, otp: string): Promise<{}>; + /** + * List Factors + * + * List the factors available on the account to be used as a MFA challange. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listMfaFactors(): Promise; + /** + * Get MFA Recovery Codes + * + * Get recovery codes that can be used as backup for MFA flow. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to read recovery codes. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getMfaRecoveryCodes(): Promise; + /** + * Create MFA Recovery Codes + * + * Generate recovery codes as backup for MFA flow. It's recommended to generate and show then immediately after user successfully adds their authehticator. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + createMfaRecoveryCodes(): Promise; + /** + * Regenerate MFA Recovery Codes + * + * Regenerate recovery codes that can be used as backup for MFA flow. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to regenreate recovery codes. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + updateMfaRecoveryCodes(): Promise; + /** + * Update name + * + * Update currently logged in user account name. + * + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateName(name: string): Promise>; + /** + * Update password + * + * Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional. + * + * @param {string} password + * @param {string} oldPassword + * @throws {AppwriteException} + * @returns {Promise>} + */ + updatePassword(password: string, oldPassword?: string): Promise>; + /** + * Update phone + * + * Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST /account/verification/phone](https://appwrite.io/docs/references/cloud/client-web/account#createPhoneVerification) endpoint to send a confirmation SMS. + * + * @param {string} phone + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise>} + */ + updatePhone(phone: string, password: string): Promise>; + /** + * Get account preferences + * + * Get the preferences as a key-value object for the currently logged in user. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getPrefs(): Promise; + /** + * Update preferences + * + * Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded. + * + * @param {Partial} prefs + * @throws {AppwriteException} + * @returns {Promise>} + */ + updatePrefs(prefs: Partial): Promise>; + /** + * Create password recovery + * + * Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT /account/recovery](https://appwrite.io/docs/references/cloud/client-web/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour. + * + * @param {string} email + * @param {string} url + * @throws {AppwriteException} + * @returns {Promise} + */ + createRecovery(email: string, url: string): Promise; + /** + * Create password recovery (confirmation) + * + * Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST /account/recovery](https://appwrite.io/docs/references/cloud/client-web/account#createRecovery) endpoint. + +Please note that in order to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface. + * + * @param {string} userId + * @param {string} secret + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise} + */ + updateRecovery(userId: string, secret: string, password: string): Promise; + /** + * List sessions + * + * Get the list of active sessions across different devices for the currently logged in user. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listSessions(): Promise; + /** + * Delete sessions + * + * Delete all sessions from the user account and remove any sessions cookies from the end client. + * + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteSessions(): Promise<{}>; + /** + * Create anonymous session + * + * Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https://appwrite.io/docs/references/cloud/client-web/account#updateEmail) or create an [OAuth2 session](https://appwrite.io/docs/references/cloud/client-web/account#CreateOAuth2Session). + * + * @throws {AppwriteException} + * @returns {Promise} + */ + createAnonymousSession(): Promise; + /** + * Create email password session + * + * Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user. + +A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + * + * @param {string} email + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise} + */ + createEmailPasswordSession(email: string, password: string): Promise; + /** + * Update magic URL session + * + * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + updateMagicURLSession(userId: string, secret: string): Promise; + /** + * Update phone session + * + * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + updatePhoneSession(userId: string, secret: string): Promise; + /** + * Create session + * + * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + createSession(userId: string, secret: string): Promise; + /** + * Get session + * + * Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used. + * + * @param {string} sessionId + * @throws {AppwriteException} + * @returns {Promise} + */ + getSession(sessionId: string): Promise; + /** + * Update session + * + * Use this endpoint to extend a session's length. Extending a session is useful when session expiry is short. If the session was created using an OAuth provider, this endpoint refreshes the access token from the provider. + * + * @param {string} sessionId + * @throws {AppwriteException} + * @returns {Promise} + */ + updateSession(sessionId: string): Promise; + /** + * Delete session + * + * Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https://appwrite.io/docs/references/cloud/client-web/account#deleteSessions) instead. + * + * @param {string} sessionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteSession(sessionId: string): Promise<{}>; + /** + * Update status + * + * Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead. + * + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateStatus(): Promise>; + /** + * Create email token (OTP) + * + * Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes. + +A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + * + * @param {string} userId + * @param {string} email + * @param {boolean} phrase + * @throws {AppwriteException} + * @returns {Promise} + */ + createEmailToken(userId: string, email: string, phrase?: boolean): Promise; + /** + * Create magic URL token + * + * Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default. + +A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + + * + * @param {string} userId + * @param {string} email + * @param {string} url + * @param {boolean} phrase + * @throws {AppwriteException} + * @returns {Promise} + */ + createMagicURLToken(userId: string, email: string, url?: string, phrase?: boolean): Promise; + /** + * Create OAuth2 token + * + * Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed. + +If authentication succeeds, `userId` and `secret` of a token will be appended to the success URL as query parameters. These can be used to create a new session using the [Create session](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint. + +A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + * + * @param {OAuthProvider} provider + * @param {string} success + * @param {string} failure + * @param {string[]} scopes + * @throws {AppwriteException} + * @returns {Promise} + */ + createOAuth2Token(provider: OAuthProvider, success?: string, failure?: string, scopes?: string[]): Promise; + /** + * Create phone token + * + * Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes. + +A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + * + * @param {string} userId + * @param {string} phone + * @throws {AppwriteException} + * @returns {Promise} + */ + createPhoneToken(userId: string, phone: string): Promise; + /** + * Create email verification + * + * Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https://appwrite.io/docs/references/cloud/client-web/account#updateVerification). The verification link sent to the user's email address is valid for 7 days. + +Please note that in order to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface. + + * + * @param {string} url + * @throws {AppwriteException} + * @returns {Promise} + */ + createVerification(url: string): Promise; + /** + * Create email verification (confirmation) + * + * Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + updateVerification(userId: string, secret: string): Promise; + /** + * Create phone verification + * + * Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https://appwrite.io/docs/references/cloud/client-web/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https://appwrite.io/docs/references/cloud/client-web/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + createPhoneVerification(): Promise; + /** + * Update phone verification (confirmation) + * + * Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + updatePhoneVerification(userId: string, secret: string): Promise; +} + +export { Account }; diff --git a/node_modules/node-appwrite/dist/services/account.js b/node_modules/node-appwrite/dist/services/account.js new file mode 100644 index 0000000..c04cee3 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/account.js @@ -0,0 +1,1324 @@ +'use strict'; + +var client = require('../client'); + +class Account { + constructor(client) { + this.client = client; + } + /** + * Get account + * + * Get the currently logged in user. + * + * @throws {AppwriteException} + * @returns {Promise>} + */ + async get() { + const apiPath = "/account"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create account + * + * Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [/account/verfication](https://appwrite.io/docs/references/cloud/client-web/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https://appwrite.io/docs/references/cloud/client-web/account#createEmailSession). + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async create(userId, email, password, name) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new client.AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new client.AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/account"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update email + * + * Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request. + This endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password. + + * + * @param {string} email + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateEmail(email, password) { + if (typeof email === "undefined") { + throw new client.AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new client.AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/account/email"; + const payload = {}; + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * List Identities + * + * Get the list of identities for the currently logged in user. + * + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listIdentities(queries) { + const apiPath = "/account/identities"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete identity + * + * Delete an identity by its unique ID. + * + * @param {string} identityId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteIdentity(identityId) { + if (typeof identityId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "identityId"'); + } + const apiPath = "/account/identities/{identityId}".replace("{identityId}", identityId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Create JWT + * + * Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async createJWT() { + const apiPath = "/account/jwts"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * List logs + * + * Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log. + * + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listLogs(queries) { + const apiPath = "/account/logs"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update MFA + * + * Enable or disable MFA on an account. + * + * @param {boolean} mfa + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateMFA(mfa) { + if (typeof mfa === "undefined") { + throw new client.AppwriteException('Missing required parameter: "mfa"'); + } + const apiPath = "/account/mfa"; + const payload = {}; + if (typeof mfa !== "undefined") { + payload["mfa"] = mfa; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create Authenticator + * + * Add an authenticator app to be used as an MFA factor. Verify the authenticator using the [verify authenticator](/docs/references/cloud/client-web/account#updateMfaAuthenticator) method. + * + * @param {AuthenticatorType} type + * @throws {AppwriteException} + * @returns {Promise} + */ + async createMfaAuthenticator(type) { + if (typeof type === "undefined") { + throw new client.AppwriteException('Missing required parameter: "type"'); + } + const apiPath = "/account/mfa/authenticators/{type}".replace("{type}", type); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Verify Authenticator + * + * Verify an authenticator app after adding it using the [add authenticator](/docs/references/cloud/client-web/account#createMfaAuthenticator) method. + * + * @param {AuthenticatorType} type + * @param {string} otp + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateMfaAuthenticator(type, otp) { + if (typeof type === "undefined") { + throw new client.AppwriteException('Missing required parameter: "type"'); + } + if (typeof otp === "undefined") { + throw new client.AppwriteException('Missing required parameter: "otp"'); + } + const apiPath = "/account/mfa/authenticators/{type}".replace("{type}", type); + const payload = {}; + if (typeof otp !== "undefined") { + payload["otp"] = otp; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Delete Authenticator + * + * Delete an authenticator for a user by ID. + * + * @param {AuthenticatorType} type + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteMfaAuthenticator(type) { + if (typeof type === "undefined") { + throw new client.AppwriteException('Missing required parameter: "type"'); + } + const apiPath = "/account/mfa/authenticators/{type}".replace("{type}", type); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Create MFA Challenge + * + * Begin the process of MFA verification after sign-in. Finish the flow with [updateMfaChallenge](/docs/references/cloud/client-web/account#updateMfaChallenge) method. + * + * @param {AuthenticationFactor} factor + * @throws {AppwriteException} + * @returns {Promise} + */ + async createMfaChallenge(factor) { + if (typeof factor === "undefined") { + throw new client.AppwriteException('Missing required parameter: "factor"'); + } + const apiPath = "/account/mfa/challenge"; + const payload = {}; + if (typeof factor !== "undefined") { + payload["factor"] = factor; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create MFA Challenge (confirmation) + * + * Complete the MFA challenge by providing the one-time password. Finish the process of MFA verification by providing the one-time password. To begin the flow, use [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method. + * + * @param {string} challengeId + * @param {string} otp + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async updateMfaChallenge(challengeId, otp) { + if (typeof challengeId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "challengeId"'); + } + if (typeof otp === "undefined") { + throw new client.AppwriteException('Missing required parameter: "otp"'); + } + const apiPath = "/account/mfa/challenge"; + const payload = {}; + if (typeof challengeId !== "undefined") { + payload["challengeId"] = challengeId; + } + if (typeof otp !== "undefined") { + payload["otp"] = otp; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * List Factors + * + * List the factors available on the account to be used as a MFA challange. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listMfaFactors() { + const apiPath = "/account/mfa/factors"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get MFA Recovery Codes + * + * Get recovery codes that can be used as backup for MFA flow. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to read recovery codes. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getMfaRecoveryCodes() { + const apiPath = "/account/mfa/recovery-codes"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create MFA Recovery Codes + * + * Generate recovery codes as backup for MFA flow. It's recommended to generate and show then immediately after user successfully adds their authehticator. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async createMfaRecoveryCodes() { + const apiPath = "/account/mfa/recovery-codes"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Regenerate MFA Recovery Codes + * + * Regenerate recovery codes that can be used as backup for MFA flow. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to regenreate recovery codes. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateMfaRecoveryCodes() { + const apiPath = "/account/mfa/recovery-codes"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Update name + * + * Update currently logged in user account name. + * + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateName(name) { + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/account/name"; + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Update password + * + * Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional. + * + * @param {string} password + * @param {string} oldPassword + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updatePassword(password, oldPassword) { + if (typeof password === "undefined") { + throw new client.AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/account/password"; + const payload = {}; + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof oldPassword !== "undefined") { + payload["oldPassword"] = oldPassword; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Update phone + * + * Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST /account/verification/phone](https://appwrite.io/docs/references/cloud/client-web/account#createPhoneVerification) endpoint to send a confirmation SMS. + * + * @param {string} phone + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updatePhone(phone, password) { + if (typeof phone === "undefined") { + throw new client.AppwriteException('Missing required parameter: "phone"'); + } + if (typeof password === "undefined") { + throw new client.AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/account/phone"; + const payload = {}; + if (typeof phone !== "undefined") { + payload["phone"] = phone; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Get account preferences + * + * Get the preferences as a key-value object for the currently logged in user. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getPrefs() { + const apiPath = "/account/prefs"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update preferences + * + * Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded. + * + * @param {Partial} prefs + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updatePrefs(prefs) { + if (typeof prefs === "undefined") { + throw new client.AppwriteException('Missing required parameter: "prefs"'); + } + const apiPath = "/account/prefs"; + const payload = {}; + if (typeof prefs !== "undefined") { + payload["prefs"] = prefs; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create password recovery + * + * Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT /account/recovery](https://appwrite.io/docs/references/cloud/client-web/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour. + * + * @param {string} email + * @param {string} url + * @throws {AppwriteException} + * @returns {Promise} + */ + async createRecovery(email, url) { + if (typeof email === "undefined") { + throw new client.AppwriteException('Missing required parameter: "email"'); + } + if (typeof url === "undefined") { + throw new client.AppwriteException('Missing required parameter: "url"'); + } + const apiPath = "/account/recovery"; + const payload = {}; + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof url !== "undefined") { + payload["url"] = url; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create password recovery (confirmation) + * + * Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST /account/recovery](https://appwrite.io/docs/references/cloud/client-web/account#createRecovery) endpoint. + + Please note that in order to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface. + * + * @param {string} userId + * @param {string} secret + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateRecovery(userId, secret, password) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof secret === "undefined") { + throw new client.AppwriteException('Missing required parameter: "secret"'); + } + if (typeof password === "undefined") { + throw new client.AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/account/recovery"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof secret !== "undefined") { + payload["secret"] = secret; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * List sessions + * + * Get the list of active sessions across different devices for the currently logged in user. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listSessions() { + const apiPath = "/account/sessions"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete sessions + * + * Delete all sessions from the user account and remove any sessions cookies from the end client. + * + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteSessions() { + const apiPath = "/account/sessions"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Create anonymous session + * + * Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https://appwrite.io/docs/references/cloud/client-web/account#updateEmail) or create an [OAuth2 session](https://appwrite.io/docs/references/cloud/client-web/account#CreateOAuth2Session). + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async createAnonymousSession() { + const apiPath = "/account/sessions/anonymous"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create email password session + * + * Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user. + + A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + * + * @param {string} email + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise} + */ + async createEmailPasswordSession(email, password) { + if (typeof email === "undefined") { + throw new client.AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new client.AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/account/sessions/email"; + const payload = {}; + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update magic URL session + * + * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateMagicURLSession(userId, secret) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof secret === "undefined") { + throw new client.AppwriteException('Missing required parameter: "secret"'); + } + const apiPath = "/account/sessions/magic-url"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof secret !== "undefined") { + payload["secret"] = secret; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Update phone session + * + * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + async updatePhoneSession(userId, secret) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof secret === "undefined") { + throw new client.AppwriteException('Missing required parameter: "secret"'); + } + const apiPath = "/account/sessions/phone"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof secret !== "undefined") { + payload["secret"] = secret; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Create session + * + * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + async createSession(userId, secret) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof secret === "undefined") { + throw new client.AppwriteException('Missing required parameter: "secret"'); + } + const apiPath = "/account/sessions/token"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof secret !== "undefined") { + payload["secret"] = secret; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get session + * + * Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used. + * + * @param {string} sessionId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getSession(sessionId) { + if (typeof sessionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "sessionId"'); + } + const apiPath = "/account/sessions/{sessionId}".replace("{sessionId}", sessionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update session + * + * Use this endpoint to extend a session's length. Extending a session is useful when session expiry is short. If the session was created using an OAuth provider, this endpoint refreshes the access token from the provider. + * + * @param {string} sessionId + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateSession(sessionId) { + if (typeof sessionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "sessionId"'); + } + const apiPath = "/account/sessions/{sessionId}".replace("{sessionId}", sessionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Delete session + * + * Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https://appwrite.io/docs/references/cloud/client-web/account#deleteSessions) instead. + * + * @param {string} sessionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteSession(sessionId) { + if (typeof sessionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "sessionId"'); + } + const apiPath = "/account/sessions/{sessionId}".replace("{sessionId}", sessionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Update status + * + * Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead. + * + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateStatus() { + const apiPath = "/account/status"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create email token (OTP) + * + * Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes. + + A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + * + * @param {string} userId + * @param {string} email + * @param {boolean} phrase + * @throws {AppwriteException} + * @returns {Promise} + */ + async createEmailToken(userId, email, phrase) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new client.AppwriteException('Missing required parameter: "email"'); + } + const apiPath = "/account/tokens/email"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof phrase !== "undefined") { + payload["phrase"] = phrase; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create magic URL token + * + * Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default. + + A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + + * + * @param {string} userId + * @param {string} email + * @param {string} url + * @param {boolean} phrase + * @throws {AppwriteException} + * @returns {Promise} + */ + async createMagicURLToken(userId, email, url, phrase) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new client.AppwriteException('Missing required parameter: "email"'); + } + const apiPath = "/account/tokens/magic-url"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof url !== "undefined") { + payload["url"] = url; + } + if (typeof phrase !== "undefined") { + payload["phrase"] = phrase; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create OAuth2 token + * + * Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed. + + If authentication succeeds, `userId` and `secret` of a token will be appended to the success URL as query parameters. These can be used to create a new session using the [Create session](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint. + + A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + * + * @param {OAuthProvider} provider + * @param {string} success + * @param {string} failure + * @param {string[]} scopes + * @throws {AppwriteException} + * @returns {Promise} + */ + async createOAuth2Token(provider, success, failure, scopes) { + if (typeof provider === "undefined") { + throw new client.AppwriteException('Missing required parameter: "provider"'); + } + const apiPath = "/account/tokens/oauth2/{provider}".replace("{provider}", provider); + const payload = {}; + if (typeof success !== "undefined") { + payload["success"] = success; + } + if (typeof failure !== "undefined") { + payload["failure"] = failure; + } + if (typeof scopes !== "undefined") { + payload["scopes"] = scopes; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.redirect( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create phone token + * + * Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes. + + A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + * + * @param {string} userId + * @param {string} phone + * @throws {AppwriteException} + * @returns {Promise} + */ + async createPhoneToken(userId, phone) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof phone === "undefined") { + throw new client.AppwriteException('Missing required parameter: "phone"'); + } + const apiPath = "/account/tokens/phone"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof phone !== "undefined") { + payload["phone"] = phone; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create email verification + * + * Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https://appwrite.io/docs/references/cloud/client-web/account#updateVerification). The verification link sent to the user's email address is valid for 7 days. + + Please note that in order to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface. + + * + * @param {string} url + * @throws {AppwriteException} + * @returns {Promise} + */ + async createVerification(url) { + if (typeof url === "undefined") { + throw new client.AppwriteException('Missing required parameter: "url"'); + } + const apiPath = "/account/verification"; + const payload = {}; + if (typeof url !== "undefined") { + payload["url"] = url; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create email verification (confirmation) + * + * Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateVerification(userId, secret) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof secret === "undefined") { + throw new client.AppwriteException('Missing required parameter: "secret"'); + } + const apiPath = "/account/verification"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof secret !== "undefined") { + payload["secret"] = secret; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Create phone verification + * + * Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https://appwrite.io/docs/references/cloud/client-web/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https://appwrite.io/docs/references/cloud/client-web/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async createPhoneVerification() { + const apiPath = "/account/verification/phone"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update phone verification (confirmation) + * + * Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + async updatePhoneVerification(userId, secret) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof secret === "undefined") { + throw new client.AppwriteException('Missing required parameter: "secret"'); + } + const apiPath = "/account/verification/phone"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof secret !== "undefined") { + payload["secret"] = secret; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } +} + +exports.Account = Account; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=account.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/account.js.map b/node_modules/node-appwrite/dist/services/account.js.map new file mode 100644 index 0000000..7056c2b --- /dev/null +++ b/node_modules/node-appwrite/dist/services/account.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/account.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { AuthenticatorType } from '../enums/authenticator-type';\nimport { AuthenticationFactor } from '../enums/authentication-factor';\nimport { OAuthProvider } from '../enums/o-auth-provider';\n\nexport class Account {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * Get account\n *\n * Get the currently logged in user.\n *\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async get(): Promise> {\n const apiPath = '/account';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create account\n *\n * Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [/account/verfication](https://appwrite.io/docs/references/cloud/client-web/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https://appwrite.io/docs/references/cloud/client-web/account#createEmailSession).\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} password\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async create(userId: string, email: string, password: string, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/account';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update email\n *\n * Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n\n *\n * @param {string} email\n * @param {string} password\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateEmail(email: string, password: string): Promise> {\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/account/email';\n const payload: Payload = {};\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List Identities\n *\n * Get the list of identities for the currently logged in user.\n *\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listIdentities(queries?: string[]): Promise {\n const apiPath = '/account/identities';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete identity\n *\n * Delete an identity by its unique ID.\n *\n * @param {string} identityId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteIdentity(identityId: string): Promise<{}> {\n if (typeof identityId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"identityId\"');\n }\n const apiPath = '/account/identities/{identityId}'.replace('{identityId}', identityId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create JWT\n *\n * Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createJWT(): Promise {\n const apiPath = '/account/jwts';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List logs\n *\n * Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.\n *\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listLogs(queries?: string[]): Promise {\n const apiPath = '/account/logs';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update MFA\n *\n * Enable or disable MFA on an account.\n *\n * @param {boolean} mfa\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateMFA(mfa: boolean): Promise> {\n if (typeof mfa === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"mfa\"');\n }\n const apiPath = '/account/mfa';\n const payload: Payload = {};\n if (typeof mfa !== 'undefined') {\n payload['mfa'] = mfa;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create Authenticator\n *\n * Add an authenticator app to be used as an MFA factor. Verify the authenticator using the [verify authenticator](/docs/references/cloud/client-web/account#updateMfaAuthenticator) method.\n *\n * @param {AuthenticatorType} type\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createMfaAuthenticator(type: AuthenticatorType): Promise {\n if (typeof type === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"type\"');\n }\n const apiPath = '/account/mfa/authenticators/{type}'.replace('{type}', type);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Verify Authenticator\n *\n * Verify an authenticator app after adding it using the [add authenticator](/docs/references/cloud/client-web/account#createMfaAuthenticator) method.\n *\n * @param {AuthenticatorType} type\n * @param {string} otp\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateMfaAuthenticator(type: AuthenticatorType, otp: string): Promise> {\n if (typeof type === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"type\"');\n }\n if (typeof otp === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"otp\"');\n }\n const apiPath = '/account/mfa/authenticators/{type}'.replace('{type}', type);\n const payload: Payload = {};\n if (typeof otp !== 'undefined') {\n payload['otp'] = otp;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete Authenticator\n *\n * Delete an authenticator for a user by ID.\n *\n * @param {AuthenticatorType} type\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteMfaAuthenticator(type: AuthenticatorType): Promise<{}> {\n if (typeof type === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"type\"');\n }\n const apiPath = '/account/mfa/authenticators/{type}'.replace('{type}', type);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create MFA Challenge\n *\n * Begin the process of MFA verification after sign-in. Finish the flow with [updateMfaChallenge](/docs/references/cloud/client-web/account#updateMfaChallenge) method.\n *\n * @param {AuthenticationFactor} factor\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createMfaChallenge(factor: AuthenticationFactor): Promise {\n if (typeof factor === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"factor\"');\n }\n const apiPath = '/account/mfa/challenge';\n const payload: Payload = {};\n if (typeof factor !== 'undefined') {\n payload['factor'] = factor;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create MFA Challenge (confirmation)\n *\n * Complete the MFA challenge by providing the one-time password. Finish the process of MFA verification by providing the one-time password. To begin the flow, use [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method.\n *\n * @param {string} challengeId\n * @param {string} otp\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async updateMfaChallenge(challengeId: string, otp: string): Promise<{}> {\n if (typeof challengeId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"challengeId\"');\n }\n if (typeof otp === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"otp\"');\n }\n const apiPath = '/account/mfa/challenge';\n const payload: Payload = {};\n if (typeof challengeId !== 'undefined') {\n payload['challengeId'] = challengeId;\n }\n if (typeof otp !== 'undefined') {\n payload['otp'] = otp;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List Factors\n *\n * List the factors available on the account to be used as a MFA challange.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listMfaFactors(): Promise {\n const apiPath = '/account/mfa/factors';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get MFA Recovery Codes\n *\n * Get recovery codes that can be used as backup for MFA flow. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to read recovery codes.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getMfaRecoveryCodes(): Promise {\n const apiPath = '/account/mfa/recovery-codes';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create MFA Recovery Codes\n *\n * Generate recovery codes as backup for MFA flow. It's recommended to generate and show then immediately after user successfully adds their authehticator. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createMfaRecoveryCodes(): Promise {\n const apiPath = '/account/mfa/recovery-codes';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Regenerate MFA Recovery Codes\n *\n * Regenerate recovery codes that can be used as backup for MFA flow. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to regenreate recovery codes.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateMfaRecoveryCodes(): Promise {\n const apiPath = '/account/mfa/recovery-codes';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update name\n *\n * Update currently logged in user account name.\n *\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateName(name: string): Promise> {\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/account/name';\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update password\n *\n * Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.\n *\n * @param {string} password\n * @param {string} oldPassword\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updatePassword(password: string, oldPassword?: string): Promise> {\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/account/password';\n const payload: Payload = {};\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof oldPassword !== 'undefined') {\n payload['oldPassword'] = oldPassword;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update phone\n *\n * Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST /account/verification/phone](https://appwrite.io/docs/references/cloud/client-web/account#createPhoneVerification) endpoint to send a confirmation SMS.\n *\n * @param {string} phone\n * @param {string} password\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updatePhone(phone: string, password: string): Promise> {\n if (typeof phone === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"phone\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/account/phone';\n const payload: Payload = {};\n if (typeof phone !== 'undefined') {\n payload['phone'] = phone;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get account preferences\n *\n * Get the preferences as a key-value object for the currently logged in user.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getPrefs(): Promise {\n const apiPath = '/account/prefs';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update preferences\n *\n * Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.\n *\n * @param {Partial} prefs\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updatePrefs(prefs: Partial): Promise> {\n if (typeof prefs === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"prefs\"');\n }\n const apiPath = '/account/prefs';\n const payload: Payload = {};\n if (typeof prefs !== 'undefined') {\n payload['prefs'] = prefs;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create password recovery\n *\n * Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT /account/recovery](https://appwrite.io/docs/references/cloud/client-web/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.\n *\n * @param {string} email\n * @param {string} url\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createRecovery(email: string, url: string): Promise {\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof url === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"url\"');\n }\n const apiPath = '/account/recovery';\n const payload: Payload = {};\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof url !== 'undefined') {\n payload['url'] = url;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create password recovery (confirmation)\n *\n * Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST /account/recovery](https://appwrite.io/docs/references/cloud/client-web/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n *\n * @param {string} userId\n * @param {string} secret\n * @param {string} password\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateRecovery(userId: string, secret: string, password: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof secret === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"secret\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/account/recovery';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof secret !== 'undefined') {\n payload['secret'] = secret;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List sessions\n *\n * Get the list of active sessions across different devices for the currently logged in user.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listSessions(): Promise {\n const apiPath = '/account/sessions';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete sessions\n *\n * Delete all sessions from the user account and remove any sessions cookies from the end client.\n *\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteSessions(): Promise<{}> {\n const apiPath = '/account/sessions';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create anonymous session\n *\n * Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https://appwrite.io/docs/references/cloud/client-web/account#updateEmail) or create an [OAuth2 session](https://appwrite.io/docs/references/cloud/client-web/account#CreateOAuth2Session).\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createAnonymousSession(): Promise {\n const apiPath = '/account/sessions/anonymous';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create email password session\n *\n * Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits).\n *\n * @param {string} email\n * @param {string} password\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createEmailPasswordSession(email: string, password: string): Promise {\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/account/sessions/email';\n const payload: Payload = {};\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update magic URL session\n *\n * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.\n *\n * @param {string} userId\n * @param {string} secret\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateMagicURLSession(userId: string, secret: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof secret === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"secret\"');\n }\n const apiPath = '/account/sessions/magic-url';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof secret !== 'undefined') {\n payload['secret'] = secret;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update phone session\n *\n * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.\n *\n * @param {string} userId\n * @param {string} secret\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updatePhoneSession(userId: string, secret: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof secret === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"secret\"');\n }\n const apiPath = '/account/sessions/phone';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof secret !== 'undefined') {\n payload['secret'] = secret;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create session\n *\n * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.\n *\n * @param {string} userId\n * @param {string} secret\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createSession(userId: string, secret: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof secret === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"secret\"');\n }\n const apiPath = '/account/sessions/token';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof secret !== 'undefined') {\n payload['secret'] = secret;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get session\n *\n * Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.\n *\n * @param {string} sessionId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getSession(sessionId: string): Promise {\n if (typeof sessionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"sessionId\"');\n }\n const apiPath = '/account/sessions/{sessionId}'.replace('{sessionId}', sessionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update session\n *\n * Use this endpoint to extend a session's length. Extending a session is useful when session expiry is short. If the session was created using an OAuth provider, this endpoint refreshes the access token from the provider.\n *\n * @param {string} sessionId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateSession(sessionId: string): Promise {\n if (typeof sessionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"sessionId\"');\n }\n const apiPath = '/account/sessions/{sessionId}'.replace('{sessionId}', sessionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete session\n *\n * Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https://appwrite.io/docs/references/cloud/client-web/account#deleteSessions) instead.\n *\n * @param {string} sessionId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteSession(sessionId: string): Promise<{}> {\n if (typeof sessionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"sessionId\"');\n }\n const apiPath = '/account/sessions/{sessionId}'.replace('{sessionId}', sessionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update status\n *\n * Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.\n *\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateStatus(): Promise> {\n const apiPath = '/account/status';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create email token (OTP)\n *\n * Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits).\n *\n * @param {string} userId\n * @param {string} email\n * @param {boolean} phrase\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createEmailToken(userId: string, email: string, phrase?: boolean): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n const apiPath = '/account/tokens/email';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof phrase !== 'undefined') {\n payload['phrase'] = phrase;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create magic URL token\n *\n * Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits).\n\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} url\n * @param {boolean} phrase\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createMagicURLToken(userId: string, email: string, url?: string, phrase?: boolean): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n const apiPath = '/account/tokens/magic-url';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof url !== 'undefined') {\n payload['url'] = url;\n }\n if (typeof phrase !== 'undefined') {\n payload['phrase'] = phrase;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create OAuth2 token\n *\n * Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed. \n\nIf authentication succeeds, `userId` and `secret` of a token will be appended to the success URL as query parameters. These can be used to create a new session using the [Create session](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits).\n *\n * @param {OAuthProvider} provider\n * @param {string} success\n * @param {string} failure\n * @param {string[]} scopes\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createOAuth2Token(provider: OAuthProvider, success?: string, failure?: string, scopes?: string[]): Promise {\n if (typeof provider === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"provider\"');\n }\n const apiPath = '/account/tokens/oauth2/{provider}'.replace('{provider}', provider);\n const payload: Payload = {};\n if (typeof success !== 'undefined') {\n payload['success'] = success;\n }\n if (typeof failure !== 'undefined') {\n payload['failure'] = failure;\n }\n if (typeof scopes !== 'undefined') {\n payload['scopes'] = scopes;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.redirect(\n 'get',\n uri,\n apiHeaders,\n payload\n );\n }\n /**\n * Create phone token\n *\n * Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits).\n *\n * @param {string} userId\n * @param {string} phone\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createPhoneToken(userId: string, phone: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof phone === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"phone\"');\n }\n const apiPath = '/account/tokens/phone';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof phone !== 'undefined') {\n payload['phone'] = phone;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create email verification\n *\n * Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https://appwrite.io/docs/references/cloud/client-web/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n\n *\n * @param {string} url\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createVerification(url: string): Promise {\n if (typeof url === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"url\"');\n }\n const apiPath = '/account/verification';\n const payload: Payload = {};\n if (typeof url !== 'undefined') {\n payload['url'] = url;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create email verification (confirmation)\n *\n * Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.\n *\n * @param {string} userId\n * @param {string} secret\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateVerification(userId: string, secret: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof secret === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"secret\"');\n }\n const apiPath = '/account/verification';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof secret !== 'undefined') {\n payload['secret'] = secret;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create phone verification\n *\n * Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https://appwrite.io/docs/references/cloud/client-web/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https://appwrite.io/docs/references/cloud/client-web/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createPhoneVerification(): Promise {\n const apiPath = '/account/verification/phone';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update phone verification (confirmation)\n *\n * Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.\n *\n * @param {string} userId\n * @param {string} secret\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updatePhoneVerification(userId: string, secret: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof secret === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"secret\"');\n }\n const apiPath = '/account/verification/phone';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof secret !== 'undefined') {\n payload['secret'] = secret;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/account.mjs b/node_modules/node-appwrite/dist/services/account.mjs new file mode 100644 index 0000000..8fcf60b --- /dev/null +++ b/node_modules/node-appwrite/dist/services/account.mjs @@ -0,0 +1,1323 @@ +import { AppwriteException } from '../client.mjs'; + +// src/services/account.ts +var Account = class { + constructor(client) { + this.client = client; + } + /** + * Get account + * + * Get the currently logged in user. + * + * @throws {AppwriteException} + * @returns {Promise>} + */ + async get() { + const apiPath = "/account"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create account + * + * Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [/account/verfication](https://appwrite.io/docs/references/cloud/client-web/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https://appwrite.io/docs/references/cloud/client-web/account#createEmailSession). + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async create(userId, email, password, name) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/account"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update email + * + * Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request. + This endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password. + + * + * @param {string} email + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateEmail(email, password) { + if (typeof email === "undefined") { + throw new AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/account/email"; + const payload = {}; + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * List Identities + * + * Get the list of identities for the currently logged in user. + * + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listIdentities(queries) { + const apiPath = "/account/identities"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete identity + * + * Delete an identity by its unique ID. + * + * @param {string} identityId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteIdentity(identityId) { + if (typeof identityId === "undefined") { + throw new AppwriteException('Missing required parameter: "identityId"'); + } + const apiPath = "/account/identities/{identityId}".replace("{identityId}", identityId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Create JWT + * + * Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async createJWT() { + const apiPath = "/account/jwts"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * List logs + * + * Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log. + * + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listLogs(queries) { + const apiPath = "/account/logs"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update MFA + * + * Enable or disable MFA on an account. + * + * @param {boolean} mfa + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateMFA(mfa) { + if (typeof mfa === "undefined") { + throw new AppwriteException('Missing required parameter: "mfa"'); + } + const apiPath = "/account/mfa"; + const payload = {}; + if (typeof mfa !== "undefined") { + payload["mfa"] = mfa; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create Authenticator + * + * Add an authenticator app to be used as an MFA factor. Verify the authenticator using the [verify authenticator](/docs/references/cloud/client-web/account#updateMfaAuthenticator) method. + * + * @param {AuthenticatorType} type + * @throws {AppwriteException} + * @returns {Promise} + */ + async createMfaAuthenticator(type) { + if (typeof type === "undefined") { + throw new AppwriteException('Missing required parameter: "type"'); + } + const apiPath = "/account/mfa/authenticators/{type}".replace("{type}", type); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Verify Authenticator + * + * Verify an authenticator app after adding it using the [add authenticator](/docs/references/cloud/client-web/account#createMfaAuthenticator) method. + * + * @param {AuthenticatorType} type + * @param {string} otp + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateMfaAuthenticator(type, otp) { + if (typeof type === "undefined") { + throw new AppwriteException('Missing required parameter: "type"'); + } + if (typeof otp === "undefined") { + throw new AppwriteException('Missing required parameter: "otp"'); + } + const apiPath = "/account/mfa/authenticators/{type}".replace("{type}", type); + const payload = {}; + if (typeof otp !== "undefined") { + payload["otp"] = otp; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Delete Authenticator + * + * Delete an authenticator for a user by ID. + * + * @param {AuthenticatorType} type + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteMfaAuthenticator(type) { + if (typeof type === "undefined") { + throw new AppwriteException('Missing required parameter: "type"'); + } + const apiPath = "/account/mfa/authenticators/{type}".replace("{type}", type); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Create MFA Challenge + * + * Begin the process of MFA verification after sign-in. Finish the flow with [updateMfaChallenge](/docs/references/cloud/client-web/account#updateMfaChallenge) method. + * + * @param {AuthenticationFactor} factor + * @throws {AppwriteException} + * @returns {Promise} + */ + async createMfaChallenge(factor) { + if (typeof factor === "undefined") { + throw new AppwriteException('Missing required parameter: "factor"'); + } + const apiPath = "/account/mfa/challenge"; + const payload = {}; + if (typeof factor !== "undefined") { + payload["factor"] = factor; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create MFA Challenge (confirmation) + * + * Complete the MFA challenge by providing the one-time password. Finish the process of MFA verification by providing the one-time password. To begin the flow, use [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method. + * + * @param {string} challengeId + * @param {string} otp + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async updateMfaChallenge(challengeId, otp) { + if (typeof challengeId === "undefined") { + throw new AppwriteException('Missing required parameter: "challengeId"'); + } + if (typeof otp === "undefined") { + throw new AppwriteException('Missing required parameter: "otp"'); + } + const apiPath = "/account/mfa/challenge"; + const payload = {}; + if (typeof challengeId !== "undefined") { + payload["challengeId"] = challengeId; + } + if (typeof otp !== "undefined") { + payload["otp"] = otp; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * List Factors + * + * List the factors available on the account to be used as a MFA challange. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listMfaFactors() { + const apiPath = "/account/mfa/factors"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get MFA Recovery Codes + * + * Get recovery codes that can be used as backup for MFA flow. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to read recovery codes. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getMfaRecoveryCodes() { + const apiPath = "/account/mfa/recovery-codes"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create MFA Recovery Codes + * + * Generate recovery codes as backup for MFA flow. It's recommended to generate and show then immediately after user successfully adds their authehticator. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async createMfaRecoveryCodes() { + const apiPath = "/account/mfa/recovery-codes"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Regenerate MFA Recovery Codes + * + * Regenerate recovery codes that can be used as backup for MFA flow. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to regenreate recovery codes. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateMfaRecoveryCodes() { + const apiPath = "/account/mfa/recovery-codes"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Update name + * + * Update currently logged in user account name. + * + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateName(name) { + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/account/name"; + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Update password + * + * Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional. + * + * @param {string} password + * @param {string} oldPassword + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updatePassword(password, oldPassword) { + if (typeof password === "undefined") { + throw new AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/account/password"; + const payload = {}; + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof oldPassword !== "undefined") { + payload["oldPassword"] = oldPassword; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Update phone + * + * Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST /account/verification/phone](https://appwrite.io/docs/references/cloud/client-web/account#createPhoneVerification) endpoint to send a confirmation SMS. + * + * @param {string} phone + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updatePhone(phone, password) { + if (typeof phone === "undefined") { + throw new AppwriteException('Missing required parameter: "phone"'); + } + if (typeof password === "undefined") { + throw new AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/account/phone"; + const payload = {}; + if (typeof phone !== "undefined") { + payload["phone"] = phone; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Get account preferences + * + * Get the preferences as a key-value object for the currently logged in user. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getPrefs() { + const apiPath = "/account/prefs"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update preferences + * + * Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded. + * + * @param {Partial} prefs + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updatePrefs(prefs) { + if (typeof prefs === "undefined") { + throw new AppwriteException('Missing required parameter: "prefs"'); + } + const apiPath = "/account/prefs"; + const payload = {}; + if (typeof prefs !== "undefined") { + payload["prefs"] = prefs; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create password recovery + * + * Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT /account/recovery](https://appwrite.io/docs/references/cloud/client-web/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour. + * + * @param {string} email + * @param {string} url + * @throws {AppwriteException} + * @returns {Promise} + */ + async createRecovery(email, url) { + if (typeof email === "undefined") { + throw new AppwriteException('Missing required parameter: "email"'); + } + if (typeof url === "undefined") { + throw new AppwriteException('Missing required parameter: "url"'); + } + const apiPath = "/account/recovery"; + const payload = {}; + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof url !== "undefined") { + payload["url"] = url; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create password recovery (confirmation) + * + * Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST /account/recovery](https://appwrite.io/docs/references/cloud/client-web/account#createRecovery) endpoint. + + Please note that in order to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface. + * + * @param {string} userId + * @param {string} secret + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateRecovery(userId, secret, password) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof secret === "undefined") { + throw new AppwriteException('Missing required parameter: "secret"'); + } + if (typeof password === "undefined") { + throw new AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/account/recovery"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof secret !== "undefined") { + payload["secret"] = secret; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * List sessions + * + * Get the list of active sessions across different devices for the currently logged in user. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listSessions() { + const apiPath = "/account/sessions"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete sessions + * + * Delete all sessions from the user account and remove any sessions cookies from the end client. + * + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteSessions() { + const apiPath = "/account/sessions"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Create anonymous session + * + * Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https://appwrite.io/docs/references/cloud/client-web/account#updateEmail) or create an [OAuth2 session](https://appwrite.io/docs/references/cloud/client-web/account#CreateOAuth2Session). + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async createAnonymousSession() { + const apiPath = "/account/sessions/anonymous"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create email password session + * + * Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user. + + A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + * + * @param {string} email + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise} + */ + async createEmailPasswordSession(email, password) { + if (typeof email === "undefined") { + throw new AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/account/sessions/email"; + const payload = {}; + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update magic URL session + * + * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateMagicURLSession(userId, secret) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof secret === "undefined") { + throw new AppwriteException('Missing required parameter: "secret"'); + } + const apiPath = "/account/sessions/magic-url"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof secret !== "undefined") { + payload["secret"] = secret; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Update phone session + * + * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + async updatePhoneSession(userId, secret) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof secret === "undefined") { + throw new AppwriteException('Missing required parameter: "secret"'); + } + const apiPath = "/account/sessions/phone"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof secret !== "undefined") { + payload["secret"] = secret; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Create session + * + * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + async createSession(userId, secret) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof secret === "undefined") { + throw new AppwriteException('Missing required parameter: "secret"'); + } + const apiPath = "/account/sessions/token"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof secret !== "undefined") { + payload["secret"] = secret; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get session + * + * Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used. + * + * @param {string} sessionId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getSession(sessionId) { + if (typeof sessionId === "undefined") { + throw new AppwriteException('Missing required parameter: "sessionId"'); + } + const apiPath = "/account/sessions/{sessionId}".replace("{sessionId}", sessionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update session + * + * Use this endpoint to extend a session's length. Extending a session is useful when session expiry is short. If the session was created using an OAuth provider, this endpoint refreshes the access token from the provider. + * + * @param {string} sessionId + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateSession(sessionId) { + if (typeof sessionId === "undefined") { + throw new AppwriteException('Missing required parameter: "sessionId"'); + } + const apiPath = "/account/sessions/{sessionId}".replace("{sessionId}", sessionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Delete session + * + * Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https://appwrite.io/docs/references/cloud/client-web/account#deleteSessions) instead. + * + * @param {string} sessionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteSession(sessionId) { + if (typeof sessionId === "undefined") { + throw new AppwriteException('Missing required parameter: "sessionId"'); + } + const apiPath = "/account/sessions/{sessionId}".replace("{sessionId}", sessionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Update status + * + * Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead. + * + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateStatus() { + const apiPath = "/account/status"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create email token (OTP) + * + * Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes. + + A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + * + * @param {string} userId + * @param {string} email + * @param {boolean} phrase + * @throws {AppwriteException} + * @returns {Promise} + */ + async createEmailToken(userId, email, phrase) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new AppwriteException('Missing required parameter: "email"'); + } + const apiPath = "/account/tokens/email"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof phrase !== "undefined") { + payload["phrase"] = phrase; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create magic URL token + * + * Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default. + + A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + + * + * @param {string} userId + * @param {string} email + * @param {string} url + * @param {boolean} phrase + * @throws {AppwriteException} + * @returns {Promise} + */ + async createMagicURLToken(userId, email, url, phrase) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new AppwriteException('Missing required parameter: "email"'); + } + const apiPath = "/account/tokens/magic-url"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof url !== "undefined") { + payload["url"] = url; + } + if (typeof phrase !== "undefined") { + payload["phrase"] = phrase; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create OAuth2 token + * + * Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed. + + If authentication succeeds, `userId` and `secret` of a token will be appended to the success URL as query parameters. These can be used to create a new session using the [Create session](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint. + + A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + * + * @param {OAuthProvider} provider + * @param {string} success + * @param {string} failure + * @param {string[]} scopes + * @throws {AppwriteException} + * @returns {Promise} + */ + async createOAuth2Token(provider, success, failure, scopes) { + if (typeof provider === "undefined") { + throw new AppwriteException('Missing required parameter: "provider"'); + } + const apiPath = "/account/tokens/oauth2/{provider}".replace("{provider}", provider); + const payload = {}; + if (typeof success !== "undefined") { + payload["success"] = success; + } + if (typeof failure !== "undefined") { + payload["failure"] = failure; + } + if (typeof scopes !== "undefined") { + payload["scopes"] = scopes; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.redirect( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create phone token + * + * Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes. + + A user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits). + * + * @param {string} userId + * @param {string} phone + * @throws {AppwriteException} + * @returns {Promise} + */ + async createPhoneToken(userId, phone) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof phone === "undefined") { + throw new AppwriteException('Missing required parameter: "phone"'); + } + const apiPath = "/account/tokens/phone"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof phone !== "undefined") { + payload["phone"] = phone; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create email verification + * + * Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https://appwrite.io/docs/references/cloud/client-web/account#updateVerification). The verification link sent to the user's email address is valid for 7 days. + + Please note that in order to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface. + + * + * @param {string} url + * @throws {AppwriteException} + * @returns {Promise} + */ + async createVerification(url) { + if (typeof url === "undefined") { + throw new AppwriteException('Missing required parameter: "url"'); + } + const apiPath = "/account/verification"; + const payload = {}; + if (typeof url !== "undefined") { + payload["url"] = url; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create email verification (confirmation) + * + * Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateVerification(userId, secret) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof secret === "undefined") { + throw new AppwriteException('Missing required parameter: "secret"'); + } + const apiPath = "/account/verification"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof secret !== "undefined") { + payload["secret"] = secret; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Create phone verification + * + * Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https://appwrite.io/docs/references/cloud/client-web/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https://appwrite.io/docs/references/cloud/client-web/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async createPhoneVerification() { + const apiPath = "/account/verification/phone"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update phone verification (confirmation) + * + * Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code. + * + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + async updatePhoneVerification(userId, secret) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof secret === "undefined") { + throw new AppwriteException('Missing required parameter: "secret"'); + } + const apiPath = "/account/verification/phone"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof secret !== "undefined") { + payload["secret"] = secret; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } +}; + +export { Account }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=account.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/account.mjs.map b/node_modules/node-appwrite/dist/services/account.mjs.map new file mode 100644 index 0000000..cae0f2c --- /dev/null +++ b/node_modules/node-appwrite/dist/services/account.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/account.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { AuthenticatorType } from '../enums/authenticator-type';\nimport { AuthenticationFactor } from '../enums/authentication-factor';\nimport { OAuthProvider } from '../enums/o-auth-provider';\n\nexport class Account {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * Get account\n *\n * Get the currently logged in user.\n *\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async get(): Promise> {\n const apiPath = '/account';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create account\n *\n * Use this endpoint to allow a new user to register a new account in your project. After the user registration completes successfully, you can use the [/account/verfication](https://appwrite.io/docs/references/cloud/client-web/account#createVerification) route to start verifying the user email address. To allow the new user to login to their new account, you need to create a new [account session](https://appwrite.io/docs/references/cloud/client-web/account#createEmailSession).\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} password\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async create(userId: string, email: string, password: string, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/account';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update email\n *\n * Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n\n *\n * @param {string} email\n * @param {string} password\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateEmail(email: string, password: string): Promise> {\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/account/email';\n const payload: Payload = {};\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List Identities\n *\n * Get the list of identities for the currently logged in user.\n *\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listIdentities(queries?: string[]): Promise {\n const apiPath = '/account/identities';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete identity\n *\n * Delete an identity by its unique ID.\n *\n * @param {string} identityId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteIdentity(identityId: string): Promise<{}> {\n if (typeof identityId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"identityId\"');\n }\n const apiPath = '/account/identities/{identityId}'.replace('{identityId}', identityId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create JWT\n *\n * Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createJWT(): Promise {\n const apiPath = '/account/jwts';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List logs\n *\n * Get the list of latest security activity logs for the currently logged in user. Each log returns user IP address, location and date and time of log.\n *\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listLogs(queries?: string[]): Promise {\n const apiPath = '/account/logs';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update MFA\n *\n * Enable or disable MFA on an account.\n *\n * @param {boolean} mfa\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateMFA(mfa: boolean): Promise> {\n if (typeof mfa === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"mfa\"');\n }\n const apiPath = '/account/mfa';\n const payload: Payload = {};\n if (typeof mfa !== 'undefined') {\n payload['mfa'] = mfa;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create Authenticator\n *\n * Add an authenticator app to be used as an MFA factor. Verify the authenticator using the [verify authenticator](/docs/references/cloud/client-web/account#updateMfaAuthenticator) method.\n *\n * @param {AuthenticatorType} type\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createMfaAuthenticator(type: AuthenticatorType): Promise {\n if (typeof type === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"type\"');\n }\n const apiPath = '/account/mfa/authenticators/{type}'.replace('{type}', type);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Verify Authenticator\n *\n * Verify an authenticator app after adding it using the [add authenticator](/docs/references/cloud/client-web/account#createMfaAuthenticator) method.\n *\n * @param {AuthenticatorType} type\n * @param {string} otp\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateMfaAuthenticator(type: AuthenticatorType, otp: string): Promise> {\n if (typeof type === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"type\"');\n }\n if (typeof otp === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"otp\"');\n }\n const apiPath = '/account/mfa/authenticators/{type}'.replace('{type}', type);\n const payload: Payload = {};\n if (typeof otp !== 'undefined') {\n payload['otp'] = otp;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete Authenticator\n *\n * Delete an authenticator for a user by ID.\n *\n * @param {AuthenticatorType} type\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteMfaAuthenticator(type: AuthenticatorType): Promise<{}> {\n if (typeof type === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"type\"');\n }\n const apiPath = '/account/mfa/authenticators/{type}'.replace('{type}', type);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create MFA Challenge\n *\n * Begin the process of MFA verification after sign-in. Finish the flow with [updateMfaChallenge](/docs/references/cloud/client-web/account#updateMfaChallenge) method.\n *\n * @param {AuthenticationFactor} factor\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createMfaChallenge(factor: AuthenticationFactor): Promise {\n if (typeof factor === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"factor\"');\n }\n const apiPath = '/account/mfa/challenge';\n const payload: Payload = {};\n if (typeof factor !== 'undefined') {\n payload['factor'] = factor;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create MFA Challenge (confirmation)\n *\n * Complete the MFA challenge by providing the one-time password. Finish the process of MFA verification by providing the one-time password. To begin the flow, use [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method.\n *\n * @param {string} challengeId\n * @param {string} otp\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async updateMfaChallenge(challengeId: string, otp: string): Promise<{}> {\n if (typeof challengeId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"challengeId\"');\n }\n if (typeof otp === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"otp\"');\n }\n const apiPath = '/account/mfa/challenge';\n const payload: Payload = {};\n if (typeof challengeId !== 'undefined') {\n payload['challengeId'] = challengeId;\n }\n if (typeof otp !== 'undefined') {\n payload['otp'] = otp;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List Factors\n *\n * List the factors available on the account to be used as a MFA challange.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listMfaFactors(): Promise {\n const apiPath = '/account/mfa/factors';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get MFA Recovery Codes\n *\n * Get recovery codes that can be used as backup for MFA flow. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to read recovery codes.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getMfaRecoveryCodes(): Promise {\n const apiPath = '/account/mfa/recovery-codes';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create MFA Recovery Codes\n *\n * Generate recovery codes as backup for MFA flow. It's recommended to generate and show then immediately after user successfully adds their authehticator. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createMfaRecoveryCodes(): Promise {\n const apiPath = '/account/mfa/recovery-codes';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Regenerate MFA Recovery Codes\n *\n * Regenerate recovery codes that can be used as backup for MFA flow. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to regenreate recovery codes.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateMfaRecoveryCodes(): Promise {\n const apiPath = '/account/mfa/recovery-codes';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update name\n *\n * Update currently logged in user account name.\n *\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateName(name: string): Promise> {\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/account/name';\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update password\n *\n * Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.\n *\n * @param {string} password\n * @param {string} oldPassword\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updatePassword(password: string, oldPassword?: string): Promise> {\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/account/password';\n const payload: Payload = {};\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof oldPassword !== 'undefined') {\n payload['oldPassword'] = oldPassword;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update phone\n *\n * Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST /account/verification/phone](https://appwrite.io/docs/references/cloud/client-web/account#createPhoneVerification) endpoint to send a confirmation SMS.\n *\n * @param {string} phone\n * @param {string} password\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updatePhone(phone: string, password: string): Promise> {\n if (typeof phone === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"phone\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/account/phone';\n const payload: Payload = {};\n if (typeof phone !== 'undefined') {\n payload['phone'] = phone;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get account preferences\n *\n * Get the preferences as a key-value object for the currently logged in user.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getPrefs(): Promise {\n const apiPath = '/account/prefs';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update preferences\n *\n * Update currently logged in user account preferences. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.\n *\n * @param {Partial} prefs\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updatePrefs(prefs: Partial): Promise> {\n if (typeof prefs === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"prefs\"');\n }\n const apiPath = '/account/prefs';\n const payload: Payload = {};\n if (typeof prefs !== 'undefined') {\n payload['prefs'] = prefs;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create password recovery\n *\n * Sends the user an email with a temporary secret key for password reset. When the user clicks the confirmation link he is redirected back to your app password reset URL with the secret key and email address values attached to the URL query string. Use the query string params to submit a request to the [PUT /account/recovery](https://appwrite.io/docs/references/cloud/client-web/account#updateRecovery) endpoint to complete the process. The verification link sent to the user's email address is valid for 1 hour.\n *\n * @param {string} email\n * @param {string} url\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createRecovery(email: string, url: string): Promise {\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof url === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"url\"');\n }\n const apiPath = '/account/recovery';\n const payload: Payload = {};\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof url !== 'undefined') {\n payload['url'] = url;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create password recovery (confirmation)\n *\n * Use this endpoint to complete the user account password reset. Both the **userId** and **secret** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the [POST /account/recovery](https://appwrite.io/docs/references/cloud/client-web/account#createRecovery) endpoint.\n\nPlease note that in order to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n *\n * @param {string} userId\n * @param {string} secret\n * @param {string} password\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateRecovery(userId: string, secret: string, password: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof secret === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"secret\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/account/recovery';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof secret !== 'undefined') {\n payload['secret'] = secret;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List sessions\n *\n * Get the list of active sessions across different devices for the currently logged in user.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listSessions(): Promise {\n const apiPath = '/account/sessions';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete sessions\n *\n * Delete all sessions from the user account and remove any sessions cookies from the end client.\n *\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteSessions(): Promise<{}> {\n const apiPath = '/account/sessions';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create anonymous session\n *\n * Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https://appwrite.io/docs/references/cloud/client-web/account#updateEmail) or create an [OAuth2 session](https://appwrite.io/docs/references/cloud/client-web/account#CreateOAuth2Session).\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createAnonymousSession(): Promise {\n const apiPath = '/account/sessions/anonymous';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create email password session\n *\n * Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits).\n *\n * @param {string} email\n * @param {string} password\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createEmailPasswordSession(email: string, password: string): Promise {\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/account/sessions/email';\n const payload: Payload = {};\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update magic URL session\n *\n * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.\n *\n * @param {string} userId\n * @param {string} secret\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateMagicURLSession(userId: string, secret: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof secret === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"secret\"');\n }\n const apiPath = '/account/sessions/magic-url';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof secret !== 'undefined') {\n payload['secret'] = secret;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update phone session\n *\n * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.\n *\n * @param {string} userId\n * @param {string} secret\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updatePhoneSession(userId: string, secret: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof secret === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"secret\"');\n }\n const apiPath = '/account/sessions/phone';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof secret !== 'undefined') {\n payload['secret'] = secret;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create session\n *\n * Use this endpoint to create a session from token. Provide the **userId** and **secret** parameters from the successful response of authentication flows initiated by token creation. For example, magic URL and phone login.\n *\n * @param {string} userId\n * @param {string} secret\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createSession(userId: string, secret: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof secret === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"secret\"');\n }\n const apiPath = '/account/sessions/token';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof secret !== 'undefined') {\n payload['secret'] = secret;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get session\n *\n * Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.\n *\n * @param {string} sessionId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getSession(sessionId: string): Promise {\n if (typeof sessionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"sessionId\"');\n }\n const apiPath = '/account/sessions/{sessionId}'.replace('{sessionId}', sessionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update session\n *\n * Use this endpoint to extend a session's length. Extending a session is useful when session expiry is short. If the session was created using an OAuth provider, this endpoint refreshes the access token from the provider.\n *\n * @param {string} sessionId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateSession(sessionId: string): Promise {\n if (typeof sessionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"sessionId\"');\n }\n const apiPath = '/account/sessions/{sessionId}'.replace('{sessionId}', sessionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete session\n *\n * Logout the user. Use 'current' as the session ID to logout on this device, use a session ID to logout on another device. If you're looking to logout the user on all devices, use [Delete Sessions](https://appwrite.io/docs/references/cloud/client-web/account#deleteSessions) instead.\n *\n * @param {string} sessionId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteSession(sessionId: string): Promise<{}> {\n if (typeof sessionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"sessionId\"');\n }\n const apiPath = '/account/sessions/{sessionId}'.replace('{sessionId}', sessionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update status\n *\n * Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.\n *\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateStatus(): Promise> {\n const apiPath = '/account/status';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create email token (OTP)\n *\n * Sends the user an email with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The secret sent to the user's email is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits).\n *\n * @param {string} userId\n * @param {string} email\n * @param {boolean} phrase\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createEmailToken(userId: string, email: string, phrase?: boolean): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n const apiPath = '/account/tokens/email';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof phrase !== 'undefined') {\n payload['phrase'] = phrase;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create magic URL token\n *\n * Sends the user an email with a secret key for creating a session. If the provided user ID has not been registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The link sent to the user's email address is valid for 1 hour. If you are on a mobile device you can leave the URL parameter empty, so that the login completion will be handled by your Appwrite instance by default.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits).\n\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} url\n * @param {boolean} phrase\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createMagicURLToken(userId: string, email: string, url?: string, phrase?: boolean): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n const apiPath = '/account/tokens/magic-url';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof url !== 'undefined') {\n payload['url'] = url;\n }\n if (typeof phrase !== 'undefined') {\n payload['phrase'] = phrase;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create OAuth2 token\n *\n * Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed. \n\nIf authentication succeeds, `userId` and `secret` of a token will be appended to the success URL as query parameters. These can be used to create a new session using the [Create session](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits).\n *\n * @param {OAuthProvider} provider\n * @param {string} success\n * @param {string} failure\n * @param {string[]} scopes\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createOAuth2Token(provider: OAuthProvider, success?: string, failure?: string, scopes?: string[]): Promise {\n if (typeof provider === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"provider\"');\n }\n const apiPath = '/account/tokens/oauth2/{provider}'.replace('{provider}', provider);\n const payload: Payload = {};\n if (typeof success !== 'undefined') {\n payload['success'] = success;\n }\n if (typeof failure !== 'undefined') {\n payload['failure'] = failure;\n }\n if (typeof scopes !== 'undefined') {\n payload['scopes'] = scopes;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.redirect(\n 'get',\n uri,\n apiHeaders,\n payload\n );\n }\n /**\n * Create phone token\n *\n * Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [POST /v1/account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](https://appwrite.io/docs/authentication-security#limits).\n *\n * @param {string} userId\n * @param {string} phone\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createPhoneToken(userId: string, phone: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof phone === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"phone\"');\n }\n const apiPath = '/account/tokens/phone';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof phone !== 'undefined') {\n payload['phone'] = phone;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create email verification\n *\n * Use this endpoint to send a verification message to your user email address to confirm they are the valid owners of that address. Both the **userId** and **secret** arguments will be passed as query parameters to the URL you have provided to be attached to the verification email. The provided URL should redirect the user back to your app and allow you to complete the verification process by verifying both the **userId** and **secret** parameters. Learn more about how to [complete the verification process](https://appwrite.io/docs/references/cloud/client-web/account#updateVerification). The verification link sent to the user's email address is valid for 7 days.\n\nPlease note that in order to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md), the only valid redirect URLs are the ones from domains you have set when adding your platforms in the console interface.\n\n *\n * @param {string} url\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createVerification(url: string): Promise {\n if (typeof url === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"url\"');\n }\n const apiPath = '/account/verification';\n const payload: Payload = {};\n if (typeof url !== 'undefined') {\n payload['url'] = url;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create email verification (confirmation)\n *\n * Use this endpoint to complete the user email verification process. Use both the **userId** and **secret** parameters that were attached to your app URL to verify the user email ownership. If confirmed this route will return a 200 status code.\n *\n * @param {string} userId\n * @param {string} secret\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateVerification(userId: string, secret: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof secret === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"secret\"');\n }\n const apiPath = '/account/verification';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof secret !== 'undefined') {\n payload['secret'] = secret;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create phone verification\n *\n * Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https://appwrite.io/docs/references/cloud/client-web/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https://appwrite.io/docs/references/cloud/client-web/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createPhoneVerification(): Promise {\n const apiPath = '/account/verification/phone';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update phone verification (confirmation)\n *\n * Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.\n *\n * @param {string} userId\n * @param {string} secret\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updatePhoneVerification(userId: string, secret: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof secret === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"secret\"');\n }\n const apiPath = '/account/verification/phone';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof secret !== 'undefined') {\n payload['secret'] = secret;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/avatars.d.mts b/node_modules/node-appwrite/dist/services/avatars.d.mts new file mode 100644 index 0000000..65f8294 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/avatars.d.mts @@ -0,0 +1,120 @@ +import { Client } from '../client.mjs'; +import { Browser } from '../enums/browser.mjs'; +import { CreditCard } from '../enums/credit-card.mjs'; +import { Flag } from '../enums/flag.mjs'; +import '../models.mjs'; +import '../query.mjs'; + +declare class Avatars { + client: Client; + constructor(client: Client); + /** + * Get browser icon + * + * You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET /account/sessions](https://appwrite.io/docs/references/cloud/client-web/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings. + +When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. + * + * @param {Browser} code + * @param {number} width + * @param {number} height + * @param {number} quality + * @throws {AppwriteException} + * @returns {Promise} + */ + getBrowser(code: Browser, width?: number, height?: number, quality?: number): Promise; + /** + * Get credit card icon + * + * The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings. + +When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. + + * + * @param {CreditCard} code + * @param {number} width + * @param {number} height + * @param {number} quality + * @throws {AppwriteException} + * @returns {Promise} + */ + getCreditCard(code: CreditCard, width?: number, height?: number, quality?: number): Promise; + /** + * Get favicon + * + * Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL. + +This endpoint does not follow HTTP redirects. + * + * @param {string} url + * @throws {AppwriteException} + * @returns {Promise} + */ + getFavicon(url: string): Promise; + /** + * Get country flag + * + * You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) standard. + +When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. + + * + * @param {Flag} code + * @param {number} width + * @param {number} height + * @param {number} quality + * @throws {AppwriteException} + * @returns {Promise} + */ + getFlag(code: Flag, width?: number, height?: number, quality?: number): Promise; + /** + * Get image from URL + * + * Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol. + +When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px. + +This endpoint does not follow HTTP redirects. + * + * @param {string} url + * @param {number} width + * @param {number} height + * @throws {AppwriteException} + * @returns {Promise} + */ + getImage(url: string, width?: number, height?: number): Promise; + /** + * Get user initials + * + * Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned. + +You can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials. + +When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. + + * + * @param {string} name + * @param {number} width + * @param {number} height + * @param {string} background + * @throws {AppwriteException} + * @returns {Promise} + */ + getInitials(name?: string, width?: number, height?: number, background?: string): Promise; + /** + * Get QR code + * + * Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image. + + * + * @param {string} text + * @param {number} size + * @param {number} margin + * @param {boolean} download + * @throws {AppwriteException} + * @returns {Promise} + */ + getQR(text: string, size?: number, margin?: number, download?: boolean): Promise; +} + +export { Avatars }; diff --git a/node_modules/node-appwrite/dist/services/avatars.d.ts b/node_modules/node-appwrite/dist/services/avatars.d.ts new file mode 100644 index 0000000..6784078 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/avatars.d.ts @@ -0,0 +1,120 @@ +import { Client } from '../client.js'; +import { Browser } from '../enums/browser.js'; +import { CreditCard } from '../enums/credit-card.js'; +import { Flag } from '../enums/flag.js'; +import '../models.js'; +import '../query.js'; + +declare class Avatars { + client: Client; + constructor(client: Client); + /** + * Get browser icon + * + * You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET /account/sessions](https://appwrite.io/docs/references/cloud/client-web/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings. + +When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. + * + * @param {Browser} code + * @param {number} width + * @param {number} height + * @param {number} quality + * @throws {AppwriteException} + * @returns {Promise} + */ + getBrowser(code: Browser, width?: number, height?: number, quality?: number): Promise; + /** + * Get credit card icon + * + * The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings. + +When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. + + * + * @param {CreditCard} code + * @param {number} width + * @param {number} height + * @param {number} quality + * @throws {AppwriteException} + * @returns {Promise} + */ + getCreditCard(code: CreditCard, width?: number, height?: number, quality?: number): Promise; + /** + * Get favicon + * + * Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL. + +This endpoint does not follow HTTP redirects. + * + * @param {string} url + * @throws {AppwriteException} + * @returns {Promise} + */ + getFavicon(url: string): Promise; + /** + * Get country flag + * + * You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) standard. + +When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. + + * + * @param {Flag} code + * @param {number} width + * @param {number} height + * @param {number} quality + * @throws {AppwriteException} + * @returns {Promise} + */ + getFlag(code: Flag, width?: number, height?: number, quality?: number): Promise; + /** + * Get image from URL + * + * Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol. + +When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px. + +This endpoint does not follow HTTP redirects. + * + * @param {string} url + * @param {number} width + * @param {number} height + * @throws {AppwriteException} + * @returns {Promise} + */ + getImage(url: string, width?: number, height?: number): Promise; + /** + * Get user initials + * + * Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned. + +You can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials. + +When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. + + * + * @param {string} name + * @param {number} width + * @param {number} height + * @param {string} background + * @throws {AppwriteException} + * @returns {Promise} + */ + getInitials(name?: string, width?: number, height?: number, background?: string): Promise; + /** + * Get QR code + * + * Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image. + + * + * @param {string} text + * @param {number} size + * @param {number} margin + * @param {boolean} download + * @throws {AppwriteException} + * @returns {Promise} + */ + getQR(text: string, size?: number, margin?: number, download?: boolean): Promise; +} + +export { Avatars }; diff --git a/node_modules/node-appwrite/dist/services/avatars.js b/node_modules/node-appwrite/dist/services/avatars.js new file mode 100644 index 0000000..e9193af --- /dev/null +++ b/node_modules/node-appwrite/dist/services/avatars.js @@ -0,0 +1,299 @@ +'use strict'; + +var client = require('../client'); + +class Avatars { + constructor(client) { + this.client = client; + } + /** + * Get browser icon + * + * You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET /account/sessions](https://appwrite.io/docs/references/cloud/client-web/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings. + + When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. + * + * @param {Browser} code + * @param {number} width + * @param {number} height + * @param {number} quality + * @throws {AppwriteException} + * @returns {Promise} + */ + async getBrowser(code, width, height, quality) { + if (typeof code === "undefined") { + throw new client.AppwriteException('Missing required parameter: "code"'); + } + const apiPath = "/avatars/browsers/{code}".replace("{code}", code); + const payload = {}; + if (typeof width !== "undefined") { + payload["width"] = width; + } + if (typeof height !== "undefined") { + payload["height"] = height; + } + if (typeof quality !== "undefined") { + payload["quality"] = quality; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * Get credit card icon + * + * The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings. + + When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. + + * + * @param {CreditCard} code + * @param {number} width + * @param {number} height + * @param {number} quality + * @throws {AppwriteException} + * @returns {Promise} + */ + async getCreditCard(code, width, height, quality) { + if (typeof code === "undefined") { + throw new client.AppwriteException('Missing required parameter: "code"'); + } + const apiPath = "/avatars/credit-cards/{code}".replace("{code}", code); + const payload = {}; + if (typeof width !== "undefined") { + payload["width"] = width; + } + if (typeof height !== "undefined") { + payload["height"] = height; + } + if (typeof quality !== "undefined") { + payload["quality"] = quality; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * Get favicon + * + * Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL. + + This endpoint does not follow HTTP redirects. + * + * @param {string} url + * @throws {AppwriteException} + * @returns {Promise} + */ + async getFavicon(url) { + if (typeof url === "undefined") { + throw new client.AppwriteException('Missing required parameter: "url"'); + } + const apiPath = "/avatars/favicon"; + const payload = {}; + if (typeof url !== "undefined") { + payload["url"] = url; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * Get country flag + * + * You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) standard. + + When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. + + * + * @param {Flag} code + * @param {number} width + * @param {number} height + * @param {number} quality + * @throws {AppwriteException} + * @returns {Promise} + */ + async getFlag(code, width, height, quality) { + if (typeof code === "undefined") { + throw new client.AppwriteException('Missing required parameter: "code"'); + } + const apiPath = "/avatars/flags/{code}".replace("{code}", code); + const payload = {}; + if (typeof width !== "undefined") { + payload["width"] = width; + } + if (typeof height !== "undefined") { + payload["height"] = height; + } + if (typeof quality !== "undefined") { + payload["quality"] = quality; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * Get image from URL + * + * Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol. + + When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px. + + This endpoint does not follow HTTP redirects. + * + * @param {string} url + * @param {number} width + * @param {number} height + * @throws {AppwriteException} + * @returns {Promise} + */ + async getImage(url, width, height) { + if (typeof url === "undefined") { + throw new client.AppwriteException('Missing required parameter: "url"'); + } + const apiPath = "/avatars/image"; + const payload = {}; + if (typeof url !== "undefined") { + payload["url"] = url; + } + if (typeof width !== "undefined") { + payload["width"] = width; + } + if (typeof height !== "undefined") { + payload["height"] = height; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * Get user initials + * + * Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned. + + You can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials. + + When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. + + * + * @param {string} name + * @param {number} width + * @param {number} height + * @param {string} background + * @throws {AppwriteException} + * @returns {Promise} + */ + async getInitials(name, width, height, background) { + const apiPath = "/avatars/initials"; + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof width !== "undefined") { + payload["width"] = width; + } + if (typeof height !== "undefined") { + payload["height"] = height; + } + if (typeof background !== "undefined") { + payload["background"] = background; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * Get QR code + * + * Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image. + + * + * @param {string} text + * @param {number} size + * @param {number} margin + * @param {boolean} download + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQR(text, size, margin, download) { + if (typeof text === "undefined") { + throw new client.AppwriteException('Missing required parameter: "text"'); + } + const apiPath = "/avatars/qr"; + const payload = {}; + if (typeof text !== "undefined") { + payload["text"] = text; + } + if (typeof size !== "undefined") { + payload["size"] = size; + } + if (typeof margin !== "undefined") { + payload["margin"] = margin; + } + if (typeof download !== "undefined") { + payload["download"] = download; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } +} + +exports.Avatars = Avatars; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=avatars.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/avatars.js.map b/node_modules/node-appwrite/dist/services/avatars.js.map new file mode 100644 index 0000000..33dcea3 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/avatars.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/avatars.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { Browser } from '../enums/browser';\nimport { CreditCard } from '../enums/credit-card';\nimport { Flag } from '../enums/flag';\n\nexport class Avatars {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * Get browser icon\n *\n * You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET /account/sessions](https://appwrite.io/docs/references/cloud/client-web/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n *\n * @param {Browser} code\n * @param {number} width\n * @param {number} height\n * @param {number} quality\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getBrowser(code: Browser, width?: number, height?: number, quality?: number): Promise {\n if (typeof code === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"code\"');\n }\n const apiPath = '/avatars/browsers/{code}'.replace('{code}', code);\n const payload: Payload = {};\n if (typeof width !== 'undefined') {\n payload['width'] = width;\n }\n if (typeof height !== 'undefined') {\n payload['height'] = height;\n }\n if (typeof quality !== 'undefined') {\n payload['quality'] = quality;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * Get credit card icon\n *\n * The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n\n *\n * @param {CreditCard} code\n * @param {number} width\n * @param {number} height\n * @param {number} quality\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getCreditCard(code: CreditCard, width?: number, height?: number, quality?: number): Promise {\n if (typeof code === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"code\"');\n }\n const apiPath = '/avatars/credit-cards/{code}'.replace('{code}', code);\n const payload: Payload = {};\n if (typeof width !== 'undefined') {\n payload['width'] = width;\n }\n if (typeof height !== 'undefined') {\n payload['height'] = height;\n }\n if (typeof quality !== 'undefined') {\n payload['quality'] = quality;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * Get favicon\n *\n * Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n\nThis endpoint does not follow HTTP redirects.\n *\n * @param {string} url\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getFavicon(url: string): Promise {\n if (typeof url === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"url\"');\n }\n const apiPath = '/avatars/favicon';\n const payload: Payload = {};\n if (typeof url !== 'undefined') {\n payload['url'] = url;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * Get country flag\n *\n * You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n\n *\n * @param {Flag} code\n * @param {number} width\n * @param {number} height\n * @param {number} quality\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getFlag(code: Flag, width?: number, height?: number, quality?: number): Promise {\n if (typeof code === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"code\"');\n }\n const apiPath = '/avatars/flags/{code}'.replace('{code}', code);\n const payload: Payload = {};\n if (typeof width !== 'undefined') {\n payload['width'] = width;\n }\n if (typeof height !== 'undefined') {\n payload['height'] = height;\n }\n if (typeof quality !== 'undefined') {\n payload['quality'] = quality;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * Get image from URL\n *\n * Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n\nThis endpoint does not follow HTTP redirects.\n *\n * @param {string} url\n * @param {number} width\n * @param {number} height\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getImage(url: string, width?: number, height?: number): Promise {\n if (typeof url === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"url\"');\n }\n const apiPath = '/avatars/image';\n const payload: Payload = {};\n if (typeof url !== 'undefined') {\n payload['url'] = url;\n }\n if (typeof width !== 'undefined') {\n payload['width'] = width;\n }\n if (typeof height !== 'undefined') {\n payload['height'] = height;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * Get user initials\n *\n * Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n\n *\n * @param {string} name\n * @param {number} width\n * @param {number} height\n * @param {string} background\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getInitials(name?: string, width?: number, height?: number, background?: string): Promise {\n const apiPath = '/avatars/initials';\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof width !== 'undefined') {\n payload['width'] = width;\n }\n if (typeof height !== 'undefined') {\n payload['height'] = height;\n }\n if (typeof background !== 'undefined') {\n payload['background'] = background;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * Get QR code\n *\n * Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n\n *\n * @param {string} text\n * @param {number} size\n * @param {number} margin\n * @param {boolean} download\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQR(text: string, size?: number, margin?: number, download?: boolean): Promise {\n if (typeof text === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"text\"');\n }\n const apiPath = '/avatars/qr';\n const payload: Payload = {};\n if (typeof text !== 'undefined') {\n payload['text'] = text;\n }\n if (typeof size !== 'undefined') {\n payload['size'] = size;\n }\n if (typeof margin !== 'undefined') {\n payload['margin'] = margin;\n }\n if (typeof download !== 'undefined') {\n payload['download'] = download;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/avatars.mjs b/node_modules/node-appwrite/dist/services/avatars.mjs new file mode 100644 index 0000000..db1f3fa --- /dev/null +++ b/node_modules/node-appwrite/dist/services/avatars.mjs @@ -0,0 +1,298 @@ +import { AppwriteException } from '../client.mjs'; + +// src/services/avatars.ts +var Avatars = class { + constructor(client) { + this.client = client; + } + /** + * Get browser icon + * + * You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET /account/sessions](https://appwrite.io/docs/references/cloud/client-web/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings. + + When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. + * + * @param {Browser} code + * @param {number} width + * @param {number} height + * @param {number} quality + * @throws {AppwriteException} + * @returns {Promise} + */ + async getBrowser(code, width, height, quality) { + if (typeof code === "undefined") { + throw new AppwriteException('Missing required parameter: "code"'); + } + const apiPath = "/avatars/browsers/{code}".replace("{code}", code); + const payload = {}; + if (typeof width !== "undefined") { + payload["width"] = width; + } + if (typeof height !== "undefined") { + payload["height"] = height; + } + if (typeof quality !== "undefined") { + payload["quality"] = quality; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * Get credit card icon + * + * The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings. + + When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. + + * + * @param {CreditCard} code + * @param {number} width + * @param {number} height + * @param {number} quality + * @throws {AppwriteException} + * @returns {Promise} + */ + async getCreditCard(code, width, height, quality) { + if (typeof code === "undefined") { + throw new AppwriteException('Missing required parameter: "code"'); + } + const apiPath = "/avatars/credit-cards/{code}".replace("{code}", code); + const payload = {}; + if (typeof width !== "undefined") { + payload["width"] = width; + } + if (typeof height !== "undefined") { + payload["height"] = height; + } + if (typeof quality !== "undefined") { + payload["quality"] = quality; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * Get favicon + * + * Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL. + + This endpoint does not follow HTTP redirects. + * + * @param {string} url + * @throws {AppwriteException} + * @returns {Promise} + */ + async getFavicon(url) { + if (typeof url === "undefined") { + throw new AppwriteException('Missing required parameter: "url"'); + } + const apiPath = "/avatars/favicon"; + const payload = {}; + if (typeof url !== "undefined") { + payload["url"] = url; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * Get country flag + * + * You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) standard. + + When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. + + * + * @param {Flag} code + * @param {number} width + * @param {number} height + * @param {number} quality + * @throws {AppwriteException} + * @returns {Promise} + */ + async getFlag(code, width, height, quality) { + if (typeof code === "undefined") { + throw new AppwriteException('Missing required parameter: "code"'); + } + const apiPath = "/avatars/flags/{code}".replace("{code}", code); + const payload = {}; + if (typeof width !== "undefined") { + payload["width"] = width; + } + if (typeof height !== "undefined") { + payload["height"] = height; + } + if (typeof quality !== "undefined") { + payload["quality"] = quality; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * Get image from URL + * + * Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol. + + When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px. + + This endpoint does not follow HTTP redirects. + * + * @param {string} url + * @param {number} width + * @param {number} height + * @throws {AppwriteException} + * @returns {Promise} + */ + async getImage(url, width, height) { + if (typeof url === "undefined") { + throw new AppwriteException('Missing required parameter: "url"'); + } + const apiPath = "/avatars/image"; + const payload = {}; + if (typeof url !== "undefined") { + payload["url"] = url; + } + if (typeof width !== "undefined") { + payload["width"] = width; + } + if (typeof height !== "undefined") { + payload["height"] = height; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * Get user initials + * + * Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned. + + You can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials. + + When one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px. + + * + * @param {string} name + * @param {number} width + * @param {number} height + * @param {string} background + * @throws {AppwriteException} + * @returns {Promise} + */ + async getInitials(name, width, height, background) { + const apiPath = "/avatars/initials"; + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof width !== "undefined") { + payload["width"] = width; + } + if (typeof height !== "undefined") { + payload["height"] = height; + } + if (typeof background !== "undefined") { + payload["background"] = background; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * Get QR code + * + * Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image. + + * + * @param {string} text + * @param {number} size + * @param {number} margin + * @param {boolean} download + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQR(text, size, margin, download) { + if (typeof text === "undefined") { + throw new AppwriteException('Missing required parameter: "text"'); + } + const apiPath = "/avatars/qr"; + const payload = {}; + if (typeof text !== "undefined") { + payload["text"] = text; + } + if (typeof size !== "undefined") { + payload["size"] = size; + } + if (typeof margin !== "undefined") { + payload["margin"] = margin; + } + if (typeof download !== "undefined") { + payload["download"] = download; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } +}; + +export { Avatars }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=avatars.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/avatars.mjs.map b/node_modules/node-appwrite/dist/services/avatars.mjs.map new file mode 100644 index 0000000..754cd0a --- /dev/null +++ b/node_modules/node-appwrite/dist/services/avatars.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/avatars.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { Browser } from '../enums/browser';\nimport { CreditCard } from '../enums/credit-card';\nimport { Flag } from '../enums/flag';\n\nexport class Avatars {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * Get browser icon\n *\n * You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET /account/sessions](https://appwrite.io/docs/references/cloud/client-web/account#getSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n *\n * @param {Browser} code\n * @param {number} width\n * @param {number} height\n * @param {number} quality\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getBrowser(code: Browser, width?: number, height?: number, quality?: number): Promise {\n if (typeof code === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"code\"');\n }\n const apiPath = '/avatars/browsers/{code}'.replace('{code}', code);\n const payload: Payload = {};\n if (typeof width !== 'undefined') {\n payload['width'] = width;\n }\n if (typeof height !== 'undefined') {\n payload['height'] = height;\n }\n if (typeof quality !== 'undefined') {\n payload['quality'] = quality;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * Get credit card icon\n *\n * The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n\n *\n * @param {CreditCard} code\n * @param {number} width\n * @param {number} height\n * @param {number} quality\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getCreditCard(code: CreditCard, width?: number, height?: number, quality?: number): Promise {\n if (typeof code === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"code\"');\n }\n const apiPath = '/avatars/credit-cards/{code}'.replace('{code}', code);\n const payload: Payload = {};\n if (typeof width !== 'undefined') {\n payload['width'] = width;\n }\n if (typeof height !== 'undefined') {\n payload['height'] = height;\n }\n if (typeof quality !== 'undefined') {\n payload['quality'] = quality;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * Get favicon\n *\n * Use this endpoint to fetch the favorite icon (AKA favicon) of any remote website URL.\n\nThis endpoint does not follow HTTP redirects.\n *\n * @param {string} url\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getFavicon(url: string): Promise {\n if (typeof url === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"url\"');\n }\n const apiPath = '/avatars/favicon';\n const payload: Payload = {};\n if (typeof url !== 'undefined') {\n payload['url'] = url;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * Get country flag\n *\n * You can use this endpoint to show different country flags icons to your users. The code argument receives the 2 letter country code. Use width, height and quality arguments to change the output settings. Country codes follow the [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n\n *\n * @param {Flag} code\n * @param {number} width\n * @param {number} height\n * @param {number} quality\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getFlag(code: Flag, width?: number, height?: number, quality?: number): Promise {\n if (typeof code === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"code\"');\n }\n const apiPath = '/avatars/flags/{code}'.replace('{code}', code);\n const payload: Payload = {};\n if (typeof width !== 'undefined') {\n payload['width'] = width;\n }\n if (typeof height !== 'undefined') {\n payload['height'] = height;\n }\n if (typeof quality !== 'undefined') {\n payload['quality'] = quality;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * Get image from URL\n *\n * Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in case you want to make sure a 3rd party image is properly served using a TLS protocol.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n\nThis endpoint does not follow HTTP redirects.\n *\n * @param {string} url\n * @param {number} width\n * @param {number} height\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getImage(url: string, width?: number, height?: number): Promise {\n if (typeof url === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"url\"');\n }\n const apiPath = '/avatars/image';\n const payload: Payload = {};\n if (typeof url !== 'undefined') {\n payload['url'] = url;\n }\n if (typeof width !== 'undefined') {\n payload['width'] = width;\n }\n if (typeof height !== 'undefined') {\n payload['height'] = height;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * Get user initials\n *\n * Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n\n *\n * @param {string} name\n * @param {number} width\n * @param {number} height\n * @param {string} background\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getInitials(name?: string, width?: number, height?: number, background?: string): Promise {\n const apiPath = '/avatars/initials';\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof width !== 'undefined') {\n payload['width'] = width;\n }\n if (typeof height !== 'undefined') {\n payload['height'] = height;\n }\n if (typeof background !== 'undefined') {\n payload['background'] = background;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * Get QR code\n *\n * Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n\n *\n * @param {string} text\n * @param {number} size\n * @param {number} margin\n * @param {boolean} download\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQR(text: string, size?: number, margin?: number, download?: boolean): Promise {\n if (typeof text === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"text\"');\n }\n const apiPath = '/avatars/qr';\n const payload: Payload = {};\n if (typeof text !== 'undefined') {\n payload['text'] = text;\n }\n if (typeof size !== 'undefined') {\n payload['size'] = size;\n }\n if (typeof margin !== 'undefined') {\n payload['margin'] = margin;\n }\n if (typeof download !== 'undefined') {\n payload['download'] = download;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/databases.d.mts b/node_modules/node-appwrite/dist/services/databases.d.mts new file mode 100644 index 0000000..fcb52c6 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/databases.d.mts @@ -0,0 +1,617 @@ +import { Client } from '../client.mjs'; +import { Models } from '../models.mjs'; +import { RelationshipType } from '../enums/relationship-type.mjs'; +import { RelationMutate } from '../enums/relation-mutate.mjs'; +import { IndexType } from '../enums/index-type.mjs'; +import '../query.mjs'; + +declare class Databases { + client: Client; + constructor(client: Client); + /** + * List databases + * + * Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + list(queries?: string[], search?: string): Promise; + /** + * Create database + * + * Create a new Database. + + * + * @param {string} databaseId + * @param {string} name + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + create(databaseId: string, name: string, enabled?: boolean): Promise; + /** + * Get database + * + * Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata. + * + * @param {string} databaseId + * @throws {AppwriteException} + * @returns {Promise} + */ + get(databaseId: string): Promise; + /** + * Update database + * + * Update a database by its unique ID. + * + * @param {string} databaseId + * @param {string} name + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + update(databaseId: string, name: string, enabled?: boolean): Promise; + /** + * Delete database + * + * Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database. + * + * @param {string} databaseId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + delete(databaseId: string): Promise<{}>; + /** + * List collections + * + * Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results. + * + * @param {string} databaseId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listCollections(databaseId: string, queries?: string[], search?: string): Promise; + /** + * Create collection + * + * Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} name + * @param {string[]} permissions + * @param {boolean} documentSecurity + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createCollection(databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean): Promise; + /** + * Get collection + * + * Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata. + * + * @param {string} databaseId + * @param {string} collectionId + * @throws {AppwriteException} + * @returns {Promise} + */ + getCollection(databaseId: string, collectionId: string): Promise; + /** + * Update collection + * + * Update a collection by its unique ID. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} name + * @param {string[]} permissions + * @param {boolean} documentSecurity + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + updateCollection(databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean): Promise; + /** + * Delete collection + * + * Delete a collection by its unique ID. Only users with write permissions have access to delete this resource. + * + * @param {string} databaseId + * @param {string} collectionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteCollection(databaseId: string, collectionId: string): Promise<{}>; + /** + * List attributes + * + * List attributes in the collection. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listAttributes(databaseId: string, collectionId: string, queries?: string[]): Promise; + /** + * Create boolean attribute + * + * Create a boolean attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {boolean} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + createBooleanAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, array?: boolean): Promise; + /** + * Update boolean attribute + * + * Update a boolean attribute. Changing the `default` value will not update already existing documents. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {boolean} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateBooleanAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, newKey?: string): Promise; + /** + * Create datetime attribute + * + * Create a date time attribute according to the ISO 8601 standard. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + createDatetimeAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise; + /** + * Update dateTime attribute + * + * Update a date time attribute. Changing the `default` value will not update already existing documents. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateDatetimeAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise; + /** + * Create email attribute + * + * Create an email attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + createEmailAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise; + /** + * Update email attribute + * + * Update an email attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateEmailAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise; + /** + * Create enum attribute + * + * Create an enumeration attribute. The `elements` param acts as a white-list of accepted values for this attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {string[]} elements + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + createEnumAttribute(databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, array?: boolean): Promise; + /** + * Update enum attribute + * + * Update an enum attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {string[]} elements + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateEnumAttribute(databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, newKey?: string): Promise; + /** + * Create float attribute + * + * Create a float attribute. Optionally, minimum and maximum values can be provided. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {number} min + * @param {number} max + * @param {number} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + createFloatAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean): Promise; + /** + * Update float attribute + * + * Update a float attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {number} min + * @param {number} max + * @param {number} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateFloatAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min: number, max: number, xdefault?: number, newKey?: string): Promise; + /** + * Create integer attribute + * + * Create an integer attribute. Optionally, minimum and maximum values can be provided. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {number} min + * @param {number} max + * @param {number} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + createIntegerAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean): Promise; + /** + * Update integer attribute + * + * Update an integer attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {number} min + * @param {number} max + * @param {number} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateIntegerAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min: number, max: number, xdefault?: number, newKey?: string): Promise; + /** + * Create IP address attribute + * + * Create IP address attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + createIpAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise; + /** + * Update IP address attribute + * + * Update an ip attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateIpAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise; + /** + * Create relationship attribute + * + * Create relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes). + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} relatedCollectionId + * @param {RelationshipType} type + * @param {boolean} twoWay + * @param {string} key + * @param {string} twoWayKey + * @param {RelationMutate} onDelete + * @throws {AppwriteException} + * @returns {Promise} + */ + createRelationshipAttribute(databaseId: string, collectionId: string, relatedCollectionId: string, type: RelationshipType, twoWay?: boolean, key?: string, twoWayKey?: string, onDelete?: RelationMutate): Promise; + /** + * Create string attribute + * + * Create a string attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {number} size + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @param {boolean} encrypt + * @throws {AppwriteException} + * @returns {Promise} + */ + createStringAttribute(databaseId: string, collectionId: string, key: string, size: number, required: boolean, xdefault?: string, array?: boolean, encrypt?: boolean): Promise; + /** + * Update string attribute + * + * Update a string attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {number} size + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateStringAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, size?: number, newKey?: string): Promise; + /** + * Create URL attribute + * + * Create a URL attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + createUrlAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise; + /** + * Update URL attribute + * + * Update an url attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateUrlAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise; + /** + * Get attribute + * + * Get attribute by ID. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + getAttribute(databaseId: string, collectionId: string, key: string): Promise<{}>; + /** + * Delete attribute + * + * Deletes an attribute. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteAttribute(databaseId: string, collectionId: string, key: string): Promise<{}>; + /** + * Update relationship attribute + * + * Update relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes). + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {RelationMutate} onDelete + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateRelationshipAttribute(databaseId: string, collectionId: string, key: string, onDelete?: RelationMutate, newKey?: string): Promise; + /** + * List documents + * + * Get a list of all the user's documents in a given collection. You can use the query params to filter your results. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise>} + */ + listDocuments(databaseId: string, collectionId: string, queries?: string[]): Promise>; + /** + * Create document + * + * Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} documentId + * @param {Omit} data + * @param {string[]} permissions + * @throws {AppwriteException} + * @returns {Promise} + */ + createDocument(databaseId: string, collectionId: string, documentId: string, data: Omit, permissions?: string[]): Promise; + /** + * Get document + * + * Get a document by its unique ID. This endpoint response returns a JSON object with the document data. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} documentId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + getDocument(databaseId: string, collectionId: string, documentId: string, queries?: string[]): Promise; + /** + * Update document + * + * Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} documentId + * @param {Partial>} data + * @param {string[]} permissions + * @throws {AppwriteException} + * @returns {Promise} + */ + updateDocument(databaseId: string, collectionId: string, documentId: string, data?: Partial>, permissions?: string[]): Promise; + /** + * Delete document + * + * Delete a document by its unique ID. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} documentId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteDocument(databaseId: string, collectionId: string, documentId: string): Promise<{}>; + /** + * List indexes + * + * List indexes in the collection. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listIndexes(databaseId: string, collectionId: string, queries?: string[]): Promise; + /** + * Create index + * + * Creates an index on the attributes listed. Your index should include all the attributes you will query in a single request. +Attributes can be `key`, `fulltext`, and `unique`. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {IndexType} type + * @param {string[]} attributes + * @param {string[]} orders + * @throws {AppwriteException} + * @returns {Promise} + */ + createIndex(databaseId: string, collectionId: string, key: string, type: IndexType, attributes: string[], orders?: string[]): Promise; + /** + * Get index + * + * Get index by ID. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @throws {AppwriteException} + * @returns {Promise} + */ + getIndex(databaseId: string, collectionId: string, key: string): Promise; + /** + * Delete index + * + * Delete an index. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteIndex(databaseId: string, collectionId: string, key: string): Promise<{}>; +} + +export { Databases }; diff --git a/node_modules/node-appwrite/dist/services/databases.d.ts b/node_modules/node-appwrite/dist/services/databases.d.ts new file mode 100644 index 0000000..2170c3c --- /dev/null +++ b/node_modules/node-appwrite/dist/services/databases.d.ts @@ -0,0 +1,617 @@ +import { Client } from '../client.js'; +import { Models } from '../models.js'; +import { RelationshipType } from '../enums/relationship-type.js'; +import { RelationMutate } from '../enums/relation-mutate.js'; +import { IndexType } from '../enums/index-type.js'; +import '../query.js'; + +declare class Databases { + client: Client; + constructor(client: Client); + /** + * List databases + * + * Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + list(queries?: string[], search?: string): Promise; + /** + * Create database + * + * Create a new Database. + + * + * @param {string} databaseId + * @param {string} name + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + create(databaseId: string, name: string, enabled?: boolean): Promise; + /** + * Get database + * + * Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata. + * + * @param {string} databaseId + * @throws {AppwriteException} + * @returns {Promise} + */ + get(databaseId: string): Promise; + /** + * Update database + * + * Update a database by its unique ID. + * + * @param {string} databaseId + * @param {string} name + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + update(databaseId: string, name: string, enabled?: boolean): Promise; + /** + * Delete database + * + * Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database. + * + * @param {string} databaseId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + delete(databaseId: string): Promise<{}>; + /** + * List collections + * + * Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results. + * + * @param {string} databaseId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listCollections(databaseId: string, queries?: string[], search?: string): Promise; + /** + * Create collection + * + * Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} name + * @param {string[]} permissions + * @param {boolean} documentSecurity + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createCollection(databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean): Promise; + /** + * Get collection + * + * Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata. + * + * @param {string} databaseId + * @param {string} collectionId + * @throws {AppwriteException} + * @returns {Promise} + */ + getCollection(databaseId: string, collectionId: string): Promise; + /** + * Update collection + * + * Update a collection by its unique ID. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} name + * @param {string[]} permissions + * @param {boolean} documentSecurity + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + updateCollection(databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean): Promise; + /** + * Delete collection + * + * Delete a collection by its unique ID. Only users with write permissions have access to delete this resource. + * + * @param {string} databaseId + * @param {string} collectionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteCollection(databaseId: string, collectionId: string): Promise<{}>; + /** + * List attributes + * + * List attributes in the collection. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listAttributes(databaseId: string, collectionId: string, queries?: string[]): Promise; + /** + * Create boolean attribute + * + * Create a boolean attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {boolean} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + createBooleanAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, array?: boolean): Promise; + /** + * Update boolean attribute + * + * Update a boolean attribute. Changing the `default` value will not update already existing documents. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {boolean} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateBooleanAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, newKey?: string): Promise; + /** + * Create datetime attribute + * + * Create a date time attribute according to the ISO 8601 standard. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + createDatetimeAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise; + /** + * Update dateTime attribute + * + * Update a date time attribute. Changing the `default` value will not update already existing documents. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateDatetimeAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise; + /** + * Create email attribute + * + * Create an email attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + createEmailAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise; + /** + * Update email attribute + * + * Update an email attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateEmailAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise; + /** + * Create enum attribute + * + * Create an enumeration attribute. The `elements` param acts as a white-list of accepted values for this attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {string[]} elements + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + createEnumAttribute(databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, array?: boolean): Promise; + /** + * Update enum attribute + * + * Update an enum attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {string[]} elements + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateEnumAttribute(databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, newKey?: string): Promise; + /** + * Create float attribute + * + * Create a float attribute. Optionally, minimum and maximum values can be provided. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {number} min + * @param {number} max + * @param {number} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + createFloatAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean): Promise; + /** + * Update float attribute + * + * Update a float attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {number} min + * @param {number} max + * @param {number} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateFloatAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min: number, max: number, xdefault?: number, newKey?: string): Promise; + /** + * Create integer attribute + * + * Create an integer attribute. Optionally, minimum and maximum values can be provided. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {number} min + * @param {number} max + * @param {number} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + createIntegerAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean): Promise; + /** + * Update integer attribute + * + * Update an integer attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {number} min + * @param {number} max + * @param {number} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateIntegerAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min: number, max: number, xdefault?: number, newKey?: string): Promise; + /** + * Create IP address attribute + * + * Create IP address attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + createIpAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise; + /** + * Update IP address attribute + * + * Update an ip attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateIpAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise; + /** + * Create relationship attribute + * + * Create relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes). + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} relatedCollectionId + * @param {RelationshipType} type + * @param {boolean} twoWay + * @param {string} key + * @param {string} twoWayKey + * @param {RelationMutate} onDelete + * @throws {AppwriteException} + * @returns {Promise} + */ + createRelationshipAttribute(databaseId: string, collectionId: string, relatedCollectionId: string, type: RelationshipType, twoWay?: boolean, key?: string, twoWayKey?: string, onDelete?: RelationMutate): Promise; + /** + * Create string attribute + * + * Create a string attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {number} size + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @param {boolean} encrypt + * @throws {AppwriteException} + * @returns {Promise} + */ + createStringAttribute(databaseId: string, collectionId: string, key: string, size: number, required: boolean, xdefault?: string, array?: boolean, encrypt?: boolean): Promise; + /** + * Update string attribute + * + * Update a string attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {number} size + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateStringAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, size?: number, newKey?: string): Promise; + /** + * Create URL attribute + * + * Create a URL attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + createUrlAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise; + /** + * Update URL attribute + * + * Update an url attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateUrlAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise; + /** + * Get attribute + * + * Get attribute by ID. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + getAttribute(databaseId: string, collectionId: string, key: string): Promise<{}>; + /** + * Delete attribute + * + * Deletes an attribute. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteAttribute(databaseId: string, collectionId: string, key: string): Promise<{}>; + /** + * Update relationship attribute + * + * Update relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes). + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {RelationMutate} onDelete + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateRelationshipAttribute(databaseId: string, collectionId: string, key: string, onDelete?: RelationMutate, newKey?: string): Promise; + /** + * List documents + * + * Get a list of all the user's documents in a given collection. You can use the query params to filter your results. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise>} + */ + listDocuments(databaseId: string, collectionId: string, queries?: string[]): Promise>; + /** + * Create document + * + * Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} documentId + * @param {Omit} data + * @param {string[]} permissions + * @throws {AppwriteException} + * @returns {Promise} + */ + createDocument(databaseId: string, collectionId: string, documentId: string, data: Omit, permissions?: string[]): Promise; + /** + * Get document + * + * Get a document by its unique ID. This endpoint response returns a JSON object with the document data. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} documentId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + getDocument(databaseId: string, collectionId: string, documentId: string, queries?: string[]): Promise; + /** + * Update document + * + * Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} documentId + * @param {Partial>} data + * @param {string[]} permissions + * @throws {AppwriteException} + * @returns {Promise} + */ + updateDocument(databaseId: string, collectionId: string, documentId: string, data?: Partial>, permissions?: string[]): Promise; + /** + * Delete document + * + * Delete a document by its unique ID. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} documentId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteDocument(databaseId: string, collectionId: string, documentId: string): Promise<{}>; + /** + * List indexes + * + * List indexes in the collection. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listIndexes(databaseId: string, collectionId: string, queries?: string[]): Promise; + /** + * Create index + * + * Creates an index on the attributes listed. Your index should include all the attributes you will query in a single request. +Attributes can be `key`, `fulltext`, and `unique`. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {IndexType} type + * @param {string[]} attributes + * @param {string[]} orders + * @throws {AppwriteException} + * @returns {Promise} + */ + createIndex(databaseId: string, collectionId: string, key: string, type: IndexType, attributes: string[], orders?: string[]): Promise; + /** + * Get index + * + * Get index by ID. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @throws {AppwriteException} + * @returns {Promise} + */ + getIndex(databaseId: string, collectionId: string, key: string): Promise; + /** + * Delete index + * + * Delete an index. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteIndex(databaseId: string, collectionId: string, key: string): Promise<{}>; +} + +export { Databases }; diff --git a/node_modules/node-appwrite/dist/services/databases.js b/node_modules/node-appwrite/dist/services/databases.js new file mode 100644 index 0000000..0f5e413 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/databases.js @@ -0,0 +1,1952 @@ +'use strict'; + +var client = require('../client'); + +class Databases { + constructor(client) { + this.client = client; + } + /** + * List databases + * + * Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async list(queries, search) { + const apiPath = "/databases"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create database + * + * Create a new Database. + + * + * @param {string} databaseId + * @param {string} name + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async create(databaseId, name, enabled) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/databases"; + const payload = {}; + if (typeof databaseId !== "undefined") { + payload["databaseId"] = databaseId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get database + * + * Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata. + * + * @param {string} databaseId + * @throws {AppwriteException} + * @returns {Promise} + */ + async get(databaseId) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + const apiPath = "/databases/{databaseId}".replace("{databaseId}", databaseId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update database + * + * Update a database by its unique ID. + * + * @param {string} databaseId + * @param {string} name + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async update(databaseId, name, enabled) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/databases/{databaseId}".replace("{databaseId}", databaseId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Delete database + * + * Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database. + * + * @param {string} databaseId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async delete(databaseId) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + const apiPath = "/databases/{databaseId}".replace("{databaseId}", databaseId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List collections + * + * Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results. + * + * @param {string} databaseId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listCollections(databaseId, queries, search) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + const apiPath = "/databases/{databaseId}/collections".replace("{databaseId}", databaseId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create collection + * + * Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} name + * @param {string[]} permissions + * @param {boolean} documentSecurity + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createCollection(databaseId, collectionId, name, permissions, documentSecurity, enabled) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/databases/{databaseId}/collections".replace("{databaseId}", databaseId); + const payload = {}; + if (typeof collectionId !== "undefined") { + payload["collectionId"] = collectionId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof permissions !== "undefined") { + payload["permissions"] = permissions; + } + if (typeof documentSecurity !== "undefined") { + payload["documentSecurity"] = documentSecurity; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get collection + * + * Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata. + * + * @param {string} databaseId + * @param {string} collectionId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getCollection(databaseId, collectionId) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update collection + * + * Update a collection by its unique ID. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} name + * @param {string[]} permissions + * @param {boolean} documentSecurity + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateCollection(databaseId, collectionId, name, permissions, documentSecurity, enabled) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof permissions !== "undefined") { + payload["permissions"] = permissions; + } + if (typeof documentSecurity !== "undefined") { + payload["documentSecurity"] = documentSecurity; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Delete collection + * + * Delete a collection by its unique ID. Only users with write permissions have access to delete this resource. + * + * @param {string} databaseId + * @param {string} collectionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteCollection(databaseId, collectionId) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List attributes + * + * List attributes in the collection. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listAttributes(databaseId, collectionId, queries) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create boolean attribute + * + * Create a boolean attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {boolean} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + async createBooleanAttribute(databaseId, collectionId, key, required, xdefault, array) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/boolean".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update boolean attribute + * + * Update a boolean attribute. Changing the `default` value will not update already existing documents. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {boolean} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateBooleanAttribute(databaseId, collectionId, key, required, xdefault, newKey) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + if (typeof xdefault === "undefined") { + throw new client.AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/boolean/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create datetime attribute + * + * Create a date time attribute according to the ISO 8601 standard. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + async createDatetimeAttribute(databaseId, collectionId, key, required, xdefault, array) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/datetime".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update dateTime attribute + * + * Update a date time attribute. Changing the `default` value will not update already existing documents. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateDatetimeAttribute(databaseId, collectionId, key, required, xdefault, newKey) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + if (typeof xdefault === "undefined") { + throw new client.AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/datetime/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create email attribute + * + * Create an email attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + async createEmailAttribute(databaseId, collectionId, key, required, xdefault, array) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/email".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update email attribute + * + * Update an email attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateEmailAttribute(databaseId, collectionId, key, required, xdefault, newKey) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + if (typeof xdefault === "undefined") { + throw new client.AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/email/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create enum attribute + * + * Create an enumeration attribute. The `elements` param acts as a white-list of accepted values for this attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {string[]} elements + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + async createEnumAttribute(databaseId, collectionId, key, elements, required, xdefault, array) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof elements === "undefined") { + throw new client.AppwriteException('Missing required parameter: "elements"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/enum".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof elements !== "undefined") { + payload["elements"] = elements; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update enum attribute + * + * Update an enum attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {string[]} elements + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateEnumAttribute(databaseId, collectionId, key, elements, required, xdefault, newKey) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof elements === "undefined") { + throw new client.AppwriteException('Missing required parameter: "elements"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + if (typeof xdefault === "undefined") { + throw new client.AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/enum/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof elements !== "undefined") { + payload["elements"] = elements; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create float attribute + * + * Create a float attribute. Optionally, minimum and maximum values can be provided. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {number} min + * @param {number} max + * @param {number} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + async createFloatAttribute(databaseId, collectionId, key, required, min, max, xdefault, array) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/float".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof min !== "undefined") { + payload["min"] = min; + } + if (typeof max !== "undefined") { + payload["max"] = max; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update float attribute + * + * Update a float attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {number} min + * @param {number} max + * @param {number} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateFloatAttribute(databaseId, collectionId, key, required, min, max, xdefault, newKey) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + if (typeof min === "undefined") { + throw new client.AppwriteException('Missing required parameter: "min"'); + } + if (typeof max === "undefined") { + throw new client.AppwriteException('Missing required parameter: "max"'); + } + if (typeof xdefault === "undefined") { + throw new client.AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/float/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof min !== "undefined") { + payload["min"] = min; + } + if (typeof max !== "undefined") { + payload["max"] = max; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create integer attribute + * + * Create an integer attribute. Optionally, minimum and maximum values can be provided. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {number} min + * @param {number} max + * @param {number} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + async createIntegerAttribute(databaseId, collectionId, key, required, min, max, xdefault, array) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/integer".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof min !== "undefined") { + payload["min"] = min; + } + if (typeof max !== "undefined") { + payload["max"] = max; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update integer attribute + * + * Update an integer attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {number} min + * @param {number} max + * @param {number} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateIntegerAttribute(databaseId, collectionId, key, required, min, max, xdefault, newKey) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + if (typeof min === "undefined") { + throw new client.AppwriteException('Missing required parameter: "min"'); + } + if (typeof max === "undefined") { + throw new client.AppwriteException('Missing required parameter: "max"'); + } + if (typeof xdefault === "undefined") { + throw new client.AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/integer/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof min !== "undefined") { + payload["min"] = min; + } + if (typeof max !== "undefined") { + payload["max"] = max; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create IP address attribute + * + * Create IP address attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + async createIpAttribute(databaseId, collectionId, key, required, xdefault, array) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/ip".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update IP address attribute + * + * Update an ip attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateIpAttribute(databaseId, collectionId, key, required, xdefault, newKey) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + if (typeof xdefault === "undefined") { + throw new client.AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/ip/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create relationship attribute + * + * Create relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes). + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} relatedCollectionId + * @param {RelationshipType} type + * @param {boolean} twoWay + * @param {string} key + * @param {string} twoWayKey + * @param {RelationMutate} onDelete + * @throws {AppwriteException} + * @returns {Promise} + */ + async createRelationshipAttribute(databaseId, collectionId, relatedCollectionId, type, twoWay, key, twoWayKey, onDelete) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof relatedCollectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "relatedCollectionId"'); + } + if (typeof type === "undefined") { + throw new client.AppwriteException('Missing required parameter: "type"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/relationship".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof relatedCollectionId !== "undefined") { + payload["relatedCollectionId"] = relatedCollectionId; + } + if (typeof type !== "undefined") { + payload["type"] = type; + } + if (typeof twoWay !== "undefined") { + payload["twoWay"] = twoWay; + } + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof twoWayKey !== "undefined") { + payload["twoWayKey"] = twoWayKey; + } + if (typeof onDelete !== "undefined") { + payload["onDelete"] = onDelete; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create string attribute + * + * Create a string attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {number} size + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @param {boolean} encrypt + * @throws {AppwriteException} + * @returns {Promise} + */ + async createStringAttribute(databaseId, collectionId, key, size, required, xdefault, array, encrypt) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof size === "undefined") { + throw new client.AppwriteException('Missing required parameter: "size"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/string".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof size !== "undefined") { + payload["size"] = size; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + if (typeof encrypt !== "undefined") { + payload["encrypt"] = encrypt; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update string attribute + * + * Update a string attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {number} size + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateStringAttribute(databaseId, collectionId, key, required, xdefault, size, newKey) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + if (typeof xdefault === "undefined") { + throw new client.AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/string/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof size !== "undefined") { + payload["size"] = size; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create URL attribute + * + * Create a URL attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + async createUrlAttribute(databaseId, collectionId, key, required, xdefault, array) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/url".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update URL attribute + * + * Update an url attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateUrlAttribute(databaseId, collectionId, key, required, xdefault, newKey) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new client.AppwriteException('Missing required parameter: "required"'); + } + if (typeof xdefault === "undefined") { + throw new client.AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/url/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Get attribute + * + * Get attribute by ID. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async getAttribute(databaseId, collectionId, key) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete attribute + * + * Deletes an attribute. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteAttribute(databaseId, collectionId, key) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Update relationship attribute + * + * Update relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes). + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {RelationMutate} onDelete + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateRelationshipAttribute(databaseId, collectionId, key, onDelete, newKey) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/{key}/relationship".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof onDelete !== "undefined") { + payload["onDelete"] = onDelete; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * List documents + * + * Get a list of all the user's documents in a given collection. You can use the query params to filter your results. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise>} + */ + async listDocuments(databaseId, collectionId, queries) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/documents".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create document + * + * Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} documentId + * @param {Omit} data + * @param {string[]} permissions + * @throws {AppwriteException} + * @returns {Promise} + */ + async createDocument(databaseId, collectionId, documentId, data, permissions) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof documentId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "documentId"'); + } + if (typeof data === "undefined") { + throw new client.AppwriteException('Missing required parameter: "data"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/documents".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof documentId !== "undefined") { + payload["documentId"] = documentId; + } + if (typeof data !== "undefined") { + payload["data"] = data; + } + if (typeof permissions !== "undefined") { + payload["permissions"] = permissions; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get document + * + * Get a document by its unique ID. This endpoint response returns a JSON object with the document data. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} documentId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async getDocument(databaseId, collectionId, documentId, queries) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof documentId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "documentId"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/documents/{documentId}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{documentId}", documentId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update document + * + * Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} documentId + * @param {Partial>} data + * @param {string[]} permissions + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateDocument(databaseId, collectionId, documentId, data, permissions) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof documentId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "documentId"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/documents/{documentId}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{documentId}", documentId); + const payload = {}; + if (typeof data !== "undefined") { + payload["data"] = data; + } + if (typeof permissions !== "undefined") { + payload["permissions"] = permissions; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Delete document + * + * Delete a document by its unique ID. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} documentId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteDocument(databaseId, collectionId, documentId) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof documentId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "documentId"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/documents/{documentId}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{documentId}", documentId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List indexes + * + * List indexes in the collection. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listIndexes(databaseId, collectionId, queries) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/indexes".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create index + * + * Creates an index on the attributes listed. Your index should include all the attributes you will query in a single request. + Attributes can be `key`, `fulltext`, and `unique`. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {IndexType} type + * @param {string[]} attributes + * @param {string[]} orders + * @throws {AppwriteException} + * @returns {Promise} + */ + async createIndex(databaseId, collectionId, key, type, attributes, orders) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof type === "undefined") { + throw new client.AppwriteException('Missing required parameter: "type"'); + } + if (typeof attributes === "undefined") { + throw new client.AppwriteException('Missing required parameter: "attributes"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/indexes".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof type !== "undefined") { + payload["type"] = type; + } + if (typeof attributes !== "undefined") { + payload["attributes"] = attributes; + } + if (typeof orders !== "undefined") { + payload["orders"] = orders; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get index + * + * Get index by ID. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @throws {AppwriteException} + * @returns {Promise} + */ + async getIndex(databaseId, collectionId, key) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/indexes/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete index + * + * Delete an index. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteIndex(databaseId, collectionId, key) { + if (typeof databaseId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/indexes/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } +} + +exports.Databases = Databases; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=databases.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/databases.js.map b/node_modules/node-appwrite/dist/services/databases.js.map new file mode 100644 index 0000000..4d66122 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/databases.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/databases.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { RelationshipType } from '../enums/relationship-type';\nimport { RelationMutate } from '../enums/relation-mutate';\nimport { IndexType } from '../enums/index-type';\n\nexport class Databases {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * List databases\n *\n * Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async list(queries?: string[], search?: string): Promise {\n const apiPath = '/databases';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create database\n *\n * Create a new Database.\n\n *\n * @param {string} databaseId\n * @param {string} name\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async create(databaseId: string, name: string, enabled?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/databases';\n const payload: Payload = {};\n if (typeof databaseId !== 'undefined') {\n payload['databaseId'] = databaseId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get database\n *\n * Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.\n *\n * @param {string} databaseId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async get(databaseId: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n const apiPath = '/databases/{databaseId}'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update database\n *\n * Update a database by its unique ID.\n *\n * @param {string} databaseId\n * @param {string} name\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async update(databaseId: string, name: string, enabled?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/databases/{databaseId}'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete database\n *\n * Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.\n *\n * @param {string} databaseId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async delete(databaseId: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n const apiPath = '/databases/{databaseId}'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List collections\n *\n * Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.\n *\n * @param {string} databaseId\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listCollections(databaseId: string, queries?: string[], search?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n const apiPath = '/databases/{databaseId}/collections'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create collection\n *\n * Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} name\n * @param {string[]} permissions\n * @param {boolean} documentSecurity\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createCollection(databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/databases/{databaseId}/collections'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n if (typeof collectionId !== 'undefined') {\n payload['collectionId'] = collectionId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n if (typeof documentSecurity !== 'undefined') {\n payload['documentSecurity'] = documentSecurity;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get collection\n *\n * Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getCollection(databaseId: string, collectionId: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update collection\n *\n * Update a collection by its unique ID.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} name\n * @param {string[]} permissions\n * @param {boolean} documentSecurity\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateCollection(databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n if (typeof documentSecurity !== 'undefined') {\n payload['documentSecurity'] = documentSecurity;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete collection\n *\n * Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteCollection(databaseId: string, collectionId: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List attributes\n *\n * List attributes in the collection.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listAttributes(databaseId: string, collectionId: string, queries?: string[]): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create boolean attribute\n *\n * Create a boolean attribute.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {boolean} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createBooleanAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, array?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/boolean'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update boolean attribute\n *\n * Update a boolean attribute. Changing the `default` value will not update already existing documents.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {boolean} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateBooleanAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/boolean/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create datetime attribute\n *\n * Create a date time attribute according to the ISO 8601 standard.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createDatetimeAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/datetime'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update dateTime attribute\n *\n * Update a date time attribute. Changing the `default` value will not update already existing documents.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateDatetimeAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/datetime/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create email attribute\n *\n * Create an email attribute.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createEmailAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/email'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update email attribute\n *\n * Update an email attribute. Changing the `default` value will not update already existing documents.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateEmailAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/email/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create enum attribute\n *\n * Create an enumeration attribute. The `elements` param acts as a white-list of accepted values for this attribute. \n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {string[]} elements\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createEnumAttribute(databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, array?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof elements === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"elements\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/enum'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof elements !== 'undefined') {\n payload['elements'] = elements;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update enum attribute\n *\n * Update an enum attribute. Changing the `default` value will not update already existing documents.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {string[]} elements\n * @param {boolean} required\n * @param {string} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateEnumAttribute(databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof elements === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"elements\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/enum/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof elements !== 'undefined') {\n payload['elements'] = elements;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create float attribute\n *\n * Create a float attribute. Optionally, minimum and maximum values can be provided.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {number} min\n * @param {number} max\n * @param {number} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createFloatAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/float'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update float attribute\n *\n * Update a float attribute. Changing the `default` value will not update already existing documents.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {number} min\n * @param {number} max\n * @param {number} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateFloatAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min: number, max: number, xdefault?: number, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof min === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"min\"');\n }\n if (typeof max === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"max\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/float/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create integer attribute\n *\n * Create an integer attribute. Optionally, minimum and maximum values can be provided.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {number} min\n * @param {number} max\n * @param {number} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createIntegerAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/integer'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update integer attribute\n *\n * Update an integer attribute. Changing the `default` value will not update already existing documents.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {number} min\n * @param {number} max\n * @param {number} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateIntegerAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min: number, max: number, xdefault?: number, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof min === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"min\"');\n }\n if (typeof max === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"max\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/integer/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create IP address attribute\n *\n * Create IP address attribute.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createIpAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/ip'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update IP address attribute\n *\n * Update an ip attribute. Changing the `default` value will not update already existing documents.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateIpAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/ip/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create relationship attribute\n *\n * Create relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes).\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} relatedCollectionId\n * @param {RelationshipType} type\n * @param {boolean} twoWay\n * @param {string} key\n * @param {string} twoWayKey\n * @param {RelationMutate} onDelete\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createRelationshipAttribute(databaseId: string, collectionId: string, relatedCollectionId: string, type: RelationshipType, twoWay?: boolean, key?: string, twoWayKey?: string, onDelete?: RelationMutate): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof relatedCollectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"relatedCollectionId\"');\n }\n if (typeof type === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"type\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/relationship'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof relatedCollectionId !== 'undefined') {\n payload['relatedCollectionId'] = relatedCollectionId;\n }\n if (typeof type !== 'undefined') {\n payload['type'] = type;\n }\n if (typeof twoWay !== 'undefined') {\n payload['twoWay'] = twoWay;\n }\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof twoWayKey !== 'undefined') {\n payload['twoWayKey'] = twoWayKey;\n }\n if (typeof onDelete !== 'undefined') {\n payload['onDelete'] = onDelete;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create string attribute\n *\n * Create a string attribute.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {number} size\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @param {boolean} encrypt\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createStringAttribute(databaseId: string, collectionId: string, key: string, size: number, required: boolean, xdefault?: string, array?: boolean, encrypt?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof size === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"size\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/string'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof size !== 'undefined') {\n payload['size'] = size;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n if (typeof encrypt !== 'undefined') {\n payload['encrypt'] = encrypt;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update string attribute\n *\n * Update a string attribute. Changing the `default` value will not update already existing documents.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {number} size\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateStringAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, size?: number, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/string/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof size !== 'undefined') {\n payload['size'] = size;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create URL attribute\n *\n * Create a URL attribute.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createUrlAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/url'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update URL attribute\n *\n * Update an url attribute. Changing the `default` value will not update already existing documents.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateUrlAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/url/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get attribute\n *\n * Get attribute by ID.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async getAttribute(databaseId: string, collectionId: string, key: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete attribute\n *\n * Deletes an attribute.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteAttribute(databaseId: string, collectionId: string, key: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update relationship attribute\n *\n * Update relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes).\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {RelationMutate} onDelete\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateRelationshipAttribute(databaseId: string, collectionId: string, key: string, onDelete?: RelationMutate, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/{key}/relationship'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof onDelete !== 'undefined') {\n payload['onDelete'] = onDelete;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List documents\n *\n * Get a list of all the user's documents in a given collection. You can use the query params to filter your results.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async listDocuments(databaseId: string, collectionId: string, queries?: string[]): Promise> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create document\n *\n * Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} documentId\n * @param {Omit} data\n * @param {string[]} permissions\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createDocument(databaseId: string, collectionId: string, documentId: string, data: Omit, permissions?: string[]): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n if (typeof data === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"data\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof documentId !== 'undefined') {\n payload['documentId'] = documentId;\n }\n if (typeof data !== 'undefined') {\n payload['data'] = data;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get document\n *\n * Get a document by its unique ID. This endpoint response returns a JSON object with the document data.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} documentId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getDocument(databaseId: string, collectionId: string, documentId: string, queries?: string[]): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update document\n *\n * Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} documentId\n * @param {Partial>} data\n * @param {string[]} permissions\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateDocument(databaseId: string, collectionId: string, documentId: string, data?: Partial>, permissions?: string[]): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId);\n const payload: Payload = {};\n if (typeof data !== 'undefined') {\n payload['data'] = data;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete document\n *\n * Delete a document by its unique ID.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} documentId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteDocument(databaseId: string, collectionId: string, documentId: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List indexes\n *\n * List indexes in the collection.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listIndexes(databaseId: string, collectionId: string, queries?: string[]): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/indexes'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create index\n *\n * Creates an index on the attributes listed. Your index should include all the attributes you will query in a single request.\nAttributes can be `key`, `fulltext`, and `unique`.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {IndexType} type\n * @param {string[]} attributes\n * @param {string[]} orders\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createIndex(databaseId: string, collectionId: string, key: string, type: IndexType, attributes: string[], orders?: string[]): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof type === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"type\"');\n }\n if (typeof attributes === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"attributes\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/indexes'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof type !== 'undefined') {\n payload['type'] = type;\n }\n if (typeof attributes !== 'undefined') {\n payload['attributes'] = attributes;\n }\n if (typeof orders !== 'undefined') {\n payload['orders'] = orders;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get index\n *\n * Get index by ID.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getIndex(databaseId: string, collectionId: string, key: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/indexes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete index\n *\n * Delete an index.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteIndex(databaseId: string, collectionId: string, key: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/indexes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/databases.mjs b/node_modules/node-appwrite/dist/services/databases.mjs new file mode 100644 index 0000000..d504b9e --- /dev/null +++ b/node_modules/node-appwrite/dist/services/databases.mjs @@ -0,0 +1,1951 @@ +import { AppwriteException } from '../client.mjs'; + +// src/services/databases.ts +var Databases = class { + constructor(client) { + this.client = client; + } + /** + * List databases + * + * Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async list(queries, search) { + const apiPath = "/databases"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create database + * + * Create a new Database. + + * + * @param {string} databaseId + * @param {string} name + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async create(databaseId, name, enabled) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/databases"; + const payload = {}; + if (typeof databaseId !== "undefined") { + payload["databaseId"] = databaseId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get database + * + * Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata. + * + * @param {string} databaseId + * @throws {AppwriteException} + * @returns {Promise} + */ + async get(databaseId) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + const apiPath = "/databases/{databaseId}".replace("{databaseId}", databaseId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update database + * + * Update a database by its unique ID. + * + * @param {string} databaseId + * @param {string} name + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async update(databaseId, name, enabled) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/databases/{databaseId}".replace("{databaseId}", databaseId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Delete database + * + * Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database. + * + * @param {string} databaseId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async delete(databaseId) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + const apiPath = "/databases/{databaseId}".replace("{databaseId}", databaseId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List collections + * + * Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results. + * + * @param {string} databaseId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listCollections(databaseId, queries, search) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + const apiPath = "/databases/{databaseId}/collections".replace("{databaseId}", databaseId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create collection + * + * Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} name + * @param {string[]} permissions + * @param {boolean} documentSecurity + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createCollection(databaseId, collectionId, name, permissions, documentSecurity, enabled) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/databases/{databaseId}/collections".replace("{databaseId}", databaseId); + const payload = {}; + if (typeof collectionId !== "undefined") { + payload["collectionId"] = collectionId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof permissions !== "undefined") { + payload["permissions"] = permissions; + } + if (typeof documentSecurity !== "undefined") { + payload["documentSecurity"] = documentSecurity; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get collection + * + * Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata. + * + * @param {string} databaseId + * @param {string} collectionId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getCollection(databaseId, collectionId) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update collection + * + * Update a collection by its unique ID. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} name + * @param {string[]} permissions + * @param {boolean} documentSecurity + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateCollection(databaseId, collectionId, name, permissions, documentSecurity, enabled) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof permissions !== "undefined") { + payload["permissions"] = permissions; + } + if (typeof documentSecurity !== "undefined") { + payload["documentSecurity"] = documentSecurity; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Delete collection + * + * Delete a collection by its unique ID. Only users with write permissions have access to delete this resource. + * + * @param {string} databaseId + * @param {string} collectionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteCollection(databaseId, collectionId) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List attributes + * + * List attributes in the collection. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listAttributes(databaseId, collectionId, queries) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create boolean attribute + * + * Create a boolean attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {boolean} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + async createBooleanAttribute(databaseId, collectionId, key, required, xdefault, array) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/boolean".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update boolean attribute + * + * Update a boolean attribute. Changing the `default` value will not update already existing documents. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {boolean} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateBooleanAttribute(databaseId, collectionId, key, required, xdefault, newKey) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + if (typeof xdefault === "undefined") { + throw new AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/boolean/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create datetime attribute + * + * Create a date time attribute according to the ISO 8601 standard. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + async createDatetimeAttribute(databaseId, collectionId, key, required, xdefault, array) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/datetime".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update dateTime attribute + * + * Update a date time attribute. Changing the `default` value will not update already existing documents. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateDatetimeAttribute(databaseId, collectionId, key, required, xdefault, newKey) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + if (typeof xdefault === "undefined") { + throw new AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/datetime/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create email attribute + * + * Create an email attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + async createEmailAttribute(databaseId, collectionId, key, required, xdefault, array) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/email".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update email attribute + * + * Update an email attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateEmailAttribute(databaseId, collectionId, key, required, xdefault, newKey) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + if (typeof xdefault === "undefined") { + throw new AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/email/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create enum attribute + * + * Create an enumeration attribute. The `elements` param acts as a white-list of accepted values for this attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {string[]} elements + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + async createEnumAttribute(databaseId, collectionId, key, elements, required, xdefault, array) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof elements === "undefined") { + throw new AppwriteException('Missing required parameter: "elements"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/enum".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof elements !== "undefined") { + payload["elements"] = elements; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update enum attribute + * + * Update an enum attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {string[]} elements + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateEnumAttribute(databaseId, collectionId, key, elements, required, xdefault, newKey) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof elements === "undefined") { + throw new AppwriteException('Missing required parameter: "elements"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + if (typeof xdefault === "undefined") { + throw new AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/enum/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof elements !== "undefined") { + payload["elements"] = elements; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create float attribute + * + * Create a float attribute. Optionally, minimum and maximum values can be provided. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {number} min + * @param {number} max + * @param {number} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + async createFloatAttribute(databaseId, collectionId, key, required, min, max, xdefault, array) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/float".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof min !== "undefined") { + payload["min"] = min; + } + if (typeof max !== "undefined") { + payload["max"] = max; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update float attribute + * + * Update a float attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {number} min + * @param {number} max + * @param {number} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateFloatAttribute(databaseId, collectionId, key, required, min, max, xdefault, newKey) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + if (typeof min === "undefined") { + throw new AppwriteException('Missing required parameter: "min"'); + } + if (typeof max === "undefined") { + throw new AppwriteException('Missing required parameter: "max"'); + } + if (typeof xdefault === "undefined") { + throw new AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/float/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof min !== "undefined") { + payload["min"] = min; + } + if (typeof max !== "undefined") { + payload["max"] = max; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create integer attribute + * + * Create an integer attribute. Optionally, minimum and maximum values can be provided. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {number} min + * @param {number} max + * @param {number} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + async createIntegerAttribute(databaseId, collectionId, key, required, min, max, xdefault, array) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/integer".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof min !== "undefined") { + payload["min"] = min; + } + if (typeof max !== "undefined") { + payload["max"] = max; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update integer attribute + * + * Update an integer attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {number} min + * @param {number} max + * @param {number} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateIntegerAttribute(databaseId, collectionId, key, required, min, max, xdefault, newKey) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + if (typeof min === "undefined") { + throw new AppwriteException('Missing required parameter: "min"'); + } + if (typeof max === "undefined") { + throw new AppwriteException('Missing required parameter: "max"'); + } + if (typeof xdefault === "undefined") { + throw new AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/integer/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof min !== "undefined") { + payload["min"] = min; + } + if (typeof max !== "undefined") { + payload["max"] = max; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create IP address attribute + * + * Create IP address attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + async createIpAttribute(databaseId, collectionId, key, required, xdefault, array) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/ip".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update IP address attribute + * + * Update an ip attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateIpAttribute(databaseId, collectionId, key, required, xdefault, newKey) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + if (typeof xdefault === "undefined") { + throw new AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/ip/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create relationship attribute + * + * Create relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes). + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} relatedCollectionId + * @param {RelationshipType} type + * @param {boolean} twoWay + * @param {string} key + * @param {string} twoWayKey + * @param {RelationMutate} onDelete + * @throws {AppwriteException} + * @returns {Promise} + */ + async createRelationshipAttribute(databaseId, collectionId, relatedCollectionId, type, twoWay, key, twoWayKey, onDelete) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof relatedCollectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "relatedCollectionId"'); + } + if (typeof type === "undefined") { + throw new AppwriteException('Missing required parameter: "type"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/relationship".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof relatedCollectionId !== "undefined") { + payload["relatedCollectionId"] = relatedCollectionId; + } + if (typeof type !== "undefined") { + payload["type"] = type; + } + if (typeof twoWay !== "undefined") { + payload["twoWay"] = twoWay; + } + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof twoWayKey !== "undefined") { + payload["twoWayKey"] = twoWayKey; + } + if (typeof onDelete !== "undefined") { + payload["onDelete"] = onDelete; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create string attribute + * + * Create a string attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {number} size + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @param {boolean} encrypt + * @throws {AppwriteException} + * @returns {Promise} + */ + async createStringAttribute(databaseId, collectionId, key, size, required, xdefault, array, encrypt) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof size === "undefined") { + throw new AppwriteException('Missing required parameter: "size"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/string".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof size !== "undefined") { + payload["size"] = size; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + if (typeof encrypt !== "undefined") { + payload["encrypt"] = encrypt; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update string attribute + * + * Update a string attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {number} size + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateStringAttribute(databaseId, collectionId, key, required, xdefault, size, newKey) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + if (typeof xdefault === "undefined") { + throw new AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/string/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof size !== "undefined") { + payload["size"] = size; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create URL attribute + * + * Create a URL attribute. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {boolean} array + * @throws {AppwriteException} + * @returns {Promise} + */ + async createUrlAttribute(databaseId, collectionId, key, required, xdefault, array) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/url".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof array !== "undefined") { + payload["array"] = array; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update URL attribute + * + * Update an url attribute. Changing the `default` value will not update already existing documents. + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {boolean} required + * @param {string} xdefault + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateUrlAttribute(databaseId, collectionId, key, required, xdefault, newKey) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof required === "undefined") { + throw new AppwriteException('Missing required parameter: "required"'); + } + if (typeof xdefault === "undefined") { + throw new AppwriteException('Missing required parameter: "xdefault"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/url/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof required !== "undefined") { + payload["required"] = required; + } + if (typeof xdefault !== "undefined") { + payload["default"] = xdefault; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Get attribute + * + * Get attribute by ID. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async getAttribute(databaseId, collectionId, key) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete attribute + * + * Deletes an attribute. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteAttribute(databaseId, collectionId, key) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Update relationship attribute + * + * Update relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes). + + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {RelationMutate} onDelete + * @param {string} newKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateRelationshipAttribute(databaseId, collectionId, key, onDelete, newKey) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/{key}/relationship".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + if (typeof onDelete !== "undefined") { + payload["onDelete"] = onDelete; + } + if (typeof newKey !== "undefined") { + payload["newKey"] = newKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * List documents + * + * Get a list of all the user's documents in a given collection. You can use the query params to filter your results. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise>} + */ + async listDocuments(databaseId, collectionId, queries) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/documents".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create document + * + * Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} documentId + * @param {Omit} data + * @param {string[]} permissions + * @throws {AppwriteException} + * @returns {Promise} + */ + async createDocument(databaseId, collectionId, documentId, data, permissions) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof documentId === "undefined") { + throw new AppwriteException('Missing required parameter: "documentId"'); + } + if (typeof data === "undefined") { + throw new AppwriteException('Missing required parameter: "data"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/documents".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof documentId !== "undefined") { + payload["documentId"] = documentId; + } + if (typeof data !== "undefined") { + payload["data"] = data; + } + if (typeof permissions !== "undefined") { + payload["permissions"] = permissions; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get document + * + * Get a document by its unique ID. This endpoint response returns a JSON object with the document data. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} documentId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async getDocument(databaseId, collectionId, documentId, queries) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof documentId === "undefined") { + throw new AppwriteException('Missing required parameter: "documentId"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/documents/{documentId}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{documentId}", documentId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update document + * + * Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} documentId + * @param {Partial>} data + * @param {string[]} permissions + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateDocument(databaseId, collectionId, documentId, data, permissions) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof documentId === "undefined") { + throw new AppwriteException('Missing required parameter: "documentId"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/documents/{documentId}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{documentId}", documentId); + const payload = {}; + if (typeof data !== "undefined") { + payload["data"] = data; + } + if (typeof permissions !== "undefined") { + payload["permissions"] = permissions; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Delete document + * + * Delete a document by its unique ID. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} documentId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteDocument(databaseId, collectionId, documentId) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof documentId === "undefined") { + throw new AppwriteException('Missing required parameter: "documentId"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/documents/{documentId}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{documentId}", documentId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List indexes + * + * List indexes in the collection. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listIndexes(databaseId, collectionId, queries) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/indexes".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create index + * + * Creates an index on the attributes listed. Your index should include all the attributes you will query in a single request. + Attributes can be `key`, `fulltext`, and `unique`. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @param {IndexType} type + * @param {string[]} attributes + * @param {string[]} orders + * @throws {AppwriteException} + * @returns {Promise} + */ + async createIndex(databaseId, collectionId, key, type, attributes, orders) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof type === "undefined") { + throw new AppwriteException('Missing required parameter: "type"'); + } + if (typeof attributes === "undefined") { + throw new AppwriteException('Missing required parameter: "attributes"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/indexes".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof type !== "undefined") { + payload["type"] = type; + } + if (typeof attributes !== "undefined") { + payload["attributes"] = attributes; + } + if (typeof orders !== "undefined") { + payload["orders"] = orders; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get index + * + * Get index by ID. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @throws {AppwriteException} + * @returns {Promise} + */ + async getIndex(databaseId, collectionId, key) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/indexes/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete index + * + * Delete an index. + * + * @param {string} databaseId + * @param {string} collectionId + * @param {string} key + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteIndex(databaseId, collectionId, key) { + if (typeof databaseId === "undefined") { + throw new AppwriteException('Missing required parameter: "databaseId"'); + } + if (typeof collectionId === "undefined") { + throw new AppwriteException('Missing required parameter: "collectionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + const apiPath = "/databases/{databaseId}/collections/{collectionId}/indexes/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } +}; + +export { Databases }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=databases.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/databases.mjs.map b/node_modules/node-appwrite/dist/services/databases.mjs.map new file mode 100644 index 0000000..73dcb2e --- /dev/null +++ b/node_modules/node-appwrite/dist/services/databases.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/databases.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { RelationshipType } from '../enums/relationship-type';\nimport { RelationMutate } from '../enums/relation-mutate';\nimport { IndexType } from '../enums/index-type';\n\nexport class Databases {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * List databases\n *\n * Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async list(queries?: string[], search?: string): Promise {\n const apiPath = '/databases';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create database\n *\n * Create a new Database.\n\n *\n * @param {string} databaseId\n * @param {string} name\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async create(databaseId: string, name: string, enabled?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/databases';\n const payload: Payload = {};\n if (typeof databaseId !== 'undefined') {\n payload['databaseId'] = databaseId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get database\n *\n * Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.\n *\n * @param {string} databaseId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async get(databaseId: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n const apiPath = '/databases/{databaseId}'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update database\n *\n * Update a database by its unique ID.\n *\n * @param {string} databaseId\n * @param {string} name\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async update(databaseId: string, name: string, enabled?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/databases/{databaseId}'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete database\n *\n * Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.\n *\n * @param {string} databaseId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async delete(databaseId: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n const apiPath = '/databases/{databaseId}'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List collections\n *\n * Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.\n *\n * @param {string} databaseId\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listCollections(databaseId: string, queries?: string[], search?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n const apiPath = '/databases/{databaseId}/collections'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create collection\n *\n * Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} name\n * @param {string[]} permissions\n * @param {boolean} documentSecurity\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createCollection(databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/databases/{databaseId}/collections'.replace('{databaseId}', databaseId);\n const payload: Payload = {};\n if (typeof collectionId !== 'undefined') {\n payload['collectionId'] = collectionId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n if (typeof documentSecurity !== 'undefined') {\n payload['documentSecurity'] = documentSecurity;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get collection\n *\n * Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getCollection(databaseId: string, collectionId: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update collection\n *\n * Update a collection by its unique ID.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} name\n * @param {string[]} permissions\n * @param {boolean} documentSecurity\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateCollection(databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n if (typeof documentSecurity !== 'undefined') {\n payload['documentSecurity'] = documentSecurity;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete collection\n *\n * Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteCollection(databaseId: string, collectionId: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List attributes\n *\n * List attributes in the collection.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listAttributes(databaseId: string, collectionId: string, queries?: string[]): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create boolean attribute\n *\n * Create a boolean attribute.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {boolean} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createBooleanAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, array?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/boolean'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update boolean attribute\n *\n * Update a boolean attribute. Changing the `default` value will not update already existing documents.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {boolean} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateBooleanAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/boolean/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create datetime attribute\n *\n * Create a date time attribute according to the ISO 8601 standard.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createDatetimeAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/datetime'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update dateTime attribute\n *\n * Update a date time attribute. Changing the `default` value will not update already existing documents.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateDatetimeAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/datetime/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create email attribute\n *\n * Create an email attribute.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createEmailAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/email'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update email attribute\n *\n * Update an email attribute. Changing the `default` value will not update already existing documents.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateEmailAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/email/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create enum attribute\n *\n * Create an enumeration attribute. The `elements` param acts as a white-list of accepted values for this attribute. \n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {string[]} elements\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createEnumAttribute(databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, array?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof elements === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"elements\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/enum'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof elements !== 'undefined') {\n payload['elements'] = elements;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update enum attribute\n *\n * Update an enum attribute. Changing the `default` value will not update already existing documents.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {string[]} elements\n * @param {boolean} required\n * @param {string} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateEnumAttribute(databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof elements === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"elements\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/enum/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof elements !== 'undefined') {\n payload['elements'] = elements;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create float attribute\n *\n * Create a float attribute. Optionally, minimum and maximum values can be provided.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {number} min\n * @param {number} max\n * @param {number} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createFloatAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/float'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update float attribute\n *\n * Update a float attribute. Changing the `default` value will not update already existing documents.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {number} min\n * @param {number} max\n * @param {number} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateFloatAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min: number, max: number, xdefault?: number, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof min === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"min\"');\n }\n if (typeof max === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"max\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/float/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create integer attribute\n *\n * Create an integer attribute. Optionally, minimum and maximum values can be provided.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {number} min\n * @param {number} max\n * @param {number} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createIntegerAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/integer'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update integer attribute\n *\n * Update an integer attribute. Changing the `default` value will not update already existing documents.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {number} min\n * @param {number} max\n * @param {number} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateIntegerAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min: number, max: number, xdefault?: number, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof min === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"min\"');\n }\n if (typeof max === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"max\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/integer/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof min !== 'undefined') {\n payload['min'] = min;\n }\n if (typeof max !== 'undefined') {\n payload['max'] = max;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create IP address attribute\n *\n * Create IP address attribute.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createIpAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/ip'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update IP address attribute\n *\n * Update an ip attribute. Changing the `default` value will not update already existing documents.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateIpAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/ip/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create relationship attribute\n *\n * Create relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes).\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} relatedCollectionId\n * @param {RelationshipType} type\n * @param {boolean} twoWay\n * @param {string} key\n * @param {string} twoWayKey\n * @param {RelationMutate} onDelete\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createRelationshipAttribute(databaseId: string, collectionId: string, relatedCollectionId: string, type: RelationshipType, twoWay?: boolean, key?: string, twoWayKey?: string, onDelete?: RelationMutate): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof relatedCollectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"relatedCollectionId\"');\n }\n if (typeof type === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"type\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/relationship'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof relatedCollectionId !== 'undefined') {\n payload['relatedCollectionId'] = relatedCollectionId;\n }\n if (typeof type !== 'undefined') {\n payload['type'] = type;\n }\n if (typeof twoWay !== 'undefined') {\n payload['twoWay'] = twoWay;\n }\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof twoWayKey !== 'undefined') {\n payload['twoWayKey'] = twoWayKey;\n }\n if (typeof onDelete !== 'undefined') {\n payload['onDelete'] = onDelete;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create string attribute\n *\n * Create a string attribute.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {number} size\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @param {boolean} encrypt\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createStringAttribute(databaseId: string, collectionId: string, key: string, size: number, required: boolean, xdefault?: string, array?: boolean, encrypt?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof size === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"size\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/string'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof size !== 'undefined') {\n payload['size'] = size;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n if (typeof encrypt !== 'undefined') {\n payload['encrypt'] = encrypt;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update string attribute\n *\n * Update a string attribute. Changing the `default` value will not update already existing documents.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {number} size\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateStringAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, size?: number, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/string/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof size !== 'undefined') {\n payload['size'] = size;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create URL attribute\n *\n * Create a URL attribute.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {boolean} array\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createUrlAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/url'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof array !== 'undefined') {\n payload['array'] = array;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update URL attribute\n *\n * Update an url attribute. Changing the `default` value will not update already existing documents.\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {boolean} required\n * @param {string} xdefault\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateUrlAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof required === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"required\"');\n }\n if (typeof xdefault === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"xdefault\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/url/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof required !== 'undefined') {\n payload['required'] = required;\n }\n if (typeof xdefault !== 'undefined') {\n payload['default'] = xdefault;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get attribute\n *\n * Get attribute by ID.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async getAttribute(databaseId: string, collectionId: string, key: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete attribute\n *\n * Deletes an attribute.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteAttribute(databaseId: string, collectionId: string, key: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update relationship attribute\n *\n * Update relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes).\n\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {RelationMutate} onDelete\n * @param {string} newKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateRelationshipAttribute(databaseId: string, collectionId: string, key: string, onDelete?: RelationMutate, newKey?: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/{key}/relationship'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n if (typeof onDelete !== 'undefined') {\n payload['onDelete'] = onDelete;\n }\n if (typeof newKey !== 'undefined') {\n payload['newKey'] = newKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List documents\n *\n * Get a list of all the user's documents in a given collection. You can use the query params to filter your results.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async listDocuments(databaseId: string, collectionId: string, queries?: string[]): Promise> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create document\n *\n * Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} documentId\n * @param {Omit} data\n * @param {string[]} permissions\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createDocument(databaseId: string, collectionId: string, documentId: string, data: Omit, permissions?: string[]): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n if (typeof data === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"data\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof documentId !== 'undefined') {\n payload['documentId'] = documentId;\n }\n if (typeof data !== 'undefined') {\n payload['data'] = data;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get document\n *\n * Get a document by its unique ID. This endpoint response returns a JSON object with the document data.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} documentId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getDocument(databaseId: string, collectionId: string, documentId: string, queries?: string[]): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update document\n *\n * Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} documentId\n * @param {Partial>} data\n * @param {string[]} permissions\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateDocument(databaseId: string, collectionId: string, documentId: string, data?: Partial>, permissions?: string[]): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId);\n const payload: Payload = {};\n if (typeof data !== 'undefined') {\n payload['data'] = data;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete document\n *\n * Delete a document by its unique ID.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} documentId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteDocument(databaseId: string, collectionId: string, documentId: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof documentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"documentId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List indexes\n *\n * List indexes in the collection.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listIndexes(databaseId: string, collectionId: string, queries?: string[]): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/indexes'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create index\n *\n * Creates an index on the attributes listed. Your index should include all the attributes you will query in a single request.\nAttributes can be `key`, `fulltext`, and `unique`.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @param {IndexType} type\n * @param {string[]} attributes\n * @param {string[]} orders\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createIndex(databaseId: string, collectionId: string, key: string, type: IndexType, attributes: string[], orders?: string[]): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof type === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"type\"');\n }\n if (typeof attributes === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"attributes\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/indexes'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof type !== 'undefined') {\n payload['type'] = type;\n }\n if (typeof attributes !== 'undefined') {\n payload['attributes'] = attributes;\n }\n if (typeof orders !== 'undefined') {\n payload['orders'] = orders;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get index\n *\n * Get index by ID.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getIndex(databaseId: string, collectionId: string, key: string): Promise {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/indexes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete index\n *\n * Delete an index.\n *\n * @param {string} databaseId\n * @param {string} collectionId\n * @param {string} key\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteIndex(databaseId: string, collectionId: string, key: string): Promise<{}> {\n if (typeof databaseId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"databaseId\"');\n }\n if (typeof collectionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"collectionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/databases/{databaseId}/collections/{collectionId}/indexes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/functions.d.mts b/node_modules/node-appwrite/dist/services/functions.d.mts new file mode 100644 index 0000000..250ec9c --- /dev/null +++ b/node_modules/node-appwrite/dist/services/functions.d.mts @@ -0,0 +1,323 @@ +import { Client, UploadProgress } from '../client.mjs'; +import { Models } from '../models.mjs'; +import { Runtime } from '../enums/runtime.mjs'; +import { ExecutionMethod } from '../enums/execution-method.mjs'; +import '../query.mjs'; + +declare class Functions { + client: Client; + constructor(client: Client); + /** + * List functions + * + * Get a list of all the project's functions. You can use the query params to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + list(queries?: string[], search?: string): Promise; + /** + * Create function + * + * Create a new function. You can pass a list of [permissions](https://appwrite.io/docs/permissions) to allow different project users or team with access to execute the function using the client API. + * + * @param {string} functionId + * @param {string} name + * @param {Runtime} runtime + * @param {string[]} execute + * @param {string[]} events + * @param {string} schedule + * @param {number} timeout + * @param {boolean} enabled + * @param {boolean} logging + * @param {string} entrypoint + * @param {string} commands + * @param {string[]} scopes + * @param {string} installationId + * @param {string} providerRepositoryId + * @param {string} providerBranch + * @param {boolean} providerSilentMode + * @param {string} providerRootDirectory + * @param {string} templateRepository + * @param {string} templateOwner + * @param {string} templateRootDirectory + * @param {string} templateVersion + * @param {string} specification + * @throws {AppwriteException} + * @returns {Promise} + */ + create(functionId: string, name: string, runtime: Runtime, execute?: string[], events?: string[], schedule?: string, timeout?: number, enabled?: boolean, logging?: boolean, entrypoint?: string, commands?: string, scopes?: string[], installationId?: string, providerRepositoryId?: string, providerBranch?: string, providerSilentMode?: boolean, providerRootDirectory?: string, templateRepository?: string, templateOwner?: string, templateRootDirectory?: string, templateVersion?: string, specification?: string): Promise; + /** + * List runtimes + * + * Get a list of all runtimes that are currently active on your instance. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listRuntimes(): Promise; + /** + * List available function runtime specifications + * + * List allowed function specifications for this instance. + + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listSpecifications(): Promise; + /** + * Get function + * + * Get a function by its unique ID. + * + * @param {string} functionId + * @throws {AppwriteException} + * @returns {Promise} + */ + get(functionId: string): Promise; + /** + * Update function + * + * Update function by its unique ID. + * + * @param {string} functionId + * @param {string} name + * @param {Runtime} runtime + * @param {string[]} execute + * @param {string[]} events + * @param {string} schedule + * @param {number} timeout + * @param {boolean} enabled + * @param {boolean} logging + * @param {string} entrypoint + * @param {string} commands + * @param {string[]} scopes + * @param {string} installationId + * @param {string} providerRepositoryId + * @param {string} providerBranch + * @param {boolean} providerSilentMode + * @param {string} providerRootDirectory + * @param {string} specification + * @throws {AppwriteException} + * @returns {Promise} + */ + update(functionId: string, name: string, runtime?: Runtime, execute?: string[], events?: string[], schedule?: string, timeout?: number, enabled?: boolean, logging?: boolean, entrypoint?: string, commands?: string, scopes?: string[], installationId?: string, providerRepositoryId?: string, providerBranch?: string, providerSilentMode?: boolean, providerRootDirectory?: string, specification?: string): Promise; + /** + * Delete function + * + * Delete a function by its unique ID. + * + * @param {string} functionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + delete(functionId: string): Promise<{}>; + /** + * List deployments + * + * Get a list of all the project's code deployments. You can use the query params to filter your results. + * + * @param {string} functionId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listDeployments(functionId: string, queries?: string[], search?: string): Promise; + /** + * Create deployment + * + * Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID. + +This endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https://appwrite.io/docs/functions). + +Use the "command" param to set the entrypoint used to execute your code. + * + * @param {string} functionId + * @param {File} code + * @param {boolean} activate + * @param {string} entrypoint + * @param {string} commands + * @throws {AppwriteException} + * @returns {Promise} + */ + createDeployment(functionId: string, code: File, activate: boolean, entrypoint?: string, commands?: string, onProgress?: (progress: UploadProgress) => void): Promise; + /** + * Get deployment + * + * Get a code deployment by its unique ID. + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise} + */ + getDeployment(functionId: string, deploymentId: string): Promise; + /** + * Update deployment + * + * Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint. + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise} + */ + updateDeployment(functionId: string, deploymentId: string): Promise; + /** + * Delete deployment + * + * Delete a code deployment by its unique ID. + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteDeployment(functionId: string, deploymentId: string): Promise<{}>; + /** + * Rebuild deployment + * + * + * @param {string} functionId + * @param {string} deploymentId + * @param {string} buildId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + createBuild(functionId: string, deploymentId: string, buildId?: string): Promise<{}>; + /** + * Cancel deployment + * + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise} + */ + updateDeploymentBuild(functionId: string, deploymentId: string): Promise; + /** + * Download deployment + * + * Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download. + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise} + */ + getDeploymentDownload(functionId: string, deploymentId: string): Promise; + /** + * List executions + * + * Get a list of all the current user function execution logs. You can use the query params to filter your results. + * + * @param {string} functionId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listExecutions(functionId: string, queries?: string[], search?: string): Promise; + /** + * Create execution + * + * Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously. + * + * @param {string} functionId + * @param {string} body + * @param {boolean} async + * @param {string} xpath + * @param {ExecutionMethod} method + * @param {object} headers + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + createExecution(functionId: string, body?: string, async?: boolean, xpath?: string, method?: ExecutionMethod, headers?: object, scheduledAt?: string): Promise; + /** + * Get execution + * + * Get a function execution log by its unique ID. + * + * @param {string} functionId + * @param {string} executionId + * @throws {AppwriteException} + * @returns {Promise} + */ + getExecution(functionId: string, executionId: string): Promise; + /** + * Delete execution + * + * Delete a function execution by its unique ID. + + * + * @param {string} functionId + * @param {string} executionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteExecution(functionId: string, executionId: string): Promise<{}>; + /** + * List variables + * + * Get a list of all variables of a specific function. + * + * @param {string} functionId + * @throws {AppwriteException} + * @returns {Promise} + */ + listVariables(functionId: string): Promise; + /** + * Create variable + * + * Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables. + * + * @param {string} functionId + * @param {string} key + * @param {string} value + * @throws {AppwriteException} + * @returns {Promise} + */ + createVariable(functionId: string, key: string, value: string): Promise; + /** + * Get variable + * + * Get a variable by its unique ID. + * + * @param {string} functionId + * @param {string} variableId + * @throws {AppwriteException} + * @returns {Promise} + */ + getVariable(functionId: string, variableId: string): Promise; + /** + * Update variable + * + * Update variable by its unique ID. + * + * @param {string} functionId + * @param {string} variableId + * @param {string} key + * @param {string} value + * @throws {AppwriteException} + * @returns {Promise} + */ + updateVariable(functionId: string, variableId: string, key: string, value?: string): Promise; + /** + * Delete variable + * + * Delete a variable by its unique ID. + * + * @param {string} functionId + * @param {string} variableId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteVariable(functionId: string, variableId: string): Promise<{}>; +} + +export { Functions }; diff --git a/node_modules/node-appwrite/dist/services/functions.d.ts b/node_modules/node-appwrite/dist/services/functions.d.ts new file mode 100644 index 0000000..473adcc --- /dev/null +++ b/node_modules/node-appwrite/dist/services/functions.d.ts @@ -0,0 +1,323 @@ +import { Client, UploadProgress } from '../client.js'; +import { Models } from '../models.js'; +import { Runtime } from '../enums/runtime.js'; +import { ExecutionMethod } from '../enums/execution-method.js'; +import '../query.js'; + +declare class Functions { + client: Client; + constructor(client: Client); + /** + * List functions + * + * Get a list of all the project's functions. You can use the query params to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + list(queries?: string[], search?: string): Promise; + /** + * Create function + * + * Create a new function. You can pass a list of [permissions](https://appwrite.io/docs/permissions) to allow different project users or team with access to execute the function using the client API. + * + * @param {string} functionId + * @param {string} name + * @param {Runtime} runtime + * @param {string[]} execute + * @param {string[]} events + * @param {string} schedule + * @param {number} timeout + * @param {boolean} enabled + * @param {boolean} logging + * @param {string} entrypoint + * @param {string} commands + * @param {string[]} scopes + * @param {string} installationId + * @param {string} providerRepositoryId + * @param {string} providerBranch + * @param {boolean} providerSilentMode + * @param {string} providerRootDirectory + * @param {string} templateRepository + * @param {string} templateOwner + * @param {string} templateRootDirectory + * @param {string} templateVersion + * @param {string} specification + * @throws {AppwriteException} + * @returns {Promise} + */ + create(functionId: string, name: string, runtime: Runtime, execute?: string[], events?: string[], schedule?: string, timeout?: number, enabled?: boolean, logging?: boolean, entrypoint?: string, commands?: string, scopes?: string[], installationId?: string, providerRepositoryId?: string, providerBranch?: string, providerSilentMode?: boolean, providerRootDirectory?: string, templateRepository?: string, templateOwner?: string, templateRootDirectory?: string, templateVersion?: string, specification?: string): Promise; + /** + * List runtimes + * + * Get a list of all runtimes that are currently active on your instance. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listRuntimes(): Promise; + /** + * List available function runtime specifications + * + * List allowed function specifications for this instance. + + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listSpecifications(): Promise; + /** + * Get function + * + * Get a function by its unique ID. + * + * @param {string} functionId + * @throws {AppwriteException} + * @returns {Promise} + */ + get(functionId: string): Promise; + /** + * Update function + * + * Update function by its unique ID. + * + * @param {string} functionId + * @param {string} name + * @param {Runtime} runtime + * @param {string[]} execute + * @param {string[]} events + * @param {string} schedule + * @param {number} timeout + * @param {boolean} enabled + * @param {boolean} logging + * @param {string} entrypoint + * @param {string} commands + * @param {string[]} scopes + * @param {string} installationId + * @param {string} providerRepositoryId + * @param {string} providerBranch + * @param {boolean} providerSilentMode + * @param {string} providerRootDirectory + * @param {string} specification + * @throws {AppwriteException} + * @returns {Promise} + */ + update(functionId: string, name: string, runtime?: Runtime, execute?: string[], events?: string[], schedule?: string, timeout?: number, enabled?: boolean, logging?: boolean, entrypoint?: string, commands?: string, scopes?: string[], installationId?: string, providerRepositoryId?: string, providerBranch?: string, providerSilentMode?: boolean, providerRootDirectory?: string, specification?: string): Promise; + /** + * Delete function + * + * Delete a function by its unique ID. + * + * @param {string} functionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + delete(functionId: string): Promise<{}>; + /** + * List deployments + * + * Get a list of all the project's code deployments. You can use the query params to filter your results. + * + * @param {string} functionId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listDeployments(functionId: string, queries?: string[], search?: string): Promise; + /** + * Create deployment + * + * Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID. + +This endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https://appwrite.io/docs/functions). + +Use the "command" param to set the entrypoint used to execute your code. + * + * @param {string} functionId + * @param {File} code + * @param {boolean} activate + * @param {string} entrypoint + * @param {string} commands + * @throws {AppwriteException} + * @returns {Promise} + */ + createDeployment(functionId: string, code: File, activate: boolean, entrypoint?: string, commands?: string, onProgress?: (progress: UploadProgress) => void): Promise; + /** + * Get deployment + * + * Get a code deployment by its unique ID. + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise} + */ + getDeployment(functionId: string, deploymentId: string): Promise; + /** + * Update deployment + * + * Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint. + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise} + */ + updateDeployment(functionId: string, deploymentId: string): Promise; + /** + * Delete deployment + * + * Delete a code deployment by its unique ID. + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteDeployment(functionId: string, deploymentId: string): Promise<{}>; + /** + * Rebuild deployment + * + * + * @param {string} functionId + * @param {string} deploymentId + * @param {string} buildId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + createBuild(functionId: string, deploymentId: string, buildId?: string): Promise<{}>; + /** + * Cancel deployment + * + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise} + */ + updateDeploymentBuild(functionId: string, deploymentId: string): Promise; + /** + * Download deployment + * + * Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download. + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise} + */ + getDeploymentDownload(functionId: string, deploymentId: string): Promise; + /** + * List executions + * + * Get a list of all the current user function execution logs. You can use the query params to filter your results. + * + * @param {string} functionId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listExecutions(functionId: string, queries?: string[], search?: string): Promise; + /** + * Create execution + * + * Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously. + * + * @param {string} functionId + * @param {string} body + * @param {boolean} async + * @param {string} xpath + * @param {ExecutionMethod} method + * @param {object} headers + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + createExecution(functionId: string, body?: string, async?: boolean, xpath?: string, method?: ExecutionMethod, headers?: object, scheduledAt?: string): Promise; + /** + * Get execution + * + * Get a function execution log by its unique ID. + * + * @param {string} functionId + * @param {string} executionId + * @throws {AppwriteException} + * @returns {Promise} + */ + getExecution(functionId: string, executionId: string): Promise; + /** + * Delete execution + * + * Delete a function execution by its unique ID. + + * + * @param {string} functionId + * @param {string} executionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteExecution(functionId: string, executionId: string): Promise<{}>; + /** + * List variables + * + * Get a list of all variables of a specific function. + * + * @param {string} functionId + * @throws {AppwriteException} + * @returns {Promise} + */ + listVariables(functionId: string): Promise; + /** + * Create variable + * + * Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables. + * + * @param {string} functionId + * @param {string} key + * @param {string} value + * @throws {AppwriteException} + * @returns {Promise} + */ + createVariable(functionId: string, key: string, value: string): Promise; + /** + * Get variable + * + * Get a variable by its unique ID. + * + * @param {string} functionId + * @param {string} variableId + * @throws {AppwriteException} + * @returns {Promise} + */ + getVariable(functionId: string, variableId: string): Promise; + /** + * Update variable + * + * Update variable by its unique ID. + * + * @param {string} functionId + * @param {string} variableId + * @param {string} key + * @param {string} value + * @throws {AppwriteException} + * @returns {Promise} + */ + updateVariable(functionId: string, variableId: string, key: string, value?: string): Promise; + /** + * Delete variable + * + * Delete a variable by its unique ID. + * + * @param {string} functionId + * @param {string} variableId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteVariable(functionId: string, variableId: string): Promise<{}>; +} + +export { Functions }; diff --git a/node_modules/node-appwrite/dist/services/functions.js b/node_modules/node-appwrite/dist/services/functions.js new file mode 100644 index 0000000..eb8d872 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/functions.js @@ -0,0 +1,939 @@ +'use strict'; + +var client = require('../client'); + +class Functions { + constructor(client) { + this.client = client; + } + /** + * List functions + * + * Get a list of all the project's functions. You can use the query params to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async list(queries, search) { + const apiPath = "/functions"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create function + * + * Create a new function. You can pass a list of [permissions](https://appwrite.io/docs/permissions) to allow different project users or team with access to execute the function using the client API. + * + * @param {string} functionId + * @param {string} name + * @param {Runtime} runtime + * @param {string[]} execute + * @param {string[]} events + * @param {string} schedule + * @param {number} timeout + * @param {boolean} enabled + * @param {boolean} logging + * @param {string} entrypoint + * @param {string} commands + * @param {string[]} scopes + * @param {string} installationId + * @param {string} providerRepositoryId + * @param {string} providerBranch + * @param {boolean} providerSilentMode + * @param {string} providerRootDirectory + * @param {string} templateRepository + * @param {string} templateOwner + * @param {string} templateRootDirectory + * @param {string} templateVersion + * @param {string} specification + * @throws {AppwriteException} + * @returns {Promise} + */ + async create(functionId, name, runtime, execute, events, schedule, timeout, enabled, logging, entrypoint, commands, scopes, installationId, providerRepositoryId, providerBranch, providerSilentMode, providerRootDirectory, templateRepository, templateOwner, templateRootDirectory, templateVersion, specification) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + if (typeof runtime === "undefined") { + throw new client.AppwriteException('Missing required parameter: "runtime"'); + } + const apiPath = "/functions"; + const payload = {}; + if (typeof functionId !== "undefined") { + payload["functionId"] = functionId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof runtime !== "undefined") { + payload["runtime"] = runtime; + } + if (typeof execute !== "undefined") { + payload["execute"] = execute; + } + if (typeof events !== "undefined") { + payload["events"] = events; + } + if (typeof schedule !== "undefined") { + payload["schedule"] = schedule; + } + if (typeof timeout !== "undefined") { + payload["timeout"] = timeout; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof logging !== "undefined") { + payload["logging"] = logging; + } + if (typeof entrypoint !== "undefined") { + payload["entrypoint"] = entrypoint; + } + if (typeof commands !== "undefined") { + payload["commands"] = commands; + } + if (typeof scopes !== "undefined") { + payload["scopes"] = scopes; + } + if (typeof installationId !== "undefined") { + payload["installationId"] = installationId; + } + if (typeof providerRepositoryId !== "undefined") { + payload["providerRepositoryId"] = providerRepositoryId; + } + if (typeof providerBranch !== "undefined") { + payload["providerBranch"] = providerBranch; + } + if (typeof providerSilentMode !== "undefined") { + payload["providerSilentMode"] = providerSilentMode; + } + if (typeof providerRootDirectory !== "undefined") { + payload["providerRootDirectory"] = providerRootDirectory; + } + if (typeof templateRepository !== "undefined") { + payload["templateRepository"] = templateRepository; + } + if (typeof templateOwner !== "undefined") { + payload["templateOwner"] = templateOwner; + } + if (typeof templateRootDirectory !== "undefined") { + payload["templateRootDirectory"] = templateRootDirectory; + } + if (typeof templateVersion !== "undefined") { + payload["templateVersion"] = templateVersion; + } + if (typeof specification !== "undefined") { + payload["specification"] = specification; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * List runtimes + * + * Get a list of all runtimes that are currently active on your instance. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listRuntimes() { + const apiPath = "/functions/runtimes"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List available function runtime specifications + * + * List allowed function specifications for this instance. + + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listSpecifications() { + const apiPath = "/functions/specifications"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get function + * + * Get a function by its unique ID. + * + * @param {string} functionId + * @throws {AppwriteException} + * @returns {Promise} + */ + async get(functionId) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + const apiPath = "/functions/{functionId}".replace("{functionId}", functionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update function + * + * Update function by its unique ID. + * + * @param {string} functionId + * @param {string} name + * @param {Runtime} runtime + * @param {string[]} execute + * @param {string[]} events + * @param {string} schedule + * @param {number} timeout + * @param {boolean} enabled + * @param {boolean} logging + * @param {string} entrypoint + * @param {string} commands + * @param {string[]} scopes + * @param {string} installationId + * @param {string} providerRepositoryId + * @param {string} providerBranch + * @param {boolean} providerSilentMode + * @param {string} providerRootDirectory + * @param {string} specification + * @throws {AppwriteException} + * @returns {Promise} + */ + async update(functionId, name, runtime, execute, events, schedule, timeout, enabled, logging, entrypoint, commands, scopes, installationId, providerRepositoryId, providerBranch, providerSilentMode, providerRootDirectory, specification) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/functions/{functionId}".replace("{functionId}", functionId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof runtime !== "undefined") { + payload["runtime"] = runtime; + } + if (typeof execute !== "undefined") { + payload["execute"] = execute; + } + if (typeof events !== "undefined") { + payload["events"] = events; + } + if (typeof schedule !== "undefined") { + payload["schedule"] = schedule; + } + if (typeof timeout !== "undefined") { + payload["timeout"] = timeout; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof logging !== "undefined") { + payload["logging"] = logging; + } + if (typeof entrypoint !== "undefined") { + payload["entrypoint"] = entrypoint; + } + if (typeof commands !== "undefined") { + payload["commands"] = commands; + } + if (typeof scopes !== "undefined") { + payload["scopes"] = scopes; + } + if (typeof installationId !== "undefined") { + payload["installationId"] = installationId; + } + if (typeof providerRepositoryId !== "undefined") { + payload["providerRepositoryId"] = providerRepositoryId; + } + if (typeof providerBranch !== "undefined") { + payload["providerBranch"] = providerBranch; + } + if (typeof providerSilentMode !== "undefined") { + payload["providerSilentMode"] = providerSilentMode; + } + if (typeof providerRootDirectory !== "undefined") { + payload["providerRootDirectory"] = providerRootDirectory; + } + if (typeof specification !== "undefined") { + payload["specification"] = specification; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Delete function + * + * Delete a function by its unique ID. + * + * @param {string} functionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async delete(functionId) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + const apiPath = "/functions/{functionId}".replace("{functionId}", functionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List deployments + * + * Get a list of all the project's code deployments. You can use the query params to filter your results. + * + * @param {string} functionId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listDeployments(functionId, queries, search) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + const apiPath = "/functions/{functionId}/deployments".replace("{functionId}", functionId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create deployment + * + * Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID. + + This endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https://appwrite.io/docs/functions). + + Use the "command" param to set the entrypoint used to execute your code. + * + * @param {string} functionId + * @param {File} code + * @param {boolean} activate + * @param {string} entrypoint + * @param {string} commands + * @throws {AppwriteException} + * @returns {Promise} + */ + async createDeployment(functionId, code, activate, entrypoint, commands, onProgress = (progress) => { + }) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof code === "undefined") { + throw new client.AppwriteException('Missing required parameter: "code"'); + } + if (typeof activate === "undefined") { + throw new client.AppwriteException('Missing required parameter: "activate"'); + } + const apiPath = "/functions/{functionId}/deployments".replace("{functionId}", functionId); + const payload = {}; + if (typeof entrypoint !== "undefined") { + payload["entrypoint"] = entrypoint; + } + if (typeof commands !== "undefined") { + payload["commands"] = commands; + } + if (typeof code !== "undefined") { + payload["code"] = code; + } + if (typeof activate !== "undefined") { + payload["activate"] = activate; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "multipart/form-data" + }; + return await this.client.chunkedUpload( + "post", + uri, + apiHeaders, + payload, + onProgress + ); + } + /** + * Get deployment + * + * Get a code deployment by its unique ID. + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getDeployment(functionId, deploymentId) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof deploymentId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "deploymentId"'); + } + const apiPath = "/functions/{functionId}/deployments/{deploymentId}".replace("{functionId}", functionId).replace("{deploymentId}", deploymentId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update deployment + * + * Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint. + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateDeployment(functionId, deploymentId) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof deploymentId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "deploymentId"'); + } + const apiPath = "/functions/{functionId}/deployments/{deploymentId}".replace("{functionId}", functionId).replace("{deploymentId}", deploymentId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Delete deployment + * + * Delete a code deployment by its unique ID. + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteDeployment(functionId, deploymentId) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof deploymentId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "deploymentId"'); + } + const apiPath = "/functions/{functionId}/deployments/{deploymentId}".replace("{functionId}", functionId).replace("{deploymentId}", deploymentId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Rebuild deployment + * + * + * @param {string} functionId + * @param {string} deploymentId + * @param {string} buildId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async createBuild(functionId, deploymentId, buildId) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof deploymentId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "deploymentId"'); + } + const apiPath = "/functions/{functionId}/deployments/{deploymentId}/build".replace("{functionId}", functionId).replace("{deploymentId}", deploymentId); + const payload = {}; + if (typeof buildId !== "undefined") { + payload["buildId"] = buildId; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Cancel deployment + * + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateDeploymentBuild(functionId, deploymentId) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof deploymentId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "deploymentId"'); + } + const apiPath = "/functions/{functionId}/deployments/{deploymentId}/build".replace("{functionId}", functionId).replace("{deploymentId}", deploymentId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Download deployment + * + * Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download. + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getDeploymentDownload(functionId, deploymentId) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof deploymentId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "deploymentId"'); + } + const apiPath = "/functions/{functionId}/deployments/{deploymentId}/download".replace("{functionId}", functionId).replace("{deploymentId}", deploymentId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * List executions + * + * Get a list of all the current user function execution logs. You can use the query params to filter your results. + * + * @param {string} functionId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listExecutions(functionId, queries, search) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + const apiPath = "/functions/{functionId}/executions".replace("{functionId}", functionId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create execution + * + * Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously. + * + * @param {string} functionId + * @param {string} body + * @param {boolean} async + * @param {string} xpath + * @param {ExecutionMethod} method + * @param {object} headers + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + async createExecution(functionId, body, async, xpath, method, headers, scheduledAt) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + const apiPath = "/functions/{functionId}/executions".replace("{functionId}", functionId); + const payload = {}; + if (typeof body !== "undefined") { + payload["body"] = body; + } + if (typeof async !== "undefined") { + payload["async"] = async; + } + if (typeof xpath !== "undefined") { + payload["path"] = xpath; + } + if (typeof method !== "undefined") { + payload["method"] = method; + } + if (typeof headers !== "undefined") { + payload["headers"] = headers; + } + if (typeof scheduledAt !== "undefined") { + payload["scheduledAt"] = scheduledAt; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get execution + * + * Get a function execution log by its unique ID. + * + * @param {string} functionId + * @param {string} executionId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getExecution(functionId, executionId) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof executionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "executionId"'); + } + const apiPath = "/functions/{functionId}/executions/{executionId}".replace("{functionId}", functionId).replace("{executionId}", executionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete execution + * + * Delete a function execution by its unique ID. + + * + * @param {string} functionId + * @param {string} executionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteExecution(functionId, executionId) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof executionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "executionId"'); + } + const apiPath = "/functions/{functionId}/executions/{executionId}".replace("{functionId}", functionId).replace("{executionId}", executionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List variables + * + * Get a list of all variables of a specific function. + * + * @param {string} functionId + * @throws {AppwriteException} + * @returns {Promise} + */ + async listVariables(functionId) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + const apiPath = "/functions/{functionId}/variables".replace("{functionId}", functionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create variable + * + * Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables. + * + * @param {string} functionId + * @param {string} key + * @param {string} value + * @throws {AppwriteException} + * @returns {Promise} + */ + async createVariable(functionId, key, value) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + if (typeof value === "undefined") { + throw new client.AppwriteException('Missing required parameter: "value"'); + } + const apiPath = "/functions/{functionId}/variables".replace("{functionId}", functionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof value !== "undefined") { + payload["value"] = value; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get variable + * + * Get a variable by its unique ID. + * + * @param {string} functionId + * @param {string} variableId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getVariable(functionId, variableId) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof variableId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "variableId"'); + } + const apiPath = "/functions/{functionId}/variables/{variableId}".replace("{functionId}", functionId).replace("{variableId}", variableId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update variable + * + * Update variable by its unique ID. + * + * @param {string} functionId + * @param {string} variableId + * @param {string} key + * @param {string} value + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateVariable(functionId, variableId, key, value) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof variableId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "variableId"'); + } + if (typeof key === "undefined") { + throw new client.AppwriteException('Missing required parameter: "key"'); + } + const apiPath = "/functions/{functionId}/variables/{variableId}".replace("{functionId}", functionId).replace("{variableId}", variableId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof value !== "undefined") { + payload["value"] = value; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Delete variable + * + * Delete a variable by its unique ID. + * + * @param {string} functionId + * @param {string} variableId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteVariable(functionId, variableId) { + if (typeof functionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof variableId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "variableId"'); + } + const apiPath = "/functions/{functionId}/variables/{variableId}".replace("{functionId}", functionId).replace("{variableId}", variableId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } +} + +exports.Functions = Functions; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=functions.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/functions.js.map b/node_modules/node-appwrite/dist/services/functions.js.map new file mode 100644 index 0000000..3f396bf --- /dev/null +++ b/node_modules/node-appwrite/dist/services/functions.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/functions.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { Runtime } from '../enums/runtime';\nimport { ExecutionMethod } from '../enums/execution-method';\n\nexport class Functions {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * List functions\n *\n * Get a list of all the project's functions. You can use the query params to filter your results.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async list(queries?: string[], search?: string): Promise {\n const apiPath = '/functions';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create function\n *\n * Create a new function. You can pass a list of [permissions](https://appwrite.io/docs/permissions) to allow different project users or team with access to execute the function using the client API.\n *\n * @param {string} functionId\n * @param {string} name\n * @param {Runtime} runtime\n * @param {string[]} execute\n * @param {string[]} events\n * @param {string} schedule\n * @param {number} timeout\n * @param {boolean} enabled\n * @param {boolean} logging\n * @param {string} entrypoint\n * @param {string} commands\n * @param {string[]} scopes\n * @param {string} installationId\n * @param {string} providerRepositoryId\n * @param {string} providerBranch\n * @param {boolean} providerSilentMode\n * @param {string} providerRootDirectory\n * @param {string} templateRepository\n * @param {string} templateOwner\n * @param {string} templateRootDirectory\n * @param {string} templateVersion\n * @param {string} specification\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async create(functionId: string, name: string, runtime: Runtime, execute?: string[], events?: string[], schedule?: string, timeout?: number, enabled?: boolean, logging?: boolean, entrypoint?: string, commands?: string, scopes?: string[], installationId?: string, providerRepositoryId?: string, providerBranch?: string, providerSilentMode?: boolean, providerRootDirectory?: string, templateRepository?: string, templateOwner?: string, templateRootDirectory?: string, templateVersion?: string, specification?: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n if (typeof runtime === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"runtime\"');\n }\n const apiPath = '/functions';\n const payload: Payload = {};\n if (typeof functionId !== 'undefined') {\n payload['functionId'] = functionId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof runtime !== 'undefined') {\n payload['runtime'] = runtime;\n }\n if (typeof execute !== 'undefined') {\n payload['execute'] = execute;\n }\n if (typeof events !== 'undefined') {\n payload['events'] = events;\n }\n if (typeof schedule !== 'undefined') {\n payload['schedule'] = schedule;\n }\n if (typeof timeout !== 'undefined') {\n payload['timeout'] = timeout;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof logging !== 'undefined') {\n payload['logging'] = logging;\n }\n if (typeof entrypoint !== 'undefined') {\n payload['entrypoint'] = entrypoint;\n }\n if (typeof commands !== 'undefined') {\n payload['commands'] = commands;\n }\n if (typeof scopes !== 'undefined') {\n payload['scopes'] = scopes;\n }\n if (typeof installationId !== 'undefined') {\n payload['installationId'] = installationId;\n }\n if (typeof providerRepositoryId !== 'undefined') {\n payload['providerRepositoryId'] = providerRepositoryId;\n }\n if (typeof providerBranch !== 'undefined') {\n payload['providerBranch'] = providerBranch;\n }\n if (typeof providerSilentMode !== 'undefined') {\n payload['providerSilentMode'] = providerSilentMode;\n }\n if (typeof providerRootDirectory !== 'undefined') {\n payload['providerRootDirectory'] = providerRootDirectory;\n }\n if (typeof templateRepository !== 'undefined') {\n payload['templateRepository'] = templateRepository;\n }\n if (typeof templateOwner !== 'undefined') {\n payload['templateOwner'] = templateOwner;\n }\n if (typeof templateRootDirectory !== 'undefined') {\n payload['templateRootDirectory'] = templateRootDirectory;\n }\n if (typeof templateVersion !== 'undefined') {\n payload['templateVersion'] = templateVersion;\n }\n if (typeof specification !== 'undefined') {\n payload['specification'] = specification;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List runtimes\n *\n * Get a list of all runtimes that are currently active on your instance.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listRuntimes(): Promise {\n const apiPath = '/functions/runtimes';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List available function runtime specifications\n *\n * List allowed function specifications for this instance.\n\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listSpecifications(): Promise {\n const apiPath = '/functions/specifications';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get function\n *\n * Get a function by its unique ID.\n *\n * @param {string} functionId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async get(functionId: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n const apiPath = '/functions/{functionId}'.replace('{functionId}', functionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update function\n *\n * Update function by its unique ID.\n *\n * @param {string} functionId\n * @param {string} name\n * @param {Runtime} runtime\n * @param {string[]} execute\n * @param {string[]} events\n * @param {string} schedule\n * @param {number} timeout\n * @param {boolean} enabled\n * @param {boolean} logging\n * @param {string} entrypoint\n * @param {string} commands\n * @param {string[]} scopes\n * @param {string} installationId\n * @param {string} providerRepositoryId\n * @param {string} providerBranch\n * @param {boolean} providerSilentMode\n * @param {string} providerRootDirectory\n * @param {string} specification\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async update(functionId: string, name: string, runtime?: Runtime, execute?: string[], events?: string[], schedule?: string, timeout?: number, enabled?: boolean, logging?: boolean, entrypoint?: string, commands?: string, scopes?: string[], installationId?: string, providerRepositoryId?: string, providerBranch?: string, providerSilentMode?: boolean, providerRootDirectory?: string, specification?: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/functions/{functionId}'.replace('{functionId}', functionId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof runtime !== 'undefined') {\n payload['runtime'] = runtime;\n }\n if (typeof execute !== 'undefined') {\n payload['execute'] = execute;\n }\n if (typeof events !== 'undefined') {\n payload['events'] = events;\n }\n if (typeof schedule !== 'undefined') {\n payload['schedule'] = schedule;\n }\n if (typeof timeout !== 'undefined') {\n payload['timeout'] = timeout;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof logging !== 'undefined') {\n payload['logging'] = logging;\n }\n if (typeof entrypoint !== 'undefined') {\n payload['entrypoint'] = entrypoint;\n }\n if (typeof commands !== 'undefined') {\n payload['commands'] = commands;\n }\n if (typeof scopes !== 'undefined') {\n payload['scopes'] = scopes;\n }\n if (typeof installationId !== 'undefined') {\n payload['installationId'] = installationId;\n }\n if (typeof providerRepositoryId !== 'undefined') {\n payload['providerRepositoryId'] = providerRepositoryId;\n }\n if (typeof providerBranch !== 'undefined') {\n payload['providerBranch'] = providerBranch;\n }\n if (typeof providerSilentMode !== 'undefined') {\n payload['providerSilentMode'] = providerSilentMode;\n }\n if (typeof providerRootDirectory !== 'undefined') {\n payload['providerRootDirectory'] = providerRootDirectory;\n }\n if (typeof specification !== 'undefined') {\n payload['specification'] = specification;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete function\n *\n * Delete a function by its unique ID.\n *\n * @param {string} functionId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async delete(functionId: string): Promise<{}> {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n const apiPath = '/functions/{functionId}'.replace('{functionId}', functionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List deployments\n *\n * Get a list of all the project's code deployments. You can use the query params to filter your results.\n *\n * @param {string} functionId\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listDeployments(functionId: string, queries?: string[], search?: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n const apiPath = '/functions/{functionId}/deployments'.replace('{functionId}', functionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create deployment\n *\n * Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https://appwrite.io/docs/functions).\n\nUse the "command" param to set the entrypoint used to execute your code.\n *\n * @param {string} functionId\n * @param {File} code\n * @param {boolean} activate\n * @param {string} entrypoint\n * @param {string} commands\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createDeployment(functionId: string, code: File, activate: boolean, entrypoint?: string, commands?: string, onProgress = (progress: UploadProgress) => {}): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof code === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"code\"');\n }\n if (typeof activate === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"activate\"');\n }\n const apiPath = '/functions/{functionId}/deployments'.replace('{functionId}', functionId);\n const payload: Payload = {};\n if (typeof entrypoint !== 'undefined') {\n payload['entrypoint'] = entrypoint;\n }\n if (typeof commands !== 'undefined') {\n payload['commands'] = commands;\n }\n if (typeof code !== 'undefined') {\n payload['code'] = code;\n }\n if (typeof activate !== 'undefined') {\n payload['activate'] = activate;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'multipart/form-data',\n }\n\n return await this.client.chunkedUpload(\n 'post',\n uri,\n apiHeaders,\n payload,\n onProgress\n );\n }\n /**\n * Get deployment\n *\n * Get a code deployment by its unique ID.\n *\n * @param {string} functionId\n * @param {string} deploymentId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getDeployment(functionId: string, deploymentId: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof deploymentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"deploymentId\"');\n }\n const apiPath = '/functions/{functionId}/deployments/{deploymentId}'.replace('{functionId}', functionId).replace('{deploymentId}', deploymentId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update deployment\n *\n * Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.\n *\n * @param {string} functionId\n * @param {string} deploymentId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateDeployment(functionId: string, deploymentId: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof deploymentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"deploymentId\"');\n }\n const apiPath = '/functions/{functionId}/deployments/{deploymentId}'.replace('{functionId}', functionId).replace('{deploymentId}', deploymentId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete deployment\n *\n * Delete a code deployment by its unique ID.\n *\n * @param {string} functionId\n * @param {string} deploymentId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteDeployment(functionId: string, deploymentId: string): Promise<{}> {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof deploymentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"deploymentId\"');\n }\n const apiPath = '/functions/{functionId}/deployments/{deploymentId}'.replace('{functionId}', functionId).replace('{deploymentId}', deploymentId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Rebuild deployment\n *\n *\n * @param {string} functionId\n * @param {string} deploymentId\n * @param {string} buildId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async createBuild(functionId: string, deploymentId: string, buildId?: string): Promise<{}> {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof deploymentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"deploymentId\"');\n }\n const apiPath = '/functions/{functionId}/deployments/{deploymentId}/build'.replace('{functionId}', functionId).replace('{deploymentId}', deploymentId);\n const payload: Payload = {};\n if (typeof buildId !== 'undefined') {\n payload['buildId'] = buildId;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Cancel deployment\n *\n *\n * @param {string} functionId\n * @param {string} deploymentId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateDeploymentBuild(functionId: string, deploymentId: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof deploymentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"deploymentId\"');\n }\n const apiPath = '/functions/{functionId}/deployments/{deploymentId}/build'.replace('{functionId}', functionId).replace('{deploymentId}', deploymentId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Download deployment\n *\n * Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.\n *\n * @param {string} functionId\n * @param {string} deploymentId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getDeploymentDownload(functionId: string, deploymentId: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof deploymentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"deploymentId\"');\n }\n const apiPath = '/functions/{functionId}/deployments/{deploymentId}/download'.replace('{functionId}', functionId).replace('{deploymentId}', deploymentId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * List executions\n *\n * Get a list of all the current user function execution logs. You can use the query params to filter your results.\n *\n * @param {string} functionId\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listExecutions(functionId: string, queries?: string[], search?: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n const apiPath = '/functions/{functionId}/executions'.replace('{functionId}', functionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create execution\n *\n * Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.\n *\n * @param {string} functionId\n * @param {string} body\n * @param {boolean} async\n * @param {string} xpath\n * @param {ExecutionMethod} method\n * @param {object} headers\n * @param {string} scheduledAt\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createExecution(functionId: string, body?: string, async?: boolean, xpath?: string, method?: ExecutionMethod, headers?: object, scheduledAt?: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n const apiPath = '/functions/{functionId}/executions'.replace('{functionId}', functionId);\n const payload: Payload = {};\n if (typeof body !== 'undefined') {\n payload['body'] = body;\n }\n if (typeof async !== 'undefined') {\n payload['async'] = async;\n }\n if (typeof xpath !== 'undefined') {\n payload['path'] = xpath;\n }\n if (typeof method !== 'undefined') {\n payload['method'] = method;\n }\n if (typeof headers !== 'undefined') {\n payload['headers'] = headers;\n }\n if (typeof scheduledAt !== 'undefined') {\n payload['scheduledAt'] = scheduledAt;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get execution\n *\n * Get a function execution log by its unique ID.\n *\n * @param {string} functionId\n * @param {string} executionId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getExecution(functionId: string, executionId: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof executionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"executionId\"');\n }\n const apiPath = '/functions/{functionId}/executions/{executionId}'.replace('{functionId}', functionId).replace('{executionId}', executionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete execution\n *\n * Delete a function execution by its unique ID.\n\n *\n * @param {string} functionId\n * @param {string} executionId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteExecution(functionId: string, executionId: string): Promise<{}> {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof executionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"executionId\"');\n }\n const apiPath = '/functions/{functionId}/executions/{executionId}'.replace('{functionId}', functionId).replace('{executionId}', executionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List variables\n *\n * Get a list of all variables of a specific function.\n *\n * @param {string} functionId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listVariables(functionId: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n const apiPath = '/functions/{functionId}/variables'.replace('{functionId}', functionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create variable\n *\n * Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.\n *\n * @param {string} functionId\n * @param {string} key\n * @param {string} value\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createVariable(functionId: string, key: string, value: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof value === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"value\"');\n }\n const apiPath = '/functions/{functionId}/variables'.replace('{functionId}', functionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof value !== 'undefined') {\n payload['value'] = value;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get variable\n *\n * Get a variable by its unique ID.\n *\n * @param {string} functionId\n * @param {string} variableId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getVariable(functionId: string, variableId: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof variableId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"variableId\"');\n }\n const apiPath = '/functions/{functionId}/variables/{variableId}'.replace('{functionId}', functionId).replace('{variableId}', variableId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update variable\n *\n * Update variable by its unique ID.\n *\n * @param {string} functionId\n * @param {string} variableId\n * @param {string} key\n * @param {string} value\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateVariable(functionId: string, variableId: string, key: string, value?: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof variableId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"variableId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/functions/{functionId}/variables/{variableId}'.replace('{functionId}', functionId).replace('{variableId}', variableId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof value !== 'undefined') {\n payload['value'] = value;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete variable\n *\n * Delete a variable by its unique ID.\n *\n * @param {string} functionId\n * @param {string} variableId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteVariable(functionId: string, variableId: string): Promise<{}> {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof variableId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"variableId\"');\n }\n const apiPath = '/functions/{functionId}/variables/{variableId}'.replace('{functionId}', functionId).replace('{variableId}', variableId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/functions.mjs b/node_modules/node-appwrite/dist/services/functions.mjs new file mode 100644 index 0000000..78164b4 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/functions.mjs @@ -0,0 +1,938 @@ +import { AppwriteException } from '../client.mjs'; + +// src/services/functions.ts +var Functions = class { + constructor(client) { + this.client = client; + } + /** + * List functions + * + * Get a list of all the project's functions. You can use the query params to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async list(queries, search) { + const apiPath = "/functions"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create function + * + * Create a new function. You can pass a list of [permissions](https://appwrite.io/docs/permissions) to allow different project users or team with access to execute the function using the client API. + * + * @param {string} functionId + * @param {string} name + * @param {Runtime} runtime + * @param {string[]} execute + * @param {string[]} events + * @param {string} schedule + * @param {number} timeout + * @param {boolean} enabled + * @param {boolean} logging + * @param {string} entrypoint + * @param {string} commands + * @param {string[]} scopes + * @param {string} installationId + * @param {string} providerRepositoryId + * @param {string} providerBranch + * @param {boolean} providerSilentMode + * @param {string} providerRootDirectory + * @param {string} templateRepository + * @param {string} templateOwner + * @param {string} templateRootDirectory + * @param {string} templateVersion + * @param {string} specification + * @throws {AppwriteException} + * @returns {Promise} + */ + async create(functionId, name, runtime, execute, events, schedule, timeout, enabled, logging, entrypoint, commands, scopes, installationId, providerRepositoryId, providerBranch, providerSilentMode, providerRootDirectory, templateRepository, templateOwner, templateRootDirectory, templateVersion, specification) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + if (typeof runtime === "undefined") { + throw new AppwriteException('Missing required parameter: "runtime"'); + } + const apiPath = "/functions"; + const payload = {}; + if (typeof functionId !== "undefined") { + payload["functionId"] = functionId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof runtime !== "undefined") { + payload["runtime"] = runtime; + } + if (typeof execute !== "undefined") { + payload["execute"] = execute; + } + if (typeof events !== "undefined") { + payload["events"] = events; + } + if (typeof schedule !== "undefined") { + payload["schedule"] = schedule; + } + if (typeof timeout !== "undefined") { + payload["timeout"] = timeout; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof logging !== "undefined") { + payload["logging"] = logging; + } + if (typeof entrypoint !== "undefined") { + payload["entrypoint"] = entrypoint; + } + if (typeof commands !== "undefined") { + payload["commands"] = commands; + } + if (typeof scopes !== "undefined") { + payload["scopes"] = scopes; + } + if (typeof installationId !== "undefined") { + payload["installationId"] = installationId; + } + if (typeof providerRepositoryId !== "undefined") { + payload["providerRepositoryId"] = providerRepositoryId; + } + if (typeof providerBranch !== "undefined") { + payload["providerBranch"] = providerBranch; + } + if (typeof providerSilentMode !== "undefined") { + payload["providerSilentMode"] = providerSilentMode; + } + if (typeof providerRootDirectory !== "undefined") { + payload["providerRootDirectory"] = providerRootDirectory; + } + if (typeof templateRepository !== "undefined") { + payload["templateRepository"] = templateRepository; + } + if (typeof templateOwner !== "undefined") { + payload["templateOwner"] = templateOwner; + } + if (typeof templateRootDirectory !== "undefined") { + payload["templateRootDirectory"] = templateRootDirectory; + } + if (typeof templateVersion !== "undefined") { + payload["templateVersion"] = templateVersion; + } + if (typeof specification !== "undefined") { + payload["specification"] = specification; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * List runtimes + * + * Get a list of all runtimes that are currently active on your instance. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listRuntimes() { + const apiPath = "/functions/runtimes"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List available function runtime specifications + * + * List allowed function specifications for this instance. + + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listSpecifications() { + const apiPath = "/functions/specifications"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get function + * + * Get a function by its unique ID. + * + * @param {string} functionId + * @throws {AppwriteException} + * @returns {Promise} + */ + async get(functionId) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + const apiPath = "/functions/{functionId}".replace("{functionId}", functionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update function + * + * Update function by its unique ID. + * + * @param {string} functionId + * @param {string} name + * @param {Runtime} runtime + * @param {string[]} execute + * @param {string[]} events + * @param {string} schedule + * @param {number} timeout + * @param {boolean} enabled + * @param {boolean} logging + * @param {string} entrypoint + * @param {string} commands + * @param {string[]} scopes + * @param {string} installationId + * @param {string} providerRepositoryId + * @param {string} providerBranch + * @param {boolean} providerSilentMode + * @param {string} providerRootDirectory + * @param {string} specification + * @throws {AppwriteException} + * @returns {Promise} + */ + async update(functionId, name, runtime, execute, events, schedule, timeout, enabled, logging, entrypoint, commands, scopes, installationId, providerRepositoryId, providerBranch, providerSilentMode, providerRootDirectory, specification) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/functions/{functionId}".replace("{functionId}", functionId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof runtime !== "undefined") { + payload["runtime"] = runtime; + } + if (typeof execute !== "undefined") { + payload["execute"] = execute; + } + if (typeof events !== "undefined") { + payload["events"] = events; + } + if (typeof schedule !== "undefined") { + payload["schedule"] = schedule; + } + if (typeof timeout !== "undefined") { + payload["timeout"] = timeout; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof logging !== "undefined") { + payload["logging"] = logging; + } + if (typeof entrypoint !== "undefined") { + payload["entrypoint"] = entrypoint; + } + if (typeof commands !== "undefined") { + payload["commands"] = commands; + } + if (typeof scopes !== "undefined") { + payload["scopes"] = scopes; + } + if (typeof installationId !== "undefined") { + payload["installationId"] = installationId; + } + if (typeof providerRepositoryId !== "undefined") { + payload["providerRepositoryId"] = providerRepositoryId; + } + if (typeof providerBranch !== "undefined") { + payload["providerBranch"] = providerBranch; + } + if (typeof providerSilentMode !== "undefined") { + payload["providerSilentMode"] = providerSilentMode; + } + if (typeof providerRootDirectory !== "undefined") { + payload["providerRootDirectory"] = providerRootDirectory; + } + if (typeof specification !== "undefined") { + payload["specification"] = specification; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Delete function + * + * Delete a function by its unique ID. + * + * @param {string} functionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async delete(functionId) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + const apiPath = "/functions/{functionId}".replace("{functionId}", functionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List deployments + * + * Get a list of all the project's code deployments. You can use the query params to filter your results. + * + * @param {string} functionId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listDeployments(functionId, queries, search) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + const apiPath = "/functions/{functionId}/deployments".replace("{functionId}", functionId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create deployment + * + * Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID. + + This endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https://appwrite.io/docs/functions). + + Use the "command" param to set the entrypoint used to execute your code. + * + * @param {string} functionId + * @param {File} code + * @param {boolean} activate + * @param {string} entrypoint + * @param {string} commands + * @throws {AppwriteException} + * @returns {Promise} + */ + async createDeployment(functionId, code, activate, entrypoint, commands, onProgress = (progress) => { + }) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof code === "undefined") { + throw new AppwriteException('Missing required parameter: "code"'); + } + if (typeof activate === "undefined") { + throw new AppwriteException('Missing required parameter: "activate"'); + } + const apiPath = "/functions/{functionId}/deployments".replace("{functionId}", functionId); + const payload = {}; + if (typeof entrypoint !== "undefined") { + payload["entrypoint"] = entrypoint; + } + if (typeof commands !== "undefined") { + payload["commands"] = commands; + } + if (typeof code !== "undefined") { + payload["code"] = code; + } + if (typeof activate !== "undefined") { + payload["activate"] = activate; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "multipart/form-data" + }; + return await this.client.chunkedUpload( + "post", + uri, + apiHeaders, + payload, + onProgress + ); + } + /** + * Get deployment + * + * Get a code deployment by its unique ID. + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getDeployment(functionId, deploymentId) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof deploymentId === "undefined") { + throw new AppwriteException('Missing required parameter: "deploymentId"'); + } + const apiPath = "/functions/{functionId}/deployments/{deploymentId}".replace("{functionId}", functionId).replace("{deploymentId}", deploymentId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update deployment + * + * Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint. + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateDeployment(functionId, deploymentId) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof deploymentId === "undefined") { + throw new AppwriteException('Missing required parameter: "deploymentId"'); + } + const apiPath = "/functions/{functionId}/deployments/{deploymentId}".replace("{functionId}", functionId).replace("{deploymentId}", deploymentId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Delete deployment + * + * Delete a code deployment by its unique ID. + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteDeployment(functionId, deploymentId) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof deploymentId === "undefined") { + throw new AppwriteException('Missing required parameter: "deploymentId"'); + } + const apiPath = "/functions/{functionId}/deployments/{deploymentId}".replace("{functionId}", functionId).replace("{deploymentId}", deploymentId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Rebuild deployment + * + * + * @param {string} functionId + * @param {string} deploymentId + * @param {string} buildId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async createBuild(functionId, deploymentId, buildId) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof deploymentId === "undefined") { + throw new AppwriteException('Missing required parameter: "deploymentId"'); + } + const apiPath = "/functions/{functionId}/deployments/{deploymentId}/build".replace("{functionId}", functionId).replace("{deploymentId}", deploymentId); + const payload = {}; + if (typeof buildId !== "undefined") { + payload["buildId"] = buildId; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Cancel deployment + * + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateDeploymentBuild(functionId, deploymentId) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof deploymentId === "undefined") { + throw new AppwriteException('Missing required parameter: "deploymentId"'); + } + const apiPath = "/functions/{functionId}/deployments/{deploymentId}/build".replace("{functionId}", functionId).replace("{deploymentId}", deploymentId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Download deployment + * + * Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download. + * + * @param {string} functionId + * @param {string} deploymentId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getDeploymentDownload(functionId, deploymentId) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof deploymentId === "undefined") { + throw new AppwriteException('Missing required parameter: "deploymentId"'); + } + const apiPath = "/functions/{functionId}/deployments/{deploymentId}/download".replace("{functionId}", functionId).replace("{deploymentId}", deploymentId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * List executions + * + * Get a list of all the current user function execution logs. You can use the query params to filter your results. + * + * @param {string} functionId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listExecutions(functionId, queries, search) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + const apiPath = "/functions/{functionId}/executions".replace("{functionId}", functionId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create execution + * + * Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously. + * + * @param {string} functionId + * @param {string} body + * @param {boolean} async + * @param {string} xpath + * @param {ExecutionMethod} method + * @param {object} headers + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + async createExecution(functionId, body, async, xpath, method, headers, scheduledAt) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + const apiPath = "/functions/{functionId}/executions".replace("{functionId}", functionId); + const payload = {}; + if (typeof body !== "undefined") { + payload["body"] = body; + } + if (typeof async !== "undefined") { + payload["async"] = async; + } + if (typeof xpath !== "undefined") { + payload["path"] = xpath; + } + if (typeof method !== "undefined") { + payload["method"] = method; + } + if (typeof headers !== "undefined") { + payload["headers"] = headers; + } + if (typeof scheduledAt !== "undefined") { + payload["scheduledAt"] = scheduledAt; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get execution + * + * Get a function execution log by its unique ID. + * + * @param {string} functionId + * @param {string} executionId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getExecution(functionId, executionId) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof executionId === "undefined") { + throw new AppwriteException('Missing required parameter: "executionId"'); + } + const apiPath = "/functions/{functionId}/executions/{executionId}".replace("{functionId}", functionId).replace("{executionId}", executionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete execution + * + * Delete a function execution by its unique ID. + + * + * @param {string} functionId + * @param {string} executionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteExecution(functionId, executionId) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof executionId === "undefined") { + throw new AppwriteException('Missing required parameter: "executionId"'); + } + const apiPath = "/functions/{functionId}/executions/{executionId}".replace("{functionId}", functionId).replace("{executionId}", executionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List variables + * + * Get a list of all variables of a specific function. + * + * @param {string} functionId + * @throws {AppwriteException} + * @returns {Promise} + */ + async listVariables(functionId) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + const apiPath = "/functions/{functionId}/variables".replace("{functionId}", functionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create variable + * + * Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables. + * + * @param {string} functionId + * @param {string} key + * @param {string} value + * @throws {AppwriteException} + * @returns {Promise} + */ + async createVariable(functionId, key, value) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + if (typeof value === "undefined") { + throw new AppwriteException('Missing required parameter: "value"'); + } + const apiPath = "/functions/{functionId}/variables".replace("{functionId}", functionId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof value !== "undefined") { + payload["value"] = value; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get variable + * + * Get a variable by its unique ID. + * + * @param {string} functionId + * @param {string} variableId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getVariable(functionId, variableId) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof variableId === "undefined") { + throw new AppwriteException('Missing required parameter: "variableId"'); + } + const apiPath = "/functions/{functionId}/variables/{variableId}".replace("{functionId}", functionId).replace("{variableId}", variableId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update variable + * + * Update variable by its unique ID. + * + * @param {string} functionId + * @param {string} variableId + * @param {string} key + * @param {string} value + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateVariable(functionId, variableId, key, value) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof variableId === "undefined") { + throw new AppwriteException('Missing required parameter: "variableId"'); + } + if (typeof key === "undefined") { + throw new AppwriteException('Missing required parameter: "key"'); + } + const apiPath = "/functions/{functionId}/variables/{variableId}".replace("{functionId}", functionId).replace("{variableId}", variableId); + const payload = {}; + if (typeof key !== "undefined") { + payload["key"] = key; + } + if (typeof value !== "undefined") { + payload["value"] = value; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Delete variable + * + * Delete a variable by its unique ID. + * + * @param {string} functionId + * @param {string} variableId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteVariable(functionId, variableId) { + if (typeof functionId === "undefined") { + throw new AppwriteException('Missing required parameter: "functionId"'); + } + if (typeof variableId === "undefined") { + throw new AppwriteException('Missing required parameter: "variableId"'); + } + const apiPath = "/functions/{functionId}/variables/{variableId}".replace("{functionId}", functionId).replace("{variableId}", variableId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } +}; + +export { Functions }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=functions.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/functions.mjs.map b/node_modules/node-appwrite/dist/services/functions.mjs.map new file mode 100644 index 0000000..4afba07 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/functions.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/functions.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { Runtime } from '../enums/runtime';\nimport { ExecutionMethod } from '../enums/execution-method';\n\nexport class Functions {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * List functions\n *\n * Get a list of all the project's functions. You can use the query params to filter your results.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async list(queries?: string[], search?: string): Promise {\n const apiPath = '/functions';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create function\n *\n * Create a new function. You can pass a list of [permissions](https://appwrite.io/docs/permissions) to allow different project users or team with access to execute the function using the client API.\n *\n * @param {string} functionId\n * @param {string} name\n * @param {Runtime} runtime\n * @param {string[]} execute\n * @param {string[]} events\n * @param {string} schedule\n * @param {number} timeout\n * @param {boolean} enabled\n * @param {boolean} logging\n * @param {string} entrypoint\n * @param {string} commands\n * @param {string[]} scopes\n * @param {string} installationId\n * @param {string} providerRepositoryId\n * @param {string} providerBranch\n * @param {boolean} providerSilentMode\n * @param {string} providerRootDirectory\n * @param {string} templateRepository\n * @param {string} templateOwner\n * @param {string} templateRootDirectory\n * @param {string} templateVersion\n * @param {string} specification\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async create(functionId: string, name: string, runtime: Runtime, execute?: string[], events?: string[], schedule?: string, timeout?: number, enabled?: boolean, logging?: boolean, entrypoint?: string, commands?: string, scopes?: string[], installationId?: string, providerRepositoryId?: string, providerBranch?: string, providerSilentMode?: boolean, providerRootDirectory?: string, templateRepository?: string, templateOwner?: string, templateRootDirectory?: string, templateVersion?: string, specification?: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n if (typeof runtime === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"runtime\"');\n }\n const apiPath = '/functions';\n const payload: Payload = {};\n if (typeof functionId !== 'undefined') {\n payload['functionId'] = functionId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof runtime !== 'undefined') {\n payload['runtime'] = runtime;\n }\n if (typeof execute !== 'undefined') {\n payload['execute'] = execute;\n }\n if (typeof events !== 'undefined') {\n payload['events'] = events;\n }\n if (typeof schedule !== 'undefined') {\n payload['schedule'] = schedule;\n }\n if (typeof timeout !== 'undefined') {\n payload['timeout'] = timeout;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof logging !== 'undefined') {\n payload['logging'] = logging;\n }\n if (typeof entrypoint !== 'undefined') {\n payload['entrypoint'] = entrypoint;\n }\n if (typeof commands !== 'undefined') {\n payload['commands'] = commands;\n }\n if (typeof scopes !== 'undefined') {\n payload['scopes'] = scopes;\n }\n if (typeof installationId !== 'undefined') {\n payload['installationId'] = installationId;\n }\n if (typeof providerRepositoryId !== 'undefined') {\n payload['providerRepositoryId'] = providerRepositoryId;\n }\n if (typeof providerBranch !== 'undefined') {\n payload['providerBranch'] = providerBranch;\n }\n if (typeof providerSilentMode !== 'undefined') {\n payload['providerSilentMode'] = providerSilentMode;\n }\n if (typeof providerRootDirectory !== 'undefined') {\n payload['providerRootDirectory'] = providerRootDirectory;\n }\n if (typeof templateRepository !== 'undefined') {\n payload['templateRepository'] = templateRepository;\n }\n if (typeof templateOwner !== 'undefined') {\n payload['templateOwner'] = templateOwner;\n }\n if (typeof templateRootDirectory !== 'undefined') {\n payload['templateRootDirectory'] = templateRootDirectory;\n }\n if (typeof templateVersion !== 'undefined') {\n payload['templateVersion'] = templateVersion;\n }\n if (typeof specification !== 'undefined') {\n payload['specification'] = specification;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List runtimes\n *\n * Get a list of all runtimes that are currently active on your instance.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listRuntimes(): Promise {\n const apiPath = '/functions/runtimes';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List available function runtime specifications\n *\n * List allowed function specifications for this instance.\n\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listSpecifications(): Promise {\n const apiPath = '/functions/specifications';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get function\n *\n * Get a function by its unique ID.\n *\n * @param {string} functionId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async get(functionId: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n const apiPath = '/functions/{functionId}'.replace('{functionId}', functionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update function\n *\n * Update function by its unique ID.\n *\n * @param {string} functionId\n * @param {string} name\n * @param {Runtime} runtime\n * @param {string[]} execute\n * @param {string[]} events\n * @param {string} schedule\n * @param {number} timeout\n * @param {boolean} enabled\n * @param {boolean} logging\n * @param {string} entrypoint\n * @param {string} commands\n * @param {string[]} scopes\n * @param {string} installationId\n * @param {string} providerRepositoryId\n * @param {string} providerBranch\n * @param {boolean} providerSilentMode\n * @param {string} providerRootDirectory\n * @param {string} specification\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async update(functionId: string, name: string, runtime?: Runtime, execute?: string[], events?: string[], schedule?: string, timeout?: number, enabled?: boolean, logging?: boolean, entrypoint?: string, commands?: string, scopes?: string[], installationId?: string, providerRepositoryId?: string, providerBranch?: string, providerSilentMode?: boolean, providerRootDirectory?: string, specification?: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/functions/{functionId}'.replace('{functionId}', functionId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof runtime !== 'undefined') {\n payload['runtime'] = runtime;\n }\n if (typeof execute !== 'undefined') {\n payload['execute'] = execute;\n }\n if (typeof events !== 'undefined') {\n payload['events'] = events;\n }\n if (typeof schedule !== 'undefined') {\n payload['schedule'] = schedule;\n }\n if (typeof timeout !== 'undefined') {\n payload['timeout'] = timeout;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof logging !== 'undefined') {\n payload['logging'] = logging;\n }\n if (typeof entrypoint !== 'undefined') {\n payload['entrypoint'] = entrypoint;\n }\n if (typeof commands !== 'undefined') {\n payload['commands'] = commands;\n }\n if (typeof scopes !== 'undefined') {\n payload['scopes'] = scopes;\n }\n if (typeof installationId !== 'undefined') {\n payload['installationId'] = installationId;\n }\n if (typeof providerRepositoryId !== 'undefined') {\n payload['providerRepositoryId'] = providerRepositoryId;\n }\n if (typeof providerBranch !== 'undefined') {\n payload['providerBranch'] = providerBranch;\n }\n if (typeof providerSilentMode !== 'undefined') {\n payload['providerSilentMode'] = providerSilentMode;\n }\n if (typeof providerRootDirectory !== 'undefined') {\n payload['providerRootDirectory'] = providerRootDirectory;\n }\n if (typeof specification !== 'undefined') {\n payload['specification'] = specification;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete function\n *\n * Delete a function by its unique ID.\n *\n * @param {string} functionId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async delete(functionId: string): Promise<{}> {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n const apiPath = '/functions/{functionId}'.replace('{functionId}', functionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List deployments\n *\n * Get a list of all the project's code deployments. You can use the query params to filter your results.\n *\n * @param {string} functionId\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listDeployments(functionId: string, queries?: string[], search?: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n const apiPath = '/functions/{functionId}/deployments'.replace('{functionId}', functionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create deployment\n *\n * Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](https://appwrite.io/docs/functions).\n\nUse the "command" param to set the entrypoint used to execute your code.\n *\n * @param {string} functionId\n * @param {File} code\n * @param {boolean} activate\n * @param {string} entrypoint\n * @param {string} commands\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createDeployment(functionId: string, code: File, activate: boolean, entrypoint?: string, commands?: string, onProgress = (progress: UploadProgress) => {}): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof code === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"code\"');\n }\n if (typeof activate === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"activate\"');\n }\n const apiPath = '/functions/{functionId}/deployments'.replace('{functionId}', functionId);\n const payload: Payload = {};\n if (typeof entrypoint !== 'undefined') {\n payload['entrypoint'] = entrypoint;\n }\n if (typeof commands !== 'undefined') {\n payload['commands'] = commands;\n }\n if (typeof code !== 'undefined') {\n payload['code'] = code;\n }\n if (typeof activate !== 'undefined') {\n payload['activate'] = activate;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'multipart/form-data',\n }\n\n return await this.client.chunkedUpload(\n 'post',\n uri,\n apiHeaders,\n payload,\n onProgress\n );\n }\n /**\n * Get deployment\n *\n * Get a code deployment by its unique ID.\n *\n * @param {string} functionId\n * @param {string} deploymentId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getDeployment(functionId: string, deploymentId: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof deploymentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"deploymentId\"');\n }\n const apiPath = '/functions/{functionId}/deployments/{deploymentId}'.replace('{functionId}', functionId).replace('{deploymentId}', deploymentId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update deployment\n *\n * Update the function code deployment ID using the unique function ID. Use this endpoint to switch the code deployment that should be executed by the execution endpoint.\n *\n * @param {string} functionId\n * @param {string} deploymentId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateDeployment(functionId: string, deploymentId: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof deploymentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"deploymentId\"');\n }\n const apiPath = '/functions/{functionId}/deployments/{deploymentId}'.replace('{functionId}', functionId).replace('{deploymentId}', deploymentId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete deployment\n *\n * Delete a code deployment by its unique ID.\n *\n * @param {string} functionId\n * @param {string} deploymentId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteDeployment(functionId: string, deploymentId: string): Promise<{}> {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof deploymentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"deploymentId\"');\n }\n const apiPath = '/functions/{functionId}/deployments/{deploymentId}'.replace('{functionId}', functionId).replace('{deploymentId}', deploymentId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Rebuild deployment\n *\n *\n * @param {string} functionId\n * @param {string} deploymentId\n * @param {string} buildId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async createBuild(functionId: string, deploymentId: string, buildId?: string): Promise<{}> {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof deploymentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"deploymentId\"');\n }\n const apiPath = '/functions/{functionId}/deployments/{deploymentId}/build'.replace('{functionId}', functionId).replace('{deploymentId}', deploymentId);\n const payload: Payload = {};\n if (typeof buildId !== 'undefined') {\n payload['buildId'] = buildId;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Cancel deployment\n *\n *\n * @param {string} functionId\n * @param {string} deploymentId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateDeploymentBuild(functionId: string, deploymentId: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof deploymentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"deploymentId\"');\n }\n const apiPath = '/functions/{functionId}/deployments/{deploymentId}/build'.replace('{functionId}', functionId).replace('{deploymentId}', deploymentId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Download deployment\n *\n * Get a Deployment's contents by its unique ID. This endpoint supports range requests for partial or streaming file download.\n *\n * @param {string} functionId\n * @param {string} deploymentId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getDeploymentDownload(functionId: string, deploymentId: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof deploymentId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"deploymentId\"');\n }\n const apiPath = '/functions/{functionId}/deployments/{deploymentId}/download'.replace('{functionId}', functionId).replace('{deploymentId}', deploymentId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * List executions\n *\n * Get a list of all the current user function execution logs. You can use the query params to filter your results.\n *\n * @param {string} functionId\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listExecutions(functionId: string, queries?: string[], search?: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n const apiPath = '/functions/{functionId}/executions'.replace('{functionId}', functionId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create execution\n *\n * Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.\n *\n * @param {string} functionId\n * @param {string} body\n * @param {boolean} async\n * @param {string} xpath\n * @param {ExecutionMethod} method\n * @param {object} headers\n * @param {string} scheduledAt\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createExecution(functionId: string, body?: string, async?: boolean, xpath?: string, method?: ExecutionMethod, headers?: object, scheduledAt?: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n const apiPath = '/functions/{functionId}/executions'.replace('{functionId}', functionId);\n const payload: Payload = {};\n if (typeof body !== 'undefined') {\n payload['body'] = body;\n }\n if (typeof async !== 'undefined') {\n payload['async'] = async;\n }\n if (typeof xpath !== 'undefined') {\n payload['path'] = xpath;\n }\n if (typeof method !== 'undefined') {\n payload['method'] = method;\n }\n if (typeof headers !== 'undefined') {\n payload['headers'] = headers;\n }\n if (typeof scheduledAt !== 'undefined') {\n payload['scheduledAt'] = scheduledAt;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get execution\n *\n * Get a function execution log by its unique ID.\n *\n * @param {string} functionId\n * @param {string} executionId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getExecution(functionId: string, executionId: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof executionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"executionId\"');\n }\n const apiPath = '/functions/{functionId}/executions/{executionId}'.replace('{functionId}', functionId).replace('{executionId}', executionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete execution\n *\n * Delete a function execution by its unique ID.\n\n *\n * @param {string} functionId\n * @param {string} executionId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteExecution(functionId: string, executionId: string): Promise<{}> {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof executionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"executionId\"');\n }\n const apiPath = '/functions/{functionId}/executions/{executionId}'.replace('{functionId}', functionId).replace('{executionId}', executionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List variables\n *\n * Get a list of all variables of a specific function.\n *\n * @param {string} functionId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listVariables(functionId: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n const apiPath = '/functions/{functionId}/variables'.replace('{functionId}', functionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create variable\n *\n * Create a new function environment variable. These variables can be accessed in the function at runtime as environment variables.\n *\n * @param {string} functionId\n * @param {string} key\n * @param {string} value\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createVariable(functionId: string, key: string, value: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n if (typeof value === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"value\"');\n }\n const apiPath = '/functions/{functionId}/variables'.replace('{functionId}', functionId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof value !== 'undefined') {\n payload['value'] = value;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get variable\n *\n * Get a variable by its unique ID.\n *\n * @param {string} functionId\n * @param {string} variableId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getVariable(functionId: string, variableId: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof variableId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"variableId\"');\n }\n const apiPath = '/functions/{functionId}/variables/{variableId}'.replace('{functionId}', functionId).replace('{variableId}', variableId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update variable\n *\n * Update variable by its unique ID.\n *\n * @param {string} functionId\n * @param {string} variableId\n * @param {string} key\n * @param {string} value\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateVariable(functionId: string, variableId: string, key: string, value?: string): Promise {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof variableId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"variableId\"');\n }\n if (typeof key === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"key\"');\n }\n const apiPath = '/functions/{functionId}/variables/{variableId}'.replace('{functionId}', functionId).replace('{variableId}', variableId);\n const payload: Payload = {};\n if (typeof key !== 'undefined') {\n payload['key'] = key;\n }\n if (typeof value !== 'undefined') {\n payload['value'] = value;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete variable\n *\n * Delete a variable by its unique ID.\n *\n * @param {string} functionId\n * @param {string} variableId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteVariable(functionId: string, variableId: string): Promise<{}> {\n if (typeof functionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"functionId\"');\n }\n if (typeof variableId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"variableId\"');\n }\n const apiPath = '/functions/{functionId}/variables/{variableId}'.replace('{functionId}', functionId).replace('{variableId}', variableId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/graphql.d.mts b/node_modules/node-appwrite/dist/services/graphql.d.mts new file mode 100644 index 0000000..486cf85 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/graphql.d.mts @@ -0,0 +1,30 @@ +import { Client } from '../client.mjs'; +import '../models.mjs'; +import '../query.mjs'; + +declare class Graphql { + client: Client; + constructor(client: Client); + /** + * GraphQL endpoint + * + * Execute a GraphQL mutation. + * + * @param {object} query + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + query(query: object): Promise<{}>; + /** + * GraphQL endpoint + * + * Execute a GraphQL mutation. + * + * @param {object} query + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + mutation(query: object): Promise<{}>; +} + +export { Graphql }; diff --git a/node_modules/node-appwrite/dist/services/graphql.d.ts b/node_modules/node-appwrite/dist/services/graphql.d.ts new file mode 100644 index 0000000..bf76a45 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/graphql.d.ts @@ -0,0 +1,30 @@ +import { Client } from '../client.js'; +import '../models.js'; +import '../query.js'; + +declare class Graphql { + client: Client; + constructor(client: Client); + /** + * GraphQL endpoint + * + * Execute a GraphQL mutation. + * + * @param {object} query + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + query(query: object): Promise<{}>; + /** + * GraphQL endpoint + * + * Execute a GraphQL mutation. + * + * @param {object} query + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + mutation(query: object): Promise<{}>; +} + +export { Graphql }; diff --git a/node_modules/node-appwrite/dist/services/graphql.js b/node_modules/node-appwrite/dist/services/graphql.js new file mode 100644 index 0000000..236e896 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/graphql.js @@ -0,0 +1,73 @@ +'use strict'; + +var client = require('../client'); + +class Graphql { + constructor(client) { + this.client = client; + } + /** + * GraphQL endpoint + * + * Execute a GraphQL mutation. + * + * @param {object} query + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async query(query) { + if (typeof query === "undefined") { + throw new client.AppwriteException('Missing required parameter: "query"'); + } + const apiPath = "/graphql"; + const payload = {}; + if (typeof query !== "undefined") { + payload["query"] = query; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "x-sdk-graphql": "true", + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * GraphQL endpoint + * + * Execute a GraphQL mutation. + * + * @param {object} query + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async mutation(query) { + if (typeof query === "undefined") { + throw new client.AppwriteException('Missing required parameter: "query"'); + } + const apiPath = "/graphql/mutation"; + const payload = {}; + if (typeof query !== "undefined") { + payload["query"] = query; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "x-sdk-graphql": "true", + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } +} + +exports.Graphql = Graphql; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=graphql.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/graphql.js.map b/node_modules/node-appwrite/dist/services/graphql.js.map new file mode 100644 index 0000000..2428c7e --- /dev/null +++ b/node_modules/node-appwrite/dist/services/graphql.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/graphql.ts"],"names":[],"mappings":"AAAA,SAAS,yBAA+D;AAGjE,MAAM,QAAQ;AAAA,EAGjB,YAAY,QAAgB;AACxB,SAAK,SAAS;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,MAAM,OAA4B;AACpC,QAAI,OAAO,UAAU,aAAa;AAC9B,YAAM,IAAI,kBAAkB,qCAAqC;AAAA,IACrE;AACA,UAAM,UAAU;AAChB,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,UAAU,aAAa;AAC9B,cAAQ,OAAO,IAAI;AAAA,IACvB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,SAAS,OAA4B;AACvC,QAAI,OAAO,UAAU,aAAa;AAC9B,YAAM,IAAI,kBAAkB,qCAAqC;AAAA,IACrE;AACA,UAAM,UAAU;AAChB,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,UAAU,aAAa;AAC9B,cAAQ,OAAO,IAAI;AAAA,IACvB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACJ","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\n\nexport class Graphql {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * GraphQL endpoint\n *\n * Execute a GraphQL mutation.\n *\n * @param {object} query\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async query(query: object): Promise<{}> {\n if (typeof query === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"query\"');\n }\n const apiPath = '/graphql';\n const payload: Payload = {};\n if (typeof query !== 'undefined') {\n payload['query'] = query;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'x-sdk-graphql': 'true',\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * GraphQL endpoint\n *\n * Execute a GraphQL mutation.\n *\n * @param {object} query\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async mutation(query: object): Promise<{}> {\n if (typeof query === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"query\"');\n }\n const apiPath = '/graphql/mutation';\n const payload: Payload = {};\n if (typeof query !== 'undefined') {\n payload['query'] = query;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'x-sdk-graphql': 'true',\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/graphql.mjs b/node_modules/node-appwrite/dist/services/graphql.mjs new file mode 100644 index 0000000..9ecca17 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/graphql.mjs @@ -0,0 +1,72 @@ +import { AppwriteException } from '../client.mjs'; + +// src/services/graphql.ts +var Graphql = class { + constructor(client) { + this.client = client; + } + /** + * GraphQL endpoint + * + * Execute a GraphQL mutation. + * + * @param {object} query + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async query(query) { + if (typeof query === "undefined") { + throw new AppwriteException('Missing required parameter: "query"'); + } + const apiPath = "/graphql"; + const payload = {}; + if (typeof query !== "undefined") { + payload["query"] = query; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "x-sdk-graphql": "true", + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * GraphQL endpoint + * + * Execute a GraphQL mutation. + * + * @param {object} query + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async mutation(query) { + if (typeof query === "undefined") { + throw new AppwriteException('Missing required parameter: "query"'); + } + const apiPath = "/graphql/mutation"; + const payload = {}; + if (typeof query !== "undefined") { + payload["query"] = query; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "x-sdk-graphql": "true", + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } +}; + +export { Graphql }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=graphql.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/graphql.mjs.map b/node_modules/node-appwrite/dist/services/graphql.mjs.map new file mode 100644 index 0000000..ebff69f --- /dev/null +++ b/node_modules/node-appwrite/dist/services/graphql.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/graphql.ts"],"names":[],"mappings":";AAAA,SAAS,yBAA+D;AAGjE,IAAM,UAAN,MAAc;AAAA,EAGjB,YAAY,QAAgB;AACxB,SAAK,SAAS;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,MAAM,OAA4B;AACpC,QAAI,OAAO,UAAU,aAAa;AAC9B,YAAM,IAAI,kBAAkB,qCAAqC;AAAA,IACrE;AACA,UAAM,UAAU;AAChB,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,UAAU,aAAa;AAC9B,cAAQ,OAAO,IAAI;AAAA,IACvB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,SAAS,OAA4B;AACvC,QAAI,OAAO,UAAU,aAAa;AAC9B,YAAM,IAAI,kBAAkB,qCAAqC;AAAA,IACrE;AACA,UAAM,UAAU;AAChB,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,UAAU,aAAa;AAC9B,cAAQ,OAAO,IAAI;AAAA,IACvB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACJ","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\n\nexport class Graphql {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * GraphQL endpoint\n *\n * Execute a GraphQL mutation.\n *\n * @param {object} query\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async query(query: object): Promise<{}> {\n if (typeof query === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"query\"');\n }\n const apiPath = '/graphql';\n const payload: Payload = {};\n if (typeof query !== 'undefined') {\n payload['query'] = query;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'x-sdk-graphql': 'true',\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * GraphQL endpoint\n *\n * Execute a GraphQL mutation.\n *\n * @param {object} query\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async mutation(query: object): Promise<{}> {\n if (typeof query === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"query\"');\n }\n const apiPath = '/graphql/mutation';\n const payload: Payload = {};\n if (typeof query !== 'undefined') {\n payload['query'] = query;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'x-sdk-graphql': 'true',\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/health.d.mts b/node_modules/node-appwrite/dist/services/health.d.mts new file mode 100644 index 0000000..5f3adae --- /dev/null +++ b/node_modules/node-appwrite/dist/services/health.d.mts @@ -0,0 +1,235 @@ +import { Client } from '../client.mjs'; +import { Models } from '../models.mjs'; +import { Name } from '../enums/name.mjs'; +import '../query.mjs'; + +declare class Health { + client: Client; + constructor(client: Client); + /** + * Get HTTP + * + * Check the Appwrite HTTP server is up and responsive. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + get(): Promise; + /** + * Get antivirus + * + * Check the Appwrite Antivirus server is up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getAntivirus(): Promise; + /** + * Get cache + * + * Check the Appwrite in-memory cache servers are up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getCache(): Promise; + /** + * Get the SSL certificate for a domain + * + * Get the SSL certificate for a domain + * + * @param {string} domain + * @throws {AppwriteException} + * @returns {Promise} + */ + getCertificate(domain?: string): Promise; + /** + * Get DB + * + * Check the Appwrite database servers are up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getDB(): Promise; + /** + * Get pubsub + * + * Check the Appwrite pub-sub servers are up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getPubSub(): Promise; + /** + * Get queue + * + * Check the Appwrite queue messaging servers are up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueue(): Promise; + /** + * Get builds queue + * + * Get the number of builds that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueBuilds(threshold?: number): Promise; + /** + * Get certificates queue + * + * Get the number of certificates that are waiting to be issued against [Letsencrypt](https://letsencrypt.org/) in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueCertificates(threshold?: number): Promise; + /** + * Get databases queue + * + * Get the number of database changes that are waiting to be processed in the Appwrite internal queue server. + * + * @param {string} name + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueDatabases(name?: string, threshold?: number): Promise; + /** + * Get deletes queue + * + * Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueDeletes(threshold?: number): Promise; + /** + * Get number of failed queue jobs + * + * Returns the amount of failed jobs in a given queue. + + * + * @param {Name} name + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getFailedJobs(name: Name, threshold?: number): Promise; + /** + * Get functions queue + * + * Get the number of function executions that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueFunctions(threshold?: number): Promise; + /** + * Get logs queue + * + * Get the number of logs that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueLogs(threshold?: number): Promise; + /** + * Get mails queue + * + * Get the number of mails that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueMails(threshold?: number): Promise; + /** + * Get messaging queue + * + * Get the number of messages that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueMessaging(threshold?: number): Promise; + /** + * Get migrations queue + * + * Get the number of migrations that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueMigrations(threshold?: number): Promise; + /** + * Get usage queue + * + * Get the number of metrics that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueUsage(threshold?: number): Promise; + /** + * Get usage dump queue + * + * Get the number of projects containing metrics that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueUsageDump(threshold?: number): Promise; + /** + * Get webhooks queue + * + * Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueWebhooks(threshold?: number): Promise; + /** + * Get storage + * + * Check the Appwrite storage device is up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getStorage(): Promise; + /** + * Get local storage + * + * Check the Appwrite local storage device is up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getStorageLocal(): Promise; + /** + * Get time + * + * Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https://en.wikipedia.org/wiki/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getTime(): Promise; +} + +export { Health }; diff --git a/node_modules/node-appwrite/dist/services/health.d.ts b/node_modules/node-appwrite/dist/services/health.d.ts new file mode 100644 index 0000000..2cfb6fe --- /dev/null +++ b/node_modules/node-appwrite/dist/services/health.d.ts @@ -0,0 +1,235 @@ +import { Client } from '../client.js'; +import { Models } from '../models.js'; +import { Name } from '../enums/name.js'; +import '../query.js'; + +declare class Health { + client: Client; + constructor(client: Client); + /** + * Get HTTP + * + * Check the Appwrite HTTP server is up and responsive. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + get(): Promise; + /** + * Get antivirus + * + * Check the Appwrite Antivirus server is up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getAntivirus(): Promise; + /** + * Get cache + * + * Check the Appwrite in-memory cache servers are up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getCache(): Promise; + /** + * Get the SSL certificate for a domain + * + * Get the SSL certificate for a domain + * + * @param {string} domain + * @throws {AppwriteException} + * @returns {Promise} + */ + getCertificate(domain?: string): Promise; + /** + * Get DB + * + * Check the Appwrite database servers are up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getDB(): Promise; + /** + * Get pubsub + * + * Check the Appwrite pub-sub servers are up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getPubSub(): Promise; + /** + * Get queue + * + * Check the Appwrite queue messaging servers are up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueue(): Promise; + /** + * Get builds queue + * + * Get the number of builds that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueBuilds(threshold?: number): Promise; + /** + * Get certificates queue + * + * Get the number of certificates that are waiting to be issued against [Letsencrypt](https://letsencrypt.org/) in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueCertificates(threshold?: number): Promise; + /** + * Get databases queue + * + * Get the number of database changes that are waiting to be processed in the Appwrite internal queue server. + * + * @param {string} name + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueDatabases(name?: string, threshold?: number): Promise; + /** + * Get deletes queue + * + * Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueDeletes(threshold?: number): Promise; + /** + * Get number of failed queue jobs + * + * Returns the amount of failed jobs in a given queue. + + * + * @param {Name} name + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getFailedJobs(name: Name, threshold?: number): Promise; + /** + * Get functions queue + * + * Get the number of function executions that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueFunctions(threshold?: number): Promise; + /** + * Get logs queue + * + * Get the number of logs that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueLogs(threshold?: number): Promise; + /** + * Get mails queue + * + * Get the number of mails that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueMails(threshold?: number): Promise; + /** + * Get messaging queue + * + * Get the number of messages that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueMessaging(threshold?: number): Promise; + /** + * Get migrations queue + * + * Get the number of migrations that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueMigrations(threshold?: number): Promise; + /** + * Get usage queue + * + * Get the number of metrics that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueUsage(threshold?: number): Promise; + /** + * Get usage dump queue + * + * Get the number of projects containing metrics that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueUsageDump(threshold?: number): Promise; + /** + * Get webhooks queue + * + * Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + getQueueWebhooks(threshold?: number): Promise; + /** + * Get storage + * + * Check the Appwrite storage device is up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getStorage(): Promise; + /** + * Get local storage + * + * Check the Appwrite local storage device is up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getStorageLocal(): Promise; + /** + * Get time + * + * Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https://en.wikipedia.org/wiki/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + getTime(): Promise; +} + +export { Health }; diff --git a/node_modules/node-appwrite/dist/services/health.js b/node_modules/node-appwrite/dist/services/health.js new file mode 100644 index 0000000..383270a --- /dev/null +++ b/node_modules/node-appwrite/dist/services/health.js @@ -0,0 +1,584 @@ +'use strict'; + +var client = require('../client'); + +class Health { + constructor(client) { + this.client = client; + } + /** + * Get HTTP + * + * Check the Appwrite HTTP server is up and responsive. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async get() { + const apiPath = "/health"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get antivirus + * + * Check the Appwrite Antivirus server is up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getAntivirus() { + const apiPath = "/health/anti-virus"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get cache + * + * Check the Appwrite in-memory cache servers are up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getCache() { + const apiPath = "/health/cache"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get the SSL certificate for a domain + * + * Get the SSL certificate for a domain + * + * @param {string} domain + * @throws {AppwriteException} + * @returns {Promise} + */ + async getCertificate(domain) { + const apiPath = "/health/certificate"; + const payload = {}; + if (typeof domain !== "undefined") { + payload["domain"] = domain; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get DB + * + * Check the Appwrite database servers are up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getDB() { + const apiPath = "/health/db"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get pubsub + * + * Check the Appwrite pub-sub servers are up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getPubSub() { + const apiPath = "/health/pubsub"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get queue + * + * Check the Appwrite queue messaging servers are up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueue() { + const apiPath = "/health/queue"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get builds queue + * + * Get the number of builds that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueBuilds(threshold) { + const apiPath = "/health/queue/builds"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get certificates queue + * + * Get the number of certificates that are waiting to be issued against [Letsencrypt](https://letsencrypt.org/) in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueCertificates(threshold) { + const apiPath = "/health/queue/certificates"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get databases queue + * + * Get the number of database changes that are waiting to be processed in the Appwrite internal queue server. + * + * @param {string} name + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueDatabases(name, threshold) { + const apiPath = "/health/queue/databases"; + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get deletes queue + * + * Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueDeletes(threshold) { + const apiPath = "/health/queue/deletes"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get number of failed queue jobs + * + * Returns the amount of failed jobs in a given queue. + + * + * @param {Name} name + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getFailedJobs(name, threshold) { + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/health/queue/failed/{name}".replace("{name}", name); + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get functions queue + * + * Get the number of function executions that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueFunctions(threshold) { + const apiPath = "/health/queue/functions"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get logs queue + * + * Get the number of logs that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueLogs(threshold) { + const apiPath = "/health/queue/logs"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get mails queue + * + * Get the number of mails that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueMails(threshold) { + const apiPath = "/health/queue/mails"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get messaging queue + * + * Get the number of messages that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueMessaging(threshold) { + const apiPath = "/health/queue/messaging"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get migrations queue + * + * Get the number of migrations that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueMigrations(threshold) { + const apiPath = "/health/queue/migrations"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get usage queue + * + * Get the number of metrics that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueUsage(threshold) { + const apiPath = "/health/queue/usage"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get usage dump queue + * + * Get the number of projects containing metrics that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueUsageDump(threshold) { + const apiPath = "/health/queue/usage-dump"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get webhooks queue + * + * Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueWebhooks(threshold) { + const apiPath = "/health/queue/webhooks"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get storage + * + * Check the Appwrite storage device is up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getStorage() { + const apiPath = "/health/storage"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get local storage + * + * Check the Appwrite local storage device is up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getStorageLocal() { + const apiPath = "/health/storage/local"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get time + * + * Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https://en.wikipedia.org/wiki/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getTime() { + const apiPath = "/health/time"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } +} + +exports.Health = Health; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=health.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/health.js.map b/node_modules/node-appwrite/dist/services/health.js.map new file mode 100644 index 0000000..9320be4 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/health.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/health.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { Name } from '../enums/name';\n\nexport class Health {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * Get HTTP\n *\n * Check the Appwrite HTTP server is up and responsive.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async get(): Promise {\n const apiPath = '/health';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get antivirus\n *\n * Check the Appwrite Antivirus server is up and connection is successful.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getAntivirus(): Promise {\n const apiPath = '/health/anti-virus';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get cache\n *\n * Check the Appwrite in-memory cache servers are up and connection is successful.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getCache(): Promise {\n const apiPath = '/health/cache';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get the SSL certificate for a domain\n *\n * Get the SSL certificate for a domain\n *\n * @param {string} domain\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getCertificate(domain?: string): Promise {\n const apiPath = '/health/certificate';\n const payload: Payload = {};\n if (typeof domain !== 'undefined') {\n payload['domain'] = domain;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get DB\n *\n * Check the Appwrite database servers are up and connection is successful.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getDB(): Promise {\n const apiPath = '/health/db';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get pubsub\n *\n * Check the Appwrite pub-sub servers are up and connection is successful.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getPubSub(): Promise {\n const apiPath = '/health/pubsub';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get queue\n *\n * Check the Appwrite queue messaging servers are up and connection is successful.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueue(): Promise {\n const apiPath = '/health/queue';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get builds queue\n *\n * Get the number of builds that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueBuilds(threshold?: number): Promise {\n const apiPath = '/health/queue/builds';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get certificates queue\n *\n * Get the number of certificates that are waiting to be issued against [Letsencrypt](https://letsencrypt.org/) in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueCertificates(threshold?: number): Promise {\n const apiPath = '/health/queue/certificates';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get databases queue\n *\n * Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {string} name\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueDatabases(name?: string, threshold?: number): Promise {\n const apiPath = '/health/queue/databases';\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get deletes queue\n *\n * Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueDeletes(threshold?: number): Promise {\n const apiPath = '/health/queue/deletes';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get number of failed queue jobs\n *\n * Returns the amount of failed jobs in a given queue.\n\n *\n * @param {Name} name\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getFailedJobs(name: Name, threshold?: number): Promise {\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/health/queue/failed/{name}'.replace('{name}', name);\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get functions queue\n *\n * Get the number of function executions that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueFunctions(threshold?: number): Promise {\n const apiPath = '/health/queue/functions';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get logs queue\n *\n * Get the number of logs that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueLogs(threshold?: number): Promise {\n const apiPath = '/health/queue/logs';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get mails queue\n *\n * Get the number of mails that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueMails(threshold?: number): Promise {\n const apiPath = '/health/queue/mails';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get messaging queue\n *\n * Get the number of messages that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueMessaging(threshold?: number): Promise {\n const apiPath = '/health/queue/messaging';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get migrations queue\n *\n * Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueMigrations(threshold?: number): Promise {\n const apiPath = '/health/queue/migrations';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get usage queue\n *\n * Get the number of metrics that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueUsage(threshold?: number): Promise {\n const apiPath = '/health/queue/usage';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get usage dump queue\n *\n * Get the number of projects containing metrics that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueUsageDump(threshold?: number): Promise {\n const apiPath = '/health/queue/usage-dump';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get webhooks queue\n *\n * Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueWebhooks(threshold?: number): Promise {\n const apiPath = '/health/queue/webhooks';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get storage\n *\n * Check the Appwrite storage device is up and connection is successful.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getStorage(): Promise {\n const apiPath = '/health/storage';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get local storage\n *\n * Check the Appwrite local storage device is up and connection is successful.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getStorageLocal(): Promise {\n const apiPath = '/health/storage/local';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get time\n *\n * Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https://en.wikipedia.org/wiki/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getTime(): Promise {\n const apiPath = '/health/time';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/health.mjs b/node_modules/node-appwrite/dist/services/health.mjs new file mode 100644 index 0000000..9303528 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/health.mjs @@ -0,0 +1,583 @@ +import { AppwriteException } from '../client.mjs'; + +// src/services/health.ts +var Health = class { + constructor(client) { + this.client = client; + } + /** + * Get HTTP + * + * Check the Appwrite HTTP server is up and responsive. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async get() { + const apiPath = "/health"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get antivirus + * + * Check the Appwrite Antivirus server is up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getAntivirus() { + const apiPath = "/health/anti-virus"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get cache + * + * Check the Appwrite in-memory cache servers are up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getCache() { + const apiPath = "/health/cache"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get the SSL certificate for a domain + * + * Get the SSL certificate for a domain + * + * @param {string} domain + * @throws {AppwriteException} + * @returns {Promise} + */ + async getCertificate(domain) { + const apiPath = "/health/certificate"; + const payload = {}; + if (typeof domain !== "undefined") { + payload["domain"] = domain; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get DB + * + * Check the Appwrite database servers are up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getDB() { + const apiPath = "/health/db"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get pubsub + * + * Check the Appwrite pub-sub servers are up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getPubSub() { + const apiPath = "/health/pubsub"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get queue + * + * Check the Appwrite queue messaging servers are up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueue() { + const apiPath = "/health/queue"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get builds queue + * + * Get the number of builds that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueBuilds(threshold) { + const apiPath = "/health/queue/builds"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get certificates queue + * + * Get the number of certificates that are waiting to be issued against [Letsencrypt](https://letsencrypt.org/) in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueCertificates(threshold) { + const apiPath = "/health/queue/certificates"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get databases queue + * + * Get the number of database changes that are waiting to be processed in the Appwrite internal queue server. + * + * @param {string} name + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueDatabases(name, threshold) { + const apiPath = "/health/queue/databases"; + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get deletes queue + * + * Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueDeletes(threshold) { + const apiPath = "/health/queue/deletes"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get number of failed queue jobs + * + * Returns the amount of failed jobs in a given queue. + + * + * @param {Name} name + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getFailedJobs(name, threshold) { + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/health/queue/failed/{name}".replace("{name}", name); + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get functions queue + * + * Get the number of function executions that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueFunctions(threshold) { + const apiPath = "/health/queue/functions"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get logs queue + * + * Get the number of logs that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueLogs(threshold) { + const apiPath = "/health/queue/logs"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get mails queue + * + * Get the number of mails that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueMails(threshold) { + const apiPath = "/health/queue/mails"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get messaging queue + * + * Get the number of messages that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueMessaging(threshold) { + const apiPath = "/health/queue/messaging"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get migrations queue + * + * Get the number of migrations that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueMigrations(threshold) { + const apiPath = "/health/queue/migrations"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get usage queue + * + * Get the number of metrics that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueUsage(threshold) { + const apiPath = "/health/queue/usage"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get usage dump queue + * + * Get the number of projects containing metrics that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueUsageDump(threshold) { + const apiPath = "/health/queue/usage-dump"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get webhooks queue + * + * Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server. + * + * @param {number} threshold + * @throws {AppwriteException} + * @returns {Promise} + */ + async getQueueWebhooks(threshold) { + const apiPath = "/health/queue/webhooks"; + const payload = {}; + if (typeof threshold !== "undefined") { + payload["threshold"] = threshold; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get storage + * + * Check the Appwrite storage device is up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getStorage() { + const apiPath = "/health/storage"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get local storage + * + * Check the Appwrite local storage device is up and connection is successful. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getStorageLocal() { + const apiPath = "/health/storage/local"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get time + * + * Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https://en.wikipedia.org/wiki/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async getTime() { + const apiPath = "/health/time"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } +}; + +export { Health }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=health.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/health.mjs.map b/node_modules/node-appwrite/dist/services/health.mjs.map new file mode 100644 index 0000000..6aedf73 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/health.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/health.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { Name } from '../enums/name';\n\nexport class Health {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * Get HTTP\n *\n * Check the Appwrite HTTP server is up and responsive.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async get(): Promise {\n const apiPath = '/health';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get antivirus\n *\n * Check the Appwrite Antivirus server is up and connection is successful.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getAntivirus(): Promise {\n const apiPath = '/health/anti-virus';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get cache\n *\n * Check the Appwrite in-memory cache servers are up and connection is successful.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getCache(): Promise {\n const apiPath = '/health/cache';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get the SSL certificate for a domain\n *\n * Get the SSL certificate for a domain\n *\n * @param {string} domain\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getCertificate(domain?: string): Promise {\n const apiPath = '/health/certificate';\n const payload: Payload = {};\n if (typeof domain !== 'undefined') {\n payload['domain'] = domain;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get DB\n *\n * Check the Appwrite database servers are up and connection is successful.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getDB(): Promise {\n const apiPath = '/health/db';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get pubsub\n *\n * Check the Appwrite pub-sub servers are up and connection is successful.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getPubSub(): Promise {\n const apiPath = '/health/pubsub';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get queue\n *\n * Check the Appwrite queue messaging servers are up and connection is successful.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueue(): Promise {\n const apiPath = '/health/queue';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get builds queue\n *\n * Get the number of builds that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueBuilds(threshold?: number): Promise {\n const apiPath = '/health/queue/builds';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get certificates queue\n *\n * Get the number of certificates that are waiting to be issued against [Letsencrypt](https://letsencrypt.org/) in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueCertificates(threshold?: number): Promise {\n const apiPath = '/health/queue/certificates';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get databases queue\n *\n * Get the number of database changes that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {string} name\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueDatabases(name?: string, threshold?: number): Promise {\n const apiPath = '/health/queue/databases';\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get deletes queue\n *\n * Get the number of background destructive changes that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueDeletes(threshold?: number): Promise {\n const apiPath = '/health/queue/deletes';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get number of failed queue jobs\n *\n * Returns the amount of failed jobs in a given queue.\n\n *\n * @param {Name} name\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getFailedJobs(name: Name, threshold?: number): Promise {\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/health/queue/failed/{name}'.replace('{name}', name);\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get functions queue\n *\n * Get the number of function executions that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueFunctions(threshold?: number): Promise {\n const apiPath = '/health/queue/functions';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get logs queue\n *\n * Get the number of logs that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueLogs(threshold?: number): Promise {\n const apiPath = '/health/queue/logs';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get mails queue\n *\n * Get the number of mails that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueMails(threshold?: number): Promise {\n const apiPath = '/health/queue/mails';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get messaging queue\n *\n * Get the number of messages that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueMessaging(threshold?: number): Promise {\n const apiPath = '/health/queue/messaging';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get migrations queue\n *\n * Get the number of migrations that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueMigrations(threshold?: number): Promise {\n const apiPath = '/health/queue/migrations';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get usage queue\n *\n * Get the number of metrics that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueUsage(threshold?: number): Promise {\n const apiPath = '/health/queue/usage';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get usage dump queue\n *\n * Get the number of projects containing metrics that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueUsageDump(threshold?: number): Promise {\n const apiPath = '/health/queue/usage-dump';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get webhooks queue\n *\n * Get the number of webhooks that are waiting to be processed in the Appwrite internal queue server.\n *\n * @param {number} threshold\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getQueueWebhooks(threshold?: number): Promise {\n const apiPath = '/health/queue/webhooks';\n const payload: Payload = {};\n if (typeof threshold !== 'undefined') {\n payload['threshold'] = threshold;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get storage\n *\n * Check the Appwrite storage device is up and connection is successful.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getStorage(): Promise {\n const apiPath = '/health/storage';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get local storage\n *\n * Check the Appwrite local storage device is up and connection is successful.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getStorageLocal(): Promise {\n const apiPath = '/health/storage/local';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get time\n *\n * Check the Appwrite server time is synced with Google remote NTP server. We use this technology to smoothly handle leap seconds with no disruptive events. The [Network Time Protocol](https://en.wikipedia.org/wiki/Network_Time_Protocol) (NTP) is used by hundreds of millions of computers and devices to synchronize their clocks over the Internet. If your computer sets its own clock, it likely uses NTP.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getTime(): Promise {\n const apiPath = '/health/time';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/locale.d.mts b/node_modules/node-appwrite/dist/services/locale.d.mts new file mode 100644 index 0000000..2786f75 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/locale.d.mts @@ -0,0 +1,84 @@ +import { Client } from '../client.mjs'; +import { Models } from '../models.mjs'; +import '../query.mjs'; + +declare class Locale { + client: Client; + constructor(client: Client); + /** + * Get user locale + * + * Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language. + +([IP Geolocation by DB-IP](https://db-ip.com)) + * + * @throws {AppwriteException} + * @returns {Promise} + */ + get(): Promise; + /** + * List Locale Codes + * + * List of all locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes). + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listCodes(): Promise; + /** + * List continents + * + * List of all continents. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listContinents(): Promise; + /** + * List countries + * + * List of all countries. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listCountries(): Promise; + /** + * List EU countries + * + * List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listCountriesEU(): Promise; + /** + * List countries phone codes + * + * List of all countries phone codes. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listCountriesPhones(): Promise; + /** + * List currencies + * + * List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listCurrencies(): Promise; + /** + * List languages + * + * List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listLanguages(): Promise; +} + +export { Locale }; diff --git a/node_modules/node-appwrite/dist/services/locale.d.ts b/node_modules/node-appwrite/dist/services/locale.d.ts new file mode 100644 index 0000000..74dc075 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/locale.d.ts @@ -0,0 +1,84 @@ +import { Client } from '../client.js'; +import { Models } from '../models.js'; +import '../query.js'; + +declare class Locale { + client: Client; + constructor(client: Client); + /** + * Get user locale + * + * Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language. + +([IP Geolocation by DB-IP](https://db-ip.com)) + * + * @throws {AppwriteException} + * @returns {Promise} + */ + get(): Promise; + /** + * List Locale Codes + * + * List of all locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes). + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listCodes(): Promise; + /** + * List continents + * + * List of all continents. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listContinents(): Promise; + /** + * List countries + * + * List of all countries. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listCountries(): Promise; + /** + * List EU countries + * + * List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listCountriesEU(): Promise; + /** + * List countries phone codes + * + * List of all countries phone codes. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listCountriesPhones(): Promise; + /** + * List currencies + * + * List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listCurrencies(): Promise; + /** + * List languages + * + * List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + listLanguages(): Promise; +} + +export { Locale }; diff --git a/node_modules/node-appwrite/dist/services/locale.js b/node_modules/node-appwrite/dist/services/locale.js new file mode 100644 index 0000000..092cb8d --- /dev/null +++ b/node_modules/node-appwrite/dist/services/locale.js @@ -0,0 +1,189 @@ +'use strict'; + +class Locale { + constructor(client) { + this.client = client; + } + /** + * Get user locale + * + * Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language. + + ([IP Geolocation by DB-IP](https://db-ip.com)) + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async get() { + const apiPath = "/locale"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List Locale Codes + * + * List of all locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes). + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listCodes() { + const apiPath = "/locale/codes"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List continents + * + * List of all continents. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listContinents() { + const apiPath = "/locale/continents"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List countries + * + * List of all countries. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listCountries() { + const apiPath = "/locale/countries"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List EU countries + * + * List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listCountriesEU() { + const apiPath = "/locale/countries/eu"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List countries phone codes + * + * List of all countries phone codes. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listCountriesPhones() { + const apiPath = "/locale/countries/phones"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List currencies + * + * List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listCurrencies() { + const apiPath = "/locale/currencies"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List languages + * + * List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listLanguages() { + const apiPath = "/locale/languages"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } +} + +exports.Locale = Locale; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=locale.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/locale.js.map b/node_modules/node-appwrite/dist/services/locale.js.map new file mode 100644 index 0000000..d0eb2fe --- /dev/null +++ b/node_modules/node-appwrite/dist/services/locale.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/locale.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\n\nexport class Locale {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * Get user locale\n *\n * Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https://db-ip.com))\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async get(): Promise {\n const apiPath = '/locale';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List Locale Codes\n *\n * List of all locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listCodes(): Promise {\n const apiPath = '/locale/codes';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List continents\n *\n * List of all continents. You can use the locale header to get the data in a supported language.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listContinents(): Promise {\n const apiPath = '/locale/continents';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List countries\n *\n * List of all countries. You can use the locale header to get the data in a supported language.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listCountries(): Promise {\n const apiPath = '/locale/countries';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List EU countries\n *\n * List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listCountriesEU(): Promise {\n const apiPath = '/locale/countries/eu';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List countries phone codes\n *\n * List of all countries phone codes. You can use the locale header to get the data in a supported language.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listCountriesPhones(): Promise {\n const apiPath = '/locale/countries/phones';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List currencies\n *\n * List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listCurrencies(): Promise {\n const apiPath = '/locale/currencies';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List languages\n *\n * List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listLanguages(): Promise {\n const apiPath = '/locale/languages';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/locale.mjs b/node_modules/node-appwrite/dist/services/locale.mjs new file mode 100644 index 0000000..9612b10 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/locale.mjs @@ -0,0 +1,188 @@ +// src/services/locale.ts +var Locale = class { + constructor(client) { + this.client = client; + } + /** + * Get user locale + * + * Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language. + + ([IP Geolocation by DB-IP](https://db-ip.com)) + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async get() { + const apiPath = "/locale"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List Locale Codes + * + * List of all locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes). + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listCodes() { + const apiPath = "/locale/codes"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List continents + * + * List of all continents. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listContinents() { + const apiPath = "/locale/continents"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List countries + * + * List of all countries. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listCountries() { + const apiPath = "/locale/countries"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List EU countries + * + * List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listCountriesEU() { + const apiPath = "/locale/countries/eu"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List countries phone codes + * + * List of all countries phone codes. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listCountriesPhones() { + const apiPath = "/locale/countries/phones"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List currencies + * + * List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listCurrencies() { + const apiPath = "/locale/currencies"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List languages + * + * List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language. + * + * @throws {AppwriteException} + * @returns {Promise} + */ + async listLanguages() { + const apiPath = "/locale/languages"; + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } +}; + +export { Locale }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=locale.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/locale.mjs.map b/node_modules/node-appwrite/dist/services/locale.mjs.map new file mode 100644 index 0000000..c83c1c4 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/locale.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/locale.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\n\nexport class Locale {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * Get user locale\n *\n * Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https://db-ip.com))\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async get(): Promise {\n const apiPath = '/locale';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List Locale Codes\n *\n * List of all locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listCodes(): Promise {\n const apiPath = '/locale/codes';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List continents\n *\n * List of all continents. You can use the locale header to get the data in a supported language.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listContinents(): Promise {\n const apiPath = '/locale/continents';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List countries\n *\n * List of all countries. You can use the locale header to get the data in a supported language.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listCountries(): Promise {\n const apiPath = '/locale/countries';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List EU countries\n *\n * List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listCountriesEU(): Promise {\n const apiPath = '/locale/countries/eu';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List countries phone codes\n *\n * List of all countries phone codes. You can use the locale header to get the data in a supported language.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listCountriesPhones(): Promise {\n const apiPath = '/locale/countries/phones';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List currencies\n *\n * List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listCurrencies(): Promise {\n const apiPath = '/locale/currencies';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List languages\n *\n * List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.\n *\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listLanguages(): Promise {\n const apiPath = '/locale/languages';\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/messaging.d.mts b/node_modules/node-appwrite/dist/services/messaging.d.mts new file mode 100644 index 0000000..0acad83 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/messaging.d.mts @@ -0,0 +1,689 @@ +import { Client } from '../client.mjs'; +import { Models } from '../models.mjs'; +import { SmtpEncryption } from '../enums/smtp-encryption.mjs'; +import '../query.mjs'; + +declare class Messaging { + client: Client; + constructor(client: Client); + /** + * List messages + * + * Get a list of all messages from the current Appwrite project. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listMessages(queries?: string[], search?: string): Promise; + /** + * Create email + * + * Create a new email message. + * + * @param {string} messageId + * @param {string} subject + * @param {string} content + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {string[]} cc + * @param {string[]} bcc + * @param {string[]} attachments + * @param {boolean} draft + * @param {boolean} html + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + createEmail(messageId: string, subject: string, content: string, topics?: string[], users?: string[], targets?: string[], cc?: string[], bcc?: string[], attachments?: string[], draft?: boolean, html?: boolean, scheduledAt?: string): Promise; + /** + * Update email + * + * Update an email message by its unique ID. + + * + * @param {string} messageId + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {string} subject + * @param {string} content + * @param {boolean} draft + * @param {boolean} html + * @param {string[]} cc + * @param {string[]} bcc + * @param {string} scheduledAt + * @param {string[]} attachments + * @throws {AppwriteException} + * @returns {Promise} + */ + updateEmail(messageId: string, topics?: string[], users?: string[], targets?: string[], subject?: string, content?: string, draft?: boolean, html?: boolean, cc?: string[], bcc?: string[], scheduledAt?: string, attachments?: string[]): Promise; + /** + * Create push notification + * + * Create a new push notification. + * + * @param {string} messageId + * @param {string} title + * @param {string} body + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {object} data + * @param {string} action + * @param {string} image + * @param {string} icon + * @param {string} sound + * @param {string} color + * @param {string} tag + * @param {string} badge + * @param {boolean} draft + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + createPush(messageId: string, title: string, body: string, topics?: string[], users?: string[], targets?: string[], data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: string, draft?: boolean, scheduledAt?: string): Promise; + /** + * Update push notification + * + * Update a push notification by its unique ID. + + * + * @param {string} messageId + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {string} title + * @param {string} body + * @param {object} data + * @param {string} action + * @param {string} image + * @param {string} icon + * @param {string} sound + * @param {string} color + * @param {string} tag + * @param {number} badge + * @param {boolean} draft + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + updatePush(messageId: string, topics?: string[], users?: string[], targets?: string[], title?: string, body?: string, data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string): Promise; + /** + * Create SMS + * + * Create a new SMS message. + * + * @param {string} messageId + * @param {string} content + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {boolean} draft + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + createSms(messageId: string, content: string, topics?: string[], users?: string[], targets?: string[], draft?: boolean, scheduledAt?: string): Promise; + /** + * Update SMS + * + * Update an email message by its unique ID. + + * + * @param {string} messageId + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {string} content + * @param {boolean} draft + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + updateSms(messageId: string, topics?: string[], users?: string[], targets?: string[], content?: string, draft?: boolean, scheduledAt?: string): Promise; + /** + * Get message + * + * Get a message by its unique ID. + + * + * @param {string} messageId + * @throws {AppwriteException} + * @returns {Promise} + */ + getMessage(messageId: string): Promise; + /** + * Delete message + * + * Delete a message. If the message is not a draft or scheduled, but has been sent, this will not recall the message. + * + * @param {string} messageId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + delete(messageId: string): Promise<{}>; + /** + * List message logs + * + * Get the message activity logs listed by its unique ID. + * + * @param {string} messageId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listMessageLogs(messageId: string, queries?: string[]): Promise; + /** + * List message targets + * + * Get a list of the targets associated with a message. + * + * @param {string} messageId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listTargets(messageId: string, queries?: string[]): Promise; + /** + * List providers + * + * Get a list of all providers from the current Appwrite project. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listProviders(queries?: string[], search?: string): Promise; + /** + * Create APNS provider + * + * Create a new Apple Push Notification service provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} authKey + * @param {string} authKeyId + * @param {string} teamId + * @param {string} bundleId + * @param {boolean} sandbox + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createApnsProvider(providerId: string, name: string, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean, enabled?: boolean): Promise; + /** + * Update APNS provider + * + * Update a Apple Push Notification service provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} authKey + * @param {string} authKeyId + * @param {string} teamId + * @param {string} bundleId + * @param {boolean} sandbox + * @throws {AppwriteException} + * @returns {Promise} + */ + updateApnsProvider(providerId: string, name?: string, enabled?: boolean, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean): Promise; + /** + * Create FCM provider + * + * Create a new Firebase Cloud Messaging provider. + * + * @param {string} providerId + * @param {string} name + * @param {object} serviceAccountJSON + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createFcmProvider(providerId: string, name: string, serviceAccountJSON?: object, enabled?: boolean): Promise; + /** + * Update FCM provider + * + * Update a Firebase Cloud Messaging provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {object} serviceAccountJSON + * @throws {AppwriteException} + * @returns {Promise} + */ + updateFcmProvider(providerId: string, name?: string, enabled?: boolean, serviceAccountJSON?: object): Promise; + /** + * Create Mailgun provider + * + * Create a new Mailgun provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} apiKey + * @param {string} domain + * @param {boolean} isEuRegion + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createMailgunProvider(providerId: string, name: string, apiKey?: string, domain?: string, isEuRegion?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise; + /** + * Update Mailgun provider + * + * Update a Mailgun provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {string} apiKey + * @param {string} domain + * @param {boolean} isEuRegion + * @param {boolean} enabled + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @throws {AppwriteException} + * @returns {Promise} + */ + updateMailgunProvider(providerId: string, name?: string, apiKey?: string, domain?: string, isEuRegion?: boolean, enabled?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string): Promise; + /** + * Create Msg91 provider + * + * Create a new MSG91 provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} templateId + * @param {string} senderId + * @param {string} authKey + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createMsg91Provider(providerId: string, name: string, templateId?: string, senderId?: string, authKey?: string, enabled?: boolean): Promise; + /** + * Update Msg91 provider + * + * Update a MSG91 provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} templateId + * @param {string} senderId + * @param {string} authKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateMsg91Provider(providerId: string, name?: string, enabled?: boolean, templateId?: string, senderId?: string, authKey?: string): Promise; + /** + * Create Sendgrid provider + * + * Create a new Sendgrid provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} apiKey + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createSendgridProvider(providerId: string, name: string, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise; + /** + * Update Sendgrid provider + * + * Update a Sendgrid provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} apiKey + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @throws {AppwriteException} + * @returns {Promise} + */ + updateSendgridProvider(providerId: string, name?: string, enabled?: boolean, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string): Promise; + /** + * Create SMTP provider + * + * Create a new SMTP provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} host + * @param {number} port + * @param {string} username + * @param {string} password + * @param {SmtpEncryption} encryption + * @param {boolean} autoTLS + * @param {string} mailer + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createSmtpProvider(providerId: string, name: string, host: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise; + /** + * Update SMTP provider + * + * Update a SMTP provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {string} host + * @param {number} port + * @param {string} username + * @param {string} password + * @param {SmtpEncryption} encryption + * @param {boolean} autoTLS + * @param {string} mailer + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + updateSmtpProvider(providerId: string, name?: string, host?: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise; + /** + * Create Telesign provider + * + * Create a new Telesign provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} from + * @param {string} customerId + * @param {string} apiKey + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createTelesignProvider(providerId: string, name: string, from?: string, customerId?: string, apiKey?: string, enabled?: boolean): Promise; + /** + * Update Telesign provider + * + * Update a Telesign provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} customerId + * @param {string} apiKey + * @param {string} from + * @throws {AppwriteException} + * @returns {Promise} + */ + updateTelesignProvider(providerId: string, name?: string, enabled?: boolean, customerId?: string, apiKey?: string, from?: string): Promise; + /** + * Create Textmagic provider + * + * Create a new Textmagic provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} from + * @param {string} username + * @param {string} apiKey + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createTextmagicProvider(providerId: string, name: string, from?: string, username?: string, apiKey?: string, enabled?: boolean): Promise; + /** + * Update Textmagic provider + * + * Update a Textmagic provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} username + * @param {string} apiKey + * @param {string} from + * @throws {AppwriteException} + * @returns {Promise} + */ + updateTextmagicProvider(providerId: string, name?: string, enabled?: boolean, username?: string, apiKey?: string, from?: string): Promise; + /** + * Create Twilio provider + * + * Create a new Twilio provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} from + * @param {string} accountSid + * @param {string} authToken + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createTwilioProvider(providerId: string, name: string, from?: string, accountSid?: string, authToken?: string, enabled?: boolean): Promise; + /** + * Update Twilio provider + * + * Update a Twilio provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} accountSid + * @param {string} authToken + * @param {string} from + * @throws {AppwriteException} + * @returns {Promise} + */ + updateTwilioProvider(providerId: string, name?: string, enabled?: boolean, accountSid?: string, authToken?: string, from?: string): Promise; + /** + * Create Vonage provider + * + * Create a new Vonage provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} from + * @param {string} apiKey + * @param {string} apiSecret + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createVonageProvider(providerId: string, name: string, from?: string, apiKey?: string, apiSecret?: string, enabled?: boolean): Promise; + /** + * Update Vonage provider + * + * Update a Vonage provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} apiKey + * @param {string} apiSecret + * @param {string} from + * @throws {AppwriteException} + * @returns {Promise} + */ + updateVonageProvider(providerId: string, name?: string, enabled?: boolean, apiKey?: string, apiSecret?: string, from?: string): Promise; + /** + * Get provider + * + * Get a provider by its unique ID. + + * + * @param {string} providerId + * @throws {AppwriteException} + * @returns {Promise} + */ + getProvider(providerId: string): Promise; + /** + * Delete provider + * + * Delete a provider by its unique ID. + * + * @param {string} providerId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteProvider(providerId: string): Promise<{}>; + /** + * List provider logs + * + * Get the provider activity logs listed by its unique ID. + * + * @param {string} providerId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listProviderLogs(providerId: string, queries?: string[]): Promise; + /** + * List subscriber logs + * + * Get the subscriber activity logs listed by its unique ID. + * + * @param {string} subscriberId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listSubscriberLogs(subscriberId: string, queries?: string[]): Promise; + /** + * List topics + * + * Get a list of all topics from the current Appwrite project. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listTopics(queries?: string[], search?: string): Promise; + /** + * Create topic + * + * Create a new topic. + * + * @param {string} topicId + * @param {string} name + * @param {string[]} subscribe + * @throws {AppwriteException} + * @returns {Promise} + */ + createTopic(topicId: string, name: string, subscribe?: string[]): Promise; + /** + * Get topic + * + * Get a topic by its unique ID. + + * + * @param {string} topicId + * @throws {AppwriteException} + * @returns {Promise} + */ + getTopic(topicId: string): Promise; + /** + * Update topic + * + * Update a topic by its unique ID. + + * + * @param {string} topicId + * @param {string} name + * @param {string[]} subscribe + * @throws {AppwriteException} + * @returns {Promise} + */ + updateTopic(topicId: string, name?: string, subscribe?: string[]): Promise; + /** + * Delete topic + * + * Delete a topic by its unique ID. + * + * @param {string} topicId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteTopic(topicId: string): Promise<{}>; + /** + * List topic logs + * + * Get the topic activity logs listed by its unique ID. + * + * @param {string} topicId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listTopicLogs(topicId: string, queries?: string[]): Promise; + /** + * List subscribers + * + * Get a list of all subscribers from the current Appwrite project. + * + * @param {string} topicId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listSubscribers(topicId: string, queries?: string[], search?: string): Promise; + /** + * Create subscriber + * + * Create a new subscriber. + * + * @param {string} topicId + * @param {string} subscriberId + * @param {string} targetId + * @throws {AppwriteException} + * @returns {Promise} + */ + createSubscriber(topicId: string, subscriberId: string, targetId: string): Promise; + /** + * Get subscriber + * + * Get a subscriber by its unique ID. + + * + * @param {string} topicId + * @param {string} subscriberId + * @throws {AppwriteException} + * @returns {Promise} + */ + getSubscriber(topicId: string, subscriberId: string): Promise; + /** + * Delete subscriber + * + * Delete a subscriber by its unique ID. + * + * @param {string} topicId + * @param {string} subscriberId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteSubscriber(topicId: string, subscriberId: string): Promise<{}>; +} + +export { Messaging }; diff --git a/node_modules/node-appwrite/dist/services/messaging.d.ts b/node_modules/node-appwrite/dist/services/messaging.d.ts new file mode 100644 index 0000000..e404ea5 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/messaging.d.ts @@ -0,0 +1,689 @@ +import { Client } from '../client.js'; +import { Models } from '../models.js'; +import { SmtpEncryption } from '../enums/smtp-encryption.js'; +import '../query.js'; + +declare class Messaging { + client: Client; + constructor(client: Client); + /** + * List messages + * + * Get a list of all messages from the current Appwrite project. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listMessages(queries?: string[], search?: string): Promise; + /** + * Create email + * + * Create a new email message. + * + * @param {string} messageId + * @param {string} subject + * @param {string} content + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {string[]} cc + * @param {string[]} bcc + * @param {string[]} attachments + * @param {boolean} draft + * @param {boolean} html + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + createEmail(messageId: string, subject: string, content: string, topics?: string[], users?: string[], targets?: string[], cc?: string[], bcc?: string[], attachments?: string[], draft?: boolean, html?: boolean, scheduledAt?: string): Promise; + /** + * Update email + * + * Update an email message by its unique ID. + + * + * @param {string} messageId + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {string} subject + * @param {string} content + * @param {boolean} draft + * @param {boolean} html + * @param {string[]} cc + * @param {string[]} bcc + * @param {string} scheduledAt + * @param {string[]} attachments + * @throws {AppwriteException} + * @returns {Promise} + */ + updateEmail(messageId: string, topics?: string[], users?: string[], targets?: string[], subject?: string, content?: string, draft?: boolean, html?: boolean, cc?: string[], bcc?: string[], scheduledAt?: string, attachments?: string[]): Promise; + /** + * Create push notification + * + * Create a new push notification. + * + * @param {string} messageId + * @param {string} title + * @param {string} body + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {object} data + * @param {string} action + * @param {string} image + * @param {string} icon + * @param {string} sound + * @param {string} color + * @param {string} tag + * @param {string} badge + * @param {boolean} draft + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + createPush(messageId: string, title: string, body: string, topics?: string[], users?: string[], targets?: string[], data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: string, draft?: boolean, scheduledAt?: string): Promise; + /** + * Update push notification + * + * Update a push notification by its unique ID. + + * + * @param {string} messageId + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {string} title + * @param {string} body + * @param {object} data + * @param {string} action + * @param {string} image + * @param {string} icon + * @param {string} sound + * @param {string} color + * @param {string} tag + * @param {number} badge + * @param {boolean} draft + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + updatePush(messageId: string, topics?: string[], users?: string[], targets?: string[], title?: string, body?: string, data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string): Promise; + /** + * Create SMS + * + * Create a new SMS message. + * + * @param {string} messageId + * @param {string} content + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {boolean} draft + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + createSms(messageId: string, content: string, topics?: string[], users?: string[], targets?: string[], draft?: boolean, scheduledAt?: string): Promise; + /** + * Update SMS + * + * Update an email message by its unique ID. + + * + * @param {string} messageId + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {string} content + * @param {boolean} draft + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + updateSms(messageId: string, topics?: string[], users?: string[], targets?: string[], content?: string, draft?: boolean, scheduledAt?: string): Promise; + /** + * Get message + * + * Get a message by its unique ID. + + * + * @param {string} messageId + * @throws {AppwriteException} + * @returns {Promise} + */ + getMessage(messageId: string): Promise; + /** + * Delete message + * + * Delete a message. If the message is not a draft or scheduled, but has been sent, this will not recall the message. + * + * @param {string} messageId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + delete(messageId: string): Promise<{}>; + /** + * List message logs + * + * Get the message activity logs listed by its unique ID. + * + * @param {string} messageId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listMessageLogs(messageId: string, queries?: string[]): Promise; + /** + * List message targets + * + * Get a list of the targets associated with a message. + * + * @param {string} messageId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listTargets(messageId: string, queries?: string[]): Promise; + /** + * List providers + * + * Get a list of all providers from the current Appwrite project. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listProviders(queries?: string[], search?: string): Promise; + /** + * Create APNS provider + * + * Create a new Apple Push Notification service provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} authKey + * @param {string} authKeyId + * @param {string} teamId + * @param {string} bundleId + * @param {boolean} sandbox + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createApnsProvider(providerId: string, name: string, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean, enabled?: boolean): Promise; + /** + * Update APNS provider + * + * Update a Apple Push Notification service provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} authKey + * @param {string} authKeyId + * @param {string} teamId + * @param {string} bundleId + * @param {boolean} sandbox + * @throws {AppwriteException} + * @returns {Promise} + */ + updateApnsProvider(providerId: string, name?: string, enabled?: boolean, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean): Promise; + /** + * Create FCM provider + * + * Create a new Firebase Cloud Messaging provider. + * + * @param {string} providerId + * @param {string} name + * @param {object} serviceAccountJSON + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createFcmProvider(providerId: string, name: string, serviceAccountJSON?: object, enabled?: boolean): Promise; + /** + * Update FCM provider + * + * Update a Firebase Cloud Messaging provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {object} serviceAccountJSON + * @throws {AppwriteException} + * @returns {Promise} + */ + updateFcmProvider(providerId: string, name?: string, enabled?: boolean, serviceAccountJSON?: object): Promise; + /** + * Create Mailgun provider + * + * Create a new Mailgun provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} apiKey + * @param {string} domain + * @param {boolean} isEuRegion + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createMailgunProvider(providerId: string, name: string, apiKey?: string, domain?: string, isEuRegion?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise; + /** + * Update Mailgun provider + * + * Update a Mailgun provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {string} apiKey + * @param {string} domain + * @param {boolean} isEuRegion + * @param {boolean} enabled + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @throws {AppwriteException} + * @returns {Promise} + */ + updateMailgunProvider(providerId: string, name?: string, apiKey?: string, domain?: string, isEuRegion?: boolean, enabled?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string): Promise; + /** + * Create Msg91 provider + * + * Create a new MSG91 provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} templateId + * @param {string} senderId + * @param {string} authKey + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createMsg91Provider(providerId: string, name: string, templateId?: string, senderId?: string, authKey?: string, enabled?: boolean): Promise; + /** + * Update Msg91 provider + * + * Update a MSG91 provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} templateId + * @param {string} senderId + * @param {string} authKey + * @throws {AppwriteException} + * @returns {Promise} + */ + updateMsg91Provider(providerId: string, name?: string, enabled?: boolean, templateId?: string, senderId?: string, authKey?: string): Promise; + /** + * Create Sendgrid provider + * + * Create a new Sendgrid provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} apiKey + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createSendgridProvider(providerId: string, name: string, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise; + /** + * Update Sendgrid provider + * + * Update a Sendgrid provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} apiKey + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @throws {AppwriteException} + * @returns {Promise} + */ + updateSendgridProvider(providerId: string, name?: string, enabled?: boolean, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string): Promise; + /** + * Create SMTP provider + * + * Create a new SMTP provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} host + * @param {number} port + * @param {string} username + * @param {string} password + * @param {SmtpEncryption} encryption + * @param {boolean} autoTLS + * @param {string} mailer + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createSmtpProvider(providerId: string, name: string, host: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise; + /** + * Update SMTP provider + * + * Update a SMTP provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {string} host + * @param {number} port + * @param {string} username + * @param {string} password + * @param {SmtpEncryption} encryption + * @param {boolean} autoTLS + * @param {string} mailer + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + updateSmtpProvider(providerId: string, name?: string, host?: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise; + /** + * Create Telesign provider + * + * Create a new Telesign provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} from + * @param {string} customerId + * @param {string} apiKey + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createTelesignProvider(providerId: string, name: string, from?: string, customerId?: string, apiKey?: string, enabled?: boolean): Promise; + /** + * Update Telesign provider + * + * Update a Telesign provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} customerId + * @param {string} apiKey + * @param {string} from + * @throws {AppwriteException} + * @returns {Promise} + */ + updateTelesignProvider(providerId: string, name?: string, enabled?: boolean, customerId?: string, apiKey?: string, from?: string): Promise; + /** + * Create Textmagic provider + * + * Create a new Textmagic provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} from + * @param {string} username + * @param {string} apiKey + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createTextmagicProvider(providerId: string, name: string, from?: string, username?: string, apiKey?: string, enabled?: boolean): Promise; + /** + * Update Textmagic provider + * + * Update a Textmagic provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} username + * @param {string} apiKey + * @param {string} from + * @throws {AppwriteException} + * @returns {Promise} + */ + updateTextmagicProvider(providerId: string, name?: string, enabled?: boolean, username?: string, apiKey?: string, from?: string): Promise; + /** + * Create Twilio provider + * + * Create a new Twilio provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} from + * @param {string} accountSid + * @param {string} authToken + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createTwilioProvider(providerId: string, name: string, from?: string, accountSid?: string, authToken?: string, enabled?: boolean): Promise; + /** + * Update Twilio provider + * + * Update a Twilio provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} accountSid + * @param {string} authToken + * @param {string} from + * @throws {AppwriteException} + * @returns {Promise} + */ + updateTwilioProvider(providerId: string, name?: string, enabled?: boolean, accountSid?: string, authToken?: string, from?: string): Promise; + /** + * Create Vonage provider + * + * Create a new Vonage provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} from + * @param {string} apiKey + * @param {string} apiSecret + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + createVonageProvider(providerId: string, name: string, from?: string, apiKey?: string, apiSecret?: string, enabled?: boolean): Promise; + /** + * Update Vonage provider + * + * Update a Vonage provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} apiKey + * @param {string} apiSecret + * @param {string} from + * @throws {AppwriteException} + * @returns {Promise} + */ + updateVonageProvider(providerId: string, name?: string, enabled?: boolean, apiKey?: string, apiSecret?: string, from?: string): Promise; + /** + * Get provider + * + * Get a provider by its unique ID. + + * + * @param {string} providerId + * @throws {AppwriteException} + * @returns {Promise} + */ + getProvider(providerId: string): Promise; + /** + * Delete provider + * + * Delete a provider by its unique ID. + * + * @param {string} providerId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteProvider(providerId: string): Promise<{}>; + /** + * List provider logs + * + * Get the provider activity logs listed by its unique ID. + * + * @param {string} providerId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listProviderLogs(providerId: string, queries?: string[]): Promise; + /** + * List subscriber logs + * + * Get the subscriber activity logs listed by its unique ID. + * + * @param {string} subscriberId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listSubscriberLogs(subscriberId: string, queries?: string[]): Promise; + /** + * List topics + * + * Get a list of all topics from the current Appwrite project. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listTopics(queries?: string[], search?: string): Promise; + /** + * Create topic + * + * Create a new topic. + * + * @param {string} topicId + * @param {string} name + * @param {string[]} subscribe + * @throws {AppwriteException} + * @returns {Promise} + */ + createTopic(topicId: string, name: string, subscribe?: string[]): Promise; + /** + * Get topic + * + * Get a topic by its unique ID. + + * + * @param {string} topicId + * @throws {AppwriteException} + * @returns {Promise} + */ + getTopic(topicId: string): Promise; + /** + * Update topic + * + * Update a topic by its unique ID. + + * + * @param {string} topicId + * @param {string} name + * @param {string[]} subscribe + * @throws {AppwriteException} + * @returns {Promise} + */ + updateTopic(topicId: string, name?: string, subscribe?: string[]): Promise; + /** + * Delete topic + * + * Delete a topic by its unique ID. + * + * @param {string} topicId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteTopic(topicId: string): Promise<{}>; + /** + * List topic logs + * + * Get the topic activity logs listed by its unique ID. + * + * @param {string} topicId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listTopicLogs(topicId: string, queries?: string[]): Promise; + /** + * List subscribers + * + * Get a list of all subscribers from the current Appwrite project. + * + * @param {string} topicId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listSubscribers(topicId: string, queries?: string[], search?: string): Promise; + /** + * Create subscriber + * + * Create a new subscriber. + * + * @param {string} topicId + * @param {string} subscriberId + * @param {string} targetId + * @throws {AppwriteException} + * @returns {Promise} + */ + createSubscriber(topicId: string, subscriberId: string, targetId: string): Promise; + /** + * Get subscriber + * + * Get a subscriber by its unique ID. + + * + * @param {string} topicId + * @param {string} subscriberId + * @throws {AppwriteException} + * @returns {Promise} + */ + getSubscriber(topicId: string, subscriberId: string): Promise; + /** + * Delete subscriber + * + * Delete a subscriber by its unique ID. + * + * @param {string} topicId + * @param {string} subscriberId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteSubscriber(topicId: string, subscriberId: string): Promise<{}>; +} + +export { Messaging }; diff --git a/node_modules/node-appwrite/dist/services/messaging.js b/node_modules/node-appwrite/dist/services/messaging.js new file mode 100644 index 0000000..251d826 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/messaging.js @@ -0,0 +1,2156 @@ +'use strict'; + +var client = require('../client'); + +class Messaging { + constructor(client) { + this.client = client; + } + /** + * List messages + * + * Get a list of all messages from the current Appwrite project. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listMessages(queries, search) { + const apiPath = "/messaging/messages"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create email + * + * Create a new email message. + * + * @param {string} messageId + * @param {string} subject + * @param {string} content + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {string[]} cc + * @param {string[]} bcc + * @param {string[]} attachments + * @param {boolean} draft + * @param {boolean} html + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + async createEmail(messageId, subject, content, topics, users, targets, cc, bcc, attachments, draft, html, scheduledAt) { + if (typeof messageId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "messageId"'); + } + if (typeof subject === "undefined") { + throw new client.AppwriteException('Missing required parameter: "subject"'); + } + if (typeof content === "undefined") { + throw new client.AppwriteException('Missing required parameter: "content"'); + } + const apiPath = "/messaging/messages/email"; + const payload = {}; + if (typeof messageId !== "undefined") { + payload["messageId"] = messageId; + } + if (typeof subject !== "undefined") { + payload["subject"] = subject; + } + if (typeof content !== "undefined") { + payload["content"] = content; + } + if (typeof topics !== "undefined") { + payload["topics"] = topics; + } + if (typeof users !== "undefined") { + payload["users"] = users; + } + if (typeof targets !== "undefined") { + payload["targets"] = targets; + } + if (typeof cc !== "undefined") { + payload["cc"] = cc; + } + if (typeof bcc !== "undefined") { + payload["bcc"] = bcc; + } + if (typeof attachments !== "undefined") { + payload["attachments"] = attachments; + } + if (typeof draft !== "undefined") { + payload["draft"] = draft; + } + if (typeof html !== "undefined") { + payload["html"] = html; + } + if (typeof scheduledAt !== "undefined") { + payload["scheduledAt"] = scheduledAt; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update email + * + * Update an email message by its unique ID. + + * + * @param {string} messageId + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {string} subject + * @param {string} content + * @param {boolean} draft + * @param {boolean} html + * @param {string[]} cc + * @param {string[]} bcc + * @param {string} scheduledAt + * @param {string[]} attachments + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateEmail(messageId, topics, users, targets, subject, content, draft, html, cc, bcc, scheduledAt, attachments) { + if (typeof messageId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "messageId"'); + } + const apiPath = "/messaging/messages/email/{messageId}".replace("{messageId}", messageId); + const payload = {}; + if (typeof topics !== "undefined") { + payload["topics"] = topics; + } + if (typeof users !== "undefined") { + payload["users"] = users; + } + if (typeof targets !== "undefined") { + payload["targets"] = targets; + } + if (typeof subject !== "undefined") { + payload["subject"] = subject; + } + if (typeof content !== "undefined") { + payload["content"] = content; + } + if (typeof draft !== "undefined") { + payload["draft"] = draft; + } + if (typeof html !== "undefined") { + payload["html"] = html; + } + if (typeof cc !== "undefined") { + payload["cc"] = cc; + } + if (typeof bcc !== "undefined") { + payload["bcc"] = bcc; + } + if (typeof scheduledAt !== "undefined") { + payload["scheduledAt"] = scheduledAt; + } + if (typeof attachments !== "undefined") { + payload["attachments"] = attachments; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create push notification + * + * Create a new push notification. + * + * @param {string} messageId + * @param {string} title + * @param {string} body + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {object} data + * @param {string} action + * @param {string} image + * @param {string} icon + * @param {string} sound + * @param {string} color + * @param {string} tag + * @param {string} badge + * @param {boolean} draft + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + async createPush(messageId, title, body, topics, users, targets, data, action, image, icon, sound, color, tag, badge, draft, scheduledAt) { + if (typeof messageId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "messageId"'); + } + if (typeof title === "undefined") { + throw new client.AppwriteException('Missing required parameter: "title"'); + } + if (typeof body === "undefined") { + throw new client.AppwriteException('Missing required parameter: "body"'); + } + const apiPath = "/messaging/messages/push"; + const payload = {}; + if (typeof messageId !== "undefined") { + payload["messageId"] = messageId; + } + if (typeof title !== "undefined") { + payload["title"] = title; + } + if (typeof body !== "undefined") { + payload["body"] = body; + } + if (typeof topics !== "undefined") { + payload["topics"] = topics; + } + if (typeof users !== "undefined") { + payload["users"] = users; + } + if (typeof targets !== "undefined") { + payload["targets"] = targets; + } + if (typeof data !== "undefined") { + payload["data"] = data; + } + if (typeof action !== "undefined") { + payload["action"] = action; + } + if (typeof image !== "undefined") { + payload["image"] = image; + } + if (typeof icon !== "undefined") { + payload["icon"] = icon; + } + if (typeof sound !== "undefined") { + payload["sound"] = sound; + } + if (typeof color !== "undefined") { + payload["color"] = color; + } + if (typeof tag !== "undefined") { + payload["tag"] = tag; + } + if (typeof badge !== "undefined") { + payload["badge"] = badge; + } + if (typeof draft !== "undefined") { + payload["draft"] = draft; + } + if (typeof scheduledAt !== "undefined") { + payload["scheduledAt"] = scheduledAt; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update push notification + * + * Update a push notification by its unique ID. + + * + * @param {string} messageId + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {string} title + * @param {string} body + * @param {object} data + * @param {string} action + * @param {string} image + * @param {string} icon + * @param {string} sound + * @param {string} color + * @param {string} tag + * @param {number} badge + * @param {boolean} draft + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + async updatePush(messageId, topics, users, targets, title, body, data, action, image, icon, sound, color, tag, badge, draft, scheduledAt) { + if (typeof messageId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "messageId"'); + } + const apiPath = "/messaging/messages/push/{messageId}".replace("{messageId}", messageId); + const payload = {}; + if (typeof topics !== "undefined") { + payload["topics"] = topics; + } + if (typeof users !== "undefined") { + payload["users"] = users; + } + if (typeof targets !== "undefined") { + payload["targets"] = targets; + } + if (typeof title !== "undefined") { + payload["title"] = title; + } + if (typeof body !== "undefined") { + payload["body"] = body; + } + if (typeof data !== "undefined") { + payload["data"] = data; + } + if (typeof action !== "undefined") { + payload["action"] = action; + } + if (typeof image !== "undefined") { + payload["image"] = image; + } + if (typeof icon !== "undefined") { + payload["icon"] = icon; + } + if (typeof sound !== "undefined") { + payload["sound"] = sound; + } + if (typeof color !== "undefined") { + payload["color"] = color; + } + if (typeof tag !== "undefined") { + payload["tag"] = tag; + } + if (typeof badge !== "undefined") { + payload["badge"] = badge; + } + if (typeof draft !== "undefined") { + payload["draft"] = draft; + } + if (typeof scheduledAt !== "undefined") { + payload["scheduledAt"] = scheduledAt; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create SMS + * + * Create a new SMS message. + * + * @param {string} messageId + * @param {string} content + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {boolean} draft + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + async createSms(messageId, content, topics, users, targets, draft, scheduledAt) { + if (typeof messageId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "messageId"'); + } + if (typeof content === "undefined") { + throw new client.AppwriteException('Missing required parameter: "content"'); + } + const apiPath = "/messaging/messages/sms"; + const payload = {}; + if (typeof messageId !== "undefined") { + payload["messageId"] = messageId; + } + if (typeof content !== "undefined") { + payload["content"] = content; + } + if (typeof topics !== "undefined") { + payload["topics"] = topics; + } + if (typeof users !== "undefined") { + payload["users"] = users; + } + if (typeof targets !== "undefined") { + payload["targets"] = targets; + } + if (typeof draft !== "undefined") { + payload["draft"] = draft; + } + if (typeof scheduledAt !== "undefined") { + payload["scheduledAt"] = scheduledAt; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update SMS + * + * Update an email message by its unique ID. + + * + * @param {string} messageId + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {string} content + * @param {boolean} draft + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateSms(messageId, topics, users, targets, content, draft, scheduledAt) { + if (typeof messageId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "messageId"'); + } + const apiPath = "/messaging/messages/sms/{messageId}".replace("{messageId}", messageId); + const payload = {}; + if (typeof topics !== "undefined") { + payload["topics"] = topics; + } + if (typeof users !== "undefined") { + payload["users"] = users; + } + if (typeof targets !== "undefined") { + payload["targets"] = targets; + } + if (typeof content !== "undefined") { + payload["content"] = content; + } + if (typeof draft !== "undefined") { + payload["draft"] = draft; + } + if (typeof scheduledAt !== "undefined") { + payload["scheduledAt"] = scheduledAt; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Get message + * + * Get a message by its unique ID. + + * + * @param {string} messageId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getMessage(messageId) { + if (typeof messageId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "messageId"'); + } + const apiPath = "/messaging/messages/{messageId}".replace("{messageId}", messageId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete message + * + * Delete a message. If the message is not a draft or scheduled, but has been sent, this will not recall the message. + * + * @param {string} messageId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async delete(messageId) { + if (typeof messageId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "messageId"'); + } + const apiPath = "/messaging/messages/{messageId}".replace("{messageId}", messageId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List message logs + * + * Get the message activity logs listed by its unique ID. + * + * @param {string} messageId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listMessageLogs(messageId, queries) { + if (typeof messageId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "messageId"'); + } + const apiPath = "/messaging/messages/{messageId}/logs".replace("{messageId}", messageId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List message targets + * + * Get a list of the targets associated with a message. + * + * @param {string} messageId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listTargets(messageId, queries) { + if (typeof messageId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "messageId"'); + } + const apiPath = "/messaging/messages/{messageId}/targets".replace("{messageId}", messageId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List providers + * + * Get a list of all providers from the current Appwrite project. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listProviders(queries, search) { + const apiPath = "/messaging/providers"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create APNS provider + * + * Create a new Apple Push Notification service provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} authKey + * @param {string} authKeyId + * @param {string} teamId + * @param {string} bundleId + * @param {boolean} sandbox + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createApnsProvider(providerId, name, authKey, authKeyId, teamId, bundleId, sandbox, enabled) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/apns"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof authKey !== "undefined") { + payload["authKey"] = authKey; + } + if (typeof authKeyId !== "undefined") { + payload["authKeyId"] = authKeyId; + } + if (typeof teamId !== "undefined") { + payload["teamId"] = teamId; + } + if (typeof bundleId !== "undefined") { + payload["bundleId"] = bundleId; + } + if (typeof sandbox !== "undefined") { + payload["sandbox"] = sandbox; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update APNS provider + * + * Update a Apple Push Notification service provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} authKey + * @param {string} authKeyId + * @param {string} teamId + * @param {string} bundleId + * @param {boolean} sandbox + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateApnsProvider(providerId, name, enabled, authKey, authKeyId, teamId, bundleId, sandbox) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/apns/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof authKey !== "undefined") { + payload["authKey"] = authKey; + } + if (typeof authKeyId !== "undefined") { + payload["authKeyId"] = authKeyId; + } + if (typeof teamId !== "undefined") { + payload["teamId"] = teamId; + } + if (typeof bundleId !== "undefined") { + payload["bundleId"] = bundleId; + } + if (typeof sandbox !== "undefined") { + payload["sandbox"] = sandbox; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create FCM provider + * + * Create a new Firebase Cloud Messaging provider. + * + * @param {string} providerId + * @param {string} name + * @param {object} serviceAccountJSON + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createFcmProvider(providerId, name, serviceAccountJSON, enabled) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/fcm"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof serviceAccountJSON !== "undefined") { + payload["serviceAccountJSON"] = serviceAccountJSON; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update FCM provider + * + * Update a Firebase Cloud Messaging provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {object} serviceAccountJSON + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateFcmProvider(providerId, name, enabled, serviceAccountJSON) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/fcm/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof serviceAccountJSON !== "undefined") { + payload["serviceAccountJSON"] = serviceAccountJSON; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create Mailgun provider + * + * Create a new Mailgun provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} apiKey + * @param {string} domain + * @param {boolean} isEuRegion + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createMailgunProvider(providerId, name, apiKey, domain, isEuRegion, fromName, fromEmail, replyToName, replyToEmail, enabled) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/mailgun"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof domain !== "undefined") { + payload["domain"] = domain; + } + if (typeof isEuRegion !== "undefined") { + payload["isEuRegion"] = isEuRegion; + } + if (typeof fromName !== "undefined") { + payload["fromName"] = fromName; + } + if (typeof fromEmail !== "undefined") { + payload["fromEmail"] = fromEmail; + } + if (typeof replyToName !== "undefined") { + payload["replyToName"] = replyToName; + } + if (typeof replyToEmail !== "undefined") { + payload["replyToEmail"] = replyToEmail; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update Mailgun provider + * + * Update a Mailgun provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {string} apiKey + * @param {string} domain + * @param {boolean} isEuRegion + * @param {boolean} enabled + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateMailgunProvider(providerId, name, apiKey, domain, isEuRegion, enabled, fromName, fromEmail, replyToName, replyToEmail) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/mailgun/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof domain !== "undefined") { + payload["domain"] = domain; + } + if (typeof isEuRegion !== "undefined") { + payload["isEuRegion"] = isEuRegion; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof fromName !== "undefined") { + payload["fromName"] = fromName; + } + if (typeof fromEmail !== "undefined") { + payload["fromEmail"] = fromEmail; + } + if (typeof replyToName !== "undefined") { + payload["replyToName"] = replyToName; + } + if (typeof replyToEmail !== "undefined") { + payload["replyToEmail"] = replyToEmail; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create Msg91 provider + * + * Create a new MSG91 provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} templateId + * @param {string} senderId + * @param {string} authKey + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createMsg91Provider(providerId, name, templateId, senderId, authKey, enabled) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/msg91"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof templateId !== "undefined") { + payload["templateId"] = templateId; + } + if (typeof senderId !== "undefined") { + payload["senderId"] = senderId; + } + if (typeof authKey !== "undefined") { + payload["authKey"] = authKey; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update Msg91 provider + * + * Update a MSG91 provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} templateId + * @param {string} senderId + * @param {string} authKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateMsg91Provider(providerId, name, enabled, templateId, senderId, authKey) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/msg91/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof templateId !== "undefined") { + payload["templateId"] = templateId; + } + if (typeof senderId !== "undefined") { + payload["senderId"] = senderId; + } + if (typeof authKey !== "undefined") { + payload["authKey"] = authKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create Sendgrid provider + * + * Create a new Sendgrid provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} apiKey + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createSendgridProvider(providerId, name, apiKey, fromName, fromEmail, replyToName, replyToEmail, enabled) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/sendgrid"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof fromName !== "undefined") { + payload["fromName"] = fromName; + } + if (typeof fromEmail !== "undefined") { + payload["fromEmail"] = fromEmail; + } + if (typeof replyToName !== "undefined") { + payload["replyToName"] = replyToName; + } + if (typeof replyToEmail !== "undefined") { + payload["replyToEmail"] = replyToEmail; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update Sendgrid provider + * + * Update a Sendgrid provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} apiKey + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateSendgridProvider(providerId, name, enabled, apiKey, fromName, fromEmail, replyToName, replyToEmail) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/sendgrid/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof fromName !== "undefined") { + payload["fromName"] = fromName; + } + if (typeof fromEmail !== "undefined") { + payload["fromEmail"] = fromEmail; + } + if (typeof replyToName !== "undefined") { + payload["replyToName"] = replyToName; + } + if (typeof replyToEmail !== "undefined") { + payload["replyToEmail"] = replyToEmail; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create SMTP provider + * + * Create a new SMTP provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} host + * @param {number} port + * @param {string} username + * @param {string} password + * @param {SmtpEncryption} encryption + * @param {boolean} autoTLS + * @param {string} mailer + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createSmtpProvider(providerId, name, host, port, username, password, encryption, autoTLS, mailer, fromName, fromEmail, replyToName, replyToEmail, enabled) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + if (typeof host === "undefined") { + throw new client.AppwriteException('Missing required parameter: "host"'); + } + const apiPath = "/messaging/providers/smtp"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof host !== "undefined") { + payload["host"] = host; + } + if (typeof port !== "undefined") { + payload["port"] = port; + } + if (typeof username !== "undefined") { + payload["username"] = username; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof encryption !== "undefined") { + payload["encryption"] = encryption; + } + if (typeof autoTLS !== "undefined") { + payload["autoTLS"] = autoTLS; + } + if (typeof mailer !== "undefined") { + payload["mailer"] = mailer; + } + if (typeof fromName !== "undefined") { + payload["fromName"] = fromName; + } + if (typeof fromEmail !== "undefined") { + payload["fromEmail"] = fromEmail; + } + if (typeof replyToName !== "undefined") { + payload["replyToName"] = replyToName; + } + if (typeof replyToEmail !== "undefined") { + payload["replyToEmail"] = replyToEmail; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update SMTP provider + * + * Update a SMTP provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {string} host + * @param {number} port + * @param {string} username + * @param {string} password + * @param {SmtpEncryption} encryption + * @param {boolean} autoTLS + * @param {string} mailer + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateSmtpProvider(providerId, name, host, port, username, password, encryption, autoTLS, mailer, fromName, fromEmail, replyToName, replyToEmail, enabled) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/smtp/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof host !== "undefined") { + payload["host"] = host; + } + if (typeof port !== "undefined") { + payload["port"] = port; + } + if (typeof username !== "undefined") { + payload["username"] = username; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof encryption !== "undefined") { + payload["encryption"] = encryption; + } + if (typeof autoTLS !== "undefined") { + payload["autoTLS"] = autoTLS; + } + if (typeof mailer !== "undefined") { + payload["mailer"] = mailer; + } + if (typeof fromName !== "undefined") { + payload["fromName"] = fromName; + } + if (typeof fromEmail !== "undefined") { + payload["fromEmail"] = fromEmail; + } + if (typeof replyToName !== "undefined") { + payload["replyToName"] = replyToName; + } + if (typeof replyToEmail !== "undefined") { + payload["replyToEmail"] = replyToEmail; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create Telesign provider + * + * Create a new Telesign provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} from + * @param {string} customerId + * @param {string} apiKey + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createTelesignProvider(providerId, name, from, customerId, apiKey, enabled) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/telesign"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof from !== "undefined") { + payload["from"] = from; + } + if (typeof customerId !== "undefined") { + payload["customerId"] = customerId; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update Telesign provider + * + * Update a Telesign provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} customerId + * @param {string} apiKey + * @param {string} from + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateTelesignProvider(providerId, name, enabled, customerId, apiKey, from) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/telesign/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof customerId !== "undefined") { + payload["customerId"] = customerId; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof from !== "undefined") { + payload["from"] = from; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create Textmagic provider + * + * Create a new Textmagic provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} from + * @param {string} username + * @param {string} apiKey + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createTextmagicProvider(providerId, name, from, username, apiKey, enabled) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/textmagic"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof from !== "undefined") { + payload["from"] = from; + } + if (typeof username !== "undefined") { + payload["username"] = username; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update Textmagic provider + * + * Update a Textmagic provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} username + * @param {string} apiKey + * @param {string} from + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateTextmagicProvider(providerId, name, enabled, username, apiKey, from) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/textmagic/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof username !== "undefined") { + payload["username"] = username; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof from !== "undefined") { + payload["from"] = from; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create Twilio provider + * + * Create a new Twilio provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} from + * @param {string} accountSid + * @param {string} authToken + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createTwilioProvider(providerId, name, from, accountSid, authToken, enabled) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/twilio"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof from !== "undefined") { + payload["from"] = from; + } + if (typeof accountSid !== "undefined") { + payload["accountSid"] = accountSid; + } + if (typeof authToken !== "undefined") { + payload["authToken"] = authToken; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update Twilio provider + * + * Update a Twilio provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} accountSid + * @param {string} authToken + * @param {string} from + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateTwilioProvider(providerId, name, enabled, accountSid, authToken, from) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/twilio/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof accountSid !== "undefined") { + payload["accountSid"] = accountSid; + } + if (typeof authToken !== "undefined") { + payload["authToken"] = authToken; + } + if (typeof from !== "undefined") { + payload["from"] = from; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create Vonage provider + * + * Create a new Vonage provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} from + * @param {string} apiKey + * @param {string} apiSecret + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createVonageProvider(providerId, name, from, apiKey, apiSecret, enabled) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/vonage"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof from !== "undefined") { + payload["from"] = from; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof apiSecret !== "undefined") { + payload["apiSecret"] = apiSecret; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update Vonage provider + * + * Update a Vonage provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} apiKey + * @param {string} apiSecret + * @param {string} from + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateVonageProvider(providerId, name, enabled, apiKey, apiSecret, from) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/vonage/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof apiSecret !== "undefined") { + payload["apiSecret"] = apiSecret; + } + if (typeof from !== "undefined") { + payload["from"] = from; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Get provider + * + * Get a provider by its unique ID. + + * + * @param {string} providerId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getProvider(providerId) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/{providerId}".replace("{providerId}", providerId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete provider + * + * Delete a provider by its unique ID. + * + * @param {string} providerId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteProvider(providerId) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/{providerId}".replace("{providerId}", providerId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List provider logs + * + * Get the provider activity logs listed by its unique ID. + * + * @param {string} providerId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listProviderLogs(providerId, queries) { + if (typeof providerId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/{providerId}/logs".replace("{providerId}", providerId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List subscriber logs + * + * Get the subscriber activity logs listed by its unique ID. + * + * @param {string} subscriberId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listSubscriberLogs(subscriberId, queries) { + if (typeof subscriberId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "subscriberId"'); + } + const apiPath = "/messaging/subscribers/{subscriberId}/logs".replace("{subscriberId}", subscriberId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List topics + * + * Get a list of all topics from the current Appwrite project. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listTopics(queries, search) { + const apiPath = "/messaging/topics"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create topic + * + * Create a new topic. + * + * @param {string} topicId + * @param {string} name + * @param {string[]} subscribe + * @throws {AppwriteException} + * @returns {Promise} + */ + async createTopic(topicId, name, subscribe) { + if (typeof topicId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "topicId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/topics"; + const payload = {}; + if (typeof topicId !== "undefined") { + payload["topicId"] = topicId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof subscribe !== "undefined") { + payload["subscribe"] = subscribe; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get topic + * + * Get a topic by its unique ID. + + * + * @param {string} topicId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getTopic(topicId) { + if (typeof topicId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "topicId"'); + } + const apiPath = "/messaging/topics/{topicId}".replace("{topicId}", topicId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update topic + * + * Update a topic by its unique ID. + + * + * @param {string} topicId + * @param {string} name + * @param {string[]} subscribe + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateTopic(topicId, name, subscribe) { + if (typeof topicId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "topicId"'); + } + const apiPath = "/messaging/topics/{topicId}".replace("{topicId}", topicId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof subscribe !== "undefined") { + payload["subscribe"] = subscribe; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Delete topic + * + * Delete a topic by its unique ID. + * + * @param {string} topicId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteTopic(topicId) { + if (typeof topicId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "topicId"'); + } + const apiPath = "/messaging/topics/{topicId}".replace("{topicId}", topicId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List topic logs + * + * Get the topic activity logs listed by its unique ID. + * + * @param {string} topicId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listTopicLogs(topicId, queries) { + if (typeof topicId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "topicId"'); + } + const apiPath = "/messaging/topics/{topicId}/logs".replace("{topicId}", topicId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List subscribers + * + * Get a list of all subscribers from the current Appwrite project. + * + * @param {string} topicId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listSubscribers(topicId, queries, search) { + if (typeof topicId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "topicId"'); + } + const apiPath = "/messaging/topics/{topicId}/subscribers".replace("{topicId}", topicId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create subscriber + * + * Create a new subscriber. + * + * @param {string} topicId + * @param {string} subscriberId + * @param {string} targetId + * @throws {AppwriteException} + * @returns {Promise} + */ + async createSubscriber(topicId, subscriberId, targetId) { + if (typeof topicId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "topicId"'); + } + if (typeof subscriberId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "subscriberId"'); + } + if (typeof targetId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "targetId"'); + } + const apiPath = "/messaging/topics/{topicId}/subscribers".replace("{topicId}", topicId); + const payload = {}; + if (typeof subscriberId !== "undefined") { + payload["subscriberId"] = subscriberId; + } + if (typeof targetId !== "undefined") { + payload["targetId"] = targetId; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get subscriber + * + * Get a subscriber by its unique ID. + + * + * @param {string} topicId + * @param {string} subscriberId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getSubscriber(topicId, subscriberId) { + if (typeof topicId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "topicId"'); + } + if (typeof subscriberId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "subscriberId"'); + } + const apiPath = "/messaging/topics/{topicId}/subscribers/{subscriberId}".replace("{topicId}", topicId).replace("{subscriberId}", subscriberId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete subscriber + * + * Delete a subscriber by its unique ID. + * + * @param {string} topicId + * @param {string} subscriberId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteSubscriber(topicId, subscriberId) { + if (typeof topicId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "topicId"'); + } + if (typeof subscriberId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "subscriberId"'); + } + const apiPath = "/messaging/topics/{topicId}/subscribers/{subscriberId}".replace("{topicId}", topicId).replace("{subscriberId}", subscriberId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } +} + +exports.Messaging = Messaging; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=messaging.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/messaging.js.map b/node_modules/node-appwrite/dist/services/messaging.js.map new file mode 100644 index 0000000..7051e3d --- /dev/null +++ b/node_modules/node-appwrite/dist/services/messaging.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/messaging.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { SmtpEncryption } from '../enums/smtp-encryption';\n\nexport class Messaging {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * List messages\n *\n * Get a list of all messages from the current Appwrite project.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listMessages(queries?: string[], search?: string): Promise {\n const apiPath = '/messaging/messages';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create email\n *\n * Create a new email message.\n *\n * @param {string} messageId\n * @param {string} subject\n * @param {string} content\n * @param {string[]} topics\n * @param {string[]} users\n * @param {string[]} targets\n * @param {string[]} cc\n * @param {string[]} bcc\n * @param {string[]} attachments\n * @param {boolean} draft\n * @param {boolean} html\n * @param {string} scheduledAt\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createEmail(messageId: string, subject: string, content: string, topics?: string[], users?: string[], targets?: string[], cc?: string[], bcc?: string[], attachments?: string[], draft?: boolean, html?: boolean, scheduledAt?: string): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n if (typeof subject === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"subject\"');\n }\n if (typeof content === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"content\"');\n }\n const apiPath = '/messaging/messages/email';\n const payload: Payload = {};\n if (typeof messageId !== 'undefined') {\n payload['messageId'] = messageId;\n }\n if (typeof subject !== 'undefined') {\n payload['subject'] = subject;\n }\n if (typeof content !== 'undefined') {\n payload['content'] = content;\n }\n if (typeof topics !== 'undefined') {\n payload['topics'] = topics;\n }\n if (typeof users !== 'undefined') {\n payload['users'] = users;\n }\n if (typeof targets !== 'undefined') {\n payload['targets'] = targets;\n }\n if (typeof cc !== 'undefined') {\n payload['cc'] = cc;\n }\n if (typeof bcc !== 'undefined') {\n payload['bcc'] = bcc;\n }\n if (typeof attachments !== 'undefined') {\n payload['attachments'] = attachments;\n }\n if (typeof draft !== 'undefined') {\n payload['draft'] = draft;\n }\n if (typeof html !== 'undefined') {\n payload['html'] = html;\n }\n if (typeof scheduledAt !== 'undefined') {\n payload['scheduledAt'] = scheduledAt;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update email\n *\n * Update an email message by its unique ID.\n\n *\n * @param {string} messageId\n * @param {string[]} topics\n * @param {string[]} users\n * @param {string[]} targets\n * @param {string} subject\n * @param {string} content\n * @param {boolean} draft\n * @param {boolean} html\n * @param {string[]} cc\n * @param {string[]} bcc\n * @param {string} scheduledAt\n * @param {string[]} attachments\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateEmail(messageId: string, topics?: string[], users?: string[], targets?: string[], subject?: string, content?: string, draft?: boolean, html?: boolean, cc?: string[], bcc?: string[], scheduledAt?: string, attachments?: string[]): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n const apiPath = '/messaging/messages/email/{messageId}'.replace('{messageId}', messageId);\n const payload: Payload = {};\n if (typeof topics !== 'undefined') {\n payload['topics'] = topics;\n }\n if (typeof users !== 'undefined') {\n payload['users'] = users;\n }\n if (typeof targets !== 'undefined') {\n payload['targets'] = targets;\n }\n if (typeof subject !== 'undefined') {\n payload['subject'] = subject;\n }\n if (typeof content !== 'undefined') {\n payload['content'] = content;\n }\n if (typeof draft !== 'undefined') {\n payload['draft'] = draft;\n }\n if (typeof html !== 'undefined') {\n payload['html'] = html;\n }\n if (typeof cc !== 'undefined') {\n payload['cc'] = cc;\n }\n if (typeof bcc !== 'undefined') {\n payload['bcc'] = bcc;\n }\n if (typeof scheduledAt !== 'undefined') {\n payload['scheduledAt'] = scheduledAt;\n }\n if (typeof attachments !== 'undefined') {\n payload['attachments'] = attachments;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create push notification\n *\n * Create a new push notification.\n *\n * @param {string} messageId\n * @param {string} title\n * @param {string} body\n * @param {string[]} topics\n * @param {string[]} users\n * @param {string[]} targets\n * @param {object} data\n * @param {string} action\n * @param {string} image\n * @param {string} icon\n * @param {string} sound\n * @param {string} color\n * @param {string} tag\n * @param {string} badge\n * @param {boolean} draft\n * @param {string} scheduledAt\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createPush(messageId: string, title: string, body: string, topics?: string[], users?: string[], targets?: string[], data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: string, draft?: boolean, scheduledAt?: string): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n if (typeof title === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"title\"');\n }\n if (typeof body === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"body\"');\n }\n const apiPath = '/messaging/messages/push';\n const payload: Payload = {};\n if (typeof messageId !== 'undefined') {\n payload['messageId'] = messageId;\n }\n if (typeof title !== 'undefined') {\n payload['title'] = title;\n }\n if (typeof body !== 'undefined') {\n payload['body'] = body;\n }\n if (typeof topics !== 'undefined') {\n payload['topics'] = topics;\n }\n if (typeof users !== 'undefined') {\n payload['users'] = users;\n }\n if (typeof targets !== 'undefined') {\n payload['targets'] = targets;\n }\n if (typeof data !== 'undefined') {\n payload['data'] = data;\n }\n if (typeof action !== 'undefined') {\n payload['action'] = action;\n }\n if (typeof image !== 'undefined') {\n payload['image'] = image;\n }\n if (typeof icon !== 'undefined') {\n payload['icon'] = icon;\n }\n if (typeof sound !== 'undefined') {\n payload['sound'] = sound;\n }\n if (typeof color !== 'undefined') {\n payload['color'] = color;\n }\n if (typeof tag !== 'undefined') {\n payload['tag'] = tag;\n }\n if (typeof badge !== 'undefined') {\n payload['badge'] = badge;\n }\n if (typeof draft !== 'undefined') {\n payload['draft'] = draft;\n }\n if (typeof scheduledAt !== 'undefined') {\n payload['scheduledAt'] = scheduledAt;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update push notification\n *\n * Update a push notification by its unique ID.\n\n *\n * @param {string} messageId\n * @param {string[]} topics\n * @param {string[]} users\n * @param {string[]} targets\n * @param {string} title\n * @param {string} body\n * @param {object} data\n * @param {string} action\n * @param {string} image\n * @param {string} icon\n * @param {string} sound\n * @param {string} color\n * @param {string} tag\n * @param {number} badge\n * @param {boolean} draft\n * @param {string} scheduledAt\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updatePush(messageId: string, topics?: string[], users?: string[], targets?: string[], title?: string, body?: string, data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n const apiPath = '/messaging/messages/push/{messageId}'.replace('{messageId}', messageId);\n const payload: Payload = {};\n if (typeof topics !== 'undefined') {\n payload['topics'] = topics;\n }\n if (typeof users !== 'undefined') {\n payload['users'] = users;\n }\n if (typeof targets !== 'undefined') {\n payload['targets'] = targets;\n }\n if (typeof title !== 'undefined') {\n payload['title'] = title;\n }\n if (typeof body !== 'undefined') {\n payload['body'] = body;\n }\n if (typeof data !== 'undefined') {\n payload['data'] = data;\n }\n if (typeof action !== 'undefined') {\n payload['action'] = action;\n }\n if (typeof image !== 'undefined') {\n payload['image'] = image;\n }\n if (typeof icon !== 'undefined') {\n payload['icon'] = icon;\n }\n if (typeof sound !== 'undefined') {\n payload['sound'] = sound;\n }\n if (typeof color !== 'undefined') {\n payload['color'] = color;\n }\n if (typeof tag !== 'undefined') {\n payload['tag'] = tag;\n }\n if (typeof badge !== 'undefined') {\n payload['badge'] = badge;\n }\n if (typeof draft !== 'undefined') {\n payload['draft'] = draft;\n }\n if (typeof scheduledAt !== 'undefined') {\n payload['scheduledAt'] = scheduledAt;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create SMS\n *\n * Create a new SMS message.\n *\n * @param {string} messageId\n * @param {string} content\n * @param {string[]} topics\n * @param {string[]} users\n * @param {string[]} targets\n * @param {boolean} draft\n * @param {string} scheduledAt\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createSms(messageId: string, content: string, topics?: string[], users?: string[], targets?: string[], draft?: boolean, scheduledAt?: string): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n if (typeof content === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"content\"');\n }\n const apiPath = '/messaging/messages/sms';\n const payload: Payload = {};\n if (typeof messageId !== 'undefined') {\n payload['messageId'] = messageId;\n }\n if (typeof content !== 'undefined') {\n payload['content'] = content;\n }\n if (typeof topics !== 'undefined') {\n payload['topics'] = topics;\n }\n if (typeof users !== 'undefined') {\n payload['users'] = users;\n }\n if (typeof targets !== 'undefined') {\n payload['targets'] = targets;\n }\n if (typeof draft !== 'undefined') {\n payload['draft'] = draft;\n }\n if (typeof scheduledAt !== 'undefined') {\n payload['scheduledAt'] = scheduledAt;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update SMS\n *\n * Update an email message by its unique ID.\n\n *\n * @param {string} messageId\n * @param {string[]} topics\n * @param {string[]} users\n * @param {string[]} targets\n * @param {string} content\n * @param {boolean} draft\n * @param {string} scheduledAt\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateSms(messageId: string, topics?: string[], users?: string[], targets?: string[], content?: string, draft?: boolean, scheduledAt?: string): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n const apiPath = '/messaging/messages/sms/{messageId}'.replace('{messageId}', messageId);\n const payload: Payload = {};\n if (typeof topics !== 'undefined') {\n payload['topics'] = topics;\n }\n if (typeof users !== 'undefined') {\n payload['users'] = users;\n }\n if (typeof targets !== 'undefined') {\n payload['targets'] = targets;\n }\n if (typeof content !== 'undefined') {\n payload['content'] = content;\n }\n if (typeof draft !== 'undefined') {\n payload['draft'] = draft;\n }\n if (typeof scheduledAt !== 'undefined') {\n payload['scheduledAt'] = scheduledAt;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get message\n *\n * Get a message by its unique ID.\n\n *\n * @param {string} messageId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getMessage(messageId: string): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n const apiPath = '/messaging/messages/{messageId}'.replace('{messageId}', messageId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete message\n *\n * Delete a message. If the message is not a draft or scheduled, but has been sent, this will not recall the message.\n *\n * @param {string} messageId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async delete(messageId: string): Promise<{}> {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n const apiPath = '/messaging/messages/{messageId}'.replace('{messageId}', messageId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List message logs\n *\n * Get the message activity logs listed by its unique ID.\n *\n * @param {string} messageId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listMessageLogs(messageId: string, queries?: string[]): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n const apiPath = '/messaging/messages/{messageId}/logs'.replace('{messageId}', messageId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List message targets\n *\n * Get a list of the targets associated with a message.\n *\n * @param {string} messageId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listTargets(messageId: string, queries?: string[]): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n const apiPath = '/messaging/messages/{messageId}/targets'.replace('{messageId}', messageId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List providers\n *\n * Get a list of all providers from the current Appwrite project.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listProviders(queries?: string[], search?: string): Promise {\n const apiPath = '/messaging/providers';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create APNS provider\n *\n * Create a new Apple Push Notification service provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} authKey\n * @param {string} authKeyId\n * @param {string} teamId\n * @param {string} bundleId\n * @param {boolean} sandbox\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createApnsProvider(providerId: string, name: string, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/apns';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof authKey !== 'undefined') {\n payload['authKey'] = authKey;\n }\n if (typeof authKeyId !== 'undefined') {\n payload['authKeyId'] = authKeyId;\n }\n if (typeof teamId !== 'undefined') {\n payload['teamId'] = teamId;\n }\n if (typeof bundleId !== 'undefined') {\n payload['bundleId'] = bundleId;\n }\n if (typeof sandbox !== 'undefined') {\n payload['sandbox'] = sandbox;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update APNS provider\n *\n * Update a Apple Push Notification service provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {boolean} enabled\n * @param {string} authKey\n * @param {string} authKeyId\n * @param {string} teamId\n * @param {string} bundleId\n * @param {boolean} sandbox\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateApnsProvider(providerId: string, name?: string, enabled?: boolean, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/apns/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof authKey !== 'undefined') {\n payload['authKey'] = authKey;\n }\n if (typeof authKeyId !== 'undefined') {\n payload['authKeyId'] = authKeyId;\n }\n if (typeof teamId !== 'undefined') {\n payload['teamId'] = teamId;\n }\n if (typeof bundleId !== 'undefined') {\n payload['bundleId'] = bundleId;\n }\n if (typeof sandbox !== 'undefined') {\n payload['sandbox'] = sandbox;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create FCM provider\n *\n * Create a new Firebase Cloud Messaging provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {object} serviceAccountJSON\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createFcmProvider(providerId: string, name: string, serviceAccountJSON?: object, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/fcm';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof serviceAccountJSON !== 'undefined') {\n payload['serviceAccountJSON'] = serviceAccountJSON;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update FCM provider\n *\n * Update a Firebase Cloud Messaging provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {boolean} enabled\n * @param {object} serviceAccountJSON\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateFcmProvider(providerId: string, name?: string, enabled?: boolean, serviceAccountJSON?: object): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/fcm/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof serviceAccountJSON !== 'undefined') {\n payload['serviceAccountJSON'] = serviceAccountJSON;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create Mailgun provider\n *\n * Create a new Mailgun provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} apiKey\n * @param {string} domain\n * @param {boolean} isEuRegion\n * @param {string} fromName\n * @param {string} fromEmail\n * @param {string} replyToName\n * @param {string} replyToEmail\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createMailgunProvider(providerId: string, name: string, apiKey?: string, domain?: string, isEuRegion?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/mailgun';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof domain !== 'undefined') {\n payload['domain'] = domain;\n }\n if (typeof isEuRegion !== 'undefined') {\n payload['isEuRegion'] = isEuRegion;\n }\n if (typeof fromName !== 'undefined') {\n payload['fromName'] = fromName;\n }\n if (typeof fromEmail !== 'undefined') {\n payload['fromEmail'] = fromEmail;\n }\n if (typeof replyToName !== 'undefined') {\n payload['replyToName'] = replyToName;\n }\n if (typeof replyToEmail !== 'undefined') {\n payload['replyToEmail'] = replyToEmail;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update Mailgun provider\n *\n * Update a Mailgun provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} apiKey\n * @param {string} domain\n * @param {boolean} isEuRegion\n * @param {boolean} enabled\n * @param {string} fromName\n * @param {string} fromEmail\n * @param {string} replyToName\n * @param {string} replyToEmail\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateMailgunProvider(providerId: string, name?: string, apiKey?: string, domain?: string, isEuRegion?: boolean, enabled?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/mailgun/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof domain !== 'undefined') {\n payload['domain'] = domain;\n }\n if (typeof isEuRegion !== 'undefined') {\n payload['isEuRegion'] = isEuRegion;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof fromName !== 'undefined') {\n payload['fromName'] = fromName;\n }\n if (typeof fromEmail !== 'undefined') {\n payload['fromEmail'] = fromEmail;\n }\n if (typeof replyToName !== 'undefined') {\n payload['replyToName'] = replyToName;\n }\n if (typeof replyToEmail !== 'undefined') {\n payload['replyToEmail'] = replyToEmail;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create Msg91 provider\n *\n * Create a new MSG91 provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} templateId\n * @param {string} senderId\n * @param {string} authKey\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createMsg91Provider(providerId: string, name: string, templateId?: string, senderId?: string, authKey?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/msg91';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof templateId !== 'undefined') {\n payload['templateId'] = templateId;\n }\n if (typeof senderId !== 'undefined') {\n payload['senderId'] = senderId;\n }\n if (typeof authKey !== 'undefined') {\n payload['authKey'] = authKey;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update Msg91 provider\n *\n * Update a MSG91 provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {boolean} enabled\n * @param {string} templateId\n * @param {string} senderId\n * @param {string} authKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateMsg91Provider(providerId: string, name?: string, enabled?: boolean, templateId?: string, senderId?: string, authKey?: string): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/msg91/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof templateId !== 'undefined') {\n payload['templateId'] = templateId;\n }\n if (typeof senderId !== 'undefined') {\n payload['senderId'] = senderId;\n }\n if (typeof authKey !== 'undefined') {\n payload['authKey'] = authKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create Sendgrid provider\n *\n * Create a new Sendgrid provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} apiKey\n * @param {string} fromName\n * @param {string} fromEmail\n * @param {string} replyToName\n * @param {string} replyToEmail\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createSendgridProvider(providerId: string, name: string, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/sendgrid';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof fromName !== 'undefined') {\n payload['fromName'] = fromName;\n }\n if (typeof fromEmail !== 'undefined') {\n payload['fromEmail'] = fromEmail;\n }\n if (typeof replyToName !== 'undefined') {\n payload['replyToName'] = replyToName;\n }\n if (typeof replyToEmail !== 'undefined') {\n payload['replyToEmail'] = replyToEmail;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update Sendgrid provider\n *\n * Update a Sendgrid provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {boolean} enabled\n * @param {string} apiKey\n * @param {string} fromName\n * @param {string} fromEmail\n * @param {string} replyToName\n * @param {string} replyToEmail\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateSendgridProvider(providerId: string, name?: string, enabled?: boolean, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/sendgrid/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof fromName !== 'undefined') {\n payload['fromName'] = fromName;\n }\n if (typeof fromEmail !== 'undefined') {\n payload['fromEmail'] = fromEmail;\n }\n if (typeof replyToName !== 'undefined') {\n payload['replyToName'] = replyToName;\n }\n if (typeof replyToEmail !== 'undefined') {\n payload['replyToEmail'] = replyToEmail;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create SMTP provider\n *\n * Create a new SMTP provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} host\n * @param {number} port\n * @param {string} username\n * @param {string} password\n * @param {SmtpEncryption} encryption\n * @param {boolean} autoTLS\n * @param {string} mailer\n * @param {string} fromName\n * @param {string} fromEmail\n * @param {string} replyToName\n * @param {string} replyToEmail\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createSmtpProvider(providerId: string, name: string, host: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n if (typeof host === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"host\"');\n }\n const apiPath = '/messaging/providers/smtp';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof host !== 'undefined') {\n payload['host'] = host;\n }\n if (typeof port !== 'undefined') {\n payload['port'] = port;\n }\n if (typeof username !== 'undefined') {\n payload['username'] = username;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof encryption !== 'undefined') {\n payload['encryption'] = encryption;\n }\n if (typeof autoTLS !== 'undefined') {\n payload['autoTLS'] = autoTLS;\n }\n if (typeof mailer !== 'undefined') {\n payload['mailer'] = mailer;\n }\n if (typeof fromName !== 'undefined') {\n payload['fromName'] = fromName;\n }\n if (typeof fromEmail !== 'undefined') {\n payload['fromEmail'] = fromEmail;\n }\n if (typeof replyToName !== 'undefined') {\n payload['replyToName'] = replyToName;\n }\n if (typeof replyToEmail !== 'undefined') {\n payload['replyToEmail'] = replyToEmail;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update SMTP provider\n *\n * Update a SMTP provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} host\n * @param {number} port\n * @param {string} username\n * @param {string} password\n * @param {SmtpEncryption} encryption\n * @param {boolean} autoTLS\n * @param {string} mailer\n * @param {string} fromName\n * @param {string} fromEmail\n * @param {string} replyToName\n * @param {string} replyToEmail\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateSmtpProvider(providerId: string, name?: string, host?: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/smtp/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof host !== 'undefined') {\n payload['host'] = host;\n }\n if (typeof port !== 'undefined') {\n payload['port'] = port;\n }\n if (typeof username !== 'undefined') {\n payload['username'] = username;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof encryption !== 'undefined') {\n payload['encryption'] = encryption;\n }\n if (typeof autoTLS !== 'undefined') {\n payload['autoTLS'] = autoTLS;\n }\n if (typeof mailer !== 'undefined') {\n payload['mailer'] = mailer;\n }\n if (typeof fromName !== 'undefined') {\n payload['fromName'] = fromName;\n }\n if (typeof fromEmail !== 'undefined') {\n payload['fromEmail'] = fromEmail;\n }\n if (typeof replyToName !== 'undefined') {\n payload['replyToName'] = replyToName;\n }\n if (typeof replyToEmail !== 'undefined') {\n payload['replyToEmail'] = replyToEmail;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create Telesign provider\n *\n * Create a new Telesign provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} from\n * @param {string} customerId\n * @param {string} apiKey\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createTelesignProvider(providerId: string, name: string, from?: string, customerId?: string, apiKey?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/telesign';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof from !== 'undefined') {\n payload['from'] = from;\n }\n if (typeof customerId !== 'undefined') {\n payload['customerId'] = customerId;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update Telesign provider\n *\n * Update a Telesign provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {boolean} enabled\n * @param {string} customerId\n * @param {string} apiKey\n * @param {string} from\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateTelesignProvider(providerId: string, name?: string, enabled?: boolean, customerId?: string, apiKey?: string, from?: string): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/telesign/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof customerId !== 'undefined') {\n payload['customerId'] = customerId;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof from !== 'undefined') {\n payload['from'] = from;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create Textmagic provider\n *\n * Create a new Textmagic provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} from\n * @param {string} username\n * @param {string} apiKey\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createTextmagicProvider(providerId: string, name: string, from?: string, username?: string, apiKey?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/textmagic';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof from !== 'undefined') {\n payload['from'] = from;\n }\n if (typeof username !== 'undefined') {\n payload['username'] = username;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update Textmagic provider\n *\n * Update a Textmagic provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {boolean} enabled\n * @param {string} username\n * @param {string} apiKey\n * @param {string} from\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateTextmagicProvider(providerId: string, name?: string, enabled?: boolean, username?: string, apiKey?: string, from?: string): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/textmagic/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof username !== 'undefined') {\n payload['username'] = username;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof from !== 'undefined') {\n payload['from'] = from;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create Twilio provider\n *\n * Create a new Twilio provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} from\n * @param {string} accountSid\n * @param {string} authToken\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createTwilioProvider(providerId: string, name: string, from?: string, accountSid?: string, authToken?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/twilio';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof from !== 'undefined') {\n payload['from'] = from;\n }\n if (typeof accountSid !== 'undefined') {\n payload['accountSid'] = accountSid;\n }\n if (typeof authToken !== 'undefined') {\n payload['authToken'] = authToken;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update Twilio provider\n *\n * Update a Twilio provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {boolean} enabled\n * @param {string} accountSid\n * @param {string} authToken\n * @param {string} from\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateTwilioProvider(providerId: string, name?: string, enabled?: boolean, accountSid?: string, authToken?: string, from?: string): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/twilio/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof accountSid !== 'undefined') {\n payload['accountSid'] = accountSid;\n }\n if (typeof authToken !== 'undefined') {\n payload['authToken'] = authToken;\n }\n if (typeof from !== 'undefined') {\n payload['from'] = from;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create Vonage provider\n *\n * Create a new Vonage provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} from\n * @param {string} apiKey\n * @param {string} apiSecret\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createVonageProvider(providerId: string, name: string, from?: string, apiKey?: string, apiSecret?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/vonage';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof from !== 'undefined') {\n payload['from'] = from;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof apiSecret !== 'undefined') {\n payload['apiSecret'] = apiSecret;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update Vonage provider\n *\n * Update a Vonage provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {boolean} enabled\n * @param {string} apiKey\n * @param {string} apiSecret\n * @param {string} from\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateVonageProvider(providerId: string, name?: string, enabled?: boolean, apiKey?: string, apiSecret?: string, from?: string): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/vonage/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof apiSecret !== 'undefined') {\n payload['apiSecret'] = apiSecret;\n }\n if (typeof from !== 'undefined') {\n payload['from'] = from;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get provider\n *\n * Get a provider by its unique ID.\n\n *\n * @param {string} providerId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getProvider(providerId: string): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete provider\n *\n * Delete a provider by its unique ID.\n *\n * @param {string} providerId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteProvider(providerId: string): Promise<{}> {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List provider logs\n *\n * Get the provider activity logs listed by its unique ID.\n *\n * @param {string} providerId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listProviderLogs(providerId: string, queries?: string[]): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/{providerId}/logs'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List subscriber logs\n *\n * Get the subscriber activity logs listed by its unique ID.\n *\n * @param {string} subscriberId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listSubscriberLogs(subscriberId: string, queries?: string[]): Promise {\n if (typeof subscriberId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"subscriberId\"');\n }\n const apiPath = '/messaging/subscribers/{subscriberId}/logs'.replace('{subscriberId}', subscriberId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List topics\n *\n * Get a list of all topics from the current Appwrite project.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listTopics(queries?: string[], search?: string): Promise {\n const apiPath = '/messaging/topics';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create topic\n *\n * Create a new topic.\n *\n * @param {string} topicId\n * @param {string} name\n * @param {string[]} subscribe\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createTopic(topicId: string, name: string, subscribe?: string[]): Promise {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/topics';\n const payload: Payload = {};\n if (typeof topicId !== 'undefined') {\n payload['topicId'] = topicId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof subscribe !== 'undefined') {\n payload['subscribe'] = subscribe;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get topic\n *\n * Get a topic by its unique ID.\n\n *\n * @param {string} topicId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getTopic(topicId: string): Promise {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n const apiPath = '/messaging/topics/{topicId}'.replace('{topicId}', topicId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update topic\n *\n * Update a topic by its unique ID.\n\n *\n * @param {string} topicId\n * @param {string} name\n * @param {string[]} subscribe\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateTopic(topicId: string, name?: string, subscribe?: string[]): Promise {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n const apiPath = '/messaging/topics/{topicId}'.replace('{topicId}', topicId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof subscribe !== 'undefined') {\n payload['subscribe'] = subscribe;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete topic\n *\n * Delete a topic by its unique ID.\n *\n * @param {string} topicId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteTopic(topicId: string): Promise<{}> {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n const apiPath = '/messaging/topics/{topicId}'.replace('{topicId}', topicId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List topic logs\n *\n * Get the topic activity logs listed by its unique ID.\n *\n * @param {string} topicId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listTopicLogs(topicId: string, queries?: string[]): Promise {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n const apiPath = '/messaging/topics/{topicId}/logs'.replace('{topicId}', topicId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List subscribers\n *\n * Get a list of all subscribers from the current Appwrite project.\n *\n * @param {string} topicId\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listSubscribers(topicId: string, queries?: string[], search?: string): Promise {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n const apiPath = '/messaging/topics/{topicId}/subscribers'.replace('{topicId}', topicId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create subscriber\n *\n * Create a new subscriber.\n *\n * @param {string} topicId\n * @param {string} subscriberId\n * @param {string} targetId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createSubscriber(topicId: string, subscriberId: string, targetId: string): Promise {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n if (typeof subscriberId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"subscriberId\"');\n }\n if (typeof targetId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"targetId\"');\n }\n const apiPath = '/messaging/topics/{topicId}/subscribers'.replace('{topicId}', topicId);\n const payload: Payload = {};\n if (typeof subscriberId !== 'undefined') {\n payload['subscriberId'] = subscriberId;\n }\n if (typeof targetId !== 'undefined') {\n payload['targetId'] = targetId;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get subscriber\n *\n * Get a subscriber by its unique ID.\n\n *\n * @param {string} topicId\n * @param {string} subscriberId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getSubscriber(topicId: string, subscriberId: string): Promise {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n if (typeof subscriberId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"subscriberId\"');\n }\n const apiPath = '/messaging/topics/{topicId}/subscribers/{subscriberId}'.replace('{topicId}', topicId).replace('{subscriberId}', subscriberId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete subscriber\n *\n * Delete a subscriber by its unique ID.\n *\n * @param {string} topicId\n * @param {string} subscriberId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteSubscriber(topicId: string, subscriberId: string): Promise<{}> {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n if (typeof subscriberId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"subscriberId\"');\n }\n const apiPath = '/messaging/topics/{topicId}/subscribers/{subscriberId}'.replace('{topicId}', topicId).replace('{subscriberId}', subscriberId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/messaging.mjs b/node_modules/node-appwrite/dist/services/messaging.mjs new file mode 100644 index 0000000..789aec1 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/messaging.mjs @@ -0,0 +1,2155 @@ +import { AppwriteException } from '../client.mjs'; + +// src/services/messaging.ts +var Messaging = class { + constructor(client) { + this.client = client; + } + /** + * List messages + * + * Get a list of all messages from the current Appwrite project. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listMessages(queries, search) { + const apiPath = "/messaging/messages"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create email + * + * Create a new email message. + * + * @param {string} messageId + * @param {string} subject + * @param {string} content + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {string[]} cc + * @param {string[]} bcc + * @param {string[]} attachments + * @param {boolean} draft + * @param {boolean} html + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + async createEmail(messageId, subject, content, topics, users, targets, cc, bcc, attachments, draft, html, scheduledAt) { + if (typeof messageId === "undefined") { + throw new AppwriteException('Missing required parameter: "messageId"'); + } + if (typeof subject === "undefined") { + throw new AppwriteException('Missing required parameter: "subject"'); + } + if (typeof content === "undefined") { + throw new AppwriteException('Missing required parameter: "content"'); + } + const apiPath = "/messaging/messages/email"; + const payload = {}; + if (typeof messageId !== "undefined") { + payload["messageId"] = messageId; + } + if (typeof subject !== "undefined") { + payload["subject"] = subject; + } + if (typeof content !== "undefined") { + payload["content"] = content; + } + if (typeof topics !== "undefined") { + payload["topics"] = topics; + } + if (typeof users !== "undefined") { + payload["users"] = users; + } + if (typeof targets !== "undefined") { + payload["targets"] = targets; + } + if (typeof cc !== "undefined") { + payload["cc"] = cc; + } + if (typeof bcc !== "undefined") { + payload["bcc"] = bcc; + } + if (typeof attachments !== "undefined") { + payload["attachments"] = attachments; + } + if (typeof draft !== "undefined") { + payload["draft"] = draft; + } + if (typeof html !== "undefined") { + payload["html"] = html; + } + if (typeof scheduledAt !== "undefined") { + payload["scheduledAt"] = scheduledAt; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update email + * + * Update an email message by its unique ID. + + * + * @param {string} messageId + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {string} subject + * @param {string} content + * @param {boolean} draft + * @param {boolean} html + * @param {string[]} cc + * @param {string[]} bcc + * @param {string} scheduledAt + * @param {string[]} attachments + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateEmail(messageId, topics, users, targets, subject, content, draft, html, cc, bcc, scheduledAt, attachments) { + if (typeof messageId === "undefined") { + throw new AppwriteException('Missing required parameter: "messageId"'); + } + const apiPath = "/messaging/messages/email/{messageId}".replace("{messageId}", messageId); + const payload = {}; + if (typeof topics !== "undefined") { + payload["topics"] = topics; + } + if (typeof users !== "undefined") { + payload["users"] = users; + } + if (typeof targets !== "undefined") { + payload["targets"] = targets; + } + if (typeof subject !== "undefined") { + payload["subject"] = subject; + } + if (typeof content !== "undefined") { + payload["content"] = content; + } + if (typeof draft !== "undefined") { + payload["draft"] = draft; + } + if (typeof html !== "undefined") { + payload["html"] = html; + } + if (typeof cc !== "undefined") { + payload["cc"] = cc; + } + if (typeof bcc !== "undefined") { + payload["bcc"] = bcc; + } + if (typeof scheduledAt !== "undefined") { + payload["scheduledAt"] = scheduledAt; + } + if (typeof attachments !== "undefined") { + payload["attachments"] = attachments; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create push notification + * + * Create a new push notification. + * + * @param {string} messageId + * @param {string} title + * @param {string} body + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {object} data + * @param {string} action + * @param {string} image + * @param {string} icon + * @param {string} sound + * @param {string} color + * @param {string} tag + * @param {string} badge + * @param {boolean} draft + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + async createPush(messageId, title, body, topics, users, targets, data, action, image, icon, sound, color, tag, badge, draft, scheduledAt) { + if (typeof messageId === "undefined") { + throw new AppwriteException('Missing required parameter: "messageId"'); + } + if (typeof title === "undefined") { + throw new AppwriteException('Missing required parameter: "title"'); + } + if (typeof body === "undefined") { + throw new AppwriteException('Missing required parameter: "body"'); + } + const apiPath = "/messaging/messages/push"; + const payload = {}; + if (typeof messageId !== "undefined") { + payload["messageId"] = messageId; + } + if (typeof title !== "undefined") { + payload["title"] = title; + } + if (typeof body !== "undefined") { + payload["body"] = body; + } + if (typeof topics !== "undefined") { + payload["topics"] = topics; + } + if (typeof users !== "undefined") { + payload["users"] = users; + } + if (typeof targets !== "undefined") { + payload["targets"] = targets; + } + if (typeof data !== "undefined") { + payload["data"] = data; + } + if (typeof action !== "undefined") { + payload["action"] = action; + } + if (typeof image !== "undefined") { + payload["image"] = image; + } + if (typeof icon !== "undefined") { + payload["icon"] = icon; + } + if (typeof sound !== "undefined") { + payload["sound"] = sound; + } + if (typeof color !== "undefined") { + payload["color"] = color; + } + if (typeof tag !== "undefined") { + payload["tag"] = tag; + } + if (typeof badge !== "undefined") { + payload["badge"] = badge; + } + if (typeof draft !== "undefined") { + payload["draft"] = draft; + } + if (typeof scheduledAt !== "undefined") { + payload["scheduledAt"] = scheduledAt; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update push notification + * + * Update a push notification by its unique ID. + + * + * @param {string} messageId + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {string} title + * @param {string} body + * @param {object} data + * @param {string} action + * @param {string} image + * @param {string} icon + * @param {string} sound + * @param {string} color + * @param {string} tag + * @param {number} badge + * @param {boolean} draft + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + async updatePush(messageId, topics, users, targets, title, body, data, action, image, icon, sound, color, tag, badge, draft, scheduledAt) { + if (typeof messageId === "undefined") { + throw new AppwriteException('Missing required parameter: "messageId"'); + } + const apiPath = "/messaging/messages/push/{messageId}".replace("{messageId}", messageId); + const payload = {}; + if (typeof topics !== "undefined") { + payload["topics"] = topics; + } + if (typeof users !== "undefined") { + payload["users"] = users; + } + if (typeof targets !== "undefined") { + payload["targets"] = targets; + } + if (typeof title !== "undefined") { + payload["title"] = title; + } + if (typeof body !== "undefined") { + payload["body"] = body; + } + if (typeof data !== "undefined") { + payload["data"] = data; + } + if (typeof action !== "undefined") { + payload["action"] = action; + } + if (typeof image !== "undefined") { + payload["image"] = image; + } + if (typeof icon !== "undefined") { + payload["icon"] = icon; + } + if (typeof sound !== "undefined") { + payload["sound"] = sound; + } + if (typeof color !== "undefined") { + payload["color"] = color; + } + if (typeof tag !== "undefined") { + payload["tag"] = tag; + } + if (typeof badge !== "undefined") { + payload["badge"] = badge; + } + if (typeof draft !== "undefined") { + payload["draft"] = draft; + } + if (typeof scheduledAt !== "undefined") { + payload["scheduledAt"] = scheduledAt; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create SMS + * + * Create a new SMS message. + * + * @param {string} messageId + * @param {string} content + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {boolean} draft + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + async createSms(messageId, content, topics, users, targets, draft, scheduledAt) { + if (typeof messageId === "undefined") { + throw new AppwriteException('Missing required parameter: "messageId"'); + } + if (typeof content === "undefined") { + throw new AppwriteException('Missing required parameter: "content"'); + } + const apiPath = "/messaging/messages/sms"; + const payload = {}; + if (typeof messageId !== "undefined") { + payload["messageId"] = messageId; + } + if (typeof content !== "undefined") { + payload["content"] = content; + } + if (typeof topics !== "undefined") { + payload["topics"] = topics; + } + if (typeof users !== "undefined") { + payload["users"] = users; + } + if (typeof targets !== "undefined") { + payload["targets"] = targets; + } + if (typeof draft !== "undefined") { + payload["draft"] = draft; + } + if (typeof scheduledAt !== "undefined") { + payload["scheduledAt"] = scheduledAt; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update SMS + * + * Update an email message by its unique ID. + + * + * @param {string} messageId + * @param {string[]} topics + * @param {string[]} users + * @param {string[]} targets + * @param {string} content + * @param {boolean} draft + * @param {string} scheduledAt + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateSms(messageId, topics, users, targets, content, draft, scheduledAt) { + if (typeof messageId === "undefined") { + throw new AppwriteException('Missing required parameter: "messageId"'); + } + const apiPath = "/messaging/messages/sms/{messageId}".replace("{messageId}", messageId); + const payload = {}; + if (typeof topics !== "undefined") { + payload["topics"] = topics; + } + if (typeof users !== "undefined") { + payload["users"] = users; + } + if (typeof targets !== "undefined") { + payload["targets"] = targets; + } + if (typeof content !== "undefined") { + payload["content"] = content; + } + if (typeof draft !== "undefined") { + payload["draft"] = draft; + } + if (typeof scheduledAt !== "undefined") { + payload["scheduledAt"] = scheduledAt; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Get message + * + * Get a message by its unique ID. + + * + * @param {string} messageId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getMessage(messageId) { + if (typeof messageId === "undefined") { + throw new AppwriteException('Missing required parameter: "messageId"'); + } + const apiPath = "/messaging/messages/{messageId}".replace("{messageId}", messageId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete message + * + * Delete a message. If the message is not a draft or scheduled, but has been sent, this will not recall the message. + * + * @param {string} messageId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async delete(messageId) { + if (typeof messageId === "undefined") { + throw new AppwriteException('Missing required parameter: "messageId"'); + } + const apiPath = "/messaging/messages/{messageId}".replace("{messageId}", messageId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List message logs + * + * Get the message activity logs listed by its unique ID. + * + * @param {string} messageId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listMessageLogs(messageId, queries) { + if (typeof messageId === "undefined") { + throw new AppwriteException('Missing required parameter: "messageId"'); + } + const apiPath = "/messaging/messages/{messageId}/logs".replace("{messageId}", messageId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List message targets + * + * Get a list of the targets associated with a message. + * + * @param {string} messageId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listTargets(messageId, queries) { + if (typeof messageId === "undefined") { + throw new AppwriteException('Missing required parameter: "messageId"'); + } + const apiPath = "/messaging/messages/{messageId}/targets".replace("{messageId}", messageId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List providers + * + * Get a list of all providers from the current Appwrite project. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listProviders(queries, search) { + const apiPath = "/messaging/providers"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create APNS provider + * + * Create a new Apple Push Notification service provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} authKey + * @param {string} authKeyId + * @param {string} teamId + * @param {string} bundleId + * @param {boolean} sandbox + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createApnsProvider(providerId, name, authKey, authKeyId, teamId, bundleId, sandbox, enabled) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/apns"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof authKey !== "undefined") { + payload["authKey"] = authKey; + } + if (typeof authKeyId !== "undefined") { + payload["authKeyId"] = authKeyId; + } + if (typeof teamId !== "undefined") { + payload["teamId"] = teamId; + } + if (typeof bundleId !== "undefined") { + payload["bundleId"] = bundleId; + } + if (typeof sandbox !== "undefined") { + payload["sandbox"] = sandbox; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update APNS provider + * + * Update a Apple Push Notification service provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} authKey + * @param {string} authKeyId + * @param {string} teamId + * @param {string} bundleId + * @param {boolean} sandbox + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateApnsProvider(providerId, name, enabled, authKey, authKeyId, teamId, bundleId, sandbox) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/apns/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof authKey !== "undefined") { + payload["authKey"] = authKey; + } + if (typeof authKeyId !== "undefined") { + payload["authKeyId"] = authKeyId; + } + if (typeof teamId !== "undefined") { + payload["teamId"] = teamId; + } + if (typeof bundleId !== "undefined") { + payload["bundleId"] = bundleId; + } + if (typeof sandbox !== "undefined") { + payload["sandbox"] = sandbox; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create FCM provider + * + * Create a new Firebase Cloud Messaging provider. + * + * @param {string} providerId + * @param {string} name + * @param {object} serviceAccountJSON + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createFcmProvider(providerId, name, serviceAccountJSON, enabled) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/fcm"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof serviceAccountJSON !== "undefined") { + payload["serviceAccountJSON"] = serviceAccountJSON; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update FCM provider + * + * Update a Firebase Cloud Messaging provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {object} serviceAccountJSON + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateFcmProvider(providerId, name, enabled, serviceAccountJSON) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/fcm/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof serviceAccountJSON !== "undefined") { + payload["serviceAccountJSON"] = serviceAccountJSON; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create Mailgun provider + * + * Create a new Mailgun provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} apiKey + * @param {string} domain + * @param {boolean} isEuRegion + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createMailgunProvider(providerId, name, apiKey, domain, isEuRegion, fromName, fromEmail, replyToName, replyToEmail, enabled) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/mailgun"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof domain !== "undefined") { + payload["domain"] = domain; + } + if (typeof isEuRegion !== "undefined") { + payload["isEuRegion"] = isEuRegion; + } + if (typeof fromName !== "undefined") { + payload["fromName"] = fromName; + } + if (typeof fromEmail !== "undefined") { + payload["fromEmail"] = fromEmail; + } + if (typeof replyToName !== "undefined") { + payload["replyToName"] = replyToName; + } + if (typeof replyToEmail !== "undefined") { + payload["replyToEmail"] = replyToEmail; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update Mailgun provider + * + * Update a Mailgun provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {string} apiKey + * @param {string} domain + * @param {boolean} isEuRegion + * @param {boolean} enabled + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateMailgunProvider(providerId, name, apiKey, domain, isEuRegion, enabled, fromName, fromEmail, replyToName, replyToEmail) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/mailgun/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof domain !== "undefined") { + payload["domain"] = domain; + } + if (typeof isEuRegion !== "undefined") { + payload["isEuRegion"] = isEuRegion; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof fromName !== "undefined") { + payload["fromName"] = fromName; + } + if (typeof fromEmail !== "undefined") { + payload["fromEmail"] = fromEmail; + } + if (typeof replyToName !== "undefined") { + payload["replyToName"] = replyToName; + } + if (typeof replyToEmail !== "undefined") { + payload["replyToEmail"] = replyToEmail; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create Msg91 provider + * + * Create a new MSG91 provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} templateId + * @param {string} senderId + * @param {string} authKey + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createMsg91Provider(providerId, name, templateId, senderId, authKey, enabled) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/msg91"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof templateId !== "undefined") { + payload["templateId"] = templateId; + } + if (typeof senderId !== "undefined") { + payload["senderId"] = senderId; + } + if (typeof authKey !== "undefined") { + payload["authKey"] = authKey; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update Msg91 provider + * + * Update a MSG91 provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} templateId + * @param {string} senderId + * @param {string} authKey + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateMsg91Provider(providerId, name, enabled, templateId, senderId, authKey) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/msg91/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof templateId !== "undefined") { + payload["templateId"] = templateId; + } + if (typeof senderId !== "undefined") { + payload["senderId"] = senderId; + } + if (typeof authKey !== "undefined") { + payload["authKey"] = authKey; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create Sendgrid provider + * + * Create a new Sendgrid provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} apiKey + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createSendgridProvider(providerId, name, apiKey, fromName, fromEmail, replyToName, replyToEmail, enabled) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/sendgrid"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof fromName !== "undefined") { + payload["fromName"] = fromName; + } + if (typeof fromEmail !== "undefined") { + payload["fromEmail"] = fromEmail; + } + if (typeof replyToName !== "undefined") { + payload["replyToName"] = replyToName; + } + if (typeof replyToEmail !== "undefined") { + payload["replyToEmail"] = replyToEmail; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update Sendgrid provider + * + * Update a Sendgrid provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} apiKey + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateSendgridProvider(providerId, name, enabled, apiKey, fromName, fromEmail, replyToName, replyToEmail) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/sendgrid/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof fromName !== "undefined") { + payload["fromName"] = fromName; + } + if (typeof fromEmail !== "undefined") { + payload["fromEmail"] = fromEmail; + } + if (typeof replyToName !== "undefined") { + payload["replyToName"] = replyToName; + } + if (typeof replyToEmail !== "undefined") { + payload["replyToEmail"] = replyToEmail; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create SMTP provider + * + * Create a new SMTP provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} host + * @param {number} port + * @param {string} username + * @param {string} password + * @param {SmtpEncryption} encryption + * @param {boolean} autoTLS + * @param {string} mailer + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createSmtpProvider(providerId, name, host, port, username, password, encryption, autoTLS, mailer, fromName, fromEmail, replyToName, replyToEmail, enabled) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + if (typeof host === "undefined") { + throw new AppwriteException('Missing required parameter: "host"'); + } + const apiPath = "/messaging/providers/smtp"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof host !== "undefined") { + payload["host"] = host; + } + if (typeof port !== "undefined") { + payload["port"] = port; + } + if (typeof username !== "undefined") { + payload["username"] = username; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof encryption !== "undefined") { + payload["encryption"] = encryption; + } + if (typeof autoTLS !== "undefined") { + payload["autoTLS"] = autoTLS; + } + if (typeof mailer !== "undefined") { + payload["mailer"] = mailer; + } + if (typeof fromName !== "undefined") { + payload["fromName"] = fromName; + } + if (typeof fromEmail !== "undefined") { + payload["fromEmail"] = fromEmail; + } + if (typeof replyToName !== "undefined") { + payload["replyToName"] = replyToName; + } + if (typeof replyToEmail !== "undefined") { + payload["replyToEmail"] = replyToEmail; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update SMTP provider + * + * Update a SMTP provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {string} host + * @param {number} port + * @param {string} username + * @param {string} password + * @param {SmtpEncryption} encryption + * @param {boolean} autoTLS + * @param {string} mailer + * @param {string} fromName + * @param {string} fromEmail + * @param {string} replyToName + * @param {string} replyToEmail + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateSmtpProvider(providerId, name, host, port, username, password, encryption, autoTLS, mailer, fromName, fromEmail, replyToName, replyToEmail, enabled) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/smtp/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof host !== "undefined") { + payload["host"] = host; + } + if (typeof port !== "undefined") { + payload["port"] = port; + } + if (typeof username !== "undefined") { + payload["username"] = username; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof encryption !== "undefined") { + payload["encryption"] = encryption; + } + if (typeof autoTLS !== "undefined") { + payload["autoTLS"] = autoTLS; + } + if (typeof mailer !== "undefined") { + payload["mailer"] = mailer; + } + if (typeof fromName !== "undefined") { + payload["fromName"] = fromName; + } + if (typeof fromEmail !== "undefined") { + payload["fromEmail"] = fromEmail; + } + if (typeof replyToName !== "undefined") { + payload["replyToName"] = replyToName; + } + if (typeof replyToEmail !== "undefined") { + payload["replyToEmail"] = replyToEmail; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create Telesign provider + * + * Create a new Telesign provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} from + * @param {string} customerId + * @param {string} apiKey + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createTelesignProvider(providerId, name, from, customerId, apiKey, enabled) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/telesign"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof from !== "undefined") { + payload["from"] = from; + } + if (typeof customerId !== "undefined") { + payload["customerId"] = customerId; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update Telesign provider + * + * Update a Telesign provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} customerId + * @param {string} apiKey + * @param {string} from + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateTelesignProvider(providerId, name, enabled, customerId, apiKey, from) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/telesign/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof customerId !== "undefined") { + payload["customerId"] = customerId; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof from !== "undefined") { + payload["from"] = from; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create Textmagic provider + * + * Create a new Textmagic provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} from + * @param {string} username + * @param {string} apiKey + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createTextmagicProvider(providerId, name, from, username, apiKey, enabled) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/textmagic"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof from !== "undefined") { + payload["from"] = from; + } + if (typeof username !== "undefined") { + payload["username"] = username; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update Textmagic provider + * + * Update a Textmagic provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} username + * @param {string} apiKey + * @param {string} from + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateTextmagicProvider(providerId, name, enabled, username, apiKey, from) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/textmagic/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof username !== "undefined") { + payload["username"] = username; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof from !== "undefined") { + payload["from"] = from; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create Twilio provider + * + * Create a new Twilio provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} from + * @param {string} accountSid + * @param {string} authToken + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createTwilioProvider(providerId, name, from, accountSid, authToken, enabled) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/twilio"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof from !== "undefined") { + payload["from"] = from; + } + if (typeof accountSid !== "undefined") { + payload["accountSid"] = accountSid; + } + if (typeof authToken !== "undefined") { + payload["authToken"] = authToken; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update Twilio provider + * + * Update a Twilio provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} accountSid + * @param {string} authToken + * @param {string} from + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateTwilioProvider(providerId, name, enabled, accountSid, authToken, from) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/twilio/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof accountSid !== "undefined") { + payload["accountSid"] = accountSid; + } + if (typeof authToken !== "undefined") { + payload["authToken"] = authToken; + } + if (typeof from !== "undefined") { + payload["from"] = from; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create Vonage provider + * + * Create a new Vonage provider. + * + * @param {string} providerId + * @param {string} name + * @param {string} from + * @param {string} apiKey + * @param {string} apiSecret + * @param {boolean} enabled + * @throws {AppwriteException} + * @returns {Promise} + */ + async createVonageProvider(providerId, name, from, apiKey, apiSecret, enabled) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/providers/vonage"; + const payload = {}; + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof from !== "undefined") { + payload["from"] = from; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof apiSecret !== "undefined") { + payload["apiSecret"] = apiSecret; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update Vonage provider + * + * Update a Vonage provider by its unique ID. + * + * @param {string} providerId + * @param {string} name + * @param {boolean} enabled + * @param {string} apiKey + * @param {string} apiSecret + * @param {string} from + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateVonageProvider(providerId, name, enabled, apiKey, apiSecret, from) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/vonage/{providerId}".replace("{providerId}", providerId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof apiKey !== "undefined") { + payload["apiKey"] = apiKey; + } + if (typeof apiSecret !== "undefined") { + payload["apiSecret"] = apiSecret; + } + if (typeof from !== "undefined") { + payload["from"] = from; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Get provider + * + * Get a provider by its unique ID. + + * + * @param {string} providerId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getProvider(providerId) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/{providerId}".replace("{providerId}", providerId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete provider + * + * Delete a provider by its unique ID. + * + * @param {string} providerId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteProvider(providerId) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/{providerId}".replace("{providerId}", providerId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List provider logs + * + * Get the provider activity logs listed by its unique ID. + * + * @param {string} providerId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listProviderLogs(providerId, queries) { + if (typeof providerId === "undefined") { + throw new AppwriteException('Missing required parameter: "providerId"'); + } + const apiPath = "/messaging/providers/{providerId}/logs".replace("{providerId}", providerId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List subscriber logs + * + * Get the subscriber activity logs listed by its unique ID. + * + * @param {string} subscriberId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listSubscriberLogs(subscriberId, queries) { + if (typeof subscriberId === "undefined") { + throw new AppwriteException('Missing required parameter: "subscriberId"'); + } + const apiPath = "/messaging/subscribers/{subscriberId}/logs".replace("{subscriberId}", subscriberId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List topics + * + * Get a list of all topics from the current Appwrite project. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listTopics(queries, search) { + const apiPath = "/messaging/topics"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create topic + * + * Create a new topic. + * + * @param {string} topicId + * @param {string} name + * @param {string[]} subscribe + * @throws {AppwriteException} + * @returns {Promise} + */ + async createTopic(topicId, name, subscribe) { + if (typeof topicId === "undefined") { + throw new AppwriteException('Missing required parameter: "topicId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/messaging/topics"; + const payload = {}; + if (typeof topicId !== "undefined") { + payload["topicId"] = topicId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof subscribe !== "undefined") { + payload["subscribe"] = subscribe; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get topic + * + * Get a topic by its unique ID. + + * + * @param {string} topicId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getTopic(topicId) { + if (typeof topicId === "undefined") { + throw new AppwriteException('Missing required parameter: "topicId"'); + } + const apiPath = "/messaging/topics/{topicId}".replace("{topicId}", topicId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update topic + * + * Update a topic by its unique ID. + + * + * @param {string} topicId + * @param {string} name + * @param {string[]} subscribe + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateTopic(topicId, name, subscribe) { + if (typeof topicId === "undefined") { + throw new AppwriteException('Missing required parameter: "topicId"'); + } + const apiPath = "/messaging/topics/{topicId}".replace("{topicId}", topicId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof subscribe !== "undefined") { + payload["subscribe"] = subscribe; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Delete topic + * + * Delete a topic by its unique ID. + * + * @param {string} topicId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteTopic(topicId) { + if (typeof topicId === "undefined") { + throw new AppwriteException('Missing required parameter: "topicId"'); + } + const apiPath = "/messaging/topics/{topicId}".replace("{topicId}", topicId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List topic logs + * + * Get the topic activity logs listed by its unique ID. + * + * @param {string} topicId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listTopicLogs(topicId, queries) { + if (typeof topicId === "undefined") { + throw new AppwriteException('Missing required parameter: "topicId"'); + } + const apiPath = "/messaging/topics/{topicId}/logs".replace("{topicId}", topicId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List subscribers + * + * Get a list of all subscribers from the current Appwrite project. + * + * @param {string} topicId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listSubscribers(topicId, queries, search) { + if (typeof topicId === "undefined") { + throw new AppwriteException('Missing required parameter: "topicId"'); + } + const apiPath = "/messaging/topics/{topicId}/subscribers".replace("{topicId}", topicId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create subscriber + * + * Create a new subscriber. + * + * @param {string} topicId + * @param {string} subscriberId + * @param {string} targetId + * @throws {AppwriteException} + * @returns {Promise} + */ + async createSubscriber(topicId, subscriberId, targetId) { + if (typeof topicId === "undefined") { + throw new AppwriteException('Missing required parameter: "topicId"'); + } + if (typeof subscriberId === "undefined") { + throw new AppwriteException('Missing required parameter: "subscriberId"'); + } + if (typeof targetId === "undefined") { + throw new AppwriteException('Missing required parameter: "targetId"'); + } + const apiPath = "/messaging/topics/{topicId}/subscribers".replace("{topicId}", topicId); + const payload = {}; + if (typeof subscriberId !== "undefined") { + payload["subscriberId"] = subscriberId; + } + if (typeof targetId !== "undefined") { + payload["targetId"] = targetId; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get subscriber + * + * Get a subscriber by its unique ID. + + * + * @param {string} topicId + * @param {string} subscriberId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getSubscriber(topicId, subscriberId) { + if (typeof topicId === "undefined") { + throw new AppwriteException('Missing required parameter: "topicId"'); + } + if (typeof subscriberId === "undefined") { + throw new AppwriteException('Missing required parameter: "subscriberId"'); + } + const apiPath = "/messaging/topics/{topicId}/subscribers/{subscriberId}".replace("{topicId}", topicId).replace("{subscriberId}", subscriberId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete subscriber + * + * Delete a subscriber by its unique ID. + * + * @param {string} topicId + * @param {string} subscriberId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteSubscriber(topicId, subscriberId) { + if (typeof topicId === "undefined") { + throw new AppwriteException('Missing required parameter: "topicId"'); + } + if (typeof subscriberId === "undefined") { + throw new AppwriteException('Missing required parameter: "subscriberId"'); + } + const apiPath = "/messaging/topics/{topicId}/subscribers/{subscriberId}".replace("{topicId}", topicId).replace("{subscriberId}", subscriberId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } +}; + +export { Messaging }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=messaging.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/messaging.mjs.map b/node_modules/node-appwrite/dist/services/messaging.mjs.map new file mode 100644 index 0000000..e884054 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/messaging.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/messaging.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { SmtpEncryption } from '../enums/smtp-encryption';\n\nexport class Messaging {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * List messages\n *\n * Get a list of all messages from the current Appwrite project.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listMessages(queries?: string[], search?: string): Promise {\n const apiPath = '/messaging/messages';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create email\n *\n * Create a new email message.\n *\n * @param {string} messageId\n * @param {string} subject\n * @param {string} content\n * @param {string[]} topics\n * @param {string[]} users\n * @param {string[]} targets\n * @param {string[]} cc\n * @param {string[]} bcc\n * @param {string[]} attachments\n * @param {boolean} draft\n * @param {boolean} html\n * @param {string} scheduledAt\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createEmail(messageId: string, subject: string, content: string, topics?: string[], users?: string[], targets?: string[], cc?: string[], bcc?: string[], attachments?: string[], draft?: boolean, html?: boolean, scheduledAt?: string): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n if (typeof subject === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"subject\"');\n }\n if (typeof content === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"content\"');\n }\n const apiPath = '/messaging/messages/email';\n const payload: Payload = {};\n if (typeof messageId !== 'undefined') {\n payload['messageId'] = messageId;\n }\n if (typeof subject !== 'undefined') {\n payload['subject'] = subject;\n }\n if (typeof content !== 'undefined') {\n payload['content'] = content;\n }\n if (typeof topics !== 'undefined') {\n payload['topics'] = topics;\n }\n if (typeof users !== 'undefined') {\n payload['users'] = users;\n }\n if (typeof targets !== 'undefined') {\n payload['targets'] = targets;\n }\n if (typeof cc !== 'undefined') {\n payload['cc'] = cc;\n }\n if (typeof bcc !== 'undefined') {\n payload['bcc'] = bcc;\n }\n if (typeof attachments !== 'undefined') {\n payload['attachments'] = attachments;\n }\n if (typeof draft !== 'undefined') {\n payload['draft'] = draft;\n }\n if (typeof html !== 'undefined') {\n payload['html'] = html;\n }\n if (typeof scheduledAt !== 'undefined') {\n payload['scheduledAt'] = scheduledAt;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update email\n *\n * Update an email message by its unique ID.\n\n *\n * @param {string} messageId\n * @param {string[]} topics\n * @param {string[]} users\n * @param {string[]} targets\n * @param {string} subject\n * @param {string} content\n * @param {boolean} draft\n * @param {boolean} html\n * @param {string[]} cc\n * @param {string[]} bcc\n * @param {string} scheduledAt\n * @param {string[]} attachments\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateEmail(messageId: string, topics?: string[], users?: string[], targets?: string[], subject?: string, content?: string, draft?: boolean, html?: boolean, cc?: string[], bcc?: string[], scheduledAt?: string, attachments?: string[]): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n const apiPath = '/messaging/messages/email/{messageId}'.replace('{messageId}', messageId);\n const payload: Payload = {};\n if (typeof topics !== 'undefined') {\n payload['topics'] = topics;\n }\n if (typeof users !== 'undefined') {\n payload['users'] = users;\n }\n if (typeof targets !== 'undefined') {\n payload['targets'] = targets;\n }\n if (typeof subject !== 'undefined') {\n payload['subject'] = subject;\n }\n if (typeof content !== 'undefined') {\n payload['content'] = content;\n }\n if (typeof draft !== 'undefined') {\n payload['draft'] = draft;\n }\n if (typeof html !== 'undefined') {\n payload['html'] = html;\n }\n if (typeof cc !== 'undefined') {\n payload['cc'] = cc;\n }\n if (typeof bcc !== 'undefined') {\n payload['bcc'] = bcc;\n }\n if (typeof scheduledAt !== 'undefined') {\n payload['scheduledAt'] = scheduledAt;\n }\n if (typeof attachments !== 'undefined') {\n payload['attachments'] = attachments;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create push notification\n *\n * Create a new push notification.\n *\n * @param {string} messageId\n * @param {string} title\n * @param {string} body\n * @param {string[]} topics\n * @param {string[]} users\n * @param {string[]} targets\n * @param {object} data\n * @param {string} action\n * @param {string} image\n * @param {string} icon\n * @param {string} sound\n * @param {string} color\n * @param {string} tag\n * @param {string} badge\n * @param {boolean} draft\n * @param {string} scheduledAt\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createPush(messageId: string, title: string, body: string, topics?: string[], users?: string[], targets?: string[], data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: string, draft?: boolean, scheduledAt?: string): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n if (typeof title === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"title\"');\n }\n if (typeof body === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"body\"');\n }\n const apiPath = '/messaging/messages/push';\n const payload: Payload = {};\n if (typeof messageId !== 'undefined') {\n payload['messageId'] = messageId;\n }\n if (typeof title !== 'undefined') {\n payload['title'] = title;\n }\n if (typeof body !== 'undefined') {\n payload['body'] = body;\n }\n if (typeof topics !== 'undefined') {\n payload['topics'] = topics;\n }\n if (typeof users !== 'undefined') {\n payload['users'] = users;\n }\n if (typeof targets !== 'undefined') {\n payload['targets'] = targets;\n }\n if (typeof data !== 'undefined') {\n payload['data'] = data;\n }\n if (typeof action !== 'undefined') {\n payload['action'] = action;\n }\n if (typeof image !== 'undefined') {\n payload['image'] = image;\n }\n if (typeof icon !== 'undefined') {\n payload['icon'] = icon;\n }\n if (typeof sound !== 'undefined') {\n payload['sound'] = sound;\n }\n if (typeof color !== 'undefined') {\n payload['color'] = color;\n }\n if (typeof tag !== 'undefined') {\n payload['tag'] = tag;\n }\n if (typeof badge !== 'undefined') {\n payload['badge'] = badge;\n }\n if (typeof draft !== 'undefined') {\n payload['draft'] = draft;\n }\n if (typeof scheduledAt !== 'undefined') {\n payload['scheduledAt'] = scheduledAt;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update push notification\n *\n * Update a push notification by its unique ID.\n\n *\n * @param {string} messageId\n * @param {string[]} topics\n * @param {string[]} users\n * @param {string[]} targets\n * @param {string} title\n * @param {string} body\n * @param {object} data\n * @param {string} action\n * @param {string} image\n * @param {string} icon\n * @param {string} sound\n * @param {string} color\n * @param {string} tag\n * @param {number} badge\n * @param {boolean} draft\n * @param {string} scheduledAt\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updatePush(messageId: string, topics?: string[], users?: string[], targets?: string[], title?: string, body?: string, data?: object, action?: string, image?: string, icon?: string, sound?: string, color?: string, tag?: string, badge?: number, draft?: boolean, scheduledAt?: string): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n const apiPath = '/messaging/messages/push/{messageId}'.replace('{messageId}', messageId);\n const payload: Payload = {};\n if (typeof topics !== 'undefined') {\n payload['topics'] = topics;\n }\n if (typeof users !== 'undefined') {\n payload['users'] = users;\n }\n if (typeof targets !== 'undefined') {\n payload['targets'] = targets;\n }\n if (typeof title !== 'undefined') {\n payload['title'] = title;\n }\n if (typeof body !== 'undefined') {\n payload['body'] = body;\n }\n if (typeof data !== 'undefined') {\n payload['data'] = data;\n }\n if (typeof action !== 'undefined') {\n payload['action'] = action;\n }\n if (typeof image !== 'undefined') {\n payload['image'] = image;\n }\n if (typeof icon !== 'undefined') {\n payload['icon'] = icon;\n }\n if (typeof sound !== 'undefined') {\n payload['sound'] = sound;\n }\n if (typeof color !== 'undefined') {\n payload['color'] = color;\n }\n if (typeof tag !== 'undefined') {\n payload['tag'] = tag;\n }\n if (typeof badge !== 'undefined') {\n payload['badge'] = badge;\n }\n if (typeof draft !== 'undefined') {\n payload['draft'] = draft;\n }\n if (typeof scheduledAt !== 'undefined') {\n payload['scheduledAt'] = scheduledAt;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create SMS\n *\n * Create a new SMS message.\n *\n * @param {string} messageId\n * @param {string} content\n * @param {string[]} topics\n * @param {string[]} users\n * @param {string[]} targets\n * @param {boolean} draft\n * @param {string} scheduledAt\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createSms(messageId: string, content: string, topics?: string[], users?: string[], targets?: string[], draft?: boolean, scheduledAt?: string): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n if (typeof content === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"content\"');\n }\n const apiPath = '/messaging/messages/sms';\n const payload: Payload = {};\n if (typeof messageId !== 'undefined') {\n payload['messageId'] = messageId;\n }\n if (typeof content !== 'undefined') {\n payload['content'] = content;\n }\n if (typeof topics !== 'undefined') {\n payload['topics'] = topics;\n }\n if (typeof users !== 'undefined') {\n payload['users'] = users;\n }\n if (typeof targets !== 'undefined') {\n payload['targets'] = targets;\n }\n if (typeof draft !== 'undefined') {\n payload['draft'] = draft;\n }\n if (typeof scheduledAt !== 'undefined') {\n payload['scheduledAt'] = scheduledAt;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update SMS\n *\n * Update an email message by its unique ID.\n\n *\n * @param {string} messageId\n * @param {string[]} topics\n * @param {string[]} users\n * @param {string[]} targets\n * @param {string} content\n * @param {boolean} draft\n * @param {string} scheduledAt\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateSms(messageId: string, topics?: string[], users?: string[], targets?: string[], content?: string, draft?: boolean, scheduledAt?: string): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n const apiPath = '/messaging/messages/sms/{messageId}'.replace('{messageId}', messageId);\n const payload: Payload = {};\n if (typeof topics !== 'undefined') {\n payload['topics'] = topics;\n }\n if (typeof users !== 'undefined') {\n payload['users'] = users;\n }\n if (typeof targets !== 'undefined') {\n payload['targets'] = targets;\n }\n if (typeof content !== 'undefined') {\n payload['content'] = content;\n }\n if (typeof draft !== 'undefined') {\n payload['draft'] = draft;\n }\n if (typeof scheduledAt !== 'undefined') {\n payload['scheduledAt'] = scheduledAt;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get message\n *\n * Get a message by its unique ID.\n\n *\n * @param {string} messageId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getMessage(messageId: string): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n const apiPath = '/messaging/messages/{messageId}'.replace('{messageId}', messageId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete message\n *\n * Delete a message. If the message is not a draft or scheduled, but has been sent, this will not recall the message.\n *\n * @param {string} messageId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async delete(messageId: string): Promise<{}> {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n const apiPath = '/messaging/messages/{messageId}'.replace('{messageId}', messageId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List message logs\n *\n * Get the message activity logs listed by its unique ID.\n *\n * @param {string} messageId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listMessageLogs(messageId: string, queries?: string[]): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n const apiPath = '/messaging/messages/{messageId}/logs'.replace('{messageId}', messageId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List message targets\n *\n * Get a list of the targets associated with a message.\n *\n * @param {string} messageId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listTargets(messageId: string, queries?: string[]): Promise {\n if (typeof messageId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"messageId\"');\n }\n const apiPath = '/messaging/messages/{messageId}/targets'.replace('{messageId}', messageId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List providers\n *\n * Get a list of all providers from the current Appwrite project.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listProviders(queries?: string[], search?: string): Promise {\n const apiPath = '/messaging/providers';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create APNS provider\n *\n * Create a new Apple Push Notification service provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} authKey\n * @param {string} authKeyId\n * @param {string} teamId\n * @param {string} bundleId\n * @param {boolean} sandbox\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createApnsProvider(providerId: string, name: string, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/apns';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof authKey !== 'undefined') {\n payload['authKey'] = authKey;\n }\n if (typeof authKeyId !== 'undefined') {\n payload['authKeyId'] = authKeyId;\n }\n if (typeof teamId !== 'undefined') {\n payload['teamId'] = teamId;\n }\n if (typeof bundleId !== 'undefined') {\n payload['bundleId'] = bundleId;\n }\n if (typeof sandbox !== 'undefined') {\n payload['sandbox'] = sandbox;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update APNS provider\n *\n * Update a Apple Push Notification service provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {boolean} enabled\n * @param {string} authKey\n * @param {string} authKeyId\n * @param {string} teamId\n * @param {string} bundleId\n * @param {boolean} sandbox\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateApnsProvider(providerId: string, name?: string, enabled?: boolean, authKey?: string, authKeyId?: string, teamId?: string, bundleId?: string, sandbox?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/apns/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof authKey !== 'undefined') {\n payload['authKey'] = authKey;\n }\n if (typeof authKeyId !== 'undefined') {\n payload['authKeyId'] = authKeyId;\n }\n if (typeof teamId !== 'undefined') {\n payload['teamId'] = teamId;\n }\n if (typeof bundleId !== 'undefined') {\n payload['bundleId'] = bundleId;\n }\n if (typeof sandbox !== 'undefined') {\n payload['sandbox'] = sandbox;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create FCM provider\n *\n * Create a new Firebase Cloud Messaging provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {object} serviceAccountJSON\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createFcmProvider(providerId: string, name: string, serviceAccountJSON?: object, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/fcm';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof serviceAccountJSON !== 'undefined') {\n payload['serviceAccountJSON'] = serviceAccountJSON;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update FCM provider\n *\n * Update a Firebase Cloud Messaging provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {boolean} enabled\n * @param {object} serviceAccountJSON\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateFcmProvider(providerId: string, name?: string, enabled?: boolean, serviceAccountJSON?: object): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/fcm/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof serviceAccountJSON !== 'undefined') {\n payload['serviceAccountJSON'] = serviceAccountJSON;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create Mailgun provider\n *\n * Create a new Mailgun provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} apiKey\n * @param {string} domain\n * @param {boolean} isEuRegion\n * @param {string} fromName\n * @param {string} fromEmail\n * @param {string} replyToName\n * @param {string} replyToEmail\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createMailgunProvider(providerId: string, name: string, apiKey?: string, domain?: string, isEuRegion?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/mailgun';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof domain !== 'undefined') {\n payload['domain'] = domain;\n }\n if (typeof isEuRegion !== 'undefined') {\n payload['isEuRegion'] = isEuRegion;\n }\n if (typeof fromName !== 'undefined') {\n payload['fromName'] = fromName;\n }\n if (typeof fromEmail !== 'undefined') {\n payload['fromEmail'] = fromEmail;\n }\n if (typeof replyToName !== 'undefined') {\n payload['replyToName'] = replyToName;\n }\n if (typeof replyToEmail !== 'undefined') {\n payload['replyToEmail'] = replyToEmail;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update Mailgun provider\n *\n * Update a Mailgun provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} apiKey\n * @param {string} domain\n * @param {boolean} isEuRegion\n * @param {boolean} enabled\n * @param {string} fromName\n * @param {string} fromEmail\n * @param {string} replyToName\n * @param {string} replyToEmail\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateMailgunProvider(providerId: string, name?: string, apiKey?: string, domain?: string, isEuRegion?: boolean, enabled?: boolean, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/mailgun/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof domain !== 'undefined') {\n payload['domain'] = domain;\n }\n if (typeof isEuRegion !== 'undefined') {\n payload['isEuRegion'] = isEuRegion;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof fromName !== 'undefined') {\n payload['fromName'] = fromName;\n }\n if (typeof fromEmail !== 'undefined') {\n payload['fromEmail'] = fromEmail;\n }\n if (typeof replyToName !== 'undefined') {\n payload['replyToName'] = replyToName;\n }\n if (typeof replyToEmail !== 'undefined') {\n payload['replyToEmail'] = replyToEmail;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create Msg91 provider\n *\n * Create a new MSG91 provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} templateId\n * @param {string} senderId\n * @param {string} authKey\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createMsg91Provider(providerId: string, name: string, templateId?: string, senderId?: string, authKey?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/msg91';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof templateId !== 'undefined') {\n payload['templateId'] = templateId;\n }\n if (typeof senderId !== 'undefined') {\n payload['senderId'] = senderId;\n }\n if (typeof authKey !== 'undefined') {\n payload['authKey'] = authKey;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update Msg91 provider\n *\n * Update a MSG91 provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {boolean} enabled\n * @param {string} templateId\n * @param {string} senderId\n * @param {string} authKey\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateMsg91Provider(providerId: string, name?: string, enabled?: boolean, templateId?: string, senderId?: string, authKey?: string): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/msg91/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof templateId !== 'undefined') {\n payload['templateId'] = templateId;\n }\n if (typeof senderId !== 'undefined') {\n payload['senderId'] = senderId;\n }\n if (typeof authKey !== 'undefined') {\n payload['authKey'] = authKey;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create Sendgrid provider\n *\n * Create a new Sendgrid provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} apiKey\n * @param {string} fromName\n * @param {string} fromEmail\n * @param {string} replyToName\n * @param {string} replyToEmail\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createSendgridProvider(providerId: string, name: string, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/sendgrid';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof fromName !== 'undefined') {\n payload['fromName'] = fromName;\n }\n if (typeof fromEmail !== 'undefined') {\n payload['fromEmail'] = fromEmail;\n }\n if (typeof replyToName !== 'undefined') {\n payload['replyToName'] = replyToName;\n }\n if (typeof replyToEmail !== 'undefined') {\n payload['replyToEmail'] = replyToEmail;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update Sendgrid provider\n *\n * Update a Sendgrid provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {boolean} enabled\n * @param {string} apiKey\n * @param {string} fromName\n * @param {string} fromEmail\n * @param {string} replyToName\n * @param {string} replyToEmail\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateSendgridProvider(providerId: string, name?: string, enabled?: boolean, apiKey?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/sendgrid/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof fromName !== 'undefined') {\n payload['fromName'] = fromName;\n }\n if (typeof fromEmail !== 'undefined') {\n payload['fromEmail'] = fromEmail;\n }\n if (typeof replyToName !== 'undefined') {\n payload['replyToName'] = replyToName;\n }\n if (typeof replyToEmail !== 'undefined') {\n payload['replyToEmail'] = replyToEmail;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create SMTP provider\n *\n * Create a new SMTP provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} host\n * @param {number} port\n * @param {string} username\n * @param {string} password\n * @param {SmtpEncryption} encryption\n * @param {boolean} autoTLS\n * @param {string} mailer\n * @param {string} fromName\n * @param {string} fromEmail\n * @param {string} replyToName\n * @param {string} replyToEmail\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createSmtpProvider(providerId: string, name: string, host: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n if (typeof host === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"host\"');\n }\n const apiPath = '/messaging/providers/smtp';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof host !== 'undefined') {\n payload['host'] = host;\n }\n if (typeof port !== 'undefined') {\n payload['port'] = port;\n }\n if (typeof username !== 'undefined') {\n payload['username'] = username;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof encryption !== 'undefined') {\n payload['encryption'] = encryption;\n }\n if (typeof autoTLS !== 'undefined') {\n payload['autoTLS'] = autoTLS;\n }\n if (typeof mailer !== 'undefined') {\n payload['mailer'] = mailer;\n }\n if (typeof fromName !== 'undefined') {\n payload['fromName'] = fromName;\n }\n if (typeof fromEmail !== 'undefined') {\n payload['fromEmail'] = fromEmail;\n }\n if (typeof replyToName !== 'undefined') {\n payload['replyToName'] = replyToName;\n }\n if (typeof replyToEmail !== 'undefined') {\n payload['replyToEmail'] = replyToEmail;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update SMTP provider\n *\n * Update a SMTP provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} host\n * @param {number} port\n * @param {string} username\n * @param {string} password\n * @param {SmtpEncryption} encryption\n * @param {boolean} autoTLS\n * @param {string} mailer\n * @param {string} fromName\n * @param {string} fromEmail\n * @param {string} replyToName\n * @param {string} replyToEmail\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateSmtpProvider(providerId: string, name?: string, host?: string, port?: number, username?: string, password?: string, encryption?: SmtpEncryption, autoTLS?: boolean, mailer?: string, fromName?: string, fromEmail?: string, replyToName?: string, replyToEmail?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/smtp/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof host !== 'undefined') {\n payload['host'] = host;\n }\n if (typeof port !== 'undefined') {\n payload['port'] = port;\n }\n if (typeof username !== 'undefined') {\n payload['username'] = username;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof encryption !== 'undefined') {\n payload['encryption'] = encryption;\n }\n if (typeof autoTLS !== 'undefined') {\n payload['autoTLS'] = autoTLS;\n }\n if (typeof mailer !== 'undefined') {\n payload['mailer'] = mailer;\n }\n if (typeof fromName !== 'undefined') {\n payload['fromName'] = fromName;\n }\n if (typeof fromEmail !== 'undefined') {\n payload['fromEmail'] = fromEmail;\n }\n if (typeof replyToName !== 'undefined') {\n payload['replyToName'] = replyToName;\n }\n if (typeof replyToEmail !== 'undefined') {\n payload['replyToEmail'] = replyToEmail;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create Telesign provider\n *\n * Create a new Telesign provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} from\n * @param {string} customerId\n * @param {string} apiKey\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createTelesignProvider(providerId: string, name: string, from?: string, customerId?: string, apiKey?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/telesign';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof from !== 'undefined') {\n payload['from'] = from;\n }\n if (typeof customerId !== 'undefined') {\n payload['customerId'] = customerId;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update Telesign provider\n *\n * Update a Telesign provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {boolean} enabled\n * @param {string} customerId\n * @param {string} apiKey\n * @param {string} from\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateTelesignProvider(providerId: string, name?: string, enabled?: boolean, customerId?: string, apiKey?: string, from?: string): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/telesign/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof customerId !== 'undefined') {\n payload['customerId'] = customerId;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof from !== 'undefined') {\n payload['from'] = from;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create Textmagic provider\n *\n * Create a new Textmagic provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} from\n * @param {string} username\n * @param {string} apiKey\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createTextmagicProvider(providerId: string, name: string, from?: string, username?: string, apiKey?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/textmagic';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof from !== 'undefined') {\n payload['from'] = from;\n }\n if (typeof username !== 'undefined') {\n payload['username'] = username;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update Textmagic provider\n *\n * Update a Textmagic provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {boolean} enabled\n * @param {string} username\n * @param {string} apiKey\n * @param {string} from\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateTextmagicProvider(providerId: string, name?: string, enabled?: boolean, username?: string, apiKey?: string, from?: string): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/textmagic/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof username !== 'undefined') {\n payload['username'] = username;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof from !== 'undefined') {\n payload['from'] = from;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create Twilio provider\n *\n * Create a new Twilio provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} from\n * @param {string} accountSid\n * @param {string} authToken\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createTwilioProvider(providerId: string, name: string, from?: string, accountSid?: string, authToken?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/twilio';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof from !== 'undefined') {\n payload['from'] = from;\n }\n if (typeof accountSid !== 'undefined') {\n payload['accountSid'] = accountSid;\n }\n if (typeof authToken !== 'undefined') {\n payload['authToken'] = authToken;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update Twilio provider\n *\n * Update a Twilio provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {boolean} enabled\n * @param {string} accountSid\n * @param {string} authToken\n * @param {string} from\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateTwilioProvider(providerId: string, name?: string, enabled?: boolean, accountSid?: string, authToken?: string, from?: string): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/twilio/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof accountSid !== 'undefined') {\n payload['accountSid'] = accountSid;\n }\n if (typeof authToken !== 'undefined') {\n payload['authToken'] = authToken;\n }\n if (typeof from !== 'undefined') {\n payload['from'] = from;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create Vonage provider\n *\n * Create a new Vonage provider.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {string} from\n * @param {string} apiKey\n * @param {string} apiSecret\n * @param {boolean} enabled\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createVonageProvider(providerId: string, name: string, from?: string, apiKey?: string, apiSecret?: string, enabled?: boolean): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/providers/vonage';\n const payload: Payload = {};\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof from !== 'undefined') {\n payload['from'] = from;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof apiSecret !== 'undefined') {\n payload['apiSecret'] = apiSecret;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update Vonage provider\n *\n * Update a Vonage provider by its unique ID.\n *\n * @param {string} providerId\n * @param {string} name\n * @param {boolean} enabled\n * @param {string} apiKey\n * @param {string} apiSecret\n * @param {string} from\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateVonageProvider(providerId: string, name?: string, enabled?: boolean, apiKey?: string, apiSecret?: string, from?: string): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/vonage/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof apiKey !== 'undefined') {\n payload['apiKey'] = apiKey;\n }\n if (typeof apiSecret !== 'undefined') {\n payload['apiSecret'] = apiSecret;\n }\n if (typeof from !== 'undefined') {\n payload['from'] = from;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get provider\n *\n * Get a provider by its unique ID.\n\n *\n * @param {string} providerId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getProvider(providerId: string): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete provider\n *\n * Delete a provider by its unique ID.\n *\n * @param {string} providerId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteProvider(providerId: string): Promise<{}> {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/{providerId}'.replace('{providerId}', providerId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List provider logs\n *\n * Get the provider activity logs listed by its unique ID.\n *\n * @param {string} providerId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listProviderLogs(providerId: string, queries?: string[]): Promise {\n if (typeof providerId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerId\"');\n }\n const apiPath = '/messaging/providers/{providerId}/logs'.replace('{providerId}', providerId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List subscriber logs\n *\n * Get the subscriber activity logs listed by its unique ID.\n *\n * @param {string} subscriberId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listSubscriberLogs(subscriberId: string, queries?: string[]): Promise {\n if (typeof subscriberId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"subscriberId\"');\n }\n const apiPath = '/messaging/subscribers/{subscriberId}/logs'.replace('{subscriberId}', subscriberId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List topics\n *\n * Get a list of all topics from the current Appwrite project.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listTopics(queries?: string[], search?: string): Promise {\n const apiPath = '/messaging/topics';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create topic\n *\n * Create a new topic.\n *\n * @param {string} topicId\n * @param {string} name\n * @param {string[]} subscribe\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createTopic(topicId: string, name: string, subscribe?: string[]): Promise {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/messaging/topics';\n const payload: Payload = {};\n if (typeof topicId !== 'undefined') {\n payload['topicId'] = topicId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof subscribe !== 'undefined') {\n payload['subscribe'] = subscribe;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get topic\n *\n * Get a topic by its unique ID.\n\n *\n * @param {string} topicId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getTopic(topicId: string): Promise {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n const apiPath = '/messaging/topics/{topicId}'.replace('{topicId}', topicId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update topic\n *\n * Update a topic by its unique ID.\n\n *\n * @param {string} topicId\n * @param {string} name\n * @param {string[]} subscribe\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateTopic(topicId: string, name?: string, subscribe?: string[]): Promise {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n const apiPath = '/messaging/topics/{topicId}'.replace('{topicId}', topicId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof subscribe !== 'undefined') {\n payload['subscribe'] = subscribe;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete topic\n *\n * Delete a topic by its unique ID.\n *\n * @param {string} topicId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteTopic(topicId: string): Promise<{}> {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n const apiPath = '/messaging/topics/{topicId}'.replace('{topicId}', topicId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List topic logs\n *\n * Get the topic activity logs listed by its unique ID.\n *\n * @param {string} topicId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listTopicLogs(topicId: string, queries?: string[]): Promise {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n const apiPath = '/messaging/topics/{topicId}/logs'.replace('{topicId}', topicId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List subscribers\n *\n * Get a list of all subscribers from the current Appwrite project.\n *\n * @param {string} topicId\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listSubscribers(topicId: string, queries?: string[], search?: string): Promise {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n const apiPath = '/messaging/topics/{topicId}/subscribers'.replace('{topicId}', topicId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create subscriber\n *\n * Create a new subscriber.\n *\n * @param {string} topicId\n * @param {string} subscriberId\n * @param {string} targetId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createSubscriber(topicId: string, subscriberId: string, targetId: string): Promise {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n if (typeof subscriberId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"subscriberId\"');\n }\n if (typeof targetId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"targetId\"');\n }\n const apiPath = '/messaging/topics/{topicId}/subscribers'.replace('{topicId}', topicId);\n const payload: Payload = {};\n if (typeof subscriberId !== 'undefined') {\n payload['subscriberId'] = subscriberId;\n }\n if (typeof targetId !== 'undefined') {\n payload['targetId'] = targetId;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get subscriber\n *\n * Get a subscriber by its unique ID.\n\n *\n * @param {string} topicId\n * @param {string} subscriberId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getSubscriber(topicId: string, subscriberId: string): Promise {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n if (typeof subscriberId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"subscriberId\"');\n }\n const apiPath = '/messaging/topics/{topicId}/subscribers/{subscriberId}'.replace('{topicId}', topicId).replace('{subscriberId}', subscriberId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete subscriber\n *\n * Delete a subscriber by its unique ID.\n *\n * @param {string} topicId\n * @param {string} subscriberId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteSubscriber(topicId: string, subscriberId: string): Promise<{}> {\n if (typeof topicId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"topicId\"');\n }\n if (typeof subscriberId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"subscriberId\"');\n }\n const apiPath = '/messaging/topics/{topicId}/subscribers/{subscriberId}'.replace('{topicId}', topicId).replace('{subscriberId}', subscriberId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/storage.d.mts b/node_modules/node-appwrite/dist/services/storage.d.mts new file mode 100644 index 0000000..f5b7353 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/storage.d.mts @@ -0,0 +1,193 @@ +import { Client, UploadProgress } from '../client.mjs'; +import { Models } from '../models.mjs'; +import { Compression } from '../enums/compression.mjs'; +import { ImageGravity } from '../enums/image-gravity.mjs'; +import { ImageFormat } from '../enums/image-format.mjs'; +import '../query.mjs'; + +declare class Storage { + client: Client; + constructor(client: Client); + /** + * List buckets + * + * Get a list of all the storage buckets. You can use the query params to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listBuckets(queries?: string[], search?: string): Promise; + /** + * Create bucket + * + * Create a new storage bucket. + * + * @param {string} bucketId + * @param {string} name + * @param {string[]} permissions + * @param {boolean} fileSecurity + * @param {boolean} enabled + * @param {number} maximumFileSize + * @param {string[]} allowedFileExtensions + * @param {Compression} compression + * @param {boolean} encryption + * @param {boolean} antivirus + * @throws {AppwriteException} + * @returns {Promise} + */ + createBucket(bucketId: string, name: string, permissions?: string[], fileSecurity?: boolean, enabled?: boolean, maximumFileSize?: number, allowedFileExtensions?: string[], compression?: Compression, encryption?: boolean, antivirus?: boolean): Promise; + /** + * Get bucket + * + * Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata. + * + * @param {string} bucketId + * @throws {AppwriteException} + * @returns {Promise} + */ + getBucket(bucketId: string): Promise; + /** + * Update bucket + * + * Update a storage bucket by its unique ID. + * + * @param {string} bucketId + * @param {string} name + * @param {string[]} permissions + * @param {boolean} fileSecurity + * @param {boolean} enabled + * @param {number} maximumFileSize + * @param {string[]} allowedFileExtensions + * @param {Compression} compression + * @param {boolean} encryption + * @param {boolean} antivirus + * @throws {AppwriteException} + * @returns {Promise} + */ + updateBucket(bucketId: string, name: string, permissions?: string[], fileSecurity?: boolean, enabled?: boolean, maximumFileSize?: number, allowedFileExtensions?: string[], compression?: Compression, encryption?: boolean, antivirus?: boolean): Promise; + /** + * Delete bucket + * + * Delete a storage bucket by its unique ID. + * + * @param {string} bucketId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteBucket(bucketId: string): Promise<{}>; + /** + * List files + * + * Get a list of all the user files. You can use the query params to filter your results. + * + * @param {string} bucketId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listFiles(bucketId: string, queries?: string[], search?: string): Promise; + /** + * Create file + * + * Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https://appwrite.io/docs/server/storage#storageCreateBucket) API or directly from your Appwrite console. + +Larger files should be uploaded using multiple requests with the [content-range](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes. + +When the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one. + +If you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally. + + * + * @param {string} bucketId + * @param {string} fileId + * @param {File} file + * @param {string[]} permissions + * @throws {AppwriteException} + * @returns {Promise} + */ + createFile(bucketId: string, fileId: string, file: File, permissions?: string[], onProgress?: (progress: UploadProgress) => void): Promise; + /** + * Get file + * + * Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata. + * + * @param {string} bucketId + * @param {string} fileId + * @throws {AppwriteException} + * @returns {Promise} + */ + getFile(bucketId: string, fileId: string): Promise; + /** + * Update file + * + * Update a file by its unique ID. Only users with write permissions have access to update this resource. + * + * @param {string} bucketId + * @param {string} fileId + * @param {string} name + * @param {string[]} permissions + * @throws {AppwriteException} + * @returns {Promise} + */ + updateFile(bucketId: string, fileId: string, name?: string, permissions?: string[]): Promise; + /** + * Delete File + * + * Delete a file by its unique ID. Only users with write permissions have access to delete this resource. + * + * @param {string} bucketId + * @param {string} fileId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteFile(bucketId: string, fileId: string): Promise<{}>; + /** + * Get file for download + * + * Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory. + * + * @param {string} bucketId + * @param {string} fileId + * @throws {AppwriteException} + * @returns {Promise} + */ + getFileDownload(bucketId: string, fileId: string): Promise; + /** + * Get file preview + * + * Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB. + * + * @param {string} bucketId + * @param {string} fileId + * @param {number} width + * @param {number} height + * @param {ImageGravity} gravity + * @param {number} quality + * @param {number} borderWidth + * @param {string} borderColor + * @param {number} borderRadius + * @param {number} opacity + * @param {number} rotation + * @param {string} background + * @param {ImageFormat} output + * @throws {AppwriteException} + * @returns {Promise} + */ + getFilePreview(bucketId: string, fileId: string, width?: number, height?: number, gravity?: ImageGravity, quality?: number, borderWidth?: number, borderColor?: string, borderRadius?: number, opacity?: number, rotation?: number, background?: string, output?: ImageFormat): Promise; + /** + * Get file for view + * + * Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header. + * + * @param {string} bucketId + * @param {string} fileId + * @throws {AppwriteException} + * @returns {Promise} + */ + getFileView(bucketId: string, fileId: string): Promise; +} + +export { Storage }; diff --git a/node_modules/node-appwrite/dist/services/storage.d.ts b/node_modules/node-appwrite/dist/services/storage.d.ts new file mode 100644 index 0000000..0ff251c --- /dev/null +++ b/node_modules/node-appwrite/dist/services/storage.d.ts @@ -0,0 +1,193 @@ +import { Client, UploadProgress } from '../client.js'; +import { Models } from '../models.js'; +import { Compression } from '../enums/compression.js'; +import { ImageGravity } from '../enums/image-gravity.js'; +import { ImageFormat } from '../enums/image-format.js'; +import '../query.js'; + +declare class Storage { + client: Client; + constructor(client: Client); + /** + * List buckets + * + * Get a list of all the storage buckets. You can use the query params to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listBuckets(queries?: string[], search?: string): Promise; + /** + * Create bucket + * + * Create a new storage bucket. + * + * @param {string} bucketId + * @param {string} name + * @param {string[]} permissions + * @param {boolean} fileSecurity + * @param {boolean} enabled + * @param {number} maximumFileSize + * @param {string[]} allowedFileExtensions + * @param {Compression} compression + * @param {boolean} encryption + * @param {boolean} antivirus + * @throws {AppwriteException} + * @returns {Promise} + */ + createBucket(bucketId: string, name: string, permissions?: string[], fileSecurity?: boolean, enabled?: boolean, maximumFileSize?: number, allowedFileExtensions?: string[], compression?: Compression, encryption?: boolean, antivirus?: boolean): Promise; + /** + * Get bucket + * + * Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata. + * + * @param {string} bucketId + * @throws {AppwriteException} + * @returns {Promise} + */ + getBucket(bucketId: string): Promise; + /** + * Update bucket + * + * Update a storage bucket by its unique ID. + * + * @param {string} bucketId + * @param {string} name + * @param {string[]} permissions + * @param {boolean} fileSecurity + * @param {boolean} enabled + * @param {number} maximumFileSize + * @param {string[]} allowedFileExtensions + * @param {Compression} compression + * @param {boolean} encryption + * @param {boolean} antivirus + * @throws {AppwriteException} + * @returns {Promise} + */ + updateBucket(bucketId: string, name: string, permissions?: string[], fileSecurity?: boolean, enabled?: boolean, maximumFileSize?: number, allowedFileExtensions?: string[], compression?: Compression, encryption?: boolean, antivirus?: boolean): Promise; + /** + * Delete bucket + * + * Delete a storage bucket by its unique ID. + * + * @param {string} bucketId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteBucket(bucketId: string): Promise<{}>; + /** + * List files + * + * Get a list of all the user files. You can use the query params to filter your results. + * + * @param {string} bucketId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listFiles(bucketId: string, queries?: string[], search?: string): Promise; + /** + * Create file + * + * Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https://appwrite.io/docs/server/storage#storageCreateBucket) API or directly from your Appwrite console. + +Larger files should be uploaded using multiple requests with the [content-range](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes. + +When the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one. + +If you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally. + + * + * @param {string} bucketId + * @param {string} fileId + * @param {File} file + * @param {string[]} permissions + * @throws {AppwriteException} + * @returns {Promise} + */ + createFile(bucketId: string, fileId: string, file: File, permissions?: string[], onProgress?: (progress: UploadProgress) => void): Promise; + /** + * Get file + * + * Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata. + * + * @param {string} bucketId + * @param {string} fileId + * @throws {AppwriteException} + * @returns {Promise} + */ + getFile(bucketId: string, fileId: string): Promise; + /** + * Update file + * + * Update a file by its unique ID. Only users with write permissions have access to update this resource. + * + * @param {string} bucketId + * @param {string} fileId + * @param {string} name + * @param {string[]} permissions + * @throws {AppwriteException} + * @returns {Promise} + */ + updateFile(bucketId: string, fileId: string, name?: string, permissions?: string[]): Promise; + /** + * Delete File + * + * Delete a file by its unique ID. Only users with write permissions have access to delete this resource. + * + * @param {string} bucketId + * @param {string} fileId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteFile(bucketId: string, fileId: string): Promise<{}>; + /** + * Get file for download + * + * Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory. + * + * @param {string} bucketId + * @param {string} fileId + * @throws {AppwriteException} + * @returns {Promise} + */ + getFileDownload(bucketId: string, fileId: string): Promise; + /** + * Get file preview + * + * Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB. + * + * @param {string} bucketId + * @param {string} fileId + * @param {number} width + * @param {number} height + * @param {ImageGravity} gravity + * @param {number} quality + * @param {number} borderWidth + * @param {string} borderColor + * @param {number} borderRadius + * @param {number} opacity + * @param {number} rotation + * @param {string} background + * @param {ImageFormat} output + * @throws {AppwriteException} + * @returns {Promise} + */ + getFilePreview(bucketId: string, fileId: string, width?: number, height?: number, gravity?: ImageGravity, quality?: number, borderWidth?: number, borderColor?: string, borderRadius?: number, opacity?: number, rotation?: number, background?: string, output?: ImageFormat): Promise; + /** + * Get file for view + * + * Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header. + * + * @param {string} bucketId + * @param {string} fileId + * @throws {AppwriteException} + * @returns {Promise} + */ + getFileView(bucketId: string, fileId: string): Promise; +} + +export { Storage }; diff --git a/node_modules/node-appwrite/dist/services/storage.js b/node_modules/node-appwrite/dist/services/storage.js new file mode 100644 index 0000000..b4e3d9a --- /dev/null +++ b/node_modules/node-appwrite/dist/services/storage.js @@ -0,0 +1,550 @@ +'use strict'; + +var client = require('../client'); + +class Storage { + constructor(client) { + this.client = client; + } + /** + * List buckets + * + * Get a list of all the storage buckets. You can use the query params to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listBuckets(queries, search) { + const apiPath = "/storage/buckets"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create bucket + * + * Create a new storage bucket. + * + * @param {string} bucketId + * @param {string} name + * @param {string[]} permissions + * @param {boolean} fileSecurity + * @param {boolean} enabled + * @param {number} maximumFileSize + * @param {string[]} allowedFileExtensions + * @param {Compression} compression + * @param {boolean} encryption + * @param {boolean} antivirus + * @throws {AppwriteException} + * @returns {Promise} + */ + async createBucket(bucketId, name, permissions, fileSecurity, enabled, maximumFileSize, allowedFileExtensions, compression, encryption, antivirus) { + if (typeof bucketId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/storage/buckets"; + const payload = {}; + if (typeof bucketId !== "undefined") { + payload["bucketId"] = bucketId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof permissions !== "undefined") { + payload["permissions"] = permissions; + } + if (typeof fileSecurity !== "undefined") { + payload["fileSecurity"] = fileSecurity; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof maximumFileSize !== "undefined") { + payload["maximumFileSize"] = maximumFileSize; + } + if (typeof allowedFileExtensions !== "undefined") { + payload["allowedFileExtensions"] = allowedFileExtensions; + } + if (typeof compression !== "undefined") { + payload["compression"] = compression; + } + if (typeof encryption !== "undefined") { + payload["encryption"] = encryption; + } + if (typeof antivirus !== "undefined") { + payload["antivirus"] = antivirus; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get bucket + * + * Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata. + * + * @param {string} bucketId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getBucket(bucketId) { + if (typeof bucketId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "bucketId"'); + } + const apiPath = "/storage/buckets/{bucketId}".replace("{bucketId}", bucketId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update bucket + * + * Update a storage bucket by its unique ID. + * + * @param {string} bucketId + * @param {string} name + * @param {string[]} permissions + * @param {boolean} fileSecurity + * @param {boolean} enabled + * @param {number} maximumFileSize + * @param {string[]} allowedFileExtensions + * @param {Compression} compression + * @param {boolean} encryption + * @param {boolean} antivirus + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateBucket(bucketId, name, permissions, fileSecurity, enabled, maximumFileSize, allowedFileExtensions, compression, encryption, antivirus) { + if (typeof bucketId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/storage/buckets/{bucketId}".replace("{bucketId}", bucketId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof permissions !== "undefined") { + payload["permissions"] = permissions; + } + if (typeof fileSecurity !== "undefined") { + payload["fileSecurity"] = fileSecurity; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof maximumFileSize !== "undefined") { + payload["maximumFileSize"] = maximumFileSize; + } + if (typeof allowedFileExtensions !== "undefined") { + payload["allowedFileExtensions"] = allowedFileExtensions; + } + if (typeof compression !== "undefined") { + payload["compression"] = compression; + } + if (typeof encryption !== "undefined") { + payload["encryption"] = encryption; + } + if (typeof antivirus !== "undefined") { + payload["antivirus"] = antivirus; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Delete bucket + * + * Delete a storage bucket by its unique ID. + * + * @param {string} bucketId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteBucket(bucketId) { + if (typeof bucketId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "bucketId"'); + } + const apiPath = "/storage/buckets/{bucketId}".replace("{bucketId}", bucketId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List files + * + * Get a list of all the user files. You can use the query params to filter your results. + * + * @param {string} bucketId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listFiles(bucketId, queries, search) { + if (typeof bucketId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "bucketId"'); + } + const apiPath = "/storage/buckets/{bucketId}/files".replace("{bucketId}", bucketId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create file + * + * Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https://appwrite.io/docs/server/storage#storageCreateBucket) API or directly from your Appwrite console. + + Larger files should be uploaded using multiple requests with the [content-range](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes. + + When the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one. + + If you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally. + + * + * @param {string} bucketId + * @param {string} fileId + * @param {File} file + * @param {string[]} permissions + * @throws {AppwriteException} + * @returns {Promise} + */ + async createFile(bucketId, fileId, file, permissions, onProgress = (progress) => { + }) { + if (typeof bucketId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof fileId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "fileId"'); + } + if (typeof file === "undefined") { + throw new client.AppwriteException('Missing required parameter: "file"'); + } + const apiPath = "/storage/buckets/{bucketId}/files".replace("{bucketId}", bucketId); + const payload = {}; + if (typeof fileId !== "undefined") { + payload["fileId"] = fileId; + } + if (typeof file !== "undefined") { + payload["file"] = file; + } + if (typeof permissions !== "undefined") { + payload["permissions"] = permissions; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "multipart/form-data" + }; + return await this.client.chunkedUpload( + "post", + uri, + apiHeaders, + payload, + onProgress + ); + } + /** + * Get file + * + * Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata. + * + * @param {string} bucketId + * @param {string} fileId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getFile(bucketId, fileId) { + if (typeof bucketId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof fileId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "fileId"'); + } + const apiPath = "/storage/buckets/{bucketId}/files/{fileId}".replace("{bucketId}", bucketId).replace("{fileId}", fileId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update file + * + * Update a file by its unique ID. Only users with write permissions have access to update this resource. + * + * @param {string} bucketId + * @param {string} fileId + * @param {string} name + * @param {string[]} permissions + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateFile(bucketId, fileId, name, permissions) { + if (typeof bucketId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof fileId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "fileId"'); + } + const apiPath = "/storage/buckets/{bucketId}/files/{fileId}".replace("{bucketId}", bucketId).replace("{fileId}", fileId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof permissions !== "undefined") { + payload["permissions"] = permissions; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Delete File + * + * Delete a file by its unique ID. Only users with write permissions have access to delete this resource. + * + * @param {string} bucketId + * @param {string} fileId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteFile(bucketId, fileId) { + if (typeof bucketId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof fileId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "fileId"'); + } + const apiPath = "/storage/buckets/{bucketId}/files/{fileId}".replace("{bucketId}", bucketId).replace("{fileId}", fileId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Get file for download + * + * Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory. + * + * @param {string} bucketId + * @param {string} fileId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getFileDownload(bucketId, fileId) { + if (typeof bucketId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof fileId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "fileId"'); + } + const apiPath = "/storage/buckets/{bucketId}/files/{fileId}/download".replace("{bucketId}", bucketId).replace("{fileId}", fileId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * Get file preview + * + * Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB. + * + * @param {string} bucketId + * @param {string} fileId + * @param {number} width + * @param {number} height + * @param {ImageGravity} gravity + * @param {number} quality + * @param {number} borderWidth + * @param {string} borderColor + * @param {number} borderRadius + * @param {number} opacity + * @param {number} rotation + * @param {string} background + * @param {ImageFormat} output + * @throws {AppwriteException} + * @returns {Promise} + */ + async getFilePreview(bucketId, fileId, width, height, gravity, quality, borderWidth, borderColor, borderRadius, opacity, rotation, background, output) { + if (typeof bucketId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof fileId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "fileId"'); + } + const apiPath = "/storage/buckets/{bucketId}/files/{fileId}/preview".replace("{bucketId}", bucketId).replace("{fileId}", fileId); + const payload = {}; + if (typeof width !== "undefined") { + payload["width"] = width; + } + if (typeof height !== "undefined") { + payload["height"] = height; + } + if (typeof gravity !== "undefined") { + payload["gravity"] = gravity; + } + if (typeof quality !== "undefined") { + payload["quality"] = quality; + } + if (typeof borderWidth !== "undefined") { + payload["borderWidth"] = borderWidth; + } + if (typeof borderColor !== "undefined") { + payload["borderColor"] = borderColor; + } + if (typeof borderRadius !== "undefined") { + payload["borderRadius"] = borderRadius; + } + if (typeof opacity !== "undefined") { + payload["opacity"] = opacity; + } + if (typeof rotation !== "undefined") { + payload["rotation"] = rotation; + } + if (typeof background !== "undefined") { + payload["background"] = background; + } + if (typeof output !== "undefined") { + payload["output"] = output; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * Get file for view + * + * Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header. + * + * @param {string} bucketId + * @param {string} fileId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getFileView(bucketId, fileId) { + if (typeof bucketId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof fileId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "fileId"'); + } + const apiPath = "/storage/buckets/{bucketId}/files/{fileId}/view".replace("{bucketId}", bucketId).replace("{fileId}", fileId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } +} + +exports.Storage = Storage; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=storage.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/storage.js.map b/node_modules/node-appwrite/dist/services/storage.js.map new file mode 100644 index 0000000..314416c --- /dev/null +++ b/node_modules/node-appwrite/dist/services/storage.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/storage.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { Compression } from '../enums/compression';\nimport { ImageGravity } from '../enums/image-gravity';\nimport { ImageFormat } from '../enums/image-format';\n\nexport class Storage {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * List buckets\n *\n * Get a list of all the storage buckets. You can use the query params to filter your results.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listBuckets(queries?: string[], search?: string): Promise {\n const apiPath = '/storage/buckets';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create bucket\n *\n * Create a new storage bucket.\n *\n * @param {string} bucketId\n * @param {string} name\n * @param {string[]} permissions\n * @param {boolean} fileSecurity\n * @param {boolean} enabled\n * @param {number} maximumFileSize\n * @param {string[]} allowedFileExtensions\n * @param {Compression} compression\n * @param {boolean} encryption\n * @param {boolean} antivirus\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createBucket(bucketId: string, name: string, permissions?: string[], fileSecurity?: boolean, enabled?: boolean, maximumFileSize?: number, allowedFileExtensions?: string[], compression?: Compression, encryption?: boolean, antivirus?: boolean): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/storage/buckets';\n const payload: Payload = {};\n if (typeof bucketId !== 'undefined') {\n payload['bucketId'] = bucketId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n if (typeof fileSecurity !== 'undefined') {\n payload['fileSecurity'] = fileSecurity;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof maximumFileSize !== 'undefined') {\n payload['maximumFileSize'] = maximumFileSize;\n }\n if (typeof allowedFileExtensions !== 'undefined') {\n payload['allowedFileExtensions'] = allowedFileExtensions;\n }\n if (typeof compression !== 'undefined') {\n payload['compression'] = compression;\n }\n if (typeof encryption !== 'undefined') {\n payload['encryption'] = encryption;\n }\n if (typeof antivirus !== 'undefined') {\n payload['antivirus'] = antivirus;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get bucket\n *\n * Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.\n *\n * @param {string} bucketId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getBucket(bucketId: string): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}'.replace('{bucketId}', bucketId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update bucket\n *\n * Update a storage bucket by its unique ID.\n *\n * @param {string} bucketId\n * @param {string} name\n * @param {string[]} permissions\n * @param {boolean} fileSecurity\n * @param {boolean} enabled\n * @param {number} maximumFileSize\n * @param {string[]} allowedFileExtensions\n * @param {Compression} compression\n * @param {boolean} encryption\n * @param {boolean} antivirus\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateBucket(bucketId: string, name: string, permissions?: string[], fileSecurity?: boolean, enabled?: boolean, maximumFileSize?: number, allowedFileExtensions?: string[], compression?: Compression, encryption?: boolean, antivirus?: boolean): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/storage/buckets/{bucketId}'.replace('{bucketId}', bucketId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n if (typeof fileSecurity !== 'undefined') {\n payload['fileSecurity'] = fileSecurity;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof maximumFileSize !== 'undefined') {\n payload['maximumFileSize'] = maximumFileSize;\n }\n if (typeof allowedFileExtensions !== 'undefined') {\n payload['allowedFileExtensions'] = allowedFileExtensions;\n }\n if (typeof compression !== 'undefined') {\n payload['compression'] = compression;\n }\n if (typeof encryption !== 'undefined') {\n payload['encryption'] = encryption;\n }\n if (typeof antivirus !== 'undefined') {\n payload['antivirus'] = antivirus;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete bucket\n *\n * Delete a storage bucket by its unique ID.\n *\n * @param {string} bucketId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteBucket(bucketId: string): Promise<{}> {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}'.replace('{bucketId}', bucketId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List files\n *\n * Get a list of all the user files. You can use the query params to filter your results.\n *\n * @param {string} bucketId\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listFiles(bucketId: string, queries?: string[], search?: string): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}/files'.replace('{bucketId}', bucketId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create file\n *\n * Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https://appwrite.io/docs/server/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n\n *\n * @param {string} bucketId\n * @param {string} fileId\n * @param {File} file\n * @param {string[]} permissions\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createFile(bucketId: string, fileId: string, file: File, permissions?: string[], onProgress = (progress: UploadProgress) => {}): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof fileId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"fileId\"');\n }\n if (typeof file === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"file\"');\n }\n const apiPath = '/storage/buckets/{bucketId}/files'.replace('{bucketId}', bucketId);\n const payload: Payload = {};\n if (typeof fileId !== 'undefined') {\n payload['fileId'] = fileId;\n }\n if (typeof file !== 'undefined') {\n payload['file'] = file;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'multipart/form-data',\n }\n\n return await this.client.chunkedUpload(\n 'post',\n uri,\n apiHeaders,\n payload,\n onProgress\n );\n }\n /**\n * Get file\n *\n * Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.\n *\n * @param {string} bucketId\n * @param {string} fileId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getFile(bucketId: string, fileId: string): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof fileId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"fileId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}/files/{fileId}'.replace('{bucketId}', bucketId).replace('{fileId}', fileId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update file\n *\n * Update a file by its unique ID. Only users with write permissions have access to update this resource.\n *\n * @param {string} bucketId\n * @param {string} fileId\n * @param {string} name\n * @param {string[]} permissions\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateFile(bucketId: string, fileId: string, name?: string, permissions?: string[]): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof fileId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"fileId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}/files/{fileId}'.replace('{bucketId}', bucketId).replace('{fileId}', fileId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete File\n *\n * Delete a file by its unique ID. Only users with write permissions have access to delete this resource.\n *\n * @param {string} bucketId\n * @param {string} fileId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteFile(bucketId: string, fileId: string): Promise<{}> {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof fileId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"fileId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}/files/{fileId}'.replace('{bucketId}', bucketId).replace('{fileId}', fileId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get file for download\n *\n * Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.\n *\n * @param {string} bucketId\n * @param {string} fileId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getFileDownload(bucketId: string, fileId: string): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof fileId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"fileId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}/files/{fileId}/download'.replace('{bucketId}', bucketId).replace('{fileId}', fileId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * Get file preview\n *\n * Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.\n *\n * @param {string} bucketId\n * @param {string} fileId\n * @param {number} width\n * @param {number} height\n * @param {ImageGravity} gravity\n * @param {number} quality\n * @param {number} borderWidth\n * @param {string} borderColor\n * @param {number} borderRadius\n * @param {number} opacity\n * @param {number} rotation\n * @param {string} background\n * @param {ImageFormat} output\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getFilePreview(bucketId: string, fileId: string, width?: number, height?: number, gravity?: ImageGravity, quality?: number, borderWidth?: number, borderColor?: string, borderRadius?: number, opacity?: number, rotation?: number, background?: string, output?: ImageFormat): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof fileId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"fileId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}/files/{fileId}/preview'.replace('{bucketId}', bucketId).replace('{fileId}', fileId);\n const payload: Payload = {};\n if (typeof width !== 'undefined') {\n payload['width'] = width;\n }\n if (typeof height !== 'undefined') {\n payload['height'] = height;\n }\n if (typeof gravity !== 'undefined') {\n payload['gravity'] = gravity;\n }\n if (typeof quality !== 'undefined') {\n payload['quality'] = quality;\n }\n if (typeof borderWidth !== 'undefined') {\n payload['borderWidth'] = borderWidth;\n }\n if (typeof borderColor !== 'undefined') {\n payload['borderColor'] = borderColor;\n }\n if (typeof borderRadius !== 'undefined') {\n payload['borderRadius'] = borderRadius;\n }\n if (typeof opacity !== 'undefined') {\n payload['opacity'] = opacity;\n }\n if (typeof rotation !== 'undefined') {\n payload['rotation'] = rotation;\n }\n if (typeof background !== 'undefined') {\n payload['background'] = background;\n }\n if (typeof output !== 'undefined') {\n payload['output'] = output;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * Get file for view\n *\n * Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.\n *\n * @param {string} bucketId\n * @param {string} fileId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getFileView(bucketId: string, fileId: string): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof fileId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"fileId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}/files/{fileId}/view'.replace('{bucketId}', bucketId).replace('{fileId}', fileId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/storage.mjs b/node_modules/node-appwrite/dist/services/storage.mjs new file mode 100644 index 0000000..3970385 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/storage.mjs @@ -0,0 +1,549 @@ +import { AppwriteException } from '../client.mjs'; + +// src/services/storage.ts +var Storage = class { + constructor(client) { + this.client = client; + } + /** + * List buckets + * + * Get a list of all the storage buckets. You can use the query params to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listBuckets(queries, search) { + const apiPath = "/storage/buckets"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create bucket + * + * Create a new storage bucket. + * + * @param {string} bucketId + * @param {string} name + * @param {string[]} permissions + * @param {boolean} fileSecurity + * @param {boolean} enabled + * @param {number} maximumFileSize + * @param {string[]} allowedFileExtensions + * @param {Compression} compression + * @param {boolean} encryption + * @param {boolean} antivirus + * @throws {AppwriteException} + * @returns {Promise} + */ + async createBucket(bucketId, name, permissions, fileSecurity, enabled, maximumFileSize, allowedFileExtensions, compression, encryption, antivirus) { + if (typeof bucketId === "undefined") { + throw new AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/storage/buckets"; + const payload = {}; + if (typeof bucketId !== "undefined") { + payload["bucketId"] = bucketId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof permissions !== "undefined") { + payload["permissions"] = permissions; + } + if (typeof fileSecurity !== "undefined") { + payload["fileSecurity"] = fileSecurity; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof maximumFileSize !== "undefined") { + payload["maximumFileSize"] = maximumFileSize; + } + if (typeof allowedFileExtensions !== "undefined") { + payload["allowedFileExtensions"] = allowedFileExtensions; + } + if (typeof compression !== "undefined") { + payload["compression"] = compression; + } + if (typeof encryption !== "undefined") { + payload["encryption"] = encryption; + } + if (typeof antivirus !== "undefined") { + payload["antivirus"] = antivirus; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get bucket + * + * Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata. + * + * @param {string} bucketId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getBucket(bucketId) { + if (typeof bucketId === "undefined") { + throw new AppwriteException('Missing required parameter: "bucketId"'); + } + const apiPath = "/storage/buckets/{bucketId}".replace("{bucketId}", bucketId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update bucket + * + * Update a storage bucket by its unique ID. + * + * @param {string} bucketId + * @param {string} name + * @param {string[]} permissions + * @param {boolean} fileSecurity + * @param {boolean} enabled + * @param {number} maximumFileSize + * @param {string[]} allowedFileExtensions + * @param {Compression} compression + * @param {boolean} encryption + * @param {boolean} antivirus + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateBucket(bucketId, name, permissions, fileSecurity, enabled, maximumFileSize, allowedFileExtensions, compression, encryption, antivirus) { + if (typeof bucketId === "undefined") { + throw new AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/storage/buckets/{bucketId}".replace("{bucketId}", bucketId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof permissions !== "undefined") { + payload["permissions"] = permissions; + } + if (typeof fileSecurity !== "undefined") { + payload["fileSecurity"] = fileSecurity; + } + if (typeof enabled !== "undefined") { + payload["enabled"] = enabled; + } + if (typeof maximumFileSize !== "undefined") { + payload["maximumFileSize"] = maximumFileSize; + } + if (typeof allowedFileExtensions !== "undefined") { + payload["allowedFileExtensions"] = allowedFileExtensions; + } + if (typeof compression !== "undefined") { + payload["compression"] = compression; + } + if (typeof encryption !== "undefined") { + payload["encryption"] = encryption; + } + if (typeof antivirus !== "undefined") { + payload["antivirus"] = antivirus; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Delete bucket + * + * Delete a storage bucket by its unique ID. + * + * @param {string} bucketId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteBucket(bucketId) { + if (typeof bucketId === "undefined") { + throw new AppwriteException('Missing required parameter: "bucketId"'); + } + const apiPath = "/storage/buckets/{bucketId}".replace("{bucketId}", bucketId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List files + * + * Get a list of all the user files. You can use the query params to filter your results. + * + * @param {string} bucketId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listFiles(bucketId, queries, search) { + if (typeof bucketId === "undefined") { + throw new AppwriteException('Missing required parameter: "bucketId"'); + } + const apiPath = "/storage/buckets/{bucketId}/files".replace("{bucketId}", bucketId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create file + * + * Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https://appwrite.io/docs/server/storage#storageCreateBucket) API or directly from your Appwrite console. + + Larger files should be uploaded using multiple requests with the [content-range](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes. + + When the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one. + + If you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally. + + * + * @param {string} bucketId + * @param {string} fileId + * @param {File} file + * @param {string[]} permissions + * @throws {AppwriteException} + * @returns {Promise} + */ + async createFile(bucketId, fileId, file, permissions, onProgress = (progress) => { + }) { + if (typeof bucketId === "undefined") { + throw new AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof fileId === "undefined") { + throw new AppwriteException('Missing required parameter: "fileId"'); + } + if (typeof file === "undefined") { + throw new AppwriteException('Missing required parameter: "file"'); + } + const apiPath = "/storage/buckets/{bucketId}/files".replace("{bucketId}", bucketId); + const payload = {}; + if (typeof fileId !== "undefined") { + payload["fileId"] = fileId; + } + if (typeof file !== "undefined") { + payload["file"] = file; + } + if (typeof permissions !== "undefined") { + payload["permissions"] = permissions; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "multipart/form-data" + }; + return await this.client.chunkedUpload( + "post", + uri, + apiHeaders, + payload, + onProgress + ); + } + /** + * Get file + * + * Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata. + * + * @param {string} bucketId + * @param {string} fileId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getFile(bucketId, fileId) { + if (typeof bucketId === "undefined") { + throw new AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof fileId === "undefined") { + throw new AppwriteException('Missing required parameter: "fileId"'); + } + const apiPath = "/storage/buckets/{bucketId}/files/{fileId}".replace("{bucketId}", bucketId).replace("{fileId}", fileId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update file + * + * Update a file by its unique ID. Only users with write permissions have access to update this resource. + * + * @param {string} bucketId + * @param {string} fileId + * @param {string} name + * @param {string[]} permissions + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateFile(bucketId, fileId, name, permissions) { + if (typeof bucketId === "undefined") { + throw new AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof fileId === "undefined") { + throw new AppwriteException('Missing required parameter: "fileId"'); + } + const apiPath = "/storage/buckets/{bucketId}/files/{fileId}".replace("{bucketId}", bucketId).replace("{fileId}", fileId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof permissions !== "undefined") { + payload["permissions"] = permissions; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Delete File + * + * Delete a file by its unique ID. Only users with write permissions have access to delete this resource. + * + * @param {string} bucketId + * @param {string} fileId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteFile(bucketId, fileId) { + if (typeof bucketId === "undefined") { + throw new AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof fileId === "undefined") { + throw new AppwriteException('Missing required parameter: "fileId"'); + } + const apiPath = "/storage/buckets/{bucketId}/files/{fileId}".replace("{bucketId}", bucketId).replace("{fileId}", fileId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Get file for download + * + * Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory. + * + * @param {string} bucketId + * @param {string} fileId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getFileDownload(bucketId, fileId) { + if (typeof bucketId === "undefined") { + throw new AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof fileId === "undefined") { + throw new AppwriteException('Missing required parameter: "fileId"'); + } + const apiPath = "/storage/buckets/{bucketId}/files/{fileId}/download".replace("{bucketId}", bucketId).replace("{fileId}", fileId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * Get file preview + * + * Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB. + * + * @param {string} bucketId + * @param {string} fileId + * @param {number} width + * @param {number} height + * @param {ImageGravity} gravity + * @param {number} quality + * @param {number} borderWidth + * @param {string} borderColor + * @param {number} borderRadius + * @param {number} opacity + * @param {number} rotation + * @param {string} background + * @param {ImageFormat} output + * @throws {AppwriteException} + * @returns {Promise} + */ + async getFilePreview(bucketId, fileId, width, height, gravity, quality, borderWidth, borderColor, borderRadius, opacity, rotation, background, output) { + if (typeof bucketId === "undefined") { + throw new AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof fileId === "undefined") { + throw new AppwriteException('Missing required parameter: "fileId"'); + } + const apiPath = "/storage/buckets/{bucketId}/files/{fileId}/preview".replace("{bucketId}", bucketId).replace("{fileId}", fileId); + const payload = {}; + if (typeof width !== "undefined") { + payload["width"] = width; + } + if (typeof height !== "undefined") { + payload["height"] = height; + } + if (typeof gravity !== "undefined") { + payload["gravity"] = gravity; + } + if (typeof quality !== "undefined") { + payload["quality"] = quality; + } + if (typeof borderWidth !== "undefined") { + payload["borderWidth"] = borderWidth; + } + if (typeof borderColor !== "undefined") { + payload["borderColor"] = borderColor; + } + if (typeof borderRadius !== "undefined") { + payload["borderRadius"] = borderRadius; + } + if (typeof opacity !== "undefined") { + payload["opacity"] = opacity; + } + if (typeof rotation !== "undefined") { + payload["rotation"] = rotation; + } + if (typeof background !== "undefined") { + payload["background"] = background; + } + if (typeof output !== "undefined") { + payload["output"] = output; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } + /** + * Get file for view + * + * Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header. + * + * @param {string} bucketId + * @param {string} fileId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getFileView(bucketId, fileId) { + if (typeof bucketId === "undefined") { + throw new AppwriteException('Missing required parameter: "bucketId"'); + } + if (typeof fileId === "undefined") { + throw new AppwriteException('Missing required parameter: "fileId"'); + } + const apiPath = "/storage/buckets/{bucketId}/files/{fileId}/view".replace("{bucketId}", bucketId).replace("{fileId}", fileId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload, + "arrayBuffer" + ); + } +}; + +export { Storage }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=storage.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/storage.mjs.map b/node_modules/node-appwrite/dist/services/storage.mjs.map new file mode 100644 index 0000000..5a2d712 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/storage.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/storage.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { Compression } from '../enums/compression';\nimport { ImageGravity } from '../enums/image-gravity';\nimport { ImageFormat } from '../enums/image-format';\n\nexport class Storage {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * List buckets\n *\n * Get a list of all the storage buckets. You can use the query params to filter your results.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listBuckets(queries?: string[], search?: string): Promise {\n const apiPath = '/storage/buckets';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create bucket\n *\n * Create a new storage bucket.\n *\n * @param {string} bucketId\n * @param {string} name\n * @param {string[]} permissions\n * @param {boolean} fileSecurity\n * @param {boolean} enabled\n * @param {number} maximumFileSize\n * @param {string[]} allowedFileExtensions\n * @param {Compression} compression\n * @param {boolean} encryption\n * @param {boolean} antivirus\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createBucket(bucketId: string, name: string, permissions?: string[], fileSecurity?: boolean, enabled?: boolean, maximumFileSize?: number, allowedFileExtensions?: string[], compression?: Compression, encryption?: boolean, antivirus?: boolean): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/storage/buckets';\n const payload: Payload = {};\n if (typeof bucketId !== 'undefined') {\n payload['bucketId'] = bucketId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n if (typeof fileSecurity !== 'undefined') {\n payload['fileSecurity'] = fileSecurity;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof maximumFileSize !== 'undefined') {\n payload['maximumFileSize'] = maximumFileSize;\n }\n if (typeof allowedFileExtensions !== 'undefined') {\n payload['allowedFileExtensions'] = allowedFileExtensions;\n }\n if (typeof compression !== 'undefined') {\n payload['compression'] = compression;\n }\n if (typeof encryption !== 'undefined') {\n payload['encryption'] = encryption;\n }\n if (typeof antivirus !== 'undefined') {\n payload['antivirus'] = antivirus;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get bucket\n *\n * Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.\n *\n * @param {string} bucketId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getBucket(bucketId: string): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}'.replace('{bucketId}', bucketId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update bucket\n *\n * Update a storage bucket by its unique ID.\n *\n * @param {string} bucketId\n * @param {string} name\n * @param {string[]} permissions\n * @param {boolean} fileSecurity\n * @param {boolean} enabled\n * @param {number} maximumFileSize\n * @param {string[]} allowedFileExtensions\n * @param {Compression} compression\n * @param {boolean} encryption\n * @param {boolean} antivirus\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateBucket(bucketId: string, name: string, permissions?: string[], fileSecurity?: boolean, enabled?: boolean, maximumFileSize?: number, allowedFileExtensions?: string[], compression?: Compression, encryption?: boolean, antivirus?: boolean): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/storage/buckets/{bucketId}'.replace('{bucketId}', bucketId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n if (typeof fileSecurity !== 'undefined') {\n payload['fileSecurity'] = fileSecurity;\n }\n if (typeof enabled !== 'undefined') {\n payload['enabled'] = enabled;\n }\n if (typeof maximumFileSize !== 'undefined') {\n payload['maximumFileSize'] = maximumFileSize;\n }\n if (typeof allowedFileExtensions !== 'undefined') {\n payload['allowedFileExtensions'] = allowedFileExtensions;\n }\n if (typeof compression !== 'undefined') {\n payload['compression'] = compression;\n }\n if (typeof encryption !== 'undefined') {\n payload['encryption'] = encryption;\n }\n if (typeof antivirus !== 'undefined') {\n payload['antivirus'] = antivirus;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete bucket\n *\n * Delete a storage bucket by its unique ID.\n *\n * @param {string} bucketId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteBucket(bucketId: string): Promise<{}> {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}'.replace('{bucketId}', bucketId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List files\n *\n * Get a list of all the user files. You can use the query params to filter your results.\n *\n * @param {string} bucketId\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listFiles(bucketId: string, queries?: string[], search?: string): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}/files'.replace('{bucketId}', bucketId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create file\n *\n * Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](https://appwrite.io/docs/server/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n\n *\n * @param {string} bucketId\n * @param {string} fileId\n * @param {File} file\n * @param {string[]} permissions\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createFile(bucketId: string, fileId: string, file: File, permissions?: string[], onProgress = (progress: UploadProgress) => {}): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof fileId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"fileId\"');\n }\n if (typeof file === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"file\"');\n }\n const apiPath = '/storage/buckets/{bucketId}/files'.replace('{bucketId}', bucketId);\n const payload: Payload = {};\n if (typeof fileId !== 'undefined') {\n payload['fileId'] = fileId;\n }\n if (typeof file !== 'undefined') {\n payload['file'] = file;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'multipart/form-data',\n }\n\n return await this.client.chunkedUpload(\n 'post',\n uri,\n apiHeaders,\n payload,\n onProgress\n );\n }\n /**\n * Get file\n *\n * Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.\n *\n * @param {string} bucketId\n * @param {string} fileId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getFile(bucketId: string, fileId: string): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof fileId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"fileId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}/files/{fileId}'.replace('{bucketId}', bucketId).replace('{fileId}', fileId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update file\n *\n * Update a file by its unique ID. Only users with write permissions have access to update this resource.\n *\n * @param {string} bucketId\n * @param {string} fileId\n * @param {string} name\n * @param {string[]} permissions\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateFile(bucketId: string, fileId: string, name?: string, permissions?: string[]): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof fileId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"fileId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}/files/{fileId}'.replace('{bucketId}', bucketId).replace('{fileId}', fileId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof permissions !== 'undefined') {\n payload['permissions'] = permissions;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete File\n *\n * Delete a file by its unique ID. Only users with write permissions have access to delete this resource.\n *\n * @param {string} bucketId\n * @param {string} fileId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteFile(bucketId: string, fileId: string): Promise<{}> {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof fileId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"fileId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}/files/{fileId}'.replace('{bucketId}', bucketId).replace('{fileId}', fileId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get file for download\n *\n * Get a file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory.\n *\n * @param {string} bucketId\n * @param {string} fileId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getFileDownload(bucketId: string, fileId: string): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof fileId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"fileId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}/files/{fileId}/download'.replace('{bucketId}', bucketId).replace('{fileId}', fileId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * Get file preview\n *\n * Get a file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets, will return the file icon image. You can also pass query string arguments for cutting and resizing your preview image. Preview is supported only for image files smaller than 10MB.\n *\n * @param {string} bucketId\n * @param {string} fileId\n * @param {number} width\n * @param {number} height\n * @param {ImageGravity} gravity\n * @param {number} quality\n * @param {number} borderWidth\n * @param {string} borderColor\n * @param {number} borderRadius\n * @param {number} opacity\n * @param {number} rotation\n * @param {string} background\n * @param {ImageFormat} output\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getFilePreview(bucketId: string, fileId: string, width?: number, height?: number, gravity?: ImageGravity, quality?: number, borderWidth?: number, borderColor?: string, borderRadius?: number, opacity?: number, rotation?: number, background?: string, output?: ImageFormat): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof fileId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"fileId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}/files/{fileId}/preview'.replace('{bucketId}', bucketId).replace('{fileId}', fileId);\n const payload: Payload = {};\n if (typeof width !== 'undefined') {\n payload['width'] = width;\n }\n if (typeof height !== 'undefined') {\n payload['height'] = height;\n }\n if (typeof gravity !== 'undefined') {\n payload['gravity'] = gravity;\n }\n if (typeof quality !== 'undefined') {\n payload['quality'] = quality;\n }\n if (typeof borderWidth !== 'undefined') {\n payload['borderWidth'] = borderWidth;\n }\n if (typeof borderColor !== 'undefined') {\n payload['borderColor'] = borderColor;\n }\n if (typeof borderRadius !== 'undefined') {\n payload['borderRadius'] = borderRadius;\n }\n if (typeof opacity !== 'undefined') {\n payload['opacity'] = opacity;\n }\n if (typeof rotation !== 'undefined') {\n payload['rotation'] = rotation;\n }\n if (typeof background !== 'undefined') {\n payload['background'] = background;\n }\n if (typeof output !== 'undefined') {\n payload['output'] = output;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n /**\n * Get file for view\n *\n * Get a file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header.\n *\n * @param {string} bucketId\n * @param {string} fileId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getFileView(bucketId: string, fileId: string): Promise {\n if (typeof bucketId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"bucketId\"');\n }\n if (typeof fileId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"fileId\"');\n }\n const apiPath = '/storage/buckets/{bucketId}/files/{fileId}/view'.replace('{bucketId}', bucketId).replace('{fileId}', fileId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n 'arrayBuffer'\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/teams.d.mts b/node_modules/node-appwrite/dist/services/teams.d.mts new file mode 100644 index 0000000..6293701 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/teams.d.mts @@ -0,0 +1,171 @@ +import { Client } from '../client.mjs'; +import { Models } from '../models.mjs'; +import '../query.mjs'; + +declare class Teams { + client: Client; + constructor(client: Client); + /** + * List teams + * + * Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise>} + */ + list(queries?: string[], search?: string): Promise>; + /** + * Create team + * + * Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team. + * + * @param {string} teamId + * @param {string} name + * @param {string[]} roles + * @throws {AppwriteException} + * @returns {Promise>} + */ + create(teamId: string, name: string, roles?: string[]): Promise>; + /** + * Get team + * + * Get a team by its ID. All team members have read access for this resource. + * + * @param {string} teamId + * @throws {AppwriteException} + * @returns {Promise>} + */ + get(teamId: string): Promise>; + /** + * Update name + * + * Update the team's name by its unique ID. + * + * @param {string} teamId + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateName(teamId: string, name: string): Promise>; + /** + * Delete team + * + * Delete a team using its ID. Only team members with the owner role can delete the team. + * + * @param {string} teamId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + delete(teamId: string): Promise<{}>; + /** + * List team memberships + * + * Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint. + * + * @param {string} teamId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listMemberships(teamId: string, queries?: string[], search?: string): Promise; + /** + * Create team membership + * + * Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team. + +You only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters. + +Use the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https://appwrite.io/docs/references/cloud/client-web/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. + +Please note that to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console. + + * + * @param {string} teamId + * @param {string[]} roles + * @param {string} email + * @param {string} userId + * @param {string} phone + * @param {string} url + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise} + */ + createMembership(teamId: string, roles: string[], email?: string, userId?: string, phone?: string, url?: string, name?: string): Promise; + /** + * Get team membership + * + * Get a team member by the membership unique id. All team members have read access for this resource. + * + * @param {string} teamId + * @param {string} membershipId + * @throws {AppwriteException} + * @returns {Promise} + */ + getMembership(teamId: string, membershipId: string): Promise; + /** + * Update membership + * + * Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https://appwrite.io/docs/permissions). + + * + * @param {string} teamId + * @param {string} membershipId + * @param {string[]} roles + * @throws {AppwriteException} + * @returns {Promise} + */ + updateMembership(teamId: string, membershipId: string, roles: string[]): Promise; + /** + * Delete team membership + * + * This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted. + * + * @param {string} teamId + * @param {string} membershipId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteMembership(teamId: string, membershipId: string): Promise<{}>; + /** + * Update team membership status + * + * Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user. + +If the request is successful, a session for the user is automatically created. + + * + * @param {string} teamId + * @param {string} membershipId + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + updateMembershipStatus(teamId: string, membershipId: string, userId: string, secret: string): Promise; + /** + * Get team preferences + * + * Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https://appwrite.io/docs/references/cloud/client-web/account#getPrefs). + * + * @param {string} teamId + * @throws {AppwriteException} + * @returns {Promise} + */ + getPrefs(teamId: string): Promise; + /** + * Update preferences + * + * Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded. + * + * @param {string} teamId + * @param {object} prefs + * @throws {AppwriteException} + * @returns {Promise} + */ + updatePrefs(teamId: string, prefs: object): Promise; +} + +export { Teams }; diff --git a/node_modules/node-appwrite/dist/services/teams.d.ts b/node_modules/node-appwrite/dist/services/teams.d.ts new file mode 100644 index 0000000..f95d102 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/teams.d.ts @@ -0,0 +1,171 @@ +import { Client } from '../client.js'; +import { Models } from '../models.js'; +import '../query.js'; + +declare class Teams { + client: Client; + constructor(client: Client); + /** + * List teams + * + * Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise>} + */ + list(queries?: string[], search?: string): Promise>; + /** + * Create team + * + * Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team. + * + * @param {string} teamId + * @param {string} name + * @param {string[]} roles + * @throws {AppwriteException} + * @returns {Promise>} + */ + create(teamId: string, name: string, roles?: string[]): Promise>; + /** + * Get team + * + * Get a team by its ID. All team members have read access for this resource. + * + * @param {string} teamId + * @throws {AppwriteException} + * @returns {Promise>} + */ + get(teamId: string): Promise>; + /** + * Update name + * + * Update the team's name by its unique ID. + * + * @param {string} teamId + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateName(teamId: string, name: string): Promise>; + /** + * Delete team + * + * Delete a team using its ID. Only team members with the owner role can delete the team. + * + * @param {string} teamId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + delete(teamId: string): Promise<{}>; + /** + * List team memberships + * + * Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint. + * + * @param {string} teamId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listMemberships(teamId: string, queries?: string[], search?: string): Promise; + /** + * Create team membership + * + * Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team. + +You only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters. + +Use the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https://appwrite.io/docs/references/cloud/client-web/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. + +Please note that to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console. + + * + * @param {string} teamId + * @param {string[]} roles + * @param {string} email + * @param {string} userId + * @param {string} phone + * @param {string} url + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise} + */ + createMembership(teamId: string, roles: string[], email?: string, userId?: string, phone?: string, url?: string, name?: string): Promise; + /** + * Get team membership + * + * Get a team member by the membership unique id. All team members have read access for this resource. + * + * @param {string} teamId + * @param {string} membershipId + * @throws {AppwriteException} + * @returns {Promise} + */ + getMembership(teamId: string, membershipId: string): Promise; + /** + * Update membership + * + * Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https://appwrite.io/docs/permissions). + + * + * @param {string} teamId + * @param {string} membershipId + * @param {string[]} roles + * @throws {AppwriteException} + * @returns {Promise} + */ + updateMembership(teamId: string, membershipId: string, roles: string[]): Promise; + /** + * Delete team membership + * + * This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted. + * + * @param {string} teamId + * @param {string} membershipId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteMembership(teamId: string, membershipId: string): Promise<{}>; + /** + * Update team membership status + * + * Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user. + +If the request is successful, a session for the user is automatically created. + + * + * @param {string} teamId + * @param {string} membershipId + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + updateMembershipStatus(teamId: string, membershipId: string, userId: string, secret: string): Promise; + /** + * Get team preferences + * + * Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https://appwrite.io/docs/references/cloud/client-web/account#getPrefs). + * + * @param {string} teamId + * @throws {AppwriteException} + * @returns {Promise} + */ + getPrefs(teamId: string): Promise; + /** + * Update preferences + * + * Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded. + * + * @param {string} teamId + * @param {object} prefs + * @throws {AppwriteException} + * @returns {Promise} + */ + updatePrefs(teamId: string, prefs: object): Promise; +} + +export { Teams }; diff --git a/node_modules/node-appwrite/dist/services/teams.js b/node_modules/node-appwrite/dist/services/teams.js new file mode 100644 index 0000000..feae772 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/teams.js @@ -0,0 +1,466 @@ +'use strict'; + +var client = require('../client'); + +class Teams { + constructor(client) { + this.client = client; + } + /** + * List teams + * + * Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise>} + */ + async list(queries, search) { + const apiPath = "/teams"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create team + * + * Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team. + * + * @param {string} teamId + * @param {string} name + * @param {string[]} roles + * @throws {AppwriteException} + * @returns {Promise>} + */ + async create(teamId, name, roles) { + if (typeof teamId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "teamId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/teams"; + const payload = {}; + if (typeof teamId !== "undefined") { + payload["teamId"] = teamId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof roles !== "undefined") { + payload["roles"] = roles; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get team + * + * Get a team by its ID. All team members have read access for this resource. + * + * @param {string} teamId + * @throws {AppwriteException} + * @returns {Promise>} + */ + async get(teamId) { + if (typeof teamId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "teamId"'); + } + const apiPath = "/teams/{teamId}".replace("{teamId}", teamId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update name + * + * Update the team's name by its unique ID. + * + * @param {string} teamId + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateName(teamId, name) { + if (typeof teamId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "teamId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/teams/{teamId}".replace("{teamId}", teamId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Delete team + * + * Delete a team using its ID. Only team members with the owner role can delete the team. + * + * @param {string} teamId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async delete(teamId) { + if (typeof teamId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "teamId"'); + } + const apiPath = "/teams/{teamId}".replace("{teamId}", teamId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List team memberships + * + * Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint. + * + * @param {string} teamId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listMemberships(teamId, queries, search) { + if (typeof teamId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "teamId"'); + } + const apiPath = "/teams/{teamId}/memberships".replace("{teamId}", teamId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create team membership + * + * Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team. + + You only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters. + + Use the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https://appwrite.io/docs/references/cloud/client-web/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. + + Please note that to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console. + + * + * @param {string} teamId + * @param {string[]} roles + * @param {string} email + * @param {string} userId + * @param {string} phone + * @param {string} url + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise} + */ + async createMembership(teamId, roles, email, userId, phone, url, name) { + if (typeof teamId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "teamId"'); + } + if (typeof roles === "undefined") { + throw new client.AppwriteException('Missing required parameter: "roles"'); + } + const apiPath = "/teams/{teamId}/memberships".replace("{teamId}", teamId); + const payload = {}; + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof phone !== "undefined") { + payload["phone"] = phone; + } + if (typeof roles !== "undefined") { + payload["roles"] = roles; + } + if (typeof url !== "undefined") { + payload["url"] = url; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get team membership + * + * Get a team member by the membership unique id. All team members have read access for this resource. + * + * @param {string} teamId + * @param {string} membershipId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getMembership(teamId, membershipId) { + if (typeof teamId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "teamId"'); + } + if (typeof membershipId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "membershipId"'); + } + const apiPath = "/teams/{teamId}/memberships/{membershipId}".replace("{teamId}", teamId).replace("{membershipId}", membershipId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update membership + * + * Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https://appwrite.io/docs/permissions). + + * + * @param {string} teamId + * @param {string} membershipId + * @param {string[]} roles + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateMembership(teamId, membershipId, roles) { + if (typeof teamId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "teamId"'); + } + if (typeof membershipId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "membershipId"'); + } + if (typeof roles === "undefined") { + throw new client.AppwriteException('Missing required parameter: "roles"'); + } + const apiPath = "/teams/{teamId}/memberships/{membershipId}".replace("{teamId}", teamId).replace("{membershipId}", membershipId); + const payload = {}; + if (typeof roles !== "undefined") { + payload["roles"] = roles; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Delete team membership + * + * This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted. + * + * @param {string} teamId + * @param {string} membershipId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteMembership(teamId, membershipId) { + if (typeof teamId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "teamId"'); + } + if (typeof membershipId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "membershipId"'); + } + const apiPath = "/teams/{teamId}/memberships/{membershipId}".replace("{teamId}", teamId).replace("{membershipId}", membershipId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Update team membership status + * + * Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user. + + If the request is successful, a session for the user is automatically created. + + * + * @param {string} teamId + * @param {string} membershipId + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateMembershipStatus(teamId, membershipId, userId, secret) { + if (typeof teamId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "teamId"'); + } + if (typeof membershipId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "membershipId"'); + } + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof secret === "undefined") { + throw new client.AppwriteException('Missing required parameter: "secret"'); + } + const apiPath = "/teams/{teamId}/memberships/{membershipId}/status".replace("{teamId}", teamId).replace("{membershipId}", membershipId); + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof secret !== "undefined") { + payload["secret"] = secret; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Get team preferences + * + * Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https://appwrite.io/docs/references/cloud/client-web/account#getPrefs). + * + * @param {string} teamId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getPrefs(teamId) { + if (typeof teamId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "teamId"'); + } + const apiPath = "/teams/{teamId}/prefs".replace("{teamId}", teamId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update preferences + * + * Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded. + * + * @param {string} teamId + * @param {object} prefs + * @throws {AppwriteException} + * @returns {Promise} + */ + async updatePrefs(teamId, prefs) { + if (typeof teamId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "teamId"'); + } + if (typeof prefs === "undefined") { + throw new client.AppwriteException('Missing required parameter: "prefs"'); + } + const apiPath = "/teams/{teamId}/prefs".replace("{teamId}", teamId); + const payload = {}; + if (typeof prefs !== "undefined") { + payload["prefs"] = prefs; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } +} + +exports.Teams = Teams; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=teams.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/teams.js.map b/node_modules/node-appwrite/dist/services/teams.js.map new file mode 100644 index 0000000..747b924 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/teams.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/teams.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\n\nexport class Teams {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * List teams\n *\n * Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async list(queries?: string[], search?: string): Promise> {\n const apiPath = '/teams';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create team\n *\n * Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.\n *\n * @param {string} teamId\n * @param {string} name\n * @param {string[]} roles\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async create(teamId: string, name: string, roles?: string[]): Promise> {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/teams';\n const payload: Payload = {};\n if (typeof teamId !== 'undefined') {\n payload['teamId'] = teamId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof roles !== 'undefined') {\n payload['roles'] = roles;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get team\n *\n * Get a team by its ID. All team members have read access for this resource.\n *\n * @param {string} teamId\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async get(teamId: string): Promise> {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n const apiPath = '/teams/{teamId}'.replace('{teamId}', teamId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update name\n *\n * Update the team's name by its unique ID.\n *\n * @param {string} teamId\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateName(teamId: string, name: string): Promise> {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/teams/{teamId}'.replace('{teamId}', teamId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete team\n *\n * Delete a team using its ID. Only team members with the owner role can delete the team.\n *\n * @param {string} teamId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async delete(teamId: string): Promise<{}> {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n const apiPath = '/teams/{teamId}'.replace('{teamId}', teamId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List team memberships\n *\n * Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.\n *\n * @param {string} teamId\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listMemberships(teamId: string, queries?: string[], search?: string): Promise {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n const apiPath = '/teams/{teamId}/memberships'.replace('{teamId}', teamId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create team membership\n *\n * Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https://appwrite.io/docs/references/cloud/client-web/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n\n *\n * @param {string} teamId\n * @param {string[]} roles\n * @param {string} email\n * @param {string} userId\n * @param {string} phone\n * @param {string} url\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createMembership(teamId: string, roles: string[], email?: string, userId?: string, phone?: string, url?: string, name?: string): Promise {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n if (typeof roles === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"roles\"');\n }\n const apiPath = '/teams/{teamId}/memberships'.replace('{teamId}', teamId);\n const payload: Payload = {};\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof phone !== 'undefined') {\n payload['phone'] = phone;\n }\n if (typeof roles !== 'undefined') {\n payload['roles'] = roles;\n }\n if (typeof url !== 'undefined') {\n payload['url'] = url;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get team membership\n *\n * Get a team member by the membership unique id. All team members have read access for this resource.\n *\n * @param {string} teamId\n * @param {string} membershipId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getMembership(teamId: string, membershipId: string): Promise {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n if (typeof membershipId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"membershipId\"');\n }\n const apiPath = '/teams/{teamId}/memberships/{membershipId}'.replace('{teamId}', teamId).replace('{membershipId}', membershipId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update membership\n *\n * Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https://appwrite.io/docs/permissions).\n\n *\n * @param {string} teamId\n * @param {string} membershipId\n * @param {string[]} roles\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateMembership(teamId: string, membershipId: string, roles: string[]): Promise {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n if (typeof membershipId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"membershipId\"');\n }\n if (typeof roles === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"roles\"');\n }\n const apiPath = '/teams/{teamId}/memberships/{membershipId}'.replace('{teamId}', teamId).replace('{membershipId}', membershipId);\n const payload: Payload = {};\n if (typeof roles !== 'undefined') {\n payload['roles'] = roles;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete team membership\n *\n * This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.\n *\n * @param {string} teamId\n * @param {string} membershipId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteMembership(teamId: string, membershipId: string): Promise<{}> {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n if (typeof membershipId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"membershipId\"');\n }\n const apiPath = '/teams/{teamId}/memberships/{membershipId}'.replace('{teamId}', teamId).replace('{membershipId}', membershipId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update team membership status\n *\n * Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n\n *\n * @param {string} teamId\n * @param {string} membershipId\n * @param {string} userId\n * @param {string} secret\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateMembershipStatus(teamId: string, membershipId: string, userId: string, secret: string): Promise {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n if (typeof membershipId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"membershipId\"');\n }\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof secret === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"secret\"');\n }\n const apiPath = '/teams/{teamId}/memberships/{membershipId}/status'.replace('{teamId}', teamId).replace('{membershipId}', membershipId);\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof secret !== 'undefined') {\n payload['secret'] = secret;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get team preferences\n *\n * Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https://appwrite.io/docs/references/cloud/client-web/account#getPrefs).\n *\n * @param {string} teamId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getPrefs(teamId: string): Promise {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n const apiPath = '/teams/{teamId}/prefs'.replace('{teamId}', teamId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update preferences\n *\n * Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.\n *\n * @param {string} teamId\n * @param {object} prefs\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updatePrefs(teamId: string, prefs: object): Promise {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n if (typeof prefs === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"prefs\"');\n }\n const apiPath = '/teams/{teamId}/prefs'.replace('{teamId}', teamId);\n const payload: Payload = {};\n if (typeof prefs !== 'undefined') {\n payload['prefs'] = prefs;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/teams.mjs b/node_modules/node-appwrite/dist/services/teams.mjs new file mode 100644 index 0000000..5ac38e2 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/teams.mjs @@ -0,0 +1,465 @@ +import { AppwriteException } from '../client.mjs'; + +// src/services/teams.ts +var Teams = class { + constructor(client) { + this.client = client; + } + /** + * List teams + * + * Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise>} + */ + async list(queries, search) { + const apiPath = "/teams"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create team + * + * Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team. + * + * @param {string} teamId + * @param {string} name + * @param {string[]} roles + * @throws {AppwriteException} + * @returns {Promise>} + */ + async create(teamId, name, roles) { + if (typeof teamId === "undefined") { + throw new AppwriteException('Missing required parameter: "teamId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/teams"; + const payload = {}; + if (typeof teamId !== "undefined") { + payload["teamId"] = teamId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + if (typeof roles !== "undefined") { + payload["roles"] = roles; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get team + * + * Get a team by its ID. All team members have read access for this resource. + * + * @param {string} teamId + * @throws {AppwriteException} + * @returns {Promise>} + */ + async get(teamId) { + if (typeof teamId === "undefined") { + throw new AppwriteException('Missing required parameter: "teamId"'); + } + const apiPath = "/teams/{teamId}".replace("{teamId}", teamId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update name + * + * Update the team's name by its unique ID. + * + * @param {string} teamId + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateName(teamId, name) { + if (typeof teamId === "undefined") { + throw new AppwriteException('Missing required parameter: "teamId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/teams/{teamId}".replace("{teamId}", teamId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Delete team + * + * Delete a team using its ID. Only team members with the owner role can delete the team. + * + * @param {string} teamId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async delete(teamId) { + if (typeof teamId === "undefined") { + throw new AppwriteException('Missing required parameter: "teamId"'); + } + const apiPath = "/teams/{teamId}".replace("{teamId}", teamId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List team memberships + * + * Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint. + * + * @param {string} teamId + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listMemberships(teamId, queries, search) { + if (typeof teamId === "undefined") { + throw new AppwriteException('Missing required parameter: "teamId"'); + } + const apiPath = "/teams/{teamId}/memberships".replace("{teamId}", teamId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create team membership + * + * Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team. + + You only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters. + + Use the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https://appwrite.io/docs/references/cloud/client-web/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. + + Please note that to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console. + + * + * @param {string} teamId + * @param {string[]} roles + * @param {string} email + * @param {string} userId + * @param {string} phone + * @param {string} url + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise} + */ + async createMembership(teamId, roles, email, userId, phone, url, name) { + if (typeof teamId === "undefined") { + throw new AppwriteException('Missing required parameter: "teamId"'); + } + if (typeof roles === "undefined") { + throw new AppwriteException('Missing required parameter: "roles"'); + } + const apiPath = "/teams/{teamId}/memberships".replace("{teamId}", teamId); + const payload = {}; + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof phone !== "undefined") { + payload["phone"] = phone; + } + if (typeof roles !== "undefined") { + payload["roles"] = roles; + } + if (typeof url !== "undefined") { + payload["url"] = url; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get team membership + * + * Get a team member by the membership unique id. All team members have read access for this resource. + * + * @param {string} teamId + * @param {string} membershipId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getMembership(teamId, membershipId) { + if (typeof teamId === "undefined") { + throw new AppwriteException('Missing required parameter: "teamId"'); + } + if (typeof membershipId === "undefined") { + throw new AppwriteException('Missing required parameter: "membershipId"'); + } + const apiPath = "/teams/{teamId}/memberships/{membershipId}".replace("{teamId}", teamId).replace("{membershipId}", membershipId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update membership + * + * Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https://appwrite.io/docs/permissions). + + * + * @param {string} teamId + * @param {string} membershipId + * @param {string[]} roles + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateMembership(teamId, membershipId, roles) { + if (typeof teamId === "undefined") { + throw new AppwriteException('Missing required parameter: "teamId"'); + } + if (typeof membershipId === "undefined") { + throw new AppwriteException('Missing required parameter: "membershipId"'); + } + if (typeof roles === "undefined") { + throw new AppwriteException('Missing required parameter: "roles"'); + } + const apiPath = "/teams/{teamId}/memberships/{membershipId}".replace("{teamId}", teamId).replace("{membershipId}", membershipId); + const payload = {}; + if (typeof roles !== "undefined") { + payload["roles"] = roles; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Delete team membership + * + * This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted. + * + * @param {string} teamId + * @param {string} membershipId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteMembership(teamId, membershipId) { + if (typeof teamId === "undefined") { + throw new AppwriteException('Missing required parameter: "teamId"'); + } + if (typeof membershipId === "undefined") { + throw new AppwriteException('Missing required parameter: "membershipId"'); + } + const apiPath = "/teams/{teamId}/memberships/{membershipId}".replace("{teamId}", teamId).replace("{membershipId}", membershipId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Update team membership status + * + * Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user. + + If the request is successful, a session for the user is automatically created. + + * + * @param {string} teamId + * @param {string} membershipId + * @param {string} userId + * @param {string} secret + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateMembershipStatus(teamId, membershipId, userId, secret) { + if (typeof teamId === "undefined") { + throw new AppwriteException('Missing required parameter: "teamId"'); + } + if (typeof membershipId === "undefined") { + throw new AppwriteException('Missing required parameter: "membershipId"'); + } + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof secret === "undefined") { + throw new AppwriteException('Missing required parameter: "secret"'); + } + const apiPath = "/teams/{teamId}/memberships/{membershipId}/status".replace("{teamId}", teamId).replace("{membershipId}", membershipId); + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof secret !== "undefined") { + payload["secret"] = secret; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Get team preferences + * + * Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https://appwrite.io/docs/references/cloud/client-web/account#getPrefs). + * + * @param {string} teamId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getPrefs(teamId) { + if (typeof teamId === "undefined") { + throw new AppwriteException('Missing required parameter: "teamId"'); + } + const apiPath = "/teams/{teamId}/prefs".replace("{teamId}", teamId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update preferences + * + * Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded. + * + * @param {string} teamId + * @param {object} prefs + * @throws {AppwriteException} + * @returns {Promise} + */ + async updatePrefs(teamId, prefs) { + if (typeof teamId === "undefined") { + throw new AppwriteException('Missing required parameter: "teamId"'); + } + if (typeof prefs === "undefined") { + throw new AppwriteException('Missing required parameter: "prefs"'); + } + const apiPath = "/teams/{teamId}/prefs".replace("{teamId}", teamId); + const payload = {}; + if (typeof prefs !== "undefined") { + payload["prefs"] = prefs; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } +}; + +export { Teams }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=teams.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/teams.mjs.map b/node_modules/node-appwrite/dist/services/teams.mjs.map new file mode 100644 index 0000000..46d18fc --- /dev/null +++ b/node_modules/node-appwrite/dist/services/teams.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/teams.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\n\nexport class Teams {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * List teams\n *\n * Get a list of all the teams in which the current user is a member. You can use the parameters to filter your results.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async list(queries?: string[], search?: string): Promise> {\n const apiPath = '/teams';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create team\n *\n * Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.\n *\n * @param {string} teamId\n * @param {string} name\n * @param {string[]} roles\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async create(teamId: string, name: string, roles?: string[]): Promise> {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/teams';\n const payload: Payload = {};\n if (typeof teamId !== 'undefined') {\n payload['teamId'] = teamId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n if (typeof roles !== 'undefined') {\n payload['roles'] = roles;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get team\n *\n * Get a team by its ID. All team members have read access for this resource.\n *\n * @param {string} teamId\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async get(teamId: string): Promise> {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n const apiPath = '/teams/{teamId}'.replace('{teamId}', teamId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update name\n *\n * Update the team's name by its unique ID.\n *\n * @param {string} teamId\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateName(teamId: string, name: string): Promise> {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/teams/{teamId}'.replace('{teamId}', teamId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete team\n *\n * Delete a team using its ID. Only team members with the owner role can delete the team.\n *\n * @param {string} teamId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async delete(teamId: string): Promise<{}> {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n const apiPath = '/teams/{teamId}'.replace('{teamId}', teamId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List team memberships\n *\n * Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.\n *\n * @param {string} teamId\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listMemberships(teamId: string, queries?: string[], search?: string): Promise {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n const apiPath = '/teams/{teamId}/memberships'.replace('{teamId}', teamId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create team membership\n *\n * Invite a new member to join your team. Provide an ID for existing users, or invite unregistered users using an email or phone number. If initiated from a Client SDK, Appwrite will send an email or sms with a link to join the team to the invited user, and an account will be created for them if one doesn't exist. If initiated from a Server SDK, the new member will be added automatically to the team.\n\nYou only need to provide one of a user ID, email, or phone number. Appwrite will prioritize accepting the user ID > email > phone number if you provide more than one of these parameters.\n\nUse the `url` parameter to redirect the user from the invitation email to your app. After the user is redirected, use the [Update Team Membership Status](https://appwrite.io/docs/references/cloud/client-web/teams#updateMembershipStatus) endpoint to allow the user to accept the invitation to the team. \n\nPlease note that to avoid a [Redirect Attack](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) Appwrite will accept the only redirect URLs under the domains you have added as a platform on the Appwrite Console.\n\n *\n * @param {string} teamId\n * @param {string[]} roles\n * @param {string} email\n * @param {string} userId\n * @param {string} phone\n * @param {string} url\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createMembership(teamId: string, roles: string[], email?: string, userId?: string, phone?: string, url?: string, name?: string): Promise {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n if (typeof roles === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"roles\"');\n }\n const apiPath = '/teams/{teamId}/memberships'.replace('{teamId}', teamId);\n const payload: Payload = {};\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof phone !== 'undefined') {\n payload['phone'] = phone;\n }\n if (typeof roles !== 'undefined') {\n payload['roles'] = roles;\n }\n if (typeof url !== 'undefined') {\n payload['url'] = url;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get team membership\n *\n * Get a team member by the membership unique id. All team members have read access for this resource.\n *\n * @param {string} teamId\n * @param {string} membershipId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getMembership(teamId: string, membershipId: string): Promise {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n if (typeof membershipId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"membershipId\"');\n }\n const apiPath = '/teams/{teamId}/memberships/{membershipId}'.replace('{teamId}', teamId).replace('{membershipId}', membershipId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update membership\n *\n * Modify the roles of a team member. Only team members with the owner role have access to this endpoint. Learn more about [roles and permissions](https://appwrite.io/docs/permissions).\n\n *\n * @param {string} teamId\n * @param {string} membershipId\n * @param {string[]} roles\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateMembership(teamId: string, membershipId: string, roles: string[]): Promise {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n if (typeof membershipId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"membershipId\"');\n }\n if (typeof roles === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"roles\"');\n }\n const apiPath = '/teams/{teamId}/memberships/{membershipId}'.replace('{teamId}', teamId).replace('{membershipId}', membershipId);\n const payload: Payload = {};\n if (typeof roles !== 'undefined') {\n payload['roles'] = roles;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete team membership\n *\n * This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.\n *\n * @param {string} teamId\n * @param {string} membershipId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteMembership(teamId: string, membershipId: string): Promise<{}> {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n if (typeof membershipId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"membershipId\"');\n }\n const apiPath = '/teams/{teamId}/memberships/{membershipId}'.replace('{teamId}', teamId).replace('{membershipId}', membershipId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update team membership status\n *\n * Use this endpoint to allow a user to accept an invitation to join a team after being redirected back to your app from the invitation email received by the user.\n\nIf the request is successful, a session for the user is automatically created.\n\n *\n * @param {string} teamId\n * @param {string} membershipId\n * @param {string} userId\n * @param {string} secret\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateMembershipStatus(teamId: string, membershipId: string, userId: string, secret: string): Promise {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n if (typeof membershipId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"membershipId\"');\n }\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof secret === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"secret\"');\n }\n const apiPath = '/teams/{teamId}/memberships/{membershipId}/status'.replace('{teamId}', teamId).replace('{membershipId}', membershipId);\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof secret !== 'undefined') {\n payload['secret'] = secret;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get team preferences\n *\n * Get the team's shared preferences by its unique ID. If a preference doesn't need to be shared by all team members, prefer storing them in [user preferences](https://appwrite.io/docs/references/cloud/client-web/account#getPrefs).\n *\n * @param {string} teamId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getPrefs(teamId: string): Promise {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n const apiPath = '/teams/{teamId}/prefs'.replace('{teamId}', teamId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update preferences\n *\n * Update the team's preferences by its unique ID. The object you pass is stored as is and replaces any previous value. The maximum allowed prefs size is 64kB and throws an error if exceeded.\n *\n * @param {string} teamId\n * @param {object} prefs\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updatePrefs(teamId: string, prefs: object): Promise {\n if (typeof teamId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"teamId\"');\n }\n if (typeof prefs === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"prefs\"');\n }\n const apiPath = '/teams/{teamId}/prefs'.replace('{teamId}', teamId);\n const payload: Payload = {};\n if (typeof prefs !== 'undefined') {\n payload['prefs'] = prefs;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/users.d.mts b/node_modules/node-appwrite/dist/services/users.d.mts new file mode 100644 index 0000000..d547284 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/users.d.mts @@ -0,0 +1,503 @@ +import { Client } from '../client.mjs'; +import { Models } from '../models.mjs'; +import { PasswordHash } from '../enums/password-hash.mjs'; +import { AuthenticatorType } from '../enums/authenticator-type.mjs'; +import { MessagingProviderType } from '../enums/messaging-provider-type.mjs'; +import '../query.mjs'; + +declare class Users { + client: Client; + constructor(client: Client); + /** + * List users + * + * Get a list of all the project's users. You can use the query params to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise>} + */ + list(queries?: string[], search?: string): Promise>; + /** + * Create user + * + * Create a new user. + * + * @param {string} userId + * @param {string} email + * @param {string} phone + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + create(userId: string, email?: string, phone?: string, password?: string, name?: string): Promise>; + /** + * Create user with Argon2 password + * + * Create a new user. Password provided must be hashed with the [Argon2](https://en.wikipedia.org/wiki/Argon2) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + createArgon2User(userId: string, email: string, password: string, name?: string): Promise>; + /** + * Create user with bcrypt password + * + * Create a new user. Password provided must be hashed with the [Bcrypt](https://en.wikipedia.org/wiki/Bcrypt) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + createBcryptUser(userId: string, email: string, password: string, name?: string): Promise>; + /** + * List Identities + * + * Get identities for all users. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listIdentities(queries?: string[], search?: string): Promise; + /** + * Delete identity + * + * Delete an identity by its unique ID. + * + * @param {string} identityId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteIdentity(identityId: string): Promise<{}>; + /** + * Create user with MD5 password + * + * Create a new user. Password provided must be hashed with the [MD5](https://en.wikipedia.org/wiki/MD5) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + createMD5User(userId: string, email: string, password: string, name?: string): Promise>; + /** + * Create user with PHPass password + * + * Create a new user. Password provided must be hashed with the [PHPass](https://www.openwall.com/phpass/) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + createPHPassUser(userId: string, email: string, password: string, name?: string): Promise>; + /** + * Create user with Scrypt password + * + * Create a new user. Password provided must be hashed with the [Scrypt](https://github.com/Tarsnap/scrypt) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} passwordSalt + * @param {number} passwordCpu + * @param {number} passwordMemory + * @param {number} passwordParallel + * @param {number} passwordLength + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + createScryptUser(userId: string, email: string, password: string, passwordSalt: string, passwordCpu: number, passwordMemory: number, passwordParallel: number, passwordLength: number, name?: string): Promise>; + /** + * Create user with Scrypt modified password + * + * Create a new user. Password provided must be hashed with the [Scrypt Modified](https://gist.github.com/Meldiron/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} passwordSalt + * @param {string} passwordSaltSeparator + * @param {string} passwordSignerKey + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + createScryptModifiedUser(userId: string, email: string, password: string, passwordSalt: string, passwordSaltSeparator: string, passwordSignerKey: string, name?: string): Promise>; + /** + * Create user with SHA password + * + * Create a new user. Password provided must be hashed with the [SHA](https://en.wikipedia.org/wiki/Secure_Hash_Algorithm) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {PasswordHash} passwordVersion + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + createSHAUser(userId: string, email: string, password: string, passwordVersion?: PasswordHash, name?: string): Promise>; + /** + * Get user + * + * Get a user by its unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise>} + */ + get(userId: string): Promise>; + /** + * Delete user + * + * Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https://appwrite.io/docs/server/users#usersUpdateStatus) endpoint instead. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + delete(userId: string): Promise<{}>; + /** + * Update email + * + * Update the user email by its unique ID. + * + * @param {string} userId + * @param {string} email + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateEmail(userId: string, email: string): Promise>; + /** + * Create user JWT + * + * Use this endpoint to create a JSON Web Token for user by its unique ID. You can use the resulting JWT to authenticate on behalf of the user. The JWT secret will become invalid if the session it uses gets deleted. + * + * @param {string} userId + * @param {string} sessionId + * @param {number} duration + * @throws {AppwriteException} + * @returns {Promise} + */ + createJWT(userId: string, sessionId?: string, duration?: number): Promise; + /** + * Update user labels + * + * Update the user labels by its unique ID. + +Labels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https://appwrite.io/docs/permissions) for more info. + * + * @param {string} userId + * @param {string[]} labels + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateLabels(userId: string, labels: string[]): Promise>; + /** + * List user logs + * + * Get the user activity logs list by its unique ID. + * + * @param {string} userId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listLogs(userId: string, queries?: string[]): Promise; + /** + * List user memberships + * + * Get the user membership list by its unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + listMemberships(userId: string): Promise; + /** + * Update MFA + * + * Enable or disable MFA on a user account. + * + * @param {string} userId + * @param {boolean} mfa + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateMfa(userId: string, mfa: boolean): Promise>; + /** + * Delete Authenticator + * + * Delete an authenticator app. + * + * @param {string} userId + * @param {AuthenticatorType} type + * @throws {AppwriteException} + * @returns {Promise>} + */ + deleteMfaAuthenticator(userId: string, type: AuthenticatorType): Promise>; + /** + * List Factors + * + * List the factors available on the account to be used as a MFA challange. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + listMfaFactors(userId: string): Promise; + /** + * Get MFA Recovery Codes + * + * Get recovery codes that can be used as backup for MFA flow by User ID. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + getMfaRecoveryCodes(userId: string): Promise; + /** + * Regenerate MFA Recovery Codes + * + * Regenerate recovery codes that can be used as backup for MFA flow by User ID. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + updateMfaRecoveryCodes(userId: string): Promise; + /** + * Create MFA Recovery Codes + * + * Generate recovery codes used as backup for MFA flow for User ID. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method by client SDK. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + createMfaRecoveryCodes(userId: string): Promise; + /** + * Update name + * + * Update the user name by its unique ID. + * + * @param {string} userId + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateName(userId: string, name: string): Promise>; + /** + * Update password + * + * Update the user password by its unique ID. + * + * @param {string} userId + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise>} + */ + updatePassword(userId: string, password: string): Promise>; + /** + * Update phone + * + * Update the user phone by its unique ID. + * + * @param {string} userId + * @param {string} number + * @throws {AppwriteException} + * @returns {Promise>} + */ + updatePhone(userId: string, number: string): Promise>; + /** + * Get user preferences + * + * Get the user preferences by its unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + getPrefs(userId: string): Promise; + /** + * Update user preferences + * + * Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded. + * + * @param {string} userId + * @param {object} prefs + * @throws {AppwriteException} + * @returns {Promise} + */ + updatePrefs(userId: string, prefs: object): Promise; + /** + * List user sessions + * + * Get the user sessions list by its unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + listSessions(userId: string): Promise; + /** + * Create session + * + * Creates a session for a user. Returns an immediately usable session object. + +If you want to generate a token for a custom authentication flow, use the [POST /users/{userId}/tokens](https://appwrite.io/docs/server/users#createToken) endpoint. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + createSession(userId: string): Promise; + /** + * Delete user sessions + * + * Delete all user's sessions by using the user's unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteSessions(userId: string): Promise<{}>; + /** + * Delete user session + * + * Delete a user sessions by its unique ID. + * + * @param {string} userId + * @param {string} sessionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteSession(userId: string, sessionId: string): Promise<{}>; + /** + * Update user status + * + * Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved. + * + * @param {string} userId + * @param {boolean} status + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateStatus(userId: string, status: boolean): Promise>; + /** + * List User Targets + * + * List the messaging targets that are associated with a user. + * + * @param {string} userId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listTargets(userId: string, queries?: string[]): Promise; + /** + * Create User Target + * + * Create a messaging target. + * + * @param {string} userId + * @param {string} targetId + * @param {MessagingProviderType} providerType + * @param {string} identifier + * @param {string} providerId + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise} + */ + createTarget(userId: string, targetId: string, providerType: MessagingProviderType, identifier: string, providerId?: string, name?: string): Promise; + /** + * Get User Target + * + * Get a user's push notification target by ID. + * + * @param {string} userId + * @param {string} targetId + * @throws {AppwriteException} + * @returns {Promise} + */ + getTarget(userId: string, targetId: string): Promise; + /** + * Update User target + * + * Update a messaging target. + * + * @param {string} userId + * @param {string} targetId + * @param {string} identifier + * @param {string} providerId + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise} + */ + updateTarget(userId: string, targetId: string, identifier?: string, providerId?: string, name?: string): Promise; + /** + * Delete user target + * + * Delete a messaging target. + * + * @param {string} userId + * @param {string} targetId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteTarget(userId: string, targetId: string): Promise<{}>; + /** + * Create token + * + * Returns a token with a secret key for creating a session. Use the user ID and secret and submit a request to the [PUT /account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. + + * + * @param {string} userId + * @param {number} length + * @param {number} expire + * @throws {AppwriteException} + * @returns {Promise} + */ + createToken(userId: string, length?: number, expire?: number): Promise; + /** + * Update email verification + * + * Update the user email verification status by its unique ID. + * + * @param {string} userId + * @param {boolean} emailVerification + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateEmailVerification(userId: string, emailVerification: boolean): Promise>; + /** + * Update phone verification + * + * Update the user phone verification status by its unique ID. + * + * @param {string} userId + * @param {boolean} phoneVerification + * @throws {AppwriteException} + * @returns {Promise>} + */ + updatePhoneVerification(userId: string, phoneVerification: boolean): Promise>; +} + +export { Users }; diff --git a/node_modules/node-appwrite/dist/services/users.d.ts b/node_modules/node-appwrite/dist/services/users.d.ts new file mode 100644 index 0000000..58d1115 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/users.d.ts @@ -0,0 +1,503 @@ +import { Client } from '../client.js'; +import { Models } from '../models.js'; +import { PasswordHash } from '../enums/password-hash.js'; +import { AuthenticatorType } from '../enums/authenticator-type.js'; +import { MessagingProviderType } from '../enums/messaging-provider-type.js'; +import '../query.js'; + +declare class Users { + client: Client; + constructor(client: Client); + /** + * List users + * + * Get a list of all the project's users. You can use the query params to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise>} + */ + list(queries?: string[], search?: string): Promise>; + /** + * Create user + * + * Create a new user. + * + * @param {string} userId + * @param {string} email + * @param {string} phone + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + create(userId: string, email?: string, phone?: string, password?: string, name?: string): Promise>; + /** + * Create user with Argon2 password + * + * Create a new user. Password provided must be hashed with the [Argon2](https://en.wikipedia.org/wiki/Argon2) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + createArgon2User(userId: string, email: string, password: string, name?: string): Promise>; + /** + * Create user with bcrypt password + * + * Create a new user. Password provided must be hashed with the [Bcrypt](https://en.wikipedia.org/wiki/Bcrypt) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + createBcryptUser(userId: string, email: string, password: string, name?: string): Promise>; + /** + * List Identities + * + * Get identities for all users. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + listIdentities(queries?: string[], search?: string): Promise; + /** + * Delete identity + * + * Delete an identity by its unique ID. + * + * @param {string} identityId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteIdentity(identityId: string): Promise<{}>; + /** + * Create user with MD5 password + * + * Create a new user. Password provided must be hashed with the [MD5](https://en.wikipedia.org/wiki/MD5) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + createMD5User(userId: string, email: string, password: string, name?: string): Promise>; + /** + * Create user with PHPass password + * + * Create a new user. Password provided must be hashed with the [PHPass](https://www.openwall.com/phpass/) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + createPHPassUser(userId: string, email: string, password: string, name?: string): Promise>; + /** + * Create user with Scrypt password + * + * Create a new user. Password provided must be hashed with the [Scrypt](https://github.com/Tarsnap/scrypt) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} passwordSalt + * @param {number} passwordCpu + * @param {number} passwordMemory + * @param {number} passwordParallel + * @param {number} passwordLength + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + createScryptUser(userId: string, email: string, password: string, passwordSalt: string, passwordCpu: number, passwordMemory: number, passwordParallel: number, passwordLength: number, name?: string): Promise>; + /** + * Create user with Scrypt modified password + * + * Create a new user. Password provided must be hashed with the [Scrypt Modified](https://gist.github.com/Meldiron/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} passwordSalt + * @param {string} passwordSaltSeparator + * @param {string} passwordSignerKey + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + createScryptModifiedUser(userId: string, email: string, password: string, passwordSalt: string, passwordSaltSeparator: string, passwordSignerKey: string, name?: string): Promise>; + /** + * Create user with SHA password + * + * Create a new user. Password provided must be hashed with the [SHA](https://en.wikipedia.org/wiki/Secure_Hash_Algorithm) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {PasswordHash} passwordVersion + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + createSHAUser(userId: string, email: string, password: string, passwordVersion?: PasswordHash, name?: string): Promise>; + /** + * Get user + * + * Get a user by its unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise>} + */ + get(userId: string): Promise>; + /** + * Delete user + * + * Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https://appwrite.io/docs/server/users#usersUpdateStatus) endpoint instead. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + delete(userId: string): Promise<{}>; + /** + * Update email + * + * Update the user email by its unique ID. + * + * @param {string} userId + * @param {string} email + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateEmail(userId: string, email: string): Promise>; + /** + * Create user JWT + * + * Use this endpoint to create a JSON Web Token for user by its unique ID. You can use the resulting JWT to authenticate on behalf of the user. The JWT secret will become invalid if the session it uses gets deleted. + * + * @param {string} userId + * @param {string} sessionId + * @param {number} duration + * @throws {AppwriteException} + * @returns {Promise} + */ + createJWT(userId: string, sessionId?: string, duration?: number): Promise; + /** + * Update user labels + * + * Update the user labels by its unique ID. + +Labels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https://appwrite.io/docs/permissions) for more info. + * + * @param {string} userId + * @param {string[]} labels + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateLabels(userId: string, labels: string[]): Promise>; + /** + * List user logs + * + * Get the user activity logs list by its unique ID. + * + * @param {string} userId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listLogs(userId: string, queries?: string[]): Promise; + /** + * List user memberships + * + * Get the user membership list by its unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + listMemberships(userId: string): Promise; + /** + * Update MFA + * + * Enable or disable MFA on a user account. + * + * @param {string} userId + * @param {boolean} mfa + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateMfa(userId: string, mfa: boolean): Promise>; + /** + * Delete Authenticator + * + * Delete an authenticator app. + * + * @param {string} userId + * @param {AuthenticatorType} type + * @throws {AppwriteException} + * @returns {Promise>} + */ + deleteMfaAuthenticator(userId: string, type: AuthenticatorType): Promise>; + /** + * List Factors + * + * List the factors available on the account to be used as a MFA challange. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + listMfaFactors(userId: string): Promise; + /** + * Get MFA Recovery Codes + * + * Get recovery codes that can be used as backup for MFA flow by User ID. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + getMfaRecoveryCodes(userId: string): Promise; + /** + * Regenerate MFA Recovery Codes + * + * Regenerate recovery codes that can be used as backup for MFA flow by User ID. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + updateMfaRecoveryCodes(userId: string): Promise; + /** + * Create MFA Recovery Codes + * + * Generate recovery codes used as backup for MFA flow for User ID. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method by client SDK. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + createMfaRecoveryCodes(userId: string): Promise; + /** + * Update name + * + * Update the user name by its unique ID. + * + * @param {string} userId + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateName(userId: string, name: string): Promise>; + /** + * Update password + * + * Update the user password by its unique ID. + * + * @param {string} userId + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise>} + */ + updatePassword(userId: string, password: string): Promise>; + /** + * Update phone + * + * Update the user phone by its unique ID. + * + * @param {string} userId + * @param {string} number + * @throws {AppwriteException} + * @returns {Promise>} + */ + updatePhone(userId: string, number: string): Promise>; + /** + * Get user preferences + * + * Get the user preferences by its unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + getPrefs(userId: string): Promise; + /** + * Update user preferences + * + * Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded. + * + * @param {string} userId + * @param {object} prefs + * @throws {AppwriteException} + * @returns {Promise} + */ + updatePrefs(userId: string, prefs: object): Promise; + /** + * List user sessions + * + * Get the user sessions list by its unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + listSessions(userId: string): Promise; + /** + * Create session + * + * Creates a session for a user. Returns an immediately usable session object. + +If you want to generate a token for a custom authentication flow, use the [POST /users/{userId}/tokens](https://appwrite.io/docs/server/users#createToken) endpoint. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + createSession(userId: string): Promise; + /** + * Delete user sessions + * + * Delete all user's sessions by using the user's unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteSessions(userId: string): Promise<{}>; + /** + * Delete user session + * + * Delete a user sessions by its unique ID. + * + * @param {string} userId + * @param {string} sessionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteSession(userId: string, sessionId: string): Promise<{}>; + /** + * Update user status + * + * Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved. + * + * @param {string} userId + * @param {boolean} status + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateStatus(userId: string, status: boolean): Promise>; + /** + * List User Targets + * + * List the messaging targets that are associated with a user. + * + * @param {string} userId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + listTargets(userId: string, queries?: string[]): Promise; + /** + * Create User Target + * + * Create a messaging target. + * + * @param {string} userId + * @param {string} targetId + * @param {MessagingProviderType} providerType + * @param {string} identifier + * @param {string} providerId + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise} + */ + createTarget(userId: string, targetId: string, providerType: MessagingProviderType, identifier: string, providerId?: string, name?: string): Promise; + /** + * Get User Target + * + * Get a user's push notification target by ID. + * + * @param {string} userId + * @param {string} targetId + * @throws {AppwriteException} + * @returns {Promise} + */ + getTarget(userId: string, targetId: string): Promise; + /** + * Update User target + * + * Update a messaging target. + * + * @param {string} userId + * @param {string} targetId + * @param {string} identifier + * @param {string} providerId + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise} + */ + updateTarget(userId: string, targetId: string, identifier?: string, providerId?: string, name?: string): Promise; + /** + * Delete user target + * + * Delete a messaging target. + * + * @param {string} userId + * @param {string} targetId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + deleteTarget(userId: string, targetId: string): Promise<{}>; + /** + * Create token + * + * Returns a token with a secret key for creating a session. Use the user ID and secret and submit a request to the [PUT /account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. + + * + * @param {string} userId + * @param {number} length + * @param {number} expire + * @throws {AppwriteException} + * @returns {Promise} + */ + createToken(userId: string, length?: number, expire?: number): Promise; + /** + * Update email verification + * + * Update the user email verification status by its unique ID. + * + * @param {string} userId + * @param {boolean} emailVerification + * @throws {AppwriteException} + * @returns {Promise>} + */ + updateEmailVerification(userId: string, emailVerification: boolean): Promise>; + /** + * Update phone verification + * + * Update the user phone verification status by its unique ID. + * + * @param {string} userId + * @param {boolean} phoneVerification + * @throws {AppwriteException} + * @returns {Promise>} + */ + updatePhoneVerification(userId: string, phoneVerification: boolean): Promise>; +} + +export { Users }; diff --git a/node_modules/node-appwrite/dist/services/users.js b/node_modules/node-appwrite/dist/services/users.js new file mode 100644 index 0000000..9f23955 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/users.js @@ -0,0 +1,1499 @@ +'use strict'; + +var client = require('../client'); + +class Users { + constructor(client) { + this.client = client; + } + /** + * List users + * + * Get a list of all the project's users. You can use the query params to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise>} + */ + async list(queries, search) { + const apiPath = "/users"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create user + * + * Create a new user. + * + * @param {string} userId + * @param {string} email + * @param {string} phone + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async create(userId, email, phone, password, name) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof phone !== "undefined") { + payload["phone"] = phone; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create user with Argon2 password + * + * Create a new user. Password provided must be hashed with the [Argon2](https://en.wikipedia.org/wiki/Argon2) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async createArgon2User(userId, email, password, name) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new client.AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new client.AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/users/argon2"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create user with bcrypt password + * + * Create a new user. Password provided must be hashed with the [Bcrypt](https://en.wikipedia.org/wiki/Bcrypt) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async createBcryptUser(userId, email, password, name) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new client.AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new client.AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/users/bcrypt"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * List Identities + * + * Get identities for all users. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listIdentities(queries, search) { + const apiPath = "/users/identities"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete identity + * + * Delete an identity by its unique ID. + * + * @param {string} identityId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteIdentity(identityId) { + if (typeof identityId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "identityId"'); + } + const apiPath = "/users/identities/{identityId}".replace("{identityId}", identityId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Create user with MD5 password + * + * Create a new user. Password provided must be hashed with the [MD5](https://en.wikipedia.org/wiki/MD5) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async createMD5User(userId, email, password, name) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new client.AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new client.AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/users/md5"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create user with PHPass password + * + * Create a new user. Password provided must be hashed with the [PHPass](https://www.openwall.com/phpass/) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async createPHPassUser(userId, email, password, name) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new client.AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new client.AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/users/phpass"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create user with Scrypt password + * + * Create a new user. Password provided must be hashed with the [Scrypt](https://github.com/Tarsnap/scrypt) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} passwordSalt + * @param {number} passwordCpu + * @param {number} passwordMemory + * @param {number} passwordParallel + * @param {number} passwordLength + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async createScryptUser(userId, email, password, passwordSalt, passwordCpu, passwordMemory, passwordParallel, passwordLength, name) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new client.AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new client.AppwriteException('Missing required parameter: "password"'); + } + if (typeof passwordSalt === "undefined") { + throw new client.AppwriteException('Missing required parameter: "passwordSalt"'); + } + if (typeof passwordCpu === "undefined") { + throw new client.AppwriteException('Missing required parameter: "passwordCpu"'); + } + if (typeof passwordMemory === "undefined") { + throw new client.AppwriteException('Missing required parameter: "passwordMemory"'); + } + if (typeof passwordParallel === "undefined") { + throw new client.AppwriteException('Missing required parameter: "passwordParallel"'); + } + if (typeof passwordLength === "undefined") { + throw new client.AppwriteException('Missing required parameter: "passwordLength"'); + } + const apiPath = "/users/scrypt"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof passwordSalt !== "undefined") { + payload["passwordSalt"] = passwordSalt; + } + if (typeof passwordCpu !== "undefined") { + payload["passwordCpu"] = passwordCpu; + } + if (typeof passwordMemory !== "undefined") { + payload["passwordMemory"] = passwordMemory; + } + if (typeof passwordParallel !== "undefined") { + payload["passwordParallel"] = passwordParallel; + } + if (typeof passwordLength !== "undefined") { + payload["passwordLength"] = passwordLength; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create user with Scrypt modified password + * + * Create a new user. Password provided must be hashed with the [Scrypt Modified](https://gist.github.com/Meldiron/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} passwordSalt + * @param {string} passwordSaltSeparator + * @param {string} passwordSignerKey + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async createScryptModifiedUser(userId, email, password, passwordSalt, passwordSaltSeparator, passwordSignerKey, name) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new client.AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new client.AppwriteException('Missing required parameter: "password"'); + } + if (typeof passwordSalt === "undefined") { + throw new client.AppwriteException('Missing required parameter: "passwordSalt"'); + } + if (typeof passwordSaltSeparator === "undefined") { + throw new client.AppwriteException('Missing required parameter: "passwordSaltSeparator"'); + } + if (typeof passwordSignerKey === "undefined") { + throw new client.AppwriteException('Missing required parameter: "passwordSignerKey"'); + } + const apiPath = "/users/scrypt-modified"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof passwordSalt !== "undefined") { + payload["passwordSalt"] = passwordSalt; + } + if (typeof passwordSaltSeparator !== "undefined") { + payload["passwordSaltSeparator"] = passwordSaltSeparator; + } + if (typeof passwordSignerKey !== "undefined") { + payload["passwordSignerKey"] = passwordSignerKey; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create user with SHA password + * + * Create a new user. Password provided must be hashed with the [SHA](https://en.wikipedia.org/wiki/Secure_Hash_Algorithm) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {PasswordHash} passwordVersion + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async createSHAUser(userId, email, password, passwordVersion, name) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new client.AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new client.AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/users/sha"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof passwordVersion !== "undefined") { + payload["passwordVersion"] = passwordVersion; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get user + * + * Get a user by its unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise>} + */ + async get(userId) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete user + * + * Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https://appwrite.io/docs/server/users#usersUpdateStatus) endpoint instead. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async delete(userId) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Update email + * + * Update the user email by its unique ID. + * + * @param {string} userId + * @param {string} email + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateEmail(userId, email) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new client.AppwriteException('Missing required parameter: "email"'); + } + const apiPath = "/users/{userId}/email".replace("{userId}", userId); + const payload = {}; + if (typeof email !== "undefined") { + payload["email"] = email; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create user JWT + * + * Use this endpoint to create a JSON Web Token for user by its unique ID. You can use the resulting JWT to authenticate on behalf of the user. The JWT secret will become invalid if the session it uses gets deleted. + * + * @param {string} userId + * @param {string} sessionId + * @param {number} duration + * @throws {AppwriteException} + * @returns {Promise} + */ + async createJWT(userId, sessionId, duration) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/jwts".replace("{userId}", userId); + const payload = {}; + if (typeof sessionId !== "undefined") { + payload["sessionId"] = sessionId; + } + if (typeof duration !== "undefined") { + payload["duration"] = duration; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update user labels + * + * Update the user labels by its unique ID. + + Labels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https://appwrite.io/docs/permissions) for more info. + * + * @param {string} userId + * @param {string[]} labels + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateLabels(userId, labels) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof labels === "undefined") { + throw new client.AppwriteException('Missing required parameter: "labels"'); + } + const apiPath = "/users/{userId}/labels".replace("{userId}", userId); + const payload = {}; + if (typeof labels !== "undefined") { + payload["labels"] = labels; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * List user logs + * + * Get the user activity logs list by its unique ID. + * + * @param {string} userId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listLogs(userId, queries) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/logs".replace("{userId}", userId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List user memberships + * + * Get the user membership list by its unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + async listMemberships(userId) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/memberships".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update MFA + * + * Enable or disable MFA on a user account. + * + * @param {string} userId + * @param {boolean} mfa + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateMfa(userId, mfa) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof mfa === "undefined") { + throw new client.AppwriteException('Missing required parameter: "mfa"'); + } + const apiPath = "/users/{userId}/mfa".replace("{userId}", userId); + const payload = {}; + if (typeof mfa !== "undefined") { + payload["mfa"] = mfa; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Delete Authenticator + * + * Delete an authenticator app. + * + * @param {string} userId + * @param {AuthenticatorType} type + * @throws {AppwriteException} + * @returns {Promise>} + */ + async deleteMfaAuthenticator(userId, type) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof type === "undefined") { + throw new client.AppwriteException('Missing required parameter: "type"'); + } + const apiPath = "/users/{userId}/mfa/authenticators/{type}".replace("{userId}", userId).replace("{type}", type); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List Factors + * + * List the factors available on the account to be used as a MFA challange. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + async listMfaFactors(userId) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/mfa/factors".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get MFA Recovery Codes + * + * Get recovery codes that can be used as backup for MFA flow by User ID. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getMfaRecoveryCodes(userId) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/mfa/recovery-codes".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Regenerate MFA Recovery Codes + * + * Regenerate recovery codes that can be used as backup for MFA flow by User ID. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateMfaRecoveryCodes(userId) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/mfa/recovery-codes".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Create MFA Recovery Codes + * + * Generate recovery codes used as backup for MFA flow for User ID. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method by client SDK. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + async createMfaRecoveryCodes(userId) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/mfa/recovery-codes".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Update name + * + * Update the user name by its unique ID. + * + * @param {string} userId + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateName(userId, name) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof name === "undefined") { + throw new client.AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/users/{userId}/name".replace("{userId}", userId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Update password + * + * Update the user password by its unique ID. + * + * @param {string} userId + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updatePassword(userId, password) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof password === "undefined") { + throw new client.AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/users/{userId}/password".replace("{userId}", userId); + const payload = {}; + if (typeof password !== "undefined") { + payload["password"] = password; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Update phone + * + * Update the user phone by its unique ID. + * + * @param {string} userId + * @param {string} number + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updatePhone(userId, number) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof number === "undefined") { + throw new client.AppwriteException('Missing required parameter: "number"'); + } + const apiPath = "/users/{userId}/phone".replace("{userId}", userId); + const payload = {}; + if (typeof number !== "undefined") { + payload["number"] = number; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Get user preferences + * + * Get the user preferences by its unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getPrefs(userId) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/prefs".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update user preferences + * + * Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded. + * + * @param {string} userId + * @param {object} prefs + * @throws {AppwriteException} + * @returns {Promise} + */ + async updatePrefs(userId, prefs) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof prefs === "undefined") { + throw new client.AppwriteException('Missing required parameter: "prefs"'); + } + const apiPath = "/users/{userId}/prefs".replace("{userId}", userId); + const payload = {}; + if (typeof prefs !== "undefined") { + payload["prefs"] = prefs; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * List user sessions + * + * Get the user sessions list by its unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + async listSessions(userId) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/sessions".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create session + * + * Creates a session for a user. Returns an immediately usable session object. + + If you want to generate a token for a custom authentication flow, use the [POST /users/{userId}/tokens](https://appwrite.io/docs/server/users#createToken) endpoint. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + async createSession(userId) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/sessions".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Delete user sessions + * + * Delete all user's sessions by using the user's unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteSessions(userId) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/sessions".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Delete user session + * + * Delete a user sessions by its unique ID. + * + * @param {string} userId + * @param {string} sessionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteSession(userId, sessionId) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof sessionId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "sessionId"'); + } + const apiPath = "/users/{userId}/sessions/{sessionId}".replace("{userId}", userId).replace("{sessionId}", sessionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Update user status + * + * Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved. + * + * @param {string} userId + * @param {boolean} status + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateStatus(userId, status) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof status === "undefined") { + throw new client.AppwriteException('Missing required parameter: "status"'); + } + const apiPath = "/users/{userId}/status".replace("{userId}", userId); + const payload = {}; + if (typeof status !== "undefined") { + payload["status"] = status; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * List User Targets + * + * List the messaging targets that are associated with a user. + * + * @param {string} userId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listTargets(userId, queries) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/targets".replace("{userId}", userId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create User Target + * + * Create a messaging target. + * + * @param {string} userId + * @param {string} targetId + * @param {MessagingProviderType} providerType + * @param {string} identifier + * @param {string} providerId + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise} + */ + async createTarget(userId, targetId, providerType, identifier, providerId, name) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof targetId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "targetId"'); + } + if (typeof providerType === "undefined") { + throw new client.AppwriteException('Missing required parameter: "providerType"'); + } + if (typeof identifier === "undefined") { + throw new client.AppwriteException('Missing required parameter: "identifier"'); + } + const apiPath = "/users/{userId}/targets".replace("{userId}", userId); + const payload = {}; + if (typeof targetId !== "undefined") { + payload["targetId"] = targetId; + } + if (typeof providerType !== "undefined") { + payload["providerType"] = providerType; + } + if (typeof identifier !== "undefined") { + payload["identifier"] = identifier; + } + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get User Target + * + * Get a user's push notification target by ID. + * + * @param {string} userId + * @param {string} targetId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getTarget(userId, targetId) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof targetId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "targetId"'); + } + const apiPath = "/users/{userId}/targets/{targetId}".replace("{userId}", userId).replace("{targetId}", targetId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update User target + * + * Update a messaging target. + * + * @param {string} userId + * @param {string} targetId + * @param {string} identifier + * @param {string} providerId + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateTarget(userId, targetId, identifier, providerId, name) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof targetId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "targetId"'); + } + const apiPath = "/users/{userId}/targets/{targetId}".replace("{userId}", userId).replace("{targetId}", targetId); + const payload = {}; + if (typeof identifier !== "undefined") { + payload["identifier"] = identifier; + } + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Delete user target + * + * Delete a messaging target. + * + * @param {string} userId + * @param {string} targetId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteTarget(userId, targetId) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof targetId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "targetId"'); + } + const apiPath = "/users/{userId}/targets/{targetId}".replace("{userId}", userId).replace("{targetId}", targetId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Create token + * + * Returns a token with a secret key for creating a session. Use the user ID and secret and submit a request to the [PUT /account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. + + * + * @param {string} userId + * @param {number} length + * @param {number} expire + * @throws {AppwriteException} + * @returns {Promise} + */ + async createToken(userId, length, expire) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/tokens".replace("{userId}", userId); + const payload = {}; + if (typeof length !== "undefined") { + payload["length"] = length; + } + if (typeof expire !== "undefined") { + payload["expire"] = expire; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update email verification + * + * Update the user email verification status by its unique ID. + * + * @param {string} userId + * @param {boolean} emailVerification + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateEmailVerification(userId, emailVerification) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof emailVerification === "undefined") { + throw new client.AppwriteException('Missing required parameter: "emailVerification"'); + } + const apiPath = "/users/{userId}/verification".replace("{userId}", userId); + const payload = {}; + if (typeof emailVerification !== "undefined") { + payload["emailVerification"] = emailVerification; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Update phone verification + * + * Update the user phone verification status by its unique ID. + * + * @param {string} userId + * @param {boolean} phoneVerification + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updatePhoneVerification(userId, phoneVerification) { + if (typeof userId === "undefined") { + throw new client.AppwriteException('Missing required parameter: "userId"'); + } + if (typeof phoneVerification === "undefined") { + throw new client.AppwriteException('Missing required parameter: "phoneVerification"'); + } + const apiPath = "/users/{userId}/verification/phone".replace("{userId}", userId); + const payload = {}; + if (typeof phoneVerification !== "undefined") { + payload["phoneVerification"] = phoneVerification; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } +} + +exports.Users = Users; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=users.js.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/users.js.map b/node_modules/node-appwrite/dist/services/users.js.map new file mode 100644 index 0000000..67ee48f --- /dev/null +++ b/node_modules/node-appwrite/dist/services/users.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/users.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { PasswordHash } from '../enums/password-hash';\nimport { AuthenticatorType } from '../enums/authenticator-type';\nimport { MessagingProviderType } from '../enums/messaging-provider-type';\n\nexport class Users {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * List users\n *\n * Get a list of all the project's users. You can use the query params to filter your results.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async list(queries?: string[], search?: string): Promise> {\n const apiPath = '/users';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user\n *\n * Create a new user.\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} phone\n * @param {string} password\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async create(userId: string, email?: string, phone?: string, password?: string, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof phone !== 'undefined') {\n payload['phone'] = phone;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user with Argon2 password\n *\n * Create a new user. Password provided must be hashed with the [Argon2](https://en.wikipedia.org/wiki/Argon2) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} password\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async createArgon2User(userId: string, email: string, password: string, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/users/argon2';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user with bcrypt password\n *\n * Create a new user. Password provided must be hashed with the [Bcrypt](https://en.wikipedia.org/wiki/Bcrypt) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} password\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async createBcryptUser(userId: string, email: string, password: string, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/users/bcrypt';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List Identities\n *\n * Get identities for all users.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listIdentities(queries?: string[], search?: string): Promise {\n const apiPath = '/users/identities';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete identity\n *\n * Delete an identity by its unique ID.\n *\n * @param {string} identityId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteIdentity(identityId: string): Promise<{}> {\n if (typeof identityId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"identityId\"');\n }\n const apiPath = '/users/identities/{identityId}'.replace('{identityId}', identityId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user with MD5 password\n *\n * Create a new user. Password provided must be hashed with the [MD5](https://en.wikipedia.org/wiki/MD5) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} password\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async createMD5User(userId: string, email: string, password: string, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/users/md5';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user with PHPass password\n *\n * Create a new user. Password provided must be hashed with the [PHPass](https://www.openwall.com/phpass/) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} password\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async createPHPassUser(userId: string, email: string, password: string, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/users/phpass';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user with Scrypt password\n *\n * Create a new user. Password provided must be hashed with the [Scrypt](https://github.com/Tarsnap/scrypt) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} password\n * @param {string} passwordSalt\n * @param {number} passwordCpu\n * @param {number} passwordMemory\n * @param {number} passwordParallel\n * @param {number} passwordLength\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async createScryptUser(userId: string, email: string, password: string, passwordSalt: string, passwordCpu: number, passwordMemory: number, passwordParallel: number, passwordLength: number, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n if (typeof passwordSalt === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"passwordSalt\"');\n }\n if (typeof passwordCpu === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"passwordCpu\"');\n }\n if (typeof passwordMemory === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"passwordMemory\"');\n }\n if (typeof passwordParallel === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"passwordParallel\"');\n }\n if (typeof passwordLength === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"passwordLength\"');\n }\n const apiPath = '/users/scrypt';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof passwordSalt !== 'undefined') {\n payload['passwordSalt'] = passwordSalt;\n }\n if (typeof passwordCpu !== 'undefined') {\n payload['passwordCpu'] = passwordCpu;\n }\n if (typeof passwordMemory !== 'undefined') {\n payload['passwordMemory'] = passwordMemory;\n }\n if (typeof passwordParallel !== 'undefined') {\n payload['passwordParallel'] = passwordParallel;\n }\n if (typeof passwordLength !== 'undefined') {\n payload['passwordLength'] = passwordLength;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user with Scrypt modified password\n *\n * Create a new user. Password provided must be hashed with the [Scrypt Modified](https://gist.github.com/Meldiron/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} password\n * @param {string} passwordSalt\n * @param {string} passwordSaltSeparator\n * @param {string} passwordSignerKey\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async createScryptModifiedUser(userId: string, email: string, password: string, passwordSalt: string, passwordSaltSeparator: string, passwordSignerKey: string, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n if (typeof passwordSalt === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"passwordSalt\"');\n }\n if (typeof passwordSaltSeparator === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"passwordSaltSeparator\"');\n }\n if (typeof passwordSignerKey === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"passwordSignerKey\"');\n }\n const apiPath = '/users/scrypt-modified';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof passwordSalt !== 'undefined') {\n payload['passwordSalt'] = passwordSalt;\n }\n if (typeof passwordSaltSeparator !== 'undefined') {\n payload['passwordSaltSeparator'] = passwordSaltSeparator;\n }\n if (typeof passwordSignerKey !== 'undefined') {\n payload['passwordSignerKey'] = passwordSignerKey;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user with SHA password\n *\n * Create a new user. Password provided must be hashed with the [SHA](https://en.wikipedia.org/wiki/Secure_Hash_Algorithm) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} password\n * @param {PasswordHash} passwordVersion\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async createSHAUser(userId: string, email: string, password: string, passwordVersion?: PasswordHash, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/users/sha';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof passwordVersion !== 'undefined') {\n payload['passwordVersion'] = passwordVersion;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get user\n *\n * Get a user by its unique ID.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async get(userId: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete user\n *\n * Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https://appwrite.io/docs/server/users#usersUpdateStatus) endpoint instead.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async delete(userId: string): Promise<{}> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update email\n *\n * Update the user email by its unique ID.\n *\n * @param {string} userId\n * @param {string} email\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateEmail(userId: string, email: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n const apiPath = '/users/{userId}/email'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user JWT\n *\n * Use this endpoint to create a JSON Web Token for user by its unique ID. You can use the resulting JWT to authenticate on behalf of the user. The JWT secret will become invalid if the session it uses gets deleted.\n *\n * @param {string} userId\n * @param {string} sessionId\n * @param {number} duration\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createJWT(userId: string, sessionId?: string, duration?: number): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/jwts'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof sessionId !== 'undefined') {\n payload['sessionId'] = sessionId;\n }\n if (typeof duration !== 'undefined') {\n payload['duration'] = duration;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update user labels\n *\n * Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https://appwrite.io/docs/permissions) for more info.\n *\n * @param {string} userId\n * @param {string[]} labels\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateLabels(userId: string, labels: string[]): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof labels === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"labels\"');\n }\n const apiPath = '/users/{userId}/labels'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof labels !== 'undefined') {\n payload['labels'] = labels;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List user logs\n *\n * Get the user activity logs list by its unique ID.\n *\n * @param {string} userId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listLogs(userId: string, queries?: string[]): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/logs'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List user memberships\n *\n * Get the user membership list by its unique ID.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listMemberships(userId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/memberships'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update MFA\n *\n * Enable or disable MFA on a user account.\n *\n * @param {string} userId\n * @param {boolean} mfa\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateMfa(userId: string, mfa: boolean): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof mfa === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"mfa\"');\n }\n const apiPath = '/users/{userId}/mfa'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof mfa !== 'undefined') {\n payload['mfa'] = mfa;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete Authenticator\n *\n * Delete an authenticator app.\n *\n * @param {string} userId\n * @param {AuthenticatorType} type\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async deleteMfaAuthenticator(userId: string, type: AuthenticatorType): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof type === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"type\"');\n }\n const apiPath = '/users/{userId}/mfa/authenticators/{type}'.replace('{userId}', userId).replace('{type}', type);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List Factors\n *\n * List the factors available on the account to be used as a MFA challange.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listMfaFactors(userId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/mfa/factors'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get MFA Recovery Codes\n *\n * Get recovery codes that can be used as backup for MFA flow by User ID. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getMfaRecoveryCodes(userId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/mfa/recovery-codes'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Regenerate MFA Recovery Codes\n *\n * Regenerate recovery codes that can be used as backup for MFA flow by User ID. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateMfaRecoveryCodes(userId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/mfa/recovery-codes'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create MFA Recovery Codes\n *\n * Generate recovery codes used as backup for MFA flow for User ID. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method by client SDK.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createMfaRecoveryCodes(userId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/mfa/recovery-codes'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update name\n *\n * Update the user name by its unique ID.\n *\n * @param {string} userId\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateName(userId: string, name: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/users/{userId}/name'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update password\n *\n * Update the user password by its unique ID.\n *\n * @param {string} userId\n * @param {string} password\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updatePassword(userId: string, password: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/users/{userId}/password'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update phone\n *\n * Update the user phone by its unique ID.\n *\n * @param {string} userId\n * @param {string} number\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updatePhone(userId: string, number: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof number === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"number\"');\n }\n const apiPath = '/users/{userId}/phone'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof number !== 'undefined') {\n payload['number'] = number;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get user preferences\n *\n * Get the user preferences by its unique ID.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getPrefs(userId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/prefs'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update user preferences\n *\n * Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.\n *\n * @param {string} userId\n * @param {object} prefs\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updatePrefs(userId: string, prefs: object): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof prefs === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"prefs\"');\n }\n const apiPath = '/users/{userId}/prefs'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof prefs !== 'undefined') {\n payload['prefs'] = prefs;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List user sessions\n *\n * Get the user sessions list by its unique ID.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listSessions(userId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/sessions'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create session\n *\n * Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST /users/{userId}/tokens](https://appwrite.io/docs/server/users#createToken) endpoint.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createSession(userId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/sessions'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete user sessions\n *\n * Delete all user's sessions by using the user's unique ID.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteSessions(userId: string): Promise<{}> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/sessions'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete user session\n *\n * Delete a user sessions by its unique ID.\n *\n * @param {string} userId\n * @param {string} sessionId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteSession(userId: string, sessionId: string): Promise<{}> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof sessionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"sessionId\"');\n }\n const apiPath = '/users/{userId}/sessions/{sessionId}'.replace('{userId}', userId).replace('{sessionId}', sessionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update user status\n *\n * Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.\n *\n * @param {string} userId\n * @param {boolean} status\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateStatus(userId: string, status: boolean): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof status === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"status\"');\n }\n const apiPath = '/users/{userId}/status'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof status !== 'undefined') {\n payload['status'] = status;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List User Targets\n *\n * List the messaging targets that are associated with a user.\n *\n * @param {string} userId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listTargets(userId: string, queries?: string[]): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/targets'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create User Target\n *\n * Create a messaging target.\n *\n * @param {string} userId\n * @param {string} targetId\n * @param {MessagingProviderType} providerType\n * @param {string} identifier\n * @param {string} providerId\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createTarget(userId: string, targetId: string, providerType: MessagingProviderType, identifier: string, providerId?: string, name?: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof targetId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"targetId\"');\n }\n if (typeof providerType === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerType\"');\n }\n if (typeof identifier === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"identifier\"');\n }\n const apiPath = '/users/{userId}/targets'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof targetId !== 'undefined') {\n payload['targetId'] = targetId;\n }\n if (typeof providerType !== 'undefined') {\n payload['providerType'] = providerType;\n }\n if (typeof identifier !== 'undefined') {\n payload['identifier'] = identifier;\n }\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get User Target\n *\n * Get a user's push notification target by ID.\n *\n * @param {string} userId\n * @param {string} targetId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getTarget(userId: string, targetId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof targetId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"targetId\"');\n }\n const apiPath = '/users/{userId}/targets/{targetId}'.replace('{userId}', userId).replace('{targetId}', targetId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update User target\n *\n * Update a messaging target.\n *\n * @param {string} userId\n * @param {string} targetId\n * @param {string} identifier\n * @param {string} providerId\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateTarget(userId: string, targetId: string, identifier?: string, providerId?: string, name?: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof targetId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"targetId\"');\n }\n const apiPath = '/users/{userId}/targets/{targetId}'.replace('{userId}', userId).replace('{targetId}', targetId);\n const payload: Payload = {};\n if (typeof identifier !== 'undefined') {\n payload['identifier'] = identifier;\n }\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete user target\n *\n * Delete a messaging target.\n *\n * @param {string} userId\n * @param {string} targetId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteTarget(userId: string, targetId: string): Promise<{}> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof targetId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"targetId\"');\n }\n const apiPath = '/users/{userId}/targets/{targetId}'.replace('{userId}', userId).replace('{targetId}', targetId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create token\n *\n * Returns a token with a secret key for creating a session. Use the user ID and secret and submit a request to the [PUT /account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process.\n\n *\n * @param {string} userId\n * @param {number} length\n * @param {number} expire\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createToken(userId: string, length?: number, expire?: number): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/tokens'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof length !== 'undefined') {\n payload['length'] = length;\n }\n if (typeof expire !== 'undefined') {\n payload['expire'] = expire;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update email verification\n *\n * Update the user email verification status by its unique ID.\n *\n * @param {string} userId\n * @param {boolean} emailVerification\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateEmailVerification(userId: string, emailVerification: boolean): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof emailVerification === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"emailVerification\"');\n }\n const apiPath = '/users/{userId}/verification'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof emailVerification !== 'undefined') {\n payload['emailVerification'] = emailVerification;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update phone verification\n *\n * Update the user phone verification status by its unique ID.\n *\n * @param {string} userId\n * @param {boolean} phoneVerification\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updatePhoneVerification(userId: string, phoneVerification: boolean): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof phoneVerification === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"phoneVerification\"');\n }\n const apiPath = '/users/{userId}/verification/phone'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof phoneVerification !== 'undefined') {\n payload['phoneVerification'] = phoneVerification;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/users.mjs b/node_modules/node-appwrite/dist/services/users.mjs new file mode 100644 index 0000000..cba19ba --- /dev/null +++ b/node_modules/node-appwrite/dist/services/users.mjs @@ -0,0 +1,1498 @@ +import { AppwriteException } from '../client.mjs'; + +// src/services/users.ts +var Users = class { + constructor(client) { + this.client = client; + } + /** + * List users + * + * Get a list of all the project's users. You can use the query params to filter your results. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise>} + */ + async list(queries, search) { + const apiPath = "/users"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create user + * + * Create a new user. + * + * @param {string} userId + * @param {string} email + * @param {string} phone + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async create(userId, email, phone, password, name) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof phone !== "undefined") { + payload["phone"] = phone; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create user with Argon2 password + * + * Create a new user. Password provided must be hashed with the [Argon2](https://en.wikipedia.org/wiki/Argon2) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async createArgon2User(userId, email, password, name) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/users/argon2"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create user with bcrypt password + * + * Create a new user. Password provided must be hashed with the [Bcrypt](https://en.wikipedia.org/wiki/Bcrypt) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async createBcryptUser(userId, email, password, name) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/users/bcrypt"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * List Identities + * + * Get identities for all users. + * + * @param {string[]} queries + * @param {string} search + * @throws {AppwriteException} + * @returns {Promise} + */ + async listIdentities(queries, search) { + const apiPath = "/users/identities"; + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + if (typeof search !== "undefined") { + payload["search"] = search; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete identity + * + * Delete an identity by its unique ID. + * + * @param {string} identityId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteIdentity(identityId) { + if (typeof identityId === "undefined") { + throw new AppwriteException('Missing required parameter: "identityId"'); + } + const apiPath = "/users/identities/{identityId}".replace("{identityId}", identityId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Create user with MD5 password + * + * Create a new user. Password provided must be hashed with the [MD5](https://en.wikipedia.org/wiki/MD5) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async createMD5User(userId, email, password, name) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/users/md5"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create user with PHPass password + * + * Create a new user. Password provided must be hashed with the [PHPass](https://www.openwall.com/phpass/) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async createPHPassUser(userId, email, password, name) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/users/phpass"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create user with Scrypt password + * + * Create a new user. Password provided must be hashed with the [Scrypt](https://github.com/Tarsnap/scrypt) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} passwordSalt + * @param {number} passwordCpu + * @param {number} passwordMemory + * @param {number} passwordParallel + * @param {number} passwordLength + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async createScryptUser(userId, email, password, passwordSalt, passwordCpu, passwordMemory, passwordParallel, passwordLength, name) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new AppwriteException('Missing required parameter: "password"'); + } + if (typeof passwordSalt === "undefined") { + throw new AppwriteException('Missing required parameter: "passwordSalt"'); + } + if (typeof passwordCpu === "undefined") { + throw new AppwriteException('Missing required parameter: "passwordCpu"'); + } + if (typeof passwordMemory === "undefined") { + throw new AppwriteException('Missing required parameter: "passwordMemory"'); + } + if (typeof passwordParallel === "undefined") { + throw new AppwriteException('Missing required parameter: "passwordParallel"'); + } + if (typeof passwordLength === "undefined") { + throw new AppwriteException('Missing required parameter: "passwordLength"'); + } + const apiPath = "/users/scrypt"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof passwordSalt !== "undefined") { + payload["passwordSalt"] = passwordSalt; + } + if (typeof passwordCpu !== "undefined") { + payload["passwordCpu"] = passwordCpu; + } + if (typeof passwordMemory !== "undefined") { + payload["passwordMemory"] = passwordMemory; + } + if (typeof passwordParallel !== "undefined") { + payload["passwordParallel"] = passwordParallel; + } + if (typeof passwordLength !== "undefined") { + payload["passwordLength"] = passwordLength; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create user with Scrypt modified password + * + * Create a new user. Password provided must be hashed with the [Scrypt Modified](https://gist.github.com/Meldiron/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {string} passwordSalt + * @param {string} passwordSaltSeparator + * @param {string} passwordSignerKey + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async createScryptModifiedUser(userId, email, password, passwordSalt, passwordSaltSeparator, passwordSignerKey, name) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new AppwriteException('Missing required parameter: "password"'); + } + if (typeof passwordSalt === "undefined") { + throw new AppwriteException('Missing required parameter: "passwordSalt"'); + } + if (typeof passwordSaltSeparator === "undefined") { + throw new AppwriteException('Missing required parameter: "passwordSaltSeparator"'); + } + if (typeof passwordSignerKey === "undefined") { + throw new AppwriteException('Missing required parameter: "passwordSignerKey"'); + } + const apiPath = "/users/scrypt-modified"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof passwordSalt !== "undefined") { + payload["passwordSalt"] = passwordSalt; + } + if (typeof passwordSaltSeparator !== "undefined") { + payload["passwordSaltSeparator"] = passwordSaltSeparator; + } + if (typeof passwordSignerKey !== "undefined") { + payload["passwordSignerKey"] = passwordSignerKey; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Create user with SHA password + * + * Create a new user. Password provided must be hashed with the [SHA](https://en.wikipedia.org/wiki/Secure_Hash_Algorithm) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password. + * + * @param {string} userId + * @param {string} email + * @param {string} password + * @param {PasswordHash} passwordVersion + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async createSHAUser(userId, email, password, passwordVersion, name) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new AppwriteException('Missing required parameter: "email"'); + } + if (typeof password === "undefined") { + throw new AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/users/sha"; + const payload = {}; + if (typeof userId !== "undefined") { + payload["userId"] = userId; + } + if (typeof email !== "undefined") { + payload["email"] = email; + } + if (typeof password !== "undefined") { + payload["password"] = password; + } + if (typeof passwordVersion !== "undefined") { + payload["passwordVersion"] = passwordVersion; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get user + * + * Get a user by its unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise>} + */ + async get(userId) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Delete user + * + * Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https://appwrite.io/docs/server/users#usersUpdateStatus) endpoint instead. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async delete(userId) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Update email + * + * Update the user email by its unique ID. + * + * @param {string} userId + * @param {string} email + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateEmail(userId, email) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof email === "undefined") { + throw new AppwriteException('Missing required parameter: "email"'); + } + const apiPath = "/users/{userId}/email".replace("{userId}", userId); + const payload = {}; + if (typeof email !== "undefined") { + payload["email"] = email; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Create user JWT + * + * Use this endpoint to create a JSON Web Token for user by its unique ID. You can use the resulting JWT to authenticate on behalf of the user. The JWT secret will become invalid if the session it uses gets deleted. + * + * @param {string} userId + * @param {string} sessionId + * @param {number} duration + * @throws {AppwriteException} + * @returns {Promise} + */ + async createJWT(userId, sessionId, duration) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/jwts".replace("{userId}", userId); + const payload = {}; + if (typeof sessionId !== "undefined") { + payload["sessionId"] = sessionId; + } + if (typeof duration !== "undefined") { + payload["duration"] = duration; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update user labels + * + * Update the user labels by its unique ID. + + Labels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https://appwrite.io/docs/permissions) for more info. + * + * @param {string} userId + * @param {string[]} labels + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateLabels(userId, labels) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof labels === "undefined") { + throw new AppwriteException('Missing required parameter: "labels"'); + } + const apiPath = "/users/{userId}/labels".replace("{userId}", userId); + const payload = {}; + if (typeof labels !== "undefined") { + payload["labels"] = labels; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * List user logs + * + * Get the user activity logs list by its unique ID. + * + * @param {string} userId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listLogs(userId, queries) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/logs".replace("{userId}", userId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * List user memberships + * + * Get the user membership list by its unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + async listMemberships(userId) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/memberships".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update MFA + * + * Enable or disable MFA on a user account. + * + * @param {string} userId + * @param {boolean} mfa + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateMfa(userId, mfa) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof mfa === "undefined") { + throw new AppwriteException('Missing required parameter: "mfa"'); + } + const apiPath = "/users/{userId}/mfa".replace("{userId}", userId); + const payload = {}; + if (typeof mfa !== "undefined") { + payload["mfa"] = mfa; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Delete Authenticator + * + * Delete an authenticator app. + * + * @param {string} userId + * @param {AuthenticatorType} type + * @throws {AppwriteException} + * @returns {Promise>} + */ + async deleteMfaAuthenticator(userId, type) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof type === "undefined") { + throw new AppwriteException('Missing required parameter: "type"'); + } + const apiPath = "/users/{userId}/mfa/authenticators/{type}".replace("{userId}", userId).replace("{type}", type); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * List Factors + * + * List the factors available on the account to be used as a MFA challange. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + async listMfaFactors(userId) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/mfa/factors".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Get MFA Recovery Codes + * + * Get recovery codes that can be used as backup for MFA flow by User ID. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getMfaRecoveryCodes(userId) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/mfa/recovery-codes".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Regenerate MFA Recovery Codes + * + * Regenerate recovery codes that can be used as backup for MFA flow by User ID. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateMfaRecoveryCodes(userId) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/mfa/recovery-codes".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "put", + uri, + apiHeaders, + payload + ); + } + /** + * Create MFA Recovery Codes + * + * Generate recovery codes used as backup for MFA flow for User ID. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method by client SDK. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + async createMfaRecoveryCodes(userId) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/mfa/recovery-codes".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Update name + * + * Update the user name by its unique ID. + * + * @param {string} userId + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateName(userId, name) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof name === "undefined") { + throw new AppwriteException('Missing required parameter: "name"'); + } + const apiPath = "/users/{userId}/name".replace("{userId}", userId); + const payload = {}; + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Update password + * + * Update the user password by its unique ID. + * + * @param {string} userId + * @param {string} password + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updatePassword(userId, password) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof password === "undefined") { + throw new AppwriteException('Missing required parameter: "password"'); + } + const apiPath = "/users/{userId}/password".replace("{userId}", userId); + const payload = {}; + if (typeof password !== "undefined") { + payload["password"] = password; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Update phone + * + * Update the user phone by its unique ID. + * + * @param {string} userId + * @param {string} number + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updatePhone(userId, number) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof number === "undefined") { + throw new AppwriteException('Missing required parameter: "number"'); + } + const apiPath = "/users/{userId}/phone".replace("{userId}", userId); + const payload = {}; + if (typeof number !== "undefined") { + payload["number"] = number; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Get user preferences + * + * Get the user preferences by its unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getPrefs(userId) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/prefs".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update user preferences + * + * Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded. + * + * @param {string} userId + * @param {object} prefs + * @throws {AppwriteException} + * @returns {Promise} + */ + async updatePrefs(userId, prefs) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof prefs === "undefined") { + throw new AppwriteException('Missing required parameter: "prefs"'); + } + const apiPath = "/users/{userId}/prefs".replace("{userId}", userId); + const payload = {}; + if (typeof prefs !== "undefined") { + payload["prefs"] = prefs; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * List user sessions + * + * Get the user sessions list by its unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + async listSessions(userId) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/sessions".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create session + * + * Creates a session for a user. Returns an immediately usable session object. + + If you want to generate a token for a custom authentication flow, use the [POST /users/{userId}/tokens](https://appwrite.io/docs/server/users#createToken) endpoint. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise} + */ + async createSession(userId) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/sessions".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Delete user sessions + * + * Delete all user's sessions by using the user's unique ID. + * + * @param {string} userId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteSessions(userId) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/sessions".replace("{userId}", userId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Delete user session + * + * Delete a user sessions by its unique ID. + * + * @param {string} userId + * @param {string} sessionId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteSession(userId, sessionId) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof sessionId === "undefined") { + throw new AppwriteException('Missing required parameter: "sessionId"'); + } + const apiPath = "/users/{userId}/sessions/{sessionId}".replace("{userId}", userId).replace("{sessionId}", sessionId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Update user status + * + * Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved. + * + * @param {string} userId + * @param {boolean} status + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateStatus(userId, status) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof status === "undefined") { + throw new AppwriteException('Missing required parameter: "status"'); + } + const apiPath = "/users/{userId}/status".replace("{userId}", userId); + const payload = {}; + if (typeof status !== "undefined") { + payload["status"] = status; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * List User Targets + * + * List the messaging targets that are associated with a user. + * + * @param {string} userId + * @param {string[]} queries + * @throws {AppwriteException} + * @returns {Promise} + */ + async listTargets(userId, queries) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/targets".replace("{userId}", userId); + const payload = {}; + if (typeof queries !== "undefined") { + payload["queries"] = queries; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Create User Target + * + * Create a messaging target. + * + * @param {string} userId + * @param {string} targetId + * @param {MessagingProviderType} providerType + * @param {string} identifier + * @param {string} providerId + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise} + */ + async createTarget(userId, targetId, providerType, identifier, providerId, name) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof targetId === "undefined") { + throw new AppwriteException('Missing required parameter: "targetId"'); + } + if (typeof providerType === "undefined") { + throw new AppwriteException('Missing required parameter: "providerType"'); + } + if (typeof identifier === "undefined") { + throw new AppwriteException('Missing required parameter: "identifier"'); + } + const apiPath = "/users/{userId}/targets".replace("{userId}", userId); + const payload = {}; + if (typeof targetId !== "undefined") { + payload["targetId"] = targetId; + } + if (typeof providerType !== "undefined") { + payload["providerType"] = providerType; + } + if (typeof identifier !== "undefined") { + payload["identifier"] = identifier; + } + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Get User Target + * + * Get a user's push notification target by ID. + * + * @param {string} userId + * @param {string} targetId + * @throws {AppwriteException} + * @returns {Promise} + */ + async getTarget(userId, targetId) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof targetId === "undefined") { + throw new AppwriteException('Missing required parameter: "targetId"'); + } + const apiPath = "/users/{userId}/targets/{targetId}".replace("{userId}", userId).replace("{targetId}", targetId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "get", + uri, + apiHeaders, + payload + ); + } + /** + * Update User target + * + * Update a messaging target. + * + * @param {string} userId + * @param {string} targetId + * @param {string} identifier + * @param {string} providerId + * @param {string} name + * @throws {AppwriteException} + * @returns {Promise} + */ + async updateTarget(userId, targetId, identifier, providerId, name) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof targetId === "undefined") { + throw new AppwriteException('Missing required parameter: "targetId"'); + } + const apiPath = "/users/{userId}/targets/{targetId}".replace("{userId}", userId).replace("{targetId}", targetId); + const payload = {}; + if (typeof identifier !== "undefined") { + payload["identifier"] = identifier; + } + if (typeof providerId !== "undefined") { + payload["providerId"] = providerId; + } + if (typeof name !== "undefined") { + payload["name"] = name; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Delete user target + * + * Delete a messaging target. + * + * @param {string} userId + * @param {string} targetId + * @throws {AppwriteException} + * @returns {Promise<{}>} + */ + async deleteTarget(userId, targetId) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof targetId === "undefined") { + throw new AppwriteException('Missing required parameter: "targetId"'); + } + const apiPath = "/users/{userId}/targets/{targetId}".replace("{userId}", userId).replace("{targetId}", targetId); + const payload = {}; + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "delete", + uri, + apiHeaders, + payload + ); + } + /** + * Create token + * + * Returns a token with a secret key for creating a session. Use the user ID and secret and submit a request to the [PUT /account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process. + + * + * @param {string} userId + * @param {number} length + * @param {number} expire + * @throws {AppwriteException} + * @returns {Promise} + */ + async createToken(userId, length, expire) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + const apiPath = "/users/{userId}/tokens".replace("{userId}", userId); + const payload = {}; + if (typeof length !== "undefined") { + payload["length"] = length; + } + if (typeof expire !== "undefined") { + payload["expire"] = expire; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "post", + uri, + apiHeaders, + payload + ); + } + /** + * Update email verification + * + * Update the user email verification status by its unique ID. + * + * @param {string} userId + * @param {boolean} emailVerification + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updateEmailVerification(userId, emailVerification) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof emailVerification === "undefined") { + throw new AppwriteException('Missing required parameter: "emailVerification"'); + } + const apiPath = "/users/{userId}/verification".replace("{userId}", userId); + const payload = {}; + if (typeof emailVerification !== "undefined") { + payload["emailVerification"] = emailVerification; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } + /** + * Update phone verification + * + * Update the user phone verification status by its unique ID. + * + * @param {string} userId + * @param {boolean} phoneVerification + * @throws {AppwriteException} + * @returns {Promise>} + */ + async updatePhoneVerification(userId, phoneVerification) { + if (typeof userId === "undefined") { + throw new AppwriteException('Missing required parameter: "userId"'); + } + if (typeof phoneVerification === "undefined") { + throw new AppwriteException('Missing required parameter: "phoneVerification"'); + } + const apiPath = "/users/{userId}/verification/phone".replace("{userId}", userId); + const payload = {}; + if (typeof phoneVerification !== "undefined") { + payload["phoneVerification"] = phoneVerification; + } + const uri = new URL(this.client.config.endpoint + apiPath); + const apiHeaders = { + "content-type": "application/json" + }; + return await this.client.call( + "patch", + uri, + apiHeaders, + payload + ); + } +}; + +export { Users }; +//# sourceMappingURL=out.js.map +//# sourceMappingURL=users.mjs.map \ No newline at end of file diff --git a/node_modules/node-appwrite/dist/services/users.mjs.map b/node_modules/node-appwrite/dist/services/users.mjs.map new file mode 100644 index 0000000..32adcf5 --- /dev/null +++ b/node_modules/node-appwrite/dist/services/users.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../src/services/users.ts"],"names":[],"mappings":";AAAA,SAAS,yBAA+D;AAMjE,IAAM,QAAN,MAAY;AAAA,EAGf,YAAY,QAAgB;AACxB,SAAK,SAAS;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,KAA6C,SAAoB,QAAwD;AAC3H,UAAM,UAAU;AAChB,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,YAAY,aAAa;AAChC,cAAQ,SAAS,IAAI;AAAA,IACzB;AACA,QAAI,OAAO,WAAW,aAAa;AAC/B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAM,OAA+C,QAAgB,OAAgB,OAAgB,UAAmB,MAAkD;AACtK,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU;AAChB,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,WAAW,aAAa;AAC/B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,cAAQ,OAAO,IAAI;AAAA,IACvB;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,cAAQ,OAAO,IAAI;AAAA,IACvB;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,cAAQ,UAAU,IAAI;AAAA,IAC1B;AACA,QAAI,OAAO,SAAS,aAAa;AAC7B,cAAQ,MAAM,IAAI;AAAA,IACtB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,iBAAyD,QAAgB,OAAe,UAAkB,MAAkD;AAC9J,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,YAAM,IAAI,kBAAkB,qCAAqC;AAAA,IACrE;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,YAAM,IAAI,kBAAkB,wCAAwC;AAAA,IACxE;AACA,UAAM,UAAU;AAChB,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,WAAW,aAAa;AAC/B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,cAAQ,OAAO,IAAI;AAAA,IACvB;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,cAAQ,UAAU,IAAI;AAAA,IAC1B;AACA,QAAI,OAAO,SAAS,aAAa;AAC7B,cAAQ,MAAM,IAAI;AAAA,IACtB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,iBAAyD,QAAgB,OAAe,UAAkB,MAAkD;AAC9J,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,YAAM,IAAI,kBAAkB,qCAAqC;AAAA,IACrE;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,YAAM,IAAI,kBAAkB,wCAAwC;AAAA,IACxE;AACA,UAAM,UAAU;AAChB,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,WAAW,aAAa;AAC/B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,cAAQ,OAAO,IAAI;AAAA,IACvB;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,cAAQ,UAAU,IAAI;AAAA,IAC1B;AACA,QAAI,OAAO,SAAS,aAAa;AAC7B,cAAQ,MAAM,IAAI;AAAA,IACtB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,eAAe,SAAoB,QAA+C;AACpF,UAAM,UAAU;AAChB,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,YAAY,aAAa;AAChC,cAAQ,SAAS,IAAI;AAAA,IACzB;AACA,QAAI,OAAO,WAAW,aAAa;AAC/B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,eAAe,YAAiC;AAClD,QAAI,OAAO,eAAe,aAAa;AACnC,YAAM,IAAI,kBAAkB,0CAA0C;AAAA,IAC1E;AACA,UAAM,UAAU,iCAAiC,QAAQ,gBAAgB,UAAU;AACnF,UAAM,UAAmB,CAAC;AAC1B,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,cAAsD,QAAgB,OAAe,UAAkB,MAAkD;AAC3J,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,YAAM,IAAI,kBAAkB,qCAAqC;AAAA,IACrE;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,YAAM,IAAI,kBAAkB,wCAAwC;AAAA,IACxE;AACA,UAAM,UAAU;AAChB,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,WAAW,aAAa;AAC/B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,cAAQ,OAAO,IAAI;AAAA,IACvB;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,cAAQ,UAAU,IAAI;AAAA,IAC1B;AACA,QAAI,OAAO,SAAS,aAAa;AAC7B,cAAQ,MAAM,IAAI;AAAA,IACtB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,iBAAyD,QAAgB,OAAe,UAAkB,MAAkD;AAC9J,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,YAAM,IAAI,kBAAkB,qCAAqC;AAAA,IACrE;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,YAAM,IAAI,kBAAkB,wCAAwC;AAAA,IACxE;AACA,UAAM,UAAU;AAChB,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,WAAW,aAAa;AAC/B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,cAAQ,OAAO,IAAI;AAAA,IACvB;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,cAAQ,UAAU,IAAI;AAAA,IAC1B;AACA,QAAI,OAAO,SAAS,aAAa;AAC7B,cAAQ,MAAM,IAAI;AAAA,IACtB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,MAAM,iBAAyD,QAAgB,OAAe,UAAkB,cAAsB,aAAqB,gBAAwB,kBAA0B,gBAAwB,MAAkD;AACnR,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,YAAM,IAAI,kBAAkB,qCAAqC;AAAA,IACrE;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,YAAM,IAAI,kBAAkB,wCAAwC;AAAA,IACxE;AACA,QAAI,OAAO,iBAAiB,aAAa;AACrC,YAAM,IAAI,kBAAkB,4CAA4C;AAAA,IAC5E;AACA,QAAI,OAAO,gBAAgB,aAAa;AACpC,YAAM,IAAI,kBAAkB,2CAA2C;AAAA,IAC3E;AACA,QAAI,OAAO,mBAAmB,aAAa;AACvC,YAAM,IAAI,kBAAkB,8CAA8C;AAAA,IAC9E;AACA,QAAI,OAAO,qBAAqB,aAAa;AACzC,YAAM,IAAI,kBAAkB,gDAAgD;AAAA,IAChF;AACA,QAAI,OAAO,mBAAmB,aAAa;AACvC,YAAM,IAAI,kBAAkB,8CAA8C;AAAA,IAC9E;AACA,UAAM,UAAU;AAChB,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,WAAW,aAAa;AAC/B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,cAAQ,OAAO,IAAI;AAAA,IACvB;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,cAAQ,UAAU,IAAI;AAAA,IAC1B;AACA,QAAI,OAAO,iBAAiB,aAAa;AACrC,cAAQ,cAAc,IAAI;AAAA,IAC9B;AACA,QAAI,OAAO,gBAAgB,aAAa;AACpC,cAAQ,aAAa,IAAI;AAAA,IAC7B;AACA,QAAI,OAAO,mBAAmB,aAAa;AACvC,cAAQ,gBAAgB,IAAI;AAAA,IAChC;AACA,QAAI,OAAO,qBAAqB,aAAa;AACzC,cAAQ,kBAAkB,IAAI;AAAA,IAClC;AACA,QAAI,OAAO,mBAAmB,aAAa;AACvC,cAAQ,gBAAgB,IAAI;AAAA,IAChC;AACA,QAAI,OAAO,SAAS,aAAa;AAC7B,cAAQ,MAAM,IAAI;AAAA,IACtB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,MAAM,yBAAiE,QAAgB,OAAe,UAAkB,cAAsB,uBAA+B,mBAA2B,MAAkD;AACtP,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,YAAM,IAAI,kBAAkB,qCAAqC;AAAA,IACrE;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,YAAM,IAAI,kBAAkB,wCAAwC;AAAA,IACxE;AACA,QAAI,OAAO,iBAAiB,aAAa;AACrC,YAAM,IAAI,kBAAkB,4CAA4C;AAAA,IAC5E;AACA,QAAI,OAAO,0BAA0B,aAAa;AAC9C,YAAM,IAAI,kBAAkB,qDAAqD;AAAA,IACrF;AACA,QAAI,OAAO,sBAAsB,aAAa;AAC1C,YAAM,IAAI,kBAAkB,iDAAiD;AAAA,IACjF;AACA,UAAM,UAAU;AAChB,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,WAAW,aAAa;AAC/B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,cAAQ,OAAO,IAAI;AAAA,IACvB;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,cAAQ,UAAU,IAAI;AAAA,IAC1B;AACA,QAAI,OAAO,iBAAiB,aAAa;AACrC,cAAQ,cAAc,IAAI;AAAA,IAC9B;AACA,QAAI,OAAO,0BAA0B,aAAa;AAC9C,cAAQ,uBAAuB,IAAI;AAAA,IACvC;AACA,QAAI,OAAO,sBAAsB,aAAa;AAC1C,cAAQ,mBAAmB,IAAI;AAAA,IACnC;AACA,QAAI,OAAO,SAAS,aAAa;AAC7B,cAAQ,MAAM,IAAI;AAAA,IACtB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAM,cAAsD,QAAgB,OAAe,UAAkB,iBAAgC,MAAkD;AAC3L,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,YAAM,IAAI,kBAAkB,qCAAqC;AAAA,IACrE;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,YAAM,IAAI,kBAAkB,wCAAwC;AAAA,IACxE;AACA,UAAM,UAAU;AAChB,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,WAAW,aAAa;AAC/B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,cAAQ,OAAO,IAAI;AAAA,IACvB;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,cAAQ,UAAU,IAAI;AAAA,IAC1B;AACA,QAAI,OAAO,oBAAoB,aAAa;AACxC,cAAQ,iBAAiB,IAAI;AAAA,IACjC;AACA,QAAI,OAAO,SAAS,aAAa;AAC7B,cAAQ,MAAM,IAAI;AAAA,IACtB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,IAA4C,QAAmD;AACjG,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,kBAAkB,QAAQ,YAAY,MAAM;AAC5D,UAAM,UAAmB,CAAC;AAC1B,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,OAAO,QAA6B;AACtC,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,kBAAkB,QAAQ,YAAY,MAAM;AAC5D,UAAM,UAAmB,CAAC;AAC1B,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,YAAoD,QAAgB,OAAkD;AACxH,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,YAAM,IAAI,kBAAkB,qCAAqC;AAAA,IACrE;AACA,UAAM,UAAU,wBAAwB,QAAQ,YAAY,MAAM;AAClE,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,UAAU,aAAa;AAC9B,cAAQ,OAAO,IAAI;AAAA,IACvB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,UAAU,QAAgB,WAAoB,UAAwC;AACxF,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,uBAAuB,QAAQ,YAAY,MAAM;AACjE,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,cAAc,aAAa;AAClC,cAAQ,WAAW,IAAI;AAAA,IAC3B;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,cAAQ,UAAU,IAAI;AAAA,IAC1B;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,aAAqD,QAAgB,QAAqD;AAC5H,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,yBAAyB,QAAQ,YAAY,MAAM;AACnE,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,WAAW,aAAa;AAC/B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,SAAS,QAAgB,SAA6C;AACxE,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,uBAAuB,QAAQ,YAAY,MAAM;AACjE,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,YAAY,aAAa;AAChC,cAAQ,SAAS,IAAI;AAAA,IACzB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,gBAAgB,QAAgD;AAClE,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,8BAA8B,QAAQ,YAAY,MAAM;AACxE,UAAM,UAAmB,CAAC;AAC1B,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,UAAkD,QAAgB,KAAiD;AACrH,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,QAAQ,aAAa;AAC5B,YAAM,IAAI,kBAAkB,mCAAmC;AAAA,IACnE;AACA,UAAM,UAAU,sBAAsB,QAAQ,YAAY,MAAM;AAChE,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,QAAQ,aAAa;AAC5B,cAAQ,KAAK,IAAI;AAAA,IACrB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,uBAA+D,QAAgB,MAA4D;AAC7I,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,SAAS,aAAa;AAC7B,YAAM,IAAI,kBAAkB,oCAAoC;AAAA,IACpE;AACA,UAAM,UAAU,4CAA4C,QAAQ,YAAY,MAAM,EAAE,QAAQ,UAAU,IAAI;AAC9G,UAAM,UAAmB,CAAC;AAC1B,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,eAAe,QAA4C;AAC7D,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,8BAA8B,QAAQ,YAAY,MAAM;AACxE,UAAM,UAAmB,CAAC;AAC1B,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,oBAAoB,QAAkD;AACxE,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,qCAAqC,QAAQ,YAAY,MAAM;AAC/E,UAAM,UAAmB,CAAC;AAC1B,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,uBAAuB,QAAkD;AAC3E,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,qCAAqC,QAAQ,YAAY,MAAM;AAC/E,UAAM,UAAmB,CAAC;AAC1B,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,uBAAuB,QAAkD;AAC3E,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,qCAAqC,QAAQ,YAAY,MAAM;AAC/E,UAAM,UAAmB,CAAC;AAC1B,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,WAAmD,QAAgB,MAAiD;AACtH,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,SAAS,aAAa;AAC7B,YAAM,IAAI,kBAAkB,oCAAoC;AAAA,IACpE;AACA,UAAM,UAAU,uBAAuB,QAAQ,YAAY,MAAM;AACjE,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,SAAS,aAAa;AAC7B,cAAQ,MAAM,IAAI;AAAA,IACtB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,eAAuD,QAAgB,UAAqD;AAC9H,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,YAAM,IAAI,kBAAkB,wCAAwC;AAAA,IACxE;AACA,UAAM,UAAU,2BAA2B,QAAQ,YAAY,MAAM;AACrE,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,aAAa,aAAa;AACjC,cAAQ,UAAU,IAAI;AAAA,IAC1B;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,YAAoD,QAAgB,QAAmD;AACzH,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,wBAAwB,QAAQ,YAAY,MAAM;AAClE,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,WAAW,aAAa;AAC/B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,SAAiD,QAAsC;AACzF,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,wBAAwB,QAAQ,YAAY,MAAM;AAClE,UAAM,UAAmB,CAAC;AAC1B,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,YAAoD,QAAgB,OAAqC;AAC3G,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,UAAU,aAAa;AAC9B,YAAM,IAAI,kBAAkB,qCAAqC;AAAA,IACrE;AACA,UAAM,UAAU,wBAAwB,QAAQ,YAAY,MAAM;AAClE,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,UAAU,aAAa;AAC9B,cAAQ,OAAO,IAAI;AAAA,IACvB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,aAAa,QAA6C;AAC5D,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,2BAA2B,QAAQ,YAAY,MAAM;AACrE,UAAM,UAAmB,CAAC;AAC1B,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,cAAc,QAAyC;AACzD,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,2BAA2B,QAAQ,YAAY,MAAM;AACrE,UAAM,UAAmB,CAAC;AAC1B,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,eAAe,QAA6B;AAC9C,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,2BAA2B,QAAQ,YAAY,MAAM;AACrE,UAAM,UAAmB,CAAC;AAC1B,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,cAAc,QAAgB,WAAgC;AAChE,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,cAAc,aAAa;AAClC,YAAM,IAAI,kBAAkB,yCAAyC;AAAA,IACzE;AACA,UAAM,UAAU,uCAAuC,QAAQ,YAAY,MAAM,EAAE,QAAQ,eAAe,SAAS;AACnH,UAAM,UAAmB,CAAC;AAC1B,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,aAAqD,QAAgB,QAAoD;AAC3H,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,yBAAyB,QAAQ,YAAY,MAAM;AACnE,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,WAAW,aAAa;AAC/B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,YAAY,QAAgB,SAAgD;AAC9E,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,0BAA0B,QAAQ,YAAY,MAAM;AACpE,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,YAAY,aAAa;AAChC,cAAQ,SAAS,IAAI;AAAA,IACzB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,MAAM,aAAa,QAAgB,UAAkB,cAAqC,YAAoB,YAAqB,MAAuC;AACtK,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,YAAM,IAAI,kBAAkB,wCAAwC;AAAA,IACxE;AACA,QAAI,OAAO,iBAAiB,aAAa;AACrC,YAAM,IAAI,kBAAkB,4CAA4C;AAAA,IAC5E;AACA,QAAI,OAAO,eAAe,aAAa;AACnC,YAAM,IAAI,kBAAkB,0CAA0C;AAAA,IAC1E;AACA,UAAM,UAAU,0BAA0B,QAAQ,YAAY,MAAM;AACpE,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,aAAa,aAAa;AACjC,cAAQ,UAAU,IAAI;AAAA,IAC1B;AACA,QAAI,OAAO,iBAAiB,aAAa;AACrC,cAAQ,cAAc,IAAI;AAAA,IAC9B;AACA,QAAI,OAAO,eAAe,aAAa;AACnC,cAAQ,YAAY,IAAI;AAAA,IAC5B;AACA,QAAI,OAAO,eAAe,aAAa;AACnC,cAAQ,YAAY,IAAI;AAAA,IAC5B;AACA,QAAI,OAAO,SAAS,aAAa;AAC7B,cAAQ,MAAM,IAAI;AAAA,IACtB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,UAAU,QAAgB,UAA0C;AACtE,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,YAAM,IAAI,kBAAkB,wCAAwC;AAAA,IACxE;AACA,UAAM,UAAU,qCAAqC,QAAQ,YAAY,MAAM,EAAE,QAAQ,cAAc,QAAQ;AAC/G,UAAM,UAAmB,CAAC;AAC1B,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAM,aAAa,QAAgB,UAAkB,YAAqB,YAAqB,MAAuC;AAClI,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,YAAM,IAAI,kBAAkB,wCAAwC;AAAA,IACxE;AACA,UAAM,UAAU,qCAAqC,QAAQ,YAAY,MAAM,EAAE,QAAQ,cAAc,QAAQ;AAC/G,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,eAAe,aAAa;AACnC,cAAQ,YAAY,IAAI;AAAA,IAC5B;AACA,QAAI,OAAO,eAAe,aAAa;AACnC,cAAQ,YAAY,IAAI;AAAA,IAC5B;AACA,QAAI,OAAO,SAAS,aAAa;AAC7B,cAAQ,MAAM,IAAI;AAAA,IACtB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,aAAa,QAAgB,UAA+B;AAC9D,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,aAAa,aAAa;AACjC,YAAM,IAAI,kBAAkB,wCAAwC;AAAA,IACxE;AACA,UAAM,UAAU,qCAAqC,QAAQ,YAAY,MAAM,EAAE,QAAQ,cAAc,QAAQ;AAC/G,UAAM,UAAmB,CAAC;AAC1B,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,YAAY,QAAgB,QAAiB,QAAwC;AACvF,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,UAAM,UAAU,yBAAyB,QAAQ,YAAY,MAAM;AACnE,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,WAAW,aAAa;AAC/B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,QAAI,OAAO,WAAW,aAAa;AAC/B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,wBAAgE,QAAgB,mBAA+D;AACjJ,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,sBAAsB,aAAa;AAC1C,YAAM,IAAI,kBAAkB,iDAAiD;AAAA,IACjF;AACA,UAAM,UAAU,+BAA+B,QAAQ,YAAY,MAAM;AACzE,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,sBAAsB,aAAa;AAC1C,cAAQ,mBAAmB,IAAI;AAAA,IACnC;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,wBAAgE,QAAgB,mBAA+D;AACjJ,QAAI,OAAO,WAAW,aAAa;AAC/B,YAAM,IAAI,kBAAkB,sCAAsC;AAAA,IACtE;AACA,QAAI,OAAO,sBAAsB,aAAa;AAC1C,YAAM,IAAI,kBAAkB,iDAAiD;AAAA,IACjF;AACA,UAAM,UAAU,qCAAqC,QAAQ,YAAY,MAAM;AAC/E,UAAM,UAAmB,CAAC;AAC1B,QAAI,OAAO,sBAAsB,aAAa;AAC1C,cAAQ,mBAAmB,IAAI;AAAA,IACnC;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,WAAW,OAAO;AAEzD,UAAM,aAA2C;AAAA,MAC7C,gBAAgB;AAAA,IACpB;AAEA,WAAO,MAAM,KAAK,OAAO;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACJ","sourcesContent":["import { AppwriteException, Client, type Payload, UploadProgress } from '../client';\nimport type { Models } from '../models';\nimport { PasswordHash } from '../enums/password-hash';\nimport { AuthenticatorType } from '../enums/authenticator-type';\nimport { MessagingProviderType } from '../enums/messaging-provider-type';\n\nexport class Users {\n client: Client;\n\n constructor(client: Client) {\n this.client = client;\n }\n\n /**\n * List users\n *\n * Get a list of all the project's users. You can use the query params to filter your results.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async list(queries?: string[], search?: string): Promise> {\n const apiPath = '/users';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user\n *\n * Create a new user.\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} phone\n * @param {string} password\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async create(userId: string, email?: string, phone?: string, password?: string, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof phone !== 'undefined') {\n payload['phone'] = phone;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user with Argon2 password\n *\n * Create a new user. Password provided must be hashed with the [Argon2](https://en.wikipedia.org/wiki/Argon2) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} password\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async createArgon2User(userId: string, email: string, password: string, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/users/argon2';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user with bcrypt password\n *\n * Create a new user. Password provided must be hashed with the [Bcrypt](https://en.wikipedia.org/wiki/Bcrypt) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} password\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async createBcryptUser(userId: string, email: string, password: string, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/users/bcrypt';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List Identities\n *\n * Get identities for all users.\n *\n * @param {string[]} queries\n * @param {string} search\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listIdentities(queries?: string[], search?: string): Promise {\n const apiPath = '/users/identities';\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n if (typeof search !== 'undefined') {\n payload['search'] = search;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete identity\n *\n * Delete an identity by its unique ID.\n *\n * @param {string} identityId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteIdentity(identityId: string): Promise<{}> {\n if (typeof identityId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"identityId\"');\n }\n const apiPath = '/users/identities/{identityId}'.replace('{identityId}', identityId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user with MD5 password\n *\n * Create a new user. Password provided must be hashed with the [MD5](https://en.wikipedia.org/wiki/MD5) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} password\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async createMD5User(userId: string, email: string, password: string, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/users/md5';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user with PHPass password\n *\n * Create a new user. Password provided must be hashed with the [PHPass](https://www.openwall.com/phpass/) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} password\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async createPHPassUser(userId: string, email: string, password: string, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/users/phpass';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user with Scrypt password\n *\n * Create a new user. Password provided must be hashed with the [Scrypt](https://github.com/Tarsnap/scrypt) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} password\n * @param {string} passwordSalt\n * @param {number} passwordCpu\n * @param {number} passwordMemory\n * @param {number} passwordParallel\n * @param {number} passwordLength\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async createScryptUser(userId: string, email: string, password: string, passwordSalt: string, passwordCpu: number, passwordMemory: number, passwordParallel: number, passwordLength: number, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n if (typeof passwordSalt === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"passwordSalt\"');\n }\n if (typeof passwordCpu === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"passwordCpu\"');\n }\n if (typeof passwordMemory === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"passwordMemory\"');\n }\n if (typeof passwordParallel === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"passwordParallel\"');\n }\n if (typeof passwordLength === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"passwordLength\"');\n }\n const apiPath = '/users/scrypt';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof passwordSalt !== 'undefined') {\n payload['passwordSalt'] = passwordSalt;\n }\n if (typeof passwordCpu !== 'undefined') {\n payload['passwordCpu'] = passwordCpu;\n }\n if (typeof passwordMemory !== 'undefined') {\n payload['passwordMemory'] = passwordMemory;\n }\n if (typeof passwordParallel !== 'undefined') {\n payload['passwordParallel'] = passwordParallel;\n }\n if (typeof passwordLength !== 'undefined') {\n payload['passwordLength'] = passwordLength;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user with Scrypt modified password\n *\n * Create a new user. Password provided must be hashed with the [Scrypt Modified](https://gist.github.com/Meldiron/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} password\n * @param {string} passwordSalt\n * @param {string} passwordSaltSeparator\n * @param {string} passwordSignerKey\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async createScryptModifiedUser(userId: string, email: string, password: string, passwordSalt: string, passwordSaltSeparator: string, passwordSignerKey: string, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n if (typeof passwordSalt === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"passwordSalt\"');\n }\n if (typeof passwordSaltSeparator === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"passwordSaltSeparator\"');\n }\n if (typeof passwordSignerKey === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"passwordSignerKey\"');\n }\n const apiPath = '/users/scrypt-modified';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof passwordSalt !== 'undefined') {\n payload['passwordSalt'] = passwordSalt;\n }\n if (typeof passwordSaltSeparator !== 'undefined') {\n payload['passwordSaltSeparator'] = passwordSaltSeparator;\n }\n if (typeof passwordSignerKey !== 'undefined') {\n payload['passwordSignerKey'] = passwordSignerKey;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user with SHA password\n *\n * Create a new user. Password provided must be hashed with the [SHA](https://en.wikipedia.org/wiki/Secure_Hash_Algorithm) algorithm. Use the [POST /users](https://appwrite.io/docs/server/users#usersCreate) endpoint to create users with a plain text password.\n *\n * @param {string} userId\n * @param {string} email\n * @param {string} password\n * @param {PasswordHash} passwordVersion\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async createSHAUser(userId: string, email: string, password: string, passwordVersion?: PasswordHash, name?: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/users/sha';\n const payload: Payload = {};\n if (typeof userId !== 'undefined') {\n payload['userId'] = userId;\n }\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n if (typeof passwordVersion !== 'undefined') {\n payload['passwordVersion'] = passwordVersion;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get user\n *\n * Get a user by its unique ID.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async get(userId: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete user\n *\n * Delete a user by its unique ID, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](https://appwrite.io/docs/server/users#usersUpdateStatus) endpoint instead.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async delete(userId: string): Promise<{}> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update email\n *\n * Update the user email by its unique ID.\n *\n * @param {string} userId\n * @param {string} email\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateEmail(userId: string, email: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof email === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"email\"');\n }\n const apiPath = '/users/{userId}/email'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof email !== 'undefined') {\n payload['email'] = email;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create user JWT\n *\n * Use this endpoint to create a JSON Web Token for user by its unique ID. You can use the resulting JWT to authenticate on behalf of the user. The JWT secret will become invalid if the session it uses gets deleted.\n *\n * @param {string} userId\n * @param {string} sessionId\n * @param {number} duration\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createJWT(userId: string, sessionId?: string, duration?: number): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/jwts'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof sessionId !== 'undefined') {\n payload['sessionId'] = sessionId;\n }\n if (typeof duration !== 'undefined') {\n payload['duration'] = duration;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update user labels\n *\n * Update the user labels by its unique ID. \n\nLabels can be used to grant access to resources. While teams are a way for user's to share access to a resource, labels can be defined by the developer to grant access without an invitation. See the [Permissions docs](https://appwrite.io/docs/permissions) for more info.\n *\n * @param {string} userId\n * @param {string[]} labels\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateLabels(userId: string, labels: string[]): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof labels === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"labels\"');\n }\n const apiPath = '/users/{userId}/labels'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof labels !== 'undefined') {\n payload['labels'] = labels;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List user logs\n *\n * Get the user activity logs list by its unique ID.\n *\n * @param {string} userId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listLogs(userId: string, queries?: string[]): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/logs'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List user memberships\n *\n * Get the user membership list by its unique ID.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listMemberships(userId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/memberships'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update MFA\n *\n * Enable or disable MFA on a user account.\n *\n * @param {string} userId\n * @param {boolean} mfa\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateMfa(userId: string, mfa: boolean): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof mfa === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"mfa\"');\n }\n const apiPath = '/users/{userId}/mfa'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof mfa !== 'undefined') {\n payload['mfa'] = mfa;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete Authenticator\n *\n * Delete an authenticator app.\n *\n * @param {string} userId\n * @param {AuthenticatorType} type\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async deleteMfaAuthenticator(userId: string, type: AuthenticatorType): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof type === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"type\"');\n }\n const apiPath = '/users/{userId}/mfa/authenticators/{type}'.replace('{userId}', userId).replace('{type}', type);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List Factors\n *\n * List the factors available on the account to be used as a MFA challange.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listMfaFactors(userId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/mfa/factors'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get MFA Recovery Codes\n *\n * Get recovery codes that can be used as backup for MFA flow by User ID. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getMfaRecoveryCodes(userId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/mfa/recovery-codes'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Regenerate MFA Recovery Codes\n *\n * Regenerate recovery codes that can be used as backup for MFA flow by User ID. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateMfaRecoveryCodes(userId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/mfa/recovery-codes'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'put',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create MFA Recovery Codes\n *\n * Generate recovery codes used as backup for MFA flow for User ID. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method by client SDK.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createMfaRecoveryCodes(userId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/mfa/recovery-codes'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update name\n *\n * Update the user name by its unique ID.\n *\n * @param {string} userId\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateName(userId: string, name: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof name === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"name\"');\n }\n const apiPath = '/users/{userId}/name'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update password\n *\n * Update the user password by its unique ID.\n *\n * @param {string} userId\n * @param {string} password\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updatePassword(userId: string, password: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof password === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"password\"');\n }\n const apiPath = '/users/{userId}/password'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof password !== 'undefined') {\n payload['password'] = password;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update phone\n *\n * Update the user phone by its unique ID.\n *\n * @param {string} userId\n * @param {string} number\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updatePhone(userId: string, number: string): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof number === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"number\"');\n }\n const apiPath = '/users/{userId}/phone'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof number !== 'undefined') {\n payload['number'] = number;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get user preferences\n *\n * Get the user preferences by its unique ID.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getPrefs(userId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/prefs'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update user preferences\n *\n * Update the user preferences by its unique ID. The object you pass is stored as is, and replaces any previous value. The maximum allowed prefs size is 64kB and throws error if exceeded.\n *\n * @param {string} userId\n * @param {object} prefs\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updatePrefs(userId: string, prefs: object): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof prefs === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"prefs\"');\n }\n const apiPath = '/users/{userId}/prefs'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof prefs !== 'undefined') {\n payload['prefs'] = prefs;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List user sessions\n *\n * Get the user sessions list by its unique ID.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listSessions(userId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/sessions'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create session\n *\n * Creates a session for a user. Returns an immediately usable session object.\n\nIf you want to generate a token for a custom authentication flow, use the [POST /users/{userId}/tokens](https://appwrite.io/docs/server/users#createToken) endpoint.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createSession(userId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/sessions'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete user sessions\n *\n * Delete all user's sessions by using the user's unique ID.\n *\n * @param {string} userId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteSessions(userId: string): Promise<{}> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/sessions'.replace('{userId}', userId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete user session\n *\n * Delete a user sessions by its unique ID.\n *\n * @param {string} userId\n * @param {string} sessionId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteSession(userId: string, sessionId: string): Promise<{}> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof sessionId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"sessionId\"');\n }\n const apiPath = '/users/{userId}/sessions/{sessionId}'.replace('{userId}', userId).replace('{sessionId}', sessionId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update user status\n *\n * Update the user status by its unique ID. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.\n *\n * @param {string} userId\n * @param {boolean} status\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateStatus(userId: string, status: boolean): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof status === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"status\"');\n }\n const apiPath = '/users/{userId}/status'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof status !== 'undefined') {\n payload['status'] = status;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * List User Targets\n *\n * List the messaging targets that are associated with a user.\n *\n * @param {string} userId\n * @param {string[]} queries\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async listTargets(userId: string, queries?: string[]): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/targets'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof queries !== 'undefined') {\n payload['queries'] = queries;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create User Target\n *\n * Create a messaging target.\n *\n * @param {string} userId\n * @param {string} targetId\n * @param {MessagingProviderType} providerType\n * @param {string} identifier\n * @param {string} providerId\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createTarget(userId: string, targetId: string, providerType: MessagingProviderType, identifier: string, providerId?: string, name?: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof targetId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"targetId\"');\n }\n if (typeof providerType === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"providerType\"');\n }\n if (typeof identifier === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"identifier\"');\n }\n const apiPath = '/users/{userId}/targets'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof targetId !== 'undefined') {\n payload['targetId'] = targetId;\n }\n if (typeof providerType !== 'undefined') {\n payload['providerType'] = providerType;\n }\n if (typeof identifier !== 'undefined') {\n payload['identifier'] = identifier;\n }\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Get User Target\n *\n * Get a user's push notification target by ID.\n *\n * @param {string} userId\n * @param {string} targetId\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async getTarget(userId: string, targetId: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof targetId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"targetId\"');\n }\n const apiPath = '/users/{userId}/targets/{targetId}'.replace('{userId}', userId).replace('{targetId}', targetId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'get',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update User target\n *\n * Update a messaging target.\n *\n * @param {string} userId\n * @param {string} targetId\n * @param {string} identifier\n * @param {string} providerId\n * @param {string} name\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async updateTarget(userId: string, targetId: string, identifier?: string, providerId?: string, name?: string): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof targetId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"targetId\"');\n }\n const apiPath = '/users/{userId}/targets/{targetId}'.replace('{userId}', userId).replace('{targetId}', targetId);\n const payload: Payload = {};\n if (typeof identifier !== 'undefined') {\n payload['identifier'] = identifier;\n }\n if (typeof providerId !== 'undefined') {\n payload['providerId'] = providerId;\n }\n if (typeof name !== 'undefined') {\n payload['name'] = name;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Delete user target\n *\n * Delete a messaging target.\n *\n * @param {string} userId\n * @param {string} targetId\n * @throws {AppwriteException}\n * @returns {Promise<{}>}\n */\n async deleteTarget(userId: string, targetId: string): Promise<{}> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof targetId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"targetId\"');\n }\n const apiPath = '/users/{userId}/targets/{targetId}'.replace('{userId}', userId).replace('{targetId}', targetId);\n const payload: Payload = {};\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'delete',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Create token\n *\n * Returns a token with a secret key for creating a session. Use the user ID and secret and submit a request to the [PUT /account/sessions/token](https://appwrite.io/docs/references/cloud/client-web/account#createSession) endpoint to complete the login process.\n\n *\n * @param {string} userId\n * @param {number} length\n * @param {number} expire\n * @throws {AppwriteException}\n * @returns {Promise}\n */\n async createToken(userId: string, length?: number, expire?: number): Promise {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n const apiPath = '/users/{userId}/tokens'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof length !== 'undefined') {\n payload['length'] = length;\n }\n if (typeof expire !== 'undefined') {\n payload['expire'] = expire;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'post',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update email verification\n *\n * Update the user email verification status by its unique ID.\n *\n * @param {string} userId\n * @param {boolean} emailVerification\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updateEmailVerification(userId: string, emailVerification: boolean): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof emailVerification === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"emailVerification\"');\n }\n const apiPath = '/users/{userId}/verification'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof emailVerification !== 'undefined') {\n payload['emailVerification'] = emailVerification;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n /**\n * Update phone verification\n *\n * Update the user phone verification status by its unique ID.\n *\n * @param {string} userId\n * @param {boolean} phoneVerification\n * @throws {AppwriteException}\n * @returns {Promise>}\n */\n async updatePhoneVerification(userId: string, phoneVerification: boolean): Promise> {\n if (typeof userId === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"userId\"');\n }\n if (typeof phoneVerification === 'undefined') {\n throw new AppwriteException('Missing required parameter: \"phoneVerification\"');\n }\n const apiPath = '/users/{userId}/verification/phone'.replace('{userId}', userId);\n const payload: Payload = {};\n if (typeof phoneVerification !== 'undefined') {\n payload['phoneVerification'] = phoneVerification;\n }\n const uri = new URL(this.client.config.endpoint + apiPath);\n\n const apiHeaders: { [header: string]: string } = {\n 'content-type': 'application/json',\n }\n\n return await this.client.call(\n 'patch',\n uri,\n apiHeaders,\n payload,\n );\n }\n}\n"]} \ No newline at end of file diff --git a/node_modules/node-appwrite/package.json b/node_modules/node-appwrite/package.json new file mode 100644 index 0000000..c8dcded --- /dev/null +++ b/node_modules/node-appwrite/package.json @@ -0,0 +1,53 @@ +{ + "name": "node-appwrite", + "homepage": "https://appwrite.io/support", + "description": "Appwrite is an open-source self-hosted backend server that abstract and simplify complex and repetitive development tasks behind a very simple REST API", + "version": "14.1.0", + "license": "BSD-3-Clause", + "main": "dist/index.js", + "type": "commonjs", + "scripts": { + "build": "tsup" + }, + "exports": { + ".": { + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, + "./file": { + "import": { + "types": "./dist/inputFile.d.mts", + "default": "./dist/inputFile.mjs" + }, + "require": { + "types": "./dist/inputFile.d.ts", + "default": "./dist/inputFile.js" + } + } + }, + "files": [ + "dist" + ], + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "repository": { + "type": "git", + "url": "https://github.com/appwrite/sdk-for-node" + }, + "devDependencies": { + "@types/node": "20.11.25", + "tsup": "7.2.0", + "esbuild-plugin-file-path-extensions": "^2.0.0", + "tslib": "2.6.2", + "typescript": "5.4.2" + }, + "dependencies": { + "node-fetch-native-with-agent": "1.7.2" + } +} diff --git a/node_modules/node-fetch-native-with-agent/LICENSE b/node_modules/node-fetch-native-with-agent/LICENSE new file mode 100644 index 0000000..180a318 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/LICENSE @@ -0,0 +1,114 @@ +MIT License + +Copyright (c) Pooya Parsa + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + +https://github.com/node-fetch/node-fetch + +The MIT License (MIT) + +Copyright (c) 2016 - 2020 Node Fetch Team + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +https://github.com/mysticatea/abort-controller + +MIT License + +Copyright (c) 2017 Toru Nagashima + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + +https://github.com/TooTallNate/proxy-agents + +(The MIT License) + +Copyright (c) 2013 Nathan Rajlich + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--- + +https://github.com/nodejs/undici + +MIT License + +Copyright (c) Matteo Collina and Undici contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/node-fetch-native-with-agent/README.md b/node_modules/node-fetch-native-with-agent/README.md new file mode 100644 index 0000000..96e00f7 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/README.md @@ -0,0 +1,222 @@ +# node-fetch-native + +[![][npm-version-src]][npm-version-href] +[![][github-actions-src]][github-actions-href] +[![][packagephobia-src]][packagephobia-href] +[![npm downloads][npm-downloads-src]][npm-downloads-href] + + + +A redistribution of [node-fetch v3](https://github.com/node-fetch/node-fetch) (+ more!) for better backward and forward compatibility. + +**Why this package?** + +- We can no longer `require('node-fetch')` with the latest version. This stopped popular libraries from upgrading and dependency conflicts between `node-fetch@2` and `node-fetch@3`. +- With upcoming versions of Node.js, native `fetch` is being supported. We are prepared for native fetch support using this package yet keep supporting older Node versions. +- With the introduction of native fetch to Node.js via [undici](https://github.com/nodejs/undici) there is no easy way to support http proxies! + +**Features:** + +✅ Prefer to **native globals** when available (See Node.js [experimental fetch](https://nodejs.org/dist/latest-v17.x/docs/api/cli.html#--experimental-fetch)). + +✅ Compact build and less install size with **zero dependencies** [![][packagephobia-s-src]][packagephobia-s-href] vs [![][packagephobia-s-alt-src]][packagephobia-s-alt-href] + +✅ Support both **CommonJS** (`require`) and **ESM** (`import`) usage + +✅ Use native version if imported without `node` condition using [conditional exports](https://nodejs.org/api/packages.html#packages_conditional_exports) with **zero bundle overhead** + +✅ Polyfill support for Node.js + +✅ Compact and simple proxy supporting both Node.js versions without native fetch using [HTTP Agent](https://github.com/TooTallNate/proxy-agents/tree/main/packages/proxy-agent) and versions with native fetch using [Undici Proxy Agent](https://undici.nodejs.org/#/docs/api/ProxyAgent) + +## Usage + +Install `node-fetch-native` dependency: + +```sh +# npm +npm i node-fetch-native + +# yarn +yarn add node-fetch-native + +# pnpm +pnpm i node-fetch-native +``` + +You can now either import or require the dependency: + +```js +// ESM +import fetch from "node-fetch-native"; + +// CommonJS +const fetch = require("node-fetch-native"); +``` + +More named exports: + +```js +// ESM +import { + fetch, + Blob, + FormData, + Headers, + Request, + Response, + AbortController, +} from "node-fetch-native"; + +// CommonJS +const { + fetch, + Blob, + FormData, + Headers, + Request, + Response, + AbortController, +} = require("node-fetch-native"); +``` + +## Force using non-native version + +Sometimes you want to explicitly use none native (`node-fetch`) implementation of `fetch` in case of issues with the native/polyfill version of `globalThis.fetch` with Node.js or runtime environment. + +You have two ways to do this: + +- Set the `FORCE_NODE_FETCH` environment variable before starting the application. +- Import from `node-fetch-native/node` + +## Polyfill support + +Using the polyfill method, we can ensure global fetch is available in the environment and all files. Natives are always preferred. + +**Note:** I don't recommend this if you are authoring a library! Please prefer the explicit methods. + +```js +// ESM +import "node-fetch-native/polyfill"; + +// CJS +require("node-fetch-native/polyfill"); + +// You can now use fetch() without any import! +``` + +## Proxy Support + +Node.js has no built-in support for HTTP Proxies for fetch (see [nodejs/undici#1650](https://github.com/nodejs/undici/issues/1650) and [nodejs/node#8381](https://github.com/nodejs/node/issues/8381)) + +This package bundles a compact and simple proxy-supported solution for both Node.js versions without native fetch using [HTTP Agent](https://github.com/TooTallNate/proxy-agents/tree/main/packages/proxy-agent) and versions with native fetch using [Undici Proxy Agent](https://undici.nodejs.org/#/docs/api/ProxyAgent). + +By default, `https_proxy`, `http_proxy`, `HTTPS_PROXY`, and `HTTP_PROXY` environment variables will be checked and used (in order) for the proxy and if not any of them are set, the proxy will be disabled. You can override it using the `url` option passed to `createFetch` and `createProxy` utils. + +By default, `no_proxy` and `NO_PROXY` environment variables will be checked and used for the (comma-separated) list of hosts to ignore the proxy for. You can override it using the `noProxy` option passed to `createFetch` and `createProxy` utils. The entries starting with a dot will be used to check the domain and also any subdomain. + +> [!NOTE] +> Using export conditions, this utility adds proxy support for Node.js and for other runtimes, it will simply return native fetch. + +> [!IMPORTANT] +> Proxy support is under development. Check [unjs/node-fetch-native#107](https://github.com/unjs/node-fetch-native/issues/107) for the roadmap and contributing! + +### `fetch` with proxy support + +You can simply import `{ fetch }` from `node-fetch-native/proxy` with a preconfigured `fetch` function that has proxy support. + +```ts +import { fetch } from "node-fetch-native/proxy"; + +console.log(await fetch("https://icanhazip.com").then((r) => r.text()); +``` + +### `createFetch` utility + +You can use the `createFetch` utility to instantiate a `fetch` instance with custom proxy options. + +```ts +import { createFetch } from "node-fetch-native/proxy"; + +const fetch = createFetch({ url: "http://localhost:9080" }); + +console.log(await fetch("https://icanhazip.com").then((r) => r.text()); +``` + +### `createProxy` utility + +`createProxy` returns an object with `agent` and `dispatcher` keys that can be passed as fetch options. + +```ts +import { fetch } from "node-fetch-native"; +import { createProxy } from "node-fetch-native/proxy"; + +const proxy = createProxy(); +// const proxy = createProxy({ url: "http://localhost:8080" }); + +console.log(await fetch("https://icanhazip.com", { ...proxy }).then((r) => r.text()); +``` + +## Alias to `node-fetch` + +Using this method, you can ensure all project dependencies and usages of `node-fetch` can benefit from improved `node-fetch-native` and won't conflict between `node-fetch@2` and `node-fetch@3`. + +### npm + +Using npm [overrides](https://docs.npmjs.com/cli/v8/configuring-npm/package-json#overrides): + +```jsonc +// package.json +{ + "overrides": { + "node-fetch": "npm:node-fetch-native@latest" + } +} +``` + +### yarn + +Using yarn [selective dependency resolutions](https://classic.yarnpkg.com/lang/en/docs/selective-version-resolutions/): + +```jsonc +// package.json +{ + "resolutions": { + "node-fetch": "npm:node-fetch-native@latest" + } +} +``` + +### pnpm + +Using [pnpm.overrides](https://pnpm.io/package_json#pnpmoverrides): + +```jsonc +// package.json +{ + "pnpm": { + "overrides": { + "node-fetch": "npm:node-fetch-native@latest" + } + } +} +``` + +## License + +Made with 💛 Published under the [MIT](./LICENSE) license. + + + +[npm-version-src]: https://flat.badgen.net/npm/v/node-fetch-native +[npm-version-href]: https://npmjs.com/package/node-fetch-native +[npm-downloads-src]: https://flat.badgen.net/npm/dm/node-fetch-native +[npm-downloads-href]: https://npmjs.com/package/node-fetch-native +[github-actions-src]: https://flat.badgen.net/github/checks/unjs/node-fetch-native +[github-actions-href]: https://github.com/unjs/node-fetch-native/actions?query=workflow%3Aci +[packagephobia-src]: https://flat.badgen.net/packagephobia/install/node-fetch-native +[packagephobia-href]: https://packagephobia.com/result?p=node-fetch-native +[packagephobia-s-src]: https://flat.badgen.net/packagephobia/install/node-fetch-native?label=node-fetch-native&scale=.9 +[packagephobia-s-href]: https://packagephobia.com/result?p=node-fetch-native +[packagephobia-s-alt-src]: https://flat.badgen.net/packagephobia/install/node-fetch?label=node-fetch&scale=.9 +[packagephobia-s-alt-href]: https://packagephobia.com/result?p=node-fetch diff --git a/node_modules/node-fetch-native-with-agent/agent.d.ts b/node_modules/node-fetch-native-with-agent/agent.d.ts new file mode 100644 index 0000000..1c5588f --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/agent.d.ts @@ -0,0 +1 @@ +export * from "./lib/agent"; diff --git a/node_modules/node-fetch-native-with-agent/dist/agent-stub.cjs b/node_modules/node-fetch-native-with-agent/dist/agent-stub.cjs new file mode 100644 index 0000000..091d273 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/agent-stub.cjs @@ -0,0 +1 @@ +"use strict";var n=Object.defineProperty;var t=(r,a)=>n(r,"name",{value:a,configurable:!0});var c=Object.defineProperty,e=t((r,a)=>c(r,"name",{value:a,configurable:!0}),"e");function createAgent(){return{agent:void 0,dispatcher:void 0}}t(createAgent,"createAgent"),e(createAgent,"createAgent");function createFetch(){return globalThis.fetch}t(createFetch,"createFetch"),e(createFetch,"createFetch");const fetch=globalThis.fetch;exports.createAgent=createAgent,exports.createFetch=createFetch,exports.fetch=fetch; diff --git a/node_modules/node-fetch-native-with-agent/dist/agent-stub.mjs b/node_modules/node-fetch-native-with-agent/dist/agent-stub.mjs new file mode 100644 index 0000000..aaa625d --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/agent-stub.mjs @@ -0,0 +1 @@ +var o=Object.defineProperty;var e=(t,c)=>o(t,"name",{value:c,configurable:!0});var i=Object.defineProperty,r=e((t,c)=>i(t,"name",{value:c,configurable:!0}),"e");function a(){return{agent:void 0,dispatcher:void 0}}e(a,"createAgent"),r(a,"createAgent");function n(){return globalThis.fetch}e(n,"createFetch"),r(n,"createFetch");const h=globalThis.fetch;export{a as createAgent,n as createFetch,h as fetch}; diff --git a/node_modules/node-fetch-native-with-agent/dist/agent.cjs b/node_modules/node-fetch-native-with-agent/dist/agent.cjs new file mode 100644 index 0000000..c623b82 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/agent.cjs @@ -0,0 +1 @@ +"use strict";var u=Object.defineProperty;var o=(e,t)=>u(e,"name",{value:t,configurable:!0});const http=require("node:http"),https=require("node:https"),index=require("./shared/node-fetch-native-with-agent.df7e6bd6.cjs"),nodeFetchNativeWithAgent=require("node-fetch-native-with-agent");require("node:assert"),require("node:net"),require("node:stream"),require("node:buffer"),require("node:util"),require("node:querystring"),require("node:diagnostics_channel"),require("node:events"),require("./shared/node-fetch-native-with-agent.61758d11.cjs"),require("node:tls"),require("node:zlib"),require("node:perf_hooks"),require("node:util/types"),require("node:os"),require("node:url"),require("node:async_hooks"),require("node:console"),require("string_decoder"),require("node:worker_threads");var i=Object.defineProperty,r=o((e,t)=>i(e,"name",{value:t,configurable:!0}),"r");function createAgent(e,t={}){const n={rejectUnauthorized:t.rejectUnauthorized},c=e?.startsWith("https:")?new https.Agent(n):new http.Agent,s=new index.Agent_1({connect:n});return{agent:c,dispatcher:s}}o(createAgent,"createAgent"),r(createAgent,"createAgent");function createFetch(e={}){const t=createAgent(void 0,e);return(n,c)=>nodeFetchNativeWithAgent.fetch(n,{...t,...c})}o(createFetch,"createFetch"),r(createFetch,"createFetch");const fetch=createFetch({});exports.createAgent=createAgent,exports.createFetch=createFetch,exports.fetch=fetch; diff --git a/node_modules/node-fetch-native-with-agent/dist/agent.mjs b/node_modules/node-fetch-native-with-agent/dist/agent.mjs new file mode 100644 index 0000000..ef96ec1 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/agent.mjs @@ -0,0 +1 @@ +var a=Object.defineProperty;var o=(t,r)=>a(t,"name",{value:r,configurable:!0});import{Agent as f}from"node:http";import{Agent as h}from"node:https";import{A as s}from"./shared/node-fetch-native-with-agent.56860586.mjs";import{fetch as g}from"node-fetch-native-with-agent";import"node:assert";import"node:net";import"node:stream";import"node:buffer";import"node:util";import"node:querystring";import"node:diagnostics_channel";import"node:events";import"./shared/node-fetch-native-with-agent.1a4a356d.mjs";import"node:tls";import"node:zlib";import"node:perf_hooks";import"node:util/types";import"node:os";import"node:url";import"node:async_hooks";import"node:console";import"string_decoder";import"node:worker_threads";var u=Object.defineProperty,p=o((t,r)=>u(t,"name",{value:r,configurable:!0}),"r");function m(t,r={}){const e={rejectUnauthorized:r.rejectUnauthorized},i=t?.startsWith("https:")?new h(e):new f,c=new s({connect:e});return{agent:i,dispatcher:c}}o(m,"createAgent"),p(m,"createAgent");function n(t={}){const r=m(void 0,t);return(e,i)=>g(e,{...r,...i})}o(n,"createFetch"),p(n,"createFetch");const A=n({});export{m as createAgent,n as createFetch,A as fetch}; diff --git a/node_modules/node-fetch-native-with-agent/dist/chunks/multipart-parser.cjs b/node_modules/node-fetch-native-with-agent/dist/chunks/multipart-parser.cjs new file mode 100644 index 0000000..222ea52 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/chunks/multipart-parser.cjs @@ -0,0 +1,2 @@ +"use strict";var y=Object.defineProperty;var c=(R,o)=>y(R,"name",{value:o,configurable:!0});require("node:fs"),require("node:path");const node=require("../node.cjs");require("node:http"),require("node:https"),require("node:zlib"),require("node:stream"),require("node:buffer"),require("node:util"),require("../shared/node-fetch-native-with-agent.61758d11.cjs"),require("node:url"),require("node:net");let s=0;const S={START_BOUNDARY:s++,HEADER_FIELD_START:s++,HEADER_FIELD:s++,HEADER_VALUE_START:s++,HEADER_VALUE:s++,HEADER_VALUE_ALMOST_DONE:s++,HEADERS_ALMOST_DONE:s++,PART_DATA_START:s++,PART_DATA:s++,END:s++};let f=1;const F={PART_BOUNDARY:f,LAST_BOUNDARY:f*=2},LF=10,CR=13,SPACE=32,HYPHEN=45,COLON=58,A=97,Z=122,lower=c(R=>R|32,"lower"),noop=c(()=>{},"noop"),O=class O{constructor(o){this.index=0,this.flags=0,this.onHeaderEnd=noop,this.onHeaderField=noop,this.onHeadersEnd=noop,this.onHeaderValue=noop,this.onPartBegin=noop,this.onPartData=noop,this.onPartEnd=noop,this.boundaryChars={},o=`\r +--`+o;const t=new Uint8Array(o.length);for(let n=0;n{this[D+"Mark"]=t},"mark"),i=c(D=>{delete this[D+"Mark"]},"clear"),T=c((D,p,_,N)=>{(p===void 0||p!==_)&&this[D](N&&N.subarray(p,_))},"callback"),L=c((D,p)=>{const _=D+"Mark";_ in this&&(p?(T(D,this[_],t,o),delete this[_]):(T(D,this[_],o.length,o),this[_]=0))},"dataCallback");for(t=0;tZ)return;break;case S.HEADER_VALUE_START:if(r===SPACE)break;u("onHeaderValue"),a=S.HEADER_VALUE;case S.HEADER_VALUE:r===CR&&(L("onHeaderValue",!0),T("onHeaderEnd"),a=S.HEADER_VALUE_ALMOST_DONE);break;case S.HEADER_VALUE_ALMOST_DONE:if(r!==LF)return;a=S.HEADER_FIELD_START;break;case S.HEADERS_ALMOST_DONE:if(r!==LF)return;T("onHeadersEnd"),a=S.PART_DATA_START;break;case S.PART_DATA_START:a=S.PART_DATA,u("onPartData");case S.PART_DATA:if(E=e,e===0){for(t+=g;t0)l[e-1]=r;else if(E>0){const D=new Uint8Array(l.buffer,l.byteOffset,l.byteLength);T("onPartData",0,E,D),E=0,u("onPartData"),t--}break;case S.END:break;default:throw new Error(`Unexpected state entered: ${a}`)}L("onHeaderField"),L("onHeaderValue"),L("onPartData"),this.index=e,this.state=a,this.flags=d}end(){if(this.state===S.HEADER_FIELD_START&&this.index===0||this.state===S.PART_DATA&&this.index===this.boundary.length)this.onPartEnd();else if(this.state!==S.END)throw new Error("MultipartParser.end(): stream ended unexpectedly")}};c(O,"MultipartParser");let MultipartParser=O;function _fileName(R){const o=R.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);if(!o)return;const t=o[2]||o[3]||"";let n=t.slice(t.lastIndexOf("\\")+1);return n=n.replace(/%22/g,'"'),n=n.replace(/&#(\d{4});/g,(E,l)=>String.fromCharCode(l)),n}c(_fileName,"_fileName");async function toFormData(R,o){if(!/multipart/i.test(o))throw new TypeError("Failed to fetch");const t=o.match(/boundary=(?:"([^"]+)"|([^;]+))/i);if(!t)throw new TypeError("no or bad content-type header, no multipart boundary");const n=new MultipartParser(t[1]||t[2]);let E,l,h,H,e,a;const d=[],b=new node.FormData,g=c(i=>{h+=u.decode(i,{stream:!0})},"onPartData"),m=c(i=>{d.push(i)},"appendToFile"),r=c(()=>{const i=new node.File(d,a,{type:e});b.append(H,i)},"appendFileToFormData"),P=c(()=>{b.append(H,h)},"appendEntryToFormData"),u=new TextDecoder("utf-8");u.decode(),n.onPartBegin=function(){n.onPartData=g,n.onPartEnd=P,E="",l="",h="",H="",e="",a=null,d.length=0},n.onHeaderField=function(i){E+=u.decode(i,{stream:!0})},n.onHeaderValue=function(i){l+=u.decode(i,{stream:!0})},n.onHeaderEnd=function(){if(l+=u.decode(),E=E.toLowerCase(),E==="content-disposition"){const i=l.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);i&&(H=i[2]||i[3]||""),a=_fileName(l),a&&(n.onPartData=m,n.onPartEnd=r)}else E==="content-type"&&(e=l);l="",E=""};for await(const i of R)n.write(i);return n.end(),b}c(toFormData,"toFormData"),exports.toFormData=toFormData; diff --git a/node_modules/node-fetch-native-with-agent/dist/chunks/multipart-parser.mjs b/node_modules/node-fetch-native-with-agent/dist/chunks/multipart-parser.mjs new file mode 100644 index 0000000..7ca06c8 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/chunks/multipart-parser.mjs @@ -0,0 +1,2 @@ +var B=Object.defineProperty;var E=(u,a)=>B(u,"name",{value:a,configurable:!0});import"node:fs";import"node:path";import{FormData as V,File as Y}from"../node.mjs";import"node:http";import"node:https";import"node:zlib";import"node:stream";import"node:buffer";import"node:util";import"../shared/node-fetch-native-with-agent.1a4a356d.mjs";import"node:url";import"node:net";let D=0;const t={START_BOUNDARY:D++,HEADER_FIELD_START:D++,HEADER_FIELD:D++,HEADER_VALUE_START:D++,HEADER_VALUE:D++,HEADER_VALUE_ALMOST_DONE:D++,HEADERS_ALMOST_DONE:D++,PART_DATA_START:D++,PART_DATA:D++,END:D++};let w=1;const R={PART_BOUNDARY:w,LAST_BOUNDARY:w*=2},g=10,N=13,x=32,P=45,C=58,I=97,M=122,$=E(u=>u|32,"lower"),m=E(()=>{},"noop"),F=class F{constructor(a){this.index=0,this.flags=0,this.onHeaderEnd=m,this.onHeaderField=m,this.onHeadersEnd=m,this.onHeaderValue=m,this.onPartBegin=m,this.onPartData=m,this.onPartEnd=m,this.boundaryChars={},a=`\r +--`+a;const n=new Uint8Array(a.length);for(let r=0;r{this[h+"Mark"]=n},"mark"),s=E(h=>{delete this[h+"Mark"]},"clear"),T=E((h,S,_,U)=>{(S===void 0||S!==_)&&this[h](U&&U.subarray(S,_))},"callback"),b=E((h,S)=>{const _=h+"Mark";_ in this&&(S?(T(h,this[_],n,a),delete this[_]):(T(h,this[_],a.length,a),this[_]=0))},"dataCallback");for(n=0;nM)return;break;case t.HEADER_VALUE_START:if(o===x)break;f("onHeaderValue"),i=t.HEADER_VALUE;case t.HEADER_VALUE:o===N&&(b("onHeaderValue",!0),T("onHeaderEnd"),i=t.HEADER_VALUE_ALMOST_DONE);break;case t.HEADER_VALUE_ALMOST_DONE:if(o!==g)return;i=t.HEADER_FIELD_START;break;case t.HEADERS_ALMOST_DONE:if(o!==g)return;T("onHeadersEnd"),i=t.PART_DATA_START;break;case t.PART_DATA_START:i=t.PART_DATA,f("onPartData");case t.PART_DATA:if(d=e,e===0){for(n+=O;n0)l[e-1]=o;else if(d>0){const h=new Uint8Array(l.buffer,l.byteOffset,l.byteLength);T("onPartData",0,d,h),d=0,f("onPartData"),n--}break;case t.END:break;default:throw new Error(`Unexpected state entered: ${i}`)}b("onHeaderField"),b("onHeaderValue"),b("onPartData"),this.index=e,this.state=i,this.flags=A}end(){if(this.state===t.HEADER_FIELD_START&&this.index===0||this.state===t.PART_DATA&&this.index===this.boundary.length)this.onPartEnd();else if(this.state!==t.END)throw new Error("MultipartParser.end(): stream ended unexpectedly")}};E(F,"MultipartParser");let k=F;function v(u){const a=u.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);if(!a)return;const n=a[2]||a[3]||"";let r=n.slice(n.lastIndexOf("\\")+1);return r=r.replace(/%22/g,'"'),r=r.replace(/&#(\d{4});/g,(d,l)=>String.fromCharCode(l)),r}E(v,"_fileName");async function Z(u,a){if(!/multipart/i.test(a))throw new TypeError("Failed to fetch");const n=a.match(/boundary=(?:"([^"]+)"|([^;]+))/i);if(!n)throw new TypeError("no or bad content-type header, no multipart boundary");const r=new k(n[1]||n[2]);let d,l,c,p,e,i;const A=[],H=new V,O=E(s=>{c+=f.decode(s,{stream:!0})},"onPartData"),y=E(s=>{A.push(s)},"appendToFile"),o=E(()=>{const s=new Y(A,i,{type:e});H.append(p,s)},"appendFileToFormData"),L=E(()=>{H.append(p,c)},"appendEntryToFormData"),f=new TextDecoder("utf-8");f.decode(),r.onPartBegin=function(){r.onPartData=O,r.onPartEnd=L,d="",l="",c="",p="",e="",i=null,A.length=0},r.onHeaderField=function(s){d+=f.decode(s,{stream:!0})},r.onHeaderValue=function(s){l+=f.decode(s,{stream:!0})},r.onHeaderEnd=function(){if(l+=f.decode(),d=d.toLowerCase(),d==="content-disposition"){const s=l.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);s&&(p=s[2]||s[3]||""),i=v(l),i&&(r.onPartData=y,r.onPartEnd=o)}else d==="content-type"&&(e=l);l="",d=""};for await(const s of u)r.write(s);return r.end(),H}E(Z,"toFormData");export{Z as toFormData}; diff --git a/node_modules/node-fetch-native-with-agent/dist/index.cjs b/node_modules/node-fetch-native-with-agent/dist/index.cjs new file mode 100644 index 0000000..db54d8f --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/index.cjs @@ -0,0 +1 @@ +"use strict";var i=Object.defineProperty;var l=(r,t)=>i(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0});const node=require("./node.cjs");require("node:http"),require("node:https"),require("node:zlib"),require("node:stream"),require("node:buffer"),require("node:util"),require("./shared/node-fetch-native-with-agent.61758d11.cjs"),require("node:url"),require("node:net"),require("node:fs"),require("node:path");var s=Object.defineProperty,e=l((r,t)=>s(r,"name",{value:t,configurable:!0}),"e");const o=!!globalThis.process?.env?.FORCE_NODE_FETCH;function p(){return!o&&globalThis.fetch?globalThis.fetch:node.fetch}l(p,"p"),e(p,"_getFetch");const fetch=p(),Blob=!o&&globalThis.Blob||node.Blob,File=!o&&globalThis.File||node.File,FormData=!o&&globalThis.FormData||node.FormData,Headers=!o&&globalThis.Headers||node.Headers,Request=!o&&globalThis.Request||node.Request,Response=!o&&globalThis.Response||node.Response,AbortController=!o&&globalThis.AbortController||node.AbortController;exports.AbortError=node.AbortError,exports.FetchError=node.FetchError,exports.blobFrom=node.blobFrom,exports.blobFromSync=node.blobFromSync,exports.fileFrom=node.fileFrom,exports.fileFromSync=node.fileFromSync,exports.isRedirect=node.isRedirect,exports.AbortController=AbortController,exports.Blob=Blob,exports.File=File,exports.FormData=FormData,exports.Headers=Headers,exports.Request=Request,exports.Response=Response,exports.default=fetch,exports.fetch=fetch; diff --git a/node_modules/node-fetch-native-with-agent/dist/index.mjs b/node_modules/node-fetch-native-with-agent/dist/index.mjs new file mode 100644 index 0000000..a608ef3 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/index.mjs @@ -0,0 +1 @@ +var a=Object.defineProperty;var t=(e,r)=>a(e,"name",{value:r,configurable:!0});import{Blob as i,File as b,FormData as m,Headers as p,Request as n,Response as c,AbortController as h,fetch as F}from"./node.mjs";export{AbortError,FetchError,blobFrom,blobFromSync,fileFrom,fileFromSync,isRedirect}from"./node.mjs";import"node:http";import"node:https";import"node:zlib";import"node:stream";import"node:buffer";import"node:util";import"./shared/node-fetch-native-with-agent.1a4a356d.mjs";import"node:url";import"node:net";import"node:fs";import"node:path";var f=Object.defineProperty,g=t((e,r)=>f(e,"name",{value:r,configurable:!0}),"e");const o=!!globalThis.process?.env?.FORCE_NODE_FETCH;function l(){return!o&&globalThis.fetch?globalThis.fetch:F}t(l,"p"),g(l,"_getFetch");const s=l(),T=!o&&globalThis.Blob||i,R=!o&&globalThis.File||b,u=!o&&globalThis.FormData||m,d=!o&&globalThis.Headers||p,$=!o&&globalThis.Request||n,C=!o&&globalThis.Response||c,A=!o&&globalThis.AbortController||h;export{A as AbortController,T as Blob,R as File,u as FormData,d as Headers,$ as Request,C as Response,s as default,s as fetch}; diff --git a/node_modules/node-fetch-native-with-agent/dist/native.cjs b/node_modules/node-fetch-native-with-agent/dist/native.cjs new file mode 100644 index 0000000..02c2fbd --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/native.cjs @@ -0,0 +1 @@ +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const Blob=globalThis.Blob,File=globalThis.File,FormData=globalThis.FormData,Headers=globalThis.Headers,Request=globalThis.Request,Response=globalThis.Response,AbortController=globalThis.AbortController,fetch=globalThis.fetch||(()=>{throw new Error("[node-fetch-native] Failed to fetch: `globalThis.fetch` is not available!")});exports.AbortController=AbortController,exports.Blob=Blob,exports.File=File,exports.FormData=FormData,exports.Headers=Headers,exports.Request=Request,exports.Response=Response,exports.default=fetch,exports.fetch=fetch; diff --git a/node_modules/node-fetch-native-with-agent/dist/native.mjs b/node_modules/node-fetch-native-with-agent/dist/native.mjs new file mode 100644 index 0000000..fda9bef --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/native.mjs @@ -0,0 +1 @@ +const e=globalThis.Blob,o=globalThis.File,a=globalThis.FormData,s=globalThis.Headers,t=globalThis.Request,h=globalThis.Response,i=globalThis.AbortController,l=globalThis.fetch||(()=>{throw new Error("[node-fetch-native] Failed to fetch: `globalThis.fetch` is not available!")});export{i as AbortController,e as Blob,o as File,a as FormData,s as Headers,t as Request,h as Response,l as default,l as fetch}; diff --git a/node_modules/node-fetch-native-with-agent/dist/node.cjs b/node_modules/node-fetch-native-with-agent/dist/node.cjs new file mode 100644 index 0000000..6b3c403 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/node.cjs @@ -0,0 +1,19 @@ +"use strict";var ms=Object.defineProperty;var u=(c,l)=>ms(c,"name",{value:l,configurable:!0});var Po=(c,l,d)=>{if(!l.has(c))throw TypeError("Cannot "+d)};var D=(c,l,d)=>(Po(c,l,"read from private field"),d?d.call(c):l.get(c)),ye=(c,l,d)=>{if(l.has(c))throw TypeError("Cannot add the same private member more than once");l instanceof WeakSet?l.add(c):l.set(c,d)},ne=(c,l,d,y)=>(Po(c,l,"write to private field"),y?y.call(c,d):l.set(c,d),d);var Pe,bt,ot,Zt,Ue,mt,yt,gt,oe,_t,Me,xe,St;Object.defineProperty(exports,"__esModule",{value:!0});const http=require("node:http"),https=require("node:https"),zlib=require("node:zlib"),Stream=require("node:stream"),require$$6=require("node:buffer"),require$$0=require("node:util"),_commonjsHelpers=require("./shared/node-fetch-native-with-agent.61758d11.cjs"),require$$1=require("node:url"),require$$4=require("node:net"),node_fs=require("node:fs"),node_path=require("node:path");function _interopDefaultCompat(c){return c&&typeof c=="object"&&"default"in c?c.default:c}u(_interopDefaultCompat,"_interopDefaultCompat");const http__default=_interopDefaultCompat(http),https__default=_interopDefaultCompat(https),zlib__default=_interopDefaultCompat(zlib),Stream__default=_interopDefaultCompat(Stream);function dataUriToBuffer(c){if(!/^data:/i.test(c))throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")');c=c.replace(/\r?\n/g,"");const l=c.indexOf(",");if(l===-1||l<=4)throw new TypeError("malformed data: URI");const d=c.substring(5,l).split(";");let y="",b=!1;const R=d[0]||"text/plain";let w=R;for(let F=1;Fo(n))}u(k,"promiseResolvedWith");function T(n){return B(n)}u(T,"promiseRejectedWith");function $(n,o,a){return I.call(n,o,a)}u($,"PerformPromiseThen");function E(n,o,a){$($(n,o,a),void 0,R)}u(E,"uponPromise");function K(n,o){E(n,o)}u(K,"uponFulfillment");function U(n,o){E(n,void 0,o)}u(U,"uponRejection");function N(n,o,a){return $(n,o,a)}u(N,"transformPromiseWith");function J(n){$(n,void 0,R)}u(J,"setPromiseIsHandledToTrue");let ge=u(n=>{if(typeof queueMicrotask=="function")ge=queueMicrotask;else{const o=k(void 0);ge=u(a=>$(o,a),"_queueMicrotask")}return ge(n)},"_queueMicrotask");function M(n,o,a){if(typeof n!="function")throw new TypeError("Argument is not a function");return Function.prototype.apply.call(n,o,a)}u(M,"reflectCall");function H(n,o,a){try{return k(M(n,o,a))}catch(p){return T(p)}}u(H,"promiseCall");const G=16384,Dr=class Dr{constructor(){this._cursor=0,this._size=0,this._front={_elements:[],_next:void 0},this._back=this._front,this._cursor=0,this._size=0}get length(){return this._size}push(o){const a=this._back;let p=a;a._elements.length===G-1&&(p={_elements:[],_next:void 0}),a._elements.push(o),p!==a&&(this._back=p,a._next=p),++this._size}shift(){const o=this._front;let a=o;const p=this._cursor;let g=p+1;const _=o._elements,S=_[p];return g===G&&(a=o._next,g=0),--this._size,this._cursor=g,o!==a&&(this._front=a),_[p]=void 0,S}forEach(o){let a=this._cursor,p=this._front,g=p._elements;for(;(a!==g.length||p._next!==void 0)&&!(a===g.length&&(p=p._next,g=p._elements,a=0,g.length===0));)o(g[a]),++a}peek(){const o=this._front,a=this._cursor;return o._elements[a]}};u(Dr,"SimpleQueue");let Q=Dr;const wt=Symbol("[[AbortSteps]]"),un=Symbol("[[ErrorSteps]]"),er=Symbol("[[CancelSteps]]"),tr=Symbol("[[PullSteps]]"),rr=Symbol("[[ReleaseSteps]]");function ln(n,o){n._ownerReadableStream=o,o._reader=n,o._state==="readable"?or(n):o._state==="closed"?vo(n):fn(n,o._storedError)}u(ln,"ReadableStreamReaderGenericInitialize");function nr(n,o){const a=n._ownerReadableStream;return le(a,o)}u(nr,"ReadableStreamReaderGenericCancel");function _e(n){const o=n._ownerReadableStream;o._state==="readable"?ir(n,new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")):Eo(n,new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")),o._readableStreamController[rr](),o._reader=void 0,n._ownerReadableStream=void 0}u(_e,"ReadableStreamReaderGenericRelease");function Rt(n){return new TypeError("Cannot "+n+" a stream using a released reader")}u(Rt,"readerLockException");function or(n){n._closedPromise=F((o,a)=>{n._closedPromise_resolve=o,n._closedPromise_reject=a})}u(or,"defaultReaderClosedPromiseInitialize");function fn(n,o){or(n),ir(n,o)}u(fn,"defaultReaderClosedPromiseInitializeAsRejected");function vo(n){or(n),cn(n)}u(vo,"defaultReaderClosedPromiseInitializeAsResolved");function ir(n,o){n._closedPromise_reject!==void 0&&(J(n._closedPromise),n._closedPromise_reject(o),n._closedPromise_resolve=void 0,n._closedPromise_reject=void 0)}u(ir,"defaultReaderClosedPromiseReject");function Eo(n,o){fn(n,o)}u(Eo,"defaultReaderClosedPromiseResetToRejected");function cn(n){n._closedPromise_resolve!==void 0&&(n._closedPromise_resolve(void 0),n._closedPromise_resolve=void 0,n._closedPromise_reject=void 0)}u(cn,"defaultReaderClosedPromiseResolve");const dn=Number.isFinite||function(n){return typeof n=="number"&&isFinite(n)},Ao=Math.trunc||function(n){return n<0?Math.ceil(n):Math.floor(n)};function Bo(n){return typeof n=="object"||typeof n=="function"}u(Bo,"isDictionary");function ce(n,o){if(n!==void 0&&!Bo(n))throw new TypeError(`${o} is not an object.`)}u(ce,"assertDictionary");function ee(n,o){if(typeof n!="function")throw new TypeError(`${o} is not a function.`)}u(ee,"assertFunction");function qo(n){return typeof n=="object"&&n!==null||typeof n=="function"}u(qo,"isObject");function hn(n,o){if(!qo(n))throw new TypeError(`${o} is not an object.`)}u(hn,"assertObject");function Se(n,o,a){if(n===void 0)throw new TypeError(`Parameter ${o} is required in '${a}'.`)}u(Se,"assertRequiredArgument");function sr(n,o,a){if(n===void 0)throw new TypeError(`${o} is required in '${a}'.`)}u(sr,"assertRequiredField");function ar(n){return Number(n)}u(ar,"convertUnrestrictedDouble");function pn(n){return n===0?0:n}u(pn,"censorNegativeZero");function ko(n){return pn(Ao(n))}u(ko,"integerPart");function ur(n,o){const p=Number.MAX_SAFE_INTEGER;let g=Number(n);if(g=pn(g),!dn(g))throw new TypeError(`${o} is not a finite number`);if(g=ko(g),g<0||g>p)throw new TypeError(`${o} is outside the accepted range of 0 to ${p}, inclusive`);return!dn(g)||g===0?0:g}u(ur,"convertUnsignedLongLongWithEnforceRange");function lr(n,o){if(!qe(n))throw new TypeError(`${o} is not a ReadableStream.`)}u(lr,"assertReadableStream");function Ne(n){return new de(n)}u(Ne,"AcquireReadableStreamDefaultReader");function bn(n,o){n._reader._readRequests.push(o)}u(bn,"ReadableStreamAddReadRequest");function fr(n,o,a){const g=n._reader._readRequests.shift();a?g._closeSteps():g._chunkSteps(o)}u(fr,"ReadableStreamFulfillReadRequest");function Tt(n){return n._reader._readRequests.length}u(Tt,"ReadableStreamGetNumReadRequests");function mn(n){const o=n._reader;return!(o===void 0||!ve(o))}u(mn,"ReadableStreamHasDefaultReader");const Mr=class Mr{constructor(o){if(Se(o,1,"ReadableStreamDefaultReader"),lr(o,"First parameter"),ke(o))throw new TypeError("This stream has already been locked for exclusive reading by another reader");ln(this,o),this._readRequests=new Q}get closed(){return ve(this)?this._closedPromise:T(Ct("closed"))}cancel(o=void 0){return ve(this)?this._ownerReadableStream===void 0?T(Rt("cancel")):nr(this,o):T(Ct("cancel"))}read(){if(!ve(this))return T(Ct("read"));if(this._ownerReadableStream===void 0)return T(Rt("read from"));let o,a;const p=F((_,S)=>{o=_,a=S});return it(this,{_chunkSteps:_=>o({value:_,done:!1}),_closeSteps:()=>o({value:void 0,done:!0}),_errorSteps:_=>a(_)}),p}releaseLock(){if(!ve(this))throw Ct("releaseLock");this._ownerReadableStream!==void 0&&Wo(this)}};u(Mr,"ReadableStreamDefaultReader");let de=Mr;Object.defineProperties(de.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),w(de.prototype.cancel,"cancel"),w(de.prototype.read,"read"),w(de.prototype.releaseLock,"releaseLock"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(de.prototype,Symbol.toStringTag,{value:"ReadableStreamDefaultReader",configurable:!0});function ve(n){return!b(n)||!Object.prototype.hasOwnProperty.call(n,"_readRequests")?!1:n instanceof de}u(ve,"IsReadableStreamDefaultReader");function it(n,o){const a=n._ownerReadableStream;a._disturbed=!0,a._state==="closed"?o._closeSteps():a._state==="errored"?o._errorSteps(a._storedError):a._readableStreamController[tr](o)}u(it,"ReadableStreamDefaultReaderRead");function Wo(n){_e(n);const o=new TypeError("Reader was released");yn(n,o)}u(Wo,"ReadableStreamDefaultReaderRelease");function yn(n,o){const a=n._readRequests;n._readRequests=new Q,a.forEach(p=>{p._errorSteps(o)})}u(yn,"ReadableStreamDefaultReaderErrorReadRequests");function Ct(n){return new TypeError(`ReadableStreamDefaultReader.prototype.${n} can only be used on a ReadableStreamDefaultReader`)}u(Ct,"defaultReaderBrandCheckException");const Oo=Object.getPrototypeOf(Object.getPrototypeOf(async function*(){}).prototype),xr=class xr{constructor(o,a){this._ongoingPromise=void 0,this._isFinished=!1,this._reader=o,this._preventCancel=a}next(){const o=u(()=>this._nextSteps(),"nextSteps");return this._ongoingPromise=this._ongoingPromise?N(this._ongoingPromise,o,o):o(),this._ongoingPromise}return(o){const a=u(()=>this._returnSteps(o),"returnSteps");return this._ongoingPromise?N(this._ongoingPromise,a,a):a()}_nextSteps(){if(this._isFinished)return Promise.resolve({value:void 0,done:!0});const o=this._reader;let a,p;const g=F((S,C)=>{a=S,p=C});return it(o,{_chunkSteps:S=>{this._ongoingPromise=void 0,ge(()=>a({value:S,done:!1}))},_closeSteps:()=>{this._ongoingPromise=void 0,this._isFinished=!0,_e(o),a({value:void 0,done:!0})},_errorSteps:S=>{this._ongoingPromise=void 0,this._isFinished=!0,_e(o),p(S)}}),g}_returnSteps(o){if(this._isFinished)return Promise.resolve({value:o,done:!0});this._isFinished=!0;const a=this._reader;if(!this._preventCancel){const p=nr(a,o);return _e(a),N(p,()=>({value:o,done:!0}))}return _e(a),k({value:o,done:!0})}};u(xr,"ReadableStreamAsyncIteratorImpl");let Pt=xr;const gn={next(){return _n(this)?this._asyncIteratorImpl.next():T(Sn("next"))},return(n){return _n(this)?this._asyncIteratorImpl.return(n):T(Sn("return"))}};Object.setPrototypeOf(gn,Oo);function zo(n,o){const a=Ne(n),p=new Pt(a,o),g=Object.create(gn);return g._asyncIteratorImpl=p,g}u(zo,"AcquireReadableStreamAsyncIterator");function _n(n){if(!b(n)||!Object.prototype.hasOwnProperty.call(n,"_asyncIteratorImpl"))return!1;try{return n._asyncIteratorImpl instanceof Pt}catch{return!1}}u(_n,"IsReadableStreamAsyncIterator");function Sn(n){return new TypeError(`ReadableStreamAsyncIterator.${n} can only be used on a ReadableSteamAsyncIterator`)}u(Sn,"streamAsyncIteratorBrandCheckException");const wn=Number.isNaN||function(n){return n!==n};var cr,dr,hr;function st(n){return n.slice()}u(st,"CreateArrayFromList");function Rn(n,o,a,p,g){new Uint8Array(n).set(new Uint8Array(a,p,g),o)}u(Rn,"CopyDataBlockBytes");let we=u(n=>(typeof n.transfer=="function"?we=u(o=>o.transfer(),"TransferArrayBuffer"):typeof structuredClone=="function"?we=u(o=>structuredClone(o,{transfer:[o]}),"TransferArrayBuffer"):we=u(o=>o,"TransferArrayBuffer"),we(n)),"TransferArrayBuffer"),Ee=u(n=>(typeof n.detached=="boolean"?Ee=u(o=>o.detached,"IsDetachedBuffer"):Ee=u(o=>o.byteLength===0,"IsDetachedBuffer"),Ee(n)),"IsDetachedBuffer");function Tn(n,o,a){if(n.slice)return n.slice(o,a);const p=a-o,g=new ArrayBuffer(p);return Rn(g,0,n,o,p),g}u(Tn,"ArrayBufferSlice");function vt(n,o){const a=n[o];if(a!=null){if(typeof a!="function")throw new TypeError(`${String(o)} is not a function`);return a}}u(vt,"GetMethod");function Fo(n){const o={[Symbol.iterator]:()=>n.iterator},a=async function*(){return yield*o}(),p=a.next;return{iterator:a,nextMethod:p,done:!1}}u(Fo,"CreateAsyncFromSyncIterator");const pr=(hr=(cr=Symbol.asyncIterator)!==null&&cr!==void 0?cr:(dr=Symbol.for)===null||dr===void 0?void 0:dr.call(Symbol,"Symbol.asyncIterator"))!==null&&hr!==void 0?hr:"@@asyncIterator";function Cn(n,o="sync",a){if(a===void 0)if(o==="async"){if(a=vt(n,pr),a===void 0){const _=vt(n,Symbol.iterator),S=Cn(n,"sync",_);return Fo(S)}}else a=vt(n,Symbol.iterator);if(a===void 0)throw new TypeError("The object is not iterable");const p=M(a,n,[]);if(!b(p))throw new TypeError("The iterator method must return an object");const g=p.next;return{iterator:p,nextMethod:g,done:!1}}u(Cn,"GetIterator");function Io(n){const o=M(n.nextMethod,n.iterator,[]);if(!b(o))throw new TypeError("The iterator.next() method must return an object");return o}u(Io,"IteratorNext");function jo(n){return!!n.done}u(jo,"IteratorComplete");function Lo(n){return n.value}u(Lo,"IteratorValue");function $o(n){return!(typeof n!="number"||wn(n)||n<0)}u($o,"IsNonNegativeNumber");function Pn(n){const o=Tn(n.buffer,n.byteOffset,n.byteOffset+n.byteLength);return new Uint8Array(o)}u(Pn,"CloneAsUint8Array");function br(n){const o=n._queue.shift();return n._queueTotalSize-=o.size,n._queueTotalSize<0&&(n._queueTotalSize=0),o.value}u(br,"DequeueValue");function mr(n,o,a){if(!$o(a)||a===1/0)throw new RangeError("Size must be a finite, non-NaN, non-negative number.");n._queue.push({value:o,size:a}),n._queueTotalSize+=a}u(mr,"EnqueueValueWithSize");function Do(n){return n._queue.peek().value}u(Do,"PeekQueueValue");function Ae(n){n._queue=new Q,n._queueTotalSize=0}u(Ae,"ResetQueue");function vn(n){return n===DataView}u(vn,"isDataViewConstructor");function Mo(n){return vn(n.constructor)}u(Mo,"isDataView");function xo(n){return vn(n)?1:n.BYTES_PER_ELEMENT}u(xo,"arrayBufferViewElementSize");const Ur=class Ur{constructor(){throw new TypeError("Illegal constructor")}get view(){if(!yr(this))throw Rr("view");return this._view}respond(o){if(!yr(this))throw Rr("respond");if(Se(o,1,"respond"),o=ur(o,"First parameter"),this._associatedReadableByteStreamController===void 0)throw new TypeError("This BYOB request has been invalidated");if(Ee(this._view.buffer))throw new TypeError("The BYOB request's buffer has been detached and so cannot be used as a response");qt(this._associatedReadableByteStreamController,o)}respondWithNewView(o){if(!yr(this))throw Rr("respondWithNewView");if(Se(o,1,"respondWithNewView"),!ArrayBuffer.isView(o))throw new TypeError("You can only respond with array buffer views");if(this._associatedReadableByteStreamController===void 0)throw new TypeError("This BYOB request has been invalidated");if(Ee(o.buffer))throw new TypeError("The given view's buffer has been detached and so cannot be used as a response");kt(this._associatedReadableByteStreamController,o)}};u(Ur,"ReadableStreamBYOBRequest");let Re=Ur;Object.defineProperties(Re.prototype,{respond:{enumerable:!0},respondWithNewView:{enumerable:!0},view:{enumerable:!0}}),w(Re.prototype.respond,"respond"),w(Re.prototype.respondWithNewView,"respondWithNewView"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(Re.prototype,Symbol.toStringTag,{value:"ReadableStreamBYOBRequest",configurable:!0});const Nr=class Nr{constructor(){throw new TypeError("Illegal constructor")}get byobRequest(){if(!Oe(this))throw ut("byobRequest");return wr(this)}get desiredSize(){if(!Oe(this))throw ut("desiredSize");return In(this)}close(){if(!Oe(this))throw ut("close");if(this._closeRequested)throw new TypeError("The stream has already been closed; do not close it again!");const o=this._controlledReadableByteStream._state;if(o!=="readable")throw new TypeError(`The stream (in ${o} state) is not in the readable state and cannot be closed`);at(this)}enqueue(o){if(!Oe(this))throw ut("enqueue");if(Se(o,1,"enqueue"),!ArrayBuffer.isView(o))throw new TypeError("chunk must be an array buffer view");if(o.byteLength===0)throw new TypeError("chunk must have non-zero byteLength");if(o.buffer.byteLength===0)throw new TypeError("chunk's buffer must have non-zero byteLength");if(this._closeRequested)throw new TypeError("stream is closed or draining");const a=this._controlledReadableByteStream._state;if(a!=="readable")throw new TypeError(`The stream (in ${a} state) is not in the readable state and cannot be enqueued to`);Bt(this,o)}error(o=void 0){if(!Oe(this))throw ut("error");te(this,o)}[er](o){En(this),Ae(this);const a=this._cancelAlgorithm(o);return At(this),a}[tr](o){const a=this._controlledReadableByteStream;if(this._queueTotalSize>0){Fn(this,o);return}const p=this._autoAllocateChunkSize;if(p!==void 0){let g;try{g=new ArrayBuffer(p)}catch(S){o._errorSteps(S);return}const _={buffer:g,bufferByteLength:p,byteOffset:0,byteLength:p,bytesFilled:0,minimumFill:1,elementSize:1,viewConstructor:Uint8Array,readerType:"default"};this._pendingPullIntos.push(_)}bn(a,o),ze(this)}[rr](){if(this._pendingPullIntos.length>0){const o=this._pendingPullIntos.peek();o.readerType="none",this._pendingPullIntos=new Q,this._pendingPullIntos.push(o)}}};u(Nr,"ReadableByteStreamController");let ie=Nr;Object.defineProperties(ie.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},byobRequest:{enumerable:!0},desiredSize:{enumerable:!0}}),w(ie.prototype.close,"close"),w(ie.prototype.enqueue,"enqueue"),w(ie.prototype.error,"error"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(ie.prototype,Symbol.toStringTag,{value:"ReadableByteStreamController",configurable:!0});function Oe(n){return!b(n)||!Object.prototype.hasOwnProperty.call(n,"_controlledReadableByteStream")?!1:n instanceof ie}u(Oe,"IsReadableByteStreamController");function yr(n){return!b(n)||!Object.prototype.hasOwnProperty.call(n,"_associatedReadableByteStreamController")?!1:n instanceof Re}u(yr,"IsReadableStreamBYOBRequest");function ze(n){if(!Qo(n))return;if(n._pulling){n._pullAgain=!0;return}n._pulling=!0;const a=n._pullAlgorithm();E(a,()=>(n._pulling=!1,n._pullAgain&&(n._pullAgain=!1,ze(n)),null),p=>(te(n,p),null))}u(ze,"ReadableByteStreamControllerCallPullIfNeeded");function En(n){_r(n),n._pendingPullIntos=new Q}u(En,"ReadableByteStreamControllerClearPendingPullIntos");function gr(n,o){let a=!1;n._state==="closed"&&(a=!0);const p=An(o);o.readerType==="default"?fr(n,p,a):Xo(n,p,a)}u(gr,"ReadableByteStreamControllerCommitPullIntoDescriptor");function An(n){const o=n.bytesFilled,a=n.elementSize;return new n.viewConstructor(n.buffer,n.byteOffset,o/a)}u(An,"ReadableByteStreamControllerConvertPullIntoDescriptor");function Et(n,o,a,p){n._queue.push({buffer:o,byteOffset:a,byteLength:p}),n._queueTotalSize+=p}u(Et,"ReadableByteStreamControllerEnqueueChunkToQueue");function Bn(n,o,a,p){let g;try{g=Tn(o,a,a+p)}catch(_){throw te(n,_),_}Et(n,g,0,p)}u(Bn,"ReadableByteStreamControllerEnqueueClonedChunkToQueue");function qn(n,o){o.bytesFilled>0&&Bn(n,o.buffer,o.byteOffset,o.bytesFilled),He(n)}u(qn,"ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue");function kn(n,o){const a=Math.min(n._queueTotalSize,o.byteLength-o.bytesFilled),p=o.bytesFilled+a;let g=a,_=!1;const S=p%o.elementSize,C=p-S;C>=o.minimumFill&&(g=C-o.bytesFilled,_=!0);const q=n._queue;for(;g>0;){const P=q.peek(),W=Math.min(g,P.byteLength),O=o.byteOffset+o.bytesFilled;Rn(o.buffer,O,P.buffer,P.byteOffset,W),P.byteLength===W?q.shift():(P.byteOffset+=W,P.byteLength-=W),n._queueTotalSize-=W,Wn(n,W,o),g-=W}return _}u(kn,"ReadableByteStreamControllerFillPullIntoDescriptorFromQueue");function Wn(n,o,a){a.bytesFilled+=o}u(Wn,"ReadableByteStreamControllerFillHeadPullIntoDescriptor");function On(n){n._queueTotalSize===0&&n._closeRequested?(At(n),pt(n._controlledReadableByteStream)):ze(n)}u(On,"ReadableByteStreamControllerHandleQueueDrain");function _r(n){n._byobRequest!==null&&(n._byobRequest._associatedReadableByteStreamController=void 0,n._byobRequest._view=null,n._byobRequest=null)}u(_r,"ReadableByteStreamControllerInvalidateBYOBRequest");function Sr(n){for(;n._pendingPullIntos.length>0;){if(n._queueTotalSize===0)return;const o=n._pendingPullIntos.peek();kn(n,o)&&(He(n),gr(n._controlledReadableByteStream,o))}}u(Sr,"ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue");function Uo(n){const o=n._controlledReadableByteStream._reader;for(;o._readRequests.length>0;){if(n._queueTotalSize===0)return;const a=o._readRequests.shift();Fn(n,a)}}u(Uo,"ReadableByteStreamControllerProcessReadRequestsUsingQueue");function No(n,o,a,p){const g=n._controlledReadableByteStream,_=o.constructor,S=xo(_),{byteOffset:C,byteLength:q}=o,P=a*S;let W;try{W=we(o.buffer)}catch(j){p._errorSteps(j);return}const O={buffer:W,bufferByteLength:W.byteLength,byteOffset:C,byteLength:q,bytesFilled:0,minimumFill:P,elementSize:S,viewConstructor:_,readerType:"byob"};if(n._pendingPullIntos.length>0){n._pendingPullIntos.push(O),$n(g,p);return}if(g._state==="closed"){const j=new _(O.buffer,O.byteOffset,0);p._closeSteps(j);return}if(n._queueTotalSize>0){if(kn(n,O)){const j=An(O);On(n),p._chunkSteps(j);return}if(n._closeRequested){const j=new TypeError("Insufficient bytes to fill elements in the given buffer");te(n,j),p._errorSteps(j);return}}n._pendingPullIntos.push(O),$n(g,p),ze(n)}u(No,"ReadableByteStreamControllerPullInto");function Ho(n,o){o.readerType==="none"&&He(n);const a=n._controlledReadableByteStream;if(Tr(a))for(;Dn(a)>0;){const p=He(n);gr(a,p)}}u(Ho,"ReadableByteStreamControllerRespondInClosedState");function Vo(n,o,a){if(Wn(n,o,a),a.readerType==="none"){qn(n,a),Sr(n);return}if(a.bytesFilled0){const g=a.byteOffset+a.bytesFilled;Bn(n,a.buffer,g-p,p)}a.bytesFilled-=p,gr(n._controlledReadableByteStream,a),Sr(n)}u(Vo,"ReadableByteStreamControllerRespondInReadableState");function zn(n,o){const a=n._pendingPullIntos.peek();_r(n),n._controlledReadableByteStream._state==="closed"?Ho(n,a):Vo(n,o,a),ze(n)}u(zn,"ReadableByteStreamControllerRespondInternal");function He(n){return n._pendingPullIntos.shift()}u(He,"ReadableByteStreamControllerShiftPendingPullInto");function Qo(n){const o=n._controlledReadableByteStream;return o._state!=="readable"||n._closeRequested||!n._started?!1:!!(mn(o)&&Tt(o)>0||Tr(o)&&Dn(o)>0||In(n)>0)}u(Qo,"ReadableByteStreamControllerShouldCallPull");function At(n){n._pullAlgorithm=void 0,n._cancelAlgorithm=void 0}u(At,"ReadableByteStreamControllerClearAlgorithms");function at(n){const o=n._controlledReadableByteStream;if(!(n._closeRequested||o._state!=="readable")){if(n._queueTotalSize>0){n._closeRequested=!0;return}if(n._pendingPullIntos.length>0){const a=n._pendingPullIntos.peek();if(a.bytesFilled%a.elementSize!==0){const p=new TypeError("Insufficient bytes to fill elements in the given buffer");throw te(n,p),p}}At(n),pt(o)}}u(at,"ReadableByteStreamControllerClose");function Bt(n,o){const a=n._controlledReadableByteStream;if(n._closeRequested||a._state!=="readable")return;const{buffer:p,byteOffset:g,byteLength:_}=o;if(Ee(p))throw new TypeError("chunk's buffer is detached and so cannot be enqueued");const S=we(p);if(n._pendingPullIntos.length>0){const C=n._pendingPullIntos.peek();if(Ee(C.buffer))throw new TypeError("The BYOB request's buffer has been detached and so cannot be filled with an enqueued chunk");_r(n),C.buffer=we(C.buffer),C.readerType==="none"&&qn(n,C)}if(mn(a))if(Uo(n),Tt(a)===0)Et(n,S,g,_);else{n._pendingPullIntos.length>0&&He(n);const C=new Uint8Array(S,g,_);fr(a,C,!1)}else Tr(a)?(Et(n,S,g,_),Sr(n)):Et(n,S,g,_);ze(n)}u(Bt,"ReadableByteStreamControllerEnqueue");function te(n,o){const a=n._controlledReadableByteStream;a._state==="readable"&&(En(n),Ae(n),At(n),fo(a,o))}u(te,"ReadableByteStreamControllerError");function Fn(n,o){const a=n._queue.shift();n._queueTotalSize-=a.byteLength,On(n);const p=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);o._chunkSteps(p)}u(Fn,"ReadableByteStreamControllerFillReadRequestFromQueue");function wr(n){if(n._byobRequest===null&&n._pendingPullIntos.length>0){const o=n._pendingPullIntos.peek(),a=new Uint8Array(o.buffer,o.byteOffset+o.bytesFilled,o.byteLength-o.bytesFilled),p=Object.create(Re.prototype);Yo(p,n,a),n._byobRequest=p}return n._byobRequest}u(wr,"ReadableByteStreamControllerGetBYOBRequest");function In(n){const o=n._controlledReadableByteStream._state;return o==="errored"?null:o==="closed"?0:n._strategyHWM-n._queueTotalSize}u(In,"ReadableByteStreamControllerGetDesiredSize");function qt(n,o){const a=n._pendingPullIntos.peek();if(n._controlledReadableByteStream._state==="closed"){if(o!==0)throw new TypeError("bytesWritten must be 0 when calling respond() on a closed stream")}else{if(o===0)throw new TypeError("bytesWritten must be greater than 0 when calling respond() on a readable stream");if(a.bytesFilled+o>a.byteLength)throw new RangeError("bytesWritten out of range")}a.buffer=we(a.buffer),zn(n,o)}u(qt,"ReadableByteStreamControllerRespond");function kt(n,o){const a=n._pendingPullIntos.peek();if(n._controlledReadableByteStream._state==="closed"){if(o.byteLength!==0)throw new TypeError("The view's length must be 0 when calling respondWithNewView() on a closed stream")}else if(o.byteLength===0)throw new TypeError("The view's length must be greater than 0 when calling respondWithNewView() on a readable stream");if(a.byteOffset+a.bytesFilled!==o.byteOffset)throw new RangeError("The region specified by view does not match byobRequest");if(a.bufferByteLength!==o.buffer.byteLength)throw new RangeError("The buffer of view has different capacity than byobRequest");if(a.bytesFilled+o.byteLength>a.byteLength)throw new RangeError("The region specified by view is larger than byobRequest");const g=o.byteLength;a.buffer=we(o.buffer),zn(n,g)}u(kt,"ReadableByteStreamControllerRespondWithNewView");function jn(n,o,a,p,g,_,S){o._controlledReadableByteStream=n,o._pullAgain=!1,o._pulling=!1,o._byobRequest=null,o._queue=o._queueTotalSize=void 0,Ae(o),o._closeRequested=!1,o._started=!1,o._strategyHWM=_,o._pullAlgorithm=p,o._cancelAlgorithm=g,o._autoAllocateChunkSize=S,o._pendingPullIntos=new Q,n._readableStreamController=o;const C=a();E(k(C),()=>(o._started=!0,ze(o),null),q=>(te(o,q),null))}u(jn,"SetUpReadableByteStreamController");function Go(n,o,a){const p=Object.create(ie.prototype);let g,_,S;o.start!==void 0?g=u(()=>o.start(p),"startAlgorithm"):g=u(()=>{},"startAlgorithm"),o.pull!==void 0?_=u(()=>o.pull(p),"pullAlgorithm"):_=u(()=>k(void 0),"pullAlgorithm"),o.cancel!==void 0?S=u(q=>o.cancel(q),"cancelAlgorithm"):S=u(()=>k(void 0),"cancelAlgorithm");const C=o.autoAllocateChunkSize;if(C===0)throw new TypeError("autoAllocateChunkSize must be greater than 0");jn(n,p,g,_,S,a,C)}u(Go,"SetUpReadableByteStreamControllerFromUnderlyingSource");function Yo(n,o,a){n._associatedReadableByteStreamController=o,n._view=a}u(Yo,"SetUpReadableStreamBYOBRequest");function Rr(n){return new TypeError(`ReadableStreamBYOBRequest.prototype.${n} can only be used on a ReadableStreamBYOBRequest`)}u(Rr,"byobRequestBrandCheckException");function ut(n){return new TypeError(`ReadableByteStreamController.prototype.${n} can only be used on a ReadableByteStreamController`)}u(ut,"byteStreamControllerBrandCheckException");function Zo(n,o){ce(n,o);const a=n?.mode;return{mode:a===void 0?void 0:Ko(a,`${o} has member 'mode' that`)}}u(Zo,"convertReaderOptions");function Ko(n,o){if(n=`${n}`,n!=="byob")throw new TypeError(`${o} '${n}' is not a valid enumeration value for ReadableStreamReaderMode`);return n}u(Ko,"convertReadableStreamReaderMode");function Jo(n,o){var a;ce(n,o);const p=(a=n?.min)!==null&&a!==void 0?a:1;return{min:ur(p,`${o} has member 'min' that`)}}u(Jo,"convertByobReadOptions");function Ln(n){return new he(n)}u(Ln,"AcquireReadableStreamBYOBReader");function $n(n,o){n._reader._readIntoRequests.push(o)}u($n,"ReadableStreamAddReadIntoRequest");function Xo(n,o,a){const g=n._reader._readIntoRequests.shift();a?g._closeSteps(o):g._chunkSteps(o)}u(Xo,"ReadableStreamFulfillReadIntoRequest");function Dn(n){return n._reader._readIntoRequests.length}u(Dn,"ReadableStreamGetNumReadIntoRequests");function Tr(n){const o=n._reader;return!(o===void 0||!Fe(o))}u(Tr,"ReadableStreamHasBYOBReader");const Hr=class Hr{constructor(o){if(Se(o,1,"ReadableStreamBYOBReader"),lr(o,"First parameter"),ke(o))throw new TypeError("This stream has already been locked for exclusive reading by another reader");if(!Oe(o._readableStreamController))throw new TypeError("Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source");ln(this,o),this._readIntoRequests=new Q}get closed(){return Fe(this)?this._closedPromise:T(Wt("closed"))}cancel(o=void 0){return Fe(this)?this._ownerReadableStream===void 0?T(Rt("cancel")):nr(this,o):T(Wt("cancel"))}read(o,a={}){if(!Fe(this))return T(Wt("read"));if(!ArrayBuffer.isView(o))return T(new TypeError("view must be an array buffer view"));if(o.byteLength===0)return T(new TypeError("view must have non-zero byteLength"));if(o.buffer.byteLength===0)return T(new TypeError("view's buffer must have non-zero byteLength"));if(Ee(o.buffer))return T(new TypeError("view's buffer has been detached"));let p;try{p=Jo(a,"options")}catch(P){return T(P)}const g=p.min;if(g===0)return T(new TypeError("options.min must be greater than 0"));if(Mo(o)){if(g>o.byteLength)return T(new RangeError("options.min must be less than or equal to view's byteLength"))}else if(g>o.length)return T(new RangeError("options.min must be less than or equal to view's length"));if(this._ownerReadableStream===void 0)return T(Rt("read from"));let _,S;const C=F((P,W)=>{_=P,S=W});return Mn(this,o,g,{_chunkSteps:P=>_({value:P,done:!1}),_closeSteps:P=>_({value:P,done:!0}),_errorSteps:P=>S(P)}),C}releaseLock(){if(!Fe(this))throw Wt("releaseLock");this._ownerReadableStream!==void 0&&ei(this)}};u(Hr,"ReadableStreamBYOBReader");let he=Hr;Object.defineProperties(he.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),w(he.prototype.cancel,"cancel"),w(he.prototype.read,"read"),w(he.prototype.releaseLock,"releaseLock"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(he.prototype,Symbol.toStringTag,{value:"ReadableStreamBYOBReader",configurable:!0});function Fe(n){return!b(n)||!Object.prototype.hasOwnProperty.call(n,"_readIntoRequests")?!1:n instanceof he}u(Fe,"IsReadableStreamBYOBReader");function Mn(n,o,a,p){const g=n._ownerReadableStream;g._disturbed=!0,g._state==="errored"?p._errorSteps(g._storedError):No(g._readableStreamController,o,a,p)}u(Mn,"ReadableStreamBYOBReaderRead");function ei(n){_e(n);const o=new TypeError("Reader was released");xn(n,o)}u(ei,"ReadableStreamBYOBReaderRelease");function xn(n,o){const a=n._readIntoRequests;n._readIntoRequests=new Q,a.forEach(p=>{p._errorSteps(o)})}u(xn,"ReadableStreamBYOBReaderErrorReadIntoRequests");function Wt(n){return new TypeError(`ReadableStreamBYOBReader.prototype.${n} can only be used on a ReadableStreamBYOBReader`)}u(Wt,"byobReaderBrandCheckException");function lt(n,o){const{highWaterMark:a}=n;if(a===void 0)return o;if(wn(a)||a<0)throw new RangeError("Invalid highWaterMark");return a}u(lt,"ExtractHighWaterMark");function Ot(n){const{size:o}=n;return o||(()=>1)}u(Ot,"ExtractSizeAlgorithm");function zt(n,o){ce(n,o);const a=n?.highWaterMark,p=n?.size;return{highWaterMark:a===void 0?void 0:ar(a),size:p===void 0?void 0:ti(p,`${o} has member 'size' that`)}}u(zt,"convertQueuingStrategy");function ti(n,o){return ee(n,o),a=>ar(n(a))}u(ti,"convertQueuingStrategySize");function ri(n,o){ce(n,o);const a=n?.abort,p=n?.close,g=n?.start,_=n?.type,S=n?.write;return{abort:a===void 0?void 0:ni(a,n,`${o} has member 'abort' that`),close:p===void 0?void 0:oi(p,n,`${o} has member 'close' that`),start:g===void 0?void 0:ii(g,n,`${o} has member 'start' that`),write:S===void 0?void 0:si(S,n,`${o} has member 'write' that`),type:_}}u(ri,"convertUnderlyingSink");function ni(n,o,a){return ee(n,a),p=>H(n,o,[p])}u(ni,"convertUnderlyingSinkAbortCallback");function oi(n,o,a){return ee(n,a),()=>H(n,o,[])}u(oi,"convertUnderlyingSinkCloseCallback");function ii(n,o,a){return ee(n,a),p=>M(n,o,[p])}u(ii,"convertUnderlyingSinkStartCallback");function si(n,o,a){return ee(n,a),(p,g)=>H(n,o,[p,g])}u(si,"convertUnderlyingSinkWriteCallback");function Un(n,o){if(!Ve(n))throw new TypeError(`${o} is not a WritableStream.`)}u(Un,"assertWritableStream");function ai(n){if(typeof n!="object"||n===null)return!1;try{return typeof n.aborted=="boolean"}catch{return!1}}u(ai,"isAbortSignal");const ui=typeof AbortController=="function";function li(){if(ui)return new AbortController}u(li,"createAbortController");const Vr=class Vr{constructor(o={},a={}){o===void 0?o=null:hn(o,"First parameter");const p=zt(a,"Second parameter"),g=ri(o,"First parameter");if(Hn(this),g.type!==void 0)throw new RangeError("Invalid type is specified");const S=Ot(p),C=lt(p,1);Ti(this,g,C,S)}get locked(){if(!Ve(this))throw $t("locked");return Qe(this)}abort(o=void 0){return Ve(this)?Qe(this)?T(new TypeError("Cannot abort a stream that already has a writer")):Ft(this,o):T($t("abort"))}close(){return Ve(this)?Qe(this)?T(new TypeError("Cannot close a stream that already has a writer")):be(this)?T(new TypeError("Cannot close an already-closing stream")):Vn(this):T($t("close"))}getWriter(){if(!Ve(this))throw $t("getWriter");return Nn(this)}};u(Vr,"WritableStream");let pe=Vr;Object.defineProperties(pe.prototype,{abort:{enumerable:!0},close:{enumerable:!0},getWriter:{enumerable:!0},locked:{enumerable:!0}}),w(pe.prototype.abort,"abort"),w(pe.prototype.close,"close"),w(pe.prototype.getWriter,"getWriter"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(pe.prototype,Symbol.toStringTag,{value:"WritableStream",configurable:!0});function Nn(n){return new se(n)}u(Nn,"AcquireWritableStreamDefaultWriter");function fi(n,o,a,p,g=1,_=()=>1){const S=Object.create(pe.prototype);Hn(S);const C=Object.create(Be.prototype);return Jn(S,C,n,o,a,p,g,_),S}u(fi,"CreateWritableStream");function Hn(n){n._state="writable",n._storedError=void 0,n._writer=void 0,n._writableStreamController=void 0,n._writeRequests=new Q,n._inFlightWriteRequest=void 0,n._closeRequest=void 0,n._inFlightCloseRequest=void 0,n._pendingAbortRequest=void 0,n._backpressure=!1}u(Hn,"InitializeWritableStream");function Ve(n){return!b(n)||!Object.prototype.hasOwnProperty.call(n,"_writableStreamController")?!1:n instanceof pe}u(Ve,"IsWritableStream");function Qe(n){return n._writer!==void 0}u(Qe,"IsWritableStreamLocked");function Ft(n,o){var a;if(n._state==="closed"||n._state==="errored")return k(void 0);n._writableStreamController._abortReason=o,(a=n._writableStreamController._abortController)===null||a===void 0||a.abort(o);const p=n._state;if(p==="closed"||p==="errored")return k(void 0);if(n._pendingAbortRequest!==void 0)return n._pendingAbortRequest._promise;let g=!1;p==="erroring"&&(g=!0,o=void 0);const _=F((S,C)=>{n._pendingAbortRequest={_promise:void 0,_resolve:S,_reject:C,_reason:o,_wasAlreadyErroring:g}});return n._pendingAbortRequest._promise=_,g||Pr(n,o),_}u(Ft,"WritableStreamAbort");function Vn(n){const o=n._state;if(o==="closed"||o==="errored")return T(new TypeError(`The stream (in ${o} state) is not in the writable state and cannot be closed`));const a=F((g,_)=>{const S={_resolve:g,_reject:_};n._closeRequest=S}),p=n._writer;return p!==void 0&&n._backpressure&&o==="writable"&&Or(p),Ci(n._writableStreamController),a}u(Vn,"WritableStreamClose");function ci(n){return F((a,p)=>{const g={_resolve:a,_reject:p};n._writeRequests.push(g)})}u(ci,"WritableStreamAddWriteRequest");function Cr(n,o){if(n._state==="writable"){Pr(n,o);return}vr(n)}u(Cr,"WritableStreamDealWithRejection");function Pr(n,o){const a=n._writableStreamController;n._state="erroring",n._storedError=o;const p=n._writer;p!==void 0&&Gn(p,o),!mi(n)&&a._started&&vr(n)}u(Pr,"WritableStreamStartErroring");function vr(n){n._state="errored",n._writableStreamController[un]();const o=n._storedError;if(n._writeRequests.forEach(g=>{g._reject(o)}),n._writeRequests=new Q,n._pendingAbortRequest===void 0){It(n);return}const a=n._pendingAbortRequest;if(n._pendingAbortRequest=void 0,a._wasAlreadyErroring){a._reject(o),It(n);return}const p=n._writableStreamController[wt](a._reason);E(p,()=>(a._resolve(),It(n),null),g=>(a._reject(g),It(n),null))}u(vr,"WritableStreamFinishErroring");function di(n){n._inFlightWriteRequest._resolve(void 0),n._inFlightWriteRequest=void 0}u(di,"WritableStreamFinishInFlightWrite");function hi(n,o){n._inFlightWriteRequest._reject(o),n._inFlightWriteRequest=void 0,Cr(n,o)}u(hi,"WritableStreamFinishInFlightWriteWithError");function pi(n){n._inFlightCloseRequest._resolve(void 0),n._inFlightCloseRequest=void 0,n._state==="erroring"&&(n._storedError=void 0,n._pendingAbortRequest!==void 0&&(n._pendingAbortRequest._resolve(),n._pendingAbortRequest=void 0)),n._state="closed";const a=n._writer;a!==void 0&&ro(a)}u(pi,"WritableStreamFinishInFlightClose");function bi(n,o){n._inFlightCloseRequest._reject(o),n._inFlightCloseRequest=void 0,n._pendingAbortRequest!==void 0&&(n._pendingAbortRequest._reject(o),n._pendingAbortRequest=void 0),Cr(n,o)}u(bi,"WritableStreamFinishInFlightCloseWithError");function be(n){return!(n._closeRequest===void 0&&n._inFlightCloseRequest===void 0)}u(be,"WritableStreamCloseQueuedOrInFlight");function mi(n){return!(n._inFlightWriteRequest===void 0&&n._inFlightCloseRequest===void 0)}u(mi,"WritableStreamHasOperationMarkedInFlight");function yi(n){n._inFlightCloseRequest=n._closeRequest,n._closeRequest=void 0}u(yi,"WritableStreamMarkCloseRequestInFlight");function gi(n){n._inFlightWriteRequest=n._writeRequests.shift()}u(gi,"WritableStreamMarkFirstWriteRequestInFlight");function It(n){n._closeRequest!==void 0&&(n._closeRequest._reject(n._storedError),n._closeRequest=void 0);const o=n._writer;o!==void 0&&kr(o,n._storedError)}u(It,"WritableStreamRejectCloseAndClosedPromiseIfNeeded");function Er(n,o){const a=n._writer;a!==void 0&&o!==n._backpressure&&(o?ki(a):Or(a)),n._backpressure=o}u(Er,"WritableStreamUpdateBackpressure");const Qr=class Qr{constructor(o){if(Se(o,1,"WritableStreamDefaultWriter"),Un(o,"First parameter"),Qe(o))throw new TypeError("This stream has already been locked for exclusive writing by another writer");this._ownerWritableStream=o,o._writer=this;const a=o._state;if(a==="writable")!be(o)&&o._backpressure?Mt(this):no(this),Dt(this);else if(a==="erroring")Wr(this,o._storedError),Dt(this);else if(a==="closed")no(this),Bi(this);else{const p=o._storedError;Wr(this,p),to(this,p)}}get closed(){return Ie(this)?this._closedPromise:T(je("closed"))}get desiredSize(){if(!Ie(this))throw je("desiredSize");if(this._ownerWritableStream===void 0)throw ct("desiredSize");return Ri(this)}get ready(){return Ie(this)?this._readyPromise:T(je("ready"))}abort(o=void 0){return Ie(this)?this._ownerWritableStream===void 0?T(ct("abort")):_i(this,o):T(je("abort"))}close(){if(!Ie(this))return T(je("close"));const o=this._ownerWritableStream;return o===void 0?T(ct("close")):be(o)?T(new TypeError("Cannot close an already-closing stream")):Qn(this)}releaseLock(){if(!Ie(this))throw je("releaseLock");this._ownerWritableStream!==void 0&&Yn(this)}write(o=void 0){return Ie(this)?this._ownerWritableStream===void 0?T(ct("write to")):Zn(this,o):T(je("write"))}};u(Qr,"WritableStreamDefaultWriter");let se=Qr;Object.defineProperties(se.prototype,{abort:{enumerable:!0},close:{enumerable:!0},releaseLock:{enumerable:!0},write:{enumerable:!0},closed:{enumerable:!0},desiredSize:{enumerable:!0},ready:{enumerable:!0}}),w(se.prototype.abort,"abort"),w(se.prototype.close,"close"),w(se.prototype.releaseLock,"releaseLock"),w(se.prototype.write,"write"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(se.prototype,Symbol.toStringTag,{value:"WritableStreamDefaultWriter",configurable:!0});function Ie(n){return!b(n)||!Object.prototype.hasOwnProperty.call(n,"_ownerWritableStream")?!1:n instanceof se}u(Ie,"IsWritableStreamDefaultWriter");function _i(n,o){const a=n._ownerWritableStream;return Ft(a,o)}u(_i,"WritableStreamDefaultWriterAbort");function Qn(n){const o=n._ownerWritableStream;return Vn(o)}u(Qn,"WritableStreamDefaultWriterClose");function Si(n){const o=n._ownerWritableStream,a=o._state;return be(o)||a==="closed"?k(void 0):a==="errored"?T(o._storedError):Qn(n)}u(Si,"WritableStreamDefaultWriterCloseWithErrorPropagation");function wi(n,o){n._closedPromiseState==="pending"?kr(n,o):qi(n,o)}u(wi,"WritableStreamDefaultWriterEnsureClosedPromiseRejected");function Gn(n,o){n._readyPromiseState==="pending"?oo(n,o):Wi(n,o)}u(Gn,"WritableStreamDefaultWriterEnsureReadyPromiseRejected");function Ri(n){const o=n._ownerWritableStream,a=o._state;return a==="errored"||a==="erroring"?null:a==="closed"?0:Xn(o._writableStreamController)}u(Ri,"WritableStreamDefaultWriterGetDesiredSize");function Yn(n){const o=n._ownerWritableStream,a=new TypeError("Writer was released and can no longer be used to monitor the stream's closedness");Gn(n,a),wi(n,a),o._writer=void 0,n._ownerWritableStream=void 0}u(Yn,"WritableStreamDefaultWriterRelease");function Zn(n,o){const a=n._ownerWritableStream,p=a._writableStreamController,g=Pi(p,o);if(a!==n._ownerWritableStream)return T(ct("write to"));const _=a._state;if(_==="errored")return T(a._storedError);if(be(a)||_==="closed")return T(new TypeError("The stream is closing or closed and cannot be written to"));if(_==="erroring")return T(a._storedError);const S=ci(a);return vi(p,o,g),S}u(Zn,"WritableStreamDefaultWriterWrite");const Kn={},Gr=class Gr{constructor(){throw new TypeError("Illegal constructor")}get abortReason(){if(!Ar(this))throw qr("abortReason");return this._abortReason}get signal(){if(!Ar(this))throw qr("signal");if(this._abortController===void 0)throw new TypeError("WritableStreamDefaultController.prototype.signal is not supported");return this._abortController.signal}error(o=void 0){if(!Ar(this))throw qr("error");this._controlledWritableStream._state==="writable"&&eo(this,o)}[wt](o){const a=this._abortAlgorithm(o);return jt(this),a}[un](){Ae(this)}};u(Gr,"WritableStreamDefaultController");let Be=Gr;Object.defineProperties(Be.prototype,{abortReason:{enumerable:!0},signal:{enumerable:!0},error:{enumerable:!0}}),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(Be.prototype,Symbol.toStringTag,{value:"WritableStreamDefaultController",configurable:!0});function Ar(n){return!b(n)||!Object.prototype.hasOwnProperty.call(n,"_controlledWritableStream")?!1:n instanceof Be}u(Ar,"IsWritableStreamDefaultController");function Jn(n,o,a,p,g,_,S,C){o._controlledWritableStream=n,n._writableStreamController=o,o._queue=void 0,o._queueTotalSize=void 0,Ae(o),o._abortReason=void 0,o._abortController=li(),o._started=!1,o._strategySizeAlgorithm=C,o._strategyHWM=S,o._writeAlgorithm=p,o._closeAlgorithm=g,o._abortAlgorithm=_;const q=Br(o);Er(n,q);const P=a(),W=k(P);E(W,()=>(o._started=!0,Lt(o),null),O=>(o._started=!0,Cr(n,O),null))}u(Jn,"SetUpWritableStreamDefaultController");function Ti(n,o,a,p){const g=Object.create(Be.prototype);let _,S,C,q;o.start!==void 0?_=u(()=>o.start(g),"startAlgorithm"):_=u(()=>{},"startAlgorithm"),o.write!==void 0?S=u(P=>o.write(P,g),"writeAlgorithm"):S=u(()=>k(void 0),"writeAlgorithm"),o.close!==void 0?C=u(()=>o.close(),"closeAlgorithm"):C=u(()=>k(void 0),"closeAlgorithm"),o.abort!==void 0?q=u(P=>o.abort(P),"abortAlgorithm"):q=u(()=>k(void 0),"abortAlgorithm"),Jn(n,g,_,S,C,q,a,p)}u(Ti,"SetUpWritableStreamDefaultControllerFromUnderlyingSink");function jt(n){n._writeAlgorithm=void 0,n._closeAlgorithm=void 0,n._abortAlgorithm=void 0,n._strategySizeAlgorithm=void 0}u(jt,"WritableStreamDefaultControllerClearAlgorithms");function Ci(n){mr(n,Kn,0),Lt(n)}u(Ci,"WritableStreamDefaultControllerClose");function Pi(n,o){try{return n._strategySizeAlgorithm(o)}catch(a){return ft(n,a),1}}u(Pi,"WritableStreamDefaultControllerGetChunkSize");function Xn(n){return n._strategyHWM-n._queueTotalSize}u(Xn,"WritableStreamDefaultControllerGetDesiredSize");function vi(n,o,a){try{mr(n,o,a)}catch(g){ft(n,g);return}const p=n._controlledWritableStream;if(!be(p)&&p._state==="writable"){const g=Br(n);Er(p,g)}Lt(n)}u(vi,"WritableStreamDefaultControllerWrite");function Lt(n){const o=n._controlledWritableStream;if(!n._started||o._inFlightWriteRequest!==void 0)return;if(o._state==="erroring"){vr(o);return}if(n._queue.length===0)return;const p=Do(n);p===Kn?Ei(n):Ai(n,p)}u(Lt,"WritableStreamDefaultControllerAdvanceQueueIfNeeded");function ft(n,o){n._controlledWritableStream._state==="writable"&&eo(n,o)}u(ft,"WritableStreamDefaultControllerErrorIfNeeded");function Ei(n){const o=n._controlledWritableStream;yi(o),br(n);const a=n._closeAlgorithm();jt(n),E(a,()=>(pi(o),null),p=>(bi(o,p),null))}u(Ei,"WritableStreamDefaultControllerProcessClose");function Ai(n,o){const a=n._controlledWritableStream;gi(a);const p=n._writeAlgorithm(o);E(p,()=>{di(a);const g=a._state;if(br(n),!be(a)&&g==="writable"){const _=Br(n);Er(a,_)}return Lt(n),null},g=>(a._state==="writable"&&jt(n),hi(a,g),null))}u(Ai,"WritableStreamDefaultControllerProcessWrite");function Br(n){return Xn(n)<=0}u(Br,"WritableStreamDefaultControllerGetBackpressure");function eo(n,o){const a=n._controlledWritableStream;jt(n),Pr(a,o)}u(eo,"WritableStreamDefaultControllerError");function $t(n){return new TypeError(`WritableStream.prototype.${n} can only be used on a WritableStream`)}u($t,"streamBrandCheckException$2");function qr(n){return new TypeError(`WritableStreamDefaultController.prototype.${n} can only be used on a WritableStreamDefaultController`)}u(qr,"defaultControllerBrandCheckException$2");function je(n){return new TypeError(`WritableStreamDefaultWriter.prototype.${n} can only be used on a WritableStreamDefaultWriter`)}u(je,"defaultWriterBrandCheckException");function ct(n){return new TypeError("Cannot "+n+" a stream using a released writer")}u(ct,"defaultWriterLockException");function Dt(n){n._closedPromise=F((o,a)=>{n._closedPromise_resolve=o,n._closedPromise_reject=a,n._closedPromiseState="pending"})}u(Dt,"defaultWriterClosedPromiseInitialize");function to(n,o){Dt(n),kr(n,o)}u(to,"defaultWriterClosedPromiseInitializeAsRejected");function Bi(n){Dt(n),ro(n)}u(Bi,"defaultWriterClosedPromiseInitializeAsResolved");function kr(n,o){n._closedPromise_reject!==void 0&&(J(n._closedPromise),n._closedPromise_reject(o),n._closedPromise_resolve=void 0,n._closedPromise_reject=void 0,n._closedPromiseState="rejected")}u(kr,"defaultWriterClosedPromiseReject");function qi(n,o){to(n,o)}u(qi,"defaultWriterClosedPromiseResetToRejected");function ro(n){n._closedPromise_resolve!==void 0&&(n._closedPromise_resolve(void 0),n._closedPromise_resolve=void 0,n._closedPromise_reject=void 0,n._closedPromiseState="resolved")}u(ro,"defaultWriterClosedPromiseResolve");function Mt(n){n._readyPromise=F((o,a)=>{n._readyPromise_resolve=o,n._readyPromise_reject=a}),n._readyPromiseState="pending"}u(Mt,"defaultWriterReadyPromiseInitialize");function Wr(n,o){Mt(n),oo(n,o)}u(Wr,"defaultWriterReadyPromiseInitializeAsRejected");function no(n){Mt(n),Or(n)}u(no,"defaultWriterReadyPromiseInitializeAsResolved");function oo(n,o){n._readyPromise_reject!==void 0&&(J(n._readyPromise),n._readyPromise_reject(o),n._readyPromise_resolve=void 0,n._readyPromise_reject=void 0,n._readyPromiseState="rejected")}u(oo,"defaultWriterReadyPromiseReject");function ki(n){Mt(n)}u(ki,"defaultWriterReadyPromiseReset");function Wi(n,o){Wr(n,o)}u(Wi,"defaultWriterReadyPromiseResetToRejected");function Or(n){n._readyPromise_resolve!==void 0&&(n._readyPromise_resolve(void 0),n._readyPromise_resolve=void 0,n._readyPromise_reject=void 0,n._readyPromiseState="fulfilled")}u(Or,"defaultWriterReadyPromiseResolve");function Oi(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof _commonjsHelpers.commonjsGlobal<"u")return _commonjsHelpers.commonjsGlobal}u(Oi,"getGlobals");const zr=Oi();function zi(n){if(!(typeof n=="function"||typeof n=="object")||n.name!=="DOMException")return!1;try{return new n,!0}catch{return!1}}u(zi,"isDOMExceptionConstructor");function Fi(){const n=zr?.DOMException;return zi(n)?n:void 0}u(Fi,"getFromGlobal");function Ii(){const n=u(function(a,p){this.message=a||"",this.name=p||"Error",Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)},"DOMException");return w(n,"DOMException"),n.prototype=Object.create(Error.prototype),Object.defineProperty(n.prototype,"constructor",{value:n,writable:!0,configurable:!0}),n}u(Ii,"createPolyfill");const ji=Fi()||Ii();function io(n,o,a,p,g,_){const S=Ne(n),C=Nn(o);n._disturbed=!0;let q=!1,P=k(void 0);return F((W,O)=>{let j;if(_!==void 0){if(j=u(()=>{const A=_.reason!==void 0?_.reason:new ji("Aborted","AbortError"),z=[];p||z.push(()=>o._state==="writable"?Ft(o,A):k(void 0)),g||z.push(()=>n._state==="readable"?le(n,A):k(void 0)),Z(()=>Promise.all(z.map(L=>L())),!0,A)},"abortAlgorithm"),_.aborted){j();return}_.addEventListener("abort",j)}function fe(){return F((A,z)=>{function L(X){X?A():$(et(),L,z)}u(L,"next"),L(!1)})}u(fe,"pipeLoop");function et(){return q?k(!0):$(C._readyPromise,()=>F((A,z)=>{it(S,{_chunkSteps:L=>{P=$(Zn(C,L),void 0,y),A(!1)},_closeSteps:()=>A(!0),_errorSteps:z})}))}if(u(et,"pipeStep"),Te(n,S._closedPromise,A=>(p?re(!0,A):Z(()=>Ft(o,A),!0,A),null)),Te(o,C._closedPromise,A=>(g?re(!0,A):Z(()=>le(n,A),!0,A),null)),Y(n,S._closedPromise,()=>(a?re():Z(()=>Si(C)),null)),be(o)||o._state==="closed"){const A=new TypeError("the destination writable stream closed before all data could be piped to it");g?re(!0,A):Z(()=>le(n,A),!0,A)}J(fe());function We(){const A=P;return $(P,()=>A!==P?We():void 0)}u(We,"waitForWritesToFinish");function Te(A,z,L){A._state==="errored"?L(A._storedError):U(z,L)}u(Te,"isOrBecomesErrored");function Y(A,z,L){A._state==="closed"?L():K(z,L)}u(Y,"isOrBecomesClosed");function Z(A,z,L){if(q)return;q=!0,o._state==="writable"&&!be(o)?K(We(),X):X();function X(){return E(A(),()=>Ce(z,L),tt=>Ce(!0,tt)),null}u(X,"doTheRest")}u(Z,"shutdownWithAction");function re(A,z){q||(q=!0,o._state==="writable"&&!be(o)?K(We(),()=>Ce(A,z)):Ce(A,z))}u(re,"shutdown");function Ce(A,z){return Yn(C),_e(S),_!==void 0&&_.removeEventListener("abort",j),A?O(z):W(void 0),null}u(Ce,"finalize")})}u(io,"ReadableStreamPipeTo");const Yr=class Yr{constructor(){throw new TypeError("Illegal constructor")}get desiredSize(){if(!xt(this))throw Nt("desiredSize");return Fr(this)}close(){if(!xt(this))throw Nt("close");if(!Ye(this))throw new TypeError("The stream is not in a state that permits close");Le(this)}enqueue(o=void 0){if(!xt(this))throw Nt("enqueue");if(!Ye(this))throw new TypeError("The stream is not in a state that permits enqueue");return Ge(this,o)}error(o=void 0){if(!xt(this))throw Nt("error");ue(this,o)}[er](o){Ae(this);const a=this._cancelAlgorithm(o);return Ut(this),a}[tr](o){const a=this._controlledReadableStream;if(this._queue.length>0){const p=br(this);this._closeRequested&&this._queue.length===0?(Ut(this),pt(a)):dt(this),o._chunkSteps(p)}else bn(a,o),dt(this)}[rr](){}};u(Yr,"ReadableStreamDefaultController");let ae=Yr;Object.defineProperties(ae.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},desiredSize:{enumerable:!0}}),w(ae.prototype.close,"close"),w(ae.prototype.enqueue,"enqueue"),w(ae.prototype.error,"error"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(ae.prototype,Symbol.toStringTag,{value:"ReadableStreamDefaultController",configurable:!0});function xt(n){return!b(n)||!Object.prototype.hasOwnProperty.call(n,"_controlledReadableStream")?!1:n instanceof ae}u(xt,"IsReadableStreamDefaultController");function dt(n){if(!so(n))return;if(n._pulling){n._pullAgain=!0;return}n._pulling=!0;const a=n._pullAlgorithm();E(a,()=>(n._pulling=!1,n._pullAgain&&(n._pullAgain=!1,dt(n)),null),p=>(ue(n,p),null))}u(dt,"ReadableStreamDefaultControllerCallPullIfNeeded");function so(n){const o=n._controlledReadableStream;return!Ye(n)||!n._started?!1:!!(ke(o)&&Tt(o)>0||Fr(n)>0)}u(so,"ReadableStreamDefaultControllerShouldCallPull");function Ut(n){n._pullAlgorithm=void 0,n._cancelAlgorithm=void 0,n._strategySizeAlgorithm=void 0}u(Ut,"ReadableStreamDefaultControllerClearAlgorithms");function Le(n){if(!Ye(n))return;const o=n._controlledReadableStream;n._closeRequested=!0,n._queue.length===0&&(Ut(n),pt(o))}u(Le,"ReadableStreamDefaultControllerClose");function Ge(n,o){if(!Ye(n))return;const a=n._controlledReadableStream;if(ke(a)&&Tt(a)>0)fr(a,o,!1);else{let p;try{p=n._strategySizeAlgorithm(o)}catch(g){throw ue(n,g),g}try{mr(n,o,p)}catch(g){throw ue(n,g),g}}dt(n)}u(Ge,"ReadableStreamDefaultControllerEnqueue");function ue(n,o){const a=n._controlledReadableStream;a._state==="readable"&&(Ae(n),Ut(n),fo(a,o))}u(ue,"ReadableStreamDefaultControllerError");function Fr(n){const o=n._controlledReadableStream._state;return o==="errored"?null:o==="closed"?0:n._strategyHWM-n._queueTotalSize}u(Fr,"ReadableStreamDefaultControllerGetDesiredSize");function Li(n){return!so(n)}u(Li,"ReadableStreamDefaultControllerHasBackpressure");function Ye(n){const o=n._controlledReadableStream._state;return!n._closeRequested&&o==="readable"}u(Ye,"ReadableStreamDefaultControllerCanCloseOrEnqueue");function ao(n,o,a,p,g,_,S){o._controlledReadableStream=n,o._queue=void 0,o._queueTotalSize=void 0,Ae(o),o._started=!1,o._closeRequested=!1,o._pullAgain=!1,o._pulling=!1,o._strategySizeAlgorithm=S,o._strategyHWM=_,o._pullAlgorithm=p,o._cancelAlgorithm=g,n._readableStreamController=o;const C=a();E(k(C),()=>(o._started=!0,dt(o),null),q=>(ue(o,q),null))}u(ao,"SetUpReadableStreamDefaultController");function $i(n,o,a,p){const g=Object.create(ae.prototype);let _,S,C;o.start!==void 0?_=u(()=>o.start(g),"startAlgorithm"):_=u(()=>{},"startAlgorithm"),o.pull!==void 0?S=u(()=>o.pull(g),"pullAlgorithm"):S=u(()=>k(void 0),"pullAlgorithm"),o.cancel!==void 0?C=u(q=>o.cancel(q),"cancelAlgorithm"):C=u(()=>k(void 0),"cancelAlgorithm"),ao(n,g,_,S,C,a,p)}u($i,"SetUpReadableStreamDefaultControllerFromUnderlyingSource");function Nt(n){return new TypeError(`ReadableStreamDefaultController.prototype.${n} can only be used on a ReadableStreamDefaultController`)}u(Nt,"defaultControllerBrandCheckException$1");function Di(n,o){return Oe(n._readableStreamController)?xi(n):Mi(n)}u(Di,"ReadableStreamTee");function Mi(n,o){const a=Ne(n);let p=!1,g=!1,_=!1,S=!1,C,q,P,W,O;const j=F(Y=>{O=Y});function fe(){return p?(g=!0,k(void 0)):(p=!0,it(a,{_chunkSteps:Z=>{ge(()=>{g=!1;const re=Z,Ce=Z;_||Ge(P._readableStreamController,re),S||Ge(W._readableStreamController,Ce),p=!1,g&&fe()})},_closeSteps:()=>{p=!1,_||Le(P._readableStreamController),S||Le(W._readableStreamController),(!_||!S)&&O(void 0)},_errorSteps:()=>{p=!1}}),k(void 0))}u(fe,"pullAlgorithm");function et(Y){if(_=!0,C=Y,S){const Z=st([C,q]),re=le(n,Z);O(re)}return j}u(et,"cancel1Algorithm");function We(Y){if(S=!0,q=Y,_){const Z=st([C,q]),re=le(n,Z);O(re)}return j}u(We,"cancel2Algorithm");function Te(){}return u(Te,"startAlgorithm"),P=ht(Te,fe,et),W=ht(Te,fe,We),U(a._closedPromise,Y=>(ue(P._readableStreamController,Y),ue(W._readableStreamController,Y),(!_||!S)&&O(void 0),null)),[P,W]}u(Mi,"ReadableStreamDefaultTee");function xi(n){let o=Ne(n),a=!1,p=!1,g=!1,_=!1,S=!1,C,q,P,W,O;const j=F(A=>{O=A});function fe(A){U(A._closedPromise,z=>(A!==o||(te(P._readableStreamController,z),te(W._readableStreamController,z),(!_||!S)&&O(void 0)),null))}u(fe,"forwardReaderError");function et(){Fe(o)&&(_e(o),o=Ne(n),fe(o)),it(o,{_chunkSteps:z=>{ge(()=>{p=!1,g=!1;const L=z;let X=z;if(!_&&!S)try{X=Pn(z)}catch(tt){te(P._readableStreamController,tt),te(W._readableStreamController,tt),O(le(n,tt));return}_||Bt(P._readableStreamController,L),S||Bt(W._readableStreamController,X),a=!1,p?Te():g&&Y()})},_closeSteps:()=>{a=!1,_||at(P._readableStreamController),S||at(W._readableStreamController),P._readableStreamController._pendingPullIntos.length>0&&qt(P._readableStreamController,0),W._readableStreamController._pendingPullIntos.length>0&&qt(W._readableStreamController,0),(!_||!S)&&O(void 0)},_errorSteps:()=>{a=!1}})}u(et,"pullWithDefaultReader");function We(A,z){ve(o)&&(_e(o),o=Ln(n),fe(o));const L=z?W:P,X=z?P:W;Mn(o,A,1,{_chunkSteps:rt=>{ge(()=>{p=!1,g=!1;const nt=z?S:_;if(z?_:S)nt||kt(L._readableStreamController,rt);else{let Co;try{Co=Pn(rt)}catch(tn){te(L._readableStreamController,tn),te(X._readableStreamController,tn),O(le(n,tn));return}nt||kt(L._readableStreamController,rt),Bt(X._readableStreamController,Co)}a=!1,p?Te():g&&Y()})},_closeSteps:rt=>{a=!1;const nt=z?S:_,Yt=z?_:S;nt||at(L._readableStreamController),Yt||at(X._readableStreamController),rt!==void 0&&(nt||kt(L._readableStreamController,rt),!Yt&&X._readableStreamController._pendingPullIntos.length>0&&qt(X._readableStreamController,0)),(!nt||!Yt)&&O(void 0)},_errorSteps:()=>{a=!1}})}u(We,"pullWithBYOBReader");function Te(){if(a)return p=!0,k(void 0);a=!0;const A=wr(P._readableStreamController);return A===null?et():We(A._view,!1),k(void 0)}u(Te,"pull1Algorithm");function Y(){if(a)return g=!0,k(void 0);a=!0;const A=wr(W._readableStreamController);return A===null?et():We(A._view,!0),k(void 0)}u(Y,"pull2Algorithm");function Z(A){if(_=!0,C=A,S){const z=st([C,q]),L=le(n,z);O(L)}return j}u(Z,"cancel1Algorithm");function re(A){if(S=!0,q=A,_){const z=st([C,q]),L=le(n,z);O(L)}return j}u(re,"cancel2Algorithm");function Ce(){}return u(Ce,"startAlgorithm"),P=lo(Ce,Te,Z),W=lo(Ce,Y,re),fe(o),[P,W]}u(xi,"ReadableByteStreamTee");function Ui(n){return b(n)&&typeof n.getReader<"u"}u(Ui,"isReadableStreamLike");function Ni(n){return Ui(n)?Vi(n.getReader()):Hi(n)}u(Ni,"ReadableStreamFrom");function Hi(n){let o;const a=Cn(n,"async"),p=y;function g(){let S;try{S=Io(a)}catch(q){return T(q)}const C=k(S);return N(C,q=>{if(!b(q))throw new TypeError("The promise returned by the iterator.next() method must fulfill with an object");if(jo(q))Le(o._readableStreamController);else{const W=Lo(q);Ge(o._readableStreamController,W)}})}u(g,"pullAlgorithm");function _(S){const C=a.iterator;let q;try{q=vt(C,"return")}catch(O){return T(O)}if(q===void 0)return k(void 0);let P;try{P=M(q,C,[S])}catch(O){return T(O)}const W=k(P);return N(W,O=>{if(!b(O))throw new TypeError("The promise returned by the iterator.return() method must fulfill with an object")})}return u(_,"cancelAlgorithm"),o=ht(p,g,_,0),o}u(Hi,"ReadableStreamFromIterable");function Vi(n){let o;const a=y;function p(){let _;try{_=n.read()}catch(S){return T(S)}return N(_,S=>{if(!b(S))throw new TypeError("The promise returned by the reader.read() method must fulfill with an object");if(S.done)Le(o._readableStreamController);else{const C=S.value;Ge(o._readableStreamController,C)}})}u(p,"pullAlgorithm");function g(_){try{return k(n.cancel(_))}catch(S){return T(S)}}return u(g,"cancelAlgorithm"),o=ht(a,p,g,0),o}u(Vi,"ReadableStreamFromDefaultReader");function Qi(n,o){ce(n,o);const a=n,p=a?.autoAllocateChunkSize,g=a?.cancel,_=a?.pull,S=a?.start,C=a?.type;return{autoAllocateChunkSize:p===void 0?void 0:ur(p,`${o} has member 'autoAllocateChunkSize' that`),cancel:g===void 0?void 0:Gi(g,a,`${o} has member 'cancel' that`),pull:_===void 0?void 0:Yi(_,a,`${o} has member 'pull' that`),start:S===void 0?void 0:Zi(S,a,`${o} has member 'start' that`),type:C===void 0?void 0:Ki(C,`${o} has member 'type' that`)}}u(Qi,"convertUnderlyingDefaultOrByteSource");function Gi(n,o,a){return ee(n,a),p=>H(n,o,[p])}u(Gi,"convertUnderlyingSourceCancelCallback");function Yi(n,o,a){return ee(n,a),p=>H(n,o,[p])}u(Yi,"convertUnderlyingSourcePullCallback");function Zi(n,o,a){return ee(n,a),p=>M(n,o,[p])}u(Zi,"convertUnderlyingSourceStartCallback");function Ki(n,o){if(n=`${n}`,n!=="bytes")throw new TypeError(`${o} '${n}' is not a valid enumeration value for ReadableStreamType`);return n}u(Ki,"convertReadableStreamType");function Ji(n,o){return ce(n,o),{preventCancel:!!n?.preventCancel}}u(Ji,"convertIteratorOptions");function uo(n,o){ce(n,o);const a=n?.preventAbort,p=n?.preventCancel,g=n?.preventClose,_=n?.signal;return _!==void 0&&Xi(_,`${o} has member 'signal' that`),{preventAbort:!!a,preventCancel:!!p,preventClose:!!g,signal:_}}u(uo,"convertPipeOptions");function Xi(n,o){if(!ai(n))throw new TypeError(`${o} is not an AbortSignal.`)}u(Xi,"assertAbortSignal");function es(n,o){ce(n,o);const a=n?.readable;sr(a,"readable","ReadableWritablePair"),lr(a,`${o} has member 'readable' that`);const p=n?.writable;return sr(p,"writable","ReadableWritablePair"),Un(p,`${o} has member 'writable' that`),{readable:a,writable:p}}u(es,"convertReadableWritablePair");const Zr=class Zr{constructor(o={},a={}){o===void 0?o=null:hn(o,"First parameter");const p=zt(a,"Second parameter"),g=Qi(o,"First parameter");if(Ir(this),g.type==="bytes"){if(p.size!==void 0)throw new RangeError("The strategy for a byte stream cannot have a size function");const _=lt(p,0);Go(this,g,_)}else{const _=Ot(p),S=lt(p,1);$i(this,g,S,_)}}get locked(){if(!qe(this))throw $e("locked");return ke(this)}cancel(o=void 0){return qe(this)?ke(this)?T(new TypeError("Cannot cancel a stream that already has a reader")):le(this,o):T($e("cancel"))}getReader(o=void 0){if(!qe(this))throw $e("getReader");return Zo(o,"First parameter").mode===void 0?Ne(this):Ln(this)}pipeThrough(o,a={}){if(!qe(this))throw $e("pipeThrough");Se(o,1,"pipeThrough");const p=es(o,"First parameter"),g=uo(a,"Second parameter");if(ke(this))throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream");if(Qe(p.writable))throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream");const _=io(this,p.writable,g.preventClose,g.preventAbort,g.preventCancel,g.signal);return J(_),p.readable}pipeTo(o,a={}){if(!qe(this))return T($e("pipeTo"));if(o===void 0)return T("Parameter 1 is required in 'pipeTo'.");if(!Ve(o))return T(new TypeError("ReadableStream.prototype.pipeTo's first argument must be a WritableStream"));let p;try{p=uo(a,"Second parameter")}catch(g){return T(g)}return ke(this)?T(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream")):Qe(o)?T(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream")):io(this,o,p.preventClose,p.preventAbort,p.preventCancel,p.signal)}tee(){if(!qe(this))throw $e("tee");const o=Di(this);return st(o)}values(o=void 0){if(!qe(this))throw $e("values");const a=Ji(o,"First parameter");return zo(this,a.preventCancel)}[pr](o){return this.values(o)}static from(o){return Ni(o)}};u(Zr,"ReadableStream");let V=Zr;Object.defineProperties(V,{from:{enumerable:!0}}),Object.defineProperties(V.prototype,{cancel:{enumerable:!0},getReader:{enumerable:!0},pipeThrough:{enumerable:!0},pipeTo:{enumerable:!0},tee:{enumerable:!0},values:{enumerable:!0},locked:{enumerable:!0}}),w(V.from,"from"),w(V.prototype.cancel,"cancel"),w(V.prototype.getReader,"getReader"),w(V.prototype.pipeThrough,"pipeThrough"),w(V.prototype.pipeTo,"pipeTo"),w(V.prototype.tee,"tee"),w(V.prototype.values,"values"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(V.prototype,Symbol.toStringTag,{value:"ReadableStream",configurable:!0}),Object.defineProperty(V.prototype,pr,{value:V.prototype.values,writable:!0,configurable:!0});function ht(n,o,a,p=1,g=()=>1){const _=Object.create(V.prototype);Ir(_);const S=Object.create(ae.prototype);return ao(_,S,n,o,a,p,g),_}u(ht,"CreateReadableStream");function lo(n,o,a){const p=Object.create(V.prototype);Ir(p);const g=Object.create(ie.prototype);return jn(p,g,n,o,a,0,void 0),p}u(lo,"CreateReadableByteStream");function Ir(n){n._state="readable",n._reader=void 0,n._storedError=void 0,n._disturbed=!1}u(Ir,"InitializeReadableStream");function qe(n){return!b(n)||!Object.prototype.hasOwnProperty.call(n,"_readableStreamController")?!1:n instanceof V}u(qe,"IsReadableStream");function ke(n){return n._reader!==void 0}u(ke,"IsReadableStreamLocked");function le(n,o){if(n._disturbed=!0,n._state==="closed")return k(void 0);if(n._state==="errored")return T(n._storedError);pt(n);const a=n._reader;if(a!==void 0&&Fe(a)){const g=a._readIntoRequests;a._readIntoRequests=new Q,g.forEach(_=>{_._closeSteps(void 0)})}const p=n._readableStreamController[er](o);return N(p,y)}u(le,"ReadableStreamCancel");function pt(n){n._state="closed";const o=n._reader;if(o!==void 0&&(cn(o),ve(o))){const a=o._readRequests;o._readRequests=new Q,a.forEach(p=>{p._closeSteps()})}}u(pt,"ReadableStreamClose");function fo(n,o){n._state="errored",n._storedError=o;const a=n._reader;a!==void 0&&(ir(a,o),ve(a)?yn(a,o):xn(a,o))}u(fo,"ReadableStreamError");function $e(n){return new TypeError(`ReadableStream.prototype.${n} can only be used on a ReadableStream`)}u($e,"streamBrandCheckException$1");function co(n,o){ce(n,o);const a=n?.highWaterMark;return sr(a,"highWaterMark","QueuingStrategyInit"),{highWaterMark:ar(a)}}u(co,"convertQueuingStrategyInit");const ho=u(n=>n.byteLength,"byteLengthSizeFunction");w(ho,"size");const Kr=class Kr{constructor(o){Se(o,1,"ByteLengthQueuingStrategy"),o=co(o,"First parameter"),this._byteLengthQueuingStrategyHighWaterMark=o.highWaterMark}get highWaterMark(){if(!bo(this))throw po("highWaterMark");return this._byteLengthQueuingStrategyHighWaterMark}get size(){if(!bo(this))throw po("size");return ho}};u(Kr,"ByteLengthQueuingStrategy");let Ze=Kr;Object.defineProperties(Ze.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(Ze.prototype,Symbol.toStringTag,{value:"ByteLengthQueuingStrategy",configurable:!0});function po(n){return new TypeError(`ByteLengthQueuingStrategy.prototype.${n} can only be used on a ByteLengthQueuingStrategy`)}u(po,"byteLengthBrandCheckException");function bo(n){return!b(n)||!Object.prototype.hasOwnProperty.call(n,"_byteLengthQueuingStrategyHighWaterMark")?!1:n instanceof Ze}u(bo,"IsByteLengthQueuingStrategy");const mo=u(()=>1,"countSizeFunction");w(mo,"size");const Jr=class Jr{constructor(o){Se(o,1,"CountQueuingStrategy"),o=co(o,"First parameter"),this._countQueuingStrategyHighWaterMark=o.highWaterMark}get highWaterMark(){if(!go(this))throw yo("highWaterMark");return this._countQueuingStrategyHighWaterMark}get size(){if(!go(this))throw yo("size");return mo}};u(Jr,"CountQueuingStrategy");let Ke=Jr;Object.defineProperties(Ke.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(Ke.prototype,Symbol.toStringTag,{value:"CountQueuingStrategy",configurable:!0});function yo(n){return new TypeError(`CountQueuingStrategy.prototype.${n} can only be used on a CountQueuingStrategy`)}u(yo,"countBrandCheckException");function go(n){return!b(n)||!Object.prototype.hasOwnProperty.call(n,"_countQueuingStrategyHighWaterMark")?!1:n instanceof Ke}u(go,"IsCountQueuingStrategy");function ts(n,o){ce(n,o);const a=n?.cancel,p=n?.flush,g=n?.readableType,_=n?.start,S=n?.transform,C=n?.writableType;return{cancel:a===void 0?void 0:is(a,n,`${o} has member 'cancel' that`),flush:p===void 0?void 0:rs(p,n,`${o} has member 'flush' that`),readableType:g,start:_===void 0?void 0:ns(_,n,`${o} has member 'start' that`),transform:S===void 0?void 0:os(S,n,`${o} has member 'transform' that`),writableType:C}}u(ts,"convertTransformer");function rs(n,o,a){return ee(n,a),p=>H(n,o,[p])}u(rs,"convertTransformerFlushCallback");function ns(n,o,a){return ee(n,a),p=>M(n,o,[p])}u(ns,"convertTransformerStartCallback");function os(n,o,a){return ee(n,a),(p,g)=>H(n,o,[p,g])}u(os,"convertTransformerTransformCallback");function is(n,o,a){return ee(n,a),p=>H(n,o,[p])}u(is,"convertTransformerCancelCallback");const Xr=class Xr{constructor(o={},a={},p={}){o===void 0&&(o=null);const g=zt(a,"Second parameter"),_=zt(p,"Third parameter"),S=ts(o,"First parameter");if(S.readableType!==void 0)throw new RangeError("Invalid readableType specified");if(S.writableType!==void 0)throw new RangeError("Invalid writableType specified");const C=lt(_,0),q=Ot(_),P=lt(g,1),W=Ot(g);let O;const j=F(fe=>{O=fe});ss(this,j,P,W,C,q),us(this,S),S.start!==void 0?O(S.start(this._transformStreamController)):O(void 0)}get readable(){if(!_o(this))throw To("readable");return this._readable}get writable(){if(!_o(this))throw To("writable");return this._writable}};u(Xr,"TransformStream");let Je=Xr;Object.defineProperties(Je.prototype,{readable:{enumerable:!0},writable:{enumerable:!0}}),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(Je.prototype,Symbol.toStringTag,{value:"TransformStream",configurable:!0});function ss(n,o,a,p,g,_){function S(){return o}u(S,"startAlgorithm");function C(j){return cs(n,j)}u(C,"writeAlgorithm");function q(j){return ds(n,j)}u(q,"abortAlgorithm");function P(){return hs(n)}u(P,"closeAlgorithm"),n._writable=fi(S,C,P,q,a,p);function W(){return ps(n)}u(W,"pullAlgorithm");function O(j){return bs(n,j)}u(O,"cancelAlgorithm"),n._readable=ht(S,W,O,g,_),n._backpressure=void 0,n._backpressureChangePromise=void 0,n._backpressureChangePromise_resolve=void 0,Ht(n,!0),n._transformStreamController=void 0}u(ss,"InitializeTransformStream");function _o(n){return!b(n)||!Object.prototype.hasOwnProperty.call(n,"_transformStreamController")?!1:n instanceof Je}u(_o,"IsTransformStream");function So(n,o){ue(n._readable._readableStreamController,o),jr(n,o)}u(So,"TransformStreamError");function jr(n,o){Qt(n._transformStreamController),ft(n._writable._writableStreamController,o),Lr(n)}u(jr,"TransformStreamErrorWritableAndUnblockWrite");function Lr(n){n._backpressure&&Ht(n,!1)}u(Lr,"TransformStreamUnblockWrite");function Ht(n,o){n._backpressureChangePromise!==void 0&&n._backpressureChangePromise_resolve(),n._backpressureChangePromise=F(a=>{n._backpressureChangePromise_resolve=a}),n._backpressure=o}u(Ht,"TransformStreamSetBackpressure");const en=class en{constructor(){throw new TypeError("Illegal constructor")}get desiredSize(){if(!Vt(this))throw Gt("desiredSize");const o=this._controlledTransformStream._readable._readableStreamController;return Fr(o)}enqueue(o=void 0){if(!Vt(this))throw Gt("enqueue");wo(this,o)}error(o=void 0){if(!Vt(this))throw Gt("error");ls(this,o)}terminate(){if(!Vt(this))throw Gt("terminate");fs(this)}};u(en,"TransformStreamDefaultController");let me=en;Object.defineProperties(me.prototype,{enqueue:{enumerable:!0},error:{enumerable:!0},terminate:{enumerable:!0},desiredSize:{enumerable:!0}}),w(me.prototype.enqueue,"enqueue"),w(me.prototype.error,"error"),w(me.prototype.terminate,"terminate"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(me.prototype,Symbol.toStringTag,{value:"TransformStreamDefaultController",configurable:!0});function Vt(n){return!b(n)||!Object.prototype.hasOwnProperty.call(n,"_controlledTransformStream")?!1:n instanceof me}u(Vt,"IsTransformStreamDefaultController");function as(n,o,a,p,g){o._controlledTransformStream=n,n._transformStreamController=o,o._transformAlgorithm=a,o._flushAlgorithm=p,o._cancelAlgorithm=g,o._finishPromise=void 0,o._finishPromise_resolve=void 0,o._finishPromise_reject=void 0}u(as,"SetUpTransformStreamDefaultController");function us(n,o){const a=Object.create(me.prototype);let p,g,_;o.transform!==void 0?p=u(S=>o.transform(S,a),"transformAlgorithm"):p=u(S=>{try{return wo(a,S),k(void 0)}catch(C){return T(C)}},"transformAlgorithm"),o.flush!==void 0?g=u(()=>o.flush(a),"flushAlgorithm"):g=u(()=>k(void 0),"flushAlgorithm"),o.cancel!==void 0?_=u(S=>o.cancel(S),"cancelAlgorithm"):_=u(()=>k(void 0),"cancelAlgorithm"),as(n,a,p,g,_)}u(us,"SetUpTransformStreamDefaultControllerFromTransformer");function Qt(n){n._transformAlgorithm=void 0,n._flushAlgorithm=void 0,n._cancelAlgorithm=void 0}u(Qt,"TransformStreamDefaultControllerClearAlgorithms");function wo(n,o){const a=n._controlledTransformStream,p=a._readable._readableStreamController;if(!Ye(p))throw new TypeError("Readable side is not in a state that permits enqueue");try{Ge(p,o)}catch(_){throw jr(a,_),a._readable._storedError}Li(p)!==a._backpressure&&Ht(a,!0)}u(wo,"TransformStreamDefaultControllerEnqueue");function ls(n,o){So(n._controlledTransformStream,o)}u(ls,"TransformStreamDefaultControllerError");function Ro(n,o){const a=n._transformAlgorithm(o);return N(a,void 0,p=>{throw So(n._controlledTransformStream,p),p})}u(Ro,"TransformStreamDefaultControllerPerformTransform");function fs(n){const o=n._controlledTransformStream,a=o._readable._readableStreamController;Le(a);const p=new TypeError("TransformStream terminated");jr(o,p)}u(fs,"TransformStreamDefaultControllerTerminate");function cs(n,o){const a=n._transformStreamController;if(n._backpressure){const p=n._backpressureChangePromise;return N(p,()=>{const g=n._writable;if(g._state==="erroring")throw g._storedError;return Ro(a,o)})}return Ro(a,o)}u(cs,"TransformStreamDefaultSinkWriteAlgorithm");function ds(n,o){const a=n._transformStreamController;if(a._finishPromise!==void 0)return a._finishPromise;const p=n._readable;a._finishPromise=F((_,S)=>{a._finishPromise_resolve=_,a._finishPromise_reject=S});const g=a._cancelAlgorithm(o);return Qt(a),E(g,()=>(p._state==="errored"?Xe(a,p._storedError):(ue(p._readableStreamController,o),$r(a)),null),_=>(ue(p._readableStreamController,_),Xe(a,_),null)),a._finishPromise}u(ds,"TransformStreamDefaultSinkAbortAlgorithm");function hs(n){const o=n._transformStreamController;if(o._finishPromise!==void 0)return o._finishPromise;const a=n._readable;o._finishPromise=F((g,_)=>{o._finishPromise_resolve=g,o._finishPromise_reject=_});const p=o._flushAlgorithm();return Qt(o),E(p,()=>(a._state==="errored"?Xe(o,a._storedError):(Le(a._readableStreamController),$r(o)),null),g=>(ue(a._readableStreamController,g),Xe(o,g),null)),o._finishPromise}u(hs,"TransformStreamDefaultSinkCloseAlgorithm");function ps(n){return Ht(n,!1),n._backpressureChangePromise}u(ps,"TransformStreamDefaultSourcePullAlgorithm");function bs(n,o){const a=n._transformStreamController;if(a._finishPromise!==void 0)return a._finishPromise;const p=n._writable;a._finishPromise=F((_,S)=>{a._finishPromise_resolve=_,a._finishPromise_reject=S});const g=a._cancelAlgorithm(o);return Qt(a),E(g,()=>(p._state==="errored"?Xe(a,p._storedError):(ft(p._writableStreamController,o),Lr(n),$r(a)),null),_=>(ft(p._writableStreamController,_),Lr(n),Xe(a,_),null)),a._finishPromise}u(bs,"TransformStreamDefaultSourceCancelAlgorithm");function Gt(n){return new TypeError(`TransformStreamDefaultController.prototype.${n} can only be used on a TransformStreamDefaultController`)}u(Gt,"defaultControllerBrandCheckException");function $r(n){n._finishPromise_resolve!==void 0&&(n._finishPromise_resolve(),n._finishPromise_resolve=void 0,n._finishPromise_reject=void 0)}u($r,"defaultControllerFinishPromiseResolve");function Xe(n,o){n._finishPromise_reject!==void 0&&(J(n._finishPromise),n._finishPromise_reject(o),n._finishPromise_resolve=void 0,n._finishPromise_reject=void 0)}u(Xe,"defaultControllerFinishPromiseReject");function To(n){return new TypeError(`TransformStream.prototype.${n} can only be used on a TransformStream`)}u(To,"streamBrandCheckException"),d.ByteLengthQueuingStrategy=Ze,d.CountQueuingStrategy=Ke,d.ReadableByteStreamController=ie,d.ReadableStream=V,d.ReadableStreamBYOBReader=he,d.ReadableStreamBYOBRequest=Re,d.ReadableStreamDefaultController=ae,d.ReadableStreamDefaultReader=de,d.TransformStream=Je,d.TransformStreamDefaultController=me,d.WritableStream=pe,d.WritableStreamDefaultController=Be,d.WritableStreamDefaultWriter=se})}(ponyfill_es2018,ponyfill_es2018.exports)),ponyfill_es2018.exports}u(requirePonyfill_es2018,"requirePonyfill_es2018");const POOL_SIZE$1=65536;if(!globalThis.ReadableStream)try{const c=require("node:process"),{emitWarning:l}=c;try{c.emitWarning=()=>{},Object.assign(globalThis,require("node:stream/web")),c.emitWarning=l}catch(d){throw c.emitWarning=l,d}}catch{Object.assign(globalThis,requirePonyfill_es2018())}try{const{Blob:c}=require("buffer");c&&!c.prototype.stream&&(c.prototype.stream=u(function(d){let y=0;const b=this;return new ReadableStream({type:"bytes",async pull(R){const v=await b.slice(y,Math.min(b.size,y+POOL_SIZE$1)).arrayBuffer();y+=v.byteLength,R.enqueue(new Uint8Array(v)),y===b.size&&R.close()}})},"name"))}catch{}/*! fetch-blob. MIT License. Jimmy Wärting */const POOL_SIZE=65536;async function*toIterator(c,l=!0){for(const d of c)if("stream"in d)yield*d.stream();else if(ArrayBuffer.isView(d))if(l){let y=d.byteOffset;const b=d.byteOffset+d.byteLength;for(;y!==b;){const R=Math.min(b-y,POOL_SIZE),w=d.buffer.slice(y,y+R);y+=w.byteLength,yield new Uint8Array(w)}}else yield d;else{let y=0,b=d;for(;y!==b.size;){const w=await b.slice(y,Math.min(b.size,y+POOL_SIZE)).arrayBuffer();y+=w.byteLength,yield new Uint8Array(w)}}}u(toIterator,"toIterator");const _Blob=(Ue=class{constructor(l=[],d={}){ye(this,Pe,[]);ye(this,bt,"");ye(this,ot,0);ye(this,Zt,"transparent");if(typeof l!="object"||l===null)throw new TypeError("Failed to construct 'Blob': The provided value cannot be converted to a sequence.");if(typeof l[Symbol.iterator]!="function")throw new TypeError("Failed to construct 'Blob': The object must have a callable @@iterator property.");if(typeof d!="object"&&typeof d!="function")throw new TypeError("Failed to construct 'Blob': parameter 2 cannot convert to dictionary.");d===null&&(d={});const y=new TextEncoder;for(const R of l){let w;ArrayBuffer.isView(R)?w=new Uint8Array(R.buffer.slice(R.byteOffset,R.byteOffset+R.byteLength)):R instanceof ArrayBuffer?w=new Uint8Array(R.slice(0)):R instanceof Ue?w=R:w=y.encode(`${R}`),ne(this,ot,D(this,ot)+(ArrayBuffer.isView(w)?w.byteLength:w.size)),D(this,Pe).push(w)}ne(this,Zt,`${d.endings===void 0?"transparent":d.endings}`);const b=d.type===void 0?"":String(d.type);ne(this,bt,/^[\x20-\x7E]*$/.test(b)?b:"")}get size(){return D(this,ot)}get type(){return D(this,bt)}async text(){const l=new TextDecoder;let d="";for await(const y of toIterator(D(this,Pe),!1))d+=l.decode(y,{stream:!0});return d+=l.decode(),d}async arrayBuffer(){const l=new Uint8Array(this.size);let d=0;for await(const y of toIterator(D(this,Pe),!1))l.set(y,d),d+=y.length;return l.buffer}stream(){const l=toIterator(D(this,Pe),!0);return new globalThis.ReadableStream({type:"bytes",async pull(d){const y=await l.next();y.done?d.close():d.enqueue(y.value)},async cancel(){await l.return()}})}slice(l=0,d=this.size,y=""){const{size:b}=this;let R=l<0?Math.max(b+l,0):Math.min(l,b),w=d<0?Math.max(b+d,0):Math.min(d,b);const v=Math.max(w-R,0),I=D(this,Pe),B=[];let F=0;for(const T of I){if(F>=v)break;const $=ArrayBuffer.isView(T)?T.byteLength:T.size;if(R&&$<=R)R-=$,w-=$;else{let E;ArrayBuffer.isView(T)?(E=T.subarray(R,Math.min($,w)),F+=E.byteLength):(E=T.slice(R,Math.min($,w)),F+=E.size),w-=$,B.push(E),R=0}}const k=new Ue([],{type:String(y).toLowerCase()});return ne(k,ot,v),ne(k,Pe,B),k}get[Symbol.toStringTag](){return"Blob"}static[Symbol.hasInstance](l){return l&&typeof l=="object"&&typeof l.constructor=="function"&&(typeof l.stream=="function"||typeof l.arrayBuffer=="function")&&/^(Blob|File)$/.test(l[Symbol.toStringTag])}},Pe=new WeakMap,bt=new WeakMap,ot=new WeakMap,Zt=new WeakMap,u(Ue,"Blob"),Ue);Object.defineProperties(_Blob.prototype,{size:{enumerable:!0},type:{enumerable:!0},slice:{enumerable:!0}});const Blob=_Blob,r$1=Blob,_File=(gt=class extends r$1{constructor(d,y,b={}){if(arguments.length<2)throw new TypeError(`Failed to construct 'File': 2 arguments required, but only ${arguments.length} present.`);super(d,b);ye(this,mt,0);ye(this,yt,"");b===null&&(b={});const R=b.lastModified===void 0?Date.now():Number(b.lastModified);Number.isNaN(R)||ne(this,mt,R),ne(this,yt,String(y))}get name(){return D(this,yt)}get lastModified(){return D(this,mt)}get[Symbol.toStringTag](){return"File"}static[Symbol.hasInstance](d){return!!d&&d instanceof r$1&&/^(File)$/.test(d[Symbol.toStringTag])}},mt=new WeakMap,yt=new WeakMap,u(gt,"File"),gt),File=_File,File$1=File;/*! formdata-polyfill. MIT License. Jimmy Wärting */var{toStringTag:t$1,iterator:i,hasInstance:h}=Symbol,r=Math.random,m="append,set,get,getAll,delete,keys,values,entries,forEach,constructor".split(","),f=u((c,l,d)=>(c+="",/^(Blob|File)$/.test(l&&l[t$1])?[(d=d!==void 0?d+"":l[t$1]=="File"?l.name:"blob",c),l.name!==d||l[t$1]=="blob"?new File$1([l],d,l):l]:[c,l+""]),"f"),e$1=u((c,l)=>(l?c:c.replace(/\r?\n|\r/g,`\r +`)).replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),"e$1"),x=u((c,l,d)=>{if(l.lengthtypeof l[d]!="function")}append(...l){x("append",arguments,2),D(this,oe).push(f(...l))}delete(l){x("delete",arguments,1),l+="",ne(this,oe,D(this,oe).filter(([d])=>d!==l))}get(l){x("get",arguments,1),l+="";for(var d=D(this,oe),y=d.length,b=0;by[0]===l&&d.push(y[1])),d}has(l){return x("has",arguments,1),l+="",D(this,oe).some(d=>d[0]===l)}forEach(l,d){x("forEach",arguments,1);for(var[y,b]of this)l.call(d,b,y,this)}set(...l){x("set",arguments,2);var d=[],y=!0;l=f(...l),D(this,oe).forEach(b=>{b[0]===l[0]?y&&(y=!d.push(l)):d.push(b)}),y&&d.push(l),ne(this,oe,d)}*entries(){yield*D(this,oe)}*keys(){for(var[l]of this)yield l}*values(){for(var[,l]of this)yield l}},oe=new WeakMap,u(_t,"FormData"),_t);function formDataToBlob(c,l=r$1){var d=`${r()}${r()}`.replace(/\./g,"").slice(-28).padStart(32,"-"),y=[],b=`--${d}\r +Content-Disposition: form-data; name="`;return c.forEach((R,w)=>typeof R=="string"?y.push(b+e$1(w)+`"\r +\r +${R.replace(/\r(?!\n)|(?typeof c=="object"&&typeof c.append=="function"&&typeof c.delete=="function"&&typeof c.get=="function"&&typeof c.getAll=="function"&&typeof c.has=="function"&&typeof c.set=="function"&&typeof c.sort=="function"&&c[NAME]==="URLSearchParams","isURLSearchParameters"),isBlob=u(c=>c&&typeof c=="object"&&typeof c.arrayBuffer=="function"&&typeof c.type=="string"&&typeof c.stream=="function"&&typeof c.constructor=="function"&&/^(Blob|File)$/.test(c[NAME]),"isBlob"),isAbortSignal=u(c=>typeof c=="object"&&(c[NAME]==="AbortSignal"||c[NAME]==="EventTarget"),"isAbortSignal"),isDomainOrSubdomain=u((c,l)=>{const d=new URL(l).hostname,y=new URL(c).hostname;return d===y||d.endsWith(`.${y}`)},"isDomainOrSubdomain"),isSameProtocol=u((c,l)=>{const d=new URL(l).protocol,y=new URL(c).protocol;return d===y},"isSameProtocol"),pipeline=require$$0.promisify(Stream__default.pipeline),INTERNALS$2=Symbol("Body internals"),on=class on{constructor(l,{size:d=0}={}){let y=null;l===null?l=null:isURLSearchParameters(l)?l=require$$6.Buffer.from(l.toString()):isBlob(l)||require$$6.Buffer.isBuffer(l)||(require$$0.types.isAnyArrayBuffer(l)?l=require$$6.Buffer.from(l):ArrayBuffer.isView(l)?l=require$$6.Buffer.from(l.buffer,l.byteOffset,l.byteLength):l instanceof Stream__default||(l instanceof FormData?(l=formDataToBlob(l),y=l.type.split("=")[1]):l=require$$6.Buffer.from(String(l))));let b=l;require$$6.Buffer.isBuffer(l)?b=Stream__default.Readable.from(l):isBlob(l)&&(b=Stream__default.Readable.from(l.stream())),this[INTERNALS$2]={body:l,stream:b,boundary:y,disturbed:!1,error:null},this.size=d,l instanceof Stream__default&&l.on("error",R=>{const w=R instanceof FetchBaseError?R:new FetchError(`Invalid response body while trying to fetch ${this.url}: ${R.message}`,"system",R);this[INTERNALS$2].error=w})}get body(){return this[INTERNALS$2].stream}get bodyUsed(){return this[INTERNALS$2].disturbed}async arrayBuffer(){const{buffer:l,byteOffset:d,byteLength:y}=await consumeBody(this);return l.slice(d,d+y)}async formData(){const l=this.headers.get("content-type");if(l.startsWith("application/x-www-form-urlencoded")){const y=new FormData,b=new URLSearchParams(await this.text());for(const[R,w]of b)y.append(R,w);return y}const{toFormData:d}=await import("./chunks/multipart-parser.cjs");return d(this.body,l)}async blob(){const l=this.headers&&this.headers.get("content-type")||this[INTERNALS$2].body&&this[INTERNALS$2].body.type||"",d=await this.arrayBuffer();return new r$1([d],{type:l})}async json(){const l=await this.text();return JSON.parse(l)}async text(){const l=await consumeBody(this);return new TextDecoder().decode(l)}buffer(){return consumeBody(this)}};u(on,"Body");let Body=on;Body.prototype.buffer=require$$0.deprecate(Body.prototype.buffer,"Please use 'response.arrayBuffer()' instead of 'response.buffer()'","node-fetch#buffer"),Object.defineProperties(Body.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0},data:{get:require$$0.deprecate(()=>{},"data doesn't exist, use json(), text(), arrayBuffer(), or body instead","https://github.com/node-fetch/node-fetch/issues/1000 (response)")}});async function consumeBody(c){if(c[INTERNALS$2].disturbed)throw new TypeError(`body used already for: ${c.url}`);if(c[INTERNALS$2].disturbed=!0,c[INTERNALS$2].error)throw c[INTERNALS$2].error;const{body:l}=c;if(l===null||!(l instanceof Stream__default))return require$$6.Buffer.alloc(0);const d=[];let y=0;try{for await(const b of l){if(c.size>0&&y+b.length>c.size){const R=new FetchError(`content size at ${c.url} over limit: ${c.size}`,"max-size");throw l.destroy(R),R}y+=b.length,d.push(b)}}catch(b){throw b instanceof FetchBaseError?b:new FetchError(`Invalid response body while trying to fetch ${c.url}: ${b.message}`,"system",b)}if(l.readableEnded===!0||l._readableState.ended===!0)try{return d.every(b=>typeof b=="string")?require$$6.Buffer.from(d.join("")):require$$6.Buffer.concat(d,y)}catch(b){throw new FetchError(`Could not create Buffer from response body for ${c.url}: ${b.message}`,"system",b)}else throw new FetchError(`Premature close of server response while trying to fetch ${c.url}`)}u(consumeBody,"consumeBody");const clone=u((c,l)=>{let d,y,{body:b}=c[INTERNALS$2];if(c.bodyUsed)throw new Error("cannot clone body after it is used");return b instanceof Stream__default&&typeof b.getBoundary!="function"&&(d=new Stream.PassThrough({highWaterMark:l}),y=new Stream.PassThrough({highWaterMark:l}),b.pipe(d),b.pipe(y),c[INTERNALS$2].stream=d,b=y),b},"clone"),getNonSpecFormDataBoundary=require$$0.deprecate(c=>c.getBoundary(),"form-data doesn't follow the spec and requires special treatment. Use alternative package","https://github.com/node-fetch/node-fetch/issues/1167"),extractContentType=u((c,l)=>c===null?null:typeof c=="string"?"text/plain;charset=UTF-8":isURLSearchParameters(c)?"application/x-www-form-urlencoded;charset=UTF-8":isBlob(c)?c.type||null:require$$6.Buffer.isBuffer(c)||require$$0.types.isAnyArrayBuffer(c)||ArrayBuffer.isView(c)?null:c instanceof FormData?`multipart/form-data; boundary=${l[INTERNALS$2].boundary}`:c&&typeof c.getBoundary=="function"?`multipart/form-data;boundary=${getNonSpecFormDataBoundary(c)}`:c instanceof Stream__default?null:"text/plain;charset=UTF-8","extractContentType"),getTotalBytes=u(c=>{const{body:l}=c[INTERNALS$2];return l===null?0:isBlob(l)?l.size:require$$6.Buffer.isBuffer(l)?l.length:l&&typeof l.getLengthSync=="function"&&l.hasKnownLength&&l.hasKnownLength()?l.getLengthSync():null},"getTotalBytes"),writeToStream=u(async(c,{body:l})=>{l===null?c.end():await pipeline(l,c)},"writeToStream"),validateHeaderName=typeof http__default.validateHeaderName=="function"?http__default.validateHeaderName:c=>{if(!/^[\^`\-\w!#$%&'*+.|~]+$/.test(c)){const l=new TypeError(`Header name must be a valid HTTP token [${c}]`);throw Object.defineProperty(l,"code",{value:"ERR_INVALID_HTTP_TOKEN"}),l}},validateHeaderValue=typeof http__default.validateHeaderValue=="function"?http__default.validateHeaderValue:(c,l)=>{if(/[^\t\u0020-\u007E\u0080-\u00FF]/.test(l)){const d=new TypeError(`Invalid character in header content ["${c}"]`);throw Object.defineProperty(d,"code",{value:"ERR_INVALID_CHAR"}),d}},Kt=class Kt extends URLSearchParams{constructor(l){let d=[];if(l instanceof Kt){const y=l.raw();for(const[b,R]of Object.entries(y))d.push(...R.map(w=>[b,w]))}else if(l!=null)if(typeof l=="object"&&!require$$0.types.isBoxedPrimitive(l)){const y=l[Symbol.iterator];if(y==null)d.push(...Object.entries(l));else{if(typeof y!="function")throw new TypeError("Header pairs must be iterable");d=[...l].map(b=>{if(typeof b!="object"||require$$0.types.isBoxedPrimitive(b))throw new TypeError("Each header pair must be an iterable object");return[...b]}).map(b=>{if(b.length!==2)throw new TypeError("Each header pair must be a name/value tuple");return[...b]})}}else throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(sequence> or record)");return d=d.length>0?d.map(([y,b])=>(validateHeaderName(y),validateHeaderValue(y,String(b)),[String(y).toLowerCase(),String(b)])):void 0,super(d),new Proxy(this,{get(y,b,R){switch(b){case"append":case"set":return(w,v)=>(validateHeaderName(w),validateHeaderValue(w,String(v)),URLSearchParams.prototype[b].call(y,String(w).toLowerCase(),String(v)));case"delete":case"has":case"getAll":return w=>(validateHeaderName(w),URLSearchParams.prototype[b].call(y,String(w).toLowerCase()));case"keys":return()=>(y.sort(),new Set(URLSearchParams.prototype.keys.call(y)).keys());default:return Reflect.get(y,b,R)}}})}get[Symbol.toStringTag](){return this.constructor.name}toString(){return Object.prototype.toString.call(this)}get(l){const d=this.getAll(l);if(d.length===0)return null;let y=d.join(", ");return/^content-encoding$/i.test(l)&&(y=y.toLowerCase()),y}forEach(l,d=void 0){for(const y of this.keys())Reflect.apply(l,d,[this.get(y),y,this])}*values(){for(const l of this.keys())yield this.get(l)}*entries(){for(const l of this.keys())yield[l,this.get(l)]}[Symbol.iterator](){return this.entries()}raw(){return[...this.keys()].reduce((l,d)=>(l[d]=this.getAll(d),l),{})}[Symbol.for("nodejs.util.inspect.custom")](){return[...this.keys()].reduce((l,d)=>{const y=this.getAll(d);return d==="host"?l[d]=y[0]:l[d]=y.length>1?y:y[0],l},{})}};u(Kt,"Headers");let Headers=Kt;Object.defineProperties(Headers.prototype,["get","entries","forEach","values"].reduce((c,l)=>(c[l]={enumerable:!0},c),{}));function fromRawHeaders(c=[]){return new Headers(c.reduce((l,d,y,b)=>(y%2===0&&l.push(b.slice(y,y+2)),l),[]).filter(([l,d])=>{try{return validateHeaderName(l),validateHeaderValue(l,String(d)),!0}catch{return!1}}))}u(fromRawHeaders,"fromRawHeaders");const redirectStatus=new Set([301,302,303,307,308]),isRedirect=u(c=>redirectStatus.has(c),"isRedirect"),INTERNALS$1=Symbol("Response internals"),De=class De extends Body{constructor(l=null,d={}){super(l,d);const y=d.status!=null?d.status:200,b=new Headers(d.headers);if(l!==null&&!b.has("Content-Type")){const R=extractContentType(l,this);R&&b.append("Content-Type",R)}this[INTERNALS$1]={type:"default",url:d.url,status:y,statusText:d.statusText||"",headers:b,counter:d.counter,highWaterMark:d.highWaterMark}}get type(){return this[INTERNALS$1].type}get url(){return this[INTERNALS$1].url||""}get status(){return this[INTERNALS$1].status}get ok(){return this[INTERNALS$1].status>=200&&this[INTERNALS$1].status<300}get redirected(){return this[INTERNALS$1].counter>0}get statusText(){return this[INTERNALS$1].statusText}get headers(){return this[INTERNALS$1].headers}get highWaterMark(){return this[INTERNALS$1].highWaterMark}clone(){return new De(clone(this,this.highWaterMark),{type:this.type,url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected,size:this.size,highWaterMark:this.highWaterMark})}static redirect(l,d=302){if(!isRedirect(d))throw new RangeError('Failed to execute "redirect" on "response": Invalid status code');return new De(null,{headers:{location:new URL(l).toString()},status:d})}static error(){const l=new De(null,{status:0,statusText:""});return l[INTERNALS$1].type="error",l}static json(l=void 0,d={}){const y=JSON.stringify(l);if(y===void 0)throw new TypeError("data is not JSON serializable");const b=new Headers(d&&d.headers);return b.has("content-type")||b.set("content-type","application/json"),new De(y,{...d,headers:b})}get[Symbol.toStringTag](){return"Response"}};u(De,"Response");let Response=De;Object.defineProperties(Response.prototype,{type:{enumerable:!0},url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});const getSearch=u(c=>{if(c.search)return c.search;const l=c.href.length-1,d=c.hash||(c.href[l]==="#"?"#":"");return c.href[l-d.length]==="?"?"?":""},"getSearch");function stripURLForUseAsAReferrer(c,l=!1){return c==null||(c=new URL(c),/^(about|blob|data):$/.test(c.protocol))?"no-referrer":(c.username="",c.password="",c.hash="",l&&(c.pathname="",c.search=""),c)}u(stripURLForUseAsAReferrer,"stripURLForUseAsAReferrer");const ReferrerPolicy=new Set(["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"]),DEFAULT_REFERRER_POLICY="strict-origin-when-cross-origin";function validateReferrerPolicy(c){if(!ReferrerPolicy.has(c))throw new TypeError(`Invalid referrerPolicy: ${c}`);return c}u(validateReferrerPolicy,"validateReferrerPolicy");function isOriginPotentiallyTrustworthy(c){if(/^(http|ws)s:$/.test(c.protocol))return!0;const l=c.host.replace(/(^\[)|(]$)/g,""),d=require$$4.isIP(l);return d===4&&/^127\./.test(l)||d===6&&/^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(l)?!0:c.host==="localhost"||c.host.endsWith(".localhost")?!1:c.protocol==="file:"}u(isOriginPotentiallyTrustworthy,"isOriginPotentiallyTrustworthy");function isUrlPotentiallyTrustworthy(c){return/^about:(blank|srcdoc)$/.test(c)||c.protocol==="data:"||/^(blob|filesystem):$/.test(c.protocol)?!0:isOriginPotentiallyTrustworthy(c)}u(isUrlPotentiallyTrustworthy,"isUrlPotentiallyTrustworthy");function determineRequestsReferrer(c,{referrerURLCallback:l,referrerOriginCallback:d}={}){if(c.referrer==="no-referrer"||c.referrerPolicy==="")return null;const y=c.referrerPolicy;if(c.referrer==="about:client")return"no-referrer";const b=c.referrer;let R=stripURLForUseAsAReferrer(b),w=stripURLForUseAsAReferrer(b,!0);R.toString().length>4096&&(R=w),l&&(R=l(R)),d&&(w=d(w));const v=new URL(c.url);switch(y){case"no-referrer":return"no-referrer";case"origin":return w;case"unsafe-url":return R;case"strict-origin":return isUrlPotentiallyTrustworthy(R)&&!isUrlPotentiallyTrustworthy(v)?"no-referrer":w.toString();case"strict-origin-when-cross-origin":return R.origin===v.origin?R:isUrlPotentiallyTrustworthy(R)&&!isUrlPotentiallyTrustworthy(v)?"no-referrer":w;case"same-origin":return R.origin===v.origin?R:"no-referrer";case"origin-when-cross-origin":return R.origin===v.origin?R:w;case"no-referrer-when-downgrade":return isUrlPotentiallyTrustworthy(R)&&!isUrlPotentiallyTrustworthy(v)?"no-referrer":R;default:throw new TypeError(`Invalid referrerPolicy: ${y}`)}}u(determineRequestsReferrer,"determineRequestsReferrer");function parseReferrerPolicyFromHeader(c){const l=(c.get("referrer-policy")||"").split(/[,\s]+/);let d="";for(const y of l)y&&ReferrerPolicy.has(y)&&(d=y);return d}u(parseReferrerPolicyFromHeader,"parseReferrerPolicyFromHeader");const INTERNALS=Symbol("Request internals"),isRequest=u(c=>typeof c=="object"&&typeof c[INTERNALS]=="object","isRequest"),doBadDataWarn=require$$0.deprecate(()=>{},".data is not a valid RequestInit property, use .body instead","https://github.com/node-fetch/node-fetch/issues/1000 (request)"),Jt=class Jt extends Body{constructor(l,d={}){let y;if(isRequest(l)?y=new URL(l.url):(y=new URL(l),l={}),y.username!==""||y.password!=="")throw new TypeError(`${y} is an url with embedded credentials.`);let b=d.method||l.method||"GET";if(/^(delete|get|head|options|post|put)$/i.test(b)&&(b=b.toUpperCase()),!isRequest(d)&&"data"in d&&doBadDataWarn(),(d.body!=null||isRequest(l)&&l.body!==null)&&(b==="GET"||b==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");const R=d.body?d.body:isRequest(l)&&l.body!==null?clone(l):null;super(R,{size:d.size||l.size||0});const w=new Headers(d.headers||l.headers||{});if(R!==null&&!w.has("Content-Type")){const B=extractContentType(R,this);B&&w.set("Content-Type",B)}let v=isRequest(l)?l.signal:null;if("signal"in d&&(v=d.signal),v!=null&&!isAbortSignal(v))throw new TypeError("Expected signal to be an instanceof AbortSignal or EventTarget");let I=d.referrer==null?l.referrer:d.referrer;if(I==="")I="no-referrer";else if(I){const B=new URL(I);I=/^about:(\/\/)?client$/.test(B)?"client":B}else I=void 0;this[INTERNALS]={method:b,redirect:d.redirect||l.redirect||"follow",headers:w,parsedURL:y,signal:v,referrer:I},this.follow=d.follow===void 0?l.follow===void 0?20:l.follow:d.follow,this.compress=d.compress===void 0?l.compress===void 0?!0:l.compress:d.compress,this.counter=d.counter||l.counter||0,this.agent=d.agent||l.agent,this.highWaterMark=d.highWaterMark||l.highWaterMark||16384,this.insecureHTTPParser=d.insecureHTTPParser||l.insecureHTTPParser||!1,this.referrerPolicy=d.referrerPolicy||l.referrerPolicy||""}get method(){return this[INTERNALS].method}get url(){return require$$1.format(this[INTERNALS].parsedURL)}get headers(){return this[INTERNALS].headers}get redirect(){return this[INTERNALS].redirect}get signal(){return this[INTERNALS].signal}get referrer(){if(this[INTERNALS].referrer==="no-referrer")return"";if(this[INTERNALS].referrer==="client")return"about:client";if(this[INTERNALS].referrer)return this[INTERNALS].referrer.toString()}get referrerPolicy(){return this[INTERNALS].referrerPolicy}set referrerPolicy(l){this[INTERNALS].referrerPolicy=validateReferrerPolicy(l)}clone(){return new Jt(this)}get[Symbol.toStringTag](){return"Request"}};u(Jt,"Request");let Request=Jt;Object.defineProperties(Request.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0},referrer:{enumerable:!0},referrerPolicy:{enumerable:!0}});const getNodeRequestOptions=u(c=>{const{parsedURL:l}=c[INTERNALS],d=new Headers(c[INTERNALS].headers);d.has("Accept")||d.set("Accept","*/*");let y=null;if(c.body===null&&/^(post|put)$/i.test(c.method)&&(y="0"),c.body!==null){const v=getTotalBytes(c);typeof v=="number"&&!Number.isNaN(v)&&(y=String(v))}y&&d.set("Content-Length",y),c.referrerPolicy===""&&(c.referrerPolicy=DEFAULT_REFERRER_POLICY),c.referrer&&c.referrer!=="no-referrer"?c[INTERNALS].referrer=determineRequestsReferrer(c):c[INTERNALS].referrer="no-referrer",c[INTERNALS].referrer instanceof URL&&d.set("Referer",c.referrer),d.has("User-Agent")||d.set("User-Agent","node-fetch"),c.compress&&!d.has("Accept-Encoding")&&d.set("Accept-Encoding","gzip, deflate, br");let{agent:b}=c;typeof b=="function"&&(b=b(l));const R=getSearch(l),w={path:l.pathname+R,method:c.method,headers:d[Symbol.for("nodejs.util.inspect.custom")](),insecureHTTPParser:c.insecureHTTPParser,agent:b};return{parsedURL:l,options:w}},"getNodeRequestOptions"),sn=class sn extends FetchBaseError{constructor(l,d="aborted"){super(l,d)}};u(sn,"AbortError");let AbortError=sn;/*! node-domexception. MIT License. Jimmy Wärting */if(!globalThis.DOMException)try{const{MessageChannel:c}=require("worker_threads"),l=new c().port1,d=new ArrayBuffer;l.postMessage(d,[d,d])}catch(c){c.constructor.name==="DOMException"&&(globalThis.DOMException=c.constructor)}var nodeDomexception=globalThis.DOMException;const DOMException=_commonjsHelpers.getDefaultExportFromCjs(nodeDomexception),{stat}=node_fs.promises,blobFromSync=u((c,l)=>fromBlob(node_fs.statSync(c),c,l),"blobFromSync"),blobFrom=u((c,l)=>stat(c).then(d=>fromBlob(d,c,l)),"blobFrom"),fileFrom=u((c,l)=>stat(c).then(d=>fromFile(d,c,l)),"fileFrom"),fileFromSync=u((c,l)=>fromFile(node_fs.statSync(c),c,l),"fileFromSync"),fromBlob=u((c,l,d="")=>new r$1([new BlobDataItem({path:l,size:c.size,lastModified:c.mtimeMs,start:0})],{type:d}),"fromBlob"),fromFile=u((c,l,d="")=>new File$1([new BlobDataItem({path:l,size:c.size,lastModified:c.mtimeMs,start:0})],node_path.basename(l),{type:d,lastModified:c.mtimeMs}),"fromFile"),Xt=class Xt{constructor(l){ye(this,Me,void 0);ye(this,xe,void 0);ne(this,Me,l.path),ne(this,xe,l.start),this.size=l.size,this.lastModified=l.lastModified}slice(l,d){return new Xt({path:D(this,Me),lastModified:this.lastModified,size:d-l,start:D(this,xe)+l})}async*stream(){const{mtimeMs:l}=await stat(D(this,Me));if(l>this.lastModified)throw new DOMException("The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.","NotReadableError");yield*node_fs.createReadStream(D(this,Me),{start:D(this,xe),end:D(this,xe)+this.size-1})}get[Symbol.toStringTag](){return"Blob"}};Me=new WeakMap,xe=new WeakMap,u(Xt,"BlobDataItem");let BlobDataItem=Xt;const supportedSchemas=new Set(["data:","http:","https:"]);async function fetch$1(c,l){return new Promise((d,y)=>{const b=new Request(c,l),{parsedURL:R,options:w}=getNodeRequestOptions(b);if(!supportedSchemas.has(R.protocol))throw new TypeError(`node-fetch cannot load ${c}. URL scheme "${R.protocol.replace(/:$/,"")}" is not supported.`);if(R.protocol==="data:"){const E=dataUriToBuffer(b.url),K=new Response(E,{headers:{"Content-Type":E.typeFull}});d(K);return}const v=(R.protocol==="https:"?https__default:http__default).request,{signal:I}=b;let B=null;const F=u(()=>{const E=new AbortError("The operation was aborted.");y(E),b.body&&b.body instanceof Stream__default.Readable&&b.body.destroy(E),!(!B||!B.body)&&B.body.emit("error",E)},"abort");if(I&&I.aborted){F();return}const k=u(()=>{F(),$()},"abortAndFinalize"),T=v(R.toString(),w);I&&I.addEventListener("abort",k);const $=u(()=>{T.abort(),I&&I.removeEventListener("abort",k)},"finalize");T.on("error",E=>{y(new FetchError(`request to ${b.url} failed, reason: ${E.message}`,"system",E)),$()}),fixResponseChunkedTransferBadEnding(T,E=>{B&&B.body&&B.body.destroy(E)}),process.version<"v14"&&T.on("socket",E=>{let K;E.prependListener("end",()=>{K=E._eventsCount}),E.prependListener("close",U=>{if(B&&K{T.setTimeout(0);const K=fromRawHeaders(E.rawHeaders);if(isRedirect(E.statusCode)){const M=K.get("Location");let H=null;try{H=M===null?null:new URL(M,b.url)}catch{if(b.redirect!=="manual"){y(new FetchError(`uri requested responds with an invalid redirect URL: ${M}`,"invalid-redirect")),$();return}}switch(b.redirect){case"error":y(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${b.url}`,"no-redirect")),$();return;case"manual":break;case"follow":{if(H===null)break;if(b.counter>=b.follow){y(new FetchError(`maximum redirect reached at: ${b.url}`,"max-redirect")),$();return}const G={headers:new Headers(b.headers),follow:b.follow,counter:b.counter+1,agent:b.agent,compress:b.compress,method:b.method,body:clone(b),signal:b.signal,size:b.size,referrer:b.referrer,referrerPolicy:b.referrerPolicy};if(!isDomainOrSubdomain(b.url,H)||!isSameProtocol(b.url,H))for(const wt of["authorization","www-authenticate","cookie","cookie2"])G.headers.delete(wt);if(E.statusCode!==303&&b.body&&l.body instanceof Stream__default.Readable){y(new FetchError("Cannot follow redirect with body being a readable stream","unsupported-redirect")),$();return}(E.statusCode===303||(E.statusCode===301||E.statusCode===302)&&b.method==="POST")&&(G.method="GET",G.body=void 0,G.headers.delete("content-length"));const Q=parseReferrerPolicyFromHeader(K);Q&&(G.referrerPolicy=Q),d(fetch$1(new Request(H,G))),$();return}default:return y(new TypeError(`Redirect option '${b.redirect}' is not a valid value of RequestRedirect`))}}I&&E.once("end",()=>{I.removeEventListener("abort",k)});let U=Stream.pipeline(E,new Stream.PassThrough,M=>{M&&y(M)});process.version<"v12.10"&&E.on("aborted",k);const N={url:b.url,status:E.statusCode,statusText:E.statusMessage,headers:K,size:b.size,counter:b.counter,highWaterMark:b.highWaterMark},J=K.get("Content-Encoding");if(!b.compress||b.method==="HEAD"||J===null||E.statusCode===204||E.statusCode===304){B=new Response(U,N),d(B);return}const ge={flush:zlib__default.Z_SYNC_FLUSH,finishFlush:zlib__default.Z_SYNC_FLUSH};if(J==="gzip"||J==="x-gzip"){U=Stream.pipeline(U,zlib__default.createGunzip(ge),M=>{M&&y(M)}),B=new Response(U,N),d(B);return}if(J==="deflate"||J==="x-deflate"){const M=Stream.pipeline(E,new Stream.PassThrough,H=>{H&&y(H)});M.once("data",H=>{(H[0]&15)===8?U=Stream.pipeline(U,zlib__default.createInflate(),G=>{G&&y(G)}):U=Stream.pipeline(U,zlib__default.createInflateRaw(),G=>{G&&y(G)}),B=new Response(U,N),d(B)}),M.once("end",()=>{B||(B=new Response(U,N),d(B))});return}if(J==="br"){U=Stream.pipeline(U,zlib__default.createBrotliDecompress(),M=>{M&&y(M)}),B=new Response(U,N),d(B);return}B=new Response(U,N),d(B)}),writeToStream(T,b).catch(y)})}u(fetch$1,"fetch$1");function fixResponseChunkedTransferBadEnding(c,l){const d=require$$6.Buffer.from(`0\r +\r +`);let y=!1,b=!1,R;c.on("response",w=>{const{headers:v}=w;y=v["transfer-encoding"]==="chunked"&&!v["content-length"]}),c.on("socket",w=>{const v=u(()=>{if(y&&!b){const B=new Error("Premature close");B.code="ERR_STREAM_PREMATURE_CLOSE",l(B)}},"onSocketClose"),I=u(B=>{b=require$$6.Buffer.compare(B.slice(-5),d)===0,!b&&R&&(b=require$$6.Buffer.compare(R.slice(-3),d.slice(0,3))===0&&require$$6.Buffer.compare(B.slice(-2),d.slice(3))===0),R=B},"onData");w.prependListener("close",v),w.on("data",I),c.on("close",()=>{w.removeListener("close",v),w.removeListener("data",I)})})}u(fixResponseChunkedTransferBadEnding,"fixResponseChunkedTransferBadEnding");const privateData=new WeakMap,wrappers=new WeakMap;function pd(c){const l=privateData.get(c);return console.assert(l!=null,"'this' is expected an Event object, but got",c),l}u(pd,"pd");function setCancelFlag(c){if(c.passiveListener!=null){typeof console<"u"&&typeof console.error=="function"&&console.error("Unable to preventDefault inside passive event listener invocation.",c.passiveListener);return}c.event.cancelable&&(c.canceled=!0,typeof c.event.preventDefault=="function"&&c.event.preventDefault())}u(setCancelFlag,"setCancelFlag");function Event(c,l){privateData.set(this,{eventTarget:c,event:l,eventPhase:2,currentTarget:c,canceled:!1,stopped:!1,immediateStopped:!1,passiveListener:null,timeStamp:l.timeStamp||Date.now()}),Object.defineProperty(this,"isTrusted",{value:!1,enumerable:!0});const d=Object.keys(l);for(let y=0;y0){const c=new Array(arguments.length);for(let l=0;lt(c,"name",{value:l,configurable:!0}),"e");const fetch=fetch$1;s();function s(){!globalThis.process?.versions?.node&&!globalThis.process?.env.DISABLE_NODE_FETCH_NATIVE_WARN&&console.warn("[node-fetch-native] Node.js compatible build of `node-fetch-native` is being used in a non-Node.js environment. Please make sure you are using proper export conditions or report this issue to https://github.com/unjs/node-fetch-native. You can set `process.env.DISABLE_NODE_FETCH_NATIVE_WARN` to disable this warning.")}u(s,"s"),e(s,"checkNodeEnvironment"),exports.AbortController=AbortController$1,exports.AbortError=AbortError,exports.Blob=r$1,exports.FetchError=FetchError,exports.File=File$1,exports.FormData=FormData,exports.Headers=Headers,exports.Request=Request,exports.Response=Response,exports.blobFrom=blobFrom,exports.blobFromSync=blobFromSync,exports.default=fetch,exports.fetch=fetch,exports.fileFrom=fileFrom,exports.fileFromSync=fileFromSync,exports.isRedirect=isRedirect; diff --git a/node_modules/node-fetch-native-with-agent/dist/node.mjs b/node_modules/node-fetch-native-with-agent/dist/node.mjs new file mode 100644 index 0000000..e498031 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/node.mjs @@ -0,0 +1,19 @@ +var As=Object.defineProperty;var n=(i,o)=>As(i,"name",{value:o,configurable:!0});var fi=(i,o,a)=>{if(!o.has(i))throw TypeError("Cannot "+a)};var O=(i,o,a)=>(fi(i,o,"read from private field"),a?a.call(i):o.get(i)),be=(i,o,a)=>{if(o.has(i))throw TypeError("Cannot add the same private member more than once");o instanceof WeakSet?o.add(i):o.set(i,a)},X=(i,o,a,u)=>(fi(i,o,"write to private field"),u?u.call(i,a):o.set(i,a),a);var ve,kt,bt,Cr,Ve,Wt,qt,Ot,ee,zt,Ne,He,It;import vt from"node:http";import Bs from"node:https";import st from"node:zlib";import me,{PassThrough as cr,pipeline as lt}from"node:stream";import{Buffer as M}from"node:buffer";import{types as dr,promisify as ks,deprecate as hr}from"node:util";import{c as Wn,g as Ws}from"./shared/node-fetch-native-with-agent.1a4a356d.mjs";import{format as qs}from"node:url";import{isIP as Os}from"node:net";import{statSync as ci,createReadStream as zs,promises as Is}from"node:fs";import{basename as Fs}from"node:path";function js(i){if(!/^data:/i.test(i))throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")');i=i.replace(/\r?\n/g,"");const o=i.indexOf(",");if(o===-1||o<=4)throw new TypeError("malformed data: URI");const a=i.substring(5,o).split(";");let u="",l=!1;const p=a[0]||"text/plain";let h=p;for(let E=1;Et(e))}n(T,"promiseResolvedWith");function b(e){return w(e)}n(b,"promiseRejectedWith");function q(e,t,r){return A.call(e,t,r)}n(q,"PerformPromiseThen");function _(e,t,r){q(q(e,t,r),void 0,p)}n(_,"uponPromise");function V(e,t){_(e,t)}n(V,"uponFulfillment");function I(e,t){_(e,void 0,t)}n(I,"uponRejection");function F(e,t,r){return q(e,t,r)}n(F,"transformPromiseWith");function Q(e){q(e,void 0,p)}n(Q,"setPromiseIsHandledToTrue");let ge=n(e=>{if(typeof queueMicrotask=="function")ge=queueMicrotask;else{const t=T(void 0);ge=n(r=>q(t,r),"_queueMicrotask")}return ge(e)},"_queueMicrotask");function z(e,t,r){if(typeof e!="function")throw new TypeError("Argument is not a function");return Function.prototype.apply.call(e,t,r)}n(z,"reflectCall");function j(e,t,r){try{return T(z(e,t,r))}catch(s){return b(s)}}n(j,"promiseCall");const U=16384,bn=class bn{constructor(){this._cursor=0,this._size=0,this._front={_elements:[],_next:void 0},this._back=this._front,this._cursor=0,this._size=0}get length(){return this._size}push(t){const r=this._back;let s=r;r._elements.length===U-1&&(s={_elements:[],_next:void 0}),r._elements.push(t),s!==r&&(this._back=s,r._next=s),++this._size}shift(){const t=this._front;let r=t;const s=this._cursor;let f=s+1;const c=t._elements,d=c[s];return f===U&&(r=t._next,f=0),--this._size,this._cursor=f,t!==r&&(this._front=r),c[s]=void 0,d}forEach(t){let r=this._cursor,s=this._front,f=s._elements;for(;(r!==f.length||s._next!==void 0)&&!(r===f.length&&(s=s._next,f=s._elements,r=0,f.length===0));)t(f[r]),++r}peek(){const t=this._front,r=this._cursor;return t._elements[r]}};n(bn,"SimpleQueue");let D=bn;const Ft=Symbol("[[AbortSteps]]"),Qn=Symbol("[[ErrorSteps]]"),Ar=Symbol("[[CancelSteps]]"),Br=Symbol("[[PullSteps]]"),kr=Symbol("[[ReleaseSteps]]");function Yn(e,t){e._ownerReadableStream=t,t._reader=e,t._state==="readable"?qr(e):t._state==="closed"?Li(e):Gn(e,t._storedError)}n(Yn,"ReadableStreamReaderGenericInitialize");function Wr(e,t){const r=e._ownerReadableStream;return ie(r,t)}n(Wr,"ReadableStreamReaderGenericCancel");function _e(e){const t=e._ownerReadableStream;t._state==="readable"?Or(e,new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")):$i(e,new TypeError("Reader was released and can no longer be used to monitor the stream's closedness")),t._readableStreamController[kr](),t._reader=void 0,e._ownerReadableStream=void 0}n(_e,"ReadableStreamReaderGenericRelease");function jt(e){return new TypeError("Cannot "+e+" a stream using a released reader")}n(jt,"readerLockException");function qr(e){e._closedPromise=E((t,r)=>{e._closedPromise_resolve=t,e._closedPromise_reject=r})}n(qr,"defaultReaderClosedPromiseInitialize");function Gn(e,t){qr(e),Or(e,t)}n(Gn,"defaultReaderClosedPromiseInitializeAsRejected");function Li(e){qr(e),Zn(e)}n(Li,"defaultReaderClosedPromiseInitializeAsResolved");function Or(e,t){e._closedPromise_reject!==void 0&&(Q(e._closedPromise),e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0)}n(Or,"defaultReaderClosedPromiseReject");function $i(e,t){Gn(e,t)}n($i,"defaultReaderClosedPromiseResetToRejected");function Zn(e){e._closedPromise_resolve!==void 0&&(e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0)}n(Zn,"defaultReaderClosedPromiseResolve");const Kn=Number.isFinite||function(e){return typeof e=="number"&&isFinite(e)},Di=Math.trunc||function(e){return e<0?Math.ceil(e):Math.floor(e)};function Mi(e){return typeof e=="object"||typeof e=="function"}n(Mi,"isDictionary");function ue(e,t){if(e!==void 0&&!Mi(e))throw new TypeError(`${t} is not an object.`)}n(ue,"assertDictionary");function Z(e,t){if(typeof e!="function")throw new TypeError(`${t} is not a function.`)}n(Z,"assertFunction");function Ui(e){return typeof e=="object"&&e!==null||typeof e=="function"}n(Ui,"isObject");function Jn(e,t){if(!Ui(e))throw new TypeError(`${t} is not an object.`)}n(Jn,"assertObject");function Se(e,t,r){if(e===void 0)throw new TypeError(`Parameter ${t} is required in '${r}'.`)}n(Se,"assertRequiredArgument");function zr(e,t,r){if(e===void 0)throw new TypeError(`${t} is required in '${r}'.`)}n(zr,"assertRequiredField");function Ir(e){return Number(e)}n(Ir,"convertUnrestrictedDouble");function Xn(e){return e===0?0:e}n(Xn,"censorNegativeZero");function xi(e){return Xn(Di(e))}n(xi,"integerPart");function Fr(e,t){const s=Number.MAX_SAFE_INTEGER;let f=Number(e);if(f=Xn(f),!Kn(f))throw new TypeError(`${t} is not a finite number`);if(f=xi(f),f<0||f>s)throw new TypeError(`${t} is outside the accepted range of 0 to ${s}, inclusive`);return!Kn(f)||f===0?0:f}n(Fr,"convertUnsignedLongLongWithEnforceRange");function jr(e,t){if(!We(e))throw new TypeError(`${t} is not a ReadableStream.`)}n(jr,"assertReadableStream");function Qe(e){return new fe(e)}n(Qe,"AcquireReadableStreamDefaultReader");function eo(e,t){e._reader._readRequests.push(t)}n(eo,"ReadableStreamAddReadRequest");function Lr(e,t,r){const f=e._reader._readRequests.shift();r?f._closeSteps():f._chunkSteps(t)}n(Lr,"ReadableStreamFulfillReadRequest");function Lt(e){return e._reader._readRequests.length}n(Lt,"ReadableStreamGetNumReadRequests");function to(e){const t=e._reader;return!(t===void 0||!Ee(t))}n(to,"ReadableStreamHasDefaultReader");const mn=class mn{constructor(t){if(Se(t,1,"ReadableStreamDefaultReader"),jr(t,"First parameter"),qe(t))throw new TypeError("This stream has already been locked for exclusive reading by another reader");Yn(this,t),this._readRequests=new D}get closed(){return Ee(this)?this._closedPromise:b($t("closed"))}cancel(t=void 0){return Ee(this)?this._ownerReadableStream===void 0?b(jt("cancel")):Wr(this,t):b($t("cancel"))}read(){if(!Ee(this))return b($t("read"));if(this._ownerReadableStream===void 0)return b(jt("read from"));let t,r;const s=E((c,d)=>{t=c,r=d});return mt(this,{_chunkSteps:c=>t({value:c,done:!1}),_closeSteps:()=>t({value:void 0,done:!0}),_errorSteps:c=>r(c)}),s}releaseLock(){if(!Ee(this))throw $t("releaseLock");this._ownerReadableStream!==void 0&&Ni(this)}};n(mn,"ReadableStreamDefaultReader");let fe=mn;Object.defineProperties(fe.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),h(fe.prototype.cancel,"cancel"),h(fe.prototype.read,"read"),h(fe.prototype.releaseLock,"releaseLock"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(fe.prototype,Symbol.toStringTag,{value:"ReadableStreamDefaultReader",configurable:!0});function Ee(e){return!l(e)||!Object.prototype.hasOwnProperty.call(e,"_readRequests")?!1:e instanceof fe}n(Ee,"IsReadableStreamDefaultReader");function mt(e,t){const r=e._ownerReadableStream;r._disturbed=!0,r._state==="closed"?t._closeSteps():r._state==="errored"?t._errorSteps(r._storedError):r._readableStreamController[Br](t)}n(mt,"ReadableStreamDefaultReaderRead");function Ni(e){_e(e);const t=new TypeError("Reader was released");ro(e,t)}n(Ni,"ReadableStreamDefaultReaderRelease");function ro(e,t){const r=e._readRequests;e._readRequests=new D,r.forEach(s=>{s._errorSteps(t)})}n(ro,"ReadableStreamDefaultReaderErrorReadRequests");function $t(e){return new TypeError(`ReadableStreamDefaultReader.prototype.${e} can only be used on a ReadableStreamDefaultReader`)}n($t,"defaultReaderBrandCheckException");const Hi=Object.getPrototypeOf(Object.getPrototypeOf(async function*(){}).prototype),yn=class yn{constructor(t,r){this._ongoingPromise=void 0,this._isFinished=!1,this._reader=t,this._preventCancel=r}next(){const t=n(()=>this._nextSteps(),"nextSteps");return this._ongoingPromise=this._ongoingPromise?F(this._ongoingPromise,t,t):t(),this._ongoingPromise}return(t){const r=n(()=>this._returnSteps(t),"returnSteps");return this._ongoingPromise?F(this._ongoingPromise,r,r):r()}_nextSteps(){if(this._isFinished)return Promise.resolve({value:void 0,done:!0});const t=this._reader;let r,s;const f=E((d,m)=>{r=d,s=m});return mt(t,{_chunkSteps:d=>{this._ongoingPromise=void 0,ge(()=>r({value:d,done:!1}))},_closeSteps:()=>{this._ongoingPromise=void 0,this._isFinished=!0,_e(t),r({value:void 0,done:!0})},_errorSteps:d=>{this._ongoingPromise=void 0,this._isFinished=!0,_e(t),s(d)}}),f}_returnSteps(t){if(this._isFinished)return Promise.resolve({value:t,done:!0});this._isFinished=!0;const r=this._reader;if(!this._preventCancel){const s=Wr(r,t);return _e(r),F(s,()=>({value:t,done:!0}))}return _e(r),T({value:t,done:!0})}};n(yn,"ReadableStreamAsyncIteratorImpl");let Dt=yn;const no={next(){return oo(this)?this._asyncIteratorImpl.next():b(io("next"))},return(e){return oo(this)?this._asyncIteratorImpl.return(e):b(io("return"))}};Object.setPrototypeOf(no,Hi);function Vi(e,t){const r=Qe(e),s=new Dt(r,t),f=Object.create(no);return f._asyncIteratorImpl=s,f}n(Vi,"AcquireReadableStreamAsyncIterator");function oo(e){if(!l(e)||!Object.prototype.hasOwnProperty.call(e,"_asyncIteratorImpl"))return!1;try{return e._asyncIteratorImpl instanceof Dt}catch{return!1}}n(oo,"IsReadableStreamAsyncIterator");function io(e){return new TypeError(`ReadableStreamAsyncIterator.${e} can only be used on a ReadableSteamAsyncIterator`)}n(io,"streamAsyncIteratorBrandCheckException");const ao=Number.isNaN||function(e){return e!==e};var $r,Dr,Mr;function yt(e){return e.slice()}n(yt,"CreateArrayFromList");function so(e,t,r,s,f){new Uint8Array(e).set(new Uint8Array(r,s,f),t)}n(so,"CopyDataBlockBytes");let we=n(e=>(typeof e.transfer=="function"?we=n(t=>t.transfer(),"TransferArrayBuffer"):typeof structuredClone=="function"?we=n(t=>structuredClone(t,{transfer:[t]}),"TransferArrayBuffer"):we=n(t=>t,"TransferArrayBuffer"),we(e)),"TransferArrayBuffer"),Ae=n(e=>(typeof e.detached=="boolean"?Ae=n(t=>t.detached,"IsDetachedBuffer"):Ae=n(t=>t.byteLength===0,"IsDetachedBuffer"),Ae(e)),"IsDetachedBuffer");function lo(e,t,r){if(e.slice)return e.slice(t,r);const s=r-t,f=new ArrayBuffer(s);return so(f,0,e,t,s),f}n(lo,"ArrayBufferSlice");function Mt(e,t){const r=e[t];if(r!=null){if(typeof r!="function")throw new TypeError(`${String(t)} is not a function`);return r}}n(Mt,"GetMethod");function Qi(e){const t={[Symbol.iterator]:()=>e.iterator},r=async function*(){return yield*t}(),s=r.next;return{iterator:r,nextMethod:s,done:!1}}n(Qi,"CreateAsyncFromSyncIterator");const Ur=(Mr=($r=Symbol.asyncIterator)!==null&&$r!==void 0?$r:(Dr=Symbol.for)===null||Dr===void 0?void 0:Dr.call(Symbol,"Symbol.asyncIterator"))!==null&&Mr!==void 0?Mr:"@@asyncIterator";function uo(e,t="sync",r){if(r===void 0)if(t==="async"){if(r=Mt(e,Ur),r===void 0){const c=Mt(e,Symbol.iterator),d=uo(e,"sync",c);return Qi(d)}}else r=Mt(e,Symbol.iterator);if(r===void 0)throw new TypeError("The object is not iterable");const s=z(r,e,[]);if(!l(s))throw new TypeError("The iterator method must return an object");const f=s.next;return{iterator:s,nextMethod:f,done:!1}}n(uo,"GetIterator");function Yi(e){const t=z(e.nextMethod,e.iterator,[]);if(!l(t))throw new TypeError("The iterator.next() method must return an object");return t}n(Yi,"IteratorNext");function Gi(e){return!!e.done}n(Gi,"IteratorComplete");function Zi(e){return e.value}n(Zi,"IteratorValue");function Ki(e){return!(typeof e!="number"||ao(e)||e<0)}n(Ki,"IsNonNegativeNumber");function fo(e){const t=lo(e.buffer,e.byteOffset,e.byteOffset+e.byteLength);return new Uint8Array(t)}n(fo,"CloneAsUint8Array");function xr(e){const t=e._queue.shift();return e._queueTotalSize-=t.size,e._queueTotalSize<0&&(e._queueTotalSize=0),t.value}n(xr,"DequeueValue");function Nr(e,t,r){if(!Ki(r)||r===1/0)throw new RangeError("Size must be a finite, non-NaN, non-negative number.");e._queue.push({value:t,size:r}),e._queueTotalSize+=r}n(Nr,"EnqueueValueWithSize");function Ji(e){return e._queue.peek().value}n(Ji,"PeekQueueValue");function Be(e){e._queue=new D,e._queueTotalSize=0}n(Be,"ResetQueue");function co(e){return e===DataView}n(co,"isDataViewConstructor");function Xi(e){return co(e.constructor)}n(Xi,"isDataView");function ea(e){return co(e)?1:e.BYTES_PER_ELEMENT}n(ea,"arrayBufferViewElementSize");const gn=class gn{constructor(){throw new TypeError("Illegal constructor")}get view(){if(!Hr(this))throw Zr("view");return this._view}respond(t){if(!Hr(this))throw Zr("respond");if(Se(t,1,"respond"),t=Fr(t,"First parameter"),this._associatedReadableByteStreamController===void 0)throw new TypeError("This BYOB request has been invalidated");if(Ae(this._view.buffer))throw new TypeError("The BYOB request's buffer has been detached and so cannot be used as a response");Ht(this._associatedReadableByteStreamController,t)}respondWithNewView(t){if(!Hr(this))throw Zr("respondWithNewView");if(Se(t,1,"respondWithNewView"),!ArrayBuffer.isView(t))throw new TypeError("You can only respond with array buffer views");if(this._associatedReadableByteStreamController===void 0)throw new TypeError("This BYOB request has been invalidated");if(Ae(t.buffer))throw new TypeError("The given view's buffer has been detached and so cannot be used as a response");Vt(this._associatedReadableByteStreamController,t)}};n(gn,"ReadableStreamBYOBRequest");let Re=gn;Object.defineProperties(Re.prototype,{respond:{enumerable:!0},respondWithNewView:{enumerable:!0},view:{enumerable:!0}}),h(Re.prototype.respond,"respond"),h(Re.prototype.respondWithNewView,"respondWithNewView"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(Re.prototype,Symbol.toStringTag,{value:"ReadableStreamBYOBRequest",configurable:!0});const _n=class _n{constructor(){throw new TypeError("Illegal constructor")}get byobRequest(){if(!ze(this))throw _t("byobRequest");return Gr(this)}get desiredSize(){if(!ze(this))throw _t("desiredSize");return Ro(this)}close(){if(!ze(this))throw _t("close");if(this._closeRequested)throw new TypeError("The stream has already been closed; do not close it again!");const t=this._controlledReadableByteStream._state;if(t!=="readable")throw new TypeError(`The stream (in ${t} state) is not in the readable state and cannot be closed`);gt(this)}enqueue(t){if(!ze(this))throw _t("enqueue");if(Se(t,1,"enqueue"),!ArrayBuffer.isView(t))throw new TypeError("chunk must be an array buffer view");if(t.byteLength===0)throw new TypeError("chunk must have non-zero byteLength");if(t.buffer.byteLength===0)throw new TypeError("chunk's buffer must have non-zero byteLength");if(this._closeRequested)throw new TypeError("stream is closed or draining");const r=this._controlledReadableByteStream._state;if(r!=="readable")throw new TypeError(`The stream (in ${r} state) is not in the readable state and cannot be enqueued to`);Nt(this,t)}error(t=void 0){if(!ze(this))throw _t("error");K(this,t)}[Ar](t){ho(this),Be(this);const r=this._cancelAlgorithm(t);return xt(this),r}[Br](t){const r=this._controlledReadableByteStream;if(this._queueTotalSize>0){wo(this,t);return}const s=this._autoAllocateChunkSize;if(s!==void 0){let f;try{f=new ArrayBuffer(s)}catch(d){t._errorSteps(d);return}const c={buffer:f,bufferByteLength:s,byteOffset:0,byteLength:s,bytesFilled:0,minimumFill:1,elementSize:1,viewConstructor:Uint8Array,readerType:"default"};this._pendingPullIntos.push(c)}eo(r,t),Ie(this)}[kr](){if(this._pendingPullIntos.length>0){const t=this._pendingPullIntos.peek();t.readerType="none",this._pendingPullIntos=new D,this._pendingPullIntos.push(t)}}};n(_n,"ReadableByteStreamController");let te=_n;Object.defineProperties(te.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},byobRequest:{enumerable:!0},desiredSize:{enumerable:!0}}),h(te.prototype.close,"close"),h(te.prototype.enqueue,"enqueue"),h(te.prototype.error,"error"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(te.prototype,Symbol.toStringTag,{value:"ReadableByteStreamController",configurable:!0});function ze(e){return!l(e)||!Object.prototype.hasOwnProperty.call(e,"_controlledReadableByteStream")?!1:e instanceof te}n(ze,"IsReadableByteStreamController");function Hr(e){return!l(e)||!Object.prototype.hasOwnProperty.call(e,"_associatedReadableByteStreamController")?!1:e instanceof Re}n(Hr,"IsReadableStreamBYOBRequest");function Ie(e){if(!ia(e))return;if(e._pulling){e._pullAgain=!0;return}e._pulling=!0;const r=e._pullAlgorithm();_(r,()=>(e._pulling=!1,e._pullAgain&&(e._pullAgain=!1,Ie(e)),null),s=>(K(e,s),null))}n(Ie,"ReadableByteStreamControllerCallPullIfNeeded");function ho(e){Qr(e),e._pendingPullIntos=new D}n(ho,"ReadableByteStreamControllerClearPendingPullIntos");function Vr(e,t){let r=!1;e._state==="closed"&&(r=!0);const s=po(t);t.readerType==="default"?Lr(e,s,r):ca(e,s,r)}n(Vr,"ReadableByteStreamControllerCommitPullIntoDescriptor");function po(e){const t=e.bytesFilled,r=e.elementSize;return new e.viewConstructor(e.buffer,e.byteOffset,t/r)}n(po,"ReadableByteStreamControllerConvertPullIntoDescriptor");function Ut(e,t,r,s){e._queue.push({buffer:t,byteOffset:r,byteLength:s}),e._queueTotalSize+=s}n(Ut,"ReadableByteStreamControllerEnqueueChunkToQueue");function bo(e,t,r,s){let f;try{f=lo(t,r,r+s)}catch(c){throw K(e,c),c}Ut(e,f,0,s)}n(bo,"ReadableByteStreamControllerEnqueueClonedChunkToQueue");function mo(e,t){t.bytesFilled>0&&bo(e,t.buffer,t.byteOffset,t.bytesFilled),Ye(e)}n(mo,"ReadableByteStreamControllerEnqueueDetachedPullIntoToQueue");function yo(e,t){const r=Math.min(e._queueTotalSize,t.byteLength-t.bytesFilled),s=t.bytesFilled+r;let f=r,c=!1;const d=s%t.elementSize,m=s-d;m>=t.minimumFill&&(f=m-t.bytesFilled,c=!0);const R=e._queue;for(;f>0;){const y=R.peek(),C=Math.min(f,y.byteLength),P=t.byteOffset+t.bytesFilled;so(t.buffer,P,y.buffer,y.byteOffset,C),y.byteLength===C?R.shift():(y.byteOffset+=C,y.byteLength-=C),e._queueTotalSize-=C,go(e,C,t),f-=C}return c}n(yo,"ReadableByteStreamControllerFillPullIntoDescriptorFromQueue");function go(e,t,r){r.bytesFilled+=t}n(go,"ReadableByteStreamControllerFillHeadPullIntoDescriptor");function _o(e){e._queueTotalSize===0&&e._closeRequested?(xt(e),Pt(e._controlledReadableByteStream)):Ie(e)}n(_o,"ReadableByteStreamControllerHandleQueueDrain");function Qr(e){e._byobRequest!==null&&(e._byobRequest._associatedReadableByteStreamController=void 0,e._byobRequest._view=null,e._byobRequest=null)}n(Qr,"ReadableByteStreamControllerInvalidateBYOBRequest");function Yr(e){for(;e._pendingPullIntos.length>0;){if(e._queueTotalSize===0)return;const t=e._pendingPullIntos.peek();yo(e,t)&&(Ye(e),Vr(e._controlledReadableByteStream,t))}}n(Yr,"ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue");function ta(e){const t=e._controlledReadableByteStream._reader;for(;t._readRequests.length>0;){if(e._queueTotalSize===0)return;const r=t._readRequests.shift();wo(e,r)}}n(ta,"ReadableByteStreamControllerProcessReadRequestsUsingQueue");function ra(e,t,r,s){const f=e._controlledReadableByteStream,c=t.constructor,d=ea(c),{byteOffset:m,byteLength:R}=t,y=r*d;let C;try{C=we(t.buffer)}catch(B){s._errorSteps(B);return}const P={buffer:C,bufferByteLength:C.byteLength,byteOffset:m,byteLength:R,bytesFilled:0,minimumFill:y,elementSize:d,viewConstructor:c,readerType:"byob"};if(e._pendingPullIntos.length>0){e._pendingPullIntos.push(P),Po(f,s);return}if(f._state==="closed"){const B=new c(P.buffer,P.byteOffset,0);s._closeSteps(B);return}if(e._queueTotalSize>0){if(yo(e,P)){const B=po(P);_o(e),s._chunkSteps(B);return}if(e._closeRequested){const B=new TypeError("Insufficient bytes to fill elements in the given buffer");K(e,B),s._errorSteps(B);return}}e._pendingPullIntos.push(P),Po(f,s),Ie(e)}n(ra,"ReadableByteStreamControllerPullInto");function na(e,t){t.readerType==="none"&&Ye(e);const r=e._controlledReadableByteStream;if(Kr(r))for(;vo(r)>0;){const s=Ye(e);Vr(r,s)}}n(na,"ReadableByteStreamControllerRespondInClosedState");function oa(e,t,r){if(go(e,t,r),r.readerType==="none"){mo(e,r),Yr(e);return}if(r.bytesFilled0){const f=r.byteOffset+r.bytesFilled;bo(e,r.buffer,f-s,s)}r.bytesFilled-=s,Vr(e._controlledReadableByteStream,r),Yr(e)}n(oa,"ReadableByteStreamControllerRespondInReadableState");function So(e,t){const r=e._pendingPullIntos.peek();Qr(e),e._controlledReadableByteStream._state==="closed"?na(e,r):oa(e,t,r),Ie(e)}n(So,"ReadableByteStreamControllerRespondInternal");function Ye(e){return e._pendingPullIntos.shift()}n(Ye,"ReadableByteStreamControllerShiftPendingPullInto");function ia(e){const t=e._controlledReadableByteStream;return t._state!=="readable"||e._closeRequested||!e._started?!1:!!(to(t)&&Lt(t)>0||Kr(t)&&vo(t)>0||Ro(e)>0)}n(ia,"ReadableByteStreamControllerShouldCallPull");function xt(e){e._pullAlgorithm=void 0,e._cancelAlgorithm=void 0}n(xt,"ReadableByteStreamControllerClearAlgorithms");function gt(e){const t=e._controlledReadableByteStream;if(!(e._closeRequested||t._state!=="readable")){if(e._queueTotalSize>0){e._closeRequested=!0;return}if(e._pendingPullIntos.length>0){const r=e._pendingPullIntos.peek();if(r.bytesFilled%r.elementSize!==0){const s=new TypeError("Insufficient bytes to fill elements in the given buffer");throw K(e,s),s}}xt(e),Pt(t)}}n(gt,"ReadableByteStreamControllerClose");function Nt(e,t){const r=e._controlledReadableByteStream;if(e._closeRequested||r._state!=="readable")return;const{buffer:s,byteOffset:f,byteLength:c}=t;if(Ae(s))throw new TypeError("chunk's buffer is detached and so cannot be enqueued");const d=we(s);if(e._pendingPullIntos.length>0){const m=e._pendingPullIntos.peek();if(Ae(m.buffer))throw new TypeError("The BYOB request's buffer has been detached and so cannot be filled with an enqueued chunk");Qr(e),m.buffer=we(m.buffer),m.readerType==="none"&&mo(e,m)}if(to(r))if(ta(e),Lt(r)===0)Ut(e,d,f,c);else{e._pendingPullIntos.length>0&&Ye(e);const m=new Uint8Array(d,f,c);Lr(r,m,!1)}else Kr(r)?(Ut(e,d,f,c),Yr(e)):Ut(e,d,f,c);Ie(e)}n(Nt,"ReadableByteStreamControllerEnqueue");function K(e,t){const r=e._controlledReadableByteStream;r._state==="readable"&&(ho(e),Be(e),xt(e),Zo(r,t))}n(K,"ReadableByteStreamControllerError");function wo(e,t){const r=e._queue.shift();e._queueTotalSize-=r.byteLength,_o(e);const s=new Uint8Array(r.buffer,r.byteOffset,r.byteLength);t._chunkSteps(s)}n(wo,"ReadableByteStreamControllerFillReadRequestFromQueue");function Gr(e){if(e._byobRequest===null&&e._pendingPullIntos.length>0){const t=e._pendingPullIntos.peek(),r=new Uint8Array(t.buffer,t.byteOffset+t.bytesFilled,t.byteLength-t.bytesFilled),s=Object.create(Re.prototype);sa(s,e,r),e._byobRequest=s}return e._byobRequest}n(Gr,"ReadableByteStreamControllerGetBYOBRequest");function Ro(e){const t=e._controlledReadableByteStream._state;return t==="errored"?null:t==="closed"?0:e._strategyHWM-e._queueTotalSize}n(Ro,"ReadableByteStreamControllerGetDesiredSize");function Ht(e,t){const r=e._pendingPullIntos.peek();if(e._controlledReadableByteStream._state==="closed"){if(t!==0)throw new TypeError("bytesWritten must be 0 when calling respond() on a closed stream")}else{if(t===0)throw new TypeError("bytesWritten must be greater than 0 when calling respond() on a readable stream");if(r.bytesFilled+t>r.byteLength)throw new RangeError("bytesWritten out of range")}r.buffer=we(r.buffer),So(e,t)}n(Ht,"ReadableByteStreamControllerRespond");function Vt(e,t){const r=e._pendingPullIntos.peek();if(e._controlledReadableByteStream._state==="closed"){if(t.byteLength!==0)throw new TypeError("The view's length must be 0 when calling respondWithNewView() on a closed stream")}else if(t.byteLength===0)throw new TypeError("The view's length must be greater than 0 when calling respondWithNewView() on a readable stream");if(r.byteOffset+r.bytesFilled!==t.byteOffset)throw new RangeError("The region specified by view does not match byobRequest");if(r.bufferByteLength!==t.buffer.byteLength)throw new RangeError("The buffer of view has different capacity than byobRequest");if(r.bytesFilled+t.byteLength>r.byteLength)throw new RangeError("The region specified by view is larger than byobRequest");const f=t.byteLength;r.buffer=we(t.buffer),So(e,f)}n(Vt,"ReadableByteStreamControllerRespondWithNewView");function To(e,t,r,s,f,c,d){t._controlledReadableByteStream=e,t._pullAgain=!1,t._pulling=!1,t._byobRequest=null,t._queue=t._queueTotalSize=void 0,Be(t),t._closeRequested=!1,t._started=!1,t._strategyHWM=c,t._pullAlgorithm=s,t._cancelAlgorithm=f,t._autoAllocateChunkSize=d,t._pendingPullIntos=new D,e._readableStreamController=t;const m=r();_(T(m),()=>(t._started=!0,Ie(t),null),R=>(K(t,R),null))}n(To,"SetUpReadableByteStreamController");function aa(e,t,r){const s=Object.create(te.prototype);let f,c,d;t.start!==void 0?f=n(()=>t.start(s),"startAlgorithm"):f=n(()=>{},"startAlgorithm"),t.pull!==void 0?c=n(()=>t.pull(s),"pullAlgorithm"):c=n(()=>T(void 0),"pullAlgorithm"),t.cancel!==void 0?d=n(R=>t.cancel(R),"cancelAlgorithm"):d=n(()=>T(void 0),"cancelAlgorithm");const m=t.autoAllocateChunkSize;if(m===0)throw new TypeError("autoAllocateChunkSize must be greater than 0");To(e,s,f,c,d,r,m)}n(aa,"SetUpReadableByteStreamControllerFromUnderlyingSource");function sa(e,t,r){e._associatedReadableByteStreamController=t,e._view=r}n(sa,"SetUpReadableStreamBYOBRequest");function Zr(e){return new TypeError(`ReadableStreamBYOBRequest.prototype.${e} can only be used on a ReadableStreamBYOBRequest`)}n(Zr,"byobRequestBrandCheckException");function _t(e){return new TypeError(`ReadableByteStreamController.prototype.${e} can only be used on a ReadableByteStreamController`)}n(_t,"byteStreamControllerBrandCheckException");function la(e,t){ue(e,t);const r=e?.mode;return{mode:r===void 0?void 0:ua(r,`${t} has member 'mode' that`)}}n(la,"convertReaderOptions");function ua(e,t){if(e=`${e}`,e!=="byob")throw new TypeError(`${t} '${e}' is not a valid enumeration value for ReadableStreamReaderMode`);return e}n(ua,"convertReadableStreamReaderMode");function fa(e,t){var r;ue(e,t);const s=(r=e?.min)!==null&&r!==void 0?r:1;return{min:Fr(s,`${t} has member 'min' that`)}}n(fa,"convertByobReadOptions");function Co(e){return new ce(e)}n(Co,"AcquireReadableStreamBYOBReader");function Po(e,t){e._reader._readIntoRequests.push(t)}n(Po,"ReadableStreamAddReadIntoRequest");function ca(e,t,r){const f=e._reader._readIntoRequests.shift();r?f._closeSteps(t):f._chunkSteps(t)}n(ca,"ReadableStreamFulfillReadIntoRequest");function vo(e){return e._reader._readIntoRequests.length}n(vo,"ReadableStreamGetNumReadIntoRequests");function Kr(e){const t=e._reader;return!(t===void 0||!Fe(t))}n(Kr,"ReadableStreamHasBYOBReader");const Sn=class Sn{constructor(t){if(Se(t,1,"ReadableStreamBYOBReader"),jr(t,"First parameter"),qe(t))throw new TypeError("This stream has already been locked for exclusive reading by another reader");if(!ze(t._readableStreamController))throw new TypeError("Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source");Yn(this,t),this._readIntoRequests=new D}get closed(){return Fe(this)?this._closedPromise:b(Qt("closed"))}cancel(t=void 0){return Fe(this)?this._ownerReadableStream===void 0?b(jt("cancel")):Wr(this,t):b(Qt("cancel"))}read(t,r={}){if(!Fe(this))return b(Qt("read"));if(!ArrayBuffer.isView(t))return b(new TypeError("view must be an array buffer view"));if(t.byteLength===0)return b(new TypeError("view must have non-zero byteLength"));if(t.buffer.byteLength===0)return b(new TypeError("view's buffer must have non-zero byteLength"));if(Ae(t.buffer))return b(new TypeError("view's buffer has been detached"));let s;try{s=fa(r,"options")}catch(y){return b(y)}const f=s.min;if(f===0)return b(new TypeError("options.min must be greater than 0"));if(Xi(t)){if(f>t.byteLength)return b(new RangeError("options.min must be less than or equal to view's byteLength"))}else if(f>t.length)return b(new RangeError("options.min must be less than or equal to view's length"));if(this._ownerReadableStream===void 0)return b(jt("read from"));let c,d;const m=E((y,C)=>{c=y,d=C});return Eo(this,t,f,{_chunkSteps:y=>c({value:y,done:!1}),_closeSteps:y=>c({value:y,done:!0}),_errorSteps:y=>d(y)}),m}releaseLock(){if(!Fe(this))throw Qt("releaseLock");this._ownerReadableStream!==void 0&&da(this)}};n(Sn,"ReadableStreamBYOBReader");let ce=Sn;Object.defineProperties(ce.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),h(ce.prototype.cancel,"cancel"),h(ce.prototype.read,"read"),h(ce.prototype.releaseLock,"releaseLock"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(ce.prototype,Symbol.toStringTag,{value:"ReadableStreamBYOBReader",configurable:!0});function Fe(e){return!l(e)||!Object.prototype.hasOwnProperty.call(e,"_readIntoRequests")?!1:e instanceof ce}n(Fe,"IsReadableStreamBYOBReader");function Eo(e,t,r,s){const f=e._ownerReadableStream;f._disturbed=!0,f._state==="errored"?s._errorSteps(f._storedError):ra(f._readableStreamController,t,r,s)}n(Eo,"ReadableStreamBYOBReaderRead");function da(e){_e(e);const t=new TypeError("Reader was released");Ao(e,t)}n(da,"ReadableStreamBYOBReaderRelease");function Ao(e,t){const r=e._readIntoRequests;e._readIntoRequests=new D,r.forEach(s=>{s._errorSteps(t)})}n(Ao,"ReadableStreamBYOBReaderErrorReadIntoRequests");function Qt(e){return new TypeError(`ReadableStreamBYOBReader.prototype.${e} can only be used on a ReadableStreamBYOBReader`)}n(Qt,"byobReaderBrandCheckException");function St(e,t){const{highWaterMark:r}=e;if(r===void 0)return t;if(ao(r)||r<0)throw new RangeError("Invalid highWaterMark");return r}n(St,"ExtractHighWaterMark");function Yt(e){const{size:t}=e;return t||(()=>1)}n(Yt,"ExtractSizeAlgorithm");function Gt(e,t){ue(e,t);const r=e?.highWaterMark,s=e?.size;return{highWaterMark:r===void 0?void 0:Ir(r),size:s===void 0?void 0:ha(s,`${t} has member 'size' that`)}}n(Gt,"convertQueuingStrategy");function ha(e,t){return Z(e,t),r=>Ir(e(r))}n(ha,"convertQueuingStrategySize");function pa(e,t){ue(e,t);const r=e?.abort,s=e?.close,f=e?.start,c=e?.type,d=e?.write;return{abort:r===void 0?void 0:ba(r,e,`${t} has member 'abort' that`),close:s===void 0?void 0:ma(s,e,`${t} has member 'close' that`),start:f===void 0?void 0:ya(f,e,`${t} has member 'start' that`),write:d===void 0?void 0:ga(d,e,`${t} has member 'write' that`),type:c}}n(pa,"convertUnderlyingSink");function ba(e,t,r){return Z(e,r),s=>j(e,t,[s])}n(ba,"convertUnderlyingSinkAbortCallback");function ma(e,t,r){return Z(e,r),()=>j(e,t,[])}n(ma,"convertUnderlyingSinkCloseCallback");function ya(e,t,r){return Z(e,r),s=>z(e,t,[s])}n(ya,"convertUnderlyingSinkStartCallback");function ga(e,t,r){return Z(e,r),(s,f)=>j(e,t,[s,f])}n(ga,"convertUnderlyingSinkWriteCallback");function Bo(e,t){if(!Ge(e))throw new TypeError(`${t} is not a WritableStream.`)}n(Bo,"assertWritableStream");function _a(e){if(typeof e!="object"||e===null)return!1;try{return typeof e.aborted=="boolean"}catch{return!1}}n(_a,"isAbortSignal");const Sa=typeof AbortController=="function";function wa(){if(Sa)return new AbortController}n(wa,"createAbortController");const wn=class wn{constructor(t={},r={}){t===void 0?t=null:Jn(t,"First parameter");const s=Gt(r,"Second parameter"),f=pa(t,"First parameter");if(Wo(this),f.type!==void 0)throw new RangeError("Invalid type is specified");const d=Yt(s),m=St(s,1);Ia(this,f,m,d)}get locked(){if(!Ge(this))throw er("locked");return Ze(this)}abort(t=void 0){return Ge(this)?Ze(this)?b(new TypeError("Cannot abort a stream that already has a writer")):Zt(this,t):b(er("abort"))}close(){return Ge(this)?Ze(this)?b(new TypeError("Cannot close a stream that already has a writer")):he(this)?b(new TypeError("Cannot close an already-closing stream")):qo(this):b(er("close"))}getWriter(){if(!Ge(this))throw er("getWriter");return ko(this)}};n(wn,"WritableStream");let de=wn;Object.defineProperties(de.prototype,{abort:{enumerable:!0},close:{enumerable:!0},getWriter:{enumerable:!0},locked:{enumerable:!0}}),h(de.prototype.abort,"abort"),h(de.prototype.close,"close"),h(de.prototype.getWriter,"getWriter"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(de.prototype,Symbol.toStringTag,{value:"WritableStream",configurable:!0});function ko(e){return new re(e)}n(ko,"AcquireWritableStreamDefaultWriter");function Ra(e,t,r,s,f=1,c=()=>1){const d=Object.create(de.prototype);Wo(d);const m=Object.create(ke.prototype);return Lo(d,m,e,t,r,s,f,c),d}n(Ra,"CreateWritableStream");function Wo(e){e._state="writable",e._storedError=void 0,e._writer=void 0,e._writableStreamController=void 0,e._writeRequests=new D,e._inFlightWriteRequest=void 0,e._closeRequest=void 0,e._inFlightCloseRequest=void 0,e._pendingAbortRequest=void 0,e._backpressure=!1}n(Wo,"InitializeWritableStream");function Ge(e){return!l(e)||!Object.prototype.hasOwnProperty.call(e,"_writableStreamController")?!1:e instanceof de}n(Ge,"IsWritableStream");function Ze(e){return e._writer!==void 0}n(Ze,"IsWritableStreamLocked");function Zt(e,t){var r;if(e._state==="closed"||e._state==="errored")return T(void 0);e._writableStreamController._abortReason=t,(r=e._writableStreamController._abortController)===null||r===void 0||r.abort(t);const s=e._state;if(s==="closed"||s==="errored")return T(void 0);if(e._pendingAbortRequest!==void 0)return e._pendingAbortRequest._promise;let f=!1;s==="erroring"&&(f=!0,t=void 0);const c=E((d,m)=>{e._pendingAbortRequest={_promise:void 0,_resolve:d,_reject:m,_reason:t,_wasAlreadyErroring:f}});return e._pendingAbortRequest._promise=c,f||Xr(e,t),c}n(Zt,"WritableStreamAbort");function qo(e){const t=e._state;if(t==="closed"||t==="errored")return b(new TypeError(`The stream (in ${t} state) is not in the writable state and cannot be closed`));const r=E((f,c)=>{const d={_resolve:f,_reject:c};e._closeRequest=d}),s=e._writer;return s!==void 0&&e._backpressure&&t==="writable"&&ln(s),Fa(e._writableStreamController),r}n(qo,"WritableStreamClose");function Ta(e){return E((r,s)=>{const f={_resolve:r,_reject:s};e._writeRequests.push(f)})}n(Ta,"WritableStreamAddWriteRequest");function Jr(e,t){if(e._state==="writable"){Xr(e,t);return}en(e)}n(Jr,"WritableStreamDealWithRejection");function Xr(e,t){const r=e._writableStreamController;e._state="erroring",e._storedError=t;const s=e._writer;s!==void 0&&zo(s,t),!Aa(e)&&r._started&&en(e)}n(Xr,"WritableStreamStartErroring");function en(e){e._state="errored",e._writableStreamController[Qn]();const t=e._storedError;if(e._writeRequests.forEach(f=>{f._reject(t)}),e._writeRequests=new D,e._pendingAbortRequest===void 0){Kt(e);return}const r=e._pendingAbortRequest;if(e._pendingAbortRequest=void 0,r._wasAlreadyErroring){r._reject(t),Kt(e);return}const s=e._writableStreamController[Ft](r._reason);_(s,()=>(r._resolve(),Kt(e),null),f=>(r._reject(f),Kt(e),null))}n(en,"WritableStreamFinishErroring");function Ca(e){e._inFlightWriteRequest._resolve(void 0),e._inFlightWriteRequest=void 0}n(Ca,"WritableStreamFinishInFlightWrite");function Pa(e,t){e._inFlightWriteRequest._reject(t),e._inFlightWriteRequest=void 0,Jr(e,t)}n(Pa,"WritableStreamFinishInFlightWriteWithError");function va(e){e._inFlightCloseRequest._resolve(void 0),e._inFlightCloseRequest=void 0,e._state==="erroring"&&(e._storedError=void 0,e._pendingAbortRequest!==void 0&&(e._pendingAbortRequest._resolve(),e._pendingAbortRequest=void 0)),e._state="closed";const r=e._writer;r!==void 0&&Uo(r)}n(va,"WritableStreamFinishInFlightClose");function Ea(e,t){e._inFlightCloseRequest._reject(t),e._inFlightCloseRequest=void 0,e._pendingAbortRequest!==void 0&&(e._pendingAbortRequest._reject(t),e._pendingAbortRequest=void 0),Jr(e,t)}n(Ea,"WritableStreamFinishInFlightCloseWithError");function he(e){return!(e._closeRequest===void 0&&e._inFlightCloseRequest===void 0)}n(he,"WritableStreamCloseQueuedOrInFlight");function Aa(e){return!(e._inFlightWriteRequest===void 0&&e._inFlightCloseRequest===void 0)}n(Aa,"WritableStreamHasOperationMarkedInFlight");function Ba(e){e._inFlightCloseRequest=e._closeRequest,e._closeRequest=void 0}n(Ba,"WritableStreamMarkCloseRequestInFlight");function ka(e){e._inFlightWriteRequest=e._writeRequests.shift()}n(ka,"WritableStreamMarkFirstWriteRequestInFlight");function Kt(e){e._closeRequest!==void 0&&(e._closeRequest._reject(e._storedError),e._closeRequest=void 0);const t=e._writer;t!==void 0&&an(t,e._storedError)}n(Kt,"WritableStreamRejectCloseAndClosedPromiseIfNeeded");function tn(e,t){const r=e._writer;r!==void 0&&t!==e._backpressure&&(t?xa(r):ln(r)),e._backpressure=t}n(tn,"WritableStreamUpdateBackpressure");const Rn=class Rn{constructor(t){if(Se(t,1,"WritableStreamDefaultWriter"),Bo(t,"First parameter"),Ze(t))throw new TypeError("This stream has already been locked for exclusive writing by another writer");this._ownerWritableStream=t,t._writer=this;const r=t._state;if(r==="writable")!he(t)&&t._backpressure?rr(this):xo(this),tr(this);else if(r==="erroring")sn(this,t._storedError),tr(this);else if(r==="closed")xo(this),Ma(this);else{const s=t._storedError;sn(this,s),Mo(this,s)}}get closed(){return je(this)?this._closedPromise:b(Le("closed"))}get desiredSize(){if(!je(this))throw Le("desiredSize");if(this._ownerWritableStream===void 0)throw Rt("desiredSize");return za(this)}get ready(){return je(this)?this._readyPromise:b(Le("ready"))}abort(t=void 0){return je(this)?this._ownerWritableStream===void 0?b(Rt("abort")):Wa(this,t):b(Le("abort"))}close(){if(!je(this))return b(Le("close"));const t=this._ownerWritableStream;return t===void 0?b(Rt("close")):he(t)?b(new TypeError("Cannot close an already-closing stream")):Oo(this)}releaseLock(){if(!je(this))throw Le("releaseLock");this._ownerWritableStream!==void 0&&Io(this)}write(t=void 0){return je(this)?this._ownerWritableStream===void 0?b(Rt("write to")):Fo(this,t):b(Le("write"))}};n(Rn,"WritableStreamDefaultWriter");let re=Rn;Object.defineProperties(re.prototype,{abort:{enumerable:!0},close:{enumerable:!0},releaseLock:{enumerable:!0},write:{enumerable:!0},closed:{enumerable:!0},desiredSize:{enumerable:!0},ready:{enumerable:!0}}),h(re.prototype.abort,"abort"),h(re.prototype.close,"close"),h(re.prototype.releaseLock,"releaseLock"),h(re.prototype.write,"write"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(re.prototype,Symbol.toStringTag,{value:"WritableStreamDefaultWriter",configurable:!0});function je(e){return!l(e)||!Object.prototype.hasOwnProperty.call(e,"_ownerWritableStream")?!1:e instanceof re}n(je,"IsWritableStreamDefaultWriter");function Wa(e,t){const r=e._ownerWritableStream;return Zt(r,t)}n(Wa,"WritableStreamDefaultWriterAbort");function Oo(e){const t=e._ownerWritableStream;return qo(t)}n(Oo,"WritableStreamDefaultWriterClose");function qa(e){const t=e._ownerWritableStream,r=t._state;return he(t)||r==="closed"?T(void 0):r==="errored"?b(t._storedError):Oo(e)}n(qa,"WritableStreamDefaultWriterCloseWithErrorPropagation");function Oa(e,t){e._closedPromiseState==="pending"?an(e,t):Ua(e,t)}n(Oa,"WritableStreamDefaultWriterEnsureClosedPromiseRejected");function zo(e,t){e._readyPromiseState==="pending"?No(e,t):Na(e,t)}n(zo,"WritableStreamDefaultWriterEnsureReadyPromiseRejected");function za(e){const t=e._ownerWritableStream,r=t._state;return r==="errored"||r==="erroring"?null:r==="closed"?0:$o(t._writableStreamController)}n(za,"WritableStreamDefaultWriterGetDesiredSize");function Io(e){const t=e._ownerWritableStream,r=new TypeError("Writer was released and can no longer be used to monitor the stream's closedness");zo(e,r),Oa(e,r),t._writer=void 0,e._ownerWritableStream=void 0}n(Io,"WritableStreamDefaultWriterRelease");function Fo(e,t){const r=e._ownerWritableStream,s=r._writableStreamController,f=ja(s,t);if(r!==e._ownerWritableStream)return b(Rt("write to"));const c=r._state;if(c==="errored")return b(r._storedError);if(he(r)||c==="closed")return b(new TypeError("The stream is closing or closed and cannot be written to"));if(c==="erroring")return b(r._storedError);const d=Ta(r);return La(s,t,f),d}n(Fo,"WritableStreamDefaultWriterWrite");const jo={},Tn=class Tn{constructor(){throw new TypeError("Illegal constructor")}get abortReason(){if(!rn(this))throw on("abortReason");return this._abortReason}get signal(){if(!rn(this))throw on("signal");if(this._abortController===void 0)throw new TypeError("WritableStreamDefaultController.prototype.signal is not supported");return this._abortController.signal}error(t=void 0){if(!rn(this))throw on("error");this._controlledWritableStream._state==="writable"&&Do(this,t)}[Ft](t){const r=this._abortAlgorithm(t);return Jt(this),r}[Qn](){Be(this)}};n(Tn,"WritableStreamDefaultController");let ke=Tn;Object.defineProperties(ke.prototype,{abortReason:{enumerable:!0},signal:{enumerable:!0},error:{enumerable:!0}}),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(ke.prototype,Symbol.toStringTag,{value:"WritableStreamDefaultController",configurable:!0});function rn(e){return!l(e)||!Object.prototype.hasOwnProperty.call(e,"_controlledWritableStream")?!1:e instanceof ke}n(rn,"IsWritableStreamDefaultController");function Lo(e,t,r,s,f,c,d,m){t._controlledWritableStream=e,e._writableStreamController=t,t._queue=void 0,t._queueTotalSize=void 0,Be(t),t._abortReason=void 0,t._abortController=wa(),t._started=!1,t._strategySizeAlgorithm=m,t._strategyHWM=d,t._writeAlgorithm=s,t._closeAlgorithm=f,t._abortAlgorithm=c;const R=nn(t);tn(e,R);const y=r(),C=T(y);_(C,()=>(t._started=!0,Xt(t),null),P=>(t._started=!0,Jr(e,P),null))}n(Lo,"SetUpWritableStreamDefaultController");function Ia(e,t,r,s){const f=Object.create(ke.prototype);let c,d,m,R;t.start!==void 0?c=n(()=>t.start(f),"startAlgorithm"):c=n(()=>{},"startAlgorithm"),t.write!==void 0?d=n(y=>t.write(y,f),"writeAlgorithm"):d=n(()=>T(void 0),"writeAlgorithm"),t.close!==void 0?m=n(()=>t.close(),"closeAlgorithm"):m=n(()=>T(void 0),"closeAlgorithm"),t.abort!==void 0?R=n(y=>t.abort(y),"abortAlgorithm"):R=n(()=>T(void 0),"abortAlgorithm"),Lo(e,f,c,d,m,R,r,s)}n(Ia,"SetUpWritableStreamDefaultControllerFromUnderlyingSink");function Jt(e){e._writeAlgorithm=void 0,e._closeAlgorithm=void 0,e._abortAlgorithm=void 0,e._strategySizeAlgorithm=void 0}n(Jt,"WritableStreamDefaultControllerClearAlgorithms");function Fa(e){Nr(e,jo,0),Xt(e)}n(Fa,"WritableStreamDefaultControllerClose");function ja(e,t){try{return e._strategySizeAlgorithm(t)}catch(r){return wt(e,r),1}}n(ja,"WritableStreamDefaultControllerGetChunkSize");function $o(e){return e._strategyHWM-e._queueTotalSize}n($o,"WritableStreamDefaultControllerGetDesiredSize");function La(e,t,r){try{Nr(e,t,r)}catch(f){wt(e,f);return}const s=e._controlledWritableStream;if(!he(s)&&s._state==="writable"){const f=nn(e);tn(s,f)}Xt(e)}n(La,"WritableStreamDefaultControllerWrite");function Xt(e){const t=e._controlledWritableStream;if(!e._started||t._inFlightWriteRequest!==void 0)return;if(t._state==="erroring"){en(t);return}if(e._queue.length===0)return;const s=Ji(e);s===jo?$a(e):Da(e,s)}n(Xt,"WritableStreamDefaultControllerAdvanceQueueIfNeeded");function wt(e,t){e._controlledWritableStream._state==="writable"&&Do(e,t)}n(wt,"WritableStreamDefaultControllerErrorIfNeeded");function $a(e){const t=e._controlledWritableStream;Ba(t),xr(e);const r=e._closeAlgorithm();Jt(e),_(r,()=>(va(t),null),s=>(Ea(t,s),null))}n($a,"WritableStreamDefaultControllerProcessClose");function Da(e,t){const r=e._controlledWritableStream;ka(r);const s=e._writeAlgorithm(t);_(s,()=>{Ca(r);const f=r._state;if(xr(e),!he(r)&&f==="writable"){const c=nn(e);tn(r,c)}return Xt(e),null},f=>(r._state==="writable"&&Jt(e),Pa(r,f),null))}n(Da,"WritableStreamDefaultControllerProcessWrite");function nn(e){return $o(e)<=0}n(nn,"WritableStreamDefaultControllerGetBackpressure");function Do(e,t){const r=e._controlledWritableStream;Jt(e),Xr(r,t)}n(Do,"WritableStreamDefaultControllerError");function er(e){return new TypeError(`WritableStream.prototype.${e} can only be used on a WritableStream`)}n(er,"streamBrandCheckException$2");function on(e){return new TypeError(`WritableStreamDefaultController.prototype.${e} can only be used on a WritableStreamDefaultController`)}n(on,"defaultControllerBrandCheckException$2");function Le(e){return new TypeError(`WritableStreamDefaultWriter.prototype.${e} can only be used on a WritableStreamDefaultWriter`)}n(Le,"defaultWriterBrandCheckException");function Rt(e){return new TypeError("Cannot "+e+" a stream using a released writer")}n(Rt,"defaultWriterLockException");function tr(e){e._closedPromise=E((t,r)=>{e._closedPromise_resolve=t,e._closedPromise_reject=r,e._closedPromiseState="pending"})}n(tr,"defaultWriterClosedPromiseInitialize");function Mo(e,t){tr(e),an(e,t)}n(Mo,"defaultWriterClosedPromiseInitializeAsRejected");function Ma(e){tr(e),Uo(e)}n(Ma,"defaultWriterClosedPromiseInitializeAsResolved");function an(e,t){e._closedPromise_reject!==void 0&&(Q(e._closedPromise),e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState="rejected")}n(an,"defaultWriterClosedPromiseReject");function Ua(e,t){Mo(e,t)}n(Ua,"defaultWriterClosedPromiseResetToRejected");function Uo(e){e._closedPromise_resolve!==void 0&&(e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState="resolved")}n(Uo,"defaultWriterClosedPromiseResolve");function rr(e){e._readyPromise=E((t,r)=>{e._readyPromise_resolve=t,e._readyPromise_reject=r}),e._readyPromiseState="pending"}n(rr,"defaultWriterReadyPromiseInitialize");function sn(e,t){rr(e),No(e,t)}n(sn,"defaultWriterReadyPromiseInitializeAsRejected");function xo(e){rr(e),ln(e)}n(xo,"defaultWriterReadyPromiseInitializeAsResolved");function No(e,t){e._readyPromise_reject!==void 0&&(Q(e._readyPromise),e._readyPromise_reject(t),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState="rejected")}n(No,"defaultWriterReadyPromiseReject");function xa(e){rr(e)}n(xa,"defaultWriterReadyPromiseReset");function Na(e,t){sn(e,t)}n(Na,"defaultWriterReadyPromiseResetToRejected");function ln(e){e._readyPromise_resolve!==void 0&&(e._readyPromise_resolve(void 0),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState="fulfilled")}n(ln,"defaultWriterReadyPromiseResolve");function Ha(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof Wn<"u")return Wn}n(Ha,"getGlobals");const un=Ha();function Va(e){if(!(typeof e=="function"||typeof e=="object")||e.name!=="DOMException")return!1;try{return new e,!0}catch{return!1}}n(Va,"isDOMExceptionConstructor");function Qa(){const e=un?.DOMException;return Va(e)?e:void 0}n(Qa,"getFromGlobal");function Ya(){const e=n(function(r,s){this.message=r||"",this.name=s||"Error",Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)},"DOMException");return h(e,"DOMException"),e.prototype=Object.create(Error.prototype),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,configurable:!0}),e}n(Ya,"createPolyfill");const Ga=Qa()||Ya();function Ho(e,t,r,s,f,c){const d=Qe(e),m=ko(t);e._disturbed=!0;let R=!1,y=T(void 0);return E((C,P)=>{let B;if(c!==void 0){if(B=n(()=>{const S=c.reason!==void 0?c.reason:new Ga("Aborted","AbortError"),v=[];s||v.push(()=>t._state==="writable"?Zt(t,S):T(void 0)),f||v.push(()=>e._state==="readable"?ie(e,S):T(void 0)),N(()=>Promise.all(v.map(k=>k())),!0,S)},"abortAlgorithm"),c.aborted){B();return}c.addEventListener("abort",B)}function ae(){return E((S,v)=>{function k(Y){Y?S():q(nt(),k,v)}n(k,"next"),k(!1)})}n(ae,"pipeLoop");function nt(){return R?T(!0):q(m._readyPromise,()=>E((S,v)=>{mt(d,{_chunkSteps:k=>{y=q(Fo(m,k),void 0,u),S(!1)},_closeSteps:()=>S(!0),_errorSteps:v})}))}if(n(nt,"pipeStep"),Te(e,d._closedPromise,S=>(s?J(!0,S):N(()=>Zt(t,S),!0,S),null)),Te(t,m._closedPromise,S=>(f?J(!0,S):N(()=>ie(e,S),!0,S),null)),x(e,d._closedPromise,()=>(r?J():N(()=>qa(m)),null)),he(t)||t._state==="closed"){const S=new TypeError("the destination writable stream closed before all data could be piped to it");f?J(!0,S):N(()=>ie(e,S),!0,S)}Q(ae());function Oe(){const S=y;return q(y,()=>S!==y?Oe():void 0)}n(Oe,"waitForWritesToFinish");function Te(S,v,k){S._state==="errored"?k(S._storedError):I(v,k)}n(Te,"isOrBecomesErrored");function x(S,v,k){S._state==="closed"?k():V(v,k)}n(x,"isOrBecomesClosed");function N(S,v,k){if(R)return;R=!0,t._state==="writable"&&!he(t)?V(Oe(),Y):Y();function Y(){return _(S(),()=>Ce(v,k),ot=>Ce(!0,ot)),null}n(Y,"doTheRest")}n(N,"shutdownWithAction");function J(S,v){R||(R=!0,t._state==="writable"&&!he(t)?V(Oe(),()=>Ce(S,v)):Ce(S,v))}n(J,"shutdown");function Ce(S,v){return Io(m),_e(d),c!==void 0&&c.removeEventListener("abort",B),S?P(v):C(void 0),null}n(Ce,"finalize")})}n(Ho,"ReadableStreamPipeTo");const Cn=class Cn{constructor(){throw new TypeError("Illegal constructor")}get desiredSize(){if(!nr(this))throw ir("desiredSize");return fn(this)}close(){if(!nr(this))throw ir("close");if(!Je(this))throw new TypeError("The stream is not in a state that permits close");$e(this)}enqueue(t=void 0){if(!nr(this))throw ir("enqueue");if(!Je(this))throw new TypeError("The stream is not in a state that permits enqueue");return Ke(this,t)}error(t=void 0){if(!nr(this))throw ir("error");oe(this,t)}[Ar](t){Be(this);const r=this._cancelAlgorithm(t);return or(this),r}[Br](t){const r=this._controlledReadableStream;if(this._queue.length>0){const s=xr(this);this._closeRequested&&this._queue.length===0?(or(this),Pt(r)):Tt(this),t._chunkSteps(s)}else eo(r,t),Tt(this)}[kr](){}};n(Cn,"ReadableStreamDefaultController");let ne=Cn;Object.defineProperties(ne.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},desiredSize:{enumerable:!0}}),h(ne.prototype.close,"close"),h(ne.prototype.enqueue,"enqueue"),h(ne.prototype.error,"error"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(ne.prototype,Symbol.toStringTag,{value:"ReadableStreamDefaultController",configurable:!0});function nr(e){return!l(e)||!Object.prototype.hasOwnProperty.call(e,"_controlledReadableStream")?!1:e instanceof ne}n(nr,"IsReadableStreamDefaultController");function Tt(e){if(!Vo(e))return;if(e._pulling){e._pullAgain=!0;return}e._pulling=!0;const r=e._pullAlgorithm();_(r,()=>(e._pulling=!1,e._pullAgain&&(e._pullAgain=!1,Tt(e)),null),s=>(oe(e,s),null))}n(Tt,"ReadableStreamDefaultControllerCallPullIfNeeded");function Vo(e){const t=e._controlledReadableStream;return!Je(e)||!e._started?!1:!!(qe(t)&&Lt(t)>0||fn(e)>0)}n(Vo,"ReadableStreamDefaultControllerShouldCallPull");function or(e){e._pullAlgorithm=void 0,e._cancelAlgorithm=void 0,e._strategySizeAlgorithm=void 0}n(or,"ReadableStreamDefaultControllerClearAlgorithms");function $e(e){if(!Je(e))return;const t=e._controlledReadableStream;e._closeRequested=!0,e._queue.length===0&&(or(e),Pt(t))}n($e,"ReadableStreamDefaultControllerClose");function Ke(e,t){if(!Je(e))return;const r=e._controlledReadableStream;if(qe(r)&&Lt(r)>0)Lr(r,t,!1);else{let s;try{s=e._strategySizeAlgorithm(t)}catch(f){throw oe(e,f),f}try{Nr(e,t,s)}catch(f){throw oe(e,f),f}}Tt(e)}n(Ke,"ReadableStreamDefaultControllerEnqueue");function oe(e,t){const r=e._controlledReadableStream;r._state==="readable"&&(Be(e),or(e),Zo(r,t))}n(oe,"ReadableStreamDefaultControllerError");function fn(e){const t=e._controlledReadableStream._state;return t==="errored"?null:t==="closed"?0:e._strategyHWM-e._queueTotalSize}n(fn,"ReadableStreamDefaultControllerGetDesiredSize");function Za(e){return!Vo(e)}n(Za,"ReadableStreamDefaultControllerHasBackpressure");function Je(e){const t=e._controlledReadableStream._state;return!e._closeRequested&&t==="readable"}n(Je,"ReadableStreamDefaultControllerCanCloseOrEnqueue");function Qo(e,t,r,s,f,c,d){t._controlledReadableStream=e,t._queue=void 0,t._queueTotalSize=void 0,Be(t),t._started=!1,t._closeRequested=!1,t._pullAgain=!1,t._pulling=!1,t._strategySizeAlgorithm=d,t._strategyHWM=c,t._pullAlgorithm=s,t._cancelAlgorithm=f,e._readableStreamController=t;const m=r();_(T(m),()=>(t._started=!0,Tt(t),null),R=>(oe(t,R),null))}n(Qo,"SetUpReadableStreamDefaultController");function Ka(e,t,r,s){const f=Object.create(ne.prototype);let c,d,m;t.start!==void 0?c=n(()=>t.start(f),"startAlgorithm"):c=n(()=>{},"startAlgorithm"),t.pull!==void 0?d=n(()=>t.pull(f),"pullAlgorithm"):d=n(()=>T(void 0),"pullAlgorithm"),t.cancel!==void 0?m=n(R=>t.cancel(R),"cancelAlgorithm"):m=n(()=>T(void 0),"cancelAlgorithm"),Qo(e,f,c,d,m,r,s)}n(Ka,"SetUpReadableStreamDefaultControllerFromUnderlyingSource");function ir(e){return new TypeError(`ReadableStreamDefaultController.prototype.${e} can only be used on a ReadableStreamDefaultController`)}n(ir,"defaultControllerBrandCheckException$1");function Ja(e,t){return ze(e._readableStreamController)?es(e):Xa(e)}n(Ja,"ReadableStreamTee");function Xa(e,t){const r=Qe(e);let s=!1,f=!1,c=!1,d=!1,m,R,y,C,P;const B=E(x=>{P=x});function ae(){return s?(f=!0,T(void 0)):(s=!0,mt(r,{_chunkSteps:N=>{ge(()=>{f=!1;const J=N,Ce=N;c||Ke(y._readableStreamController,J),d||Ke(C._readableStreamController,Ce),s=!1,f&&ae()})},_closeSteps:()=>{s=!1,c||$e(y._readableStreamController),d||$e(C._readableStreamController),(!c||!d)&&P(void 0)},_errorSteps:()=>{s=!1}}),T(void 0))}n(ae,"pullAlgorithm");function nt(x){if(c=!0,m=x,d){const N=yt([m,R]),J=ie(e,N);P(J)}return B}n(nt,"cancel1Algorithm");function Oe(x){if(d=!0,R=x,c){const N=yt([m,R]),J=ie(e,N);P(J)}return B}n(Oe,"cancel2Algorithm");function Te(){}return n(Te,"startAlgorithm"),y=Ct(Te,ae,nt),C=Ct(Te,ae,Oe),I(r._closedPromise,x=>(oe(y._readableStreamController,x),oe(C._readableStreamController,x),(!c||!d)&&P(void 0),null)),[y,C]}n(Xa,"ReadableStreamDefaultTee");function es(e){let t=Qe(e),r=!1,s=!1,f=!1,c=!1,d=!1,m,R,y,C,P;const B=E(S=>{P=S});function ae(S){I(S._closedPromise,v=>(S!==t||(K(y._readableStreamController,v),K(C._readableStreamController,v),(!c||!d)&&P(void 0)),null))}n(ae,"forwardReaderError");function nt(){Fe(t)&&(_e(t),t=Qe(e),ae(t)),mt(t,{_chunkSteps:v=>{ge(()=>{s=!1,f=!1;const k=v;let Y=v;if(!c&&!d)try{Y=fo(v)}catch(ot){K(y._readableStreamController,ot),K(C._readableStreamController,ot),P(ie(e,ot));return}c||Nt(y._readableStreamController,k),d||Nt(C._readableStreamController,Y),r=!1,s?Te():f&&x()})},_closeSteps:()=>{r=!1,c||gt(y._readableStreamController),d||gt(C._readableStreamController),y._readableStreamController._pendingPullIntos.length>0&&Ht(y._readableStreamController,0),C._readableStreamController._pendingPullIntos.length>0&&Ht(C._readableStreamController,0),(!c||!d)&&P(void 0)},_errorSteps:()=>{r=!1}})}n(nt,"pullWithDefaultReader");function Oe(S,v){Ee(t)&&(_e(t),t=Co(e),ae(t));const k=v?C:y,Y=v?y:C;Eo(t,S,1,{_chunkSteps:it=>{ge(()=>{s=!1,f=!1;const at=v?d:c;if(v?c:d)at||Vt(k._readableStreamController,it);else{let ui;try{ui=fo(it)}catch(kn){K(k._readableStreamController,kn),K(Y._readableStreamController,kn),P(ie(e,kn));return}at||Vt(k._readableStreamController,it),Nt(Y._readableStreamController,ui)}r=!1,s?Te():f&&x()})},_closeSteps:it=>{r=!1;const at=v?d:c,fr=v?c:d;at||gt(k._readableStreamController),fr||gt(Y._readableStreamController),it!==void 0&&(at||Vt(k._readableStreamController,it),!fr&&Y._readableStreamController._pendingPullIntos.length>0&&Ht(Y._readableStreamController,0)),(!at||!fr)&&P(void 0)},_errorSteps:()=>{r=!1}})}n(Oe,"pullWithBYOBReader");function Te(){if(r)return s=!0,T(void 0);r=!0;const S=Gr(y._readableStreamController);return S===null?nt():Oe(S._view,!1),T(void 0)}n(Te,"pull1Algorithm");function x(){if(r)return f=!0,T(void 0);r=!0;const S=Gr(C._readableStreamController);return S===null?nt():Oe(S._view,!0),T(void 0)}n(x,"pull2Algorithm");function N(S){if(c=!0,m=S,d){const v=yt([m,R]),k=ie(e,v);P(k)}return B}n(N,"cancel1Algorithm");function J(S){if(d=!0,R=S,c){const v=yt([m,R]),k=ie(e,v);P(k)}return B}n(J,"cancel2Algorithm");function Ce(){}return n(Ce,"startAlgorithm"),y=Go(Ce,Te,N),C=Go(Ce,x,J),ae(t),[y,C]}n(es,"ReadableByteStreamTee");function ts(e){return l(e)&&typeof e.getReader<"u"}n(ts,"isReadableStreamLike");function rs(e){return ts(e)?os(e.getReader()):ns(e)}n(rs,"ReadableStreamFrom");function ns(e){let t;const r=uo(e,"async"),s=u;function f(){let d;try{d=Yi(r)}catch(R){return b(R)}const m=T(d);return F(m,R=>{if(!l(R))throw new TypeError("The promise returned by the iterator.next() method must fulfill with an object");if(Gi(R))$e(t._readableStreamController);else{const C=Zi(R);Ke(t._readableStreamController,C)}})}n(f,"pullAlgorithm");function c(d){const m=r.iterator;let R;try{R=Mt(m,"return")}catch(P){return b(P)}if(R===void 0)return T(void 0);let y;try{y=z(R,m,[d])}catch(P){return b(P)}const C=T(y);return F(C,P=>{if(!l(P))throw new TypeError("The promise returned by the iterator.return() method must fulfill with an object")})}return n(c,"cancelAlgorithm"),t=Ct(s,f,c,0),t}n(ns,"ReadableStreamFromIterable");function os(e){let t;const r=u;function s(){let c;try{c=e.read()}catch(d){return b(d)}return F(c,d=>{if(!l(d))throw new TypeError("The promise returned by the reader.read() method must fulfill with an object");if(d.done)$e(t._readableStreamController);else{const m=d.value;Ke(t._readableStreamController,m)}})}n(s,"pullAlgorithm");function f(c){try{return T(e.cancel(c))}catch(d){return b(d)}}return n(f,"cancelAlgorithm"),t=Ct(r,s,f,0),t}n(os,"ReadableStreamFromDefaultReader");function is(e,t){ue(e,t);const r=e,s=r?.autoAllocateChunkSize,f=r?.cancel,c=r?.pull,d=r?.start,m=r?.type;return{autoAllocateChunkSize:s===void 0?void 0:Fr(s,`${t} has member 'autoAllocateChunkSize' that`),cancel:f===void 0?void 0:as(f,r,`${t} has member 'cancel' that`),pull:c===void 0?void 0:ss(c,r,`${t} has member 'pull' that`),start:d===void 0?void 0:ls(d,r,`${t} has member 'start' that`),type:m===void 0?void 0:us(m,`${t} has member 'type' that`)}}n(is,"convertUnderlyingDefaultOrByteSource");function as(e,t,r){return Z(e,r),s=>j(e,t,[s])}n(as,"convertUnderlyingSourceCancelCallback");function ss(e,t,r){return Z(e,r),s=>j(e,t,[s])}n(ss,"convertUnderlyingSourcePullCallback");function ls(e,t,r){return Z(e,r),s=>z(e,t,[s])}n(ls,"convertUnderlyingSourceStartCallback");function us(e,t){if(e=`${e}`,e!=="bytes")throw new TypeError(`${t} '${e}' is not a valid enumeration value for ReadableStreamType`);return e}n(us,"convertReadableStreamType");function fs(e,t){return ue(e,t),{preventCancel:!!e?.preventCancel}}n(fs,"convertIteratorOptions");function Yo(e,t){ue(e,t);const r=e?.preventAbort,s=e?.preventCancel,f=e?.preventClose,c=e?.signal;return c!==void 0&&cs(c,`${t} has member 'signal' that`),{preventAbort:!!r,preventCancel:!!s,preventClose:!!f,signal:c}}n(Yo,"convertPipeOptions");function cs(e,t){if(!_a(e))throw new TypeError(`${t} is not an AbortSignal.`)}n(cs,"assertAbortSignal");function ds(e,t){ue(e,t);const r=e?.readable;zr(r,"readable","ReadableWritablePair"),jr(r,`${t} has member 'readable' that`);const s=e?.writable;return zr(s,"writable","ReadableWritablePair"),Bo(s,`${t} has member 'writable' that`),{readable:r,writable:s}}n(ds,"convertReadableWritablePair");const Pn=class Pn{constructor(t={},r={}){t===void 0?t=null:Jn(t,"First parameter");const s=Gt(r,"Second parameter"),f=is(t,"First parameter");if(cn(this),f.type==="bytes"){if(s.size!==void 0)throw new RangeError("The strategy for a byte stream cannot have a size function");const c=St(s,0);aa(this,f,c)}else{const c=Yt(s),d=St(s,1);Ka(this,f,d,c)}}get locked(){if(!We(this))throw De("locked");return qe(this)}cancel(t=void 0){return We(this)?qe(this)?b(new TypeError("Cannot cancel a stream that already has a reader")):ie(this,t):b(De("cancel"))}getReader(t=void 0){if(!We(this))throw De("getReader");return la(t,"First parameter").mode===void 0?Qe(this):Co(this)}pipeThrough(t,r={}){if(!We(this))throw De("pipeThrough");Se(t,1,"pipeThrough");const s=ds(t,"First parameter"),f=Yo(r,"Second parameter");if(qe(this))throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream");if(Ze(s.writable))throw new TypeError("ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream");const c=Ho(this,s.writable,f.preventClose,f.preventAbort,f.preventCancel,f.signal);return Q(c),s.readable}pipeTo(t,r={}){if(!We(this))return b(De("pipeTo"));if(t===void 0)return b("Parameter 1 is required in 'pipeTo'.");if(!Ge(t))return b(new TypeError("ReadableStream.prototype.pipeTo's first argument must be a WritableStream"));let s;try{s=Yo(r,"Second parameter")}catch(f){return b(f)}return qe(this)?b(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream")):Ze(t)?b(new TypeError("ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream")):Ho(this,t,s.preventClose,s.preventAbort,s.preventCancel,s.signal)}tee(){if(!We(this))throw De("tee");const t=Ja(this);return yt(t)}values(t=void 0){if(!We(this))throw De("values");const r=fs(t,"First parameter");return Vi(this,r.preventCancel)}[Ur](t){return this.values(t)}static from(t){return rs(t)}};n(Pn,"ReadableStream");let L=Pn;Object.defineProperties(L,{from:{enumerable:!0}}),Object.defineProperties(L.prototype,{cancel:{enumerable:!0},getReader:{enumerable:!0},pipeThrough:{enumerable:!0},pipeTo:{enumerable:!0},tee:{enumerable:!0},values:{enumerable:!0},locked:{enumerable:!0}}),h(L.from,"from"),h(L.prototype.cancel,"cancel"),h(L.prototype.getReader,"getReader"),h(L.prototype.pipeThrough,"pipeThrough"),h(L.prototype.pipeTo,"pipeTo"),h(L.prototype.tee,"tee"),h(L.prototype.values,"values"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(L.prototype,Symbol.toStringTag,{value:"ReadableStream",configurable:!0}),Object.defineProperty(L.prototype,Ur,{value:L.prototype.values,writable:!0,configurable:!0});function Ct(e,t,r,s=1,f=()=>1){const c=Object.create(L.prototype);cn(c);const d=Object.create(ne.prototype);return Qo(c,d,e,t,r,s,f),c}n(Ct,"CreateReadableStream");function Go(e,t,r){const s=Object.create(L.prototype);cn(s);const f=Object.create(te.prototype);return To(s,f,e,t,r,0,void 0),s}n(Go,"CreateReadableByteStream");function cn(e){e._state="readable",e._reader=void 0,e._storedError=void 0,e._disturbed=!1}n(cn,"InitializeReadableStream");function We(e){return!l(e)||!Object.prototype.hasOwnProperty.call(e,"_readableStreamController")?!1:e instanceof L}n(We,"IsReadableStream");function qe(e){return e._reader!==void 0}n(qe,"IsReadableStreamLocked");function ie(e,t){if(e._disturbed=!0,e._state==="closed")return T(void 0);if(e._state==="errored")return b(e._storedError);Pt(e);const r=e._reader;if(r!==void 0&&Fe(r)){const f=r._readIntoRequests;r._readIntoRequests=new D,f.forEach(c=>{c._closeSteps(void 0)})}const s=e._readableStreamController[Ar](t);return F(s,u)}n(ie,"ReadableStreamCancel");function Pt(e){e._state="closed";const t=e._reader;if(t!==void 0&&(Zn(t),Ee(t))){const r=t._readRequests;t._readRequests=new D,r.forEach(s=>{s._closeSteps()})}}n(Pt,"ReadableStreamClose");function Zo(e,t){e._state="errored",e._storedError=t;const r=e._reader;r!==void 0&&(Or(r,t),Ee(r)?ro(r,t):Ao(r,t))}n(Zo,"ReadableStreamError");function De(e){return new TypeError(`ReadableStream.prototype.${e} can only be used on a ReadableStream`)}n(De,"streamBrandCheckException$1");function Ko(e,t){ue(e,t);const r=e?.highWaterMark;return zr(r,"highWaterMark","QueuingStrategyInit"),{highWaterMark:Ir(r)}}n(Ko,"convertQueuingStrategyInit");const Jo=n(e=>e.byteLength,"byteLengthSizeFunction");h(Jo,"size");const vn=class vn{constructor(t){Se(t,1,"ByteLengthQueuingStrategy"),t=Ko(t,"First parameter"),this._byteLengthQueuingStrategyHighWaterMark=t.highWaterMark}get highWaterMark(){if(!ei(this))throw Xo("highWaterMark");return this._byteLengthQueuingStrategyHighWaterMark}get size(){if(!ei(this))throw Xo("size");return Jo}};n(vn,"ByteLengthQueuingStrategy");let Xe=vn;Object.defineProperties(Xe.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(Xe.prototype,Symbol.toStringTag,{value:"ByteLengthQueuingStrategy",configurable:!0});function Xo(e){return new TypeError(`ByteLengthQueuingStrategy.prototype.${e} can only be used on a ByteLengthQueuingStrategy`)}n(Xo,"byteLengthBrandCheckException");function ei(e){return!l(e)||!Object.prototype.hasOwnProperty.call(e,"_byteLengthQueuingStrategyHighWaterMark")?!1:e instanceof Xe}n(ei,"IsByteLengthQueuingStrategy");const ti=n(()=>1,"countSizeFunction");h(ti,"size");const En=class En{constructor(t){Se(t,1,"CountQueuingStrategy"),t=Ko(t,"First parameter"),this._countQueuingStrategyHighWaterMark=t.highWaterMark}get highWaterMark(){if(!ni(this))throw ri("highWaterMark");return this._countQueuingStrategyHighWaterMark}get size(){if(!ni(this))throw ri("size");return ti}};n(En,"CountQueuingStrategy");let et=En;Object.defineProperties(et.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(et.prototype,Symbol.toStringTag,{value:"CountQueuingStrategy",configurable:!0});function ri(e){return new TypeError(`CountQueuingStrategy.prototype.${e} can only be used on a CountQueuingStrategy`)}n(ri,"countBrandCheckException");function ni(e){return!l(e)||!Object.prototype.hasOwnProperty.call(e,"_countQueuingStrategyHighWaterMark")?!1:e instanceof et}n(ni,"IsCountQueuingStrategy");function hs(e,t){ue(e,t);const r=e?.cancel,s=e?.flush,f=e?.readableType,c=e?.start,d=e?.transform,m=e?.writableType;return{cancel:r===void 0?void 0:ys(r,e,`${t} has member 'cancel' that`),flush:s===void 0?void 0:ps(s,e,`${t} has member 'flush' that`),readableType:f,start:c===void 0?void 0:bs(c,e,`${t} has member 'start' that`),transform:d===void 0?void 0:ms(d,e,`${t} has member 'transform' that`),writableType:m}}n(hs,"convertTransformer");function ps(e,t,r){return Z(e,r),s=>j(e,t,[s])}n(ps,"convertTransformerFlushCallback");function bs(e,t,r){return Z(e,r),s=>z(e,t,[s])}n(bs,"convertTransformerStartCallback");function ms(e,t,r){return Z(e,r),(s,f)=>j(e,t,[s,f])}n(ms,"convertTransformerTransformCallback");function ys(e,t,r){return Z(e,r),s=>j(e,t,[s])}n(ys,"convertTransformerCancelCallback");const An=class An{constructor(t={},r={},s={}){t===void 0&&(t=null);const f=Gt(r,"Second parameter"),c=Gt(s,"Third parameter"),d=hs(t,"First parameter");if(d.readableType!==void 0)throw new RangeError("Invalid readableType specified");if(d.writableType!==void 0)throw new RangeError("Invalid writableType specified");const m=St(c,0),R=Yt(c),y=St(f,1),C=Yt(f);let P;const B=E(ae=>{P=ae});gs(this,B,y,C,m,R),Ss(this,d),d.start!==void 0?P(d.start(this._transformStreamController)):P(void 0)}get readable(){if(!oi(this))throw li("readable");return this._readable}get writable(){if(!oi(this))throw li("writable");return this._writable}};n(An,"TransformStream");let tt=An;Object.defineProperties(tt.prototype,{readable:{enumerable:!0},writable:{enumerable:!0}}),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(tt.prototype,Symbol.toStringTag,{value:"TransformStream",configurable:!0});function gs(e,t,r,s,f,c){function d(){return t}n(d,"startAlgorithm");function m(B){return Ts(e,B)}n(m,"writeAlgorithm");function R(B){return Cs(e,B)}n(R,"abortAlgorithm");function y(){return Ps(e)}n(y,"closeAlgorithm"),e._writable=Ra(d,m,y,R,r,s);function C(){return vs(e)}n(C,"pullAlgorithm");function P(B){return Es(e,B)}n(P,"cancelAlgorithm"),e._readable=Ct(d,C,P,f,c),e._backpressure=void 0,e._backpressureChangePromise=void 0,e._backpressureChangePromise_resolve=void 0,ar(e,!0),e._transformStreamController=void 0}n(gs,"InitializeTransformStream");function oi(e){return!l(e)||!Object.prototype.hasOwnProperty.call(e,"_transformStreamController")?!1:e instanceof tt}n(oi,"IsTransformStream");function ii(e,t){oe(e._readable._readableStreamController,t),dn(e,t)}n(ii,"TransformStreamError");function dn(e,t){lr(e._transformStreamController),wt(e._writable._writableStreamController,t),hn(e)}n(dn,"TransformStreamErrorWritableAndUnblockWrite");function hn(e){e._backpressure&&ar(e,!1)}n(hn,"TransformStreamUnblockWrite");function ar(e,t){e._backpressureChangePromise!==void 0&&e._backpressureChangePromise_resolve(),e._backpressureChangePromise=E(r=>{e._backpressureChangePromise_resolve=r}),e._backpressure=t}n(ar,"TransformStreamSetBackpressure");const Bn=class Bn{constructor(){throw new TypeError("Illegal constructor")}get desiredSize(){if(!sr(this))throw ur("desiredSize");const t=this._controlledTransformStream._readable._readableStreamController;return fn(t)}enqueue(t=void 0){if(!sr(this))throw ur("enqueue");ai(this,t)}error(t=void 0){if(!sr(this))throw ur("error");ws(this,t)}terminate(){if(!sr(this))throw ur("terminate");Rs(this)}};n(Bn,"TransformStreamDefaultController");let pe=Bn;Object.defineProperties(pe.prototype,{enqueue:{enumerable:!0},error:{enumerable:!0},terminate:{enumerable:!0},desiredSize:{enumerable:!0}}),h(pe.prototype.enqueue,"enqueue"),h(pe.prototype.error,"error"),h(pe.prototype.terminate,"terminate"),typeof Symbol.toStringTag=="symbol"&&Object.defineProperty(pe.prototype,Symbol.toStringTag,{value:"TransformStreamDefaultController",configurable:!0});function sr(e){return!l(e)||!Object.prototype.hasOwnProperty.call(e,"_controlledTransformStream")?!1:e instanceof pe}n(sr,"IsTransformStreamDefaultController");function _s(e,t,r,s,f){t._controlledTransformStream=e,e._transformStreamController=t,t._transformAlgorithm=r,t._flushAlgorithm=s,t._cancelAlgorithm=f,t._finishPromise=void 0,t._finishPromise_resolve=void 0,t._finishPromise_reject=void 0}n(_s,"SetUpTransformStreamDefaultController");function Ss(e,t){const r=Object.create(pe.prototype);let s,f,c;t.transform!==void 0?s=n(d=>t.transform(d,r),"transformAlgorithm"):s=n(d=>{try{return ai(r,d),T(void 0)}catch(m){return b(m)}},"transformAlgorithm"),t.flush!==void 0?f=n(()=>t.flush(r),"flushAlgorithm"):f=n(()=>T(void 0),"flushAlgorithm"),t.cancel!==void 0?c=n(d=>t.cancel(d),"cancelAlgorithm"):c=n(()=>T(void 0),"cancelAlgorithm"),_s(e,r,s,f,c)}n(Ss,"SetUpTransformStreamDefaultControllerFromTransformer");function lr(e){e._transformAlgorithm=void 0,e._flushAlgorithm=void 0,e._cancelAlgorithm=void 0}n(lr,"TransformStreamDefaultControllerClearAlgorithms");function ai(e,t){const r=e._controlledTransformStream,s=r._readable._readableStreamController;if(!Je(s))throw new TypeError("Readable side is not in a state that permits enqueue");try{Ke(s,t)}catch(c){throw dn(r,c),r._readable._storedError}Za(s)!==r._backpressure&&ar(r,!0)}n(ai,"TransformStreamDefaultControllerEnqueue");function ws(e,t){ii(e._controlledTransformStream,t)}n(ws,"TransformStreamDefaultControllerError");function si(e,t){const r=e._transformAlgorithm(t);return F(r,void 0,s=>{throw ii(e._controlledTransformStream,s),s})}n(si,"TransformStreamDefaultControllerPerformTransform");function Rs(e){const t=e._controlledTransformStream,r=t._readable._readableStreamController;$e(r);const s=new TypeError("TransformStream terminated");dn(t,s)}n(Rs,"TransformStreamDefaultControllerTerminate");function Ts(e,t){const r=e._transformStreamController;if(e._backpressure){const s=e._backpressureChangePromise;return F(s,()=>{const f=e._writable;if(f._state==="erroring")throw f._storedError;return si(r,t)})}return si(r,t)}n(Ts,"TransformStreamDefaultSinkWriteAlgorithm");function Cs(e,t){const r=e._transformStreamController;if(r._finishPromise!==void 0)return r._finishPromise;const s=e._readable;r._finishPromise=E((c,d)=>{r._finishPromise_resolve=c,r._finishPromise_reject=d});const f=r._cancelAlgorithm(t);return lr(r),_(f,()=>(s._state==="errored"?rt(r,s._storedError):(oe(s._readableStreamController,t),pn(r)),null),c=>(oe(s._readableStreamController,c),rt(r,c),null)),r._finishPromise}n(Cs,"TransformStreamDefaultSinkAbortAlgorithm");function Ps(e){const t=e._transformStreamController;if(t._finishPromise!==void 0)return t._finishPromise;const r=e._readable;t._finishPromise=E((f,c)=>{t._finishPromise_resolve=f,t._finishPromise_reject=c});const s=t._flushAlgorithm();return lr(t),_(s,()=>(r._state==="errored"?rt(t,r._storedError):($e(r._readableStreamController),pn(t)),null),f=>(oe(r._readableStreamController,f),rt(t,f),null)),t._finishPromise}n(Ps,"TransformStreamDefaultSinkCloseAlgorithm");function vs(e){return ar(e,!1),e._backpressureChangePromise}n(vs,"TransformStreamDefaultSourcePullAlgorithm");function Es(e,t){const r=e._transformStreamController;if(r._finishPromise!==void 0)return r._finishPromise;const s=e._writable;r._finishPromise=E((c,d)=>{r._finishPromise_resolve=c,r._finishPromise_reject=d});const f=r._cancelAlgorithm(t);return lr(r),_(f,()=>(s._state==="errored"?rt(r,s._storedError):(wt(s._writableStreamController,t),hn(e),pn(r)),null),c=>(wt(s._writableStreamController,c),hn(e),rt(r,c),null)),r._finishPromise}n(Es,"TransformStreamDefaultSourceCancelAlgorithm");function ur(e){return new TypeError(`TransformStreamDefaultController.prototype.${e} can only be used on a TransformStreamDefaultController`)}n(ur,"defaultControllerBrandCheckException");function pn(e){e._finishPromise_resolve!==void 0&&(e._finishPromise_resolve(),e._finishPromise_resolve=void 0,e._finishPromise_reject=void 0)}n(pn,"defaultControllerFinishPromiseResolve");function rt(e,t){e._finishPromise_reject!==void 0&&(Q(e._finishPromise),e._finishPromise_reject(t),e._finishPromise_resolve=void 0,e._finishPromise_reject=void 0)}n(rt,"defaultControllerFinishPromiseReject");function li(e){return new TypeError(`TransformStream.prototype.${e} can only be used on a TransformStream`)}n(li,"streamBrandCheckException"),a.ByteLengthQueuingStrategy=Xe,a.CountQueuingStrategy=et,a.ReadableByteStreamController=te,a.ReadableStream=L,a.ReadableStreamBYOBReader=ce,a.ReadableStreamBYOBRequest=Re,a.ReadableStreamDefaultController=ne,a.ReadableStreamDefaultReader=fe,a.TransformStream=tt,a.TransformStreamDefaultController=pe,a.WritableStream=de,a.WritableStreamDefaultController=ke,a.WritableStreamDefaultWriter=re})}(pr,pr.exports)),pr.exports}n(Ls,"requirePonyfill_es2018");const $s=65536;if(!globalThis.ReadableStream)try{const i=require("node:process"),{emitWarning:o}=i;try{i.emitWarning=()=>{},Object.assign(globalThis,require("node:stream/web")),i.emitWarning=o}catch(a){throw i.emitWarning=o,a}}catch{Object.assign(globalThis,Ls())}try{const{Blob:i}=require("buffer");i&&!i.prototype.stream&&(i.prototype.stream=n(function(a){let u=0;const l=this;return new ReadableStream({type:"bytes",async pull(p){const g=await l.slice(u,Math.min(l.size,u+$s)).arrayBuffer();u+=g.byteLength,p.enqueue(new Uint8Array(g)),u===l.size&&p.close()}})},"name"))}catch{}/*! fetch-blob. MIT License. Jimmy Wärting */const hi=65536;async function*qn(i,o=!0){for(const a of i)if("stream"in a)yield*a.stream();else if(ArrayBuffer.isView(a))if(o){let u=a.byteOffset;const l=a.byteOffset+a.byteLength;for(;u!==l;){const p=Math.min(l-u,hi),h=a.buffer.slice(u,u+p);u+=h.byteLength,yield new Uint8Array(h)}}else yield a;else{let u=0,l=a;for(;u!==l.size;){const h=await l.slice(u,Math.min(l.size,u+hi)).arrayBuffer();u+=h.byteLength,yield new Uint8Array(h)}}}n(qn,"toIterator");const pi=(Ve=class{constructor(o=[],a={}){be(this,ve,[]);be(this,kt,"");be(this,bt,0);be(this,Cr,"transparent");if(typeof o!="object"||o===null)throw new TypeError("Failed to construct 'Blob': The provided value cannot be converted to a sequence.");if(typeof o[Symbol.iterator]!="function")throw new TypeError("Failed to construct 'Blob': The object must have a callable @@iterator property.");if(typeof a!="object"&&typeof a!="function")throw new TypeError("Failed to construct 'Blob': parameter 2 cannot convert to dictionary.");a===null&&(a={});const u=new TextEncoder;for(const p of o){let h;ArrayBuffer.isView(p)?h=new Uint8Array(p.buffer.slice(p.byteOffset,p.byteOffset+p.byteLength)):p instanceof ArrayBuffer?h=new Uint8Array(p.slice(0)):p instanceof Ve?h=p:h=u.encode(`${p}`),X(this,bt,O(this,bt)+(ArrayBuffer.isView(h)?h.byteLength:h.size)),O(this,ve).push(h)}X(this,Cr,`${a.endings===void 0?"transparent":a.endings}`);const l=a.type===void 0?"":String(a.type);X(this,kt,/^[\x20-\x7E]*$/.test(l)?l:"")}get size(){return O(this,bt)}get type(){return O(this,kt)}async text(){const o=new TextDecoder;let a="";for await(const u of qn(O(this,ve),!1))a+=o.decode(u,{stream:!0});return a+=o.decode(),a}async arrayBuffer(){const o=new Uint8Array(this.size);let a=0;for await(const u of qn(O(this,ve),!1))o.set(u,a),a+=u.length;return o.buffer}stream(){const o=qn(O(this,ve),!0);return new globalThis.ReadableStream({type:"bytes",async pull(a){const u=await o.next();u.done?a.close():a.enqueue(u.value)},async cancel(){await o.return()}})}slice(o=0,a=this.size,u=""){const{size:l}=this;let p=o<0?Math.max(l+o,0):Math.min(o,l),h=a<0?Math.max(l+a,0):Math.min(a,l);const g=Math.max(h-p,0),A=O(this,ve),w=[];let E=0;for(const b of A){if(E>=g)break;const q=ArrayBuffer.isView(b)?b.byteLength:b.size;if(p&&q<=p)p-=q,h-=q;else{let _;ArrayBuffer.isView(b)?(_=b.subarray(p,Math.min(q,h)),E+=_.byteLength):(_=b.slice(p,Math.min(q,h)),E+=_.size),h-=q,w.push(_),p=0}}const T=new Ve([],{type:String(u).toLowerCase()});return X(T,bt,g),X(T,ve,w),T}get[Symbol.toStringTag](){return"Blob"}static[Symbol.hasInstance](o){return o&&typeof o=="object"&&typeof o.constructor=="function"&&(typeof o.stream=="function"||typeof o.arrayBuffer=="function")&&/^(Blob|File)$/.test(o[Symbol.toStringTag])}},ve=new WeakMap,kt=new WeakMap,bt=new WeakMap,Cr=new WeakMap,n(Ve,"Blob"),Ve);Object.defineProperties(pi.prototype,{size:{enumerable:!0},type:{enumerable:!0},slice:{enumerable:!0}});const Ds=pi,ut=Ds,Ms=(Ot=class extends ut{constructor(a,u,l={}){if(arguments.length<2)throw new TypeError(`Failed to construct 'File': 2 arguments required, but only ${arguments.length} present.`);super(a,l);be(this,Wt,0);be(this,qt,"");l===null&&(l={});const p=l.lastModified===void 0?Date.now():Number(l.lastModified);Number.isNaN(p)||X(this,Wt,p),X(this,qt,String(u))}get name(){return O(this,qt)}get lastModified(){return O(this,Wt)}get[Symbol.toStringTag](){return"File"}static[Symbol.hasInstance](a){return!!a&&a instanceof ut&&/^(File)$/.test(a[Symbol.toStringTag])}},Wt=new WeakMap,qt=new WeakMap,n(Ot,"File"),Ot),Us=Ms,On=Us;/*! formdata-polyfill. MIT License. Jimmy Wärting */var{toStringTag:Et,iterator:xs,hasInstance:Ns}=Symbol,bi=Math.random,Hs="append,set,get,getAll,delete,keys,values,entries,forEach,constructor".split(","),mi=n((i,o,a)=>(i+="",/^(Blob|File)$/.test(o&&o[Et])?[(a=a!==void 0?a+"":o[Et]=="File"?o.name:"blob",i),o.name!==a||o[Et]=="blob"?new On([o],a,o):o]:[i,o+""]),"f"),zn=n((i,o)=>(o?i:i.replace(/\r?\n|\r/g,`\r +`)).replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),"e$1"),Me=n((i,o,a)=>{if(o.lengthtypeof o[a]!="function")}append(...o){Me("append",arguments,2),O(this,ee).push(mi(...o))}delete(o){Me("delete",arguments,1),o+="",X(this,ee,O(this,ee).filter(([a])=>a!==o))}get(o){Me("get",arguments,1),o+="";for(var a=O(this,ee),u=a.length,l=0;lu[0]===o&&a.push(u[1])),a}has(o){return Me("has",arguments,1),o+="",O(this,ee).some(a=>a[0]===o)}forEach(o,a){Me("forEach",arguments,1);for(var[u,l]of this)o.call(a,l,u,this)}set(...o){Me("set",arguments,2);var a=[],u=!0;o=mi(...o),O(this,ee).forEach(l=>{l[0]===o[0]?u&&(u=!a.push(o)):a.push(l)}),u&&a.push(o),X(this,ee,a)}*entries(){yield*O(this,ee)}*keys(){for(var[o]of this)yield o}*values(){for(var[,o]of this)yield o}},ee=new WeakMap,n(zt,"FormData"),zt);function Vs(i,o=ut){var a=`${bi()}${bi()}`.replace(/\./g,"").slice(-28).padStart(32,"-"),u=[],l=`--${a}\r +Content-Disposition: form-data; name="`;return i.forEach((p,h)=>typeof p=="string"?u.push(l+zn(h)+`"\r +\r +${p.replace(/\r(?!\n)|(?typeof i=="object"&&typeof i.append=="function"&&typeof i.delete=="function"&&typeof i.get=="function"&&typeof i.getAll=="function"&&typeof i.has=="function"&&typeof i.set=="function"&&typeof i.sort=="function"&&i[mr]==="URLSearchParams","isURLSearchParameters"),yr=n(i=>i&&typeof i=="object"&&typeof i.arrayBuffer=="function"&&typeof i.type=="string"&&typeof i.stream=="function"&&typeof i.constructor=="function"&&/^(Blob|File)$/.test(i[mr]),"isBlob"),Qs=n(i=>typeof i=="object"&&(i[mr]==="AbortSignal"||i[mr]==="EventTarget"),"isAbortSignal"),Ys=n((i,o)=>{const a=new URL(o).hostname,u=new URL(i).hostname;return a===u||a.endsWith(`.${u}`)},"isDomainOrSubdomain"),Gs=n((i,o)=>{const a=new URL(o).protocol,u=new URL(i).protocol;return a===u},"isSameProtocol"),Zs=ks(me.pipeline),H=Symbol("Body internals"),Nn=class Nn{constructor(o,{size:a=0}={}){let u=null;o===null?o=null:yi(o)?o=M.from(o.toString()):yr(o)||M.isBuffer(o)||(dr.isAnyArrayBuffer(o)?o=M.from(o):ArrayBuffer.isView(o)?o=M.from(o.buffer,o.byteOffset,o.byteLength):o instanceof me||(o instanceof br?(o=Vs(o),u=o.type.split("=")[1]):o=M.from(String(o))));let l=o;M.isBuffer(o)?l=me.Readable.from(o):yr(o)&&(l=me.Readable.from(o.stream())),this[H]={body:o,stream:l,boundary:u,disturbed:!1,error:null},this.size=a,o instanceof me&&o.on("error",p=>{const h=p instanceof ft?p:new G(`Invalid response body while trying to fetch ${this.url}: ${p.message}`,"system",p);this[H].error=h})}get body(){return this[H].stream}get bodyUsed(){return this[H].disturbed}async arrayBuffer(){const{buffer:o,byteOffset:a,byteLength:u}=await In(this);return o.slice(a,a+u)}async formData(){const o=this.headers.get("content-type");if(o.startsWith("application/x-www-form-urlencoded")){const u=new br,l=new URLSearchParams(await this.text());for(const[p,h]of l)u.append(p,h);return u}const{toFormData:a}=await import("./chunks/multipart-parser.mjs");return a(this.body,o)}async blob(){const o=this.headers&&this.headers.get("content-type")||this[H].body&&this[H].body.type||"",a=await this.arrayBuffer();return new ut([a],{type:o})}async json(){const o=await this.text();return JSON.parse(o)}async text(){const o=await In(this);return new TextDecoder().decode(o)}buffer(){return In(this)}};n(Nn,"Body");let Ue=Nn;Ue.prototype.buffer=hr(Ue.prototype.buffer,"Please use 'response.arrayBuffer()' instead of 'response.buffer()'","node-fetch#buffer"),Object.defineProperties(Ue.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0},data:{get:hr(()=>{},"data doesn't exist, use json(), text(), arrayBuffer(), or body instead","https://github.com/node-fetch/node-fetch/issues/1000 (response)")}});async function In(i){if(i[H].disturbed)throw new TypeError(`body used already for: ${i.url}`);if(i[H].disturbed=!0,i[H].error)throw i[H].error;const{body:o}=i;if(o===null)return M.alloc(0);if(!(o instanceof me))return M.alloc(0);const a=[];let u=0;try{for await(const l of o){if(i.size>0&&u+l.length>i.size){const p=new G(`content size at ${i.url} over limit: ${i.size}`,"max-size");throw o.destroy(p),p}u+=l.length,a.push(l)}}catch(l){throw l instanceof ft?l:new G(`Invalid response body while trying to fetch ${i.url}: ${l.message}`,"system",l)}if(o.readableEnded===!0||o._readableState.ended===!0)try{return a.every(l=>typeof l=="string")?M.from(a.join("")):M.concat(a,u)}catch(l){throw new G(`Could not create Buffer from response body for ${i.url}: ${l.message}`,"system",l)}else throw new G(`Premature close of server response while trying to fetch ${i.url}`)}n(In,"consumeBody");const Fn=n((i,o)=>{let a,u,{body:l}=i[H];if(i.bodyUsed)throw new Error("cannot clone body after it is used");return l instanceof me&&typeof l.getBoundary!="function"&&(a=new cr({highWaterMark:o}),u=new cr({highWaterMark:o}),l.pipe(a),l.pipe(u),i[H].stream=a,l=u),l},"clone"),Ks=hr(i=>i.getBoundary(),"form-data doesn't follow the spec and requires special treatment. Use alternative package","https://github.com/node-fetch/node-fetch/issues/1167"),gi=n((i,o)=>i===null?null:typeof i=="string"?"text/plain;charset=UTF-8":yi(i)?"application/x-www-form-urlencoded;charset=UTF-8":yr(i)?i.type||null:M.isBuffer(i)||dr.isAnyArrayBuffer(i)||ArrayBuffer.isView(i)?null:i instanceof br?`multipart/form-data; boundary=${o[H].boundary}`:i&&typeof i.getBoundary=="function"?`multipart/form-data;boundary=${Ks(i)}`:i instanceof me?null:"text/plain;charset=UTF-8","extractContentType"),Js=n(i=>{const{body:o}=i[H];return o===null?0:yr(o)?o.size:M.isBuffer(o)?o.length:o&&typeof o.getLengthSync=="function"&&o.hasKnownLength&&o.hasKnownLength()?o.getLengthSync():null},"getTotalBytes"),Xs=n(async(i,{body:o})=>{o===null?i.end():await Zs(o,i)},"writeToStream"),gr=typeof vt.validateHeaderName=="function"?vt.validateHeaderName:i=>{if(!/^[\^`\-\w!#$%&'*+.|~]+$/.test(i)){const o=new TypeError(`Header name must be a valid HTTP token [${i}]`);throw Object.defineProperty(o,"code",{value:"ERR_INVALID_HTTP_TOKEN"}),o}},jn=typeof vt.validateHeaderValue=="function"?vt.validateHeaderValue:(i,o)=>{if(/[^\t\u0020-\u007E\u0080-\u00FF]/.test(o)){const a=new TypeError(`Invalid character in header content ["${i}"]`);throw Object.defineProperty(a,"code",{value:"ERR_INVALID_CHAR"}),a}},Pr=class Pr extends URLSearchParams{constructor(o){let a=[];if(o instanceof Pr){const u=o.raw();for(const[l,p]of Object.entries(u))a.push(...p.map(h=>[l,h]))}else if(o!=null)if(typeof o=="object"&&!dr.isBoxedPrimitive(o)){const u=o[Symbol.iterator];if(u==null)a.push(...Object.entries(o));else{if(typeof u!="function")throw new TypeError("Header pairs must be iterable");a=[...o].map(l=>{if(typeof l!="object"||dr.isBoxedPrimitive(l))throw new TypeError("Each header pair must be an iterable object");return[...l]}).map(l=>{if(l.length!==2)throw new TypeError("Each header pair must be a name/value tuple");return[...l]})}}else throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(sequence> or record)");return a=a.length>0?a.map(([u,l])=>(gr(u),jn(u,String(l)),[String(u).toLowerCase(),String(l)])):void 0,super(a),new Proxy(this,{get(u,l,p){switch(l){case"append":case"set":return(h,g)=>(gr(h),jn(h,String(g)),URLSearchParams.prototype[l].call(u,String(h).toLowerCase(),String(g)));case"delete":case"has":case"getAll":return h=>(gr(h),URLSearchParams.prototype[l].call(u,String(h).toLowerCase()));case"keys":return()=>(u.sort(),new Set(URLSearchParams.prototype.keys.call(u)).keys());default:return Reflect.get(u,l,p)}}})}get[Symbol.toStringTag](){return this.constructor.name}toString(){return Object.prototype.toString.call(this)}get(o){const a=this.getAll(o);if(a.length===0)return null;let u=a.join(", ");return/^content-encoding$/i.test(o)&&(u=u.toLowerCase()),u}forEach(o,a=void 0){for(const u of this.keys())Reflect.apply(o,a,[this.get(u),u,this])}*values(){for(const o of this.keys())yield this.get(o)}*entries(){for(const o of this.keys())yield[o,this.get(o)]}[Symbol.iterator](){return this.entries()}raw(){return[...this.keys()].reduce((o,a)=>(o[a]=this.getAll(a),o),{})}[Symbol.for("nodejs.util.inspect.custom")](){return[...this.keys()].reduce((o,a)=>{const u=this.getAll(a);return a==="host"?o[a]=u[0]:o[a]=u.length>1?u:u[0],o},{})}};n(Pr,"Headers");let ye=Pr;Object.defineProperties(ye.prototype,["get","entries","forEach","values"].reduce((i,o)=>(i[o]={enumerable:!0},i),{}));function el(i=[]){return new ye(i.reduce((o,a,u,l)=>(u%2===0&&o.push(l.slice(u,u+2)),o),[]).filter(([o,a])=>{try{return gr(o),jn(o,String(a)),!0}catch{return!1}}))}n(el,"fromRawHeaders");const tl=new Set([301,302,303,307,308]),Ln=n(i=>tl.has(i),"isRedirect"),se=Symbol("Response internals"),xe=class xe extends Ue{constructor(o=null,a={}){super(o,a);const u=a.status!=null?a.status:200,l=new ye(a.headers);if(o!==null&&!l.has("Content-Type")){const p=gi(o,this);p&&l.append("Content-Type",p)}this[se]={type:"default",url:a.url,status:u,statusText:a.statusText||"",headers:l,counter:a.counter,highWaterMark:a.highWaterMark}}get type(){return this[se].type}get url(){return this[se].url||""}get status(){return this[se].status}get ok(){return this[se].status>=200&&this[se].status<300}get redirected(){return this[se].counter>0}get statusText(){return this[se].statusText}get headers(){return this[se].headers}get highWaterMark(){return this[se].highWaterMark}clone(){return new xe(Fn(this,this.highWaterMark),{type:this.type,url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected,size:this.size,highWaterMark:this.highWaterMark})}static redirect(o,a=302){if(!Ln(a))throw new RangeError('Failed to execute "redirect" on "response": Invalid status code');return new xe(null,{headers:{location:new URL(o).toString()},status:a})}static error(){const o=new xe(null,{status:0,statusText:""});return o[se].type="error",o}static json(o=void 0,a={}){const u=JSON.stringify(o);if(u===void 0)throw new TypeError("data is not JSON serializable");const l=new ye(a&&a.headers);return l.has("content-type")||l.set("content-type","application/json"),new xe(u,{...a,headers:l})}get[Symbol.toStringTag](){return"Response"}};n(xe,"Response");let le=xe;Object.defineProperties(le.prototype,{type:{enumerable:!0},url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});const rl=n(i=>{if(i.search)return i.search;const o=i.href.length-1,a=i.hash||(i.href[o]==="#"?"#":"");return i.href[o-a.length]==="?"?"?":""},"getSearch");function _i(i,o=!1){return i==null||(i=new URL(i),/^(about|blob|data):$/.test(i.protocol))?"no-referrer":(i.username="",i.password="",i.hash="",o&&(i.pathname="",i.search=""),i)}n(_i,"stripURLForUseAsAReferrer");const Si=new Set(["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"]),nl="strict-origin-when-cross-origin";function ol(i){if(!Si.has(i))throw new TypeError(`Invalid referrerPolicy: ${i}`);return i}n(ol,"validateReferrerPolicy");function il(i){if(/^(http|ws)s:$/.test(i.protocol))return!0;const o=i.host.replace(/(^\[)|(]$)/g,""),a=Os(o);return a===4&&/^127\./.test(o)||a===6&&/^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(o)?!0:i.host==="localhost"||i.host.endsWith(".localhost")?!1:i.protocol==="file:"}n(il,"isOriginPotentiallyTrustworthy");function ct(i){return/^about:(blank|srcdoc)$/.test(i)||i.protocol==="data:"||/^(blob|filesystem):$/.test(i.protocol)?!0:il(i)}n(ct,"isUrlPotentiallyTrustworthy");function al(i,{referrerURLCallback:o,referrerOriginCallback:a}={}){if(i.referrer==="no-referrer"||i.referrerPolicy==="")return null;const u=i.referrerPolicy;if(i.referrer==="about:client")return"no-referrer";const l=i.referrer;let p=_i(l),h=_i(l,!0);p.toString().length>4096&&(p=h),o&&(p=o(p)),a&&(h=a(h));const g=new URL(i.url);switch(u){case"no-referrer":return"no-referrer";case"origin":return h;case"unsafe-url":return p;case"strict-origin":return ct(p)&&!ct(g)?"no-referrer":h.toString();case"strict-origin-when-cross-origin":return p.origin===g.origin?p:ct(p)&&!ct(g)?"no-referrer":h;case"same-origin":return p.origin===g.origin?p:"no-referrer";case"origin-when-cross-origin":return p.origin===g.origin?p:h;case"no-referrer-when-downgrade":return ct(p)&&!ct(g)?"no-referrer":p;default:throw new TypeError(`Invalid referrerPolicy: ${u}`)}}n(al,"determineRequestsReferrer");function sl(i){const o=(i.get("referrer-policy")||"").split(/[,\s]+/);let a="";for(const u of o)u&&Si.has(u)&&(a=u);return a}n(sl,"parseReferrerPolicyFromHeader");const $=Symbol("Request internals"),At=n(i=>typeof i=="object"&&typeof i[$]=="object","isRequest"),ll=hr(()=>{},".data is not a valid RequestInit property, use .body instead","https://github.com/node-fetch/node-fetch/issues/1000 (request)"),vr=class vr extends Ue{constructor(o,a={}){let u;if(At(o)?u=new URL(o.url):(u=new URL(o),o={}),u.username!==""||u.password!=="")throw new TypeError(`${u} is an url with embedded credentials.`);let l=a.method||o.method||"GET";if(/^(delete|get|head|options|post|put)$/i.test(l)&&(l=l.toUpperCase()),!At(a)&&"data"in a&&ll(),(a.body!=null||At(o)&&o.body!==null)&&(l==="GET"||l==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");const p=a.body?a.body:At(o)&&o.body!==null?Fn(o):null;super(p,{size:a.size||o.size||0});const h=new ye(a.headers||o.headers||{});if(p!==null&&!h.has("Content-Type")){const w=gi(p,this);w&&h.set("Content-Type",w)}let g=At(o)?o.signal:null;if("signal"in a&&(g=a.signal),g!=null&&!Qs(g))throw new TypeError("Expected signal to be an instanceof AbortSignal or EventTarget");let A=a.referrer==null?o.referrer:a.referrer;if(A==="")A="no-referrer";else if(A){const w=new URL(A);A=/^about:(\/\/)?client$/.test(w)?"client":w}else A=void 0;this[$]={method:l,redirect:a.redirect||o.redirect||"follow",headers:h,parsedURL:u,signal:g,referrer:A},this.follow=a.follow===void 0?o.follow===void 0?20:o.follow:a.follow,this.compress=a.compress===void 0?o.compress===void 0?!0:o.compress:a.compress,this.counter=a.counter||o.counter||0,this.agent=a.agent||o.agent,this.highWaterMark=a.highWaterMark||o.highWaterMark||16384,this.insecureHTTPParser=a.insecureHTTPParser||o.insecureHTTPParser||!1,this.referrerPolicy=a.referrerPolicy||o.referrerPolicy||""}get method(){return this[$].method}get url(){return qs(this[$].parsedURL)}get headers(){return this[$].headers}get redirect(){return this[$].redirect}get signal(){return this[$].signal}get referrer(){if(this[$].referrer==="no-referrer")return"";if(this[$].referrer==="client")return"about:client";if(this[$].referrer)return this[$].referrer.toString()}get referrerPolicy(){return this[$].referrerPolicy}set referrerPolicy(o){this[$].referrerPolicy=ol(o)}clone(){return new vr(this)}get[Symbol.toStringTag](){return"Request"}};n(vr,"Request");let dt=vr;Object.defineProperties(dt.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0},referrer:{enumerable:!0},referrerPolicy:{enumerable:!0}});const ul=n(i=>{const{parsedURL:o}=i[$],a=new ye(i[$].headers);a.has("Accept")||a.set("Accept","*/*");let u=null;if(i.body===null&&/^(post|put)$/i.test(i.method)&&(u="0"),i.body!==null){const g=Js(i);typeof g=="number"&&!Number.isNaN(g)&&(u=String(g))}u&&a.set("Content-Length",u),i.referrerPolicy===""&&(i.referrerPolicy=nl),i.referrer&&i.referrer!=="no-referrer"?i[$].referrer=al(i):i[$].referrer="no-referrer",i[$].referrer instanceof URL&&a.set("Referer",i.referrer),a.has("User-Agent")||a.set("User-Agent","node-fetch"),i.compress&&!a.has("Accept-Encoding")&&a.set("Accept-Encoding","gzip, deflate, br");let{agent:l}=i;typeof l=="function"&&(l=l(o));const p=rl(o),h={path:o.pathname+p,method:i.method,headers:a[Symbol.for("nodejs.util.inspect.custom")](),insecureHTTPParser:i.insecureHTTPParser,agent:l};return{parsedURL:o,options:h}},"getNodeRequestOptions"),Hn=class Hn extends ft{constructor(o,a="aborted"){super(o,a)}};n(Hn,"AbortError");let _r=Hn;/*! node-domexception. MIT License. Jimmy Wärting */if(!globalThis.DOMException)try{const{MessageChannel:i}=require("worker_threads"),o=new i().port1,a=new ArrayBuffer;o.postMessage(a,[a,a])}catch(i){i.constructor.name==="DOMException"&&(globalThis.DOMException=i.constructor)}var fl=globalThis.DOMException;const cl=Ws(fl),{stat:$n}=Is,dl=n((i,o)=>wi(ci(i),i,o),"blobFromSync"),hl=n((i,o)=>$n(i).then(a=>wi(a,i,o)),"blobFrom"),pl=n((i,o)=>$n(i).then(a=>Ri(a,i,o)),"fileFrom"),bl=n((i,o)=>Ri(ci(i),i,o),"fileFromSync"),wi=n((i,o,a="")=>new ut([new Sr({path:o,size:i.size,lastModified:i.mtimeMs,start:0})],{type:a}),"fromBlob"),Ri=n((i,o,a="")=>new On([new Sr({path:o,size:i.size,lastModified:i.mtimeMs,start:0})],Fs(o),{type:a,lastModified:i.mtimeMs}),"fromFile"),Er=class Er{constructor(o){be(this,Ne,void 0);be(this,He,void 0);X(this,Ne,o.path),X(this,He,o.start),this.size=o.size,this.lastModified=o.lastModified}slice(o,a){return new Er({path:O(this,Ne),lastModified:this.lastModified,size:a-o,start:O(this,He)+o})}async*stream(){const{mtimeMs:o}=await $n(O(this,Ne));if(o>this.lastModified)throw new cl("The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.","NotReadableError");yield*zs(O(this,Ne),{start:O(this,He),end:O(this,He)+this.size-1})}get[Symbol.toStringTag](){return"Blob"}};Ne=new WeakMap,He=new WeakMap,n(Er,"BlobDataItem");let Sr=Er;const ml=new Set(["data:","http:","https:"]);async function Ti(i,o){return new Promise((a,u)=>{const l=new dt(i,o),{parsedURL:p,options:h}=ul(l);if(!ml.has(p.protocol))throw new TypeError(`node-fetch cannot load ${i}. URL scheme "${p.protocol.replace(/:$/,"")}" is not supported.`);if(p.protocol==="data:"){const _=js(l.url),V=new le(_,{headers:{"Content-Type":_.typeFull}});a(V);return}const g=(p.protocol==="https:"?Bs:vt).request,{signal:A}=l;let w=null;const E=n(()=>{const _=new _r("The operation was aborted.");u(_),l.body&&l.body instanceof me.Readable&&l.body.destroy(_),!(!w||!w.body)&&w.body.emit("error",_)},"abort");if(A&&A.aborted){E();return}const T=n(()=>{E(),q()},"abortAndFinalize"),b=g(p.toString(),h);A&&A.addEventListener("abort",T);const q=n(()=>{b.abort(),A&&A.removeEventListener("abort",T)},"finalize");b.on("error",_=>{u(new G(`request to ${l.url} failed, reason: ${_.message}`,"system",_)),q()}),yl(b,_=>{w&&w.body&&w.body.destroy(_)}),process.version<"v14"&&b.on("socket",_=>{let V;_.prependListener("end",()=>{V=_._eventsCount}),_.prependListener("close",I=>{if(w&&V<_._eventsCount&&!I){const F=new Error("Premature close");F.code="ERR_STREAM_PREMATURE_CLOSE",w.body.emit("error",F)}})}),b.on("response",_=>{b.setTimeout(0);const V=el(_.rawHeaders);if(Ln(_.statusCode)){const z=V.get("Location");let j=null;try{j=z===null?null:new URL(z,l.url)}catch{if(l.redirect!=="manual"){u(new G(`uri requested responds with an invalid redirect URL: ${z}`,"invalid-redirect")),q();return}}switch(l.redirect){case"error":u(new G(`uri requested responds with a redirect, redirect mode is set to error: ${l.url}`,"no-redirect")),q();return;case"manual":break;case"follow":{if(j===null)break;if(l.counter>=l.follow){u(new G(`maximum redirect reached at: ${l.url}`,"max-redirect")),q();return}const U={headers:new ye(l.headers),follow:l.follow,counter:l.counter+1,agent:l.agent,compress:l.compress,method:l.method,body:Fn(l),signal:l.signal,size:l.size,referrer:l.referrer,referrerPolicy:l.referrerPolicy};if(!Ys(l.url,j)||!Gs(l.url,j))for(const Ft of["authorization","www-authenticate","cookie","cookie2"])U.headers.delete(Ft);if(_.statusCode!==303&&l.body&&o.body instanceof me.Readable){u(new G("Cannot follow redirect with body being a readable stream","unsupported-redirect")),q();return}(_.statusCode===303||(_.statusCode===301||_.statusCode===302)&&l.method==="POST")&&(U.method="GET",U.body=void 0,U.headers.delete("content-length"));const D=sl(V);D&&(U.referrerPolicy=D),a(Ti(new dt(j,U))),q();return}default:return u(new TypeError(`Redirect option '${l.redirect}' is not a valid value of RequestRedirect`))}}A&&_.once("end",()=>{A.removeEventListener("abort",T)});let I=lt(_,new cr,z=>{z&&u(z)});process.version<"v12.10"&&_.on("aborted",T);const F={url:l.url,status:_.statusCode,statusText:_.statusMessage,headers:V,size:l.size,counter:l.counter,highWaterMark:l.highWaterMark},Q=V.get("Content-Encoding");if(!l.compress||l.method==="HEAD"||Q===null||_.statusCode===204||_.statusCode===304){w=new le(I,F),a(w);return}const ge={flush:st.Z_SYNC_FLUSH,finishFlush:st.Z_SYNC_FLUSH};if(Q==="gzip"||Q==="x-gzip"){I=lt(I,st.createGunzip(ge),z=>{z&&u(z)}),w=new le(I,F),a(w);return}if(Q==="deflate"||Q==="x-deflate"){const z=lt(_,new cr,j=>{j&&u(j)});z.once("data",j=>{(j[0]&15)===8?I=lt(I,st.createInflate(),U=>{U&&u(U)}):I=lt(I,st.createInflateRaw(),U=>{U&&u(U)}),w=new le(I,F),a(w)}),z.once("end",()=>{w||(w=new le(I,F),a(w))});return}if(Q==="br"){I=lt(I,st.createBrotliDecompress(),z=>{z&&u(z)}),w=new le(I,F),a(w);return}w=new le(I,F),a(w)}),Xs(b,l).catch(u)})}n(Ti,"fetch$1");function yl(i,o){const a=M.from(`0\r +\r +`);let u=!1,l=!1,p;i.on("response",h=>{const{headers:g}=h;u=g["transfer-encoding"]==="chunked"&&!g["content-length"]}),i.on("socket",h=>{const g=n(()=>{if(u&&!l){const w=new Error("Premature close");w.code="ERR_STREAM_PREMATURE_CLOSE",o(w)}},"onSocketClose"),A=n(w=>{l=M.compare(w.slice(-5),a)===0,!l&&p&&(l=M.compare(p.slice(-3),a.slice(0,3))===0&&M.compare(w.slice(-2),a.slice(3))===0),p=w},"onData");h.prependListener("close",g),h.on("data",A),i.on("close",()=>{h.removeListener("close",g),h.removeListener("data",A)})})}n(yl,"fixResponseChunkedTransferBadEnding");const Ci=new WeakMap,Dn=new WeakMap;function W(i){const o=Ci.get(i);return console.assert(o!=null,"'this' is expected an Event object, but got",i),o}n(W,"pd");function Pi(i){if(i.passiveListener!=null){typeof console<"u"&&typeof console.error=="function"&&console.error("Unable to preventDefault inside passive event listener invocation.",i.passiveListener);return}i.event.cancelable&&(i.canceled=!0,typeof i.event.preventDefault=="function"&&i.event.preventDefault())}n(Pi,"setCancelFlag");function ht(i,o){Ci.set(this,{eventTarget:i,event:o,eventPhase:2,currentTarget:i,canceled:!1,stopped:!1,immediateStopped:!1,passiveListener:null,timeStamp:o.timeStamp||Date.now()}),Object.defineProperty(this,"isTrusted",{value:!1,enumerable:!0});const a=Object.keys(o);for(let u=0;u0){const i=new Array(arguments.length);for(let o=0;oEl(i,"name",{value:o,configurable:!0}),"e");const Fi=Ti;ji();function ji(){!globalThis.process?.versions?.node&&!globalThis.process?.env.DISABLE_NODE_FETCH_NATIVE_WARN&&console.warn("[node-fetch-native] Node.js compatible build of `node-fetch-native` is being used in a non-Node.js environment. Please make sure you are using proper export conditions or report this issue to https://github.com/unjs/node-fetch-native. You can set `process.env.DISABLE_NODE_FETCH_NATIVE_WARN` to disable this warning.")}n(ji,"s"),Al(ji,"checkNodeEnvironment");export{Mn as AbortController,_r as AbortError,ut as Blob,G as FetchError,On as File,br as FormData,ye as Headers,dt as Request,le as Response,hl as blobFrom,dl as blobFromSync,Fi as default,Fi as fetch,pl as fileFrom,bl as fileFromSync,Ln as isRedirect}; diff --git a/node_modules/node-fetch-native-with-agent/dist/polyfill.cjs b/node_modules/node-fetch-native-with-agent/dist/polyfill.cjs new file mode 100644 index 0000000..41f5689 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/polyfill.cjs @@ -0,0 +1 @@ +"use strict";var n=Object.defineProperty;var i=(r,o)=>n(r,"name",{value:o,configurable:!0});const node=require("./node.cjs");require("node:fs"),require("node:path"),require("node:http"),require("node:https"),require("node:zlib"),require("node:stream"),require("node:buffer"),require("node:util"),require("./shared/node-fetch-native-with-agent.61758d11.cjs"),require("node:url"),require("node:net");var t=Object.defineProperty,a=i((r,o)=>t(r,"name",{value:o,configurable:!0}),"a");function e(r,o){if(!(r in globalThis))try{globalThis[r]=o}catch{}}i(e,"e"),a(e,"polyfill"),e("fetch",node.fetch),e("Blob",node.Blob),e("File",node.File),e("FormData",node.FormData),e("Headers",node.Headers),e("Request",node.Request),e("Response",node.Response),e("AbortController",node.AbortController); diff --git a/node_modules/node-fetch-native-with-agent/dist/polyfill.mjs b/node_modules/node-fetch-native-with-agent/dist/polyfill.mjs new file mode 100644 index 0000000..103f1f4 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/polyfill.mjs @@ -0,0 +1 @@ +var i=Object.defineProperty;var e=(r,t)=>i(r,"name",{value:t,configurable:!0});import{fetch as l,Blob as a,File as m,FormData as p,Headers as s,Request as n,Response as b,AbortController as f}from"./node.mjs";import"node:fs";import"node:path";import"node:http";import"node:https";import"node:zlib";import"node:stream";import"node:buffer";import"node:util";import"./shared/node-fetch-native-with-agent.1a4a356d.mjs";import"node:url";import"node:net";var c=Object.defineProperty,h=e((r,t)=>c(r,"name",{value:t,configurable:!0}),"a");function o(r,t){if(!(r in globalThis))try{globalThis[r]=t}catch{}}e(o,"e"),h(o,"polyfill"),o("fetch",l),o("Blob",a),o("File",m),o("FormData",p),o("Headers",s),o("Request",n),o("Response",b),o("AbortController",f); diff --git a/node_modules/node-fetch-native-with-agent/dist/proxy-stub.cjs b/node_modules/node-fetch-native-with-agent/dist/proxy-stub.cjs new file mode 100644 index 0000000..709460e --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/proxy-stub.cjs @@ -0,0 +1 @@ +"use strict";var o=Object.defineProperty;var t=(c,a)=>o(c,"name",{value:a,configurable:!0});var r=Object.defineProperty,e=t((c,a)=>r(c,"name",{value:a,configurable:!0}),"e");function createProxy(){return{agent:void 0,dispatcher:void 0}}t(createProxy,"createProxy"),e(createProxy,"createProxy");function createFetch(){return globalThis.fetch}t(createFetch,"createFetch"),e(createFetch,"createFetch");const fetch=globalThis.fetch;exports.createFetch=createFetch,exports.createProxy=createProxy,exports.fetch=fetch; diff --git a/node_modules/node-fetch-native-with-agent/dist/proxy-stub.mjs b/node_modules/node-fetch-native-with-agent/dist/proxy-stub.mjs new file mode 100644 index 0000000..9791b4b --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/proxy-stub.mjs @@ -0,0 +1 @@ +var n=Object.defineProperty;var e=(t,r)=>n(t,"name",{value:r,configurable:!0});var i=Object.defineProperty,c=e((t,r)=>i(t,"name",{value:r,configurable:!0}),"e");function a(){return{agent:void 0,dispatcher:void 0}}e(a,"createProxy"),c(a,"createProxy");function o(){return globalThis.fetch}e(o,"createFetch"),c(o,"createFetch");const h=globalThis.fetch;export{o as createFetch,a as createProxy,h as fetch}; diff --git a/node_modules/node-fetch-native-with-agent/dist/proxy.cjs b/node_modules/node-fetch-native-with-agent/dist/proxy.cjs new file mode 100644 index 0000000..5f0b574 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/proxy.cjs @@ -0,0 +1,14 @@ +"use strict";var z=Object.defineProperty;var p=(r,e)=>z(r,"name",{value:e,configurable:!0});var M,I;const http$1=require("node:http"),https$1=require("node:https"),require$$1$4=require("node:url"),index=require("./shared/node-fetch-native-with-agent.df7e6bd6.cjs"),_commonjsHelpers=require("./shared/node-fetch-native-with-agent.61758d11.cjs"),require$$0$1=require("net"),require$$0=require("http"),require$$1=require("https"),require$$1$3=require("tls"),require$$1$1=require("tty"),require$$1$2=require("util"),require$$0$2=require("os"),require$$3=require("events"),require$$5=require("url"),require$$2=require("assert"),nodeFetchNativeWithAgent=require("node-fetch-native-with-agent");require("node:assert"),require("node:net"),require("node:stream"),require("node:buffer"),require("node:util"),require("node:querystring"),require("node:diagnostics_channel"),require("node:events"),require("node:tls"),require("node:zlib"),require("node:perf_hooks"),require("node:util/types"),require("node:os"),require("node:async_hooks"),require("node:console"),require("string_decoder"),require("node:worker_threads");function _interopDefaultCompat(r){return r&&typeof r=="object"&&"default"in r?r.default:r}p(_interopDefaultCompat,"_interopDefaultCompat");function _interopNamespaceCompat(r){if(r&&typeof r=="object"&&"default"in r)return r;const e=Object.create(null);if(r)for(const o in r)e[o]=r[o];return e.default=r,e}p(_interopNamespaceCompat,"_interopNamespaceCompat");const http__namespace=_interopNamespaceCompat(http$1),https__namespace=_interopNamespaceCompat(https$1),require$$0__default$1=_interopDefaultCompat(require$$0$1),require$$0__default=_interopDefaultCompat(require$$0),require$$1__default=_interopDefaultCompat(require$$1),require$$1__default$3=_interopDefaultCompat(require$$1$3),require$$1__default$1=_interopDefaultCompat(require$$1$1),require$$1__default$2=_interopDefaultCompat(require$$1$2),require$$0__default$2=_interopDefaultCompat(require$$0$2),require$$3__default=_interopDefaultCompat(require$$3),require$$5__default=_interopDefaultCompat(require$$5),require$$2__default=_interopDefaultCompat(require$$2);var dist$2={},helpers={},__createBinding$2=_commonjsHelpers.commonjsGlobal&&_commonjsHelpers.commonjsGlobal.__createBinding||(Object.create?function(r,e,o,t){t===void 0&&(t=o);var l=Object.getOwnPropertyDescriptor(e,o);(!l||("get"in l?!e.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return e[o]}}),Object.defineProperty(r,t,l)}:function(r,e,o,t){t===void 0&&(t=o),r[t]=e[o]}),__setModuleDefault$2=_commonjsHelpers.commonjsGlobal&&_commonjsHelpers.commonjsGlobal.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),__importStar$2=_commonjsHelpers.commonjsGlobal&&_commonjsHelpers.commonjsGlobal.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var o in r)o!=="default"&&Object.prototype.hasOwnProperty.call(r,o)&&__createBinding$2(e,r,o);return __setModuleDefault$2(e,r),e};Object.defineProperty(helpers,"__esModule",{value:!0}),helpers.req=helpers.json=helpers.toBuffer=void 0;const http=__importStar$2(require$$0__default),https=__importStar$2(require$$1__default);async function toBuffer(r){let e=0;const o=[];for await(const t of r)e+=t.length,o.push(t);return Buffer.concat(o,e)}p(toBuffer,"toBuffer"),helpers.toBuffer=toBuffer;async function json(r){const o=(await toBuffer(r)).toString("utf8");try{return JSON.parse(o)}catch(t){const l=t;throw l.message+=` (input: ${o})`,l}}p(json,"json"),helpers.json=json;function req(r,e={}){const t=((typeof r=="string"?r:r.href).startsWith("https:")?https:http).request(r,e),l=new Promise((m,w)=>{t.once("response",m).once("error",w).end()});return t.then=l.then.bind(l),t}p(req,"req"),helpers.req=req,function(r){var e=_commonjsHelpers.commonjsGlobal&&_commonjsHelpers.commonjsGlobal.__createBinding||(Object.create?function(c,n,f,_){_===void 0&&(_=f);var v=Object.getOwnPropertyDescriptor(n,f);(!v||("get"in v?!n.__esModule:v.writable||v.configurable))&&(v={enumerable:!0,get:function(){return n[f]}}),Object.defineProperty(c,_,v)}:function(c,n,f,_){_===void 0&&(_=f),c[_]=n[f]}),o=_commonjsHelpers.commonjsGlobal&&_commonjsHelpers.commonjsGlobal.__setModuleDefault||(Object.create?function(c,n){Object.defineProperty(c,"default",{enumerable:!0,value:n})}:function(c,n){c.default=n}),t=_commonjsHelpers.commonjsGlobal&&_commonjsHelpers.commonjsGlobal.__importStar||function(c){if(c&&c.__esModule)return c;var n={};if(c!=null)for(var f in c)f!=="default"&&Object.prototype.hasOwnProperty.call(c,f)&&e(n,c,f);return o(n,c),n},l=_commonjsHelpers.commonjsGlobal&&_commonjsHelpers.commonjsGlobal.__exportStar||function(c,n){for(var f in c)f!=="default"&&!Object.prototype.hasOwnProperty.call(n,f)&&e(n,c,f)};Object.defineProperty(r,"__esModule",{value:!0}),r.Agent=void 0;const m=t(require$$0__default$1),w=t(require$$0__default),$=require$$1__default;l(helpers,r);const y=Symbol("AgentBaseInternalState"),C=class C extends w.Agent{constructor(n){super(n),this[y]={}}isSecureEndpoint(n){if(n){if(typeof n.secureEndpoint=="boolean")return n.secureEndpoint;if(typeof n.protocol=="string")return n.protocol==="https:"}const{stack:f}=new Error;return typeof f!="string"?!1:f.split(` +`).some(_=>_.indexOf("(https.js:")!==-1||_.indexOf("node:https:")!==-1)}incrementSockets(n){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[n]||(this.sockets[n]=[]);const f=new m.Socket({writable:!1});return this.sockets[n].push(f),this.totalSocketCount++,f}decrementSockets(n,f){if(!this.sockets[n]||f===null)return;const _=this.sockets[n],v=_.indexOf(f);v!==-1&&(_.splice(v,1),this.totalSocketCount--,_.length===0&&delete this.sockets[n])}getName(n){return(typeof n.secureEndpoint=="boolean"?n.secureEndpoint:this.isSecureEndpoint(n))?$.Agent.prototype.getName.call(this,n):super.getName(n)}createSocket(n,f,_){const v={...f,secureEndpoint:this.isSecureEndpoint(f)},F=this.getName(v),x=this.incrementSockets(F);Promise.resolve().then(()=>this.connect(n,v)).then(j=>{if(this.decrementSockets(F,x),j instanceof w.Agent)return j.addRequest(n,v);this[y].currentSocket=j,super.createSocket(n,f,_)},j=>{this.decrementSockets(F,x),_(j)})}createConnection(){const n=this[y].currentSocket;if(this[y].currentSocket=void 0,!n)throw new Error("No socket was returned in the `connect()` function");return n}get defaultPort(){return this[y].defaultPort??(this.protocol==="https:"?443:80)}set defaultPort(n){this[y]&&(this[y].defaultPort=n)}get protocol(){return this[y].protocol??(this.isSecureEndpoint()?"https:":"http:")}set protocol(n){this[y]&&(this[y].protocol=n)}};p(C,"Agent");let b=C;r.Agent=b}(dist$2);var dist$1={},src={exports:{}},browser={exports:{}},ms,hasRequiredMs;function requireMs(){if(hasRequiredMs)return ms;hasRequiredMs=1;var r=1e3,e=r*60,o=e*60,t=o*24,l=t*7,m=t*365.25;ms=p(function(C,c){c=c||{};var n=typeof C;if(n==="string"&&C.length>0)return w(C);if(n==="number"&&isFinite(C))return c.long?y(C):$(C);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(C))},"ms");function w(C){if(C=String(C),!(C.length>100)){var c=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(C);if(c){var n=parseFloat(c[1]),f=(c[2]||"ms").toLowerCase();switch(f){case"years":case"year":case"yrs":case"yr":case"y":return n*m;case"weeks":case"week":case"w":return n*l;case"days":case"day":case"d":return n*t;case"hours":case"hour":case"hrs":case"hr":case"h":return n*o;case"minutes":case"minute":case"mins":case"min":case"m":return n*e;case"seconds":case"second":case"secs":case"sec":case"s":return n*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}p(w,"parse");function $(C){var c=Math.abs(C);return c>=t?Math.round(C/t)+"d":c>=o?Math.round(C/o)+"h":c>=e?Math.round(C/e)+"m":c>=r?Math.round(C/r)+"s":C+"ms"}p($,"fmtShort");function y(C){var c=Math.abs(C);return c>=t?b(C,c,t,"day"):c>=o?b(C,c,o,"hour"):c>=e?b(C,c,e,"minute"):c>=r?b(C,c,r,"second"):C+" ms"}p(y,"fmtLong");function b(C,c,n,f){var _=c>=n*1.5;return Math.round(C/n)+" "+f+(_?"s":"")}return p(b,"plural"),ms}p(requireMs,"requireMs");var common,hasRequiredCommon;function requireCommon(){if(hasRequiredCommon)return common;hasRequiredCommon=1;function r(e){t.debug=t,t.default=t,t.coerce=b,t.disable=w,t.enable=m,t.enabled=$,t.humanize=requireMs(),t.destroy=C,Object.keys(e).forEach(c=>{t[c]=e[c]}),t.names=[],t.skips=[],t.formatters={};function o(c){let n=0;for(let f=0;f{if(A==="%%")return"%";S++;const B=t.formatters[k];if(typeof B=="function"){const U=x[S];A=B.call(j,U),x.splice(S,1),S--}return A}),t.formatArgs.call(j,x),(j.log||t.log).apply(j,x)}return p(F,"debug"),F.namespace=c,F.useColors=t.useColors(),F.color=t.selectColor(c),F.extend=l,F.destroy=t.destroy,Object.defineProperty(F,"enabled",{enumerable:!0,configurable:!1,get:()=>f!==null?f:(_!==t.namespaces&&(_=t.namespaces,v=t.enabled(c)),v),set:x=>{f=x}}),typeof t.init=="function"&&t.init(F),F}p(t,"createDebug");function l(c,n){const f=t(this.namespace+(typeof n>"u"?":":n)+c);return f.log=this.log,f}p(l,"extend");function m(c){t.save(c),t.namespaces=c,t.names=[],t.skips=[];let n;const f=(typeof c=="string"?c:"").split(/[\s,]+/),_=f.length;for(n=0;n<_;n++)f[n]&&(c=f[n].replace(/\*/g,".*?"),c[0]==="-"?t.skips.push(new RegExp("^"+c.slice(1)+"$")):t.names.push(new RegExp("^"+c+"$")))}p(m,"enable");function w(){const c=[...t.names.map(y),...t.skips.map(y).map(n=>"-"+n)].join(",");return t.enable(""),c}p(w,"disable");function $(c){if(c[c.length-1]==="*")return!0;let n,f;for(n=0,f=t.skips.length;n{let y=!1;return()=>{y||(y=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),e.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function o(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}p(o,"useColors");function t(y){if(y[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+y[0]+(this.useColors?"%c ":" ")+"+"+r.exports.humanize(this.diff),!this.useColors)return;const b="color: "+this.color;y.splice(1,0,b,"color: inherit");let C=0,c=0;y[0].replace(/%[a-zA-Z%]/g,n=>{n!=="%%"&&(C++,n==="%c"&&(c=C))}),y.splice(c,0,b)}p(t,"formatArgs"),e.log=console.debug||console.log||(()=>{});function l(y){try{y?e.storage.setItem("debug",y):e.storage.removeItem("debug")}catch{}}p(l,"save");function m(){let y;try{y=e.storage.getItem("debug")}catch{}return!y&&typeof process<"u"&&"env"in process&&(y=process.env.DEBUG),y}p(m,"load");function w(){try{return localStorage}catch{}}p(w,"localstorage"),r.exports=requireCommon()(e);const{formatters:$}=r.exports;$.j=function(y){try{return JSON.stringify(y)}catch(b){return"[UnexpectedJSONParseError]: "+b.message}}}(browser,browser.exports)),browser.exports}p(requireBrowser,"requireBrowser");var node={exports:{}},hasFlag,hasRequiredHasFlag;function requireHasFlag(){return hasRequiredHasFlag||(hasRequiredHasFlag=1,hasFlag=p((r,e=process.argv)=>{const o=r.startsWith("-")?"":r.length===1?"-":"--",t=e.indexOf(o+r),l=e.indexOf("--");return t!==-1&&(l===-1||t=2,has16m:y>=3}}p(m,"translateLevel");function w(y,b){if(l===0)return 0;if(o("color=16m")||o("color=full")||o("color=truecolor"))return 3;if(o("color=256"))return 2;if(y&&!b&&l===void 0)return 0;const C=l||0;if(t.TERM==="dumb")return C;if(process.platform==="win32"){const c=r.release().split(".");return Number(c[0])>=10&&Number(c[2])>=10586?Number(c[2])>=14931?3:2:1}if("CI"in t)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(c=>c in t)||t.CI_NAME==="codeship"?1:C;if("TEAMCITY_VERSION"in t)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(t.TEAMCITY_VERSION)?1:0;if(t.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in t){const c=parseInt((t.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(t.TERM_PROGRAM){case"iTerm.app":return c>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(t.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(t.TERM)||"COLORTERM"in t?1:C}p(w,"supportsColor");function $(y){const b=w(y,y&&y.isTTY);return m(b)}return p($,"getSupportLevel"),supportsColor_1={supportsColor:$,stdout:m(w(!0,e.isatty(1))),stderr:m(w(!0,e.isatty(2)))},supportsColor_1}p(requireSupportsColor,"requireSupportsColor");var hasRequiredNode;function requireNode(){return hasRequiredNode||(hasRequiredNode=1,function(r,e){const o=require$$1__default$1,t=require$$1__default$2;e.init=C,e.log=$,e.formatArgs=m,e.save=y,e.load=b,e.useColors=l,e.destroy=t.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),e.colors=[6,2,3,4,5,1];try{const n=requireSupportsColor();n&&(n.stderr||n).level>=2&&(e.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}e.inspectOpts=Object.keys(process.env).filter(n=>/^debug_/i.test(n)).reduce((n,f)=>{const _=f.substring(6).toLowerCase().replace(/_([a-z])/g,(F,x)=>x.toUpperCase());let v=process.env[f];return/^(yes|on|true|enabled)$/i.test(v)?v=!0:/^(no|off|false|disabled)$/i.test(v)?v=!1:v==="null"?v=null:v=Number(v),n[_]=v,n},{});function l(){return"colors"in e.inspectOpts?!!e.inspectOpts.colors:o.isatty(process.stderr.fd)}p(l,"useColors");function m(n){const{namespace:f,useColors:_}=this;if(_){const v=this.color,F="\x1B[3"+(v<8?v:"8;5;"+v),x=` ${F};1m${f} \x1B[0m`;n[0]=x+n[0].split(` +`).join(` +`+x),n.push(F+"m+"+r.exports.humanize(this.diff)+"\x1B[0m")}else n[0]=w()+f+" "+n[0]}p(m,"formatArgs");function w(){return e.inspectOpts.hideDate?"":new Date().toISOString()+" "}p(w,"getDate");function $(...n){return process.stderr.write(t.format(...n)+` +`)}p($,"log");function y(n){n?process.env.DEBUG=n:delete process.env.DEBUG}p(y,"save");function b(){return process.env.DEBUG}p(b,"load");function C(n){n.inspectOpts={};const f=Object.keys(e.inspectOpts);for(let _=0;_f.trim()).join(" ")},c.O=function(n){return this.inspectOpts.colors=this.useColors,t.inspect(n,this.inspectOpts)}}(node,node.exports)),node.exports}p(requireNode,"requireNode"),typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?src.exports=requireBrowser():src.exports=requireNode();var srcExports=src.exports,__createBinding$1=_commonjsHelpers.commonjsGlobal&&_commonjsHelpers.commonjsGlobal.__createBinding||(Object.create?function(r,e,o,t){t===void 0&&(t=o);var l=Object.getOwnPropertyDescriptor(e,o);(!l||("get"in l?!e.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return e[o]}}),Object.defineProperty(r,t,l)}:function(r,e,o,t){t===void 0&&(t=o),r[t]=e[o]}),__setModuleDefault$1=_commonjsHelpers.commonjsGlobal&&_commonjsHelpers.commonjsGlobal.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),__importStar$1=_commonjsHelpers.commonjsGlobal&&_commonjsHelpers.commonjsGlobal.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var o in r)o!=="default"&&Object.prototype.hasOwnProperty.call(r,o)&&__createBinding$1(e,r,o);return __setModuleDefault$1(e,r),e},__importDefault$2=_commonjsHelpers.commonjsGlobal&&_commonjsHelpers.commonjsGlobal.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(dist$1,"__esModule",{value:!0});var HttpProxyAgent_1=dist$1.HttpProxyAgent=void 0;const net$1=__importStar$1(require$$0__default$1),tls$1=__importStar$1(require$$1__default$3),debug_1$2=__importDefault$2(srcExports),events_1=require$$3__default,agent_base_1$1=dist$2,url_1$1=require$$5__default,debug$2=(0,debug_1$2.default)("http-proxy-agent"),N=class N extends agent_base_1$1.Agent{constructor(e,o){super(o),this.proxy=typeof e=="string"?new url_1$1.URL(e):e,this.proxyHeaders=o?.headers??{},debug$2("Creating new HttpProxyAgent instance: %o",this.proxy.href);const t=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),l=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={...o?omit$1(o,"headers"):null,host:t,port:l}}addRequest(e,o){e._header=null,this.setRequestProps(e,o),super.addRequest(e,o)}setRequestProps(e,o){const{proxy:t}=this,l=o.secureEndpoint?"https:":"http:",m=e.getHeader("host")||"localhost",w=`${l}//${m}`,$=new url_1$1.URL(e.path,w);o.port!==80&&($.port=String(o.port)),e.path=String($);const y=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders};if(t.username||t.password){const b=`${decodeURIComponent(t.username)}:${decodeURIComponent(t.password)}`;y["Proxy-Authorization"]=`Basic ${Buffer.from(b).toString("base64")}`}y["Proxy-Connection"]||(y["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(const b of Object.keys(y)){const C=y[b];C&&e.setHeader(b,C)}}async connect(e,o){e._header=null,e.path.includes("://")||this.setRequestProps(e,o);let t,l;debug$2("Regenerating stored HTTP header string for request"),e._implicitHeader(),e.outputData&&e.outputData.length>0&&(debug$2("Patching connection write() output buffer with updated header"),t=e.outputData[0].data,l=t.indexOf(`\r +\r +`)+4,e.outputData[0].data=e._header+t.substring(l),debug$2("Output buffer: %o",e.outputData[0].data));let m;return this.proxy.protocol==="https:"?(debug$2("Creating `tls.Socket`: %o",this.connectOpts),m=tls$1.connect(this.connectOpts)):(debug$2("Creating `net.Socket`: %o",this.connectOpts),m=net$1.connect(this.connectOpts)),await(0,events_1.once)(m,"connect"),m}};p(N,"HttpProxyAgent");let HttpProxyAgent=N;HttpProxyAgent.protocols=["http","https"],HttpProxyAgent_1=dist$1.HttpProxyAgent=HttpProxyAgent;function omit$1(r,...e){const o={};let t;for(t in r)e.includes(t)||(o[t]=r[t]);return o}p(omit$1,"omit$1");var dist={},parseProxyResponse$1={},__importDefault$1=_commonjsHelpers.commonjsGlobal&&_commonjsHelpers.commonjsGlobal.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(parseProxyResponse$1,"__esModule",{value:!0}),parseProxyResponse$1.parseProxyResponse=void 0;const debug_1$1=__importDefault$1(srcExports),debug$1=(0,debug_1$1.default)("https-proxy-agent:parse-proxy-response");function parseProxyResponse(r){return new Promise((e,o)=>{let t=0;const l=[];function m(){const C=r.read();C?b(C):r.once("readable",m)}p(m,"read");function w(){r.removeListener("end",$),r.removeListener("error",y),r.removeListener("readable",m)}p(w,"cleanup");function $(){w(),debug$1("onend"),o(new Error("Proxy connection ended before receiving CONNECT response"))}p($,"onend");function y(C){w(),debug$1("onerror %o",C),o(C)}p(y,"onerror");function b(C){l.push(C),t+=C.length;const c=Buffer.concat(l,t),n=c.indexOf(`\r +\r +`);if(n===-1){debug$1("have not received end of HTTP headers yet..."),m();return}const f=c.slice(0,n).toString("ascii").split(`\r +`),_=f.shift();if(!_)return r.destroy(),o(new Error("No header received from proxy CONNECT response"));const v=_.split(" "),F=+v[1],x=v.slice(2).join(" "),j={};for(const R of f){if(!R)continue;const q=R.indexOf(":");if(q===-1)return r.destroy(),o(new Error(`Invalid header from proxy CONNECT response: "${R}"`));const S=R.slice(0,q).toLowerCase(),G=R.slice(q+1).trimStart(),A=j[S];typeof A=="string"?j[S]=[A,G]:Array.isArray(A)?A.push(G):j[S]=G}debug$1("got proxy server response: %o %o",_,j),w(),e({connect:{statusCode:F,statusText:x,headers:j},buffered:c})}p(b,"ondata"),r.on("error",y),r.on("end",$),m()})}p(parseProxyResponse,"parseProxyResponse"),parseProxyResponse$1.parseProxyResponse=parseProxyResponse;var __createBinding=_commonjsHelpers.commonjsGlobal&&_commonjsHelpers.commonjsGlobal.__createBinding||(Object.create?function(r,e,o,t){t===void 0&&(t=o);var l=Object.getOwnPropertyDescriptor(e,o);(!l||("get"in l?!e.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return e[o]}}),Object.defineProperty(r,t,l)}:function(r,e,o,t){t===void 0&&(t=o),r[t]=e[o]}),__setModuleDefault=_commonjsHelpers.commonjsGlobal&&_commonjsHelpers.commonjsGlobal.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),__importStar=_commonjsHelpers.commonjsGlobal&&_commonjsHelpers.commonjsGlobal.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var o in r)o!=="default"&&Object.prototype.hasOwnProperty.call(r,o)&&__createBinding(e,r,o);return __setModuleDefault(e,r),e},__importDefault=_commonjsHelpers.commonjsGlobal&&_commonjsHelpers.commonjsGlobal.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(dist,"__esModule",{value:!0});var HttpsProxyAgent_1=dist.HttpsProxyAgent=void 0;const net=__importStar(require$$0__default$1),tls=__importStar(require$$1__default$3),assert_1=__importDefault(require$$2__default),debug_1=__importDefault(srcExports),agent_base_1=dist$2,url_1=require$$5__default,parse_proxy_response_1=parseProxyResponse$1,debug=(0,debug_1.default)("https-proxy-agent"),D=class D extends agent_base_1.Agent{constructor(e,o){super(o),this.options={path:void 0},this.proxy=typeof e=="string"?new url_1.URL(e):e,this.proxyHeaders=o?.headers??{},debug("Creating new HttpsProxyAgent instance: %o",this.proxy.href);const t=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),l=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...o?omit(o,"headers"):null,host:t,port:l}}async connect(e,o){const{proxy:t}=this;if(!o.host)throw new TypeError('No "host" provided');let l;if(t.protocol==="https:"){debug("Creating `tls.Socket`: %o",this.connectOpts);const n=this.connectOpts.servername||this.connectOpts.host;l=tls.connect({...this.connectOpts,servername:n&&net.isIP(n)?void 0:n})}else debug("Creating `net.Socket`: %o",this.connectOpts),l=net.connect(this.connectOpts);const m=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders},w=net.isIPv6(o.host)?`[${o.host}]`:o.host;let $=`CONNECT ${w}:${o.port} HTTP/1.1\r +`;if(t.username||t.password){const n=`${decodeURIComponent(t.username)}:${decodeURIComponent(t.password)}`;m["Proxy-Authorization"]=`Basic ${Buffer.from(n).toString("base64")}`}m.Host=`${w}:${o.port}`,m["Proxy-Connection"]||(m["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(const n of Object.keys(m))$+=`${n}: ${m[n]}\r +`;const y=(0,parse_proxy_response_1.parseProxyResponse)(l);l.write(`${$}\r +`);const{connect:b,buffered:C}=await y;if(e.emit("proxyConnect",b),this.emit("proxyConnect",b,e),b.statusCode===200){if(e.once("socket",resume),o.secureEndpoint){debug("Upgrading socket connection to TLS");const n=o.servername||o.host;return tls.connect({...omit(o,"host","path","port"),socket:l,servername:net.isIP(n)?void 0:n})}return l}l.destroy();const c=new net.Socket({writable:!1});return c.readable=!0,e.once("socket",n=>{debug("Replaying proxy buffer for failed request"),(0,assert_1.default)(n.listenerCount("data")>0),n.push(C),n.push(null)}),c}};p(D,"HttpsProxyAgent");let HttpsProxyAgent=D;HttpsProxyAgent.protocols=["http","https"],HttpsProxyAgent_1=dist.HttpsProxyAgent=HttpsProxyAgent;function resume(r){r.resume()}p(resume,"resume");function omit(r,...e){const o={};let t;for(t in r)e.includes(t)||(o[t]=r[t]);return o}p(omit,"omit");var d=Object.defineProperty,O=p((r,e,o)=>e in r?d(r,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[e]=o,"O"),s=p((r,e)=>d(r,"name",{value:e,configurable:!0}),"s"),i=p((r,e,o)=>(O(r,typeof e!="symbol"?e+"":e,o),o),"i");function H(...r){process.env.DEBUG&&console.debug("[node-fetch-native] [proxy]",...r)}p(H,"H"),s(H,"debug");function P(r,e){if(!e)return!1;for(const o of e)if(o===r||o[0]==="."&&r.endsWith(o.slice(1)))return!0;return!1}p(P,"P"),s(P,"bypassProxy");const g=(M=class extends index.ProxyAgent_1{constructor(e){super(e),this._options=e,i(this,"_agent"),this._agent=new index.Agent_1}dispatch(e,o){const t=new require$$1$4.URL(e.origin).hostname;return P(t,this._options.noProxy)?(H(`Bypassing proxy for: ${t}`),this._agent.dispatch(e,o)):super.dispatch(e,o)}},p(M,"g"),M);s(g,"UndiciProxyAgent");let h=g;const T=["http","https"],E={http:[HttpProxyAgent_1,HttpsProxyAgent_1],https:[HttpProxyAgent_1,HttpsProxyAgent_1]};function L(r){return T.includes(r)}p(L,"L"),s(L,"isValidProtocol");const u=(I=class extends dist$2.Agent{constructor(e){super({}),this._options=e,i(this,"cache",new Map),i(this,"httpAgent"),i(this,"httpsAgent"),this.httpAgent=new http__namespace.Agent({}),this.httpsAgent=new https__namespace.Agent({})}connect(e,o){const t=e.getHeader("upgrade")==="websocket",l=o.secureEndpoint?t?"wss:":"https:":t?"ws:":"http:",m=e.getHeader("host");if(P(m,this._options.noProxy))return o.secureEndpoint?this.httpsAgent:this.httpAgent;const w=`${l}+${this._options.uri}`;let $=this.cache.get(w);if(!$){const y=new require$$1$4.URL(this._options.uri).protocol.replace(":","");if(!L(y))throw new Error(`Unsupported protocol for proxy URL: ${this._options.uri}`);const b=E[y][o.secureEndpoint||t?1:0];$=new b(this._options.uri,this._options),this.cache.set(w,$)}return $}destroy(){for(const e of this.cache.values())e.destroy();super.destroy()}},p(I,"u"),I);s(u,"NodeProxyAgent");let a=u;function createProxy(r={}){const e=r.url||process.env.https_proxy||process.env.http_proxy||process.env.HTTPS_PROXY||process.env.HTTP_PROXY;if(!e)return{agent:void 0,dispatcher:void 0};const o=r.noProxy||process.env.no_proxy||process.env.NO_PROXY,t=typeof o=="string"?o.split(","):o,l=new a({uri:e,noProxy:t}),m=new h({uri:e,noProxy:t});return{agent:l,dispatcher:m}}p(createProxy,"createProxy"),s(createProxy,"createProxy");function createFetch(r={}){const e=createProxy(r);return(o,t)=>nodeFetchNativeWithAgent.fetch(o,{...e,...t})}p(createFetch,"createFetch"),s(createFetch,"createFetch");const fetch=createFetch({});exports.createFetch=createFetch,exports.createProxy=createProxy,exports.fetch=fetch; diff --git a/node_modules/node-fetch-native-with-agent/dist/shared/node-fetch-native-with-agent.1a4a356d.mjs b/node_modules/node-fetch-native-with-agent/dist/shared/node-fetch-native-with-agent.1a4a356d.mjs new file mode 100644 index 0000000..e1e9530 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/shared/node-fetch-native-with-agent.1a4a356d.mjs @@ -0,0 +1 @@ +var t=Object.defineProperty;var o=(e,l)=>t(e,"name",{value:l,configurable:!0});var n=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function f(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}o(f,"getDefaultExportFromCjs");export{n as c,f as g}; diff --git a/node_modules/node-fetch-native-with-agent/dist/shared/node-fetch-native-with-agent.56860586.mjs b/node_modules/node-fetch-native-with-agent/dist/shared/node-fetch-native-with-agent.56860586.mjs new file mode 100644 index 0000000..6851cbe --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/shared/node-fetch-native-with-agent.56860586.mjs @@ -0,0 +1,41 @@ +var Ui=Object.defineProperty;var Zg=(e,A,t)=>A in e?Ui(e,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[A]=t;var o=(e,A)=>Ui(e,"name",{value:A,configurable:!0});var WA=(e,A,t)=>(Zg(e,typeof A!="symbol"?A+"":A,t),t),Os=(e,A,t)=>{if(!A.has(e))throw TypeError("Cannot "+t)},bi=(e,A)=>{if(Object(A)!==A)throw TypeError('Cannot use the "in" operator on this value');return e.has(A)},p=(e,A,t)=>(Os(e,A,"read from private field"),t?t.call(e):A.get(e)),hA=(e,A,t)=>{if(A.has(e))throw TypeError("Cannot add the same private member more than once");A instanceof WeakSet?A.add(e):A.set(e,t)},BA=(e,A,t,s)=>(Os(e,A,"write to private field"),s?s.call(e,t):A.set(e,t),t);var HA=(e,A,t)=>(Os(e,A,"access private method"),t);var or,ir,Qr,Er,gr,Br,Cr,Ir,ar,cr,hr,lr,ur,dr,fr,Dr,yr,Rr,wr,kr,Nr,Fr,Lt,pr,Sr,Ur,br,mr,Lr,Mr,Yr,Jr,Gr,Tr,Vs,Wg,Hr,Mt,Vr;import RA from"node:assert";import Ps from"node:net";import Pr from"node:http";import ue from"node:stream";import de from"node:buffer";import PA from"node:util";import Xg from"node:querystring";import Kg from"node:diagnostics_channel";import Zr from"node:events";import{c as mi}from"./node-fetch-native-with-agent.1a4a356d.mjs";import zg from"node:tls";import Li from"node:zlib";import jg from"node:perf_hooks";import Mi from"node:util/types";import $g from"node:os";import _g from"node:url";import Tt from"node:async_hooks";import"node:console";import AB from"string_decoder";import eB from"node:worker_threads";var LA={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kHeadersList:Symbol("headers list"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kResume:Symbol("resume"),kOnError:Symbol("on error"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kInterceptors:Symbol("dispatch interceptors"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2SessionState:Symbol("http2Session state"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable"),kListeners:Symbol("listeners"),kHTTPContext:Symbol("http context"),kMaxConcurrentStreams:Symbol("max concurrent streams")};let MA=(or=class extends Error{constructor(A){super(A),this.name="UndiciError",this.code="UND_ERR"}},o(or,"UndiciError"),or),tB=(ir=class extends MA{constructor(A){super(A),this.name="ConnectTimeoutError",this.message=A||"Connect Timeout Error",this.code="UND_ERR_CONNECT_TIMEOUT"}},o(ir,"ConnectTimeoutError"),ir),rB=(Qr=class extends MA{constructor(A){super(A),this.name="HeadersTimeoutError",this.message=A||"Headers Timeout Error",this.code="UND_ERR_HEADERS_TIMEOUT"}},o(Qr,"HeadersTimeoutError"),Qr),sB=(Er=class extends MA{constructor(A){super(A),this.name="HeadersOverflowError",this.message=A||"Headers Overflow Error",this.code="UND_ERR_HEADERS_OVERFLOW"}},o(Er,"HeadersOverflowError"),Er),nB=(gr=class extends MA{constructor(A){super(A),this.name="BodyTimeoutError",this.message=A||"Body Timeout Error",this.code="UND_ERR_BODY_TIMEOUT"}},o(gr,"BodyTimeoutError"),gr),oB=(Br=class extends MA{constructor(A,t,s,r){super(A),this.name="ResponseStatusCodeError",this.message=A||"Response Status Code Error",this.code="UND_ERR_RESPONSE_STATUS_CODE",this.body=r,this.status=t,this.statusCode=t,this.headers=s}},o(Br,"ResponseStatusCodeError"),Br),iB=(Cr=class extends MA{constructor(A){super(A),this.name="InvalidArgumentError",this.message=A||"Invalid Argument Error",this.code="UND_ERR_INVALID_ARG"}},o(Cr,"InvalidArgumentError"),Cr),QB=(Ir=class extends MA{constructor(A){super(A),this.name="InvalidReturnValueError",this.message=A||"Invalid Return Value Error",this.code="UND_ERR_INVALID_RETURN_VALUE"}},o(Ir,"InvalidReturnValueError"),Ir),Yi=(ar=class extends MA{constructor(A){super(A),this.name="AbortError",this.message=A||"The operation was aborted"}},o(ar,"AbortError"),ar),EB=(cr=class extends Yi{constructor(A){super(A),this.name="AbortError",this.message=A||"Request aborted",this.code="UND_ERR_ABORTED"}},o(cr,"RequestAbortedError"),cr),gB=(hr=class extends MA{constructor(A){super(A),this.name="InformationalError",this.message=A||"Request information",this.code="UND_ERR_INFO"}},o(hr,"InformationalError"),hr),BB=(lr=class extends MA{constructor(A){super(A),this.name="RequestContentLengthMismatchError",this.message=A||"Request body length does not match content-length header",this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}},o(lr,"RequestContentLengthMismatchError"),lr),CB=(ur=class extends MA{constructor(A){super(A),this.name="ResponseContentLengthMismatchError",this.message=A||"Response body length does not match content-length header",this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}},o(ur,"ResponseContentLengthMismatchError"),ur),IB=(dr=class extends MA{constructor(A){super(A),this.name="ClientDestroyedError",this.message=A||"The client is destroyed",this.code="UND_ERR_DESTROYED"}},o(dr,"ClientDestroyedError"),dr),aB=(fr=class extends MA{constructor(A){super(A),this.name="ClientClosedError",this.message=A||"The client is closed",this.code="UND_ERR_CLOSED"}},o(fr,"ClientClosedError"),fr),cB=(Dr=class extends MA{constructor(A,t){super(A),this.name="SocketError",this.message=A||"Socket error",this.code="UND_ERR_SOCKET",this.socket=t}},o(Dr,"SocketError"),Dr),hB=(yr=class extends MA{constructor(A){super(A),this.name="NotSupportedError",this.message=A||"Not supported error",this.code="UND_ERR_NOT_SUPPORTED"}},o(yr,"NotSupportedError"),yr);const Ei=class Ei extends MA{constructor(A){super(A),this.name="MissingUpstreamError",this.message=A||"No upstream has been added to the BalancedPool",this.code="UND_ERR_BPL_MISSING_UPSTREAM"}};o(Ei,"BalancedPoolMissingUpstreamError");let Zs=Ei,lB=(Rr=class extends Error{constructor(A,t,s){super(A),this.name="HTTPParserError",this.code=t?`HPE_${t}`:void 0,this.data=s?s.toString():void 0}},o(Rr,"HTTPParserError"),Rr),uB=(wr=class extends MA{constructor(A){super(A),this.name="ResponseExceededMaxSizeError",this.message=A||"Response content exceeded max size",this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}},o(wr,"ResponseExceededMaxSizeError"),wr);const gi=class gi extends MA{constructor(A,t,{headers:s,data:r}){super(A),this.name="RequestRetryError",this.message=A||"Request retry error",this.code="UND_ERR_REQ_RETRY",this.statusCode=t,this.data=r,this.headers=s}};o(gi,"RequestRetryError");let Xs=gi,dB=(kr=class extends MA{constructor(A,t,s){super(t,{cause:A,...s??{}}),this.name="SecureProxyConnectionError",this.message=t||"Secure Proxy Connection failed",this.code="UND_ERR_PRX_TLS",this.cause=A}},o(kr,"SecureProxyConnectionError"),kr);var kA={AbortError:Yi,HTTPParserError:lB,UndiciError:MA,HeadersTimeoutError:rB,HeadersOverflowError:sB,BodyTimeoutError:nB,RequestContentLengthMismatchError:BB,ConnectTimeoutError:tB,ResponseStatusCodeError:oB,InvalidArgumentError:iB,InvalidReturnValueError:QB,RequestAbortedError:EB,ClientDestroyedError:IB,ClientClosedError:aB,InformationalError:gB,SocketError:cB,NotSupportedError:hB,ResponseContentLengthMismatchError:CB,BalancedPoolMissingUpstreamError:Zs,ResponseExceededMaxSizeError:uB,RequestRetryError:Xs,SecureProxyConnectionError:dB};const Xr={},Ks=["Accept","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Age","Allow","Alt-Svc","Alt-Used","Authorization","Cache-Control","Clear-Site-Data","Connection","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Security-Policy-Report-Only","Content-Type","Cookie","Cross-Origin-Embedder-Policy","Cross-Origin-Opener-Policy","Cross-Origin-Resource-Policy","Date","Device-Memory","Downlink","ECT","ETag","Expect","Expect-CT","Expires","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Keep-Alive","Last-Modified","Link","Location","Max-Forwards","Origin","Permissions-Policy","Pragma","Proxy-Authenticate","Proxy-Authorization","RTT","Range","Referer","Referrer-Policy","Refresh","Retry-After","Sec-WebSocket-Accept","Sec-WebSocket-Extensions","Sec-WebSocket-Key","Sec-WebSocket-Protocol","Sec-WebSocket-Version","Server","Server-Timing","Service-Worker-Allowed","Service-Worker-Navigation-Preload","Set-Cookie","SourceMap","Strict-Transport-Security","Supports-Loading-Mode","TE","Timing-Allow-Origin","Trailer","Transfer-Encoding","Upgrade","Upgrade-Insecure-Requests","User-Agent","Vary","Via","WWW-Authenticate","X-Content-Type-Options","X-DNS-Prefetch-Control","X-Frame-Options","X-Permitted-Cross-Domain-Policies","X-Powered-By","X-Requested-With","X-XSS-Protection"];for(let e=0;e=A.length)throw new TypeError("Unreachable");if((this.code=A.charCodeAt(s))>127)throw new TypeError("key must be ascii string");A.length!==++s?this.middle=new st(A,t,s):this.value=t}add(A,t){const s=A.length;if(s===0)throw new TypeError("Unreachable");let r=0,n=this;for(;;){const i=A.charCodeAt(r);if(i>127)throw new TypeError("key must be ascii string");if(n.code===i)if(s===++r){n.value=t;break}else if(n.middle!==null)n=n.middle;else{n.middle=new st(A,t,r);break}else if(n.code=65&&(n|=32);r!==null;){if(n===r.code){if(t===++s)return r;r=r.middle;break}r=r.codeNumber(e));function SB(){}o(SB,"nop");function An(e){return e&&typeof e=="object"&&typeof e.pipe=="function"&&typeof e.on=="function"}o(An,"isStream$1");function vi(e){if(e===null)return!1;if(e instanceof kB)return!0;if(typeof e!="object")return!1;{const A=e[Symbol.toStringTag];return(A==="Blob"||A==="File")&&("stream"in e&&typeof e.stream=="function"||"arrayBuffer"in e&&typeof e.arrayBuffer=="function")}}o(vi,"isBlobLike$1");function UB(e,A){if(e.includes("?")||e.includes("#"))throw new Error('Query params cannot be passed when url already contains "?" or "#".');const t=FB(A);return t&&(e+="?"+t),e}o(UB,"buildURL$3");function xi(e){if(typeof e=="string"){if(e=new URL(e),!/^https?:/.test(e.origin||e.protocol))throw new VA("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}if(!e||typeof e!="object")throw new VA("Invalid URL: The URL argument must be a non-null object.");if(!/^https?:/.test(e.origin||e.protocol))throw new VA("Invalid URL protocol: the URL must start with `http:` or `https:`.");if(!(e instanceof URL)){if(e.port!=null&&e.port!==""&&!Number.isFinite(parseInt(e.port)))throw new VA("Invalid URL: port must be a valid integer or a string representation of an integer.");if(e.path!=null&&typeof e.path!="string")throw new VA("Invalid URL path: the path must be a string or null/undefined.");if(e.pathname!=null&&typeof e.pathname!="string")throw new VA("Invalid URL pathname: the pathname must be a string or null/undefined.");if(e.hostname!=null&&typeof e.hostname!="string")throw new VA("Invalid URL hostname: the hostname must be a string or null/undefined.");if(e.origin!=null&&typeof e.origin!="string")throw new VA("Invalid URL origin: the origin must be a string or null/undefined.");const A=e.port!=null?e.port:e.protocol==="https:"?443:80;let t=e.origin!=null?e.origin:`${e.protocol}//${e.hostname}:${A}`,s=e.path!=null?e.path:`${e.pathname||""}${e.search||""}`;t.endsWith("/")&&(t=t.substring(0,t.length-1)),s&&!s.startsWith("/")&&(s=`/${s}`),e=new URL(t+s)}return e}o(xi,"parseURL");function bB(e){if(e=xi(e),e.pathname!=="/"||e.search||e.hash)throw new VA("invalid url");return e}o(bB,"parseOrigin");function mB(e){if(e[0]==="["){const t=e.indexOf("]");return $s(t!==-1),e.substring(1,t)}const A=e.indexOf(":");return A===-1?e:e.substring(0,A)}o(mB,"getHostname");function LB(e){if(!e)return null;$s.strictEqual(typeof e,"string");const A=mB(e);return wB.isIP(A)?"":A}o(LB,"getServerName$1");function MB(e){return JSON.parse(JSON.stringify(e))}o(MB,"deepClone");function YB(e){return e!=null&&typeof e[Symbol.asyncIterator]=="function"}o(YB,"isAsyncIterable");function JB(e){return e!=null&&(typeof e[Symbol.iterator]=="function"||typeof e[Symbol.asyncIterator]=="function")}o(JB,"isIterable$1");function GB(e){if(e==null)return 0;if(An(e)){const A=e._readableState;return A&&A.objectMode===!1&&A.ended===!0&&Number.isFinite(A.length)?A.length:null}else{if(vi(e))return e.size!=null?e.size:null;if(qi(e))return e.byteLength}return null}o(GB,"bodyLength");function en(e){return e&&!!(e.destroyed||e[Ti]||zr.isDestroyed?.(e))}o(en,"isDestroyed");function TB(e){const A=e?._readableState;return en(e)&&A&&!A.endEmitted}o(TB,"isReadableAborted");function HB(e,A){e==null||!An(e)||en(e)||(typeof e.destroy=="function"?(Object.getPrototypeOf(e).constructor===RB&&(e.socket=null),e.destroy(A)):A&&queueMicrotask(()=>{e.emit("error",A)}),e.destroyed!==!0&&(e[Ti]=!0))}o(HB,"destroy$1");const VB=/timeout=(\d+)/;function vB(e){const A=e.toString().match(VB);return A?parseInt(A[1],10)*1e3:null}o(vB,"parseKeepAliveTimeout");function Wi(e){return typeof e=="string"?pB[e]??e.toLowerCase():Hi.lookup(e)??e.toString("latin1").toLowerCase()}o(Wi,"headerNameToString");function xB(e){return Hi.lookup(e)??e.toString("latin1").toLowerCase()}o(xB,"bufferToLowerCasedHeaderName");function WB(e,A){A===void 0&&(A={});for(let t=0;ti.toString("utf8")):n.toString("utf8")}}return"content-length"in A&&"content-disposition"in A&&(A["content-disposition"]=Buffer.from(A["content-disposition"]).toString("latin1")),A}o(WB,"parseHeaders");function qB(e){const A=e.length,t=new Array(A);let s=!1,r=-1,n,i,E=0;for(let Q=0;Q{t.close(),t.byobRequest?.respond(0)});else{const n=Buffer.isBuffer(r)?r:Buffer.from(r);n.byteLength&&t.enqueue(new Uint8Array(n))}return t.desiredSize>0},async cancel(t){await A.return()},type:"bytes"})}o(zB,"ReadableStreamFrom$1");function jB(e){return e&&typeof e=="object"&&typeof e.append=="function"&&typeof e.delete=="function"&&typeof e.get=="function"&&typeof e.getAll=="function"&&typeof e.has=="function"&&typeof e.set=="function"&&e[Symbol.toStringTag]==="FormData"}o(jB,"isFormDataLike$1");function $B(e,A){return"addEventListener"in e?(e.addEventListener("abort",A,{once:!0}),()=>e.removeEventListener("abort",A)):(e.addListener("abort",A),()=>e.removeListener("abort",A))}o($B,"addAbortListener$1");const _B=typeof String.prototype.toWellFormed=="function",AC=typeof String.prototype.isWellFormed=="function";function Oi(e){return _B?`${e}`.toWellFormed():NB.toUSVString(e)}o(Oi,"toUSVString");function eC(e){return AC?`${e}`.isWellFormed():Oi(e)===`${e}`}o(eC,"isUSVString");function Pi(e){switch(e){case 34:case 40:case 41:case 44:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 123:case 125:return!1;default:return e>=33&&e<=126}}o(Pi,"isTokenCharCode");function tC(e){if(e.length===0)return!1;for(let A=0;A18||_s===18&&Vi>=13,safeHTTPMethods:["GET","HEAD","OPTIONS","TRACE"]};const fA=Kg,tn=PA,jr=tn.debuglog("undici"),rn=tn.debuglog("fetch"),je=tn.debuglog("websocket");let Xi=!1;const EC={beforeConnect:fA.channel("undici:client:beforeConnect"),connected:fA.channel("undici:client:connected"),connectError:fA.channel("undici:client:connectError"),sendHeaders:fA.channel("undici:client:sendHeaders"),create:fA.channel("undici:request:create"),bodySent:fA.channel("undici:request:bodySent"),headers:fA.channel("undici:request:headers"),trailers:fA.channel("undici:request:trailers"),error:fA.channel("undici:request:error"),open:fA.channel("undici:websocket:open"),close:fA.channel("undici:websocket:close"),socketError:fA.channel("undici:websocket:socket_error"),ping:fA.channel("undici:websocket:ping"),pong:fA.channel("undici:websocket:pong")};if(jr.enabled||rn.enabled){const e=rn.enabled?rn:jr;fA.channel("undici:client:beforeConnect").subscribe(A=>{const{connectParams:{version:t,protocol:s,port:r,host:n}}=A;e("connecting to %s using %s%s",`${n}${r?`:${r}`:""}`,s,t)}),fA.channel("undici:client:connected").subscribe(A=>{const{connectParams:{version:t,protocol:s,port:r,host:n}}=A;e("connected to %s using %s%s",`${n}${r?`:${r}`:""}`,s,t)}),fA.channel("undici:client:connectError").subscribe(A=>{const{connectParams:{version:t,protocol:s,port:r,host:n},error:i}=A;e("connection to %s using %s%s errored - %s",`${n}${r?`:${r}`:""}`,s,t,i.message)}),fA.channel("undici:client:sendHeaders").subscribe(A=>{const{request:{method:t,path:s,origin:r}}=A;e("sending request to %s %s/%s",t,r,s)}),fA.channel("undici:request:headers").subscribe(A=>{const{request:{method:t,path:s,origin:r},response:{statusCode:n}}=A;e("received response to %s %s/%s - HTTP %d",t,r,s,n)}),fA.channel("undici:request:trailers").subscribe(A=>{const{request:{method:t,path:s,origin:r}}=A;e("trailers received from %s %s/%s",t,r,s)}),fA.channel("undici:request:error").subscribe(A=>{const{request:{method:t,path:s,origin:r},error:n}=A;e("request to %s %s/%s errored - %s",t,r,s,n.message)}),Xi=!0}if(je.enabled){if(!Xi){const e=jr.enabled?jr:je;fA.channel("undici:client:beforeConnect").subscribe(A=>{const{connectParams:{version:t,protocol:s,port:r,host:n}}=A;e("connecting to %s%s using %s%s",n,r?`:${r}`:"",s,t)}),fA.channel("undici:client:connected").subscribe(A=>{const{connectParams:{version:t,protocol:s,port:r,host:n}}=A;e("connected to %s%s using %s%s",n,r?`:${r}`:"",s,t)}),fA.channel("undici:client:connectError").subscribe(A=>{const{connectParams:{version:t,protocol:s,port:r,host:n},error:i}=A;e("connection to %s%s using %s%s errored - %s",n,r?`:${r}`:"",s,t,i.message)}),fA.channel("undici:client:sendHeaders").subscribe(A=>{const{request:{method:t,path:s,origin:r}}=A;e("sending request to %s %s/%s",t,r,s)})}fA.channel("undici:websocket:open").subscribe(e=>{const{address:{address:A,port:t}}=e;je("connection opened %s%s",A,t?`:${t}`:"")}),fA.channel("undici:websocket:close").subscribe(e=>{const{websocket:A,code:t,reason:s}=e;je("closed connection to %s - %s %s",A.url,t,s)}),fA.channel("undici:websocket:socket_error").subscribe(e=>{je("connection errored - %s",e.message)}),fA.channel("undici:websocket:ping").subscribe(e=>{je("ping received")}),fA.channel("undici:websocket:pong").subscribe(e=>{je("pong received")})}var Vt={channels:EC};const{InvalidArgumentError:NA,NotSupportedError:gC}=kA,Se=RA,{isValidHTTPToken:Ki,isValidHeaderChar:zi,isStream:BC,destroy:CC,isBuffer:IC,isFormDataLike:aC,isIterable:cC,isBlobLike:hC,buildURL:lC,validateHandler:uC,getServerName:dC}=aA,{channels:fe}=Vt,{headerNameLowerCasedRecord:ji}=zs,fC=/[^\u0021-\u00ff]/,re=Symbol("handler");let DC=(Nr=class{constructor(A,{path:t,method:s,body:r,headers:n,query:i,idempotent:E,blocking:Q,upgrade:C,headersTimeout:I,bodyTimeout:a,reset:f,throwOnError:h,expectContinue:L,servername:c},l){if(typeof t!="string")throw new NA("path must be a string");if(t[0]!=="/"&&!(t.startsWith("http://")||t.startsWith("https://"))&&s!=="CONNECT")throw new NA("path must be an absolute URL or start with a slash");if(fC.exec(t)!==null)throw new NA("invalid request path");if(typeof s!="string")throw new NA("method must be a string");if(!Ki(s))throw new NA("invalid request method");if(C&&typeof C!="string")throw new NA("upgrade must be a string");if(I!=null&&(!Number.isFinite(I)||I<0))throw new NA("invalid headersTimeout");if(a!=null&&(!Number.isFinite(a)||a<0))throw new NA("invalid bodyTimeout");if(f!=null&&typeof f!="boolean")throw new NA("invalid reset");if(L!=null&&typeof L!="boolean")throw new NA("invalid expectContinue");if(this.headersTimeout=I,this.bodyTimeout=a,this.throwOnError=h===!0,this.method=s,this.abort=null,r==null)this.body=null;else if(BC(r)){this.body=r;const S=this.body._readableState;(!S||!S.autoDestroy)&&(this.endHandler=o(function(){CC(this)},"autoDestroy"),this.body.on("end",this.endHandler)),this.errorHandler=k=>{this.abort?this.abort(k):this.error=k},this.body.on("error",this.errorHandler)}else if(IC(r))this.body=r.byteLength?r:null;else if(ArrayBuffer.isView(r))this.body=r.buffer.byteLength?Buffer.from(r.buffer,r.byteOffset,r.byteLength):null;else if(r instanceof ArrayBuffer)this.body=r.byteLength?Buffer.from(r):null;else if(typeof r=="string")this.body=r.length?Buffer.from(r):null;else if(aC(r)||cC(r)||hC(r))this.body=r;else throw new NA("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable");if(this.completed=!1,this.aborted=!1,this.upgrade=C||null,this.path=i?lC(t,i):t,this.origin=A,this.idempotent=E??(s==="HEAD"||s==="GET"),this.blocking=Q??!1,this.reset=f??null,this.host=null,this.contentLength=null,this.contentType=null,this.headers=[],this.expectContinue=L??!1,Array.isArray(n)){if(n.length%2!==0)throw new NA("headers array must be even");for(let S=0;S=0;t--)if(typeof this[$e][t]!="function")throw new at("interceptor must be an function")}this[$e]=A}close(A){if(A===void 0)return new Promise((s,r)=>{this.close((n,i)=>n?r(n):s(i))});if(typeof A!="function")throw new at("invalid callback");if(this[ct]){queueMicrotask(()=>A(new nn,null));return}if(this[vt]){this[ht]?this[ht].push(A):queueMicrotask(()=>A(null,null));return}this[vt]=!0,this[ht].push(A);const t=o(()=>{const s=this[ht];this[ht]=null;for(let r=0;rthis.destroy()).then(()=>{queueMicrotask(t)})}destroy(A,t){if(typeof A=="function"&&(t=A,A=null),t===void 0)return new Promise((r,n)=>{this.destroy(A,(i,E)=>i?n(i):r(E))});if(typeof t!="function")throw new at("invalid callback");if(this[ct]){this[Ue]?this[Ue].push(t):queueMicrotask(()=>t(null,null));return}A||(A=new nn),this[ct]=!0,this[Ue]=this[Ue]||[],this[Ue].push(t);const s=o(()=>{const r=this[Ue];this[Ue]=null;for(let n=0;n{queueMicrotask(s)})}[_r](A,t){if(!this[$e]||this[$e].length===0)return this[_r]=this[on],this[on](A,t);let s=this[on].bind(this);for(let r=this[$e].length-1;r>=0;r--)s=this[$e][r](s);return this[_r]=s,s(A,t)}dispatch(A,t){if(!t||typeof t!="object")throw new at("handler must be an object");try{if(!A||typeof A!="object")throw new at("opts must be an object.");if(this[ct]||this[Ue])throw new nn;if(this[vt])throw new kC;return this[_r](A,t)}catch(s){if(typeof t.onError!="function")throw new at("invalid onError method");return t.onError(s),!1}}},o(Sr,"DispatcherBase"),Sr);var As=pC;const SC=Ps,AQ=RA,eQ=aA,{InvalidArgumentError:UC,ConnectTimeoutError:bC}=kA;let Qn,En;mi.FinalizationRegistry&&!(process.env.NODE_V8_COVERAGE||process.env.UNDICI_NO_FG)?En=(Ur=class{constructor(A){this._maxCachedSessions=A,this._sessionCache=new Map,this._sessionRegistry=new mi.FinalizationRegistry(t=>{if(this._sessionCache.size=this._maxCachedSessions){const{value:s}=this._sessionCache.keys().next();this._sessionCache.delete(s)}this._sessionCache.set(A,t)}}},o(br,"SimpleSessionCache"),br);function mC({allowH2:e,maxCachedSessions:A,socketPath:t,timeout:s,...r}){if(A!=null&&(!Number.isInteger(A)||A<0))throw new UC("maxCachedSessions must be a positive integer or zero");const n={path:t,...r},i=new En(A??100);return s=s??1e4,e=e??!1,o(function({hostname:Q,host:C,protocol:I,port:a,servername:f,localAddress:h,httpSocket:L},c){let l;if(I==="https:"){Qn||(Qn=zg),f=f||n.servername||eQ.getServerName(C)||null;const k=f||Q,w=i.get(k)||null;AQ(k),l=Qn.connect({highWaterMark:16384,...n,servername:f,session:w,localAddress:h,ALPNProtocols:e?["http/1.1","h2"]:["http/1.1"],socket:L,port:a||443,host:Q}),l.on("session",function(U){i.set(k,U)})}else AQ(!L,"httpSocket can only be sent on TLS update"),l=SC.connect({highWaterMark:64*1024,...n,localAddress:h,port:a||80,host:Q});if(n.keepAlive==null||n.keepAlive){const k=n.keepAliveInitialDelay===void 0?6e4:n.keepAliveInitialDelay;l.setKeepAlive(!0,k)}const S=LC(()=>MC(l),s);return l.setNoDelay(!0).once(I==="https:"?"secureConnect":"connect",function(){if(S(),c){const k=c;c=null,k(null,this)}}).on("error",function(k){if(S(),c){const w=c;c=null,w(k)}}),l},"connect")}o(mC,"buildConnector$3");function LC(e,A){if(!A)return()=>{};let t=null,s=null;const r=setTimeout(()=>{t=setImmediate(()=>{process.platform==="win32"?s=setImmediate(()=>e()):e()})},A);return()=>{clearTimeout(r),clearImmediate(t),clearImmediate(s)}}o(LC,"setupTimeout");function MC(e){let A="Connect Timeout Error";Array.isArray(e.autoSelectFamilyAttemptedAddresses)&&(A+=` (attempted addresses: ${e.autoSelectFamilyAttemptedAddresses.join(", ")})`),eQ.destroy(e,new bC(A))}o(MC,"onConnectTimeout");var gn=mC;let Bn=Date.now(),_e;const Ge=[];function YC(){Bn=Date.now();let e=Ge.length,A=0;for(;A0&&Bn>=t.state&&(t.state=-1,t.callback(t.opaque)),t.state===-1?(t.state=-2,A!==e-1?Ge[A]=Ge.pop():Ge.pop(),e-=1):A+=1}Ge.length>0&&tQ()}o(YC,"onTimeout");function tQ(){_e?.refresh?_e.refresh():(clearTimeout(_e),_e=setTimeout(YC,1e3),_e.unref&&_e.unref())}o(tQ,"refreshTimeout");const Ii=class Ii{constructor(A,t,s){this.callback=A,this.delay=t,this.opaque=s,this.state=-2,this.refresh()}refresh(){this.state===-2&&(Ge.push(this),(!_e||Ge.length===1)&&tQ()),this.state=0}clear(){this.state=-1}};o(Ii,"Timeout");let es=Ii;var JC={setTimeout(e,A,t){return A<1e3?setTimeout(e,A,t):new es(e,A,t)},clearTimeout(e){e instanceof es?e.clear():clearTimeout(e)}},rQ={},ts={};Object.defineProperty(ts,"__esModule",{value:!0}),ts.enumToMap=void 0;function GC(e){const A={};return Object.keys(e).forEach(t=>{const s=e[t];typeof s=="number"&&(A[t]=s)}),A}o(GC,"enumToMap"),ts.enumToMap=GC,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SPECIAL_HEADERS=e.HEADER_STATE=e.MINOR=e.MAJOR=e.CONNECTION_TOKEN_CHARS=e.HEADER_CHARS=e.TOKEN=e.STRICT_TOKEN=e.HEX=e.URL_CHAR=e.STRICT_URL_CHAR=e.USERINFO_CHARS=e.MARK=e.ALPHANUM=e.NUM=e.HEX_MAP=e.NUM_MAP=e.ALPHA=e.FINISH=e.H_METHOD_MAP=e.METHOD_MAP=e.METHODS_RTSP=e.METHODS_ICE=e.METHODS_HTTP=e.METHODS=e.LENIENT_FLAGS=e.FLAGS=e.TYPE=e.ERROR=void 0;const A=ts;(function(r){r[r.OK=0]="OK",r[r.INTERNAL=1]="INTERNAL",r[r.STRICT=2]="STRICT",r[r.LF_EXPECTED=3]="LF_EXPECTED",r[r.UNEXPECTED_CONTENT_LENGTH=4]="UNEXPECTED_CONTENT_LENGTH",r[r.CLOSED_CONNECTION=5]="CLOSED_CONNECTION",r[r.INVALID_METHOD=6]="INVALID_METHOD",r[r.INVALID_URL=7]="INVALID_URL",r[r.INVALID_CONSTANT=8]="INVALID_CONSTANT",r[r.INVALID_VERSION=9]="INVALID_VERSION",r[r.INVALID_HEADER_TOKEN=10]="INVALID_HEADER_TOKEN",r[r.INVALID_CONTENT_LENGTH=11]="INVALID_CONTENT_LENGTH",r[r.INVALID_CHUNK_SIZE=12]="INVALID_CHUNK_SIZE",r[r.INVALID_STATUS=13]="INVALID_STATUS",r[r.INVALID_EOF_STATE=14]="INVALID_EOF_STATE",r[r.INVALID_TRANSFER_ENCODING=15]="INVALID_TRANSFER_ENCODING",r[r.CB_MESSAGE_BEGIN=16]="CB_MESSAGE_BEGIN",r[r.CB_HEADERS_COMPLETE=17]="CB_HEADERS_COMPLETE",r[r.CB_MESSAGE_COMPLETE=18]="CB_MESSAGE_COMPLETE",r[r.CB_CHUNK_HEADER=19]="CB_CHUNK_HEADER",r[r.CB_CHUNK_COMPLETE=20]="CB_CHUNK_COMPLETE",r[r.PAUSED=21]="PAUSED",r[r.PAUSED_UPGRADE=22]="PAUSED_UPGRADE",r[r.PAUSED_H2_UPGRADE=23]="PAUSED_H2_UPGRADE",r[r.USER=24]="USER"})(e.ERROR||(e.ERROR={})),function(r){r[r.BOTH=0]="BOTH",r[r.REQUEST=1]="REQUEST",r[r.RESPONSE=2]="RESPONSE"}(e.TYPE||(e.TYPE={})),function(r){r[r.CONNECTION_KEEP_ALIVE=1]="CONNECTION_KEEP_ALIVE",r[r.CONNECTION_CLOSE=2]="CONNECTION_CLOSE",r[r.CONNECTION_UPGRADE=4]="CONNECTION_UPGRADE",r[r.CHUNKED=8]="CHUNKED",r[r.UPGRADE=16]="UPGRADE",r[r.CONTENT_LENGTH=32]="CONTENT_LENGTH",r[r.SKIPBODY=64]="SKIPBODY",r[r.TRAILING=128]="TRAILING",r[r.TRANSFER_ENCODING=512]="TRANSFER_ENCODING"}(e.FLAGS||(e.FLAGS={})),function(r){r[r.HEADERS=1]="HEADERS",r[r.CHUNKED_LENGTH=2]="CHUNKED_LENGTH",r[r.KEEP_ALIVE=4]="KEEP_ALIVE"}(e.LENIENT_FLAGS||(e.LENIENT_FLAGS={}));var t;(function(r){r[r.DELETE=0]="DELETE",r[r.GET=1]="GET",r[r.HEAD=2]="HEAD",r[r.POST=3]="POST",r[r.PUT=4]="PUT",r[r.CONNECT=5]="CONNECT",r[r.OPTIONS=6]="OPTIONS",r[r.TRACE=7]="TRACE",r[r.COPY=8]="COPY",r[r.LOCK=9]="LOCK",r[r.MKCOL=10]="MKCOL",r[r.MOVE=11]="MOVE",r[r.PROPFIND=12]="PROPFIND",r[r.PROPPATCH=13]="PROPPATCH",r[r.SEARCH=14]="SEARCH",r[r.UNLOCK=15]="UNLOCK",r[r.BIND=16]="BIND",r[r.REBIND=17]="REBIND",r[r.UNBIND=18]="UNBIND",r[r.ACL=19]="ACL",r[r.REPORT=20]="REPORT",r[r.MKACTIVITY=21]="MKACTIVITY",r[r.CHECKOUT=22]="CHECKOUT",r[r.MERGE=23]="MERGE",r[r["M-SEARCH"]=24]="M-SEARCH",r[r.NOTIFY=25]="NOTIFY",r[r.SUBSCRIBE=26]="SUBSCRIBE",r[r.UNSUBSCRIBE=27]="UNSUBSCRIBE",r[r.PATCH=28]="PATCH",r[r.PURGE=29]="PURGE",r[r.MKCALENDAR=30]="MKCALENDAR",r[r.LINK=31]="LINK",r[r.UNLINK=32]="UNLINK",r[r.SOURCE=33]="SOURCE",r[r.PRI=34]="PRI",r[r.DESCRIBE=35]="DESCRIBE",r[r.ANNOUNCE=36]="ANNOUNCE",r[r.SETUP=37]="SETUP",r[r.PLAY=38]="PLAY",r[r.PAUSE=39]="PAUSE",r[r.TEARDOWN=40]="TEARDOWN",r[r.GET_PARAMETER=41]="GET_PARAMETER",r[r.SET_PARAMETER=42]="SET_PARAMETER",r[r.REDIRECT=43]="REDIRECT",r[r.RECORD=44]="RECORD",r[r.FLUSH=45]="FLUSH"})(t=e.METHODS||(e.METHODS={})),e.METHODS_HTTP=[t.DELETE,t.GET,t.HEAD,t.POST,t.PUT,t.CONNECT,t.OPTIONS,t.TRACE,t.COPY,t.LOCK,t.MKCOL,t.MOVE,t.PROPFIND,t.PROPPATCH,t.SEARCH,t.UNLOCK,t.BIND,t.REBIND,t.UNBIND,t.ACL,t.REPORT,t.MKACTIVITY,t.CHECKOUT,t.MERGE,t["M-SEARCH"],t.NOTIFY,t.SUBSCRIBE,t.UNSUBSCRIBE,t.PATCH,t.PURGE,t.MKCALENDAR,t.LINK,t.UNLINK,t.PRI,t.SOURCE],e.METHODS_ICE=[t.SOURCE],e.METHODS_RTSP=[t.OPTIONS,t.DESCRIBE,t.ANNOUNCE,t.SETUP,t.PLAY,t.PAUSE,t.TEARDOWN,t.GET_PARAMETER,t.SET_PARAMETER,t.REDIRECT,t.RECORD,t.FLUSH,t.GET,t.POST],e.METHOD_MAP=A.enumToMap(t),e.H_METHOD_MAP={},Object.keys(e.METHOD_MAP).forEach(r=>{/^H/.test(r)&&(e.H_METHOD_MAP[r]=e.METHOD_MAP[r])}),function(r){r[r.SAFE=0]="SAFE",r[r.SAFE_WITH_CB=1]="SAFE_WITH_CB",r[r.UNSAFE=2]="UNSAFE"}(e.FINISH||(e.FINISH={})),e.ALPHA=[];for(let r=65;r<=90;r++)e.ALPHA.push(String.fromCharCode(r)),e.ALPHA.push(String.fromCharCode(r+32));e.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9},e.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},e.NUM=["0","1","2","3","4","5","6","7","8","9"],e.ALPHANUM=e.ALPHA.concat(e.NUM),e.MARK=["-","_",".","!","~","*","'","(",")"],e.USERINFO_CHARS=e.ALPHANUM.concat(e.MARK).concat(["%",";",":","&","=","+","$",","]),e.STRICT_URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(e.ALPHANUM),e.URL_CHAR=e.STRICT_URL_CHAR.concat([" ","\f"]);for(let r=128;r<=255;r++)e.URL_CHAR.push(r);e.HEX=e.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]),e.STRICT_TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(e.ALPHANUM),e.TOKEN=e.STRICT_TOKEN.concat([" "]),e.HEADER_CHARS=[" "];for(let r=32;r<=255;r++)r!==127&&e.HEADER_CHARS.push(r);e.CONNECTION_TOKEN_CHARS=e.HEADER_CHARS.filter(r=>r!==44),e.MAJOR=e.NUM_MAP,e.MINOR=e.MAJOR;var s;(function(r){r[r.GENERAL=0]="GENERAL",r[r.CONNECTION=1]="CONNECTION",r[r.CONTENT_LENGTH=2]="CONTENT_LENGTH",r[r.TRANSFER_ENCODING=3]="TRANSFER_ENCODING",r[r.UPGRADE=4]="UPGRADE",r[r.CONNECTION_KEEP_ALIVE=5]="CONNECTION_KEEP_ALIVE",r[r.CONNECTION_CLOSE=6]="CONNECTION_CLOSE",r[r.CONNECTION_UPGRADE=7]="CONNECTION_UPGRADE",r[r.TRANSFER_ENCODING_CHUNKED=8]="TRANSFER_ENCODING_CHUNKED"})(s=e.HEADER_STATE||(e.HEADER_STATE={})),e.SPECIAL_HEADERS={connection:s.CONNECTION,"content-length":s.CONTENT_LENGTH,"proxy-connection":s.CONNECTION,"transfer-encoding":s.TRANSFER_ENCODING,upgrade:s.UPGRADE}}(rQ);var Cn,sQ;function nQ(){if(sQ)return Cn;sQ=1;const{Buffer:e}=de;return Cn=e.from("AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQDscBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxweHyAhIyUoP0BBREVGR0hJSktMTU9QUVJT3gNXWVtcXWBiZWZnaGlqa2xtb3BxcnN0dXZ3eHl6e3x9foABggGFAYYBhwGJAYsBjAGNAY4BjwGQAZEBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAZkCpAKwAv4C/gILIAEiBCACRw3zAUHdASEQDP8DCyABIhAgAkcN3QFBwwEhEAz+AwsgASIBIAJHDZABQfcAIRAM/QMLIAEiASACRw2GAUHvACEQDPwDCyABIgEgAkcNf0HqACEQDPsDCyABIgEgAkcNe0HoACEQDPoDCyABIgEgAkcNeEHmACEQDPkDCyABIgEgAkcNGkEYIRAM+AMLIAEiASACRw0UQRIhEAz3AwsgASIBIAJHDVlBxQAhEAz2AwsgASIBIAJHDUpBPyEQDPUDCyABIgEgAkcNSEE8IRAM9AMLIAEiASACRw1BQTEhEAzzAwsgAC0ALkEBRg3rAwyHAgsgACABIgEgAhDAgICAAEEBRw3mASAAQgA3AyAM5wELIAAgASIBIAIQtICAgAAiEA3nASABIQEM9QILAkAgASIBIAJHDQBBBiEQDPADCyAAIAFBAWoiASACELuAgIAAIhAN6AEgASEBDDELIABCADcDIEESIRAM1QMLIAEiECACRw0rQR0hEAztAwsCQCABIgEgAkYNACABQQFqIQFBECEQDNQDC0EHIRAM7AMLIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN5QFBCCEQDOsDCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEUIRAM0gMLQQkhEAzqAwsgASEBIAApAyBQDeQBIAEhAQzyAgsCQCABIgEgAkcNAEELIRAM6QMLIAAgAUEBaiIBIAIQtoCAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3mASABIQEMDQsgACABIgEgAhC6gICAACIQDecBIAEhAQzwAgsCQCABIgEgAkcNAEEPIRAM5QMLIAEtAAAiEEE7Rg0IIBBBDUcN6AEgAUEBaiEBDO8CCyAAIAEiASACELqAgIAAIhAN6AEgASEBDPICCwNAAkAgAS0AAEHwtYCAAGotAAAiEEEBRg0AIBBBAkcN6wEgACgCBCEQIABBADYCBCAAIBAgAUEBaiIBELmAgIAAIhAN6gEgASEBDPQCCyABQQFqIgEgAkcNAAtBEiEQDOIDCyAAIAEiASACELqAgIAAIhAN6QEgASEBDAoLIAEiASACRw0GQRshEAzgAwsCQCABIgEgAkcNAEEWIRAM4AMLIABBioCAgAA2AgggACABNgIEIAAgASACELiAgIAAIhAN6gEgASEBQSAhEAzGAwsCQCABIgEgAkYNAANAAkAgAS0AAEHwt4CAAGotAAAiEEECRg0AAkAgEEF/ag4E5QHsAQDrAewBCyABQQFqIQFBCCEQDMgDCyABQQFqIgEgAkcNAAtBFSEQDN8DC0EVIRAM3gMLA0ACQCABLQAAQfC5gIAAai0AACIQQQJGDQAgEEF/ag4E3gHsAeAB6wHsAQsgAUEBaiIBIAJHDQALQRghEAzdAwsCQCABIgEgAkYNACAAQYuAgIAANgIIIAAgATYCBCABIQFBByEQDMQDC0EZIRAM3AMLIAFBAWohAQwCCwJAIAEiFCACRw0AQRohEAzbAwsgFCEBAkAgFC0AAEFzag4U3QLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gIA7gILQQAhECAAQQA2AhwgAEGvi4CAADYCECAAQQI2AgwgACAUQQFqNgIUDNoDCwJAIAEtAAAiEEE7Rg0AIBBBDUcN6AEgAUEBaiEBDOUCCyABQQFqIQELQSIhEAy/AwsCQCABIhAgAkcNAEEcIRAM2AMLQgAhESAQIQEgEC0AAEFQag435wHmAQECAwQFBgcIAAAAAAAAAAkKCwwNDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxAREhMUAAtBHiEQDL0DC0ICIREM5QELQgMhEQzkAQtCBCERDOMBC0IFIREM4gELQgYhEQzhAQtCByERDOABC0IIIREM3wELQgkhEQzeAQtCCiERDN0BC0ILIREM3AELQgwhEQzbAQtCDSERDNoBC0IOIREM2QELQg8hEQzYAQtCCiERDNcBC0ILIREM1gELQgwhEQzVAQtCDSERDNQBC0IOIREM0wELQg8hEQzSAQtCACERAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQLQAAQVBqDjflAeQBAAECAwQFBgfmAeYB5gHmAeYB5gHmAQgJCgsMDeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gEODxAREhPmAQtCAiERDOQBC0IDIREM4wELQgQhEQziAQtCBSERDOEBC0IGIREM4AELQgchEQzfAQtCCCERDN4BC0IJIREM3QELQgohEQzcAQtCCyERDNsBC0IMIREM2gELQg0hEQzZAQtCDiERDNgBC0IPIREM1wELQgohEQzWAQtCCyERDNUBC0IMIREM1AELQg0hEQzTAQtCDiERDNIBC0IPIREM0QELIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN0gFBHyEQDMADCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEkIRAMpwMLQSAhEAy/AwsgACABIhAgAhC+gICAAEF/ag4FtgEAxQIB0QHSAQtBESEQDKQDCyAAQQE6AC8gECEBDLsDCyABIgEgAkcN0gFBJCEQDLsDCyABIg0gAkcNHkHGACEQDLoDCyAAIAEiASACELKAgIAAIhAN1AEgASEBDLUBCyABIhAgAkcNJkHQACEQDLgDCwJAIAEiASACRw0AQSghEAy4AwsgAEEANgIEIABBjICAgAA2AgggACABIAEQsYCAgAAiEA3TASABIQEM2AELAkAgASIQIAJHDQBBKSEQDLcDCyAQLQAAIgFBIEYNFCABQQlHDdMBIBBBAWohAQwVCwJAIAEiASACRg0AIAFBAWohAQwXC0EqIRAMtQMLAkAgASIQIAJHDQBBKyEQDLUDCwJAIBAtAAAiAUEJRg0AIAFBIEcN1QELIAAtACxBCEYN0wEgECEBDJEDCwJAIAEiASACRw0AQSwhEAy0AwsgAS0AAEEKRw3VASABQQFqIQEMyQILIAEiDiACRw3VAUEvIRAMsgMLA0ACQCABLQAAIhBBIEYNAAJAIBBBdmoOBADcAdwBANoBCyABIQEM4AELIAFBAWoiASACRw0AC0ExIRAMsQMLQTIhECABIhQgAkYNsAMgAiAUayAAKAIAIgFqIRUgFCABa0EDaiEWAkADQCAULQAAIhdBIHIgFyAXQb9/akH/AXFBGkkbQf8BcSABQfC7gIAAai0AAEcNAQJAIAFBA0cNAEEGIQEMlgMLIAFBAWohASAUQQFqIhQgAkcNAAsgACAVNgIADLEDCyAAQQA2AgAgFCEBDNkBC0EzIRAgASIUIAJGDa8DIAIgFGsgACgCACIBaiEVIBQgAWtBCGohFgJAA0AgFC0AACIXQSByIBcgF0G/f2pB/wFxQRpJG0H/AXEgAUH0u4CAAGotAABHDQECQCABQQhHDQBBBSEBDJUDCyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFTYCAAywAwsgAEEANgIAIBQhAQzYAQtBNCEQIAEiFCACRg2uAyACIBRrIAAoAgAiAWohFSAUIAFrQQVqIRYCQANAIBQtAAAiF0EgciAXIBdBv39qQf8BcUEaSRtB/wFxIAFB0MKAgABqLQAARw0BAkAgAUEFRw0AQQchAQyUAwsgAUEBaiEBIBRBAWoiFCACRw0ACyAAIBU2AgAMrwMLIABBADYCACAUIQEM1wELAkAgASIBIAJGDQADQAJAIAEtAABBgL6AgABqLQAAIhBBAUYNACAQQQJGDQogASEBDN0BCyABQQFqIgEgAkcNAAtBMCEQDK4DC0EwIRAMrQMLAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgRg0AIBBBdmoOBNkB2gHaAdkB2gELIAFBAWoiASACRw0AC0E4IRAMrQMLQTghEAysAwsDQAJAIAEtAAAiEEEgRg0AIBBBCUcNAwsgAUEBaiIBIAJHDQALQTwhEAyrAwsDQAJAIAEtAAAiEEEgRg0AAkACQCAQQXZqDgTaAQEB2gEACyAQQSxGDdsBCyABIQEMBAsgAUEBaiIBIAJHDQALQT8hEAyqAwsgASEBDNsBC0HAACEQIAEiFCACRg2oAyACIBRrIAAoAgAiAWohFiAUIAFrQQZqIRcCQANAIBQtAABBIHIgAUGAwICAAGotAABHDQEgAUEGRg2OAyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAypAwsgAEEANgIAIBQhAQtBNiEQDI4DCwJAIAEiDyACRw0AQcEAIRAMpwMLIABBjICAgAA2AgggACAPNgIEIA8hASAALQAsQX9qDgTNAdUB1wHZAYcDCyABQQFqIQEMzAELAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgciAQIBBBv39qQf8BcUEaSRtB/wFxIhBBCUYNACAQQSBGDQACQAJAAkACQCAQQZ1/ag4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIRAMkQMLIAFBAWohAUEyIRAMkAMLIAFBAWohAUEzIRAMjwMLIAEhAQzQAQsgAUEBaiIBIAJHDQALQTUhEAylAwtBNSEQDKQDCwJAIAEiASACRg0AA0ACQCABLQAAQYC8gIAAai0AAEEBRg0AIAEhAQzTAQsgAUEBaiIBIAJHDQALQT0hEAykAwtBPSEQDKMDCyAAIAEiASACELCAgIAAIhAN1gEgASEBDAELIBBBAWohAQtBPCEQDIcDCwJAIAEiASACRw0AQcIAIRAMoAMLAkADQAJAIAEtAABBd2oOGAAC/gL+AoQD/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4CAP4CCyABQQFqIgEgAkcNAAtBwgAhEAygAwsgAUEBaiEBIAAtAC1BAXFFDb0BIAEhAQtBLCEQDIUDCyABIgEgAkcN0wFBxAAhEAydAwsDQAJAIAEtAABBkMCAgABqLQAAQQFGDQAgASEBDLcCCyABQQFqIgEgAkcNAAtBxQAhEAycAwsgDS0AACIQQSBGDbMBIBBBOkcNgQMgACgCBCEBIABBADYCBCAAIAEgDRCvgICAACIBDdABIA1BAWohAQyzAgtBxwAhECABIg0gAkYNmgMgAiANayAAKAIAIgFqIRYgDSABa0EFaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGQwoCAAGotAABHDYADIAFBBUYN9AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMmgMLQcgAIRAgASINIAJGDZkDIAIgDWsgACgCACIBaiEWIA0gAWtBCWohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBlsKAgABqLQAARw3/AgJAIAFBCUcNAEECIQEM9QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJkDCwJAIAEiDSACRw0AQckAIRAMmQMLAkACQCANLQAAIgFBIHIgASABQb9/akH/AXFBGkkbQf8BcUGSf2oOBwCAA4ADgAOAA4ADAYADCyANQQFqIQFBPiEQDIADCyANQQFqIQFBPyEQDP8CC0HKACEQIAEiDSACRg2XAyACIA1rIAAoAgAiAWohFiANIAFrQQFqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQaDCgIAAai0AAEcN/QIgAUEBRg3wAiABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyXAwtBywAhECABIg0gAkYNlgMgAiANayAAKAIAIgFqIRYgDSABa0EOaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGiwoCAAGotAABHDfwCIAFBDkYN8AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMlgMLQcwAIRAgASINIAJGDZUDIAIgDWsgACgCACIBaiEWIA0gAWtBD2ohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBwMKAgABqLQAARw37AgJAIAFBD0cNAEEDIQEM8QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJUDC0HNACEQIAEiDSACRg2UAyACIA1rIAAoAgAiAWohFiANIAFrQQVqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQdDCgIAAai0AAEcN+gICQCABQQVHDQBBBCEBDPACCyABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyUAwsCQCABIg0gAkcNAEHOACEQDJQDCwJAAkACQAJAIA0tAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZ1/ag4TAP0C/QL9Av0C/QL9Av0C/QL9Av0C/QL9AgH9Av0C/QICA/0CCyANQQFqIQFBwQAhEAz9AgsgDUEBaiEBQcIAIRAM/AILIA1BAWohAUHDACEQDPsCCyANQQFqIQFBxAAhEAz6AgsCQCABIgEgAkYNACAAQY2AgIAANgIIIAAgATYCBCABIQFBxQAhEAz6AgtBzwAhEAySAwsgECEBAkACQCAQLQAAQXZqDgQBqAKoAgCoAgsgEEEBaiEBC0EnIRAM+AILAkAgASIBIAJHDQBB0QAhEAyRAwsCQCABLQAAQSBGDQAgASEBDI0BCyABQQFqIQEgAC0ALUEBcUUNxwEgASEBDIwBCyABIhcgAkcNyAFB0gAhEAyPAwtB0wAhECABIhQgAkYNjgMgAiAUayAAKAIAIgFqIRYgFCABa0EBaiEXA0AgFC0AACABQdbCgIAAai0AAEcNzAEgAUEBRg3HASABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAyOAwsCQCABIgEgAkcNAEHVACEQDI4DCyABLQAAQQpHDcwBIAFBAWohAQzHAQsCQCABIgEgAkcNAEHWACEQDI0DCwJAAkAgAS0AAEF2ag4EAM0BzQEBzQELIAFBAWohAQzHAQsgAUEBaiEBQcoAIRAM8wILIAAgASIBIAIQroCAgAAiEA3LASABIQFBzQAhEAzyAgsgAC0AKUEiRg2FAwymAgsCQCABIgEgAkcNAEHbACEQDIoDC0EAIRRBASEXQQEhFkEAIRACQAJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4K1AHTAQABAgMEBQYI1QELQQIhEAwGC0EDIRAMBQtBBCEQDAQLQQUhEAwDC0EGIRAMAgtBByEQDAELQQghEAtBACEXQQAhFkEAIRQMzAELQQkhEEEBIRRBACEXQQAhFgzLAQsCQCABIgEgAkcNAEHdACEQDIkDCyABLQAAQS5HDcwBIAFBAWohAQymAgsgASIBIAJHDcwBQd8AIRAMhwMLAkAgASIBIAJGDQAgAEGOgICAADYCCCAAIAE2AgQgASEBQdAAIRAM7gILQeAAIRAMhgMLQeEAIRAgASIBIAJGDYUDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHiwoCAAGotAABHDc0BIBRBA0YNzAEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhQMLQeIAIRAgASIBIAJGDYQDIAIgAWsgACgCACIUaiEWIAEgFGtBAmohFwNAIAEtAAAgFEHmwoCAAGotAABHDcwBIBRBAkYNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhAMLQeMAIRAgASIBIAJGDYMDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHpwoCAAGotAABHDcsBIBRBA0YNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMgwMLAkAgASIBIAJHDQBB5QAhEAyDAwsgACABQQFqIgEgAhCogICAACIQDc0BIAEhAUHWACEQDOkCCwJAIAEiASACRg0AA0ACQCABLQAAIhBBIEYNAAJAAkACQCAQQbh/ag4LAAHPAc8BzwHPAc8BzwHPAc8BAs8BCyABQQFqIQFB0gAhEAztAgsgAUEBaiEBQdMAIRAM7AILIAFBAWohAUHUACEQDOsCCyABQQFqIgEgAkcNAAtB5AAhEAyCAwtB5AAhEAyBAwsDQAJAIAEtAABB8MKAgABqLQAAIhBBAUYNACAQQX5qDgPPAdAB0QHSAQsgAUEBaiIBIAJHDQALQeYAIRAMgAMLAkAgASIBIAJGDQAgAUEBaiEBDAMLQecAIRAM/wILA0ACQCABLQAAQfDEgIAAai0AACIQQQFGDQACQCAQQX5qDgTSAdMB1AEA1QELIAEhAUHXACEQDOcCCyABQQFqIgEgAkcNAAtB6AAhEAz+AgsCQCABIgEgAkcNAEHpACEQDP4CCwJAIAEtAAAiEEF2ag4augHVAdUBvAHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHKAdUB1QEA0wELIAFBAWohAQtBBiEQDOMCCwNAAkAgAS0AAEHwxoCAAGotAABBAUYNACABIQEMngILIAFBAWoiASACRw0AC0HqACEQDPsCCwJAIAEiASACRg0AIAFBAWohAQwDC0HrACEQDPoCCwJAIAEiASACRw0AQewAIRAM+gILIAFBAWohAQwBCwJAIAEiASACRw0AQe0AIRAM+QILIAFBAWohAQtBBCEQDN4CCwJAIAEiFCACRw0AQe4AIRAM9wILIBQhAQJAAkACQCAULQAAQfDIgIAAai0AAEF/ag4H1AHVAdYBAJwCAQLXAQsgFEEBaiEBDAoLIBRBAWohAQzNAQtBACEQIABBADYCHCAAQZuSgIAANgIQIABBBzYCDCAAIBRBAWo2AhQM9gILAkADQAJAIAEtAABB8MiAgABqLQAAIhBBBEYNAAJAAkAgEEF/ag4H0gHTAdQB2QEABAHZAQsgASEBQdoAIRAM4AILIAFBAWohAUHcACEQDN8CCyABQQFqIgEgAkcNAAtB7wAhEAz2AgsgAUEBaiEBDMsBCwJAIAEiFCACRw0AQfAAIRAM9QILIBQtAABBL0cN1AEgFEEBaiEBDAYLAkAgASIUIAJHDQBB8QAhEAz0AgsCQCAULQAAIgFBL0cNACAUQQFqIQFB3QAhEAzbAgsgAUF2aiIEQRZLDdMBQQEgBHRBiYCAAnFFDdMBDMoCCwJAIAEiASACRg0AIAFBAWohAUHeACEQDNoCC0HyACEQDPICCwJAIAEiFCACRw0AQfQAIRAM8gILIBQhAQJAIBQtAABB8MyAgABqLQAAQX9qDgPJApQCANQBC0HhACEQDNgCCwJAIAEiFCACRg0AA0ACQCAULQAAQfDKgIAAai0AACIBQQNGDQACQCABQX9qDgLLAgDVAQsgFCEBQd8AIRAM2gILIBRBAWoiFCACRw0AC0HzACEQDPECC0HzACEQDPACCwJAIAEiASACRg0AIABBj4CAgAA2AgggACABNgIEIAEhAUHgACEQDNcCC0H1ACEQDO8CCwJAIAEiASACRw0AQfYAIRAM7wILIABBj4CAgAA2AgggACABNgIEIAEhAQtBAyEQDNQCCwNAIAEtAABBIEcNwwIgAUEBaiIBIAJHDQALQfcAIRAM7AILAkAgASIBIAJHDQBB+AAhEAzsAgsgAS0AAEEgRw3OASABQQFqIQEM7wELIAAgASIBIAIQrICAgAAiEA3OASABIQEMjgILAkAgASIEIAJHDQBB+gAhEAzqAgsgBC0AAEHMAEcN0QEgBEEBaiEBQRMhEAzPAQsCQCABIgQgAkcNAEH7ACEQDOkCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRADQCAELQAAIAFB8M6AgABqLQAARw3QASABQQVGDc4BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQfsAIRAM6AILAkAgASIEIAJHDQBB/AAhEAzoAgsCQAJAIAQtAABBvX9qDgwA0QHRAdEB0QHRAdEB0QHRAdEB0QEB0QELIARBAWohAUHmACEQDM8CCyAEQQFqIQFB5wAhEAzOAgsCQCABIgQgAkcNAEH9ACEQDOcCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDc8BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH9ACEQDOcCCyAAQQA2AgAgEEEBaiEBQRAhEAzMAQsCQCABIgQgAkcNAEH+ACEQDOYCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUH2zoCAAGotAABHDc4BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH+ACEQDOYCCyAAQQA2AgAgEEEBaiEBQRYhEAzLAQsCQCABIgQgAkcNAEH/ACEQDOUCCyACIARrIAAoAgAiAWohFCAEIAFrQQNqIRACQANAIAQtAAAgAUH8zoCAAGotAABHDc0BIAFBA0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH/ACEQDOUCCyAAQQA2AgAgEEEBaiEBQQUhEAzKAQsCQCABIgQgAkcNAEGAASEQDOQCCyAELQAAQdkARw3LASAEQQFqIQFBCCEQDMkBCwJAIAEiBCACRw0AQYEBIRAM4wILAkACQCAELQAAQbJ/ag4DAMwBAcwBCyAEQQFqIQFB6wAhEAzKAgsgBEEBaiEBQewAIRAMyQILAkAgASIEIAJHDQBBggEhEAziAgsCQAJAIAQtAABBuH9qDggAywHLAcsBywHLAcsBAcsBCyAEQQFqIQFB6gAhEAzJAgsgBEEBaiEBQe0AIRAMyAILAkAgASIEIAJHDQBBgwEhEAzhAgsgAiAEayAAKAIAIgFqIRAgBCABa0ECaiEUAkADQCAELQAAIAFBgM+AgABqLQAARw3JASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBA2AgBBgwEhEAzhAgtBACEQIABBADYCACAUQQFqIQEMxgELAkAgASIEIAJHDQBBhAEhEAzgAgsgAiAEayAAKAIAIgFqIRQgBCABa0EEaiEQAkADQCAELQAAIAFBg8+AgABqLQAARw3IASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBhAEhEAzgAgsgAEEANgIAIBBBAWohAUEjIRAMxQELAkAgASIEIAJHDQBBhQEhEAzfAgsCQAJAIAQtAABBtH9qDggAyAHIAcgByAHIAcgBAcgBCyAEQQFqIQFB7wAhEAzGAgsgBEEBaiEBQfAAIRAMxQILAkAgASIEIAJHDQBBhgEhEAzeAgsgBC0AAEHFAEcNxQEgBEEBaiEBDIMCCwJAIAEiBCACRw0AQYcBIRAM3QILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQYjPgIAAai0AAEcNxQEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYcBIRAM3QILIABBADYCACAQQQFqIQFBLSEQDMIBCwJAIAEiBCACRw0AQYgBIRAM3AILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNxAEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYgBIRAM3AILIABBADYCACAQQQFqIQFBKSEQDMEBCwJAIAEiASACRw0AQYkBIRAM2wILQQEhECABLQAAQd8ARw3AASABQQFqIQEMgQILAkAgASIEIAJHDQBBigEhEAzaAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQA0AgBC0AACABQYzPgIAAai0AAEcNwQEgAUEBRg2vAiABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGKASEQDNkCCwJAIAEiBCACRw0AQYsBIRAM2QILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQY7PgIAAai0AAEcNwQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYsBIRAM2QILIABBADYCACAQQQFqIQFBAiEQDL4BCwJAIAEiBCACRw0AQYwBIRAM2AILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNwAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYwBIRAM2AILIABBADYCACAQQQFqIQFBHyEQDL0BCwJAIAEiBCACRw0AQY0BIRAM1wILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfLPgIAAai0AAEcNvwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQY0BIRAM1wILIABBADYCACAQQQFqIQFBCSEQDLwBCwJAIAEiBCACRw0AQY4BIRAM1gILAkACQCAELQAAQbd/ag4HAL8BvwG/Ab8BvwEBvwELIARBAWohAUH4ACEQDL0CCyAEQQFqIQFB+QAhEAy8AgsCQCABIgQgAkcNAEGPASEQDNUCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGRz4CAAGotAABHDb0BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGPASEQDNUCCyAAQQA2AgAgEEEBaiEBQRghEAy6AQsCQCABIgQgAkcNAEGQASEQDNQCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUGXz4CAAGotAABHDbwBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGQASEQDNQCCyAAQQA2AgAgEEEBaiEBQRchEAy5AQsCQCABIgQgAkcNAEGRASEQDNMCCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUGaz4CAAGotAABHDbsBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGRASEQDNMCCyAAQQA2AgAgEEEBaiEBQRUhEAy4AQsCQCABIgQgAkcNAEGSASEQDNICCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGhz4CAAGotAABHDboBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGSASEQDNICCyAAQQA2AgAgEEEBaiEBQR4hEAy3AQsCQCABIgQgAkcNAEGTASEQDNECCyAELQAAQcwARw24ASAEQQFqIQFBCiEQDLYBCwJAIAQgAkcNAEGUASEQDNACCwJAAkAgBC0AAEG/f2oODwC5AbkBuQG5AbkBuQG5AbkBuQG5AbkBuQG5AQG5AQsgBEEBaiEBQf4AIRAMtwILIARBAWohAUH/ACEQDLYCCwJAIAQgAkcNAEGVASEQDM8CCwJAAkAgBC0AAEG/f2oOAwC4AQG4AQsgBEEBaiEBQf0AIRAMtgILIARBAWohBEGAASEQDLUCCwJAIAQgAkcNAEGWASEQDM4CCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUGnz4CAAGotAABHDbYBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGWASEQDM4CCyAAQQA2AgAgEEEBaiEBQQshEAyzAQsCQCAEIAJHDQBBlwEhEAzNAgsCQAJAAkACQCAELQAAQVNqDiMAuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AQG4AbgBuAG4AbgBArgBuAG4AQO4AQsgBEEBaiEBQfsAIRAMtgILIARBAWohAUH8ACEQDLUCCyAEQQFqIQRBgQEhEAy0AgsgBEEBaiEEQYIBIRAMswILAkAgBCACRw0AQZgBIRAMzAILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQanPgIAAai0AAEcNtAEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZgBIRAMzAILIABBADYCACAQQQFqIQFBGSEQDLEBCwJAIAQgAkcNAEGZASEQDMsCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGuz4CAAGotAABHDbMBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGZASEQDMsCCyAAQQA2AgAgEEEBaiEBQQYhEAywAQsCQCAEIAJHDQBBmgEhEAzKAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBtM+AgABqLQAARw2yASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBmgEhEAzKAgsgAEEANgIAIBBBAWohAUEcIRAMrwELAkAgBCACRw0AQZsBIRAMyQILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbbPgIAAai0AAEcNsQEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZsBIRAMyQILIABBADYCACAQQQFqIQFBJyEQDK4BCwJAIAQgAkcNAEGcASEQDMgCCwJAAkAgBC0AAEGsf2oOAgABsQELIARBAWohBEGGASEQDK8CCyAEQQFqIQRBhwEhEAyuAgsCQCAEIAJHDQBBnQEhEAzHAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBuM+AgABqLQAARw2vASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBnQEhEAzHAgsgAEEANgIAIBBBAWohAUEmIRAMrAELAkAgBCACRw0AQZ4BIRAMxgILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbrPgIAAai0AAEcNrgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZ4BIRAMxgILIABBADYCACAQQQFqIQFBAyEQDKsBCwJAIAQgAkcNAEGfASEQDMUCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDa0BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGfASEQDMUCCyAAQQA2AgAgEEEBaiEBQQwhEAyqAQsCQCAEIAJHDQBBoAEhEAzEAgsgAiAEayAAKAIAIgFqIRQgBCABa0EDaiEQAkADQCAELQAAIAFBvM+AgABqLQAARw2sASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBoAEhEAzEAgsgAEEANgIAIBBBAWohAUENIRAMqQELAkAgBCACRw0AQaEBIRAMwwILAkACQCAELQAAQbp/ag4LAKwBrAGsAawBrAGsAawBrAGsAQGsAQsgBEEBaiEEQYsBIRAMqgILIARBAWohBEGMASEQDKkCCwJAIAQgAkcNAEGiASEQDMICCyAELQAAQdAARw2pASAEQQFqIQQM6QELAkAgBCACRw0AQaMBIRAMwQILAkACQCAELQAAQbd/ag4HAaoBqgGqAaoBqgEAqgELIARBAWohBEGOASEQDKgCCyAEQQFqIQFBIiEQDKYBCwJAIAQgAkcNAEGkASEQDMACCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHAz4CAAGotAABHDagBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGkASEQDMACCyAAQQA2AgAgEEEBaiEBQR0hEAylAQsCQCAEIAJHDQBBpQEhEAy/AgsCQAJAIAQtAABBrn9qDgMAqAEBqAELIARBAWohBEGQASEQDKYCCyAEQQFqIQFBBCEQDKQBCwJAIAQgAkcNAEGmASEQDL4CCwJAAkACQAJAAkAgBC0AAEG/f2oOFQCqAaoBqgGqAaoBqgGqAaoBqgGqAQGqAaoBAqoBqgEDqgGqAQSqAQsgBEEBaiEEQYgBIRAMqAILIARBAWohBEGJASEQDKcCCyAEQQFqIQRBigEhEAymAgsgBEEBaiEEQY8BIRAMpQILIARBAWohBEGRASEQDKQCCwJAIAQgAkcNAEGnASEQDL0CCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDaUBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGnASEQDL0CCyAAQQA2AgAgEEEBaiEBQREhEAyiAQsCQCAEIAJHDQBBqAEhEAy8AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBws+AgABqLQAARw2kASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBqAEhEAy8AgsgAEEANgIAIBBBAWohAUEsIRAMoQELAkAgBCACRw0AQakBIRAMuwILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQcXPgIAAai0AAEcNowEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQakBIRAMuwILIABBADYCACAQQQFqIQFBKyEQDKABCwJAIAQgAkcNAEGqASEQDLoCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHKz4CAAGotAABHDaIBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGqASEQDLoCCyAAQQA2AgAgEEEBaiEBQRQhEAyfAQsCQCAEIAJHDQBBqwEhEAy5AgsCQAJAAkACQCAELQAAQb5/ag4PAAECpAGkAaQBpAGkAaQBpAGkAaQBpAGkAQOkAQsgBEEBaiEEQZMBIRAMogILIARBAWohBEGUASEQDKECCyAEQQFqIQRBlQEhEAygAgsgBEEBaiEEQZYBIRAMnwILAkAgBCACRw0AQawBIRAMuAILIAQtAABBxQBHDZ8BIARBAWohBAzgAQsCQCAEIAJHDQBBrQEhEAy3AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBzc+AgABqLQAARw2fASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBrQEhEAy3AgsgAEEANgIAIBBBAWohAUEOIRAMnAELAkAgBCACRw0AQa4BIRAMtgILIAQtAABB0ABHDZ0BIARBAWohAUElIRAMmwELAkAgBCACRw0AQa8BIRAMtQILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNnQEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQa8BIRAMtQILIABBADYCACAQQQFqIQFBKiEQDJoBCwJAIAQgAkcNAEGwASEQDLQCCwJAAkAgBC0AAEGrf2oOCwCdAZ0BnQGdAZ0BnQGdAZ0BnQEBnQELIARBAWohBEGaASEQDJsCCyAEQQFqIQRBmwEhEAyaAgsCQCAEIAJHDQBBsQEhEAyzAgsCQAJAIAQtAABBv39qDhQAnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBAZwBCyAEQQFqIQRBmQEhEAyaAgsgBEEBaiEEQZwBIRAMmQILAkAgBCACRw0AQbIBIRAMsgILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQdnPgIAAai0AAEcNmgEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbIBIRAMsgILIABBADYCACAQQQFqIQFBISEQDJcBCwJAIAQgAkcNAEGzASEQDLECCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUHdz4CAAGotAABHDZkBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGzASEQDLECCyAAQQA2AgAgEEEBaiEBQRohEAyWAQsCQCAEIAJHDQBBtAEhEAywAgsCQAJAAkAgBC0AAEG7f2oOEQCaAZoBmgGaAZoBmgGaAZoBmgEBmgGaAZoBmgGaAQKaAQsgBEEBaiEEQZ0BIRAMmAILIARBAWohBEGeASEQDJcCCyAEQQFqIQRBnwEhEAyWAgsCQCAEIAJHDQBBtQEhEAyvAgsgAiAEayAAKAIAIgFqIRQgBCABa0EFaiEQAkADQCAELQAAIAFB5M+AgABqLQAARw2XASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBtQEhEAyvAgsgAEEANgIAIBBBAWohAUEoIRAMlAELAkAgBCACRw0AQbYBIRAMrgILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQerPgIAAai0AAEcNlgEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbYBIRAMrgILIABBADYCACAQQQFqIQFBByEQDJMBCwJAIAQgAkcNAEG3ASEQDK0CCwJAAkAgBC0AAEG7f2oODgCWAZYBlgGWAZYBlgGWAZYBlgGWAZYBlgEBlgELIARBAWohBEGhASEQDJQCCyAEQQFqIQRBogEhEAyTAgsCQCAEIAJHDQBBuAEhEAysAgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFB7c+AgABqLQAARw2UASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBuAEhEAysAgsgAEEANgIAIBBBAWohAUESIRAMkQELAkAgBCACRw0AQbkBIRAMqwILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNkwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbkBIRAMqwILIABBADYCACAQQQFqIQFBICEQDJABCwJAIAQgAkcNAEG6ASEQDKoCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHyz4CAAGotAABHDZIBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG6ASEQDKoCCyAAQQA2AgAgEEEBaiEBQQ8hEAyPAQsCQCAEIAJHDQBBuwEhEAypAgsCQAJAIAQtAABBt39qDgcAkgGSAZIBkgGSAQGSAQsgBEEBaiEEQaUBIRAMkAILIARBAWohBEGmASEQDI8CCwJAIAQgAkcNAEG8ASEQDKgCCyACIARrIAAoAgAiAWohFCAEIAFrQQdqIRACQANAIAQtAAAgAUH0z4CAAGotAABHDZABIAFBB0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG8ASEQDKgCCyAAQQA2AgAgEEEBaiEBQRshEAyNAQsCQCAEIAJHDQBBvQEhEAynAgsCQAJAAkAgBC0AAEG+f2oOEgCRAZEBkQGRAZEBkQGRAZEBkQEBkQGRAZEBkQGRAZEBApEBCyAEQQFqIQRBpAEhEAyPAgsgBEEBaiEEQacBIRAMjgILIARBAWohBEGoASEQDI0CCwJAIAQgAkcNAEG+ASEQDKYCCyAELQAAQc4ARw2NASAEQQFqIQQMzwELAkAgBCACRw0AQb8BIRAMpQILAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0AAEG/f2oOFQABAgOcAQQFBpwBnAGcAQcICQoLnAEMDQ4PnAELIARBAWohAUHoACEQDJoCCyAEQQFqIQFB6QAhEAyZAgsgBEEBaiEBQe4AIRAMmAILIARBAWohAUHyACEQDJcCCyAEQQFqIQFB8wAhEAyWAgsgBEEBaiEBQfYAIRAMlQILIARBAWohAUH3ACEQDJQCCyAEQQFqIQFB+gAhEAyTAgsgBEEBaiEEQYMBIRAMkgILIARBAWohBEGEASEQDJECCyAEQQFqIQRBhQEhEAyQAgsgBEEBaiEEQZIBIRAMjwILIARBAWohBEGYASEQDI4CCyAEQQFqIQRBoAEhEAyNAgsgBEEBaiEEQaMBIRAMjAILIARBAWohBEGqASEQDIsCCwJAIAQgAkYNACAAQZCAgIAANgIIIAAgBDYCBEGrASEQDIsCC0HAASEQDKMCCyAAIAUgAhCqgICAACIBDYsBIAUhAQxcCwJAIAYgAkYNACAGQQFqIQUMjQELQcIBIRAMoQILA0ACQCAQLQAAQXZqDgSMAQAAjwEACyAQQQFqIhAgAkcNAAtBwwEhEAygAgsCQCAHIAJGDQAgAEGRgICAADYCCCAAIAc2AgQgByEBQQEhEAyHAgtBxAEhEAyfAgsCQCAHIAJHDQBBxQEhEAyfAgsCQAJAIActAABBdmoOBAHOAc4BAM4BCyAHQQFqIQYMjQELIAdBAWohBQyJAQsCQCAHIAJHDQBBxgEhEAyeAgsCQAJAIActAABBdmoOFwGPAY8BAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAQCPAQsgB0EBaiEHC0GwASEQDIQCCwJAIAggAkcNAEHIASEQDJ0CCyAILQAAQSBHDY0BIABBADsBMiAIQQFqIQFBswEhEAyDAgsgASEXAkADQCAXIgcgAkYNASAHLQAAQVBqQf8BcSIQQQpPDcwBAkAgAC8BMiIUQZkzSw0AIAAgFEEKbCIUOwEyIBBB//8DcyAUQf7/A3FJDQAgB0EBaiEXIAAgFCAQaiIQOwEyIBBB//8DcUHoB0kNAQsLQQAhECAAQQA2AhwgAEHBiYCAADYCECAAQQ02AgwgACAHQQFqNgIUDJwCC0HHASEQDJsCCyAAIAggAhCugICAACIQRQ3KASAQQRVHDYwBIABByAE2AhwgACAINgIUIABByZeAgAA2AhAgAEEVNgIMQQAhEAyaAgsCQCAJIAJHDQBBzAEhEAyaAgtBACEUQQEhF0EBIRZBACEQAkACQAJAAkACQAJAAkACQAJAIAktAABBUGoOCpYBlQEAAQIDBAUGCJcBC0ECIRAMBgtBAyEQDAULQQQhEAwEC0EFIRAMAwtBBiEQDAILQQchEAwBC0EIIRALQQAhF0EAIRZBACEUDI4BC0EJIRBBASEUQQAhF0EAIRYMjQELAkAgCiACRw0AQc4BIRAMmQILIAotAABBLkcNjgEgCkEBaiEJDMoBCyALIAJHDY4BQdABIRAMlwILAkAgCyACRg0AIABBjoCAgAA2AgggACALNgIEQbcBIRAM/gELQdEBIRAMlgILAkAgBCACRw0AQdIBIRAMlgILIAIgBGsgACgCACIQaiEUIAQgEGtBBGohCwNAIAQtAAAgEEH8z4CAAGotAABHDY4BIBBBBEYN6QEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB0gEhEAyVAgsgACAMIAIQrICAgAAiAQ2NASAMIQEMuAELAkAgBCACRw0AQdQBIRAMlAILIAIgBGsgACgCACIQaiEUIAQgEGtBAWohDANAIAQtAAAgEEGB0ICAAGotAABHDY8BIBBBAUYNjgEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB1AEhEAyTAgsCQCAEIAJHDQBB1gEhEAyTAgsgAiAEayAAKAIAIhBqIRQgBCAQa0ECaiELA0AgBC0AACAQQYPQgIAAai0AAEcNjgEgEEECRg2QASAQQQFqIRAgBEEBaiIEIAJHDQALIAAgFDYCAEHWASEQDJICCwJAIAQgAkcNAEHXASEQDJICCwJAAkAgBC0AAEG7f2oOEACPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BAY8BCyAEQQFqIQRBuwEhEAz5AQsgBEEBaiEEQbwBIRAM+AELAkAgBCACRw0AQdgBIRAMkQILIAQtAABByABHDYwBIARBAWohBAzEAQsCQCAEIAJGDQAgAEGQgICAADYCCCAAIAQ2AgRBvgEhEAz3AQtB2QEhEAyPAgsCQCAEIAJHDQBB2gEhEAyPAgsgBC0AAEHIAEYNwwEgAEEBOgAoDLkBCyAAQQI6AC8gACAEIAIQpoCAgAAiEA2NAUHCASEQDPQBCyAALQAoQX9qDgK3AbkBuAELA0ACQCAELQAAQXZqDgQAjgGOAQCOAQsgBEEBaiIEIAJHDQALQd0BIRAMiwILIABBADoALyAALQAtQQRxRQ2EAgsgAEEAOgAvIABBAToANCABIQEMjAELIBBBFUYN2gEgAEEANgIcIAAgATYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAMiAILAkAgACAQIAIQtICAgAAiBA0AIBAhAQyBAgsCQCAEQRVHDQAgAEEDNgIcIAAgEDYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMiAILIABBADYCHCAAIBA2AhQgAEGnjoCAADYCECAAQRI2AgxBACEQDIcCCyAQQRVGDdYBIABBADYCHCAAIAE2AhQgAEHajYCAADYCECAAQRQ2AgxBACEQDIYCCyAAKAIEIRcgAEEANgIEIBAgEadqIhYhASAAIBcgECAWIBQbIhAQtYCAgAAiFEUNjQEgAEEHNgIcIAAgEDYCFCAAIBQ2AgxBACEQDIUCCyAAIAAvATBBgAFyOwEwIAEhAQtBKiEQDOoBCyAQQRVGDdEBIABBADYCHCAAIAE2AhQgAEGDjICAADYCECAAQRM2AgxBACEQDIICCyAQQRVGDc8BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDIECCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyNAQsgAEEMNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDIACCyAQQRVGDcwBIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDP8BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyMAQsgAEENNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDP4BCyAQQRVGDckBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDP0BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyLAQsgAEEONgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPwBCyAAQQA2AhwgACABNgIUIABBwJWAgAA2AhAgAEECNgIMQQAhEAz7AQsgEEEVRg3FASAAQQA2AhwgACABNgIUIABBxoyAgAA2AhAgAEEjNgIMQQAhEAz6AQsgAEEQNgIcIAAgATYCFCAAIBA2AgxBACEQDPkBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQzxAQsgAEERNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPgBCyAQQRVGDcEBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDPcBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyIAQsgAEETNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPYBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQztAQsgAEEUNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPUBCyAQQRVGDb0BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDPQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyGAQsgAEEWNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPMBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQt4CAgAAiBA0AIAFBAWohAQzpAQsgAEEXNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPIBCyAAQQA2AhwgACABNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzxAQtCASERCyAQQQFqIQECQCAAKQMgIhJC//////////8PVg0AIAAgEkIEhiARhDcDICABIQEMhAELIABBADYCHCAAIAE2AhQgAEGtiYCAADYCECAAQQw2AgxBACEQDO8BCyAAQQA2AhwgACAQNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzuAQsgACgCBCEXIABBADYCBCAQIBGnaiIWIQEgACAXIBAgFiAUGyIQELWAgIAAIhRFDXMgAEEFNgIcIAAgEDYCFCAAIBQ2AgxBACEQDO0BCyAAQQA2AhwgACAQNgIUIABBqpyAgAA2AhAgAEEPNgIMQQAhEAzsAQsgACAQIAIQtICAgAAiAQ0BIBAhAQtBDiEQDNEBCwJAIAFBFUcNACAAQQI2AhwgACAQNgIUIABBsJiAgAA2AhAgAEEVNgIMQQAhEAzqAQsgAEEANgIcIAAgEDYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAM6QELIAFBAWohEAJAIAAvATAiAUGAAXFFDQACQCAAIBAgAhC7gICAACIBDQAgECEBDHALIAFBFUcNugEgAEEFNgIcIAAgEDYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAM6QELAkAgAUGgBHFBoARHDQAgAC0ALUECcQ0AIABBADYCHCAAIBA2AhQgAEGWk4CAADYCECAAQQQ2AgxBACEQDOkBCyAAIBAgAhC9gICAABogECEBAkACQAJAAkACQCAAIBAgAhCzgICAAA4WAgEABAQEBAQEBAQEBAQEBAQEBAQEAwQLIABBAToALgsgACAALwEwQcAAcjsBMCAQIQELQSYhEAzRAQsgAEEjNgIcIAAgEDYCFCAAQaWWgIAANgIQIABBFTYCDEEAIRAM6QELIABBADYCHCAAIBA2AhQgAEHVi4CAADYCECAAQRE2AgxBACEQDOgBCyAALQAtQQFxRQ0BQcMBIRAMzgELAkAgDSACRg0AA0ACQCANLQAAQSBGDQAgDSEBDMQBCyANQQFqIg0gAkcNAAtBJSEQDOcBC0ElIRAM5gELIAAoAgQhBCAAQQA2AgQgACAEIA0Qr4CAgAAiBEUNrQEgAEEmNgIcIAAgBDYCDCAAIA1BAWo2AhRBACEQDOUBCyAQQRVGDasBIABBADYCHCAAIAE2AhQgAEH9jYCAADYCECAAQR02AgxBACEQDOQBCyAAQSc2AhwgACABNgIUIAAgEDYCDEEAIRAM4wELIBAhAUEBIRQCQAJAAkACQAJAAkACQCAALQAsQX5qDgcGBQUDAQIABQsgACAALwEwQQhyOwEwDAMLQQIhFAwBC0EEIRQLIABBAToALCAAIAAvATAgFHI7ATALIBAhAQtBKyEQDMoBCyAAQQA2AhwgACAQNgIUIABBq5KAgAA2AhAgAEELNgIMQQAhEAziAQsgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDEEAIRAM4QELIABBADoALCAQIQEMvQELIBAhAUEBIRQCQAJAAkACQAJAIAAtACxBe2oOBAMBAgAFCyAAIAAvATBBCHI7ATAMAwtBAiEUDAELQQQhFAsgAEEBOgAsIAAgAC8BMCAUcjsBMAsgECEBC0EpIRAMxQELIABBADYCHCAAIAE2AhQgAEHwlICAADYCECAAQQM2AgxBACEQDN0BCwJAIA4tAABBDUcNACAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA5BAWohAQx1CyAAQSw2AhwgACABNgIMIAAgDkEBajYCFEEAIRAM3QELIAAtAC1BAXFFDQFBxAEhEAzDAQsCQCAOIAJHDQBBLSEQDNwBCwJAAkADQAJAIA4tAABBdmoOBAIAAAMACyAOQQFqIg4gAkcNAAtBLSEQDN0BCyAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA4hAQx0CyAAQSw2AhwgACAONgIUIAAgATYCDEEAIRAM3AELIAAoAgQhASAAQQA2AgQCQCAAIAEgDhCxgICAACIBDQAgDkEBaiEBDHMLIABBLDYCHCAAIAE2AgwgACAOQQFqNgIUQQAhEAzbAQsgACgCBCEEIABBADYCBCAAIAQgDhCxgICAACIEDaABIA4hAQzOAQsgEEEsRw0BIAFBAWohEEEBIQECQAJAAkACQAJAIAAtACxBe2oOBAMBAgQACyAQIQEMBAtBAiEBDAELQQQhAQsgAEEBOgAsIAAgAC8BMCABcjsBMCAQIQEMAQsgACAALwEwQQhyOwEwIBAhAQtBOSEQDL8BCyAAQQA6ACwgASEBC0E0IRAMvQELIAAgAC8BMEEgcjsBMCABIQEMAgsgACgCBCEEIABBADYCBAJAIAAgBCABELGAgIAAIgQNACABIQEMxwELIABBNzYCHCAAIAE2AhQgACAENgIMQQAhEAzUAQsgAEEIOgAsIAEhAQtBMCEQDLkBCwJAIAAtAChBAUYNACABIQEMBAsgAC0ALUEIcUUNkwEgASEBDAMLIAAtADBBIHENlAFBxQEhEAy3AQsCQCAPIAJGDQACQANAAkAgDy0AAEFQaiIBQf8BcUEKSQ0AIA8hAUE1IRAMugELIAApAyAiEUKZs+bMmbPmzBlWDQEgACARQgp+IhE3AyAgESABrUL/AYMiEkJ/hVYNASAAIBEgEnw3AyAgD0EBaiIPIAJHDQALQTkhEAzRAQsgACgCBCECIABBADYCBCAAIAIgD0EBaiIEELGAgIAAIgINlQEgBCEBDMMBC0E5IRAMzwELAkAgAC8BMCIBQQhxRQ0AIAAtAChBAUcNACAALQAtQQhxRQ2QAQsgACABQff7A3FBgARyOwEwIA8hAQtBNyEQDLQBCyAAIAAvATBBEHI7ATAMqwELIBBBFUYNiwEgAEEANgIcIAAgATYCFCAAQfCOgIAANgIQIABBHDYCDEEAIRAMywELIABBwwA2AhwgACABNgIMIAAgDUEBajYCFEEAIRAMygELAkAgAS0AAEE6Rw0AIAAoAgQhECAAQQA2AgQCQCAAIBAgARCvgICAACIQDQAgAUEBaiEBDGMLIABBwwA2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAMygELIABBADYCHCAAIAE2AhQgAEGxkYCAADYCECAAQQo2AgxBACEQDMkBCyAAQQA2AhwgACABNgIUIABBoJmAgAA2AhAgAEEeNgIMQQAhEAzIAQsgAEEANgIACyAAQYASOwEqIAAgF0EBaiIBIAIQqICAgAAiEA0BIAEhAQtBxwAhEAysAQsgEEEVRw2DASAAQdEANgIcIAAgATYCFCAAQeOXgIAANgIQIABBFTYCDEEAIRAMxAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDF4LIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMwwELIABBADYCHCAAIBQ2AhQgAEHBqICAADYCECAAQQc2AgwgAEEANgIAQQAhEAzCAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMXQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAzBAQtBACEQIABBADYCHCAAIAE2AhQgAEGAkYCAADYCECAAQQk2AgwMwAELIBBBFUYNfSAAQQA2AhwgACABNgIUIABBlI2AgAA2AhAgAEEhNgIMQQAhEAy/AQtBASEWQQAhF0EAIRRBASEQCyAAIBA6ACsgAUEBaiEBAkACQCAALQAtQRBxDQACQAJAAkAgAC0AKg4DAQACBAsgFkUNAwwCCyAUDQEMAgsgF0UNAQsgACgCBCEQIABBADYCBAJAIAAgECABEK2AgIAAIhANACABIQEMXAsgAEHYADYCHCAAIAE2AhQgACAQNgIMQQAhEAy+AQsgACgCBCEEIABBADYCBAJAIAAgBCABEK2AgIAAIgQNACABIQEMrQELIABB2QA2AhwgACABNgIUIAAgBDYCDEEAIRAMvQELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCtgICAACIEDQAgASEBDKsBCyAAQdoANgIcIAAgATYCFCAAIAQ2AgxBACEQDLwBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQypAQsgAEHcADYCHCAAIAE2AhQgACAENgIMQQAhEAy7AQsCQCABLQAAQVBqIhBB/wFxQQpPDQAgACAQOgAqIAFBAWohAUHPACEQDKIBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQynAQsgAEHeADYCHCAAIAE2AhQgACAENgIMQQAhEAy6AQsgAEEANgIAIBdBAWohAQJAIAAtAClBI08NACABIQEMWQsgAEEANgIcIAAgATYCFCAAQdOJgIAANgIQIABBCDYCDEEAIRAMuQELIABBADYCAAtBACEQIABBADYCHCAAIAE2AhQgAEGQs4CAADYCECAAQQg2AgwMtwELIABBADYCACAXQQFqIQECQCAALQApQSFHDQAgASEBDFYLIABBADYCHCAAIAE2AhQgAEGbioCAADYCECAAQQg2AgxBACEQDLYBCyAAQQA2AgAgF0EBaiEBAkAgAC0AKSIQQV1qQQtPDQAgASEBDFULAkAgEEEGSw0AQQEgEHRBygBxRQ0AIAEhAQxVC0EAIRAgAEEANgIcIAAgATYCFCAAQfeJgIAANgIQIABBCDYCDAy1AQsgEEEVRg1xIABBADYCHCAAIAE2AhQgAEG5jYCAADYCECAAQRo2AgxBACEQDLQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxUCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLMBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdIANgIcIAAgATYCFCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8=","base64"),Cn}o(nQ,"requireLlhttpWasm");var In,oQ;function TC(){if(oQ)return In;oQ=1;const{Buffer:e}=de;return In=e.from("AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==","base64"),In}o(TC,"requireLlhttp_simdWasm");var an,iQ;function rs(){if(iQ)return an;iQ=1;const e=["GET","HEAD","POST"],A=new Set(e),t=[101,204,205,304],s=[301,302,303,307,308],r=new Set(s),n=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"],i=new Set(n),E=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"],Q=new Set(E),C=["follow","manual","error"],I=["GET","HEAD","OPTIONS","TRACE"],a=new Set(I),f=["navigate","same-origin","no-cors","cors"],h=["omit","same-origin","include"],L=["default","no-store","reload","no-cache","force-cache","only-if-cached"],c=["content-encoding","content-language","content-location","content-type","content-length"],l=["half"],S=["CONNECT","TRACE","TRACK"],k=new Set(S),w=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""],U=new Set(w);return an={subresource:w,forbiddenMethods:S,requestBodyHeader:c,referrerPolicy:E,requestRedirect:C,requestMode:f,requestCredentials:h,requestCache:L,redirectStatus:s,corsSafeListedMethods:e,nullBodyStatus:t,safeMethods:I,badPorts:n,requestDuplex:l,subresourceSet:U,badPortsSet:i,redirectStatusSet:r,corsSafeListedMethodsSet:A,safeMethodsSet:a,forbiddenMethodsSet:k,referrerPolicySet:Q},an}o(rs,"requireConstants$2");var cn,QQ;function lt(){if(QQ)return cn;QQ=1;const e=Symbol.for("undici.globalOrigin.1");function A(){return globalThis[e]}o(A,"getGlobalOrigin");function t(s){if(s===void 0){Object.defineProperty(globalThis,e,{value:void 0,writable:!0,enumerable:!1,configurable:!1});return}const r=new URL(s);if(r.protocol!=="http:"&&r.protocol!=="https:")throw new TypeError(`Only http & https urls are allowed, received ${r.protocol}`);Object.defineProperty(globalThis,e,{value:r,writable:!0,enumerable:!1,configurable:!1})}return o(t,"setGlobalOrigin"),cn={getGlobalOrigin:A,setGlobalOrigin:t},cn}o(lt,"requireGlobal");var hn,EQ;function _A(){if(EQ)return hn;EQ=1;const e=RA,A=new TextEncoder,t=/^[!#$%&'*+-.^_|~A-Za-z0-9]+$/,s=/[\u000A\u000D\u0009\u0020]/,r=/[\u0009\u000A\u000C\u000D\u0020]/g,n=/[\u0009\u0020-\u007E\u0080-\u00FF]/;function i(g){e(g.protocol==="data:");let d=E(g,!0);d=d.slice(5);const F={position:0};let N=C(",",d,F);const u=N.length;if(N=M(N,!0,!0),F.position>=d.length)return"failure";F.position++;const b=d.slice(u+1);let m=I(b);if(/;(\u0020){0,}base64$/i.test(N)){const v=D(m);if(m=c(v),m==="failure")return"failure";N=N.slice(0,-6),N=N.replace(/(\u0020)+$/,""),N=N.slice(0,-1)}N.startsWith(";")&&(N="text/plain"+N);let T=L(N);return T==="failure"&&(T=L("text/plain;charset=US-ASCII")),{mimeType:T,body:m}}o(i,"dataURLProcessor");function E(g,d=!1){if(!d)return g.href;const F=g.href,N=g.hash.length,u=N===0?F:F.substring(0,F.length-N);return!N&&F.endsWith("#")?u.slice(0,-1):u}o(E,"URLSerializer");function Q(g,d,F){let N="";for(;F.position=48&&g<=57||g>=65&&g<=70||g>=97&&g<=102}o(a,"isHexCharByte");function f(g){return g>=48&&g<=57?g-48:(g&223)-55}o(f,"hexByteToNumber");function h(g){const d=g.length,F=new Uint8Array(d);let N=0;for(let u=0;ug.length)return"failure";d.position++;let N=C(";",g,d);if(N=w(N,!1,!0),N.length===0||!t.test(N))return"failure";const u=F.toLowerCase(),b=N.toLowerCase(),m={type:u,subtype:b,parameters:new Map,essence:`${u}/${b}`};for(;d.positions.test(Z),g,d);let T=Q(Z=>Z!==";"&&Z!=="=",g,d);if(T=T.toLowerCase(),d.positiong.length)break;let v=null;if(g[d.position]==='"')v=l(g,d,!0),C(";",g,d);else if(v=C(";",g,d),v=w(v,!1,!0),v.length===0)continue;T.length!==0&&t.test(T)&&(v.length===0||n.test(v))&&!m.parameters.has(T)&&m.parameters.set(T,v)}return m}o(L,"parseMIMEType");function c(g){g=g.replace(r,"");let d=g.length;if(d%4===0&&g.charCodeAt(d-1)===61&&(--d,g.charCodeAt(d-1)===61&&--d),d%4===1||/[^+/0-9A-Za-z]/.test(g.length===d?g:g.substring(0,d)))return"failure";const F=Buffer.from(g,"base64");return new Uint8Array(F.buffer,F.byteOffset,F.byteLength)}o(c,"forgivingBase64");function l(g,d,F){const N=d.position;let u="";for(e(g[d.position]==='"'),d.position++;u+=Q(m=>m!=='"'&&m!=="\\",g,d),!(d.position>=g.length);){const b=g[d.position];if(d.position++,b==="\\"){if(d.position>=g.length){u+="\\";break}u+=g[d.position],d.position++}else{e(b==='"');break}}return F?u:g.slice(N,d.position)}o(l,"collectAnHTTPQuotedString");function S(g){e(g!=="failure");const{parameters:d,essence:F}=g;let N=F;for(let[u,b]of d.entries())N+=";",N+=u,N+="=",t.test(b)||(b=b.replace(/(\\|")/g,"\\$1"),b='"'+b,b+='"'),N+=b;return N}o(S,"serializeAMimeType");function k(g){return g===13||g===10||g===9||g===32}o(k,"isHTTPWhiteSpace");function w(g,d=!0,F=!0){return B(g,d,F,k)}o(w,"removeHTTPWhitespace");function U(g){return g===13||g===10||g===9||g===12||g===32}o(U,"isASCIIWhitespace");function M(g,d=!0,F=!0){return B(g,d,F,U)}o(M,"removeASCIIWhitespace");function B(g,d,F,N){let u=0,b=g.length-1;if(d)for(;u0&&N(g.charCodeAt(b));)b--;return u===0&&b===g.length-1?g:g.slice(u,b+1)}o(B,"removeChars");function D(g){const d=g.length;if(65535>d)return String.fromCharCode.apply(null,g);let F="",N=0,u=65535;for(;Nd&&(u=d-N),F+=String.fromCharCode.apply(null,g.subarray(N,N+=u));return F}o(D,"isomorphicDecode");function G(g){switch(g.essence){case"application/ecmascript":case"application/javascript":case"application/x-ecmascript":case"application/x-javascript":case"text/ecmascript":case"text/javascript":case"text/javascript1.0":case"text/javascript1.1":case"text/javascript1.2":case"text/javascript1.3":case"text/javascript1.4":case"text/javascript1.5":case"text/jscript":case"text/livescript":case"text/x-ecmascript":case"text/x-javascript":return"text/javascript";case"application/json":case"text/json":return"application/json";case"image/svg+xml":return"image/svg+xml";case"text/xml":case"application/xml":return"application/xml"}return g.subtype.endsWith("+json")?"application/json":g.subtype.endsWith("+xml")?"application/xml":""}return o(G,"minimizeSupportedMimeType"),hn={dataURLProcessor:i,URLSerializer:E,collectASequenceOfCodePoints:Q,collectASequenceOfCodePointsFast:C,stringPercentDecode:I,parseMIMEType:L,collectAnHTTPQuotedString:l,serializeAMimeType:S,removeChars:B,minimizeSupportedMimeType:G,HTTP_TOKEN_CODEPOINTS:t,isomorphicDecode:D},hn}o(_A,"requireDataUrl");var ln,gQ;function vA(){if(gQ)return ln;gQ=1;const{types:e,inspect:A}=PA,{toUSVString:t}=aA,s={};return s.converters={},s.util={},s.errors={},s.errors.exception=function(r){return new TypeError(`${r.header}: ${r.message}`)},s.errors.conversionFailed=function(r){const n=r.types.length===1?"":" one of",i=`${r.argument} could not be converted to${n}: ${r.types.join(", ")}.`;return s.errors.exception({header:r.prefix,message:i})},s.errors.invalidArgument=function(r){return s.errors.exception({header:r.prefix,message:`"${r.value}" is an invalid ${r.type}.`})},s.brandCheck=function(r,n,i=void 0){if(i?.strict!==!1){if(!(r instanceof n))throw new TypeError("Illegal invocation")}else if(r?.[Symbol.toStringTag]!==n.prototype[Symbol.toStringTag])throw new TypeError("Illegal invocation")},s.argumentLengthCheck=function({length:r},n,i){if(rQ)throw s.errors.exception({header:"Integer conversion",message:`Value must be between ${C}-${Q}, got ${I}.`});return I}return!Number.isNaN(I)&&E.clamp===!0?(I=Math.min(Math.max(I,C),Q),Math.floor(I)%2===0?I=Math.floor(I):I=Math.ceil(I),I):Number.isNaN(I)||I===0&&Object.is(0,I)||I===Number.POSITIVE_INFINITY||I===Number.NEGATIVE_INFINITY?0:(I=s.util.IntegerPart(I),I=I%Math.pow(2,n),i==="signed"&&I>=Math.pow(2,n)-1?I-Math.pow(2,n):I)},s.util.IntegerPart=function(r){const n=Math.floor(Math.abs(r));return r<0?-1*n:n},s.util.Stringify=function(r){switch(s.util.Type(r)){case"Symbol":return`Symbol(${r.description})`;case"Object":return A(r);case"String":return`"${r}"`;default:return`${r}`}},s.sequenceConverter=function(r){return(n,i)=>{if(s.util.Type(n)!=="Object")throw s.errors.exception({header:"Sequence",message:`Value of type ${s.util.Type(n)} is not an Object.`});const E=typeof i=="function"?i():n?.[Symbol.iterator]?.(),Q=[];if(E===void 0||typeof E.next!="function")throw s.errors.exception({header:"Sequence",message:"Object is not an iterator."});for(;;){const{done:C,value:I}=E.next();if(C)break;Q.push(r(I))}return Q}},s.recordConverter=function(r,n){return i=>{if(s.util.Type(i)!=="Object")throw s.errors.exception({header:"Record",message:`Value of type ${s.util.Type(i)} is not an Object.`});const E={};if(!e.isProxy(i)){const C=[...Object.getOwnPropertyNames(i),...Object.getOwnPropertySymbols(i)];for(const I of C){const a=r(I),f=n(i[I]);E[a]=f}return E}const Q=Reflect.ownKeys(i);for(const C of Q)if(Reflect.getOwnPropertyDescriptor(i,C)?.enumerable){const a=r(C),f=n(i[C]);E[a]=f}return E}},s.interfaceConverter=function(r){return(n,i={})=>{if(i.strict!==!1&&!(n instanceof r))throw s.errors.exception({header:r.name,message:`Expected ${s.util.Stringify(n)} to be an instance of ${r.name}.`});return n}},s.dictionaryConverter=function(r){return n=>{const i=s.util.Type(n),E={};if(i==="Null"||i==="Undefined")return E;if(i!=="Object")throw s.errors.exception({header:"Dictionary",message:`Expected ${n} to be one of: Null, Undefined, Object.`});for(const Q of r){const{key:C,defaultValue:I,required:a,converter:f}=Q;if(a===!0&&!Object.hasOwn(n,C))throw s.errors.exception({header:"Dictionary",message:`Missing required key "${C}".`});let h=n[C];const L=Object.hasOwn(Q,"defaultValue");if(L&&h!==null&&(h=h??I),a||L||h!==void 0){if(h=f(h),Q.allowedValues&&!Q.allowedValues.includes(h))throw s.errors.exception({header:"Dictionary",message:`${h} is not an accepted type. Expected one of ${Q.allowedValues.join(", ")}.`});E[C]=h}}return E}},s.nullableConverter=function(r){return n=>n===null?n:r(n)},s.converters.DOMString=function(r,n={}){if(r===null&&n.legacyNullToEmptyString)return"";if(typeof r=="symbol")throw new TypeError("Could not convert argument of type symbol to string.");return String(r)},s.converters.ByteString=function(r){const n=s.converters.DOMString(r);for(let i=0;i255)throw new TypeError(`Cannot convert argument to a ByteString because the character at index ${i} has a value of ${n.charCodeAt(i)} which is greater than 255.`);return n},s.converters.USVString=t,s.converters.boolean=function(r){return!!r},s.converters.any=function(r){return r},s.converters["long long"]=function(r){return s.util.ConvertToInt(r,64,"signed")},s.converters["unsigned long long"]=function(r){return s.util.ConvertToInt(r,64,"unsigned")},s.converters["unsigned long"]=function(r){return s.util.ConvertToInt(r,32,"unsigned")},s.converters["unsigned short"]=function(r,n){return s.util.ConvertToInt(r,16,"unsigned",n)},s.converters.ArrayBuffer=function(r,n={}){if(s.util.Type(r)!=="Object"||!e.isAnyArrayBuffer(r))throw s.errors.conversionFailed({prefix:s.util.Stringify(r),argument:s.util.Stringify(r),types:["ArrayBuffer"]});if(n.allowShared===!1&&e.isSharedArrayBuffer(r))throw s.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(r.resizable||r.growable)throw s.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return r},s.converters.TypedArray=function(r,n,i={}){if(s.util.Type(r)!=="Object"||!e.isTypedArray(r)||r.constructor.name!==n.name)throw s.errors.conversionFailed({prefix:`${n.name}`,argument:s.util.Stringify(r),types:[n.name]});if(i.allowShared===!1&&e.isSharedArrayBuffer(r.buffer))throw s.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(r.buffer.resizable||r.buffer.growable)throw s.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return r},s.converters.DataView=function(r,n={}){if(s.util.Type(r)!=="Object"||!e.isDataView(r))throw s.errors.exception({header:"DataView",message:"Object is not a DataView."});if(n.allowShared===!1&&e.isSharedArrayBuffer(r.buffer))throw s.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(r.buffer.resizable||r.buffer.growable)throw s.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return r},s.converters.BufferSource=function(r,n={}){if(e.isAnyArrayBuffer(r))return s.converters.ArrayBuffer(r,{...n,allowShared:!1});if(e.isTypedArray(r))return s.converters.TypedArray(r,r.constructor,{...n,allowShared:!1});if(e.isDataView(r))return s.converters.DataView(r,n,{...n,allowShared:!1});throw new TypeError(`Could not convert ${s.util.Stringify(r)} to a BufferSource.`)},s.converters["sequence"]=s.sequenceConverter(s.converters.ByteString),s.converters["sequence>"]=s.sequenceConverter(s.converters["sequence"]),s.converters["record"]=s.recordConverter(s.converters.ByteString,s.converters.ByteString),ln={webidl:s},ln}o(vA,"requireWebidl");var un,BQ;function Ee(){if(BQ)return un;BQ=1;const{Transform:e}=ue,A=Li,{redirectStatusSet:t,referrerPolicySet:s,badPortsSet:r}=rs(),{getGlobalOrigin:n}=lt(),{collectASequenceOfCodePoints:i,collectAnHTTPQuotedString:E,removeChars:Q,parseMIMEType:C}=_A(),{performance:I}=jg,{isBlobLike:a,ReadableStreamFrom:f,isValidHTTPToken:h}=aA,L=RA,{isUint8Array:c}=Mi,{webidl:l}=vA();let S=[],k;try{k=require("node:crypto");const y=["sha256","sha384","sha512"];S=k.getHashes().filter(Y=>y.includes(Y))}catch{}function w(y){const Y=y.urlList,W=Y.length;return W===0?null:Y[W-1].toString()}o(w,"responseURL");function U(y,Y){if(!t.has(y.status))return null;let W=y.headersList.get("location",!0);return W!==null&&N(W)&&(M(W)||(W=B(W)),W=new URL(W,w(y))),W&&!W.hash&&(W.hash=Y),W}o(U,"responseLocationURL");function M(y){for(const Y of y){const W=Y.charCodeAt(0);if(W>=128||W>=0&&W<=31||W===127)return!1}return!0}o(M,"isValidEncodedURL");function B(y){return Buffer.from(y,"binary").toString("utf8")}o(B,"normalizeBinaryStringToUtf8");function D(y){return y.urlList[y.urlList.length-1]}o(D,"requestCurrentURL");function G(y){const Y=D(y);return Et(Y)&&r.has(Y.port)?"blocked":"allowed"}o(G,"requestBadPort");function g(y){return y instanceof Error||y?.constructor?.name==="Error"||y?.constructor?.name==="DOMException"}o(g,"isErrorLike");function d(y){for(let Y=0;Y=32&&W<=126||W>=128&&W<=255))return!1}return!0}o(d,"isValidReasonPhrase");const F=h;function N(y){return!(y.startsWith(" ")||y.startsWith(" ")||y.endsWith(" ")||y.endsWith(" ")||y.includes("\0")||y.includes("\r")||y.includes(` +`))}o(N,"isValidHeaderValue");function u(y,Y){const{headersList:W}=Y,j=(W.get("referrer-policy",!0)??"").split(",");let sA="";if(j.length>0)for(let R=j.length;R!==0;R--){const O=j[R-1].trim();if(s.has(O)){sA=O;break}}sA!==""&&(y.referrerPolicy=sA)}o(u,"setRequestReferrerPolicyOnRedirect");function b(){return"allowed"}o(b,"crossOriginResourcePolicyCheck");function m(){return"success"}o(m,"corsCheck");function T(){return"success"}o(T,"TAOCheck");function v(y){let Y=null;Y=y.mode,y.headersList.set("sec-fetch-mode",Y,!0)}o(v,"appendFetchMetadata");function Z(y){let Y=y.origin;if(y.responseTainting==="cors"||y.mode==="websocket")Y&&y.headersList.append("origin",Y,!0);else if(y.method!=="GET"&&y.method!=="HEAD"){switch(y.referrerPolicy){case"no-referrer":Y=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":y.origin&&Yt(y.origin)&&!Yt(D(y))&&(Y=null);break;case"same-origin":YA(y,D(y))||(Y=null);break}Y&&y.headersList.append("origin",Y,!0)}}o(Z,"appendRequestOriginHeader");function P(y,Y){return y}o(P,"coarsenTime");function AA(y,Y,W){return!y?.startTime||y.startTime4096&&(j=sA);const R=YA(y,j),O=q(j)&&!q(y.url);switch(Y){case"origin":return sA??V(W,!0);case"unsafe-url":return j;case"same-origin":return R?sA:"no-referrer";case"origin-when-cross-origin":return R?j:sA;case"strict-origin-when-cross-origin":{const H=D(y);return YA(j,H)?j:q(j)&&!q(H)?"no-referrer":sA}case"strict-origin":case"no-referrer-when-downgrade":default:return O?"no-referrer":sA}}o($,"determineRequestsReferrer");function V(y,Y){return L(y instanceof URL),y=new URL(y),y.protocol==="file:"||y.protocol==="about:"||y.protocol==="blank:"?"no-referrer":(y.username="",y.password="",y.hash="",Y&&(y.pathname="",y.search=""),y)}o(V,"stripURLForReferrer");function q(y){if(!(y instanceof URL))return!1;if(y.href==="about:blank"||y.href==="about:srcdoc"||y.protocol==="data:"||y.protocol==="file:")return!0;return Y(y.origin);function Y(W){if(W==null||W==="null")return!1;const j=new URL(W);return!!(j.protocol==="https:"||j.protocol==="wss:"||/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(j.hostname)||j.hostname==="localhost"||j.hostname.includes("localhost.")||j.hostname.endsWith(".localhost"))}}o(q,"isURLPotentiallyTrustworthy");function z(y,Y){if(k===void 0)return!0;const W=QA(Y);if(W==="no metadata"||W.length===0)return!0;const j=CA(W),sA=IA(W,j);for(const R of sA){const O=R.algo,H=R.hash;let J=k.createHash(O).update(y).digest("base64");if(J[J.length-1]==="="&&(J[J.length-2]==="="?J=J.slice(0,-2):J=J.slice(0,-1)),nA(J,H))return!0}return!1}o(z,"bytesMatch");const rA=/(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function QA(y){const Y=[];let W=!0;for(const j of y.split(" ")){W=!1;const sA=rA.exec(j);if(sA===null||sA.groups===void 0||sA.groups.algo===void 0)continue;const R=sA.groups.algo.toLowerCase();S.includes(R)&&Y.push(sA.groups)}return W===!0?"no metadata":Y}o(QA,"parseMetadata");function CA(y){let Y=y[0].algo;if(Y[3]==="5")return Y;for(let W=1;W{y=j,Y=sA}),resolve:y,reject:Y}}o(nt,"createDeferredPromise");function TA(y){return y.controller.state==="aborted"}o(TA,"isAborted");function ot(y){return y.controller.state==="aborted"||y.controller.state==="terminated"}o(ot,"isCancelled");const ce={delete:"DELETE",DELETE:"DELETE",get:"GET",GET:"GET",head:"HEAD",HEAD:"HEAD",options:"OPTIONS",OPTIONS:"OPTIONS",post:"POST",POST:"POST",put:"PUT",PUT:"PUT"},Xe={...ce,patch:"patch",PATCH:"PATCH"};Object.setPrototypeOf(ce,null),Object.setPrototypeOf(Xe,null);function jA(y){return ce[y.toLowerCase()]??y}o(jA,"normalizeMethod");function he(y){const Y=JSON.stringify(y);if(Y===void 0)throw new TypeError("Value is not JSON serializable");return L(typeof Y=="string"),Y}o(he,"serializeJavascriptValueToJSONString");const ee=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function le(y,Y,W=0,j=1){var R,O,H;const J=class J{constructor(x,gA){hA(this,R,void 0);hA(this,O,void 0);hA(this,H,void 0);BA(this,R,x),BA(this,O,gA),BA(this,H,0)}next(){if(typeof this!="object"||this===null||!bi(R,this))throw new TypeError(`'next' called on an object that does not implement interface ${y} Iterator.`);const x=p(this,H),gA=p(this,R)[Y],yA=gA.length;if(x>=yA)return{value:void 0,done:!0};const{[W]:wA,[j]:dA}=gA[x];BA(this,H,x+1);let bA;switch(p(this,O)){case"key":bA=wA;break;case"value":bA=dA;break;case"key+value":bA=[wA,dA];break}return{value:bA,done:!1}}};R=new WeakMap,O=new WeakMap,H=new WeakMap,o(J,"FastIterableIterator");let sA=J;return delete sA.prototype.constructor,Object.setPrototypeOf(sA.prototype,ee),Object.defineProperties(sA.prototype,{[Symbol.toStringTag]:{writable:!1,enumerable:!1,configurable:!0,value:`${y} Iterator`},next:{writable:!0,enumerable:!0,configurable:!0}}),function(_,x){return new sA(_,x)}}o(le,"createIterator");function Ke(y,Y,W,j=0,sA=1){const R=le(y,W,j,sA),O={keys:{writable:!0,enumerable:!0,configurable:!0,value:o(function(){return l.brandCheck(this,Y),R(this,"key")},"keys")},values:{writable:!0,enumerable:!0,configurable:!0,value:o(function(){return l.brandCheck(this,Y),R(this,"value")},"values")},entries:{writable:!0,enumerable:!0,configurable:!0,value:o(function(){return l.brandCheck(this,Y),R(this,"key+value")},"entries")},forEach:{writable:!0,enumerable:!0,configurable:!0,value:o(function(J,_=globalThis){if(l.brandCheck(this,Y),l.argumentLengthCheck(arguments,1,{header:`${y}.forEach`}),typeof J!="function")throw new TypeError(`Failed to execute 'forEach' on '${y}': parameter 1 is not of type 'Function'.`);for(const{0:x,1:gA}of R(this,"key+value"))J.call(_,gA,x,this)},"forEach")}};return Object.defineProperties(Y.prototype,{...O,[Symbol.iterator]:{writable:!0,enumerable:!1,configurable:!0,value:O.entries.value}})}o(Ke,"iteratorMixin");async function it(y,Y,W){const j=Y,sA=W;let R;try{R=y.stream.getReader()}catch(O){sA(O);return}try{const O=await Qt(R);j(O)}catch(O){sA(O)}}o(it,"fullyReadBody");function lA(y){return y instanceof ReadableStream||y[Symbol.toStringTag]==="ReadableStream"&&typeof y.tee=="function"}o(lA,"isReadableStreamLike");function DA(y){try{y.close(),y.byobRequest?.respond(0)}catch(Y){if(!Y.message.includes("Controller is already closed")&&!Y.message.includes("ReadableStream is already closed"))throw Y}}o(DA,"readableStreamClose");function $A(y){for(let Y=0;YJ===" "||J===" ",W,j),W.charCodeAt(j.position)!==61)return"failure";j.position++,Y&&i(J=>J===" "||J===" ",W,j);const sA=i(J=>{const _=J.charCodeAt(0);return _>=48&&_<=57},W,j),R=sA.length?Number(sA):null;if(Y&&i(J=>J===" "||J===" ",W,j),W.charCodeAt(j.position)!==45)return"failure";j.position++,Y&&i(J=>J===" "||J===" ",W,j);const O=i(J=>{const _=J.charCodeAt(0);return _>=48&&_<=57},W,j),H=O.length?Number(O):null;return j.positionH?"failure":{rangeStartValue:R,rangeEndValue:H}}o(gt,"simpleRangeHeaderValue");function xs(y,Y,W){let j="bytes ";return j+=$A(`${y}`),j+="-",j+=$A(`${Y}`),j+="/",j+=$A(`${W}`),j}o(xs,"buildContentRange");const ze=class ze extends e{_transform(Y,W,j){if(!this._inflateStream){if(Y.length===0){j();return}this._inflateStream=(Y[0]&15)===8?A.createInflate():A.createInflateRaw(),this._inflateStream.on("data",this.push.bind(this)),this._inflateStream.on("end",()=>this.push(null)),this._inflateStream.on("error",sA=>this.destroy(sA))}this._inflateStream.write(Y,W,j)}_final(Y){this._inflateStream&&(this._inflateStream.end(),this._inflateStream=null),Y()}};o(ze,"InflateStream");let Bt=ze;function vr(){return new Bt}o(vr,"createInflate");function Jt(y){let Y=null,W=null,j=null;const sA=Gt("content-type",y);if(sA===null)return"failure";for(const R of sA){const O=C(R);O==="failure"||O.essence==="*/*"||(j=O,j.essence!==W?(Y=null,j.parameters.has("charset")&&(Y=j.parameters.get("charset")),W=j.essence):!j.parameters.has("charset")&&Y!==null&&j.parameters.set("charset",Y))}return j??"failure"}o(Jt,"extractMimeType");function xr(y){const Y=y,W={position:0},j=[];let sA="";for(;W.positionR!=='"'&&R!==",",Y,W),W.positionR===9||R===32),j.push(sA),sA=""}return j}o(xr,"gettingDecodingSplitting");function Gt(y,Y){const W=Y.get(y,!0);return W===null?null:xr(W)}o(Gt,"getDecodeSplit");const Wr=new TextDecoder;function Ws(y){return y.length===0?"":(y[0]===239&&y[1]===187&&y[2]===191&&(y=y.subarray(3)),Wr.decode(y))}return o(Ws,"utf8DecodeBytes"),un={isAborted:TA,isCancelled:ot,createDeferredPromise:nt,ReadableStreamFrom:f,tryUpgradeRequestToAPotentiallyTrustworthyURL:eA,clampAndCoarsenConnectionTimingInfo:AA,coarsenedSharedCurrentTime:K,determineRequestsReferrer:$,makePolicyContainer:uA,clonePolicyContainer:X,appendFetchMetadata:v,appendRequestOriginHeader:Z,TAOCheck:T,corsCheck:m,crossOriginResourcePolicyCheck:b,createOpaqueTimingInfo:tA,setRequestReferrerPolicyOnRedirect:u,isValidHTTPToken:h,requestBadPort:G,requestCurrentURL:D,responseURL:w,responseLocationURL:U,isBlobLike:a,isURLPotentiallyTrustworthy:q,isValidReasonPhrase:d,sameOrigin:YA,normalizeMethod:jA,serializeJavascriptValueToJSONString:he,iteratorMixin:Ke,createIterator:le,isValidHeaderName:F,isValidHeaderValue:N,isErrorLike:g,fullyReadBody:it,bytesMatch:z,isReadableStreamLike:lA,readableStreamClose:DA,isomorphicEncode:$A,urlIsLocal:vs,urlHasHttpsScheme:Yt,urlIsHttpHttpsScheme:Et,readAllBytes:Qt,normalizeMethodRecord:Xe,simpleRangeHeaderValue:gt,buildContentRange:xs,parseMetadata:QA,createInflate:vr,extractMimeType:Jt,getDecodeSplit:Gt,utf8DecodeBytes:Ws},un}o(Ee,"requireUtil$5");var dn,CQ;function Te(){return CQ||(CQ=1,dn={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kGuard:Symbol("guard"),kRealm:Symbol("realm"),kDispatcher:Symbol("dispatcher")}),dn}o(Te,"requireSymbols$3");var fn,IQ;function Dn(){if(IQ)return fn;IQ=1;const{EOL:e}=$g,{Blob:A,File:t}=de,{types:s}=PA,{kState:r}=Te(),{isBlobLike:n}=Ee(),{webidl:i}=vA(),{parseMIMEType:E,serializeAMimeType:Q}=_A(),{kEnumerableProperty:C}=aA,I=new TextEncoder,l=class l extends A{constructor(w,U,M={}){i.argumentLengthCheck(arguments,2,{header:"File constructor"}),w=i.converters["sequence"](w),U=i.converters.USVString(U),M=i.converters.FilePropertyBag(M);const B=U;let D=M.type,G;A:{if(D){if(D=E(D),D==="failure"){D="";break A}D=Q(D).toLowerCase()}G=M.lastModified}super(h(w,M),{type:D}),this[r]={name:B,lastModified:G,type:D}}get name(){return i.brandCheck(this,l),this[r].name}get lastModified(){return i.brandCheck(this,l),this[r].lastModified}get type(){return i.brandCheck(this,l),this[r].type}};o(l,"File");let a=l;const S=class S{constructor(w,U,M={}){const B=U,D=M.type,G=M.lastModified??Date.now();this[r]={blobLike:w,name:B,type:D,lastModified:G}}stream(...w){return i.brandCheck(this,S),this[r].blobLike.stream(...w)}arrayBuffer(...w){return i.brandCheck(this,S),this[r].blobLike.arrayBuffer(...w)}slice(...w){return i.brandCheck(this,S),this[r].blobLike.slice(...w)}text(...w){return i.brandCheck(this,S),this[r].blobLike.text(...w)}get size(){return i.brandCheck(this,S),this[r].blobLike.size}get type(){return i.brandCheck(this,S),this[r].blobLike.type}get name(){return i.brandCheck(this,S),this[r].name}get lastModified(){return i.brandCheck(this,S),this[r].lastModified}get[Symbol.toStringTag](){return"File"}};o(S,"FileLike");let f=S;Object.defineProperties(a.prototype,{[Symbol.toStringTag]:{value:"File",configurable:!0},name:C,lastModified:C}),i.converters.Blob=i.interfaceConverter(A),i.converters.BlobPart=function(k,w){if(i.util.Type(k)==="Object"){if(n(k))return i.converters.Blob(k,{strict:!1});if(ArrayBuffer.isView(k)||s.isAnyArrayBuffer(k))return i.converters.BufferSource(k,w)}return i.converters.USVString(k,w)},i.converters["sequence"]=i.sequenceConverter(i.converters.BlobPart),i.converters.FilePropertyBag=i.dictionaryConverter([{key:"lastModified",converter:i.converters["long long"],get defaultValue(){return Date.now()}},{key:"type",converter:i.converters.DOMString,defaultValue:""},{key:"endings",converter:k=>(k=i.converters.DOMString(k),k=k.toLowerCase(),k!=="native"&&(k="transparent"),k),defaultValue:"transparent"}]);function h(k,w){const U=[];for(const M of k)if(typeof M=="string"){let B=M;w.endings==="native"&&(B=L(B)),U.push(I.encode(B))}else ArrayBuffer.isView(M)||s.isArrayBuffer(M)?M.buffer?U.push(new Uint8Array(M.buffer,M.byteOffset,M.byteLength)):U.push(new Uint8Array(M)):n(M)&&U.push(M);return U}o(h,"processBlobParts");function L(k){return k.replace(/\r?\n/g,e)}o(L,"convertLineEndingsNative");function c(k){return t&&k instanceof t||k instanceof a||k&&(typeof k.stream=="function"||typeof k.arrayBuffer=="function")&&k[Symbol.toStringTag]==="File"}return o(c,"isFileLike"),fn={File:a,FileLike:f,isFileLike:c},fn}o(Dn,"requireFile");var yn,aQ;function ss(){if(aQ)return yn;aQ=1;const{isBlobLike:e,iteratorMixin:A}=Ee(),{kState:t}=Te(),{kEnumerableProperty:s}=aA,{File:r,FileLike:n,isFileLike:i}=Dn(),{webidl:E}=vA(),{File:Q}=de,C=PA,I=Q??r,h=class h{constructor(c){if(c!==void 0)throw E.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]});this[t]=[]}append(c,l,S=void 0){if(E.brandCheck(this,h),E.argumentLengthCheck(arguments,2,{header:"FormData.append"}),arguments.length===3&&!e(l))throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'");c=E.converters.USVString(c),l=e(l)?E.converters.Blob(l,{strict:!1}):E.converters.USVString(l),S=arguments.length===3?E.converters.USVString(S):void 0;const k=f(c,l,S);this[t].push(k)}delete(c){E.brandCheck(this,h),E.argumentLengthCheck(arguments,1,{header:"FormData.delete"}),c=E.converters.USVString(c),this[t]=this[t].filter(l=>l.name!==c)}get(c){E.brandCheck(this,h),E.argumentLengthCheck(arguments,1,{header:"FormData.get"}),c=E.converters.USVString(c);const l=this[t].findIndex(S=>S.name===c);return l===-1?null:this[t][l].value}getAll(c){return E.brandCheck(this,h),E.argumentLengthCheck(arguments,1,{header:"FormData.getAll"}),c=E.converters.USVString(c),this[t].filter(l=>l.name===c).map(l=>l.value)}has(c){return E.brandCheck(this,h),E.argumentLengthCheck(arguments,1,{header:"FormData.has"}),c=E.converters.USVString(c),this[t].findIndex(l=>l.name===c)!==-1}set(c,l,S=void 0){if(E.brandCheck(this,h),E.argumentLengthCheck(arguments,2,{header:"FormData.set"}),arguments.length===3&&!e(l))throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'");c=E.converters.USVString(c),l=e(l)?E.converters.Blob(l,{strict:!1}):E.converters.USVString(l),S=arguments.length===3?E.converters.USVString(S):void 0;const k=f(c,l,S),w=this[t].findIndex(U=>U.name===c);w!==-1?this[t]=[...this[t].slice(0,w),k,...this[t].slice(w+1).filter(U=>U.name!==c)]:this[t].push(k)}[C.inspect.custom](c,l){const S=this[t].reduce((w,U)=>(w[U.name]?Array.isArray(w[U.name])?w[U.name].push(U.value):w[U.name]=[w[U.name],U.value]:w[U.name]=U.value,w),{__proto__:null});l.depth??(l.depth=c),l.colors??(l.colors=!0);const k=C.formatWithOptions(l,S);return`FormData ${k.slice(k.indexOf("]")+2)}`}};o(h,"FormData");let a=h;A("FormData",a,t,"name","value"),Object.defineProperties(a.prototype,{append:s,delete:s,get:s,getAll:s,has:s,set:s,[Symbol.toStringTag]:{value:"FormData",configurable:!0}});function f(L,c,l){if(typeof c!="string"){if(i(c)||(c=c instanceof Blob?new I([c],"blob",{type:c.type}):new n(c,"blob",{type:c.type})),l!==void 0){const S={type:c.type,lastModified:c.lastModified};c=Q&&c instanceof Q||c instanceof r?new I([c],l,S):new n(c,l,S)}}return{name:L,value:c}}return o(f,"makeEntry"),yn={FormData:a,makeEntry:f},yn}o(ss,"requireFormdata");var Rn,cQ;function HC(){if(cQ)return Rn;cQ=1;const{toUSVString:e,isUSVString:A,bufferToLowerCasedHeaderName:t}=aA,{utf8DecodeBytes:s}=Ee(),{HTTP_TOKEN_CODEPOINTS:r,isomorphicDecode:n}=_A(),{isFileLike:i,File:E}=Dn(),{makeEntry:Q}=ss(),C=RA,{File:I}=de,a=globalThis.File??I??E,f=Buffer.from('form-data; name="'),h=Buffer.from("; filename"),L=Buffer.from("--"),c=Buffer.from(`--\r +`);function l(g){for(let d=0;d70)return!1;for(let F=0;F=48&&N<=57||N>=65&&N<=90||N>=97&&N<=122||N===39||N===45||N===95))return!1}return!0}o(S,"validateBoundary");function k(g,d="utf-8",F=!1){return F?g=e(g):(C(A(g)),g=g.replace(/\r\n?|\r?\n/g,`\r +`)),C(Buffer.isEncoding(d)),g=g.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),Buffer.from(g,d)}o(k,"escapeFormDataName");function w(g,d){C(d!=="failure"&&d.essence==="multipart/form-data");const F=d.parameters.get("boundary");if(F===void 0)return"failure";const N=Buffer.from(`--${F}`,"utf8"),u=[],b={position:0};for(g[0]===13&&g[1]===10&&(b.position+=2);;){if(g.subarray(b.position,b.position+N.length).equals(N))b.position+=N.length;else return"failure";if(b.position===g.length-2&&G(g,L,b)||b.position===g.length-4&&G(g,c,b))return u;if(g[b.position]!==13||g[b.position+1]!==10)return"failure";b.position+=2;const m=U(g,b);if(m==="failure")return"failure";let{name:T,filename:v,contentType:Z,encoding:P}=m;b.position+=2;let AA;{const tA=g.indexOf(N.subarray(2),b.position);if(tA===-1)return"failure";AA=g.subarray(b.position,tA-4),b.position+=AA.length,P==="base64"&&(AA=Buffer.from(AA.toString(),"base64"))}if(g[b.position]!==13||g[b.position+1]!==10)return"failure";b.position+=2;let K;v!==null?(Z??(Z="text/plain"),l(Z)||(Z=""),K=new a([AA],v,{type:Z})):K=s(Buffer.from(AA)),C(A(T)),C(typeof K=="string"&&A(K)||i(K)),u.push(Q(T,K,v))}}o(w,"multipartFormDataParser");function U(g,d){let F=null,N=null,u=null,b=null;for(;;){if(g[d.position]===13&&g[d.position+1]===10)return F===null?"failure":{name:F,filename:N,contentType:u,encoding:b};let m=B(T=>T!==10&&T!==13&&T!==58,g,d);if(m=D(m,!0,!0,T=>T===9||T===32),!r.test(m.toString())||g[d.position]!==58)return"failure";switch(d.position++,B(T=>T===32||T===9,g,d),t(m)){case"content-disposition":{if(F=N=null,!G(g,f,d)||(d.position+=17,F=M(g,d),F===null))return"failure";if(G(g,h,d)){let T=d.position+h.length;if(g[T]===42&&(d.position+=1,T+=1),g[T]!==61||g[T+1]!==34||(d.position+=12,N=M(g,d),N===null))return"failure"}break}case"content-type":{let T=B(v=>v!==10&&v!==13,g,d);T=D(T,!1,!0,v=>v===9||v===32),u=n(T);break}case"content-transfer-encoding":{let T=B(v=>v!==10&&v!==13,g,d);T=D(T,!1,!0,v=>v===9||v===32),b=n(T);break}default:B(T=>T!==10&&T!==13,g,d)}if(g[d.position]!==13&&g[d.position+1]!==10)return"failure";d.position+=2}}o(U,"parseMultipartFormDataHeaders");function M(g,d){C(g[d.position-1]===34);let F=B(N=>N!==10&&N!==13&&N!==34,g,d);return g[d.position]!==34?null:(d.position++,F=new TextDecoder().decode(F).replace(/%0A/ig,` +`).replace(/%0D/ig,"\r").replace(/%22/g,'"'),F)}o(M,"parseMultipartFormDataName");function B(g,d,F){let N=F.position;for(;N0&&N(g[b]);)b--;return u===0&&b===g.length-1?g:g.subarray(u,b+1)}o(D,"removeChars");function G(g,d,F){if(g.lengthr(K))},start(){},type:"bytes"}),h(s(m));let T=null,v=null,Z=null,P=null;if(typeof u=="string")v=u,P="text/plain;charset=UTF-8";else if(u instanceof URLSearchParams)v=u.toString(),P="application/x-www-form-urlencoded;charset=UTF-8";else if(c(u))v=new Uint8Array(u.slice());else if(ArrayBuffer.isView(u))v=new Uint8Array(u.buffer.slice(u.byteOffset,u.byteOffset+u.byteLength));else if(e.isFormDataLike(u)){const K=`----formdata-undici-0${`${Math.floor(Math.random()*1e11)}`.padStart(11,"0")}`,tA=`--${K}\r +Content-Disposition: form-data`;/*! formdata-polyfill. MIT License. Jimmy Wärting */const uA=o(rA=>rA.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),"escape"),X=o(rA=>rA.replace(/\r?\n|\r/g,`\r +`),"normalizeLinefeeds"),$=[],V=new Uint8Array([13,10]);Z=0;let q=!1;for(const[rA,QA]of u)if(typeof QA=="string"){const CA=k.encode(tA+`; name="${uA(X(rA))}"\r +\r +${X(QA)}\r +`);$.push(CA),Z+=CA.byteLength}else{const CA=k.encode(`${tA}; name="${uA(X(rA))}"`+(QA.name?`; filename="${uA(QA.name)}"`:"")+`\r +Content-Type: ${QA.type||"application/octet-stream"}\r +\r +`);$.push(CA,QA,V),typeof QA.size=="number"?Z+=CA.byteLength+QA.size+V.byteLength:q=!0}const z=k.encode(`--${K}--`);$.push(z),Z+=z.byteLength,q&&(Z=null),v=u,T=o(async function*(){for(const rA of $)rA.stream?yield*rA.stream():yield rA},"action"),P=`multipart/form-data; boundary=${K}`}else if(t(u))v=u,Z=u.size,u.type&&(P=u.type);else if(typeof u[Symbol.asyncIterator]=="function"){if(b)throw new TypeError("keepalive");if(e.isDisturbed(u)||u.locked)throw new TypeError("Response body object should not be disturbed or locked");m=u instanceof ReadableStream?u:A(u)}if((typeof v=="string"||e.isBuffer(v))&&(Z=Buffer.byteLength(v)),T!=null){let K;m=new ReadableStream({async start(){K=T(u)[Symbol.asyncIterator]()},async pull(tA){const{value:uA,done:X}=await K.next();if(X)queueMicrotask(()=>{tA.close(),tA.byobRequest?.respond(0)});else if(!L(m)){const $=new Uint8Array(uA);$.byteLength&&tA.enqueue($)}return tA.desiredSize>0},async cancel(tA){await K.return()},type:"bytes"})}return[{stream:m,source:v,length:Z},P]}o(w,"extractBody");function U(u,b=!1){return u instanceof ReadableStream&&(h(!e.isDisturbed(u),"The body has already been consumed."),h(!u.locked,"The stream is locked.")),w(u,b)}o(U,"safelyExtractBody");function M(u){const[b,m]=u.stream.tee();return u.stream=b,{stream:m,length:u.length,source:u.source}}o(M,"cloneBody");function B(u){if(u.aborted)throw new DOMException("The operation was aborted.","AbortError")}o(B,"throwIfAborted");function D(u){return{blob(){return g(this,m=>{let T=N(this);return T===null?T="":T&&(T=l(T)),new f([m],{type:T})},u)},arrayBuffer(){return g(this,m=>new Uint8Array(m).buffer,u)},text(){return g(this,Q,u)},json(){return g(this,F,u)},formData(){return g(this,m=>{const T=N(this);if(T!==null)switch(T.essence){case"multipart/form-data":{const v=S(m,T);if(v==="failure")throw new TypeError("Failed to parse body as FormData.");const Z=new C;return Z[I]=v,Z}case"application/x-www-form-urlencoded":{const v=new URLSearchParams(m.toString()),Z=new C;for(const[P,AA]of v)Z.append(P,AA);return Z}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')},u)}}}o(D,"bodyMixinMethods");function G(u){Object.assign(u.prototype,D(u))}o(G,"mixinBody");async function g(u,b,m){if(a.brandCheck(u,m),B(u[I]),d(u[I].body))throw new TypeError("Body is unusable");const T=n(),v=o(P=>T.reject(P),"errorSteps"),Z=o(P=>{try{T.resolve(b(P))}catch(AA){v(AA)}},"successSteps");return u[I].body==null?(Z(new Uint8Array),T.promise):(await i(u[I].body,Z,v),T.promise)}o(g,"consumeBody");function d(u){return u!=null&&(u.stream.locked||e.isDisturbed(u.stream))}o(d,"bodyUnusable");function F(u){return JSON.parse(Q(u))}o(F,"parseJSONFromBytes");function N(u){const b=u[I].headersList,m=E(b);return m==="failure"?null:m}return o(N,"bodyMimeType"),wn={extractBody:w,safelyExtractBody:U,cloneBody:M,mixinBody:G},wn}o(ns,"requireBody");const iA=RA,EA=aA,{channels:lQ}=Vt,kn=JC,{RequestContentLengthMismatchError:At,ResponseContentLengthMismatchError:VC,RequestAbortedError:uQ,HeadersTimeoutError:vC,HeadersOverflowError:xC,SocketError:os,InformationalError:ut,BodyTimeoutError:WC,HTTPParserError:qC,ResponseExceededMaxSizeError:OC}=kA,{kUrl:dQ,kReset:ZA,kClient:Nn,kParser:FA,kBlocking:xt,kRunning:xA,kPending:PC,kSize:fQ,kWriting:He,kQueue:ge,kNoRef:Wt,kKeepAliveDefaultTimeout:ZC,kHostHeader:XC,kPendingIdx:KC,kRunningIdx:se,kError:ne,kPipelining:is,kSocket:dt,kKeepAliveTimeoutValue:Qs,kMaxHeadersSize:Fn,kKeepAliveMaxTimeout:zC,kKeepAliveTimeoutThreshold:jC,kHeadersTimeout:$C,kBodyTimeout:_C,kStrictContentLength:pn,kMaxRequests:DQ,kCounter:AI,kMaxResponseSize:eI,kOnError:tI,kResume:Ve,kHTTPContext:yQ}=LA,De=rQ,rI=Buffer.alloc(0),Es=Buffer[Symbol.species],gs=EA.addListener,sI=EA.removeAllListeners;let Sn;async function nI(){const e=process.env.JEST_WORKER_ID?nQ():void 0;let A;try{A=await WebAssembly.compile(TC())}catch{A=await WebAssembly.compile(e||nQ())}return await WebAssembly.instantiate(A,{env:{wasm_on_url:(t,s,r)=>0,wasm_on_status:(t,s,r)=>{iA.strictEqual(GA.ptr,t);const n=s-Re+ye.byteOffset;return GA.onStatus(new Es(ye.buffer,n,r))||0},wasm_on_message_begin:t=>(iA.strictEqual(GA.ptr,t),GA.onMessageBegin()||0),wasm_on_header_field:(t,s,r)=>{iA.strictEqual(GA.ptr,t);const n=s-Re+ye.byteOffset;return GA.onHeaderField(new Es(ye.buffer,n,r))||0},wasm_on_header_value:(t,s,r)=>{iA.strictEqual(GA.ptr,t);const n=s-Re+ye.byteOffset;return GA.onHeaderValue(new Es(ye.buffer,n,r))||0},wasm_on_headers_complete:(t,s,r,n)=>(iA.strictEqual(GA.ptr,t),GA.onHeadersComplete(s,!!r,!!n)||0),wasm_on_body:(t,s,r)=>{iA.strictEqual(GA.ptr,t);const n=s-Re+ye.byteOffset;return GA.onBody(new Es(ye.buffer,n,r))||0},wasm_on_message_complete:t=>(iA.strictEqual(GA.ptr,t),GA.onMessageComplete()||0)}})}o(nI,"lazyllhttp");let Un=null,bn=nI();bn.catch();let GA=null,ye=null,Bs=0,Re=null;const ft=1,Cs=2,mn=3,ai=class ai{constructor(A,t,{exports:s}){iA(Number.isFinite(A[Fn])&&A[Fn]>0),this.llhttp=s,this.ptr=this.llhttp.llhttp_alloc(De.TYPE.RESPONSE),this.client=A,this.socket=t,this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.statusCode=null,this.statusText="",this.upgrade=!1,this.headers=[],this.headersSize=0,this.headersMaxSize=A[Fn],this.shouldKeepAlive=!1,this.paused=!1,this.resume=this.resume.bind(this),this.bytesRead=0,this.keepAlive="",this.contentLength="",this.connection="",this.maxResponseSize=A[eI]}setTimeout(A,t){this.timeoutType=t,A!==this.timeoutValue?(kn.clearTimeout(this.timeout),A?(this.timeout=kn.setTimeout(oI,A,this),this.timeout.unref&&this.timeout.unref()):this.timeout=null,this.timeoutValue=A):this.timeout&&this.timeout.refresh&&this.timeout.refresh()}resume(){this.socket.destroyed||!this.paused||(iA(this.ptr!=null),iA(GA==null),this.llhttp.llhttp_resume(this.ptr),iA(this.timeoutType===Cs),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.paused=!1,this.execute(this.socket.read()||rI),this.readMore())}readMore(){for(;!this.paused&&this.ptr;){const A=this.socket.read();if(A===null)break;this.execute(A)}}execute(A){iA(this.ptr!=null),iA(GA==null),iA(!this.paused);const{socket:t,llhttp:s}=this;A.length>Bs&&(Re&&s.free(Re),Bs=Math.ceil(A.length/4096)*4096,Re=s.malloc(Bs)),new Uint8Array(s.memory.buffer,Re,Bs).set(A);try{let r;try{ye=A,GA=this,r=s.llhttp_execute(this.ptr,Re,A.length)}catch(i){throw i}finally{GA=null,ye=null}const n=s.llhttp_get_error_pos(this.ptr)-Re;if(r===De.ERROR.PAUSED_UPGRADE)this.onUpgrade(A.slice(n));else if(r===De.ERROR.PAUSED)this.paused=!0,t.unshift(A.slice(n));else if(r!==De.ERROR.OK){const i=s.llhttp_get_error_reason(this.ptr);let E="";if(i){const Q=new Uint8Array(s.memory.buffer,i).indexOf(0);E="Response does not match the HTTP/1.1 protocol ("+Buffer.from(s.memory.buffer,i,Q).toString()+")"}throw new qC(E,De.ERROR[r],A.slice(n))}}catch(r){EA.destroy(t,r)}}destroy(){iA(this.ptr!=null),iA(GA==null),this.llhttp.llhttp_free(this.ptr),this.ptr=null,kn.clearTimeout(this.timeout),this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.paused=!1}onStatus(A){this.statusText=A.toString()}onMessageBegin(){const{socket:A,client:t}=this;if(A.destroyed)return-1;const s=t[ge][t[se]];if(!s)return-1;s.onResponseStarted()}onHeaderField(A){const t=this.headers.length;t&1?this.headers[t-1]=Buffer.concat([this.headers[t-1],A]):this.headers.push(A),this.trackHeader(A.length)}onHeaderValue(A){let t=this.headers.length;(t&1)===1?(this.headers.push(A),t+=1):this.headers[t-1]=Buffer.concat([this.headers[t-1],A]);const s=this.headers[t-2];if(s.length===10){const r=EA.bufferToLowerCasedHeaderName(s);r==="keep-alive"?this.keepAlive+=A.toString():r==="connection"&&(this.connection+=A.toString())}else s.length===14&&EA.bufferToLowerCasedHeaderName(s)==="content-length"&&(this.contentLength+=A.toString());this.trackHeader(A.length)}trackHeader(A){this.headersSize+=A,this.headersSize>=this.headersMaxSize&&EA.destroy(this.socket,new xC)}onUpgrade(A){const{upgrade:t,client:s,socket:r,headers:n,statusCode:i}=this;iA(t);const E=s[ge][s[se]];iA(E),iA(!r.destroyed),iA(r===s[dt]),iA(!this.paused),iA(E.upgrade||E.method==="CONNECT"),this.statusCode=null,this.statusText="",this.shouldKeepAlive=null,iA(this.headers.length%2===0),this.headers=[],this.headersSize=0,r.unshift(A),r[FA].destroy(),r[FA]=null,r[Nn]=null,r[ne]=null,sI(r),s[dt]=null,s[yQ]=null,s[ge][s[se]++]=null,s.emit("disconnect",s[dQ],[s],new ut("upgrade"));try{E.onUpgrade(i,n,r)}catch(Q){EA.destroy(r,Q)}s[Ve]()}onHeadersComplete(A,t,s){const{client:r,socket:n,headers:i,statusText:E}=this;if(n.destroyed)return-1;const Q=r[ge][r[se]];if(!Q)return-1;if(iA(!this.upgrade),iA(this.statusCode<200),A===100)return EA.destroy(n,new os("bad response",EA.getSocketInfo(n))),-1;if(t&&!Q.upgrade)return EA.destroy(n,new os("bad upgrade",EA.getSocketInfo(n))),-1;if(iA.strictEqual(this.timeoutType,ft),this.statusCode=A,this.shouldKeepAlive=s||Q.method==="HEAD"&&!n[ZA]&&this.connection.toLowerCase()==="keep-alive",this.statusCode>=200){const I=Q.bodyTimeout!=null?Q.bodyTimeout:r[_C];this.setTimeout(I,Cs)}else this.timeout&&this.timeout.refresh&&this.timeout.refresh();if(Q.method==="CONNECT")return iA(r[xA]===1),this.upgrade=!0,2;if(t)return iA(r[xA]===1),this.upgrade=!0,2;if(iA(this.headers.length%2===0),this.headers=[],this.headersSize=0,this.shouldKeepAlive&&r[is]){const I=this.keepAlive?EA.parseKeepAliveTimeout(this.keepAlive):null;if(I!=null){const a=Math.min(I-r[jC],r[zC]);a<=0?n[ZA]=!0:r[Qs]=a}else r[Qs]=r[ZC]}else n[ZA]=!0;const C=Q.onHeaders(A,i,this.resume,E)===!1;return Q.aborted?-1:Q.method==="HEAD"||A<200?1:(n[xt]&&(n[xt]=!1,r[Ve]()),C?De.ERROR.PAUSED:0)}onBody(A){const{client:t,socket:s,statusCode:r,maxResponseSize:n}=this;if(s.destroyed)return-1;const i=t[ge][t[se]];if(iA(i),iA.strictEqual(this.timeoutType,Cs),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),iA(r>=200),n>-1&&this.bytesRead+A.length>n)return EA.destroy(s,new OC),-1;if(this.bytesRead+=A.length,i.onData(A)===!1)return De.ERROR.PAUSED}onMessageComplete(){const{client:A,socket:t,statusCode:s,upgrade:r,headers:n,contentLength:i,bytesRead:E,shouldKeepAlive:Q}=this;if(t.destroyed&&(!s||Q))return-1;if(r)return;const C=A[ge][A[se]];if(iA(C),iA(s>=100),this.statusCode=null,this.statusText="",this.bytesRead=0,this.contentLength="",this.keepAlive="",this.connection="",iA(this.headers.length%2===0),this.headers=[],this.headersSize=0,!(s<200)){if(C.method!=="HEAD"&&i&&E!==parseInt(i,10))return EA.destroy(t,new VC),-1;if(C.onComplete(n),A[ge][A[se]++]=null,t[He])return iA.strictEqual(A[xA],0),EA.destroy(t,new ut("reset")),De.ERROR.PAUSED;if(Q){if(t[ZA]&&A[xA]===0)return EA.destroy(t,new ut("reset")),De.ERROR.PAUSED;A[is]==null||A[is]===1?setImmediate(()=>A[Ve]()):A[Ve]()}else return EA.destroy(t,new ut("reset")),De.ERROR.PAUSED}}};o(ai,"Parser");let Ln=ai;function oI(e){const{socket:A,timeoutType:t,client:s}=e;t===ft?(!A[He]||A.writableNeedDrain||s[xA]>1)&&(iA(!e.paused,"cannot be paused while waiting for headers"),EA.destroy(A,new vC)):t===Cs?e.paused||EA.destroy(A,new WC):t===mn&&(iA(s[xA]===0&&s[Qs]),EA.destroy(A,new ut("socket idle timeout")))}o(oI,"onParserTimeout");async function iI(e,A){e[dt]=A,Un||(Un=await bn,bn=null),A[Wt]=!1,A[He]=!1,A[ZA]=!1,A[xt]=!1,A[FA]=new Ln(e,A,Un),gs(A,"error",function(s){const r=this[FA];if(iA(s.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),s.code==="ECONNRESET"&&r.statusCode&&!r.shouldKeepAlive){r.onMessageComplete();return}this[ne]=s,this[Nn][tI](s)}),gs(A,"readable",function(){const s=this[FA];s&&s.readMore()}),gs(A,"end",function(){const s=this[FA];if(s.statusCode&&!s.shouldKeepAlive){s.onMessageComplete();return}EA.destroy(this,new os("other side closed",EA.getSocketInfo(this)))}),gs(A,"close",function(){const s=this[Nn],r=this[FA];r&&(!this[ne]&&r.statusCode&&!r.shouldKeepAlive&&r.onMessageComplete(),this[FA].destroy(),this[FA]=null);const n=this[ne]||new os("closed",EA.getSocketInfo(this));if(s[dt]=null,s[yQ]=null,s.destroyed){iA(s[PC]===0);const i=s[ge].splice(s[se]);for(let E=0;E0&&n.code!=="UND_ERR_INFO"){const i=s[ge][s[se]];s[ge][s[se]++]=null,EA.errorRequest(s,i,n)}s[KC]=s[se],iA(s[xA]===0),s.emit("disconnect",s[dQ],[s],n),s[Ve]()});let t=!1;return A.on("close",()=>{t=!0}),{version:"h1",defaultPipelining:1,write(...s){return gI(e,...s)},resume(){QI(e)},destroy(s,r){t?queueMicrotask(r):A.destroy(s).on("close",r)},get destroyed(){return A.destroyed},busy(s){return!!(A[He]||A[ZA]||A[xt]||s&&(e[xA]>0&&!s.idempotent||e[xA]>0&&(s.upgrade||s.method==="CONNECT")||e[xA]>0&&EA.bodyLength(s.body)!==0&&(EA.isStream(s.body)||EA.isAsyncIterable(s.body)||EA.isFormDataLike(s.body))))}}}o(iI,"connectH1$1");function QI(e){const A=e[dt];if(A&&!A.destroyed){if(e[fQ]===0?!A[Wt]&&A.unref&&(A.unref(),A[Wt]=!0):A[Wt]&&A.ref&&(A.ref(),A[Wt]=!1),e[fQ]===0)A[FA].timeoutType!==mn&&A[FA].setTimeout(e[Qs],mn);else if(e[xA]>0&&A[FA].statusCode<200&&A[FA].timeoutType!==ft){const t=e[ge][e[se]],s=t.headersTimeout!=null?t.headersTimeout:e[$C];A[FA].setTimeout(s,ft)}}}o(QI,"resumeH1");function EI(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}o(EI,"shouldSendContentLength$1");function gI(e,A){const{method:t,path:s,host:r,upgrade:n,blocking:i,reset:E}=A;let{body:Q,headers:C,contentLength:I}=A;const a=t==="PUT"||t==="POST"||t==="PATCH";if(EA.isFormDataLike(Q)){Sn||(Sn=ns().extractBody);const[l,S]=Sn(Q);A.contentType==null&&C.push("content-type",S),Q=l.stream,I=l.length}else EA.isBlobLike(Q)&&A.contentType==null&&Q.type&&C.push("content-type",Q.type);Q&&typeof Q.read=="function"&&Q.read(0);const f=EA.bodyLength(Q);if(I=f??I,I===null&&(I=A.contentLength),I===0&&!a&&(I=null),EI(t)&&I>0&&A.contentLength!==null&&A.contentLength!==I){if(e[pn])return EA.errorRequest(e,A,new At),!1;process.emitWarning(new At)}const h=e[dt],L=o(l=>{A.aborted||A.completed||(EA.errorRequest(e,A,l||new uQ),EA.destroy(Q),EA.destroy(h,new ut("aborted")))},"abort");try{A.onConnect(L)}catch(l){EA.errorRequest(e,A,l)}if(A.aborted)return!1;t==="HEAD"&&(h[ZA]=!0),(n||t==="CONNECT")&&(h[ZA]=!0),E!=null&&(h[ZA]=E),e[DQ]&&h[AI]++>=e[DQ]&&(h[ZA]=!0),i&&(h[xt]=!0);let c=`${t} ${s} HTTP/1.1\r +`;if(typeof r=="string"?c+=`host: ${r}\r +`:c+=e[XC],n?c+=`connection: upgrade\r +upgrade: ${n}\r +`:e[is]&&!h[ZA]?c+=`connection: keep-alive\r +`:c+=`connection: close\r +`,Array.isArray(C))for(let l=0;l{A.removeListener("error",h)}),!Q){const L=new uQ;queueMicrotask(()=>h(L))}},"onClose"),h=o(function(L){if(!Q){if(Q=!0,iA(r.destroyed||r[He]&&t[xA]<=1),r.off("drain",a).off("error",h),A.removeListener("data",I).removeListener("end",h).removeListener("close",f),!L)try{C.end()}catch(c){L=c}C.destroy(L),L&&(L.code!=="UND_ERR_INFO"||L.message!=="reset")?EA.destroy(A,L):EA.destroy(A)}},"onFinished");A.on("data",I).on("end",h).on("error",h).on("close",f),A.resume&&A.resume(),r.on("drain",a).on("error",h),A.errorEmitted??A.errored?setImmediate(()=>h(A.errored)):(A.endEmitted??A.readableEnded)&&setImmediate(()=>h(null)),(A.closeEmitted??A.closed)&&setImmediate(f)}o(BI,"writeStream$1");async function RQ({abort:e,body:A,client:t,request:s,socket:r,contentLength:n,header:i,expectsPayload:E}){try{A?EA.isBuffer(A)&&(iA(n===A.byteLength,"buffer body must have content length"),r.cork(),r.write(`${i}content-length: ${n}\r +\r +`,"latin1"),r.write(A),r.uncork(),s.onBodySent(A),E||(r[ZA]=!0)):n===0?r.write(`${i}content-length: 0\r +\r +`,"latin1"):(iA(n===null,"no body must not have content length"),r.write(`${i}\r +`,"latin1")),s.onRequestSent(),t[Ve]()}catch(Q){e(Q)}}o(RQ,"writeBuffer");async function CI({abort:e,body:A,client:t,request:s,socket:r,contentLength:n,header:i,expectsPayload:E}){iA(n===A.size,"blob body must have content length");try{if(n!=null&&n!==A.size)throw new At;const Q=Buffer.from(await A.arrayBuffer());r.cork(),r.write(`${i}content-length: ${n}\r +\r +`,"latin1"),r.write(Q),r.uncork(),s.onBodySent(Q),s.onRequestSent(),E||(r[ZA]=!0),t[Ve]()}catch(Q){e(Q)}}o(CI,"writeBlob$1");async function wQ({abort:e,body:A,client:t,request:s,socket:r,contentLength:n,header:i,expectsPayload:E}){iA(n!==0||t[xA]===0,"iterator body cannot be pipelined");let Q=null;function C(){if(Q){const f=Q;Q=null,f()}}o(C,"onDrain");const I=o(()=>new Promise((f,h)=>{iA(Q===null),r[ne]?h(r[ne]):Q=f}),"waitForDrain");r.on("close",C).on("drain",C);const a=new Is({abort:e,socket:r,request:s,contentLength:n,client:t,expectsPayload:E,header:i});try{for await(const f of A){if(r[ne])throw r[ne];a.write(f)||await I()}a.end()}catch(f){a.destroy(f)}finally{r.off("close",C).off("drain",C)}}o(wQ,"writeIterable$1");const ci=class ci{constructor({abort:A,socket:t,request:s,contentLength:r,client:n,expectsPayload:i,header:E}){this.socket=t,this.request=s,this.contentLength=r,this.client=n,this.bytesWritten=0,this.expectsPayload=i,this.header=E,this.abort=A,t[He]=!0}write(A){const{socket:t,request:s,contentLength:r,client:n,bytesWritten:i,expectsPayload:E,header:Q}=this;if(t[ne])throw t[ne];if(t.destroyed)return!1;const C=Buffer.byteLength(A);if(!C)return!0;if(r!==null&&i+C>r){if(n[pn])throw new At;process.emitWarning(new At)}t.cork(),i===0&&(E||(t[ZA]=!0),r===null?t.write(`${Q}transfer-encoding: chunked\r +`,"latin1"):t.write(`${Q}content-length: ${r}\r +\r +`,"latin1")),r===null&&t.write(`\r +${C.toString(16)}\r +`,"latin1"),this.bytesWritten+=C;const I=t.write(A);return t.uncork(),s.onBodySent(A),I||t[FA].timeout&&t[FA].timeoutType===ft&&t[FA].timeout.refresh&&t[FA].timeout.refresh(),I}end(){const{socket:A,contentLength:t,client:s,bytesWritten:r,expectsPayload:n,header:i,request:E}=this;if(E.onRequestSent(),A[He]=!1,A[ne])throw A[ne];if(!A.destroyed){if(r===0?n?A.write(`${i}content-length: 0\r +\r +`,"latin1"):A.write(`${i}\r +`,"latin1"):t===null&&A.write(`\r +0\r +\r +`,"latin1"),t!==null&&r!==t){if(s[pn])throw new At;process.emitWarning(new At)}A[FA].timeout&&A[FA].timeoutType===ft&&A[FA].timeout.refresh&&A[FA].timeout.refresh(),s[Ve]()}}destroy(A){const{socket:t,client:s,abort:r}=this;t[He]=!1,A&&(iA(s[xA]<=1,"pipeline should only contain this request"),r(A))}};o(ci,"AsyncWriter");let Is=ci;var II=iI;const Be=RA,{pipeline:aI}=ue,cA=aA,{RequestContentLengthMismatchError:Mn,RequestAbortedError:kQ,SocketError:Yn,InformationalError:as}=kA,{kUrl:Jn,kReset:cI,kClient:Dt,kRunning:Gn,kPending:hI,kQueue:lI,kPendingIdx:uI,kRunningIdx:NQ,kError:be,kSocket:XA,kStrictContentLength:dI,kOnError:cs,kMaxConcurrentStreams:fI,kHTTP2Session:ve,kResume:FQ}=LA,KA=Symbol("open streams");let pQ=!1,hs;try{hs=require("node:http2")}catch{hs={constants:{}}}const{constants:{HTTP2_HEADER_AUTHORITY:DI,HTTP2_HEADER_METHOD:yI,HTTP2_HEADER_PATH:RI,HTTP2_HEADER_SCHEME:wI,HTTP2_HEADER_CONTENT_LENGTH:kI,HTTP2_HEADER_EXPECT:NI,HTTP2_HEADER_STATUS:FI}}=hs;function pI(e){const A=[];for(const[t,s]of Object.entries(e))if(Array.isArray(s))for(const r of s)A.push(Buffer.from(t),Buffer.from(r));else A.push(Buffer.from(t),Buffer.from(s));return A}o(pI,"parseH2Headers");async function SI(e,A){e[XA]=A,pQ||(pQ=!0,process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"}));const t=hs.connect(e[Jn],{createConnection:()=>A,peerMaxConcurrentStreams:e[fI]});t[KA]=0,t[Dt]=e,t[XA]=A,cA.addListener(t,"error",UI),cA.addListener(t,"frameError",bI),cA.addListener(t,"end",mI),cA.addListener(t,"goaway",LI),cA.addListener(t,"close",function(){const{[Dt]:r}=this,n=this[XA][be]||new Yn("closed",cA.getSocketInfo(this));r[XA]=null,r[ve]=null,Be(r[hI]===0);const i=r[lI].splice(r[NQ]);for(let E=0;E{s=!0}),{version:"h2",defaultPipelining:1/0,write(...r){YI(e,...r)},resume(){},destroy(r,n){t.destroy(r),s?queueMicrotask(n):A.destroy(r).on("close",n)},get destroyed(){return A.destroyed},busy(){return!1}}}o(SI,"connectH2$1");function UI(e){Be(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[XA][be]=e,this[Dt][cs](e)}o(UI,"onHttp2SessionError");function bI(e,A,t){if(t===0){const s=new as(`HTTP/2: "frameError" received - type ${e}, code ${A}`);this[XA][be]=s,this[Dt][cs](s)}}o(bI,"onHttp2FrameError");function mI(){const e=new Yn("other side closed",cA.getSocketInfo(this[XA]));this.destroy(e),cA.destroy(this[XA],e)}o(mI,"onHttp2SessionEnd");function LI(e){const A=new as(`HTTP/2: "GOAWAY" frame received with code ${e}`);this[XA][be]=A,this[Dt][cs](A),this.unref(),this.destroy(),cA.destroy(this[XA],A)}o(LI,"onHTTP2GoAway");function MI(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}o(MI,"shouldSendContentLength");function YI(e,A){const t=e[ve],{body:s,method:r,path:n,host:i,upgrade:E,expectContinue:Q,signal:C,headers:I}=A;if(E)return cA.errorRequest(e,A,new Error("Upgrade not supported for H2")),!1;if(A.aborted)return!1;const a={};for(let w=0;w{A.aborted||A.completed||(w=w||new kQ,f!=null&&(cA.destroy(f,w),t[KA]-=1,t[KA]===0&&t.unref()),cA.errorRequest(e,A,w))})}catch(w){cA.errorRequest(e,A,w)}if(r==="CONNECT")return t.ref(),f=t.request(a,{endStream:!1,signal:C}),f.id&&!f.pending?(A.onUpgrade(null,null,f),++t[KA]):f.once("ready",()=>{A.onUpgrade(null,null,f),++t[KA]}),f.once("close",()=>{t[KA]-=1,t[KA]===0&&t.unref()}),!0;a[RI]=n,a[wI]="https";const c=r==="PUT"||r==="POST"||r==="PATCH";s&&typeof s.read=="function"&&s.read(0);let l=cA.bodyLength(s);if(l==null&&(l=A.contentLength),(l===0||!c)&&(l=null),MI(r)&&l>0&&A.contentLength!=null&&A.contentLength!==l){if(e[dI])return cA.errorRequest(e,A,new Mn),!1;process.emitWarning(new Mn)}l!=null&&(Be(s,"no body must not have content length"),a[kI]=`${l}`),t.ref();const S=r==="GET"||r==="HEAD"||s===null;return Q?(a[NI]="100-continue",f=t.request(a,{endStream:S,signal:C}),f.once("continue",k)):(f=t.request(a,{endStream:S,signal:C}),k()),++t[KA],f.once("response",w=>{const{[FI]:U,...M}=w;if(A.onResponseStarted(),A.aborted||A.completed){const B=new kQ;cA.errorRequest(e,A,B),cA.destroy(f,B);return}A.onHeaders(Number(U),pI(M),f.resume.bind(f),"")===!1&&f.pause(),f.on("data",B=>{A.onData(B)===!1&&f.pause()})}),f.once("end",()=>{if(f.state?.state==null||f.state.state<6){A.onComplete([]);return}t[KA]-=1,t[KA]===0&&t.unref();const w=new as("HTTP/2: stream half-closed (remote)");cA.errorRequest(e,A,w),cA.destroy(f,w)}),f.once("close",()=>{t[KA]-=1,t[KA]===0&&t.unref()}),f.once("error",function(w){e[ve]&&!e[ve].destroyed&&!this.closed&&!this.destroyed&&(t[KA]-=1,cA.errorRequest(e,A,w),cA.destroy(f,w))}),f.once("frameError",(w,U)=>{const M=new as(`HTTP/2: "frameError" received - type ${w}, code ${U}`);cA.errorRequest(e,A,M),e[ve]&&!e[ve].destroyed&&!this.closed&&!this.destroyed&&(t[KA]-=1,cA.destroy(f,M))}),!0;function k(){s?cA.isBuffer(s)?(Be(l===s.byteLength,"buffer body must have content length"),f.cork(),f.write(s),f.uncork(),f.end(),A.onBodySent(s),A.onRequestSent()):cA.isBlobLike(s)?typeof s.stream=="function"?SQ({client:e,request:A,contentLength:l,h2stream:f,expectsPayload:c,body:s.stream(),socket:e[XA],header:""}):GI({body:s,client:e,request:A,contentLength:l,expectsPayload:c,h2stream:f,header:"",socket:e[XA]}):cA.isStream(s)?JI({body:s,client:e,request:A,contentLength:l,expectsPayload:c,socket:e[XA],h2stream:f,header:""}):cA.isIterable(s)?SQ({body:s,client:e,request:A,contentLength:l,expectsPayload:c,header:"",h2stream:f,socket:e[XA]}):Be(!1):A.onRequestSent()}o(k,"writeBodyH2")}o(YI,"writeH2");function JI({h2stream:e,body:A,client:t,request:s,socket:r,contentLength:n,header:i,expectsPayload:E}){Be(n!==0||t[Gn]===0,"stream body cannot be pipelined");const Q=aI(A,e,I=>{I?(cA.destroy(A,I),cA.destroy(e,I)):s.onRequestSent()});Q.on("data",C),Q.once("end",()=>{Q.removeListener("data",C),cA.destroy(Q)});function C(I){s.onBodySent(I)}o(C,"onPipeData")}o(JI,"writeStream");async function GI({h2stream:e,body:A,client:t,request:s,socket:r,contentLength:n,header:i,expectsPayload:E}){Be(n===A.size,"blob body must have content length");try{if(n!=null&&n!==A.size)throw new Mn;const Q=Buffer.from(await A.arrayBuffer());e.cork(),e.write(Q),e.uncork(),s.onBodySent(Q),s.onRequestSent(),E||(r[cI]=!0),t[FQ]()}catch{cA.destroy(e)}}o(GI,"writeBlob");async function SQ({h2stream:e,body:A,client:t,request:s,socket:r,contentLength:n,header:i,expectsPayload:E}){Be(n!==0||t[Gn]===0,"iterator body cannot be pipelined");let Q=null;function C(){if(Q){const a=Q;Q=null,a()}}o(C,"onDrain");const I=o(()=>new Promise((a,f)=>{Be(Q===null),r[be]?f(r[be]):Q=a}),"waitForDrain");e.on("close",C).on("drain",C);try{for await(const a of A){if(r[be])throw r[be];const f=e.write(a);s.onBodySent(a),f||await I()}}catch(a){e.destroy(a)}finally{s.onRequestSent(),e.end(),e.off("close",C).off("drain",C)}}o(SQ,"writeIterable");var TI=SI;const we=aA,{kBodyUsed:qt}=LA,Tn=RA,{InvalidArgumentError:HI}=kA,VI=Zr,vI=[300,301,302,303,307,308],UQ=Symbol("body"),hi=class hi{constructor(A){this[UQ]=A,this[qt]=!1}async*[Symbol.asyncIterator](){Tn(!this[qt],"disturbed"),this[qt]=!0,yield*this[UQ]}};o(hi,"BodyAsyncIterable");let ls=hi,xI=(mr=class{constructor(A,t,s,r){if(t!=null&&(!Number.isInteger(t)||t<0))throw new HI("maxRedirections must be a positive number");we.validateHandler(r,s.method,s.upgrade),this.dispatch=A,this.location=null,this.abort=null,this.opts={...s,maxRedirections:0},this.maxRedirections=t,this.handler=r,this.history=[],this.redirectionLimitReached=!1,we.isStream(this.opts.body)?(we.bodyLength(this.opts.body)===0&&this.opts.body.on("data",function(){Tn(!1)}),typeof this.opts.body.readableDidRead!="boolean"&&(this.opts.body[qt]=!1,VI.prototype.on.call(this.opts.body,"data",function(){this[qt]=!0}))):this.opts.body&&typeof this.opts.body.pipeTo=="function"?this.opts.body=new ls(this.opts.body):this.opts.body&&typeof this.opts.body!="string"&&!ArrayBuffer.isView(this.opts.body)&&we.isIterable(this.opts.body)&&(this.opts.body=new ls(this.opts.body))}onConnect(A){this.abort=A,this.handler.onConnect(A,{history:this.history})}onUpgrade(A,t,s){this.handler.onUpgrade(A,t,s)}onError(A){this.handler.onError(A)}onHeaders(A,t,s,r){if(this.location=this.history.length>=this.maxRedirections||we.isDisturbed(this.opts.body)?null:WI(A,t),this.opts.throwOnMaxRedirect&&this.history.length>=this.maxRedirections){this.request&&this.request.abort(new Error("max redirects")),this.redirectionLimitReached=!0,this.abort(new Error("max redirects"));return}if(this.opts.origin&&this.history.push(new URL(this.opts.path,this.opts.origin)),!this.location)return this.handler.onHeaders(A,t,s,r);const{origin:n,pathname:i,search:E}=we.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin))),Q=E?`${i}${E}`:i;this.opts.headers=qI(this.opts.headers,A===303,this.opts.origin!==n),this.opts.path=Q,this.opts.origin=n,this.opts.maxRedirections=0,this.opts.query=null,A===303&&this.opts.method!=="HEAD"&&(this.opts.method="GET",this.opts.body=null)}onData(A){if(!this.location)return this.handler.onData(A)}onComplete(A){this.location?(this.location=null,this.abort=null,this.dispatch(this.opts,this)):this.handler.onComplete(A)}onBodySent(A){this.handler.onBodySent&&this.handler.onBodySent(A)}},o(mr,"RedirectHandler"),mr);function WI(e,A){if(vI.indexOf(e)===-1)return null;for(let t=0;to(function(s,r){const{maxRedirections:n=e}=s;if(!n)return A(s,r);const i=new PI(A,n,s,r);return s={...s,maxRedirections:0},A(s,i)},"Intercept")}o(ZI,"createRedirectInterceptor$2");var mQ=ZI;const me=RA,LQ=Ps,XI=Pr,xe=aA,{channels:yt}=Vt,KI=yC,zI=As,{InvalidArgumentError:SA,InformationalError:jI,ClientDestroyedError:$I}=kA,_I=gn,{kUrl:ke,kServerName:We,kClient:Aa,kBusy:Hn,kConnect:ea,kResuming:et,kRunning:Ot,kPending:Pt,kSize:Zt,kQueue:Ce,kConnected:ta,kConnecting:Rt,kNeedDrain:qe,kKeepAliveDefaultTimeout:MQ,kHostHeader:ra,kPendingIdx:Ie,kRunningIdx:Le,kError:sa,kPipelining:us,kKeepAliveTimeoutValue:na,kMaxHeadersSize:oa,kKeepAliveMaxTimeout:ia,kKeepAliveTimeoutThreshold:Qa,kHeadersTimeout:Ea,kBodyTimeout:ga,kStrictContentLength:Ba,kConnector:Xt,kMaxRedirections:Ca,kMaxRequests:Vn,kCounter:Ia,kClose:aa,kDestroy:ca,kDispatch:ha,kInterceptors:YQ,kLocalAddress:Kt,kMaxResponseSize:la,kOnError:ua,kHTTPContext:UA,kMaxConcurrentStreams:da,kResume:zt}=LA,fa=II,Da=TI;let JQ=!1;const Oe=Symbol("kClosedResolve");function GQ(e){return e[us]??e[UA]?.defaultPipelining??1}o(GQ,"getPipelining");let ya=(Lr=class extends zI{constructor(A,{interceptors:t,maxHeaderSize:s,headersTimeout:r,socketTimeout:n,requestTimeout:i,connectTimeout:E,bodyTimeout:Q,idleTimeout:C,keepAlive:I,keepAliveTimeout:a,maxKeepAliveTimeout:f,keepAliveMaxTimeout:h,keepAliveTimeoutThreshold:L,socketPath:c,pipelining:l,tls:S,strictContentLength:k,maxCachedSessions:w,maxRedirections:U,connect:M,maxRequestsPerClient:B,localAddress:D,maxResponseSize:G,autoSelectFamily:g,autoSelectFamilyAttemptTimeout:d,maxConcurrentStreams:F,allowH2:N}={}){if(super(),I!==void 0)throw new SA("unsupported keepAlive, use pipelining=0 instead");if(n!==void 0)throw new SA("unsupported socketTimeout, use headersTimeout & bodyTimeout instead");if(i!==void 0)throw new SA("unsupported requestTimeout, use headersTimeout & bodyTimeout instead");if(C!==void 0)throw new SA("unsupported idleTimeout, use keepAliveTimeout instead");if(f!==void 0)throw new SA("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead");if(s!=null&&!Number.isFinite(s))throw new SA("invalid maxHeaderSize");if(c!=null&&typeof c!="string")throw new SA("invalid socketPath");if(E!=null&&(!Number.isFinite(E)||E<0))throw new SA("invalid connectTimeout");if(a!=null&&(!Number.isFinite(a)||a<=0))throw new SA("invalid keepAliveTimeout");if(h!=null&&(!Number.isFinite(h)||h<=0))throw new SA("invalid keepAliveMaxTimeout");if(L!=null&&!Number.isFinite(L))throw new SA("invalid keepAliveTimeoutThreshold");if(r!=null&&(!Number.isInteger(r)||r<0))throw new SA("headersTimeout must be a positive integer or zero");if(Q!=null&&(!Number.isInteger(Q)||Q<0))throw new SA("bodyTimeout must be a positive integer or zero");if(M!=null&&typeof M!="function"&&typeof M!="object")throw new SA("connect must be a function or an object");if(U!=null&&(!Number.isInteger(U)||U<0))throw new SA("maxRedirections must be a positive number");if(B!=null&&(!Number.isInteger(B)||B<0))throw new SA("maxRequestsPerClient must be a positive number");if(D!=null&&(typeof D!="string"||LQ.isIP(D)===0))throw new SA("localAddress must be valid string IP address");if(G!=null&&(!Number.isInteger(G)||G<-1))throw new SA("maxResponseSize must be a positive number");if(d!=null&&(!Number.isInteger(d)||d<-1))throw new SA("autoSelectFamilyAttemptTimeout must be a positive number");if(N!=null&&typeof N!="boolean")throw new SA("allowH2 must be a valid boolean value");if(F!=null&&(typeof F!="number"||F<1))throw new SA("maxConcurrentStreams must be a positive integer, greater than 0");typeof M!="function"&&(M=_I({...S,maxCachedSessions:w,allowH2:N,socketPath:c,timeout:E,...xe.nodeHasAutoSelectFamily&&g?{autoSelectFamily:g,autoSelectFamilyAttemptTimeout:d}:void 0,...M})),t?.Client&&Array.isArray(t.Client)?(this[YQ]=t.Client,JQ||(JQ=!0,process.emitWarning("Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.",{code:"UNDICI-CLIENT-INTERCEPTOR-DEPRECATED"}))):this[YQ]=[Ra({maxRedirections:U})],this[ke]=xe.parseOrigin(A),this[Xt]=M,this[us]=l??1,this[oa]=s||XI.maxHeaderSize,this[MQ]=a??4e3,this[ia]=h??6e5,this[Qa]=L??1e3,this[na]=this[MQ],this[We]=null,this[Kt]=D??null,this[et]=0,this[qe]=0,this[ra]=`host: ${this[ke].hostname}${this[ke].port?`:${this[ke].port}`:""}\r +`,this[ga]=Q??3e5,this[Ea]=r??3e5,this[Ba]=k??!0,this[Ca]=U,this[Vn]=B,this[Oe]=null,this[la]=G>-1?G:-1,this[da]=F??100,this[UA]=null,this[Ce]=[],this[Le]=0,this[Ie]=0,this[zt]=u=>vn(this,u),this[ua]=u=>TQ(this,u)}get pipelining(){return this[us]}set pipelining(A){this[us]=A,this[zt](!0)}get[Pt](){return this[Ce].length-this[Ie]}get[Ot](){return this[Ie]-this[Le]}get[Zt](){return this[Ce].length-this[Le]}get[ta](){return!!this[UA]&&!this[Rt]&&!this[UA].destroyed}get[Hn](){return!!(this[UA]?.busy(null)||this[Zt]>=(GQ(this)||1)||this[Pt]>0)}[ea](A){HQ(this),this.once("connect",A)}[ha](A,t){const s=A.origin||this[ke].origin,r=new KI(s,A,t);return this[Ce].push(r),this[et]||(xe.bodyLength(r.body)==null&&xe.isIterable(r.body)?(this[et]=1,queueMicrotask(()=>vn(this))):this[zt](!0)),this[et]&&this[qe]!==2&&this[Hn]&&(this[qe]=2),this[qe]<2}async[aa](){return new Promise(A=>{this[Zt]?this[Oe]=A:A(null)})}async[ca](A){return new Promise(t=>{const s=this[Ce].splice(this[Ie]);for(let n=0;n{this[Oe]&&(this[Oe](),this[Oe]=null),t(null)},"callback");this[UA]?(this[UA].destroy(A,r),this[UA]=null):queueMicrotask(r),this[zt]()})}},o(Lr,"Client"),Lr);const Ra=mQ;function TQ(e,A){if(e[Ot]===0&&A.code!=="UND_ERR_INFO"&&A.code!=="UND_ERR_SOCKET"){me(e[Ie]===e[Le]);const t=e[Ce].splice(e[Le]);for(let s=0;s{e[Xt]({host:A,hostname:t,protocol:s,port:r,servername:e[We],localAddress:e[Kt]},(Q,C)=>{Q?E(Q):i(C)})});if(e.destroyed){xe.destroy(n.on("error",()=>{}),new $I);return}me(n);try{e[UA]=n.alpnProtocol==="h2"?await Da(e,n):await fa(e,n)}catch(i){throw n.destroy().on("error",()=>{}),i}e[Rt]=!1,n[Ia]=0,n[Vn]=e[Vn],n[Aa]=e,n[sa]=null,yt.connected.hasSubscribers&&yt.connected.publish({connectParams:{host:A,hostname:t,protocol:s,port:r,version:e[UA]?.version,servername:e[We],localAddress:e[Kt]},connector:e[Xt],socket:n}),e.emit("connect",e[ke],[e])}catch(n){if(e.destroyed)return;if(e[Rt]=!1,yt.connectError.hasSubscribers&&yt.connectError.publish({connectParams:{host:A,hostname:t,protocol:s,port:r,version:e[UA]?.version,servername:e[We],localAddress:e[Kt]},connector:e[Xt],error:n}),n.code==="ERR_TLS_CERT_ALTNAME_INVALID")for(me(e[Ot]===0);e[Pt]>0&&e[Ce][e[Ie]].servername===e[We];){const i=e[Ce][e[Ie]++];xe.errorRequest(e,i,n)}else TQ(e,n);e.emit("connectionError",e[ke],[e],n)}e[zt]()}o(HQ,"connect$1");function VQ(e){e[qe]=0,e.emit("drain",e[ke],[e])}o(VQ,"emitDrain");function vn(e,A){e[et]!==2&&(e[et]=2,wa(e,A),e[et]=0,e[Le]>256&&(e[Ce].splice(0,e[Le]),e[Ie]-=e[Le],e[Le]=0))}o(vn,"resume");function wa(e,A){for(;;){if(e.destroyed){me(e[Pt]===0);return}if(e[Oe]&&!e[Zt]){e[Oe](),e[Oe]=null;return}if(e[UA]&&e[UA].resume(),e[Hn])e[qe]=2;else if(e[qe]===2){A?(e[qe]=1,queueMicrotask(()=>VQ(e))):VQ(e);continue}if(e[Pt]===0||e[Ot]>=(GQ(e)||1))return;const t=e[Ce][e[Ie]];if(e[ke].protocol==="https:"&&e[We]!==t.servername){if(e[Ot]>0)return;e[We]=t.servername,e[UA]?.destroy(new jI("servername changed"),()=>{e[UA]=null,vn(e)})}if(e[Rt])return;if(!e[UA]){HQ(e);return}if(e[UA].destroyed||e[UA].busy(t))return;!t.aborted&&e[UA].write(t)?e[Ie]++:e[Ce].splice(e[Ie],1)}}o(wa,"_resume");var xn=ya;const vQ=2048,Wn=vQ-1,li=class li{constructor(){this.bottom=0,this.top=0,this.list=new Array(vQ),this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&Wn)===this.bottom}push(A){this.list[this.top]=A,this.top=this.top+1&Wn}shift(){const A=this.list[this.bottom];return A===void 0?null:(this.list[this.bottom]=void 0,this.bottom=this.bottom+1&Wn,A)}};o(li,"FixedCircularBuffer");let ds=li;var ka=(Mr=class{constructor(){this.head=this.tail=new ds}isEmpty(){return this.head.isEmpty()}push(A){this.head.isFull()&&(this.head=this.head.next=new ds),this.head.push(A)}shift(){const A=this.tail,t=A.shift();return A.isEmpty()&&A.next!==null&&(this.tail=A.next),t}},o(Mr,"FixedQueue"),Mr);const{kFree:Na,kConnected:Fa,kPending:pa,kQueued:Sa,kRunning:Ua,kSize:ba}=LA,tt=Symbol("pool");let ma=(Yr=class{constructor(A){this[tt]=A}get connected(){return this[tt][Fa]}get free(){return this[tt][Na]}get pending(){return this[tt][pa]}get queued(){return this[tt][Sa]}get running(){return this[tt][Ua]}get size(){return this[tt][ba]}},o(Yr,"PoolStats"),Yr);var La=ma;const Ma=As,Ya=ka,{kConnected:qn,kSize:xQ,kRunning:WQ,kPending:qQ,kQueued:jt,kBusy:Ja,kFree:Ga,kUrl:Ta,kClose:Ha,kDestroy:Va,kDispatch:va}=LA,xa=La,zA=Symbol("clients"),qA=Symbol("needDrain"),$t=Symbol("queue"),On=Symbol("closed resolve"),Pn=Symbol("onDrain"),OQ=Symbol("onConnect"),PQ=Symbol("onDisconnect"),ZQ=Symbol("onConnectionError"),Zn=Symbol("get dispatcher"),XQ=Symbol("add client"),KQ=Symbol("remove client"),zQ=Symbol("stats");let Wa=(Jr=class extends Ma{constructor(){super(),this[$t]=new Ya,this[zA]=[],this[jt]=0;const A=this;this[Pn]=o(function(s,r){const n=A[$t];let i=!1;for(;!i;){const E=n.shift();if(!E)break;A[jt]--,i=!this.dispatch(E.opts,E.handler)}this[qA]=i,!this[qA]&&A[qA]&&(A[qA]=!1,A.emit("drain",s,[A,...r])),A[On]&&n.isEmpty()&&Promise.all(A[zA].map(E=>E.close())).then(A[On])},"onDrain"),this[OQ]=(t,s)=>{A.emit("connect",t,[A,...s])},this[PQ]=(t,s,r)=>{A.emit("disconnect",t,[A,...s],r)},this[ZQ]=(t,s,r)=>{A.emit("connectionError",t,[A,...s],r)},this[zQ]=new xa(this)}get[Ja](){return this[qA]}get[qn](){return this[zA].filter(A=>A[qn]).length}get[Ga](){return this[zA].filter(A=>A[qn]&&!A[qA]).length}get[qQ](){let A=this[jt];for(const{[qQ]:t}of this[zA])A+=t;return A}get[WQ](){let A=0;for(const{[WQ]:t}of this[zA])A+=t;return A}get[xQ](){let A=this[jt];for(const{[xQ]:t}of this[zA])A+=t;return A}get stats(){return this[zQ]}async[Ha](){return this[$t].isEmpty()?Promise.all(this[zA].map(A=>A.close())):new Promise(A=>{this[On]=A})}async[Va](A){for(;;){const t=this[$t].shift();if(!t)break;t.handler.onError(A)}return Promise.all(this[zA].map(t=>t.destroy(A)))}[va](A,t){const s=this[Zn]();return s?s.dispatch(A,t)||(s[qA]=!0,this[qA]=!this[Zn]()):(this[qA]=!0,this[$t].push({opts:A,handler:t}),this[jt]++),!this[qA]}[XQ](A){return A.on("drain",this[Pn]).on("connect",this[OQ]).on("disconnect",this[PQ]).on("connectionError",this[ZQ]),this[zA].push(A),this[qA]&&queueMicrotask(()=>{this[qA]&&this[Pn](A[Ta],[this,A])}),this}[KQ](A){A.close(()=>{const t=this[zA].indexOf(A);t!==-1&&this[zA].splice(t,1)}),this[qA]=this[zA].some(t=>!t[qA]&&t.closed!==!0&&t.destroyed!==!0)}},o(Jr,"PoolBase"),Jr);var qa={PoolBase:Wa,kClients:zA,kNeedDrain:qA,kAddClient:XQ,kRemoveClient:KQ,kGetDispatcher:Zn};const{PoolBase:Oa,kClients:jQ,kNeedDrain:Pa,kAddClient:Za,kGetDispatcher:Xa}=qa,Ka=xn,{InvalidArgumentError:Xn}=kA,Kn=aA,{kUrl:$Q,kInterceptors:za}=LA,ja=gn,zn=Symbol("options"),jn=Symbol("connections"),_Q=Symbol("factory");function $a(e,A){return new Ka(e,A)}o($a,"defaultFactory$2");let _a=(Gr=class extends Oa{constructor(A,{connections:t,factory:s=$a,connect:r,connectTimeout:n,tls:i,maxCachedSessions:E,socketPath:Q,autoSelectFamily:C,autoSelectFamilyAttemptTimeout:I,allowH2:a,...f}={}){if(super(),t!=null&&(!Number.isFinite(t)||t<0))throw new Xn("invalid connections");if(typeof s!="function")throw new Xn("factory must be a function.");if(r!=null&&typeof r!="function"&&typeof r!="object")throw new Xn("connect must be a function or an object");typeof r!="function"&&(r=ja({...i,maxCachedSessions:E,allowH2:a,socketPath:Q,timeout:n,...Kn.nodeHasAutoSelectFamily&&C?{autoSelectFamily:C,autoSelectFamilyAttemptTimeout:I}:void 0,...r})),this[za]=f.interceptors?.Pool&&Array.isArray(f.interceptors.Pool)?f.interceptors.Pool:[],this[jn]=t||null,this[$Q]=Kn.parseOrigin(A),this[zn]={...Kn.deepClone(f),connect:r,allowH2:a},this[zn].interceptors=f.interceptors?{...f.interceptors}:void 0,this[_Q]=s}[Xa](){for(const A of this[jQ])if(!A[Pa])return A;if(!this[jn]||this[jQ].length{this.emit("drain",n,[this,...i])},this[eE]=(n,i)=>{this.emit("connect",n,[this,...i])},this[tE]=(n,i,E)=>{this.emit("disconnect",n,[this,...i],E)},this[rE]=(n,i,E)=>{this.emit("connectionError",n,[this,...i],E)}}get[AE](){let A=0;for(const t of this[Pe].values())A+=t[AE];return A}[tc](A,t){let s;if(A.origin&&(typeof A.origin=="string"||A.origin instanceof URL))s=String(A.origin);else throw new fs("opts.origin must be a non-empty string or URL.");let r=this[Pe].get(s);return r||(r=this[nE](A.origin,this[_n]).on("drain",this[sE]).on("connect",this[eE]).on("disconnect",this[tE]).on("connectionError",this[rE]),this[Pe].set(s,r)),r.dispatch(A,t)}async[Ac](){const A=[];for(const t of this[Pe].values())A.push(t.close());this[Pe].clear(),await Promise.all(A)}async[ec](A){const t=[];for(const s of this[Pe].values())t.push(s.destroy(A));this[Pe].clear(),await Promise.all(t)}},o(Tr,"Agent"),Tr);var Ao=Bc;const{kProxy:Cc,kClose:Ic,kDestroy:ac,kInterceptors:cc}=LA,{URL:_t}=_g,hc=Ao,lc=$n,uc=As,{InvalidArgumentError:Ds,RequestAbortedError:dc,SecureProxyConnectionError:fc}=kA,oE=gn,ys=Symbol("proxy agent"),Rs=Symbol("proxy client"),Ar=Symbol("proxy headers"),eo=Symbol("request tls settings"),iE=Symbol("proxy tls settings"),QE=Symbol("connect endpoint function");function Dc(e){return e==="https:"?443:80}o(Dc,"defaultProtocolPort");function yc(e,A){return new lc(e,A)}o(yc,"defaultFactory");let Rc=(Hr=class extends uc{constructor(t){super();hA(this,Vs);if(!t||typeof t=="object"&&!(t instanceof _t)&&!t.uri)throw new Ds("Proxy uri is mandatory");const{clientFactory:s=yc}=t;if(typeof s!="function")throw new Ds("Proxy opts.clientFactory must be a function.");const r=HA(this,Vs,Wg).call(this,t),{href:n,origin:i,port:E,protocol:Q,username:C,password:I,hostname:a}=r;if(this[Cc]={uri:n,protocol:Q},this[cc]=t.interceptors?.ProxyAgent&&Array.isArray(t.interceptors.ProxyAgent)?t.interceptors.ProxyAgent:[],this[eo]=t.requestTls,this[iE]=t.proxyTls,this[Ar]=t.headers||{},t.auth&&t.token)throw new Ds("opts.auth cannot be used in combination with opts.token");t.auth?this[Ar]["proxy-authorization"]=`Basic ${t.auth}`:t.token?this[Ar]["proxy-authorization"]=t.token:C&&I&&(this[Ar]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(C)}:${decodeURIComponent(I)}`).toString("base64")}`);const f=oE({...t.proxyTls});this[QE]=oE({...t.requestTls}),this[Rs]=s(r,{connect:f}),this[ys]=new hc({...t,connect:async(h,L)=>{let c=h.host;h.port||(c+=`:${Dc(h.protocol)}`);try{const{socket:l,statusCode:S}=await this[Rs].connect({origin:i,port:E,path:c,signal:h.signal,headers:{...this[Ar],host:h.host},servername:this[iE]?.servername||a});if(S!==200&&(l.on("error",()=>{}).destroy(),L(new dc(`Proxy response (${S}) !== 200 when HTTP Tunneling`))),h.protocol!=="https:"){L(null,l);return}let k;this[eo]?k=this[eo].servername:k=h.servername,this[QE]({...h,servername:k,httpSocket:l},L)}catch(l){l.code==="ERR_TLS_CERT_ALTNAME_INVALID"?L(new fc(l)):L(l)}}})}dispatch(t,s){const r=wc(t.headers);if(kc(r),r&&!("host"in r)&&!("Host"in r)){const{host:n}=new _t(t.origin);r.host=n}return this[ys].dispatch({...t,headers:r},s)}async[Ic](){await this[ys].close(),await this[Rs].close()}async[ac](){await this[ys].destroy(),await this[Rs].destroy()}},Vs=new WeakSet,Wg=o(function(t){return typeof t=="string"?new _t(t):t instanceof _t?t:new _t(t.uri)},"#getUrl"),o(Hr,"ProxyAgent"),Hr);function wc(e){if(Array.isArray(e)){const A={};for(let t=0;tt.toLowerCase()==="proxy-authorization"))throw new Ds("Proxy-Authorization should be sent in ProxyAgent constructor")}o(kc,"throwIfProxyAuthIsSent");var Nc=Rc,wt={},to={exports:{}};const EE=RA,{Readable:Fc}=ue,{RequestAbortedError:gE,NotSupportedError:pc,InvalidArgumentError:Sc,AbortError:ro}=kA,BE=aA,{ReadableStreamFrom:Uc}=aA,Ae=Symbol("kConsume"),ws=Symbol("kReading"),Ze=Symbol("kBody"),CE=Symbol("kAbort"),IE=Symbol("kContentType"),aE=Symbol("kContentLength"),bc=o(()=>{},"noop"),ui=class ui extends Fc{constructor({resume:A,abort:t,contentType:s="",contentLength:r,highWaterMark:n=64*1024}){super({autoDestroy:!0,read:A,highWaterMark:n}),this._readableState.dataEmitted=!1,this[CE]=t,this[Ae]=null,this[Ze]=null,this[IE]=s,this[aE]=r,this[ws]=!1}destroy(A){return!A&&!this._readableState.endEmitted&&(A=new gE),A&&this[CE](),super.destroy(A)}_destroy(A,t){queueMicrotask(()=>{t(A)})}on(A,...t){return(A==="data"||A==="readable")&&(this[ws]=!0),super.on(A,...t)}addListener(A,...t){return this.on(A,...t)}off(A,...t){const s=super.off(A,...t);return(A==="data"||A==="readable")&&(this[ws]=this.listenerCount("data")>0||this.listenerCount("readable")>0),s}removeListener(A,...t){return this.off(A,...t)}push(A){return this[Ae]&&A!==null?(oo(this[Ae],A),this[ws]?super.push(A):!0):super.push(A)}async text(){return ks(this,"text")}async json(){return ks(this,"json")}async blob(){return ks(this,"blob")}async arrayBuffer(){return ks(this,"arrayBuffer")}async formData(){throw new pc}get bodyUsed(){return BE.isDisturbed(this)}get body(){return this[Ze]||(this[Ze]=Uc(this),this[Ae]&&(this[Ze].getReader(),EE(this[Ze].locked))),this[Ze]}async dump(A){let t=Number.isFinite(A?.limit)?A.limit:131072;const s=A?.signal;if(s!=null&&(typeof s!="object"||!("aborted"in s)))throw new Sc("signal must be an AbortSignal");return s?.throwIfAborted(),this._readableState.closeEmitted?null:await new Promise((r,n)=>{this[aE]>t&&this.destroy(new ro);const i=o(()=>{this.destroy(s.reason??new ro)},"onAbort");s?.addEventListener("abort",i),this.on("close",function(){s?.removeEventListener("abort",i),s?.aborted?n(s.reason??new ro):r(null)}).on("error",bc).on("data",function(E){t-=E.length,t<=0&&this.destroy()}).resume()})}};o(ui,"BodyReadable");let so=ui;function mc(e){return e[Ze]&&e[Ze].locked===!0||e[Ae]}o(mc,"isLocked");function Lc(e){return BE.isDisturbed(e)||mc(e)}o(Lc,"isUnusable");async function ks(e,A){return EE(!e[Ae]),new Promise((t,s)=>{if(Lc(e)){const r=e._readableState;r.destroyed&&r.closeEmitted===!1?e.on("error",n=>{s(n)}).on("close",()=>{s(new TypeError("unusable"))}):s(r.errored??new TypeError("unusable"))}else queueMicrotask(()=>{e[Ae]={type:A,stream:e,resolve:t,reject:s,length:0,body:[]},e.on("error",function(r){io(this[Ae],r)}).on("close",function(){this[Ae].body!==null&&io(this[Ae],new gE)}),Mc(e[Ae])})})}o(ks,"consume");function Mc(e){if(e.body===null)return;const{_readableState:A}=e.stream;if(A.bufferIndex){const t=A.bufferIndex,s=A.buffer.length;for(let r=t;r2&&t[0]===239&&t[1]===187&&t[2]===191?3:0;return t.utf8Slice(r,s)}o(no,"chunksDecode$1");function cE(e){const{type:A,body:t,resolve:s,stream:r,length:n}=e;try{if(A==="text")s(no(t,n));else if(A==="json")s(JSON.parse(no(t,n)));else if(A==="arrayBuffer"){const i=new Uint8Array(n);let E=0;for(const Q of t)i.set(Q,E),E+=Q.byteLength;s(i.buffer)}else A==="blob"&&s(new Blob(t,{type:r[IE]}));io(e)}catch(i){r.destroy(i)}}o(cE,"consumeEnd");function oo(e,A){e.length+=A.length,e.body.push(A)}o(oo,"consumePush");function io(e,A){e.body!==null&&(A?e.reject(A):e.resolve(),e.type=null,e.stream=null,e.resolve=null,e.reject=null,e.length=0,e.body=null)}o(io,"consumeFinish");var hE={Readable:so,chunksDecode:no};const Yc=RA,{ResponseStatusCodeError:lE}=kA,{chunksDecode:uE}=hE,Jc=128*1024;async function Gc({callback:e,body:A,contentType:t,statusCode:s,statusMessage:r,headers:n}){Yc(A);let i=[],E=0;for await(const a of A)if(i.push(a),E+=a.length,E>Jc){i=null;break}const Q=`Response status code ${s}${r?`: ${r}`:""}`;if(s===204||!t||!i){queueMicrotask(()=>e(new lE(Q,s,n)));return}const C=Error.stackTraceLimit;Error.stackTraceLimit=0;let I;try{dE(t)?I=JSON.parse(uE(i,E)):fE(t)&&(I=uE(i,E))}catch{}finally{Error.stackTraceLimit=C}queueMicrotask(()=>e(new lE(Q,s,n,I)))}o(Gc,"getResolveErrorBodyCallback$2");const dE=o(e=>e.length>15&&e[11]==="/"&&e[0]==="a"&&e[1]==="p"&&e[2]==="p"&&e[3]==="l"&&e[4]==="i"&&e[5]==="c"&&e[6]==="a"&&e[7]==="t"&&e[8]==="i"&&e[9]==="o"&&e[10]==="n"&&e[12]==="j"&&e[13]==="s"&&e[14]==="o"&&e[15]==="n","isContentTypeApplicationJson"),fE=o(e=>e.length>4&&e[4]==="/"&&e[0]==="t"&&e[1]==="e"&&e[2]==="x"&&e[3]==="t","isContentTypeText");var DE={getResolveErrorBodyCallback:Gc,isContentTypeApplicationJson:dE,isContentTypeText:fE};const{addAbortListener:Tc}=aA,{RequestAbortedError:Hc}=kA,kt=Symbol("kListener"),Ne=Symbol("kSignal");function yE(e){e.abort?e.abort(e[Ne]?.reason):e.reason=e[Ne]?.reason??new Hc,RE(e)}o(yE,"abort");function Vc(e,A){if(e.reason=null,e[Ne]=null,e[kt]=null,!!A){if(A.aborted){yE(e);return}e[Ne]=A,e[kt]=()=>{yE(e)},Tc(e[Ne],e[kt])}}o(Vc,"addSignal$5");function RE(e){e[Ne]&&("removeEventListener"in e[Ne]?e[Ne].removeEventListener("abort",e[kt]):e[Ne].removeListener("abort",e[kt]),e[Ne]=null,e[kt]=null)}o(RE,"removeSignal$5");var er={addSignal:Vc,removeSignal:RE};const vc=RA,{Readable:xc}=hE,{InvalidArgumentError:Nt}=kA,Fe=aA,{getResolveErrorBodyCallback:Wc}=DE,{AsyncResource:qc}=Tt,{addSignal:Oc,removeSignal:wE}=er,di=class di extends qc{constructor(A,t){if(!A||typeof A!="object")throw new Nt("invalid opts");const{signal:s,method:r,opaque:n,body:i,onInfo:E,responseHeaders:Q,throwOnError:C,highWaterMark:I}=A;try{if(typeof t!="function")throw new Nt("invalid callback");if(I&&(typeof I!="number"||I<0))throw new Nt("invalid highWaterMark");if(s&&typeof s.on!="function"&&typeof s.addEventListener!="function")throw new Nt("signal must be an EventEmitter or EventTarget");if(r==="CONNECT")throw new Nt("invalid method");if(E&&typeof E!="function")throw new Nt("invalid onInfo callback");super("UNDICI_REQUEST")}catch(a){throw Fe.isStream(i)&&Fe.destroy(i.on("error",Fe.nop),a),a}this.responseHeaders=Q||null,this.opaque=n||null,this.callback=t,this.res=null,this.abort=null,this.body=i,this.trailers={},this.context=null,this.onInfo=E||null,this.throwOnError=C,this.highWaterMark=I,Fe.isStream(i)&&i.on("error",a=>{this.onError(a)}),Oc(this,s)}onConnect(A,t){if(this.reason){A(this.reason);return}vc(this.callback),this.abort=A,this.context=t}onHeaders(A,t,s,r){const{callback:n,opaque:i,abort:E,context:Q,responseHeaders:C,highWaterMark:I}=this,a=C==="raw"?Fe.parseRawHeaders(t):Fe.parseHeaders(t);if(A<200){this.onInfo&&this.onInfo({statusCode:A,headers:a});return}const f=C==="raw"?Fe.parseHeaders(t):a,h=f["content-type"],L=f["content-length"],c=new xc({resume:s,abort:E,contentType:h,contentLength:L,highWaterMark:I});this.callback=null,this.res=c,n!==null&&(this.throwOnError&&A>=400?this.runInAsyncScope(Wc,null,{callback:n,body:c,contentType:h,statusCode:A,statusMessage:r,headers:a}):this.runInAsyncScope(n,null,null,{statusCode:A,headers:a,trailers:this.trailers,opaque:i,body:c,context:Q}))}onData(A){const{res:t}=this;return t.push(A)}onComplete(A){const{res:t}=this;wE(this),Fe.parseHeaders(A,this.trailers),t.push(null)}onError(A){const{res:t,callback:s,body:r,opaque:n}=this;wE(this),s&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(s,null,A,{opaque:n})})),t&&(this.res=null,queueMicrotask(()=>{Fe.destroy(t,A)})),r&&(this.body=null,Fe.destroy(r,A))}};o(di,"RequestHandler");let Ns=di;function kE(e,A){if(A===void 0)return new Promise((t,s)=>{kE.call(this,e,(r,n)=>r?s(r):t(n))});try{this.dispatch(e,new Ns(e,A))}catch(t){if(typeof A!="function")throw t;const s=e?.opaque;queueMicrotask(()=>A(t,{opaque:s}))}}o(kE,"request$1"),to.exports=kE,to.exports.RequestHandler=Ns;var Pc=to.exports;const Zc=RA,{finished:Xc,PassThrough:Kc}=ue,{InvalidArgumentError:Ft,InvalidReturnValueError:zc}=kA,ae=aA,{getResolveErrorBodyCallback:jc}=DE,{AsyncResource:$c}=Tt,{addSignal:_c,removeSignal:NE}=er,fi=class fi extends $c{constructor(A,t,s){if(!A||typeof A!="object")throw new Ft("invalid opts");const{signal:r,method:n,opaque:i,body:E,onInfo:Q,responseHeaders:C,throwOnError:I}=A;try{if(typeof s!="function")throw new Ft("invalid callback");if(typeof t!="function")throw new Ft("invalid factory");if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new Ft("signal must be an EventEmitter or EventTarget");if(n==="CONNECT")throw new Ft("invalid method");if(Q&&typeof Q!="function")throw new Ft("invalid onInfo callback");super("UNDICI_STREAM")}catch(a){throw ae.isStream(E)&&ae.destroy(E.on("error",ae.nop),a),a}this.responseHeaders=C||null,this.opaque=i||null,this.factory=t,this.callback=s,this.res=null,this.abort=null,this.context=null,this.trailers=null,this.body=E,this.onInfo=Q||null,this.throwOnError=I||!1,ae.isStream(E)&&E.on("error",a=>{this.onError(a)}),_c(this,r)}onConnect(A,t){if(this.reason){A(this.reason);return}Zc(this.callback),this.abort=A,this.context=t}onHeaders(A,t,s,r){const{factory:n,opaque:i,context:E,callback:Q,responseHeaders:C}=this,I=C==="raw"?ae.parseRawHeaders(t):ae.parseHeaders(t);if(A<200){this.onInfo&&this.onInfo({statusCode:A,headers:I});return}this.factory=null;let a;if(this.throwOnError&&A>=400){const L=(C==="raw"?ae.parseHeaders(t):I)["content-type"];a=new Kc,this.callback=null,this.runInAsyncScope(jc,null,{callback:Q,body:a,contentType:L,statusCode:A,statusMessage:r,headers:I})}else{if(n===null)return;if(a=this.runInAsyncScope(n,null,{statusCode:A,headers:I,opaque:i,context:E}),!a||typeof a.write!="function"||typeof a.end!="function"||typeof a.on!="function")throw new zc("expected Writable");Xc(a,{readable:!1},h=>{const{callback:L,res:c,opaque:l,trailers:S,abort:k}=this;this.res=null,(h||!c.readable)&&ae.destroy(c,h),this.callback=null,this.runInAsyncScope(L,null,h||null,{opaque:l,trailers:S}),h&&k()})}return a.on("drain",s),this.res=a,(a.writableNeedDrain!==void 0?a.writableNeedDrain:a._writableState?.needDrain)!==!0}onData(A){const{res:t}=this;return t?t.write(A):!0}onComplete(A){const{res:t}=this;NE(this),t&&(this.trailers=ae.parseHeaders(A),t.end())}onError(A){const{res:t,callback:s,opaque:r,body:n}=this;NE(this),this.factory=null,t?(this.res=null,ae.destroy(t,A)):s&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(s,null,A,{opaque:r})})),n&&(this.body=null,ae.destroy(n,A))}};o(fi,"StreamHandler");let Qo=fi;function FE(e,A,t){if(t===void 0)return new Promise((s,r)=>{FE.call(this,e,A,(n,i)=>n?r(n):s(i))});try{this.dispatch(e,new Qo(e,A,t))}catch(s){if(typeof t!="function")throw s;const r=e?.opaque;queueMicrotask(()=>t(s,{opaque:r}))}}o(FE,"stream");var Ah=FE;const{Readable:pE,Duplex:eh,PassThrough:th}=ue,{InvalidArgumentError:tr,InvalidReturnValueError:rh,RequestAbortedError:Eo}=kA,oe=aA,{AsyncResource:sh}=Tt,{addSignal:nh,removeSignal:oh}=er,SE=RA,pt=Symbol("resume"),Di=class Di extends pE{constructor(){super({autoDestroy:!0}),this[pt]=null}_read(){const{[pt]:A}=this;A&&(this[pt]=null,A())}_destroy(A,t){this._read(),t(A)}};o(Di,"PipelineRequest");let go=Di;const yi=class yi extends pE{constructor(A){super({autoDestroy:!0}),this[pt]=A}_read(){this[pt]()}_destroy(A,t){!A&&!this._readableState.endEmitted&&(A=new Eo),t(A)}};o(yi,"PipelineResponse");let Bo=yi;const Ri=class Ri extends sh{constructor(A,t){if(!A||typeof A!="object")throw new tr("invalid opts");if(typeof t!="function")throw new tr("invalid handler");const{signal:s,method:r,opaque:n,onInfo:i,responseHeaders:E}=A;if(s&&typeof s.on!="function"&&typeof s.addEventListener!="function")throw new tr("signal must be an EventEmitter or EventTarget");if(r==="CONNECT")throw new tr("invalid method");if(i&&typeof i!="function")throw new tr("invalid onInfo callback");super("UNDICI_PIPELINE"),this.opaque=n||null,this.responseHeaders=E||null,this.handler=t,this.abort=null,this.context=null,this.onInfo=i||null,this.req=new go().on("error",oe.nop),this.ret=new eh({readableObjectMode:A.objectMode,autoDestroy:!0,read:()=>{const{body:Q}=this;Q?.resume&&Q.resume()},write:(Q,C,I)=>{const{req:a}=this;a.push(Q,C)||a._readableState.destroyed?I():a[pt]=I},destroy:(Q,C)=>{const{body:I,req:a,res:f,ret:h,abort:L}=this;!Q&&!h._readableState.endEmitted&&(Q=new Eo),L&&Q&&L(),oe.destroy(I,Q),oe.destroy(a,Q),oe.destroy(f,Q),oh(this),C(Q)}}).on("prefinish",()=>{const{req:Q}=this;Q.push(null)}),this.res=null,nh(this,s)}onConnect(A,t){const{ret:s,res:r}=this;if(this.reason){A(this.reason);return}SE(!r,"pipeline cannot be retried"),SE(!s.destroyed),this.abort=A,this.context=t}onHeaders(A,t,s){const{opaque:r,handler:n,context:i}=this;if(A<200){if(this.onInfo){const Q=this.responseHeaders==="raw"?oe.parseRawHeaders(t):oe.parseHeaders(t);this.onInfo({statusCode:A,headers:Q})}return}this.res=new Bo(s);let E;try{this.handler=null;const Q=this.responseHeaders==="raw"?oe.parseRawHeaders(t):oe.parseHeaders(t);E=this.runInAsyncScope(n,null,{statusCode:A,headers:Q,opaque:r,body:this.res,context:i})}catch(Q){throw this.res.on("error",oe.nop),Q}if(!E||typeof E.on!="function")throw new rh("expected Readable");E.on("data",Q=>{const{ret:C,body:I}=this;!C.push(Q)&&I.pause&&I.pause()}).on("error",Q=>{const{ret:C}=this;oe.destroy(C,Q)}).on("end",()=>{const{ret:Q}=this;Q.push(null)}).on("close",()=>{const{ret:Q}=this;Q._readableState.ended||oe.destroy(Q,new Eo)}),this.body=E}onData(A){const{res:t}=this;return t.push(A)}onComplete(A){const{res:t}=this;t.push(null)}onError(A){const{ret:t}=this;this.handler=null,oe.destroy(t,A)}};o(Ri,"PipelineHandler");let Co=Ri;function ih(e,A){try{const t=new Co(e,A);return this.dispatch({...e,body:t.req},t),t.ret}catch(t){return new th().destroy(t)}}o(ih,"pipeline");var Qh=ih;const{InvalidArgumentError:Io,SocketError:Eh}=kA,{AsyncResource:gh}=Tt,UE=aA,{addSignal:Bh,removeSignal:bE}=er,mE=RA,wi=class wi extends gh{constructor(A,t){if(!A||typeof A!="object")throw new Io("invalid opts");if(typeof t!="function")throw new Io("invalid callback");const{signal:s,opaque:r,responseHeaders:n}=A;if(s&&typeof s.on!="function"&&typeof s.addEventListener!="function")throw new Io("signal must be an EventEmitter or EventTarget");super("UNDICI_UPGRADE"),this.responseHeaders=n||null,this.opaque=r||null,this.callback=t,this.abort=null,this.context=null,Bh(this,s)}onConnect(A,t){if(this.reason){A(this.reason);return}mE(this.callback),this.abort=A,this.context=null}onHeaders(){throw new Eh("bad upgrade",null)}onUpgrade(A,t,s){const{callback:r,opaque:n,context:i}=this;mE.strictEqual(A,101),bE(this),this.callback=null;const E=this.responseHeaders==="raw"?UE.parseRawHeaders(t):UE.parseHeaders(t);this.runInAsyncScope(r,null,null,{headers:E,socket:s,opaque:n,context:i})}onError(A){const{callback:t,opaque:s}=this;bE(this),t&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(t,null,A,{opaque:s})}))}};o(wi,"UpgradeHandler");let ao=wi;function LE(e,A){if(A===void 0)return new Promise((t,s)=>{LE.call(this,e,(r,n)=>r?s(r):t(n))});try{const t=new ao(e,A);this.dispatch({...e,method:e.method||"GET",upgrade:e.protocol||"Websocket"},t)}catch(t){if(typeof A!="function")throw t;const s=e?.opaque;queueMicrotask(()=>A(t,{opaque:s}))}}o(LE,"upgrade");var Ch=LE;const Ih=RA,{AsyncResource:ah}=Tt,{InvalidArgumentError:co,SocketError:ch}=kA,ME=aA,{addSignal:hh,removeSignal:YE}=er,ki=class ki extends ah{constructor(A,t){if(!A||typeof A!="object")throw new co("invalid opts");if(typeof t!="function")throw new co("invalid callback");const{signal:s,opaque:r,responseHeaders:n}=A;if(s&&typeof s.on!="function"&&typeof s.addEventListener!="function")throw new co("signal must be an EventEmitter or EventTarget");super("UNDICI_CONNECT"),this.opaque=r||null,this.responseHeaders=n||null,this.callback=t,this.abort=null,hh(this,s)}onConnect(A,t){if(this.reason){A(this.reason);return}Ih(this.callback),this.abort=A,this.context=t}onHeaders(){throw new ch("bad connect",null)}onUpgrade(A,t,s){const{callback:r,opaque:n,context:i}=this;YE(this),this.callback=null;let E=t;E!=null&&(E=this.responseHeaders==="raw"?ME.parseRawHeaders(t):ME.parseHeaders(t)),this.runInAsyncScope(r,null,null,{statusCode:A,headers:E,socket:s,opaque:n,context:i})}onError(A){const{callback:t,opaque:s}=this;YE(this),t&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(t,null,A,{opaque:s})}))}};o(ki,"ConnectHandler");let ho=ki;function JE(e,A){if(A===void 0)return new Promise((t,s)=>{JE.call(this,e,(r,n)=>r?s(r):t(n))});try{const t=new ho(e,A);this.dispatch({...e,method:"CONNECT"},t)}catch(t){if(typeof A!="function")throw t;const s=e?.opaque;queueMicrotask(()=>A(t,{opaque:s}))}}o(JE,"connect");var lh=JE;wt.request=Pc,wt.stream=Ah,wt.pipeline=Qh,wt.upgrade=Ch,wt.connect=lh;const{UndiciError:uh}=kA;let dh=(Mt=class extends uh{constructor(A){super(A),Error.captureStackTrace(this,Mt),this.name="MockNotMatchedError",this.message=A||"The request does not match any registered mock dispatches",this.code="UND_MOCK_ERR_MOCK_NOT_MATCHED"}},o(Mt,"MockNotMatchedError"),Mt);var fh={MockNotMatchedError:dh},Fs={kAgent:Symbol("agent"),kOptions:Symbol("options"),kFactory:Symbol("factory"),kDispatches:Symbol("dispatches"),kDispatchKey:Symbol("dispatch key"),kDefaultHeaders:Symbol("default headers"),kDefaultTrailers:Symbol("default trailers"),kContentLength:Symbol("content length"),kMockAgent:Symbol("mock agent"),kMockAgentSet:Symbol("mock agent set"),kMockAgentGet:Symbol("mock agent get"),kMockDispatch:Symbol("mock dispatch"),kClose:Symbol("close"),kOriginalClose:Symbol("original agent close"),kOrigin:Symbol("origin"),kIsMockActive:Symbol("is mock active"),kNetConnect:Symbol("net connect"),kGetNetConnect:Symbol("get net connect"),kConnected:Symbol("connected")};const{MockNotMatchedError:rt}=fh,{kDispatches:ps,kMockAgent:Dh,kOriginalDispatch:yh,kOrigin:Rh,kGetNetConnect:wh}=Fs,{buildURL:kh}=aA,{STATUS_CODES:Nh}=Pr,{types:{isPromise:Fh}}=PA;function Me(e,A){return typeof e=="string"?e===A:e instanceof RegExp?e.test(A):typeof e=="function"?e(A)===!0:!1}o(Me,"matchValue");function GE(e){return Object.fromEntries(Object.entries(e).map(([A,t])=>[A.toLocaleLowerCase(),t]))}o(GE,"lowerCaseEntries");function TE(e,A){if(Array.isArray(e)){for(let t=0;t"u")return!0;if(typeof A!="object"||typeof e.headers!="object")return!1;for(const[t,s]of Object.entries(e.headers)){const r=TE(A,t);if(!Me(s,r))return!1}return!0}o(HE,"matchHeaders");function VE(e){if(typeof e!="string")return e;const A=e.split("?");if(A.length!==2)return e;const t=new URLSearchParams(A.pop());return t.sort(),[...A,t.toString()].join("?")}o(VE,"safeUrl");function ph(e,{path:A,method:t,body:s,headers:r}){const n=Me(e.path,A),i=Me(e.method,t),E=typeof e.body<"u"?Me(e.body,s):!0,Q=HE(e,r);return n&&i&&E&&Q}o(ph,"matchKey");function vE(e){return Buffer.isBuffer(e)?e:typeof e=="object"?JSON.stringify(e):e.toString()}o(vE,"getResponseData$1");function xE(e,A){const t=A.query?kh(A.path,A.query):A.path,s=typeof t=="string"?VE(t):t;let r=e.filter(({consumed:n})=>!n).filter(({path:n})=>Me(VE(n),s));if(r.length===0)throw new rt(`Mock dispatch not matched for path '${s}'`);if(r=r.filter(({method:n})=>Me(n,A.method)),r.length===0)throw new rt(`Mock dispatch not matched for method '${A.method}' on path '${s}'`);if(r=r.filter(({body:n})=>typeof n<"u"?Me(n,A.body):!0),r.length===0)throw new rt(`Mock dispatch not matched for body '${A.body}' on path '${s}'`);if(r=r.filter(n=>HE(n,A.headers)),r.length===0){const n=typeof A.headers=="object"?JSON.stringify(A.headers):A.headers;throw new rt(`Mock dispatch not matched for headers '${n}' on path '${s}'`)}return r[0]}o(xE,"getMockDispatch");function Sh(e,A,t){const s={timesInvoked:0,times:1,persist:!1,consumed:!1},r=typeof t=="function"?{callback:t}:{...t},n={...s,...A,pending:!0,data:{error:null,...r}};return e.push(n),n}o(Sh,"addMockDispatch$1");function uo(e,A){const t=e.findIndex(s=>s.consumed?ph(s,A):!1);t!==-1&&e.splice(t,1)}o(uo,"deleteMockDispatch");function WE(e){const{path:A,method:t,body:s,headers:r,query:n}=e;return{path:A,method:t,body:s,headers:r,query:n}}o(WE,"buildKey$1");function fo(e){const A=Object.keys(e),t=[];for(let s=0;s=f,s.pending=a0?setTimeout(()=>{h(this[ps])},C):h(this[ps]);function h(c,l=n){const S=Array.isArray(e.headers)?lo(e.headers):e.headers,k=typeof l=="function"?l({...e,headers:S}):l;if(Fh(k)){k.then(B=>h(c,B));return}const w=vE(k),U=fo(i),M=fo(E);A.onConnect?.(B=>A.onError(B),null),A.onHeaders?.(r,U,L,qE(r)),A.onData?.(Buffer.from(w)),A.onComplete?.(M),uo(c,t)}o(h,"handleReply");function L(){}return o(L,"resume"),!0}o(OE,"mockDispatch");function bh(){const e=this[Dh],A=this[Rh],t=this[yh];return o(function(r,n){if(e.isMockActive)try{OE.call(this,r,n)}catch(i){if(i instanceof rt){const E=e[wh]();if(E===!1)throw new rt(`${i.message}: subsequent request to origin ${A} was not allowed (net.connect disabled)`);if(PE(E,A))t.call(this,r,n);else throw new rt(`${i.message}: subsequent request to origin ${A} was not allowed (net.connect is not enabled for this origin)`)}else throw i}else t.call(this,r,n)},"dispatch")}o(bh,"buildMockDispatch$2");function PE(e,A){const t=new URL(A);return e===!0?!0:!!(Array.isArray(e)&&e.some(s=>Me(s,t.host)))}o(PE,"checkNetConnect");function mh(e){if(e){const{agent:A,...t}=e;return t}}o(mh,"buildMockOptions");var Do={getResponseData:vE,getMockDispatch:xE,addMockDispatch:Sh,deleteMockDispatch:uo,buildKey:WE,generateKeyValues:fo,matchValue:Me,getResponse:Uh,getStatusText:qE,mockDispatch:OE,buildMockDispatch:bh,checkNetConnect:PE,buildMockOptions:mh,getHeaderByName:TE,buildHeadersFromArray:lo},Ss={};const{getResponseData:Lh,buildKey:Mh,addMockDispatch:yo}=Do,{kDispatches:Us,kDispatchKey:bs,kDefaultHeaders:Ro,kDefaultTrailers:wo,kContentLength:ko,kMockDispatch:ms}=Fs,{InvalidArgumentError:pe}=kA,{buildURL:Yh}=aA,Ni=class Ni{constructor(A){this[ms]=A}delay(A){if(typeof A!="number"||!Number.isInteger(A)||A<=0)throw new pe("waitInMs must be a valid integer > 0");return this[ms].delay=A,this}persist(){return this[ms].persist=!0,this}times(A){if(typeof A!="number"||!Number.isInteger(A)||A<=0)throw new pe("repeatTimes must be a valid integer > 0");return this[ms].times=A,this}};o(Ni,"MockScope");let St=Ni,Jh=(Vr=class{constructor(A,t){if(typeof A!="object")throw new pe("opts must be an object");if(typeof A.path>"u")throw new pe("opts.path must be defined");if(typeof A.method>"u"&&(A.method="GET"),typeof A.path=="string")if(A.query)A.path=Yh(A.path,A.query);else{const s=new URL(A.path,"data://");A.path=s.pathname+s.search}typeof A.method=="string"&&(A.method=A.method.toUpperCase()),this[bs]=Mh(A),this[Us]=t,this[Ro]={},this[wo]={},this[ko]=!1}createMockScopeDispatchData({statusCode:A,data:t,responseOptions:s}){const r=Lh(t),n=this[ko]?{"content-length":r.length}:{},i={...this[Ro],...n,...s.headers},E={...this[wo],...s.trailers};return{statusCode:A,data:t,headers:i,trailers:E}}validateReplyParameters(A){if(typeof A.statusCode>"u")throw new pe("statusCode must be defined");if(typeof A.responseOptions!="object"||A.responseOptions===null)throw new pe("responseOptions must be an object")}reply(A){if(typeof A=="function"){const n=o(E=>{const Q=A(E);if(typeof Q!="object"||Q===null)throw new pe("reply options callback must return an object");const C={data:"",responseOptions:{},...Q};return this.validateReplyParameters(C),{...this.createMockScopeDispatchData(C)}},"wrappedDefaultsCallback"),i=yo(this[Us],this[bs],n);return new St(i)}const t={statusCode:A,data:arguments[1]===void 0?"":arguments[1],responseOptions:arguments[2]===void 0?{}:arguments[2]};this.validateReplyParameters(t);const s=this.createMockScopeDispatchData(t),r=yo(this[Us],this[bs],s);return new St(r)}replyWithError(A){if(typeof A>"u")throw new pe("error must be defined");const t=yo(this[Us],this[bs],{error:A});return new St(t)}defaultReplyHeaders(A){if(typeof A>"u")throw new pe("headers must be defined");return this[Ro]=A,this}defaultReplyTrailers(A){if(typeof A>"u")throw new pe("trailers must be defined");return this[wo]=A,this}replyContentLength(){return this[ko]=!0,this}},o(Vr,"MockInterceptor"),Vr);Ss.MockInterceptor=Jh,Ss.MockScope=St;const{promisify:Gh}=PA,Th=xn,{buildMockDispatch:Hh}=Do,{kDispatches:ZE,kMockAgent:XE,kClose:KE,kOriginalClose:zE,kOrigin:jE,kOriginalDispatch:Vh,kConnected:No}=Fs,{MockInterceptor:vh}=Ss,$E=LA,{InvalidArgumentError:xh}=kA,Fi=class Fi extends Th{constructor(A,t){if(super(A,t),!t||!t.agent||typeof t.agent.dispatch!="function")throw new xh("Argument opts.agent must implement Agent");this[XE]=t.agent,this[jE]=A,this[ZE]=[],this[No]=1,this[Vh]=this.dispatch,this[zE]=this.close.bind(this),this.dispatch=Hh.call(this),this.close=this[KE]}get[$E.kConnected](){return this[No]}intercept(A){return new vh(A,this[ZE])}async[KE](){await Gh(this[zE])(),this[No]=0,this[XE][$E.kClients].delete(this[jE])}};o(Fi,"MockClient");let _E=Fi;const{promisify:Wh}=PA,qh=$n,{buildMockDispatch:Oh}=Do,{kDispatches:Ag,kMockAgent:eg,kClose:tg,kOriginalClose:rg,kOrigin:sg,kOriginalDispatch:Ph,kConnected:Fo}=Fs,{MockInterceptor:Zh}=Ss,ng=LA,{InvalidArgumentError:Xh}=kA,pi=class pi extends qh{constructor(A,t){if(super(A,t),!t||!t.agent||typeof t.agent.dispatch!="function")throw new Xh("Argument opts.agent must implement Agent");this[eg]=t.agent,this[sg]=A,this[Ag]=[],this[Fo]=1,this[Ph]=this.dispatch,this[rg]=this.close.bind(this),this.dispatch=Oh.call(this),this.close=this[tg]}get[ng.kConnected](){return this[Fo]}intercept(A){return new Zh(A,this[Ag])}async[tg](){await Wh(this[rg])(),this[Fo]=0,this[eg][ng.kClients].delete(this[sg])}};o(pi,"MockPool");let og=pi;process.versions.icu,process.versions.icu;const ig=Symbol.for("undici.globalDispatcher.1"),{InvalidArgumentError:Kh}=kA,zh=Ao;Eg()===void 0&&Qg(new zh);function Qg(e){if(!e||typeof e.dispatch!="function")throw new Kh("Argument agent must implement Agent");Object.defineProperty(globalThis,ig,{value:e,writable:!0,enumerable:!1,configurable:!1})}o(Qg,"setGlobalDispatcher$1");function Eg(){return globalThis[ig]}o(Eg,"getGlobalDispatcher$1");var po={setGlobalDispatcher:Qg,getGlobalDispatcher:Eg},So,gg;function Ut(){if(gg)return So;gg=1;const{kHeadersList:e,kConstruct:A}=LA,{kGuard:t}=Te(),{kEnumerableProperty:s}=aA,{iteratorMixin:r,isValidHeaderName:n,isValidHeaderValue:i}=Ee(),{webidl:E}=vA(),Q=RA,C=PA,I=Symbol("headers map"),a=Symbol("headers map sorted");function f(M){return M===10||M===13||M===9||M===32}o(f,"isHTTPWhiteSpaceCharCode");function h(M){let B=0,D=M.length;for(;D>B&&f(M.charCodeAt(D-1));)--D;for(;D>B&&f(M.charCodeAt(B));)++B;return B===0&&D===M.length?M:M.substring(B,D)}o(h,"headerValueNormalize");function L(M,B){if(Array.isArray(B))for(let D=0;D>","record"]})}o(L,"fill");function c(M,B,D){if(D=h(D),n(B)){if(!i(D))throw E.errors.invalidArgument({prefix:"Headers.append",value:D,type:"header value"})}else throw E.errors.invalidArgument({prefix:"Headers.append",value:B,type:"header name"});if(M[t]==="immutable")throw new TypeError("immutable");return M[t],M[e].append(B,D,!1)}o(c,"appendHeader");function l(M,B){return M[0]>1),D[b][0]<=m[0]?u=b+1:N=b;if(d!==b){for(F=d;F>u;)D[F]=D[--F];D[u]=m}}if(!G.next().done)throw new TypeError("Unreachable");return D}else{let G=0;for(const{0:g,1:{value:d}}of this[I])D[G++]=[g,d],Q(d!==null);return D.sort(l)}}};o(w,"HeadersList");let S=w;const U=class U{constructor(B=void 0){B!==A&&(this[e]=new S,this[t]="none",B!==void 0&&(B=E.converters.HeadersInit(B),L(this,B)))}append(B,D){return E.brandCheck(this,U),E.argumentLengthCheck(arguments,2,{header:"Headers.append"}),B=E.converters.ByteString(B),D=E.converters.ByteString(D),c(this,B,D)}delete(B){if(E.brandCheck(this,U),E.argumentLengthCheck(arguments,1,{header:"Headers.delete"}),B=E.converters.ByteString(B),!n(B))throw E.errors.invalidArgument({prefix:"Headers.delete",value:B,type:"header name"});if(this[t]==="immutable")throw new TypeError("immutable");this[t],this[e].contains(B,!1)&&this[e].delete(B,!1)}get(B){if(E.brandCheck(this,U),E.argumentLengthCheck(arguments,1,{header:"Headers.get"}),B=E.converters.ByteString(B),!n(B))throw E.errors.invalidArgument({prefix:"Headers.get",value:B,type:"header name"});return this[e].get(B,!1)}has(B){if(E.brandCheck(this,U),E.argumentLengthCheck(arguments,1,{header:"Headers.has"}),B=E.converters.ByteString(B),!n(B))throw E.errors.invalidArgument({prefix:"Headers.has",value:B,type:"header name"});return this[e].contains(B,!1)}set(B,D){if(E.brandCheck(this,U),E.argumentLengthCheck(arguments,2,{header:"Headers.set"}),B=E.converters.ByteString(B),D=E.converters.ByteString(D),D=h(D),n(B)){if(!i(D))throw E.errors.invalidArgument({prefix:"Headers.set",value:D,type:"header value"})}else throw E.errors.invalidArgument({prefix:"Headers.set",value:B,type:"header name"});if(this[t]==="immutable")throw new TypeError("immutable");this[t],this[e].set(B,D,!1)}getSetCookie(){E.brandCheck(this,U);const B=this[e].cookies;return B?[...B]:[]}get[a](){if(this[e][a])return this[e][a];const B=[],D=this[e].toSortedArray(),G=this[e].cookies;if(G===null||G.length===1)return this[e][a]=D;for(let g=0;g>"](M,B.bind(M)):E.converters["record"](M)}throw E.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence>","record"]})},So={fill:L,compareHeaderName:l,Headers:k,HeadersList:S},So}o(Ut,"requireHeaders");var Uo,Bg;function Ls(){if(Bg)return Uo;Bg=1;const{Headers:e,HeadersList:A,fill:t}=Ut(),{extractBody:s,cloneBody:r,mixinBody:n}=ns(),i=aA,E=PA,{kEnumerableProperty:Q}=i,{isValidReasonPhrase:C,isCancelled:I,isAborted:a,isBlobLike:f,serializeJavascriptValueToJSONString:h,isErrorLike:L,isomorphicEncode:c}=Ee(),{redirectStatusSet:l,nullBodyStatus:S}=rs(),{kState:k,kHeaders:w,kGuard:U,kRealm:M}=Te(),{webidl:B}=vA(),{FormData:D}=ss(),{getGlobalOrigin:G}=lt(),{URLSerializer:g}=_A(),{kHeadersList:d,kConstruct:F}=LA,N=RA,{types:u}=PA,b=new TextEncoder("utf-8"),$=class ${static error(){const q={settingsObject:{}};return X(Z(),"immutable",q)}static json(q,z={}){B.argumentLengthCheck(arguments,1,{header:"Response.json"}),z!==null&&(z=B.converters.ResponseInit(z));const rA=b.encode(h(q)),QA=s(rA),CA={settingsObject:{}},IA=X(v({}),"response",CA);return uA(IA,z,{body:QA[0],type:"application/json"}),IA}static redirect(q,z=302){const rA={settingsObject:{}};B.argumentLengthCheck(arguments,1,{header:"Response.redirect"}),q=B.converters.USVString(q),z=B.converters["unsigned short"](z);let QA;try{QA=new URL(q,G())}catch(nA){throw new TypeError(`Failed to parse URL from ${q}`,{cause:nA})}if(!l.has(z))throw new RangeError(`Invalid status code ${z}`);const CA=X(v({}),"immutable",rA);CA[k].status=z;const IA=c(g(QA));return CA[k].headersList.append("location",IA,!0),CA}constructor(q=null,z={}){if(q===F)return;q!==null&&(q=B.converters.BodyInit(q)),z=B.converters.ResponseInit(z),this[M]={settingsObject:{}},this[k]=v({}),this[w]=new e(F),this[w][U]="response",this[w][d]=this[k].headersList,this[w][M]=this[M];let rA=null;if(q!=null){const[QA,CA]=s(q);rA={body:QA,type:CA}}uA(this,z,rA)}get type(){return B.brandCheck(this,$),this[k].type}get url(){B.brandCheck(this,$);const q=this[k].urlList,z=q[q.length-1]??null;return z===null?"":g(z,!0)}get redirected(){return B.brandCheck(this,$),this[k].urlList.length>1}get status(){return B.brandCheck(this,$),this[k].status}get ok(){return B.brandCheck(this,$),this[k].status>=200&&this[k].status<=299}get statusText(){return B.brandCheck(this,$),this[k].statusText}get headers(){return B.brandCheck(this,$),this[w]}get body(){return B.brandCheck(this,$),this[k].body?this[k].body.stream:null}get bodyUsed(){return B.brandCheck(this,$),!!this[k].body&&i.isDisturbed(this[k].body.stream)}clone(){if(B.brandCheck(this,$),this.bodyUsed||this.body?.locked)throw B.errors.exception({header:"Response.clone",message:"Body has already been consumed."});const q=T(this[k]);return X(q,this[w][U],this[M])}[E.inspect.custom](q,z){z.depth===null&&(z.depth=2),z.colors??(z.colors=!0);const rA={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${E.formatWithOptions(z,rA)}`}};o($,"Response");let m=$;n(m),Object.defineProperties(m.prototype,{type:Q,url:Q,status:Q,ok:Q,redirected:Q,statusText:Q,headers:Q,clone:Q,body:Q,bodyUsed:Q,[Symbol.toStringTag]:{value:"Response",configurable:!0}}),Object.defineProperties(m,{json:Q,redirect:Q,error:Q});function T(V){if(V.internalResponse)return K(T(V.internalResponse),V.type);const q=v({...V,body:null});return V.body!=null&&(q.body=r(V.body)),q}o(T,"cloneResponse");function v(V){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...V,headersList:V?.headersList?new A(V?.headersList):new A,urlList:V?.urlList?[...V.urlList]:[]}}o(v,"makeResponse");function Z(V){const q=L(V);return v({type:"error",status:0,error:q?V:new Error(V&&String(V)),aborted:V&&V.name==="AbortError"})}o(Z,"makeNetworkError");function P(V){return V.type==="error"&&V.status===0}o(P,"isNetworkError");function AA(V,q){return q={internalResponse:V,...q},new Proxy(V,{get(z,rA){return rA in q?q[rA]:z[rA]},set(z,rA,QA){return N(!(rA in q)),z[rA]=QA,!0}})}o(AA,"makeFilteredResponse");function K(V,q){if(q==="basic")return AA(V,{type:"basic",headersList:V.headersList});if(q==="cors")return AA(V,{type:"cors",headersList:V.headersList});if(q==="opaque")return AA(V,{type:"opaque",urlList:Object.freeze([]),status:0,statusText:"",body:null});if(q==="opaqueredirect")return AA(V,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null});N(!1)}o(K,"filterResponse");function tA(V,q=null){return N(I(V)),a(V)?Z(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:q})):Z(Object.assign(new DOMException("Request was cancelled."),{cause:q}))}o(tA,"makeAppropriateNetworkError");function uA(V,q,z){if(q.status!==null&&(q.status<200||q.status>599))throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.');if("statusText"in q&&q.statusText!=null&&!C(String(q.statusText)))throw new TypeError("Invalid statusText");if("status"in q&&q.status!=null&&(V[k].status=q.status),"statusText"in q&&q.statusText!=null&&(V[k].statusText=q.statusText),"headers"in q&&q.headers!=null&&t(V[w],q.headers),z){if(S.includes(V.status))throw B.errors.exception({header:"Response constructor",message:`Invalid response status code ${V.status}`});V[k].body=z.body,z.type!=null&&!V[k].headersList.contains("content-type",!0)&&V[k].headersList.append("content-type",z.type,!0)}}o(uA,"initializeResponse");function X(V,q,z){const rA=new m(F);return rA[k]=V,rA[M]=z,rA[w]=new e(F),rA[w][d]=V.headersList,rA[w][U]=q,rA[w][M]=z,rA}return o(X,"fromInnerResponse"),B.converters.ReadableStream=B.interfaceConverter(ReadableStream),B.converters.FormData=B.interfaceConverter(D),B.converters.URLSearchParams=B.interfaceConverter(URLSearchParams),B.converters.XMLHttpRequestBodyInit=function(V){return typeof V=="string"?B.converters.USVString(V):f(V)?B.converters.Blob(V,{strict:!1}):ArrayBuffer.isView(V)||u.isArrayBuffer(V)?B.converters.BufferSource(V):i.isFormDataLike(V)?B.converters.FormData(V,{strict:!1}):V instanceof URLSearchParams?B.converters.URLSearchParams(V):B.converters.DOMString(V)},B.converters.BodyInit=function(V){return V instanceof ReadableStream?B.converters.ReadableStream(V):V?.[Symbol.asyncIterator]?V:B.converters.XMLHttpRequestBodyInit(V)},B.converters.ResponseInit=B.dictionaryConverter([{key:"status",converter:B.converters["unsigned short"],defaultValue:200},{key:"statusText",converter:B.converters.ByteString,defaultValue:""},{key:"headers",converter:B.converters.HeadersInit}]),Uo={isNetworkError:P,makeNetworkError:Z,makeResponse:v,makeAppropriateNetworkError:tA,filterResponse:K,Response:m,cloneResponse:T,fromInnerResponse:X},Uo}o(Ls,"requireResponse");var bo,Cg;function jh(){if(Cg)return bo;Cg=1;const{kConnected:e,kSize:A}=LA,r=class r{constructor(E){this.value=E}deref(){return this.value[e]===0&&this.value[A]===0?void 0:this.value}};o(r,"CompatWeakRef");let t=r;const n=class n{constructor(E){this.finalizer=E}register(E,Q){E.on&&E.on("disconnect",()=>{E[e]===0&&E[A]===0&&this.finalizer(Q)})}unregister(E){}};o(n,"CompatFinalizer");let s=n;return bo=o(function(){return process.env.NODE_V8_COVERAGE?{WeakRef:t,FinalizationRegistry:s}:{WeakRef,FinalizationRegistry}},"dispatcherWeakref"),bo}o(jh,"requireDispatcherWeakref");var mo,Ig;function rr(){if(Ig)return mo;Ig=1;const{extractBody:e,mixinBody:A,cloneBody:t}=ns(),{Headers:s,fill:r,HeadersList:n}=Ut(),{FinalizationRegistry:i}=jh()(),E=aA,Q=PA,{isValidHTTPToken:C,sameOrigin:I,normalizeMethod:a,makePolicyContainer:f,normalizeMethodRecord:h}=Ee(),{forbiddenMethodsSet:L,corsSafeListedMethodsSet:c,referrerPolicy:l,requestRedirect:S,requestMode:k,requestCredentials:w,requestCache:U,requestDuplex:M}=rs(),{kEnumerableProperty:B}=E,{kHeaders:D,kSignal:G,kState:g,kGuard:d,kRealm:F,kDispatcher:N}=Te(),{webidl:u}=vA(),{getGlobalOrigin:b}=lt(),{URLSerializer:m}=_A(),{kHeadersList:T,kConstruct:v}=LA,Z=RA,{getMaxListeners:P,setMaxListeners:AA,getEventListeners:K,defaultMaxListeners:tA}=Zr,uA=Symbol("abortController"),X=new i(({signal:CA,abort:IA})=>{CA.removeEventListener("abort",IA)});let $=!1;const QA=class QA{constructor(IA,nA={}){if(IA===v)return;u.argumentLengthCheck(arguments,1,{header:"Request constructor"}),IA=u.converters.RequestInfo(IA),nA=u.converters.RequestInit(nA),this[F]={settingsObject:{baseUrl:b(),get origin(){return this.baseUrl?.origin},policyContainer:f()}};let eA=null,YA=null;const nt=this[F].settingsObject.baseUrl;let TA=null;if(typeof IA=="string"){this[N]=nA.dispatcher;let lA;try{lA=new URL(IA,nt)}catch(DA){throw new TypeError("Failed to parse URL from "+IA,{cause:DA})}if(lA.username||lA.password)throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+IA);eA=q({urlList:[lA]}),YA="cors"}else this[N]=nA.dispatcher||IA[N],Z(IA instanceof QA),eA=IA[g],TA=IA[G];const ot=this[F].settingsObject.origin;let ce="client";if(eA.window?.constructor?.name==="EnvironmentSettingsObject"&&I(eA.window,ot)&&(ce=eA.window),nA.window!=null)throw new TypeError(`'window' option '${ce}' must be null`);"window"in nA&&(ce="no-window"),eA=q({method:eA.method,headersList:eA.headersList,unsafeRequest:eA.unsafeRequest,client:this[F].settingsObject,window:ce,priority:eA.priority,origin:eA.origin,referrer:eA.referrer,referrerPolicy:eA.referrerPolicy,mode:eA.mode,credentials:eA.credentials,cache:eA.cache,redirect:eA.redirect,integrity:eA.integrity,keepalive:eA.keepalive,reloadNavigation:eA.reloadNavigation,historyNavigation:eA.historyNavigation,urlList:[...eA.urlList]});const Xe=Object.keys(nA).length!==0;if(Xe&&(eA.mode==="navigate"&&(eA.mode="same-origin"),eA.reloadNavigation=!1,eA.historyNavigation=!1,eA.origin="client",eA.referrer="client",eA.referrerPolicy="",eA.url=eA.urlList[eA.urlList.length-1],eA.urlList=[eA.url]),nA.referrer!==void 0){const lA=nA.referrer;if(lA==="")eA.referrer="no-referrer";else{let DA;try{DA=new URL(lA,nt)}catch($A){throw new TypeError(`Referrer "${lA}" is not a valid URL.`,{cause:$A})}DA.protocol==="about:"&&DA.hostname==="client"||ot&&!I(DA,this[F].settingsObject.baseUrl)?eA.referrer="client":eA.referrer=DA}}nA.referrerPolicy!==void 0&&(eA.referrerPolicy=nA.referrerPolicy);let jA;if(nA.mode!==void 0?jA=nA.mode:jA=YA,jA==="navigate")throw u.errors.exception({header:"Request constructor",message:"invalid request mode navigate."});if(jA!=null&&(eA.mode=jA),nA.credentials!==void 0&&(eA.credentials=nA.credentials),nA.cache!==void 0&&(eA.cache=nA.cache),eA.cache==="only-if-cached"&&eA.mode!=="same-origin")throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode");if(nA.redirect!==void 0&&(eA.redirect=nA.redirect),nA.integrity!=null&&(eA.integrity=String(nA.integrity)),nA.keepalive!==void 0&&(eA.keepalive=!!nA.keepalive),nA.method!==void 0){let lA=nA.method;const DA=h[lA];if(DA!==void 0)eA.method=DA;else{if(!C(lA))throw new TypeError(`'${lA}' is not a valid HTTP method.`);if(L.has(lA.toUpperCase()))throw new TypeError(`'${lA}' HTTP method is unsupported.`);lA=a(lA),eA.method=lA}!$&&eA.method==="patch"&&(process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.",{code:"UNDICI-FETCH-patch"}),$=!0)}nA.signal!==void 0&&(TA=nA.signal),this[g]=eA;const he=new AbortController;if(this[G]=he.signal,this[G][F]=this[F],TA!=null){if(!TA||typeof TA.aborted!="boolean"||typeof TA.addEventListener!="function")throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.");if(TA.aborted)he.abort(TA.reason);else{this[uA]=he;const lA=new WeakRef(he),DA=o(function(){const $A=lA.deref();$A!==void 0&&(X.unregister(DA),this.removeEventListener("abort",DA),$A.abort(this.reason))},"abort");try{(typeof P=="function"&&P(TA)===tA||K(TA,"abort").length>=tA)&&AA(100,TA)}catch{}E.addAbortListener(TA,DA),X.register(he,{signal:TA,abort:DA},DA)}}if(this[D]=new s(v),this[D][T]=eA.headersList,this[D][d]="request",this[D][F]=this[F],jA==="no-cors"){if(!c.has(eA.method))throw new TypeError(`'${eA.method} is unsupported in no-cors mode.`);this[D][d]="request-no-cors"}if(Xe){const lA=this[D][T],DA=nA.headers!==void 0?nA.headers:new n(lA);if(lA.clear(),DA instanceof n){for(const[$A,Qt]of DA)lA.append($A,Qt);lA.cookies=DA.cookies}else r(this[D],DA)}const ee=IA instanceof QA?IA[g].body:null;if((nA.body!=null||ee!=null)&&(eA.method==="GET"||eA.method==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body.");let le=null;if(nA.body!=null){const[lA,DA]=e(nA.body,eA.keepalive);le=lA,DA&&!this[D][T].contains("content-type",!0)&&this[D].append("content-type",DA)}const Ke=le??ee;if(Ke!=null&&Ke.source==null){if(le!=null&&nA.duplex==null)throw new TypeError("RequestInit: duplex option is required when sending a body.");if(eA.mode!=="same-origin"&&eA.mode!=="cors")throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"');eA.useCORSPreflightFlag=!0}let it=Ke;if(le==null&&ee!=null){if(E.isDisturbed(ee.stream)||ee.stream.locked)throw new TypeError("Cannot construct a Request with a Request object that has already been used.");const lA=new TransformStream;ee.stream.pipeThrough(lA),it={source:ee.source,length:ee.length,stream:lA.readable}}this[g].body=it}get method(){return u.brandCheck(this,QA),this[g].method}get url(){return u.brandCheck(this,QA),m(this[g].url)}get headers(){return u.brandCheck(this,QA),this[D]}get destination(){return u.brandCheck(this,QA),this[g].destination}get referrer(){return u.brandCheck(this,QA),this[g].referrer==="no-referrer"?"":this[g].referrer==="client"?"about:client":this[g].referrer.toString()}get referrerPolicy(){return u.brandCheck(this,QA),this[g].referrerPolicy}get mode(){return u.brandCheck(this,QA),this[g].mode}get credentials(){return this[g].credentials}get cache(){return u.brandCheck(this,QA),this[g].cache}get redirect(){return u.brandCheck(this,QA),this[g].redirect}get integrity(){return u.brandCheck(this,QA),this[g].integrity}get keepalive(){return u.brandCheck(this,QA),this[g].keepalive}get isReloadNavigation(){return u.brandCheck(this,QA),this[g].reloadNavigation}get isHistoryNavigation(){return u.brandCheck(this,QA),this[g].historyNavigation}get signal(){return u.brandCheck(this,QA),this[G]}get body(){return u.brandCheck(this,QA),this[g].body?this[g].body.stream:null}get bodyUsed(){return u.brandCheck(this,QA),!!this[g].body&&E.isDisturbed(this[g].body.stream)}get duplex(){return u.brandCheck(this,QA),"half"}clone(){if(u.brandCheck(this,QA),this.bodyUsed||this.body?.locked)throw new TypeError("unusable");const IA=z(this[g]),nA=new AbortController;return this.signal.aborted?nA.abort(this.signal.reason):E.addAbortListener(this.signal,()=>{nA.abort(this.signal.reason)}),rA(IA,nA.signal,this[D][d],this[F])}[Q.inspect.custom](IA,nA){nA.depth===null&&(nA.depth=2),nA.colors??(nA.colors=!0);const eA={method:this.method,url:this.url,headers:this.headers,destination:this.destination,referrer:this.referrer,referrerPolicy:this.referrerPolicy,mode:this.mode,credentials:this.credentials,cache:this.cache,redirect:this.redirect,integrity:this.integrity,keepalive:this.keepalive,isReloadNavigation:this.isReloadNavigation,isHistoryNavigation:this.isHistoryNavigation,signal:this.signal};return`Request ${Q.formatWithOptions(nA,eA)}`}};o(QA,"Request");let V=QA;A(V);function q(CA){const IA={method:"GET",localURLsOnly:!1,unsafeRequest:!1,body:null,client:null,reservedClient:null,replacesClientId:"",window:"client",keepalive:!1,serviceWorkers:"all",initiator:"",destination:"",priority:null,origin:"client",policyContainer:"client",referrer:"client",referrerPolicy:"",mode:"no-cors",useCORSPreflightFlag:!1,credentials:"same-origin",useCredentials:!1,cache:"default",redirect:"follow",integrity:"",cryptoGraphicsNonceMetadata:"",parserMetadata:"",reloadNavigation:!1,historyNavigation:!1,userActivation:!1,taintedOrigin:!1,redirectCount:0,responseTainting:"basic",preventNoCacheCacheControlHeaderModification:!1,done:!1,timingAllowFailed:!1,...CA,headersList:CA.headersList?new n(CA.headersList):new n};return IA.url=IA.urlList[0],IA}o(q,"makeRequest");function z(CA){const IA=q({...CA,body:null});return CA.body!=null&&(IA.body=t(CA.body)),IA}o(z,"cloneRequest");function rA(CA,IA,nA,eA){const YA=new V(v);return YA[g]=CA,YA[F]=eA,YA[G]=IA,YA[G][F]=eA,YA[D]=new s(v),YA[D][T]=CA.headersList,YA[D][d]=nA,YA[D][F]=eA,YA}return o(rA,"fromInnerRequest"),Object.defineProperties(V.prototype,{method:B,url:B,headers:B,redirect:B,clone:B,signal:B,duplex:B,destination:B,body:B,bodyUsed:B,isHistoryNavigation:B,isReloadNavigation:B,keepalive:B,integrity:B,cache:B,credentials:B,attribute:B,referrerPolicy:B,referrer:B,mode:B,[Symbol.toStringTag]:{value:"Request",configurable:!0}}),u.converters.Request=u.interfaceConverter(V),u.converters.RequestInfo=function(CA){return typeof CA=="string"?u.converters.USVString(CA):CA instanceof V?u.converters.Request(CA):u.converters.USVString(CA)},u.converters.AbortSignal=u.interfaceConverter(AbortSignal),u.converters.RequestInit=u.dictionaryConverter([{key:"method",converter:u.converters.ByteString},{key:"headers",converter:u.converters.HeadersInit},{key:"body",converter:u.nullableConverter(u.converters.BodyInit)},{key:"referrer",converter:u.converters.USVString},{key:"referrerPolicy",converter:u.converters.DOMString,allowedValues:l},{key:"mode",converter:u.converters.DOMString,allowedValues:k},{key:"credentials",converter:u.converters.DOMString,allowedValues:w},{key:"cache",converter:u.converters.DOMString,allowedValues:U},{key:"redirect",converter:u.converters.DOMString,allowedValues:S},{key:"integrity",converter:u.converters.DOMString},{key:"keepalive",converter:u.converters.boolean},{key:"signal",converter:u.nullableConverter(CA=>u.converters.AbortSignal(CA,{strict:!1}))},{key:"window",converter:u.converters.any},{key:"duplex",converter:u.converters.DOMString,allowedValues:M},{key:"dispatcher",converter:u.converters.any}]),mo={Request:V,makeRequest:q,fromInnerRequest:rA,cloneRequest:z},mo}o(rr,"requireRequest");var Lo,ag;function Ms(){if(ag)return Lo;ag=1;const{makeNetworkError:e,makeAppropriateNetworkError:A,filterResponse:t,makeResponse:s,fromInnerResponse:r}=Ls(),{HeadersList:n}=Ut(),{Request:i,cloneRequest:E}=rr(),Q=Li,{bytesMatch:C,makePolicyContainer:I,clonePolicyContainer:a,requestBadPort:f,TAOCheck:h,appendRequestOriginHeader:L,responseLocationURL:c,requestCurrentURL:l,setRequestReferrerPolicyOnRedirect:S,tryUpgradeRequestToAPotentiallyTrustworthyURL:k,createOpaqueTimingInfo:w,appendFetchMetadata:U,corsCheck:M,crossOriginResourcePolicyCheck:B,determineRequestsReferrer:D,coarsenedSharedCurrentTime:G,createDeferredPromise:g,isBlobLike:d,sameOrigin:F,isCancelled:N,isAborted:u,isErrorLike:b,fullyReadBody:m,readableStreamClose:T,isomorphicEncode:v,urlIsLocal:Z,urlIsHttpHttpsScheme:P,urlHasHttpsScheme:AA,clampAndCoarsenConnectionTimingInfo:K,simpleRangeHeaderValue:tA,buildContentRange:uA,createInflate:X,extractMimeType:$}=Ee(),{kState:V,kDispatcher:q}=Te(),z=RA,{safelyExtractBody:rA,extractBody:QA}=ns(),{redirectStatusSet:CA,nullBodyStatus:IA,safeMethodsSet:nA,requestBodyHeader:eA,subresourceSet:YA}=rs(),nt=Zr,{Readable:TA,pipeline:ot}=ue,{addAbortListener:ce,isErrored:Xe,isReadable:jA,nodeMajor:he,nodeMinor:ee,bufferToLowerCasedHeaderName:le}=aA,{dataURLProcessor:Ke,serializeAMimeType:it,minimizeSupportedMimeType:lA}=_A(),{getGlobalDispatcher:DA}=po,{webidl:$A}=vA(),{STATUS_CODES:Qt}=Pr,vs=["GET","HEAD"],Yt=typeof __UNDICI_IS_NODE__<"u"||typeof esbuildDetection<"u"?"node":"undici";let Et;const sA=class sA extends nt{constructor(O){super(),this.dispatcher=O,this.connection=null,this.dump=!1,this.state="ongoing"}terminate(O){this.state==="ongoing"&&(this.state="terminated",this.connection?.destroy(O),this.emit("terminated",O))}abort(O){this.state==="ongoing"&&(this.state="aborted",O||(O=new DOMException("The operation was aborted.","AbortError")),this.serializedAbortReason=O,this.connection?.destroy(O),this.emit("terminated",O))}};o(sA,"Fetch");let gt=sA;function xs(R,O=void 0){$A.argumentLengthCheck(arguments,1,{header:"globalThis.fetch"});const H=g();let J;try{J=new i(R,O)}catch(oA){return H.reject(oA),H.promise}const _=J[V];if(J.signal.aborted)return Jt(H,_,null,J.signal.reason),H.promise;_.client.globalObject?.constructor?.name==="ServiceWorkerGlobalScope"&&(_.serviceWorkers="none");let gA=null;const yA=null;let wA=!1,dA=null;return ce(J.signal,()=>{wA=!0,z(dA!=null),dA.abort(J.signal.reason),Jt(H,_,gA,J.signal.reason)}),dA=xr({request:_,processResponseEndOfBody:o(oA=>Bt(oA,"fetch"),"handleFetchDone"),processResponse:o(oA=>{if(!wA){if(oA.aborted){Jt(H,_,gA,dA.serializedAbortReason);return}if(oA.type==="error"){H.reject(new TypeError("fetch failed",{cause:oA.error}));return}gA=r(oA,"immutable",yA),H.resolve(gA)}},"processResponse"),dispatcher:J[q]}),H.promise}o(xs,"fetch");function Bt(R,O="other"){if(R.type==="error"&&R.aborted||!R.urlList?.length)return;const H=R.urlList[0];let J=R.timingInfo,_=R.cacheState;P(H)&&J!==null&&(R.timingAllowPassed||(J=w({startTime:J.startTime}),_=""),J.endTime=G(),R.timingInfo=J,vr(J,H.href,O,globalThis,_))}o(Bt,"finalizeAndReportTiming");const vr=he>18||he===18&&ee>=2?performance.markResourceTiming:()=>{};function Jt(R,O,H,J){if(R.reject(J),O.body!=null&&jA(O.body?.stream)&&O.body.stream.cancel(J).catch(x=>{if(x.code!=="ERR_INVALID_STATE")throw x}),H==null)return;const _=H[V];_.body!=null&&jA(_.body?.stream)&&_.body.stream.cancel(J).catch(x=>{if(x.code!=="ERR_INVALID_STATE")throw x})}o(Jt,"abortFetch");function xr({request:R,processRequestBodyChunkLength:O,processRequestEndOfBody:H,processResponse:J,processResponseEndOfBody:_,processResponseConsumeBody:x,useParallelQueue:gA=!1,dispatcher:yA=DA()}){z(yA);let wA=null,dA=!1;R.client!=null&&(wA=R.client.globalObject,dA=R.client.crossOriginIsolatedCapability);const bA=G(dA),ie=w({startTime:bA}),oA={controller:new gt(yA),request:R,timingInfo:ie,processRequestBodyChunkLength:O,processRequestEndOfBody:H,processResponse:J,processResponseConsumeBody:x,processResponseEndOfBody:_,taskDestination:wA,crossOriginIsolatedCapability:dA};return z(!R.body||R.body.stream),R.window==="client"&&(R.window=R.client?.globalObject?.constructor?.name==="Window"?R.client:"no-window"),R.origin==="client"&&(R.origin=R.client?.origin),R.policyContainer==="client"&&(R.client!=null?R.policyContainer=a(R.client.policyContainer):R.policyContainer=I()),R.headersList.contains("accept",!0)||R.headersList.append("accept","*/*",!0),R.headersList.contains("accept-language",!0)||R.headersList.append("accept-language","*",!0),R.priority,YA.has(R.destination),Gt(oA).catch(JA=>{oA.controller.terminate(JA)}),oA.controller}o(xr,"fetching");async function Gt(R,O=!1){const H=R.request;let J=null;if(H.localURLsOnly&&!Z(l(H))&&(J=e("local URLs only")),k(H),f(H)==="blocked"&&(J=e("bad port")),H.referrerPolicy===""&&(H.referrerPolicy=H.policyContainer.referrerPolicy),H.referrer!=="no-referrer"&&(H.referrer=D(H)),J===null&&(J=await(async()=>{const x=l(H);return F(x,H.url)&&H.responseTainting==="basic"||x.protocol==="data:"||H.mode==="navigate"||H.mode==="websocket"?(H.responseTainting="basic",await Wr(R)):H.mode==="same-origin"?e('request mode cannot be "same-origin"'):H.mode==="no-cors"?H.redirect!=="follow"?e('redirect mode cannot be "follow" for "no-cors" request'):(H.responseTainting="opaque",await Wr(R)):P(l(H))?(H.responseTainting="cors",await y(R)):e("URL scheme must be a HTTP(S) scheme")})()),O)return J;J.status!==0&&!J.internalResponse&&(H.responseTainting,H.responseTainting==="basic"?J=t(J,"basic"):H.responseTainting==="cors"?J=t(J,"cors"):H.responseTainting==="opaque"?J=t(J,"opaque"):z(!1));let _=J.status===0?J:J.internalResponse;if(_.urlList.length===0&&_.urlList.push(...H.urlList),H.timingAllowFailed||(J.timingAllowPassed=!0),J.type==="opaque"&&_.status===206&&_.rangeRequested&&!H.headers.contains("range",!0)&&(J=_=e()),J.status!==0&&(H.method==="HEAD"||H.method==="CONNECT"||IA.includes(_.status))&&(_.body=null,R.controller.dump=!0),H.integrity){const x=o(yA=>ze(R,e(yA)),"processBodyError");if(H.responseTainting==="opaque"||J.body==null){x(J.error);return}const gA=o(yA=>{if(!C(yA,H.integrity)){x("integrity mismatch");return}J.body=rA(yA)[0],ze(R,J)},"processBody");await m(J.body,gA,x)}else ze(R,J)}o(Gt,"mainFetch");function Wr(R){if(N(R)&&R.request.redirectCount===0)return Promise.resolve(A(R));const{request:O}=R,{protocol:H}=l(O);switch(H){case"about:":return Promise.resolve(e("about scheme is not supported"));case"blob:":{Et||(Et=de.resolveObjectURL);const J=l(O);if(J.search.length!==0)return Promise.resolve(e("NetworkError when attempting to fetch resource."));const _=Et(J.toString());if(O.method!=="GET"||!d(_))return Promise.resolve(e("invalid method"));const x=s(),gA=_.size,yA=v(`${gA}`),wA=_.type;if(O.headersList.contains("range",!0)){x.rangeRequested=!0;const dA=O.headersList.get("range",!0),bA=tA(dA,!0);if(bA==="failure")return Promise.resolve(e("failed to fetch the data URL"));let{rangeStartValue:ie,rangeEndValue:oA}=bA;if(ie===null)ie=gA-oA,oA=ie+oA-1;else{if(ie>=gA)return Promise.resolve(e("Range start is greater than the blob's size."));(oA===null||oA>=gA)&&(oA=gA-1)}const JA=_.slice(ie,oA,wA),te=QA(JA);x.body=te[0];const pA=v(`${JA.size}`),Ye=uA(ie,oA,gA);x.status=206,x.statusText="Partial Content",x.headersList.set("content-length",pA,!0),x.headersList.set("content-type",wA,!0),x.headersList.set("content-range",Ye,!0)}else{const dA=QA(_);x.statusText="OK",x.body=dA[0],x.headersList.set("content-length",yA,!0),x.headersList.set("content-type",wA,!0)}return Promise.resolve(x)}case"data:":{const J=l(O),_=Ke(J);if(_==="failure")return Promise.resolve(e("failed to fetch the data URL"));const x=it(_.mimeType);return Promise.resolve(s({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:x}]],body:rA(_.body)[0]}))}case"file:":return Promise.resolve(e("not implemented... yet..."));case"http:":case"https:":return y(R).catch(J=>e(J));default:return Promise.resolve(e("unknown scheme"))}}o(Wr,"schemeFetch");function Ws(R,O){R.request.done=!0,R.processResponseDone!=null&&queueMicrotask(()=>R.processResponseDone(O))}o(Ws,"finalizeResponse");function ze(R,O){let H=R.timingInfo;const J=o(()=>{const x=Date.now();R.request.destination==="document"&&(R.controller.fullTimingInfo=H),R.controller.reportTimingSteps=()=>{if(R.request.url.protocol!=="https:")return;H.endTime=x;let yA=O.cacheState;const wA=O.bodyInfo;O.timingAllowPassed||(H=w(H),yA="");let dA=0;if(R.request.mode!=="navigator"||!O.hasCrossOriginRedirects){dA=O.status;const bA=$(O.headersList);bA!=="failure"&&(wA.contentType=lA(bA))}R.request.initiatorType!=null&&vr(H,R.request.url.href,R.request.initiatorType,globalThis,yA,wA,dA)};const gA=o(()=>{R.request.done=!0,R.processResponseEndOfBody!=null&&queueMicrotask(()=>R.processResponseEndOfBody(O)),R.request.initiatorType!=null&&R.controller.reportTimingSteps()},"processResponseEndOfBodyTask");queueMicrotask(()=>gA())},"processResponseEndOfBody");R.processResponse!=null&&queueMicrotask(()=>R.processResponse(O));const _=O.type==="error"?O:O.internalResponse??O;if(_.body==null)J();else{const x=new TransformStream({start(){},transform(yA,wA){wA.enqueue(yA)},flush:J});_.body.stream.pipeThrough(x);const gA=new ReadableStream({readableStream:x.readable,async start(){this._bodyReader=this.readableStream.getReader()},async pull(yA){for(;yA.desiredSize>=0;){const{done:wA,value:dA}=await this._bodyReader.read();if(wA){queueMicrotask(()=>T(yA));break}yA.enqueue(dA)}},type:"bytes"});_.body.stream=gA}}o(ze,"fetchFinale");async function y(R){const O=R.request;let H=null,J=null;const _=R.timingInfo;if(O.serviceWorkers,H===null){if(O.redirect==="follow"&&(O.serviceWorkers="none"),J=H=await W(R),O.responseTainting==="cors"&&M(O,H)==="failure")return e("cors failure");h(O,H)==="failure"&&(O.timingAllowFailed=!0)}return(O.responseTainting==="opaque"||H.type==="opaque")&&B(O.origin,O.client,O.destination,J)==="blocked"?e("blocked"):(CA.has(J.status)&&(O.redirect!=="manual"&&R.controller.connection.destroy(void 0,!1),O.redirect==="error"?H=e("unexpected redirect"):O.redirect==="manual"?H=J:O.redirect==="follow"?H=await Y(R,H):z(!1)),H.timingInfo=_,H)}o(y,"httpFetch");function Y(R,O){const H=R.request,J=O.internalResponse?O.internalResponse:O;let _;try{if(_=c(J,l(H).hash),_==null)return O}catch(gA){return Promise.resolve(e(gA))}if(!P(_))return Promise.resolve(e("URL scheme must be a HTTP(S) scheme"));if(H.redirectCount===20)return Promise.resolve(e("redirect count exceeded"));if(H.redirectCount+=1,H.mode==="cors"&&(_.username||_.password)&&!F(H,_))return Promise.resolve(e('cross origin not allowed for request mode "cors"'));if(H.responseTainting==="cors"&&(_.username||_.password))return Promise.resolve(e('URL cannot contain credentials for request mode "cors"'));if(J.status!==303&&H.body!=null&&H.body.source==null)return Promise.resolve(e());if([301,302].includes(J.status)&&H.method==="POST"||J.status===303&&!vs.includes(H.method)){H.method="GET",H.body=null;for(const gA of eA)H.headersList.delete(gA)}F(l(H),_)||(H.headersList.delete("authorization",!0),H.headersList.delete("proxy-authorization",!0),H.headersList.delete("cookie",!0),H.headersList.delete("host",!0)),H.body!=null&&(z(H.body.source!=null),H.body=rA(H.body.source)[0]);const x=R.timingInfo;return x.redirectEndTime=x.postRedirectStartTime=G(R.crossOriginIsolatedCapability),x.redirectStartTime===0&&(x.redirectStartTime=x.startTime),H.urlList.push(_),S(H,J),Gt(R,!0)}o(Y,"httpRedirectFetch");async function W(R,O=!1,H=!1){const J=R.request;let _=null,x=null,gA=null;J.window==="no-window"&&J.redirect==="error"?(_=R,x=J):(x=E(J),_={...R},_.request=x);const yA=J.credentials==="include"||J.credentials==="same-origin"&&J.responseTainting==="basic",wA=x.body?x.body.length:null;let dA=null;if(x.body==null&&["POST","PUT"].includes(x.method)&&(dA="0"),wA!=null&&(dA=v(`${wA}`)),dA!=null&&x.headersList.append("content-length",dA,!0),wA!=null&&x.keepalive,x.referrer instanceof URL&&x.headersList.append("referer",v(x.referrer.href),!0),L(x),U(x),x.headersList.contains("user-agent",!0)||x.headersList.append("user-agent",Yt),x.cache==="default"&&(x.headersList.contains("if-modified-since",!0)||x.headersList.contains("if-none-match",!0)||x.headersList.contains("if-unmodified-since",!0)||x.headersList.contains("if-match",!0)||x.headersList.contains("if-range",!0))&&(x.cache="no-store"),x.cache==="no-cache"&&!x.preventNoCacheCacheControlHeaderModification&&!x.headersList.contains("cache-control",!0)&&x.headersList.append("cache-control","max-age=0",!0),(x.cache==="no-store"||x.cache==="reload")&&(x.headersList.contains("pragma",!0)||x.headersList.append("pragma","no-cache",!0),x.headersList.contains("cache-control",!0)||x.headersList.append("cache-control","no-cache",!0)),x.headersList.contains("range",!0)&&x.headersList.append("accept-encoding","identity",!0),x.headersList.contains("accept-encoding",!0)||(AA(l(x))?x.headersList.append("accept-encoding","br, gzip, deflate",!0):x.headersList.append("accept-encoding","gzip, deflate",!0)),x.headersList.delete("host",!0),x.cache="no-store",x.mode!=="no-store"&&x.mode,gA==null){if(x.mode==="only-if-cached")return e("only if cached");const bA=await j(_,yA,H);!nA.has(x.method)&&bA.status>=200&&bA.status<=399,gA==null&&(gA=bA)}if(gA.urlList=[...x.urlList],x.headersList.contains("range",!0)&&(gA.rangeRequested=!0),gA.requestIncludesCredentials=yA,gA.status===407)return J.window==="no-window"?e():N(R)?A(R):e("proxy authentication required");if(gA.status===421&&!H&&(J.body==null||J.body.source!=null)){if(N(R))return A(R);R.controller.connection.destroy(),gA=await W(R,O,!0)}return gA}o(W,"httpNetworkOrCacheFetch");async function j(R,O=!1,H=!1){z(!R.controller.connection||R.controller.connection.destroyed),R.controller.connection={abort:null,destroyed:!1,destroy(oA,JA=!0){this.destroyed||(this.destroyed=!0,JA&&this.abort?.(oA??new DOMException("The operation was aborted.","AbortError")))}};const J=R.request;let _=null;const x=R.timingInfo;J.cache="no-store",J.mode;let gA=null;if(J.body==null&&R.processRequestEndOfBody)queueMicrotask(()=>R.processRequestEndOfBody());else if(J.body!=null){const oA=o(async function*(pA){N(R)||(yield pA,R.processRequestBodyChunkLength?.(pA.byteLength))},"processBodyChunk"),JA=o(()=>{N(R)||R.processRequestEndOfBody&&R.processRequestEndOfBody()},"processEndOfBody"),te=o(pA=>{N(R)||(pA.name==="AbortError"?R.controller.abort():R.controller.terminate(pA))},"processBodyError");gA=async function*(){try{for await(const pA of J.body.stream)yield*oA(pA);JA()}catch(pA){te(pA)}}()}try{const{body:oA,status:JA,statusText:te,headersList:pA,socket:Ye}=await ie({body:gA});if(Ye)_=s({status:JA,statusText:te,headersList:pA,socket:Ye});else{const mA=oA[Symbol.asyncIterator]();R.controller.next=()=>mA.next(),_=s({status:JA,statusText:te,headersList:pA})}}catch(oA){return oA.name==="AbortError"?(R.controller.connection.destroy(),A(R,oA)):e(oA)}const yA=o(async()=>{await R.controller.resume()},"pullAlgorithm"),wA=o(oA=>{R.controller.abort(oA)},"cancelAlgorithm"),dA=new ReadableStream({async start(oA){R.controller.controller=oA},async pull(oA){await yA()},async cancel(oA){await wA(oA)},type:"bytes"});_.body={stream:dA,source:null,length:null},R.controller.onAborted=bA,R.controller.on("terminated",bA),R.controller.resume=async()=>{for(;;){let oA,JA;try{const{done:pA,value:Ye}=await R.controller.next();if(u(R))break;oA=pA?void 0:Ye}catch(pA){R.controller.ended&&!x.encodedBodySize?oA=void 0:(oA=pA,JA=!0)}if(oA===void 0){T(R.controller.controller),Ws(R,_);return}if(x.decodedBodySize+=oA?.byteLength??0,JA){R.controller.terminate(oA);return}const te=new Uint8Array(oA);if(te.byteLength&&R.controller.controller.enqueue(te),Xe(dA)){R.controller.terminate();return}if(R.controller.controller.desiredSize<=0)return}};function bA(oA){u(R)?(_.aborted=!0,jA(dA)&&R.controller.controller.error(R.controller.serializedAbortReason)):jA(dA)&&R.controller.controller.error(new TypeError("terminated",{cause:b(oA)?oA:void 0})),R.controller.connection.destroy()}return o(bA,"onAborted"),_;function ie({body:oA}){const JA=l(J),te=R.controller.dispatcher;return new Promise((pA,Ye)=>te.dispatch({path:JA.pathname+JA.search,origin:JA.origin,method:J.method,body:te.isMockActive?J.body&&(J.body.source||J.body.stream):oA,headers:J.headersList.entries,maxRedirections:0,upgrade:J.mode==="websocket"?"websocket":void 0},{body:null,abort:null,onConnect(mA){const{connection:OA}=R.controller;x.finalConnectionTimingInfo=K(void 0,x.postRedirectStartTime,R.crossOriginIsolatedCapability),OA.destroyed?mA(new DOMException("The operation was aborted.","AbortError")):(R.controller.on("terminated",mA),this.abort=OA.abort=mA),x.finalNetworkRequestStartTime=G(R.crossOriginIsolatedCapability)},onResponseStarted(){x.finalNetworkResponseStartTime=G(R.crossOriginIsolatedCapability)},onHeaders(mA,OA,qs,qr){if(mA<200)return;let Je=[],Si="";const Or=new n;if(Array.isArray(OA)){for(let Qe=0;QeQe.trim())),Si=Or.get("location",!0)}this.body=new TA({read:qs});const Ct=[],Pg=Si&&J.redirect==="follow"&&CA.has(mA);if(J.method!=="HEAD"&&J.method!=="CONNECT"&&!IA.includes(mA)&&!Pg)for(let It=0;It{}):this.body.on("error",()=>{})}),!0},onData(mA){if(R.controller.dump)return;const OA=mA;return x.encodedBodySize+=OA.byteLength,this.body.push(OA)},onComplete(){this.abort&&R.controller.off("terminated",this.abort),R.controller.onAborted&&R.controller.off("terminated",R.controller.onAborted),R.controller.ended=!0,this.body.push(null)},onError(mA){this.abort&&R.controller.off("terminated",this.abort),this.body?.destroy(mA),R.controller.terminate(mA),Ye(mA)},onUpgrade(mA,OA,qs){if(mA!==101)return;const qr=new n;for(let Je=0;Je{for(;!w[s];)try{const{done:N,value:u}=await d;if(F&&!w[s]&&queueMicrotask(()=>{L("loadstart",w)}),F=!1,!N&&C.isUint8Array(u))g.push(u),(w[r]===void 0||Date.now()-w[r]>=50)&&!w[s]&&(w[r]=Date.now(),queueMicrotask(()=>{L("progress",w)})),d=G.read();else if(N){queueMicrotask(()=>{w[e]="done";try{const b=c(g,M,U.type,B);if(w[s])return;w[t]=b,L("load",w)}catch(b){w[A]=b,L("error",w)}w[e]!=="loading"&&L("loadend",w)});break}}catch(N){if(w[s])return;queueMicrotask(()=>{w[e]="done",w[A]=N,L("error",w),w[e]!=="loading"&&L("loadend",w)});break}})()}o(h,"readOperation");function L(w,U){const M=new n(w,{bubbles:!1,cancelable:!1});U.dispatchEvent(M)}o(L,"fireAProgressEvent");function c(w,U,M,B){switch(U){case"DataURL":{let D="data:";const G=Q(M||"application/octet-stream");G!=="failure"&&(D+=E(G)),D+=";base64,";const g=new I("latin1");for(const d of w)D+=a(g.write(d));return D+=a(g.end()),D}case"Text":{let D="failure";if(B&&(D=i(B)),D==="failure"&&M){const G=Q(M);G!=="failure"&&(D=i(G.parameters.get("charset")))}return D==="failure"&&(D="UTF-8"),l(w,D)}case"ArrayBuffer":return k(w).buffer;case"BinaryString":{let D="";const G=new I("latin1");for(const g of w)D+=G.write(g);return D+=G.end(),D}}}o(c,"packageData");function l(w,U){const M=k(w),B=S(M);let D=0;B!==null&&(U=B,D=B==="UTF-8"?3:2);const G=M.slice(D);return new TextDecoder(U).decode(G)}o(l,"decode");function S(w){const[U,M,B]=w;return U===239&&M===187&&B===191?"UTF-8":U===254&&M===255?"UTF-16BE":U===255&&M===254?"UTF-16LE":null}o(S,"BOMSniffing");function k(w){const U=w.reduce((B,D)=>B+D.byteLength,0);let M=0;return w.reduce((B,D)=>(B.set(D,M),M+=D.byteLength,B),new Uint8Array(U))}return o(k,"combineByteSequences"),Go={staticPropertyDescriptors:f,readOperation:h,fireAProgressEvent:L},Go}o(Al,"requireUtil$4");var To,fg;function el(){if(fg)return To;fg=1;const{staticPropertyDescriptors:e,readOperation:A,fireAProgressEvent:t}=Al(),{kState:s,kError:r,kResult:n,kEvents:i,kAborted:E}=hg(),{webidl:Q}=vA(),{kEnumerableProperty:C}=aA,a=class a extends EventTarget{constructor(){super(),this[s]="empty",this[n]=null,this[r]=null,this[i]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(h){Q.brandCheck(this,a),Q.argumentLengthCheck(arguments,1,{header:"FileReader.readAsArrayBuffer"}),h=Q.converters.Blob(h,{strict:!1}),A(this,h,"ArrayBuffer")}readAsBinaryString(h){Q.brandCheck(this,a),Q.argumentLengthCheck(arguments,1,{header:"FileReader.readAsBinaryString"}),h=Q.converters.Blob(h,{strict:!1}),A(this,h,"BinaryString")}readAsText(h,L=void 0){Q.brandCheck(this,a),Q.argumentLengthCheck(arguments,1,{header:"FileReader.readAsText"}),h=Q.converters.Blob(h,{strict:!1}),L!==void 0&&(L=Q.converters.DOMString(L)),A(this,h,"Text",L)}readAsDataURL(h){Q.brandCheck(this,a),Q.argumentLengthCheck(arguments,1,{header:"FileReader.readAsDataURL"}),h=Q.converters.Blob(h,{strict:!1}),A(this,h,"DataURL")}abort(){if(this[s]==="empty"||this[s]==="done"){this[n]=null;return}this[s]==="loading"&&(this[s]="done",this[n]=null),this[E]=!0,t("abort",this),this[s]!=="loading"&&t("loadend",this)}get readyState(){switch(Q.brandCheck(this,a),this[s]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){return Q.brandCheck(this,a),this[n]}get error(){return Q.brandCheck(this,a),this[r]}get onloadend(){return Q.brandCheck(this,a),this[i].loadend}set onloadend(h){Q.brandCheck(this,a),this[i].loadend&&this.removeEventListener("loadend",this[i].loadend),typeof h=="function"?(this[i].loadend=h,this.addEventListener("loadend",h)):this[i].loadend=null}get onerror(){return Q.brandCheck(this,a),this[i].error}set onerror(h){Q.brandCheck(this,a),this[i].error&&this.removeEventListener("error",this[i].error),typeof h=="function"?(this[i].error=h,this.addEventListener("error",h)):this[i].error=null}get onloadstart(){return Q.brandCheck(this,a),this[i].loadstart}set onloadstart(h){Q.brandCheck(this,a),this[i].loadstart&&this.removeEventListener("loadstart",this[i].loadstart),typeof h=="function"?(this[i].loadstart=h,this.addEventListener("loadstart",h)):this[i].loadstart=null}get onprogress(){return Q.brandCheck(this,a),this[i].progress}set onprogress(h){Q.brandCheck(this,a),this[i].progress&&this.removeEventListener("progress",this[i].progress),typeof h=="function"?(this[i].progress=h,this.addEventListener("progress",h)):this[i].progress=null}get onload(){return Q.brandCheck(this,a),this[i].load}set onload(h){Q.brandCheck(this,a),this[i].load&&this.removeEventListener("load",this[i].load),typeof h=="function"?(this[i].load=h,this.addEventListener("load",h)):this[i].load=null}get onabort(){return Q.brandCheck(this,a),this[i].abort}set onabort(h){Q.brandCheck(this,a),this[i].abort&&this.removeEventListener("abort",this[i].abort),typeof h=="function"?(this[i].abort=h,this.addEventListener("abort",h)):this[i].abort=null}};o(a,"FileReader");let I=a;return I.EMPTY=I.prototype.EMPTY=0,I.LOADING=I.prototype.LOADING=1,I.DONE=I.prototype.DONE=2,Object.defineProperties(I.prototype,{EMPTY:e,LOADING:e,DONE:e,readAsArrayBuffer:C,readAsBinaryString:C,readAsText:C,readAsDataURL:C,abort:C,readyState:C,result:C,error:C,onloadstart:C,onprogress:C,onload:C,onabort:C,onerror:C,onloadend:C,[Symbol.toStringTag]:{value:"FileReader",writable:!1,enumerable:!1,configurable:!0}}),Object.defineProperties(I,{EMPTY:e,LOADING:e,DONE:e}),To={FileReader:I},To}o(el,"requireFilereader");var Ho,Dg;function Vo(){return Dg||(Dg=1,Ho={kConstruct:LA.kConstruct}),Ho}o(Vo,"requireSymbols$1");var vo,yg;function tl(){if(yg)return vo;yg=1;const e=RA,{URLSerializer:A}=_A(),{isValidHeaderName:t}=Ee();function s(n,i,E=!1){const Q=A(n,E),C=A(i,E);return Q===C}o(s,"urlEquals");function r(n){e(n!==null);const i=[];for(let E of n.split(","))E=E.trim(),t(E)&&i.push(E);return i}return o(r,"getFieldValues"),vo={urlEquals:s,getFieldValues:r},vo}o(tl,"requireUtil$3");var xo,Rg;function rl(){var w,U,Hs,B,mt,G,qg,d,oi;if(Rg)return xo;Rg=1;const{kConstruct:e}=Vo(),{urlEquals:A,getFieldValues:t}=tl(),{kEnumerableProperty:s,isDisturbed:r}=aA,{webidl:n}=vA(),{Response:i,cloneResponse:E,fromInnerResponse:Q}=Ls(),{Request:C,fromInnerRequest:I}=rr(),{kState:a}=Te(),{fetching:f}=Ms(),{urlIsHttpHttpsScheme:h,createDeferredPromise:L,readAllBytes:c}=Ee(),l=RA,N=class N{constructor(){hA(this,U);hA(this,B);hA(this,G);hA(this,d);hA(this,w,void 0);arguments[0]!==e&&n.illegalConstructor(),BA(this,w,arguments[1])}async match(b,m={}){n.brandCheck(this,N),n.argumentLengthCheck(arguments,1,{header:"Cache.match"}),b=n.converters.RequestInfo(b),m=n.converters.CacheQueryOptions(m);const T=HA(this,d,oi).call(this,b,m,1);if(T.length!==0)return T[0]}async matchAll(b=void 0,m={}){return n.brandCheck(this,N),b!==void 0&&(b=n.converters.RequestInfo(b)),m=n.converters.CacheQueryOptions(m),HA(this,d,oi).call(this,b,m)}async add(b){n.brandCheck(this,N),n.argumentLengthCheck(arguments,1,{header:"Cache.add"}),b=n.converters.RequestInfo(b);const m=[b];return await this.addAll(m)}async addAll(b){n.brandCheck(this,N),n.argumentLengthCheck(arguments,1,{header:"Cache.addAll"});const m=[],T=[];for(let X of b){if(X===void 0)throw n.errors.conversionFailed({prefix:"Cache.addAll",argument:"Argument 1",types:["undefined is not allowed"]});if(X=n.converters.RequestInfo(X),typeof X=="string")continue;const $=X[a];if(!h($.url)||$.method!=="GET")throw n.errors.exception({header:"Cache.addAll",message:"Expected http/s scheme when method is not GET."})}const v=[];for(const X of b){const $=new C(X)[a];if(!h($.url))throw n.errors.exception({header:"Cache.addAll",message:"Expected http/s scheme."});$.initiator="fetch",$.destination="subresource",T.push($);const V=L();v.push(f({request:$,processResponse(q){if(q.type==="error"||q.status===206||q.status<200||q.status>299)V.reject(n.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}));else if(q.headersList.contains("vary")){const z=t(q.headersList.get("vary"));for(const rA of z)if(rA==="*"){V.reject(n.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(const QA of v)QA.abort();return}}},processResponseEndOfBody(q){if(q.aborted){V.reject(new DOMException("aborted","AbortError"));return}V.resolve(q)}})),m.push(V.promise)}const P=await Promise.all(m),AA=[];let K=0;for(const X of P){const $={type:"put",request:T[K],response:X};AA.push($),K++}const tA=L();let uA=null;try{HA(this,U,Hs).call(this,AA)}catch(X){uA=X}return queueMicrotask(()=>{uA===null?tA.resolve(void 0):tA.reject(uA)}),tA.promise}async put(b,m){n.brandCheck(this,N),n.argumentLengthCheck(arguments,2,{header:"Cache.put"}),b=n.converters.RequestInfo(b),m=n.converters.Response(m);let T=null;if(b instanceof C?T=b[a]:T=new C(b)[a],!h(T.url)||T.method!=="GET")throw n.errors.exception({header:"Cache.put",message:"Expected an http/s scheme when method is not GET"});const v=m[a];if(v.status===206)throw n.errors.exception({header:"Cache.put",message:"Got 206 status"});if(v.headersList.contains("vary")){const $=t(v.headersList.get("vary"));for(const V of $)if(V==="*")throw n.errors.exception({header:"Cache.put",message:"Got * vary field value"})}if(v.body&&(r(v.body.stream)||v.body.stream.locked))throw n.errors.exception({header:"Cache.put",message:"Response body is locked or disturbed"});const Z=E(v),P=L();if(v.body!=null){const V=v.body.stream.getReader();c(V).then(P.resolve,P.reject)}else P.resolve(void 0);const AA=[],K={type:"put",request:T,response:Z};AA.push(K);const tA=await P.promise;Z.body!=null&&(Z.body.source=tA);const uA=L();let X=null;try{HA(this,U,Hs).call(this,AA)}catch($){X=$}return queueMicrotask(()=>{X===null?uA.resolve():uA.reject(X)}),uA.promise}async delete(b,m={}){n.brandCheck(this,N),n.argumentLengthCheck(arguments,1,{header:"Cache.delete"}),b=n.converters.RequestInfo(b),m=n.converters.CacheQueryOptions(m);let T=null;if(b instanceof C){if(T=b[a],T.method!=="GET"&&!m.ignoreMethod)return!1}else l(typeof b=="string"),T=new C(b)[a];const v=[],Z={type:"delete",request:T,options:m};v.push(Z);const P=L();let AA=null,K;try{K=HA(this,U,Hs).call(this,v)}catch(tA){AA=tA}return queueMicrotask(()=>{AA===null?P.resolve(!!K?.length):P.reject(AA)}),P.promise}async keys(b=void 0,m={}){n.brandCheck(this,N),b!==void 0&&(b=n.converters.RequestInfo(b)),m=n.converters.CacheQueryOptions(m);let T=null;if(b!==void 0)if(b instanceof C){if(T=b[a],T.method!=="GET"&&!m.ignoreMethod)return[]}else typeof b=="string"&&(T=new C(b)[a]);const v=L(),Z=[];if(b===void 0)for(const P of p(this,w))Z.push(P[0]);else{const P=HA(this,B,mt).call(this,T,m);for(const AA of P)Z.push(AA[0])}return queueMicrotask(()=>{const P=[];for(const AA of Z){const K=I(AA,new AbortController().signal,"immutable",{settingsObject:AA.client});P.push(K)}v.resolve(Object.freeze(P))}),v.promise}};w=new WeakMap,U=new WeakSet,Hs=o(function(b){const m=p(this,w),T=[...m],v=[],Z=[];try{for(const P of b){if(P.type!=="delete"&&P.type!=="put")throw n.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'});if(P.type==="delete"&&P.response!=null)throw n.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"});if(HA(this,B,mt).call(this,P.request,P.options,v).length)throw new DOMException("???","InvalidStateError");let AA;if(P.type==="delete"){if(AA=HA(this,B,mt).call(this,P.request,P.options),AA.length===0)return[];for(const K of AA){const tA=m.indexOf(K);l(tA!==-1),m.splice(tA,1)}}else if(P.type==="put"){if(P.response==null)throw n.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"});const K=P.request;if(!h(K.url))throw n.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"});if(K.method!=="GET")throw n.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"});if(P.options!=null)throw n.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"});AA=HA(this,B,mt).call(this,P.request);for(const tA of AA){const uA=m.indexOf(tA);l(uA!==-1),m.splice(uA,1)}m.push([P.request,P.response]),v.push([P.request,P.response])}Z.push([P.request,P.response])}return Z}catch(P){throw p(this,w).length=0,BA(this,w,T),P}},"#batchCacheOperations"),B=new WeakSet,mt=o(function(b,m,T){const v=[],Z=T??p(this,w);for(const P of Z){const[AA,K]=P;HA(this,G,qg).call(this,b,AA,K,m)&&v.push(P)}return v},"#queryCache"),G=new WeakSet,qg=o(function(b,m,T=null,v){const Z=new URL(b.url),P=new URL(m.url);if(v?.ignoreSearch&&(P.search="",Z.search=""),!A(Z,P,!0))return!1;if(T==null||v?.ignoreVary||!T.headersList.contains("vary"))return!0;const AA=t(T.headersList.get("vary"));for(const K of AA){if(K==="*")return!1;const tA=m.headersList.get(K),uA=b.headersList.get(K);if(tA!==uA)return!1}return!0},"#requestMatchesCachedItem"),d=new WeakSet,oi=o(function(b,m,T=1/0){let v=null;if(b!==void 0)if(b instanceof C){if(v=b[a],v.method!=="GET"&&!m.ignoreMethod)return[]}else typeof b=="string"&&(v=new C(b)[a]);const Z=[];if(b===void 0)for(const AA of p(this,w))Z.push(AA[1]);else{const AA=HA(this,B,mt).call(this,v,m);for(const K of AA)Z.push(K[1])}const P=[];for(const AA of Z){const K=Q(AA,"immutable",{settingsObject:{}});if(P.push(K.clone()),P.length>=T)break}return Object.freeze(P)},"#internalMatchAll"),o(N,"Cache");let S=N;Object.defineProperties(S.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:!0},match:s,matchAll:s,add:s,addAll:s,put:s,delete:s,keys:s});const k=[{key:"ignoreSearch",converter:n.converters.boolean,defaultValue:!1},{key:"ignoreMethod",converter:n.converters.boolean,defaultValue:!1},{key:"ignoreVary",converter:n.converters.boolean,defaultValue:!1}];return n.converters.CacheQueryOptions=n.dictionaryConverter(k),n.converters.MultiCacheQueryOptions=n.dictionaryConverter([...k,{key:"cacheName",converter:n.converters.DOMString}]),n.converters.Response=n.interfaceConverter(i),n.converters["sequence"]=n.sequenceConverter(n.converters.RequestInfo),xo={Cache:S},xo}o(rl,"requireCache");var Wo,wg;function sl(){var n;if(wg)return Wo;wg=1;const{kConstruct:e}=Vo(),{Cache:A}=rl(),{webidl:t}=vA(),{kEnumerableProperty:s}=aA,i=class i{constructor(){hA(this,n,new Map);arguments[0]!==e&&t.illegalConstructor()}async match(Q,C={}){if(t.brandCheck(this,i),t.argumentLengthCheck(arguments,1,{header:"CacheStorage.match"}),Q=t.converters.RequestInfo(Q),C=t.converters.MultiCacheQueryOptions(C),C.cacheName!=null){if(p(this,n).has(C.cacheName)){const I=p(this,n).get(C.cacheName);return await new A(e,I).match(Q,C)}}else for(const I of p(this,n).values()){const f=await new A(e,I).match(Q,C);if(f!==void 0)return f}}async has(Q){return t.brandCheck(this,i),t.argumentLengthCheck(arguments,1,{header:"CacheStorage.has"}),Q=t.converters.DOMString(Q),p(this,n).has(Q)}async open(Q){if(t.brandCheck(this,i),t.argumentLengthCheck(arguments,1,{header:"CacheStorage.open"}),Q=t.converters.DOMString(Q),p(this,n).has(Q)){const I=p(this,n).get(Q);return new A(e,I)}const C=[];return p(this,n).set(Q,C),new A(e,C)}async delete(Q){return t.brandCheck(this,i),t.argumentLengthCheck(arguments,1,{header:"CacheStorage.delete"}),Q=t.converters.DOMString(Q),p(this,n).delete(Q)}async keys(){return t.brandCheck(this,i),[...p(this,n).keys()]}};n=new WeakMap,o(i,"CacheStorage");let r=i;return Object.defineProperties(r.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:!0},match:s,has:s,open:s,delete:s,keys:s}),Wo={CacheStorage:r},Wo}o(sl,"requireCachestorage");var qo,kg;function nl(){return kg||(kg=1,qo={maxAttributeValueSize:1024,maxNameValuePairSize:4096}),qo}o(nl,"requireConstants$1");var Oo,Ng;function Fg(){if(Ng)return Oo;Ng=1;const e=RA,{kHeadersList:A}=LA;function t(c){for(let l=0;l=0&&S<=8||S>=10&&S<=31||S===127)return!0}return!1}o(t,"isCTLExcludingHtab");function s(c){for(let l=0;l126||S===34||S===40||S===41||S===60||S===62||S===64||S===44||S===59||S===58||S===92||S===47||S===91||S===93||S===63||S===61||S===123||S===125)throw new Error("Invalid cookie name")}}o(s,"validateCookieName");function r(c){let l=c.length,S=0;if(c[0]==='"'){if(l===1||c[l-1]!=='"')throw new Error("Invalid cookie value");--l,++S}for(;S126||k===34||k===44||k===59||k===92)throw new Error("Invalid cookie value")}}o(r,"validateCookieValue");function n(c){for(let l=0;ll.toString().padStart(2,"0"));function I(c){return typeof c=="number"&&(c=new Date(c)),`${E[c.getUTCDay()]}, ${C[c.getUTCDate()]} ${Q[c.getUTCMonth()]} ${c.getUTCFullYear()} ${C[c.getUTCHours()]}:${C[c.getUTCMinutes()]}:${C[c.getUTCSeconds()]} GMT`}o(I,"toIMFDate");function a(c){if(c<0)throw new Error("Invalid cookie max-age")}o(a,"validateCookieMaxAge");function f(c){if(c.name.length===0)return null;s(c.name),r(c.value);const l=[`${c.name}=${c.value}`];c.name.startsWith("__Secure-")&&(c.secure=!0),c.name.startsWith("__Host-")&&(c.secure=!0,c.domain=null,c.path="/"),c.secure&&l.push("Secure"),c.httpOnly&&l.push("HttpOnly"),typeof c.maxAge=="number"&&(a(c.maxAge),l.push(`Max-Age=${c.maxAge}`)),c.domain&&(i(c.domain),l.push(`Domain=${c.domain}`)),c.path&&(n(c.path),l.push(`Path=${c.path}`)),c.expires&&c.expires.toString()!=="Invalid Date"&&l.push(`Expires=${I(c.expires)}`),c.sameSite&&l.push(`SameSite=${c.sameSite}`);for(const S of c.unparsed){if(!S.includes("="))throw new Error("Invalid unparsed");const[k,...w]=S.split("=");l.push(`${k.trim()}=${w.join("=")}`)}return l.join("; ")}o(f,"stringify");let h;function L(c){if(c[A])return c[A];h||(h=Object.getOwnPropertySymbols(c).find(S=>S.description==="headers list"),e(h,"Headers cannot be parsed"));const l=c[h];return e(l),l}return o(L,"getHeadersList"),Oo={isCTLExcludingHtab:t,validateCookieName:s,validateCookiePath:n,validateCookieValue:r,toIMFDate:I,stringify:f,getHeadersList:L},Oo}o(Fg,"requireUtil$2");var Po,pg;function ol(){if(pg)return Po;pg=1;const{maxNameValuePairSize:e,maxAttributeValueSize:A}=nl(),{isCTLExcludingHtab:t}=Fg(),{collectASequenceOfCodePointsFast:s}=_A(),r=RA;function n(E){if(t(E))return null;let Q="",C="",I="",a="";if(E.includes(";")){const f={position:0};Q=s(";",E,f),C=E.slice(f.position)}else Q=E;if(!Q.includes("="))a=Q;else{const f={position:0};I=s("=",Q,f),a=Q.slice(f.position+1)}return I=I.trim(),a=a.trim(),I.length+a.length>e?null:{name:I,value:a,...i(C)}}o(n,"parseSetCookie");function i(E,Q={}){if(E.length===0)return Q;r(E[0]===";"),E=E.slice(1);let C="";E.includes(";")?(C=s(";",E,{position:0}),E=E.slice(C.length)):(C=E,E="");let I="",a="";if(C.includes("=")){const h={position:0};I=s("=",C,h),a=C.slice(h.position+1)}else I=C;if(I=I.trim(),a=a.trim(),a.length>A)return i(E,Q);const f=I.toLowerCase();if(f==="expires"){const h=new Date(a);Q.expires=h}else if(f==="max-age"){const h=a.charCodeAt(0);if((h<48||h>57)&&a[0]!=="-"||!/^\d+$/.test(a))return i(E,Q);const L=Number(a);Q.maxAge=L}else if(f==="domain"){let h=a;h[0]==="."&&(h=h.slice(1)),h=h.toLowerCase(),Q.domain=h}else if(f==="path"){let h="";a.length===0||a[0]!=="/"?h="/":h=a,Q.path=h}else if(f==="secure")Q.secure=!0;else if(f==="httponly")Q.httpOnly=!0;else if(f==="samesite"){let h="Default";const L=a.toLowerCase();L.includes("none")&&(h="None"),L.includes("strict")&&(h="Strict"),L.includes("lax")&&(h="Lax"),Q.sameSite=h}else Q.unparsed??(Q.unparsed=[]),Q.unparsed.push(`${I}=${a}`);return i(E,Q)}return o(i,"parseUnparsedAttributes"),Po={parseSetCookie:n,parseUnparsedAttributes:i},Po}o(ol,"requireParse");var Zo,Sg;function il(){if(Sg)return Zo;Sg=1;const{parseSetCookie:e}=ol(),{stringify:A,getHeadersList:t}=Fg(),{webidl:s}=vA(),{Headers:r}=Ut();function n(C){s.argumentLengthCheck(arguments,1,{header:"getCookies"}),s.brandCheck(C,r,{strict:!1});const I=C.get("cookie"),a={};if(!I)return a;for(const f of I.split(";")){const[h,...L]=f.split("=");a[h.trim()]=L.join("=")}return a}o(n,"getCookies");function i(C,I,a){s.argumentLengthCheck(arguments,2,{header:"deleteCookie"}),s.brandCheck(C,r,{strict:!1}),I=s.converters.DOMString(I),a=s.converters.DeleteCookieAttributes(a),Q(C,{name:I,value:"",expires:new Date(0),...a})}o(i,"deleteCookie");function E(C){s.argumentLengthCheck(arguments,1,{header:"getSetCookies"}),s.brandCheck(C,r,{strict:!1});const I=t(C).cookies;return I?I.map(a=>e(Array.isArray(a)?a[1]:a)):[]}o(E,"getSetCookies");function Q(C,I){s.argumentLengthCheck(arguments,2,{header:"setCookie"}),s.brandCheck(C,r,{strict:!1}),I=s.converters.Cookie(I);const a=A(I);a&&C.append("Set-Cookie",a)}return o(Q,"setCookie"),s.converters.DeleteCookieAttributes=s.dictionaryConverter([{converter:s.nullableConverter(s.converters.DOMString),key:"path",defaultValue:null},{converter:s.nullableConverter(s.converters.DOMString),key:"domain",defaultValue:null}]),s.converters.Cookie=s.dictionaryConverter([{converter:s.converters.DOMString,key:"name"},{converter:s.converters.DOMString,key:"value"},{converter:s.nullableConverter(C=>typeof C=="number"?s.converters["unsigned long long"](C):new Date(C)),key:"expires",defaultValue:null},{converter:s.nullableConverter(s.converters["long long"]),key:"maxAge",defaultValue:null},{converter:s.nullableConverter(s.converters.DOMString),key:"domain",defaultValue:null},{converter:s.nullableConverter(s.converters.DOMString),key:"path",defaultValue:null},{converter:s.nullableConverter(s.converters.boolean),key:"secure",defaultValue:null},{converter:s.nullableConverter(s.converters.boolean),key:"httpOnly",defaultValue:null},{converter:s.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:s.sequenceConverter(s.converters.DOMString),key:"unparsed",defaultValue:[]}]),Zo={getCookies:n,deleteCookie:i,getSetCookies:E,setCookie:Q},Zo}o(il,"requireCookies");var Xo,Ug;function Ys(){var E,C,a;if(Ug)return Xo;Ug=1;const{webidl:e}=vA(),{kEnumerableProperty:A}=aA,{MessagePort:t}=eB,Q=class Q extends Event{constructor(c,l={}){e.argumentLengthCheck(arguments,1,{header:"MessageEvent constructor"}),c=e.converters.DOMString(c),l=e.converters.MessageEventInit(l);super(c,l);hA(this,E,void 0);BA(this,E,l)}get data(){return e.brandCheck(this,Q),p(this,E).data}get origin(){return e.brandCheck(this,Q),p(this,E).origin}get lastEventId(){return e.brandCheck(this,Q),p(this,E).lastEventId}get source(){return e.brandCheck(this,Q),p(this,E).source}get ports(){return e.brandCheck(this,Q),Object.isFrozen(p(this,E).ports)||Object.freeze(p(this,E).ports),p(this,E).ports}initMessageEvent(c,l=!1,S=!1,k=null,w="",U="",M=null,B=[]){return e.brandCheck(this,Q),e.argumentLengthCheck(arguments,1,{header:"MessageEvent.initMessageEvent"}),new Q(c,{bubbles:l,cancelable:S,data:k,origin:w,lastEventId:U,source:M,ports:B})}};E=new WeakMap,o(Q,"MessageEvent");let s=Q;const I=class I extends Event{constructor(c,l={}){e.argumentLengthCheck(arguments,1,{header:"CloseEvent constructor"}),c=e.converters.DOMString(c),l=e.converters.CloseEventInit(l);super(c,l);hA(this,C,void 0);BA(this,C,l)}get wasClean(){return e.brandCheck(this,I),p(this,C).wasClean}get code(){return e.brandCheck(this,I),p(this,C).code}get reason(){return e.brandCheck(this,I),p(this,C).reason}};C=new WeakMap,o(I,"CloseEvent");let r=I;const f=class f extends Event{constructor(c,l){e.argumentLengthCheck(arguments,1,{header:"ErrorEvent constructor"});super(c,l);hA(this,a,void 0);c=e.converters.DOMString(c),l=e.converters.ErrorEventInit(l??{}),BA(this,a,l)}get message(){return e.brandCheck(this,f),p(this,a).message}get filename(){return e.brandCheck(this,f),p(this,a).filename}get lineno(){return e.brandCheck(this,f),p(this,a).lineno}get colno(){return e.brandCheck(this,f),p(this,a).colno}get error(){return e.brandCheck(this,f),p(this,a).error}};a=new WeakMap,o(f,"ErrorEvent");let n=f;Object.defineProperties(s.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:!0},data:A,origin:A,lastEventId:A,source:A,ports:A,initMessageEvent:A}),Object.defineProperties(r.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:!0},reason:A,code:A,wasClean:A}),Object.defineProperties(n.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:!0},message:A,filename:A,lineno:A,colno:A,error:A}),e.converters.MessagePort=e.interfaceConverter(t),e.converters["sequence"]=e.sequenceConverter(e.converters.MessagePort);const i=[{key:"bubbles",converter:e.converters.boolean,defaultValue:!1},{key:"cancelable",converter:e.converters.boolean,defaultValue:!1},{key:"composed",converter:e.converters.boolean,defaultValue:!1}];return e.converters.MessageEventInit=e.dictionaryConverter([...i,{key:"data",converter:e.converters.any,defaultValue:null},{key:"origin",converter:e.converters.USVString,defaultValue:""},{key:"lastEventId",converter:e.converters.DOMString,defaultValue:""},{key:"source",converter:e.nullableConverter(e.converters.MessagePort),defaultValue:null},{key:"ports",converter:e.converters["sequence"],get defaultValue(){return[]}}]),e.converters.CloseEventInit=e.dictionaryConverter([...i,{key:"wasClean",converter:e.converters.boolean,defaultValue:!1},{key:"code",converter:e.converters["unsigned short"],defaultValue:0},{key:"reason",converter:e.converters.USVString,defaultValue:""}]),e.converters.ErrorEventInit=e.dictionaryConverter([...i,{key:"message",converter:e.converters.DOMString,defaultValue:""},{key:"filename",converter:e.converters.USVString,defaultValue:""},{key:"lineno",converter:e.converters["unsigned long"],defaultValue:0},{key:"colno",converter:e.converters["unsigned long"],defaultValue:0},{key:"error",converter:e.converters.any}]),Xo={MessageEvent:s,CloseEvent:r,ErrorEvent:n},Xo}o(Ys,"requireEvents");var Ko,bg;function sr(){if(bg)return Ko;bg=1;const e="258EAFA5-E914-47DA-95CA-C5AB0DC85B11",A={enumerable:!0,writable:!1,configurable:!1},t={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},s={NOT_SENT:0,PROCESSING:1,SENT:2},r={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},n=2**16-1,i={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},E=Buffer.allocUnsafe(0);return Ko={uid:e,sentCloseFrameState:s,staticPropertyDescriptors:A,states:t,opcodes:r,maxUnsigned16Bit:n,parserStates:i,emptyBuffer:E},Ko}o(sr,"requireConstants");var zo,mg;function Js(){return mg||(mg=1,zo={kWebSocketURL:Symbol("url"),kReadyState:Symbol("ready state"),kController:Symbol("controller"),kResponse:Symbol("response"),kBinaryType:Symbol("binary type"),kSentClose:Symbol("sent close"),kReceivedClose:Symbol("received close"),kByteParser:Symbol("byte parser")}),zo}o(Js,"requireSymbols");var jo,Lg;function $o(){if(Lg)return jo;Lg=1;const{kReadyState:e,kController:A,kResponse:t,kBinaryType:s,kWebSocketURL:r}=Js(),{states:n,opcodes:i}=sr(),{MessageEvent:E,ErrorEvent:Q}=Ys(),{isUtf8:C}=de;function I(B){return B[e]===n.CONNECTING}o(I,"isConnecting");function a(B){return B[e]===n.OPEN}o(a,"isEstablished");function f(B){return B[e]===n.CLOSING}o(f,"isClosing");function h(B){return B[e]===n.CLOSED}o(h,"isClosed");function L(B,D,G=Event,g={}){const d=new G(B,g);D.dispatchEvent(d)}o(L,"fireEvent");function c(B,D,G){if(B[e]!==n.OPEN)return;let g;if(D===i.TEXT)try{g=M(G)}catch{k(B,"Received invalid UTF-8 in text frame.");return}else D===i.BINARY&&(B[s]==="blob"?g=new Blob([G]):g=new Uint8Array(G).buffer);L("message",B,E,{origin:B[r].origin,data:g})}o(c,"websocketMessageReceived");function l(B){if(B.length===0)return!1;for(let D=0;D126||G===34||G===40||G===41||G===44||G===47||G===58||G===59||G===60||G===61||G===62||G===63||G===64||G===91||G===92||G===93||G===123||G===125)return!1}return!0}o(l,"isValidSubprotocol");function S(B){return B>=1e3&&B<1015?B!==1004&&B!==1005&&B!==1006:B>=3e3&&B<=4999}o(S,"isValidStatusCode");function k(B,D){const{[A]:G,[t]:g}=B;G.abort(),g?.socket&&!g.socket.destroyed&&g.socket.destroy(),D&&L("error",B,Q,{error:new Error(D)})}o(k,"failWebsocketConnection");const w=typeof process.versions.icu=="string",U=w?new TextDecoder("utf-8",{fatal:!0}):void 0;function M(B){if(w)return U.decode(B);if(!C?.(B))throw C||process.emitWarning("ICU is not supported and no fallback exists. Please upgrade to at least Node v18.14.0.",{code:"UNDICI-WS-NO-ICU"}),new TypeError("Invalid utf-8 received.");return B.toString("utf-8")}return o(M,"utf8Decode"),jo={isConnecting:I,isEstablished:a,isClosing:f,isClosed:h,fireEvent:L,isValidSubprotocol:l,isValidStatusCode:S,failWebsocketConnection:k,websocketMessageReceived:c,utf8Decode:M},jo}o($o,"requireUtil$1");var _o,Mg;function Ql(){if(Mg)return _o;Mg=1;const{uid:e,states:A,sentCloseFrameState:t}=sr(),{kReadyState:s,kSentClose:r,kByteParser:n,kReceivedClose:i}=Js(),{fireEvent:E,failWebsocketConnection:Q}=$o(),{channels:C}=Vt,{CloseEvent:I}=Ys(),{makeRequest:a}=rr(),{fetching:f}=Ms(),{Headers:h}=Ut(),{getDecodeSplit:L}=Ee(),{kHeadersList:c}=LA;let l;try{l=require("node:crypto")}catch{}function S(M,B,D,G,g){const d=M;d.protocol=M.protocol==="ws:"?"http:":"https:";const F=a({urlList:[d],serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(g.headers){const m=new h(g.headers)[c];F.headersList=m}const N=l.randomBytes(16).toString("base64");F.headersList.append("sec-websocket-key",N),F.headersList.append("sec-websocket-version","13");for(const m of B)F.headersList.append("sec-websocket-protocol",m);const u="";return f({request:F,useParallelQueue:!0,dispatcher:g.dispatcher,processResponse(m){if(m.type==="error"||m.status!==101){Q(D,"Received network error or non-101 status code.");return}if(B.length!==0&&!m.headersList.get("Sec-WebSocket-Protocol")){Q(D,"Server did not respond with sent protocols.");return}if(m.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){Q(D,'Server did not set Upgrade header to "websocket".');return}if(m.headersList.get("Connection")?.toLowerCase()!=="upgrade"){Q(D,'Server did not set Connection header to "upgrade".');return}const T=m.headersList.get("Sec-WebSocket-Accept"),v=l.createHash("sha1").update(N+e).digest("base64");if(T!==v){Q(D,"Incorrect hash received in Sec-WebSocket-Accept header.");return}const Z=m.headersList.get("Sec-WebSocket-Extensions");if(Z!==null&&Z!==u){Q(D,"Received different permessage-deflate than the one set.");return}const P=m.headersList.get("Sec-WebSocket-Protocol");if(P!==null&&!L("sec-websocket-protocol",F.headersList).includes(P)){Q(D,"Protocol was not set in the opening handshake.");return}m.socket.on("data",k),m.socket.on("close",w),m.socket.on("error",U),C.open.hasSubscribers&&C.open.publish({address:m.socket.address(),protocol:P,extensions:Z}),G(m)}})}o(S,"establishWebSocketConnection");function k(M){this.ws[n].write(M)||this.pause()}o(k,"onSocketData");function w(){const{ws:M}=this,B=M[r]===t.SENT&&M[i];let D=1005,G="";const g=M[n].closingInfo;g?(D=g.code??1005,G=g.reason):M[r]!==t.SENT&&(D=1006),M[s]=A.CLOSED,E("close",M,I,{wasClean:B,code:D,reason:G}),C.close.hasSubscribers&&C.close.publish({websocket:M,code:D,reason:G})}o(w,"onSocketClose");function U(M){const{ws:B}=this;B[s]=A.CLOSING,C.socketError.hasSubscribers&&C.socketError.publish(M),this.destroy()}return o(U,"onSocketError"),_o={establishWebSocketConnection:S},_o}o(Ql,"requireConnection");var Ai,Yg;function Jg(){if(Yg)return Ai;Yg=1;const{maxUnsigned16Bit:e}=sr();let A;try{A=require("node:crypto")}catch{}const s=class s{constructor(n){this.frameData=n,this.maskKey=A.randomBytes(4)}createFrame(n){const i=this.frameData?.byteLength??0;let E=i,Q=6;i>e?(Q+=8,E=127):i>125&&(Q+=2,E=126);const C=Buffer.allocUnsafe(i+Q);C[0]=C[1]=0,C[0]|=128,C[0]=(C[0]&240)+n;/*! ws. MIT License. Einar Otto Stangvik */C[Q-4]=this.maskKey[0],C[Q-3]=this.maskKey[1],C[Q-2]=this.maskKey[2],C[Q-1]=this.maskKey[3],C[1]=E,E===126?C.writeUInt16BE(i,2):E===127&&(C[2]=C[3]=0,C.writeUIntBE(i,4,6)),C[1]|=128;for(let I=0;I125){f(this.ws,"Fragmented frame exceeded 125 bytes.");return}else if((p(this,U).opcode===t.PING||p(this,U).opcode===t.PONG||p(this,U).opcode===t.CLOSE)&&N>125){f(this.ws,"Payload length for control frame exceeded 125 bytes.");return}else if(p(this,U).opcode===t.CLOSE){if(N===1){f(this.ws,"Received close frame with a 1-byte body.");return}const u=this.consume(N);if(p(this,U).closeInfo=this.parseCloseBody(u),this.ws[E]!==n.SENT){let b=r;p(this,U).closeInfo.code&&(b=Buffer.allocUnsafe(2),b.writeUInt16BE(p(this,U).closeInfo.code,0));const m=new c(b);this.ws[Q].socket.write(m.createFrame(t.CLOSE),T=>{T||(this.ws[E]=n.SENT)})}this.ws[i]=s.CLOSING,this.ws[C]=!0,this.end();return}else if(p(this,U).opcode===t.PING){const u=this.consume(N);if(!this.ws[C]){const b=new c(u);this.ws[Q].socket.write(b.createFrame(t.PONG)),I.ping.hasSubscribers&&I.ping.publish({payload:u})}if(BA(this,w,A.INFO),p(this,k)>0)continue;g();return}else if(p(this,U).opcode===t.PONG){const u=this.consume(N);if(I.pong.hasSubscribers&&I.pong.publish({payload:u}),p(this,k)>0)continue;g();return}}else if(p(this,w)===A.PAYLOADLENGTH_16){if(p(this,k)<2)return g();const F=this.consume(2);p(this,U).payloadLength=F.readUInt16BE(0),BA(this,w,A.READ_DATA)}else if(p(this,w)===A.PAYLOADLENGTH_64){if(p(this,k)<8)return g();const F=this.consume(8),N=F.readUInt32BE(0);if(N>2**31-1){f(this.ws,"Received payload length > 2^31 bytes.");return}const u=F.readUInt32BE(4);p(this,U).payloadLength=(N<<8)+u,BA(this,w,A.READ_DATA)}else if(p(this,w)===A.READ_DATA){if(p(this,k)=p(this,U).payloadLength){const F=this.consume(p(this,U).payloadLength);if(p(this,M).push(F),!p(this,U).fragmented||p(this,U).fin&&p(this,U).opcode===t.CONTINUATION){const N=Buffer.concat(p(this,M));h(this.ws,p(this,U).originalOpcode,N),BA(this,U,{}),p(this,M).length=0}BA(this,w,A.INFO)}}if(p(this,k)===0){g();break}}}consume(g){if(g>p(this,k))return null;if(g===0)return r;if(p(this,S)[0].length===g)return BA(this,k,p(this,k)-p(this,S)[0].length),p(this,S).shift();const d=Buffer.allocUnsafe(g);let F=0;for(;F!==g;){const N=p(this,S)[0],{length:u}=N;if(u+F===g){d.set(p(this,S).shift(),F);break}else if(u+F>g){d.set(N.subarray(0,g-F),F),p(this,S)[0]=N.subarray(g-F);break}else d.set(p(this,S).shift(),F),F+=N.length}return BA(this,k,p(this,k)-g),d}parseCloseBody(g){let d;g.length>=2&&(d=g.readUInt16BE(0));let F=g.subarray(2);if(F[0]===239&&F[1]===187&&F[2]===191&&(F=F.subarray(3)),d!==void 0&&!a(d))return null;try{F=L(F)}catch{return null}return{code:d,reason:F}}get closingInfo(){return p(this,U).closeInfo}};S=new WeakMap,k=new WeakMap,w=new WeakMap,U=new WeakMap,M=new WeakMap,o(B,"ByteParser");let l=B;return ei={ByteParser:l},ei}o(El,"requireReceiver");var ti,Tg;function gl(){var m,T,v,Z,P,Og;if(Tg)return ti;Tg=1;const{webidl:e}=vA(),{URLSerializer:A}=_A(),{getGlobalOrigin:t}=lt(),{staticPropertyDescriptors:s,states:r,sentCloseFrameState:n,opcodes:i,emptyBuffer:E}=sr(),{kWebSocketURL:Q,kReadyState:C,kController:I,kBinaryType:a,kResponse:f,kSentClose:h,kByteParser:L}=Js(),{isConnecting:c,isEstablished:l,isClosed:S,isClosing:k,isValidSubprotocol:w,failWebsocketConnection:U,fireEvent:M}=$o(),{establishWebSocketConnection:B}=Ql(),{WebsocketFrameSend:D}=Jg(),{ByteParser:G}=El(),{kEnumerableProperty:g,isBlobLike:d}=aA,{getGlobalDispatcher:F}=po,{types:N}=PA;let u=!1;const K=class K extends EventTarget{constructor(X,$=[]){super();hA(this,P);hA(this,m,{open:null,error:null,close:null,message:null});hA(this,T,0);hA(this,v,"");hA(this,Z,"");e.argumentLengthCheck(arguments,1,{header:"WebSocket constructor"}),u||(u=!0,process.emitWarning("WebSockets are experimental, expect them to change at any time.",{code:"UNDICI-WS"}));const V=e.converters["DOMString or sequence or WebSocketInit"]($);X=e.converters.USVString(X),$=V.protocols;const q=t();let z;try{z=new URL(X,q)}catch(rA){throw new DOMException(rA,"SyntaxError")}if(z.protocol==="http:"?z.protocol="ws:":z.protocol==="https:"&&(z.protocol="wss:"),z.protocol!=="ws:"&&z.protocol!=="wss:")throw new DOMException(`Expected a ws: or wss: protocol, got ${z.protocol}`,"SyntaxError");if(z.hash||z.href.endsWith("#"))throw new DOMException("Got fragment","SyntaxError");if(typeof $=="string"&&($=[$]),$.length!==new Set($.map(rA=>rA.toLowerCase())).size)throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if($.length>0&&!$.every(rA=>w(rA)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");this[Q]=new URL(z.href),this[I]=B(z,$,this,rA=>HA(this,P,Og).call(this,rA),V),this[C]=K.CONNECTING,this[h]=n.NOT_SENT,this[a]="blob"}close(X=void 0,$=void 0){if(e.brandCheck(this,K),X!==void 0&&(X=e.converters["unsigned short"](X,{clamp:!0})),$!==void 0&&($=e.converters.USVString($)),X!==void 0&&X!==1e3&&(X<3e3||X>4999))throw new DOMException("invalid code","InvalidAccessError");let V=0;if($!==void 0&&(V=Buffer.byteLength($),V>123))throw new DOMException(`Reason must be less than 123 bytes; received ${V}`,"SyntaxError");if(!(k(this)||S(this)))if(!l(this))U(this,"Connection was closed before it was established."),this[C]=K.CLOSING;else if(this[h]===n.NOT_SENT){this[h]=n.PROCESSING;const q=new D;X!==void 0&&$===void 0?(q.frameData=Buffer.allocUnsafe(2),q.frameData.writeUInt16BE(X,0)):X!==void 0&&$!==void 0?(q.frameData=Buffer.allocUnsafe(2+V),q.frameData.writeUInt16BE(X,0),q.frameData.write($,2,"utf-8")):q.frameData=E,this[f].socket.write(q.createFrame(i.CLOSE),rA=>{rA||(this[h]=n.SENT)}),this[C]=r.CLOSING}else this[C]=K.CLOSING}send(X){if(e.brandCheck(this,K),e.argumentLengthCheck(arguments,1,{header:"WebSocket.send"}),X=e.converters.WebSocketSendData(X),c(this))throw new DOMException("Sent before connected.","InvalidStateError");if(!l(this)||k(this))return;const $=this[f].socket;if(typeof X=="string"){const V=Buffer.from(X),z=new D(V).createFrame(i.TEXT);BA(this,T,p(this,T)+V.byteLength),$.write(z,()=>{BA(this,T,p(this,T)-V.byteLength)})}else if(N.isArrayBuffer(X)){const V=Buffer.from(X),z=new D(V).createFrame(i.BINARY);BA(this,T,p(this,T)+V.byteLength),$.write(z,()=>{BA(this,T,p(this,T)-V.byteLength)})}else if(ArrayBuffer.isView(X)){const V=Buffer.from(X,X.byteOffset,X.byteLength),z=new D(V).createFrame(i.BINARY);BA(this,T,p(this,T)+V.byteLength),$.write(z,()=>{BA(this,T,p(this,T)-V.byteLength)})}else if(d(X)){const V=new D;X.arrayBuffer().then(q=>{const z=Buffer.from(q);V.frameData=z;const rA=V.createFrame(i.BINARY);BA(this,T,p(this,T)+z.byteLength),$.write(rA,()=>{BA(this,T,p(this,T)-z.byteLength)})})}}get readyState(){return e.brandCheck(this,K),this[C]}get bufferedAmount(){return e.brandCheck(this,K),p(this,T)}get url(){return e.brandCheck(this,K),A(this[Q])}get extensions(){return e.brandCheck(this,K),p(this,Z)}get protocol(){return e.brandCheck(this,K),p(this,v)}get onopen(){return e.brandCheck(this,K),p(this,m).open}set onopen(X){e.brandCheck(this,K),p(this,m).open&&this.removeEventListener("open",p(this,m).open),typeof X=="function"?(p(this,m).open=X,this.addEventListener("open",X)):p(this,m).open=null}get onerror(){return e.brandCheck(this,K),p(this,m).error}set onerror(X){e.brandCheck(this,K),p(this,m).error&&this.removeEventListener("error",p(this,m).error),typeof X=="function"?(p(this,m).error=X,this.addEventListener("error",X)):p(this,m).error=null}get onclose(){return e.brandCheck(this,K),p(this,m).close}set onclose(X){e.brandCheck(this,K),p(this,m).close&&this.removeEventListener("close",p(this,m).close),typeof X=="function"?(p(this,m).close=X,this.addEventListener("close",X)):p(this,m).close=null}get onmessage(){return e.brandCheck(this,K),p(this,m).message}set onmessage(X){e.brandCheck(this,K),p(this,m).message&&this.removeEventListener("message",p(this,m).message),typeof X=="function"?(p(this,m).message=X,this.addEventListener("message",X)):p(this,m).message=null}get binaryType(){return e.brandCheck(this,K),this[a]}set binaryType(X){e.brandCheck(this,K),X!=="blob"&&X!=="arraybuffer"?this[a]="blob":this[a]=X}};m=new WeakMap,T=new WeakMap,v=new WeakMap,Z=new WeakMap,P=new WeakSet,Og=o(function(X){this[f]=X;const $=new G(this);$.on("drain",o(function(){this.ws[f].socket.resume()},"onParserDrain")),X.socket.ws=this,this[L]=$,this[C]=r.OPEN;const V=X.headersList.get("sec-websocket-extensions");V!==null&&BA(this,Z,V);const q=X.headersList.get("sec-websocket-protocol");q!==null&&BA(this,v,q),M("open",this)},"#onConnectionEstablished"),o(K,"WebSocket");let b=K;return b.CONNECTING=b.prototype.CONNECTING=r.CONNECTING,b.OPEN=b.prototype.OPEN=r.OPEN,b.CLOSING=b.prototype.CLOSING=r.CLOSING,b.CLOSED=b.prototype.CLOSED=r.CLOSED,Object.defineProperties(b.prototype,{CONNECTING:s,OPEN:s,CLOSING:s,CLOSED:s,url:g,readyState:g,bufferedAmount:g,onopen:g,onerror:g,onclose:g,close:g,onmessage:g,binaryType:g,send:g,extensions:g,protocol:g,[Symbol.toStringTag]:{value:"WebSocket",writable:!1,enumerable:!1,configurable:!0}}),Object.defineProperties(b,{CONNECTING:s,OPEN:s,CLOSING:s,CLOSED:s}),e.converters["sequence"]=e.sequenceConverter(e.converters.DOMString),e.converters["DOMString or sequence"]=function(tA){return e.util.Type(tA)==="Object"&&Symbol.iterator in tA?e.converters["sequence"](tA):e.converters.DOMString(tA)},e.converters.WebSocketInit=e.dictionaryConverter([{key:"protocols",converter:e.converters["DOMString or sequence"],get defaultValue(){return[]}},{key:"dispatcher",converter:tA=>tA,get defaultValue(){return F()}},{key:"headers",converter:e.nullableConverter(e.converters.HeadersInit)}]),e.converters["DOMString or sequence or WebSocketInit"]=function(tA){return e.util.Type(tA)==="Object"&&!(Symbol.iterator in tA)?e.converters.WebSocketInit(tA):{protocols:e.converters["DOMString or sequence"](tA)}},e.converters.WebSocketSendData=function(tA){if(e.util.Type(tA)==="Object"){if(d(tA))return e.converters.Blob(tA,{strict:!1});if(ArrayBuffer.isView(tA)||N.isArrayBuffer(tA))return e.converters.BufferSource(tA)}return e.converters.USVString(tA)},ti={WebSocket:b},ti}o(gl,"requireWebsocket");var ri,Hg;function Vg(){if(Hg)return ri;Hg=1;function e(s){return s.indexOf("\0")===-1}o(e,"isValidLastEventId");function A(s){if(s.length===0)return!1;for(let r=0;r57)return!1;return!0}o(A,"isASCIINumber");function t(s){return new Promise(r=>{setTimeout(r,s).unref()})}return o(t,"delay"),ri={isValidLastEventId:e,isASCIINumber:A,delay:t},ri}o(Vg,"requireUtil");var si,vg;function Bl(){if(vg)return si;vg=1;const{Transform:e}=ue,{isASCIINumber:A,isValidLastEventId:t}=Vg(),s=[239,187,191],r=10,n=13,i=58,E=32,C=class C extends e{constructor(f={}){f.readableObjectMode=!0;super(f);WA(this,"state",null);WA(this,"checkBOM",!0);WA(this,"crlfCheck",!1);WA(this,"eventEndCheck",!1);WA(this,"buffer",null);WA(this,"pos",0);WA(this,"event",{data:void 0,event:void 0,id:void 0,retry:void 0});this.state=f.eventSourceSettings||{},f.push&&(this.push=f.push)}_transform(f,h,L){if(f.length===0){L();return}if(this.buffer?this.buffer=Buffer.concat([this.buffer,f]):this.buffer=f,this.checkBOM)switch(this.buffer.length){case 1:if(this.buffer[0]===s[0]){L();return}this.checkBOM=!1,L();return;case 2:if(this.buffer[0]===s[0]&&this.buffer[1]===s[1]){L();return}this.checkBOM=!1;break;case 3:if(this.buffer[0]===s[0]&&this.buffer[1]===s[1]&&this.buffer[2]===s[2]){this.buffer=Buffer.alloc(0),this.checkBOM=!1,L();return}this.checkBOM=!1;break;default:this.buffer[0]===s[0]&&this.buffer[1]===s[1]&&this.buffer[2]===s[2]&&(this.buffer=this.buffer.subarray(3)),this.checkBOM=!1;break}for(;this.pos0&&(h[c]=l);break}}processEvent(f){f.retry&&A(f.retry)&&(this.state.reconnectionTime=parseInt(f.retry,10)),f.id&&t(f.id)&&(this.state.lastEventId=f.id),f.data!==void 0&&this.push({type:f.event||"message",options:{data:f.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event={data:void 0,event:void 0,id:void 0,retry:void 0}}};o(C,"EventSourceStream");let Q=C;return si={EventSourceStream:Q},si}o(Bl,"requireEventsourceStream");var ni,xg;function Cl(){var U,M,B,D,G,g,d,F,ii,u,Qi;if(xg)return ni;xg=1;const{pipeline:e}=ue,{fetching:A}=Ms(),{makeRequest:t}=rr(),{getGlobalOrigin:s}=lt(),{webidl:r}=vA(),{EventSourceStream:n}=Bl(),{parseMIMEType:i}=_A(),{MessageEvent:E}=Ys(),{isNetworkError:Q}=Ls(),{delay:C}=Vg(),{kEnumerableProperty:I}=aA;let a=!1;const f=3e3,h=0,L=1,c=2,l="anonymous",S="use-credentials",m=class m extends EventTarget{constructor(Z,P={}){super();hA(this,F);hA(this,u);hA(this,U,{open:null,error:null,message:null});hA(this,M,null);hA(this,B,!1);hA(this,D,h);hA(this,G,null);hA(this,g,null);hA(this,d,null);r.argumentLengthCheck(arguments,1,{header:"EventSource constructor"}),a||(a=!0,process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})),Z=r.converters.USVString(Z),P=r.converters.EventSourceInitDict(P),BA(this,d,{origin:s(),policyContainer:{referrerPolicy:"no-referrer"},lastEventId:"",reconnectionTime:f});let AA;try{AA=new URL(Z,p(this,d).origin),p(this,d).origin=AA.origin}catch(uA){throw new DOMException(uA,"SyntaxError")}BA(this,M,AA.href);let K=l;P.withCredentials&&(K=S,BA(this,B,!0));const tA={redirect:"follow",keepalive:!0,mode:"cors",credentials:K==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};tA.client=p(this,d),tA.headersList=[["accept",{name:"accept",value:"text/event-stream"}]],tA.cache="no-store",tA.initiator="other",tA.urlList=[new URL(p(this,M))],BA(this,G,t(tA)),HA(this,F,ii).call(this)}get readyState(){return p(this,D)}get url(){return p(this,M)}get withCredentials(){return p(this,B)}close(){r.brandCheck(this,m),p(this,D)!==c&&(BA(this,D,c),clearTimeout(p(this,d).reconnectionTimer),p(this,g).abort(),p(this,G)&&BA(this,G,null))}get onopen(){return p(this,U).open}set onopen(Z){p(this,U).open&&this.removeEventListener("open",p(this,U).open),typeof Z=="function"?(p(this,U).open=Z,this.addEventListener("open",Z)):p(this,U).open=null}get onmessage(){return p(this,U).message}set onmessage(Z){p(this,U).message&&this.removeEventListener("message",p(this,U).message),typeof Z=="function"?(p(this,U).message=Z,this.addEventListener("message",Z)):p(this,U).message=null}get onerror(){return p(this,U).error}set onerror(Z){p(this,U).error&&this.removeEventListener("error",p(this,U).error),typeof Z=="function"?(p(this,U).error=Z,this.addEventListener("error",Z)):p(this,U).error=null}};U=new WeakMap,M=new WeakMap,B=new WeakMap,D=new WeakMap,G=new WeakMap,g=new WeakMap,d=new WeakMap,F=new WeakSet,ii=o(function(){if(p(this,D)===c)return;BA(this,D,h);const Z={request:p(this,G)},P=o(AA=>{Q(AA)&&(this.dispatchEvent(new Event("error")),this.close()),HA(this,u,Qi).call(this)},"processEventSourceEndOfBody");Z.processResponseEndOfBody=P,Z.processResponse=AA=>{if(Q(AA))if(AA.aborted){this.close(),this.dispatchEvent(new Event("error"));return}else{HA(this,u,Qi).call(this);return}const K=AA.headersList.get("content-type",!0),tA=K!==null?i(K):"failure",uA=tA!=="failure"&&tA.essence==="text/event-stream";if(AA.status!==200||uA===!1){this.close(),this.dispatchEvent(new Event("error"));return}BA(this,D,L),this.dispatchEvent(new Event("open")),p(this,d).origin=AA.urlList[AA.urlList.length-1].origin;const X=new n({eventSourceSettings:p(this,d),push:$=>{this.dispatchEvent(new E($.type,$.options))}});e(AA.body.stream,X,$=>{$?.aborted===!1&&(this.close(),this.dispatchEvent(new Event("error")))})},BA(this,g,A(Z))},"#connect"),u=new WeakSet,Qi=o(async function(){p(this,D)!==c&&(BA(this,D,h),this.dispatchEvent(new Event("error")),await C(p(this,d).reconnectionTime),p(this,D)===h&&(p(this,d).lastEventId!==""&&p(this,G).headersList.set("last-event-id",p(this,d).lastEventId,!0),HA(this,F,ii).call(this)))},"#reconnect"),o(m,"EventSource");let k=m;const w={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:h,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:L,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:c,writable:!1}};return Object.defineProperties(k,w),Object.defineProperties(k.prototype,w),Object.defineProperties(k.prototype,{close:I,onerror:I,onmessage:I,onopen:I,readyState:I,url:I,withCredentials:I}),r.converters.EventSourceInitDict=r.dictionaryConverter([{key:"withCredentials",converter:r.converters.boolean,defaultValue:!1}]),ni={EventSource:k,defaultReconnectionTime:f},ni}o(Cl,"requireEventsource");const Il=_i,al=Ao,cl=Nc,hl=kA,Gs=aA,{InvalidArgumentError:Ts}=hl,bt=wt,{getGlobalDispatcher:ll,setGlobalDispatcher:Wl}=po;Object.assign(Il.prototype,bt);var ul=al,dl=cl;Gs.parseHeaders,Gs.headerNameToString;function nr(e){return(A,t,s)=>{if(typeof t=="function"&&(s=t,t=null),!A||typeof A!="string"&&typeof A!="object"&&!(A instanceof URL))throw new Ts("invalid url");if(t!=null&&typeof t!="object")throw new Ts("invalid opts");if(t&&t.path!=null){if(typeof t.path!="string")throw new Ts("invalid opts.path");let i=t.path;t.path.startsWith("/")||(i=`/${i}`),A=new URL(Gs.parseOrigin(A).origin+i)}else t||(t=typeof A=="object"?A:{}),A=Gs.parseURL(A);const{agent:r,dispatcher:n=ll()}=t;if(r)throw new Ts("unsupported opts.agent. Did you mean opts.client?");return e.call(n,{...t,origin:A.origin,path:A.search?`${A.pathname}${A.search}`:A.pathname,method:t.method||(t.body?"PUT":"GET")},s)}}o(nr,"makeDispatcher"),Ms().fetch,Ut().Headers,Ls().Response,rr().Request,ss().FormData,Dn().File,el().FileReader,lt();const{CacheStorage:fl}=sl(),{kConstruct:Dl}=Vo();new fl(Dl),il(),_A(),Ys(),gl().WebSocket,nr(bt.request),nr(bt.stream),nr(bt.pipeline),nr(bt.connect),nr(bt.upgrade),Cl();export{ul as A,dl as P}; diff --git a/node_modules/node-fetch-native-with-agent/dist/shared/node-fetch-native-with-agent.61758d11.cjs b/node_modules/node-fetch-native-with-agent/dist/shared/node-fetch-native-with-agent.61758d11.cjs new file mode 100644 index 0000000..0d7da4e --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/shared/node-fetch-native-with-agent.61758d11.cjs @@ -0,0 +1 @@ +"use strict";var l=Object.defineProperty;var o=(e,t)=>l(e,"name",{value:t,configurable:!0});var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function getDefaultExportFromCjs(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}o(getDefaultExportFromCjs,"getDefaultExportFromCjs"),exports.commonjsGlobal=commonjsGlobal,exports.getDefaultExportFromCjs=getDefaultExportFromCjs; diff --git a/node_modules/node-fetch-native-with-agent/dist/shared/node-fetch-native-with-agent.df7e6bd6.cjs b/node_modules/node-fetch-native-with-agent/dist/shared/node-fetch-native-with-agent.df7e6bd6.cjs new file mode 100644 index 0000000..af98dbc --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/dist/shared/node-fetch-native-with-agent.df7e6bd6.cjs @@ -0,0 +1,41 @@ +"use strict";var Dt=Object.defineProperty;var Ft=(e,A,t)=>A in e?Dt(e,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[A]=t;var o=(e,A)=>Dt(e,"name",{value:A,configurable:!0});var NA=(e,A,t)=>(Ft(e,typeof A!="symbol"?A+"":A,t),t),ze=(e,A,t)=>{if(!A.has(e))throw TypeError("Cannot "+t)},yt=(e,A)=>{if(Object(A)!==A)throw TypeError('Cannot use the "in" operator on this value');return e.has(A)},p=(e,A,t)=>(ze(e,A,"read from private field"),t?t.call(e):A.get(e)),CA=(e,A,t)=>{if(A.has(e))throw TypeError("Cannot add the same private member more than once");A instanceof WeakSet?A.add(e):A.set(e,t)},EA=(e,A,t,n)=>(ze(e,A,"write to private field"),n?n.call(e,t):A.set(e,t),t);var kA=(e,A,t)=>(ze(e,A,"access private method"),t);var ne,se,oe,ie,Qe,Ee,ge,Be,Ce,Ie,ae,ce,he,le,ue,de,fe,De,ye,Re,we,ke,_A,Ne,Fe,pe,Se,Ue,be,me,Le,Me,Ye,Je,Oe,Rt,Ge,Ae,Te;const require$$0=require("node:assert"),require$$4=require("node:net"),http$1=require("node:http"),Stream=require("node:stream"),require$$6=require("node:buffer"),require$$0$1=require("node:util"),require$$8=require("node:querystring"),require$$0$2=require("node:diagnostics_channel"),require$$0$3=require("node:events"),_commonjsHelpers=require("./node-fetch-native-with-agent.61758d11.cjs"),require$$4$1=require("node:tls"),zlib=require("node:zlib"),require$$5=require("node:perf_hooks"),require$$8$1=require("node:util/types"),require$$0$4=require("node:os"),require$$1=require("node:url"),require$$5$1=require("node:async_hooks");require("node:console");const require$$5$2=require("string_decoder"),require$$2=require("node:worker_threads");function _interopDefaultCompat(e){return e&&typeof e=="object"&&"default"in e?e.default:e}o(_interopDefaultCompat,"_interopDefaultCompat");const require$$0__default=_interopDefaultCompat(require$$0),require$$4__default=_interopDefaultCompat(require$$4),http__default=_interopDefaultCompat(http$1),Stream__default=_interopDefaultCompat(Stream),require$$6__default=_interopDefaultCompat(require$$6),require$$0__default$1=_interopDefaultCompat(require$$0$1),require$$8__default=_interopDefaultCompat(require$$8),require$$0__default$2=_interopDefaultCompat(require$$0$2),require$$0__default$3=_interopDefaultCompat(require$$0$3),require$$4__default$1=_interopDefaultCompat(require$$4$1),zlib__default=_interopDefaultCompat(zlib),require$$5__default=_interopDefaultCompat(require$$5),require$$8__default$1=_interopDefaultCompat(require$$8$1),require$$0__default$4=_interopDefaultCompat(require$$0$4),require$$1__default=_interopDefaultCompat(require$$1),require$$5__default$1=_interopDefaultCompat(require$$5$1),require$$5__default$2=_interopDefaultCompat(require$$5$2),require$$2__default=_interopDefaultCompat(require$$2);var symbols$4={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kHeadersList:Symbol("headers list"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kResume:Symbol("resume"),kOnError:Symbol("on error"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kInterceptors:Symbol("dispatch interceptors"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2SessionState:Symbol("http2Session state"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable"),kListeners:Symbol("listeners"),kHTTPContext:Symbol("http context"),kMaxConcurrentStreams:Symbol("max concurrent streams")};let UndiciError$1=(ne=class extends Error{constructor(A){super(A),this.name="UndiciError",this.code="UND_ERR"}},o(ne,"UndiciError"),ne),ConnectTimeoutError$1=(se=class extends UndiciError$1{constructor(A){super(A),this.name="ConnectTimeoutError",this.message=A||"Connect Timeout Error",this.code="UND_ERR_CONNECT_TIMEOUT"}},o(se,"ConnectTimeoutError"),se),HeadersTimeoutError$1=(oe=class extends UndiciError$1{constructor(A){super(A),this.name="HeadersTimeoutError",this.message=A||"Headers Timeout Error",this.code="UND_ERR_HEADERS_TIMEOUT"}},o(oe,"HeadersTimeoutError"),oe),HeadersOverflowError$1=(ie=class extends UndiciError$1{constructor(A){super(A),this.name="HeadersOverflowError",this.message=A||"Headers Overflow Error",this.code="UND_ERR_HEADERS_OVERFLOW"}},o(ie,"HeadersOverflowError"),ie),BodyTimeoutError$1=(Qe=class extends UndiciError$1{constructor(A){super(A),this.name="BodyTimeoutError",this.message=A||"Body Timeout Error",this.code="UND_ERR_BODY_TIMEOUT"}},o(Qe,"BodyTimeoutError"),Qe),ResponseStatusCodeError$1=(Ee=class extends UndiciError$1{constructor(A,t,n,r){super(A),this.name="ResponseStatusCodeError",this.message=A||"Response Status Code Error",this.code="UND_ERR_RESPONSE_STATUS_CODE",this.body=r,this.status=t,this.statusCode=t,this.headers=n}},o(Ee,"ResponseStatusCodeError"),Ee),InvalidArgumentError$k=(ge=class extends UndiciError$1{constructor(A){super(A),this.name="InvalidArgumentError",this.message=A||"Invalid Argument Error",this.code="UND_ERR_INVALID_ARG"}},o(ge,"InvalidArgumentError"),ge),InvalidReturnValueError$2=(Be=class extends UndiciError$1{constructor(A){super(A),this.name="InvalidReturnValueError",this.message=A||"Invalid Return Value Error",this.code="UND_ERR_INVALID_RETURN_VALUE"}},o(Be,"InvalidReturnValueError"),Be),AbortError$1=(Ce=class extends UndiciError$1{constructor(A){super(A),this.name="AbortError",this.message=A||"The operation was aborted"}},o(Ce,"AbortError"),Ce),RequestAbortedError$6=(Ie=class extends AbortError$1{constructor(A){super(A),this.name="AbortError",this.message=A||"Request aborted",this.code="UND_ERR_ABORTED"}},o(Ie,"RequestAbortedError"),Ie),InformationalError$3=(ae=class extends UndiciError$1{constructor(A){super(A),this.name="InformationalError",this.message=A||"Request information",this.code="UND_ERR_INFO"}},o(ae,"InformationalError"),ae),RequestContentLengthMismatchError$2=(ce=class extends UndiciError$1{constructor(A){super(A),this.name="RequestContentLengthMismatchError",this.message=A||"Request body length does not match content-length header",this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}},o(ce,"RequestContentLengthMismatchError"),ce),ResponseContentLengthMismatchError$1=(he=class extends UndiciError$1{constructor(A){super(A),this.name="ResponseContentLengthMismatchError",this.message=A||"Response body length does not match content-length header",this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}},o(he,"ResponseContentLengthMismatchError"),he),ClientDestroyedError$2=(le=class extends UndiciError$1{constructor(A){super(A),this.name="ClientDestroyedError",this.message=A||"The client is destroyed",this.code="UND_ERR_DESTROYED"}},o(le,"ClientDestroyedError"),le),ClientClosedError$1=(ue=class extends UndiciError$1{constructor(A){super(A),this.name="ClientClosedError",this.message=A||"The client is closed",this.code="UND_ERR_CLOSED"}},o(ue,"ClientClosedError"),ue),SocketError$4=(de=class extends UndiciError$1{constructor(A,t){super(A),this.name="SocketError",this.message=A||"Socket error",this.code="UND_ERR_SOCKET",this.socket=t}},o(de,"SocketError"),de),NotSupportedError$2=(fe=class extends UndiciError$1{constructor(A){super(A),this.name="NotSupportedError",this.message=A||"Not supported error",this.code="UND_ERR_NOT_SUPPORTED"}},o(fe,"NotSupportedError"),fe);const At=class At extends UndiciError$1{constructor(A){super(A),this.name="MissingUpstreamError",this.message=A||"No upstream has been added to the BalancedPool",this.code="UND_ERR_BPL_MISSING_UPSTREAM"}};o(At,"BalancedPoolMissingUpstreamError");let BalancedPoolMissingUpstreamError=At,HTTPParserError$1=(De=class extends Error{constructor(A,t,n){super(A),this.name="HTTPParserError",this.code=t?`HPE_${t}`:void 0,this.data=n?n.toString():void 0}},o(De,"HTTPParserError"),De),ResponseExceededMaxSizeError$1=(ye=class extends UndiciError$1{constructor(A){super(A),this.name="ResponseExceededMaxSizeError",this.message=A||"Response content exceeded max size",this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}},o(ye,"ResponseExceededMaxSizeError"),ye);const et=class et extends UndiciError$1{constructor(A,t,{headers:n,data:r}){super(A),this.name="RequestRetryError",this.message=A||"Request retry error",this.code="UND_ERR_REQ_RETRY",this.statusCode=t,this.data=r,this.headers=n}};o(et,"RequestRetryError");let RequestRetryError=et,SecureProxyConnectionError$1=(Re=class extends UndiciError$1{constructor(A,t,n){super(t,{cause:A,...n??{}}),this.name="SecureProxyConnectionError",this.message=t||"Secure Proxy Connection failed",this.code="UND_ERR_PRX_TLS",this.cause=A}},o(Re,"SecureProxyConnectionError"),Re);var errors$1={AbortError:AbortError$1,HTTPParserError:HTTPParserError$1,UndiciError:UndiciError$1,HeadersTimeoutError:HeadersTimeoutError$1,HeadersOverflowError:HeadersOverflowError$1,BodyTimeoutError:BodyTimeoutError$1,RequestContentLengthMismatchError:RequestContentLengthMismatchError$2,ConnectTimeoutError:ConnectTimeoutError$1,ResponseStatusCodeError:ResponseStatusCodeError$1,InvalidArgumentError:InvalidArgumentError$k,InvalidReturnValueError:InvalidReturnValueError$2,RequestAbortedError:RequestAbortedError$6,ClientDestroyedError:ClientDestroyedError$2,ClientClosedError:ClientClosedError$1,InformationalError:InformationalError$3,SocketError:SocketError$4,NotSupportedError:NotSupportedError$2,ResponseContentLengthMismatchError:ResponseContentLengthMismatchError$1,BalancedPoolMissingUpstreamError,ResponseExceededMaxSizeError:ResponseExceededMaxSizeError$1,RequestRetryError,SecureProxyConnectionError:SecureProxyConnectionError$1};const headerNameLowerCasedRecord$3={},wellknownHeaderNames$1=["Accept","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Age","Allow","Alt-Svc","Alt-Used","Authorization","Cache-Control","Clear-Site-Data","Connection","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Security-Policy-Report-Only","Content-Type","Cookie","Cross-Origin-Embedder-Policy","Cross-Origin-Opener-Policy","Cross-Origin-Resource-Policy","Date","Device-Memory","Downlink","ECT","ETag","Expect","Expect-CT","Expires","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Keep-Alive","Last-Modified","Link","Location","Max-Forwards","Origin","Permissions-Policy","Pragma","Proxy-Authenticate","Proxy-Authorization","RTT","Range","Referer","Referrer-Policy","Refresh","Retry-After","Sec-WebSocket-Accept","Sec-WebSocket-Extensions","Sec-WebSocket-Key","Sec-WebSocket-Protocol","Sec-WebSocket-Version","Server","Server-Timing","Service-Worker-Allowed","Service-Worker-Navigation-Preload","Set-Cookie","SourceMap","Strict-Transport-Security","Supports-Loading-Mode","TE","Timing-Allow-Origin","Trailer","Transfer-Encoding","Upgrade","Upgrade-Insecure-Requests","User-Agent","Vary","Via","WWW-Authenticate","X-Content-Type-Options","X-DNS-Prefetch-Control","X-Frame-Options","X-Permitted-Cross-Domain-Policies","X-Powered-By","X-Requested-With","X-XSS-Protection"];for(let e=0;e=A.length)throw new TypeError("Unreachable");if((this.code=A.charCodeAt(n))>127)throw new TypeError("key must be ascii string");A.length!==++n?this.middle=new xA(A,t,n):this.value=t}add(A,t){const n=A.length;if(n===0)throw new TypeError("Unreachable");let r=0,s=this;for(;;){const i=A.charCodeAt(r);if(i>127)throw new TypeError("key must be ascii string");if(s.code===i)if(n===++r){s.value=t;break}else if(s.middle!==null)s=s.middle;else{s.middle=new xA(A,t,r);break}else if(s.code=65&&(s|=32);r!==null;){if(s===r.code){if(t===++n)return r;r=r.middle;break}r=r.codeNumber(e));function nop(){}o(nop,"nop");function isStream$1(e){return e&&typeof e=="object"&&typeof e.pipe=="function"&&typeof e.on=="function"}o(isStream$1,"isStream$1");function isBlobLike$1(e){if(e===null)return!1;if(e instanceof Blob$1)return!0;if(typeof e!="object")return!1;{const A=e[Symbol.toStringTag];return(A==="Blob"||A==="File")&&("stream"in e&&typeof e.stream=="function"||"arrayBuffer"in e&&typeof e.arrayBuffer=="function")}}o(isBlobLike$1,"isBlobLike$1");function buildURL$3(e,A){if(e.includes("?")||e.includes("#"))throw new Error('Query params cannot be passed when url already contains "?" or "#".');const t=stringify(A);return t&&(e+="?"+t),e}o(buildURL$3,"buildURL$3");function parseURL(e){if(typeof e=="string"){if(e=new URL(e),!/^https?:/.test(e.origin||e.protocol))throw new InvalidArgumentError$j("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}if(!e||typeof e!="object")throw new InvalidArgumentError$j("Invalid URL: The URL argument must be a non-null object.");if(!/^https?:/.test(e.origin||e.protocol))throw new InvalidArgumentError$j("Invalid URL protocol: the URL must start with `http:` or `https:`.");if(!(e instanceof URL)){if(e.port!=null&&e.port!==""&&!Number.isFinite(parseInt(e.port)))throw new InvalidArgumentError$j("Invalid URL: port must be a valid integer or a string representation of an integer.");if(e.path!=null&&typeof e.path!="string")throw new InvalidArgumentError$j("Invalid URL path: the path must be a string or null/undefined.");if(e.pathname!=null&&typeof e.pathname!="string")throw new InvalidArgumentError$j("Invalid URL pathname: the pathname must be a string or null/undefined.");if(e.hostname!=null&&typeof e.hostname!="string")throw new InvalidArgumentError$j("Invalid URL hostname: the hostname must be a string or null/undefined.");if(e.origin!=null&&typeof e.origin!="string")throw new InvalidArgumentError$j("Invalid URL origin: the origin must be a string or null/undefined.");const A=e.port!=null?e.port:e.protocol==="https:"?443:80;let t=e.origin!=null?e.origin:`${e.protocol}//${e.hostname}:${A}`,n=e.path!=null?e.path:`${e.pathname||""}${e.search||""}`;t.endsWith("/")&&(t=t.substring(0,t.length-1)),n&&!n.startsWith("/")&&(n=`/${n}`),e=new URL(t+n)}return e}o(parseURL,"parseURL");function parseOrigin(e){if(e=parseURL(e),e.pathname!=="/"||e.search||e.hash)throw new InvalidArgumentError$j("invalid url");return e}o(parseOrigin,"parseOrigin");function getHostname(e){if(e[0]==="["){const t=e.indexOf("]");return assert$d(t!==-1),e.substring(1,t)}const A=e.indexOf(":");return A===-1?e:e.substring(0,A)}o(getHostname,"getHostname");function getServerName$1(e){if(!e)return null;assert$d.strictEqual(typeof e,"string");const A=getHostname(e);return net$2.isIP(A)?"":A}o(getServerName$1,"getServerName$1");function deepClone(e){return JSON.parse(JSON.stringify(e))}o(deepClone,"deepClone");function isAsyncIterable(e){return e!=null&&typeof e[Symbol.asyncIterator]=="function"}o(isAsyncIterable,"isAsyncIterable");function isIterable$1(e){return e!=null&&(typeof e[Symbol.iterator]=="function"||typeof e[Symbol.asyncIterator]=="function")}o(isIterable$1,"isIterable$1");function bodyLength(e){if(e==null)return 0;if(isStream$1(e)){const A=e._readableState;return A&&A.objectMode===!1&&A.ended===!0&&Number.isFinite(A.length)?A.length:null}else{if(isBlobLike$1(e))return e.size!=null?e.size:null;if(isBuffer$1(e))return e.byteLength}return null}o(bodyLength,"bodyLength");function isDestroyed(e){return e&&!!(e.destroyed||e[kDestroyed$1]||stream$1.isDestroyed?.(e))}o(isDestroyed,"isDestroyed");function isReadableAborted(e){const A=e?._readableState;return isDestroyed(e)&&A&&!A.endEmitted}o(isReadableAborted,"isReadableAborted");function destroy$1(e,A){e==null||!isStream$1(e)||isDestroyed(e)||(typeof e.destroy=="function"?(Object.getPrototypeOf(e).constructor===IncomingMessage&&(e.socket=null),e.destroy(A)):A&&queueMicrotask(()=>{e.emit("error",A)}),e.destroyed!==!0&&(e[kDestroyed$1]=!0))}o(destroy$1,"destroy$1");const KEEPALIVE_TIMEOUT_EXPR=/timeout=(\d+)/;function parseKeepAliveTimeout(e){const A=e.toString().match(KEEPALIVE_TIMEOUT_EXPR);return A?parseInt(A[1],10)*1e3:null}o(parseKeepAliveTimeout,"parseKeepAliveTimeout");function headerNameToString(e){return typeof e=="string"?headerNameLowerCasedRecord$1[e]??e.toLowerCase():tree.lookup(e)??e.toString("latin1").toLowerCase()}o(headerNameToString,"headerNameToString");function bufferToLowerCasedHeaderName(e){return tree.lookup(e)??e.toString("latin1").toLowerCase()}o(bufferToLowerCasedHeaderName,"bufferToLowerCasedHeaderName");function parseHeaders(e,A){A===void 0&&(A={});for(let t=0;ti.toString("utf8")):s.toString("utf8")}}return"content-length"in A&&"content-disposition"in A&&(A["content-disposition"]=Buffer.from(A["content-disposition"]).toString("latin1")),A}o(parseHeaders,"parseHeaders");function parseRawHeaders(e){const A=e.length,t=new Array(A);let n=!1,r=-1,s,i,E=0;for(let Q=0;Q{t.close(),t.byobRequest?.respond(0)});else{const s=Buffer.isBuffer(r)?r:Buffer.from(r);s.byteLength&&t.enqueue(new Uint8Array(s))}return t.desiredSize>0},async cancel(t){await A.return()},type:"bytes"})}o(ReadableStreamFrom$1,"ReadableStreamFrom$1");function isFormDataLike$1(e){return e&&typeof e=="object"&&typeof e.append=="function"&&typeof e.delete=="function"&&typeof e.get=="function"&&typeof e.getAll=="function"&&typeof e.has=="function"&&typeof e.set=="function"&&e[Symbol.toStringTag]==="FormData"}o(isFormDataLike$1,"isFormDataLike$1");function addAbortListener$1(e,A){return"addEventListener"in e?(e.addEventListener("abort",A,{once:!0}),()=>e.removeEventListener("abort",A)):(e.addListener("abort",A),()=>e.removeListener("abort",A))}o(addAbortListener$1,"addAbortListener$1");const hasToWellFormed=typeof String.prototype.toWellFormed=="function",hasIsWellFormed=typeof String.prototype.isWellFormed=="function";function toUSVString(e){return hasToWellFormed?`${e}`.toWellFormed():nodeUtil.toUSVString(e)}o(toUSVString,"toUSVString");function isUSVString(e){return hasIsWellFormed?`${e}`.isWellFormed():toUSVString(e)===`${e}`}o(isUSVString,"isUSVString");function isTokenCharCode(e){switch(e){case 34:case 40:case 41:case 44:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 123:case 125:return!1;default:return e>=33&&e<=126}}o(isTokenCharCode,"isTokenCharCode");function isValidHTTPToken$1(e){if(e.length===0)return!1;for(let A=0;A18||nodeMajor===18&&nodeMinor>=13,safeHTTPMethods:["GET","HEAD","OPTIONS","TRACE"]};const diagnosticsChannel=require$$0__default$2,util$l=require$$0__default$1,undiciDebugLog=util$l.debuglog("undici"),fetchDebuglog=util$l.debuglog("fetch"),websocketDebuglog=util$l.debuglog("websocket");let isClientSet=!1;const channels$3={beforeConnect:diagnosticsChannel.channel("undici:client:beforeConnect"),connected:diagnosticsChannel.channel("undici:client:connected"),connectError:diagnosticsChannel.channel("undici:client:connectError"),sendHeaders:diagnosticsChannel.channel("undici:client:sendHeaders"),create:diagnosticsChannel.channel("undici:request:create"),bodySent:diagnosticsChannel.channel("undici:request:bodySent"),headers:diagnosticsChannel.channel("undici:request:headers"),trailers:diagnosticsChannel.channel("undici:request:trailers"),error:diagnosticsChannel.channel("undici:request:error"),open:diagnosticsChannel.channel("undici:websocket:open"),close:diagnosticsChannel.channel("undici:websocket:close"),socketError:diagnosticsChannel.channel("undici:websocket:socket_error"),ping:diagnosticsChannel.channel("undici:websocket:ping"),pong:diagnosticsChannel.channel("undici:websocket:pong")};if(undiciDebugLog.enabled||fetchDebuglog.enabled){const e=fetchDebuglog.enabled?fetchDebuglog:undiciDebugLog;diagnosticsChannel.channel("undici:client:beforeConnect").subscribe(A=>{const{connectParams:{version:t,protocol:n,port:r,host:s}}=A;e("connecting to %s using %s%s",`${s}${r?`:${r}`:""}`,n,t)}),diagnosticsChannel.channel("undici:client:connected").subscribe(A=>{const{connectParams:{version:t,protocol:n,port:r,host:s}}=A;e("connected to %s using %s%s",`${s}${r?`:${r}`:""}`,n,t)}),diagnosticsChannel.channel("undici:client:connectError").subscribe(A=>{const{connectParams:{version:t,protocol:n,port:r,host:s},error:i}=A;e("connection to %s using %s%s errored - %s",`${s}${r?`:${r}`:""}`,n,t,i.message)}),diagnosticsChannel.channel("undici:client:sendHeaders").subscribe(A=>{const{request:{method:t,path:n,origin:r}}=A;e("sending request to %s %s/%s",t,r,n)}),diagnosticsChannel.channel("undici:request:headers").subscribe(A=>{const{request:{method:t,path:n,origin:r},response:{statusCode:s}}=A;e("received response to %s %s/%s - HTTP %d",t,r,n,s)}),diagnosticsChannel.channel("undici:request:trailers").subscribe(A=>{const{request:{method:t,path:n,origin:r}}=A;e("trailers received from %s %s/%s",t,r,n)}),diagnosticsChannel.channel("undici:request:error").subscribe(A=>{const{request:{method:t,path:n,origin:r},error:s}=A;e("request to %s %s/%s errored - %s",t,r,n,s.message)}),isClientSet=!0}if(websocketDebuglog.enabled){if(!isClientSet){const e=undiciDebugLog.enabled?undiciDebugLog:websocketDebuglog;diagnosticsChannel.channel("undici:client:beforeConnect").subscribe(A=>{const{connectParams:{version:t,protocol:n,port:r,host:s}}=A;e("connecting to %s%s using %s%s",s,r?`:${r}`:"",n,t)}),diagnosticsChannel.channel("undici:client:connected").subscribe(A=>{const{connectParams:{version:t,protocol:n,port:r,host:s}}=A;e("connected to %s%s using %s%s",s,r?`:${r}`:"",n,t)}),diagnosticsChannel.channel("undici:client:connectError").subscribe(A=>{const{connectParams:{version:t,protocol:n,port:r,host:s},error:i}=A;e("connection to %s%s using %s%s errored - %s",s,r?`:${r}`:"",n,t,i.message)}),diagnosticsChannel.channel("undici:client:sendHeaders").subscribe(A=>{const{request:{method:t,path:n,origin:r}}=A;e("sending request to %s %s/%s",t,r,n)})}diagnosticsChannel.channel("undici:websocket:open").subscribe(e=>{const{address:{address:A,port:t}}=e;websocketDebuglog("connection opened %s%s",A,t?`:${t}`:"")}),diagnosticsChannel.channel("undici:websocket:close").subscribe(e=>{const{websocket:A,code:t,reason:n}=e;websocketDebuglog("closed connection to %s - %s %s",A.url,t,n)}),diagnosticsChannel.channel("undici:websocket:socket_error").subscribe(e=>{websocketDebuglog("connection errored - %s",e.message)}),diagnosticsChannel.channel("undici:websocket:ping").subscribe(e=>{websocketDebuglog("ping received")}),diagnosticsChannel.channel("undici:websocket:pong").subscribe(e=>{websocketDebuglog("pong received")})}var diagnostics={channels:channels$3};const{InvalidArgumentError:InvalidArgumentError$i,NotSupportedError:NotSupportedError$1}=errors$1,assert$c=require$$0__default,{isValidHTTPToken,isValidHeaderChar,isStream,destroy,isBuffer,isFormDataLike,isIterable,isBlobLike,buildURL:buildURL$2,validateHandler,getServerName}=util$m,{channels:channels$2}=diagnostics,{headerNameLowerCasedRecord}=constants$5,invalidPathRegex=/[^\u0021-\u00ff]/,kHandler=Symbol("handler");let Request$1=(we=class{constructor(A,{path:t,method:n,body:r,headers:s,query:i,idempotent:E,blocking:Q,upgrade:C,headersTimeout:I,bodyTimeout:a,reset:f,throwOnError:h,expectContinue:L,servername:c},l){if(typeof t!="string")throw new InvalidArgumentError$i("path must be a string");if(t[0]!=="/"&&!(t.startsWith("http://")||t.startsWith("https://"))&&n!=="CONNECT")throw new InvalidArgumentError$i("path must be an absolute URL or start with a slash");if(invalidPathRegex.exec(t)!==null)throw new InvalidArgumentError$i("invalid request path");if(typeof n!="string")throw new InvalidArgumentError$i("method must be a string");if(!isValidHTTPToken(n))throw new InvalidArgumentError$i("invalid request method");if(C&&typeof C!="string")throw new InvalidArgumentError$i("upgrade must be a string");if(I!=null&&(!Number.isFinite(I)||I<0))throw new InvalidArgumentError$i("invalid headersTimeout");if(a!=null&&(!Number.isFinite(a)||a<0))throw new InvalidArgumentError$i("invalid bodyTimeout");if(f!=null&&typeof f!="boolean")throw new InvalidArgumentError$i("invalid reset");if(L!=null&&typeof L!="boolean")throw new InvalidArgumentError$i("invalid expectContinue");if(this.headersTimeout=I,this.bodyTimeout=a,this.throwOnError=h===!0,this.method=n,this.abort=null,r==null)this.body=null;else if(isStream(r)){this.body=r;const S=this.body._readableState;(!S||!S.autoDestroy)&&(this.endHandler=o(function(){destroy(this)},"autoDestroy"),this.body.on("end",this.endHandler)),this.errorHandler=k=>{this.abort?this.abort(k):this.error=k},this.body.on("error",this.errorHandler)}else if(isBuffer(r))this.body=r.byteLength?r:null;else if(ArrayBuffer.isView(r))this.body=r.buffer.byteLength?Buffer.from(r.buffer,r.byteOffset,r.byteLength):null;else if(r instanceof ArrayBuffer)this.body=r.byteLength?Buffer.from(r):null;else if(typeof r=="string")this.body=r.length?Buffer.from(r):null;else if(isFormDataLike(r)||isIterable(r)||isBlobLike(r))this.body=r;else throw new InvalidArgumentError$i("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable");if(this.completed=!1,this.aborted=!1,this.upgrade=C||null,this.path=i?buildURL$2(t,i):t,this.origin=A,this.idempotent=E??(n==="HEAD"||n==="GET"),this.blocking=Q??!1,this.reset=f??null,this.host=null,this.contentLength=null,this.contentType=null,this.headers=[],this.expectContinue=L??!1,Array.isArray(s)){if(s.length%2!==0)throw new InvalidArgumentError$i("headers array must be even");for(let S=0;S=0;t--)if(typeof this[kInterceptors$4][t]!="function")throw new InvalidArgumentError$h("interceptor must be an function")}this[kInterceptors$4]=A}close(A){if(A===void 0)return new Promise((n,r)=>{this.close((s,i)=>s?r(s):n(i))});if(typeof A!="function")throw new InvalidArgumentError$h("invalid callback");if(this[kDestroyed]){queueMicrotask(()=>A(new ClientDestroyedError$1,null));return}if(this[kClosed]){this[kOnClosed]?this[kOnClosed].push(A):queueMicrotask(()=>A(null,null));return}this[kClosed]=!0,this[kOnClosed].push(A);const t=o(()=>{const n=this[kOnClosed];this[kOnClosed]=null;for(let r=0;rthis.destroy()).then(()=>{queueMicrotask(t)})}destroy(A,t){if(typeof A=="function"&&(t=A,A=null),t===void 0)return new Promise((r,s)=>{this.destroy(A,(i,E)=>i?s(i):r(E))});if(typeof t!="function")throw new InvalidArgumentError$h("invalid callback");if(this[kDestroyed]){this[kOnDestroyed]?this[kOnDestroyed].push(t):queueMicrotask(()=>t(null,null));return}A||(A=new ClientDestroyedError$1),this[kDestroyed]=!0,this[kOnDestroyed]=this[kOnDestroyed]||[],this[kOnDestroyed].push(t);const n=o(()=>{const r=this[kOnDestroyed];this[kOnDestroyed]=null;for(let s=0;s{queueMicrotask(n)})}[kInterceptedDispatch](A,t){if(!this[kInterceptors$4]||this[kInterceptors$4].length===0)return this[kInterceptedDispatch]=this[kDispatch$3],this[kDispatch$3](A,t);let n=this[kDispatch$3].bind(this);for(let r=this[kInterceptors$4].length-1;r>=0;r--)n=this[kInterceptors$4][r](n);return this[kInterceptedDispatch]=n,n(A,t)}dispatch(A,t){if(!t||typeof t!="object")throw new InvalidArgumentError$h("handler must be an object");try{if(!A||typeof A!="object")throw new InvalidArgumentError$h("opts must be an object.");if(this[kDestroyed]||this[kOnDestroyed])throw new ClientDestroyedError$1;if(this[kClosed])throw new ClientClosedError;return this[kInterceptedDispatch](A,t)}catch(n){if(typeof t.onError!="function")throw new InvalidArgumentError$h("invalid onError method");return t.onError(n),!1}}},o(Fe,"DispatcherBase"),Fe);var dispatcherBase=DispatcherBase$4;const net$1=require$$4__default,assert$b=require$$0__default,util$k=util$m,{InvalidArgumentError:InvalidArgumentError$g,ConnectTimeoutError}=errors$1;let tls,SessionCache;_commonjsHelpers.commonjsGlobal.FinalizationRegistry&&!(process.env.NODE_V8_COVERAGE||process.env.UNDICI_NO_FG)?SessionCache=(pe=class{constructor(A){this._maxCachedSessions=A,this._sessionCache=new Map,this._sessionRegistry=new _commonjsHelpers.commonjsGlobal.FinalizationRegistry(t=>{if(this._sessionCache.size=this._maxCachedSessions){const{value:n}=this._sessionCache.keys().next();this._sessionCache.delete(n)}this._sessionCache.set(A,t)}}},o(Se,"SimpleSessionCache"),Se);function buildConnector$3({allowH2:e,maxCachedSessions:A,socketPath:t,timeout:n,...r}){if(A!=null&&(!Number.isInteger(A)||A<0))throw new InvalidArgumentError$g("maxCachedSessions must be a positive integer or zero");const s={path:t,...r},i=new SessionCache(A??100);return n=n??1e4,e=e??!1,o(function({hostname:Q,host:C,protocol:I,port:a,servername:f,localAddress:h,httpSocket:L},c){let l;if(I==="https:"){tls||(tls=require$$4__default$1),f=f||s.servername||util$k.getServerName(C)||null;const k=f||Q,w=i.get(k)||null;assert$b(k),l=tls.connect({highWaterMark:16384,...s,servername:f,session:w,localAddress:h,ALPNProtocols:e?["http/1.1","h2"]:["http/1.1"],socket:L,port:a||443,host:Q}),l.on("session",function(U){i.set(k,U)})}else assert$b(!L,"httpSocket can only be sent on TLS update"),l=net$1.connect({highWaterMark:64*1024,...s,localAddress:h,port:a||80,host:Q});if(s.keepAlive==null||s.keepAlive){const k=s.keepAliveInitialDelay===void 0?6e4:s.keepAliveInitialDelay;l.setKeepAlive(!0,k)}const S=setupTimeout(()=>onConnectTimeout(l),n);return l.setNoDelay(!0).once(I==="https:"?"secureConnect":"connect",function(){if(S(),c){const k=c;c=null,k(null,this)}}).on("error",function(k){if(S(),c){const w=c;c=null,w(k)}}),l},"connect")}o(buildConnector$3,"buildConnector$3");function setupTimeout(e,A){if(!A)return()=>{};let t=null,n=null;const r=setTimeout(()=>{t=setImmediate(()=>{process.platform==="win32"?n=setImmediate(()=>e()):e()})},A);return()=>{clearTimeout(r),clearImmediate(t),clearImmediate(n)}}o(setupTimeout,"setupTimeout");function onConnectTimeout(e){let A="Connect Timeout Error";Array.isArray(e.autoSelectFamilyAttemptedAddresses)&&(A+=` (attempted addresses: ${e.autoSelectFamilyAttemptedAddresses.join(", ")})`),util$k.destroy(e,new ConnectTimeoutError(A))}o(onConnectTimeout,"onConnectTimeout");var connect$2=buildConnector$3;let fastNow=Date.now(),fastNowTimeout;const fastTimers=[];function onTimeout(){fastNow=Date.now();let e=fastTimers.length,A=0;for(;A0&&fastNow>=t.state&&(t.state=-1,t.callback(t.opaque)),t.state===-1?(t.state=-2,A!==e-1?fastTimers[A]=fastTimers.pop():fastTimers.pop(),e-=1):A+=1}fastTimers.length>0&&refreshTimeout()}o(onTimeout,"onTimeout");function refreshTimeout(){fastNowTimeout?.refresh?fastNowTimeout.refresh():(clearTimeout(fastNowTimeout),fastNowTimeout=setTimeout(onTimeout,1e3),fastNowTimeout.unref&&fastNowTimeout.unref())}o(refreshTimeout,"refreshTimeout");const nt=class nt{constructor(A,t,n){this.callback=A,this.delay=t,this.opaque=n,this.state=-2,this.refresh()}refresh(){this.state===-2&&(fastTimers.push(this),(!fastNowTimeout||fastTimers.length===1)&&refreshTimeout()),this.state=0}clear(){this.state=-1}};o(nt,"Timeout");let Timeout=nt;var timers$1={setTimeout(e,A,t){return A<1e3?setTimeout(e,A,t):new Timeout(e,A,t)},clearTimeout(e){e instanceof Timeout?e.clear():clearTimeout(e)}},constants$4={},utils={};Object.defineProperty(utils,"__esModule",{value:!0}),utils.enumToMap=void 0;function enumToMap(e){const A={};return Object.keys(e).forEach(t=>{const n=e[t];typeof n=="number"&&(A[t]=n)}),A}o(enumToMap,"enumToMap"),utils.enumToMap=enumToMap,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SPECIAL_HEADERS=e.HEADER_STATE=e.MINOR=e.MAJOR=e.CONNECTION_TOKEN_CHARS=e.HEADER_CHARS=e.TOKEN=e.STRICT_TOKEN=e.HEX=e.URL_CHAR=e.STRICT_URL_CHAR=e.USERINFO_CHARS=e.MARK=e.ALPHANUM=e.NUM=e.HEX_MAP=e.NUM_MAP=e.ALPHA=e.FINISH=e.H_METHOD_MAP=e.METHOD_MAP=e.METHODS_RTSP=e.METHODS_ICE=e.METHODS_HTTP=e.METHODS=e.LENIENT_FLAGS=e.FLAGS=e.TYPE=e.ERROR=void 0;const A=utils;(function(r){r[r.OK=0]="OK",r[r.INTERNAL=1]="INTERNAL",r[r.STRICT=2]="STRICT",r[r.LF_EXPECTED=3]="LF_EXPECTED",r[r.UNEXPECTED_CONTENT_LENGTH=4]="UNEXPECTED_CONTENT_LENGTH",r[r.CLOSED_CONNECTION=5]="CLOSED_CONNECTION",r[r.INVALID_METHOD=6]="INVALID_METHOD",r[r.INVALID_URL=7]="INVALID_URL",r[r.INVALID_CONSTANT=8]="INVALID_CONSTANT",r[r.INVALID_VERSION=9]="INVALID_VERSION",r[r.INVALID_HEADER_TOKEN=10]="INVALID_HEADER_TOKEN",r[r.INVALID_CONTENT_LENGTH=11]="INVALID_CONTENT_LENGTH",r[r.INVALID_CHUNK_SIZE=12]="INVALID_CHUNK_SIZE",r[r.INVALID_STATUS=13]="INVALID_STATUS",r[r.INVALID_EOF_STATE=14]="INVALID_EOF_STATE",r[r.INVALID_TRANSFER_ENCODING=15]="INVALID_TRANSFER_ENCODING",r[r.CB_MESSAGE_BEGIN=16]="CB_MESSAGE_BEGIN",r[r.CB_HEADERS_COMPLETE=17]="CB_HEADERS_COMPLETE",r[r.CB_MESSAGE_COMPLETE=18]="CB_MESSAGE_COMPLETE",r[r.CB_CHUNK_HEADER=19]="CB_CHUNK_HEADER",r[r.CB_CHUNK_COMPLETE=20]="CB_CHUNK_COMPLETE",r[r.PAUSED=21]="PAUSED",r[r.PAUSED_UPGRADE=22]="PAUSED_UPGRADE",r[r.PAUSED_H2_UPGRADE=23]="PAUSED_H2_UPGRADE",r[r.USER=24]="USER"})(e.ERROR||(e.ERROR={})),function(r){r[r.BOTH=0]="BOTH",r[r.REQUEST=1]="REQUEST",r[r.RESPONSE=2]="RESPONSE"}(e.TYPE||(e.TYPE={})),function(r){r[r.CONNECTION_KEEP_ALIVE=1]="CONNECTION_KEEP_ALIVE",r[r.CONNECTION_CLOSE=2]="CONNECTION_CLOSE",r[r.CONNECTION_UPGRADE=4]="CONNECTION_UPGRADE",r[r.CHUNKED=8]="CHUNKED",r[r.UPGRADE=16]="UPGRADE",r[r.CONTENT_LENGTH=32]="CONTENT_LENGTH",r[r.SKIPBODY=64]="SKIPBODY",r[r.TRAILING=128]="TRAILING",r[r.TRANSFER_ENCODING=512]="TRANSFER_ENCODING"}(e.FLAGS||(e.FLAGS={})),function(r){r[r.HEADERS=1]="HEADERS",r[r.CHUNKED_LENGTH=2]="CHUNKED_LENGTH",r[r.KEEP_ALIVE=4]="KEEP_ALIVE"}(e.LENIENT_FLAGS||(e.LENIENT_FLAGS={}));var t;(function(r){r[r.DELETE=0]="DELETE",r[r.GET=1]="GET",r[r.HEAD=2]="HEAD",r[r.POST=3]="POST",r[r.PUT=4]="PUT",r[r.CONNECT=5]="CONNECT",r[r.OPTIONS=6]="OPTIONS",r[r.TRACE=7]="TRACE",r[r.COPY=8]="COPY",r[r.LOCK=9]="LOCK",r[r.MKCOL=10]="MKCOL",r[r.MOVE=11]="MOVE",r[r.PROPFIND=12]="PROPFIND",r[r.PROPPATCH=13]="PROPPATCH",r[r.SEARCH=14]="SEARCH",r[r.UNLOCK=15]="UNLOCK",r[r.BIND=16]="BIND",r[r.REBIND=17]="REBIND",r[r.UNBIND=18]="UNBIND",r[r.ACL=19]="ACL",r[r.REPORT=20]="REPORT",r[r.MKACTIVITY=21]="MKACTIVITY",r[r.CHECKOUT=22]="CHECKOUT",r[r.MERGE=23]="MERGE",r[r["M-SEARCH"]=24]="M-SEARCH",r[r.NOTIFY=25]="NOTIFY",r[r.SUBSCRIBE=26]="SUBSCRIBE",r[r.UNSUBSCRIBE=27]="UNSUBSCRIBE",r[r.PATCH=28]="PATCH",r[r.PURGE=29]="PURGE",r[r.MKCALENDAR=30]="MKCALENDAR",r[r.LINK=31]="LINK",r[r.UNLINK=32]="UNLINK",r[r.SOURCE=33]="SOURCE",r[r.PRI=34]="PRI",r[r.DESCRIBE=35]="DESCRIBE",r[r.ANNOUNCE=36]="ANNOUNCE",r[r.SETUP=37]="SETUP",r[r.PLAY=38]="PLAY",r[r.PAUSE=39]="PAUSE",r[r.TEARDOWN=40]="TEARDOWN",r[r.GET_PARAMETER=41]="GET_PARAMETER",r[r.SET_PARAMETER=42]="SET_PARAMETER",r[r.REDIRECT=43]="REDIRECT",r[r.RECORD=44]="RECORD",r[r.FLUSH=45]="FLUSH"})(t=e.METHODS||(e.METHODS={})),e.METHODS_HTTP=[t.DELETE,t.GET,t.HEAD,t.POST,t.PUT,t.CONNECT,t.OPTIONS,t.TRACE,t.COPY,t.LOCK,t.MKCOL,t.MOVE,t.PROPFIND,t.PROPPATCH,t.SEARCH,t.UNLOCK,t.BIND,t.REBIND,t.UNBIND,t.ACL,t.REPORT,t.MKACTIVITY,t.CHECKOUT,t.MERGE,t["M-SEARCH"],t.NOTIFY,t.SUBSCRIBE,t.UNSUBSCRIBE,t.PATCH,t.PURGE,t.MKCALENDAR,t.LINK,t.UNLINK,t.PRI,t.SOURCE],e.METHODS_ICE=[t.SOURCE],e.METHODS_RTSP=[t.OPTIONS,t.DESCRIBE,t.ANNOUNCE,t.SETUP,t.PLAY,t.PAUSE,t.TEARDOWN,t.GET_PARAMETER,t.SET_PARAMETER,t.REDIRECT,t.RECORD,t.FLUSH,t.GET,t.POST],e.METHOD_MAP=A.enumToMap(t),e.H_METHOD_MAP={},Object.keys(e.METHOD_MAP).forEach(r=>{/^H/.test(r)&&(e.H_METHOD_MAP[r]=e.METHOD_MAP[r])}),function(r){r[r.SAFE=0]="SAFE",r[r.SAFE_WITH_CB=1]="SAFE_WITH_CB",r[r.UNSAFE=2]="UNSAFE"}(e.FINISH||(e.FINISH={})),e.ALPHA=[];for(let r=65;r<=90;r++)e.ALPHA.push(String.fromCharCode(r)),e.ALPHA.push(String.fromCharCode(r+32));e.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9},e.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},e.NUM=["0","1","2","3","4","5","6","7","8","9"],e.ALPHANUM=e.ALPHA.concat(e.NUM),e.MARK=["-","_",".","!","~","*","'","(",")"],e.USERINFO_CHARS=e.ALPHANUM.concat(e.MARK).concat(["%",";",":","&","=","+","$",","]),e.STRICT_URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(e.ALPHANUM),e.URL_CHAR=e.STRICT_URL_CHAR.concat([" ","\f"]);for(let r=128;r<=255;r++)e.URL_CHAR.push(r);e.HEX=e.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]),e.STRICT_TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(e.ALPHANUM),e.TOKEN=e.STRICT_TOKEN.concat([" "]),e.HEADER_CHARS=[" "];for(let r=32;r<=255;r++)r!==127&&e.HEADER_CHARS.push(r);e.CONNECTION_TOKEN_CHARS=e.HEADER_CHARS.filter(r=>r!==44),e.MAJOR=e.NUM_MAP,e.MINOR=e.MAJOR;var n;(function(r){r[r.GENERAL=0]="GENERAL",r[r.CONNECTION=1]="CONNECTION",r[r.CONTENT_LENGTH=2]="CONTENT_LENGTH",r[r.TRANSFER_ENCODING=3]="TRANSFER_ENCODING",r[r.UPGRADE=4]="UPGRADE",r[r.CONNECTION_KEEP_ALIVE=5]="CONNECTION_KEEP_ALIVE",r[r.CONNECTION_CLOSE=6]="CONNECTION_CLOSE",r[r.CONNECTION_UPGRADE=7]="CONNECTION_UPGRADE",r[r.TRANSFER_ENCODING_CHUNKED=8]="TRANSFER_ENCODING_CHUNKED"})(n=e.HEADER_STATE||(e.HEADER_STATE={})),e.SPECIAL_HEADERS={connection:n.CONNECTION,"content-length":n.CONTENT_LENGTH,"proxy-connection":n.CONNECTION,"transfer-encoding":n.TRANSFER_ENCODING,upgrade:n.UPGRADE}}(constants$4);var llhttpWasm,hasRequiredLlhttpWasm;function requireLlhttpWasm(){if(hasRequiredLlhttpWasm)return llhttpWasm;hasRequiredLlhttpWasm=1;const{Buffer:e}=require$$6__default;return llhttpWasm=e.from("AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8=","base64"),llhttpWasm}o(requireLlhttpWasm,"requireLlhttpWasm");var llhttp_simdWasm,hasRequiredLlhttp_simdWasm;function requireLlhttp_simdWasm(){if(hasRequiredLlhttp_simdWasm)return llhttp_simdWasm;hasRequiredLlhttp_simdWasm=1;const{Buffer:e}=require$$6__default;return llhttp_simdWasm=e.from("AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==","base64"),llhttp_simdWasm}o(requireLlhttp_simdWasm,"requireLlhttp_simdWasm");var constants$3,hasRequiredConstants$2;function requireConstants$2(){if(hasRequiredConstants$2)return constants$3;hasRequiredConstants$2=1;const e=["GET","HEAD","POST"],A=new Set(e),t=[101,204,205,304],n=[301,302,303,307,308],r=new Set(n),s=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"],i=new Set(s),E=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"],Q=new Set(E),C=["follow","manual","error"],I=["GET","HEAD","OPTIONS","TRACE"],a=new Set(I),f=["navigate","same-origin","no-cors","cors"],h=["omit","same-origin","include"],L=["default","no-store","reload","no-cache","force-cache","only-if-cached"],c=["content-encoding","content-language","content-location","content-type","content-length"],l=["half"],S=["CONNECT","TRACE","TRACK"],k=new Set(S),w=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""],U=new Set(w);return constants$3={subresource:w,forbiddenMethods:S,requestBodyHeader:c,referrerPolicy:E,requestRedirect:C,requestMode:f,requestCredentials:h,requestCache:L,redirectStatus:n,corsSafeListedMethods:e,nullBodyStatus:t,safeMethods:I,badPorts:s,requestDuplex:l,subresourceSet:U,badPortsSet:i,redirectStatusSet:r,corsSafeListedMethodsSet:A,safeMethodsSet:a,forbiddenMethodsSet:k,referrerPolicySet:Q},constants$3}o(requireConstants$2,"requireConstants$2");var global$1,hasRequiredGlobal;function requireGlobal(){if(hasRequiredGlobal)return global$1;hasRequiredGlobal=1;const e=Symbol.for("undici.globalOrigin.1");function A(){return globalThis[e]}o(A,"getGlobalOrigin");function t(n){if(n===void 0){Object.defineProperty(globalThis,e,{value:void 0,writable:!0,enumerable:!1,configurable:!1});return}const r=new URL(n);if(r.protocol!=="http:"&&r.protocol!=="https:")throw new TypeError(`Only http & https urls are allowed, received ${r.protocol}`);Object.defineProperty(globalThis,e,{value:r,writable:!0,enumerable:!1,configurable:!1})}return o(t,"setGlobalOrigin"),global$1={getGlobalOrigin:A,setGlobalOrigin:t},global$1}o(requireGlobal,"requireGlobal");var dataUrl,hasRequiredDataUrl;function requireDataUrl(){if(hasRequiredDataUrl)return dataUrl;hasRequiredDataUrl=1;const e=require$$0__default,A=new TextEncoder,t=/^[!#$%&'*+-.^_|~A-Za-z0-9]+$/,n=/[\u000A\u000D\u0009\u0020]/,r=/[\u0009\u000A\u000C\u000D\u0020]/g,s=/[\u0009\u0020-\u007E\u0080-\u00FF]/;function i(g){e(g.protocol==="data:");let d=E(g,!0);d=d.slice(5);const F={position:0};let N=C(",",d,F);const u=N.length;if(N=M(N,!0,!0),F.position>=d.length)return"failure";F.position++;const b=d.slice(u+1);let m=I(b);if(/;(\u0020){0,}base64$/i.test(N)){const v=D(m);if(m=c(v),m==="failure")return"failure";N=N.slice(0,-6),N=N.replace(/(\u0020)+$/,""),N=N.slice(0,-1)}N.startsWith(";")&&(N="text/plain"+N);let T=L(N);return T==="failure"&&(T=L("text/plain;charset=US-ASCII")),{mimeType:T,body:m}}o(i,"dataURLProcessor");function E(g,d=!1){if(!d)return g.href;const F=g.href,N=g.hash.length,u=N===0?F:F.substring(0,F.length-N);return!N&&F.endsWith("#")?u.slice(0,-1):u}o(E,"URLSerializer");function Q(g,d,F){let N="";for(;F.position=48&&g<=57||g>=65&&g<=70||g>=97&&g<=102}o(a,"isHexCharByte");function f(g){return g>=48&&g<=57?g-48:(g&223)-55}o(f,"hexByteToNumber");function h(g){const d=g.length,F=new Uint8Array(d);let N=0;for(let u=0;ug.length)return"failure";d.position++;let N=C(";",g,d);if(N=w(N,!1,!0),N.length===0||!t.test(N))return"failure";const u=F.toLowerCase(),b=N.toLowerCase(),m={type:u,subtype:b,parameters:new Map,essence:`${u}/${b}`};for(;d.positionn.test(Z),g,d);let T=Q(Z=>Z!==";"&&Z!=="=",g,d);if(T=T.toLowerCase(),d.positiong.length)break;let v=null;if(g[d.position]==='"')v=l(g,d,!0),C(";",g,d);else if(v=C(";",g,d),v=w(v,!1,!0),v.length===0)continue;T.length!==0&&t.test(T)&&(v.length===0||s.test(v))&&!m.parameters.has(T)&&m.parameters.set(T,v)}return m}o(L,"parseMIMEType");function c(g){g=g.replace(r,"");let d=g.length;if(d%4===0&&g.charCodeAt(d-1)===61&&(--d,g.charCodeAt(d-1)===61&&--d),d%4===1||/[^+/0-9A-Za-z]/.test(g.length===d?g:g.substring(0,d)))return"failure";const F=Buffer.from(g,"base64");return new Uint8Array(F.buffer,F.byteOffset,F.byteLength)}o(c,"forgivingBase64");function l(g,d,F){const N=d.position;let u="";for(e(g[d.position]==='"'),d.position++;u+=Q(m=>m!=='"'&&m!=="\\",g,d),!(d.position>=g.length);){const b=g[d.position];if(d.position++,b==="\\"){if(d.position>=g.length){u+="\\";break}u+=g[d.position],d.position++}else{e(b==='"');break}}return F?u:g.slice(N,d.position)}o(l,"collectAnHTTPQuotedString");function S(g){e(g!=="failure");const{parameters:d,essence:F}=g;let N=F;for(let[u,b]of d.entries())N+=";",N+=u,N+="=",t.test(b)||(b=b.replace(/(\\|")/g,"\\$1"),b='"'+b,b+='"'),N+=b;return N}o(S,"serializeAMimeType");function k(g){return g===13||g===10||g===9||g===32}o(k,"isHTTPWhiteSpace");function w(g,d=!0,F=!0){return B(g,d,F,k)}o(w,"removeHTTPWhitespace");function U(g){return g===13||g===10||g===9||g===12||g===32}o(U,"isASCIIWhitespace");function M(g,d=!0,F=!0){return B(g,d,F,U)}o(M,"removeASCIIWhitespace");function B(g,d,F,N){let u=0,b=g.length-1;if(d)for(;u0&&N(g.charCodeAt(b));)b--;return u===0&&b===g.length-1?g:g.slice(u,b+1)}o(B,"removeChars");function D(g){const d=g.length;if(65535>d)return String.fromCharCode.apply(null,g);let F="",N=0,u=65535;for(;Nd&&(u=d-N),F+=String.fromCharCode.apply(null,g.subarray(N,N+=u));return F}o(D,"isomorphicDecode");function G(g){switch(g.essence){case"application/ecmascript":case"application/javascript":case"application/x-ecmascript":case"application/x-javascript":case"text/ecmascript":case"text/javascript":case"text/javascript1.0":case"text/javascript1.1":case"text/javascript1.2":case"text/javascript1.3":case"text/javascript1.4":case"text/javascript1.5":case"text/jscript":case"text/livescript":case"text/x-ecmascript":case"text/x-javascript":return"text/javascript";case"application/json":case"text/json":return"application/json";case"image/svg+xml":return"image/svg+xml";case"text/xml":case"application/xml":return"application/xml"}return g.subtype.endsWith("+json")?"application/json":g.subtype.endsWith("+xml")?"application/xml":""}return o(G,"minimizeSupportedMimeType"),dataUrl={dataURLProcessor:i,URLSerializer:E,collectASequenceOfCodePoints:Q,collectASequenceOfCodePointsFast:C,stringPercentDecode:I,parseMIMEType:L,collectAnHTTPQuotedString:l,serializeAMimeType:S,removeChars:B,minimizeSupportedMimeType:G,HTTP_TOKEN_CODEPOINTS:t,isomorphicDecode:D},dataUrl}o(requireDataUrl,"requireDataUrl");var webidl_1,hasRequiredWebidl;function requireWebidl(){if(hasRequiredWebidl)return webidl_1;hasRequiredWebidl=1;const{types:e,inspect:A}=require$$0__default$1,{toUSVString:t}=util$m,n={};return n.converters={},n.util={},n.errors={},n.errors.exception=function(r){return new TypeError(`${r.header}: ${r.message}`)},n.errors.conversionFailed=function(r){const s=r.types.length===1?"":" one of",i=`${r.argument} could not be converted to${s}: ${r.types.join(", ")}.`;return n.errors.exception({header:r.prefix,message:i})},n.errors.invalidArgument=function(r){return n.errors.exception({header:r.prefix,message:`"${r.value}" is an invalid ${r.type}.`})},n.brandCheck=function(r,s,i=void 0){if(i?.strict!==!1){if(!(r instanceof s))throw new TypeError("Illegal invocation")}else if(r?.[Symbol.toStringTag]!==s.prototype[Symbol.toStringTag])throw new TypeError("Illegal invocation")},n.argumentLengthCheck=function({length:r},s,i){if(rQ)throw n.errors.exception({header:"Integer conversion",message:`Value must be between ${C}-${Q}, got ${I}.`});return I}return!Number.isNaN(I)&&E.clamp===!0?(I=Math.min(Math.max(I,C),Q),Math.floor(I)%2===0?I=Math.floor(I):I=Math.ceil(I),I):Number.isNaN(I)||I===0&&Object.is(0,I)||I===Number.POSITIVE_INFINITY||I===Number.NEGATIVE_INFINITY?0:(I=n.util.IntegerPart(I),I=I%Math.pow(2,s),i==="signed"&&I>=Math.pow(2,s)-1?I-Math.pow(2,s):I)},n.util.IntegerPart=function(r){const s=Math.floor(Math.abs(r));return r<0?-1*s:s},n.util.Stringify=function(r){switch(n.util.Type(r)){case"Symbol":return`Symbol(${r.description})`;case"Object":return A(r);case"String":return`"${r}"`;default:return`${r}`}},n.sequenceConverter=function(r){return(s,i)=>{if(n.util.Type(s)!=="Object")throw n.errors.exception({header:"Sequence",message:`Value of type ${n.util.Type(s)} is not an Object.`});const E=typeof i=="function"?i():s?.[Symbol.iterator]?.(),Q=[];if(E===void 0||typeof E.next!="function")throw n.errors.exception({header:"Sequence",message:"Object is not an iterator."});for(;;){const{done:C,value:I}=E.next();if(C)break;Q.push(r(I))}return Q}},n.recordConverter=function(r,s){return i=>{if(n.util.Type(i)!=="Object")throw n.errors.exception({header:"Record",message:`Value of type ${n.util.Type(i)} is not an Object.`});const E={};if(!e.isProxy(i)){const C=[...Object.getOwnPropertyNames(i),...Object.getOwnPropertySymbols(i)];for(const I of C){const a=r(I),f=s(i[I]);E[a]=f}return E}const Q=Reflect.ownKeys(i);for(const C of Q)if(Reflect.getOwnPropertyDescriptor(i,C)?.enumerable){const a=r(C),f=s(i[C]);E[a]=f}return E}},n.interfaceConverter=function(r){return(s,i={})=>{if(i.strict!==!1&&!(s instanceof r))throw n.errors.exception({header:r.name,message:`Expected ${n.util.Stringify(s)} to be an instance of ${r.name}.`});return s}},n.dictionaryConverter=function(r){return s=>{const i=n.util.Type(s),E={};if(i==="Null"||i==="Undefined")return E;if(i!=="Object")throw n.errors.exception({header:"Dictionary",message:`Expected ${s} to be one of: Null, Undefined, Object.`});for(const Q of r){const{key:C,defaultValue:I,required:a,converter:f}=Q;if(a===!0&&!Object.hasOwn(s,C))throw n.errors.exception({header:"Dictionary",message:`Missing required key "${C}".`});let h=s[C];const L=Object.hasOwn(Q,"defaultValue");if(L&&h!==null&&(h=h??I),a||L||h!==void 0){if(h=f(h),Q.allowedValues&&!Q.allowedValues.includes(h))throw n.errors.exception({header:"Dictionary",message:`${h} is not an accepted type. Expected one of ${Q.allowedValues.join(", ")}.`});E[C]=h}}return E}},n.nullableConverter=function(r){return s=>s===null?s:r(s)},n.converters.DOMString=function(r,s={}){if(r===null&&s.legacyNullToEmptyString)return"";if(typeof r=="symbol")throw new TypeError("Could not convert argument of type symbol to string.");return String(r)},n.converters.ByteString=function(r){const s=n.converters.DOMString(r);for(let i=0;i255)throw new TypeError(`Cannot convert argument to a ByteString because the character at index ${i} has a value of ${s.charCodeAt(i)} which is greater than 255.`);return s},n.converters.USVString=t,n.converters.boolean=function(r){return!!r},n.converters.any=function(r){return r},n.converters["long long"]=function(r){return n.util.ConvertToInt(r,64,"signed")},n.converters["unsigned long long"]=function(r){return n.util.ConvertToInt(r,64,"unsigned")},n.converters["unsigned long"]=function(r){return n.util.ConvertToInt(r,32,"unsigned")},n.converters["unsigned short"]=function(r,s){return n.util.ConvertToInt(r,16,"unsigned",s)},n.converters.ArrayBuffer=function(r,s={}){if(n.util.Type(r)!=="Object"||!e.isAnyArrayBuffer(r))throw n.errors.conversionFailed({prefix:n.util.Stringify(r),argument:n.util.Stringify(r),types:["ArrayBuffer"]});if(s.allowShared===!1&&e.isSharedArrayBuffer(r))throw n.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(r.resizable||r.growable)throw n.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return r},n.converters.TypedArray=function(r,s,i={}){if(n.util.Type(r)!=="Object"||!e.isTypedArray(r)||r.constructor.name!==s.name)throw n.errors.conversionFailed({prefix:`${s.name}`,argument:n.util.Stringify(r),types:[s.name]});if(i.allowShared===!1&&e.isSharedArrayBuffer(r.buffer))throw n.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(r.buffer.resizable||r.buffer.growable)throw n.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return r},n.converters.DataView=function(r,s={}){if(n.util.Type(r)!=="Object"||!e.isDataView(r))throw n.errors.exception({header:"DataView",message:"Object is not a DataView."});if(s.allowShared===!1&&e.isSharedArrayBuffer(r.buffer))throw n.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(r.buffer.resizable||r.buffer.growable)throw n.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return r},n.converters.BufferSource=function(r,s={}){if(e.isAnyArrayBuffer(r))return n.converters.ArrayBuffer(r,{...s,allowShared:!1});if(e.isTypedArray(r))return n.converters.TypedArray(r,r.constructor,{...s,allowShared:!1});if(e.isDataView(r))return n.converters.DataView(r,s,{...s,allowShared:!1});throw new TypeError(`Could not convert ${n.util.Stringify(r)} to a BufferSource.`)},n.converters["sequence"]=n.sequenceConverter(n.converters.ByteString),n.converters["sequence>"]=n.sequenceConverter(n.converters["sequence"]),n.converters["record"]=n.recordConverter(n.converters.ByteString,n.converters.ByteString),webidl_1={webidl:n},webidl_1}o(requireWebidl,"requireWebidl");var util$j,hasRequiredUtil$5;function requireUtil$5(){if(hasRequiredUtil$5)return util$j;hasRequiredUtil$5=1;const{Transform:e}=Stream__default,A=zlib__default,{redirectStatusSet:t,referrerPolicySet:n,badPortsSet:r}=requireConstants$2(),{getGlobalOrigin:s}=requireGlobal(),{collectASequenceOfCodePoints:i,collectAnHTTPQuotedString:E,removeChars:Q,parseMIMEType:C}=requireDataUrl(),{performance:I}=require$$5__default,{isBlobLike:a,ReadableStreamFrom:f,isValidHTTPToken:h}=util$m,L=require$$0__default,{isUint8Array:c}=require$$8__default$1,{webidl:l}=requireWebidl();let S=[],k;try{k=require("node:crypto");const y=["sha256","sha384","sha512"];S=k.getHashes().filter(Y=>y.includes(Y))}catch{}function w(y){const Y=y.urlList,W=Y.length;return W===0?null:Y[W-1].toString()}o(w,"responseURL");function U(y,Y){if(!t.has(y.status))return null;let W=y.headersList.get("location",!0);return W!==null&&N(W)&&(M(W)||(W=B(W)),W=new URL(W,w(y))),W&&!W.hash&&(W.hash=Y),W}o(U,"responseLocationURL");function M(y){for(const Y of y){const W=Y.charCodeAt(0);if(W>=128||W>=0&&W<=31||W===127)return!1}return!0}o(M,"isValidEncodedURL");function B(y){return Buffer.from(y,"binary").toString("utf8")}o(B,"normalizeBinaryStringToUtf8");function D(y){return y.urlList[y.urlList.length-1]}o(D,"requestCurrentURL");function G(y){const Y=D(y);return ZA(Y)&&r.has(Y.port)?"blocked":"allowed"}o(G,"requestBadPort");function g(y){return y instanceof Error||y?.constructor?.name==="Error"||y?.constructor?.name==="DOMException"}o(g,"isErrorLike");function d(y){for(let Y=0;Y=32&&W<=126||W>=128&&W<=255))return!1}return!0}o(d,"isValidReasonPhrase");const F=h;function N(y){return!(y.startsWith(" ")||y.startsWith(" ")||y.endsWith(" ")||y.endsWith(" ")||y.includes("\0")||y.includes("\r")||y.includes(` +`))}o(N,"isValidHeaderValue");function u(y,Y){const{headersList:W}=Y,j=(W.get("referrer-policy",!0)??"").split(",");let nA="";if(j.length>0)for(let R=j.length;R!==0;R--){const O=j[R-1].trim();if(n.has(O)){nA=O;break}}nA!==""&&(y.referrerPolicy=nA)}o(u,"setRequestReferrerPolicyOnRedirect");function b(){return"allowed"}o(b,"crossOriginResourcePolicyCheck");function m(){return"success"}o(m,"corsCheck");function T(){return"success"}o(T,"TAOCheck");function v(y){let Y=null;Y=y.mode,y.headersList.set("sec-fetch-mode",Y,!0)}o(v,"appendFetchMetadata");function Z(y){let Y=y.origin;if(y.responseTainting==="cors"||y.mode==="websocket")Y&&y.headersList.append("origin",Y,!0);else if(y.method!=="GET"&&y.method!=="HEAD"){switch(y.referrerPolicy){case"no-referrer":Y=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":y.origin&&ee(y.origin)&&!ee(D(y))&&(Y=null);break;case"same-origin":yA(y,D(y))||(Y=null);break}Y&&y.headersList.append("origin",Y,!0)}}o(Z,"appendRequestOriginHeader");function P(y,Y){return y}o(P,"coarsenTime");function AA(y,Y,W){return!y?.startTime||y.startTime4096&&(j=nA);const R=yA(y,j),O=q(j)&&!q(y.url);switch(Y){case"origin":return nA??V(W,!0);case"unsafe-url":return j;case"same-origin":return R?nA:"no-referrer";case"origin-when-cross-origin":return R?j:nA;case"strict-origin-when-cross-origin":{const H=D(y);return yA(j,H)?j:q(j)&&!q(H)?"no-referrer":nA}case"strict-origin":case"no-referrer-when-downgrade":default:return O?"no-referrer":nA}}o($,"determineRequestsReferrer");function V(y,Y){return L(y instanceof URL),y=new URL(y),y.protocol==="file:"||y.protocol==="about:"||y.protocol==="blank:"?"no-referrer":(y.username="",y.password="",y.hash="",Y&&(y.pathname="",y.search=""),y)}o(V,"stripURLForReferrer");function q(y){if(!(y instanceof URL))return!1;if(y.href==="about:blank"||y.href==="about:srcdoc"||y.protocol==="data:"||y.protocol==="file:")return!0;return Y(y.origin);function Y(W){if(W==null||W==="null")return!1;const j=new URL(W);return!!(j.protocol==="https:"||j.protocol==="wss:"||/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(j.hostname)||j.hostname==="localhost"||j.hostname.includes("localhost.")||j.hostname.endsWith(".localhost"))}}o(q,"isURLPotentiallyTrustworthy");function z(y,Y){if(k===void 0)return!0;const W=iA(Y);if(W==="no metadata"||W.length===0)return!0;const j=gA(W),nA=BA(W,j);for(const R of nA){const O=R.algo,H=R.hash;let J=k.createHash(O).update(y).digest("base64");if(J[J.length-1]==="="&&(J[J.length-2]==="="?J=J.slice(0,-2):J=J.slice(0,-1)),sA(J,H))return!0}return!1}o(z,"bytesMatch");const rA=/(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function iA(y){const Y=[];let W=!0;for(const j of y.split(" ")){W=!1;const nA=rA.exec(j);if(nA===null||nA.groups===void 0||nA.groups.algo===void 0)continue;const R=nA.groups.algo.toLowerCase();S.includes(R)&&Y.push(nA.groups)}return W===!0?"no metadata":Y}o(iA,"parseMetadata");function gA(y){let Y=y[0].algo;if(Y[3]==="5")return Y;for(let W=1;W{y=j,Y=nA}),resolve:y,reject:Y}}o(WA,"createDeferredPromise");function wA(y){return y.controller.state==="aborted"}o(wA,"isAborted");function qA(y){return y.controller.state==="aborted"||y.controller.state==="terminated"}o(qA,"isCancelled");const MA={delete:"DELETE",DELETE:"DELETE",get:"GET",GET:"GET",head:"HEAD",HEAD:"HEAD",options:"OPTIONS",OPTIONS:"OPTIONS",post:"POST",POST:"POST",put:"PUT",PUT:"PUT"},HA={...MA,patch:"patch",PATCH:"PATCH"};Object.setPrototypeOf(MA,null),Object.setPrototypeOf(HA,null);function pA(y){return MA[y.toLowerCase()]??y}o(pA,"normalizeMethod");function YA(y){const Y=JSON.stringify(y);if(Y===void 0)throw new TypeError("Value is not JSON serializable");return L(typeof Y=="string"),Y}o(YA,"serializeJavascriptValueToJSONString");const UA=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function JA(y,Y,W=0,j=1){var R,O,H;const J=class J{constructor(x,QA){CA(this,R,void 0);CA(this,O,void 0);CA(this,H,void 0);EA(this,R,x),EA(this,O,QA),EA(this,H,0)}next(){if(typeof this!="object"||this===null||!yt(R,this))throw new TypeError(`'next' called on an object that does not implement interface ${y} Iterator.`);const x=p(this,H),QA=p(this,R)[Y],lA=QA.length;if(x>=lA)return{value:void 0,done:!0};const{[W]:uA,[j]:cA}=QA[x];EA(this,H,x+1);let fA;switch(p(this,O)){case"key":fA=uA;break;case"value":fA=cA;break;case"key+value":fA=[uA,cA];break}return{value:fA,done:!1}}};R=new WeakMap,O=new WeakMap,H=new WeakMap,o(J,"FastIterableIterator");let nA=J;return delete nA.prototype.constructor,Object.setPrototypeOf(nA.prototype,UA),Object.defineProperties(nA.prototype,{[Symbol.toStringTag]:{writable:!1,enumerable:!1,configurable:!0,value:`${y} Iterator`},next:{writable:!0,enumerable:!0,configurable:!0}}),function(_,x){return new nA(_,x)}}o(JA,"createIterator");function VA(y,Y,W,j=0,nA=1){const R=JA(y,W,j,nA),O={keys:{writable:!0,enumerable:!0,configurable:!0,value:o(function(){return l.brandCheck(this,Y),R(this,"key")},"keys")},values:{writable:!0,enumerable:!0,configurable:!0,value:o(function(){return l.brandCheck(this,Y),R(this,"value")},"values")},entries:{writable:!0,enumerable:!0,configurable:!0,value:o(function(){return l.brandCheck(this,Y),R(this,"key+value")},"entries")},forEach:{writable:!0,enumerable:!0,configurable:!0,value:o(function(J,_=globalThis){if(l.brandCheck(this,Y),l.argumentLengthCheck(arguments,1,{header:`${y}.forEach`}),typeof J!="function")throw new TypeError(`Failed to execute 'forEach' on '${y}': parameter 1 is not of type 'Function'.`);for(const{0:x,1:QA}of R(this,"key+value"))J.call(_,QA,x,this)},"forEach")}};return Object.defineProperties(Y.prototype,{...O,[Symbol.iterator]:{writable:!0,enumerable:!1,configurable:!0,value:O.entries.value}})}o(VA,"iteratorMixin");async function OA(y,Y,W){const j=Y,nA=W;let R;try{R=y.stream.getReader()}catch(O){nA(O);return}try{const O=await PA(R);j(O)}catch(O){nA(O)}}o(OA,"fullyReadBody");function IA(y){return y instanceof ReadableStream||y[Symbol.toStringTag]==="ReadableStream"&&typeof y.tee=="function"}o(IA,"isReadableStreamLike");function hA(y){try{y.close(),y.byobRequest?.respond(0)}catch(Y){if(!Y.message.includes("Controller is already closed")&&!Y.message.includes("ReadableStream is already closed"))throw Y}}o(hA,"readableStreamClose");function SA(y){for(let Y=0;YJ===" "||J===" ",W,j),W.charCodeAt(j.position)!==61)return"failure";j.position++,Y&&i(J=>J===" "||J===" ",W,j);const nA=i(J=>{const _=J.charCodeAt(0);return _>=48&&_<=57},W,j),R=nA.length?Number(nA):null;if(Y&&i(J=>J===" "||J===" ",W,j),W.charCodeAt(j.position)!==45)return"failure";j.position++,Y&&i(J=>J===" "||J===" ",W,j);const O=i(J=>{const _=J.charCodeAt(0);return _>=48&&_<=57},W,j),H=O.length?Number(O):null;return j.positionH?"failure":{rangeStartValue:R,rangeEndValue:H}}o(XA,"simpleRangeHeaderValue");function Ze(y,Y,W){let j="bytes ";return j+=SA(`${y}`),j+="-",j+=SA(`${Y}`),j+="/",j+=SA(`${W}`),j}o(Ze,"buildContentRange");const vA=class vA extends e{_transform(Y,W,j){if(!this._inflateStream){if(Y.length===0){j();return}this._inflateStream=(Y[0]&15)===8?A.createInflate():A.createInflateRaw(),this._inflateStream.on("data",this.push.bind(this)),this._inflateStream.on("end",()=>this.push(null)),this._inflateStream.on("error",nA=>this.destroy(nA))}this._inflateStream.write(Y,W,j)}_final(Y){this._inflateStream&&(this._inflateStream.end(),this._inflateStream=null),Y()}};o(vA,"InflateStream");let KA=vA;function He(){return new KA}o(He,"createInflate");function te(y){let Y=null,W=null,j=null;const nA=re("content-type",y);if(nA===null)return"failure";for(const R of nA){const O=C(R);O==="failure"||O.essence==="*/*"||(j=O,j.essence!==W?(Y=null,j.parameters.has("charset")&&(Y=j.parameters.get("charset")),W=j.essence):!j.parameters.has("charset")&&Y!==null&&j.parameters.set("charset",Y))}return j??"failure"}o(te,"extractMimeType");function Ve(y){const Y=y,W={position:0},j=[];let nA="";for(;W.positionR!=='"'&&R!==",",Y,W),W.positionR===9||R===32),j.push(nA),nA=""}return j}o(Ve,"gettingDecodingSplitting");function re(y,Y){const W=Y.get(y,!0);return W===null?null:Ve(W)}o(re,"getDecodeSplit");const ve=new TextDecoder;function Xe(y){return y.length===0?"":(y[0]===239&&y[1]===187&&y[2]===191&&(y=y.subarray(3)),ve.decode(y))}return o(Xe,"utf8DecodeBytes"),util$j={isAborted:wA,isCancelled:qA,createDeferredPromise:WA,ReadableStreamFrom:f,tryUpgradeRequestToAPotentiallyTrustworthyURL:eA,clampAndCoarsenConnectionTimingInfo:AA,coarsenedSharedCurrentTime:K,determineRequestsReferrer:$,makePolicyContainer:aA,clonePolicyContainer:X,appendFetchMetadata:v,appendRequestOriginHeader:Z,TAOCheck:T,corsCheck:m,crossOriginResourcePolicyCheck:b,createOpaqueTimingInfo:tA,setRequestReferrerPolicyOnRedirect:u,isValidHTTPToken:h,requestBadPort:G,requestCurrentURL:D,responseURL:w,responseLocationURL:U,isBlobLike:a,isURLPotentiallyTrustworthy:q,isValidReasonPhrase:d,sameOrigin:yA,normalizeMethod:pA,serializeJavascriptValueToJSONString:YA,iteratorMixin:VA,createIterator:JA,isValidHeaderName:F,isValidHeaderValue:N,isErrorLike:g,fullyReadBody:OA,bytesMatch:z,isReadableStreamLike:IA,readableStreamClose:hA,isomorphicEncode:SA,urlIsLocal:Pe,urlHasHttpsScheme:ee,urlIsHttpHttpsScheme:ZA,readAllBytes:PA,normalizeMethodRecord:HA,simpleRangeHeaderValue:XA,buildContentRange:Ze,parseMetadata:iA,createInflate:He,extractMimeType:te,getDecodeSplit:re,utf8DecodeBytes:Xe},util$j}o(requireUtil$5,"requireUtil$5");var symbols$3,hasRequiredSymbols$3;function requireSymbols$3(){return hasRequiredSymbols$3||(hasRequiredSymbols$3=1,symbols$3={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kGuard:Symbol("guard"),kRealm:Symbol("realm"),kDispatcher:Symbol("dispatcher")}),symbols$3}o(requireSymbols$3,"requireSymbols$3");var file,hasRequiredFile;function requireFile(){if(hasRequiredFile)return file;hasRequiredFile=1;const{EOL:e}=require$$0__default$4,{Blob:A,File:t}=require$$6__default,{types:n}=require$$0__default$1,{kState:r}=requireSymbols$3(),{isBlobLike:s}=requireUtil$5(),{webidl:i}=requireWebidl(),{parseMIMEType:E,serializeAMimeType:Q}=requireDataUrl(),{kEnumerableProperty:C}=util$m,I=new TextEncoder,l=class l extends A{constructor(w,U,M={}){i.argumentLengthCheck(arguments,2,{header:"File constructor"}),w=i.converters["sequence"](w),U=i.converters.USVString(U),M=i.converters.FilePropertyBag(M);const B=U;let D=M.type,G;A:{if(D){if(D=E(D),D==="failure"){D="";break A}D=Q(D).toLowerCase()}G=M.lastModified}super(h(w,M),{type:D}),this[r]={name:B,lastModified:G,type:D}}get name(){return i.brandCheck(this,l),this[r].name}get lastModified(){return i.brandCheck(this,l),this[r].lastModified}get type(){return i.brandCheck(this,l),this[r].type}};o(l,"File");let a=l;const S=class S{constructor(w,U,M={}){const B=U,D=M.type,G=M.lastModified??Date.now();this[r]={blobLike:w,name:B,type:D,lastModified:G}}stream(...w){return i.brandCheck(this,S),this[r].blobLike.stream(...w)}arrayBuffer(...w){return i.brandCheck(this,S),this[r].blobLike.arrayBuffer(...w)}slice(...w){return i.brandCheck(this,S),this[r].blobLike.slice(...w)}text(...w){return i.brandCheck(this,S),this[r].blobLike.text(...w)}get size(){return i.brandCheck(this,S),this[r].blobLike.size}get type(){return i.brandCheck(this,S),this[r].blobLike.type}get name(){return i.brandCheck(this,S),this[r].name}get lastModified(){return i.brandCheck(this,S),this[r].lastModified}get[Symbol.toStringTag](){return"File"}};o(S,"FileLike");let f=S;Object.defineProperties(a.prototype,{[Symbol.toStringTag]:{value:"File",configurable:!0},name:C,lastModified:C}),i.converters.Blob=i.interfaceConverter(A),i.converters.BlobPart=function(k,w){if(i.util.Type(k)==="Object"){if(s(k))return i.converters.Blob(k,{strict:!1});if(ArrayBuffer.isView(k)||n.isAnyArrayBuffer(k))return i.converters.BufferSource(k,w)}return i.converters.USVString(k,w)},i.converters["sequence"]=i.sequenceConverter(i.converters.BlobPart),i.converters.FilePropertyBag=i.dictionaryConverter([{key:"lastModified",converter:i.converters["long long"],get defaultValue(){return Date.now()}},{key:"type",converter:i.converters.DOMString,defaultValue:""},{key:"endings",converter:k=>(k=i.converters.DOMString(k),k=k.toLowerCase(),k!=="native"&&(k="transparent"),k),defaultValue:"transparent"}]);function h(k,w){const U=[];for(const M of k)if(typeof M=="string"){let B=M;w.endings==="native"&&(B=L(B)),U.push(I.encode(B))}else ArrayBuffer.isView(M)||n.isArrayBuffer(M)?M.buffer?U.push(new Uint8Array(M.buffer,M.byteOffset,M.byteLength)):U.push(new Uint8Array(M)):s(M)&&U.push(M);return U}o(h,"processBlobParts");function L(k){return k.replace(/\r?\n/g,e)}o(L,"convertLineEndingsNative");function c(k){return t&&k instanceof t||k instanceof a||k&&(typeof k.stream=="function"||typeof k.arrayBuffer=="function")&&k[Symbol.toStringTag]==="File"}return o(c,"isFileLike"),file={File:a,FileLike:f,isFileLike:c},file}o(requireFile,"requireFile");var formdata,hasRequiredFormdata;function requireFormdata(){if(hasRequiredFormdata)return formdata;hasRequiredFormdata=1;const{isBlobLike:e,iteratorMixin:A}=requireUtil$5(),{kState:t}=requireSymbols$3(),{kEnumerableProperty:n}=util$m,{File:r,FileLike:s,isFileLike:i}=requireFile(),{webidl:E}=requireWebidl(),{File:Q}=require$$6__default,C=require$$0__default$1,I=Q??r,h=class h{constructor(c){if(c!==void 0)throw E.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]});this[t]=[]}append(c,l,S=void 0){if(E.brandCheck(this,h),E.argumentLengthCheck(arguments,2,{header:"FormData.append"}),arguments.length===3&&!e(l))throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'");c=E.converters.USVString(c),l=e(l)?E.converters.Blob(l,{strict:!1}):E.converters.USVString(l),S=arguments.length===3?E.converters.USVString(S):void 0;const k=f(c,l,S);this[t].push(k)}delete(c){E.brandCheck(this,h),E.argumentLengthCheck(arguments,1,{header:"FormData.delete"}),c=E.converters.USVString(c),this[t]=this[t].filter(l=>l.name!==c)}get(c){E.brandCheck(this,h),E.argumentLengthCheck(arguments,1,{header:"FormData.get"}),c=E.converters.USVString(c);const l=this[t].findIndex(S=>S.name===c);return l===-1?null:this[t][l].value}getAll(c){return E.brandCheck(this,h),E.argumentLengthCheck(arguments,1,{header:"FormData.getAll"}),c=E.converters.USVString(c),this[t].filter(l=>l.name===c).map(l=>l.value)}has(c){return E.brandCheck(this,h),E.argumentLengthCheck(arguments,1,{header:"FormData.has"}),c=E.converters.USVString(c),this[t].findIndex(l=>l.name===c)!==-1}set(c,l,S=void 0){if(E.brandCheck(this,h),E.argumentLengthCheck(arguments,2,{header:"FormData.set"}),arguments.length===3&&!e(l))throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'");c=E.converters.USVString(c),l=e(l)?E.converters.Blob(l,{strict:!1}):E.converters.USVString(l),S=arguments.length===3?E.converters.USVString(S):void 0;const k=f(c,l,S),w=this[t].findIndex(U=>U.name===c);w!==-1?this[t]=[...this[t].slice(0,w),k,...this[t].slice(w+1).filter(U=>U.name!==c)]:this[t].push(k)}[C.inspect.custom](c,l){const S=this[t].reduce((w,U)=>(w[U.name]?Array.isArray(w[U.name])?w[U.name].push(U.value):w[U.name]=[w[U.name],U.value]:w[U.name]=U.value,w),{__proto__:null});l.depth??(l.depth=c),l.colors??(l.colors=!0);const k=C.formatWithOptions(l,S);return`FormData ${k.slice(k.indexOf("]")+2)}`}};o(h,"FormData");let a=h;A("FormData",a,t,"name","value"),Object.defineProperties(a.prototype,{append:n,delete:n,get:n,getAll:n,has:n,set:n,[Symbol.toStringTag]:{value:"FormData",configurable:!0}});function f(L,c,l){if(typeof c!="string"){if(i(c)||(c=c instanceof Blob?new I([c],"blob",{type:c.type}):new s(c,"blob",{type:c.type})),l!==void 0){const S={type:c.type,lastModified:c.lastModified};c=Q&&c instanceof Q||c instanceof r?new I([c],l,S):new s(c,l,S)}}return{name:L,value:c}}return o(f,"makeEntry"),formdata={FormData:a,makeEntry:f},formdata}o(requireFormdata,"requireFormdata");var formdataParser,hasRequiredFormdataParser;function requireFormdataParser(){if(hasRequiredFormdataParser)return formdataParser;hasRequiredFormdataParser=1;const{toUSVString:e,isUSVString:A,bufferToLowerCasedHeaderName:t}=util$m,{utf8DecodeBytes:n}=requireUtil$5(),{HTTP_TOKEN_CODEPOINTS:r,isomorphicDecode:s}=requireDataUrl(),{isFileLike:i,File:E}=requireFile(),{makeEntry:Q}=requireFormdata(),C=require$$0__default,{File:I}=require$$6__default,a=globalThis.File??I??E,f=Buffer.from('form-data; name="'),h=Buffer.from("; filename"),L=Buffer.from("--"),c=Buffer.from(`--\r +`);function l(g){for(let d=0;d70)return!1;for(let F=0;F=48&&N<=57||N>=65&&N<=90||N>=97&&N<=122||N===39||N===45||N===95))return!1}return!0}o(S,"validateBoundary");function k(g,d="utf-8",F=!1){return F?g=e(g):(C(A(g)),g=g.replace(/\r\n?|\r?\n/g,`\r +`)),C(Buffer.isEncoding(d)),g=g.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),Buffer.from(g,d)}o(k,"escapeFormDataName");function w(g,d){C(d!=="failure"&&d.essence==="multipart/form-data");const F=d.parameters.get("boundary");if(F===void 0)return"failure";const N=Buffer.from(`--${F}`,"utf8"),u=[],b={position:0};for(g[0]===13&&g[1]===10&&(b.position+=2);;){if(g.subarray(b.position,b.position+N.length).equals(N))b.position+=N.length;else return"failure";if(b.position===g.length-2&&G(g,L,b)||b.position===g.length-4&&G(g,c,b))return u;if(g[b.position]!==13||g[b.position+1]!==10)return"failure";b.position+=2;const m=U(g,b);if(m==="failure")return"failure";let{name:T,filename:v,contentType:Z,encoding:P}=m;b.position+=2;let AA;{const tA=g.indexOf(N.subarray(2),b.position);if(tA===-1)return"failure";AA=g.subarray(b.position,tA-4),b.position+=AA.length,P==="base64"&&(AA=Buffer.from(AA.toString(),"base64"))}if(g[b.position]!==13||g[b.position+1]!==10)return"failure";b.position+=2;let K;v!==null?(Z??(Z="text/plain"),l(Z)||(Z=""),K=new a([AA],v,{type:Z})):K=n(Buffer.from(AA)),C(A(T)),C(typeof K=="string"&&A(K)||i(K)),u.push(Q(T,K,v))}}o(w,"multipartFormDataParser");function U(g,d){let F=null,N=null,u=null,b=null;for(;;){if(g[d.position]===13&&g[d.position+1]===10)return F===null?"failure":{name:F,filename:N,contentType:u,encoding:b};let m=B(T=>T!==10&&T!==13&&T!==58,g,d);if(m=D(m,!0,!0,T=>T===9||T===32),!r.test(m.toString())||g[d.position]!==58)return"failure";switch(d.position++,B(T=>T===32||T===9,g,d),t(m)){case"content-disposition":{if(F=N=null,!G(g,f,d)||(d.position+=17,F=M(g,d),F===null))return"failure";if(G(g,h,d)){let T=d.position+h.length;if(g[T]===42&&(d.position+=1,T+=1),g[T]!==61||g[T+1]!==34||(d.position+=12,N=M(g,d),N===null))return"failure"}break}case"content-type":{let T=B(v=>v!==10&&v!==13,g,d);T=D(T,!1,!0,v=>v===9||v===32),u=s(T);break}case"content-transfer-encoding":{let T=B(v=>v!==10&&v!==13,g,d);T=D(T,!1,!0,v=>v===9||v===32),b=s(T);break}default:B(T=>T!==10&&T!==13,g,d)}if(g[d.position]!==13&&g[d.position+1]!==10)return"failure";d.position+=2}}o(U,"parseMultipartFormDataHeaders");function M(g,d){C(g[d.position-1]===34);let F=B(N=>N!==10&&N!==13&&N!==34,g,d);return g[d.position]!==34?null:(d.position++,F=new TextDecoder().decode(F).replace(/%0A/ig,` +`).replace(/%0D/ig,"\r").replace(/%22/g,'"'),F)}o(M,"parseMultipartFormDataName");function B(g,d,F){let N=F.position;for(;N0&&N(g[b]);)b--;return u===0&&b===g.length-1?g:g.subarray(u,b+1)}o(D,"removeChars");function G(g,d,F){if(g.lengthr(K))},start(){},type:"bytes"}),h(n(m));let T=null,v=null,Z=null,P=null;if(typeof u=="string")v=u,P="text/plain;charset=UTF-8";else if(u instanceof URLSearchParams)v=u.toString(),P="application/x-www-form-urlencoded;charset=UTF-8";else if(c(u))v=new Uint8Array(u.slice());else if(ArrayBuffer.isView(u))v=new Uint8Array(u.buffer.slice(u.byteOffset,u.byteOffset+u.byteLength));else if(e.isFormDataLike(u)){const K=`----formdata-undici-0${`${Math.floor(Math.random()*1e11)}`.padStart(11,"0")}`,tA=`--${K}\r +Content-Disposition: form-data`;/*! formdata-polyfill. MIT License. Jimmy Wärting */const aA=o(rA=>rA.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),"escape"),X=o(rA=>rA.replace(/\r?\n|\r/g,`\r +`),"normalizeLinefeeds"),$=[],V=new Uint8Array([13,10]);Z=0;let q=!1;for(const[rA,iA]of u)if(typeof iA=="string"){const gA=k.encode(tA+`; name="${aA(X(rA))}"\r +\r +${X(iA)}\r +`);$.push(gA),Z+=gA.byteLength}else{const gA=k.encode(`${tA}; name="${aA(X(rA))}"`+(iA.name?`; filename="${aA(iA.name)}"`:"")+`\r +Content-Type: ${iA.type||"application/octet-stream"}\r +\r +`);$.push(gA,iA,V),typeof iA.size=="number"?Z+=gA.byteLength+iA.size+V.byteLength:q=!0}const z=k.encode(`--${K}--`);$.push(z),Z+=z.byteLength,q&&(Z=null),v=u,T=o(async function*(){for(const rA of $)rA.stream?yield*rA.stream():yield rA},"action"),P=`multipart/form-data; boundary=${K}`}else if(t(u))v=u,Z=u.size,u.type&&(P=u.type);else if(typeof u[Symbol.asyncIterator]=="function"){if(b)throw new TypeError("keepalive");if(e.isDisturbed(u)||u.locked)throw new TypeError("Response body object should not be disturbed or locked");m=u instanceof ReadableStream?u:A(u)}if((typeof v=="string"||e.isBuffer(v))&&(Z=Buffer.byteLength(v)),T!=null){let K;m=new ReadableStream({async start(){K=T(u)[Symbol.asyncIterator]()},async pull(tA){const{value:aA,done:X}=await K.next();if(X)queueMicrotask(()=>{tA.close(),tA.byobRequest?.respond(0)});else if(!L(m)){const $=new Uint8Array(aA);$.byteLength&&tA.enqueue($)}return tA.desiredSize>0},async cancel(tA){await K.return()},type:"bytes"})}return[{stream:m,source:v,length:Z},P]}o(w,"extractBody");function U(u,b=!1){return u instanceof ReadableStream&&(h(!e.isDisturbed(u),"The body has already been consumed."),h(!u.locked,"The stream is locked.")),w(u,b)}o(U,"safelyExtractBody");function M(u){const[b,m]=u.stream.tee();return u.stream=b,{stream:m,length:u.length,source:u.source}}o(M,"cloneBody");function B(u){if(u.aborted)throw new DOMException("The operation was aborted.","AbortError")}o(B,"throwIfAborted");function D(u){return{blob(){return g(this,m=>{let T=N(this);return T===null?T="":T&&(T=l(T)),new f([m],{type:T})},u)},arrayBuffer(){return g(this,m=>new Uint8Array(m).buffer,u)},text(){return g(this,Q,u)},json(){return g(this,F,u)},formData(){return g(this,m=>{const T=N(this);if(T!==null)switch(T.essence){case"multipart/form-data":{const v=S(m,T);if(v==="failure")throw new TypeError("Failed to parse body as FormData.");const Z=new C;return Z[I]=v,Z}case"application/x-www-form-urlencoded":{const v=new URLSearchParams(m.toString()),Z=new C;for(const[P,AA]of v)Z.append(P,AA);return Z}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')},u)}}}o(D,"bodyMixinMethods");function G(u){Object.assign(u.prototype,D(u))}o(G,"mixinBody");async function g(u,b,m){if(a.brandCheck(u,m),B(u[I]),d(u[I].body))throw new TypeError("Body is unusable");const T=s(),v=o(P=>T.reject(P),"errorSteps"),Z=o(P=>{try{T.resolve(b(P))}catch(AA){v(AA)}},"successSteps");return u[I].body==null?(Z(new Uint8Array),T.promise):(await i(u[I].body,Z,v),T.promise)}o(g,"consumeBody");function d(u){return u!=null&&(u.stream.locked||e.isDisturbed(u.stream))}o(d,"bodyUnusable");function F(u){return JSON.parse(Q(u))}o(F,"parseJSONFromBytes");function N(u){const b=u[I].headersList,m=E(b);return m==="failure"?null:m}return o(N,"bodyMimeType"),body={extractBody:w,safelyExtractBody:U,cloneBody:M,mixinBody:G},body}o(requireBody,"requireBody");const assert$a=require$$0__default,util$i=util$m,{channels:channels$1}=diagnostics,timers=timers$1,{RequestContentLengthMismatchError:RequestContentLengthMismatchError$1,ResponseContentLengthMismatchError,RequestAbortedError:RequestAbortedError$5,HeadersTimeoutError,HeadersOverflowError,SocketError:SocketError$3,InformationalError:InformationalError$2,BodyTimeoutError,HTTPParserError,ResponseExceededMaxSizeError}=errors$1,{kUrl:kUrl$4,kReset:kReset$1,kClient:kClient$3,kParser,kBlocking,kRunning:kRunning$5,kPending:kPending$4,kSize:kSize$4,kWriting,kQueue:kQueue$3,kNoRef,kKeepAliveDefaultTimeout:kKeepAliveDefaultTimeout$1,kHostHeader:kHostHeader$1,kPendingIdx:kPendingIdx$2,kRunningIdx:kRunningIdx$2,kError:kError$2,kPipelining:kPipelining$1,kSocket:kSocket$1,kKeepAliveTimeoutValue:kKeepAliveTimeoutValue$1,kMaxHeadersSize:kMaxHeadersSize$1,kKeepAliveMaxTimeout:kKeepAliveMaxTimeout$1,kKeepAliveTimeoutThreshold:kKeepAliveTimeoutThreshold$1,kHeadersTimeout:kHeadersTimeout$1,kBodyTimeout:kBodyTimeout$1,kStrictContentLength:kStrictContentLength$2,kMaxRequests:kMaxRequests$1,kCounter:kCounter$1,kMaxResponseSize:kMaxResponseSize$1,kOnError:kOnError$2,kResume:kResume$3,kHTTPContext:kHTTPContext$1}=symbols$4,constants$2=constants$4,EMPTY_BUF=Buffer.alloc(0),FastBuffer=Buffer[Symbol.species],addListener=util$i.addListener,removeAllListeners=util$i.removeAllListeners;let extractBody;async function lazyllhttp(){const e=process.env.JEST_WORKER_ID?requireLlhttpWasm():void 0;let A;try{A=await WebAssembly.compile(requireLlhttp_simdWasm())}catch{A=await WebAssembly.compile(e||requireLlhttpWasm())}return await WebAssembly.instantiate(A,{env:{wasm_on_url:(t,n,r)=>0,wasm_on_status:(t,n,r)=>{assert$a.strictEqual(currentParser.ptr,t);const s=n-currentBufferPtr+currentBufferRef.byteOffset;return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer,s,r))||0},wasm_on_message_begin:t=>(assert$a.strictEqual(currentParser.ptr,t),currentParser.onMessageBegin()||0),wasm_on_header_field:(t,n,r)=>{assert$a.strictEqual(currentParser.ptr,t);const s=n-currentBufferPtr+currentBufferRef.byteOffset;return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer,s,r))||0},wasm_on_header_value:(t,n,r)=>{assert$a.strictEqual(currentParser.ptr,t);const s=n-currentBufferPtr+currentBufferRef.byteOffset;return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer,s,r))||0},wasm_on_headers_complete:(t,n,r,s)=>(assert$a.strictEqual(currentParser.ptr,t),currentParser.onHeadersComplete(n,!!r,!!s)||0),wasm_on_body:(t,n,r)=>{assert$a.strictEqual(currentParser.ptr,t);const s=n-currentBufferPtr+currentBufferRef.byteOffset;return currentParser.onBody(new FastBuffer(currentBufferRef.buffer,s,r))||0},wasm_on_message_complete:t=>(assert$a.strictEqual(currentParser.ptr,t),currentParser.onMessageComplete()||0)}})}o(lazyllhttp,"lazyllhttp");let llhttpInstance=null,llhttpPromise=lazyllhttp();llhttpPromise.catch();let currentParser=null,currentBufferRef=null,currentBufferSize=0,currentBufferPtr=null;const TIMEOUT_HEADERS=1,TIMEOUT_BODY=2,TIMEOUT_IDLE=3,st=class st{constructor(A,t,{exports:n}){assert$a(Number.isFinite(A[kMaxHeadersSize$1])&&A[kMaxHeadersSize$1]>0),this.llhttp=n,this.ptr=this.llhttp.llhttp_alloc(constants$2.TYPE.RESPONSE),this.client=A,this.socket=t,this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.statusCode=null,this.statusText="",this.upgrade=!1,this.headers=[],this.headersSize=0,this.headersMaxSize=A[kMaxHeadersSize$1],this.shouldKeepAlive=!1,this.paused=!1,this.resume=this.resume.bind(this),this.bytesRead=0,this.keepAlive="",this.contentLength="",this.connection="",this.maxResponseSize=A[kMaxResponseSize$1]}setTimeout(A,t){this.timeoutType=t,A!==this.timeoutValue?(timers.clearTimeout(this.timeout),A?(this.timeout=timers.setTimeout(onParserTimeout,A,this),this.timeout.unref&&this.timeout.unref()):this.timeout=null,this.timeoutValue=A):this.timeout&&this.timeout.refresh&&this.timeout.refresh()}resume(){this.socket.destroyed||!this.paused||(assert$a(this.ptr!=null),assert$a(currentParser==null),this.llhttp.llhttp_resume(this.ptr),assert$a(this.timeoutType===TIMEOUT_BODY),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.paused=!1,this.execute(this.socket.read()||EMPTY_BUF),this.readMore())}readMore(){for(;!this.paused&&this.ptr;){const A=this.socket.read();if(A===null)break;this.execute(A)}}execute(A){assert$a(this.ptr!=null),assert$a(currentParser==null),assert$a(!this.paused);const{socket:t,llhttp:n}=this;A.length>currentBufferSize&&(currentBufferPtr&&n.free(currentBufferPtr),currentBufferSize=Math.ceil(A.length/4096)*4096,currentBufferPtr=n.malloc(currentBufferSize)),new Uint8Array(n.memory.buffer,currentBufferPtr,currentBufferSize).set(A);try{let r;try{currentBufferRef=A,currentParser=this,r=n.llhttp_execute(this.ptr,currentBufferPtr,A.length)}catch(i){throw i}finally{currentParser=null,currentBufferRef=null}const s=n.llhttp_get_error_pos(this.ptr)-currentBufferPtr;if(r===constants$2.ERROR.PAUSED_UPGRADE)this.onUpgrade(A.slice(s));else if(r===constants$2.ERROR.PAUSED)this.paused=!0,t.unshift(A.slice(s));else if(r!==constants$2.ERROR.OK){const i=n.llhttp_get_error_reason(this.ptr);let E="";if(i){const Q=new Uint8Array(n.memory.buffer,i).indexOf(0);E="Response does not match the HTTP/1.1 protocol ("+Buffer.from(n.memory.buffer,i,Q).toString()+")"}throw new HTTPParserError(E,constants$2.ERROR[r],A.slice(s))}}catch(r){util$i.destroy(t,r)}}destroy(){assert$a(this.ptr!=null),assert$a(currentParser==null),this.llhttp.llhttp_free(this.ptr),this.ptr=null,timers.clearTimeout(this.timeout),this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.paused=!1}onStatus(A){this.statusText=A.toString()}onMessageBegin(){const{socket:A,client:t}=this;if(A.destroyed)return-1;const n=t[kQueue$3][t[kRunningIdx$2]];if(!n)return-1;n.onResponseStarted()}onHeaderField(A){const t=this.headers.length;t&1?this.headers[t-1]=Buffer.concat([this.headers[t-1],A]):this.headers.push(A),this.trackHeader(A.length)}onHeaderValue(A){let t=this.headers.length;(t&1)===1?(this.headers.push(A),t+=1):this.headers[t-1]=Buffer.concat([this.headers[t-1],A]);const n=this.headers[t-2];if(n.length===10){const r=util$i.bufferToLowerCasedHeaderName(n);r==="keep-alive"?this.keepAlive+=A.toString():r==="connection"&&(this.connection+=A.toString())}else n.length===14&&util$i.bufferToLowerCasedHeaderName(n)==="content-length"&&(this.contentLength+=A.toString());this.trackHeader(A.length)}trackHeader(A){this.headersSize+=A,this.headersSize>=this.headersMaxSize&&util$i.destroy(this.socket,new HeadersOverflowError)}onUpgrade(A){const{upgrade:t,client:n,socket:r,headers:s,statusCode:i}=this;assert$a(t);const E=n[kQueue$3][n[kRunningIdx$2]];assert$a(E),assert$a(!r.destroyed),assert$a(r===n[kSocket$1]),assert$a(!this.paused),assert$a(E.upgrade||E.method==="CONNECT"),this.statusCode=null,this.statusText="",this.shouldKeepAlive=null,assert$a(this.headers.length%2===0),this.headers=[],this.headersSize=0,r.unshift(A),r[kParser].destroy(),r[kParser]=null,r[kClient$3]=null,r[kError$2]=null,removeAllListeners(r),n[kSocket$1]=null,n[kHTTPContext$1]=null,n[kQueue$3][n[kRunningIdx$2]++]=null,n.emit("disconnect",n[kUrl$4],[n],new InformationalError$2("upgrade"));try{E.onUpgrade(i,s,r)}catch(Q){util$i.destroy(r,Q)}n[kResume$3]()}onHeadersComplete(A,t,n){const{client:r,socket:s,headers:i,statusText:E}=this;if(s.destroyed)return-1;const Q=r[kQueue$3][r[kRunningIdx$2]];if(!Q)return-1;if(assert$a(!this.upgrade),assert$a(this.statusCode<200),A===100)return util$i.destroy(s,new SocketError$3("bad response",util$i.getSocketInfo(s))),-1;if(t&&!Q.upgrade)return util$i.destroy(s,new SocketError$3("bad upgrade",util$i.getSocketInfo(s))),-1;if(assert$a.strictEqual(this.timeoutType,TIMEOUT_HEADERS),this.statusCode=A,this.shouldKeepAlive=n||Q.method==="HEAD"&&!s[kReset$1]&&this.connection.toLowerCase()==="keep-alive",this.statusCode>=200){const I=Q.bodyTimeout!=null?Q.bodyTimeout:r[kBodyTimeout$1];this.setTimeout(I,TIMEOUT_BODY)}else this.timeout&&this.timeout.refresh&&this.timeout.refresh();if(Q.method==="CONNECT")return assert$a(r[kRunning$5]===1),this.upgrade=!0,2;if(t)return assert$a(r[kRunning$5]===1),this.upgrade=!0,2;if(assert$a(this.headers.length%2===0),this.headers=[],this.headersSize=0,this.shouldKeepAlive&&r[kPipelining$1]){const I=this.keepAlive?util$i.parseKeepAliveTimeout(this.keepAlive):null;if(I!=null){const a=Math.min(I-r[kKeepAliveTimeoutThreshold$1],r[kKeepAliveMaxTimeout$1]);a<=0?s[kReset$1]=!0:r[kKeepAliveTimeoutValue$1]=a}else r[kKeepAliveTimeoutValue$1]=r[kKeepAliveDefaultTimeout$1]}else s[kReset$1]=!0;const C=Q.onHeaders(A,i,this.resume,E)===!1;return Q.aborted?-1:Q.method==="HEAD"||A<200?1:(s[kBlocking]&&(s[kBlocking]=!1,r[kResume$3]()),C?constants$2.ERROR.PAUSED:0)}onBody(A){const{client:t,socket:n,statusCode:r,maxResponseSize:s}=this;if(n.destroyed)return-1;const i=t[kQueue$3][t[kRunningIdx$2]];if(assert$a(i),assert$a.strictEqual(this.timeoutType,TIMEOUT_BODY),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),assert$a(r>=200),s>-1&&this.bytesRead+A.length>s)return util$i.destroy(n,new ResponseExceededMaxSizeError),-1;if(this.bytesRead+=A.length,i.onData(A)===!1)return constants$2.ERROR.PAUSED}onMessageComplete(){const{client:A,socket:t,statusCode:n,upgrade:r,headers:s,contentLength:i,bytesRead:E,shouldKeepAlive:Q}=this;if(t.destroyed&&(!n||Q))return-1;if(r)return;const C=A[kQueue$3][A[kRunningIdx$2]];if(assert$a(C),assert$a(n>=100),this.statusCode=null,this.statusText="",this.bytesRead=0,this.contentLength="",this.keepAlive="",this.connection="",assert$a(this.headers.length%2===0),this.headers=[],this.headersSize=0,!(n<200)){if(C.method!=="HEAD"&&i&&E!==parseInt(i,10))return util$i.destroy(t,new ResponseContentLengthMismatchError),-1;if(C.onComplete(s),A[kQueue$3][A[kRunningIdx$2]++]=null,t[kWriting])return assert$a.strictEqual(A[kRunning$5],0),util$i.destroy(t,new InformationalError$2("reset")),constants$2.ERROR.PAUSED;if(Q){if(t[kReset$1]&&A[kRunning$5]===0)return util$i.destroy(t,new InformationalError$2("reset")),constants$2.ERROR.PAUSED;A[kPipelining$1]==null||A[kPipelining$1]===1?setImmediate(()=>A[kResume$3]()):A[kResume$3]()}else return util$i.destroy(t,new InformationalError$2("reset")),constants$2.ERROR.PAUSED}}};o(st,"Parser");let Parser=st;function onParserTimeout(e){const{socket:A,timeoutType:t,client:n}=e;t===TIMEOUT_HEADERS?(!A[kWriting]||A.writableNeedDrain||n[kRunning$5]>1)&&(assert$a(!e.paused,"cannot be paused while waiting for headers"),util$i.destroy(A,new HeadersTimeoutError)):t===TIMEOUT_BODY?e.paused||util$i.destroy(A,new BodyTimeoutError):t===TIMEOUT_IDLE&&(assert$a(n[kRunning$5]===0&&n[kKeepAliveTimeoutValue$1]),util$i.destroy(A,new InformationalError$2("socket idle timeout")))}o(onParserTimeout,"onParserTimeout");async function connectH1$1(e,A){e[kSocket$1]=A,llhttpInstance||(llhttpInstance=await llhttpPromise,llhttpPromise=null),A[kNoRef]=!1,A[kWriting]=!1,A[kReset$1]=!1,A[kBlocking]=!1,A[kParser]=new Parser(e,A,llhttpInstance),addListener(A,"error",function(n){const r=this[kParser];if(assert$a(n.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),n.code==="ECONNRESET"&&r.statusCode&&!r.shouldKeepAlive){r.onMessageComplete();return}this[kError$2]=n,this[kClient$3][kOnError$2](n)}),addListener(A,"readable",function(){const n=this[kParser];n&&n.readMore()}),addListener(A,"end",function(){const n=this[kParser];if(n.statusCode&&!n.shouldKeepAlive){n.onMessageComplete();return}util$i.destroy(this,new SocketError$3("other side closed",util$i.getSocketInfo(this)))}),addListener(A,"close",function(){const n=this[kClient$3],r=this[kParser];r&&(!this[kError$2]&&r.statusCode&&!r.shouldKeepAlive&&r.onMessageComplete(),this[kParser].destroy(),this[kParser]=null);const s=this[kError$2]||new SocketError$3("closed",util$i.getSocketInfo(this));if(n[kSocket$1]=null,n[kHTTPContext$1]=null,n.destroyed){assert$a(n[kPending$4]===0);const i=n[kQueue$3].splice(n[kRunningIdx$2]);for(let E=0;E0&&s.code!=="UND_ERR_INFO"){const i=n[kQueue$3][n[kRunningIdx$2]];n[kQueue$3][n[kRunningIdx$2]++]=null,util$i.errorRequest(n,i,s)}n[kPendingIdx$2]=n[kRunningIdx$2],assert$a(n[kRunning$5]===0),n.emit("disconnect",n[kUrl$4],[n],s),n[kResume$3]()});let t=!1;return A.on("close",()=>{t=!0}),{version:"h1",defaultPipelining:1,write(...n){return writeH1(e,...n)},resume(){resumeH1(e)},destroy(n,r){t?queueMicrotask(r):A.destroy(n).on("close",r)},get destroyed(){return A.destroyed},busy(n){return!!(A[kWriting]||A[kReset$1]||A[kBlocking]||n&&(e[kRunning$5]>0&&!n.idempotent||e[kRunning$5]>0&&(n.upgrade||n.method==="CONNECT")||e[kRunning$5]>0&&util$i.bodyLength(n.body)!==0&&(util$i.isStream(n.body)||util$i.isAsyncIterable(n.body)||util$i.isFormDataLike(n.body))))}}}o(connectH1$1,"connectH1$1");function resumeH1(e){const A=e[kSocket$1];if(A&&!A.destroyed){if(e[kSize$4]===0?!A[kNoRef]&&A.unref&&(A.unref(),A[kNoRef]=!0):A[kNoRef]&&A.ref&&(A.ref(),A[kNoRef]=!1),e[kSize$4]===0)A[kParser].timeoutType!==TIMEOUT_IDLE&&A[kParser].setTimeout(e[kKeepAliveTimeoutValue$1],TIMEOUT_IDLE);else if(e[kRunning$5]>0&&A[kParser].statusCode<200&&A[kParser].timeoutType!==TIMEOUT_HEADERS){const t=e[kQueue$3][e[kRunningIdx$2]],n=t.headersTimeout!=null?t.headersTimeout:e[kHeadersTimeout$1];A[kParser].setTimeout(n,TIMEOUT_HEADERS)}}}o(resumeH1,"resumeH1");function shouldSendContentLength$1(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}o(shouldSendContentLength$1,"shouldSendContentLength$1");function writeH1(e,A){const{method:t,path:n,host:r,upgrade:s,blocking:i,reset:E}=A;let{body:Q,headers:C,contentLength:I}=A;const a=t==="PUT"||t==="POST"||t==="PATCH";if(util$i.isFormDataLike(Q)){extractBody||(extractBody=requireBody().extractBody);const[l,S]=extractBody(Q);A.contentType==null&&C.push("content-type",S),Q=l.stream,I=l.length}else util$i.isBlobLike(Q)&&A.contentType==null&&Q.type&&C.push("content-type",Q.type);Q&&typeof Q.read=="function"&&Q.read(0);const f=util$i.bodyLength(Q);if(I=f??I,I===null&&(I=A.contentLength),I===0&&!a&&(I=null),shouldSendContentLength$1(t)&&I>0&&A.contentLength!==null&&A.contentLength!==I){if(e[kStrictContentLength$2])return util$i.errorRequest(e,A,new RequestContentLengthMismatchError$1),!1;process.emitWarning(new RequestContentLengthMismatchError$1)}const h=e[kSocket$1],L=o(l=>{A.aborted||A.completed||(util$i.errorRequest(e,A,l||new RequestAbortedError$5),util$i.destroy(Q),util$i.destroy(h,new InformationalError$2("aborted")))},"abort");try{A.onConnect(L)}catch(l){util$i.errorRequest(e,A,l)}if(A.aborted)return!1;t==="HEAD"&&(h[kReset$1]=!0),(s||t==="CONNECT")&&(h[kReset$1]=!0),E!=null&&(h[kReset$1]=E),e[kMaxRequests$1]&&h[kCounter$1]++>=e[kMaxRequests$1]&&(h[kReset$1]=!0),i&&(h[kBlocking]=!0);let c=`${t} ${n} HTTP/1.1\r +`;if(typeof r=="string"?c+=`host: ${r}\r +`:c+=e[kHostHeader$1],s?c+=`connection: upgrade\r +upgrade: ${s}\r +`:e[kPipelining$1]&&!h[kReset$1]?c+=`connection: keep-alive\r +`:c+=`connection: close\r +`,Array.isArray(C))for(let l=0;l{A.removeListener("error",h)}),!Q){const L=new RequestAbortedError$5;queueMicrotask(()=>h(L))}},"onClose"),h=o(function(L){if(!Q){if(Q=!0,assert$a(r.destroyed||r[kWriting]&&t[kRunning$5]<=1),r.off("drain",a).off("error",h),A.removeListener("data",I).removeListener("end",h).removeListener("close",f),!L)try{C.end()}catch(c){L=c}C.destroy(L),L&&(L.code!=="UND_ERR_INFO"||L.message!=="reset")?util$i.destroy(A,L):util$i.destroy(A)}},"onFinished");A.on("data",I).on("end",h).on("error",h).on("close",f),A.resume&&A.resume(),r.on("drain",a).on("error",h),A.errorEmitted??A.errored?setImmediate(()=>h(A.errored)):(A.endEmitted??A.readableEnded)&&setImmediate(()=>h(null)),(A.closeEmitted??A.closed)&&setImmediate(f)}o(writeStream$1,"writeStream$1");async function writeBuffer({abort:e,body:A,client:t,request:n,socket:r,contentLength:s,header:i,expectsPayload:E}){try{A?util$i.isBuffer(A)&&(assert$a(s===A.byteLength,"buffer body must have content length"),r.cork(),r.write(`${i}content-length: ${s}\r +\r +`,"latin1"),r.write(A),r.uncork(),n.onBodySent(A),E||(r[kReset$1]=!0)):s===0?r.write(`${i}content-length: 0\r +\r +`,"latin1"):(assert$a(s===null,"no body must not have content length"),r.write(`${i}\r +`,"latin1")),n.onRequestSent(),t[kResume$3]()}catch(Q){e(Q)}}o(writeBuffer,"writeBuffer");async function writeBlob$1({abort:e,body:A,client:t,request:n,socket:r,contentLength:s,header:i,expectsPayload:E}){assert$a(s===A.size,"blob body must have content length");try{if(s!=null&&s!==A.size)throw new RequestContentLengthMismatchError$1;const Q=Buffer.from(await A.arrayBuffer());r.cork(),r.write(`${i}content-length: ${s}\r +\r +`,"latin1"),r.write(Q),r.uncork(),n.onBodySent(Q),n.onRequestSent(),E||(r[kReset$1]=!0),t[kResume$3]()}catch(Q){e(Q)}}o(writeBlob$1,"writeBlob$1");async function writeIterable$1({abort:e,body:A,client:t,request:n,socket:r,contentLength:s,header:i,expectsPayload:E}){assert$a(s!==0||t[kRunning$5]===0,"iterator body cannot be pipelined");let Q=null;function C(){if(Q){const f=Q;Q=null,f()}}o(C,"onDrain");const I=o(()=>new Promise((f,h)=>{assert$a(Q===null),r[kError$2]?h(r[kError$2]):Q=f}),"waitForDrain");r.on("close",C).on("drain",C);const a=new AsyncWriter({abort:e,socket:r,request:n,contentLength:s,client:t,expectsPayload:E,header:i});try{for await(const f of A){if(r[kError$2])throw r[kError$2];a.write(f)||await I()}a.end()}catch(f){a.destroy(f)}finally{r.off("close",C).off("drain",C)}}o(writeIterable$1,"writeIterable$1");const ot=class ot{constructor({abort:A,socket:t,request:n,contentLength:r,client:s,expectsPayload:i,header:E}){this.socket=t,this.request=n,this.contentLength=r,this.client=s,this.bytesWritten=0,this.expectsPayload=i,this.header=E,this.abort=A,t[kWriting]=!0}write(A){const{socket:t,request:n,contentLength:r,client:s,bytesWritten:i,expectsPayload:E,header:Q}=this;if(t[kError$2])throw t[kError$2];if(t.destroyed)return!1;const C=Buffer.byteLength(A);if(!C)return!0;if(r!==null&&i+C>r){if(s[kStrictContentLength$2])throw new RequestContentLengthMismatchError$1;process.emitWarning(new RequestContentLengthMismatchError$1)}t.cork(),i===0&&(E||(t[kReset$1]=!0),r===null?t.write(`${Q}transfer-encoding: chunked\r +`,"latin1"):t.write(`${Q}content-length: ${r}\r +\r +`,"latin1")),r===null&&t.write(`\r +${C.toString(16)}\r +`,"latin1"),this.bytesWritten+=C;const I=t.write(A);return t.uncork(),n.onBodySent(A),I||t[kParser].timeout&&t[kParser].timeoutType===TIMEOUT_HEADERS&&t[kParser].timeout.refresh&&t[kParser].timeout.refresh(),I}end(){const{socket:A,contentLength:t,client:n,bytesWritten:r,expectsPayload:s,header:i,request:E}=this;if(E.onRequestSent(),A[kWriting]=!1,A[kError$2])throw A[kError$2];if(!A.destroyed){if(r===0?s?A.write(`${i}content-length: 0\r +\r +`,"latin1"):A.write(`${i}\r +`,"latin1"):t===null&&A.write(`\r +0\r +\r +`,"latin1"),t!==null&&r!==t){if(n[kStrictContentLength$2])throw new RequestContentLengthMismatchError$1;process.emitWarning(new RequestContentLengthMismatchError$1)}A[kParser].timeout&&A[kParser].timeoutType===TIMEOUT_HEADERS&&A[kParser].timeout.refresh&&A[kParser].timeout.refresh(),n[kResume$3]()}}destroy(A){const{socket:t,client:n,abort:r}=this;t[kWriting]=!1,A&&(assert$a(n[kRunning$5]<=1,"pipeline should only contain this request"),r(A))}};o(ot,"AsyncWriter");let AsyncWriter=ot;var clientH1=connectH1$1;const assert$9=require$$0__default,{pipeline:pipeline$1}=Stream__default,util$h=util$m,{RequestContentLengthMismatchError,RequestAbortedError:RequestAbortedError$4,SocketError:SocketError$2,InformationalError:InformationalError$1}=errors$1,{kUrl:kUrl$3,kReset,kClient:kClient$2,kRunning:kRunning$4,kPending:kPending$3,kQueue:kQueue$2,kPendingIdx:kPendingIdx$1,kRunningIdx:kRunningIdx$1,kError:kError$1,kSocket,kStrictContentLength:kStrictContentLength$1,kOnError:kOnError$1,kMaxConcurrentStreams:kMaxConcurrentStreams$1,kHTTP2Session,kResume:kResume$2}=symbols$4,kOpenStreams=Symbol("open streams");let h2ExperimentalWarned=!1,http2;try{http2=require("node:http2")}catch{http2={constants:{}}}const{constants:{HTTP2_HEADER_AUTHORITY,HTTP2_HEADER_METHOD,HTTP2_HEADER_PATH,HTTP2_HEADER_SCHEME,HTTP2_HEADER_CONTENT_LENGTH,HTTP2_HEADER_EXPECT,HTTP2_HEADER_STATUS}}=http2;function parseH2Headers(e){const A=[];for(const[t,n]of Object.entries(e))if(Array.isArray(n))for(const r of n)A.push(Buffer.from(t),Buffer.from(r));else A.push(Buffer.from(t),Buffer.from(n));return A}o(parseH2Headers,"parseH2Headers");async function connectH2$1(e,A){e[kSocket]=A,h2ExperimentalWarned||(h2ExperimentalWarned=!0,process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"}));const t=http2.connect(e[kUrl$3],{createConnection:()=>A,peerMaxConcurrentStreams:e[kMaxConcurrentStreams$1]});t[kOpenStreams]=0,t[kClient$2]=e,t[kSocket]=A,util$h.addListener(t,"error",onHttp2SessionError),util$h.addListener(t,"frameError",onHttp2FrameError),util$h.addListener(t,"end",onHttp2SessionEnd),util$h.addListener(t,"goaway",onHTTP2GoAway),util$h.addListener(t,"close",function(){const{[kClient$2]:r}=this,s=this[kSocket][kError$1]||new SocketError$2("closed",util$h.getSocketInfo(this));r[kSocket]=null,r[kHTTP2Session]=null,assert$9(r[kPending$3]===0);const i=r[kQueue$2].splice(r[kRunningIdx$1]);for(let E=0;E{n=!0}),{version:"h2",defaultPipelining:1/0,write(...r){writeH2(e,...r)},resume(){},destroy(r,s){t.destroy(r),n?queueMicrotask(s):A.destroy(r).on("close",s)},get destroyed(){return A.destroyed},busy(){return!1}}}o(connectH2$1,"connectH2$1");function onHttp2SessionError(e){assert$9(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[kSocket][kError$1]=e,this[kClient$2][kOnError$1](e)}o(onHttp2SessionError,"onHttp2SessionError");function onHttp2FrameError(e,A,t){if(t===0){const n=new InformationalError$1(`HTTP/2: "frameError" received - type ${e}, code ${A}`);this[kSocket][kError$1]=n,this[kClient$2][kOnError$1](n)}}o(onHttp2FrameError,"onHttp2FrameError");function onHttp2SessionEnd(){const e=new SocketError$2("other side closed",util$h.getSocketInfo(this[kSocket]));this.destroy(e),util$h.destroy(this[kSocket],e)}o(onHttp2SessionEnd,"onHttp2SessionEnd");function onHTTP2GoAway(e){const A=new InformationalError$1(`HTTP/2: "GOAWAY" frame received with code ${e}`);this[kSocket][kError$1]=A,this[kClient$2][kOnError$1](A),this.unref(),this.destroy(),util$h.destroy(this[kSocket],A)}o(onHTTP2GoAway,"onHTTP2GoAway");function shouldSendContentLength(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}o(shouldSendContentLength,"shouldSendContentLength");function writeH2(e,A){const t=e[kHTTP2Session],{body:n,method:r,path:s,host:i,upgrade:E,expectContinue:Q,signal:C,headers:I}=A;if(E)return util$h.errorRequest(e,A,new Error("Upgrade not supported for H2")),!1;if(A.aborted)return!1;const a={};for(let w=0;w{A.aborted||A.completed||(w=w||new RequestAbortedError$4,f!=null&&(util$h.destroy(f,w),t[kOpenStreams]-=1,t[kOpenStreams]===0&&t.unref()),util$h.errorRequest(e,A,w))})}catch(w){util$h.errorRequest(e,A,w)}if(r==="CONNECT")return t.ref(),f=t.request(a,{endStream:!1,signal:C}),f.id&&!f.pending?(A.onUpgrade(null,null,f),++t[kOpenStreams]):f.once("ready",()=>{A.onUpgrade(null,null,f),++t[kOpenStreams]}),f.once("close",()=>{t[kOpenStreams]-=1,t[kOpenStreams]===0&&t.unref()}),!0;a[HTTP2_HEADER_PATH]=s,a[HTTP2_HEADER_SCHEME]="https";const c=r==="PUT"||r==="POST"||r==="PATCH";n&&typeof n.read=="function"&&n.read(0);let l=util$h.bodyLength(n);if(l==null&&(l=A.contentLength),(l===0||!c)&&(l=null),shouldSendContentLength(r)&&l>0&&A.contentLength!=null&&A.contentLength!==l){if(e[kStrictContentLength$1])return util$h.errorRequest(e,A,new RequestContentLengthMismatchError),!1;process.emitWarning(new RequestContentLengthMismatchError)}l!=null&&(assert$9(n,"no body must not have content length"),a[HTTP2_HEADER_CONTENT_LENGTH]=`${l}`),t.ref();const S=r==="GET"||r==="HEAD"||n===null;return Q?(a[HTTP2_HEADER_EXPECT]="100-continue",f=t.request(a,{endStream:S,signal:C}),f.once("continue",k)):(f=t.request(a,{endStream:S,signal:C}),k()),++t[kOpenStreams],f.once("response",w=>{const{[HTTP2_HEADER_STATUS]:U,...M}=w;if(A.onResponseStarted(),A.aborted||A.completed){const B=new RequestAbortedError$4;util$h.errorRequest(e,A,B),util$h.destroy(f,B);return}A.onHeaders(Number(U),parseH2Headers(M),f.resume.bind(f),"")===!1&&f.pause(),f.on("data",B=>{A.onData(B)===!1&&f.pause()})}),f.once("end",()=>{if(f.state?.state==null||f.state.state<6){A.onComplete([]);return}t[kOpenStreams]-=1,t[kOpenStreams]===0&&t.unref();const w=new InformationalError$1("HTTP/2: stream half-closed (remote)");util$h.errorRequest(e,A,w),util$h.destroy(f,w)}),f.once("close",()=>{t[kOpenStreams]-=1,t[kOpenStreams]===0&&t.unref()}),f.once("error",function(w){e[kHTTP2Session]&&!e[kHTTP2Session].destroyed&&!this.closed&&!this.destroyed&&(t[kOpenStreams]-=1,util$h.errorRequest(e,A,w),util$h.destroy(f,w))}),f.once("frameError",(w,U)=>{const M=new InformationalError$1(`HTTP/2: "frameError" received - type ${w}, code ${U}`);util$h.errorRequest(e,A,M),e[kHTTP2Session]&&!e[kHTTP2Session].destroyed&&!this.closed&&!this.destroyed&&(t[kOpenStreams]-=1,util$h.destroy(f,M))}),!0;function k(){n?util$h.isBuffer(n)?(assert$9(l===n.byteLength,"buffer body must have content length"),f.cork(),f.write(n),f.uncork(),f.end(),A.onBodySent(n),A.onRequestSent()):util$h.isBlobLike(n)?typeof n.stream=="function"?writeIterable({client:e,request:A,contentLength:l,h2stream:f,expectsPayload:c,body:n.stream(),socket:e[kSocket],header:""}):writeBlob({body:n,client:e,request:A,contentLength:l,expectsPayload:c,h2stream:f,header:"",socket:e[kSocket]}):util$h.isStream(n)?writeStream({body:n,client:e,request:A,contentLength:l,expectsPayload:c,socket:e[kSocket],h2stream:f,header:""}):util$h.isIterable(n)?writeIterable({body:n,client:e,request:A,contentLength:l,expectsPayload:c,header:"",h2stream:f,socket:e[kSocket]}):assert$9(!1):A.onRequestSent()}o(k,"writeBodyH2")}o(writeH2,"writeH2");function writeStream({h2stream:e,body:A,client:t,request:n,socket:r,contentLength:s,header:i,expectsPayload:E}){assert$9(s!==0||t[kRunning$4]===0,"stream body cannot be pipelined");const Q=pipeline$1(A,e,I=>{I?(util$h.destroy(A,I),util$h.destroy(e,I)):n.onRequestSent()});Q.on("data",C),Q.once("end",()=>{Q.removeListener("data",C),util$h.destroy(Q)});function C(I){n.onBodySent(I)}o(C,"onPipeData")}o(writeStream,"writeStream");async function writeBlob({h2stream:e,body:A,client:t,request:n,socket:r,contentLength:s,header:i,expectsPayload:E}){assert$9(s===A.size,"blob body must have content length");try{if(s!=null&&s!==A.size)throw new RequestContentLengthMismatchError;const Q=Buffer.from(await A.arrayBuffer());e.cork(),e.write(Q),e.uncork(),n.onBodySent(Q),n.onRequestSent(),E||(r[kReset]=!0),t[kResume$2]()}catch{util$h.destroy(e)}}o(writeBlob,"writeBlob");async function writeIterable({h2stream:e,body:A,client:t,request:n,socket:r,contentLength:s,header:i,expectsPayload:E}){assert$9(s!==0||t[kRunning$4]===0,"iterator body cannot be pipelined");let Q=null;function C(){if(Q){const a=Q;Q=null,a()}}o(C,"onDrain");const I=o(()=>new Promise((a,f)=>{assert$9(Q===null),r[kError$1]?f(r[kError$1]):Q=a}),"waitForDrain");e.on("close",C).on("drain",C);try{for await(const a of A){if(r[kError$1])throw r[kError$1];const f=e.write(a);n.onBodySent(a),f||await I()}}catch(a){e.destroy(a)}finally{n.onRequestSent(),e.end(),e.off("close",C).off("drain",C)}}o(writeIterable,"writeIterable");var clientH2=connectH2$1;const util$g=util$m,{kBodyUsed}=symbols$4,assert$8=require$$0__default,{InvalidArgumentError:InvalidArgumentError$f}=errors$1,EE=require$$0__default$3,redirectableStatusCodes=[300,301,302,303,307,308],kBody$1=Symbol("body"),it=class it{constructor(A){this[kBody$1]=A,this[kBodyUsed]=!1}async*[Symbol.asyncIterator](){assert$8(!this[kBodyUsed],"disturbed"),this[kBodyUsed]=!0,yield*this[kBody$1]}};o(it,"BodyAsyncIterable");let BodyAsyncIterable=it,RedirectHandler$1=(Ue=class{constructor(A,t,n,r){if(t!=null&&(!Number.isInteger(t)||t<0))throw new InvalidArgumentError$f("maxRedirections must be a positive number");util$g.validateHandler(r,n.method,n.upgrade),this.dispatch=A,this.location=null,this.abort=null,this.opts={...n,maxRedirections:0},this.maxRedirections=t,this.handler=r,this.history=[],this.redirectionLimitReached=!1,util$g.isStream(this.opts.body)?(util$g.bodyLength(this.opts.body)===0&&this.opts.body.on("data",function(){assert$8(!1)}),typeof this.opts.body.readableDidRead!="boolean"&&(this.opts.body[kBodyUsed]=!1,EE.prototype.on.call(this.opts.body,"data",function(){this[kBodyUsed]=!0}))):this.opts.body&&typeof this.opts.body.pipeTo=="function"?this.opts.body=new BodyAsyncIterable(this.opts.body):this.opts.body&&typeof this.opts.body!="string"&&!ArrayBuffer.isView(this.opts.body)&&util$g.isIterable(this.opts.body)&&(this.opts.body=new BodyAsyncIterable(this.opts.body))}onConnect(A){this.abort=A,this.handler.onConnect(A,{history:this.history})}onUpgrade(A,t,n){this.handler.onUpgrade(A,t,n)}onError(A){this.handler.onError(A)}onHeaders(A,t,n,r){if(this.location=this.history.length>=this.maxRedirections||util$g.isDisturbed(this.opts.body)?null:parseLocation(A,t),this.opts.throwOnMaxRedirect&&this.history.length>=this.maxRedirections){this.request&&this.request.abort(new Error("max redirects")),this.redirectionLimitReached=!0,this.abort(new Error("max redirects"));return}if(this.opts.origin&&this.history.push(new URL(this.opts.path,this.opts.origin)),!this.location)return this.handler.onHeaders(A,t,n,r);const{origin:s,pathname:i,search:E}=util$g.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin))),Q=E?`${i}${E}`:i;this.opts.headers=cleanRequestHeaders(this.opts.headers,A===303,this.opts.origin!==s),this.opts.path=Q,this.opts.origin=s,this.opts.maxRedirections=0,this.opts.query=null,A===303&&this.opts.method!=="HEAD"&&(this.opts.method="GET",this.opts.body=null)}onData(A){if(!this.location)return this.handler.onData(A)}onComplete(A){this.location?(this.location=null,this.abort=null,this.dispatch(this.opts,this)):this.handler.onComplete(A)}onBodySent(A){this.handler.onBodySent&&this.handler.onBodySent(A)}},o(Ue,"RedirectHandler"),Ue);function parseLocation(e,A){if(redirectableStatusCodes.indexOf(e)===-1)return null;for(let t=0;to(function(n,r){const{maxRedirections:s=e}=n;if(!s)return A(n,r);const i=new RedirectHandler(A,s,n,r);return n={...n,maxRedirections:0},A(n,i)},"Intercept")}o(createRedirectInterceptor$2,"createRedirectInterceptor$2");var redirectInterceptor=createRedirectInterceptor$2;const assert$7=require$$0__default,net=require$$4__default,http=http__default,util$f=util$m,{channels}=diagnostics,Request=request$2,DispatcherBase$3=dispatcherBase,{InvalidArgumentError:InvalidArgumentError$e,InformationalError,ClientDestroyedError}=errors$1,buildConnector$2=connect$2,{kUrl:kUrl$2,kServerName,kClient:kClient$1,kBusy:kBusy$1,kConnect,kResuming,kRunning:kRunning$3,kPending:kPending$2,kSize:kSize$3,kQueue:kQueue$1,kConnected:kConnected$4,kConnecting,kNeedDrain:kNeedDrain$2,kKeepAliveDefaultTimeout,kHostHeader,kPendingIdx,kRunningIdx,kError,kPipelining,kKeepAliveTimeoutValue,kMaxHeadersSize,kKeepAliveMaxTimeout,kKeepAliveTimeoutThreshold,kHeadersTimeout,kBodyTimeout,kStrictContentLength,kConnector,kMaxRedirections:kMaxRedirections$1,kMaxRequests,kCounter,kClose:kClose$5,kDestroy:kDestroy$3,kDispatch:kDispatch$2,kInterceptors:kInterceptors$3,kLocalAddress,kMaxResponseSize,kOnError,kHTTPContext,kMaxConcurrentStreams,kResume:kResume$1}=symbols$4,connectH1=clientH1,connectH2=clientH2;let deprecatedInterceptorWarned=!1;const kClosedResolve$1=Symbol("kClosedResolve");function getPipelining(e){return e[kPipelining]??e[kHTTPContext]?.defaultPipelining??1}o(getPipelining,"getPipelining");let Client$3=(be=class extends DispatcherBase$3{constructor(A,{interceptors:t,maxHeaderSize:n,headersTimeout:r,socketTimeout:s,requestTimeout:i,connectTimeout:E,bodyTimeout:Q,idleTimeout:C,keepAlive:I,keepAliveTimeout:a,maxKeepAliveTimeout:f,keepAliveMaxTimeout:h,keepAliveTimeoutThreshold:L,socketPath:c,pipelining:l,tls:S,strictContentLength:k,maxCachedSessions:w,maxRedirections:U,connect:M,maxRequestsPerClient:B,localAddress:D,maxResponseSize:G,autoSelectFamily:g,autoSelectFamilyAttemptTimeout:d,maxConcurrentStreams:F,allowH2:N}={}){if(super(),I!==void 0)throw new InvalidArgumentError$e("unsupported keepAlive, use pipelining=0 instead");if(s!==void 0)throw new InvalidArgumentError$e("unsupported socketTimeout, use headersTimeout & bodyTimeout instead");if(i!==void 0)throw new InvalidArgumentError$e("unsupported requestTimeout, use headersTimeout & bodyTimeout instead");if(C!==void 0)throw new InvalidArgumentError$e("unsupported idleTimeout, use keepAliveTimeout instead");if(f!==void 0)throw new InvalidArgumentError$e("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead");if(n!=null&&!Number.isFinite(n))throw new InvalidArgumentError$e("invalid maxHeaderSize");if(c!=null&&typeof c!="string")throw new InvalidArgumentError$e("invalid socketPath");if(E!=null&&(!Number.isFinite(E)||E<0))throw new InvalidArgumentError$e("invalid connectTimeout");if(a!=null&&(!Number.isFinite(a)||a<=0))throw new InvalidArgumentError$e("invalid keepAliveTimeout");if(h!=null&&(!Number.isFinite(h)||h<=0))throw new InvalidArgumentError$e("invalid keepAliveMaxTimeout");if(L!=null&&!Number.isFinite(L))throw new InvalidArgumentError$e("invalid keepAliveTimeoutThreshold");if(r!=null&&(!Number.isInteger(r)||r<0))throw new InvalidArgumentError$e("headersTimeout must be a positive integer or zero");if(Q!=null&&(!Number.isInteger(Q)||Q<0))throw new InvalidArgumentError$e("bodyTimeout must be a positive integer or zero");if(M!=null&&typeof M!="function"&&typeof M!="object")throw new InvalidArgumentError$e("connect must be a function or an object");if(U!=null&&(!Number.isInteger(U)||U<0))throw new InvalidArgumentError$e("maxRedirections must be a positive number");if(B!=null&&(!Number.isInteger(B)||B<0))throw new InvalidArgumentError$e("maxRequestsPerClient must be a positive number");if(D!=null&&(typeof D!="string"||net.isIP(D)===0))throw new InvalidArgumentError$e("localAddress must be valid string IP address");if(G!=null&&(!Number.isInteger(G)||G<-1))throw new InvalidArgumentError$e("maxResponseSize must be a positive number");if(d!=null&&(!Number.isInteger(d)||d<-1))throw new InvalidArgumentError$e("autoSelectFamilyAttemptTimeout must be a positive number");if(N!=null&&typeof N!="boolean")throw new InvalidArgumentError$e("allowH2 must be a valid boolean value");if(F!=null&&(typeof F!="number"||F<1))throw new InvalidArgumentError$e("maxConcurrentStreams must be a positive integer, greater than 0");typeof M!="function"&&(M=buildConnector$2({...S,maxCachedSessions:w,allowH2:N,socketPath:c,timeout:E,...util$f.nodeHasAutoSelectFamily&&g?{autoSelectFamily:g,autoSelectFamilyAttemptTimeout:d}:void 0,...M})),t?.Client&&Array.isArray(t.Client)?(this[kInterceptors$3]=t.Client,deprecatedInterceptorWarned||(deprecatedInterceptorWarned=!0,process.emitWarning("Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.",{code:"UNDICI-CLIENT-INTERCEPTOR-DEPRECATED"}))):this[kInterceptors$3]=[createRedirectInterceptor$1({maxRedirections:U})],this[kUrl$2]=util$f.parseOrigin(A),this[kConnector]=M,this[kPipelining]=l??1,this[kMaxHeadersSize]=n||http.maxHeaderSize,this[kKeepAliveDefaultTimeout]=a??4e3,this[kKeepAliveMaxTimeout]=h??6e5,this[kKeepAliveTimeoutThreshold]=L??1e3,this[kKeepAliveTimeoutValue]=this[kKeepAliveDefaultTimeout],this[kServerName]=null,this[kLocalAddress]=D??null,this[kResuming]=0,this[kNeedDrain$2]=0,this[kHostHeader]=`host: ${this[kUrl$2].hostname}${this[kUrl$2].port?`:${this[kUrl$2].port}`:""}\r +`,this[kBodyTimeout]=Q??3e5,this[kHeadersTimeout]=r??3e5,this[kStrictContentLength]=k??!0,this[kMaxRedirections$1]=U,this[kMaxRequests]=B,this[kClosedResolve$1]=null,this[kMaxResponseSize]=G>-1?G:-1,this[kMaxConcurrentStreams]=F??100,this[kHTTPContext]=null,this[kQueue$1]=[],this[kRunningIdx]=0,this[kPendingIdx]=0,this[kResume$1]=u=>resume(this,u),this[kOnError]=u=>onError(this,u)}get pipelining(){return this[kPipelining]}set pipelining(A){this[kPipelining]=A,this[kResume$1](!0)}get[kPending$2](){return this[kQueue$1].length-this[kPendingIdx]}get[kRunning$3](){return this[kPendingIdx]-this[kRunningIdx]}get[kSize$3](){return this[kQueue$1].length-this[kRunningIdx]}get[kConnected$4](){return!!this[kHTTPContext]&&!this[kConnecting]&&!this[kHTTPContext].destroyed}get[kBusy$1](){return!!(this[kHTTPContext]?.busy(null)||this[kSize$3]>=(getPipelining(this)||1)||this[kPending$2]>0)}[kConnect](A){connect$1(this),this.once("connect",A)}[kDispatch$2](A,t){const n=A.origin||this[kUrl$2].origin,r=new Request(n,A,t);return this[kQueue$1].push(r),this[kResuming]||(util$f.bodyLength(r.body)==null&&util$f.isIterable(r.body)?(this[kResuming]=1,queueMicrotask(()=>resume(this))):this[kResume$1](!0)),this[kResuming]&&this[kNeedDrain$2]!==2&&this[kBusy$1]&&(this[kNeedDrain$2]=2),this[kNeedDrain$2]<2}async[kClose$5](){return new Promise(A=>{this[kSize$3]?this[kClosedResolve$1]=A:A(null)})}async[kDestroy$3](A){return new Promise(t=>{const n=this[kQueue$1].splice(this[kPendingIdx]);for(let s=0;s{this[kClosedResolve$1]&&(this[kClosedResolve$1](),this[kClosedResolve$1]=null),t(null)},"callback");this[kHTTPContext]?(this[kHTTPContext].destroy(A,r),this[kHTTPContext]=null):queueMicrotask(r),this[kResume$1]()})}},o(be,"Client"),be);const createRedirectInterceptor$1=redirectInterceptor;function onError(e,A){if(e[kRunning$3]===0&&A.code!=="UND_ERR_INFO"&&A.code!=="UND_ERR_SOCKET"){assert$7(e[kPendingIdx]===e[kRunningIdx]);const t=e[kQueue$1].splice(e[kRunningIdx]);for(let n=0;n{e[kConnector]({host:A,hostname:t,protocol:n,port:r,servername:e[kServerName],localAddress:e[kLocalAddress]},(Q,C)=>{Q?E(Q):i(C)})});if(e.destroyed){util$f.destroy(s.on("error",()=>{}),new ClientDestroyedError);return}assert$7(s);try{e[kHTTPContext]=s.alpnProtocol==="h2"?await connectH2(e,s):await connectH1(e,s)}catch(i){throw s.destroy().on("error",()=>{}),i}e[kConnecting]=!1,s[kCounter]=0,s[kMaxRequests]=e[kMaxRequests],s[kClient$1]=e,s[kError]=null,channels.connected.hasSubscribers&&channels.connected.publish({connectParams:{host:A,hostname:t,protocol:n,port:r,version:e[kHTTPContext]?.version,servername:e[kServerName],localAddress:e[kLocalAddress]},connector:e[kConnector],socket:s}),e.emit("connect",e[kUrl$2],[e])}catch(s){if(e.destroyed)return;if(e[kConnecting]=!1,channels.connectError.hasSubscribers&&channels.connectError.publish({connectParams:{host:A,hostname:t,protocol:n,port:r,version:e[kHTTPContext]?.version,servername:e[kServerName],localAddress:e[kLocalAddress]},connector:e[kConnector],error:s}),s.code==="ERR_TLS_CERT_ALTNAME_INVALID")for(assert$7(e[kRunning$3]===0);e[kPending$2]>0&&e[kQueue$1][e[kPendingIdx]].servername===e[kServerName];){const i=e[kQueue$1][e[kPendingIdx]++];util$f.errorRequest(e,i,s)}else onError(e,s);e.emit("connectionError",e[kUrl$2],[e],s)}e[kResume$1]()}o(connect$1,"connect$1");function emitDrain(e){e[kNeedDrain$2]=0,e.emit("drain",e[kUrl$2],[e])}o(emitDrain,"emitDrain");function resume(e,A){e[kResuming]!==2&&(e[kResuming]=2,_resume(e,A),e[kResuming]=0,e[kRunningIdx]>256&&(e[kQueue$1].splice(0,e[kRunningIdx]),e[kPendingIdx]-=e[kRunningIdx],e[kRunningIdx]=0))}o(resume,"resume");function _resume(e,A){for(;;){if(e.destroyed){assert$7(e[kPending$2]===0);return}if(e[kClosedResolve$1]&&!e[kSize$3]){e[kClosedResolve$1](),e[kClosedResolve$1]=null;return}if(e[kHTTPContext]&&e[kHTTPContext].resume(),e[kBusy$1])e[kNeedDrain$2]=2;else if(e[kNeedDrain$2]===2){A?(e[kNeedDrain$2]=1,queueMicrotask(()=>emitDrain(e))):emitDrain(e);continue}if(e[kPending$2]===0||e[kRunning$3]>=(getPipelining(e)||1))return;const t=e[kQueue$1][e[kPendingIdx]];if(e[kUrl$2].protocol==="https:"&&e[kServerName]!==t.servername){if(e[kRunning$3]>0)return;e[kServerName]=t.servername,e[kHTTPContext]?.destroy(new InformationalError("servername changed"),()=>{e[kHTTPContext]=null,resume(e)})}if(e[kConnecting])return;if(!e[kHTTPContext]){connect$1(e);return}if(e[kHTTPContext].destroyed||e[kHTTPContext].busy(t))return;!t.aborted&&e[kHTTPContext].write(t)?e[kPendingIdx]++:e[kQueue$1].splice(e[kPendingIdx],1)}}o(_resume,"_resume");var client=Client$3;const kSize$2=2048,kMask=kSize$2-1,Qt=class Qt{constructor(){this.bottom=0,this.top=0,this.list=new Array(kSize$2),this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&kMask)===this.bottom}push(A){this.list[this.top]=A,this.top=this.top+1&kMask}shift(){const A=this.list[this.bottom];return A===void 0?null:(this.list[this.bottom]=void 0,this.bottom=this.bottom+1&kMask,A)}};o(Qt,"FixedCircularBuffer");let FixedCircularBuffer=Qt;var fixedQueue=(me=class{constructor(){this.head=this.tail=new FixedCircularBuffer}isEmpty(){return this.head.isEmpty()}push(A){this.head.isFull()&&(this.head=this.head.next=new FixedCircularBuffer),this.head.push(A)}shift(){const A=this.tail,t=A.shift();return A.isEmpty()&&A.next!==null&&(this.tail=A.next),t}},o(me,"FixedQueue"),me);const{kFree:kFree$1,kConnected:kConnected$3,kPending:kPending$1,kQueued:kQueued$1,kRunning:kRunning$2,kSize:kSize$1}=symbols$4,kPool=Symbol("pool");let PoolStats$1=(Le=class{constructor(A){this[kPool]=A}get connected(){return this[kPool][kConnected$3]}get free(){return this[kPool][kFree$1]}get pending(){return this[kPool][kPending$1]}get queued(){return this[kPool][kQueued$1]}get running(){return this[kPool][kRunning$2]}get size(){return this[kPool][kSize$1]}},o(Le,"PoolStats"),Le);var poolStats=PoolStats$1;const DispatcherBase$2=dispatcherBase,FixedQueue=fixedQueue,{kConnected:kConnected$2,kSize,kRunning:kRunning$1,kPending,kQueued,kBusy,kFree,kUrl:kUrl$1,kClose:kClose$4,kDestroy:kDestroy$2,kDispatch:kDispatch$1}=symbols$4,PoolStats=poolStats,kClients$2=Symbol("clients"),kNeedDrain$1=Symbol("needDrain"),kQueue=Symbol("queue"),kClosedResolve=Symbol("closed resolve"),kOnDrain$1=Symbol("onDrain"),kOnConnect$1=Symbol("onConnect"),kOnDisconnect$1=Symbol("onDisconnect"),kOnConnectionError$1=Symbol("onConnectionError"),kGetDispatcher$1=Symbol("get dispatcher"),kAddClient$1=Symbol("add client"),kRemoveClient=Symbol("remove client"),kStats=Symbol("stats");let PoolBase$1=(Me=class extends DispatcherBase$2{constructor(){super(),this[kQueue]=new FixedQueue,this[kClients$2]=[],this[kQueued]=0;const A=this;this[kOnDrain$1]=o(function(n,r){const s=A[kQueue];let i=!1;for(;!i;){const E=s.shift();if(!E)break;A[kQueued]--,i=!this.dispatch(E.opts,E.handler)}this[kNeedDrain$1]=i,!this[kNeedDrain$1]&&A[kNeedDrain$1]&&(A[kNeedDrain$1]=!1,A.emit("drain",n,[A,...r])),A[kClosedResolve]&&s.isEmpty()&&Promise.all(A[kClients$2].map(E=>E.close())).then(A[kClosedResolve])},"onDrain"),this[kOnConnect$1]=(t,n)=>{A.emit("connect",t,[A,...n])},this[kOnDisconnect$1]=(t,n,r)=>{A.emit("disconnect",t,[A,...n],r)},this[kOnConnectionError$1]=(t,n,r)=>{A.emit("connectionError",t,[A,...n],r)},this[kStats]=new PoolStats(this)}get[kBusy](){return this[kNeedDrain$1]}get[kConnected$2](){return this[kClients$2].filter(A=>A[kConnected$2]).length}get[kFree](){return this[kClients$2].filter(A=>A[kConnected$2]&&!A[kNeedDrain$1]).length}get[kPending](){let A=this[kQueued];for(const{[kPending]:t}of this[kClients$2])A+=t;return A}get[kRunning$1](){let A=0;for(const{[kRunning$1]:t}of this[kClients$2])A+=t;return A}get[kSize](){let A=this[kQueued];for(const{[kSize]:t}of this[kClients$2])A+=t;return A}get stats(){return this[kStats]}async[kClose$4](){return this[kQueue].isEmpty()?Promise.all(this[kClients$2].map(A=>A.close())):new Promise(A=>{this[kClosedResolve]=A})}async[kDestroy$2](A){for(;;){const t=this[kQueue].shift();if(!t)break;t.handler.onError(A)}return Promise.all(this[kClients$2].map(t=>t.destroy(A)))}[kDispatch$1](A,t){const n=this[kGetDispatcher$1]();return n?n.dispatch(A,t)||(n[kNeedDrain$1]=!0,this[kNeedDrain$1]=!this[kGetDispatcher$1]()):(this[kNeedDrain$1]=!0,this[kQueue].push({opts:A,handler:t}),this[kQueued]++),!this[kNeedDrain$1]}[kAddClient$1](A){return A.on("drain",this[kOnDrain$1]).on("connect",this[kOnConnect$1]).on("disconnect",this[kOnDisconnect$1]).on("connectionError",this[kOnConnectionError$1]),this[kClients$2].push(A),this[kNeedDrain$1]&&queueMicrotask(()=>{this[kNeedDrain$1]&&this[kOnDrain$1](A[kUrl$1],[this,A])}),this}[kRemoveClient](A){A.close(()=>{const t=this[kClients$2].indexOf(A);t!==-1&&this[kClients$2].splice(t,1)}),this[kNeedDrain$1]=this[kClients$2].some(t=>!t[kNeedDrain$1]&&t.closed!==!0&&t.destroyed!==!0)}},o(Me,"PoolBase"),Me);var poolBase={PoolBase:PoolBase$1,kClients:kClients$2,kNeedDrain:kNeedDrain$1,kAddClient:kAddClient$1,kRemoveClient,kGetDispatcher:kGetDispatcher$1};const{PoolBase,kClients:kClients$1,kNeedDrain,kAddClient,kGetDispatcher}=poolBase,Client$2=client,{InvalidArgumentError:InvalidArgumentError$d}=errors$1,util$e=util$m,{kUrl,kInterceptors:kInterceptors$2}=symbols$4,buildConnector$1=connect$2,kOptions$1=Symbol("options"),kConnections=Symbol("connections"),kFactory$1=Symbol("factory");function defaultFactory$2(e,A){return new Client$2(e,A)}o(defaultFactory$2,"defaultFactory$2");let Pool$3=(Ye=class extends PoolBase{constructor(A,{connections:t,factory:n=defaultFactory$2,connect:r,connectTimeout:s,tls:i,maxCachedSessions:E,socketPath:Q,autoSelectFamily:C,autoSelectFamilyAttemptTimeout:I,allowH2:a,...f}={}){if(super(),t!=null&&(!Number.isFinite(t)||t<0))throw new InvalidArgumentError$d("invalid connections");if(typeof n!="function")throw new InvalidArgumentError$d("factory must be a function.");if(r!=null&&typeof r!="function"&&typeof r!="object")throw new InvalidArgumentError$d("connect must be a function or an object");typeof r!="function"&&(r=buildConnector$1({...i,maxCachedSessions:E,allowH2:a,socketPath:Q,timeout:s,...util$e.nodeHasAutoSelectFamily&&C?{autoSelectFamily:C,autoSelectFamilyAttemptTimeout:I}:void 0,...r})),this[kInterceptors$2]=f.interceptors?.Pool&&Array.isArray(f.interceptors.Pool)?f.interceptors.Pool:[],this[kConnections]=t||null,this[kUrl]=util$e.parseOrigin(A),this[kOptions$1]={...util$e.deepClone(f),connect:r,allowH2:a},this[kOptions$1].interceptors=f.interceptors?{...f.interceptors}:void 0,this[kFactory$1]=n}[kGetDispatcher](){for(const A of this[kClients$1])if(!A[kNeedDrain])return A;if(!this[kConnections]||this[kClients$1].length{this.emit("drain",s,[this,...i])},this[kOnConnect]=(s,i)=>{this.emit("connect",s,[this,...i])},this[kOnDisconnect]=(s,i,E)=>{this.emit("disconnect",s,[this,...i],E)},this[kOnConnectionError]=(s,i,E)=>{this.emit("connectionError",s,[this,...i],E)}}get[kRunning](){let A=0;for(const t of this[kClients].values())A+=t[kRunning];return A}[kDispatch](A,t){let n;if(A.origin&&(typeof A.origin=="string"||A.origin instanceof URL))n=String(A.origin);else throw new InvalidArgumentError$c("opts.origin must be a non-empty string or URL.");let r=this[kClients].get(n);return r||(r=this[kFactory](A.origin,this[kOptions]).on("drain",this[kOnDrain]).on("connect",this[kOnConnect]).on("disconnect",this[kOnDisconnect]).on("connectionError",this[kOnConnectionError]),this[kClients].set(n,r)),r.dispatch(A,t)}async[kClose$3](){const A=[];for(const t of this[kClients].values())A.push(t.close());this[kClients].clear(),await Promise.all(A)}async[kDestroy$1](A){const t=[];for(const n of this[kClients].values())t.push(n.destroy(A));this[kClients].clear(),await Promise.all(t)}},o(Je,"Agent"),Je);var agent=Agent$3;const{kProxy,kClose:kClose$2,kDestroy,kInterceptors}=symbols$4,{URL:URL$1}=require$$1__default,Agent$2=agent,Pool$1=pool,DispatcherBase=dispatcherBase,{InvalidArgumentError:InvalidArgumentError$b,RequestAbortedError:RequestAbortedError$3,SecureProxyConnectionError}=errors$1,buildConnector=connect$2,kAgent=Symbol("proxy agent"),kClient=Symbol("proxy client"),kProxyHeaders=Symbol("proxy headers"),kRequestTls=Symbol("request tls settings"),kProxyTls=Symbol("proxy tls settings"),kConnectEndpoint=Symbol("connect endpoint function");function defaultProtocolPort(e){return e==="https:"?443:80}o(defaultProtocolPort,"defaultProtocolPort");function defaultFactory(e,A){return new Pool$1(e,A)}o(defaultFactory,"defaultFactory");let ProxyAgent$1=(Ge=class extends DispatcherBase{constructor(t){super();CA(this,Oe);if(!t||typeof t=="object"&&!(t instanceof URL$1)&&!t.uri)throw new InvalidArgumentError$b("Proxy uri is mandatory");const{clientFactory:n=defaultFactory}=t;if(typeof n!="function")throw new InvalidArgumentError$b("Proxy opts.clientFactory must be a function.");const r=kA(this,Oe,Rt).call(this,t),{href:s,origin:i,port:E,protocol:Q,username:C,password:I,hostname:a}=r;if(this[kProxy]={uri:s,protocol:Q},this[kInterceptors]=t.interceptors?.ProxyAgent&&Array.isArray(t.interceptors.ProxyAgent)?t.interceptors.ProxyAgent:[],this[kRequestTls]=t.requestTls,this[kProxyTls]=t.proxyTls,this[kProxyHeaders]=t.headers||{},t.auth&&t.token)throw new InvalidArgumentError$b("opts.auth cannot be used in combination with opts.token");t.auth?this[kProxyHeaders]["proxy-authorization"]=`Basic ${t.auth}`:t.token?this[kProxyHeaders]["proxy-authorization"]=t.token:C&&I&&(this[kProxyHeaders]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(C)}:${decodeURIComponent(I)}`).toString("base64")}`);const f=buildConnector({...t.proxyTls});this[kConnectEndpoint]=buildConnector({...t.requestTls}),this[kClient]=n(r,{connect:f}),this[kAgent]=new Agent$2({...t,connect:async(h,L)=>{let c=h.host;h.port||(c+=`:${defaultProtocolPort(h.protocol)}`);try{const{socket:l,statusCode:S}=await this[kClient].connect({origin:i,port:E,path:c,signal:h.signal,headers:{...this[kProxyHeaders],host:h.host},servername:this[kProxyTls]?.servername||a});if(S!==200&&(l.on("error",()=>{}).destroy(),L(new RequestAbortedError$3(`Proxy response (${S}) !== 200 when HTTP Tunneling`))),h.protocol!=="https:"){L(null,l);return}let k;this[kRequestTls]?k=this[kRequestTls].servername:k=h.servername,this[kConnectEndpoint]({...h,servername:k,httpSocket:l},L)}catch(l){l.code==="ERR_TLS_CERT_ALTNAME_INVALID"?L(new SecureProxyConnectionError(l)):L(l)}}})}dispatch(t,n){const r=buildHeaders(t.headers);if(throwIfProxyAuthIsSent(r),r&&!("host"in r)&&!("Host"in r)){const{host:s}=new URL$1(t.origin);r.host=s}return this[kAgent].dispatch({...t,headers:r},n)}async[kClose$2](){await this[kAgent].close(),await this[kClient].close()}async[kDestroy](){await this[kAgent].destroy(),await this[kClient].destroy()}},Oe=new WeakSet,Rt=o(function(t){return typeof t=="string"?new URL$1(t):t instanceof URL$1?t:new URL$1(t.uri)},"#getUrl"),o(Ge,"ProxyAgent"),Ge);function buildHeaders(e){if(Array.isArray(e)){const A={};for(let t=0;tt.toLowerCase()==="proxy-authorization"))throw new InvalidArgumentError$b("Proxy-Authorization should be sent in ProxyAgent constructor")}o(throwIfProxyAuthIsSent,"throwIfProxyAuthIsSent");var proxyAgent=ProxyAgent$1,api$1={},apiRequest={exports:{}};const assert$6=require$$0__default,{Readable:Readable$2}=Stream__default,{RequestAbortedError:RequestAbortedError$2,NotSupportedError,InvalidArgumentError:InvalidArgumentError$a,AbortError}=errors$1,util$c=util$m,{ReadableStreamFrom}=util$m,kConsume=Symbol("kConsume"),kReading=Symbol("kReading"),kBody=Symbol("kBody"),kAbort=Symbol("kAbort"),kContentType=Symbol("kContentType"),kContentLength$1=Symbol("kContentLength"),noop=o(()=>{},"noop"),Et=class Et extends Readable$2{constructor({resume:A,abort:t,contentType:n="",contentLength:r,highWaterMark:s=64*1024}){super({autoDestroy:!0,read:A,highWaterMark:s}),this._readableState.dataEmitted=!1,this[kAbort]=t,this[kConsume]=null,this[kBody]=null,this[kContentType]=n,this[kContentLength$1]=r,this[kReading]=!1}destroy(A){return!A&&!this._readableState.endEmitted&&(A=new RequestAbortedError$2),A&&this[kAbort](),super.destroy(A)}_destroy(A,t){queueMicrotask(()=>{t(A)})}on(A,...t){return(A==="data"||A==="readable")&&(this[kReading]=!0),super.on(A,...t)}addListener(A,...t){return this.on(A,...t)}off(A,...t){const n=super.off(A,...t);return(A==="data"||A==="readable")&&(this[kReading]=this.listenerCount("data")>0||this.listenerCount("readable")>0),n}removeListener(A,...t){return this.off(A,...t)}push(A){return this[kConsume]&&A!==null?(consumePush(this[kConsume],A),this[kReading]?super.push(A):!0):super.push(A)}async text(){return consume(this,"text")}async json(){return consume(this,"json")}async blob(){return consume(this,"blob")}async arrayBuffer(){return consume(this,"arrayBuffer")}async formData(){throw new NotSupportedError}get bodyUsed(){return util$c.isDisturbed(this)}get body(){return this[kBody]||(this[kBody]=ReadableStreamFrom(this),this[kConsume]&&(this[kBody].getReader(),assert$6(this[kBody].locked))),this[kBody]}async dump(A){let t=Number.isFinite(A?.limit)?A.limit:131072;const n=A?.signal;if(n!=null&&(typeof n!="object"||!("aborted"in n)))throw new InvalidArgumentError$a("signal must be an AbortSignal");return n?.throwIfAborted(),this._readableState.closeEmitted?null:await new Promise((r,s)=>{this[kContentLength$1]>t&&this.destroy(new AbortError);const i=o(()=>{this.destroy(n.reason??new AbortError)},"onAbort");n?.addEventListener("abort",i),this.on("close",function(){n?.removeEventListener("abort",i),n?.aborted?s(n.reason??new AbortError):r(null)}).on("error",noop).on("data",function(E){t-=E.length,t<=0&&this.destroy()}).resume()})}};o(Et,"BodyReadable");let BodyReadable=Et;function isLocked(e){return e[kBody]&&e[kBody].locked===!0||e[kConsume]}o(isLocked,"isLocked");function isUnusable(e){return util$c.isDisturbed(e)||isLocked(e)}o(isUnusable,"isUnusable");async function consume(e,A){return assert$6(!e[kConsume]),new Promise((t,n)=>{if(isUnusable(e)){const r=e._readableState;r.destroyed&&r.closeEmitted===!1?e.on("error",s=>{n(s)}).on("close",()=>{n(new TypeError("unusable"))}):n(r.errored??new TypeError("unusable"))}else queueMicrotask(()=>{e[kConsume]={type:A,stream:e,resolve:t,reject:n,length:0,body:[]},e.on("error",function(r){consumeFinish(this[kConsume],r)}).on("close",function(){this[kConsume].body!==null&&consumeFinish(this[kConsume],new RequestAbortedError$2)}),consumeStart(e[kConsume])})})}o(consume,"consume");function consumeStart(e){if(e.body===null)return;const{_readableState:A}=e.stream;if(A.bufferIndex){const t=A.bufferIndex,n=A.buffer.length;for(let r=t;r2&&t[0]===239&&t[1]===187&&t[2]===191?3:0;return t.utf8Slice(r,n)}o(chunksDecode$1,"chunksDecode$1");function consumeEnd(e){const{type:A,body:t,resolve:n,stream:r,length:s}=e;try{if(A==="text")n(chunksDecode$1(t,s));else if(A==="json")n(JSON.parse(chunksDecode$1(t,s)));else if(A==="arrayBuffer"){const i=new Uint8Array(s);let E=0;for(const Q of t)i.set(Q,E),E+=Q.byteLength;n(i.buffer)}else A==="blob"&&n(new Blob(t,{type:r[kContentType]}));consumeFinish(e)}catch(i){r.destroy(i)}}o(consumeEnd,"consumeEnd");function consumePush(e,A){e.length+=A.length,e.body.push(A)}o(consumePush,"consumePush");function consumeFinish(e,A){e.body!==null&&(A?e.reject(A):e.resolve(),e.type=null,e.stream=null,e.resolve=null,e.reject=null,e.length=0,e.body=null)}o(consumeFinish,"consumeFinish");var readable={Readable:BodyReadable,chunksDecode:chunksDecode$1};const assert$5=require$$0__default,{ResponseStatusCodeError}=errors$1,{chunksDecode}=readable,CHUNK_LIMIT=128*1024;async function getResolveErrorBodyCallback$2({callback:e,body:A,contentType:t,statusCode:n,statusMessage:r,headers:s}){assert$5(A);let i=[],E=0;for await(const a of A)if(i.push(a),E+=a.length,E>CHUNK_LIMIT){i=null;break}const Q=`Response status code ${n}${r?`: ${r}`:""}`;if(n===204||!t||!i){queueMicrotask(()=>e(new ResponseStatusCodeError(Q,n,s)));return}const C=Error.stackTraceLimit;Error.stackTraceLimit=0;let I;try{isContentTypeApplicationJson(t)?I=JSON.parse(chunksDecode(i,E)):isContentTypeText(t)&&(I=chunksDecode(i,E))}catch{}finally{Error.stackTraceLimit=C}queueMicrotask(()=>e(new ResponseStatusCodeError(Q,n,s,I)))}o(getResolveErrorBodyCallback$2,"getResolveErrorBodyCallback$2");const isContentTypeApplicationJson=o(e=>e.length>15&&e[11]==="/"&&e[0]==="a"&&e[1]==="p"&&e[2]==="p"&&e[3]==="l"&&e[4]==="i"&&e[5]==="c"&&e[6]==="a"&&e[7]==="t"&&e[8]==="i"&&e[9]==="o"&&e[10]==="n"&&e[12]==="j"&&e[13]==="s"&&e[14]==="o"&&e[15]==="n","isContentTypeApplicationJson"),isContentTypeText=o(e=>e.length>4&&e[4]==="/"&&e[0]==="t"&&e[1]==="e"&&e[2]==="x"&&e[3]==="t","isContentTypeText");var util$b={getResolveErrorBodyCallback:getResolveErrorBodyCallback$2,isContentTypeApplicationJson,isContentTypeText};const{addAbortListener}=util$m,{RequestAbortedError:RequestAbortedError$1}=errors$1,kListener=Symbol("kListener"),kSignal=Symbol("kSignal");function abort(e){e.abort?e.abort(e[kSignal]?.reason):e.reason=e[kSignal]?.reason??new RequestAbortedError$1,removeSignal$5(e)}o(abort,"abort");function addSignal$5(e,A){if(e.reason=null,e[kSignal]=null,e[kListener]=null,!!A){if(A.aborted){abort(e);return}e[kSignal]=A,e[kListener]=()=>{abort(e)},addAbortListener(e[kSignal],e[kListener])}}o(addSignal$5,"addSignal$5");function removeSignal$5(e){e[kSignal]&&("removeEventListener"in e[kSignal]?e[kSignal].removeEventListener("abort",e[kListener]):e[kSignal].removeListener("abort",e[kListener]),e[kSignal]=null,e[kListener]=null)}o(removeSignal$5,"removeSignal$5");var abortSignal={addSignal:addSignal$5,removeSignal:removeSignal$5};const assert$4=require$$0__default,{Readable:Readable$1}=readable,{InvalidArgumentError:InvalidArgumentError$9}=errors$1,util$a=util$m,{getResolveErrorBodyCallback:getResolveErrorBodyCallback$1}=util$b,{AsyncResource:AsyncResource$4}=require$$5__default$1,{addSignal:addSignal$4,removeSignal:removeSignal$4}=abortSignal,gt=class gt extends AsyncResource$4{constructor(A,t){if(!A||typeof A!="object")throw new InvalidArgumentError$9("invalid opts");const{signal:n,method:r,opaque:s,body:i,onInfo:E,responseHeaders:Q,throwOnError:C,highWaterMark:I}=A;try{if(typeof t!="function")throw new InvalidArgumentError$9("invalid callback");if(I&&(typeof I!="number"||I<0))throw new InvalidArgumentError$9("invalid highWaterMark");if(n&&typeof n.on!="function"&&typeof n.addEventListener!="function")throw new InvalidArgumentError$9("signal must be an EventEmitter or EventTarget");if(r==="CONNECT")throw new InvalidArgumentError$9("invalid method");if(E&&typeof E!="function")throw new InvalidArgumentError$9("invalid onInfo callback");super("UNDICI_REQUEST")}catch(a){throw util$a.isStream(i)&&util$a.destroy(i.on("error",util$a.nop),a),a}this.responseHeaders=Q||null,this.opaque=s||null,this.callback=t,this.res=null,this.abort=null,this.body=i,this.trailers={},this.context=null,this.onInfo=E||null,this.throwOnError=C,this.highWaterMark=I,util$a.isStream(i)&&i.on("error",a=>{this.onError(a)}),addSignal$4(this,n)}onConnect(A,t){if(this.reason){A(this.reason);return}assert$4(this.callback),this.abort=A,this.context=t}onHeaders(A,t,n,r){const{callback:s,opaque:i,abort:E,context:Q,responseHeaders:C,highWaterMark:I}=this,a=C==="raw"?util$a.parseRawHeaders(t):util$a.parseHeaders(t);if(A<200){this.onInfo&&this.onInfo({statusCode:A,headers:a});return}const f=C==="raw"?util$a.parseHeaders(t):a,h=f["content-type"],L=f["content-length"],c=new Readable$1({resume:n,abort:E,contentType:h,contentLength:L,highWaterMark:I});this.callback=null,this.res=c,s!==null&&(this.throwOnError&&A>=400?this.runInAsyncScope(getResolveErrorBodyCallback$1,null,{callback:s,body:c,contentType:h,statusCode:A,statusMessage:r,headers:a}):this.runInAsyncScope(s,null,null,{statusCode:A,headers:a,trailers:this.trailers,opaque:i,body:c,context:Q}))}onData(A){const{res:t}=this;return t.push(A)}onComplete(A){const{res:t}=this;removeSignal$4(this),util$a.parseHeaders(A,this.trailers),t.push(null)}onError(A){const{res:t,callback:n,body:r,opaque:s}=this;removeSignal$4(this),n&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(n,null,A,{opaque:s})})),t&&(this.res=null,queueMicrotask(()=>{util$a.destroy(t,A)})),r&&(this.body=null,util$a.destroy(r,A))}};o(gt,"RequestHandler");let RequestHandler=gt;function request$1(e,A){if(A===void 0)return new Promise((t,n)=>{request$1.call(this,e,(r,s)=>r?n(r):t(s))});try{this.dispatch(e,new RequestHandler(e,A))}catch(t){if(typeof A!="function")throw t;const n=e?.opaque;queueMicrotask(()=>A(t,{opaque:n}))}}o(request$1,"request$1"),apiRequest.exports=request$1,apiRequest.exports.RequestHandler=RequestHandler;var apiRequestExports=apiRequest.exports;const assert$3=require$$0__default,{finished,PassThrough:PassThrough$1}=Stream__default,{InvalidArgumentError:InvalidArgumentError$8,InvalidReturnValueError:InvalidReturnValueError$1}=errors$1,util$9=util$m,{getResolveErrorBodyCallback}=util$b,{AsyncResource:AsyncResource$3}=require$$5__default$1,{addSignal:addSignal$3,removeSignal:removeSignal$3}=abortSignal,Bt=class Bt extends AsyncResource$3{constructor(A,t,n){if(!A||typeof A!="object")throw new InvalidArgumentError$8("invalid opts");const{signal:r,method:s,opaque:i,body:E,onInfo:Q,responseHeaders:C,throwOnError:I}=A;try{if(typeof n!="function")throw new InvalidArgumentError$8("invalid callback");if(typeof t!="function")throw new InvalidArgumentError$8("invalid factory");if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new InvalidArgumentError$8("signal must be an EventEmitter or EventTarget");if(s==="CONNECT")throw new InvalidArgumentError$8("invalid method");if(Q&&typeof Q!="function")throw new InvalidArgumentError$8("invalid onInfo callback");super("UNDICI_STREAM")}catch(a){throw util$9.isStream(E)&&util$9.destroy(E.on("error",util$9.nop),a),a}this.responseHeaders=C||null,this.opaque=i||null,this.factory=t,this.callback=n,this.res=null,this.abort=null,this.context=null,this.trailers=null,this.body=E,this.onInfo=Q||null,this.throwOnError=I||!1,util$9.isStream(E)&&E.on("error",a=>{this.onError(a)}),addSignal$3(this,r)}onConnect(A,t){if(this.reason){A(this.reason);return}assert$3(this.callback),this.abort=A,this.context=t}onHeaders(A,t,n,r){const{factory:s,opaque:i,context:E,callback:Q,responseHeaders:C}=this,I=C==="raw"?util$9.parseRawHeaders(t):util$9.parseHeaders(t);if(A<200){this.onInfo&&this.onInfo({statusCode:A,headers:I});return}this.factory=null;let a;if(this.throwOnError&&A>=400){const L=(C==="raw"?util$9.parseHeaders(t):I)["content-type"];a=new PassThrough$1,this.callback=null,this.runInAsyncScope(getResolveErrorBodyCallback,null,{callback:Q,body:a,contentType:L,statusCode:A,statusMessage:r,headers:I})}else{if(s===null)return;if(a=this.runInAsyncScope(s,null,{statusCode:A,headers:I,opaque:i,context:E}),!a||typeof a.write!="function"||typeof a.end!="function"||typeof a.on!="function")throw new InvalidReturnValueError$1("expected Writable");finished(a,{readable:!1},h=>{const{callback:L,res:c,opaque:l,trailers:S,abort:k}=this;this.res=null,(h||!c.readable)&&util$9.destroy(c,h),this.callback=null,this.runInAsyncScope(L,null,h||null,{opaque:l,trailers:S}),h&&k()})}return a.on("drain",n),this.res=a,(a.writableNeedDrain!==void 0?a.writableNeedDrain:a._writableState?.needDrain)!==!0}onData(A){const{res:t}=this;return t?t.write(A):!0}onComplete(A){const{res:t}=this;removeSignal$3(this),t&&(this.trailers=util$9.parseHeaders(A),t.end())}onError(A){const{res:t,callback:n,opaque:r,body:s}=this;removeSignal$3(this),this.factory=null,t?(this.res=null,util$9.destroy(t,A)):n&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(n,null,A,{opaque:r})})),s&&(this.body=null,util$9.destroy(s,A))}};o(Bt,"StreamHandler");let StreamHandler=Bt;function stream(e,A,t){if(t===void 0)return new Promise((n,r)=>{stream.call(this,e,A,(s,i)=>s?r(s):n(i))});try{this.dispatch(e,new StreamHandler(e,A,t))}catch(n){if(typeof t!="function")throw n;const r=e?.opaque;queueMicrotask(()=>t(n,{opaque:r}))}}o(stream,"stream");var apiStream=stream;const{Readable,Duplex,PassThrough}=Stream__default,{InvalidArgumentError:InvalidArgumentError$7,InvalidReturnValueError,RequestAbortedError}=errors$1,util$8=util$m,{AsyncResource:AsyncResource$2}=require$$5__default$1,{addSignal:addSignal$2,removeSignal:removeSignal$2}=abortSignal,assert$2=require$$0__default,kResume=Symbol("resume"),Ct=class Ct extends Readable{constructor(){super({autoDestroy:!0}),this[kResume]=null}_read(){const{[kResume]:A}=this;A&&(this[kResume]=null,A())}_destroy(A,t){this._read(),t(A)}};o(Ct,"PipelineRequest");let PipelineRequest=Ct;const It=class It extends Readable{constructor(A){super({autoDestroy:!0}),this[kResume]=A}_read(){this[kResume]()}_destroy(A,t){!A&&!this._readableState.endEmitted&&(A=new RequestAbortedError),t(A)}};o(It,"PipelineResponse");let PipelineResponse=It;const at=class at extends AsyncResource$2{constructor(A,t){if(!A||typeof A!="object")throw new InvalidArgumentError$7("invalid opts");if(typeof t!="function")throw new InvalidArgumentError$7("invalid handler");const{signal:n,method:r,opaque:s,onInfo:i,responseHeaders:E}=A;if(n&&typeof n.on!="function"&&typeof n.addEventListener!="function")throw new InvalidArgumentError$7("signal must be an EventEmitter or EventTarget");if(r==="CONNECT")throw new InvalidArgumentError$7("invalid method");if(i&&typeof i!="function")throw new InvalidArgumentError$7("invalid onInfo callback");super("UNDICI_PIPELINE"),this.opaque=s||null,this.responseHeaders=E||null,this.handler=t,this.abort=null,this.context=null,this.onInfo=i||null,this.req=new PipelineRequest().on("error",util$8.nop),this.ret=new Duplex({readableObjectMode:A.objectMode,autoDestroy:!0,read:()=>{const{body:Q}=this;Q?.resume&&Q.resume()},write:(Q,C,I)=>{const{req:a}=this;a.push(Q,C)||a._readableState.destroyed?I():a[kResume]=I},destroy:(Q,C)=>{const{body:I,req:a,res:f,ret:h,abort:L}=this;!Q&&!h._readableState.endEmitted&&(Q=new RequestAbortedError),L&&Q&&L(),util$8.destroy(I,Q),util$8.destroy(a,Q),util$8.destroy(f,Q),removeSignal$2(this),C(Q)}}).on("prefinish",()=>{const{req:Q}=this;Q.push(null)}),this.res=null,addSignal$2(this,n)}onConnect(A,t){const{ret:n,res:r}=this;if(this.reason){A(this.reason);return}assert$2(!r,"pipeline cannot be retried"),assert$2(!n.destroyed),this.abort=A,this.context=t}onHeaders(A,t,n){const{opaque:r,handler:s,context:i}=this;if(A<200){if(this.onInfo){const Q=this.responseHeaders==="raw"?util$8.parseRawHeaders(t):util$8.parseHeaders(t);this.onInfo({statusCode:A,headers:Q})}return}this.res=new PipelineResponse(n);let E;try{this.handler=null;const Q=this.responseHeaders==="raw"?util$8.parseRawHeaders(t):util$8.parseHeaders(t);E=this.runInAsyncScope(s,null,{statusCode:A,headers:Q,opaque:r,body:this.res,context:i})}catch(Q){throw this.res.on("error",util$8.nop),Q}if(!E||typeof E.on!="function")throw new InvalidReturnValueError("expected Readable");E.on("data",Q=>{const{ret:C,body:I}=this;!C.push(Q)&&I.pause&&I.pause()}).on("error",Q=>{const{ret:C}=this;util$8.destroy(C,Q)}).on("end",()=>{const{ret:Q}=this;Q.push(null)}).on("close",()=>{const{ret:Q}=this;Q._readableState.ended||util$8.destroy(Q,new RequestAbortedError)}),this.body=E}onData(A){const{res:t}=this;return t.push(A)}onComplete(A){const{res:t}=this;t.push(null)}onError(A){const{ret:t}=this;this.handler=null,util$8.destroy(t,A)}};o(at,"PipelineHandler");let PipelineHandler=at;function pipeline(e,A){try{const t=new PipelineHandler(e,A);return this.dispatch({...e,body:t.req},t),t.ret}catch(t){return new PassThrough().destroy(t)}}o(pipeline,"pipeline");var apiPipeline=pipeline;const{InvalidArgumentError:InvalidArgumentError$6,SocketError:SocketError$1}=errors$1,{AsyncResource:AsyncResource$1}=require$$5__default$1,util$7=util$m,{addSignal:addSignal$1,removeSignal:removeSignal$1}=abortSignal,assert$1=require$$0__default,ct=class ct extends AsyncResource$1{constructor(A,t){if(!A||typeof A!="object")throw new InvalidArgumentError$6("invalid opts");if(typeof t!="function")throw new InvalidArgumentError$6("invalid callback");const{signal:n,opaque:r,responseHeaders:s}=A;if(n&&typeof n.on!="function"&&typeof n.addEventListener!="function")throw new InvalidArgumentError$6("signal must be an EventEmitter or EventTarget");super("UNDICI_UPGRADE"),this.responseHeaders=s||null,this.opaque=r||null,this.callback=t,this.abort=null,this.context=null,addSignal$1(this,n)}onConnect(A,t){if(this.reason){A(this.reason);return}assert$1(this.callback),this.abort=A,this.context=null}onHeaders(){throw new SocketError$1("bad upgrade",null)}onUpgrade(A,t,n){const{callback:r,opaque:s,context:i}=this;assert$1.strictEqual(A,101),removeSignal$1(this),this.callback=null;const E=this.responseHeaders==="raw"?util$7.parseRawHeaders(t):util$7.parseHeaders(t);this.runInAsyncScope(r,null,null,{headers:E,socket:n,opaque:s,context:i})}onError(A){const{callback:t,opaque:n}=this;removeSignal$1(this),t&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(t,null,A,{opaque:n})}))}};o(ct,"UpgradeHandler");let UpgradeHandler=ct;function upgrade(e,A){if(A===void 0)return new Promise((t,n)=>{upgrade.call(this,e,(r,s)=>r?n(r):t(s))});try{const t=new UpgradeHandler(e,A);this.dispatch({...e,method:e.method||"GET",upgrade:e.protocol||"Websocket"},t)}catch(t){if(typeof A!="function")throw t;const n=e?.opaque;queueMicrotask(()=>A(t,{opaque:n}))}}o(upgrade,"upgrade");var apiUpgrade=upgrade;const assert=require$$0__default,{AsyncResource}=require$$5__default$1,{InvalidArgumentError:InvalidArgumentError$5,SocketError}=errors$1,util$6=util$m,{addSignal,removeSignal}=abortSignal,ht=class ht extends AsyncResource{constructor(A,t){if(!A||typeof A!="object")throw new InvalidArgumentError$5("invalid opts");if(typeof t!="function")throw new InvalidArgumentError$5("invalid callback");const{signal:n,opaque:r,responseHeaders:s}=A;if(n&&typeof n.on!="function"&&typeof n.addEventListener!="function")throw new InvalidArgumentError$5("signal must be an EventEmitter or EventTarget");super("UNDICI_CONNECT"),this.opaque=r||null,this.responseHeaders=s||null,this.callback=t,this.abort=null,addSignal(this,n)}onConnect(A,t){if(this.reason){A(this.reason);return}assert(this.callback),this.abort=A,this.context=t}onHeaders(){throw new SocketError("bad connect",null)}onUpgrade(A,t,n){const{callback:r,opaque:s,context:i}=this;removeSignal(this),this.callback=null;let E=t;E!=null&&(E=this.responseHeaders==="raw"?util$6.parseRawHeaders(t):util$6.parseHeaders(t)),this.runInAsyncScope(r,null,null,{statusCode:A,headers:E,socket:n,opaque:s,context:i})}onError(A){const{callback:t,opaque:n}=this;removeSignal(this),t&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(t,null,A,{opaque:n})}))}};o(ht,"ConnectHandler");let ConnectHandler=ht;function connect(e,A){if(A===void 0)return new Promise((t,n)=>{connect.call(this,e,(r,s)=>r?n(r):t(s))});try{const t=new ConnectHandler(e,A);this.dispatch({...e,method:"CONNECT"},t)}catch(t){if(typeof A!="function")throw t;const n=e?.opaque;queueMicrotask(()=>A(t,{opaque:n}))}}o(connect,"connect");var apiConnect=connect;api$1.request=apiRequestExports,api$1.stream=apiStream,api$1.pipeline=apiPipeline,api$1.upgrade=apiUpgrade,api$1.connect=apiConnect;const{UndiciError}=errors$1;let MockNotMatchedError$1=(Ae=class extends UndiciError{constructor(A){super(A),Error.captureStackTrace(this,Ae),this.name="MockNotMatchedError",this.message=A||"The request does not match any registered mock dispatches",this.code="UND_MOCK_ERR_MOCK_NOT_MATCHED"}},o(Ae,"MockNotMatchedError"),Ae);var mockErrors={MockNotMatchedError:MockNotMatchedError$1},mockSymbols={kAgent:Symbol("agent"),kOptions:Symbol("options"),kFactory:Symbol("factory"),kDispatches:Symbol("dispatches"),kDispatchKey:Symbol("dispatch key"),kDefaultHeaders:Symbol("default headers"),kDefaultTrailers:Symbol("default trailers"),kContentLength:Symbol("content length"),kMockAgent:Symbol("mock agent"),kMockAgentSet:Symbol("mock agent set"),kMockAgentGet:Symbol("mock agent get"),kMockDispatch:Symbol("mock dispatch"),kClose:Symbol("close"),kOriginalClose:Symbol("original agent close"),kOrigin:Symbol("origin"),kIsMockActive:Symbol("is mock active"),kNetConnect:Symbol("net connect"),kGetNetConnect:Symbol("get net connect"),kConnected:Symbol("connected")};const{MockNotMatchedError}=mockErrors,{kDispatches:kDispatches$3,kMockAgent:kMockAgent$2,kOriginalDispatch:kOriginalDispatch$2,kOrigin:kOrigin$2,kGetNetConnect}=mockSymbols,{buildURL:buildURL$1}=util$m,{STATUS_CODES}=http__default,{types:{isPromise}}=require$$0__default$1;function matchValue(e,A){return typeof e=="string"?e===A:e instanceof RegExp?e.test(A):typeof e=="function"?e(A)===!0:!1}o(matchValue,"matchValue");function lowerCaseEntries(e){return Object.fromEntries(Object.entries(e).map(([A,t])=>[A.toLocaleLowerCase(),t]))}o(lowerCaseEntries,"lowerCaseEntries");function getHeaderByName(e,A){if(Array.isArray(e)){for(let t=0;t"u")return!0;if(typeof A!="object"||typeof e.headers!="object")return!1;for(const[t,n]of Object.entries(e.headers)){const r=getHeaderByName(A,t);if(!matchValue(n,r))return!1}return!0}o(matchHeaders,"matchHeaders");function safeUrl(e){if(typeof e!="string")return e;const A=e.split("?");if(A.length!==2)return e;const t=new URLSearchParams(A.pop());return t.sort(),[...A,t.toString()].join("?")}o(safeUrl,"safeUrl");function matchKey(e,{path:A,method:t,body:n,headers:r}){const s=matchValue(e.path,A),i=matchValue(e.method,t),E=typeof e.body<"u"?matchValue(e.body,n):!0,Q=matchHeaders(e,r);return s&&i&&E&&Q}o(matchKey,"matchKey");function getResponseData$1(e){return Buffer.isBuffer(e)?e:typeof e=="object"?JSON.stringify(e):e.toString()}o(getResponseData$1,"getResponseData$1");function getMockDispatch(e,A){const t=A.query?buildURL$1(A.path,A.query):A.path,n=typeof t=="string"?safeUrl(t):t;let r=e.filter(({consumed:s})=>!s).filter(({path:s})=>matchValue(safeUrl(s),n));if(r.length===0)throw new MockNotMatchedError(`Mock dispatch not matched for path '${n}'`);if(r=r.filter(({method:s})=>matchValue(s,A.method)),r.length===0)throw new MockNotMatchedError(`Mock dispatch not matched for method '${A.method}' on path '${n}'`);if(r=r.filter(({body:s})=>typeof s<"u"?matchValue(s,A.body):!0),r.length===0)throw new MockNotMatchedError(`Mock dispatch not matched for body '${A.body}' on path '${n}'`);if(r=r.filter(s=>matchHeaders(s,A.headers)),r.length===0){const s=typeof A.headers=="object"?JSON.stringify(A.headers):A.headers;throw new MockNotMatchedError(`Mock dispatch not matched for headers '${s}' on path '${n}'`)}return r[0]}o(getMockDispatch,"getMockDispatch");function addMockDispatch$1(e,A,t){const n={timesInvoked:0,times:1,persist:!1,consumed:!1},r=typeof t=="function"?{callback:t}:{...t},s={...n,...A,pending:!0,data:{error:null,...r}};return e.push(s),s}o(addMockDispatch$1,"addMockDispatch$1");function deleteMockDispatch(e,A){const t=e.findIndex(n=>n.consumed?matchKey(n,A):!1);t!==-1&&e.splice(t,1)}o(deleteMockDispatch,"deleteMockDispatch");function buildKey$1(e){const{path:A,method:t,body:n,headers:r,query:s}=e;return{path:A,method:t,body:n,headers:r,query:s}}o(buildKey$1,"buildKey$1");function generateKeyValues(e){const A=Object.keys(e),t=[];for(let n=0;n=f,n.pending=a0?setTimeout(()=>{h(this[kDispatches$3])},C):h(this[kDispatches$3]);function h(c,l=s){const S=Array.isArray(e.headers)?buildHeadersFromArray(e.headers):e.headers,k=typeof l=="function"?l({...e,headers:S}):l;if(isPromise(k)){k.then(B=>h(c,B));return}const w=getResponseData$1(k),U=generateKeyValues(i),M=generateKeyValues(E);A.onConnect?.(B=>A.onError(B),null),A.onHeaders?.(r,U,L,getStatusText(r)),A.onData?.(Buffer.from(w)),A.onComplete?.(M),deleteMockDispatch(c,t)}o(h,"handleReply");function L(){}return o(L,"resume"),!0}o(mockDispatch,"mockDispatch");function buildMockDispatch$2(){const e=this[kMockAgent$2],A=this[kOrigin$2],t=this[kOriginalDispatch$2];return o(function(r,s){if(e.isMockActive)try{mockDispatch.call(this,r,s)}catch(i){if(i instanceof MockNotMatchedError){const E=e[kGetNetConnect]();if(E===!1)throw new MockNotMatchedError(`${i.message}: subsequent request to origin ${A} was not allowed (net.connect disabled)`);if(checkNetConnect(E,A))t.call(this,r,s);else throw new MockNotMatchedError(`${i.message}: subsequent request to origin ${A} was not allowed (net.connect is not enabled for this origin)`)}else throw i}else t.call(this,r,s)},"dispatch")}o(buildMockDispatch$2,"buildMockDispatch$2");function checkNetConnect(e,A){const t=new URL(A);return e===!0?!0:!!(Array.isArray(e)&&e.some(n=>matchValue(n,t.host)))}o(checkNetConnect,"checkNetConnect");function buildMockOptions(e){if(e){const{agent:A,...t}=e;return t}}o(buildMockOptions,"buildMockOptions");var mockUtils={getResponseData:getResponseData$1,getMockDispatch,addMockDispatch:addMockDispatch$1,deleteMockDispatch,buildKey:buildKey$1,generateKeyValues,matchValue,getResponse,getStatusText,mockDispatch,buildMockDispatch:buildMockDispatch$2,checkNetConnect,buildMockOptions,getHeaderByName,buildHeadersFromArray},mockInterceptor={};const{getResponseData,buildKey,addMockDispatch}=mockUtils,{kDispatches:kDispatches$2,kDispatchKey,kDefaultHeaders,kDefaultTrailers,kContentLength,kMockDispatch}=mockSymbols,{InvalidArgumentError:InvalidArgumentError$4}=errors$1,{buildURL}=util$m,lt=class lt{constructor(A){this[kMockDispatch]=A}delay(A){if(typeof A!="number"||!Number.isInteger(A)||A<=0)throw new InvalidArgumentError$4("waitInMs must be a valid integer > 0");return this[kMockDispatch].delay=A,this}persist(){return this[kMockDispatch].persist=!0,this}times(A){if(typeof A!="number"||!Number.isInteger(A)||A<=0)throw new InvalidArgumentError$4("repeatTimes must be a valid integer > 0");return this[kMockDispatch].times=A,this}};o(lt,"MockScope");let MockScope=lt,MockInterceptor$2=(Te=class{constructor(A,t){if(typeof A!="object")throw new InvalidArgumentError$4("opts must be an object");if(typeof A.path>"u")throw new InvalidArgumentError$4("opts.path must be defined");if(typeof A.method>"u"&&(A.method="GET"),typeof A.path=="string")if(A.query)A.path=buildURL(A.path,A.query);else{const n=new URL(A.path,"data://");A.path=n.pathname+n.search}typeof A.method=="string"&&(A.method=A.method.toUpperCase()),this[kDispatchKey]=buildKey(A),this[kDispatches$2]=t,this[kDefaultHeaders]={},this[kDefaultTrailers]={},this[kContentLength]=!1}createMockScopeDispatchData({statusCode:A,data:t,responseOptions:n}){const r=getResponseData(t),s=this[kContentLength]?{"content-length":r.length}:{},i={...this[kDefaultHeaders],...s,...n.headers},E={...this[kDefaultTrailers],...n.trailers};return{statusCode:A,data:t,headers:i,trailers:E}}validateReplyParameters(A){if(typeof A.statusCode>"u")throw new InvalidArgumentError$4("statusCode must be defined");if(typeof A.responseOptions!="object"||A.responseOptions===null)throw new InvalidArgumentError$4("responseOptions must be an object")}reply(A){if(typeof A=="function"){const s=o(E=>{const Q=A(E);if(typeof Q!="object"||Q===null)throw new InvalidArgumentError$4("reply options callback must return an object");const C={data:"",responseOptions:{},...Q};return this.validateReplyParameters(C),{...this.createMockScopeDispatchData(C)}},"wrappedDefaultsCallback"),i=addMockDispatch(this[kDispatches$2],this[kDispatchKey],s);return new MockScope(i)}const t={statusCode:A,data:arguments[1]===void 0?"":arguments[1],responseOptions:arguments[2]===void 0?{}:arguments[2]};this.validateReplyParameters(t);const n=this.createMockScopeDispatchData(t),r=addMockDispatch(this[kDispatches$2],this[kDispatchKey],n);return new MockScope(r)}replyWithError(A){if(typeof A>"u")throw new InvalidArgumentError$4("error must be defined");const t=addMockDispatch(this[kDispatches$2],this[kDispatchKey],{error:A});return new MockScope(t)}defaultReplyHeaders(A){if(typeof A>"u")throw new InvalidArgumentError$4("headers must be defined");return this[kDefaultHeaders]=A,this}defaultReplyTrailers(A){if(typeof A>"u")throw new InvalidArgumentError$4("trailers must be defined");return this[kDefaultTrailers]=A,this}replyContentLength(){return this[kContentLength]=!0,this}},o(Te,"MockInterceptor"),Te);mockInterceptor.MockInterceptor=MockInterceptor$2,mockInterceptor.MockScope=MockScope;const{promisify:promisify$1}=require$$0__default$1,Client=client,{buildMockDispatch:buildMockDispatch$1}=mockUtils,{kDispatches:kDispatches$1,kMockAgent:kMockAgent$1,kClose:kClose$1,kOriginalClose:kOriginalClose$1,kOrigin:kOrigin$1,kOriginalDispatch:kOriginalDispatch$1,kConnected:kConnected$1}=mockSymbols,{MockInterceptor:MockInterceptor$1}=mockInterceptor,Symbols$1=symbols$4,{InvalidArgumentError:InvalidArgumentError$3}=errors$1,ut=class ut extends Client{constructor(A,t){if(super(A,t),!t||!t.agent||typeof t.agent.dispatch!="function")throw new InvalidArgumentError$3("Argument opts.agent must implement Agent");this[kMockAgent$1]=t.agent,this[kOrigin$1]=A,this[kDispatches$1]=[],this[kConnected$1]=1,this[kOriginalDispatch$1]=this.dispatch,this[kOriginalClose$1]=this.close.bind(this),this.dispatch=buildMockDispatch$1.call(this),this.close=this[kClose$1]}get[Symbols$1.kConnected](){return this[kConnected$1]}intercept(A){return new MockInterceptor$1(A,this[kDispatches$1])}async[kClose$1](){await promisify$1(this[kOriginalClose$1])(),this[kConnected$1]=0,this[kMockAgent$1][Symbols$1.kClients].delete(this[kOrigin$1])}};o(ut,"MockClient");let MockClient=ut;const{promisify}=require$$0__default$1,Pool=pool,{buildMockDispatch}=mockUtils,{kDispatches,kMockAgent,kClose,kOriginalClose,kOrigin,kOriginalDispatch,kConnected}=mockSymbols,{MockInterceptor}=mockInterceptor,Symbols=symbols$4,{InvalidArgumentError:InvalidArgumentError$2}=errors$1,dt=class dt extends Pool{constructor(A,t){if(super(A,t),!t||!t.agent||typeof t.agent.dispatch!="function")throw new InvalidArgumentError$2("Argument opts.agent must implement Agent");this[kMockAgent]=t.agent,this[kOrigin]=A,this[kDispatches]=[],this[kConnected]=1,this[kOriginalDispatch]=this.dispatch,this[kOriginalClose]=this.close.bind(this),this.dispatch=buildMockDispatch.call(this),this.close=this[kClose]}get[Symbols.kConnected](){return this[kConnected]}intercept(A){return new MockInterceptor(A,this[kDispatches])}async[kClose](){await promisify(this[kOriginalClose])(),this[kConnected]=0,this[kMockAgent][Symbols.kClients].delete(this[kOrigin])}};o(dt,"MockPool");let MockPool=dt;process.versions.icu,process.versions.icu;const globalDispatcher=Symbol.for("undici.globalDispatcher.1"),{InvalidArgumentError:InvalidArgumentError$1}=errors$1,Agent$1=agent;getGlobalDispatcher$1()===void 0&&setGlobalDispatcher$1(new Agent$1);function setGlobalDispatcher$1(e){if(!e||typeof e.dispatch!="function")throw new InvalidArgumentError$1("Argument agent must implement Agent");Object.defineProperty(globalThis,globalDispatcher,{value:e,writable:!0,enumerable:!1,configurable:!1})}o(setGlobalDispatcher$1,"setGlobalDispatcher$1");function getGlobalDispatcher$1(){return globalThis[globalDispatcher]}o(getGlobalDispatcher$1,"getGlobalDispatcher$1");var global={setGlobalDispatcher:setGlobalDispatcher$1,getGlobalDispatcher:getGlobalDispatcher$1},headers,hasRequiredHeaders;function requireHeaders(){if(hasRequiredHeaders)return headers;hasRequiredHeaders=1;const{kHeadersList:e,kConstruct:A}=symbols$4,{kGuard:t}=requireSymbols$3(),{kEnumerableProperty:n}=util$m,{iteratorMixin:r,isValidHeaderName:s,isValidHeaderValue:i}=requireUtil$5(),{webidl:E}=requireWebidl(),Q=require$$0__default,C=require$$0__default$1,I=Symbol("headers map"),a=Symbol("headers map sorted");function f(M){return M===10||M===13||M===9||M===32}o(f,"isHTTPWhiteSpaceCharCode");function h(M){let B=0,D=M.length;for(;D>B&&f(M.charCodeAt(D-1));)--D;for(;D>B&&f(M.charCodeAt(B));)++B;return B===0&&D===M.length?M:M.substring(B,D)}o(h,"headerValueNormalize");function L(M,B){if(Array.isArray(B))for(let D=0;D>","record"]})}o(L,"fill");function c(M,B,D){if(D=h(D),s(B)){if(!i(D))throw E.errors.invalidArgument({prefix:"Headers.append",value:D,type:"header value"})}else throw E.errors.invalidArgument({prefix:"Headers.append",value:B,type:"header name"});if(M[t]==="immutable")throw new TypeError("immutable");return M[t],M[e].append(B,D,!1)}o(c,"appendHeader");function l(M,B){return M[0]>1),D[b][0]<=m[0]?u=b+1:N=b;if(d!==b){for(F=d;F>u;)D[F]=D[--F];D[u]=m}}if(!G.next().done)throw new TypeError("Unreachable");return D}else{let G=0;for(const{0:g,1:{value:d}}of this[I])D[G++]=[g,d],Q(d!==null);return D.sort(l)}}};o(w,"HeadersList");let S=w;const U=class U{constructor(B=void 0){B!==A&&(this[e]=new S,this[t]="none",B!==void 0&&(B=E.converters.HeadersInit(B),L(this,B)))}append(B,D){return E.brandCheck(this,U),E.argumentLengthCheck(arguments,2,{header:"Headers.append"}),B=E.converters.ByteString(B),D=E.converters.ByteString(D),c(this,B,D)}delete(B){if(E.brandCheck(this,U),E.argumentLengthCheck(arguments,1,{header:"Headers.delete"}),B=E.converters.ByteString(B),!s(B))throw E.errors.invalidArgument({prefix:"Headers.delete",value:B,type:"header name"});if(this[t]==="immutable")throw new TypeError("immutable");this[t],this[e].contains(B,!1)&&this[e].delete(B,!1)}get(B){if(E.brandCheck(this,U),E.argumentLengthCheck(arguments,1,{header:"Headers.get"}),B=E.converters.ByteString(B),!s(B))throw E.errors.invalidArgument({prefix:"Headers.get",value:B,type:"header name"});return this[e].get(B,!1)}has(B){if(E.brandCheck(this,U),E.argumentLengthCheck(arguments,1,{header:"Headers.has"}),B=E.converters.ByteString(B),!s(B))throw E.errors.invalidArgument({prefix:"Headers.has",value:B,type:"header name"});return this[e].contains(B,!1)}set(B,D){if(E.brandCheck(this,U),E.argumentLengthCheck(arguments,2,{header:"Headers.set"}),B=E.converters.ByteString(B),D=E.converters.ByteString(D),D=h(D),s(B)){if(!i(D))throw E.errors.invalidArgument({prefix:"Headers.set",value:D,type:"header value"})}else throw E.errors.invalidArgument({prefix:"Headers.set",value:B,type:"header name"});if(this[t]==="immutable")throw new TypeError("immutable");this[t],this[e].set(B,D,!1)}getSetCookie(){E.brandCheck(this,U);const B=this[e].cookies;return B?[...B]:[]}get[a](){if(this[e][a])return this[e][a];const B=[],D=this[e].toSortedArray(),G=this[e].cookies;if(G===null||G.length===1)return this[e][a]=D;for(let g=0;g>"](M,B.bind(M)):E.converters["record"](M)}throw E.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence>","record"]})},headers={fill:L,compareHeaderName:l,Headers:k,HeadersList:S},headers}o(requireHeaders,"requireHeaders");var response,hasRequiredResponse;function requireResponse(){if(hasRequiredResponse)return response;hasRequiredResponse=1;const{Headers:e,HeadersList:A,fill:t}=requireHeaders(),{extractBody:n,cloneBody:r,mixinBody:s}=requireBody(),i=util$m,E=require$$0__default$1,{kEnumerableProperty:Q}=i,{isValidReasonPhrase:C,isCancelled:I,isAborted:a,isBlobLike:f,serializeJavascriptValueToJSONString:h,isErrorLike:L,isomorphicEncode:c}=requireUtil$5(),{redirectStatusSet:l,nullBodyStatus:S}=requireConstants$2(),{kState:k,kHeaders:w,kGuard:U,kRealm:M}=requireSymbols$3(),{webidl:B}=requireWebidl(),{FormData:D}=requireFormdata(),{getGlobalOrigin:G}=requireGlobal(),{URLSerializer:g}=requireDataUrl(),{kHeadersList:d,kConstruct:F}=symbols$4,N=require$$0__default,{types:u}=require$$0__default$1,b=new TextEncoder("utf-8"),$=class ${static error(){const q={settingsObject:{}};return X(Z(),"immutable",q)}static json(q,z={}){B.argumentLengthCheck(arguments,1,{header:"Response.json"}),z!==null&&(z=B.converters.ResponseInit(z));const rA=b.encode(h(q)),iA=n(rA),gA={settingsObject:{}},BA=X(v({}),"response",gA);return aA(BA,z,{body:iA[0],type:"application/json"}),BA}static redirect(q,z=302){const rA={settingsObject:{}};B.argumentLengthCheck(arguments,1,{header:"Response.redirect"}),q=B.converters.USVString(q),z=B.converters["unsigned short"](z);let iA;try{iA=new URL(q,G())}catch(sA){throw new TypeError(`Failed to parse URL from ${q}`,{cause:sA})}if(!l.has(z))throw new RangeError(`Invalid status code ${z}`);const gA=X(v({}),"immutable",rA);gA[k].status=z;const BA=c(g(iA));return gA[k].headersList.append("location",BA,!0),gA}constructor(q=null,z={}){if(q===F)return;q!==null&&(q=B.converters.BodyInit(q)),z=B.converters.ResponseInit(z),this[M]={settingsObject:{}},this[k]=v({}),this[w]=new e(F),this[w][U]="response",this[w][d]=this[k].headersList,this[w][M]=this[M];let rA=null;if(q!=null){const[iA,gA]=n(q);rA={body:iA,type:gA}}aA(this,z,rA)}get type(){return B.brandCheck(this,$),this[k].type}get url(){B.brandCheck(this,$);const q=this[k].urlList,z=q[q.length-1]??null;return z===null?"":g(z,!0)}get redirected(){return B.brandCheck(this,$),this[k].urlList.length>1}get status(){return B.brandCheck(this,$),this[k].status}get ok(){return B.brandCheck(this,$),this[k].status>=200&&this[k].status<=299}get statusText(){return B.brandCheck(this,$),this[k].statusText}get headers(){return B.brandCheck(this,$),this[w]}get body(){return B.brandCheck(this,$),this[k].body?this[k].body.stream:null}get bodyUsed(){return B.brandCheck(this,$),!!this[k].body&&i.isDisturbed(this[k].body.stream)}clone(){if(B.brandCheck(this,$),this.bodyUsed||this.body?.locked)throw B.errors.exception({header:"Response.clone",message:"Body has already been consumed."});const q=T(this[k]);return X(q,this[w][U],this[M])}[E.inspect.custom](q,z){z.depth===null&&(z.depth=2),z.colors??(z.colors=!0);const rA={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${E.formatWithOptions(z,rA)}`}};o($,"Response");let m=$;s(m),Object.defineProperties(m.prototype,{type:Q,url:Q,status:Q,ok:Q,redirected:Q,statusText:Q,headers:Q,clone:Q,body:Q,bodyUsed:Q,[Symbol.toStringTag]:{value:"Response",configurable:!0}}),Object.defineProperties(m,{json:Q,redirect:Q,error:Q});function T(V){if(V.internalResponse)return K(T(V.internalResponse),V.type);const q=v({...V,body:null});return V.body!=null&&(q.body=r(V.body)),q}o(T,"cloneResponse");function v(V){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...V,headersList:V?.headersList?new A(V?.headersList):new A,urlList:V?.urlList?[...V.urlList]:[]}}o(v,"makeResponse");function Z(V){const q=L(V);return v({type:"error",status:0,error:q?V:new Error(V&&String(V)),aborted:V&&V.name==="AbortError"})}o(Z,"makeNetworkError");function P(V){return V.type==="error"&&V.status===0}o(P,"isNetworkError");function AA(V,q){return q={internalResponse:V,...q},new Proxy(V,{get(z,rA){return rA in q?q[rA]:z[rA]},set(z,rA,iA){return N(!(rA in q)),z[rA]=iA,!0}})}o(AA,"makeFilteredResponse");function K(V,q){if(q==="basic")return AA(V,{type:"basic",headersList:V.headersList});if(q==="cors")return AA(V,{type:"cors",headersList:V.headersList});if(q==="opaque")return AA(V,{type:"opaque",urlList:Object.freeze([]),status:0,statusText:"",body:null});if(q==="opaqueredirect")return AA(V,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null});N(!1)}o(K,"filterResponse");function tA(V,q=null){return N(I(V)),a(V)?Z(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:q})):Z(Object.assign(new DOMException("Request was cancelled."),{cause:q}))}o(tA,"makeAppropriateNetworkError");function aA(V,q,z){if(q.status!==null&&(q.status<200||q.status>599))throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.');if("statusText"in q&&q.statusText!=null&&!C(String(q.statusText)))throw new TypeError("Invalid statusText");if("status"in q&&q.status!=null&&(V[k].status=q.status),"statusText"in q&&q.statusText!=null&&(V[k].statusText=q.statusText),"headers"in q&&q.headers!=null&&t(V[w],q.headers),z){if(S.includes(V.status))throw B.errors.exception({header:"Response constructor",message:`Invalid response status code ${V.status}`});V[k].body=z.body,z.type!=null&&!V[k].headersList.contains("content-type",!0)&&V[k].headersList.append("content-type",z.type,!0)}}o(aA,"initializeResponse");function X(V,q,z){const rA=new m(F);return rA[k]=V,rA[M]=z,rA[w]=new e(F),rA[w][d]=V.headersList,rA[w][U]=q,rA[w][M]=z,rA}return o(X,"fromInnerResponse"),B.converters.ReadableStream=B.interfaceConverter(ReadableStream),B.converters.FormData=B.interfaceConverter(D),B.converters.URLSearchParams=B.interfaceConverter(URLSearchParams),B.converters.XMLHttpRequestBodyInit=function(V){return typeof V=="string"?B.converters.USVString(V):f(V)?B.converters.Blob(V,{strict:!1}):ArrayBuffer.isView(V)||u.isArrayBuffer(V)?B.converters.BufferSource(V):i.isFormDataLike(V)?B.converters.FormData(V,{strict:!1}):V instanceof URLSearchParams?B.converters.URLSearchParams(V):B.converters.DOMString(V)},B.converters.BodyInit=function(V){return V instanceof ReadableStream?B.converters.ReadableStream(V):V?.[Symbol.asyncIterator]?V:B.converters.XMLHttpRequestBodyInit(V)},B.converters.ResponseInit=B.dictionaryConverter([{key:"status",converter:B.converters["unsigned short"],defaultValue:200},{key:"statusText",converter:B.converters.ByteString,defaultValue:""},{key:"headers",converter:B.converters.HeadersInit}]),response={isNetworkError:P,makeNetworkError:Z,makeResponse:v,makeAppropriateNetworkError:tA,filterResponse:K,Response:m,cloneResponse:T,fromInnerResponse:X},response}o(requireResponse,"requireResponse");var dispatcherWeakref,hasRequiredDispatcherWeakref;function requireDispatcherWeakref(){if(hasRequiredDispatcherWeakref)return dispatcherWeakref;hasRequiredDispatcherWeakref=1;const{kConnected:e,kSize:A}=symbols$4,r=class r{constructor(E){this.value=E}deref(){return this.value[e]===0&&this.value[A]===0?void 0:this.value}};o(r,"CompatWeakRef");let t=r;const s=class s{constructor(E){this.finalizer=E}register(E,Q){E.on&&E.on("disconnect",()=>{E[e]===0&&E[A]===0&&this.finalizer(Q)})}unregister(E){}};o(s,"CompatFinalizer");let n=s;return dispatcherWeakref=o(function(){return process.env.NODE_V8_COVERAGE?{WeakRef:t,FinalizationRegistry:n}:{WeakRef,FinalizationRegistry}},"dispatcherWeakref"),dispatcherWeakref}o(requireDispatcherWeakref,"requireDispatcherWeakref");var request,hasRequiredRequest;function requireRequest(){if(hasRequiredRequest)return request;hasRequiredRequest=1;const{extractBody:e,mixinBody:A,cloneBody:t}=requireBody(),{Headers:n,fill:r,HeadersList:s}=requireHeaders(),{FinalizationRegistry:i}=requireDispatcherWeakref()(),E=util$m,Q=require$$0__default$1,{isValidHTTPToken:C,sameOrigin:I,normalizeMethod:a,makePolicyContainer:f,normalizeMethodRecord:h}=requireUtil$5(),{forbiddenMethodsSet:L,corsSafeListedMethodsSet:c,referrerPolicy:l,requestRedirect:S,requestMode:k,requestCredentials:w,requestCache:U,requestDuplex:M}=requireConstants$2(),{kEnumerableProperty:B}=E,{kHeaders:D,kSignal:G,kState:g,kGuard:d,kRealm:F,kDispatcher:N}=requireSymbols$3(),{webidl:u}=requireWebidl(),{getGlobalOrigin:b}=requireGlobal(),{URLSerializer:m}=requireDataUrl(),{kHeadersList:T,kConstruct:v}=symbols$4,Z=require$$0__default,{getMaxListeners:P,setMaxListeners:AA,getEventListeners:K,defaultMaxListeners:tA}=require$$0__default$3,aA=Symbol("abortController"),X=new i(({signal:gA,abort:BA})=>{gA.removeEventListener("abort",BA)});let $=!1;const iA=class iA{constructor(BA,sA={}){if(BA===v)return;u.argumentLengthCheck(arguments,1,{header:"Request constructor"}),BA=u.converters.RequestInfo(BA),sA=u.converters.RequestInit(sA),this[F]={settingsObject:{baseUrl:b(),get origin(){return this.baseUrl?.origin},policyContainer:f()}};let eA=null,yA=null;const WA=this[F].settingsObject.baseUrl;let wA=null;if(typeof BA=="string"){this[N]=sA.dispatcher;let IA;try{IA=new URL(BA,WA)}catch(hA){throw new TypeError("Failed to parse URL from "+BA,{cause:hA})}if(IA.username||IA.password)throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+BA);eA=q({urlList:[IA]}),yA="cors"}else this[N]=sA.dispatcher||BA[N],Z(BA instanceof iA),eA=BA[g],wA=BA[G];const qA=this[F].settingsObject.origin;let MA="client";if(eA.window?.constructor?.name==="EnvironmentSettingsObject"&&I(eA.window,qA)&&(MA=eA.window),sA.window!=null)throw new TypeError(`'window' option '${MA}' must be null`);"window"in sA&&(MA="no-window"),eA=q({method:eA.method,headersList:eA.headersList,unsafeRequest:eA.unsafeRequest,client:this[F].settingsObject,window:MA,priority:eA.priority,origin:eA.origin,referrer:eA.referrer,referrerPolicy:eA.referrerPolicy,mode:eA.mode,credentials:eA.credentials,cache:eA.cache,redirect:eA.redirect,integrity:eA.integrity,keepalive:eA.keepalive,reloadNavigation:eA.reloadNavigation,historyNavigation:eA.historyNavigation,urlList:[...eA.urlList]});const HA=Object.keys(sA).length!==0;if(HA&&(eA.mode==="navigate"&&(eA.mode="same-origin"),eA.reloadNavigation=!1,eA.historyNavigation=!1,eA.origin="client",eA.referrer="client",eA.referrerPolicy="",eA.url=eA.urlList[eA.urlList.length-1],eA.urlList=[eA.url]),sA.referrer!==void 0){const IA=sA.referrer;if(IA==="")eA.referrer="no-referrer";else{let hA;try{hA=new URL(IA,WA)}catch(SA){throw new TypeError(`Referrer "${IA}" is not a valid URL.`,{cause:SA})}hA.protocol==="about:"&&hA.hostname==="client"||qA&&!I(hA,this[F].settingsObject.baseUrl)?eA.referrer="client":eA.referrer=hA}}sA.referrerPolicy!==void 0&&(eA.referrerPolicy=sA.referrerPolicy);let pA;if(sA.mode!==void 0?pA=sA.mode:pA=yA,pA==="navigate")throw u.errors.exception({header:"Request constructor",message:"invalid request mode navigate."});if(pA!=null&&(eA.mode=pA),sA.credentials!==void 0&&(eA.credentials=sA.credentials),sA.cache!==void 0&&(eA.cache=sA.cache),eA.cache==="only-if-cached"&&eA.mode!=="same-origin")throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode");if(sA.redirect!==void 0&&(eA.redirect=sA.redirect),sA.integrity!=null&&(eA.integrity=String(sA.integrity)),sA.keepalive!==void 0&&(eA.keepalive=!!sA.keepalive),sA.method!==void 0){let IA=sA.method;const hA=h[IA];if(hA!==void 0)eA.method=hA;else{if(!C(IA))throw new TypeError(`'${IA}' is not a valid HTTP method.`);if(L.has(IA.toUpperCase()))throw new TypeError(`'${IA}' HTTP method is unsupported.`);IA=a(IA),eA.method=IA}!$&&eA.method==="patch"&&(process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.",{code:"UNDICI-FETCH-patch"}),$=!0)}sA.signal!==void 0&&(wA=sA.signal),this[g]=eA;const YA=new AbortController;if(this[G]=YA.signal,this[G][F]=this[F],wA!=null){if(!wA||typeof wA.aborted!="boolean"||typeof wA.addEventListener!="function")throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.");if(wA.aborted)YA.abort(wA.reason);else{this[aA]=YA;const IA=new WeakRef(YA),hA=o(function(){const SA=IA.deref();SA!==void 0&&(X.unregister(hA),this.removeEventListener("abort",hA),SA.abort(this.reason))},"abort");try{(typeof P=="function"&&P(wA)===tA||K(wA,"abort").length>=tA)&&AA(100,wA)}catch{}E.addAbortListener(wA,hA),X.register(YA,{signal:wA,abort:hA},hA)}}if(this[D]=new n(v),this[D][T]=eA.headersList,this[D][d]="request",this[D][F]=this[F],pA==="no-cors"){if(!c.has(eA.method))throw new TypeError(`'${eA.method} is unsupported in no-cors mode.`);this[D][d]="request-no-cors"}if(HA){const IA=this[D][T],hA=sA.headers!==void 0?sA.headers:new s(IA);if(IA.clear(),hA instanceof s){for(const[SA,PA]of hA)IA.append(SA,PA);IA.cookies=hA.cookies}else r(this[D],hA)}const UA=BA instanceof iA?BA[g].body:null;if((sA.body!=null||UA!=null)&&(eA.method==="GET"||eA.method==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body.");let JA=null;if(sA.body!=null){const[IA,hA]=e(sA.body,eA.keepalive);JA=IA,hA&&!this[D][T].contains("content-type",!0)&&this[D].append("content-type",hA)}const VA=JA??UA;if(VA!=null&&VA.source==null){if(JA!=null&&sA.duplex==null)throw new TypeError("RequestInit: duplex option is required when sending a body.");if(eA.mode!=="same-origin"&&eA.mode!=="cors")throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"');eA.useCORSPreflightFlag=!0}let OA=VA;if(JA==null&&UA!=null){if(E.isDisturbed(UA.stream)||UA.stream.locked)throw new TypeError("Cannot construct a Request with a Request object that has already been used.");const IA=new TransformStream;UA.stream.pipeThrough(IA),OA={source:UA.source,length:UA.length,stream:IA.readable}}this[g].body=OA}get method(){return u.brandCheck(this,iA),this[g].method}get url(){return u.brandCheck(this,iA),m(this[g].url)}get headers(){return u.brandCheck(this,iA),this[D]}get destination(){return u.brandCheck(this,iA),this[g].destination}get referrer(){return u.brandCheck(this,iA),this[g].referrer==="no-referrer"?"":this[g].referrer==="client"?"about:client":this[g].referrer.toString()}get referrerPolicy(){return u.brandCheck(this,iA),this[g].referrerPolicy}get mode(){return u.brandCheck(this,iA),this[g].mode}get credentials(){return this[g].credentials}get cache(){return u.brandCheck(this,iA),this[g].cache}get redirect(){return u.brandCheck(this,iA),this[g].redirect}get integrity(){return u.brandCheck(this,iA),this[g].integrity}get keepalive(){return u.brandCheck(this,iA),this[g].keepalive}get isReloadNavigation(){return u.brandCheck(this,iA),this[g].reloadNavigation}get isHistoryNavigation(){return u.brandCheck(this,iA),this[g].historyNavigation}get signal(){return u.brandCheck(this,iA),this[G]}get body(){return u.brandCheck(this,iA),this[g].body?this[g].body.stream:null}get bodyUsed(){return u.brandCheck(this,iA),!!this[g].body&&E.isDisturbed(this[g].body.stream)}get duplex(){return u.brandCheck(this,iA),"half"}clone(){if(u.brandCheck(this,iA),this.bodyUsed||this.body?.locked)throw new TypeError("unusable");const BA=z(this[g]),sA=new AbortController;return this.signal.aborted?sA.abort(this.signal.reason):E.addAbortListener(this.signal,()=>{sA.abort(this.signal.reason)}),rA(BA,sA.signal,this[D][d],this[F])}[Q.inspect.custom](BA,sA){sA.depth===null&&(sA.depth=2),sA.colors??(sA.colors=!0);const eA={method:this.method,url:this.url,headers:this.headers,destination:this.destination,referrer:this.referrer,referrerPolicy:this.referrerPolicy,mode:this.mode,credentials:this.credentials,cache:this.cache,redirect:this.redirect,integrity:this.integrity,keepalive:this.keepalive,isReloadNavigation:this.isReloadNavigation,isHistoryNavigation:this.isHistoryNavigation,signal:this.signal};return`Request ${Q.formatWithOptions(sA,eA)}`}};o(iA,"Request");let V=iA;A(V);function q(gA){const BA={method:"GET",localURLsOnly:!1,unsafeRequest:!1,body:null,client:null,reservedClient:null,replacesClientId:"",window:"client",keepalive:!1,serviceWorkers:"all",initiator:"",destination:"",priority:null,origin:"client",policyContainer:"client",referrer:"client",referrerPolicy:"",mode:"no-cors",useCORSPreflightFlag:!1,credentials:"same-origin",useCredentials:!1,cache:"default",redirect:"follow",integrity:"",cryptoGraphicsNonceMetadata:"",parserMetadata:"",reloadNavigation:!1,historyNavigation:!1,userActivation:!1,taintedOrigin:!1,redirectCount:0,responseTainting:"basic",preventNoCacheCacheControlHeaderModification:!1,done:!1,timingAllowFailed:!1,...gA,headersList:gA.headersList?new s(gA.headersList):new s};return BA.url=BA.urlList[0],BA}o(q,"makeRequest");function z(gA){const BA=q({...gA,body:null});return gA.body!=null&&(BA.body=t(gA.body)),BA}o(z,"cloneRequest");function rA(gA,BA,sA,eA){const yA=new V(v);return yA[g]=gA,yA[F]=eA,yA[G]=BA,yA[G][F]=eA,yA[D]=new n(v),yA[D][T]=gA.headersList,yA[D][d]=sA,yA[D][F]=eA,yA}return o(rA,"fromInnerRequest"),Object.defineProperties(V.prototype,{method:B,url:B,headers:B,redirect:B,clone:B,signal:B,duplex:B,destination:B,body:B,bodyUsed:B,isHistoryNavigation:B,isReloadNavigation:B,keepalive:B,integrity:B,cache:B,credentials:B,attribute:B,referrerPolicy:B,referrer:B,mode:B,[Symbol.toStringTag]:{value:"Request",configurable:!0}}),u.converters.Request=u.interfaceConverter(V),u.converters.RequestInfo=function(gA){return typeof gA=="string"?u.converters.USVString(gA):gA instanceof V?u.converters.Request(gA):u.converters.USVString(gA)},u.converters.AbortSignal=u.interfaceConverter(AbortSignal),u.converters.RequestInit=u.dictionaryConverter([{key:"method",converter:u.converters.ByteString},{key:"headers",converter:u.converters.HeadersInit},{key:"body",converter:u.nullableConverter(u.converters.BodyInit)},{key:"referrer",converter:u.converters.USVString},{key:"referrerPolicy",converter:u.converters.DOMString,allowedValues:l},{key:"mode",converter:u.converters.DOMString,allowedValues:k},{key:"credentials",converter:u.converters.DOMString,allowedValues:w},{key:"cache",converter:u.converters.DOMString,allowedValues:U},{key:"redirect",converter:u.converters.DOMString,allowedValues:S},{key:"integrity",converter:u.converters.DOMString},{key:"keepalive",converter:u.converters.boolean},{key:"signal",converter:u.nullableConverter(gA=>u.converters.AbortSignal(gA,{strict:!1}))},{key:"window",converter:u.converters.any},{key:"duplex",converter:u.converters.DOMString,allowedValues:M},{key:"dispatcher",converter:u.converters.any}]),request={Request:V,makeRequest:q,fromInnerRequest:rA,cloneRequest:z},request}o(requireRequest,"requireRequest");var fetch_1,hasRequiredFetch;function requireFetch(){if(hasRequiredFetch)return fetch_1;hasRequiredFetch=1;const{makeNetworkError:e,makeAppropriateNetworkError:A,filterResponse:t,makeResponse:n,fromInnerResponse:r}=requireResponse(),{HeadersList:s}=requireHeaders(),{Request:i,cloneRequest:E}=requireRequest(),Q=zlib__default,{bytesMatch:C,makePolicyContainer:I,clonePolicyContainer:a,requestBadPort:f,TAOCheck:h,appendRequestOriginHeader:L,responseLocationURL:c,requestCurrentURL:l,setRequestReferrerPolicyOnRedirect:S,tryUpgradeRequestToAPotentiallyTrustworthyURL:k,createOpaqueTimingInfo:w,appendFetchMetadata:U,corsCheck:M,crossOriginResourcePolicyCheck:B,determineRequestsReferrer:D,coarsenedSharedCurrentTime:G,createDeferredPromise:g,isBlobLike:d,sameOrigin:F,isCancelled:N,isAborted:u,isErrorLike:b,fullyReadBody:m,readableStreamClose:T,isomorphicEncode:v,urlIsLocal:Z,urlIsHttpHttpsScheme:P,urlHasHttpsScheme:AA,clampAndCoarsenConnectionTimingInfo:K,simpleRangeHeaderValue:tA,buildContentRange:aA,createInflate:X,extractMimeType:$}=requireUtil$5(),{kState:V,kDispatcher:q}=requireSymbols$3(),z=require$$0__default,{safelyExtractBody:rA,extractBody:iA}=requireBody(),{redirectStatusSet:gA,nullBodyStatus:BA,safeMethodsSet:sA,requestBodyHeader:eA,subresourceSet:yA}=requireConstants$2(),WA=require$$0__default$3,{Readable:wA,pipeline:qA}=Stream__default,{addAbortListener:MA,isErrored:HA,isReadable:pA,nodeMajor:YA,nodeMinor:UA,bufferToLowerCasedHeaderName:JA}=util$m,{dataURLProcessor:VA,serializeAMimeType:OA,minimizeSupportedMimeType:IA}=requireDataUrl(),{getGlobalDispatcher:hA}=global,{webidl:SA}=requireWebidl(),{STATUS_CODES:PA}=http__default,Pe=["GET","HEAD"],ee=typeof __UNDICI_IS_NODE__<"u"||typeof esbuildDetection<"u"?"node":"undici";let ZA;const nA=class nA extends WA{constructor(O){super(),this.dispatcher=O,this.connection=null,this.dump=!1,this.state="ongoing"}terminate(O){this.state==="ongoing"&&(this.state="terminated",this.connection?.destroy(O),this.emit("terminated",O))}abort(O){this.state==="ongoing"&&(this.state="aborted",O||(O=new DOMException("The operation was aborted.","AbortError")),this.serializedAbortReason=O,this.connection?.destroy(O),this.emit("terminated",O))}};o(nA,"Fetch");let XA=nA;function Ze(R,O=void 0){SA.argumentLengthCheck(arguments,1,{header:"globalThis.fetch"});const H=g();let J;try{J=new i(R,O)}catch(oA){return H.reject(oA),H.promise}const _=J[V];if(J.signal.aborted)return te(H,_,null,J.signal.reason),H.promise;_.client.globalObject?.constructor?.name==="ServiceWorkerGlobalScope"&&(_.serviceWorkers="none");let QA=null;const lA=null;let uA=!1,cA=null;return MA(J.signal,()=>{uA=!0,z(cA!=null),cA.abort(J.signal.reason),te(H,_,QA,J.signal.reason)}),cA=Ve({request:_,processResponseEndOfBody:o(oA=>KA(oA,"fetch"),"handleFetchDone"),processResponse:o(oA=>{if(!uA){if(oA.aborted){te(H,_,QA,cA.serializedAbortReason);return}if(oA.type==="error"){H.reject(new TypeError("fetch failed",{cause:oA.error}));return}QA=r(oA,"immutable",lA),H.resolve(QA)}},"processResponse"),dispatcher:J[q]}),H.promise}o(Ze,"fetch");function KA(R,O="other"){if(R.type==="error"&&R.aborted||!R.urlList?.length)return;const H=R.urlList[0];let J=R.timingInfo,_=R.cacheState;P(H)&&J!==null&&(R.timingAllowPassed||(J=w({startTime:J.startTime}),_=""),J.endTime=G(),R.timingInfo=J,He(J,H.href,O,globalThis,_))}o(KA,"finalizeAndReportTiming");const He=YA>18||YA===18&&UA>=2?performance.markResourceTiming:()=>{};function te(R,O,H,J){if(R.reject(J),O.body!=null&&pA(O.body?.stream)&&O.body.stream.cancel(J).catch(x=>{if(x.code!=="ERR_INVALID_STATE")throw x}),H==null)return;const _=H[V];_.body!=null&&pA(_.body?.stream)&&_.body.stream.cancel(J).catch(x=>{if(x.code!=="ERR_INVALID_STATE")throw x})}o(te,"abortFetch");function Ve({request:R,processRequestBodyChunkLength:O,processRequestEndOfBody:H,processResponse:J,processResponseEndOfBody:_,processResponseConsumeBody:x,useParallelQueue:QA=!1,dispatcher:lA=hA()}){z(lA);let uA=null,cA=!1;R.client!=null&&(uA=R.client.globalObject,cA=R.client.crossOriginIsolatedCapability);const fA=G(cA),mA=w({startTime:fA}),oA={controller:new XA(lA),request:R,timingInfo:mA,processRequestBodyChunkLength:O,processRequestEndOfBody:H,processResponse:J,processResponseConsumeBody:x,processResponseEndOfBody:_,taskDestination:uA,crossOriginIsolatedCapability:cA};return z(!R.body||R.body.stream),R.window==="client"&&(R.window=R.client?.globalObject?.constructor?.name==="Window"?R.client:"no-window"),R.origin==="client"&&(R.origin=R.client?.origin),R.policyContainer==="client"&&(R.client!=null?R.policyContainer=a(R.client.policyContainer):R.policyContainer=I()),R.headersList.contains("accept",!0)||R.headersList.append("accept","*/*",!0),R.headersList.contains("accept-language",!0)||R.headersList.append("accept-language","*",!0),R.priority,yA.has(R.destination),re(oA).catch(RA=>{oA.controller.terminate(RA)}),oA.controller}o(Ve,"fetching");async function re(R,O=!1){const H=R.request;let J=null;if(H.localURLsOnly&&!Z(l(H))&&(J=e("local URLs only")),k(H),f(H)==="blocked"&&(J=e("bad port")),H.referrerPolicy===""&&(H.referrerPolicy=H.policyContainer.referrerPolicy),H.referrer!=="no-referrer"&&(H.referrer=D(H)),J===null&&(J=await(async()=>{const x=l(H);return F(x,H.url)&&H.responseTainting==="basic"||x.protocol==="data:"||H.mode==="navigate"||H.mode==="websocket"?(H.responseTainting="basic",await ve(R)):H.mode==="same-origin"?e('request mode cannot be "same-origin"'):H.mode==="no-cors"?H.redirect!=="follow"?e('redirect mode cannot be "follow" for "no-cors" request'):(H.responseTainting="opaque",await ve(R)):P(l(H))?(H.responseTainting="cors",await y(R)):e("URL scheme must be a HTTP(S) scheme")})()),O)return J;J.status!==0&&!J.internalResponse&&(H.responseTainting,H.responseTainting==="basic"?J=t(J,"basic"):H.responseTainting==="cors"?J=t(J,"cors"):H.responseTainting==="opaque"?J=t(J,"opaque"):z(!1));let _=J.status===0?J:J.internalResponse;if(_.urlList.length===0&&_.urlList.push(...H.urlList),H.timingAllowFailed||(J.timingAllowPassed=!0),J.type==="opaque"&&_.status===206&&_.rangeRequested&&!H.headers.contains("range",!0)&&(J=_=e()),J.status!==0&&(H.method==="HEAD"||H.method==="CONNECT"||BA.includes(_.status))&&(_.body=null,R.controller.dump=!0),H.integrity){const x=o(lA=>vA(R,e(lA)),"processBodyError");if(H.responseTainting==="opaque"||J.body==null){x(J.error);return}const QA=o(lA=>{if(!C(lA,H.integrity)){x("integrity mismatch");return}J.body=rA(lA)[0],vA(R,J)},"processBody");await m(J.body,QA,x)}else vA(R,J)}o(re,"mainFetch");function ve(R){if(N(R)&&R.request.redirectCount===0)return Promise.resolve(A(R));const{request:O}=R,{protocol:H}=l(O);switch(H){case"about:":return Promise.resolve(e("about scheme is not supported"));case"blob:":{ZA||(ZA=require$$6__default.resolveObjectURL);const J=l(O);if(J.search.length!==0)return Promise.resolve(e("NetworkError when attempting to fetch resource."));const _=ZA(J.toString());if(O.method!=="GET"||!d(_))return Promise.resolve(e("invalid method"));const x=n(),QA=_.size,lA=v(`${QA}`),uA=_.type;if(O.headersList.contains("range",!0)){x.rangeRequested=!0;const cA=O.headersList.get("range",!0),fA=tA(cA,!0);if(fA==="failure")return Promise.resolve(e("failed to fetch the data URL"));let{rangeStartValue:mA,rangeEndValue:oA}=fA;if(mA===null)mA=QA-oA,oA=mA+oA-1;else{if(mA>=QA)return Promise.resolve(e("Range start is greater than the blob's size."));(oA===null||oA>=QA)&&(oA=QA-1)}const RA=_.slice(mA,oA,uA),bA=iA(RA);x.body=bA[0];const dA=v(`${RA.size}`),GA=aA(mA,oA,QA);x.status=206,x.statusText="Partial Content",x.headersList.set("content-length",dA,!0),x.headersList.set("content-type",uA,!0),x.headersList.set("content-range",GA,!0)}else{const cA=iA(_);x.statusText="OK",x.body=cA[0],x.headersList.set("content-length",lA,!0),x.headersList.set("content-type",uA,!0)}return Promise.resolve(x)}case"data:":{const J=l(O),_=VA(J);if(_==="failure")return Promise.resolve(e("failed to fetch the data URL"));const x=OA(_.mimeType);return Promise.resolve(n({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:x}]],body:rA(_.body)[0]}))}case"file:":return Promise.resolve(e("not implemented... yet..."));case"http:":case"https:":return y(R).catch(J=>e(J));default:return Promise.resolve(e("unknown scheme"))}}o(ve,"schemeFetch");function Xe(R,O){R.request.done=!0,R.processResponseDone!=null&&queueMicrotask(()=>R.processResponseDone(O))}o(Xe,"finalizeResponse");function vA(R,O){let H=R.timingInfo;const J=o(()=>{const x=Date.now();R.request.destination==="document"&&(R.controller.fullTimingInfo=H),R.controller.reportTimingSteps=()=>{if(R.request.url.protocol!=="https:")return;H.endTime=x;let lA=O.cacheState;const uA=O.bodyInfo;O.timingAllowPassed||(H=w(H),lA="");let cA=0;if(R.request.mode!=="navigator"||!O.hasCrossOriginRedirects){cA=O.status;const fA=$(O.headersList);fA!=="failure"&&(uA.contentType=IA(fA))}R.request.initiatorType!=null&&He(H,R.request.url.href,R.request.initiatorType,globalThis,lA,uA,cA)};const QA=o(()=>{R.request.done=!0,R.processResponseEndOfBody!=null&&queueMicrotask(()=>R.processResponseEndOfBody(O)),R.request.initiatorType!=null&&R.controller.reportTimingSteps()},"processResponseEndOfBodyTask");queueMicrotask(()=>QA())},"processResponseEndOfBody");R.processResponse!=null&&queueMicrotask(()=>R.processResponse(O));const _=O.type==="error"?O:O.internalResponse??O;if(_.body==null)J();else{const x=new TransformStream({start(){},transform(lA,uA){uA.enqueue(lA)},flush:J});_.body.stream.pipeThrough(x);const QA=new ReadableStream({readableStream:x.readable,async start(){this._bodyReader=this.readableStream.getReader()},async pull(lA){for(;lA.desiredSize>=0;){const{done:uA,value:cA}=await this._bodyReader.read();if(uA){queueMicrotask(()=>T(lA));break}lA.enqueue(cA)}},type:"bytes"});_.body.stream=QA}}o(vA,"fetchFinale");async function y(R){const O=R.request;let H=null,J=null;const _=R.timingInfo;if(O.serviceWorkers,H===null){if(O.redirect==="follow"&&(O.serviceWorkers="none"),J=H=await W(R),O.responseTainting==="cors"&&M(O,H)==="failure")return e("cors failure");h(O,H)==="failure"&&(O.timingAllowFailed=!0)}return(O.responseTainting==="opaque"||H.type==="opaque")&&B(O.origin,O.client,O.destination,J)==="blocked"?e("blocked"):(gA.has(J.status)&&(O.redirect!=="manual"&&R.controller.connection.destroy(void 0,!1),O.redirect==="error"?H=e("unexpected redirect"):O.redirect==="manual"?H=J:O.redirect==="follow"?H=await Y(R,H):z(!1)),H.timingInfo=_,H)}o(y,"httpFetch");function Y(R,O){const H=R.request,J=O.internalResponse?O.internalResponse:O;let _;try{if(_=c(J,l(H).hash),_==null)return O}catch(QA){return Promise.resolve(e(QA))}if(!P(_))return Promise.resolve(e("URL scheme must be a HTTP(S) scheme"));if(H.redirectCount===20)return Promise.resolve(e("redirect count exceeded"));if(H.redirectCount+=1,H.mode==="cors"&&(_.username||_.password)&&!F(H,_))return Promise.resolve(e('cross origin not allowed for request mode "cors"'));if(H.responseTainting==="cors"&&(_.username||_.password))return Promise.resolve(e('URL cannot contain credentials for request mode "cors"'));if(J.status!==303&&H.body!=null&&H.body.source==null)return Promise.resolve(e());if([301,302].includes(J.status)&&H.method==="POST"||J.status===303&&!Pe.includes(H.method)){H.method="GET",H.body=null;for(const QA of eA)H.headersList.delete(QA)}F(l(H),_)||(H.headersList.delete("authorization",!0),H.headersList.delete("proxy-authorization",!0),H.headersList.delete("cookie",!0),H.headersList.delete("host",!0)),H.body!=null&&(z(H.body.source!=null),H.body=rA(H.body.source)[0]);const x=R.timingInfo;return x.redirectEndTime=x.postRedirectStartTime=G(R.crossOriginIsolatedCapability),x.redirectStartTime===0&&(x.redirectStartTime=x.startTime),H.urlList.push(_),S(H,J),re(R,!0)}o(Y,"httpRedirectFetch");async function W(R,O=!1,H=!1){const J=R.request;let _=null,x=null,QA=null;J.window==="no-window"&&J.redirect==="error"?(_=R,x=J):(x=E(J),_={...R},_.request=x);const lA=J.credentials==="include"||J.credentials==="same-origin"&&J.responseTainting==="basic",uA=x.body?x.body.length:null;let cA=null;if(x.body==null&&["POST","PUT"].includes(x.method)&&(cA="0"),uA!=null&&(cA=v(`${uA}`)),cA!=null&&x.headersList.append("content-length",cA,!0),uA!=null&&x.keepalive,x.referrer instanceof URL&&x.headersList.append("referer",v(x.referrer.href),!0),L(x),U(x),x.headersList.contains("user-agent",!0)||x.headersList.append("user-agent",ee),x.cache==="default"&&(x.headersList.contains("if-modified-since",!0)||x.headersList.contains("if-none-match",!0)||x.headersList.contains("if-unmodified-since",!0)||x.headersList.contains("if-match",!0)||x.headersList.contains("if-range",!0))&&(x.cache="no-store"),x.cache==="no-cache"&&!x.preventNoCacheCacheControlHeaderModification&&!x.headersList.contains("cache-control",!0)&&x.headersList.append("cache-control","max-age=0",!0),(x.cache==="no-store"||x.cache==="reload")&&(x.headersList.contains("pragma",!0)||x.headersList.append("pragma","no-cache",!0),x.headersList.contains("cache-control",!0)||x.headersList.append("cache-control","no-cache",!0)),x.headersList.contains("range",!0)&&x.headersList.append("accept-encoding","identity",!0),x.headersList.contains("accept-encoding",!0)||(AA(l(x))?x.headersList.append("accept-encoding","br, gzip, deflate",!0):x.headersList.append("accept-encoding","gzip, deflate",!0)),x.headersList.delete("host",!0),x.cache="no-store",x.mode!=="no-store"&&x.mode,QA==null){if(x.mode==="only-if-cached")return e("only if cached");const fA=await j(_,lA,H);!sA.has(x.method)&&fA.status>=200&&fA.status<=399,QA==null&&(QA=fA)}if(QA.urlList=[...x.urlList],x.headersList.contains("range",!0)&&(QA.rangeRequested=!0),QA.requestIncludesCredentials=lA,QA.status===407)return J.window==="no-window"?e():N(R)?A(R):e("proxy authentication required");if(QA.status===421&&!H&&(J.body==null||J.body.source!=null)){if(N(R))return A(R);R.controller.connection.destroy(),QA=await W(R,O,!0)}return QA}o(W,"httpNetworkOrCacheFetch");async function j(R,O=!1,H=!1){z(!R.controller.connection||R.controller.connection.destroyed),R.controller.connection={abort:null,destroyed:!1,destroy(oA,RA=!0){this.destroyed||(this.destroyed=!0,RA&&this.abort?.(oA??new DOMException("The operation was aborted.","AbortError")))}};const J=R.request;let _=null;const x=R.timingInfo;J.cache="no-store",J.mode;let QA=null;if(J.body==null&&R.processRequestEndOfBody)queueMicrotask(()=>R.processRequestEndOfBody());else if(J.body!=null){const oA=o(async function*(dA){N(R)||(yield dA,R.processRequestBodyChunkLength?.(dA.byteLength))},"processBodyChunk"),RA=o(()=>{N(R)||R.processRequestEndOfBody&&R.processRequestEndOfBody()},"processEndOfBody"),bA=o(dA=>{N(R)||(dA.name==="AbortError"?R.controller.abort():R.controller.terminate(dA))},"processBodyError");QA=async function*(){try{for await(const dA of J.body.stream)yield*oA(dA);RA()}catch(dA){bA(dA)}}()}try{const{body:oA,status:RA,statusText:bA,headersList:dA,socket:GA}=await mA({body:QA});if(GA)_=n({status:RA,statusText:bA,headersList:dA,socket:GA});else{const DA=oA[Symbol.asyncIterator]();R.controller.next=()=>DA.next(),_=n({status:RA,statusText:bA,headersList:dA})}}catch(oA){return oA.name==="AbortError"?(R.controller.connection.destroy(),A(R,oA)):e(oA)}const lA=o(async()=>{await R.controller.resume()},"pullAlgorithm"),uA=o(oA=>{R.controller.abort(oA)},"cancelAlgorithm"),cA=new ReadableStream({async start(oA){R.controller.controller=oA},async pull(oA){await lA()},async cancel(oA){await uA(oA)},type:"bytes"});_.body={stream:cA,source:null,length:null},R.controller.onAborted=fA,R.controller.on("terminated",fA),R.controller.resume=async()=>{for(;;){let oA,RA;try{const{done:dA,value:GA}=await R.controller.next();if(u(R))break;oA=dA?void 0:GA}catch(dA){R.controller.ended&&!x.encodedBodySize?oA=void 0:(oA=dA,RA=!0)}if(oA===void 0){T(R.controller.controller),Xe(R,_);return}if(x.decodedBodySize+=oA?.byteLength??0,RA){R.controller.terminate(oA);return}const bA=new Uint8Array(oA);if(bA.byteLength&&R.controller.controller.enqueue(bA),HA(cA)){R.controller.terminate();return}if(R.controller.controller.desiredSize<=0)return}};function fA(oA){u(R)?(_.aborted=!0,pA(cA)&&R.controller.controller.error(R.controller.serializedAbortReason)):pA(cA)&&R.controller.controller.error(new TypeError("terminated",{cause:b(oA)?oA:void 0})),R.controller.connection.destroy()}return o(fA,"onAborted"),_;function mA({body:oA}){const RA=l(J),bA=R.controller.dispatcher;return new Promise((dA,GA)=>bA.dispatch({path:RA.pathname+RA.search,origin:RA.origin,method:J.method,body:bA.isMockActive?J.body&&(J.body.source||J.body.stream):oA,headers:J.headersList.entries,maxRedirections:0,upgrade:J.mode==="websocket"?"websocket":void 0},{body:null,abort:null,onConnect(DA){const{connection:FA}=R.controller;x.finalConnectionTimingInfo=K(void 0,x.postRedirectStartTime,R.crossOriginIsolatedCapability),FA.destroyed?DA(new DOMException("The operation was aborted.","AbortError")):(R.controller.on("terminated",DA),this.abort=FA.abort=DA),x.finalNetworkRequestStartTime=G(R.crossOriginIsolatedCapability)},onResponseStarted(){x.finalNetworkResponseStartTime=G(R.crossOriginIsolatedCapability)},onHeaders(DA,FA,Ke,xe){if(DA<200)return;let TA=[],ft="";const We=new s;if(Array.isArray(FA)){for(let LA=0;LALA.trim())),ft=We.get("location",!0)}this.body=new wA({read:Ke});const zA=[],Nt=ft&&J.redirect==="follow"&&gA.has(DA);if(J.method!=="HEAD"&&J.method!=="CONNECT"&&!BA.includes(DA)&&!Nt)for(let jA=0;jA{}):this.body.on("error",()=>{})}),!0},onData(DA){if(R.controller.dump)return;const FA=DA;return x.encodedBodySize+=FA.byteLength,this.body.push(FA)},onComplete(){this.abort&&R.controller.off("terminated",this.abort),R.controller.onAborted&&R.controller.off("terminated",R.controller.onAborted),R.controller.ended=!0,this.body.push(null)},onError(DA){this.abort&&R.controller.off("terminated",this.abort),this.body?.destroy(DA),R.controller.terminate(DA),GA(DA)},onUpgrade(DA,FA,Ke){if(DA!==101)return;const xe=new s;for(let TA=0;TA{for(;!w[n];)try{const{done:N,value:u}=await d;if(F&&!w[n]&&queueMicrotask(()=>{L("loadstart",w)}),F=!1,!N&&C.isUint8Array(u))g.push(u),(w[r]===void 0||Date.now()-w[r]>=50)&&!w[n]&&(w[r]=Date.now(),queueMicrotask(()=>{L("progress",w)})),d=G.read();else if(N){queueMicrotask(()=>{w[e]="done";try{const b=c(g,M,U.type,B);if(w[n])return;w[t]=b,L("load",w)}catch(b){w[A]=b,L("error",w)}w[e]!=="loading"&&L("loadend",w)});break}}catch(N){if(w[n])return;queueMicrotask(()=>{w[e]="done",w[A]=N,L("error",w),w[e]!=="loading"&&L("loadend",w)});break}})()}o(h,"readOperation");function L(w,U){const M=new s(w,{bubbles:!1,cancelable:!1});U.dispatchEvent(M)}o(L,"fireAProgressEvent");function c(w,U,M,B){switch(U){case"DataURL":{let D="data:";const G=Q(M||"application/octet-stream");G!=="failure"&&(D+=E(G)),D+=";base64,";const g=new I("latin1");for(const d of w)D+=a(g.write(d));return D+=a(g.end()),D}case"Text":{let D="failure";if(B&&(D=i(B)),D==="failure"&&M){const G=Q(M);G!=="failure"&&(D=i(G.parameters.get("charset")))}return D==="failure"&&(D="UTF-8"),l(w,D)}case"ArrayBuffer":return k(w).buffer;case"BinaryString":{let D="";const G=new I("latin1");for(const g of w)D+=G.write(g);return D+=G.end(),D}}}o(c,"packageData");function l(w,U){const M=k(w),B=S(M);let D=0;B!==null&&(U=B,D=B==="UTF-8"?3:2);const G=M.slice(D);return new TextDecoder(U).decode(G)}o(l,"decode");function S(w){const[U,M,B]=w;return U===239&&M===187&&B===191?"UTF-8":U===254&&M===255?"UTF-16BE":U===255&&M===254?"UTF-16LE":null}o(S,"BOMSniffing");function k(w){const U=w.reduce((B,D)=>B+D.byteLength,0);let M=0;return w.reduce((B,D)=>(B.set(D,M),M+=D.byteLength,B),new Uint8Array(U))}return o(k,"combineByteSequences"),util$5={staticPropertyDescriptors:f,readOperation:h,fireAProgressEvent:L},util$5}o(requireUtil$4,"requireUtil$4");var filereader,hasRequiredFilereader;function requireFilereader(){if(hasRequiredFilereader)return filereader;hasRequiredFilereader=1;const{staticPropertyDescriptors:e,readOperation:A,fireAProgressEvent:t}=requireUtil$4(),{kState:n,kError:r,kResult:s,kEvents:i,kAborted:E}=requireSymbols$2(),{webidl:Q}=requireWebidl(),{kEnumerableProperty:C}=util$m,a=class a extends EventTarget{constructor(){super(),this[n]="empty",this[s]=null,this[r]=null,this[i]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(h){Q.brandCheck(this,a),Q.argumentLengthCheck(arguments,1,{header:"FileReader.readAsArrayBuffer"}),h=Q.converters.Blob(h,{strict:!1}),A(this,h,"ArrayBuffer")}readAsBinaryString(h){Q.brandCheck(this,a),Q.argumentLengthCheck(arguments,1,{header:"FileReader.readAsBinaryString"}),h=Q.converters.Blob(h,{strict:!1}),A(this,h,"BinaryString")}readAsText(h,L=void 0){Q.brandCheck(this,a),Q.argumentLengthCheck(arguments,1,{header:"FileReader.readAsText"}),h=Q.converters.Blob(h,{strict:!1}),L!==void 0&&(L=Q.converters.DOMString(L)),A(this,h,"Text",L)}readAsDataURL(h){Q.brandCheck(this,a),Q.argumentLengthCheck(arguments,1,{header:"FileReader.readAsDataURL"}),h=Q.converters.Blob(h,{strict:!1}),A(this,h,"DataURL")}abort(){if(this[n]==="empty"||this[n]==="done"){this[s]=null;return}this[n]==="loading"&&(this[n]="done",this[s]=null),this[E]=!0,t("abort",this),this[n]!=="loading"&&t("loadend",this)}get readyState(){switch(Q.brandCheck(this,a),this[n]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){return Q.brandCheck(this,a),this[s]}get error(){return Q.brandCheck(this,a),this[r]}get onloadend(){return Q.brandCheck(this,a),this[i].loadend}set onloadend(h){Q.brandCheck(this,a),this[i].loadend&&this.removeEventListener("loadend",this[i].loadend),typeof h=="function"?(this[i].loadend=h,this.addEventListener("loadend",h)):this[i].loadend=null}get onerror(){return Q.brandCheck(this,a),this[i].error}set onerror(h){Q.brandCheck(this,a),this[i].error&&this.removeEventListener("error",this[i].error),typeof h=="function"?(this[i].error=h,this.addEventListener("error",h)):this[i].error=null}get onloadstart(){return Q.brandCheck(this,a),this[i].loadstart}set onloadstart(h){Q.brandCheck(this,a),this[i].loadstart&&this.removeEventListener("loadstart",this[i].loadstart),typeof h=="function"?(this[i].loadstart=h,this.addEventListener("loadstart",h)):this[i].loadstart=null}get onprogress(){return Q.brandCheck(this,a),this[i].progress}set onprogress(h){Q.brandCheck(this,a),this[i].progress&&this.removeEventListener("progress",this[i].progress),typeof h=="function"?(this[i].progress=h,this.addEventListener("progress",h)):this[i].progress=null}get onload(){return Q.brandCheck(this,a),this[i].load}set onload(h){Q.brandCheck(this,a),this[i].load&&this.removeEventListener("load",this[i].load),typeof h=="function"?(this[i].load=h,this.addEventListener("load",h)):this[i].load=null}get onabort(){return Q.brandCheck(this,a),this[i].abort}set onabort(h){Q.brandCheck(this,a),this[i].abort&&this.removeEventListener("abort",this[i].abort),typeof h=="function"?(this[i].abort=h,this.addEventListener("abort",h)):this[i].abort=null}};o(a,"FileReader");let I=a;return I.EMPTY=I.prototype.EMPTY=0,I.LOADING=I.prototype.LOADING=1,I.DONE=I.prototype.DONE=2,Object.defineProperties(I.prototype,{EMPTY:e,LOADING:e,DONE:e,readAsArrayBuffer:C,readAsBinaryString:C,readAsText:C,readAsDataURL:C,abort:C,readyState:C,result:C,error:C,onloadstart:C,onprogress:C,onload:C,onabort:C,onerror:C,onloadend:C,[Symbol.toStringTag]:{value:"FileReader",writable:!1,enumerable:!1,configurable:!0}}),Object.defineProperties(I,{EMPTY:e,LOADING:e,DONE:e}),filereader={FileReader:I},filereader}o(requireFilereader,"requireFilereader");var symbols$1,hasRequiredSymbols$1;function requireSymbols$1(){return hasRequiredSymbols$1||(hasRequiredSymbols$1=1,symbols$1={kConstruct:symbols$4.kConstruct}),symbols$1}o(requireSymbols$1,"requireSymbols$1");var util$4,hasRequiredUtil$3;function requireUtil$3(){if(hasRequiredUtil$3)return util$4;hasRequiredUtil$3=1;const e=require$$0__default,{URLSerializer:A}=requireDataUrl(),{isValidHeaderName:t}=requireUtil$5();function n(s,i,E=!1){const Q=A(s,E),C=A(i,E);return Q===C}o(n,"urlEquals");function r(s){e(s!==null);const i=[];for(let E of s.split(","))E=E.trim(),t(E)&&i.push(E);return i}return o(r,"getFieldValues"),util$4={urlEquals:n,getFieldValues:r},util$4}o(requireUtil$3,"requireUtil$3");var cache,hasRequiredCache;function requireCache(){var w,U,qe,B,$A,G,wt,d,je;if(hasRequiredCache)return cache;hasRequiredCache=1;const{kConstruct:e}=requireSymbols$1(),{urlEquals:A,getFieldValues:t}=requireUtil$3(),{kEnumerableProperty:n,isDisturbed:r}=util$m,{webidl:s}=requireWebidl(),{Response:i,cloneResponse:E,fromInnerResponse:Q}=requireResponse(),{Request:C,fromInnerRequest:I}=requireRequest(),{kState:a}=requireSymbols$3(),{fetching:f}=requireFetch(),{urlIsHttpHttpsScheme:h,createDeferredPromise:L,readAllBytes:c}=requireUtil$5(),l=require$$0__default,N=class N{constructor(){CA(this,U);CA(this,B);CA(this,G);CA(this,d);CA(this,w,void 0);arguments[0]!==e&&s.illegalConstructor(),EA(this,w,arguments[1])}async match(b,m={}){s.brandCheck(this,N),s.argumentLengthCheck(arguments,1,{header:"Cache.match"}),b=s.converters.RequestInfo(b),m=s.converters.CacheQueryOptions(m);const T=kA(this,d,je).call(this,b,m,1);if(T.length!==0)return T[0]}async matchAll(b=void 0,m={}){return s.brandCheck(this,N),b!==void 0&&(b=s.converters.RequestInfo(b)),m=s.converters.CacheQueryOptions(m),kA(this,d,je).call(this,b,m)}async add(b){s.brandCheck(this,N),s.argumentLengthCheck(arguments,1,{header:"Cache.add"}),b=s.converters.RequestInfo(b);const m=[b];return await this.addAll(m)}async addAll(b){s.brandCheck(this,N),s.argumentLengthCheck(arguments,1,{header:"Cache.addAll"});const m=[],T=[];for(let X of b){if(X===void 0)throw s.errors.conversionFailed({prefix:"Cache.addAll",argument:"Argument 1",types:["undefined is not allowed"]});if(X=s.converters.RequestInfo(X),typeof X=="string")continue;const $=X[a];if(!h($.url)||$.method!=="GET")throw s.errors.exception({header:"Cache.addAll",message:"Expected http/s scheme when method is not GET."})}const v=[];for(const X of b){const $=new C(X)[a];if(!h($.url))throw s.errors.exception({header:"Cache.addAll",message:"Expected http/s scheme."});$.initiator="fetch",$.destination="subresource",T.push($);const V=L();v.push(f({request:$,processResponse(q){if(q.type==="error"||q.status===206||q.status<200||q.status>299)V.reject(s.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}));else if(q.headersList.contains("vary")){const z=t(q.headersList.get("vary"));for(const rA of z)if(rA==="*"){V.reject(s.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(const iA of v)iA.abort();return}}},processResponseEndOfBody(q){if(q.aborted){V.reject(new DOMException("aborted","AbortError"));return}V.resolve(q)}})),m.push(V.promise)}const P=await Promise.all(m),AA=[];let K=0;for(const X of P){const $={type:"put",request:T[K],response:X};AA.push($),K++}const tA=L();let aA=null;try{kA(this,U,qe).call(this,AA)}catch(X){aA=X}return queueMicrotask(()=>{aA===null?tA.resolve(void 0):tA.reject(aA)}),tA.promise}async put(b,m){s.brandCheck(this,N),s.argumentLengthCheck(arguments,2,{header:"Cache.put"}),b=s.converters.RequestInfo(b),m=s.converters.Response(m);let T=null;if(b instanceof C?T=b[a]:T=new C(b)[a],!h(T.url)||T.method!=="GET")throw s.errors.exception({header:"Cache.put",message:"Expected an http/s scheme when method is not GET"});const v=m[a];if(v.status===206)throw s.errors.exception({header:"Cache.put",message:"Got 206 status"});if(v.headersList.contains("vary")){const $=t(v.headersList.get("vary"));for(const V of $)if(V==="*")throw s.errors.exception({header:"Cache.put",message:"Got * vary field value"})}if(v.body&&(r(v.body.stream)||v.body.stream.locked))throw s.errors.exception({header:"Cache.put",message:"Response body is locked or disturbed"});const Z=E(v),P=L();if(v.body!=null){const V=v.body.stream.getReader();c(V).then(P.resolve,P.reject)}else P.resolve(void 0);const AA=[],K={type:"put",request:T,response:Z};AA.push(K);const tA=await P.promise;Z.body!=null&&(Z.body.source=tA);const aA=L();let X=null;try{kA(this,U,qe).call(this,AA)}catch($){X=$}return queueMicrotask(()=>{X===null?aA.resolve():aA.reject(X)}),aA.promise}async delete(b,m={}){s.brandCheck(this,N),s.argumentLengthCheck(arguments,1,{header:"Cache.delete"}),b=s.converters.RequestInfo(b),m=s.converters.CacheQueryOptions(m);let T=null;if(b instanceof C){if(T=b[a],T.method!=="GET"&&!m.ignoreMethod)return!1}else l(typeof b=="string"),T=new C(b)[a];const v=[],Z={type:"delete",request:T,options:m};v.push(Z);const P=L();let AA=null,K;try{K=kA(this,U,qe).call(this,v)}catch(tA){AA=tA}return queueMicrotask(()=>{AA===null?P.resolve(!!K?.length):P.reject(AA)}),P.promise}async keys(b=void 0,m={}){s.brandCheck(this,N),b!==void 0&&(b=s.converters.RequestInfo(b)),m=s.converters.CacheQueryOptions(m);let T=null;if(b!==void 0)if(b instanceof C){if(T=b[a],T.method!=="GET"&&!m.ignoreMethod)return[]}else typeof b=="string"&&(T=new C(b)[a]);const v=L(),Z=[];if(b===void 0)for(const P of p(this,w))Z.push(P[0]);else{const P=kA(this,B,$A).call(this,T,m);for(const AA of P)Z.push(AA[0])}return queueMicrotask(()=>{const P=[];for(const AA of Z){const K=I(AA,new AbortController().signal,"immutable",{settingsObject:AA.client});P.push(K)}v.resolve(Object.freeze(P))}),v.promise}};w=new WeakMap,U=new WeakSet,qe=o(function(b){const m=p(this,w),T=[...m],v=[],Z=[];try{for(const P of b){if(P.type!=="delete"&&P.type!=="put")throw s.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'});if(P.type==="delete"&&P.response!=null)throw s.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"});if(kA(this,B,$A).call(this,P.request,P.options,v).length)throw new DOMException("???","InvalidStateError");let AA;if(P.type==="delete"){if(AA=kA(this,B,$A).call(this,P.request,P.options),AA.length===0)return[];for(const K of AA){const tA=m.indexOf(K);l(tA!==-1),m.splice(tA,1)}}else if(P.type==="put"){if(P.response==null)throw s.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"});const K=P.request;if(!h(K.url))throw s.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"});if(K.method!=="GET")throw s.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"});if(P.options!=null)throw s.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"});AA=kA(this,B,$A).call(this,P.request);for(const tA of AA){const aA=m.indexOf(tA);l(aA!==-1),m.splice(aA,1)}m.push([P.request,P.response]),v.push([P.request,P.response])}Z.push([P.request,P.response])}return Z}catch(P){throw p(this,w).length=0,EA(this,w,T),P}},"#batchCacheOperations"),B=new WeakSet,$A=o(function(b,m,T){const v=[],Z=T??p(this,w);for(const P of Z){const[AA,K]=P;kA(this,G,wt).call(this,b,AA,K,m)&&v.push(P)}return v},"#queryCache"),G=new WeakSet,wt=o(function(b,m,T=null,v){const Z=new URL(b.url),P=new URL(m.url);if(v?.ignoreSearch&&(P.search="",Z.search=""),!A(Z,P,!0))return!1;if(T==null||v?.ignoreVary||!T.headersList.contains("vary"))return!0;const AA=t(T.headersList.get("vary"));for(const K of AA){if(K==="*")return!1;const tA=m.headersList.get(K),aA=b.headersList.get(K);if(tA!==aA)return!1}return!0},"#requestMatchesCachedItem"),d=new WeakSet,je=o(function(b,m,T=1/0){let v=null;if(b!==void 0)if(b instanceof C){if(v=b[a],v.method!=="GET"&&!m.ignoreMethod)return[]}else typeof b=="string"&&(v=new C(b)[a]);const Z=[];if(b===void 0)for(const AA of p(this,w))Z.push(AA[1]);else{const AA=kA(this,B,$A).call(this,v,m);for(const K of AA)Z.push(K[1])}const P=[];for(const AA of Z){const K=Q(AA,"immutable",{settingsObject:{}});if(P.push(K.clone()),P.length>=T)break}return Object.freeze(P)},"#internalMatchAll"),o(N,"Cache");let S=N;Object.defineProperties(S.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:!0},match:n,matchAll:n,add:n,addAll:n,put:n,delete:n,keys:n});const k=[{key:"ignoreSearch",converter:s.converters.boolean,defaultValue:!1},{key:"ignoreMethod",converter:s.converters.boolean,defaultValue:!1},{key:"ignoreVary",converter:s.converters.boolean,defaultValue:!1}];return s.converters.CacheQueryOptions=s.dictionaryConverter(k),s.converters.MultiCacheQueryOptions=s.dictionaryConverter([...k,{key:"cacheName",converter:s.converters.DOMString}]),s.converters.Response=s.interfaceConverter(i),s.converters["sequence"]=s.sequenceConverter(s.converters.RequestInfo),cache={Cache:S},cache}o(requireCache,"requireCache");var cachestorage,hasRequiredCachestorage;function requireCachestorage(){var s;if(hasRequiredCachestorage)return cachestorage;hasRequiredCachestorage=1;const{kConstruct:e}=requireSymbols$1(),{Cache:A}=requireCache(),{webidl:t}=requireWebidl(),{kEnumerableProperty:n}=util$m,i=class i{constructor(){CA(this,s,new Map);arguments[0]!==e&&t.illegalConstructor()}async match(Q,C={}){if(t.brandCheck(this,i),t.argumentLengthCheck(arguments,1,{header:"CacheStorage.match"}),Q=t.converters.RequestInfo(Q),C=t.converters.MultiCacheQueryOptions(C),C.cacheName!=null){if(p(this,s).has(C.cacheName)){const I=p(this,s).get(C.cacheName);return await new A(e,I).match(Q,C)}}else for(const I of p(this,s).values()){const f=await new A(e,I).match(Q,C);if(f!==void 0)return f}}async has(Q){return t.brandCheck(this,i),t.argumentLengthCheck(arguments,1,{header:"CacheStorage.has"}),Q=t.converters.DOMString(Q),p(this,s).has(Q)}async open(Q){if(t.brandCheck(this,i),t.argumentLengthCheck(arguments,1,{header:"CacheStorage.open"}),Q=t.converters.DOMString(Q),p(this,s).has(Q)){const I=p(this,s).get(Q);return new A(e,I)}const C=[];return p(this,s).set(Q,C),new A(e,C)}async delete(Q){return t.brandCheck(this,i),t.argumentLengthCheck(arguments,1,{header:"CacheStorage.delete"}),Q=t.converters.DOMString(Q),p(this,s).delete(Q)}async keys(){return t.brandCheck(this,i),[...p(this,s).keys()]}};s=new WeakMap,o(i,"CacheStorage");let r=i;return Object.defineProperties(r.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:!0},match:n,has:n,open:n,delete:n,keys:n}),cachestorage={CacheStorage:r},cachestorage}o(requireCachestorage,"requireCachestorage");var constants$1,hasRequiredConstants$1;function requireConstants$1(){return hasRequiredConstants$1||(hasRequiredConstants$1=1,constants$1={maxAttributeValueSize:1024,maxNameValuePairSize:4096}),constants$1}o(requireConstants$1,"requireConstants$1");var util$3,hasRequiredUtil$2;function requireUtil$2(){if(hasRequiredUtil$2)return util$3;hasRequiredUtil$2=1;const e=require$$0__default,{kHeadersList:A}=symbols$4;function t(c){for(let l=0;l=0&&S<=8||S>=10&&S<=31||S===127)return!0}return!1}o(t,"isCTLExcludingHtab");function n(c){for(let l=0;l126||S===34||S===40||S===41||S===60||S===62||S===64||S===44||S===59||S===58||S===92||S===47||S===91||S===93||S===63||S===61||S===123||S===125)throw new Error("Invalid cookie name")}}o(n,"validateCookieName");function r(c){let l=c.length,S=0;if(c[0]==='"'){if(l===1||c[l-1]!=='"')throw new Error("Invalid cookie value");--l,++S}for(;S126||k===34||k===44||k===59||k===92)throw new Error("Invalid cookie value")}}o(r,"validateCookieValue");function s(c){for(let l=0;ll.toString().padStart(2,"0"));function I(c){return typeof c=="number"&&(c=new Date(c)),`${E[c.getUTCDay()]}, ${C[c.getUTCDate()]} ${Q[c.getUTCMonth()]} ${c.getUTCFullYear()} ${C[c.getUTCHours()]}:${C[c.getUTCMinutes()]}:${C[c.getUTCSeconds()]} GMT`}o(I,"toIMFDate");function a(c){if(c<0)throw new Error("Invalid cookie max-age")}o(a,"validateCookieMaxAge");function f(c){if(c.name.length===0)return null;n(c.name),r(c.value);const l=[`${c.name}=${c.value}`];c.name.startsWith("__Secure-")&&(c.secure=!0),c.name.startsWith("__Host-")&&(c.secure=!0,c.domain=null,c.path="/"),c.secure&&l.push("Secure"),c.httpOnly&&l.push("HttpOnly"),typeof c.maxAge=="number"&&(a(c.maxAge),l.push(`Max-Age=${c.maxAge}`)),c.domain&&(i(c.domain),l.push(`Domain=${c.domain}`)),c.path&&(s(c.path),l.push(`Path=${c.path}`)),c.expires&&c.expires.toString()!=="Invalid Date"&&l.push(`Expires=${I(c.expires)}`),c.sameSite&&l.push(`SameSite=${c.sameSite}`);for(const S of c.unparsed){if(!S.includes("="))throw new Error("Invalid unparsed");const[k,...w]=S.split("=");l.push(`${k.trim()}=${w.join("=")}`)}return l.join("; ")}o(f,"stringify");let h;function L(c){if(c[A])return c[A];h||(h=Object.getOwnPropertySymbols(c).find(S=>S.description==="headers list"),e(h,"Headers cannot be parsed"));const l=c[h];return e(l),l}return o(L,"getHeadersList"),util$3={isCTLExcludingHtab:t,validateCookieName:n,validateCookiePath:s,validateCookieValue:r,toIMFDate:I,stringify:f,getHeadersList:L},util$3}o(requireUtil$2,"requireUtil$2");var parse,hasRequiredParse;function requireParse(){if(hasRequiredParse)return parse;hasRequiredParse=1;const{maxNameValuePairSize:e,maxAttributeValueSize:A}=requireConstants$1(),{isCTLExcludingHtab:t}=requireUtil$2(),{collectASequenceOfCodePointsFast:n}=requireDataUrl(),r=require$$0__default;function s(E){if(t(E))return null;let Q="",C="",I="",a="";if(E.includes(";")){const f={position:0};Q=n(";",E,f),C=E.slice(f.position)}else Q=E;if(!Q.includes("="))a=Q;else{const f={position:0};I=n("=",Q,f),a=Q.slice(f.position+1)}return I=I.trim(),a=a.trim(),I.length+a.length>e?null:{name:I,value:a,...i(C)}}o(s,"parseSetCookie");function i(E,Q={}){if(E.length===0)return Q;r(E[0]===";"),E=E.slice(1);let C="";E.includes(";")?(C=n(";",E,{position:0}),E=E.slice(C.length)):(C=E,E="");let I="",a="";if(C.includes("=")){const h={position:0};I=n("=",C,h),a=C.slice(h.position+1)}else I=C;if(I=I.trim(),a=a.trim(),a.length>A)return i(E,Q);const f=I.toLowerCase();if(f==="expires"){const h=new Date(a);Q.expires=h}else if(f==="max-age"){const h=a.charCodeAt(0);if((h<48||h>57)&&a[0]!=="-"||!/^\d+$/.test(a))return i(E,Q);const L=Number(a);Q.maxAge=L}else if(f==="domain"){let h=a;h[0]==="."&&(h=h.slice(1)),h=h.toLowerCase(),Q.domain=h}else if(f==="path"){let h="";a.length===0||a[0]!=="/"?h="/":h=a,Q.path=h}else if(f==="secure")Q.secure=!0;else if(f==="httponly")Q.httpOnly=!0;else if(f==="samesite"){let h="Default";const L=a.toLowerCase();L.includes("none")&&(h="None"),L.includes("strict")&&(h="Strict"),L.includes("lax")&&(h="Lax"),Q.sameSite=h}else Q.unparsed??(Q.unparsed=[]),Q.unparsed.push(`${I}=${a}`);return i(E,Q)}return o(i,"parseUnparsedAttributes"),parse={parseSetCookie:s,parseUnparsedAttributes:i},parse}o(requireParse,"requireParse");var cookies,hasRequiredCookies;function requireCookies(){if(hasRequiredCookies)return cookies;hasRequiredCookies=1;const{parseSetCookie:e}=requireParse(),{stringify:A,getHeadersList:t}=requireUtil$2(),{webidl:n}=requireWebidl(),{Headers:r}=requireHeaders();function s(C){n.argumentLengthCheck(arguments,1,{header:"getCookies"}),n.brandCheck(C,r,{strict:!1});const I=C.get("cookie"),a={};if(!I)return a;for(const f of I.split(";")){const[h,...L]=f.split("=");a[h.trim()]=L.join("=")}return a}o(s,"getCookies");function i(C,I,a){n.argumentLengthCheck(arguments,2,{header:"deleteCookie"}),n.brandCheck(C,r,{strict:!1}),I=n.converters.DOMString(I),a=n.converters.DeleteCookieAttributes(a),Q(C,{name:I,value:"",expires:new Date(0),...a})}o(i,"deleteCookie");function E(C){n.argumentLengthCheck(arguments,1,{header:"getSetCookies"}),n.brandCheck(C,r,{strict:!1});const I=t(C).cookies;return I?I.map(a=>e(Array.isArray(a)?a[1]:a)):[]}o(E,"getSetCookies");function Q(C,I){n.argumentLengthCheck(arguments,2,{header:"setCookie"}),n.brandCheck(C,r,{strict:!1}),I=n.converters.Cookie(I);const a=A(I);a&&C.append("Set-Cookie",a)}return o(Q,"setCookie"),n.converters.DeleteCookieAttributes=n.dictionaryConverter([{converter:n.nullableConverter(n.converters.DOMString),key:"path",defaultValue:null},{converter:n.nullableConverter(n.converters.DOMString),key:"domain",defaultValue:null}]),n.converters.Cookie=n.dictionaryConverter([{converter:n.converters.DOMString,key:"name"},{converter:n.converters.DOMString,key:"value"},{converter:n.nullableConverter(C=>typeof C=="number"?n.converters["unsigned long long"](C):new Date(C)),key:"expires",defaultValue:null},{converter:n.nullableConverter(n.converters["long long"]),key:"maxAge",defaultValue:null},{converter:n.nullableConverter(n.converters.DOMString),key:"domain",defaultValue:null},{converter:n.nullableConverter(n.converters.DOMString),key:"path",defaultValue:null},{converter:n.nullableConverter(n.converters.boolean),key:"secure",defaultValue:null},{converter:n.nullableConverter(n.converters.boolean),key:"httpOnly",defaultValue:null},{converter:n.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:n.sequenceConverter(n.converters.DOMString),key:"unparsed",defaultValue:[]}]),cookies={getCookies:s,deleteCookie:i,getSetCookies:E,setCookie:Q},cookies}o(requireCookies,"requireCookies");var events,hasRequiredEvents;function requireEvents(){var E,C,a;if(hasRequiredEvents)return events;hasRequiredEvents=1;const{webidl:e}=requireWebidl(),{kEnumerableProperty:A}=util$m,{MessagePort:t}=require$$2__default,Q=class Q extends Event{constructor(c,l={}){e.argumentLengthCheck(arguments,1,{header:"MessageEvent constructor"}),c=e.converters.DOMString(c),l=e.converters.MessageEventInit(l);super(c,l);CA(this,E,void 0);EA(this,E,l)}get data(){return e.brandCheck(this,Q),p(this,E).data}get origin(){return e.brandCheck(this,Q),p(this,E).origin}get lastEventId(){return e.brandCheck(this,Q),p(this,E).lastEventId}get source(){return e.brandCheck(this,Q),p(this,E).source}get ports(){return e.brandCheck(this,Q),Object.isFrozen(p(this,E).ports)||Object.freeze(p(this,E).ports),p(this,E).ports}initMessageEvent(c,l=!1,S=!1,k=null,w="",U="",M=null,B=[]){return e.brandCheck(this,Q),e.argumentLengthCheck(arguments,1,{header:"MessageEvent.initMessageEvent"}),new Q(c,{bubbles:l,cancelable:S,data:k,origin:w,lastEventId:U,source:M,ports:B})}};E=new WeakMap,o(Q,"MessageEvent");let n=Q;const I=class I extends Event{constructor(c,l={}){e.argumentLengthCheck(arguments,1,{header:"CloseEvent constructor"}),c=e.converters.DOMString(c),l=e.converters.CloseEventInit(l);super(c,l);CA(this,C,void 0);EA(this,C,l)}get wasClean(){return e.brandCheck(this,I),p(this,C).wasClean}get code(){return e.brandCheck(this,I),p(this,C).code}get reason(){return e.brandCheck(this,I),p(this,C).reason}};C=new WeakMap,o(I,"CloseEvent");let r=I;const f=class f extends Event{constructor(c,l){e.argumentLengthCheck(arguments,1,{header:"ErrorEvent constructor"});super(c,l);CA(this,a,void 0);c=e.converters.DOMString(c),l=e.converters.ErrorEventInit(l??{}),EA(this,a,l)}get message(){return e.brandCheck(this,f),p(this,a).message}get filename(){return e.brandCheck(this,f),p(this,a).filename}get lineno(){return e.brandCheck(this,f),p(this,a).lineno}get colno(){return e.brandCheck(this,f),p(this,a).colno}get error(){return e.brandCheck(this,f),p(this,a).error}};a=new WeakMap,o(f,"ErrorEvent");let s=f;Object.defineProperties(n.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:!0},data:A,origin:A,lastEventId:A,source:A,ports:A,initMessageEvent:A}),Object.defineProperties(r.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:!0},reason:A,code:A,wasClean:A}),Object.defineProperties(s.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:!0},message:A,filename:A,lineno:A,colno:A,error:A}),e.converters.MessagePort=e.interfaceConverter(t),e.converters["sequence"]=e.sequenceConverter(e.converters.MessagePort);const i=[{key:"bubbles",converter:e.converters.boolean,defaultValue:!1},{key:"cancelable",converter:e.converters.boolean,defaultValue:!1},{key:"composed",converter:e.converters.boolean,defaultValue:!1}];return e.converters.MessageEventInit=e.dictionaryConverter([...i,{key:"data",converter:e.converters.any,defaultValue:null},{key:"origin",converter:e.converters.USVString,defaultValue:""},{key:"lastEventId",converter:e.converters.DOMString,defaultValue:""},{key:"source",converter:e.nullableConverter(e.converters.MessagePort),defaultValue:null},{key:"ports",converter:e.converters["sequence"],get defaultValue(){return[]}}]),e.converters.CloseEventInit=e.dictionaryConverter([...i,{key:"wasClean",converter:e.converters.boolean,defaultValue:!1},{key:"code",converter:e.converters["unsigned short"],defaultValue:0},{key:"reason",converter:e.converters.USVString,defaultValue:""}]),e.converters.ErrorEventInit=e.dictionaryConverter([...i,{key:"message",converter:e.converters.DOMString,defaultValue:""},{key:"filename",converter:e.converters.USVString,defaultValue:""},{key:"lineno",converter:e.converters["unsigned long"],defaultValue:0},{key:"colno",converter:e.converters["unsigned long"],defaultValue:0},{key:"error",converter:e.converters.any}]),events={MessageEvent:n,CloseEvent:r,ErrorEvent:s},events}o(requireEvents,"requireEvents");var constants,hasRequiredConstants;function requireConstants(){if(hasRequiredConstants)return constants;hasRequiredConstants=1;const e="258EAFA5-E914-47DA-95CA-C5AB0DC85B11",A={enumerable:!0,writable:!1,configurable:!1},t={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},n={NOT_SENT:0,PROCESSING:1,SENT:2},r={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},s=2**16-1,i={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},E=Buffer.allocUnsafe(0);return constants={uid:e,sentCloseFrameState:n,staticPropertyDescriptors:A,states:t,opcodes:r,maxUnsigned16Bit:s,parserStates:i,emptyBuffer:E},constants}o(requireConstants,"requireConstants");var symbols,hasRequiredSymbols;function requireSymbols(){return hasRequiredSymbols||(hasRequiredSymbols=1,symbols={kWebSocketURL:Symbol("url"),kReadyState:Symbol("ready state"),kController:Symbol("controller"),kResponse:Symbol("response"),kBinaryType:Symbol("binary type"),kSentClose:Symbol("sent close"),kReceivedClose:Symbol("received close"),kByteParser:Symbol("byte parser")}),symbols}o(requireSymbols,"requireSymbols");var util$2,hasRequiredUtil$1;function requireUtil$1(){if(hasRequiredUtil$1)return util$2;hasRequiredUtil$1=1;const{kReadyState:e,kController:A,kResponse:t,kBinaryType:n,kWebSocketURL:r}=requireSymbols(),{states:s,opcodes:i}=requireConstants(),{MessageEvent:E,ErrorEvent:Q}=requireEvents(),{isUtf8:C}=require$$6__default;function I(B){return B[e]===s.CONNECTING}o(I,"isConnecting");function a(B){return B[e]===s.OPEN}o(a,"isEstablished");function f(B){return B[e]===s.CLOSING}o(f,"isClosing");function h(B){return B[e]===s.CLOSED}o(h,"isClosed");function L(B,D,G=Event,g={}){const d=new G(B,g);D.dispatchEvent(d)}o(L,"fireEvent");function c(B,D,G){if(B[e]!==s.OPEN)return;let g;if(D===i.TEXT)try{g=M(G)}catch{k(B,"Received invalid UTF-8 in text frame.");return}else D===i.BINARY&&(B[n]==="blob"?g=new Blob([G]):g=new Uint8Array(G).buffer);L("message",B,E,{origin:B[r].origin,data:g})}o(c,"websocketMessageReceived");function l(B){if(B.length===0)return!1;for(let D=0;D126||G===34||G===40||G===41||G===44||G===47||G===58||G===59||G===60||G===61||G===62||G===63||G===64||G===91||G===92||G===93||G===123||G===125)return!1}return!0}o(l,"isValidSubprotocol");function S(B){return B>=1e3&&B<1015?B!==1004&&B!==1005&&B!==1006:B>=3e3&&B<=4999}o(S,"isValidStatusCode");function k(B,D){const{[A]:G,[t]:g}=B;G.abort(),g?.socket&&!g.socket.destroyed&&g.socket.destroy(),D&&L("error",B,Q,{error:new Error(D)})}o(k,"failWebsocketConnection");const w=typeof process.versions.icu=="string",U=w?new TextDecoder("utf-8",{fatal:!0}):void 0;function M(B){if(w)return U.decode(B);if(!C?.(B))throw C||process.emitWarning("ICU is not supported and no fallback exists. Please upgrade to at least Node v18.14.0.",{code:"UNDICI-WS-NO-ICU"}),new TypeError("Invalid utf-8 received.");return B.toString("utf-8")}return o(M,"utf8Decode"),util$2={isConnecting:I,isEstablished:a,isClosing:f,isClosed:h,fireEvent:L,isValidSubprotocol:l,isValidStatusCode:S,failWebsocketConnection:k,websocketMessageReceived:c,utf8Decode:M},util$2}o(requireUtil$1,"requireUtil$1");var connection,hasRequiredConnection;function requireConnection(){if(hasRequiredConnection)return connection;hasRequiredConnection=1;const{uid:e,states:A,sentCloseFrameState:t}=requireConstants(),{kReadyState:n,kSentClose:r,kByteParser:s,kReceivedClose:i}=requireSymbols(),{fireEvent:E,failWebsocketConnection:Q}=requireUtil$1(),{channels:C}=diagnostics,{CloseEvent:I}=requireEvents(),{makeRequest:a}=requireRequest(),{fetching:f}=requireFetch(),{Headers:h}=requireHeaders(),{getDecodeSplit:L}=requireUtil$5(),{kHeadersList:c}=symbols$4;let l;try{l=require("node:crypto")}catch{}function S(M,B,D,G,g){const d=M;d.protocol=M.protocol==="ws:"?"http:":"https:";const F=a({urlList:[d],serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(g.headers){const m=new h(g.headers)[c];F.headersList=m}const N=l.randomBytes(16).toString("base64");F.headersList.append("sec-websocket-key",N),F.headersList.append("sec-websocket-version","13");for(const m of B)F.headersList.append("sec-websocket-protocol",m);const u="";return f({request:F,useParallelQueue:!0,dispatcher:g.dispatcher,processResponse(m){if(m.type==="error"||m.status!==101){Q(D,"Received network error or non-101 status code.");return}if(B.length!==0&&!m.headersList.get("Sec-WebSocket-Protocol")){Q(D,"Server did not respond with sent protocols.");return}if(m.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){Q(D,'Server did not set Upgrade header to "websocket".');return}if(m.headersList.get("Connection")?.toLowerCase()!=="upgrade"){Q(D,'Server did not set Connection header to "upgrade".');return}const T=m.headersList.get("Sec-WebSocket-Accept"),v=l.createHash("sha1").update(N+e).digest("base64");if(T!==v){Q(D,"Incorrect hash received in Sec-WebSocket-Accept header.");return}const Z=m.headersList.get("Sec-WebSocket-Extensions");if(Z!==null&&Z!==u){Q(D,"Received different permessage-deflate than the one set.");return}const P=m.headersList.get("Sec-WebSocket-Protocol");if(P!==null&&!L("sec-websocket-protocol",F.headersList).includes(P)){Q(D,"Protocol was not set in the opening handshake.");return}m.socket.on("data",k),m.socket.on("close",w),m.socket.on("error",U),C.open.hasSubscribers&&C.open.publish({address:m.socket.address(),protocol:P,extensions:Z}),G(m)}})}o(S,"establishWebSocketConnection");function k(M){this.ws[s].write(M)||this.pause()}o(k,"onSocketData");function w(){const{ws:M}=this,B=M[r]===t.SENT&&M[i];let D=1005,G="";const g=M[s].closingInfo;g?(D=g.code??1005,G=g.reason):M[r]!==t.SENT&&(D=1006),M[n]=A.CLOSED,E("close",M,I,{wasClean:B,code:D,reason:G}),C.close.hasSubscribers&&C.close.publish({websocket:M,code:D,reason:G})}o(w,"onSocketClose");function U(M){const{ws:B}=this;B[n]=A.CLOSING,C.socketError.hasSubscribers&&C.socketError.publish(M),this.destroy()}return o(U,"onSocketError"),connection={establishWebSocketConnection:S},connection}o(requireConnection,"requireConnection");var frame,hasRequiredFrame;function requireFrame(){if(hasRequiredFrame)return frame;hasRequiredFrame=1;const{maxUnsigned16Bit:e}=requireConstants();let A;try{A=require("node:crypto")}catch{}const n=class n{constructor(s){this.frameData=s,this.maskKey=A.randomBytes(4)}createFrame(s){const i=this.frameData?.byteLength??0;let E=i,Q=6;i>e?(Q+=8,E=127):i>125&&(Q+=2,E=126);const C=Buffer.allocUnsafe(i+Q);C[0]=C[1]=0,C[0]|=128,C[0]=(C[0]&240)+s;/*! ws. MIT License. Einar Otto Stangvik */C[Q-4]=this.maskKey[0],C[Q-3]=this.maskKey[1],C[Q-2]=this.maskKey[2],C[Q-1]=this.maskKey[3],C[1]=E,E===126?C.writeUInt16BE(i,2):E===127&&(C[2]=C[3]=0,C.writeUIntBE(i,4,6)),C[1]|=128;for(let I=0;I125){f(this.ws,"Fragmented frame exceeded 125 bytes.");return}else if((p(this,U).opcode===t.PING||p(this,U).opcode===t.PONG||p(this,U).opcode===t.CLOSE)&&N>125){f(this.ws,"Payload length for control frame exceeded 125 bytes.");return}else if(p(this,U).opcode===t.CLOSE){if(N===1){f(this.ws,"Received close frame with a 1-byte body.");return}const u=this.consume(N);if(p(this,U).closeInfo=this.parseCloseBody(u),this.ws[E]!==s.SENT){let b=r;p(this,U).closeInfo.code&&(b=Buffer.allocUnsafe(2),b.writeUInt16BE(p(this,U).closeInfo.code,0));const m=new c(b);this.ws[Q].socket.write(m.createFrame(t.CLOSE),T=>{T||(this.ws[E]=s.SENT)})}this.ws[i]=n.CLOSING,this.ws[C]=!0,this.end();return}else if(p(this,U).opcode===t.PING){const u=this.consume(N);if(!this.ws[C]){const b=new c(u);this.ws[Q].socket.write(b.createFrame(t.PONG)),I.ping.hasSubscribers&&I.ping.publish({payload:u})}if(EA(this,w,A.INFO),p(this,k)>0)continue;g();return}else if(p(this,U).opcode===t.PONG){const u=this.consume(N);if(I.pong.hasSubscribers&&I.pong.publish({payload:u}),p(this,k)>0)continue;g();return}}else if(p(this,w)===A.PAYLOADLENGTH_16){if(p(this,k)<2)return g();const F=this.consume(2);p(this,U).payloadLength=F.readUInt16BE(0),EA(this,w,A.READ_DATA)}else if(p(this,w)===A.PAYLOADLENGTH_64){if(p(this,k)<8)return g();const F=this.consume(8),N=F.readUInt32BE(0);if(N>2**31-1){f(this.ws,"Received payload length > 2^31 bytes.");return}const u=F.readUInt32BE(4);p(this,U).payloadLength=(N<<8)+u,EA(this,w,A.READ_DATA)}else if(p(this,w)===A.READ_DATA){if(p(this,k)=p(this,U).payloadLength){const F=this.consume(p(this,U).payloadLength);if(p(this,M).push(F),!p(this,U).fragmented||p(this,U).fin&&p(this,U).opcode===t.CONTINUATION){const N=Buffer.concat(p(this,M));h(this.ws,p(this,U).originalOpcode,N),EA(this,U,{}),p(this,M).length=0}EA(this,w,A.INFO)}}if(p(this,k)===0){g();break}}}consume(g){if(g>p(this,k))return null;if(g===0)return r;if(p(this,S)[0].length===g)return EA(this,k,p(this,k)-p(this,S)[0].length),p(this,S).shift();const d=Buffer.allocUnsafe(g);let F=0;for(;F!==g;){const N=p(this,S)[0],{length:u}=N;if(u+F===g){d.set(p(this,S).shift(),F);break}else if(u+F>g){d.set(N.subarray(0,g-F),F),p(this,S)[0]=N.subarray(g-F);break}else d.set(p(this,S).shift(),F),F+=N.length}return EA(this,k,p(this,k)-g),d}parseCloseBody(g){let d;g.length>=2&&(d=g.readUInt16BE(0));let F=g.subarray(2);if(F[0]===239&&F[1]===187&&F[2]===191&&(F=F.subarray(3)),d!==void 0&&!a(d))return null;try{F=L(F)}catch{return null}return{code:d,reason:F}}get closingInfo(){return p(this,U).closeInfo}};S=new WeakMap,k=new WeakMap,w=new WeakMap,U=new WeakMap,M=new WeakMap,o(B,"ByteParser");let l=B;return receiver={ByteParser:l},receiver}o(requireReceiver,"requireReceiver");var websocket,hasRequiredWebsocket;function requireWebsocket(){var m,T,v,Z,P,kt;if(hasRequiredWebsocket)return websocket;hasRequiredWebsocket=1;const{webidl:e}=requireWebidl(),{URLSerializer:A}=requireDataUrl(),{getGlobalOrigin:t}=requireGlobal(),{staticPropertyDescriptors:n,states:r,sentCloseFrameState:s,opcodes:i,emptyBuffer:E}=requireConstants(),{kWebSocketURL:Q,kReadyState:C,kController:I,kBinaryType:a,kResponse:f,kSentClose:h,kByteParser:L}=requireSymbols(),{isConnecting:c,isEstablished:l,isClosed:S,isClosing:k,isValidSubprotocol:w,failWebsocketConnection:U,fireEvent:M}=requireUtil$1(),{establishWebSocketConnection:B}=requireConnection(),{WebsocketFrameSend:D}=requireFrame(),{ByteParser:G}=requireReceiver(),{kEnumerableProperty:g,isBlobLike:d}=util$m,{getGlobalDispatcher:F}=global,{types:N}=require$$0__default$1;let u=!1;const K=class K extends EventTarget{constructor(X,$=[]){super();CA(this,P);CA(this,m,{open:null,error:null,close:null,message:null});CA(this,T,0);CA(this,v,"");CA(this,Z,"");e.argumentLengthCheck(arguments,1,{header:"WebSocket constructor"}),u||(u=!0,process.emitWarning("WebSockets are experimental, expect them to change at any time.",{code:"UNDICI-WS"}));const V=e.converters["DOMString or sequence or WebSocketInit"]($);X=e.converters.USVString(X),$=V.protocols;const q=t();let z;try{z=new URL(X,q)}catch(rA){throw new DOMException(rA,"SyntaxError")}if(z.protocol==="http:"?z.protocol="ws:":z.protocol==="https:"&&(z.protocol="wss:"),z.protocol!=="ws:"&&z.protocol!=="wss:")throw new DOMException(`Expected a ws: or wss: protocol, got ${z.protocol}`,"SyntaxError");if(z.hash||z.href.endsWith("#"))throw new DOMException("Got fragment","SyntaxError");if(typeof $=="string"&&($=[$]),$.length!==new Set($.map(rA=>rA.toLowerCase())).size)throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if($.length>0&&!$.every(rA=>w(rA)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");this[Q]=new URL(z.href),this[I]=B(z,$,this,rA=>kA(this,P,kt).call(this,rA),V),this[C]=K.CONNECTING,this[h]=s.NOT_SENT,this[a]="blob"}close(X=void 0,$=void 0){if(e.brandCheck(this,K),X!==void 0&&(X=e.converters["unsigned short"](X,{clamp:!0})),$!==void 0&&($=e.converters.USVString($)),X!==void 0&&X!==1e3&&(X<3e3||X>4999))throw new DOMException("invalid code","InvalidAccessError");let V=0;if($!==void 0&&(V=Buffer.byteLength($),V>123))throw new DOMException(`Reason must be less than 123 bytes; received ${V}`,"SyntaxError");if(!(k(this)||S(this)))if(!l(this))U(this,"Connection was closed before it was established."),this[C]=K.CLOSING;else if(this[h]===s.NOT_SENT){this[h]=s.PROCESSING;const q=new D;X!==void 0&&$===void 0?(q.frameData=Buffer.allocUnsafe(2),q.frameData.writeUInt16BE(X,0)):X!==void 0&&$!==void 0?(q.frameData=Buffer.allocUnsafe(2+V),q.frameData.writeUInt16BE(X,0),q.frameData.write($,2,"utf-8")):q.frameData=E,this[f].socket.write(q.createFrame(i.CLOSE),rA=>{rA||(this[h]=s.SENT)}),this[C]=r.CLOSING}else this[C]=K.CLOSING}send(X){if(e.brandCheck(this,K),e.argumentLengthCheck(arguments,1,{header:"WebSocket.send"}),X=e.converters.WebSocketSendData(X),c(this))throw new DOMException("Sent before connected.","InvalidStateError");if(!l(this)||k(this))return;const $=this[f].socket;if(typeof X=="string"){const V=Buffer.from(X),z=new D(V).createFrame(i.TEXT);EA(this,T,p(this,T)+V.byteLength),$.write(z,()=>{EA(this,T,p(this,T)-V.byteLength)})}else if(N.isArrayBuffer(X)){const V=Buffer.from(X),z=new D(V).createFrame(i.BINARY);EA(this,T,p(this,T)+V.byteLength),$.write(z,()=>{EA(this,T,p(this,T)-V.byteLength)})}else if(ArrayBuffer.isView(X)){const V=Buffer.from(X,X.byteOffset,X.byteLength),z=new D(V).createFrame(i.BINARY);EA(this,T,p(this,T)+V.byteLength),$.write(z,()=>{EA(this,T,p(this,T)-V.byteLength)})}else if(d(X)){const V=new D;X.arrayBuffer().then(q=>{const z=Buffer.from(q);V.frameData=z;const rA=V.createFrame(i.BINARY);EA(this,T,p(this,T)+z.byteLength),$.write(rA,()=>{EA(this,T,p(this,T)-z.byteLength)})})}}get readyState(){return e.brandCheck(this,K),this[C]}get bufferedAmount(){return e.brandCheck(this,K),p(this,T)}get url(){return e.brandCheck(this,K),A(this[Q])}get extensions(){return e.brandCheck(this,K),p(this,Z)}get protocol(){return e.brandCheck(this,K),p(this,v)}get onopen(){return e.brandCheck(this,K),p(this,m).open}set onopen(X){e.brandCheck(this,K),p(this,m).open&&this.removeEventListener("open",p(this,m).open),typeof X=="function"?(p(this,m).open=X,this.addEventListener("open",X)):p(this,m).open=null}get onerror(){return e.brandCheck(this,K),p(this,m).error}set onerror(X){e.brandCheck(this,K),p(this,m).error&&this.removeEventListener("error",p(this,m).error),typeof X=="function"?(p(this,m).error=X,this.addEventListener("error",X)):p(this,m).error=null}get onclose(){return e.brandCheck(this,K),p(this,m).close}set onclose(X){e.brandCheck(this,K),p(this,m).close&&this.removeEventListener("close",p(this,m).close),typeof X=="function"?(p(this,m).close=X,this.addEventListener("close",X)):p(this,m).close=null}get onmessage(){return e.brandCheck(this,K),p(this,m).message}set onmessage(X){e.brandCheck(this,K),p(this,m).message&&this.removeEventListener("message",p(this,m).message),typeof X=="function"?(p(this,m).message=X,this.addEventListener("message",X)):p(this,m).message=null}get binaryType(){return e.brandCheck(this,K),this[a]}set binaryType(X){e.brandCheck(this,K),X!=="blob"&&X!=="arraybuffer"?this[a]="blob":this[a]=X}};m=new WeakMap,T=new WeakMap,v=new WeakMap,Z=new WeakMap,P=new WeakSet,kt=o(function(X){this[f]=X;const $=new G(this);$.on("drain",o(function(){this.ws[f].socket.resume()},"onParserDrain")),X.socket.ws=this,this[L]=$,this[C]=r.OPEN;const V=X.headersList.get("sec-websocket-extensions");V!==null&&EA(this,Z,V);const q=X.headersList.get("sec-websocket-protocol");q!==null&&EA(this,v,q),M("open",this)},"#onConnectionEstablished"),o(K,"WebSocket");let b=K;return b.CONNECTING=b.prototype.CONNECTING=r.CONNECTING,b.OPEN=b.prototype.OPEN=r.OPEN,b.CLOSING=b.prototype.CLOSING=r.CLOSING,b.CLOSED=b.prototype.CLOSED=r.CLOSED,Object.defineProperties(b.prototype,{CONNECTING:n,OPEN:n,CLOSING:n,CLOSED:n,url:g,readyState:g,bufferedAmount:g,onopen:g,onerror:g,onclose:g,close:g,onmessage:g,binaryType:g,send:g,extensions:g,protocol:g,[Symbol.toStringTag]:{value:"WebSocket",writable:!1,enumerable:!1,configurable:!0}}),Object.defineProperties(b,{CONNECTING:n,OPEN:n,CLOSING:n,CLOSED:n}),e.converters["sequence"]=e.sequenceConverter(e.converters.DOMString),e.converters["DOMString or sequence"]=function(tA){return e.util.Type(tA)==="Object"&&Symbol.iterator in tA?e.converters["sequence"](tA):e.converters.DOMString(tA)},e.converters.WebSocketInit=e.dictionaryConverter([{key:"protocols",converter:e.converters["DOMString or sequence"],get defaultValue(){return[]}},{key:"dispatcher",converter:tA=>tA,get defaultValue(){return F()}},{key:"headers",converter:e.nullableConverter(e.converters.HeadersInit)}]),e.converters["DOMString or sequence or WebSocketInit"]=function(tA){return e.util.Type(tA)==="Object"&&!(Symbol.iterator in tA)?e.converters.WebSocketInit(tA):{protocols:e.converters["DOMString or sequence"](tA)}},e.converters.WebSocketSendData=function(tA){if(e.util.Type(tA)==="Object"){if(d(tA))return e.converters.Blob(tA,{strict:!1});if(ArrayBuffer.isView(tA)||N.isArrayBuffer(tA))return e.converters.BufferSource(tA)}return e.converters.USVString(tA)},websocket={WebSocket:b},websocket}o(requireWebsocket,"requireWebsocket");var util$1,hasRequiredUtil;function requireUtil(){if(hasRequiredUtil)return util$1;hasRequiredUtil=1;function e(n){return n.indexOf("\0")===-1}o(e,"isValidLastEventId");function A(n){if(n.length===0)return!1;for(let r=0;r57)return!1;return!0}o(A,"isASCIINumber");function t(n){return new Promise(r=>{setTimeout(r,n).unref()})}return o(t,"delay"),util$1={isValidLastEventId:e,isASCIINumber:A,delay:t},util$1}o(requireUtil,"requireUtil");var eventsourceStream,hasRequiredEventsourceStream;function requireEventsourceStream(){if(hasRequiredEventsourceStream)return eventsourceStream;hasRequiredEventsourceStream=1;const{Transform:e}=Stream__default,{isASCIINumber:A,isValidLastEventId:t}=requireUtil(),n=[239,187,191],r=10,s=13,i=58,E=32,C=class C extends e{constructor(f={}){f.readableObjectMode=!0;super(f);NA(this,"state",null);NA(this,"checkBOM",!0);NA(this,"crlfCheck",!1);NA(this,"eventEndCheck",!1);NA(this,"buffer",null);NA(this,"pos",0);NA(this,"event",{data:void 0,event:void 0,id:void 0,retry:void 0});this.state=f.eventSourceSettings||{},f.push&&(this.push=f.push)}_transform(f,h,L){if(f.length===0){L();return}if(this.buffer?this.buffer=Buffer.concat([this.buffer,f]):this.buffer=f,this.checkBOM)switch(this.buffer.length){case 1:if(this.buffer[0]===n[0]){L();return}this.checkBOM=!1,L();return;case 2:if(this.buffer[0]===n[0]&&this.buffer[1]===n[1]){L();return}this.checkBOM=!1;break;case 3:if(this.buffer[0]===n[0]&&this.buffer[1]===n[1]&&this.buffer[2]===n[2]){this.buffer=Buffer.alloc(0),this.checkBOM=!1,L();return}this.checkBOM=!1;break;default:this.buffer[0]===n[0]&&this.buffer[1]===n[1]&&this.buffer[2]===n[2]&&(this.buffer=this.buffer.subarray(3)),this.checkBOM=!1;break}for(;this.pos0&&(h[c]=l);break}}processEvent(f){f.retry&&A(f.retry)&&(this.state.reconnectionTime=parseInt(f.retry,10)),f.id&&t(f.id)&&(this.state.lastEventId=f.id),f.data!==void 0&&this.push({type:f.event||"message",options:{data:f.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event={data:void 0,event:void 0,id:void 0,retry:void 0}}};o(C,"EventSourceStream");let Q=C;return eventsourceStream={EventSourceStream:Q},eventsourceStream}o(requireEventsourceStream,"requireEventsourceStream");var eventsource,hasRequiredEventsource;function requireEventsource(){var U,M,B,D,G,g,d,F,$e,u,_e;if(hasRequiredEventsource)return eventsource;hasRequiredEventsource=1;const{pipeline:e}=Stream__default,{fetching:A}=requireFetch(),{makeRequest:t}=requireRequest(),{getGlobalOrigin:n}=requireGlobal(),{webidl:r}=requireWebidl(),{EventSourceStream:s}=requireEventsourceStream(),{parseMIMEType:i}=requireDataUrl(),{MessageEvent:E}=requireEvents(),{isNetworkError:Q}=requireResponse(),{delay:C}=requireUtil(),{kEnumerableProperty:I}=util$m;let a=!1;const f=3e3,h=0,L=1,c=2,l="anonymous",S="use-credentials",m=class m extends EventTarget{constructor(Z,P={}){super();CA(this,F);CA(this,u);CA(this,U,{open:null,error:null,message:null});CA(this,M,null);CA(this,B,!1);CA(this,D,h);CA(this,G,null);CA(this,g,null);CA(this,d,null);r.argumentLengthCheck(arguments,1,{header:"EventSource constructor"}),a||(a=!0,process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})),Z=r.converters.USVString(Z),P=r.converters.EventSourceInitDict(P),EA(this,d,{origin:n(),policyContainer:{referrerPolicy:"no-referrer"},lastEventId:"",reconnectionTime:f});let AA;try{AA=new URL(Z,p(this,d).origin),p(this,d).origin=AA.origin}catch(aA){throw new DOMException(aA,"SyntaxError")}EA(this,M,AA.href);let K=l;P.withCredentials&&(K=S,EA(this,B,!0));const tA={redirect:"follow",keepalive:!0,mode:"cors",credentials:K==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};tA.client=p(this,d),tA.headersList=[["accept",{name:"accept",value:"text/event-stream"}]],tA.cache="no-store",tA.initiator="other",tA.urlList=[new URL(p(this,M))],EA(this,G,t(tA)),kA(this,F,$e).call(this)}get readyState(){return p(this,D)}get url(){return p(this,M)}get withCredentials(){return p(this,B)}close(){r.brandCheck(this,m),p(this,D)!==c&&(EA(this,D,c),clearTimeout(p(this,d).reconnectionTimer),p(this,g).abort(),p(this,G)&&EA(this,G,null))}get onopen(){return p(this,U).open}set onopen(Z){p(this,U).open&&this.removeEventListener("open",p(this,U).open),typeof Z=="function"?(p(this,U).open=Z,this.addEventListener("open",Z)):p(this,U).open=null}get onmessage(){return p(this,U).message}set onmessage(Z){p(this,U).message&&this.removeEventListener("message",p(this,U).message),typeof Z=="function"?(p(this,U).message=Z,this.addEventListener("message",Z)):p(this,U).message=null}get onerror(){return p(this,U).error}set onerror(Z){p(this,U).error&&this.removeEventListener("error",p(this,U).error),typeof Z=="function"?(p(this,U).error=Z,this.addEventListener("error",Z)):p(this,U).error=null}};U=new WeakMap,M=new WeakMap,B=new WeakMap,D=new WeakMap,G=new WeakMap,g=new WeakMap,d=new WeakMap,F=new WeakSet,$e=o(function(){if(p(this,D)===c)return;EA(this,D,h);const Z={request:p(this,G)},P=o(AA=>{Q(AA)&&(this.dispatchEvent(new Event("error")),this.close()),kA(this,u,_e).call(this)},"processEventSourceEndOfBody");Z.processResponseEndOfBody=P,Z.processResponse=AA=>{if(Q(AA))if(AA.aborted){this.close(),this.dispatchEvent(new Event("error"));return}else{kA(this,u,_e).call(this);return}const K=AA.headersList.get("content-type",!0),tA=K!==null?i(K):"failure",aA=tA!=="failure"&&tA.essence==="text/event-stream";if(AA.status!==200||aA===!1){this.close(),this.dispatchEvent(new Event("error"));return}EA(this,D,L),this.dispatchEvent(new Event("open")),p(this,d).origin=AA.urlList[AA.urlList.length-1].origin;const X=new s({eventSourceSettings:p(this,d),push:$=>{this.dispatchEvent(new E($.type,$.options))}});e(AA.body.stream,X,$=>{$?.aborted===!1&&(this.close(),this.dispatchEvent(new Event("error")))})},EA(this,g,A(Z))},"#connect"),u=new WeakSet,_e=o(async function(){p(this,D)!==c&&(EA(this,D,h),this.dispatchEvent(new Event("error")),await C(p(this,d).reconnectionTime),p(this,D)===h&&(p(this,d).lastEventId!==""&&p(this,G).headersList.set("last-event-id",p(this,d).lastEventId,!0),kA(this,F,$e).call(this)))},"#reconnect"),o(m,"EventSource");let k=m;const w={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:h,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:L,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:c,writable:!1}};return Object.defineProperties(k,w),Object.defineProperties(k.prototype,w),Object.defineProperties(k.prototype,{close:I,onerror:I,onmessage:I,onopen:I,readyState:I,url:I,withCredentials:I}),r.converters.EventSourceInitDict=r.dictionaryConverter([{key:"withCredentials",converter:r.converters.boolean,defaultValue:!1}]),eventsource={EventSource:k,defaultReconnectionTime:f},eventsource}o(requireEventsource,"requireEventsource");const Dispatcher=dispatcher,Agent=agent,ProxyAgent=proxyAgent,errors=errors$1,util=util$m,{InvalidArgumentError}=errors,api=api$1,{getGlobalDispatcher,setGlobalDispatcher}=global;Object.assign(Dispatcher.prototype,api);var Agent_1=Agent,ProxyAgent_1=ProxyAgent;util.parseHeaders,util.headerNameToString;function makeDispatcher(e){return(A,t,n)=>{if(typeof t=="function"&&(n=t,t=null),!A||typeof A!="string"&&typeof A!="object"&&!(A instanceof URL))throw new InvalidArgumentError("invalid url");if(t!=null&&typeof t!="object")throw new InvalidArgumentError("invalid opts");if(t&&t.path!=null){if(typeof t.path!="string")throw new InvalidArgumentError("invalid opts.path");let i=t.path;t.path.startsWith("/")||(i=`/${i}`),A=new URL(util.parseOrigin(A).origin+i)}else t||(t=typeof A=="object"?A:{}),A=util.parseURL(A);const{agent:r,dispatcher:s=getGlobalDispatcher()}=t;if(r)throw new InvalidArgumentError("unsupported opts.agent. Did you mean opts.client?");return e.call(s,{...t,origin:A.origin,path:A.search?`${A.pathname}${A.search}`:A.pathname,method:t.method||(t.body?"PUT":"GET")},n)}}o(makeDispatcher,"makeDispatcher"),requireFetch().fetch,requireHeaders().Headers,requireResponse().Response,requireRequest().Request,requireFormdata().FormData,requireFile().File,requireFilereader().FileReader,requireGlobal();const{CacheStorage}=requireCachestorage(),{kConstruct}=requireSymbols$1();new CacheStorage(kConstruct),requireCookies(),requireDataUrl(),requireEvents(),requireWebsocket().WebSocket,makeDispatcher(api.request),makeDispatcher(api.stream),makeDispatcher(api.pipeline),makeDispatcher(api.connect),makeDispatcher(api.upgrade),requireEventsource(),exports.Agent_1=Agent_1,exports.ProxyAgent_1=ProxyAgent_1; diff --git a/node_modules/node-fetch-native-with-agent/index.d.ts b/node_modules/node-fetch-native-with-agent/index.d.ts new file mode 100644 index 0000000..3746fe0 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/index.d.ts @@ -0,0 +1 @@ +export * from "./lib/index"; diff --git a/node_modules/node-fetch-native-with-agent/lib/agent.d.ts b/node_modules/node-fetch-native-with-agent/lib/agent.d.ts new file mode 100644 index 0000000..78c4b4b --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/lib/agent.d.ts @@ -0,0 +1,24 @@ +import type * as http from "node:http"; +import type * as https from "node:https"; +import type * as undici from "undici"; + +export type AgentOptions = { + /** + * Reject unauthorized TLS certificates, default is `true` + */ + rejectUnauthorized?: boolean; +}; + +export declare const createAgent: ( + uri?: string, + opts?: AgentOptions, +) => { + agent: http.Agent | https.Agent | undefined; + dispatcher: undici.Dispatcher | undefined; +}; + +export declare const createFetch: ( + agentOptions?: AgentOptions, +) => typeof globalThis.fetch; + +export declare const fetch: typeof globalThis.fetch; diff --git a/node_modules/node-fetch-native-with-agent/lib/empty.cjs b/node_modules/node-fetch-native-with-agent/lib/empty.cjs new file mode 100644 index 0000000..e69de29 diff --git a/node_modules/node-fetch-native-with-agent/lib/empty.mjs b/node_modules/node-fetch-native-with-agent/lib/empty.mjs new file mode 100644 index 0000000..e69de29 diff --git a/node_modules/node-fetch-native-with-agent/lib/index.cjs b/node_modules/node-fetch-native-with-agent/lib/index.cjs new file mode 100644 index 0000000..8f25f3d --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/lib/index.cjs @@ -0,0 +1,11 @@ +const nodeFetch = require("../dist/index.cjs"); + +function fetch(input, options) { + return nodeFetch.fetch(input, options); +} + +for (const key in nodeFetch) { + fetch[key] = nodeFetch[key]; +} + +module.exports = fetch; diff --git a/node_modules/node-fetch-native-with-agent/lib/index.d.cts b/node_modules/node-fetch-native-with-agent/lib/index.d.cts new file mode 100644 index 0000000..08fc3f7 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/lib/index.d.cts @@ -0,0 +1,10 @@ +export declare const fetch: typeof globalThis.fetch; +export declare const Blob: typeof globalThis.Blob; +export declare const File: typeof globalThis.File; +export declare const FormData: typeof globalThis.FormData; +export declare const Headers: typeof globalThis.Headers; +export declare const Request: typeof globalThis.Request; +export declare const Response: typeof globalThis.Response; +export declare const AbortController: typeof globalThis.AbortController; + +export default fetch; diff --git a/node_modules/node-fetch-native-with-agent/lib/index.d.mts b/node_modules/node-fetch-native-with-agent/lib/index.d.mts new file mode 100644 index 0000000..08fc3f7 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/lib/index.d.mts @@ -0,0 +1,10 @@ +export declare const fetch: typeof globalThis.fetch; +export declare const Blob: typeof globalThis.Blob; +export declare const File: typeof globalThis.File; +export declare const FormData: typeof globalThis.FormData; +export declare const Headers: typeof globalThis.Headers; +export declare const Request: typeof globalThis.Request; +export declare const Response: typeof globalThis.Response; +export declare const AbortController: typeof globalThis.AbortController; + +export default fetch; diff --git a/node_modules/node-fetch-native-with-agent/lib/index.d.ts b/node_modules/node-fetch-native-with-agent/lib/index.d.ts new file mode 100644 index 0000000..08fc3f7 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/lib/index.d.ts @@ -0,0 +1,10 @@ +export declare const fetch: typeof globalThis.fetch; +export declare const Blob: typeof globalThis.Blob; +export declare const File: typeof globalThis.File; +export declare const FormData: typeof globalThis.FormData; +export declare const Headers: typeof globalThis.Headers; +export declare const Request: typeof globalThis.Request; +export declare const Response: typeof globalThis.Response; +export declare const AbortController: typeof globalThis.AbortController; + +export default fetch; diff --git a/node_modules/node-fetch-native-with-agent/lib/native.cjs b/node_modules/node-fetch-native-with-agent/lib/native.cjs new file mode 100644 index 0000000..eecfaab --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/lib/native.cjs @@ -0,0 +1,11 @@ +const nodeFetch = require("../dist/native.cjs"); + +function fetch(input, options) { + return nodeFetch.fetch(input, options); +} + +for (const key in nodeFetch) { + fetch[key] = nodeFetch[key]; +} + +module.exports = fetch; diff --git a/node_modules/node-fetch-native-with-agent/lib/polyfill.d.cts b/node_modules/node-fetch-native-with-agent/lib/polyfill.d.cts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/lib/polyfill.d.cts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/node-fetch-native-with-agent/lib/polyfill.d.mts b/node_modules/node-fetch-native-with-agent/lib/polyfill.d.mts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/lib/polyfill.d.mts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/node-fetch-native-with-agent/lib/polyfill.d.ts b/node_modules/node-fetch-native-with-agent/lib/polyfill.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/lib/polyfill.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/node-fetch-native-with-agent/lib/proxy.d.ts b/node_modules/node-fetch-native-with-agent/lib/proxy.d.ts new file mode 100644 index 0000000..81228d5 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/lib/proxy.d.ts @@ -0,0 +1,32 @@ +import type * as http from "node:http"; +import type * as https from "node:https"; +import type * as undici from "undici"; + +export type ProxyOptions = { + /** + * HTTP(s) Proxy URL + * + * Default is read from `https_proxy`, `http_proxy`, `HTTPS_PROXY` or `HTTP_PROXY` environment variables + * */ + url?: string; + + /** + * List of hosts to skip proxy for (comma separated or array of strings) + * + * Default is read from `no_proxy` or `NO_PROXY` environment variables + * + * Hots starting with a leading dot, like `.foo.com` are also matched against domain and all its subdomains like `bar.foo.com` + */ + noProxy?: string | string[]; +}; + +export declare const createProxy: (opts?: ProxyOptions) => { + agent: http.Agent | https.Agent | undefined; + dispatcher: undici.Dispatcher | undefined; +}; + +export declare const createFetch: ( + proxyOptions?: ProxyOptions, +) => typeof globalThis.fetch; + +export declare const fetch: typeof globalThis.fetch; diff --git a/node_modules/node-fetch-native-with-agent/node.d.ts b/node_modules/node-fetch-native-with-agent/node.d.ts new file mode 100644 index 0000000..3746fe0 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/node.d.ts @@ -0,0 +1 @@ +export * from "./lib/index"; diff --git a/node_modules/node-fetch-native-with-agent/package.json b/node_modules/node-fetch-native-with-agent/package.json new file mode 100644 index 0000000..1b6a0d3 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/package.json @@ -0,0 +1,155 @@ +{ + "name": "node-fetch-native-with-agent", + "version": "1.7.2", + "description": "Fork of node-fetch-native with support for custom agents", + "repository": "loks0n/node-fetch-native", + "license": "MIT", + "type": "module", + "exports": { + ".": { + "browser": "./dist/native.mjs", + "bun": "./dist/native.mjs", + "deno": "./dist/native.mjs", + "edge-light": "./dist/native.mjs", + "edge-routine": "./dist/native.mjs", + "lagon": "./dist/native.mjs", + "netlify": "./dist/native.mjs", + "react-native": "./dist/native.mjs", + "wintercg": "./dist/native.mjs", + "worker": "./dist/native.mjs", + "workerd": "./dist/native.mjs", + "node": { + "import": { + "types": "./lib/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./lib/index.d.cts", + "default": "./lib/index.cjs" + } + }, + "types": "./lib/index.d.mts", + "import": "./dist/native.mjs", + "require": "./dist/native.cjs", + "default": "./dist/native.mjs" + }, + "./polyfill": { + "node": { + "import": { + "types": "./lib/polyfill.d.mts", + "default": "./dist/polyfill.mjs" + }, + "require": { + "types": "./lib/polyfill.d.cts", + "default": "./dist/polyfill.cjs" + } + }, + "types": "./lib/polyfill.d.mts", + "import": "./lib/empty.mjs", + "require": "./lib/empty.cjs", + "default": "./lib/empty.mjs" + }, + "./node": { + "import": { + "types": "./lib/index.d.mts", + "default": "./dist/node.mjs" + }, + "require": { + "types": "./lib/index.d.cts", + "default": "./dist/node.cjs" + } + }, + "./native": { + "import": { + "types": "./lib/index.d.mts", + "default": "./dist/native.mjs" + }, + "require": { + "types": "./lib/index.d.cts", + "default": "./lib/native.cjs" + } + }, + "./src/index.js": { + "import": { + "types": "./lib/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./lib/index.d.cts", + "default": "./lib/index.cjs" + } + }, + "./proxy": { + "node": { + "types": "./lib/proxy.d.ts", + "default": "./dist/proxy.cjs" + }, + "default": { + "import": { + "types": "./lib/proxy.d.ts", + "default": "./dist/proxy-stub.mjs" + }, + "require": { + "types": "./lib/proxy.d.ts", + "default": "./dist/proxy-stub.cjs" + } + } + }, + "./agent": { + "node": { + "types": "./lib/agent.d.ts", + "default": "./dist/agent.cjs" + }, + "default": { + "import": { + "types": "./lib/agent.d.ts", + "default": "./dist/agent-stub.mjs" + }, + "require": { + "types": "./lib/agent.d.ts", + "default": "./dist/agent-stub.cjs" + } + } + } + }, + "main": "./lib/index.cjs", + "module": "./dist/index.mjs", + "react-native": "./dist/native.mjs", + "types": "./lib/index.d.mts", + "files": [ + "dist", + "lib", + "index.d.ts", + "node.d.ts", + "polyfill.d.ts", + "proxy.d.ts", + "agent.d.ts" + ], + "scripts": { + "build": "unbuild", + "lint": "eslint --ext .ts,.js,.mjs,.cjs . && prettier -c src test lib", + "lint:fix": "eslint --fix --ext .ts,.js,.mjs,.cjs . && prettier -w src test lib", + "prepack": "unbuild", + "release": "pnpm test && changelogen --release && npm publish && git push --follow-tags", + "test": "pnpm lint && pnpm build && vitest run --coverage" + }, + "devDependencies": { + "@types/node": "^20.11.30", + "@vitest/coverage-v8": "^1.4.0", + "abort-controller": "^3.0.0", + "agent-base": "^7.1.0", + "changelogen": "^0.5.5", + "eslint": "^8.57.0", + "eslint-config-unjs": "^0.2.1", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.4", + "node-fetch": "^3.3.2", + "prettier": "^3.2.5", + "proxy-agent": "^6.4.0", + "typescript": "^5.4.3", + "unbuild": "^2.0.0", + "undici": "^6.10.2", + "vitest": "^1.4.0" + }, + "packageManager": "pnpm@8.15.5" +} \ No newline at end of file diff --git a/node_modules/node-fetch-native-with-agent/polyfill.d.ts b/node_modules/node-fetch-native-with-agent/polyfill.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/polyfill.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/node_modules/node-fetch-native-with-agent/proxy.d.ts b/node_modules/node-fetch-native-with-agent/proxy.d.ts new file mode 100644 index 0000000..7aab1c4 --- /dev/null +++ b/node_modules/node-fetch-native-with-agent/proxy.d.ts @@ -0,0 +1 @@ +export * from "./lib/proxy"; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..34a86f1 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,31 @@ +{ + "name": "url-shortener", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "url-shortener", + "version": "1.0.0", + "license": "UNLICENSED", + "dependencies": { + "node-appwrite": "^14.1.0" + } + }, + "node_modules/node-appwrite": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/node-appwrite/-/node-appwrite-14.1.0.tgz", + "integrity": "sha512-kuKAZrdaAcGYOMUXtxNb1j+uIy+FIMiiU1dFkgwTXLsMLeLvC6HJ8/FH/kN9JyrWR2a2zcGN7gWfyQgWYoLMTA==", + "license": "BSD-3-Clause", + "dependencies": { + "node-fetch-native-with-agent": "1.7.2" + } + }, + "node_modules/node-fetch-native-with-agent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-fetch-native-with-agent/-/node-fetch-native-with-agent-1.7.2.tgz", + "integrity": "sha512-5MaOOCuJEvcckoz7/tjdx1M6OusOY6Xc5f459IaruGStWnKzlI1qpNgaAwmn4LmFYcsSlj+jBMk84wmmRxfk5g==", + "license": "MIT" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..09b5b31 --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "url-shortener", + "version": "1.0.0", + "description": "Huto URL Shortener", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Hutotpn/url-shortener.git" + }, + "keywords": [ + "url-shortener" + ], + "author": "Hutotpn", + "license": "UNLICENSED", + "bugs": { + "url": "https://github.com/Hutotpn/url-shortener/issues" + }, + "homepage": "https://github.com/Hutotpn/url-shortener#readme", + "dependencies": { + "node-appwrite": "^14.1.0" + } +} diff --git a/vercel.json b/vercel.json new file mode 100644 index 0000000..8bf501d --- /dev/null +++ b/vercel.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "builds": [ + { + "src": "api/*.js", + "use": "@vercel/node" + } + ], + "routes": [ + { + "src": "/(.*)", + "dest": "/api/redirect.js?shortCode=$1" + } + ] +}