Sure! Pl
This commit is contained in:
209
Extension/lib/appwrite.min.js
vendored
Normal file
209
Extension/lib/appwrite.min.js
vendored
Normal file
@@ -0,0 +1,209 @@
|
||||
/**
|
||||
* Appwrite Web SDK - Minimal Bundle for Chrome Extension
|
||||
* This is a simplified version for extension use
|
||||
* For full SDK, download from: https://cdn.jsdelivr.net/npm/appwrite@latest/dist/iife/sdk.min.js
|
||||
*
|
||||
* Version: 21.x compatible
|
||||
*/
|
||||
|
||||
(function(global) {
|
||||
'use strict';
|
||||
|
||||
// Appwrite namespace
|
||||
const Appwrite = {};
|
||||
|
||||
// Client class
|
||||
class Client {
|
||||
constructor() {
|
||||
this.config = {
|
||||
endpoint: 'https://cloud.appwrite.io/v1',
|
||||
project: '',
|
||||
};
|
||||
this.headers = {
|
||||
'content-type': 'application/json',
|
||||
'x-sdk-name': 'Chrome Extension',
|
||||
'x-sdk-platform': 'client',
|
||||
'x-sdk-language': 'web',
|
||||
'x-sdk-version': '21.0.0',
|
||||
};
|
||||
}
|
||||
|
||||
setEndpoint(endpoint) {
|
||||
this.config.endpoint = endpoint;
|
||||
return this;
|
||||
}
|
||||
|
||||
setProject(project) {
|
||||
this.config.project = project;
|
||||
this.headers['x-appwrite-project'] = project;
|
||||
return this;
|
||||
}
|
||||
|
||||
setKey(key) {
|
||||
if (key) {
|
||||
this.headers['x-appwrite-key'] = key;
|
||||
} else {
|
||||
delete this.headers['x-appwrite-key'];
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
async call(method, path, headers = {}, params = {}) {
|
||||
const url = new URL(this.config.endpoint + path);
|
||||
const options = {
|
||||
method: method.toUpperCase(),
|
||||
headers: { ...this.headers, ...headers },
|
||||
credentials: 'include',
|
||||
};
|
||||
|
||||
if (method === 'GET') {
|
||||
for (const [key, value] of Object.entries(params)) {
|
||||
if (value !== undefined) {
|
||||
url.searchParams.append(key, value);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
options.body = JSON.stringify(params);
|
||||
}
|
||||
|
||||
const response = await fetch(url.toString(), options);
|
||||
const contentType = response.headers.get('content-type') || '';
|
||||
|
||||
let data;
|
||||
if (contentType.includes('application/json')) {
|
||||
data = await response.json();
|
||||
} else {
|
||||
data = await response.text();
|
||||
}
|
||||
|
||||
if (response.status >= 400) {
|
||||
throw new AppwriteException(
|
||||
data.message || 'Unknown error',
|
||||
response.status,
|
||||
data.type || '',
|
||||
data
|
||||
);
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
// Account class
|
||||
class Account {
|
||||
constructor(client) {
|
||||
this.client = client;
|
||||
}
|
||||
|
||||
async get() {
|
||||
return await this.client.call('GET', '/account');
|
||||
}
|
||||
|
||||
async create(userId, email, password, name = undefined) {
|
||||
const params = { userId, email, password };
|
||||
if (name) params.name = name;
|
||||
return await this.client.call('POST', '/account', {}, params);
|
||||
}
|
||||
|
||||
async createEmailPasswordSession(email, password) {
|
||||
return await this.client.call('POST', '/account/sessions/email', {}, {
|
||||
email,
|
||||
password,
|
||||
});
|
||||
}
|
||||
|
||||
async createSession(userId, secret) {
|
||||
return await this.client.call('POST', '/account/sessions', {}, {
|
||||
userId,
|
||||
secret,
|
||||
});
|
||||
}
|
||||
|
||||
async getSession(sessionId) {
|
||||
return await this.client.call('GET', `/account/sessions/${sessionId}`);
|
||||
}
|
||||
|
||||
async listSessions() {
|
||||
return await this.client.call('GET', '/account/sessions');
|
||||
}
|
||||
|
||||
async deleteSession(sessionId) {
|
||||
return await this.client.call('DELETE', `/account/sessions/${sessionId}`);
|
||||
}
|
||||
|
||||
async deleteSessions() {
|
||||
return await this.client.call('DELETE', '/account/sessions');
|
||||
}
|
||||
|
||||
async updateEmail(email, password) {
|
||||
return await this.client.call('PATCH', '/account/email', {}, {
|
||||
email,
|
||||
password,
|
||||
});
|
||||
}
|
||||
|
||||
async updatePassword(password, oldPassword = undefined) {
|
||||
const params = { password };
|
||||
if (oldPassword) params.oldPassword = oldPassword;
|
||||
return await this.client.call('PATCH', '/account/password', {}, params);
|
||||
}
|
||||
|
||||
async updateName(name) {
|
||||
return await this.client.call('PATCH', '/account/name', {}, { name });
|
||||
}
|
||||
|
||||
async getPrefs() {
|
||||
return await this.client.call('GET', '/account/prefs');
|
||||
}
|
||||
|
||||
async updatePrefs(prefs) {
|
||||
return await this.client.call('PATCH', '/account/prefs', {}, { prefs });
|
||||
}
|
||||
|
||||
async createRecovery(email, url) {
|
||||
return await this.client.call('POST', '/account/recovery', {}, {
|
||||
email,
|
||||
url,
|
||||
});
|
||||
}
|
||||
|
||||
async updateRecovery(userId, secret, password) {
|
||||
return await this.client.call('PUT', '/account/recovery', {}, {
|
||||
userId,
|
||||
secret,
|
||||
password,
|
||||
});
|
||||
}
|
||||
|
||||
async createVerification(url) {
|
||||
return await this.client.call('POST', '/account/verification', {}, { url });
|
||||
}
|
||||
|
||||
async updateVerification(userId, secret) {
|
||||
return await this.client.call('PUT', '/account/verification', {}, {
|
||||
userId,
|
||||
secret,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Exception class
|
||||
class AppwriteException extends Error {
|
||||
constructor(message, code = 0, type = '', response = null) {
|
||||
super(message);
|
||||
this.name = 'AppwriteException';
|
||||
this.code = code;
|
||||
this.type = type;
|
||||
this.response = response;
|
||||
}
|
||||
}
|
||||
|
||||
// Export to Appwrite namespace
|
||||
Appwrite.Client = Client;
|
||||
Appwrite.Account = Account;
|
||||
Appwrite.AppwriteException = AppwriteException;
|
||||
|
||||
// Make available globally
|
||||
global.Appwrite = Appwrite;
|
||||
|
||||
})(typeof self !== 'undefined' ? self : this);
|
||||
Reference in New Issue
Block a user