@httpc/kit
Version:
httpc toolbox for building function-based API with minimal code and end-to-end type safety
43 lines (42 loc) • 1.61 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.REGISTER_OPTIONS = exports.REGISTER_INSTANCE = exports.RESOLVE_MANY = exports.RESOLVE_ALL = exports.RESOLVE = exports.KEY = exports.CONTAINER_KEY = void 0;
const assert_1 = __importDefault(require("assert"));
const tsyringe_1 = require("tsyringe");
exports.CONTAINER_KEY = "$CONTAINER";
function KEY(serviceOrGroup, service) {
if (typeof service === "function") {
(0, assert_1.default)(service.name, "Invalid constructor " + service);
service = service.name;
}
if (service) {
serviceOrGroup = `${serviceOrGroup}:${service}`;
}
return serviceOrGroup;
}
exports.KEY = KEY;
function RESOLVE(container, service) {
return container.resolve(service);
}
exports.RESOLVE = RESOLVE;
function RESOLVE_ALL(container, service) {
return container.resolveAll(service);
}
exports.RESOLVE_ALL = RESOLVE_ALL;
function RESOLVE_MANY(container, ...types) {
return types.map(x => container.resolve(x));
}
exports.RESOLVE_MANY = RESOLVE_MANY;
function REGISTER_INSTANCE(token, value) {
tsyringe_1.container.register(token, {
useFactory: (0, tsyringe_1.instanceCachingFactory)(() => value)
});
}
exports.REGISTER_INSTANCE = REGISTER_INSTANCE;
function REGISTER_OPTIONS(service, options) {
REGISTER_INSTANCE(KEY("OPTIONS", service), options);
}
exports.REGISTER_OPTIONS = REGISTER_OPTIONS;