import { __commonJS, __toESM } from "./chunk-G3PMV62Z.js"; // node_modules/isomorphic-form-data/lib/browser.js var require_browser = __commonJS({ "node_modules/isomorphic-form-data/lib/browser.js"(exports, module) { module.exports = window.FormData; } }); // node_modules/cross-fetch/dist/browser-ponyfill.js var require_browser_ponyfill = __commonJS({ "node_modules/cross-fetch/dist/browser-ponyfill.js"(exports, module) { var global = typeof self !== "undefined" ? self : exports; var __self__ = function() { function F() { this.fetch = false; this.DOMException = global.DOMException; } F.prototype = global; return new F(); }(); (function(self2) { var irrelevant = function(exports2) { var support = { searchParams: "URLSearchParams" in self2, iterable: "Symbol" in self2 && "iterator" in Symbol, blob: "FileReader" in self2 && "Blob" in self2 && function() { try { new Blob(); return true; } catch (e) { return false; } }(), formData: "FormData" in self2, arrayBuffer: "ArrayBuffer" in self2 }; function isDataView(obj) { return obj && DataView.prototype.isPrototypeOf(obj); } if (support.arrayBuffer) { var viewClasses = [ "[object Int8Array]", "[object Uint8Array]", "[object Uint8ClampedArray]", "[object Int16Array]", "[object Uint16Array]", "[object Int32Array]", "[object Uint32Array]", "[object Float32Array]", "[object Float64Array]" ]; var isArrayBufferView = ArrayBuffer.isView || function(obj) { return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1; }; } function normalizeName(name) { if (typeof name !== "string") { name = String(name); } if (/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(name)) { throw new TypeError("Invalid character in header field name"); } return name.toLowerCase(); } function normalizeValue(value) { if (typeof value !== "string") { value = String(value); } return value; } function iteratorFor(items) { var iterator = { next: function() { var value = items.shift(); return { done: value === void 0, value }; } }; if (support.iterable) { iterator[Symbol.iterator] = function() { return iterator; }; } return iterator; } function Headers(headers) { this.map = {}; if (headers instanceof Headers) { headers.forEach(function(value, name) { this.append(name, value); }, this); } else if (Array.isArray(headers)) { headers.forEach(function(header) { this.append(header[0], header[1]); }, this); } else if (headers) { Object.getOwnPropertyNames(headers).forEach(function(name) { this.append(name, headers[name]); }, this); } } Headers.prototype.append = function(name, value) { name = normalizeName(name); value = normalizeValue(value); var oldValue = this.map[name]; this.map[name] = oldValue ? oldValue + ", " + value : value; }; Headers.prototype["delete"] = function(name) { delete this.map[normalizeName(name)]; }; Headers.prototype.get = function(name) { name = normalizeName(name); return this.has(name) ? this.map[name] : null; }; Headers.prototype.has = function(name) { return this.map.hasOwnProperty(normalizeName(name)); }; Headers.prototype.set = function(name, value) { this.map[normalizeName(name)] = normalizeValue(value); }; Headers.prototype.forEach = function(callback, thisArg) { for (var name in this.map) { if (this.map.hasOwnProperty(name)) { callback.call(thisArg, this.map[name], name, this); } } }; Headers.prototype.keys = function() { var items = []; this.forEach(function(value, name) { items.push(name); }); return iteratorFor(items); }; Headers.prototype.values = function() { var items = []; this.forEach(function(value) { items.push(value); }); return iteratorFor(items); }; Headers.prototype.entries = function() { var items = []; this.forEach(function(value, name) { items.push([name, value]); }); return iteratorFor(items); }; if (support.iterable) { Headers.prototype[Symbol.iterator] = Headers.prototype.entries; } function consumed(body) { if (body.bodyUsed) { return Promise.reject(new TypeError("Already read")); } body.bodyUsed = true; } function fileReaderReady(reader) { return new Promise(function(resolve, reject) { reader.onload = function() { resolve(reader.result); }; reader.onerror = function() { reject(reader.error); }; }); } function readBlobAsArrayBuffer(blob) { var reader = new FileReader(); var promise = fileReaderReady(reader); reader.readAsArrayBuffer(blob); return promise; } function readBlobAsText(blob) { var reader = new FileReader(); var promise = fileReaderReady(reader); reader.readAsText(blob); return promise; } function readArrayBufferAsText(buf) { var view = new Uint8Array(buf); var chars = new Array(view.length); for (var i = 0; i < view.length; i++) { chars[i] = String.fromCharCode(view[i]); } return chars.join(""); } function bufferClone(buf) { if (buf.slice) { return buf.slice(0); } else { var view = new Uint8Array(buf.byteLength); view.set(new Uint8Array(buf)); return view.buffer; } } function Body() { this.bodyUsed = false; this._initBody = function(body) { this._bodyInit = body; if (!body) { this._bodyText = ""; } else if (typeof body === "string") { this._bodyText = body; } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { this._bodyBlob = body; } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { this._bodyFormData = body; } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { this._bodyText = body.toString(); } else if (support.arrayBuffer && support.blob && isDataView(body)) { this._bodyArrayBuffer = bufferClone(body.buffer); this._bodyInit = new Blob([this._bodyArrayBuffer]); } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) { this._bodyArrayBuffer = bufferClone(body); } else { this._bodyText = body = Object.prototype.toString.call(body); } if (!this.headers.get("content-type")) { if (typeof body === "string") { this.headers.set("content-type", "text/plain;charset=UTF-8"); } else if (this._bodyBlob && this._bodyBlob.type) { this.headers.set("content-type", this._bodyBlob.type); } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"); } } }; if (support.blob) { this.blob = function() { var rejected = consumed(this); if (rejected) { return rejected; } if (this._bodyBlob) { return Promise.resolve(this._bodyBlob); } else if (this._bodyArrayBuffer) { return Promise.resolve(new Blob([this._bodyArrayBuffer])); } else if (this._bodyFormData) { throw new Error("could not read FormData body as blob"); } else { return Promise.resolve(new Blob([this._bodyText])); } }; this.arrayBuffer = function() { if (this._bodyArrayBuffer) { return consumed(this) || Promise.resolve(this._bodyArrayBuffer); } else { return this.blob().then(readBlobAsArrayBuffer); } }; } this.text = function() { var rejected = consumed(this); if (rejected) { return rejected; } if (this._bodyBlob) { return readBlobAsText(this._bodyBlob); } else if (this._bodyArrayBuffer) { return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer)); } else if (this._bodyFormData) { throw new Error("could not read FormData body as text"); } else { return Promise.resolve(this._bodyText); } }; if (support.formData) { this.formData = function() { return this.text().then(decode); }; } this.json = function() { return this.text().then(JSON.parse); }; return this; } var methods = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"]; function normalizeMethod(method) { var upcased = method.toUpperCase(); return methods.indexOf(upcased) > -1 ? upcased : method; } function Request(input, options) { options = options || {}; var body = options.body; if (input instanceof Request) { if (input.bodyUsed) { throw new TypeError("Already read"); } this.url = input.url; this.credentials = input.credentials; if (!options.headers) { this.headers = new Headers(input.headers); } this.method = input.method; this.mode = input.mode; this.signal = input.signal; if (!body && input._bodyInit != null) { body = input._bodyInit; input.bodyUsed = true; } } else { this.url = String(input); } this.credentials = options.credentials || this.credentials || "same-origin"; if (options.headers || !this.headers) { this.headers = new Headers(options.headers); } this.method = normalizeMethod(options.method || this.method || "GET"); this.mode = options.mode || this.mode || null; this.signal = options.signal || this.signal; this.referrer = null; if ((this.method === "GET" || this.method === "HEAD") && body) { throw new TypeError("Body not allowed for GET or HEAD requests"); } this._initBody(body); } Request.prototype.clone = function() { return new Request(this, { body: this._bodyInit }); }; function decode(body) { var form = new FormData(); body.trim().split("&").forEach(function(bytes) { if (bytes) { var split = bytes.split("="); var name = split.shift().replace(/\+/g, " "); var value = split.join("=").replace(/\+/g, " "); form.append(decodeURIComponent(name), decodeURIComponent(value)); } }); return form; } function parseHeaders(rawHeaders) { var headers = new Headers(); var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, " "); preProcessedHeaders.split(/\r?\n/).forEach(function(line) { var parts = line.split(":"); var key = parts.shift().trim(); if (key) { var value = parts.join(":").trim(); headers.append(key, value); } }); return headers; } Body.call(Request.prototype); function Response(bodyInit, options) { if (!options) { options = {}; } this.type = "default"; this.status = options.status === void 0 ? 200 : options.status; this.ok = this.status >= 200 && this.status < 300; this.statusText = "statusText" in options ? options.statusText : "OK"; this.headers = new Headers(options.headers); this.url = options.url || ""; this._initBody(bodyInit); } Body.call(Response.prototype); Response.prototype.clone = function() { return new Response(this._bodyInit, { status: this.status, statusText: this.statusText, headers: new Headers(this.headers), url: this.url }); }; Response.error = function() { var response = new Response(null, { status: 0, statusText: "" }); response.type = "error"; return response; }; var redirectStatuses = [301, 302, 303, 307, 308]; Response.redirect = function(url, status) { if (redirectStatuses.indexOf(status) === -1) { throw new RangeError("Invalid status code"); } return new Response(null, { status, headers: { location: url } }); }; exports2.DOMException = self2.DOMException; try { new exports2.DOMException(); } catch (err) { exports2.DOMException = function(message, name) { this.message = message; this.name = name; var error = Error(message); this.stack = error.stack; }; exports2.DOMException.prototype = Object.create(Error.prototype); exports2.DOMException.prototype.constructor = exports2.DOMException; } function fetch2(input, init) { return new Promise(function(resolve, reject) { var request = new Request(input, init); if (request.signal && request.signal.aborted) { return reject(new exports2.DOMException("Aborted", "AbortError")); } var xhr = new XMLHttpRequest(); function abortXhr() { xhr.abort(); } xhr.onload = function() { var options = { status: xhr.status, statusText: xhr.statusText, headers: parseHeaders(xhr.getAllResponseHeaders() || "") }; options.url = "responseURL" in xhr ? xhr.responseURL : options.headers.get("X-Request-URL"); var body = "response" in xhr ? xhr.response : xhr.responseText; resolve(new Response(body, options)); }; xhr.onerror = function() { reject(new TypeError("Network request failed")); }; xhr.ontimeout = function() { reject(new TypeError("Network request failed")); }; xhr.onabort = function() { reject(new exports2.DOMException("Aborted", "AbortError")); }; xhr.open(request.method, request.url, true); if (request.credentials === "include") { xhr.withCredentials = true; } else if (request.credentials === "omit") { xhr.withCredentials = false; } if ("responseType" in xhr && support.blob) { xhr.responseType = "blob"; } request.headers.forEach(function(value, name) { xhr.setRequestHeader(name, value); }); if (request.signal) { request.signal.addEventListener("abort", abortXhr); xhr.onreadystatechange = function() { if (xhr.readyState === 4) { request.signal.removeEventListener("abort", abortXhr); } }; } xhr.send(typeof request._bodyInit === "undefined" ? null : request._bodyInit); }); } fetch2.polyfill = true; if (!self2.fetch) { self2.fetch = fetch2; self2.Headers = Headers; self2.Request = Request; self2.Response = Response; } exports2.Headers = Headers; exports2.Request = Request; exports2.Response = Response; exports2.fetch = fetch2; Object.defineProperty(exports2, "__esModule", { value: true }); return exports2; }({}); })(__self__); __self__.fetch.ponyfill = true; delete __self__.fetch.polyfill; var ctx = __self__; exports = ctx.fetch; exports.default = ctx.fetch; exports.fetch = ctx.fetch; exports.Headers = ctx.Headers; exports.Request = ctx.Request; exports.Response = ctx.Response; module.exports = exports; } }); // node_modules/appwrite/dist/esm/sdk.js var import_isomorphic_form_data = __toESM(require_browser()); var import_cross_fetch = __toESM(require_browser_ponyfill()); function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function(resolve) { resolve(value); }); } return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } var Service = class { constructor(client) { this.client = client; } static flatten(data, prefix = "") { let output = {}; for (const key in data) { let value = data[key]; let finalKey = prefix ? `${prefix}[${key}]` : key; if (Array.isArray(value)) { output = Object.assign(output, this.flatten(value, finalKey)); } else { output[finalKey] = value; } } return output; } }; Service.CHUNK_SIZE = 5 * 1024 * 1024; var Query = class { }; Query.equal = (attribute, value) => Query.addQuery(attribute, "equal", value); Query.notEqual = (attribute, value) => Query.addQuery(attribute, "notEqual", value); Query.lessThan = (attribute, value) => Query.addQuery(attribute, "lessThan", value); Query.lessThanEqual = (attribute, value) => Query.addQuery(attribute, "lessThanEqual", value); Query.greaterThan = (attribute, value) => Query.addQuery(attribute, "greaterThan", value); Query.greaterThanEqual = (attribute, value) => Query.addQuery(attribute, "greaterThanEqual", value); Query.isNull = (attribute) => `isNull("${attribute}")`; Query.isNotNull = (attribute) => `isNotNull("${attribute}")`; Query.between = (attribute, start, end) => `between("${attribute}", ${Query.parseValues(start)}, ${Query.parseValues(end)})`; Query.startsWith = (attribute, value) => Query.addQuery(attribute, "startsWith", value); Query.endsWith = (attribute, value) => Query.addQuery(attribute, "endsWith", value); Query.select = (attributes) => `select([${attributes.map((attr) => `"${attr}"`).join(",")}])`; Query.search = (attribute, value) => Query.addQuery(attribute, "search", value); Query.orderDesc = (attribute) => `orderDesc("${attribute}")`; Query.orderAsc = (attribute) => `orderAsc("${attribute}")`; Query.cursorAfter = (documentId) => `cursorAfter("${documentId}")`; Query.cursorBefore = (documentId) => `cursorBefore("${documentId}")`; Query.limit = (limit) => `limit(${limit})`; Query.offset = (offset) => `offset(${offset})`; Query.addQuery = (attribute, method, value) => value instanceof Array ? `${method}("${attribute}", [${value.map((v) => Query.parseValues(v)).join(",")}])` : `${method}("${attribute}", [${Query.parseValues(value)}])`; Query.parseValues = (value) => typeof value === "string" || value instanceof String ? `"${value}"` : `${value}`; 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; } }; var Client = class { constructor() { this.config = { endpoint: "https://HOSTNAME/v1", endpointRealtime: "", project: "", jwt: "", locale: "" }; this.headers = { "x-sdk-name": "Web", "x-sdk-platform": "client", "x-sdk-language": "web", "x-sdk-version": "13.0.2", "X-Appwrite-Response-Format": "1.4.0" }; this.realtime = { socket: void 0, timeout: void 0, url: "", channels: /* @__PURE__ */ new Set(), subscriptions: /* @__PURE__ */ new Map(), subscriptionsCounter: 0, reconnect: true, reconnectAttempts: 0, lastMessage: void 0, connect: () => { clearTimeout(this.realtime.timeout); this.realtime.timeout = window === null || window === void 0 ? void 0 : window.setTimeout(() => { this.realtime.createSocket(); }, 50); }, getTimeout: () => { switch (true) { case this.realtime.reconnectAttempts < 5: return 1e3; case this.realtime.reconnectAttempts < 15: return 5e3; case this.realtime.reconnectAttempts < 100: return 1e4; default: return 6e4; } }, createSocket: () => { var _a, _b; if (this.realtime.channels.size < 1) return; const channels = new URLSearchParams(); channels.set("project", this.config.project); this.realtime.channels.forEach((channel) => { channels.append("channels[]", channel); }); const url = this.config.endpointRealtime + "/realtime?" + channels.toString(); if (url !== this.realtime.url || // Check if URL is present !this.realtime.socket || // Check if WebSocket has not been created ((_a = this.realtime.socket) === null || _a === void 0 ? void 0 : _a.readyState) > WebSocket.OPEN) { if (this.realtime.socket && ((_b = this.realtime.socket) === null || _b === void 0 ? void 0 : _b.readyState) < WebSocket.CLOSING) { this.realtime.reconnect = false; this.realtime.socket.close(); } this.realtime.url = url; this.realtime.socket = new WebSocket(url); this.realtime.socket.addEventListener("message", this.realtime.onMessage); this.realtime.socket.addEventListener("open", (_event) => { this.realtime.reconnectAttempts = 0; }); this.realtime.socket.addEventListener("close", (event) => { var _a2, _b2, _c; if (!this.realtime.reconnect || ((_b2 = (_a2 = this.realtime) === null || _a2 === void 0 ? void 0 : _a2.lastMessage) === null || _b2 === void 0 ? void 0 : _b2.type) === "error" && // Check if last message was of type error ((_c = this.realtime) === null || _c === void 0 ? void 0 : _c.lastMessage.data).code === 1008) { this.realtime.reconnect = true; return; } const timeout = this.realtime.getTimeout(); console.error(`Realtime got disconnected. Reconnect will be attempted in ${timeout / 1e3} seconds.`, event.reason); setTimeout(() => { this.realtime.reconnectAttempts++; this.realtime.createSocket(); }, timeout); }); } }, onMessage: (event) => { var _a, _b; try { const message = JSON.parse(event.data); this.realtime.lastMessage = message; switch (message.type) { case "connected": const cookie = JSON.parse((_a = window.localStorage.getItem("cookieFallback")) !== null && _a !== void 0 ? _a : "{}"); const session = cookie === null || cookie === void 0 ? void 0 : cookie[`a_session_${this.config.project}`]; const messageData = message.data; if (session && !messageData.user) { (_b = this.realtime.socket) === null || _b === void 0 ? void 0 : _b.send(JSON.stringify({ type: "authentication", data: { session } })); } break; case "event": let data = message.data; if (data === null || data === void 0 ? void 0 : data.channels) { const isSubscribed = data.channels.some((channel) => this.realtime.channels.has(channel)); if (!isSubscribed) return; this.realtime.subscriptions.forEach((subscription) => { if (data.channels.some((channel) => subscription.channels.includes(channel))) { setTimeout(() => subscription.callback(data)); } }); } break; case "error": throw message.data; default: break; } } catch (e) { console.error(e); } }, cleanUp: (channels) => { this.realtime.channels.forEach((channel) => { if (channels.includes(channel)) { let found = Array.from(this.realtime.subscriptions).some(([_key, subscription]) => { return subscription.channels.includes(channel); }); if (!found) { this.realtime.channels.delete(channel); } } }); } }; } /** * Set Endpoint * * Your project endpoint * * @param {string} endpoint * * @returns {this} */ setEndpoint(endpoint) { this.config.endpoint = endpoint; this.config.endpointRealtime = this.config.endpointRealtime || this.config.endpoint.replace("https://", "wss://").replace("http://", "ws://"); return this; } /** * Set Realtime Endpoint * * @param {string} endpointRealtime * * @returns {this} */ setEndpointRealtime(endpointRealtime) { this.config.endpointRealtime = endpointRealtime; 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 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; } /** * Subscribes to Appwrite events and passes you the payload in realtime. * * @param {string|string[]} channels * Channel to subscribe - pass a single channel as a string or multiple with an array of strings. * * Possible channels are: * - account * - collections * - collections.[ID] * - collections.[ID].documents * - documents * - documents.[ID] * - files * - files.[ID] * - executions * - executions.[ID] * - functions.[ID] * - teams * - teams.[ID] * - memberships * - memberships.[ID] * @param {(payload: RealtimeMessage) => void} callback Is called on every realtime update. * @returns {() => void} Unsubscribes from events. */ subscribe(channels, callback) { let channelArray = typeof channels === "string" ? [channels] : channels; channelArray.forEach((channel) => this.realtime.channels.add(channel)); const counter = this.realtime.subscriptionsCounter++; this.realtime.subscriptions.set(counter, { channels: channelArray, callback }); this.realtime.connect(); return () => { this.realtime.subscriptions.delete(counter); this.realtime.cleanUp(channelArray); this.realtime.connect(); }; } call(method, url, headers = {}, params = {}) { var _a, _b; return __awaiter(this, void 0, void 0, function* () { method = method.toUpperCase(); headers = Object.assign({}, this.headers, headers); let options = { method, headers, credentials: "include" }; if (typeof window !== "undefined" && window.localStorage) { headers["X-Fallback-Cookies"] = (_a = window.localStorage.getItem("cookieFallback")) !== null && _a !== void 0 ? _a : ""; } if (method === "GET") { for (const [key, value] of Object.entries(Service.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": let formData = new FormData(); for (const key in params) { if (Array.isArray(params[key])) { params[key].forEach((value) => { formData.append(key + "[]", value); }); } else { formData.append(key, params[key]); } } options.body = formData; delete headers["content-type"]; break; } } try { let data = null; const response = yield (0, import_cross_fetch.fetch)(url.toString(), options); if ((_b = response.headers.get("content-type")) === null || _b === void 0 ? void 0 : _b.includes("application/json")) { data = yield response.json(); } else { data = { message: yield response.text() }; } if (400 <= response.status) { throw new AppwriteException(data === null || data === void 0 ? void 0 : data.message, response.status, data === null || data === void 0 ? void 0 : data.type, data); } const cookieFallback = response.headers.get("X-Fallback-Cookies"); if (typeof window !== "undefined" && window.localStorage && cookieFallback) { window.console.warn("Appwrite is using localStorage for session management. Increase your security by adding a custom domain as your API endpoint."); window.localStorage.setItem("cookieFallback", cookieFallback); } return data; } catch (e) { if (e instanceof AppwriteException) { throw e; } throw new AppwriteException(e.message); } }); } }; var Account = class extends Service { constructor(client) { super(client); } /** * Get account * * Get the currently logged in user. * * @throws {AppwriteException} * @returns {Promise} */ get() { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/account"; const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ create(userId, email, password, name) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("post", uri, { "content-type": "application/json" }, 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} */ updateEmail(email, password) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("patch", uri, { "content-type": "application/json" }, payload); }); } /** * List Identities * * Get the list of identities for the currently logged in user. * * @param {string} queries * @throws {AppwriteException} * @returns {Promise} */ listIdentities(queries) { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/account/identities"; const payload = {}; if (typeof queries !== "undefined") { payload["queries"] = queries; } const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("get", uri, { "content-type": "application/json" }, payload); }); } /** * Delete Identity * * Delete an identity by its unique ID. * * @param {string} identityId * @throws {AppwriteException} * @returns {Promise} */ deleteIdentity(identityId) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("delete", uri, { "content-type": "application/json" }, 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} */ createJWT() { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/account/jwt"; const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("post", uri, { "content-type": "application/json" }, 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} */ listLogs(queries) { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/account/logs"; const payload = {}; if (typeof queries !== "undefined") { payload["queries"] = queries; } const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("get", uri, { "content-type": "application/json" }, payload); }); } /** * Update name * * Update currently logged in user account name. * * @param {string} name * @throws {AppwriteException} * @returns {Promise} */ updateName(name) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("patch", uri, { "content-type": "application/json" }, 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} */ updatePassword(password, oldPassword) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("patch", uri, { "content-type": "application/json" }, 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} */ updatePhone(phone, password) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("patch", uri, { "content-type": "application/json" }, payload); }); } /** * Get account preferences * * Get the preferences as a key-value object for the currently logged in user. * * @throws {AppwriteException} * @returns {Promise} */ getPrefs() { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/account/prefs"; const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ updatePrefs(prefs) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("patch", uri, { "content-type": "application/json" }, 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} */ createRecovery(email, url) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("post", uri, { "content-type": "application/json" }, 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 * @param {string} passwordAgain * @throws {AppwriteException} * @returns {Promise} */ updateRecovery(userId, secret, password, passwordAgain) { return __awaiter(this, void 0, void 0, function* () { 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"'); } if (typeof passwordAgain === "undefined") { throw new AppwriteException('Missing required parameter: "passwordAgain"'); } 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; } if (typeof passwordAgain !== "undefined") { payload["passwordAgain"] = passwordAgain; } const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("put", uri, { "content-type": "application/json" }, payload); }); } /** * List sessions * * Get the list of active sessions across different devices for the currently * logged in user. * * @throws {AppwriteException} * @returns {Promise} */ listSessions() { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/account/sessions"; const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("get", uri, { "content-type": "application/json" }, payload); }); } /** * Delete sessions * * Delete all sessions from the user account and remove any sessions cookies * from the end client. * * @throws {AppwriteException} * @returns {Promise} */ deleteSessions() { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/account/sessions"; const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("delete", uri, { "content-type": "application/json" }, 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} */ createAnonymousSession() { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/account/sessions/anonymous"; const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("post", uri, { "content-type": "application/json" }, payload); }); } /** * Create email 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} */ createEmailSession(email, password) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("post", uri, { "content-type": "application/json" }, payload); }); } /** * Create magic URL session * * 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 * [PUT * /account/sessions/magic-url](https://appwrite.io/docs/references/cloud/client-web/account#updateMagicURLSession) * 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 * @throws {AppwriteException} * @returns {Promise} */ createMagicURLSession(userId, email, url) { return __awaiter(this, void 0, void 0, function* () { 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/sessions/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; } const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("post", uri, { "content-type": "application/json" }, payload); }); } /** * Create magic URL session (confirmation) * * Use this endpoint to complete creating the session with the Magic URL. 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/sessions/magic-url](https://appwrite.io/docs/references/cloud/client-web/account#createMagicURLSession) * 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 * @throws {AppwriteException} * @returns {Promise} */ updateMagicURLSession(userId, secret) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("put", uri, { "content-type": "application/json" }, payload); }); } /** * Create OAuth2 session * * 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 there is already an active session, the new session will be attached to * the logged-in account. If there are no active sessions, the server will * attempt to look for a user with the same email address as the email * received from the OAuth2 provider and attach the new session to the * existing user. If no matching user is found - the server will create a new * 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} provider * @param {string} success * @param {string} failure * @param {string[]} scopes * @throws {AppwriteException} * @returns {void|string} */ createOAuth2Session(provider, success, failure, scopes) { if (typeof provider === "undefined") { throw new AppwriteException('Missing required parameter: "provider"'); } const apiPath = "/account/sessions/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); payload["project"] = this.client.config.project; for (const [key, value] of Object.entries(Service.flatten(payload))) { uri.searchParams.append(key, value); } if (typeof window !== "undefined" && (window === null || window === void 0 ? void 0 : window.location)) { window.location.href = uri.toString(); } else { return uri; } } /** * Create phone session * * 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 [PUT * /account/sessions/phone](https://appwrite.io/docs/references/cloud/client-web/account#updatePhoneSession) * 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} */ createPhoneSession(userId, phone) { return __awaiter(this, void 0, void 0, function* () { 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/sessions/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); return yield this.client.call("post", uri, { "content-type": "application/json" }, payload); }); } /** * Create phone session (confirmation) * * Use this endpoint to complete creating a session with SMS. Use the * **userId** from the * [createPhoneSession](https://appwrite.io/docs/references/cloud/client-web/account#createPhoneSession) * endpoint and the **secret** received via SMS to successfully update and * confirm the phone session. * * @param {string} userId * @param {string} secret * @throws {AppwriteException} * @returns {Promise} */ updatePhoneSession(userId, secret) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("put", uri, { "content-type": "application/json" }, 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} */ getSession(sessionId) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("get", uri, { "content-type": "application/json" }, payload); }); } /** * Update OAuth session (refresh tokens) * * Access tokens have limited lifespan and expire to mitigate security risks. * If session was created using an OAuth provider, this route can be used to * "refresh" the access token. * * @param {string} sessionId * @throws {AppwriteException} * @returns {Promise} */ updateSession(sessionId) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("patch", uri, { "content-type": "application/json" }, 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} */ deleteSession(sessionId) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("delete", uri, { "content-type": "application/json" }, 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} */ updateStatus() { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/account/status"; const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("patch", uri, { "content-type": "application/json" }, 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} */ createVerification(url) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("post", uri, { "content-type": "application/json" }, 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} */ updateVerification(userId, secret) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("put", uri, { "content-type": "application/json" }, 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} */ createPhoneVerification() { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/account/verification/phone"; const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("post", uri, { "content-type": "application/json" }, payload); }); } /** * Create 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, secret) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("put", uri, { "content-type": "application/json" }, payload); }); } }; var Avatars = class extends Service { constructor(client) { super(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 {string} code * @param {number} width * @param {number} height * @param {number} quality * @throws {AppwriteException} * @returns {URL} */ 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); payload["project"] = this.client.config.project; for (const [key, value] of Object.entries(Service.flatten(payload))) { uri.searchParams.append(key, value); } return uri; } /** * 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 {string} code * @param {number} width * @param {number} height * @param {number} quality * @throws {AppwriteException} * @returns {URL} */ 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); payload["project"] = this.client.config.project; for (const [key, value] of Object.entries(Service.flatten(payload))) { uri.searchParams.append(key, value); } return uri; } /** * Get favicon * * Use this endpoint to fetch the favorite icon (AKA favicon) of any remote * website URL. * * * @param {string} url * @throws {AppwriteException} * @returns {URL} */ 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); payload["project"] = this.client.config.project; for (const [key, value] of Object.entries(Service.flatten(payload))) { uri.searchParams.append(key, value); } return uri; } /** * 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 {string} code * @param {number} width * @param {number} height * @param {number} quality * @throws {AppwriteException} * @returns {URL} */ 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); payload["project"] = this.client.config.project; for (const [key, value] of Object.entries(Service.flatten(payload))) { uri.searchParams.append(key, value); } return uri; } /** * 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. * * * @param {string} url * @param {number} width * @param {number} height * @throws {AppwriteException} * @returns {URL} */ 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); payload["project"] = this.client.config.project; for (const [key, value] of Object.entries(Service.flatten(payload))) { uri.searchParams.append(key, value); } return uri; } /** * 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 {URL} */ 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); payload["project"] = this.client.config.project; for (const [key, value] of Object.entries(Service.flatten(payload))) { uri.searchParams.append(key, value); } return uri; } /** * 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 {URL} */ 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); payload["project"] = this.client.config.project; for (const [key, value] of Object.entries(Service.flatten(payload))) { uri.searchParams.append(key, value); } return uri; } }; var Databases = class extends Service { constructor(client) { super(client); } /** * 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, collectionId, queries) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ createDocument(databaseId, collectionId, documentId, data, permissions) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("post", uri, { "content-type": "application/json" }, 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} */ getDocument(databaseId, collectionId, documentId, queries) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ updateDocument(databaseId, collectionId, documentId, data, permissions) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("patch", uri, { "content-type": "application/json" }, payload); }); } /** * Delete document * * Delete a document by its unique ID. * * @param {string} databaseId * @param {string} collectionId * @param {string} documentId * @throws {AppwriteException} * @returns {Promise} */ deleteDocument(databaseId, collectionId, documentId) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("delete", uri, { "content-type": "application/json" }, payload); }); } }; var Functions = class extends Service { constructor(client) { super(client); } /** * 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, queries, search) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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 {string} method * @param {object} headers * @throws {AppwriteException} * @returns {Promise} */ createExecution(functionId, body, async, xpath, method, headers) { return __awaiter(this, void 0, void 0, function* () { 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; } const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("post", uri, { "content-type": "application/json" }, payload); }); } /** * Get execution * * Get a function execution log by its unique ID. * * @param {string} functionId * @param {string} executionId * @throws {AppwriteException} * @returns {Promise} */ getExecution(functionId, executionId) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("get", uri, { "content-type": "application/json" }, payload); }); } }; var Graphql = class extends Service { constructor(client) { super(client); } /** * GraphQL endpoint * * Execute a GraphQL mutation. * * @param {object} query * @throws {AppwriteException} * @returns {Promise} */ query(query) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("post", uri, { "x-sdk-graphql": "true", "content-type": "application/json" }, payload); }); } /** * GraphQL endpoint * * Execute a GraphQL mutation. * * @param {object} query * @throws {AppwriteException} * @returns {Promise} */ mutation(query) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("post", uri, { "x-sdk-graphql": "true", "content-type": "application/json" }, payload); }); } }; var Locale = class extends Service { constructor(client) { super(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() { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/locale"; const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ listCodes() { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/locale/codes"; const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ listContinents() { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/locale/continents"; const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ listCountries() { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/locale/countries"; const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ listCountriesEU() { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/locale/countries/eu"; const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ listCountriesPhones() { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/locale/countries/phones"; const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ listCurrencies() { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/locale/currencies"; const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ listLanguages() { return __awaiter(this, void 0, void 0, function* () { const apiPath = "/locale/languages"; const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); return yield this.client.call("get", uri, { "content-type": "application/json" }, payload); }); } }; var Storage = class extends Service { constructor(client) { super(client); } /** * 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, queries, search) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ createFile(bucketId, fileId, file, permissions, onProgress = (progress) => { }) { return __awaiter(this, void 0, void 0, function* () { 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); if (!(file instanceof File)) { throw new AppwriteException('Parameter "file" has to be a File.'); } const size = file.size; if (size <= Service.CHUNK_SIZE) { return yield this.client.call("post", uri, { "content-type": "multipart/form-data" }, payload); } const apiHeaders = { "content-type": "multipart/form-data" }; let offset = 0; let response = void 0; if (fileId != "unique()") { try { response = yield this.client.call("GET", new URL(this.client.config.endpoint + apiPath + "/" + fileId), apiHeaders); offset = response.chunksUploaded * Service.CHUNK_SIZE; } catch (e) { } } while (offset < size) { let end = Math.min(offset + Service.CHUNK_SIZE - 1, size - 1); apiHeaders["content-range"] = "bytes " + offset + "-" + end + "/" + size; if (response && response.$id) { apiHeaders["x-appwrite-id"] = response.$id; } const chunk = file.slice(offset, end + 1); payload["file"] = new File([chunk], file.name); response = yield this.client.call("post", uri, apiHeaders, payload); if (onProgress) { onProgress({ $id: response.$id, progress: offset / size * 100, sizeUploaded: offset, chunksTotal: response.chunksTotal, chunksUploaded: response.chunksUploaded }); } offset += Service.CHUNK_SIZE; } return response; }); } /** * 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, fileId) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ updateFile(bucketId, fileId, name, permissions) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("put", uri, { "content-type": "application/json" }, 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} */ deleteFile(bucketId, fileId) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("delete", uri, { "content-type": "application/json" }, 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 {URL} */ 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); payload["project"] = this.client.config.project; for (const [key, value] of Object.entries(Service.flatten(payload))) { uri.searchParams.append(key, value); } return uri; } /** * 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 {string} gravity * @param {number} quality * @param {number} borderWidth * @param {string} borderColor * @param {number} borderRadius * @param {number} opacity * @param {number} rotation * @param {string} background * @param {string} output * @throws {AppwriteException} * @returns {URL} */ 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); payload["project"] = this.client.config.project; for (const [key, value] of Object.entries(Service.flatten(payload))) { uri.searchParams.append(key, value); } return uri; } /** * 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 {URL} */ 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); payload["project"] = this.client.config.project; for (const [key, value] of Object.entries(Service.flatten(payload))) { uri.searchParams.append(key, value); } return uri; } }; var Teams = class extends Service { constructor(client) { super(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, search) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ create(teamId, name, roles) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("post", uri, { "content-type": "application/json" }, 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} */ get(teamId) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("get", uri, { "content-type": "application/json" }, payload); }); } /** * Update name * * Update the team's name by its unique ID. * * @param {string} teamId * @param {string} name * @throws {AppwriteException} * @returns {Promise} */ updateName(teamId, name) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("put", uri, { "content-type": "application/json" }, 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} */ delete(teamId) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("delete", uri, { "content-type": "application/json" }, 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} */ listMemberships(teamId, queries, search) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ createMembership(teamId, roles, email, userId, phone, url, name) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("post", uri, { "content-type": "application/json" }, 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} */ getMembership(teamId, membershipId) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ updateMembership(teamId, membershipId, roles) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("patch", uri, { "content-type": "application/json" }, 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} */ deleteMembership(teamId, membershipId) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("delete", uri, { "content-type": "application/json" }, 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} */ updateMembershipStatus(teamId, membershipId, userId, secret) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("patch", uri, { "content-type": "application/json" }, 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} */ getPrefs(teamId) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("get", uri, { "content-type": "application/json" }, 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} */ updatePrefs(teamId, prefs) { return __awaiter(this, void 0, void 0, function* () { 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); return yield this.client.call("put", uri, { "content-type": "application/json" }, payload); }); } }; var Permission = class { }; Permission.read = (role) => { return `read("${role}")`; }; Permission.write = (role) => { return `write("${role}")`; }; Permission.create = (role) => { return `create("${role}")`; }; Permission.update = (role) => { return `update("${role}")`; }; Permission.delete = (role) => { return `delete("${role}")`; }; 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}`; } }; var ID = class { static custom(id) { return id; } static unique() { return "unique()"; } }; export { Account, AppwriteException, Avatars, Client, Databases, Functions, Graphql, ID, Locale, Permission, Query, Role, Storage, Teams }; //# sourceMappingURL=appwrite.js.map