Email Sorter Beta
Ich habe soweit automatisiert the Emails sortieren aber ich muss noch schauen was es fur bugs es gibt wenn die app online ist deswegen wurde ich mit diesen Commit die website veroffentlichen obwohjl es sein konnte das es noch nicht fertig ist und verkaufs bereit
This commit is contained in:
51
server/.env
51
server/.env
@@ -1,29 +1,26 @@
|
||||
# Appwrite Configuration
|
||||
APPWRITE_ENDPOINT=https://appwrite.webklar.com/v1
|
||||
APPWRITE_PROJECT_ID=696533bd0003952a02d4
|
||||
APPWRITE_API_KEY=297b989f4f706df75aee7d768422021787228412c88d00d663a3dae462e09d74a8c18ae973f44c8693c1fc65c2cc0939e4887f44b08548234df464e9acaeee7392c1cf35711bc94b0aa33eec2d5dd3b0178acc3061a34dca13b23f5f94e0db4d0f80bc53fbb63f2ec3b2eb2372c1d5cfa17483e150cbfde8a7b82759334abb82
|
||||
APPWRITE_DATABASE_ID=mail-sorter
|
||||
|
||||
# Database Configuration (for bootstrap script)
|
||||
DB_ID=mail-sorter
|
||||
DB_NAME=EmailSorter
|
||||
TABLE_PRODUCTS=products
|
||||
TABLE_QUESTIONS=questions
|
||||
TABLE_SUBMISSIONS=submissions
|
||||
TABLE_ANSWERS=answers
|
||||
TABLE_ORDERS=orders
|
||||
|
||||
# Product Configuration (for bootstrap script)
|
||||
PRODUCT_ID=email-sorter-product
|
||||
PRODUCT_SLUG=email-sorter
|
||||
PRODUCT_TITLE=Email Sorter Setup
|
||||
PRODUCT_PRICE_CENTS=4900
|
||||
PRODUCT_CURRENCY=eur
|
||||
|
||||
# Stripe Configuration
|
||||
STRIPE_SECRET_KEY=sk_test_51SpYllRsB5VYNsBGAgYJmoyfdu1MnOyOxuUddGbmbolOTS0dGKi4GHuW20Z1Y9AUINCM7IJREIuxY9kgyQbJ9aeR00zlnRvjHs
|
||||
STRIPE_WEBHOOK_SECRET=whsec_your_webhook_secret_here
|
||||
|
||||
# Server Configuration
|
||||
# Server
|
||||
PORT=3000
|
||||
NODE_ENV=development
|
||||
BASE_URL=http://localhost:3000
|
||||
FRONTEND_URL=http://localhost:5173
|
||||
|
||||
# Appwrite (Self-Hosted)
|
||||
APPWRITE_ENDPOINT=https://appwrite.webklar.com/v1
|
||||
APPWRITE_PROJECT_ID=696d0949001c70d6c6da
|
||||
APPWRITE_API_KEY=standard_03507d30aec465c79b21cb09603f03f6e2165c4054ba8b761f61850b41229ee68f967a7677bbf4dd80b54cf6fa2b1cfe101fddff5ba4166ec7d0f09e7dc6f5e6e4585fce24d0ee5d745202e2b52a3846e71e4672e3257a7f3c1e9a0bfac256c508c1d07903e887b84934fb9ee46776ff8c474ffdd00173348ddfd263e467c6a5
|
||||
APPWRITE_DATABASE_ID=email_sorter_db
|
||||
|
||||
# Stripe
|
||||
STRIPE_SECRET_KEY=sk_test_51SpYm0RvlKyip3LEUX2f29RDbf2GgQGbH7ht2jkoBT3T5icFTCKa9y0LsYfTDN5DW7rFg5MQvg5dFCvq40HwmzHE00CRwvYIm7
|
||||
STRIPE_WEBHOOK_SECRET=whsec_placeholder
|
||||
STRIPE_PRICE_BASIC=price_basic
|
||||
STRIPE_PRICE_PRO=price_pro
|
||||
STRIPE_PRICE_BUSINESS=price_business
|
||||
|
||||
# Mistral AI
|
||||
MISTRAL_API_KEY=yPe00wetm26x9FW4Ifjom2UaEd0hf1ND
|
||||
|
||||
# Google OAuth (NEU)
|
||||
GOOGLE_CLIENT_ID=1073365670500-a6t1srj1ogu1bumoo20511mq4nesouul.apps.googleusercontent.com
|
||||
GOOGLE_CLIENT_SECRET=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
|
||||
GOOGLE_REDIRECT_URI=http://localhost:3000/api/oauth/gmail/callback
|
||||
|
||||
225
server/bootstrap-v2.mjs
Normal file
225
server/bootstrap-v2.mjs
Normal file
@@ -0,0 +1,225 @@
|
||||
import 'dotenv/config';
|
||||
import { Client, Databases, ID, Permission, Role } from "node-appwrite";
|
||||
|
||||
/**
|
||||
* EmailSorter Database Bootstrap Script v2
|
||||
* Creates all required collections for the full EmailSorter app
|
||||
*/
|
||||
|
||||
const requiredEnv = [
|
||||
"APPWRITE_ENDPOINT",
|
||||
"APPWRITE_PROJECT_ID",
|
||||
"APPWRITE_API_KEY",
|
||||
];
|
||||
|
||||
for (const k of requiredEnv) {
|
||||
if (!process.env[k]) {
|
||||
console.error(`Missing env var: ${k}`);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint(process.env.APPWRITE_ENDPOINT)
|
||||
.setProject(process.env.APPWRITE_PROJECT_ID)
|
||||
.setKey(process.env.APPWRITE_API_KEY);
|
||||
|
||||
const db = new Databases(client);
|
||||
|
||||
const DB_ID = process.env.APPWRITE_DATABASE_ID || 'emailsorter';
|
||||
const DB_NAME = 'EmailSorter';
|
||||
|
||||
// Helper: create database if not exists
|
||||
async function ensureDatabase() {
|
||||
try {
|
||||
await db.get(DB_ID);
|
||||
console.log("✓ Database exists:", DB_ID);
|
||||
} catch {
|
||||
await db.create(DB_ID, DB_NAME);
|
||||
console.log("✓ Database created:", DB_ID);
|
||||
}
|
||||
}
|
||||
|
||||
// Helper: create collection if not exists
|
||||
async function ensureCollection(collectionId, name, permissions = []) {
|
||||
try {
|
||||
await db.getCollection(DB_ID, collectionId);
|
||||
console.log(`✓ Collection exists: ${collectionId}`);
|
||||
} catch {
|
||||
await db.createCollection(DB_ID, collectionId, name, permissions, true);
|
||||
console.log(`✓ Collection created: ${collectionId}`);
|
||||
}
|
||||
}
|
||||
|
||||
// Helper: create attribute if not exists
|
||||
async function ensureAttribute(collectionId, key, createFn) {
|
||||
const attributes = await db.listAttributes(DB_ID, collectionId);
|
||||
const exists = attributes.attributes?.some(a => a.key === key);
|
||||
if (exists) {
|
||||
console.log(` - Attribute exists: ${collectionId}.${key}`);
|
||||
return;
|
||||
}
|
||||
await createFn();
|
||||
console.log(` + Attribute created: ${collectionId}.${key}`);
|
||||
// Wait for attribute to be ready
|
||||
await new Promise(resolve => setTimeout(resolve, 1000));
|
||||
}
|
||||
|
||||
// Permission templates
|
||||
const PERM_PUBLIC_READ = [Permission.read(Role.any())];
|
||||
const PERM_AUTHENTICATED = [
|
||||
Permission.read(Role.users()),
|
||||
Permission.create(Role.users()),
|
||||
];
|
||||
const PERM_SERVER_ONLY = [];
|
||||
|
||||
async function setupCollections() {
|
||||
// ==================== Products ====================
|
||||
await ensureCollection('products', 'Products', PERM_PUBLIC_READ);
|
||||
await ensureAttribute('products', 'slug', () =>
|
||||
db.createStringAttribute(DB_ID, 'products', 'slug', 128, true));
|
||||
await ensureAttribute('products', 'title', () =>
|
||||
db.createStringAttribute(DB_ID, 'products', 'title', 256, true));
|
||||
await ensureAttribute('products', 'description', () =>
|
||||
db.createStringAttribute(DB_ID, 'products', 'description', 4096, false));
|
||||
await ensureAttribute('products', 'priceCents', () =>
|
||||
db.createIntegerAttribute(DB_ID, 'products', 'priceCents', true, 0, 999999999));
|
||||
await ensureAttribute('products', 'currency', () =>
|
||||
db.createStringAttribute(DB_ID, 'products', 'currency', 8, true));
|
||||
await ensureAttribute('products', 'isActive', () =>
|
||||
db.createBooleanAttribute(DB_ID, 'products', 'isActive', true));
|
||||
|
||||
// ==================== Questions ====================
|
||||
await ensureCollection('questions', 'Questions', PERM_PUBLIC_READ);
|
||||
await ensureAttribute('questions', 'productId', () =>
|
||||
db.createStringAttribute(DB_ID, 'questions', 'productId', 64, true));
|
||||
await ensureAttribute('questions', 'key', () =>
|
||||
db.createStringAttribute(DB_ID, 'questions', 'key', 64, true));
|
||||
await ensureAttribute('questions', 'label', () =>
|
||||
db.createStringAttribute(DB_ID, 'questions', 'label', 256, true));
|
||||
await ensureAttribute('questions', 'helpText', () =>
|
||||
db.createStringAttribute(DB_ID, 'questions', 'helpText', 1024, false));
|
||||
await ensureAttribute('questions', 'type', () =>
|
||||
db.createStringAttribute(DB_ID, 'questions', 'type', 32, true));
|
||||
await ensureAttribute('questions', 'required', () =>
|
||||
db.createBooleanAttribute(DB_ID, 'questions', 'required', true));
|
||||
await ensureAttribute('questions', 'step', () =>
|
||||
db.createIntegerAttribute(DB_ID, 'questions', 'step', true, 1, 9999));
|
||||
await ensureAttribute('questions', 'order', () =>
|
||||
db.createIntegerAttribute(DB_ID, 'questions', 'order', true, 1, 999999));
|
||||
await ensureAttribute('questions', 'optionsJson', () =>
|
||||
db.createStringAttribute(DB_ID, 'questions', 'optionsJson', 8192, false));
|
||||
await ensureAttribute('questions', 'isActive', () =>
|
||||
db.createBooleanAttribute(DB_ID, 'questions', 'isActive', true));
|
||||
|
||||
// ==================== Submissions ====================
|
||||
await ensureCollection('submissions', 'Submissions', PERM_AUTHENTICATED);
|
||||
await ensureAttribute('submissions', 'productId', () =>
|
||||
db.createStringAttribute(DB_ID, 'submissions', 'productId', 64, true));
|
||||
await ensureAttribute('submissions', 'status', () =>
|
||||
db.createStringAttribute(DB_ID, 'submissions', 'status', 32, true));
|
||||
await ensureAttribute('submissions', 'customerEmail', () =>
|
||||
db.createEmailAttribute(DB_ID, 'submissions', 'customerEmail', false));
|
||||
await ensureAttribute('submissions', 'customerName', () =>
|
||||
db.createStringAttribute(DB_ID, 'submissions', 'customerName', 256, false));
|
||||
await ensureAttribute('submissions', 'finalSummaryJson', () =>
|
||||
db.createStringAttribute(DB_ID, 'submissions', 'finalSummaryJson', 16384, false));
|
||||
await ensureAttribute('submissions', 'priceCents', () =>
|
||||
db.createIntegerAttribute(DB_ID, 'submissions', 'priceCents', true, 0, 999999999));
|
||||
await ensureAttribute('submissions', 'currency', () =>
|
||||
db.createStringAttribute(DB_ID, 'submissions', 'currency', 8, true));
|
||||
|
||||
// ==================== Answers ====================
|
||||
await ensureCollection('answers', 'Answers', PERM_AUTHENTICATED);
|
||||
await ensureAttribute('answers', 'submissionId', () =>
|
||||
db.createStringAttribute(DB_ID, 'answers', 'submissionId', 64, true));
|
||||
await ensureAttribute('answers', 'answersJson', () =>
|
||||
db.createStringAttribute(DB_ID, 'answers', 'answersJson', 16384, true));
|
||||
|
||||
// ==================== Orders ====================
|
||||
await ensureCollection('orders', 'Orders', PERM_SERVER_ONLY);
|
||||
await ensureAttribute('orders', 'submissionId', () =>
|
||||
db.createStringAttribute(DB_ID, 'orders', 'submissionId', 64, true));
|
||||
await ensureAttribute('orders', 'orderDataJson', () =>
|
||||
db.createStringAttribute(DB_ID, 'orders', 'orderDataJson', 16384, true));
|
||||
|
||||
// ==================== Email Accounts ====================
|
||||
await ensureCollection('email_accounts', 'Email Accounts', PERM_AUTHENTICATED);
|
||||
await ensureAttribute('email_accounts', 'userId', () =>
|
||||
db.createStringAttribute(DB_ID, 'email_accounts', 'userId', 64, true));
|
||||
await ensureAttribute('email_accounts', 'provider', () =>
|
||||
db.createStringAttribute(DB_ID, 'email_accounts', 'provider', 32, true));
|
||||
await ensureAttribute('email_accounts', 'email', () =>
|
||||
db.createEmailAttribute(DB_ID, 'email_accounts', 'email', true));
|
||||
await ensureAttribute('email_accounts', 'accessToken', () =>
|
||||
db.createStringAttribute(DB_ID, 'email_accounts', 'accessToken', 4096, false));
|
||||
await ensureAttribute('email_accounts', 'refreshToken', () =>
|
||||
db.createStringAttribute(DB_ID, 'email_accounts', 'refreshToken', 4096, false));
|
||||
await ensureAttribute('email_accounts', 'expiresAt', () =>
|
||||
db.createIntegerAttribute(DB_ID, 'email_accounts', 'expiresAt', false));
|
||||
await ensureAttribute('email_accounts', 'isActive', () =>
|
||||
db.createBooleanAttribute(DB_ID, 'email_accounts', 'isActive', true));
|
||||
await ensureAttribute('email_accounts', 'lastSync', () =>
|
||||
db.createDatetimeAttribute(DB_ID, 'email_accounts', 'lastSync', false));
|
||||
|
||||
// ==================== Email Stats ====================
|
||||
await ensureCollection('email_stats', 'Email Stats', PERM_AUTHENTICATED);
|
||||
await ensureAttribute('email_stats', 'userId', () =>
|
||||
db.createStringAttribute(DB_ID, 'email_stats', 'userId', 64, true));
|
||||
await ensureAttribute('email_stats', 'totalSorted', () =>
|
||||
db.createIntegerAttribute(DB_ID, 'email_stats', 'totalSorted', true, 0));
|
||||
await ensureAttribute('email_stats', 'todaySorted', () =>
|
||||
db.createIntegerAttribute(DB_ID, 'email_stats', 'todaySorted', true, 0));
|
||||
await ensureAttribute('email_stats', 'weekSorted', () =>
|
||||
db.createIntegerAttribute(DB_ID, 'email_stats', 'weekSorted', true, 0));
|
||||
await ensureAttribute('email_stats', 'categoriesJson', () =>
|
||||
db.createStringAttribute(DB_ID, 'email_stats', 'categoriesJson', 4096, false));
|
||||
await ensureAttribute('email_stats', 'timeSavedMinutes', () =>
|
||||
db.createIntegerAttribute(DB_ID, 'email_stats', 'timeSavedMinutes', true, 0));
|
||||
|
||||
// ==================== Subscriptions ====================
|
||||
await ensureCollection('subscriptions', 'Subscriptions', PERM_AUTHENTICATED);
|
||||
await ensureAttribute('subscriptions', 'userId', () =>
|
||||
db.createStringAttribute(DB_ID, 'subscriptions', 'userId', 64, true));
|
||||
await ensureAttribute('subscriptions', 'stripeCustomerId', () =>
|
||||
db.createStringAttribute(DB_ID, 'subscriptions', 'stripeCustomerId', 128, false));
|
||||
await ensureAttribute('subscriptions', 'stripeSubscriptionId', () =>
|
||||
db.createStringAttribute(DB_ID, 'subscriptions', 'stripeSubscriptionId', 128, false));
|
||||
await ensureAttribute('subscriptions', 'plan', () =>
|
||||
db.createStringAttribute(DB_ID, 'subscriptions', 'plan', 32, true));
|
||||
await ensureAttribute('subscriptions', 'status', () =>
|
||||
db.createStringAttribute(DB_ID, 'subscriptions', 'status', 32, true));
|
||||
await ensureAttribute('subscriptions', 'currentPeriodEnd', () =>
|
||||
db.createDatetimeAttribute(DB_ID, 'subscriptions', 'currentPeriodEnd', false));
|
||||
await ensureAttribute('subscriptions', 'cancelAtPeriodEnd', () =>
|
||||
db.createBooleanAttribute(DB_ID, 'subscriptions', 'cancelAtPeriodEnd', false));
|
||||
|
||||
// ==================== User Preferences ====================
|
||||
await ensureCollection('user_preferences', 'User Preferences', PERM_AUTHENTICATED);
|
||||
await ensureAttribute('user_preferences', 'userId', () =>
|
||||
db.createStringAttribute(DB_ID, 'user_preferences', 'userId', 64, true));
|
||||
await ensureAttribute('user_preferences', 'preferencesJson', () =>
|
||||
db.createStringAttribute(DB_ID, 'user_preferences', 'preferencesJson', 16384, false));
|
||||
}
|
||||
|
||||
async function main() {
|
||||
console.log('\n========================================');
|
||||
console.log(' EmailSorter Database Bootstrap v2');
|
||||
console.log('========================================\n');
|
||||
|
||||
await ensureDatabase();
|
||||
console.log('\n--- Setting up collections ---\n');
|
||||
await setupCollections();
|
||||
|
||||
console.log('\n========================================');
|
||||
console.log(' ✓ Bootstrap complete!');
|
||||
console.log(` Database ID: ${DB_ID}`);
|
||||
console.log('========================================\n');
|
||||
console.log('Add this to your .env file:');
|
||||
console.log(`APPWRITE_DATABASE_ID=${DB_ID}\n`);
|
||||
}
|
||||
|
||||
main().catch((e) => {
|
||||
console.error('Bootstrap failed:', e);
|
||||
process.exit(1);
|
||||
});
|
||||
@@ -1,15 +1,48 @@
|
||||
/**
|
||||
* EmailSorter - Database Cleanup Script
|
||||
*
|
||||
* ⚠️ WICHTIG: Liest Credentials aus Umgebungsvariablen (.env)
|
||||
* Keine hardcoded API Keys mehr!
|
||||
*/
|
||||
|
||||
import 'dotenv/config';
|
||||
import { Client, Databases } from "node-appwrite";
|
||||
|
||||
// Prüfe erforderliche Umgebungsvariablen
|
||||
const requiredEnv = [
|
||||
"APPWRITE_ENDPOINT",
|
||||
"APPWRITE_PROJECT_ID",
|
||||
"APPWRITE_API_KEY",
|
||||
"APPWRITE_DATABASE_ID"
|
||||
];
|
||||
|
||||
for (const key of requiredEnv) {
|
||||
if (!process.env[key]) {
|
||||
console.error(`❌ Fehlende Umgebungsvariable: ${key}`);
|
||||
console.error(`\nBitte setze diese Variable in server/.env`);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint("https://appwrite.webklar.com/v1")
|
||||
.setProject("696533bd0003952a02d4")
|
||||
.setKey("297b989f4f706df75aee7d768422021787228412c88d00d663a3dae462e09d74a8c18ae973f44c8693c1fc65c2cc0939e4887f44b08548234df464e9acaeee7392c1cf35711bc94b0aa33eec2d5dd3b0178acc3061a34dca13b23f5f94e0db4d0f80bc53fbb63f2ec3b2eb2372c1d5cfa17483e150cbfde8a7b82759334abb82");
|
||||
.setEndpoint(process.env.APPWRITE_ENDPOINT)
|
||||
.setProject(process.env.APPWRITE_PROJECT_ID)
|
||||
.setKey(process.env.APPWRITE_API_KEY);
|
||||
|
||||
const db = new Databases(client);
|
||||
const databaseId = process.env.APPWRITE_DATABASE_ID;
|
||||
|
||||
console.log(`🗑️ Lösche Datenbank: ${databaseId}`);
|
||||
console.log(`⚠️ WARNUNG: Diese Aktion kann nicht rückgängig gemacht werden!\n`);
|
||||
|
||||
try {
|
||||
await db.delete("mail-sorter");
|
||||
console.log("Database deleted successfully");
|
||||
await db.delete(databaseId);
|
||||
console.log(`✅ Datenbank erfolgreich gelöscht: ${databaseId}`);
|
||||
} catch (e) {
|
||||
console.error("Error deleting database:", e.message);
|
||||
if (e.code === 404) {
|
||||
console.log(`ℹ️ Datenbank existiert nicht: ${databaseId}`);
|
||||
} else {
|
||||
console.error(`❌ Fehler beim Löschen der Datenbank:`, e.message);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
137
server/config/index.mjs
Normal file
137
server/config/index.mjs
Normal file
@@ -0,0 +1,137 @@
|
||||
/**
|
||||
* Application Configuration
|
||||
* Centralized configuration management
|
||||
*/
|
||||
|
||||
import { log } from '../middleware/logger.mjs'
|
||||
|
||||
/**
|
||||
* Environment configuration
|
||||
*/
|
||||
export const config = {
|
||||
// Server
|
||||
port: parseInt(process.env.PORT || '3000', 10),
|
||||
nodeEnv: process.env.NODE_ENV || 'development',
|
||||
isDev: process.env.NODE_ENV !== 'production',
|
||||
isProd: process.env.NODE_ENV === 'production',
|
||||
|
||||
// URLs
|
||||
baseUrl: process.env.BASE_URL || 'http://localhost:3000',
|
||||
frontendUrl: process.env.FRONTEND_URL || 'http://localhost:5173',
|
||||
|
||||
// Appwrite
|
||||
appwrite: {
|
||||
endpoint: process.env.APPWRITE_ENDPOINT,
|
||||
projectId: process.env.APPWRITE_PROJECT_ID,
|
||||
apiKey: process.env.APPWRITE_API_KEY,
|
||||
databaseId: process.env.APPWRITE_DATABASE_ID,
|
||||
},
|
||||
|
||||
// Stripe
|
||||
stripe: {
|
||||
secretKey: process.env.STRIPE_SECRET_KEY,
|
||||
webhookSecret: process.env.STRIPE_WEBHOOK_SECRET,
|
||||
prices: {
|
||||
basic: process.env.STRIPE_PRICE_BASIC || 'price_basic_monthly',
|
||||
pro: process.env.STRIPE_PRICE_PRO || 'price_pro_monthly',
|
||||
business: process.env.STRIPE_PRICE_BUSINESS || 'price_business_monthly',
|
||||
},
|
||||
},
|
||||
|
||||
// Google OAuth
|
||||
google: {
|
||||
clientId: process.env.GOOGLE_CLIENT_ID,
|
||||
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
|
||||
redirectUri: process.env.GOOGLE_REDIRECT_URI || 'http://localhost:3000/api/oauth/gmail/callback',
|
||||
},
|
||||
|
||||
// Microsoft OAuth
|
||||
microsoft: {
|
||||
clientId: process.env.MICROSOFT_CLIENT_ID,
|
||||
clientSecret: process.env.MICROSOFT_CLIENT_SECRET,
|
||||
redirectUri: process.env.MICROSOFT_REDIRECT_URI || 'http://localhost:3000/api/oauth/outlook/callback',
|
||||
},
|
||||
|
||||
// Mistral AI
|
||||
mistral: {
|
||||
apiKey: process.env.MISTRAL_API_KEY,
|
||||
},
|
||||
|
||||
// Rate Limiting
|
||||
rateLimit: {
|
||||
windowMs: parseInt(process.env.RATE_LIMIT_WINDOW_MS || '60000', 10),
|
||||
max: parseInt(process.env.RATE_LIMIT_MAX || '100', 10),
|
||||
},
|
||||
|
||||
// CORS
|
||||
cors: {
|
||||
origin: process.env.CORS_ORIGIN || process.env.FRONTEND_URL || 'http://localhost:5173',
|
||||
credentials: true,
|
||||
},
|
||||
}
|
||||
|
||||
/**
|
||||
* Required environment variables
|
||||
*/
|
||||
const requiredVars = [
|
||||
'APPWRITE_ENDPOINT',
|
||||
'APPWRITE_PROJECT_ID',
|
||||
'APPWRITE_API_KEY',
|
||||
'APPWRITE_DATABASE_ID',
|
||||
'STRIPE_SECRET_KEY',
|
||||
'STRIPE_WEBHOOK_SECRET',
|
||||
]
|
||||
|
||||
/**
|
||||
* Optional but recommended variables
|
||||
*/
|
||||
const recommendedVars = [
|
||||
'MISTRAL_API_KEY',
|
||||
'GOOGLE_CLIENT_ID',
|
||||
'MICROSOFT_CLIENT_ID',
|
||||
]
|
||||
|
||||
/**
|
||||
* Validate configuration
|
||||
*/
|
||||
export function validateConfig() {
|
||||
const missing = []
|
||||
const warnings = []
|
||||
|
||||
// Check required variables
|
||||
for (const varName of requiredVars) {
|
||||
if (!process.env[varName]) {
|
||||
missing.push(varName)
|
||||
}
|
||||
}
|
||||
|
||||
if (missing.length > 0) {
|
||||
log.error(`Fehlende Umgebungsvariablen: ${missing.join(', ')}`)
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
// Check recommended variables
|
||||
for (const varName of recommendedVars) {
|
||||
if (!process.env[varName]) {
|
||||
warnings.push(varName)
|
||||
}
|
||||
}
|
||||
|
||||
if (warnings.length > 0) {
|
||||
log.warn(`Optionale Variablen fehlen: ${warnings.join(', ')}`)
|
||||
}
|
||||
|
||||
log.success('Konfiguration validiert')
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
* Feature flags based on available config
|
||||
*/
|
||||
export const features = {
|
||||
gmail: () => Boolean(config.google.clientId && config.google.clientSecret),
|
||||
outlook: () => Boolean(config.microsoft.clientId && config.microsoft.clientSecret),
|
||||
ai: () => Boolean(config.mistral.apiKey),
|
||||
}
|
||||
|
||||
export default config
|
||||
72
server/env.example
Normal file
72
server/env.example
Normal file
@@ -0,0 +1,72 @@
|
||||
# ═══════════════════════════════════════════════════════════════════════════
|
||||
# EmailSorter Backend - Konfiguration
|
||||
# ═══════════════════════════════════════════════════════════════════════════
|
||||
# Kopiere diese Datei nach `.env` und fülle die Werte aus.
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# Server Einstellungen
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
PORT=3000
|
||||
NODE_ENV=development
|
||||
BASE_URL=http://localhost:3000
|
||||
FRONTEND_URL=http://localhost:5173
|
||||
|
||||
# CORS Einstellungen (optional, nutzt FRONTEND_URL als Default)
|
||||
# CORS_ORIGIN=http://localhost:5173
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# Appwrite (ERFORDERLICH)
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# Erstelle ein Projekt auf https://cloud.appwrite.io
|
||||
APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1
|
||||
APPWRITE_PROJECT_ID=dein_projekt_id
|
||||
APPWRITE_API_KEY=dein_api_key_mit_allen_berechtigungen
|
||||
APPWRITE_DATABASE_ID=email_sorter_db
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# Stripe (ERFORDERLICH)
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# Dashboard: https://dashboard.stripe.com
|
||||
STRIPE_SECRET_KEY=sk_test_...
|
||||
STRIPE_WEBHOOK_SECRET=whsec_...
|
||||
|
||||
# Subscription Preise (erstelle diese im Stripe Dashboard)
|
||||
STRIPE_PRICE_BASIC=price_basic_monthly
|
||||
STRIPE_PRICE_PRO=price_pro_monthly
|
||||
STRIPE_PRICE_BUSINESS=price_business_monthly
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# Mistral AI (EMPFOHLEN)
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# API Key von https://console.mistral.ai
|
||||
MISTRAL_API_KEY=dein_mistral_api_key
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# Google OAuth - Gmail Integration (OPTIONAL)
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# Einrichtung: https://console.cloud.google.com
|
||||
# 1. Neues Projekt erstellen
|
||||
# 2. Gmail API aktivieren
|
||||
# 3. OAuth Consent Screen konfigurieren
|
||||
# 4. OAuth 2.0 Credentials erstellen
|
||||
GOOGLE_CLIENT_ID=xxx.apps.googleusercontent.com
|
||||
GOOGLE_CLIENT_SECRET=GOCSPX-xxx
|
||||
GOOGLE_REDIRECT_URI=http://localhost:3000/api/oauth/gmail/callback
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# Microsoft OAuth - Outlook Integration (OPTIONAL)
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# Einrichtung: https://portal.azure.com
|
||||
# 1. App Registration erstellen
|
||||
# 2. API Permissions: Mail.ReadWrite, User.Read, offline_access
|
||||
# 3. Client Secret erstellen
|
||||
# 4. Redirect URI konfigurieren
|
||||
MICROSOFT_CLIENT_ID=xxx-xxx-xxx
|
||||
MICROSOFT_CLIENT_SECRET=xxx
|
||||
MICROSOFT_REDIRECT_URI=http://localhost:3000/api/oauth/outlook/callback
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# Rate Limiting (OPTIONAL)
|
||||
# ─────────────────────────────────────────────────────────────────────────────
|
||||
# RATE_LIMIT_WINDOW_MS=60000
|
||||
# RATE_LIMIT_MAX=100
|
||||
359
server/index.mjs
359
server/index.mjs
@@ -1,209 +1,168 @@
|
||||
import 'dotenv/config';
|
||||
import express from 'express';
|
||||
import { Client, Databases, Query } from 'node-appwrite';
|
||||
import Stripe from 'stripe';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { dirname, join } from 'path';
|
||||
/**
|
||||
* EmailSorter Backend Server
|
||||
* Main entry point
|
||||
*/
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
import 'dotenv/config'
|
||||
import express from 'express'
|
||||
import cors from 'cors'
|
||||
import { fileURLToPath } from 'url'
|
||||
import { dirname, join } from 'path'
|
||||
|
||||
const requiredEnvVars = [
|
||||
'APPWRITE_ENDPOINT',
|
||||
'APPWRITE_PROJECT_ID',
|
||||
'APPWRITE_API_KEY',
|
||||
'APPWRITE_DATABASE_ID',
|
||||
'STRIPE_SECRET_KEY',
|
||||
'STRIPE_WEBHOOK_SECRET'
|
||||
];
|
||||
// Config & Middleware
|
||||
import { config, validateConfig } from './config/index.mjs'
|
||||
import { errorHandler, asyncHandler, NotFoundError, ValidationError } from './middleware/errorHandler.mjs'
|
||||
import { respond } from './utils/response.mjs'
|
||||
import { logger, log } from './middleware/logger.mjs'
|
||||
import { limiters } from './middleware/rateLimit.mjs'
|
||||
|
||||
for (const envVar of requiredEnvVars) {
|
||||
if (!process.env[envVar]) {
|
||||
console.error(`Error: Missing required environment variable: ${envVar}`);
|
||||
process.exit(1);
|
||||
}
|
||||
// Routes
|
||||
import oauthRoutes from './routes/oauth.mjs'
|
||||
import emailRoutes from './routes/email.mjs'
|
||||
import stripeRoutes from './routes/stripe.mjs'
|
||||
import apiRoutes from './routes/api.mjs'
|
||||
import analyticsRoutes from './routes/analytics.mjs'
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url)
|
||||
const __dirname = dirname(__filename)
|
||||
|
||||
// Validate configuration
|
||||
validateConfig()
|
||||
|
||||
// Create Express app
|
||||
const app = express()
|
||||
|
||||
// Trust proxy (for rate limiting behind reverse proxy)
|
||||
app.set('trust proxy', 1)
|
||||
|
||||
// Request ID middleware
|
||||
app.use((req, res, next) => {
|
||||
req.id = Math.random().toString(36).substring(2, 15)
|
||||
res.setHeader('X-Request-ID', req.id)
|
||||
next()
|
||||
})
|
||||
|
||||
// CORS
|
||||
app.use(cors(config.cors))
|
||||
|
||||
// Request logging
|
||||
app.use(logger({
|
||||
skip: (req) => req.path === '/api/health' || req.path.startsWith('/assets'),
|
||||
}))
|
||||
|
||||
// Rate limiting
|
||||
app.use('/api', limiters.api)
|
||||
|
||||
// Static files
|
||||
app.use(express.static(join(__dirname, '..', 'public')))
|
||||
|
||||
// Body parsing (BEFORE routes, AFTER static)
|
||||
// Note: Stripe webhook needs raw body, handled in stripe routes
|
||||
app.use('/api', express.json({ limit: '1mb' }))
|
||||
app.use('/api', express.urlencoded({ extended: true }))
|
||||
|
||||
// Health check (no rate limit)
|
||||
app.get('/api/health', (req, res) => {
|
||||
res.json({
|
||||
success: true,
|
||||
data: {
|
||||
status: 'healthy',
|
||||
timestamp: new Date().toISOString(),
|
||||
version: process.env.npm_package_version || '1.0.0',
|
||||
environment: config.nodeEnv,
|
||||
uptime: Math.floor(process.uptime()),
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
// API Routes
|
||||
app.use('/api/oauth', oauthRoutes)
|
||||
app.use('/api/email', emailRoutes)
|
||||
app.use('/api/subscription', stripeRoutes)
|
||||
app.use('/api/analytics', analyticsRoutes)
|
||||
app.use('/api', apiRoutes)
|
||||
|
||||
// Preferences endpoints (inline for simplicity)
|
||||
import { userPreferences } from './services/database.mjs'
|
||||
|
||||
app.get('/api/preferences', asyncHandler(async (req, res) => {
|
||||
const { userId } = req.query
|
||||
if (!userId) throw new ValidationError('userId ist erforderlich')
|
||||
|
||||
const prefs = await userPreferences.getByUser(userId)
|
||||
respond.success(res, prefs?.preferences || {
|
||||
vipSenders: [],
|
||||
blockedSenders: [],
|
||||
customRules: [],
|
||||
priorityTopics: [],
|
||||
})
|
||||
}))
|
||||
|
||||
app.post('/api/preferences', asyncHandler(async (req, res) => {
|
||||
const { userId, ...preferences } = req.body
|
||||
if (!userId) throw new ValidationError('userId ist erforderlich')
|
||||
|
||||
await userPreferences.upsert(userId, preferences)
|
||||
respond.success(res, null, 'Einstellungen gespeichert')
|
||||
}))
|
||||
|
||||
// Legacy Stripe webhook endpoint
|
||||
app.use('/stripe', stripeRoutes)
|
||||
|
||||
// 404 handler for API routes
|
||||
app.use('/api/*', (req, res, next) => {
|
||||
next(new NotFoundError('Endpoint'))
|
||||
})
|
||||
|
||||
// SPA fallback for non-API routes
|
||||
app.get('*', (req, res) => {
|
||||
res.sendFile(join(__dirname, '..', 'public', 'index.html'))
|
||||
})
|
||||
|
||||
// Global error handler (must be last)
|
||||
app.use(errorHandler)
|
||||
|
||||
// Graceful shutdown
|
||||
let server
|
||||
|
||||
function gracefulShutdown(signal) {
|
||||
log.info(`${signal} empfangen, Server wird heruntergefahren...`)
|
||||
|
||||
server.close(() => {
|
||||
log.info('HTTP Server geschlossen')
|
||||
process.exit(0)
|
||||
})
|
||||
|
||||
// Force close after 10 seconds
|
||||
setTimeout(() => {
|
||||
log.error('Erzwungenes Herunterfahren')
|
||||
process.exit(1)
|
||||
}, 10000)
|
||||
}
|
||||
|
||||
const app = express();
|
||||
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
|
||||
process.on('SIGTERM', () => gracefulShutdown('SIGTERM'))
|
||||
process.on('SIGINT', () => gracefulShutdown('SIGINT'))
|
||||
|
||||
const client = new Client()
|
||||
.setEndpoint(process.env.APPWRITE_ENDPOINT)
|
||||
.setProject(process.env.APPWRITE_PROJECT_ID)
|
||||
.setKey(process.env.APPWRITE_API_KEY);
|
||||
// Handle uncaught errors
|
||||
process.on('uncaughtException', (err) => {
|
||||
log.error('Uncaught Exception:', { error: err.message, stack: err.stack })
|
||||
process.exit(1)
|
||||
})
|
||||
|
||||
const databases = new Databases(client);
|
||||
process.on('unhandledRejection', (reason, promise) => {
|
||||
log.error('Unhandled Rejection:', { reason, promise })
|
||||
})
|
||||
|
||||
app.use(express.static(join(__dirname, '..', 'public')));
|
||||
app.use('/api', express.json());
|
||||
// Start server
|
||||
server = app.listen(config.port, () => {
|
||||
console.log('')
|
||||
log.success(`Server gestartet auf Port ${config.port}`)
|
||||
log.info(`Frontend URL: ${config.frontendUrl}`)
|
||||
log.info(`Environment: ${config.nodeEnv}`)
|
||||
console.log('')
|
||||
console.log(` 🌐 API: http://localhost:${config.port}/api`)
|
||||
console.log(` 💚 Health: http://localhost:${config.port}/api/health`)
|
||||
console.log('')
|
||||
})
|
||||
|
||||
app.post('/stripe/webhook', express.raw({ type: 'application/json' }), async (req, res) => {
|
||||
const sig = req.headers['stripe-signature'];
|
||||
|
||||
try {
|
||||
const event = stripe.webhooks.constructEvent(
|
||||
req.body,
|
||||
sig,
|
||||
process.env.STRIPE_WEBHOOK_SECRET
|
||||
);
|
||||
|
||||
if (event.type === 'checkout.session.completed') {
|
||||
const session = event.data.object;
|
||||
const submissionId = session.metadata.submissionId;
|
||||
|
||||
if (submissionId) {
|
||||
await databases.updateDocument(
|
||||
process.env.APPWRITE_DATABASE_ID,
|
||||
'submissions',
|
||||
submissionId,
|
||||
{ status: 'paid' }
|
||||
);
|
||||
|
||||
await databases.createDocument(
|
||||
process.env.APPWRITE_DATABASE_ID,
|
||||
'orders',
|
||||
'unique()',
|
||||
{
|
||||
submissionId: submissionId,
|
||||
orderDataJson: JSON.stringify(session)
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
res.json({ received: true });
|
||||
} catch (err) {
|
||||
console.error('Webhook error:', err.message);
|
||||
res.status(400).send(`Webhook Error: ${err.message}`);
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/api/questions', async (req, res) => {
|
||||
try {
|
||||
const { productSlug } = req.query;
|
||||
|
||||
const productsResponse = await databases.listDocuments(
|
||||
process.env.APPWRITE_DATABASE_ID,
|
||||
'products',
|
||||
[Query.equal('slug', productSlug), Query.equal('isActive', true)]
|
||||
);
|
||||
|
||||
if (productsResponse.documents.length === 0) {
|
||||
return res.status(404).json({ error: 'Product not found' });
|
||||
}
|
||||
|
||||
const product = productsResponse.documents[0];
|
||||
|
||||
const questionsResponse = await databases.listDocuments(
|
||||
process.env.APPWRITE_DATABASE_ID,
|
||||
'questions',
|
||||
[
|
||||
Query.equal('productId', product.$id),
|
||||
Query.equal('isActive', true),
|
||||
Query.orderAsc('step'),
|
||||
Query.orderAsc('order')
|
||||
]
|
||||
);
|
||||
|
||||
res.json(questionsResponse.documents);
|
||||
} catch (error) {
|
||||
console.error('Error fetching questions:', error);
|
||||
res.status(500).json({ error: 'Failed to fetch questions' });
|
||||
}
|
||||
});
|
||||
|
||||
app.post('/api/submissions', async (req, res) => {
|
||||
try {
|
||||
const { productSlug, answers } = req.body;
|
||||
|
||||
const productsResponse = await databases.listDocuments(
|
||||
process.env.APPWRITE_DATABASE_ID,
|
||||
'products',
|
||||
[Query.equal('slug', productSlug)]
|
||||
);
|
||||
|
||||
if (productsResponse.documents.length === 0) {
|
||||
return res.status(404).json({ error: 'Product not found' });
|
||||
}
|
||||
|
||||
const product = productsResponse.documents[0];
|
||||
|
||||
const submission = await databases.createDocument(
|
||||
process.env.APPWRITE_DATABASE_ID,
|
||||
'submissions',
|
||||
'unique()',
|
||||
{
|
||||
productId: product.$id,
|
||||
status: 'draft',
|
||||
customerEmail: answers.email || null,
|
||||
customerName: answers.name || null,
|
||||
finalSummaryJson: JSON.stringify(answers),
|
||||
priceCents: product.priceCents,
|
||||
currency: product.currency
|
||||
}
|
||||
);
|
||||
|
||||
await databases.createDocument(
|
||||
process.env.APPWRITE_DATABASE_ID,
|
||||
'answers',
|
||||
'unique()',
|
||||
{
|
||||
submissionId: submission.$id,
|
||||
answersJson: JSON.stringify(answers)
|
||||
}
|
||||
);
|
||||
|
||||
res.json({ submissionId: submission.$id });
|
||||
} catch (error) {
|
||||
console.error('Error creating submission:', error);
|
||||
res.status(500).json({ error: 'Failed to create submission' });
|
||||
}
|
||||
});
|
||||
|
||||
app.post('/api/checkout', async (req, res) => {
|
||||
try {
|
||||
const { submissionId } = req.body;
|
||||
|
||||
if (!submissionId) {
|
||||
return res.status(400).json({ error: 'Missing submissionId' });
|
||||
}
|
||||
|
||||
const submission = await databases.getDocument(
|
||||
process.env.APPWRITE_DATABASE_ID,
|
||||
'submissions',
|
||||
submissionId
|
||||
);
|
||||
|
||||
const session = await stripe.checkout.sessions.create({
|
||||
payment_method_types: ['card'],
|
||||
line_items: [
|
||||
{
|
||||
price_data: {
|
||||
currency: submission.currency,
|
||||
product_data: {
|
||||
name: 'Email Sortierer Service',
|
||||
},
|
||||
unit_amount: submission.priceCents,
|
||||
},
|
||||
quantity: 1,
|
||||
},
|
||||
],
|
||||
mode: 'payment',
|
||||
success_url: `${process.env.BASE_URL || 'http://localhost:3000'}/success.html`,
|
||||
cancel_url: `${process.env.BASE_URL || 'http://localhost:3000'}/cancel.html`,
|
||||
metadata: {
|
||||
submissionId: submissionId
|
||||
}
|
||||
});
|
||||
|
||||
res.json({ url: session.url });
|
||||
} catch (error) {
|
||||
console.error('Error creating checkout session:', error);
|
||||
res.status(500).json({ error: 'Failed to create checkout session' });
|
||||
}
|
||||
});
|
||||
|
||||
const PORT = process.env.PORT || 3000;
|
||||
app.listen(PORT, () => {
|
||||
console.log(`Server running on port ${PORT}`);
|
||||
});
|
||||
export default app
|
||||
|
||||
106
server/middleware/errorHandler.mjs
Normal file
106
server/middleware/errorHandler.mjs
Normal file
@@ -0,0 +1,106 @@
|
||||
/**
|
||||
* Global Error Handler Middleware
|
||||
* Catches all errors and returns consistent JSON responses
|
||||
*/
|
||||
|
||||
export class AppError extends Error {
|
||||
constructor(message, statusCode = 500, code = 'INTERNAL_ERROR') {
|
||||
super(message)
|
||||
this.statusCode = statusCode
|
||||
this.code = code
|
||||
this.isOperational = true
|
||||
Error.captureStackTrace(this, this.constructor)
|
||||
}
|
||||
}
|
||||
|
||||
export class ValidationError extends AppError {
|
||||
constructor(message, fields = {}) {
|
||||
super(message, 400, 'VALIDATION_ERROR')
|
||||
this.fields = fields
|
||||
}
|
||||
}
|
||||
|
||||
export class AuthenticationError extends AppError {
|
||||
constructor(message = 'Nicht authentifiziert') {
|
||||
super(message, 401, 'AUTHENTICATION_ERROR')
|
||||
}
|
||||
}
|
||||
|
||||
export class AuthorizationError extends AppError {
|
||||
constructor(message = 'Keine Berechtigung') {
|
||||
super(message, 403, 'AUTHORIZATION_ERROR')
|
||||
}
|
||||
}
|
||||
|
||||
export class NotFoundError extends AppError {
|
||||
constructor(resource = 'Ressource') {
|
||||
super(`${resource} nicht gefunden`, 404, 'NOT_FOUND')
|
||||
}
|
||||
}
|
||||
|
||||
export class RateLimitError extends AppError {
|
||||
constructor(message = 'Zu viele Anfragen') {
|
||||
super(message, 429, 'RATE_LIMIT_EXCEEDED')
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Error handler middleware
|
||||
*/
|
||||
export function errorHandler(err, req, res, next) {
|
||||
// Log error
|
||||
console.error(`[ERROR] ${new Date().toISOString()}`, {
|
||||
method: req.method,
|
||||
path: req.path,
|
||||
error: err.message,
|
||||
stack: process.env.NODE_ENV === 'development' ? err.stack : undefined,
|
||||
})
|
||||
|
||||
// Default error values
|
||||
let statusCode = err.statusCode || 500
|
||||
let code = err.code || 'INTERNAL_ERROR'
|
||||
let message = err.message || 'Ein Fehler ist aufgetreten'
|
||||
|
||||
// Handle specific error types
|
||||
if (err.name === 'ValidationError') {
|
||||
statusCode = 400
|
||||
code = 'VALIDATION_ERROR'
|
||||
}
|
||||
|
||||
if (err.name === 'JsonWebTokenError') {
|
||||
statusCode = 401
|
||||
code = 'INVALID_TOKEN'
|
||||
message = 'Ungültiger Token'
|
||||
}
|
||||
|
||||
if (err.name === 'TokenExpiredError') {
|
||||
statusCode = 401
|
||||
code = 'TOKEN_EXPIRED'
|
||||
message = 'Token abgelaufen'
|
||||
}
|
||||
|
||||
// Don't expose internal errors in production
|
||||
if (!err.isOperational && process.env.NODE_ENV === 'production') {
|
||||
message = 'Ein interner Fehler ist aufgetreten'
|
||||
}
|
||||
|
||||
// Send response
|
||||
res.status(statusCode).json({
|
||||
success: false,
|
||||
error: {
|
||||
code,
|
||||
message,
|
||||
...(err.fields && { fields: err.fields }),
|
||||
...(process.env.NODE_ENV === 'development' && { stack: err.stack }),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Async handler wrapper to catch errors in async routes
|
||||
*/
|
||||
export function asyncHandler(fn) {
|
||||
return (req, res, next) => {
|
||||
Promise.resolve(fn(req, res, next)).catch(next)
|
||||
}
|
||||
}
|
||||
134
server/middleware/logger.mjs
Normal file
134
server/middleware/logger.mjs
Normal file
@@ -0,0 +1,134 @@
|
||||
/**
|
||||
* Request Logger Middleware
|
||||
* Logs all incoming requests with timing information
|
||||
*/
|
||||
|
||||
// ANSI color codes for terminal output
|
||||
const colors = {
|
||||
reset: '\x1b[0m',
|
||||
bright: '\x1b[1m',
|
||||
dim: '\x1b[2m',
|
||||
red: '\x1b[31m',
|
||||
green: '\x1b[32m',
|
||||
yellow: '\x1b[33m',
|
||||
blue: '\x1b[34m',
|
||||
magenta: '\x1b[35m',
|
||||
cyan: '\x1b[36m',
|
||||
}
|
||||
|
||||
/**
|
||||
* Get color based on status code
|
||||
*/
|
||||
function getStatusColor(status) {
|
||||
if (status >= 500) return colors.red
|
||||
if (status >= 400) return colors.yellow
|
||||
if (status >= 300) return colors.cyan
|
||||
if (status >= 200) return colors.green
|
||||
return colors.reset
|
||||
}
|
||||
|
||||
/**
|
||||
* Get color based on HTTP method
|
||||
*/
|
||||
function getMethodColor(method) {
|
||||
const methodColors = {
|
||||
GET: colors.green,
|
||||
POST: colors.blue,
|
||||
PUT: colors.yellow,
|
||||
PATCH: colors.yellow,
|
||||
DELETE: colors.red,
|
||||
}
|
||||
return methodColors[method] || colors.reset
|
||||
}
|
||||
|
||||
/**
|
||||
* Format duration for display
|
||||
*/
|
||||
function formatDuration(ms) {
|
||||
if (ms < 1) return `${(ms * 1000).toFixed(0)}µs`
|
||||
if (ms < 1000) return `${ms.toFixed(0)}ms`
|
||||
return `${(ms / 1000).toFixed(2)}s`
|
||||
}
|
||||
|
||||
/**
|
||||
* Logger middleware
|
||||
*/
|
||||
export function logger(options = {}) {
|
||||
const {
|
||||
skip = () => false,
|
||||
format = 'dev',
|
||||
} = options
|
||||
|
||||
return (req, res, next) => {
|
||||
if (skip(req, res)) {
|
||||
return next()
|
||||
}
|
||||
|
||||
const startTime = process.hrtime.bigint()
|
||||
const timestamp = new Date().toISOString()
|
||||
|
||||
// Capture response
|
||||
const originalSend = res.send
|
||||
res.send = function (body) {
|
||||
const endTime = process.hrtime.bigint()
|
||||
const duration = Number(endTime - startTime) / 1e6 // Convert to ms
|
||||
|
||||
const statusColor = getStatusColor(res.statusCode)
|
||||
const methodColor = getMethodColor(req.method)
|
||||
|
||||
// Log format
|
||||
const logLine = [
|
||||
`${colors.dim}[${timestamp}]${colors.reset}`,
|
||||
`${methodColor}${req.method.padEnd(7)}${colors.reset}`,
|
||||
`${req.originalUrl}`,
|
||||
`${statusColor}${res.statusCode}${colors.reset}`,
|
||||
`${colors.dim}${formatDuration(duration)}${colors.reset}`,
|
||||
].join(' ')
|
||||
|
||||
console.log(logLine)
|
||||
|
||||
// Log errors in detail
|
||||
if (res.statusCode >= 400 && body) {
|
||||
try {
|
||||
const parsed = typeof body === 'string' ? JSON.parse(body) : body
|
||||
if (parsed.error) {
|
||||
console.log(` ${colors.red}→ ${parsed.error.message}${colors.reset}`)
|
||||
}
|
||||
} catch (e) {
|
||||
// Body is not JSON
|
||||
}
|
||||
}
|
||||
|
||||
return originalSend.call(this, body)
|
||||
}
|
||||
|
||||
next()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Log levels
|
||||
*/
|
||||
export const log = {
|
||||
info: (message, data = {}) => {
|
||||
console.log(`${colors.blue}[INFO]${colors.reset} ${message}`, Object.keys(data).length ? data : '')
|
||||
},
|
||||
|
||||
warn: (message, data = {}) => {
|
||||
console.log(`${colors.yellow}[WARN]${colors.reset} ${message}`, Object.keys(data).length ? data : '')
|
||||
},
|
||||
|
||||
error: (message, data = {}) => {
|
||||
console.error(`${colors.red}[ERROR]${colors.reset} ${message}`, Object.keys(data).length ? data : '')
|
||||
},
|
||||
|
||||
debug: (message, data = {}) => {
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
console.log(`${colors.magenta}[DEBUG]${colors.reset} ${message}`, Object.keys(data).length ? data : '')
|
||||
}
|
||||
},
|
||||
|
||||
success: (message, data = {}) => {
|
||||
console.log(`${colors.green}[OK]${colors.reset} ${message}`, Object.keys(data).length ? data : '')
|
||||
},
|
||||
}
|
||||
96
server/middleware/rateLimit.mjs
Normal file
96
server/middleware/rateLimit.mjs
Normal file
@@ -0,0 +1,96 @@
|
||||
/**
|
||||
* Rate Limiting Middleware
|
||||
* Prevents abuse by limiting requests per IP/user
|
||||
*/
|
||||
|
||||
import { RateLimitError } from './errorHandler.mjs'
|
||||
|
||||
// In-memory store for rate limiting (use Redis in production)
|
||||
const requestCounts = new Map()
|
||||
|
||||
// Clean up old entries every minute
|
||||
setInterval(() => {
|
||||
const now = Date.now()
|
||||
for (const [key, data] of requestCounts.entries()) {
|
||||
if (now - data.windowStart > data.windowMs) {
|
||||
requestCounts.delete(key)
|
||||
}
|
||||
}
|
||||
}, 60000)
|
||||
|
||||
/**
|
||||
* Create rate limiter middleware
|
||||
* @param {Object} options - Rate limit options
|
||||
* @param {number} options.windowMs - Time window in milliseconds
|
||||
* @param {number} options.max - Max requests per window
|
||||
* @param {string} options.message - Error message
|
||||
* @param {Function} options.keyGenerator - Function to generate unique key
|
||||
*/
|
||||
export function rateLimit(options = {}) {
|
||||
const {
|
||||
windowMs = 60000, // 1 minute
|
||||
max = 100,
|
||||
message = 'Zu viele Anfragen. Bitte versuche es später erneut.',
|
||||
keyGenerator = (req) => req.ip,
|
||||
} = options
|
||||
|
||||
return (req, res, next) => {
|
||||
const key = keyGenerator(req)
|
||||
const now = Date.now()
|
||||
|
||||
let data = requestCounts.get(key)
|
||||
|
||||
if (!data || now - data.windowStart > windowMs) {
|
||||
data = { count: 0, windowStart: now, windowMs }
|
||||
requestCounts.set(key, data)
|
||||
}
|
||||
|
||||
data.count++
|
||||
|
||||
// Set rate limit headers
|
||||
res.set({
|
||||
'X-RateLimit-Limit': max,
|
||||
'X-RateLimit-Remaining': Math.max(0, max - data.count),
|
||||
'X-RateLimit-Reset': new Date(data.windowStart + windowMs).toISOString(),
|
||||
})
|
||||
|
||||
if (data.count > max) {
|
||||
return next(new RateLimitError(message))
|
||||
}
|
||||
|
||||
next()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Pre-configured rate limiters
|
||||
*/
|
||||
export const limiters = {
|
||||
// General API rate limit
|
||||
api: rateLimit({
|
||||
windowMs: 60000,
|
||||
max: 100,
|
||||
message: 'API Rate Limit überschritten',
|
||||
}),
|
||||
|
||||
// Stricter limit for auth endpoints
|
||||
auth: rateLimit({
|
||||
windowMs: 900000, // 15 minutes
|
||||
max: 10,
|
||||
message: 'Zu viele Anmeldeversuche. Bitte warte 15 Minuten.',
|
||||
}),
|
||||
|
||||
// Limit for email sorting (expensive operation)
|
||||
emailSort: rateLimit({
|
||||
windowMs: 60000,
|
||||
max: 30, // Erhöht für Entwicklung
|
||||
message: 'E-Mail-Sortierung ist limitiert. Bitte warte eine Minute.',
|
||||
}),
|
||||
|
||||
// Limit for AI operations
|
||||
ai: rateLimit({
|
||||
windowMs: 60000,
|
||||
max: 20,
|
||||
message: 'KI-Anfragen sind limitiert.',
|
||||
}),
|
||||
}
|
||||
131
server/middleware/validate.mjs
Normal file
131
server/middleware/validate.mjs
Normal file
@@ -0,0 +1,131 @@
|
||||
/**
|
||||
* Request Validation Middleware
|
||||
* Validates request body, query params, and route params
|
||||
*/
|
||||
|
||||
import { ValidationError } from './errorHandler.mjs'
|
||||
|
||||
/**
|
||||
* Validation rules
|
||||
*/
|
||||
export const rules = {
|
||||
required: (field) => ({
|
||||
validate: (value) => value !== undefined && value !== null && value !== '',
|
||||
message: `${field} ist erforderlich`,
|
||||
}),
|
||||
|
||||
email: () => ({
|
||||
validate: (value) => !value || /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value),
|
||||
message: 'Ungültige E-Mail-Adresse',
|
||||
}),
|
||||
|
||||
minLength: (field, min) => ({
|
||||
validate: (value) => !value || value.length >= min,
|
||||
message: `${field} muss mindestens ${min} Zeichen lang sein`,
|
||||
}),
|
||||
|
||||
maxLength: (field, max) => ({
|
||||
validate: (value) => !value || value.length <= max,
|
||||
message: `${field} darf maximal ${max} Zeichen lang sein`,
|
||||
}),
|
||||
|
||||
isIn: (field, values) => ({
|
||||
validate: (value) => !value || values.includes(value),
|
||||
message: `${field} muss einer der folgenden Werte sein: ${values.join(', ')}`,
|
||||
}),
|
||||
|
||||
isNumber: (field) => ({
|
||||
validate: (value) => !value || !isNaN(Number(value)),
|
||||
message: `${field} muss eine Zahl sein`,
|
||||
}),
|
||||
|
||||
isPositive: (field) => ({
|
||||
validate: (value) => !value || Number(value) > 0,
|
||||
message: `${field} muss positiv sein`,
|
||||
}),
|
||||
|
||||
isArray: (field) => ({
|
||||
validate: (value) => !value || Array.isArray(value),
|
||||
message: `${field} muss ein Array sein`,
|
||||
}),
|
||||
|
||||
isObject: (field) => ({
|
||||
validate: (value) => !value || (typeof value === 'object' && !Array.isArray(value)),
|
||||
message: `${field} muss ein Objekt sein`,
|
||||
}),
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate request against schema
|
||||
* @param {Object} schema - Validation schema { body: {}, query: {}, params: {} }
|
||||
*/
|
||||
export function validate(schema) {
|
||||
return (req, res, next) => {
|
||||
const errors = {}
|
||||
|
||||
// Validate each part of the request
|
||||
for (const [location, fields] of Object.entries(schema)) {
|
||||
const data = req[location] || {}
|
||||
|
||||
for (const [field, fieldRules] of Object.entries(fields)) {
|
||||
const value = data[field]
|
||||
const fieldErrors = []
|
||||
|
||||
for (const rule of fieldRules) {
|
||||
if (!rule.validate(value)) {
|
||||
fieldErrors.push(rule.message)
|
||||
}
|
||||
}
|
||||
|
||||
if (fieldErrors.length > 0) {
|
||||
errors[field] = fieldErrors
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Object.keys(errors).length > 0) {
|
||||
return next(new ValidationError('Validierungsfehler', errors))
|
||||
}
|
||||
|
||||
next()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Common validation schemas
|
||||
*/
|
||||
export const schemas = {
|
||||
// User registration
|
||||
register: {
|
||||
body: {
|
||||
email: [rules.required('E-Mail'), rules.email()],
|
||||
password: [rules.required('Passwort'), rules.minLength('Passwort', 8)],
|
||||
},
|
||||
},
|
||||
|
||||
// Email connection
|
||||
connectEmail: {
|
||||
body: {
|
||||
userId: [rules.required('User ID')],
|
||||
provider: [rules.required('Provider'), rules.isIn('Provider', ['gmail', 'outlook'])],
|
||||
email: [rules.required('E-Mail'), rules.email()],
|
||||
},
|
||||
},
|
||||
|
||||
// Checkout
|
||||
checkout: {
|
||||
body: {
|
||||
userId: [rules.required('User ID')],
|
||||
plan: [rules.required('Plan'), rules.isIn('Plan', ['basic', 'pro', 'business'])],
|
||||
},
|
||||
},
|
||||
|
||||
// Email sorting
|
||||
sortEmails: {
|
||||
body: {
|
||||
userId: [rules.required('User ID')],
|
||||
accountId: [rules.required('Account ID')],
|
||||
maxEmails: [rules.isNumber('maxEmails'), rules.isPositive('maxEmails')],
|
||||
},
|
||||
},
|
||||
}
|
||||
455
server/node_modules/.package-lock.json
generated
vendored
455
server/node_modules/.package-lock.json
generated
vendored
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "server",
|
||||
"version": "1.0.0",
|
||||
"name": "email-sorter-server",
|
||||
"version": "2.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
@@ -46,6 +46,29 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@azure/msal-common": {
|
||||
"version": "14.16.1",
|
||||
"resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.1.tgz",
|
||||
"integrity": "sha512-nyxsA6NA4SVKh5YyRpbSXiMr7oQbwark7JU9LMeg6tJYTSPyAGkdx61wPT4gyxZfxlSxMMEyAsWaubBlNyIa1w==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@azure/msal-node": {
|
||||
"version": "2.16.3",
|
||||
"resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.16.3.tgz",
|
||||
"integrity": "sha512-CO+SE4weOsfJf+C5LM8argzvotrXw252/ZU6SM2Tz63fEblhH1uuVaaO4ISYFuN4Q6BhTo7I3qIdi8ydUQCqhw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@azure/msal-common": "14.16.1",
|
||||
"jsonwebtoken": "^9.0.0",
|
||||
"uuid": "^8.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
}
|
||||
},
|
||||
"node_modules/@csstools/color-helpers": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz",
|
||||
@@ -201,6 +224,15 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@mistralai/mistralai": {
|
||||
"version": "1.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@mistralai/mistralai/-/mistralai-1.11.0.tgz",
|
||||
"integrity": "sha512-6/BVj2mcaggYbpMzNSxtqtM2Tv/Jb5845XFd2CMYFO+O5VBkX70iLjtkBBTI4JFhh1l9vTCIMYXBVOjLoBVHGQ==",
|
||||
"dependencies": {
|
||||
"zod": "^3.20.0",
|
||||
"zod-to-json-schema": "^3.24.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "25.0.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.8.tgz",
|
||||
@@ -227,7 +259,6 @@
|
||||
"version": "7.1.4",
|
||||
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
|
||||
"integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 14"
|
||||
@@ -239,6 +270,26 @@
|
||||
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/base64-js": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
||||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
],
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/bidi-js": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz",
|
||||
@@ -249,6 +300,15 @@
|
||||
"require-from-string": "^2.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/bignumber.js": {
|
||||
"version": "9.3.1",
|
||||
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz",
|
||||
"integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/body-parser": {
|
||||
"version": "1.20.4",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz",
|
||||
@@ -273,6 +333,12 @@
|
||||
"npm": "1.2.8000 || >= 1.4.16"
|
||||
}
|
||||
},
|
||||
"node_modules/buffer-equal-constant-time": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
|
||||
"integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
|
||||
"license": "BSD-3-Clause"
|
||||
},
|
||||
"node_modules/bytes": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
|
||||
@@ -347,6 +413,19 @@
|
||||
"integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/cors": {
|
||||
"version": "2.8.5",
|
||||
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
|
||||
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"object-assign": "^4",
|
||||
"vary": "^1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/css-tree": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz",
|
||||
@@ -427,9 +506,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv": {
|
||||
"version": "17.2.3",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz",
|
||||
"integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==",
|
||||
"version": "16.6.1",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
|
||||
"integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
|
||||
"license": "BSD-2-Clause",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
@@ -452,6 +531,15 @@
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/ecdsa-sig-formatter": {
|
||||
"version": "1.0.11",
|
||||
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
|
||||
"integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"safe-buffer": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/ee-first": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
|
||||
@@ -571,6 +659,12 @@
|
||||
"url": "https://opencollective.com/express"
|
||||
}
|
||||
},
|
||||
"node_modules/extend": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
||||
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/finalhandler": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz",
|
||||
@@ -616,6 +710,49 @@
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/gaxios": {
|
||||
"version": "6.7.1",
|
||||
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz",
|
||||
"integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"extend": "^3.0.2",
|
||||
"https-proxy-agent": "^7.0.1",
|
||||
"is-stream": "^2.0.0",
|
||||
"node-fetch": "^2.6.9",
|
||||
"uuid": "^9.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/gaxios/node_modules/uuid": {
|
||||
"version": "9.0.1",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
|
||||
"integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
|
||||
"funding": [
|
||||
"https://github.com/sponsors/broofa",
|
||||
"https://github.com/sponsors/ctavan"
|
||||
],
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"uuid": "dist/bin/uuid"
|
||||
}
|
||||
},
|
||||
"node_modules/gcp-metadata": {
|
||||
"version": "6.1.1",
|
||||
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz",
|
||||
"integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"gaxios": "^6.1.1",
|
||||
"google-logging-utils": "^0.0.2",
|
||||
"json-bigint": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/get-intrinsic": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
|
||||
@@ -653,6 +790,75 @@
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/google-auth-library": {
|
||||
"version": "9.15.1",
|
||||
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz",
|
||||
"integrity": "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"base64-js": "^1.3.0",
|
||||
"ecdsa-sig-formatter": "^1.0.11",
|
||||
"gaxios": "^6.1.1",
|
||||
"gcp-metadata": "^6.1.0",
|
||||
"gtoken": "^7.0.0",
|
||||
"jws": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/google-logging-utils": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-0.0.2.tgz",
|
||||
"integrity": "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==",
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/googleapis": {
|
||||
"version": "144.0.0",
|
||||
"resolved": "https://registry.npmjs.org/googleapis/-/googleapis-144.0.0.tgz",
|
||||
"integrity": "sha512-ELcWOXtJxjPX4vsKMh+7V+jZvgPwYMlEhQFiu2sa9Qmt5veX8nwXPksOWGGN6Zk4xCiLygUyaz7xGtcMO+Onxw==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"google-auth-library": "^9.0.0",
|
||||
"googleapis-common": "^7.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/googleapis-common": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-7.2.0.tgz",
|
||||
"integrity": "sha512-/fhDZEJZvOV3X5jmD+fKxMqma5q2Q9nZNSF3kn1F18tpxmA86BcTxAGBQdM0N89Z3bEaIs+HVznSmFJEAmMTjA==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"extend": "^3.0.2",
|
||||
"gaxios": "^6.0.3",
|
||||
"google-auth-library": "^9.7.0",
|
||||
"qs": "^6.7.0",
|
||||
"url-template": "^2.0.8",
|
||||
"uuid": "^9.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/googleapis-common/node_modules/uuid": {
|
||||
"version": "9.0.1",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
|
||||
"integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
|
||||
"funding": [
|
||||
"https://github.com/sponsors/broofa",
|
||||
"https://github.com/sponsors/ctavan"
|
||||
],
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"uuid": "dist/bin/uuid"
|
||||
}
|
||||
},
|
||||
"node_modules/gopd": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
|
||||
@@ -665,6 +871,19 @@
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/gtoken": {
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz",
|
||||
"integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"gaxios": "^6.0.0",
|
||||
"jws": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/has-symbols": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
|
||||
@@ -765,7 +984,6 @@
|
||||
"version": "7.0.6",
|
||||
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
|
||||
"integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"agent-base": "^7.1.2",
|
||||
@@ -779,7 +997,6 @@
|
||||
"version": "4.4.3",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
|
||||
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ms": "^2.1.3"
|
||||
@@ -797,7 +1014,6 @@
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/iconv-lite": {
|
||||
@@ -834,6 +1050,18 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/is-stream": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
|
||||
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/jsdom": {
|
||||
"version": "27.4.0",
|
||||
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.4.0.tgz",
|
||||
@@ -874,6 +1102,106 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/json-bigint": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
|
||||
"integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"bignumber.js": "^9.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jsonwebtoken": {
|
||||
"version": "9.0.3",
|
||||
"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz",
|
||||
"integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"jws": "^4.0.1",
|
||||
"lodash.includes": "^4.3.0",
|
||||
"lodash.isboolean": "^3.0.3",
|
||||
"lodash.isinteger": "^4.0.4",
|
||||
"lodash.isnumber": "^3.0.3",
|
||||
"lodash.isplainobject": "^4.0.6",
|
||||
"lodash.isstring": "^4.0.1",
|
||||
"lodash.once": "^4.0.0",
|
||||
"ms": "^2.1.1",
|
||||
"semver": "^7.5.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12",
|
||||
"npm": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/jsonwebtoken/node_modules/ms": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/jwa": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz",
|
||||
"integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"buffer-equal-constant-time": "^1.0.1",
|
||||
"ecdsa-sig-formatter": "1.0.11",
|
||||
"safe-buffer": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/jws": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz",
|
||||
"integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"jwa": "^2.0.1",
|
||||
"safe-buffer": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/lodash.includes": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
|
||||
"integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash.isboolean": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
|
||||
"integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash.isinteger": {
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
|
||||
"integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash.isnumber": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
|
||||
"integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash.isplainobject": {
|
||||
"version": "4.0.6",
|
||||
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
|
||||
"integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash.isstring": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
|
||||
"integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash.once": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
|
||||
"integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lru-cache": {
|
||||
"version": "11.2.4",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz",
|
||||
@@ -976,20 +1304,71 @@
|
||||
}
|
||||
},
|
||||
"node_modules/node-appwrite": {
|
||||
"version": "21.1.0",
|
||||
"resolved": "https://registry.npmjs.org/node-appwrite/-/node-appwrite-21.1.0.tgz",
|
||||
"integrity": "sha512-HRK5BzN19vgvaH/EeNsigK24t4ngJ1AoiltK5JtahxP6uyMRztzkD8cXP+z9jj/xOjz7ySfQ9YypNyhNr6zVkA==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/node-appwrite/-/node-appwrite-14.2.0.tgz",
|
||||
"integrity": "sha512-sPPA+JzdBJRS+lM6azX85y3/6iyKQYlHcXCbjMuWLROh6IiU9EfXRW3XSUTa5HDoBrlo8ve+AnVA6BIjQfUs1g==",
|
||||
"license": "BSD-3-Clause",
|
||||
"dependencies": {
|
||||
"node-fetch-native-with-agent": "1.7.2"
|
||||
}
|
||||
},
|
||||
"node_modules/node-fetch": {
|
||||
"version": "2.7.0",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
|
||||
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"whatwg-url": "^5.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "4.x || >=6.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"encoding": "^0.1.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"encoding": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/node-fetch-native-with-agent": {
|
||||
"version": "1.7.2",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch-native-with-agent/-/node-fetch-native-with-agent-1.7.2.tgz",
|
||||
"integrity": "sha512-5MaOOCuJEvcckoz7/tjdx1M6OusOY6Xc5f459IaruGStWnKzlI1qpNgaAwmn4LmFYcsSlj+jBMk84wmmRxfk5g==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/node-fetch/node_modules/tr46": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/node-fetch/node_modules/webidl-conversions": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
|
||||
"license": "BSD-2-Clause"
|
||||
},
|
||||
"node_modules/node-fetch/node_modules/whatwg-url": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
|
||||
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"tr46": "~0.0.3",
|
||||
"webidl-conversions": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/object-assign": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/object-inspect": {
|
||||
"version": "1.13.4",
|
||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
|
||||
@@ -1153,6 +1532,18 @@
|
||||
"node": ">=v12.22.7"
|
||||
}
|
||||
},
|
||||
"node_modules/semver": {
|
||||
"version": "7.7.3",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
|
||||
"integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/send": {
|
||||
"version": "0.19.2",
|
||||
"resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz",
|
||||
@@ -1296,9 +1687,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/stripe": {
|
||||
"version": "14.25.0",
|
||||
"resolved": "https://registry.npmjs.org/stripe/-/stripe-14.25.0.tgz",
|
||||
"integrity": "sha512-wQS3GNMofCXwH8TSje8E1SE8zr6ODiGtHQgPtO95p9Mb4FhKC9jvXR2NUTpZ9ZINlckJcFidCmaTFV4P6vsb9g==",
|
||||
"version": "17.7.0",
|
||||
"resolved": "https://registry.npmjs.org/stripe/-/stripe-17.7.0.tgz",
|
||||
"integrity": "sha512-aT2BU9KkizY9SATf14WhhYVv2uOapBWX0OFWF4xvcj1mPaNotlSc2CsxpS4DS46ZueSppmCF5BX1sNYBtwBvfw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/node": ">=8.1.0",
|
||||
@@ -1398,6 +1789,12 @@
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/url-template": {
|
||||
"version": "2.0.8",
|
||||
"resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz",
|
||||
"integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==",
|
||||
"license": "BSD"
|
||||
},
|
||||
"node_modules/utils-merge": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
|
||||
@@ -1407,6 +1804,15 @@
|
||||
"node": ">= 0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/uuid": {
|
||||
"version": "8.3.2",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
|
||||
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"uuid": "dist/bin/uuid"
|
||||
}
|
||||
},
|
||||
"node_modules/vary": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||
@@ -1501,6 +1907,25 @@
|
||||
"integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/zod": {
|
||||
"version": "3.25.76",
|
||||
"resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
|
||||
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/colinhacks"
|
||||
}
|
||||
},
|
||||
"node_modules/zod-to-json-schema": {
|
||||
"version": "3.25.1",
|
||||
"resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz",
|
||||
"integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==",
|
||||
"license": "ISC",
|
||||
"peerDependencies": {
|
||||
"zod": "^3.25 || ^4"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
80
server/node_modules/dotenv/CHANGELOG.md
generated
vendored
80
server/node_modules/dotenv/CHANGELOG.md
generated
vendored
@@ -2,85 +2,7 @@
|
||||
|
||||
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
||||
|
||||
## [Unreleased](https://github.com/motdotla/dotenv/compare/v17.2.3...master)
|
||||
|
||||
## [17.2.3](https://github.com/motdotla/dotenv/compare/v17.2.2...v17.2.3) (2025-09-29)
|
||||
|
||||
### Changed
|
||||
|
||||
* Fixed typescript error definition ([#912](https://github.com/motdotla/dotenv/pull/912))
|
||||
|
||||
## [17.2.2](https://github.com/motdotla/dotenv/compare/v17.2.1...v17.2.2) (2025-09-02)
|
||||
|
||||
### Added
|
||||
|
||||
- 🙏 A big thank you to new sponsor [Tuple.app](https://tuple.app/dotenv) - *the premier screen sharing app for developers on macOS and Windows.* Go check them out. It's wonderful and generous of them to give back to open source by sponsoring dotenv. Give them some love back.
|
||||
|
||||
## [17.2.1](https://github.com/motdotla/dotenv/compare/v17.2.0...v17.2.1) (2025-07-24)
|
||||
|
||||
### Changed
|
||||
|
||||
* Fix clickable tip links by removing parentheses ([#897](https://github.com/motdotla/dotenv/pull/897))
|
||||
|
||||
## [17.2.0](https://github.com/motdotla/dotenv/compare/v17.1.0...v17.2.0) (2025-07-09)
|
||||
|
||||
### Added
|
||||
|
||||
* Optionally specify `DOTENV_CONFIG_QUIET=true` in your environment or `.env` file to quiet the runtime log ([#889](https://github.com/motdotla/dotenv/pull/889))
|
||||
* Just like dotenv any `DOTENV_CONFIG_` environment variables take precedence over any code set options like `({quiet: false})`
|
||||
|
||||
```ini
|
||||
# .env
|
||||
DOTENV_CONFIG_QUIET=true
|
||||
HELLO="World"
|
||||
```
|
||||
```js
|
||||
// index.js
|
||||
require('dotenv').config()
|
||||
console.log(`Hello ${process.env.HELLO}`)
|
||||
```
|
||||
```sh
|
||||
$ node index.js
|
||||
Hello World
|
||||
|
||||
or
|
||||
|
||||
$ DOTENV_CONFIG_QUIET=true node index.js
|
||||
```
|
||||
|
||||
## [17.1.0](https://github.com/motdotla/dotenv/compare/v17.0.1...v17.1.0) (2025-07-07)
|
||||
|
||||
### Added
|
||||
|
||||
* Add additional security and configuration tips to the runtime log ([#884](https://github.com/motdotla/dotenv/pull/884))
|
||||
* Dim the tips text from the main injection information text
|
||||
|
||||
```js
|
||||
const TIPS = [
|
||||
'🔐 encrypt with dotenvx: https://dotenvx.com',
|
||||
'🔐 prevent committing .env to code: https://dotenvx.com/precommit',
|
||||
'🔐 prevent building .env in docker: https://dotenvx.com/prebuild',
|
||||
'🛠️ run anywhere with `dotenvx run -- yourcommand`',
|
||||
'⚙️ specify custom .env file path with { path: \'/custom/path/.env\' }',
|
||||
'⚙️ enable debug logging with { debug: true }',
|
||||
'⚙️ override existing env vars with { override: true }',
|
||||
'⚙️ suppress all logs with { quiet: true }',
|
||||
'⚙️ write to custom object with { processEnv: myObject }',
|
||||
'⚙️ load multiple .env files with { path: [\'.env.local\', \'.env\'] }'
|
||||
]
|
||||
```
|
||||
|
||||
## [17.0.1](https://github.com/motdotla/dotenv/compare/v17.0.0...v17.0.1) (2025-07-01)
|
||||
|
||||
### Changed
|
||||
|
||||
* Patched injected log to count only populated/set keys to process.env ([#879](https://github.com/motdotla/dotenv/pull/879))
|
||||
|
||||
## [17.0.0](https://github.com/motdotla/dotenv/compare/v16.6.1...v17.0.0) (2025-06-27)
|
||||
|
||||
### Changed
|
||||
|
||||
- Default `quiet` to false - informational (file and keys count) runtime log message shows by default ([#875](https://github.com/motdotla/dotenv/pull/875))
|
||||
## [Unreleased](https://github.com/motdotla/dotenv/compare/v16.6.1...master)
|
||||
|
||||
## [16.6.1](https://github.com/motdotla/dotenv/compare/v16.6.0...v16.6.1) (2025-06-27)
|
||||
|
||||
|
||||
18
server/node_modules/dotenv/README-es.md
generated
vendored
18
server/node_modules/dotenv/README-es.md
generated
vendored
@@ -6,13 +6,19 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
**Special thanks to [our sponsors](https://github.com/sponsors/motdotla)**
|
||||
<p>
|
||||
<sup>
|
||||
<a href="https://github.com/sponsors/motdotla">Dotenv es apoyado por la comunidad.</a>
|
||||
</sup>
|
||||
</p>
|
||||
<sup>Gracias espaciales a:</sup>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<a href="https://tuple.app/dotenv">
|
||||
<div>
|
||||
<img src="https://res.cloudinary.com/dotenv-org/image/upload/w_1000,ar_16:9,c_fill,g_auto,e_sharpen/v1756831704/github_repo_sponsorship_gq4hvx.png" width="600" alt="Tuple">
|
||||
</div>
|
||||
<b>Tuple, the premier screen sharing app for developers on macOS and Windows.</b>
|
||||
<a href="https://graphite.dev/?utm_source=github&utm_medium=repo&utm_campaign=dotenv"><img src="https://res.cloudinary.com/dotenv-org/image/upload/v1744035073/graphite_lgsrl8.gif" width="240" alt="Graphite" /></a>
|
||||
|
||||
<a href="https://graphite.dev/?utm_source=github&utm_medium=repo&utm_campaign=dotenv">
|
||||
<b>Graphite is the AI developer productivity platform helping teams on GitHub ship higher quality software, faster.</b>
|
||||
</a>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
65
server/node_modules/dotenv/README.md
generated
vendored
65
server/node_modules/dotenv/README.md
generated
vendored
@@ -8,11 +8,11 @@
|
||||
|
||||
**Special thanks to [our sponsors](https://github.com/sponsors/motdotla)**
|
||||
|
||||
<a href="https://tuple.app/dotenv">
|
||||
<div>
|
||||
<img src="https://res.cloudinary.com/dotenv-org/image/upload/w_1000,ar_16:9,c_fill,g_auto,e_sharpen/v1756831704/github_repo_sponsorship_gq4hvx.png" width="600" alt="Tuple">
|
||||
</div>
|
||||
<b>Tuple, the premier screen sharing app for developers on macOS and Windows.</b>
|
||||
<br>
|
||||
<a href="https://graphite.dev/?utm_source=github&utm_medium=repo&utm_campaign=dotenv"><img src="https://res.cloudinary.com/dotenv-org/image/upload/v1744035073/graphite_lgsrl8.gif" width="240" alt="Graphite" /></a>
|
||||
<br>
|
||||
<a href="https://graphite.dev/?utm_source=github&utm_medium=repo&utm_campaign=dotenv">
|
||||
<b>Graphite is the AI developer productivity platform helping teams on GitHub ship higher quality software, faster.</b>
|
||||
</a>
|
||||
<hr>
|
||||
</div>
|
||||
@@ -83,14 +83,6 @@ console.log(process.env) // remove this after you've confirmed it is working
|
||||
import 'dotenv/config'
|
||||
```
|
||||
|
||||
ES6 import if you need to set config options:
|
||||
|
||||
```javascript
|
||||
import dotenv from 'dotenv'
|
||||
|
||||
dotenv.config({ path: '/custom/path/to/.env' })
|
||||
```
|
||||
|
||||
That's it. `process.env` now has the keys and values you defined in your `.env` file:
|
||||
|
||||
```javascript
|
||||
@@ -173,24 +165,7 @@ $ DOTENV_CONFIG_ENCODING=latin1 DOTENV_CONFIG_DEBUG=true node -r dotenv/config y
|
||||
|
||||
### Variable Expansion
|
||||
|
||||
Use [dotenvx](https://github.com/dotenvx/dotenvx) to use variable expansion.
|
||||
|
||||
Reference and expand variables already on your machine for use in your .env file.
|
||||
|
||||
```ini
|
||||
# .env
|
||||
USERNAME="username"
|
||||
DATABASE_URL="postgres://${USERNAME}@localhost/my_database"
|
||||
```
|
||||
```js
|
||||
// index.js
|
||||
console.log('DATABASE_URL', process.env.DATABASE_URL)
|
||||
```
|
||||
```sh
|
||||
$ dotenvx run --debug -- node index.js
|
||||
[dotenvx@0.14.1] injecting env (2) from .env
|
||||
DATABASE_URL postgres://username@localhost/my_database
|
||||
```
|
||||
You need to add the value of another variable in one of your variables? Use [dotenv-expand](https://github.com/motdotla/dotenv-expand).
|
||||
|
||||
### Command Substitution
|
||||
|
||||
@@ -297,6 +272,7 @@ Dotenv exposes four functions:
|
||||
* `config`
|
||||
* `parse`
|
||||
* `populate`
|
||||
* `decrypt`
|
||||
|
||||
### Config
|
||||
|
||||
@@ -336,29 +312,6 @@ Pass in multiple files as an array, and they will be parsed in order and combine
|
||||
require('dotenv').config({ path: ['.env.local', '.env'] })
|
||||
```
|
||||
|
||||
##### quiet
|
||||
|
||||
Default: `false`
|
||||
|
||||
Suppress runtime logging message.
|
||||
|
||||
```js
|
||||
// index.js
|
||||
require('dotenv').config({ quiet: false }) // change to true to suppress
|
||||
console.log(`Hello ${process.env.HELLO}`)
|
||||
```
|
||||
|
||||
```ini
|
||||
# .env
|
||||
.env
|
||||
```
|
||||
|
||||
```sh
|
||||
$ node index.js
|
||||
[dotenv@17.0.0] injecting env (1) from .env
|
||||
Hello World
|
||||
```
|
||||
|
||||
##### encoding
|
||||
|
||||
Default: `utf8`
|
||||
@@ -606,7 +559,7 @@ Does that make sense? It's a bit unintuitive, but it is how importing of ES6 mod
|
||||
|
||||
There are two alternatives to this approach:
|
||||
|
||||
1. Preload with dotenvx: `dotenvx run -- node index.js` (_Note: you do not need to `import` dotenv with this approach_)
|
||||
1. Preload dotenv: `node --require dotenv/config index.js` (_Note: you do not need to `import` dotenv with this approach_)
|
||||
2. Create a separate file that will execute `config` first as outlined in [this comment on #133](https://github.com/motdotla/dotenv/issues/133#issuecomment-255298822)
|
||||
|
||||
### Why am I getting the error `Module not found: Error: Can't resolve 'crypto|os|path'`?
|
||||
@@ -653,7 +606,7 @@ Try [dotenv-expand](https://github.com/motdotla/dotenv-expand)
|
||||
|
||||
### What about syncing and securing .env files?
|
||||
|
||||
Use [dotenvx](https://github.com/dotenvx/dotenvx) to unlock syncing encrypted .env files over git.
|
||||
Use [dotenvx](https://github.com/dotenvx/dotenvx)
|
||||
|
||||
### What if I accidentally commit my `.env` file to code?
|
||||
|
||||
|
||||
23
server/node_modules/dotenv/lib/main.d.ts
generated
vendored
23
server/node_modules/dotenv/lib/main.d.ts
generated
vendored
@@ -6,10 +6,6 @@ export interface DotenvParseOutput {
|
||||
[name: string]: string;
|
||||
}
|
||||
|
||||
export interface DotenvPopulateOutput {
|
||||
[name: string]: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses a string or buffer in the .env file format into an object.
|
||||
*
|
||||
@@ -90,19 +86,10 @@ export interface DotenvConfigOptions {
|
||||
}
|
||||
|
||||
export interface DotenvConfigOutput {
|
||||
error?: DotenvError;
|
||||
error?: Error;
|
||||
parsed?: DotenvParseOutput;
|
||||
}
|
||||
|
||||
type DotenvError = Error & {
|
||||
code:
|
||||
| 'MISSING_DATA'
|
||||
| 'INVALID_DOTENV_KEY'
|
||||
| 'NOT_FOUND_DOTENV_ENVIRONMENT'
|
||||
| 'DECRYPTION_FAILED'
|
||||
| 'OBJECT_REQUIRED';
|
||||
}
|
||||
|
||||
export interface DotenvPopulateOptions {
|
||||
/**
|
||||
* Default: `false`
|
||||
@@ -157,14 +144,10 @@ export function configDotenv(options?: DotenvConfigOptions): DotenvConfigOutput;
|
||||
* @param processEnv - the target JSON object. in most cases use process.env but you can also pass your own JSON object
|
||||
* @param parsed - the source JSON object
|
||||
* @param options - additional options. example: `{ quiet: false, debug: true, override: false }`
|
||||
* @returns an object with the keys and values that were actually set
|
||||
* @returns {void}
|
||||
*
|
||||
*/
|
||||
export function populate(
|
||||
processEnv: DotenvPopulateInput,
|
||||
parsed: DotenvPopulateInput,
|
||||
options?: DotenvConfigOptions
|
||||
): DotenvPopulateOutput;
|
||||
export function populate(processEnv: DotenvPopulateInput, parsed: DotenvPopulateInput, options?: DotenvConfigOptions): void;
|
||||
|
||||
/**
|
||||
* Decrypt ciphertext
|
||||
|
||||
72
server/node_modules/dotenv/lib/main.js
generated
vendored
72
server/node_modules/dotenv/lib/main.js
generated
vendored
@@ -6,46 +6,6 @@ const packageJson = require('../package.json')
|
||||
|
||||
const version = packageJson.version
|
||||
|
||||
// Array of tips to display randomly
|
||||
const TIPS = [
|
||||
'🔐 encrypt with Dotenvx: https://dotenvx.com',
|
||||
'🔐 prevent committing .env to code: https://dotenvx.com/precommit',
|
||||
'🔐 prevent building .env in docker: https://dotenvx.com/prebuild',
|
||||
'📡 add observability to secrets: https://dotenvx.com/ops',
|
||||
'👥 sync secrets across teammates & machines: https://dotenvx.com/ops',
|
||||
'🗂️ backup and recover secrets: https://dotenvx.com/ops',
|
||||
'✅ audit secrets and track compliance: https://dotenvx.com/ops',
|
||||
'🔄 add secrets lifecycle management: https://dotenvx.com/ops',
|
||||
'🔑 add access controls to secrets: https://dotenvx.com/ops',
|
||||
'🛠️ run anywhere with `dotenvx run -- yourcommand`',
|
||||
'⚙️ specify custom .env file path with { path: \'/custom/path/.env\' }',
|
||||
'⚙️ enable debug logging with { debug: true }',
|
||||
'⚙️ override existing env vars with { override: true }',
|
||||
'⚙️ suppress all logs with { quiet: true }',
|
||||
'⚙️ write to custom object with { processEnv: myObject }',
|
||||
'⚙️ load multiple .env files with { path: [\'.env.local\', \'.env\'] }'
|
||||
]
|
||||
|
||||
// Get a random tip from the tips array
|
||||
function _getRandomTip () {
|
||||
return TIPS[Math.floor(Math.random() * TIPS.length)]
|
||||
}
|
||||
|
||||
function parseBoolean (value) {
|
||||
if (typeof value === 'string') {
|
||||
return !['false', '0', 'no', 'off', ''].includes(value.toLowerCase())
|
||||
}
|
||||
return Boolean(value)
|
||||
}
|
||||
|
||||
function supportsAnsi () {
|
||||
return process.stdout.isTTY // && process.env.TERM !== 'dumb'
|
||||
}
|
||||
|
||||
function dim (text) {
|
||||
return supportsAnsi() ? `\x1b[2m${text}\x1b[0m` : text
|
||||
}
|
||||
|
||||
const LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg
|
||||
|
||||
// Parse src into an Object
|
||||
@@ -131,7 +91,7 @@ function _parseVault (options) {
|
||||
}
|
||||
|
||||
function _warn (message) {
|
||||
console.error(`[dotenv@${version}][WARN] ${message}`)
|
||||
console.log(`[dotenv@${version}][WARN] ${message}`)
|
||||
}
|
||||
|
||||
function _debug (message) {
|
||||
@@ -229,8 +189,8 @@ function _resolveHome (envPath) {
|
||||
}
|
||||
|
||||
function _configVault (options) {
|
||||
const debug = parseBoolean(process.env.DOTENV_CONFIG_DEBUG || (options && options.debug))
|
||||
const quiet = parseBoolean(process.env.DOTENV_CONFIG_QUIET || (options && options.quiet))
|
||||
const debug = Boolean(options && options.debug)
|
||||
const quiet = options && 'quiet' in options ? options.quiet : true
|
||||
|
||||
if (debug || !quiet) {
|
||||
_log('Loading env from encrypted .env.vault')
|
||||
@@ -251,12 +211,8 @@ function _configVault (options) {
|
||||
function configDotenv (options) {
|
||||
const dotenvPath = path.resolve(process.cwd(), '.env')
|
||||
let encoding = 'utf8'
|
||||
let processEnv = process.env
|
||||
if (options && options.processEnv != null) {
|
||||
processEnv = options.processEnv
|
||||
}
|
||||
let debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || (options && options.debug))
|
||||
let quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || (options && options.quiet))
|
||||
const debug = Boolean(options && options.debug)
|
||||
const quiet = options && 'quiet' in options ? options.quiet : true
|
||||
|
||||
if (options && options.encoding) {
|
||||
encoding = options.encoding
|
||||
@@ -296,14 +252,15 @@ function configDotenv (options) {
|
||||
}
|
||||
}
|
||||
|
||||
const populated = DotenvModule.populate(processEnv, parsedAll, options)
|
||||
let processEnv = process.env
|
||||
if (options && options.processEnv != null) {
|
||||
processEnv = options.processEnv
|
||||
}
|
||||
|
||||
// handle user settings DOTENV_CONFIG_ options inside .env file(s)
|
||||
debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || debug)
|
||||
quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || quiet)
|
||||
DotenvModule.populate(processEnv, parsedAll, options)
|
||||
|
||||
if (debug || !quiet) {
|
||||
const keysCount = Object.keys(populated).length
|
||||
const keysCount = Object.keys(parsedAll).length
|
||||
const shortPaths = []
|
||||
for (const filePath of optionPaths) {
|
||||
try {
|
||||
@@ -317,7 +274,7 @@ function configDotenv (options) {
|
||||
}
|
||||
}
|
||||
|
||||
_log(`injecting env (${keysCount}) from ${shortPaths.join(',')} ${dim(`-- tip: ${_getRandomTip()}`)}`)
|
||||
_log(`injecting env (${keysCount}) from ${shortPaths.join(',')}`)
|
||||
}
|
||||
|
||||
if (lastError) {
|
||||
@@ -381,7 +338,6 @@ function decrypt (encrypted, keyStr) {
|
||||
function populate (processEnv, parsed, options = {}) {
|
||||
const debug = Boolean(options && options.debug)
|
||||
const override = Boolean(options && options.override)
|
||||
const populated = {}
|
||||
|
||||
if (typeof parsed !== 'object') {
|
||||
const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate')
|
||||
@@ -394,7 +350,6 @@ function populate (processEnv, parsed, options = {}) {
|
||||
if (Object.prototype.hasOwnProperty.call(processEnv, key)) {
|
||||
if (override === true) {
|
||||
processEnv[key] = parsed[key]
|
||||
populated[key] = parsed[key]
|
||||
}
|
||||
|
||||
if (debug) {
|
||||
@@ -406,11 +361,8 @@ function populate (processEnv, parsed, options = {}) {
|
||||
}
|
||||
} else {
|
||||
processEnv[key] = parsed[key]
|
||||
populated[key] = parsed[key]
|
||||
}
|
||||
}
|
||||
|
||||
return populated
|
||||
}
|
||||
|
||||
const DotenvModule = {
|
||||
|
||||
6
server/node_modules/dotenv/package.json
generated
vendored
6
server/node_modules/dotenv/package.json
generated
vendored
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "dotenv",
|
||||
"version": "17.2.3",
|
||||
"version": "16.6.1",
|
||||
"description": "Loads environment variables from .env file",
|
||||
"main": "lib/main.js",
|
||||
"types": "lib/main.d.ts",
|
||||
@@ -22,8 +22,8 @@
|
||||
"dts-check": "tsc --project tests/types/tsconfig.json",
|
||||
"lint": "standard",
|
||||
"pretest": "npm run lint && npm run dts-check",
|
||||
"test": "tap run tests/**/*.js --allow-empty-coverage --disable-coverage --timeout=60000",
|
||||
"test:coverage": "tap run tests/**/*.js --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov",
|
||||
"test": "tap run --allow-empty-coverage --disable-coverage --timeout=60000",
|
||||
"test:coverage": "tap run --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov",
|
||||
"prerelease": "npm test",
|
||||
"release": "standard-version"
|
||||
},
|
||||
|
||||
2
server/node_modules/node-appwrite/LICENSE
generated
vendored
2
server/node_modules/node-appwrite/LICENSE
generated
vendored
@@ -1,4 +1,4 @@
|
||||
Copyright (c) 2025 Appwrite (https://appwrite.io) and individual contributors.
|
||||
Copyright (c) 2024 Appwrite (https://appwrite.io) and individual contributors.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
|
||||
69
server/node_modules/node-appwrite/README.md
generated
vendored
69
server/node_modules/node-appwrite/README.md
generated
vendored
@@ -1,12 +1,12 @@
|
||||
# Appwrite Node.js SDK
|
||||
|
||||

|
||||

|
||||

|
||||
[](https://travis-ci.com/appwrite/sdk-generator)
|
||||
[](https://twitter.com/appwrite)
|
||||
[](https://appwrite.io/discord)
|
||||
|
||||
**This SDK is compatible with Appwrite server version 1.8.x. For older versions, please check [previous releases](https://github.com/appwrite/sdk-for-node/releases).**
|
||||
**This SDK is compatible with Appwrite server version 1.6.x. For older versions, please check [previous releases](https://github.com/appwrite/sdk-for-node/releases).**
|
||||
|
||||
> This is the Node.js SDK for integrating with Appwrite from your Node.js server-side code.
|
||||
If you're looking to integrate from the browser, you should check [appwrite/sdk-for-web](https://github.com/appwrite/sdk-for-web)
|
||||
@@ -27,7 +27,6 @@ npm install node-appwrite --save
|
||||
## Getting Started
|
||||
|
||||
### Init your SDK
|
||||
|
||||
Initialize your SDK with your Appwrite server API endpoint and project ID which can be found in your project settings page and your new API secret Key project API keys section.
|
||||
|
||||
```js
|
||||
@@ -44,7 +43,6 @@ client
|
||||
```
|
||||
|
||||
### Make Your First Request
|
||||
|
||||
Once your SDK object is set, create any of the Appwrite service objects and choose any request to send. Full documentation for any service method you would like to use can be found in your SDK documentation or in the [API References](https://appwrite.io/docs) section.
|
||||
|
||||
```js
|
||||
@@ -82,70 +80,7 @@ promise.then(function (response) {
|
||||
});
|
||||
```
|
||||
|
||||
### Type Safety with Models
|
||||
|
||||
The Appwrite Node SDK provides type safety when working with database documents through generic methods. Methods like `listDocuments`, `getDocument`, and others accept a generic type parameter that allows you to specify your custom model type for full type safety.
|
||||
|
||||
**TypeScript:**
|
||||
```typescript
|
||||
interface Book {
|
||||
name: string;
|
||||
author: string;
|
||||
releaseYear?: string;
|
||||
category?: string;
|
||||
genre?: string[];
|
||||
isCheckedOut: boolean;
|
||||
}
|
||||
|
||||
const databases = new Databases(client);
|
||||
|
||||
try {
|
||||
const documents = await databases.listDocuments<Book>(
|
||||
'your-database-id',
|
||||
'your-collection-id'
|
||||
);
|
||||
|
||||
documents.documents.forEach(book => {
|
||||
console.log(`Book: ${book.name} by ${book.author}`); // Now you have full type safety
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Appwrite error:', error);
|
||||
}
|
||||
```
|
||||
|
||||
**JavaScript (with JSDoc for type hints):**
|
||||
```javascript
|
||||
/**
|
||||
* @typedef {Object} Book
|
||||
* @property {string} name
|
||||
* @property {string} author
|
||||
* @property {string} [releaseYear]
|
||||
* @property {string} [category]
|
||||
* @property {string[]} [genre]
|
||||
* @property {boolean} isCheckedOut
|
||||
*/
|
||||
|
||||
const databases = new Databases(client);
|
||||
|
||||
try {
|
||||
/** @type {Models.DocumentList<Book>} */
|
||||
const documents = await databases.listDocuments(
|
||||
'your-database-id',
|
||||
'your-collection-id'
|
||||
);
|
||||
|
||||
documents.documents.forEach(book => {
|
||||
console.log(`Book: ${book.name} by ${book.author}`); // Type hints available in IDE
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Appwrite error:', error);
|
||||
}
|
||||
```
|
||||
|
||||
**Tip**: You can use the `appwrite types` command to automatically generate TypeScript interfaces based on your Appwrite database schema. Learn more about [type generation](https://appwrite.io/docs/products/databases/type-generation).
|
||||
|
||||
### Error Handling
|
||||
|
||||
The Appwrite Node SDK raises `AppwriteException` object with `message`, `code` and `response` properties. You can handle any errors by catching `AppwriteException` and present the `message` to the user or handle it yourself based on the provided error information. Below is an example.
|
||||
|
||||
```js
|
||||
|
||||
10
server/node_modules/node-appwrite/dist/client.d.mts
generated
vendored
10
server/node_modules/node-appwrite/dist/client.d.mts
generated
vendored
@@ -1,15 +1,5 @@
|
||||
export { Models } from './models.mjs';
|
||||
export { Query, QueryTypes, QueryTypesList } from './query.mjs';
|
||||
import './enums/database-type.mjs';
|
||||
import './enums/attribute-status.mjs';
|
||||
import './enums/column-status.mjs';
|
||||
import './enums/index-status.mjs';
|
||||
import './enums/deployment-status.mjs';
|
||||
import './enums/execution-trigger.mjs';
|
||||
import './enums/execution-status.mjs';
|
||||
import './enums/health-antivirus-status.mjs';
|
||||
import './enums/health-check-status.mjs';
|
||||
import './enums/message-status.mjs';
|
||||
|
||||
type Payload = {
|
||||
[key: string]: any;
|
||||
|
||||
10
server/node_modules/node-appwrite/dist/client.d.ts
generated
vendored
10
server/node_modules/node-appwrite/dist/client.d.ts
generated
vendored
@@ -1,15 +1,5 @@
|
||||
export { Models } from './models.js';
|
||||
export { Query, QueryTypes, QueryTypesList } from './query.js';
|
||||
import './enums/database-type.js';
|
||||
import './enums/attribute-status.js';
|
||||
import './enums/column-status.js';
|
||||
import './enums/index-status.js';
|
||||
import './enums/deployment-status.js';
|
||||
import './enums/execution-trigger.js';
|
||||
import './enums/execution-status.js';
|
||||
import './enums/health-antivirus-status.js';
|
||||
import './enums/health-check-status.js';
|
||||
import './enums/message-status.js';
|
||||
|
||||
type Payload = {
|
||||
[key: string]: any;
|
||||
|
||||
27
server/node_modules/node-appwrite/dist/client.js
generated
vendored
27
server/node_modules/node-appwrite/dist/client.js
generated
vendored
@@ -15,7 +15,7 @@ class AppwriteException extends Error {
|
||||
}
|
||||
}
|
||||
function getUserAgent() {
|
||||
let ua = "AppwriteNodeJSSDK/21.1.0";
|
||||
let ua = "AppwriteNodeJSSDK/14.2.0";
|
||||
const platform = [];
|
||||
if (typeof process !== "undefined") {
|
||||
if (typeof process.platform === "string")
|
||||
@@ -51,9 +51,9 @@ const _Client = class _Client {
|
||||
"x-sdk-name": "Node.js",
|
||||
"x-sdk-platform": "server",
|
||||
"x-sdk-language": "nodejs",
|
||||
"x-sdk-version": "21.1.0",
|
||||
"x-sdk-version": "14.2.0",
|
||||
"user-agent": getUserAgent(),
|
||||
"X-Appwrite-Response-Format": "1.8.0"
|
||||
"X-Appwrite-Response-Format": "1.6.0"
|
||||
};
|
||||
}
|
||||
/**
|
||||
@@ -66,9 +66,6 @@ const _Client = class _Client {
|
||||
* @returns {this}
|
||||
*/
|
||||
setEndpoint(endpoint) {
|
||||
if (!endpoint.startsWith("http://") && !endpoint.startsWith("https://")) {
|
||||
throw new AppwriteException("Invalid endpoint URL: " + endpoint);
|
||||
}
|
||||
this.config.endpoint = endpoint;
|
||||
return this;
|
||||
}
|
||||
@@ -218,10 +215,7 @@ const _Client = class _Client {
|
||||
return { uri: url.toString(), options };
|
||||
}
|
||||
async chunkedUpload(method, url, headers = {}, originalPayload = {}, onProgress) {
|
||||
const [fileParam, file] = Object.entries(originalPayload).find(([_, value]) => value instanceof nodeFetchNativeWithAgent.File) ?? [];
|
||||
if (!file || !fileParam) {
|
||||
throw new Error("File not found in payload");
|
||||
}
|
||||
const file = Object.values(originalPayload).find((value) => value instanceof nodeFetchNativeWithAgent.File);
|
||||
if (file.size <= _Client.CHUNK_SIZE) {
|
||||
return await this.call(method, url, headers, originalPayload);
|
||||
}
|
||||
@@ -234,8 +228,7 @@ const _Client = class _Client {
|
||||
}
|
||||
headers["content-range"] = `bytes ${start}-${end - 1}/${file.size}`;
|
||||
const chunk = file.slice(start, end);
|
||||
let payload = { ...originalPayload };
|
||||
payload[fileParam] = new nodeFetchNativeWithAgent.File([chunk], file.name);
|
||||
let payload = { ...originalPayload, file: new nodeFetchNativeWithAgent.File([chunk], file.name) };
|
||||
response = await this.call(method, url, headers, payload);
|
||||
if (onProgress && typeof onProgress === "function") {
|
||||
onProgress({
|
||||
@@ -268,7 +261,7 @@ const _Client = class _Client {
|
||||
return response.headers.get("location") || "";
|
||||
}
|
||||
async call(method, url, headers = {}, params = {}, responseType = "json") {
|
||||
var _a, _b;
|
||||
var _a;
|
||||
const { uri, options } = this.prepareRequest(method, url, headers, params);
|
||||
let data = null;
|
||||
const response = await nodeFetchNativeWithAgent.fetch(uri, options);
|
||||
@@ -286,13 +279,7 @@ const _Client = class _Client {
|
||||
};
|
||||
}
|
||||
if (400 <= response.status) {
|
||||
let responseText = "";
|
||||
if (((_b = response.headers.get("content-type")) == null ? void 0 : _b.includes("application/json")) || responseType === "arrayBuffer") {
|
||||
responseText = JSON.stringify(data);
|
||||
} else {
|
||||
responseText = data == null ? void 0 : data.message;
|
||||
}
|
||||
throw new AppwriteException(data == null ? void 0 : data.message, response.status, data == null ? void 0 : data.type, responseText);
|
||||
throw new AppwriteException(data == null ? void 0 : data.message, response.status, data == null ? void 0 : data.type, data);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
2
server/node_modules/node-appwrite/dist/client.js.map
generated
vendored
2
server/node_modules/node-appwrite/dist/client.js.map
generated
vendored
File diff suppressed because one or more lines are too long
27
server/node_modules/node-appwrite/dist/client.mjs
generated
vendored
27
server/node_modules/node-appwrite/dist/client.mjs
generated
vendored
@@ -14,7 +14,7 @@ var AppwriteException = class extends Error {
|
||||
}
|
||||
};
|
||||
function getUserAgent() {
|
||||
let ua = "AppwriteNodeJSSDK/21.1.0";
|
||||
let ua = "AppwriteNodeJSSDK/14.2.0";
|
||||
const platform = [];
|
||||
if (typeof process !== "undefined") {
|
||||
if (typeof process.platform === "string")
|
||||
@@ -50,9 +50,9 @@ var _Client = class _Client {
|
||||
"x-sdk-name": "Node.js",
|
||||
"x-sdk-platform": "server",
|
||||
"x-sdk-language": "nodejs",
|
||||
"x-sdk-version": "21.1.0",
|
||||
"x-sdk-version": "14.2.0",
|
||||
"user-agent": getUserAgent(),
|
||||
"X-Appwrite-Response-Format": "1.8.0"
|
||||
"X-Appwrite-Response-Format": "1.6.0"
|
||||
};
|
||||
}
|
||||
/**
|
||||
@@ -65,9 +65,6 @@ var _Client = class _Client {
|
||||
* @returns {this}
|
||||
*/
|
||||
setEndpoint(endpoint) {
|
||||
if (!endpoint.startsWith("http://") && !endpoint.startsWith("https://")) {
|
||||
throw new AppwriteException("Invalid endpoint URL: " + endpoint);
|
||||
}
|
||||
this.config.endpoint = endpoint;
|
||||
return this;
|
||||
}
|
||||
@@ -217,10 +214,7 @@ var _Client = class _Client {
|
||||
return { uri: url.toString(), options };
|
||||
}
|
||||
async chunkedUpload(method, url, headers = {}, originalPayload = {}, onProgress) {
|
||||
const [fileParam, file] = Object.entries(originalPayload).find(([_, value]) => value instanceof File) ?? [];
|
||||
if (!file || !fileParam) {
|
||||
throw new Error("File not found in payload");
|
||||
}
|
||||
const file = Object.values(originalPayload).find((value) => value instanceof File);
|
||||
if (file.size <= _Client.CHUNK_SIZE) {
|
||||
return await this.call(method, url, headers, originalPayload);
|
||||
}
|
||||
@@ -233,8 +227,7 @@ var _Client = class _Client {
|
||||
}
|
||||
headers["content-range"] = `bytes ${start}-${end - 1}/${file.size}`;
|
||||
const chunk = file.slice(start, end);
|
||||
let payload = { ...originalPayload };
|
||||
payload[fileParam] = new File([chunk], file.name);
|
||||
let payload = { ...originalPayload, file: new File([chunk], file.name) };
|
||||
response = await this.call(method, url, headers, payload);
|
||||
if (onProgress && typeof onProgress === "function") {
|
||||
onProgress({
|
||||
@@ -267,7 +260,7 @@ var _Client = class _Client {
|
||||
return response.headers.get("location") || "";
|
||||
}
|
||||
async call(method, url, headers = {}, params = {}, responseType = "json") {
|
||||
var _a, _b;
|
||||
var _a;
|
||||
const { uri, options } = this.prepareRequest(method, url, headers, params);
|
||||
let data = null;
|
||||
const response = await fetch(uri, options);
|
||||
@@ -285,13 +278,7 @@ var _Client = class _Client {
|
||||
};
|
||||
}
|
||||
if (400 <= response.status) {
|
||||
let responseText = "";
|
||||
if (((_b = response.headers.get("content-type")) == null ? void 0 : _b.includes("application/json")) || responseType === "arrayBuffer") {
|
||||
responseText = JSON.stringify(data);
|
||||
} else {
|
||||
responseText = data == null ? void 0 : data.message;
|
||||
}
|
||||
throw new AppwriteException(data == null ? void 0 : data.message, response.status, data == null ? void 0 : data.type, responseText);
|
||||
throw new AppwriteException(data == null ? void 0 : data.message, response.status, data == null ? void 0 : data.type, data);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
2
server/node_modules/node-appwrite/dist/client.mjs.map
generated
vendored
2
server/node_modules/node-appwrite/dist/client.mjs.map
generated
vendored
File diff suppressed because one or more lines are too long
6
server/node_modules/node-appwrite/dist/enums/adapter.d.mts
generated
vendored
6
server/node_modules/node-appwrite/dist/enums/adapter.d.mts
generated
vendored
@@ -1,6 +0,0 @@
|
||||
declare enum Adapter {
|
||||
Static = "static",
|
||||
Ssr = "ssr"
|
||||
}
|
||||
|
||||
export { Adapter };
|
||||
6
server/node_modules/node-appwrite/dist/enums/adapter.d.ts
generated
vendored
6
server/node_modules/node-appwrite/dist/enums/adapter.d.ts
generated
vendored
@@ -1,6 +0,0 @@
|
||||
declare enum Adapter {
|
||||
Static = "static",
|
||||
Ssr = "ssr"
|
||||
}
|
||||
|
||||
export { Adapter };
|
||||
11
server/node_modules/node-appwrite/dist/enums/adapter.js
generated
vendored
11
server/node_modules/node-appwrite/dist/enums/adapter.js
generated
vendored
@@ -1,11 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var Adapter = /* @__PURE__ */ ((Adapter2) => {
|
||||
Adapter2["Static"] = "static";
|
||||
Adapter2["Ssr"] = "ssr";
|
||||
return Adapter2;
|
||||
})(Adapter || {});
|
||||
|
||||
exports.Adapter = Adapter;
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=adapter.js.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/adapter.js.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/adapter.js.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/adapter.ts"],"names":["Adapter"],"mappings":"AAAO,IAAK,UAAL,kBAAKA,aAAL;AACH,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,SAAM;AAFE,SAAAA;AAAA,GAAA","sourcesContent":["export enum Adapter {\n Static = 'static',\n Ssr = 'ssr',\n}"]}
|
||||
10
server/node_modules/node-appwrite/dist/enums/adapter.mjs
generated
vendored
10
server/node_modules/node-appwrite/dist/enums/adapter.mjs
generated
vendored
@@ -1,10 +0,0 @@
|
||||
// src/enums/adapter.ts
|
||||
var Adapter = /* @__PURE__ */ ((Adapter2) => {
|
||||
Adapter2["Static"] = "static";
|
||||
Adapter2["Ssr"] = "ssr";
|
||||
return Adapter2;
|
||||
})(Adapter || {});
|
||||
|
||||
export { Adapter };
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=adapter.mjs.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/adapter.mjs.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/adapter.mjs.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/adapter.ts"],"names":["Adapter"],"mappings":";AAAO,IAAK,UAAL,kBAAKA,aAAL;AACH,EAAAA,SAAA,YAAS;AACT,EAAAA,SAAA,SAAM;AAFE,SAAAA;AAAA,GAAA","sourcesContent":["export enum Adapter {\n Static = 'static',\n Ssr = 'ssr',\n}"]}
|
||||
9
server/node_modules/node-appwrite/dist/enums/attribute-status.d.mts
generated
vendored
9
server/node_modules/node-appwrite/dist/enums/attribute-status.d.mts
generated
vendored
@@ -1,9 +0,0 @@
|
||||
declare enum AttributeStatus {
|
||||
Available = "available",
|
||||
Processing = "processing",
|
||||
Deleting = "deleting",
|
||||
Stuck = "stuck",
|
||||
Failed = "failed"
|
||||
}
|
||||
|
||||
export { AttributeStatus };
|
||||
9
server/node_modules/node-appwrite/dist/enums/attribute-status.d.ts
generated
vendored
9
server/node_modules/node-appwrite/dist/enums/attribute-status.d.ts
generated
vendored
@@ -1,9 +0,0 @@
|
||||
declare enum AttributeStatus {
|
||||
Available = "available",
|
||||
Processing = "processing",
|
||||
Deleting = "deleting",
|
||||
Stuck = "stuck",
|
||||
Failed = "failed"
|
||||
}
|
||||
|
||||
export { AttributeStatus };
|
||||
14
server/node_modules/node-appwrite/dist/enums/attribute-status.js
generated
vendored
14
server/node_modules/node-appwrite/dist/enums/attribute-status.js
generated
vendored
@@ -1,14 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var AttributeStatus = /* @__PURE__ */ ((AttributeStatus2) => {
|
||||
AttributeStatus2["Available"] = "available";
|
||||
AttributeStatus2["Processing"] = "processing";
|
||||
AttributeStatus2["Deleting"] = "deleting";
|
||||
AttributeStatus2["Stuck"] = "stuck";
|
||||
AttributeStatus2["Failed"] = "failed";
|
||||
return AttributeStatus2;
|
||||
})(AttributeStatus || {});
|
||||
|
||||
exports.AttributeStatus = AttributeStatus;
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=attribute-status.js.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/attribute-status.js.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/attribute-status.js.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/attribute-status.ts"],"names":["AttributeStatus"],"mappings":"AAAO,IAAK,kBAAL,kBAAKA,qBAAL;AACH,EAAAA,iBAAA,eAAY;AACZ,EAAAA,iBAAA,gBAAa;AACb,EAAAA,iBAAA,cAAW;AACX,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,YAAS;AALD,SAAAA;AAAA,GAAA","sourcesContent":["export enum AttributeStatus {\n Available = 'available',\n Processing = 'processing',\n Deleting = 'deleting',\n Stuck = 'stuck',\n Failed = 'failed',\n}"]}
|
||||
13
server/node_modules/node-appwrite/dist/enums/attribute-status.mjs
generated
vendored
13
server/node_modules/node-appwrite/dist/enums/attribute-status.mjs
generated
vendored
@@ -1,13 +0,0 @@
|
||||
// src/enums/attribute-status.ts
|
||||
var AttributeStatus = /* @__PURE__ */ ((AttributeStatus2) => {
|
||||
AttributeStatus2["Available"] = "available";
|
||||
AttributeStatus2["Processing"] = "processing";
|
||||
AttributeStatus2["Deleting"] = "deleting";
|
||||
AttributeStatus2["Stuck"] = "stuck";
|
||||
AttributeStatus2["Failed"] = "failed";
|
||||
return AttributeStatus2;
|
||||
})(AttributeStatus || {});
|
||||
|
||||
export { AttributeStatus };
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=attribute-status.mjs.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/attribute-status.mjs.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/attribute-status.mjs.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/attribute-status.ts"],"names":["AttributeStatus"],"mappings":";AAAO,IAAK,kBAAL,kBAAKA,qBAAL;AACH,EAAAA,iBAAA,eAAY;AACZ,EAAAA,iBAAA,gBAAa;AACb,EAAAA,iBAAA,cAAW;AACX,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,YAAS;AALD,SAAAA;AAAA,GAAA","sourcesContent":["export enum AttributeStatus {\n Available = 'available',\n Processing = 'processing',\n Deleting = 'deleting',\n Stuck = 'stuck',\n Failed = 'failed',\n}"]}
|
||||
71
server/node_modules/node-appwrite/dist/enums/build-runtime.d.mts
generated
vendored
71
server/node_modules/node-appwrite/dist/enums/build-runtime.d.mts
generated
vendored
@@ -1,71 +0,0 @@
|
||||
declare enum BuildRuntime {
|
||||
Node145 = "node-14.5",
|
||||
Node160 = "node-16.0",
|
||||
Node180 = "node-18.0",
|
||||
Node190 = "node-19.0",
|
||||
Node200 = "node-20.0",
|
||||
Node210 = "node-21.0",
|
||||
Node22 = "node-22",
|
||||
Php80 = "php-8.0",
|
||||
Php81 = "php-8.1",
|
||||
Php82 = "php-8.2",
|
||||
Php83 = "php-8.3",
|
||||
Ruby30 = "ruby-3.0",
|
||||
Ruby31 = "ruby-3.1",
|
||||
Ruby32 = "ruby-3.2",
|
||||
Ruby33 = "ruby-3.3",
|
||||
Python38 = "python-3.8",
|
||||
Python39 = "python-3.9",
|
||||
Python310 = "python-3.10",
|
||||
Python311 = "python-3.11",
|
||||
Python312 = "python-3.12",
|
||||
Pythonml311 = "python-ml-3.11",
|
||||
Pythonml312 = "python-ml-3.12",
|
||||
Deno121 = "deno-1.21",
|
||||
Deno124 = "deno-1.24",
|
||||
Deno135 = "deno-1.35",
|
||||
Deno140 = "deno-1.40",
|
||||
Deno146 = "deno-1.46",
|
||||
Deno20 = "deno-2.0",
|
||||
Dart215 = "dart-2.15",
|
||||
Dart216 = "dart-2.16",
|
||||
Dart217 = "dart-2.17",
|
||||
Dart218 = "dart-2.18",
|
||||
Dart219 = "dart-2.19",
|
||||
Dart30 = "dart-3.0",
|
||||
Dart31 = "dart-3.1",
|
||||
Dart33 = "dart-3.3",
|
||||
Dart35 = "dart-3.5",
|
||||
Dart38 = "dart-3.8",
|
||||
Dart39 = "dart-3.9",
|
||||
Dotnet60 = "dotnet-6.0",
|
||||
Dotnet70 = "dotnet-7.0",
|
||||
Dotnet80 = "dotnet-8.0",
|
||||
Java80 = "java-8.0",
|
||||
Java110 = "java-11.0",
|
||||
Java170 = "java-17.0",
|
||||
Java180 = "java-18.0",
|
||||
Java210 = "java-21.0",
|
||||
Java22 = "java-22",
|
||||
Swift55 = "swift-5.5",
|
||||
Swift58 = "swift-5.8",
|
||||
Swift59 = "swift-5.9",
|
||||
Swift510 = "swift-5.10",
|
||||
Kotlin16 = "kotlin-1.6",
|
||||
Kotlin18 = "kotlin-1.8",
|
||||
Kotlin19 = "kotlin-1.9",
|
||||
Kotlin20 = "kotlin-2.0",
|
||||
Cpp17 = "cpp-17",
|
||||
Cpp20 = "cpp-20",
|
||||
Bun10 = "bun-1.0",
|
||||
Bun11 = "bun-1.1",
|
||||
Go123 = "go-1.23",
|
||||
Static1 = "static-1",
|
||||
Flutter324 = "flutter-3.24",
|
||||
Flutter327 = "flutter-3.27",
|
||||
Flutter329 = "flutter-3.29",
|
||||
Flutter332 = "flutter-3.32",
|
||||
Flutter335 = "flutter-3.35"
|
||||
}
|
||||
|
||||
export { BuildRuntime };
|
||||
71
server/node_modules/node-appwrite/dist/enums/build-runtime.d.ts
generated
vendored
71
server/node_modules/node-appwrite/dist/enums/build-runtime.d.ts
generated
vendored
@@ -1,71 +0,0 @@
|
||||
declare enum BuildRuntime {
|
||||
Node145 = "node-14.5",
|
||||
Node160 = "node-16.0",
|
||||
Node180 = "node-18.0",
|
||||
Node190 = "node-19.0",
|
||||
Node200 = "node-20.0",
|
||||
Node210 = "node-21.0",
|
||||
Node22 = "node-22",
|
||||
Php80 = "php-8.0",
|
||||
Php81 = "php-8.1",
|
||||
Php82 = "php-8.2",
|
||||
Php83 = "php-8.3",
|
||||
Ruby30 = "ruby-3.0",
|
||||
Ruby31 = "ruby-3.1",
|
||||
Ruby32 = "ruby-3.2",
|
||||
Ruby33 = "ruby-3.3",
|
||||
Python38 = "python-3.8",
|
||||
Python39 = "python-3.9",
|
||||
Python310 = "python-3.10",
|
||||
Python311 = "python-3.11",
|
||||
Python312 = "python-3.12",
|
||||
Pythonml311 = "python-ml-3.11",
|
||||
Pythonml312 = "python-ml-3.12",
|
||||
Deno121 = "deno-1.21",
|
||||
Deno124 = "deno-1.24",
|
||||
Deno135 = "deno-1.35",
|
||||
Deno140 = "deno-1.40",
|
||||
Deno146 = "deno-1.46",
|
||||
Deno20 = "deno-2.0",
|
||||
Dart215 = "dart-2.15",
|
||||
Dart216 = "dart-2.16",
|
||||
Dart217 = "dart-2.17",
|
||||
Dart218 = "dart-2.18",
|
||||
Dart219 = "dart-2.19",
|
||||
Dart30 = "dart-3.0",
|
||||
Dart31 = "dart-3.1",
|
||||
Dart33 = "dart-3.3",
|
||||
Dart35 = "dart-3.5",
|
||||
Dart38 = "dart-3.8",
|
||||
Dart39 = "dart-3.9",
|
||||
Dotnet60 = "dotnet-6.0",
|
||||
Dotnet70 = "dotnet-7.0",
|
||||
Dotnet80 = "dotnet-8.0",
|
||||
Java80 = "java-8.0",
|
||||
Java110 = "java-11.0",
|
||||
Java170 = "java-17.0",
|
||||
Java180 = "java-18.0",
|
||||
Java210 = "java-21.0",
|
||||
Java22 = "java-22",
|
||||
Swift55 = "swift-5.5",
|
||||
Swift58 = "swift-5.8",
|
||||
Swift59 = "swift-5.9",
|
||||
Swift510 = "swift-5.10",
|
||||
Kotlin16 = "kotlin-1.6",
|
||||
Kotlin18 = "kotlin-1.8",
|
||||
Kotlin19 = "kotlin-1.9",
|
||||
Kotlin20 = "kotlin-2.0",
|
||||
Cpp17 = "cpp-17",
|
||||
Cpp20 = "cpp-20",
|
||||
Bun10 = "bun-1.0",
|
||||
Bun11 = "bun-1.1",
|
||||
Go123 = "go-1.23",
|
||||
Static1 = "static-1",
|
||||
Flutter324 = "flutter-3.24",
|
||||
Flutter327 = "flutter-3.27",
|
||||
Flutter329 = "flutter-3.29",
|
||||
Flutter332 = "flutter-3.32",
|
||||
Flutter335 = "flutter-3.35"
|
||||
}
|
||||
|
||||
export { BuildRuntime };
|
||||
76
server/node_modules/node-appwrite/dist/enums/build-runtime.js
generated
vendored
76
server/node_modules/node-appwrite/dist/enums/build-runtime.js
generated
vendored
@@ -1,76 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var BuildRuntime = /* @__PURE__ */ ((BuildRuntime2) => {
|
||||
BuildRuntime2["Node145"] = "node-14.5";
|
||||
BuildRuntime2["Node160"] = "node-16.0";
|
||||
BuildRuntime2["Node180"] = "node-18.0";
|
||||
BuildRuntime2["Node190"] = "node-19.0";
|
||||
BuildRuntime2["Node200"] = "node-20.0";
|
||||
BuildRuntime2["Node210"] = "node-21.0";
|
||||
BuildRuntime2["Node22"] = "node-22";
|
||||
BuildRuntime2["Php80"] = "php-8.0";
|
||||
BuildRuntime2["Php81"] = "php-8.1";
|
||||
BuildRuntime2["Php82"] = "php-8.2";
|
||||
BuildRuntime2["Php83"] = "php-8.3";
|
||||
BuildRuntime2["Ruby30"] = "ruby-3.0";
|
||||
BuildRuntime2["Ruby31"] = "ruby-3.1";
|
||||
BuildRuntime2["Ruby32"] = "ruby-3.2";
|
||||
BuildRuntime2["Ruby33"] = "ruby-3.3";
|
||||
BuildRuntime2["Python38"] = "python-3.8";
|
||||
BuildRuntime2["Python39"] = "python-3.9";
|
||||
BuildRuntime2["Python310"] = "python-3.10";
|
||||
BuildRuntime2["Python311"] = "python-3.11";
|
||||
BuildRuntime2["Python312"] = "python-3.12";
|
||||
BuildRuntime2["Pythonml311"] = "python-ml-3.11";
|
||||
BuildRuntime2["Pythonml312"] = "python-ml-3.12";
|
||||
BuildRuntime2["Deno121"] = "deno-1.21";
|
||||
BuildRuntime2["Deno124"] = "deno-1.24";
|
||||
BuildRuntime2["Deno135"] = "deno-1.35";
|
||||
BuildRuntime2["Deno140"] = "deno-1.40";
|
||||
BuildRuntime2["Deno146"] = "deno-1.46";
|
||||
BuildRuntime2["Deno20"] = "deno-2.0";
|
||||
BuildRuntime2["Dart215"] = "dart-2.15";
|
||||
BuildRuntime2["Dart216"] = "dart-2.16";
|
||||
BuildRuntime2["Dart217"] = "dart-2.17";
|
||||
BuildRuntime2["Dart218"] = "dart-2.18";
|
||||
BuildRuntime2["Dart219"] = "dart-2.19";
|
||||
BuildRuntime2["Dart30"] = "dart-3.0";
|
||||
BuildRuntime2["Dart31"] = "dart-3.1";
|
||||
BuildRuntime2["Dart33"] = "dart-3.3";
|
||||
BuildRuntime2["Dart35"] = "dart-3.5";
|
||||
BuildRuntime2["Dart38"] = "dart-3.8";
|
||||
BuildRuntime2["Dart39"] = "dart-3.9";
|
||||
BuildRuntime2["Dotnet60"] = "dotnet-6.0";
|
||||
BuildRuntime2["Dotnet70"] = "dotnet-7.0";
|
||||
BuildRuntime2["Dotnet80"] = "dotnet-8.0";
|
||||
BuildRuntime2["Java80"] = "java-8.0";
|
||||
BuildRuntime2["Java110"] = "java-11.0";
|
||||
BuildRuntime2["Java170"] = "java-17.0";
|
||||
BuildRuntime2["Java180"] = "java-18.0";
|
||||
BuildRuntime2["Java210"] = "java-21.0";
|
||||
BuildRuntime2["Java22"] = "java-22";
|
||||
BuildRuntime2["Swift55"] = "swift-5.5";
|
||||
BuildRuntime2["Swift58"] = "swift-5.8";
|
||||
BuildRuntime2["Swift59"] = "swift-5.9";
|
||||
BuildRuntime2["Swift510"] = "swift-5.10";
|
||||
BuildRuntime2["Kotlin16"] = "kotlin-1.6";
|
||||
BuildRuntime2["Kotlin18"] = "kotlin-1.8";
|
||||
BuildRuntime2["Kotlin19"] = "kotlin-1.9";
|
||||
BuildRuntime2["Kotlin20"] = "kotlin-2.0";
|
||||
BuildRuntime2["Cpp17"] = "cpp-17";
|
||||
BuildRuntime2["Cpp20"] = "cpp-20";
|
||||
BuildRuntime2["Bun10"] = "bun-1.0";
|
||||
BuildRuntime2["Bun11"] = "bun-1.1";
|
||||
BuildRuntime2["Go123"] = "go-1.23";
|
||||
BuildRuntime2["Static1"] = "static-1";
|
||||
BuildRuntime2["Flutter324"] = "flutter-3.24";
|
||||
BuildRuntime2["Flutter327"] = "flutter-3.27";
|
||||
BuildRuntime2["Flutter329"] = "flutter-3.29";
|
||||
BuildRuntime2["Flutter332"] = "flutter-3.32";
|
||||
BuildRuntime2["Flutter335"] = "flutter-3.35";
|
||||
return BuildRuntime2;
|
||||
})(BuildRuntime || {});
|
||||
|
||||
exports.BuildRuntime = BuildRuntime;
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=build-runtime.js.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/build-runtime.js.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/build-runtime.js.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/build-runtime.ts"],"names":["BuildRuntime"],"mappings":"AAAO,IAAK,eAAL,kBAAKA,kBAAL;AACH,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,eAAY;AACZ,EAAAA,cAAA,eAAY;AACZ,EAAAA,cAAA,eAAY;AACZ,EAAAA,cAAA,iBAAc;AACd,EAAAA,cAAA,iBAAc;AACd,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,gBAAa;AAnEL,SAAAA;AAAA,GAAA","sourcesContent":["export enum BuildRuntime {\n Node145 = 'node-14.5',\n Node160 = 'node-16.0',\n Node180 = 'node-18.0',\n Node190 = 'node-19.0',\n Node200 = 'node-20.0',\n Node210 = 'node-21.0',\n Node22 = 'node-22',\n Php80 = 'php-8.0',\n Php81 = 'php-8.1',\n Php82 = 'php-8.2',\n Php83 = 'php-8.3',\n Ruby30 = 'ruby-3.0',\n Ruby31 = 'ruby-3.1',\n Ruby32 = 'ruby-3.2',\n Ruby33 = 'ruby-3.3',\n Python38 = 'python-3.8',\n Python39 = 'python-3.9',\n Python310 = 'python-3.10',\n Python311 = 'python-3.11',\n Python312 = 'python-3.12',\n Pythonml311 = 'python-ml-3.11',\n Pythonml312 = 'python-ml-3.12',\n Deno121 = 'deno-1.21',\n Deno124 = 'deno-1.24',\n Deno135 = 'deno-1.35',\n Deno140 = 'deno-1.40',\n Deno146 = 'deno-1.46',\n Deno20 = 'deno-2.0',\n Dart215 = 'dart-2.15',\n Dart216 = 'dart-2.16',\n Dart217 = 'dart-2.17',\n Dart218 = 'dart-2.18',\n Dart219 = 'dart-2.19',\n Dart30 = 'dart-3.0',\n Dart31 = 'dart-3.1',\n Dart33 = 'dart-3.3',\n Dart35 = 'dart-3.5',\n Dart38 = 'dart-3.8',\n Dart39 = 'dart-3.9',\n Dotnet60 = 'dotnet-6.0',\n Dotnet70 = 'dotnet-7.0',\n Dotnet80 = 'dotnet-8.0',\n Java80 = 'java-8.0',\n Java110 = 'java-11.0',\n Java170 = 'java-17.0',\n Java180 = 'java-18.0',\n Java210 = 'java-21.0',\n Java22 = 'java-22',\n Swift55 = 'swift-5.5',\n Swift58 = 'swift-5.8',\n Swift59 = 'swift-5.9',\n Swift510 = 'swift-5.10',\n Kotlin16 = 'kotlin-1.6',\n Kotlin18 = 'kotlin-1.8',\n Kotlin19 = 'kotlin-1.9',\n Kotlin20 = 'kotlin-2.0',\n Cpp17 = 'cpp-17',\n Cpp20 = 'cpp-20',\n Bun10 = 'bun-1.0',\n Bun11 = 'bun-1.1',\n Go123 = 'go-1.23',\n Static1 = 'static-1',\n Flutter324 = 'flutter-3.24',\n Flutter327 = 'flutter-3.27',\n Flutter329 = 'flutter-3.29',\n Flutter332 = 'flutter-3.32',\n Flutter335 = 'flutter-3.35',\n}"]}
|
||||
75
server/node_modules/node-appwrite/dist/enums/build-runtime.mjs
generated
vendored
75
server/node_modules/node-appwrite/dist/enums/build-runtime.mjs
generated
vendored
@@ -1,75 +0,0 @@
|
||||
// src/enums/build-runtime.ts
|
||||
var BuildRuntime = /* @__PURE__ */ ((BuildRuntime2) => {
|
||||
BuildRuntime2["Node145"] = "node-14.5";
|
||||
BuildRuntime2["Node160"] = "node-16.0";
|
||||
BuildRuntime2["Node180"] = "node-18.0";
|
||||
BuildRuntime2["Node190"] = "node-19.0";
|
||||
BuildRuntime2["Node200"] = "node-20.0";
|
||||
BuildRuntime2["Node210"] = "node-21.0";
|
||||
BuildRuntime2["Node22"] = "node-22";
|
||||
BuildRuntime2["Php80"] = "php-8.0";
|
||||
BuildRuntime2["Php81"] = "php-8.1";
|
||||
BuildRuntime2["Php82"] = "php-8.2";
|
||||
BuildRuntime2["Php83"] = "php-8.3";
|
||||
BuildRuntime2["Ruby30"] = "ruby-3.0";
|
||||
BuildRuntime2["Ruby31"] = "ruby-3.1";
|
||||
BuildRuntime2["Ruby32"] = "ruby-3.2";
|
||||
BuildRuntime2["Ruby33"] = "ruby-3.3";
|
||||
BuildRuntime2["Python38"] = "python-3.8";
|
||||
BuildRuntime2["Python39"] = "python-3.9";
|
||||
BuildRuntime2["Python310"] = "python-3.10";
|
||||
BuildRuntime2["Python311"] = "python-3.11";
|
||||
BuildRuntime2["Python312"] = "python-3.12";
|
||||
BuildRuntime2["Pythonml311"] = "python-ml-3.11";
|
||||
BuildRuntime2["Pythonml312"] = "python-ml-3.12";
|
||||
BuildRuntime2["Deno121"] = "deno-1.21";
|
||||
BuildRuntime2["Deno124"] = "deno-1.24";
|
||||
BuildRuntime2["Deno135"] = "deno-1.35";
|
||||
BuildRuntime2["Deno140"] = "deno-1.40";
|
||||
BuildRuntime2["Deno146"] = "deno-1.46";
|
||||
BuildRuntime2["Deno20"] = "deno-2.0";
|
||||
BuildRuntime2["Dart215"] = "dart-2.15";
|
||||
BuildRuntime2["Dart216"] = "dart-2.16";
|
||||
BuildRuntime2["Dart217"] = "dart-2.17";
|
||||
BuildRuntime2["Dart218"] = "dart-2.18";
|
||||
BuildRuntime2["Dart219"] = "dart-2.19";
|
||||
BuildRuntime2["Dart30"] = "dart-3.0";
|
||||
BuildRuntime2["Dart31"] = "dart-3.1";
|
||||
BuildRuntime2["Dart33"] = "dart-3.3";
|
||||
BuildRuntime2["Dart35"] = "dart-3.5";
|
||||
BuildRuntime2["Dart38"] = "dart-3.8";
|
||||
BuildRuntime2["Dart39"] = "dart-3.9";
|
||||
BuildRuntime2["Dotnet60"] = "dotnet-6.0";
|
||||
BuildRuntime2["Dotnet70"] = "dotnet-7.0";
|
||||
BuildRuntime2["Dotnet80"] = "dotnet-8.0";
|
||||
BuildRuntime2["Java80"] = "java-8.0";
|
||||
BuildRuntime2["Java110"] = "java-11.0";
|
||||
BuildRuntime2["Java170"] = "java-17.0";
|
||||
BuildRuntime2["Java180"] = "java-18.0";
|
||||
BuildRuntime2["Java210"] = "java-21.0";
|
||||
BuildRuntime2["Java22"] = "java-22";
|
||||
BuildRuntime2["Swift55"] = "swift-5.5";
|
||||
BuildRuntime2["Swift58"] = "swift-5.8";
|
||||
BuildRuntime2["Swift59"] = "swift-5.9";
|
||||
BuildRuntime2["Swift510"] = "swift-5.10";
|
||||
BuildRuntime2["Kotlin16"] = "kotlin-1.6";
|
||||
BuildRuntime2["Kotlin18"] = "kotlin-1.8";
|
||||
BuildRuntime2["Kotlin19"] = "kotlin-1.9";
|
||||
BuildRuntime2["Kotlin20"] = "kotlin-2.0";
|
||||
BuildRuntime2["Cpp17"] = "cpp-17";
|
||||
BuildRuntime2["Cpp20"] = "cpp-20";
|
||||
BuildRuntime2["Bun10"] = "bun-1.0";
|
||||
BuildRuntime2["Bun11"] = "bun-1.1";
|
||||
BuildRuntime2["Go123"] = "go-1.23";
|
||||
BuildRuntime2["Static1"] = "static-1";
|
||||
BuildRuntime2["Flutter324"] = "flutter-3.24";
|
||||
BuildRuntime2["Flutter327"] = "flutter-3.27";
|
||||
BuildRuntime2["Flutter329"] = "flutter-3.29";
|
||||
BuildRuntime2["Flutter332"] = "flutter-3.32";
|
||||
BuildRuntime2["Flutter335"] = "flutter-3.35";
|
||||
return BuildRuntime2;
|
||||
})(BuildRuntime || {});
|
||||
|
||||
export { BuildRuntime };
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=build-runtime.mjs.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/build-runtime.mjs.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/build-runtime.mjs.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/build-runtime.ts"],"names":["BuildRuntime"],"mappings":";AAAO,IAAK,eAAL,kBAAKA,kBAAL;AACH,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,eAAY;AACZ,EAAAA,cAAA,eAAY;AACZ,EAAAA,cAAA,eAAY;AACZ,EAAAA,cAAA,iBAAc;AACd,EAAAA,cAAA,iBAAc;AACd,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,aAAU;AACV,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,gBAAa;AAnEL,SAAAA;AAAA,GAAA","sourcesContent":["export enum BuildRuntime {\n Node145 = 'node-14.5',\n Node160 = 'node-16.0',\n Node180 = 'node-18.0',\n Node190 = 'node-19.0',\n Node200 = 'node-20.0',\n Node210 = 'node-21.0',\n Node22 = 'node-22',\n Php80 = 'php-8.0',\n Php81 = 'php-8.1',\n Php82 = 'php-8.2',\n Php83 = 'php-8.3',\n Ruby30 = 'ruby-3.0',\n Ruby31 = 'ruby-3.1',\n Ruby32 = 'ruby-3.2',\n Ruby33 = 'ruby-3.3',\n Python38 = 'python-3.8',\n Python39 = 'python-3.9',\n Python310 = 'python-3.10',\n Python311 = 'python-3.11',\n Python312 = 'python-3.12',\n Pythonml311 = 'python-ml-3.11',\n Pythonml312 = 'python-ml-3.12',\n Deno121 = 'deno-1.21',\n Deno124 = 'deno-1.24',\n Deno135 = 'deno-1.35',\n Deno140 = 'deno-1.40',\n Deno146 = 'deno-1.46',\n Deno20 = 'deno-2.0',\n Dart215 = 'dart-2.15',\n Dart216 = 'dart-2.16',\n Dart217 = 'dart-2.17',\n Dart218 = 'dart-2.18',\n Dart219 = 'dart-2.19',\n Dart30 = 'dart-3.0',\n Dart31 = 'dart-3.1',\n Dart33 = 'dart-3.3',\n Dart35 = 'dart-3.5',\n Dart38 = 'dart-3.8',\n Dart39 = 'dart-3.9',\n Dotnet60 = 'dotnet-6.0',\n Dotnet70 = 'dotnet-7.0',\n Dotnet80 = 'dotnet-8.0',\n Java80 = 'java-8.0',\n Java110 = 'java-11.0',\n Java170 = 'java-17.0',\n Java180 = 'java-18.0',\n Java210 = 'java-21.0',\n Java22 = 'java-22',\n Swift55 = 'swift-5.5',\n Swift58 = 'swift-5.8',\n Swift59 = 'swift-5.9',\n Swift510 = 'swift-5.10',\n Kotlin16 = 'kotlin-1.6',\n Kotlin18 = 'kotlin-1.8',\n Kotlin19 = 'kotlin-1.9',\n Kotlin20 = 'kotlin-2.0',\n Cpp17 = 'cpp-17',\n Cpp20 = 'cpp-20',\n Bun10 = 'bun-1.0',\n Bun11 = 'bun-1.1',\n Go123 = 'go-1.23',\n Static1 = 'static-1',\n Flutter324 = 'flutter-3.24',\n Flutter327 = 'flutter-3.27',\n Flutter329 = 'flutter-3.29',\n Flutter332 = 'flutter-3.32',\n Flutter335 = 'flutter-3.35',\n}"]}
|
||||
9
server/node_modules/node-appwrite/dist/enums/column-status.d.mts
generated
vendored
9
server/node_modules/node-appwrite/dist/enums/column-status.d.mts
generated
vendored
@@ -1,9 +0,0 @@
|
||||
declare enum ColumnStatus {
|
||||
Available = "available",
|
||||
Processing = "processing",
|
||||
Deleting = "deleting",
|
||||
Stuck = "stuck",
|
||||
Failed = "failed"
|
||||
}
|
||||
|
||||
export { ColumnStatus };
|
||||
9
server/node_modules/node-appwrite/dist/enums/column-status.d.ts
generated
vendored
9
server/node_modules/node-appwrite/dist/enums/column-status.d.ts
generated
vendored
@@ -1,9 +0,0 @@
|
||||
declare enum ColumnStatus {
|
||||
Available = "available",
|
||||
Processing = "processing",
|
||||
Deleting = "deleting",
|
||||
Stuck = "stuck",
|
||||
Failed = "failed"
|
||||
}
|
||||
|
||||
export { ColumnStatus };
|
||||
14
server/node_modules/node-appwrite/dist/enums/column-status.js
generated
vendored
14
server/node_modules/node-appwrite/dist/enums/column-status.js
generated
vendored
@@ -1,14 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var ColumnStatus = /* @__PURE__ */ ((ColumnStatus2) => {
|
||||
ColumnStatus2["Available"] = "available";
|
||||
ColumnStatus2["Processing"] = "processing";
|
||||
ColumnStatus2["Deleting"] = "deleting";
|
||||
ColumnStatus2["Stuck"] = "stuck";
|
||||
ColumnStatus2["Failed"] = "failed";
|
||||
return ColumnStatus2;
|
||||
})(ColumnStatus || {});
|
||||
|
||||
exports.ColumnStatus = ColumnStatus;
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=column-status.js.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/column-status.js.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/column-status.js.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/column-status.ts"],"names":["ColumnStatus"],"mappings":"AAAO,IAAK,eAAL,kBAAKA,kBAAL;AACH,EAAAA,cAAA,eAAY;AACZ,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,YAAS;AALD,SAAAA;AAAA,GAAA","sourcesContent":["export enum ColumnStatus {\n Available = 'available',\n Processing = 'processing',\n Deleting = 'deleting',\n Stuck = 'stuck',\n Failed = 'failed',\n}"]}
|
||||
13
server/node_modules/node-appwrite/dist/enums/column-status.mjs
generated
vendored
13
server/node_modules/node-appwrite/dist/enums/column-status.mjs
generated
vendored
@@ -1,13 +0,0 @@
|
||||
// src/enums/column-status.ts
|
||||
var ColumnStatus = /* @__PURE__ */ ((ColumnStatus2) => {
|
||||
ColumnStatus2["Available"] = "available";
|
||||
ColumnStatus2["Processing"] = "processing";
|
||||
ColumnStatus2["Deleting"] = "deleting";
|
||||
ColumnStatus2["Stuck"] = "stuck";
|
||||
ColumnStatus2["Failed"] = "failed";
|
||||
return ColumnStatus2;
|
||||
})(ColumnStatus || {});
|
||||
|
||||
export { ColumnStatus };
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=column-status.mjs.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/column-status.mjs.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/column-status.mjs.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/column-status.ts"],"names":["ColumnStatus"],"mappings":";AAAO,IAAK,eAAL,kBAAKA,kBAAL;AACH,EAAAA,cAAA,eAAY;AACZ,EAAAA,cAAA,gBAAa;AACb,EAAAA,cAAA,cAAW;AACX,EAAAA,cAAA,WAAQ;AACR,EAAAA,cAAA,YAAS;AALD,SAAAA;AAAA,GAAA","sourcesContent":["export enum ColumnStatus {\n Available = 'available',\n Processing = 'processing',\n Deleting = 'deleting',\n Stuck = 'stuck',\n Failed = 'failed',\n}"]}
|
||||
5
server/node_modules/node-appwrite/dist/enums/credit-card.d.mts
generated
vendored
5
server/node_modules/node-appwrite/dist/enums/credit-card.d.mts
generated
vendored
@@ -11,11 +11,10 @@ declare enum CreditCard {
|
||||
Mastercard = "mastercard",
|
||||
Naranja = "naranja",
|
||||
TarjetaShopping = "targeta-shopping",
|
||||
UnionPay = "unionpay",
|
||||
UnionChinaPay = "union-china-pay",
|
||||
Visa = "visa",
|
||||
MIR = "mir",
|
||||
Maestro = "maestro",
|
||||
Rupay = "rupay"
|
||||
Maestro = "maestro"
|
||||
}
|
||||
|
||||
export { CreditCard };
|
||||
|
||||
5
server/node_modules/node-appwrite/dist/enums/credit-card.d.ts
generated
vendored
5
server/node_modules/node-appwrite/dist/enums/credit-card.d.ts
generated
vendored
@@ -11,11 +11,10 @@ declare enum CreditCard {
|
||||
Mastercard = "mastercard",
|
||||
Naranja = "naranja",
|
||||
TarjetaShopping = "targeta-shopping",
|
||||
UnionPay = "unionpay",
|
||||
UnionChinaPay = "union-china-pay",
|
||||
Visa = "visa",
|
||||
MIR = "mir",
|
||||
Maestro = "maestro",
|
||||
Rupay = "rupay"
|
||||
Maestro = "maestro"
|
||||
}
|
||||
|
||||
export { CreditCard };
|
||||
|
||||
3
server/node_modules/node-appwrite/dist/enums/credit-card.js
generated
vendored
3
server/node_modules/node-appwrite/dist/enums/credit-card.js
generated
vendored
@@ -13,11 +13,10 @@ var CreditCard = /* @__PURE__ */ ((CreditCard2) => {
|
||||
CreditCard2["Mastercard"] = "mastercard";
|
||||
CreditCard2["Naranja"] = "naranja";
|
||||
CreditCard2["TarjetaShopping"] = "targeta-shopping";
|
||||
CreditCard2["UnionPay"] = "unionpay";
|
||||
CreditCard2["UnionChinaPay"] = "union-china-pay";
|
||||
CreditCard2["Visa"] = "visa";
|
||||
CreditCard2["MIR"] = "mir";
|
||||
CreditCard2["Maestro"] = "maestro";
|
||||
CreditCard2["Rupay"] = "rupay";
|
||||
return CreditCard2;
|
||||
})(CreditCard || {});
|
||||
|
||||
|
||||
2
server/node_modules/node-appwrite/dist/enums/credit-card.js.map
generated
vendored
2
server/node_modules/node-appwrite/dist/enums/credit-card.js.map
generated
vendored
@@ -1 +1 @@
|
||||
{"version":3,"sources":["../../src/enums/credit-card.ts"],"names":["CreditCard"],"mappings":"AAAO,IAAK,aAAL,kBAAKA,gBAAL;AACH,EAAAA,YAAA,qBAAkB;AAClB,EAAAA,YAAA,eAAY;AACZ,EAAAA,YAAA,WAAQ;AACR,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,eAAY;AACZ,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,qBAAkB;AAClB,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,WAAQ;AAjBA,SAAAA;AAAA,GAAA","sourcesContent":["export enum CreditCard {\n AmericanExpress = 'amex',\n Argencard = 'argencard',\n Cabal = 'cabal',\n Cencosud = 'cencosud',\n DinersClub = 'diners',\n Discover = 'discover',\n Elo = 'elo',\n Hipercard = 'hipercard',\n JCB = 'jcb',\n Mastercard = 'mastercard',\n Naranja = 'naranja',\n TarjetaShopping = 'targeta-shopping',\n UnionPay = 'unionpay',\n Visa = 'visa',\n MIR = 'mir',\n Maestro = 'maestro',\n Rupay = 'rupay',\n}"]}
|
||||
{"version":3,"sources":["../../src/enums/credit-card.ts"],"names":["CreditCard"],"mappings":"AAAO,IAAK,aAAL,kBAAKA,gBAAL;AACH,EAAAA,YAAA,qBAAkB;AAClB,EAAAA,YAAA,eAAY;AACZ,EAAAA,YAAA,WAAQ;AACR,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,eAAY;AACZ,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,qBAAkB;AAClB,EAAAA,YAAA,mBAAgB;AAChB,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,aAAU;AAhBF,SAAAA;AAAA,GAAA","sourcesContent":["export enum CreditCard {\n AmericanExpress = 'amex',\n Argencard = 'argencard',\n Cabal = 'cabal',\n Cencosud = 'cencosud',\n DinersClub = 'diners',\n Discover = 'discover',\n Elo = 'elo',\n Hipercard = 'hipercard',\n JCB = 'jcb',\n Mastercard = 'mastercard',\n Naranja = 'naranja',\n TarjetaShopping = 'targeta-shopping',\n UnionChinaPay = 'union-china-pay',\n Visa = 'visa',\n MIR = 'mir',\n Maestro = 'maestro',\n}"]}
|
||||
3
server/node_modules/node-appwrite/dist/enums/credit-card.mjs
generated
vendored
3
server/node_modules/node-appwrite/dist/enums/credit-card.mjs
generated
vendored
@@ -12,11 +12,10 @@ var CreditCard = /* @__PURE__ */ ((CreditCard2) => {
|
||||
CreditCard2["Mastercard"] = "mastercard";
|
||||
CreditCard2["Naranja"] = "naranja";
|
||||
CreditCard2["TarjetaShopping"] = "targeta-shopping";
|
||||
CreditCard2["UnionPay"] = "unionpay";
|
||||
CreditCard2["UnionChinaPay"] = "union-china-pay";
|
||||
CreditCard2["Visa"] = "visa";
|
||||
CreditCard2["MIR"] = "mir";
|
||||
CreditCard2["Maestro"] = "maestro";
|
||||
CreditCard2["Rupay"] = "rupay";
|
||||
return CreditCard2;
|
||||
})(CreditCard || {});
|
||||
|
||||
|
||||
2
server/node_modules/node-appwrite/dist/enums/credit-card.mjs.map
generated
vendored
2
server/node_modules/node-appwrite/dist/enums/credit-card.mjs.map
generated
vendored
@@ -1 +1 @@
|
||||
{"version":3,"sources":["../../src/enums/credit-card.ts"],"names":["CreditCard"],"mappings":";AAAO,IAAK,aAAL,kBAAKA,gBAAL;AACH,EAAAA,YAAA,qBAAkB;AAClB,EAAAA,YAAA,eAAY;AACZ,EAAAA,YAAA,WAAQ;AACR,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,eAAY;AACZ,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,qBAAkB;AAClB,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,WAAQ;AAjBA,SAAAA;AAAA,GAAA","sourcesContent":["export enum CreditCard {\n AmericanExpress = 'amex',\n Argencard = 'argencard',\n Cabal = 'cabal',\n Cencosud = 'cencosud',\n DinersClub = 'diners',\n Discover = 'discover',\n Elo = 'elo',\n Hipercard = 'hipercard',\n JCB = 'jcb',\n Mastercard = 'mastercard',\n Naranja = 'naranja',\n TarjetaShopping = 'targeta-shopping',\n UnionPay = 'unionpay',\n Visa = 'visa',\n MIR = 'mir',\n Maestro = 'maestro',\n Rupay = 'rupay',\n}"]}
|
||||
{"version":3,"sources":["../../src/enums/credit-card.ts"],"names":["CreditCard"],"mappings":";AAAO,IAAK,aAAL,kBAAKA,gBAAL;AACH,EAAAA,YAAA,qBAAkB;AAClB,EAAAA,YAAA,eAAY;AACZ,EAAAA,YAAA,WAAQ;AACR,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,eAAY;AACZ,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,aAAU;AACV,EAAAA,YAAA,qBAAkB;AAClB,EAAAA,YAAA,mBAAgB;AAChB,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,SAAM;AACN,EAAAA,YAAA,aAAU;AAhBF,SAAAA;AAAA,GAAA","sourcesContent":["export enum CreditCard {\n AmericanExpress = 'amex',\n Argencard = 'argencard',\n Cabal = 'cabal',\n Cencosud = 'cencosud',\n DinersClub = 'diners',\n Discover = 'discover',\n Elo = 'elo',\n Hipercard = 'hipercard',\n JCB = 'jcb',\n Mastercard = 'mastercard',\n Naranja = 'naranja',\n TarjetaShopping = 'targeta-shopping',\n UnionChinaPay = 'union-china-pay',\n Visa = 'visa',\n MIR = 'mir',\n Maestro = 'maestro',\n}"]}
|
||||
6
server/node_modules/node-appwrite/dist/enums/database-type.d.mts
generated
vendored
6
server/node_modules/node-appwrite/dist/enums/database-type.d.mts
generated
vendored
@@ -1,6 +0,0 @@
|
||||
declare enum DatabaseType {
|
||||
Legacy = "legacy",
|
||||
Tablesdb = "tablesdb"
|
||||
}
|
||||
|
||||
export { DatabaseType };
|
||||
6
server/node_modules/node-appwrite/dist/enums/database-type.d.ts
generated
vendored
6
server/node_modules/node-appwrite/dist/enums/database-type.d.ts
generated
vendored
@@ -1,6 +0,0 @@
|
||||
declare enum DatabaseType {
|
||||
Legacy = "legacy",
|
||||
Tablesdb = "tablesdb"
|
||||
}
|
||||
|
||||
export { DatabaseType };
|
||||
11
server/node_modules/node-appwrite/dist/enums/database-type.js
generated
vendored
11
server/node_modules/node-appwrite/dist/enums/database-type.js
generated
vendored
@@ -1,11 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var DatabaseType = /* @__PURE__ */ ((DatabaseType2) => {
|
||||
DatabaseType2["Legacy"] = "legacy";
|
||||
DatabaseType2["Tablesdb"] = "tablesdb";
|
||||
return DatabaseType2;
|
||||
})(DatabaseType || {});
|
||||
|
||||
exports.DatabaseType = DatabaseType;
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=database-type.js.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/database-type.js.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/database-type.js.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/database-type.ts"],"names":["DatabaseType"],"mappings":"AAAO,IAAK,eAAL,kBAAKA,kBAAL;AACH,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,cAAW;AAFH,SAAAA;AAAA,GAAA","sourcesContent":["export enum DatabaseType {\n Legacy = 'legacy',\n Tablesdb = 'tablesdb',\n}"]}
|
||||
10
server/node_modules/node-appwrite/dist/enums/database-type.mjs
generated
vendored
10
server/node_modules/node-appwrite/dist/enums/database-type.mjs
generated
vendored
@@ -1,10 +0,0 @@
|
||||
// src/enums/database-type.ts
|
||||
var DatabaseType = /* @__PURE__ */ ((DatabaseType2) => {
|
||||
DatabaseType2["Legacy"] = "legacy";
|
||||
DatabaseType2["Tablesdb"] = "tablesdb";
|
||||
return DatabaseType2;
|
||||
})(DatabaseType || {});
|
||||
|
||||
export { DatabaseType };
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=database-type.mjs.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/database-type.mjs.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/database-type.mjs.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/database-type.ts"],"names":["DatabaseType"],"mappings":";AAAO,IAAK,eAAL,kBAAKA,kBAAL;AACH,EAAAA,cAAA,YAAS;AACT,EAAAA,cAAA,cAAW;AAFH,SAAAA;AAAA,GAAA","sourcesContent":["export enum DatabaseType {\n Legacy = 'legacy',\n Tablesdb = 'tablesdb',\n}"]}
|
||||
6
server/node_modules/node-appwrite/dist/enums/deployment-download-type.d.mts
generated
vendored
6
server/node_modules/node-appwrite/dist/enums/deployment-download-type.d.mts
generated
vendored
@@ -1,6 +0,0 @@
|
||||
declare enum DeploymentDownloadType {
|
||||
Source = "source",
|
||||
Output = "output"
|
||||
}
|
||||
|
||||
export { DeploymentDownloadType };
|
||||
6
server/node_modules/node-appwrite/dist/enums/deployment-download-type.d.ts
generated
vendored
6
server/node_modules/node-appwrite/dist/enums/deployment-download-type.d.ts
generated
vendored
@@ -1,6 +0,0 @@
|
||||
declare enum DeploymentDownloadType {
|
||||
Source = "source",
|
||||
Output = "output"
|
||||
}
|
||||
|
||||
export { DeploymentDownloadType };
|
||||
11
server/node_modules/node-appwrite/dist/enums/deployment-download-type.js
generated
vendored
11
server/node_modules/node-appwrite/dist/enums/deployment-download-type.js
generated
vendored
@@ -1,11 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var DeploymentDownloadType = /* @__PURE__ */ ((DeploymentDownloadType2) => {
|
||||
DeploymentDownloadType2["Source"] = "source";
|
||||
DeploymentDownloadType2["Output"] = "output";
|
||||
return DeploymentDownloadType2;
|
||||
})(DeploymentDownloadType || {});
|
||||
|
||||
exports.DeploymentDownloadType = DeploymentDownloadType;
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=deployment-download-type.js.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/deployment-download-type.js.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/deployment-download-type.js.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/deployment-download-type.ts"],"names":["DeploymentDownloadType"],"mappings":"AAAO,IAAK,yBAAL,kBAAKA,4BAAL;AACH,EAAAA,wBAAA,YAAS;AACT,EAAAA,wBAAA,YAAS;AAFD,SAAAA;AAAA,GAAA","sourcesContent":["export enum DeploymentDownloadType {\n Source = 'source',\n Output = 'output',\n}"]}
|
||||
10
server/node_modules/node-appwrite/dist/enums/deployment-download-type.mjs
generated
vendored
10
server/node_modules/node-appwrite/dist/enums/deployment-download-type.mjs
generated
vendored
@@ -1,10 +0,0 @@
|
||||
// src/enums/deployment-download-type.ts
|
||||
var DeploymentDownloadType = /* @__PURE__ */ ((DeploymentDownloadType2) => {
|
||||
DeploymentDownloadType2["Source"] = "source";
|
||||
DeploymentDownloadType2["Output"] = "output";
|
||||
return DeploymentDownloadType2;
|
||||
})(DeploymentDownloadType || {});
|
||||
|
||||
export { DeploymentDownloadType };
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=deployment-download-type.mjs.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/deployment-download-type.mjs.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/deployment-download-type.mjs.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/deployment-download-type.ts"],"names":["DeploymentDownloadType"],"mappings":";AAAO,IAAK,yBAAL,kBAAKA,4BAAL;AACH,EAAAA,wBAAA,YAAS;AACT,EAAAA,wBAAA,YAAS;AAFD,SAAAA;AAAA,GAAA","sourcesContent":["export enum DeploymentDownloadType {\n Source = 'source',\n Output = 'output',\n}"]}
|
||||
9
server/node_modules/node-appwrite/dist/enums/deployment-status.d.mts
generated
vendored
9
server/node_modules/node-appwrite/dist/enums/deployment-status.d.mts
generated
vendored
@@ -1,9 +0,0 @@
|
||||
declare enum DeploymentStatus {
|
||||
Waiting = "waiting",
|
||||
Processing = "processing",
|
||||
Building = "building",
|
||||
Ready = "ready",
|
||||
Failed = "failed"
|
||||
}
|
||||
|
||||
export { DeploymentStatus };
|
||||
9
server/node_modules/node-appwrite/dist/enums/deployment-status.d.ts
generated
vendored
9
server/node_modules/node-appwrite/dist/enums/deployment-status.d.ts
generated
vendored
@@ -1,9 +0,0 @@
|
||||
declare enum DeploymentStatus {
|
||||
Waiting = "waiting",
|
||||
Processing = "processing",
|
||||
Building = "building",
|
||||
Ready = "ready",
|
||||
Failed = "failed"
|
||||
}
|
||||
|
||||
export { DeploymentStatus };
|
||||
14
server/node_modules/node-appwrite/dist/enums/deployment-status.js
generated
vendored
14
server/node_modules/node-appwrite/dist/enums/deployment-status.js
generated
vendored
@@ -1,14 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var DeploymentStatus = /* @__PURE__ */ ((DeploymentStatus2) => {
|
||||
DeploymentStatus2["Waiting"] = "waiting";
|
||||
DeploymentStatus2["Processing"] = "processing";
|
||||
DeploymentStatus2["Building"] = "building";
|
||||
DeploymentStatus2["Ready"] = "ready";
|
||||
DeploymentStatus2["Failed"] = "failed";
|
||||
return DeploymentStatus2;
|
||||
})(DeploymentStatus || {});
|
||||
|
||||
exports.DeploymentStatus = DeploymentStatus;
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=deployment-status.js.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/deployment-status.js.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/deployment-status.js.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/deployment-status.ts"],"names":["DeploymentStatus"],"mappings":"AAAO,IAAK,mBAAL,kBAAKA,sBAAL;AACH,EAAAA,kBAAA,aAAU;AACV,EAAAA,kBAAA,gBAAa;AACb,EAAAA,kBAAA,cAAW;AACX,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,YAAS;AALD,SAAAA;AAAA,GAAA","sourcesContent":["export enum DeploymentStatus {\n Waiting = 'waiting',\n Processing = 'processing',\n Building = 'building',\n Ready = 'ready',\n Failed = 'failed',\n}"]}
|
||||
13
server/node_modules/node-appwrite/dist/enums/deployment-status.mjs
generated
vendored
13
server/node_modules/node-appwrite/dist/enums/deployment-status.mjs
generated
vendored
@@ -1,13 +0,0 @@
|
||||
// src/enums/deployment-status.ts
|
||||
var DeploymentStatus = /* @__PURE__ */ ((DeploymentStatus2) => {
|
||||
DeploymentStatus2["Waiting"] = "waiting";
|
||||
DeploymentStatus2["Processing"] = "processing";
|
||||
DeploymentStatus2["Building"] = "building";
|
||||
DeploymentStatus2["Ready"] = "ready";
|
||||
DeploymentStatus2["Failed"] = "failed";
|
||||
return DeploymentStatus2;
|
||||
})(DeploymentStatus || {});
|
||||
|
||||
export { DeploymentStatus };
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=deployment-status.mjs.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/deployment-status.mjs.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/deployment-status.mjs.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/deployment-status.ts"],"names":["DeploymentStatus"],"mappings":";AAAO,IAAK,mBAAL,kBAAKA,sBAAL;AACH,EAAAA,kBAAA,aAAU;AACV,EAAAA,kBAAA,gBAAa;AACb,EAAAA,kBAAA,cAAW;AACX,EAAAA,kBAAA,WAAQ;AACR,EAAAA,kBAAA,YAAS;AALD,SAAAA;AAAA,GAAA","sourcesContent":["export enum DeploymentStatus {\n Waiting = 'waiting',\n Processing = 'processing',\n Building = 'building',\n Ready = 'ready',\n Failed = 'failed',\n}"]}
|
||||
3
server/node_modules/node-appwrite/dist/enums/execution-method.d.mts
generated
vendored
3
server/node_modules/node-appwrite/dist/enums/execution-method.d.mts
generated
vendored
@@ -4,8 +4,7 @@ declare enum ExecutionMethod {
|
||||
PUT = "PUT",
|
||||
PATCH = "PATCH",
|
||||
DELETE = "DELETE",
|
||||
OPTIONS = "OPTIONS",
|
||||
HEAD = "HEAD"
|
||||
OPTIONS = "OPTIONS"
|
||||
}
|
||||
|
||||
export { ExecutionMethod };
|
||||
|
||||
3
server/node_modules/node-appwrite/dist/enums/execution-method.d.ts
generated
vendored
3
server/node_modules/node-appwrite/dist/enums/execution-method.d.ts
generated
vendored
@@ -4,8 +4,7 @@ declare enum ExecutionMethod {
|
||||
PUT = "PUT",
|
||||
PATCH = "PATCH",
|
||||
DELETE = "DELETE",
|
||||
OPTIONS = "OPTIONS",
|
||||
HEAD = "HEAD"
|
||||
OPTIONS = "OPTIONS"
|
||||
}
|
||||
|
||||
export { ExecutionMethod };
|
||||
|
||||
1
server/node_modules/node-appwrite/dist/enums/execution-method.js
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/execution-method.js
generated
vendored
@@ -7,7 +7,6 @@ var ExecutionMethod = /* @__PURE__ */ ((ExecutionMethod2) => {
|
||||
ExecutionMethod2["PATCH"] = "PATCH";
|
||||
ExecutionMethod2["DELETE"] = "DELETE";
|
||||
ExecutionMethod2["OPTIONS"] = "OPTIONS";
|
||||
ExecutionMethod2["HEAD"] = "HEAD";
|
||||
return ExecutionMethod2;
|
||||
})(ExecutionMethod || {});
|
||||
|
||||
|
||||
2
server/node_modules/node-appwrite/dist/enums/execution-method.js.map
generated
vendored
2
server/node_modules/node-appwrite/dist/enums/execution-method.js.map
generated
vendored
@@ -1 +1 @@
|
||||
{"version":3,"sources":["../../src/enums/execution-method.ts"],"names":["ExecutionMethod"],"mappings":"AAAO,IAAK,kBAAL,kBAAKA,qBAAL;AACH,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,UAAO;AAPC,SAAAA;AAAA,GAAA","sourcesContent":["export enum ExecutionMethod {\n GET = 'GET',\n POST = 'POST',\n PUT = 'PUT',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n OPTIONS = 'OPTIONS',\n HEAD = 'HEAD',\n}"]}
|
||||
{"version":3,"sources":["../../src/enums/execution-method.ts"],"names":["ExecutionMethod"],"mappings":"AAAO,IAAK,kBAAL,kBAAKA,qBAAL;AACH,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,aAAU;AANF,SAAAA;AAAA,GAAA","sourcesContent":["export enum ExecutionMethod {\n GET = 'GET',\n POST = 'POST',\n PUT = 'PUT',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n OPTIONS = 'OPTIONS',\n}"]}
|
||||
1
server/node_modules/node-appwrite/dist/enums/execution-method.mjs
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/execution-method.mjs
generated
vendored
@@ -6,7 +6,6 @@ var ExecutionMethod = /* @__PURE__ */ ((ExecutionMethod2) => {
|
||||
ExecutionMethod2["PATCH"] = "PATCH";
|
||||
ExecutionMethod2["DELETE"] = "DELETE";
|
||||
ExecutionMethod2["OPTIONS"] = "OPTIONS";
|
||||
ExecutionMethod2["HEAD"] = "HEAD";
|
||||
return ExecutionMethod2;
|
||||
})(ExecutionMethod || {});
|
||||
|
||||
|
||||
2
server/node_modules/node-appwrite/dist/enums/execution-method.mjs.map
generated
vendored
2
server/node_modules/node-appwrite/dist/enums/execution-method.mjs.map
generated
vendored
@@ -1 +1 @@
|
||||
{"version":3,"sources":["../../src/enums/execution-method.ts"],"names":["ExecutionMethod"],"mappings":";AAAO,IAAK,kBAAL,kBAAKA,qBAAL;AACH,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,UAAO;AAPC,SAAAA;AAAA,GAAA","sourcesContent":["export enum ExecutionMethod {\n GET = 'GET',\n POST = 'POST',\n PUT = 'PUT',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n OPTIONS = 'OPTIONS',\n HEAD = 'HEAD',\n}"]}
|
||||
{"version":3,"sources":["../../src/enums/execution-method.ts"],"names":["ExecutionMethod"],"mappings":";AAAO,IAAK,kBAAL,kBAAKA,qBAAL;AACH,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,UAAO;AACP,EAAAA,iBAAA,SAAM;AACN,EAAAA,iBAAA,WAAQ;AACR,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,aAAU;AANF,SAAAA;AAAA,GAAA","sourcesContent":["export enum ExecutionMethod {\n GET = 'GET',\n POST = 'POST',\n PUT = 'PUT',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n OPTIONS = 'OPTIONS',\n}"]}
|
||||
9
server/node_modules/node-appwrite/dist/enums/execution-status.d.mts
generated
vendored
9
server/node_modules/node-appwrite/dist/enums/execution-status.d.mts
generated
vendored
@@ -1,9 +0,0 @@
|
||||
declare enum ExecutionStatus {
|
||||
Waiting = "waiting",
|
||||
Processing = "processing",
|
||||
Completed = "completed",
|
||||
Failed = "failed",
|
||||
Scheduled = "scheduled"
|
||||
}
|
||||
|
||||
export { ExecutionStatus };
|
||||
9
server/node_modules/node-appwrite/dist/enums/execution-status.d.ts
generated
vendored
9
server/node_modules/node-appwrite/dist/enums/execution-status.d.ts
generated
vendored
@@ -1,9 +0,0 @@
|
||||
declare enum ExecutionStatus {
|
||||
Waiting = "waiting",
|
||||
Processing = "processing",
|
||||
Completed = "completed",
|
||||
Failed = "failed",
|
||||
Scheduled = "scheduled"
|
||||
}
|
||||
|
||||
export { ExecutionStatus };
|
||||
14
server/node_modules/node-appwrite/dist/enums/execution-status.js
generated
vendored
14
server/node_modules/node-appwrite/dist/enums/execution-status.js
generated
vendored
@@ -1,14 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var ExecutionStatus = /* @__PURE__ */ ((ExecutionStatus2) => {
|
||||
ExecutionStatus2["Waiting"] = "waiting";
|
||||
ExecutionStatus2["Processing"] = "processing";
|
||||
ExecutionStatus2["Completed"] = "completed";
|
||||
ExecutionStatus2["Failed"] = "failed";
|
||||
ExecutionStatus2["Scheduled"] = "scheduled";
|
||||
return ExecutionStatus2;
|
||||
})(ExecutionStatus || {});
|
||||
|
||||
exports.ExecutionStatus = ExecutionStatus;
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=execution-status.js.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/execution-status.js.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/execution-status.js.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/execution-status.ts"],"names":["ExecutionStatus"],"mappings":"AAAO,IAAK,kBAAL,kBAAKA,qBAAL;AACH,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,gBAAa;AACb,EAAAA,iBAAA,eAAY;AACZ,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,eAAY;AALJ,SAAAA;AAAA,GAAA","sourcesContent":["export enum ExecutionStatus {\n Waiting = 'waiting',\n Processing = 'processing',\n Completed = 'completed',\n Failed = 'failed',\n Scheduled = 'scheduled',\n}"]}
|
||||
13
server/node_modules/node-appwrite/dist/enums/execution-status.mjs
generated
vendored
13
server/node_modules/node-appwrite/dist/enums/execution-status.mjs
generated
vendored
@@ -1,13 +0,0 @@
|
||||
// src/enums/execution-status.ts
|
||||
var ExecutionStatus = /* @__PURE__ */ ((ExecutionStatus2) => {
|
||||
ExecutionStatus2["Waiting"] = "waiting";
|
||||
ExecutionStatus2["Processing"] = "processing";
|
||||
ExecutionStatus2["Completed"] = "completed";
|
||||
ExecutionStatus2["Failed"] = "failed";
|
||||
ExecutionStatus2["Scheduled"] = "scheduled";
|
||||
return ExecutionStatus2;
|
||||
})(ExecutionStatus || {});
|
||||
|
||||
export { ExecutionStatus };
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=execution-status.mjs.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/execution-status.mjs.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/execution-status.mjs.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/execution-status.ts"],"names":["ExecutionStatus"],"mappings":";AAAO,IAAK,kBAAL,kBAAKA,qBAAL;AACH,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,gBAAa;AACb,EAAAA,iBAAA,eAAY;AACZ,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,eAAY;AALJ,SAAAA;AAAA,GAAA","sourcesContent":["export enum ExecutionStatus {\n Waiting = 'waiting',\n Processing = 'processing',\n Completed = 'completed',\n Failed = 'failed',\n Scheduled = 'scheduled',\n}"]}
|
||||
7
server/node_modules/node-appwrite/dist/enums/execution-trigger.d.mts
generated
vendored
7
server/node_modules/node-appwrite/dist/enums/execution-trigger.d.mts
generated
vendored
@@ -1,7 +0,0 @@
|
||||
declare enum ExecutionTrigger {
|
||||
Http = "http",
|
||||
Schedule = "schedule",
|
||||
Event = "event"
|
||||
}
|
||||
|
||||
export { ExecutionTrigger };
|
||||
7
server/node_modules/node-appwrite/dist/enums/execution-trigger.d.ts
generated
vendored
7
server/node_modules/node-appwrite/dist/enums/execution-trigger.d.ts
generated
vendored
@@ -1,7 +0,0 @@
|
||||
declare enum ExecutionTrigger {
|
||||
Http = "http",
|
||||
Schedule = "schedule",
|
||||
Event = "event"
|
||||
}
|
||||
|
||||
export { ExecutionTrigger };
|
||||
12
server/node_modules/node-appwrite/dist/enums/execution-trigger.js
generated
vendored
12
server/node_modules/node-appwrite/dist/enums/execution-trigger.js
generated
vendored
@@ -1,12 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var ExecutionTrigger = /* @__PURE__ */ ((ExecutionTrigger2) => {
|
||||
ExecutionTrigger2["Http"] = "http";
|
||||
ExecutionTrigger2["Schedule"] = "schedule";
|
||||
ExecutionTrigger2["Event"] = "event";
|
||||
return ExecutionTrigger2;
|
||||
})(ExecutionTrigger || {});
|
||||
|
||||
exports.ExecutionTrigger = ExecutionTrigger;
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=execution-trigger.js.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/execution-trigger.js.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/execution-trigger.js.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/execution-trigger.ts"],"names":["ExecutionTrigger"],"mappings":"AAAO,IAAK,mBAAL,kBAAKA,sBAAL;AACH,EAAAA,kBAAA,UAAO;AACP,EAAAA,kBAAA,cAAW;AACX,EAAAA,kBAAA,WAAQ;AAHA,SAAAA;AAAA,GAAA","sourcesContent":["export enum ExecutionTrigger {\n Http = 'http',\n Schedule = 'schedule',\n Event = 'event',\n}"]}
|
||||
11
server/node_modules/node-appwrite/dist/enums/execution-trigger.mjs
generated
vendored
11
server/node_modules/node-appwrite/dist/enums/execution-trigger.mjs
generated
vendored
@@ -1,11 +0,0 @@
|
||||
// src/enums/execution-trigger.ts
|
||||
var ExecutionTrigger = /* @__PURE__ */ ((ExecutionTrigger2) => {
|
||||
ExecutionTrigger2["Http"] = "http";
|
||||
ExecutionTrigger2["Schedule"] = "schedule";
|
||||
ExecutionTrigger2["Event"] = "event";
|
||||
return ExecutionTrigger2;
|
||||
})(ExecutionTrigger || {});
|
||||
|
||||
export { ExecutionTrigger };
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=execution-trigger.mjs.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/execution-trigger.mjs.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/execution-trigger.mjs.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/execution-trigger.ts"],"names":["ExecutionTrigger"],"mappings":";AAAO,IAAK,mBAAL,kBAAKA,sBAAL;AACH,EAAAA,kBAAA,UAAO;AACP,EAAAA,kBAAA,cAAW;AACX,EAAAA,kBAAA,WAAQ;AAHA,SAAAA;AAAA,GAAA","sourcesContent":["export enum ExecutionTrigger {\n Http = 'http',\n Schedule = 'schedule',\n Event = 'event',\n}"]}
|
||||
19
server/node_modules/node-appwrite/dist/enums/framework.d.mts
generated
vendored
19
server/node_modules/node-appwrite/dist/enums/framework.d.mts
generated
vendored
@@ -1,19 +0,0 @@
|
||||
declare enum Framework {
|
||||
Analog = "analog",
|
||||
Angular = "angular",
|
||||
Nextjs = "nextjs",
|
||||
React = "react",
|
||||
Nuxt = "nuxt",
|
||||
Vue = "vue",
|
||||
Sveltekit = "sveltekit",
|
||||
Astro = "astro",
|
||||
Tanstackstart = "tanstack-start",
|
||||
Remix = "remix",
|
||||
Lynx = "lynx",
|
||||
Flutter = "flutter",
|
||||
Reactnative = "react-native",
|
||||
Vite = "vite",
|
||||
Other = "other"
|
||||
}
|
||||
|
||||
export { Framework };
|
||||
19
server/node_modules/node-appwrite/dist/enums/framework.d.ts
generated
vendored
19
server/node_modules/node-appwrite/dist/enums/framework.d.ts
generated
vendored
@@ -1,19 +0,0 @@
|
||||
declare enum Framework {
|
||||
Analog = "analog",
|
||||
Angular = "angular",
|
||||
Nextjs = "nextjs",
|
||||
React = "react",
|
||||
Nuxt = "nuxt",
|
||||
Vue = "vue",
|
||||
Sveltekit = "sveltekit",
|
||||
Astro = "astro",
|
||||
Tanstackstart = "tanstack-start",
|
||||
Remix = "remix",
|
||||
Lynx = "lynx",
|
||||
Flutter = "flutter",
|
||||
Reactnative = "react-native",
|
||||
Vite = "vite",
|
||||
Other = "other"
|
||||
}
|
||||
|
||||
export { Framework };
|
||||
24
server/node_modules/node-appwrite/dist/enums/framework.js
generated
vendored
24
server/node_modules/node-appwrite/dist/enums/framework.js
generated
vendored
@@ -1,24 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var Framework = /* @__PURE__ */ ((Framework2) => {
|
||||
Framework2["Analog"] = "analog";
|
||||
Framework2["Angular"] = "angular";
|
||||
Framework2["Nextjs"] = "nextjs";
|
||||
Framework2["React"] = "react";
|
||||
Framework2["Nuxt"] = "nuxt";
|
||||
Framework2["Vue"] = "vue";
|
||||
Framework2["Sveltekit"] = "sveltekit";
|
||||
Framework2["Astro"] = "astro";
|
||||
Framework2["Tanstackstart"] = "tanstack-start";
|
||||
Framework2["Remix"] = "remix";
|
||||
Framework2["Lynx"] = "lynx";
|
||||
Framework2["Flutter"] = "flutter";
|
||||
Framework2["Reactnative"] = "react-native";
|
||||
Framework2["Vite"] = "vite";
|
||||
Framework2["Other"] = "other";
|
||||
return Framework2;
|
||||
})(Framework || {});
|
||||
|
||||
exports.Framework = Framework;
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=framework.js.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/framework.js.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/framework.js.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/framework.ts"],"names":["Framework"],"mappings":"AAAO,IAAK,YAAL,kBAAKA,eAAL;AACH,EAAAA,WAAA,YAAS;AACT,EAAAA,WAAA,aAAU;AACV,EAAAA,WAAA,YAAS;AACT,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,SAAM;AACN,EAAAA,WAAA,eAAY;AACZ,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,mBAAgB;AAChB,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,aAAU;AACV,EAAAA,WAAA,iBAAc;AACd,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,WAAQ;AAfA,SAAAA;AAAA,GAAA","sourcesContent":["export enum Framework {\n Analog = 'analog',\n Angular = 'angular',\n Nextjs = 'nextjs',\n React = 'react',\n Nuxt = 'nuxt',\n Vue = 'vue',\n Sveltekit = 'sveltekit',\n Astro = 'astro',\n Tanstackstart = 'tanstack-start',\n Remix = 'remix',\n Lynx = 'lynx',\n Flutter = 'flutter',\n Reactnative = 'react-native',\n Vite = 'vite',\n Other = 'other',\n}"]}
|
||||
23
server/node_modules/node-appwrite/dist/enums/framework.mjs
generated
vendored
23
server/node_modules/node-appwrite/dist/enums/framework.mjs
generated
vendored
@@ -1,23 +0,0 @@
|
||||
// src/enums/framework.ts
|
||||
var Framework = /* @__PURE__ */ ((Framework2) => {
|
||||
Framework2["Analog"] = "analog";
|
||||
Framework2["Angular"] = "angular";
|
||||
Framework2["Nextjs"] = "nextjs";
|
||||
Framework2["React"] = "react";
|
||||
Framework2["Nuxt"] = "nuxt";
|
||||
Framework2["Vue"] = "vue";
|
||||
Framework2["Sveltekit"] = "sveltekit";
|
||||
Framework2["Astro"] = "astro";
|
||||
Framework2["Tanstackstart"] = "tanstack-start";
|
||||
Framework2["Remix"] = "remix";
|
||||
Framework2["Lynx"] = "lynx";
|
||||
Framework2["Flutter"] = "flutter";
|
||||
Framework2["Reactnative"] = "react-native";
|
||||
Framework2["Vite"] = "vite";
|
||||
Framework2["Other"] = "other";
|
||||
return Framework2;
|
||||
})(Framework || {});
|
||||
|
||||
export { Framework };
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=framework.mjs.map
|
||||
1
server/node_modules/node-appwrite/dist/enums/framework.mjs.map
generated
vendored
1
server/node_modules/node-appwrite/dist/enums/framework.mjs.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"sources":["../../src/enums/framework.ts"],"names":["Framework"],"mappings":";AAAO,IAAK,YAAL,kBAAKA,eAAL;AACH,EAAAA,WAAA,YAAS;AACT,EAAAA,WAAA,aAAU;AACV,EAAAA,WAAA,YAAS;AACT,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,SAAM;AACN,EAAAA,WAAA,eAAY;AACZ,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,mBAAgB;AAChB,EAAAA,WAAA,WAAQ;AACR,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,aAAU;AACV,EAAAA,WAAA,iBAAc;AACd,EAAAA,WAAA,UAAO;AACP,EAAAA,WAAA,WAAQ;AAfA,SAAAA;AAAA,GAAA","sourcesContent":["export enum Framework {\n Analog = 'analog',\n Angular = 'angular',\n Nextjs = 'nextjs',\n React = 'react',\n Nuxt = 'nuxt',\n Vue = 'vue',\n Sveltekit = 'sveltekit',\n Astro = 'astro',\n Tanstackstart = 'tanstack-start',\n Remix = 'remix',\n Lynx = 'lynx',\n Flutter = 'flutter',\n Reactnative = 'react-native',\n Vite = 'vite',\n Other = 'other',\n}"]}
|
||||
7
server/node_modules/node-appwrite/dist/enums/health-antivirus-status.d.mts
generated
vendored
7
server/node_modules/node-appwrite/dist/enums/health-antivirus-status.d.mts
generated
vendored
@@ -1,7 +0,0 @@
|
||||
declare enum HealthAntivirusStatus {
|
||||
Disabled = "disabled",
|
||||
Offline = "offline",
|
||||
Online = "online"
|
||||
}
|
||||
|
||||
export { HealthAntivirusStatus };
|
||||
7
server/node_modules/node-appwrite/dist/enums/health-antivirus-status.d.ts
generated
vendored
7
server/node_modules/node-appwrite/dist/enums/health-antivirus-status.d.ts
generated
vendored
@@ -1,7 +0,0 @@
|
||||
declare enum HealthAntivirusStatus {
|
||||
Disabled = "disabled",
|
||||
Offline = "offline",
|
||||
Online = "online"
|
||||
}
|
||||
|
||||
export { HealthAntivirusStatus };
|
||||
12
server/node_modules/node-appwrite/dist/enums/health-antivirus-status.js
generated
vendored
12
server/node_modules/node-appwrite/dist/enums/health-antivirus-status.js
generated
vendored
@@ -1,12 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var HealthAntivirusStatus = /* @__PURE__ */ ((HealthAntivirusStatus2) => {
|
||||
HealthAntivirusStatus2["Disabled"] = "disabled";
|
||||
HealthAntivirusStatus2["Offline"] = "offline";
|
||||
HealthAntivirusStatus2["Online"] = "online";
|
||||
return HealthAntivirusStatus2;
|
||||
})(HealthAntivirusStatus || {});
|
||||
|
||||
exports.HealthAntivirusStatus = HealthAntivirusStatus;
|
||||
//# sourceMappingURL=out.js.map
|
||||
//# sourceMappingURL=health-antivirus-status.js.map
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user