Function: createExtensionNamespace()
Makaio Framework / bus-core / createExtensionNamespace
Function: createExtensionNamespace()
Section titled “Function: createExtensionNamespace()”createExtensionNamespace<
N,Schemas,Ext>(extensionName,config):ExtensionNamespace<Trim<N>,SubjectRecordFromSchemaRecord<Schemas>,{ [KeyType in PropertyKey]: AllPropertiesOfUnion<FilterablePayload<SubjectRecordFromSchemaRecord<Schemas>[keyof Schemas & string]>>[KeyType] },Ext,Schemas>
Defined in: ../../../packages/bus-core/src/create-extension-namespace.ts:68
Creates an extension namespace with typed subject definitions.
Thin wrapper around MakaioBus.registerNamespace that:
- Automatically prepends ‘extension:’ to the domain name
- Provides extension point for extension-specific metadata via declaration merging
- Preserves type-safe filtering capabilities
Type Parameters
Section titled “Type Parameters”N extends string
Schemas
Section titled “Schemas”Schemas extends SchemaRecord
Ext extends ExtensionNamespaceExtensions = ExtensionNamespaceExtensions
Parameters
Section titled “Parameters”extensionName
Section titled “extensionName”N
Extension name (e.g., ‘terminal’ becomes ‘extension:terminal’)
config
Section titled “config”ExtensionNamespaceConfig<Schemas, Ext>
Namespace configuration with schemas and optional extensions
Returns
Section titled “Returns”ExtensionNamespace<Trim<N>, SubjectRecordFromSchemaRecord<Schemas>, { [KeyType in PropertyKey]: AllPropertiesOfUnion<FilterablePayload<SubjectRecordFromSchemaRecord<Schemas>[keyof Schemas & string]>>[KeyType] }, Ext, Schemas>
Extension namespace with typed subjects and extensions
Example
Section titled “Example”// Basic usage (bus-only)const TerminalExtension = createExtensionNamespace('terminal', { schemas: { spawn: { request: z.object({ cwd: z.string() }), response: z.object({ terminalId: z.string() }) }, output: z.object({ terminalId: z.string(), data: z.string() }), },});
// With custom extension (after importing extension package)const MyExtension = createExtensionNamespace('my-extension', { schemas: { ... }, extensions: { customMetadata: { version: '1.0.0' }, },});