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