@xxskyy/microbundle
v1.3.33
Published
Includes also helpers like ReCaptcha validator, env variables or pre-configured shield rules for trivial permission management. Works great with cloudflare.
Readme
Personal bundle to create GraphQL Microservices and Gateways in matter of minutes
Includes also helpers like ReCaptcha validator, env variables or pre-configured shield rules for trivial permission management. Works great with cloudflare.
Stack:
- Typescript
- Fastify
- Mercurius
- GraphQL Shield
- JWT Authentication
- MongoDB Client
- Rate Limiter
- Redis Client
- Fastify Cors
Features:
- Generated gateway config from YAML file
- ReCaptcha V2 & V3 validator
- Schema -> TS Types generation
- Automatic schema + resolvers merge
- Executable service sdl schema
- JWT Verification
- Switchable logger
- Queries/Mutations over Websocket
- Restricting Query/Mutation only over HTTP or Websocket
- Flexible rate limiting for HTTP and Websocket requests
- Custom types for maximum Typescript support
- Automatic headers rewrite with Cloudflare support
- Every setting ENV controlled
Default ENV settings
export const PRODUCTION = process.env.NODE_ENV === "production"
export const TEST = process.env.NODE_ENV === "test"
export const LOGGER = +process.env.LOGGER === 1
export const NAME = process.env.APP_NAME || null
export const PORT = +process.env.APP_PORT || 3000
export const HOST = process.env.APP_HOST || "localhost"
export const JWT_SECRET = process.env.JWT_SECRET
export const MONGO_HOST = process.env.MONGO_HOST || null
export const MONGO_DBNAME = process.env.MONGO_DBNAME || null
export const REDIS_HOST = process.env.REDIS_HOST || null
export const REDIS_PORT = process.env.REDIS_PORT || null
export const REDIS_PASSWORD = process.env.REDIS_PASSWORD || null
export const REDIS_DB = process.env.REDIS_DB || 1
export const RECAPTCHA_KEY_V2 = process.env.RECAPTCHA_KEY_V2 || null
export const RECAPTCHA_KEY_V3 = process.env.RECAPTCHA_KEY_V3 || null
export const CORS_ORIGIN = process.env.CORS_ORIGIN || "*"
export const RATE_LIMIT_MAX = +process.env.RATE_LIMIT_MAX || 200
export const RATE_LIMIT_TIME_WINDOW =
process.env.RATE_LIMIT_TIME_WINDOW || "1 minute"
export const DISABLE_CODEGEN = +process.env.DISABLE_CODEGEN === 1