Socket
Socket
Sign inDemoInstall

inversify-token

Package Overview
Dependencies
1
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    inversify-token

Token-based injection for InversifyJS


Version published
Weekly downloads
1.1K
decreased by-6.88%
Maintainers
1
Install size
21.5 kB
Created
Weekly downloads
 

Readme

Source

inversify-token

npm CircleCI

Source: https://github.com/mscharley/inversify-token
Author: Matthew Scharley
Contributors: See contributors on GitHub
Bugs/Support: Github Issues
Copyright: 2021
License: MIT license
Status: Active

Synopsis

This library provides simpler, more type-safe options for injecting values using Inversify.

Installation

$ npm i inversify-token

Usage

Modified from the InversifyJS readme.

// Declare your interfaces as normal.

// file types.ts
import { Token, TokenType } from "inversify-token";
import { Warrior, Weapon, ThrowableWeapon } from "./interfaces";

const WarriorToken = new Token<Warrior>(Symbol.for("Warrior"));
type WarriorToken = TokenType<typeof WarriorToken>;
const WeaponToken = new Token<Weapon>(Symbol.for("Weapon"));
type WeaponToken = TokenType<typeof WeaponToken>;
const ThrowableWeaponToken = new Token<ThrowableWeapon>(
  Symbol.for("ThrowableWeapon")
);
type ThrowableWeaponToken = TokenType<typeof ThrowableWeaponToken>;

export {
  WarriorToken as Warrior,
  WeaponToken as Weapon,
  ThrowableWeaponToken as ThrowableWeapon,
};

// file entities.ts
import { injectable } from "inversify";
import { injectToken } from "inversify-token";
import * as TYPES from "./types";

@injectable()
class Ninja implements Warrior {
  public constructor(
    @injectToken(TYPES.Weapon) private _katana: TYPES.Weapon,
    @injectToken(TYPES.ThrowableWeapon) private _shuriken: TYPES.ThrowableWeapon
  ) {}

  public fight() {
    return this._katana.hit();
  }
  public sneak() {
    return this._shuriken.throw();
  }
}

// file inversify.config.ts
import { getToken, tokenBinder } from "inversify-token";

const myContainer = new Container();
const bindToken = tokenBinder(myContainer.bind.bind(myContainer));
bindToken(TYPES.Warrior).to(Ninja);
bindToken(TYPES.Weapon).to(Katana);
bindToken(TYPES.ThrowableWeapon).to(Shuriken);
const warrior = getToken(container, TYPES.Warrior);

// file inversify.module.ts
import { getToken, TokenContainerModule } from "inversify-token";

const myContainer = new Container();
const module = new TokenContainerModule((bindToken) => {
  bindToken(TYPES.Warrior).to(Ninja);
  bindToken(TYPES.Weapon).to(Katana);
  bindToken(TYPES.ThrowableWeapon).to(Shuriken);
});
myContainer.load(module);
const warrior = getToken(container, TYPES.Warrior);

FAQs

Last updated on 26 Dec 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc