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