Skip to content

DiblobDependency Injection Framework

A modern DI framework where the proxy (blob) is the key

Quick Start

Installation

bash
npm install @speajus/diblob

Basic Usage

typescript
import { createBlob, createContainer } from '@speajus/diblob';

// Define your service interface
interface Logger {
  log(message: string): void;
}

// Create a blob (proxy) for the service
const logger = createBlob<Logger>('logger', {
  name: 'Console Logger',
  description: 'Logs messages to the console'
});

// Create a container
const container = createContainer();

// Register the implementation
class ConsoleLogger implements Logger {
  log(message: string) {
    console.log(message);
  }
}

container.register(logger, ConsoleLogger);

// Use the service
logger.log('Hello, Diblob!');

Packages

@speajus/diblob

The core dependency injection framework.

@speajus/diblob-mcp

Model Context Protocol server for diblob containers.

@speajus/diblob-connect

Connect-based gRPC server implementation for diblob containers.

@speajus/diblob-visualizer

Interactive visualization tool for your dependency graphs.

@speajus/diblob-telemetry

OpenTelemetry instrumentation for diblob containers.

Features

Proxy-Based Keys

Unlike traditional DI frameworks that use strings or symbols, Diblob uses JavaScript Proxies as keys. This provides type safety and eliminates naming conflicts.

Reactive Dependencies

When you re-register a service, all dependent services are automatically invalidated and re-resolved on next access.

Async Support

Full support for async factories and dependencies:

typescript
container.register(database, async () => {
  await connectToDatabase();
  return new DatabaseService();
});

Constructor Injection

Automatically inject dependencies via constructor default parameters:

typescript
class UserService {
  constructor(
    private logger = logger,
    private database = database
  ) {}
}

Metadata

Attach rich metadata to blobs and containers:

typescript
const userService = createBlob<UserService>('userService', {
  name: 'User Service',
  description: 'Manages user data',
  version: '1.0.0',
  tags: ['business', 'core']
});

License

MIT

Released under the MIT License.