/* |-------------------------------------------------------------------------- | Environment variables service |-------------------------------------------------------------------------- | | The `Env.create` method creates an instance of the Env service. The | service validates the environment variables and also cast values | to JavaScript data types. | */ import { Env } from '@adonisjs/core/env' export default await Env.create(new URL('../', import.meta.url), { // Node NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const), PORT: Env.schema.number(), HOST: Env.schema.string({ format: 'host' }), LOG_LEVEL: Env.schema.string(), // App APP_KEY: Env.schema.secret(), APP_URL: Env.schema.string({ format: 'url', tld: false }), // Session SESSION_DRIVER: Env.schema.enum(['cookie', 'memory', 'database'] as const), // Database DB_CONNECTION: Env.schema.string(), DB_HOST: Env.schema.string({ format: 'host' }), DB_PORT: Env.schema.number(), DB_USER: Env.schema.string(), DB_PASSWORD: Env.schema.secret.optional(), DB_DATABASE: Env.schema.string(), DB_POOL_MAX: Env.schema.number.optional(), DB_SYNCHRONOUS_COMMIT: Env.schema.enum.optional(['on', 'off'] as const), // Redis REDIS_HOST: Env.schema.string({ format: 'host' }), REDIS_PORT: Env.schema.number(), REDIS_PASSWORD: Env.schema.secret.optional(), // Usenet (NNTP) NNTP_HOST: Env.schema.string({ format: 'host' }), NNTP_PORT: Env.schema.number(), NNTP_USER: Env.schema.string(), NNTP_PASSWORD: Env.schema.secret(), NNTP_SECURE: Env.schema.boolean(), NNTP_POOL_SIZE: Env.schema.number.optional(), NNTP_COMMAND_TIMEOUT_MS: Env.schema.number.optional(), NNTP_TLS_SERVERNAME: Env.schema.string.optional(), SEED_NNTP_CONNECTIONS: Env.schema.number.optional(), // Indexer (config/indexer.ts) BACKFILL_MAX_QUEUED: Env.schema.number.optional(), STAGING_GROUPS: Env.schema.string.optional(), COUNTER_GROUPING_GROUPS: Env.schema.string.optional(), FILE_CONCURRENCY: Env.schema.number.optional(), GC_REINDEX_INTERVAL_MS: Env.schema.number.optional(), GC_UNFINGERPRINTED_SECONDS: Env.schema.number.optional(), STAGING_TTL_SECONDS: Env.schema.number.optional(), BACKFILL_MAX_NVME_GB: Env.schema.number.optional(), BACKFILL_MAX_HDD_GB: Env.schema.number.optional(), INDEX_INTERVAL_MS: Env.schema.number.optional(), INDEX_BATCH_SIZE: Env.schema.number.optional(), INDEX_MAX_BATCHES_PER_TICK: Env.schema.number.optional(), INDEX_INITIAL_BACKFILL: Env.schema.number.optional(), FETCH_CONCURRENCY: Env.schema.number.optional(), BODY_CONCURRENCY: Env.schema.number.optional(), COLLECTION_CONCURRENCY: Env.schema.number.optional(), DEFERRED_SETTLE_MS: Env.schema.number.optional(), DEFERRED_EXPAND_MAX_PARTS: Env.schema.number.optional(), DEFERRED_CONCURRENCY: Env.schema.number.optional(), SPOT_CONCURRENCY: Env.schema.number.optional(), SPOT_IMPORT_DAYS: Env.schema.number.optional(), // Newznab API (/api): required as ?apikey= when set NEWZNAB_API_KEY: Env.schema.secret.optional(), // Garbage collection (config/gc.ts) GC_INTERVAL_MS: Env.schema.number.optional(), GC_COMPLETED_AGE_SECONDS: Env.schema.number.optional(), GC_FAILED_AGE_SECONDS: Env.schema.number.optional(), GC_BINARY_STALE_SECONDS: Env.schema.number.optional(), GC_BODY_QUEUE_MAX: Env.schema.number.optional(), GC_DEFERRED_RETENTION_DAYS: Env.schema.number.optional(), GC_SINGLE_ARTICLE_SECONDS: Env.schema.number.optional(), GC_EMPTY_RELEASE_SECONDS: Env.schema.number.optional(), GC_DELETE_BUDGET_MS: Env.schema.number.optional(), })