Skip to main content
API Reference / modelence / server / Module Defined in: packages/modelence/src/app/module.ts:43 The Module class is a core building block of a Modelence application that encapsulates related functionality. Modules can contain stores, queries, mutations, routes, cron jobs and configurations.

Example

const todoModule = new Module('todo', {
  stores: [dbTodos],
  queries: {
    async getAll() {
      // Fetch and return all Todo items
    }
  },
  mutations: {
    async create({ title }, { user }) {
      // Create a new Todo item
    }
  }
});

Type Parameters

Type ParameterDefault type
TName extends stringstring
TSchema extends Record<string, ConfigParams>ConfigSchema
TQueries extends QueriesQueries
TMutations extends MutationsMutations

Constructors

Constructor

new Module<TName, TSchema, TQueries, TMutations>(name, options): Module<TName, TSchema, TQueries, TMutations>
Defined in: packages/modelence/src/app/module.ts:85 Creates a new Module instance

Parameters

ParameterTypeDescription
nameTNameThe unique name of the module. This name is used to namespace queries, mutations, cron jobs and configuration values with a prefix (e.g. “todo.create”)
options{ channels?: ServerChannel<unknown>[]; configSchema?: TSchema; cronJobs?: Record<string, CronJobInputParams>; mutations?: TMutations; queries?: TQueries; rateLimits?: RateLimitRule[]; routes?: RouteDefinition[]; stores?: Store<any, any>[]; }Module configuration options
options.channels?ServerChannel<unknown>[]-
options.configSchema?TSchema-
options.cronJobs?Record<string, CronJobInputParams>-
options.mutations?TMutations-
options.queries?TQueries-
options.rateLimits?RateLimitRule[]-
options.routes?RouteDefinition[]-
options.stores?Store<any, any>[]-

Returns

Module<TName, TSchema, TQueries, TMutations>

Methods

getConfig()

getConfig<K>(key): ValueType<TSchema[K]["type"]>
Defined in: packages/modelence/src/app/module.ts:139 Retrieves a typed configuration value for this module. The return type is inferred from the schema — no casts needed.

Example

const myModule = new Module('payments', {
  configSchema: {
    apiKey:     { type: 'secret', default: '', isPublic: false },
    maxRetries: { type: 'number', default: 3,  isPublic: false },
  },
  mutations: {
    async charge({ amount }) {
      const apiKey     = myModule.getConfig('apiKey');     // string
      const maxRetries = myModule.getConfig('maxRetries'); // number
    },
  },
});

Type Parameters

Type Parameter
K extends string

Parameters

ParameterType
keyK

Returns

ValueType<TSchema[K]["type"]>