UNPKG

@tomisakae/syosetu-api

Version:

Enterprise-grade Fastify TypeScript API for Syosetu.com data extraction using official API and web scraping. Run instantly with 'npx @tomisakae/syosetu-api'

65 lines 2.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.rateLimitConfig = exports.syosetuConfig = exports.scraperConfig = exports.cacheConfig = exports.appConfig = void 0; const env_schema_1 = require("./env.schema"); const env = env_schema_1.envSchema.parse(process.env); exports.appConfig = { port: env.PORT, host: env.HOST, nodeEnv: env.NODE_ENV, apiTimeout: env.API_TIMEOUT, maxConcurrentRequests: env.MAX_CONCURRENT_REQUESTS, cors: { origin: env.CORS_ORIGIN === '*' ? ['*'] : env.CORS_ORIGIN.split(','), credentials: env.CORS_CREDENTIALS, }, rateLimit: { windowMs: env.RATE_LIMIT_WINDOW_MS, max: env.RATE_LIMIT_MAX, message: 'Quá nhiều requests, vui lòng thử lại sau', }, logger: { level: env.LOG_LEVEL, prettyPrint: env.LOG_PRETTY_PRINT && env.NODE_ENV === 'development', }, }; exports.cacheConfig = { metadata: { ttl: env.METADATA_CACHE_TTL, }, content: { ttl: env.CONTENT_CACHE_TTL, }, }; exports.scraperConfig = { userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', timeout: env.API_TIMEOUT, retries: 3, retryDelay: 1000, }; exports.syosetuConfig = { apiBaseUrl: env.SYOSETU_API_BASE_URL, ncodeBaseUrl: env.SYOSETU_NCODE_BASE_URL, userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', requestTimeout: env.API_TIMEOUT, minRequestInterval: 1000, }; exports.rateLimitConfig = { api: { windowMs: env.RATE_LIMIT_WINDOW_MS, max: env.RATE_LIMIT_MAX, message: { success: false, error: 'Quá nhiều requests, vui lòng thử lại sau 15 phút', }, }, content: { windowMs: env.CONTENT_RATE_LIMIT_WINDOW_MS, max: env.CONTENT_RATE_LIMIT_MAX, message: { success: false, error: 'Quá nhiều requests lấy nội dung, vui lòng thử lại sau 5 phút', }, }, }; //# sourceMappingURL=app.config.js.map