UNPKG

njct

Version:
37 lines (34 loc) 907 B
import isClass from 'node-is-class'; import { once } from '@zodash/once'; const dependencies = /* @__PURE__ */ new Map(); function provide(token, mock) { dependencies.set(token, mock); } function provideClass(token, ctor) { dependencies.set(token, once(() => new ctor())); } function clear() { dependencies.clear(); } function inject() { const { 0: token, 1: factory, length } = arguments; if (!dependencies.has(token)) { if (typeof factory === "function") { return factory(); } if (isClass(token)) { dependencies.set(token, once(() => new token())); } else if (length === 1) { throw new Error(`Cannot resolve ${token} dependency`); } else if (Object(factory) !== factory) { dependencies.set(token, () => factory); } } return dependencies.get(token)?.(); } const injector = { provideClass, provide, clear }; export { inject, injector };