UNPKG

@thefoxjob/js-meta

Version:

Stores meta data of various kinds about given target classes or methods

109 lines (85 loc) 2.76 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _InvalidTarget = require('./../Exceptions/InvalidTarget'); var _InvalidTarget2 = _interopRequireDefault(_InvalidTarget); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /** * Data symbol * * @type {Symbol} * * @private */ var _data = Symbol('meta-data'); /** * Target symbol * * @type {Symbol} * @private */ var _target = Symbol('meta-target'); /** * @class Meta Data * * @description Holds arbitrary data about or for a given target * * @author Alin Eugen Deac <aedart@gmail.com> */ var Data = function () { /** * @constructor * * @param {Function|Object} target * @param {Object} [data] Key value pairs * * @throws {InvalidTarget} */ function Data(target) { var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; _classCallCheck(this, Data); var type = typeof target === 'undefined' ? 'undefined' : _typeof(target); if (!(type === 'function' || type === 'object')) { throw new _InvalidTarget2.default(); } this[_target] = target; this.data = data; } /** * Get the target * * @returns {Function|Object} */ _createClass(Data, [{ key: 'target', get: function get() { return this[_target]; } /** * Set arbitrary data * * @param {Object} value Key value pairs */ }, { key: 'data', set: function set(value) { this[_data] = value; return this; } /** * Get arbitrary data * * @returns {Object} */ , get: function get() { return this[_data]; } }]); return Data; }(); exports.default = Data;