hivehook 0.2.0 copy "hivehook: ^0.2.0" to clipboard
hivehook: ^0.2.0 copied to clipboard

A powerful plugin system for Hive that adds hooks, lifecycle management, and middleware capabilities with built-in TTL, LRU caching, validation, and custom transformations.

HiveHook #

Add validation, caching, encryption, and logging to Hive with zero boilerplate.

Quick Start #

import 'package:hivehook/hivehook.dart';

void main() async {
  // 1. Initialize
  final config = HHConfig(env: 'myapp');
  await HHiveCore.initialize();
  
  // 2. Use like normal Hive
  final hive = HHive(config: config.finalize());
  await hive.put('user', 'John');
  final user = await hive.get('user'); // 'John'
}

Common Use Cases #

Auto-Expiring Cache (TTL) #

final config = HHConfig(env: 'cache');
config.installPlugin(createTTLPlugin(defaultTTLSeconds: 3600)); // 1 hour
final hive = HHive(config: config.finalize());

await hive.put('session', data);              // Expires in 1 hour
await hive.put('token', jwt, meta: {'ttl': 300}); // Custom 5-min TTL

Size-Limited Cache (LRU) #

final config = HHConfig(env: 'cache');
config.installPlugin(createLRUPlugin(maxSize: 100));
final hive = HHive(config: config.finalize());

// Automatically evicts oldest items when cache exceeds 100 entries
await hive.put('item', value);

Validation #

final config = HHConfig(
  env: 'users',
  actionHooks: [
    HActionHook(
      latches: [HHLatch.pre(triggerType: TriggerType.valueWrite)],
      action: (ctx) async {
        if (ctx.payload.value == null) {
          throw ArgumentError('Value cannot be null');
        }
      },
    ),
  ],
);

Encryption #

final config = HHConfig(
  env: 'secure',
  serializationHooks: [
    SerializationHook(
      id: 'aes',
      serialize: (ctx) async => encrypt(ctx.payload.value),
      deserialize: (ctx) async => decrypt(ctx.payload.value),
    ),
  ],
);

Combine Multiple Plugins #

final config = HHConfig(env: 'cache');
config.installPlugin(createTTLPlugin(defaultTTLSeconds: 300));
config.installPlugin(createLRUPlugin(maxSize: 50));
final hive = HHive(config: config.finalize());

// Both TTL expiration AND LRU eviction active
await hive.put('data', value);

API Reference #

Core Methods #

await hive.put('key', value);           // Store value
await hive.get('key');                   // Retrieve value
await hive.delete('key');                // Delete key
await hive.pop('key');                   // Get + delete
await hive.clear();                      // Clear all

// With metadata
await hive.put('key', value, meta: {'ttl': 300});
await hive.getMeta('key');               // Get metadata only
await hive.setMeta('key', {'custom': 1}); // Update metadata

Hook Triggers #

Trigger When
valueWrite Before/after put()
valueRead Before/after get()
onDelete Before/after delete()
onPop Before/after pop()
onClear Before/after clear()

Web Debug Mode #

When HHiveCore.DEBUG_OBJ is enabled (auto-detected via kDebugMode), original objects are stored to window.hiveDebug for easy inspection in browser DevTools:

// In browser console:
window.hiveDebug                    // View all stored objects
window.hiveDebug['myEnv::myKey']    // View specific key
Object.keys(window.hiveDebug)       // List all keys

Note: Debug storage only works on web platform.

Installation #

dependencies:
  hivehook: ^0.2.0
  hive_ce: ^2.10.0

See hive_ce on pub.dev for Hive documentation.

License #

MIT

1
likes
140
points
407
downloads

Publisher

verified publisherpathverse.ca

Weekly Downloads

A powerful plugin system for Hive that adds hooks, lifecycle management, and middleware capabilities with built-in TTL, LRU caching, validation, and custom transformations.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

hive_ce

More

Packages that depend on hivehook