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:
1 parent
95349af50b
commit
abf761db07
596 files changed
+56405
-51231
No files matched your search
+24
-27
@@ -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
|
||||
@@ -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);
|
||||
});
|
||||
+39
-6
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
+159
-200
@@ -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
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -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 : '')
|
||||
},
|
||||
}
|
||||
@@ -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.',
|
||||
}),
|
||||
}
|
||||
@@ -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')],
|
||||
},
|
||||
},
|
||||
}
|
||||
+440
-15
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-79
@@ -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)
|
||||
|
||||
|
||||
+12
-6
@@ -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>
|
||||
|
||||
+9
-56
@@ -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?
|
||||
|
||||
|
||||
+3
-20
@@ -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
|
||||
|
||||
+12
-60
@@ -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 = {
|
||||
|
||||
+3
-3
@@ -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"
|
||||
},
|
||||
|
||||
+1
-1
@@ -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:
|
||||
|
||||
+2
-67
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
+7
-20
@@ -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;
|
||||
}
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
{"version":3,"sources":["../src/client.ts"],"names":[],"mappings":"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 truncated
|
||||
{"version":3,"sources":["../src/client.ts"],"names":[],"mappings":"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 truncated
|
||||
+7
-20
@@ -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;
|
||||
}
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
{"version":3,"sources":["../src/client.ts"],"names":[],"mappings":"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 truncated
|
||||
{"version":3,"sources":["../src/client.ts"],"names":[],"mappings":";AAAA,SAAS,OAAO,UAAU,YAAY;AACtC,SAAS,mBAAmB;AAmX5B,SAAS,aAAa;AAhWtB,IAAM,oBAAN,cAAgC,MAAM;AAAA,EAIlC,YAAY,SAAiB,OAAe,GAAG,OAAe,IAAI,WAAmB,IAAI;AACrF,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,UAAU;AACf,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,WAAW;AAAA,EACpB;AACJ;AAEA,SAAS,eAAe;AACpB,MAAI,KAAK;AAGT,QAAM,WAAqB,CAAC;AAC5B,MAAI,OAAO,YAAY,aAAa;AAChC,QAAI,OAAO,QAAQ,aAAa;AAAU,eAAS,KAAK,QAAQ,QAAQ;AACxE,QAAI,OAAO,QAAQ,SAAS;AAAU,eAAS,KAAK,QAAQ,IAAI;AAAA,EACpE;AACA,MAAI,SAAS,SAAS,GAAG;AACrB,UAAM,KAAK,SAAS,KAAK,IAAI,CAAC;AAAA,EAClC;AAMA,MAAI,OAAO,cAAc,eAAe,OAAO,UAAU,cAAc,UAAU;AAE7E,UAAM,IAAI,UAAU,SAAS;AAAA,EAGjC,WAAW,OAAO,WAAW,gBAAgB,UAAU;AACnD,UAAM;AAAA,EAGV,WAAW,OAAO,YAAY,eAAe,OAAO,QAAQ,YAAY,UAAU;AAC9E,UAAM,YAAY,QAAQ,OAAO;AAAA,EACrC;AAEA,SAAO;AACX;AAEA,IAAM,UAAN,MAAM,QAAO;AAAA,EAAb;AAGI,kBAAS;AAAA,MACL,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,oBAAoB;AAAA,IACxB;AACA,mBAAmB;AAAA,MACf,cAAc;AAAA,MACd,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,iBAAiB;AAAA,MACjB,cAAe,aAAa;AAAA,MAC5B,8BAA8B;AAAA,IAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,YAAY,UAAwB;AAChC,SAAK,OAAO,WAAW;AAEvB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,cAAc,YAA2B;AAErC,QAAI,OAAO,WAAW,gBAAgB,aAAa;AAC/C,cAAQ,KAAK,kDAAkD;AAAA,IACnE;AAEA,SAAK,OAAO,aAAa;AAEzB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,UAAU,QAAgB,OAAqB;AAC3C,SAAK,QAAQ,OAAO,YAAY,CAAC,IAAI;AAErC,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,WAAW,OAAqB;AAC5B,SAAK,QAAQ,oBAAoB,IAAI;AACrC,SAAK,OAAO,UAAU;AACtB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,OAAO,OAAqB;AACxB,SAAK,QAAQ,gBAAgB,IAAI;AACjC,SAAK,OAAO,MAAM;AAClB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,OAAO,OAAqB;AACxB,SAAK,QAAQ,gBAAgB,IAAI;AACjC,SAAK,OAAO,MAAM;AAClB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,UAAU,OAAqB;AAC3B,SAAK,QAAQ,mBAAmB,IAAI;AACpC,SAAK,OAAO,SAAS;AACrB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,WAAW,OAAqB;AAC5B,SAAK,QAAQ,oBAAoB,IAAI;AACrC,SAAK,OAAO,UAAU;AACtB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,sBAAsB,OAAqB;AACvC,SAAK,QAAQ,wBAAwB,IAAI;AACzC,SAAK,OAAO,qBAAqB;AACjC,WAAO;AAAA,EACX;AAAA,EAEA,eAAe,QAAgB,KAAU,UAAmB,CAAC,GAAG,SAAkB,CAAC,GAA0C;AACzH,aAAS,OAAO,YAAY;AAE5B,cAAU,OAAO,OAAO,CAAC,GAAG,KAAK,SAAS,OAAO;AAEjD,QAAI,UAAuB;AAAA,MACvB;AAAA,MACA;AAAA,MACA,GAAG,YAAY,KAAK,OAAO,UAAU,EAAE,oBAAoB,CAAC,KAAK,OAAO,WAAW,CAAC;AAAA,IACxF;AAEA,QAAI,WAAW,OAAO;AAClB,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,QAAO,QAAQ,MAAM,CAAC,GAAG;AAC/D,YAAI,aAAa,OAAO,KAAK,KAAK;AAAA,MACtC;AAAA,IACJ,OAAO;AACH,cAAQ,QAAQ,cAAc,GAAG;AAAA,QAC7B,KAAK;AACD,kBAAQ,OAAO,KAAK,UAAU,MAAM;AACpC;AAAA,QAEJ,KAAK;AACD,gBAAM,WAAW,IAAI,SAAS;AAE9B,qBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AAC/C,gBAAI,iBAAiB,MAAM;AACvB,uBAAS,OAAO,KAAK,OAAO,MAAM,IAAI;AAAA,YAC1C,WAAW,MAAM,QAAQ,KAAK,GAAG;AAC7B,yBAAW,eAAe,OAAO;AAC7B,yBAAS,OAAO,GAAG,GAAG,MAAM,WAAW;AAAA,cAC3C;AAAA,YACJ,OAAO;AACH,uBAAS,OAAO,KAAK,KAAK;AAAA,YAC9B;AAAA,UACJ;AAEA,kBAAQ,OAAO;AACf,iBAAO,QAAQ,cAAc;AAC7B;AAAA,MACR;AAAA,IACJ;AAEA,WAAO,EAAE,KAAK,IAAI,SAAS,GAAG,QAAQ;AAAA,EAC1C;AAAA,EAEA,MAAM,cAAc,QAAgB,KAAU,UAAmB,CAAC,GAAG,kBAA2B,CAAC,GAAG,YAAgD;AAChJ,UAAM,OAAO,OAAO,OAAO,eAAe,EAAE,KAAK,CAAC,UAAU,iBAAiB,IAAI;AAEjF,QAAI,KAAK,QAAQ,QAAO,YAAY;AAChC,aAAO,MAAM,KAAK,KAAK,QAAQ,KAAK,SAAS,eAAe;AAAA,IAChE;AAEA,QAAI,QAAQ;AACZ,QAAI,WAAW;AAEf,WAAO,QAAQ,KAAK,MAAM;AACtB,UAAI,MAAM,QAAQ,QAAO;AACzB,UAAI,OAAO,KAAK,MAAM;AAClB,cAAM,KAAK;AAAA,MACf;AAEA,cAAQ,eAAe,IAAI,SAAS,KAAK,IAAI,MAAI,CAAC,IAAI,KAAK,IAAI;AAC/D,YAAM,QAAQ,KAAK,MAAM,OAAO,GAAG;AAEnC,UAAI,UAAU,EAAE,GAAG,iBAAiB,MAAM,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,IAAI,EAAC;AAEtE,iBAAW,MAAM,KAAK,KAAK,QAAQ,KAAK,SAAS,OAAO;AAExD,UAAI,cAAc,OAAO,eAAe,YAAY;AAChD,mBAAW;AAAA,UACP,KAAK,SAAS;AAAA,UACd,UAAU,KAAK,MAAO,MAAM,KAAK,OAAQ,GAAG;AAAA,UAC5C,cAAc;AAAA,UACd,aAAa,KAAK,KAAK,KAAK,OAAO,QAAO,UAAU;AAAA,UACpD,gBAAgB,KAAK,KAAK,MAAM,QAAO,UAAU;AAAA,QACrD,CAAC;AAAA,MACL;AAEA,UAAI,YAAY,SAAS,KAAK;AAC1B,gBAAQ,eAAe,IAAI,SAAS;AAAA,MACxC;AAEA,cAAQ;AAAA,IACZ;AAEA,WAAO;AAAA,EACX;AAAA,EAEA,MAAM,OAAwB;AAC1B,WAAO,KAAK,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,WAAW,OAAO,CAAC;AAAA,EACnE;AAAA,EAEA,MAAM,SAAS,QAAgB,KAAU,UAAmB,CAAC,GAAG,SAAkB,CAAC,GAAoB;AACnG,UAAM,EAAE,KAAK,QAAQ,IAAI,KAAK,eAAe,QAAQ,KAAK,SAAS,MAAM;AAEzE,UAAM,WAAW,MAAM,MAAM,KAAK;AAAA,MAC9B,GAAG;AAAA,MACH,UAAU;AAAA,IACd,CAAC;AAED,QAAI,SAAS,WAAW,OAAO,SAAS,WAAW,KAAK;AACpD,YAAM,IAAI,kBAAkB,oBAAoB,SAAS,MAAM;AAAA,IACnE;AAEA,WAAO,SAAS,QAAQ,IAAI,UAAU,KAAK;AAAA,EAC/C;AAAA,EAEA,MAAM,KAAK,QAAgB,KAAU,UAAmB,CAAC,GAAG,SAAkB,CAAC,GAAG,eAAe,QAAsB;AAtU3H;AAuUQ,UAAM,EAAE,KAAK,QAAQ,IAAI,KAAK,eAAe,QAAQ,KAAK,SAAS,MAAM;AAEzE,QAAI,OAAY;AAEhB,UAAM,WAAW,MAAM,MAAM,KAAK,OAAO;AAEzC,UAAM,WAAW,SAAS,QAAQ,IAAI,oBAAoB;AAC1D,QAAI,UAAU;AACV,eAAS,MAAM,GAAG,EAAE,QAAQ,CAAC,YAAoB,QAAQ,KAAK,cAAc,OAAO,CAAC;AAAA,IACxF;AAEA,SAAI,cAAS,QAAQ,IAAI,cAAc,MAAnC,mBAAsC,SAAS,qBAAqB;AACpE,aAAO,MAAM,SAAS,KAAK;AAAA,IAC/B,WAAW,iBLine truncated
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
declare enum Adapter {
|
||||
Static = "static",
|
||||
Ssr = "ssr"
|
||||
}
|
||||
|
||||
export { Adapter };
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
declare enum Adapter {
|
||||
Static = "static",
|
||||
Ssr = "ssr"
|
||||
}
|
||||
|
||||
export { Adapter };
|
||||
-11
@@ -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
@@ -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
@@ -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
@@ -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
@@ -1,9 +0,0 @@
|
||||
declare enum AttributeStatus {
|
||||
Available = "available",
|
||||
Processing = "processing",
|
||||
Deleting = "deleting",
|
||||
Stuck = "stuck",
|
||||
Failed = "failed"
|
||||
}
|
||||
|
||||
export { AttributeStatus };
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
declare enum AttributeStatus {
|
||||
Available = "available",
|
||||
Processing = "processing",
|
||||
Deleting = "deleting",
|
||||
Stuck = "stuck",
|
||||
Failed = "failed"
|
||||
}
|
||||
|
||||
export { AttributeStatus };
|
||||
-14
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -1,9 +0,0 @@
|
||||
declare enum ColumnStatus {
|
||||
Available = "available",
|
||||
Processing = "processing",
|
||||
Deleting = "deleting",
|
||||
Stuck = "stuck",
|
||||
Failed = "failed"
|
||||
}
|
||||
|
||||
export { ColumnStatus };
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
declare enum ColumnStatus {
|
||||
Available = "available",
|
||||
Processing = "processing",
|
||||
Deleting = "deleting",
|
||||
Stuck = "stuck",
|
||||
Failed = "failed"
|
||||
}
|
||||
|
||||
export { ColumnStatus };
|
||||
-14
@@ -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
@@ -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
@@ -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
@@ -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}"]}
|
||||
+2
-3
@@ -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 };
|
||||
+2
-3
@@ -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 };
|
||||
+1
-2
@@ -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 || {});
|
||||
|
||||
|
||||
+1
-1
@@ -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}"]}
|
||||
+1
-2
@@ -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 || {});
|
||||
|
||||
|
||||
+1
-1
@@ -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
@@ -1,6 +0,0 @@
|
||||
declare enum DatabaseType {
|
||||
Legacy = "legacy",
|
||||
Tablesdb = "tablesdb"
|
||||
}
|
||||
|
||||
export { DatabaseType };
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
declare enum DatabaseType {
|
||||
Legacy = "legacy",
|
||||
Tablesdb = "tablesdb"
|
||||
}
|
||||
|
||||
export { DatabaseType };
|
||||
-11
@@ -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
@@ -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
@@ -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
@@ -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
@@ -1,6 +0,0 @@
|
||||
declare enum DeploymentDownloadType {
|
||||
Source = "source",
|
||||
Output = "output"
|
||||
}
|
||||
|
||||
export { DeploymentDownloadType };
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
declare enum DeploymentDownloadType {
|
||||
Source = "source",
|
||||
Output = "output"
|
||||
}
|
||||
|
||||
export { DeploymentDownloadType };
|
||||
-11
@@ -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
@@ -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
@@ -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
@@ -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
@@ -1,9 +0,0 @@
|
||||
declare enum DeploymentStatus {
|
||||
Waiting = "waiting",
|
||||
Processing = "processing",
|
||||
Building = "building",
|
||||
Ready = "ready",
|
||||
Failed = "failed"
|
||||
}
|
||||
|
||||
export { DeploymentStatus };
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
declare enum DeploymentStatus {
|
||||
Waiting = "waiting",
|
||||
Processing = "processing",
|
||||
Building = "building",
|
||||
Ready = "ready",
|
||||
Failed = "failed"
|
||||
}
|
||||
|
||||
export { DeploymentStatus };
|
||||
-14
@@ -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
@@ -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
@@ -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
@@ -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}"]}
|
||||
+1
-2
@@ -4,8 +4,7 @@ declare enum ExecutionMethod {
|
||||
PUT = "PUT",
|
||||
PATCH = "PATCH",
|
||||
DELETE = "DELETE",
|
||||
OPTIONS = "OPTIONS",
|
||||
HEAD = "HEAD"
|
||||
OPTIONS = "OPTIONS"
|
||||
}
|
||||
|
||||
export { ExecutionMethod };
|
||||
+1
-2
@@ -4,8 +4,7 @@ declare enum ExecutionMethod {
|
||||
PUT = "PUT",
|
||||
PATCH = "PATCH",
|
||||
DELETE = "DELETE",
|
||||
OPTIONS = "OPTIONS",
|
||||
HEAD = "HEAD"
|
||||
OPTIONS = "OPTIONS"
|
||||
}
|
||||
|
||||
export { ExecutionMethod };
|
||||
-1
@@ -7,7 +7,6 @@ var ExecutionMethod = /* @__PURE__ */ ((ExecutionMethod2) => {
|
||||
ExecutionMethod2["PATCH"] = "PATCH";
|
||||
ExecutionMethod2["DELETE"] = "DELETE";
|
||||
ExecutionMethod2["OPTIONS"] = "OPTIONS";
|
||||
ExecutionMethod2["HEAD"] = "HEAD";
|
||||
return ExecutionMethod2;
|
||||
})(ExecutionMethod || {});
|
||||
|
||||
|
||||
+1
-1
@@ -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
@@ -6,7 +6,6 @@ var ExecutionMethod = /* @__PURE__ */ ((ExecutionMethod2) => {
|
||||
ExecutionMethod2["PATCH"] = "PATCH";
|
||||
ExecutionMethod2["DELETE"] = "DELETE";
|
||||
ExecutionMethod2["OPTIONS"] = "OPTIONS";
|
||||
ExecutionMethod2["HEAD"] = "HEAD";
|
||||
return ExecutionMethod2;
|
||||
})(ExecutionMethod || {});
|
||||
|
||||
|
||||
+1
-1
@@ -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
@@ -1,9 +0,0 @@
|
||||
declare enum ExecutionStatus {
|
||||
Waiting = "waiting",
|
||||
Processing = "processing",
|
||||
Completed = "completed",
|
||||
Failed = "failed",
|
||||
Scheduled = "scheduled"
|
||||
}
|
||||
|
||||
export { ExecutionStatus };
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
declare enum ExecutionStatus {
|
||||
Waiting = "waiting",
|
||||
Processing = "processing",
|
||||
Completed = "completed",
|
||||
Failed = "failed",
|
||||
Scheduled = "scheduled"
|
||||
}
|
||||
|
||||
export { ExecutionStatus };
|
||||
-14
@@ -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
@@ -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
@@ -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
@@ -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
@@ -1,7 +0,0 @@
|
||||
declare enum ExecutionTrigger {
|
||||
Http = "http",
|
||||
Schedule = "schedule",
|
||||
Event = "event"
|
||||
}
|
||||
|
||||
export { ExecutionTrigger };
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
declare enum ExecutionTrigger {
|
||||
Http = "http",
|
||||
Schedule = "schedule",
|
||||
Event = "event"
|
||||
}
|
||||
|
||||
export { ExecutionTrigger };
|
||||
-12
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -1,7 +0,0 @@
|
||||
declare enum HealthAntivirusStatus {
|
||||
Disabled = "disabled",
|
||||
Offline = "offline",
|
||||
Online = "online"
|
||||
}
|
||||
|
||||
export { HealthAntivirusStatus };
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
declare enum HealthAntivirusStatus {
|
||||
Disabled = "disabled",
|
||||
Offline = "offline",
|
||||
Online = "online"
|
||||
}
|
||||
|
||||
export { HealthAntivirusStatus };
|
||||
-12
@@ -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
|
||||
Loaded 100 of 596 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user