UNPKG

playable

Version:

Video player based on HTML5Video

98 lines 3.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.asClass = exports.asFunction = exports.asValue = exports.makeFluidInterface = exports.PROPERTY_FOR_DEPENDENCIES = void 0; var tslib_1 = require("tslib"); var tslib_2 = require("tslib"); var NotAFunctionError_1 = (0, tslib_1.__importDefault)(require("./errors/NotAFunctionError")); var Lifetime_1 = (0, tslib_1.__importDefault)(require("./constants/Lifetime")); exports.PROPERTY_FOR_DEPENDENCIES = 'dependencies'; var makeFluidInterface = function (obj) { var setLifetime = function (value) { obj.lifetime = value; return obj; }; return { setLifetime: setLifetime, transient: function () { return setLifetime(Lifetime_1.default.TRANSIENT); }, scoped: function () { return setLifetime(Lifetime_1.default.SCOPED); }, singleton: function () { return setLifetime(Lifetime_1.default.SINGLETON); }, }; }; exports.makeFluidInterface = makeFluidInterface; var asValue = function (value) { var resolve = function () { return value; }; return { resolve: resolve, lifetime: Lifetime_1.default.TRANSIENT, }; }; exports.asValue = asValue; var asFunction = function (fn, options) { if (typeof fn !== 'function') { throw new NotAFunctionError_1.default('asFunction', 'function', typeof fn); } var defaults = { lifetime: Lifetime_1.default.TRANSIENT, }; options = (0, tslib_2.__assign)({}, defaults, options); var resolve = generateResolve(fn); var result = { resolve: resolve, lifetime: options.lifetime, }; result.resolve = resolve.bind(result); (0, tslib_2.__assign)(result, (0, exports.makeFluidInterface)(result)); return result; }; exports.asFunction = asFunction; var asClass = function (Type, options) { if (typeof Type !== 'function') { throw new NotAFunctionError_1.default('asClass', 'class', typeof Type); } var defaults = { lifetime: Lifetime_1.default.TRANSIENT, }; options = (0, tslib_2.__assign)({}, defaults, options); // A function to handle object construction for us, as to make the generateResolve more reusable var newClass = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return new (Type.bind.apply(Type, (0, tslib_1.__spreadArray)([void 0], args, false)))(); }; var resolve = generateResolve(newClass, Type); var result = { resolve: resolve, lifetime: options.lifetime, }; result.resolve = resolve.bind(result); (0, tslib_2.__assign)(result, (0, exports.makeFluidInterface)(result)); return result; }; exports.asClass = asClass; function generateResolve(fn, dependencyParseTarget) { // If the function used for dependency parsing is falsy, use the supplied function if (!dependencyParseTarget) { dependencyParseTarget = fn; } // Try to resolve the dependencies var dependencies = dependencyParseTarget[exports.PROPERTY_FOR_DEPENDENCIES] || []; // Use a regular function instead of an arrow function to facilitate binding to the registration. return function resolve(container) { if (dependencies.length > 0) { var wrappedModules = dependencies.reduce(function (wrapper, dependency) { wrapper[dependency] = container.resolve(dependency); return wrapper; }, {}); return fn(wrappedModules, container); } return fn(container); }; } exports.default = { asValue: exports.asValue, asFunction: exports.asFunction, asClass: exports.asClass, }; //# sourceMappingURL=registrations.js.map