@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'
36 lines • 1.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.envSchema = void 0;
const zod_1 = require("zod");
exports.envSchema = zod_1.z.object({
NODE_ENV: zod_1.z
.enum(['development', 'production', 'test', 'staging'])
.default('development'),
PORT: zod_1.z.string().transform(Number).default('3000'),
HOST: zod_1.z.string().default('0.0.0.0'),
API_TIMEOUT: zod_1.z.string().transform(Number).default('30000'),
MAX_CONCURRENT_REQUESTS: zod_1.z.string().transform(Number).default('5'),
SCRAPER_RETRIES: zod_1.z.string().transform(Number).default('3'),
SCRAPER_RETRY_DELAY: zod_1.z.string().transform(Number).default('1000'),
CORS_ORIGIN: zod_1.z.string().default('*'),
CORS_CREDENTIALS: zod_1.z
.string()
.transform(val => val === 'true')
.default('true'),
RATE_LIMIT_WINDOW_MS: zod_1.z.string().transform(Number).default('900000'),
RATE_LIMIT_MAX: zod_1.z.string().transform(Number).default('100'),
CONTENT_RATE_LIMIT_WINDOW_MS: zod_1.z.string().transform(Number).default('300000'),
CONTENT_RATE_LIMIT_MAX: zod_1.z.string().transform(Number).default('20'),
LOG_LEVEL: zod_1.z.string().default('info'),
LOG_PRETTY_PRINT: zod_1.z
.string()
.transform(val => val === 'true')
.default('true'),
METADATA_CACHE_TTL: zod_1.z.string().transform(Number).default('600'),
CONTENT_CACHE_TTL: zod_1.z.string().transform(Number).default('3600'),
SYOSETU_API_BASE_URL: zod_1.z
.string()
.default('https://api.syosetu.com/novelapi/api/'),
SYOSETU_NCODE_BASE_URL: zod_1.z.string().default('https://ncode.syosetu.com'),
});
//# sourceMappingURL=env.schema.js.map