mirror of
https://github.com/jsdoc/jsdoc.git
synced 2025-12-08 19:46:11 +00:00
Currently unused. Intended to be used for JSDoc core dependencies that must be available everywhere, such as the config and the event bus.
43 lines
899 B
JavaScript
43 lines
899 B
JavaScript
const yaioc = require('yaioc');
|
|
|
|
let dependencies;
|
|
|
|
/**
|
|
* 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);
|
|
}
|
|
}
|
|
|
|
dependencies = new Dependencies();
|
|
dependencies.Dependencies = Dependencies;
|
|
|
|
module.exports = dependencies;
|