@swtc/serializer
Version:
swtc serializer
46 lines • 1.58 kB
JavaScript
;
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