@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
JavaScript
"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