@snap/camera-kit
Version:
Camera Kit Web
28 lines • 904 B
JavaScript
import { entries } from "../common/entries";
import { memoize } from "../common/memoize";
export class PartialContainer {
constructor(injectables) {
this.injectables = injectables;
}
provides(fn) {
return new PartialContainer(Object.assign(Object.assign({}, this.injectables), { [fn.token]: fn }));
}
getFactories(parent) {
return Object.fromEntries(entries(this.injectables).map(([token, fn]) => {
return [
token,
memoize((c) => {
return fn(...fn.dependencies.map((t) => {
return t === token
? parent.get(t)
: c.get(t);
}));
}),
];
}));
}
getTokens() {
return Object.keys(this.injectables);
}
}
//# sourceMappingURL=PartialContainer.js.map