Skip to content

API Reference

Complete API documentation for the Diblob Visualizer components.

DiblobVisualizer

The main visualizer component for local containers.

Props

PropTypeDefaultRequiredDescription
containerContainer-The diblob container to visualize
autoRefreshbooleanfalseEnable automatic graph refresh
refreshIntervalnumber1000Refresh interval in milliseconds (when autoRefresh is true)

Usage

svelte
<script lang="ts">
  import { DiblobVisualizer } from '@speajus/diblob-visualizer';
  import { createContainer } from '@speajus/diblob';

  const container = createContainer();
</script>

<DiblobVisualizer 
  {container} 
  autoRefresh={true} 
  refreshInterval={2000} 
/>

RemoteDiblobVisualizer

Visualizer component for remote containers.

Props

PropTypeDefaultRequiredDescription
urlstring-Server URL (e.g., 'http://localhost:3001/events')
mode'sse' | 'polling''sse'Connection mode
pollingIntervalnumber2000Polling interval in milliseconds (when mode is 'polling')

Usage

svelte
<script lang="ts">
  import { RemoteDiblobVisualizer } from '@speajus/diblob-visualizer';
</script>

<RemoteDiblobVisualizer 
  url="http://localhost:3001/events" 
  mode="sse" 
/>

createVisualizerServer

Creates a visualization server for remote access.

Parameters

ParameterTypeRequiredDescription
containerContainerThe container to expose
optionsServerOptionsServer configuration options

ServerOptions

OptionTypeDefaultDescription
portnumber3001Server port
hoststring'localhost'Server host
corsbooleantrueEnable CORS
updateIntervalnumber1000Update interval in milliseconds

Returns

Returns a server object with the following methods:

MethodReturnsDescription
start()Promise<void>Start the server
stop()Promise<void>Stop the server

Usage

typescript
import { createVisualizerServer } from '@speajus/diblob-visualizer/dist/server';
import { createContainer } from '@speajus/diblob';

const container = createContainer();

const server = createVisualizerServer(container, {
  port: 3001,
  host: 'localhost',
  cors: true,
  updateInterval: 1000
});

await server.start();

// Later...
await server.stop();

Types

BlobNode

Represents a node in the dependency graph.

typescript
interface BlobNode {
  id: string;
  blobId: symbol;
  label: string;
  lifecycle: 'singleton' | 'transient';
  isRegistered: boolean;
  factoryName?: string;
  metadata?: BlobMetadata;
  dependencies: symbol[];
}

BlobMetadata

Metadata attached to blobs.

typescript
interface BlobMetadata {
  name?: string;
  description?: string;
  [key: string]: any;
}

GraphData

The complete graph data structure.

typescript
interface GraphData {
  nodes: BlobNode[];
  edges: {
    id: string;
    source: string;
    target: string;
    label: string;
  }[];
}

GraphStats

Statistics about the dependency graph.

typescript
interface GraphStats {
  totalNodes: number;
  totalEdges: number;
  singletons: number;
  transients: number;
  unregistered: number;
  maxDepth: number;
}

Events

DiblobVisualizer Events

The component doesn't emit custom events, but you can listen to standard Svelte component lifecycle events.

RemoteDiblobVisualizer Events

The component doesn't emit custom events, but connection status is displayed in the UI.

CSS Classes

You can style the visualizer using these CSS classes:

  • .visualizer - Main container
  • .graph-container - Graph viewport
  • .stats-panel - Statistics panel
  • .node - Graph nodes
  • .edge - Graph edges
  • .singleton-node - Singleton nodes
  • .transient-node - Transient nodes
  • .unregistered-node - Unregistered nodes

Example

svelte
<style>
  :global(.visualizer) {
    max-width: 1200px;
    margin: 0 auto;
  }
  
  :global(.graph-container) {
    height: 800px;
  }
</style>

Released under the MIT License.