jsdoc/packages/jsdoc-core/lib/dependencies.js
Jeff Williams c0244402dd refactor(@jsdoc/core): don't export a default container for dependencies
We need to ensure that the container is passed into any code that needs it. If you're testing a template, and it lives in a different directory than JSDoc itself, relying on a shared default container won't work.
2021-09-26 10:25:09 -07:00

38 lines
802 B
JavaScript

const yaioc = require('yaioc');
/**
* Container for JSDoc classes, objects, and values that can be injected into other modules.
*
* @alias module:@jsdoc/core.deps
*/
class Dependencies {
constructor() {
// This class provides a lightweight facade for the `yaioc` package.
this._container = yaioc.container();
}
get(name) {
const dep = this._container.get(name);
if (dep === undefined) {
throw new Error(`No dependency registered for the name "${name}"`);
}
return dep;
}
registerClass(klass, opts = {}) {
if (opts.singleton) {
this._container.cache().register(klass);
} else {
this._container.register(klass);
}
}
registerValue(name, value) {
this._container.register(name, value);
}
}
module.exports = Dependencies;