@httpc/kit
Version:
httpc toolbox for building function-based API with minimal code and end-to-end type safety
31 lines (30 loc) • 971 B
JavaScript
import { container as globalContainer } from "tsyringe";
import { CONTAINER_KEY } from "./keys";
/*
* Add extra functionality to tsyringe container
* - self registration, so it can resolve itself
*/
// self register
patchSelfRegister(globalContainer);
function patchSelfRegister(container) {
registerSelf(container);
// self register on child
patch(container, "createChildContainer", function (original) {
const value = original.call(this);
patchSelfRegister(value);
return value;
});
patch(container, "reset", function (original) {
original.call(this);
registerSelf(this);
});
function registerSelf(container) {
container.registerInstance(CONTAINER_KEY, container);
}
}
function patch(instance, method, body) {
const oldMethod = instance[method];
instance[method] = function () {
return body.apply(this, [oldMethod, ...arguments]);
};
}