Dependency injection with promise support for Node.js.
npm install @asd14/pluginus
plugin-1.js
exports default {
/**
* Which plugins need loading before this one
*
* @type {string[]}
*/
depend: [],
/**
* Name other plugins can use to reference and use this plugin
*
* @type {string}
*/
name: "PluginOne",
/**
* Factory function, only runs once when ititialized. The value this function
* returns or resolves to will be passed to other plugins depending on it.
*
* @param {any} ...dependentPlugins
*
* @returns {* | Promise<*>}
*/
create: () => {
return new Promise(resolve => {
setTimeout(() => {
resolve({
foo: "bar",
})
}, 50)
})
},
}
plugin-2.js
export default {
depend: ["PluginOne"],
name: "Plugin2",
create: PluginOne => ({
lorem: `ipsum ${PluginOne.foo}`,
}),
}
index.js
import { pluginus } from "@asd14/pluginus"
pluginus({
source: ["path-to-plugin1", "path-to-plugin2"],
}).then(({ PluginOne, Plugin2 }) => {
// PluginOne
// => {
// foo: "bar",
// }
// Plugin2
// => {
// lorem: "ipsum bar",
// }
})
git clone [email protected]:asd-xiv/pluginus.git && \
cd pluginus && \
npm run setup
Run all *.test.js
in src
folder
npm test
Watch src
and examples
folder for changes and re-run tests
npm run tdd
See the releases section for details.