Important Notice!
I have moved this package to live under the organization @codingworkbench (which is what the prefix cwb was for). You can find the new package at @codingworkbench/inject.
Once you install the new package, you can simply change your import statements from
;
to
;
cwb-inject
Lightweight dependency inject module for Typescript that has no dependencies.
Install
npm install cwb-inject --save
Basic Usage
// Application domain interfaces and implementations // Describe the module dependencies // Create a module for the application domain; // Bind the todoService property to the TodoService constructortodoModule.bind"todoService", TodoServiceImpl; // Request the todoService property and use as needed;
Factory Functions
// Bind a function to the todoService propertytodoModule.bindFactoryFunction"todoService", new TodoService;
Injecting Dependencies
TodoStore.ts
TodoService.ts
inject.ts
;;
main.ts
// Create a module for the application domain; // bind the store objecttodoModule.bind"todoStore", TodoStoreImpl; // Bind the todoService property to the TodoService constructortodoModule.bind"todoService", TodoServiceImpl, todoServiceInjectionProperties;// or// todoModule.bindFactoryFunction("todoService", async (args) => new TodoServiceImpl(args), todoServiceInjectionProperties); // Request the todoService property and use as needed;
API
class Module <MC>
An object provider that lazy constructs object as they are requested. Modules can be combined to create more complex models.
- MC: (Template) Interface type that has all the properties that can be required by the module to construct.
methods
-
getProperty( propertyKey ): this
propertyKey (keyof MC) : Request the value for the given property. -
bind( propertyKey, constructor [, injectionProperties ] ): this
propertyKey (keyof MC) : A key that had is part of the module type MC.
constructor (Constructor): Reference to a constructor that should be called when populating the property.
injectionProperties (InjectionKeys): The properties that should be injected into the constructor.
Bind a class constructor to a property. The constructor will be called when getProperty(propertyKey) is invoked. -
bindFactoryFunction( propertyKey, factoryFunction [, injectionProperties ] ): this
propertyKey (keyof MC): A key that had is part of the module type MC.
factoryFunction (function (args) : Promise<R>) : A function that returns a new object. If injectionProperties is set then the properties values will be passed to this function call.
injectionProperties (InjectionKeys): The properties that should be passed into the factoryFunction.
Bind a factory function to a property. The function will be called when getProperty(propertyKey) is invoked.
License
The ISC License
Copyright (c) 2020 Fredrique Samuels (https://codingworkbench.com)
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.