"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IdentitySerializer = void 0; const interface_1 = require("./interface"); class IdentityMap extends interface_1.SerializeObject { constructor() { super(...arguments); Object.defineProperty(this, "value", { enumerable: true, configurable: true, writable: true, value: {} }); Object.defineProperty(this, "currentKey", { enumerable: true, configurable: true, writable: true, value: void 0 }); } serializeKey(key) { this.currentKey = key; } serializeValue(value) { this.value[this.currentKey] = value; } end() { return this.value; } } class IdentityIterable extends interface_1.SerializeIterable { constructor() { super(...arguments); Object.defineProperty(this, "value", { enumerable: true, configurable: true, writable: true, value: [] }); } serializeElement(value) { this.value.push(value); } end() { return this.value; } } class IdentitySerializer { serializeAny(value) { return value; } serializeBoolean(value) { return value; } serializeNumber(value) { return value; } serializeBigInt(value) { return value; } serializeString(value) { return value; } serializeSymbol(value) { return value; } serializeNull() { return null; } serializeIterable(_len) { return new IdentityIterable(); } serializeObject(_len) { return new IdentityMap(); } serializeClass(_name, _len) { return new IdentityMap(); } } exports.IdentitySerializer = IdentitySerializer;