API REFERENCE

defineModule

import { defineModule, type ModuleConfig } from '@rasenganjs/server';
function defineModule(config: ModuleConfig): ModuleConfig;

Typed pass-through helper — returns the same object you pass in, with type-checking. See Modules for usage.

ModuleConfig

interface ModuleConfig { name?: string; prefix?: string; middlewares?: Middleware[]; imports?: ModuleConfig[]; controllers?: (new (...args: any[]) => Controller)[]; providers?: (ProviderLike | ProviderDefinition)[]; exports?: any[]; global?: boolean; [extensionKey: string]: unknown; }
FieldDescription
nameDiagnostic only — used in DI error messages
prefixURL prefix applied to all of this module's routes
middlewaresModule-level middleware, applied after global, before controller/route-level
importsSub-modules to flatten into the route tree
controllersController classes registered within this module
providersDI providers — private to this module unless listed in exports
exportsTokens from providers that importing modules may resolve
globalMake this module's exports visible to every module, no import needed
[extensionKey]Open extension point for ecosystem plugins (gateways, queues, ...) — see Module Plugins

ModulePlugin

import type { ModulePlugin } from '@rasenganjs/server';
interface ModulePlugin { key: string; register( app: ServerApp, container: ContainerView, mod: ModuleConfig, value: unknown ): void; asProviders?(value: unknown): ProviderLike[]; }
MemberDescription
keyThe ModuleConfig field this plugin claims, e.g. 'gateways'
register(...)Called once per flattened module that declares a value at key
asProviders?(value)Extract real DI-provider tokens from value, merged into the module's providers before registration/visibility/eager resolution

Register with app.registerPlugin(plugin). See Module Plugins for a full worked example.

Provider
WebSocket