liim
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

Liim

A tiny service container.

One of the goals is for liim to be as small and fast as possible. It is not supposed to include all possible features. If you need to enhance it with additional features, you can extend the instance and add the functionality on top.

Right now it is ~380B minifed and ~230B gzipped.

Usage

Registering Services

Create the service container:

import Liim from "liim";
 
let liim = new Liim();

A service can either be any value or a function which will create the dependency:

liim.set("hello", new MyService);
 
// create the service lazily
liim.set("ohai", (liim) => {
    return new ServiceWithDependencies(liim.get("a"), liim.get("b"));
});

Services with a service factory function will only be created when the service is fetched for the first time. Also they will only be created once, as the instance is reused.

Fetching Services

You can get services using the .get() method:

liim.get<Service>("service-name");

This method will throw if the service is missing. If the service is an optional requirement for your app, you should check on existence with

if (liim.has("service-name"))
{
    // service is defined
}

beforehand.

Package Sidebar

Install

npm i liim

Weekly Downloads

8

Version

1.0.2

License

BSD-3-Clause

Unpacked Size

4.5 kB

Total Files

7

Last publish

Collaborators

  • apfelbox
  • keichinger
  • jesko-plitt