UNPKG

@chix/flow

Version:
84 lines 3.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var forOf = require("object-forof"); var packet_1 = require("./packet"); var reserved = ['isPacket', 'get', 'read', 'write', 'create', 'clone']; var PacketContainer = (function () { function PacketContainer(params) { var _this = this; if (params === void 0) { params = {}; } this._meta = {}; this.params = params; forOf(function (name, packet) { if (!packet_1.Packet.isPacket(packet)) { throw Error("Packet expected got " + typeof packet + " for param " + name); } if (reserved.indexOf(name) === -1) { Object.defineProperty(_this, name, { enumerable: true, get: function () { return packet.read(packet.owner); }, set: function (val) { packet.write(packet.owner, val); }, }); packet_1.Packet.metaMerge(_this._meta, packet._meta); } else { throw Error("Parameter name '" + name + "' not allowed"); } }, this.params); forOf(function (_name, p) { Object.assign(p._meta, _this._meta); }, this.params); } PacketContainer.create = function (params) { return new PacketContainer(params); }; PacketContainer.prototype.isPacket = function (packet) { return packet_1.Packet.isPacket(packet); }; PacketContainer.prototype.get = function (name) { return this.params[name]; }; PacketContainer.prototype.clone = function (name, value) { this.hasParamOrThrow(name); var packet = this.params[name]; var packetClone = packet.clone(packet.owner); if (packet === packetClone) { throw Error('Failed to clone packet.'); } if (value) { packetClone.write(packet.owner, value); } return packetClone; }; PacketContainer.prototype.read = function (name) { this.hasParamOrThrow(name); var packet = this.params[name]; return packet.read(packet.owner); }; PacketContainer.prototype.write = function (name, val) { this.hasParamOrThrow(name); var packet = this.params[name]; return packet.write(packet.owner, val); }; PacketContainer.prototype.hasParam = function (name) { return !!this.params[name]; }; PacketContainer.prototype.hasParamOrThrow = function (name) { if (this.hasParam(name)) { return true; } throw Error(name + " does not exist."); }; PacketContainer.prototype.create = function (value, type) { var p = packet_1.Packet.create(value, type); Object.assign(p._meta, this._meta); return p; }; return PacketContainer; }()); exports.PacketContainer = PacketContainer; //# sourceMappingURL=packetContainer.js.map