2.3.8 • Published 3 years ago

@cheeket/injector v2.3.8

Weekly downloads
29
License
MIT
Repository
-
Last release
3 years ago

Cheeket Injector

npm.io

a decorator-based injector plugin for cheeket

interface Weapon {
  hit(): string;
}

@injectable()
class Katana implements Weapon {
  hit(): string {
    return "cut!";
  }
}

interface ThrowableWeapon {
  throw(): string;
}

@injectable()
class Shuriken implements ThrowableWeapon {
  throw(): string {
    return "hit!";
  }
}

interface Warrior {
  fight(): string;
  sneak(): string;
}

@injectable()
class Ninja implements Warrior {
  public constructor(
    @inject(Types.Weapon) private katana: Weapon,
    @inject(Types.ThrowableWeapon) private shuriken: ThrowableWeapon
  ) {}

  fight(): string {
    return this.katana.hit();
  }

  sneak(): string {
    return this.shuriken.throw();
  }
}

const container = new Container();

container.bind(Types.Weapon, autoInjected(Katana));
container.bind(Types.ThrowableWeapon, autoInjected(Shuriken));
container.bind(Types.Warrior, autoInjected(Ninja));

const warrior = await container.resolve<Warrior>(Types.Warrior);
const throwableWeapon = await container.resolve<ThrowableWeapon>(
  Types.ThrowableWeapon
);
const weapon = await container.resolve<Weapon>(Types.Weapon);

expect(warrior.fight()).toEqual(weapon.hit());
expect(warrior.sneak()).toEqual(throwableWeapon.throw());
2.3.8

3 years ago

2.3.7

3 years ago

2.3.6

3 years ago

2.3.5

3 years ago

2.3.4

3 years ago

2.2.1

3 years ago

2.3.3

3 years ago

2.2.0

3 years ago

2.1.0

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago