2.0.1 • Published 2 years ago

@joist/styled v2.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Di

Dependency Injection in ~800 bytes. Can be used with and without decorators.

Installation:

npm i @joist/di

Example:

import { Injector } from '@joist/di';

class FooService {
  sayHello() {
    return 'Hello From FooService';
  }
}

class BarService {
  static deps = [FooService];

  constructor(private foo: FooService) {}

  sayHello() {
    return 'Hello From BarService and ' + this.foo.sayHello();
  }
}

const app = new Injector();

app.get(BarService).sayHello(); // Hello from BarService and Hello from FooService
import { Injector } from '@joist/di';
import { inject } from '@joist/di/decorators';

class FooService {
  sayHello() {
    return 'Hello From FooService';
  }
}

class BarService {
  constructor(@inject(FooService) private foo: FooService) {}

  sayHello() {
    return 'Hello From BarService and ' + this.foo.sayHello();
  }
}

const app = new Injector();

app.get(BarService).sayHello(); // Hello from BarService and Hello from FooService

Override A Service:

import { Injector } from '@joist/di';
import { inject } from '@joist/di/decorators';

class FooService {
  sayHello() {
    return 'Hello From FooService';
  }
}

class BarService {
  constructor(@inject(FooService) private foo: FooService) {}

  sayHello() {
    return 'Hello From BarService and ' + this.foo.sayHello();
  }
}

// Override FooService with an alternate implementation
const app = new Injector({
  providers: [
    {
      provide: FooService,
      use: class extends FooService {
        sayHello() {
          return 'IT HAS BEEN OVERRIDEN'
        }
      }
    }
  ]
});

app.get(BarService).sayHello(); // Hello from BarService and IT HAS BEEN OVERRIDEN

Root Service

If you have nested injectors and you still want singleton instances mark your service as shown or decorate with @service()

class FooService {
  static providedInRoot = true;

  sayHello() {
    return 'Hello From FooService';
  }
}
import { service } from '@joist/di/decorators';

@service()
class FooService {
  sayHello() {
    return 'Hello From FooService';
  }
}
2.0.1

3 years ago

2.0.0

3 years ago

2.0.0-beta.11

3 years ago

2.0.0-beta.13

3 years ago

2.0.0-beta.12

3 years ago

2.0.0-alpha.20

3 years ago

2.0.0-alpha.11

3 years ago

2.0.0-alpha.19

3 years ago

2.0.0-alpha.18

3 years ago

2.0.0-alpha.17

3 years ago

2.0.0-alpha.16

3 years ago

2.0.0-alpha.15

3 years ago

2.0.0-alpha.14

3 years ago

2.0.0-alpha.13

3 years ago

2.0.0-alpha.12

3 years ago

2.0.0-y.0

3 years ago

2.0.0-beta.4

3 years ago

2.0.0-beta.2

3 years ago

2.0.0-beta.1

4 years ago

2.0.0-beta.3

3 years ago

2.0.0-beta.0

4 years ago

2.0.0-alpha.5

4 years ago

2.0.0-alpha.4

4 years ago

2.0.0-alpha.3

4 years ago

2.0.0-alpha.2

4 years ago

2.0.0-alpha.1

4 years ago

2.0.0-alpha.0

4 years ago

2.0.0-next.10

4 years ago

2.0.0-canary.0

4 years ago

2.0.0-next.9

4 years ago

2.0.0-next.8

4 years ago

2.0.0-next.7

4 years ago

2.0.0-next.6

4 years ago

2.0.0-next.5

4 years ago

2.0.0-next.4

4 years ago

2.0.0-next.3

4 years ago