Skip to main content
Version: 0.3.0

Extension Development

Learn how to create custom extensions for ageSchemaClient.

Extension Interface

interface Extension {
name: string;
version: string;
initialize(client: AgeSchemaClient): void;
destroy(): void;
}

Creating an Extension

class MyCustomExtension implements Extension {
name = 'my-custom-extension';
version = '1.0.0';

initialize(client: AgeSchemaClient) {
// Extension initialization logic
console.log('Extension initialized');
}

destroy() {
// Cleanup logic
console.log('Extension destroyed');
}
}

Registering Extensions

const client = new AgeSchemaClient(config);
client.use(new MyCustomExtension());

Built-in Extensions

  • Logging Extension - Query and performance logging
  • Metrics Extension - Performance metrics collection
  • Cache Extension - Query result caching
  • Validation Extension - Enhanced schema validation

Extension Hooks

Extensions can hook into various lifecycle events:

  • Query execution
  • Connection events
  • Error handling
  • Result processing

Best Practices

  1. Keep extensions focused - Single responsibility
  2. Handle errors gracefully - Don't break the client
  3. Clean up resources - Implement proper cleanup
  4. Document your extension - Clear usage instructions
  5. Test thoroughly - Unit and integration tests