2.0.1 • Published 1 year ago

@joist/styled v2.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year 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

2 years ago

2.0.0

2 years ago

2.0.0-beta.11

2 years ago

2.0.0-beta.13

2 years ago

2.0.0-beta.12

2 years ago

2.0.0-alpha.20

2 years ago

2.0.0-alpha.11

2 years ago

2.0.0-alpha.19

2 years ago

2.0.0-alpha.18

2 years ago

2.0.0-alpha.17

2 years ago

2.0.0-alpha.16

2 years ago

2.0.0-alpha.15

2 years ago

2.0.0-alpha.14

2 years ago

2.0.0-alpha.13

2 years ago

2.0.0-alpha.12

2 years ago

2.0.0-y.0

2 years ago

2.0.0-beta.4

2 years ago

2.0.0-beta.2

2 years ago

2.0.0-beta.1

2 years ago

2.0.0-beta.3

2 years ago

2.0.0-beta.0

2 years ago

2.0.0-alpha.5

2 years ago

2.0.0-alpha.4

2 years ago

2.0.0-alpha.3

2 years ago

2.0.0-alpha.2

2 years ago

2.0.0-alpha.1

2 years ago

2.0.0-alpha.0

2 years ago

2.0.0-next.10

2 years ago

2.0.0-canary.0

2 years ago

2.0.0-next.9

2 years ago

2.0.0-next.8

2 years ago

2.0.0-next.7

2 years ago

2.0.0-next.6

2 years ago

2.0.0-next.5

2 years ago

2.0.0-next.4

2 years ago

2.0.0-next.3

2 years ago