jimple
    Preparing search index...

    Class default<TMap>

    The Jimple Container class with TypeScript support. A dependency injection container that manages services and parameters.

    interface MyServices extends ServiceMap {
    logger: Logger;
    userService: UserService;
    }

    const container = Jimple.create<MyServices>();
    container.set('logger', () => new ConsoleLogger());
    container.set('userService', (c) => new UserService(c.logger));

    const userService = container.userService; // Typed as UserService

    Type Parameters

    Index

    Constructors

    Methods

    • Extends a service already registered in the container. Allows decorating or modifying an existing service definition.

      Type Parameters

      • TKey extends string | number | symbol

        The service key type

      • TResult

        The extended service type

      Parameters

      Returns void

      When the service is not defined, not a function, protected, or already instantiated

      container.set('logger', () => new Logger());

      container.extend('logger', (logger, c) => {
      return new LoggerDecorator(logger, c.config);
      });
    • Defines a service as a factory that creates new instances on every access. Unlike regular services (which are singletons), factories always call the function.

      Type Parameters

      Parameters

      • fn: T

        The factory function to mark

      Returns T

      The same function (for chaining)

      When the value is not a function

      container.set('requestId', container.factory(() => Math.random().toString()));

      const id1 = container.get('requestId'); // Different value each time
      const id2 = container.get('requestId'); // Different value each time
    • Return the specified parameter or service with correct typing. Services defined as functions are instantiated when first accessed (singleton pattern). Services marked as factories are instantiated on every access. Services marked as protected are returned as-is without being called.

      Type Parameters

      • TKey extends string | number | symbol

        The service key type

      Parameters

      • key: TKey

        The service key to retrieve

      Returns ServiceType<TMap, TKey>

      The service instance or parameter value

      When the service is not defined

      const logger = container.get('logger');
      const apiUrl = container.get('apiUrl');
    • Returns if a service or parameter is defined in the container.

      Type Parameters

      • TKey extends string | number | symbol

        The service key type

      Parameters

      • key: TKey

        The service key to check

      Returns boolean

      True if the service is defined

      if (container.has('logger')) {
      const logger = container.get('logger');
      }
    • Return all the keys registered in the container.

      Returns (keyof TMap)[]

      Array of all service keys

      const keys = container.keys();
      console.log('Registered services:', keys);
    • Defines a function as a parameter (protected from being called as a service factory). The function will be returned as-is when accessed, not executed.

      Type Parameters

      • T extends (...args: any[]) => any

        The function type

      Parameters

      • fn: T

        The function to protect

      Returns T

      The same function (for chaining)

      When the value is not a function

      const callback = (data: any) => console.log(data);
      container.set('onComplete', container.protect(callback));

      const fn = container.get('onComplete'); // Returns the function itself
      fn('Hello'); // Can be called later
    • Uses a provider to extend the service container. Providers are objects with a register method that can add multiple services.

      Type Parameters

      • K extends string | number | symbol

        The subset of service keys the provider manages

      Parameters

      Returns void

      const databaseProvider = Jimple.provider<MyServices>((container) => {
      container.set('db', () => new Database(container.config));
      container.set('userRepo', (c) => new UserRepository(c.db));
      });

      container.register(databaseProvider);
    • Defines a new parameter or service. Functions are treated as service factories unless marked as protected.

      Type Parameters

      • TKey extends string | number | symbol

        The service key type

      Parameters

      Returns void

      When trying to redefine an already instantiated service

      // Parameter
      container.set('apiUrl', 'https://api.example.com');

      // Service factory
      container.set('logger', (c) => new Logger(c.apiUrl));

      // Service instance
      container.set('cache', new MemoryCache());
    • Unsets a parameter or service, removing it from the container. Also clears any cached instances and metadata for the service.

      Type Parameters

      • TKey extends string | number | symbol

        The service key type

      Parameters

      • key: TKey

        The service key to remove

      Returns void

      container.unset('logger');
      console.log(container.has('logger')); // false