Files
tickte-system/node_modules/.vite/deps/appwrite.js
2025-12-17 17:55:13 +01:00

3570 lines
122 KiB
JavaScript

import {
__commonJS,
__toESM
} from "./chunk-5WRI5ZAA.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<Preferences>} 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<Document, keyof Models.Document>} 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<Omit<Document, keyof Models.Document>>} 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