Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

inversify-token

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

inversify-token

Token-based injection for InversifyJS

  • 6.0.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1.6K
decreased by-0.87%
Maintainers
1
Weekly downloads
 
Created
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

Package last updated on 26 Dec 2021

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc