UNPKG

@swtc/serializer

Version:
46 lines 1.58 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const common_1 = require("@swtc/common"); const Utils_1 = require("../Utils"); const SerializedType_1 = __importDefault(require("./SerializedType")); const STObject = new SerializedType_1.default({ id: 14, serialize(so, val, no_marker) { let keys = []; Object.keys(val).forEach(key => { // Ignore lowercase field names - they're non-serializable fields by // convention. if (key[0] === key[0].toLowerCase()) { return; } if (typeof common_1.INVERSE_FIELDS_MAP[key] === "undefined") { throw new Error('JSON contains unknown field: "' + key + '"'); } keys.push(key); }); // Sort fields keys = (0, Utils_1.sort_fields)(keys); // tslint:disable-next-line for (let i = 0; i < keys.length; i++) { this.customSerialize(so, keys[i], val[keys[i]]); } if (!no_marker) { // Object ending marker this.STInt8.serialize(so, 0xe1); } }, parse(so) { const output = {}; while (so.peek(1)[0] !== 0xe1) { const keyval = this.customParse(so); output[keyval[0]] = keyval[1]; } so.read(1); return output; } }); exports.default = STObject; //# sourceMappingURL=STObject.js.map