UNPKG

vue-inversify-decorator

Version:

PoC of combining vue-class-component and Inversify together

43 lines (40 loc) 1.37 kB
/*! * vue-inversify-decorator v0.1.0 * https://github.com/ktsn/vue-inversify-decorator * * @license * Copyright (c) 2017 katashin * Released under the MIT license * https://github.com/ktsn/vue-inversify-decorator/blob/master/LICENSE */ import { createDecorator } from 'vue-class-component'; var containerKey = '__inversify_container__'; var Provide = function (container) { return createDecorator(function (options) { options.mixins = options.mixins || []; options.mixins.push({ provide: (_a = {}, _a[containerKey] = container, _a) }); var _a; }); }; var Inject = function (identifier) { return function (proto, key) { var Type; if (typeof Reflect !== 'undefined' && typeof Reflect.getMetadata === 'function') { Type = Reflect.getMetadata('design:type', proto, key); } return createDecorator(function (options, key) { if (!options.__container_injected__) { options.mixins = options.mixins || []; options.mixins.push({ inject: [containerKey] }); options.__container_injected__ = true; } options.computed = options.computed || {}; options.computed[key] = function () { return this[containerKey].get(identifier || Type); }; })(proto, key); }; }; export { Provide, Inject };