defineModule() function
Home > @rimitive/core > defineModule
defineModule() function
Section titled “defineModule() function”Define a module - the fundamental building block of Rimitive composition.
Modules declare dependencies on other modules and provide a create function that receives resolved dependencies and returns the implementation.
Signature:
export declare function defineModule<TName extends string, TImpl, TDeps>(definition: ModuleDefinition<TName, TImpl, TDeps>): Module<TName, TImpl, TDeps>;Parameters
Section titled “Parameters”|
Parameter |
Type |
Description |
|---|---|---|
|
definition |
ModuleDefinition<TName, TImpl, TDeps> |
Returns:
Module<TName, TImpl, TDeps>
Example 1
Section titled “Example 1”Basic module (no dependencies)
const Logger = defineModule({ name: 'logger', create: () => ({ log: (msg: string) => console.log(msg), }),});Example 2
Section titled “Example 2”Module with dependencies
const UserService = defineModule({ name: 'userService', dependencies: [Database, Logger], create: ({ database, logger }) => ({ getUser: (id: string) => { logger.log(`Fetching user ${id}`); return database.query(`SELECT * FROM users WHERE id = ?`, [id]); }, }),});Example 3
Section titled “Example 3”Module with instrumentation
const Signal = defineModule({ name: 'signal', dependencies: [GraphEdges, Scheduler], create: ({ graphEdges, scheduler }) => (initialValue) => { // ... signal implementation }, instrument: (impl, instr) => (initialValue) => { const sig = impl(initialValue); instr.register(sig, 'signal'); return sig; },});