inject.min
TypeScript icon, indicating that this package has built-in type declarations

1.6.4 • Public • Published

inject.min

npm version build status

disclaimer

super easy and super small dependency injection - all that you need

  • no need to register
  • can override
  • can use inject
  • can use decorators

example without decorators

import { DIContainer } from 'inject.min';

class Original {
  name = 'original';
}

class Override extends Original {
  name = 'override';
}

class TestOverride {
  constructor() {
    DIContainer.bind(Original, Override);

    const Class = DIContainer.getClass(Original);
    const instance = DIContainer.get(Original);

    console.log(instance.name); // 'override'
    console.log(Class === Override); // true
  }
}

new TestOverride();

to use decorators (optional)

modify your tsconfig.json

{
  "compilerOptions": {
    "experimentalDecorators": true
  }
}

example using decorators

import { Inject } from 'inject.min';

class Example {
  value: string;

  constructor(props?: { param: string }) {
    this.value = props?.param || 'example';
  }
}

class Example2 extends Example {
  constructor(param: string) {
    super({ param });
  }
}

class Test {
  @Inject(Example) example: Example;
  @Inject(Example2, 'example2') example2: Example2;
  @Inject(Example, { param: 'example3' }) example3: Example;

  constructor() {
    console.log(this.example.value); // example
    console.log(this.example2.value); // example2
    console.log(this.example3.value); // example3
  }
}

class Test2 {
  @Inject(Example) example: Example;
  @Inject(Example2, 'different') example2: Example2;
  @Inject(Example, { param: 'example3' }) example3: Example;

  constructor() {
    console.log(this.example.value); // example
    console.log(this.example2.value); // different
    console.log(this.example3.value); // example3
  }
}

class Test3 extends Test {}

const test = new Test(); // example, example2, example3
const test2 = new Test2(); // example, different, example3
const test3 = new Test3(); // example, example2, example3

console.log(test.example === test2.example); // true
console.log(test.example2 === test2.example2); // false
console.log(test.example2 === test3.example2); // true

api

DIContainer Documentation

install

npm i inject.min --save

license

MIT

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
1.6.42latest

Version History

VersionDownloads (Last 7 Days)Published
1.6.42
1.6.31
1.6.20
1.6.10
1.6.00
1.5.00
1.4.00
1.3.10
1.3.00
1.2.00
1.1.00
1.0.110
1.0.100
1.0.91
1.0.80
1.0.70
1.0.60
1.0.51
1.0.40
1.0.31
1.0.20
1.0.10
1.0.00

Package Sidebar

Install

npm i inject.min

Weekly Downloads

6

Version

1.6.4

License

MIT

Unpacked Size

12.9 kB

Total Files

14

Last publish

Collaborators

  • pietal.dev