@pulzar/core
Version:
Next-generation Node.js framework for ultra-fast web applications with zero-reflection DI, GraphQL, WebSockets, events, and edge runtime support
111 lines • 2.86 kB
JavaScript
import { z } from "zod";
// Configuration schema
const ConfigSchema = z.object({
app: z.object({
name: z.string(),
version: z.string(),
port: z.number().min(1).max(65535),
host: z.string(),
env: z.enum(["development", "production", "test"]),
}),
cors: z.object({
enabled: z.boolean(),
origin: z.string(),
credentials: z.boolean(),
}),
compression: z.object({
enabled: z.boolean(),
level: z.number().min(0).max(9),
}),
security: z.object({
helmet: z.object({
enabled: z.boolean(),
}),
rateLimit: z.object({
enabled: z.boolean(),
windowMs: z.number(),
max: z.number(),
}),
}),
logging: z.object({
level: z.enum(["error", "warn", "info", "debug"]),
format: z.enum(["json", "text"]),
}),
database: z.object({
url: z.string().optional(),
}),
redis: z.object({
url: z.string().optional(),
}),
jwt: z.object({
secret: z.string(),
expiresIn: z.string(),
}),
openapi: z.object({
enabled: z.boolean(),
path: z.string(),
title: z.string(),
version: z.string(),
}),
tracing: z.object({
enabled: z.boolean(),
serviceName: z.string(),
}),
});
export function defineConfig(config) {
return ConfigSchema.parse(config);
}
export function loadConfig() {
// In a real implementation, this would load from file or environment
const defaultConfig = {
app: {
name: "pulzar-app",
version: "1.0.0",
port: process.env.PORT ? parseInt(process.env.PORT) : 3000,
host: process.env.HOST || "localhost",
env: process.env.NODE_ENV ||
"development",
},
cors: {
enabled: true,
origin: "*",
credentials: true,
},
compression: {
enabled: true,
level: 6,
},
security: {
helmet: {
enabled: true,
},
rateLimit: {
enabled: true,
windowMs: 15 * 60 * 1000,
max: 100,
},
},
logging: {
level: "info",
format: "json",
},
database: {},
redis: {},
jwt: {
secret: "your-secret-key",
expiresIn: "24h",
},
openapi: {
enabled: process.env.NODE_ENV !== "production",
path: "/docs",
title: "Pulzar API",
version: "1.0.0",
},
tracing: {
enabled: false,
serviceName: "pulzar-app",
},
};
return defaultConfig;
}
//# sourceMappingURL=loader.js.map