HiHook
A high-level hook pipeline framework for Dart. Build extensible middleware chains with dependency resolution, conditions, and transactions.
Features
- Hook Pipeline — Pre/Main/Post phases with priority ordering
- Dependency Graph — Topological sort with cycle detection
- Conditions — Composable filters with
&,|,~operators - Transactions — Savepoints and automatic rollback
- Plugin System — Bundle hooks for reuse
Quick Start
final engine = HiEngine();
// Register a simple hook
engine.register(HiHook(
uid: 'logger',
events: ['read', 'write'],
handler: (payload, ctx) {
print('${ctx.event}: ${payload.key}');
return const HiContinue();
},
));
// Emit an event
await engine.emit('write', HiPayload(key: 'user:1', value: data));
Plugins
// Install pre-built plugins
Base64Plugin().install(engine); // Encode/decode values
TtlPlugin().install(engine); // Time-to-live expiration
LruPlugin().install(engine); // Access tracking
Transactions
await engine.transaction((tx) async {
await tx.emit('write', payload1, compensate: () => delete(key1));
await tx.emit('write', payload2, compensate: () => delete(key2));
// On failure: compensations run in reverse order
});
Libraries
- interfaces/hi_store
- interfaces/interfaces
- Extension interfaces for hihook.
- plugins/base64/base64
- Base64 encoding/decoding plugin for hihook.
- plugins/base64/base64_hook
- plugins/base64/base64_plugin
- plugins/lru/lru
- LRU (Least Recently Used) plugin for hihook.
- plugins/lru/lru_condition
- plugins/lru/lru_hook
- plugins/lru/lru_plugin
- plugins/plugins
- hihook plugins - reusable storage-agnostic hooks and conditions.
- plugins/ttl/ttl
- TTL (Time-To-Live) plugin for hihook.
- plugins/ttl/ttl_condition
- plugins/ttl/ttl_hook
- plugins/ttl/ttl_plugin