easydeps
v1.2.3
Published
Easy Dependency Injection in multiple flavors (inspired by AMD and reflection)
Maintainers
Readme
Easy Dependency Injection
Easy Dependency Injection in multiple flavors (inspired by AMD and reflection)
Usage
import in TypeScript
import ED from "easydeps";import in JavaScript
const ED = require("easydeps").default;get an instance
const ed = ED.getInstance("type"); // get a global instance so you can use dependencies in multiple modules
const ed = new ED(); // or instanciate a new instance within the current scoperegister dependencies
ed.register("stuff", "Coffee");
ed.register({
service: (stuff) => "This is some great " + stuff + "!",
logger: (msg) => console.log(msg),
});request dependencies
const [logger, service, stuff] = ed.request(["logger", "service", "stuff"]);
logger(service(stuff)); // "This is some great Pie!" // or whatever you want to do with the logger, the service and the stuffconst [loggerDep, stuffDep] = ed.requestRaw(["logger", "stuff"]); // the 'Raw' calls will return the Dependency containers
const logger = loggerDep.get(); // get the value from the Dependency container
stuffDep.onchange((newStuff, oldStuff) => { // attach an onchange event listener on the Dependency container. It will be invoked whenever the Dependency data changes
if (newStuff !== oldStuff) logger(newStuff); // execute the service when there is new data
});resolve / invoke (reflection)
const stuffed = ed.resolve((service, stuff) => {
return service(stuff);
});
console.log(stuffed()); // "This is some great Coffee!"
ed.register({stuff: "Pie");
console.log(stuffed()); // "This is some great Pie!"
console.log(ed.invoke((service, stuff) => { // "This is some great Pie!" // or directly excecute the function with the injected dependencies
return service(stuff));
}));resolve / invoke (AMD)
const stuffed = ed.resolveFrom(["service", "stuff"], (service, stuff, addition) => {
return service(addition + " " + stuff);
});
console.log(stuffed("chocolate")); // "This is some great chocolate Pie!" // with the AMD approach it is safe to use additional arguments
console.log(ed.invokeFrom(["service", "stuff"], ((service, stuff, addition) => { // "This is some great chocolate Pie!" // or directly excecute the function with the injected dependencies and additional arguments
return service(addition + " " + stuff);
}));