1.6.4 • Published 5 months ago

inject.min v1.6.4

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

inject.min

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

1.2.0

7 months ago

1.1.0

7 months ago

1.6.4

5 months ago

1.6.3

5 months ago

1.6.2

5 months ago

1.6.1

5 months ago

1.6.0

5 months ago

1.5.0

5 months ago

1.4.0

5 months ago

1.3.1

7 months ago

1.3.0

7 months ago

1.0.11

9 months ago

1.0.10

9 months ago

1.0.9

9 months ago

1.0.8

9 months ago

1.0.7

9 months ago

1.0.6

9 months ago

1.0.5

9 months ago

1.0.4

9 months ago

1.0.3

9 months ago

1.0.2

9 months ago

1.0.1

9 months ago

1.0.0

9 months ago