UNPKG

@oaklean/profiler-core

Version:

Part of the @oaklean suite. It provides all basic functions to work with the `.oak` file format. It allows parsing the `.oak` file format as well as tools for analyzing the measurement values. It also provides all necessary capabilities required for prec

190 lines 15.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModelMap = void 0; const BaseModel_1 = require("./BaseModel"); const BufferHelper_1 = require("../helper/BufferHelper"); var ModelMapValueType; (function (ModelMapValueType) { ModelMapValueType[ModelMapValueType["string"] = 0] = "string"; ModelMapValueType[ModelMapValueType["number"] = 1] = "number"; ModelMapValueType[ModelMapValueType["object"] = 2] = "object"; })(ModelMapValueType || (ModelMapValueType = {})); class ModelMap extends BaseModel_1.BaseModel { constructor(keyType) { super(); this._map = new Map(); this._keyType = keyType; } toJSON() { if (this._map.size === 0) { return undefined; } const result = {}; for (const [key, value] of this._map) { if (typeof value === 'string') { result[key] = value; } else if (typeof value === 'number') { result[key] = value; } else { result[key] = value.toJSON(); } } return result; } static fromJSON(json, // eslint-disable-line @typescript-eslint/no-unused-vars keyType, fromJSON) { let data; if (typeof json === 'string') { data = JSON.parse(json); } else { data = json; } const result = new ModelMap(keyType); for (const [key, value] of Object.entries(data)) { if (typeof value === 'string' || typeof value === 'number') { result.set(key, value); } else { if (fromJSON !== 'string' && fromJSON !== 'number') { result.set(key, fromJSON(value)); } } } return result; } toBuffer() { const buffers = [BufferHelper_1.BufferHelper.UIntToBuffer(this._map.size)]; for (const [key, value] of this._map) { switch (typeof key) { case 'string': buffers.push(BufferHelper_1.BufferHelper.String2LToBuffer(key)); break; case 'number': buffers.push(BufferHelper_1.BufferHelper.UIntToBuffer(key)); break; default: throw new Error('ModelMap.toBuffer: unexpected type of key'); } switch (typeof value) { case 'string': buffers.push(BufferHelper_1.BufferHelper.UInt8ToBuffer(ModelMapValueType.string), BufferHelper_1.BufferHelper.String2LToBuffer(value)); break; case 'number': buffers.push(BufferHelper_1.BufferHelper.UInt8ToBuffer(ModelMapValueType.number), BufferHelper_1.BufferHelper.UIntToBuffer(value)); break; default: buffers.push(BufferHelper_1.BufferHelper.UInt8ToBuffer(ModelMapValueType.object), value.toBuffer()); } } return Buffer.concat(buffers); } static consumeFromBuffer(buffer, keyType, consumeFromBuffer) { let remainingBuffer = buffer; const { instance: size, remainingBuffer: newRemainingBuffer1 } = BufferHelper_1.BufferHelper.UIntFromBuffer(buffer); remainingBuffer = newRemainingBuffer1; const result = new ModelMap(keyType); for (let i = 0; i < size; i++) { let key = undefined; switch (keyType) { case 'string': { const { instance, remainingBuffer: newRemainingBuffer } = BufferHelper_1.BufferHelper.String2LFromBuffer(remainingBuffer); key = instance; remainingBuffer = newRemainingBuffer; } break; case 'number': { const { instance, remainingBuffer: newRemainingBuffer } = BufferHelper_1.BufferHelper.UIntFromBuffer(remainingBuffer); key = instance; remainingBuffer = newRemainingBuffer; } } const { instance: valueType, remainingBuffer: newRemainingBuffer } = BufferHelper_1.BufferHelper.UInt8FromBuffer(remainingBuffer); remainingBuffer = newRemainingBuffer; switch (valueType) { case ModelMapValueType.object: { if (consumeFromBuffer === 'string' || consumeFromBuffer === 'number') { throw new Error('ModelMap.consumeFromBuffer: expected a consumeFromBuffer to be given'); } const { instance: value, remainingBuffer: newRemainingBuffer } = consumeFromBuffer(remainingBuffer); remainingBuffer = newRemainingBuffer; result.set(key, value); } break; case ModelMapValueType.string: { const { instance: value, remainingBuffer: newRemainingBuffer } = BufferHelper_1.BufferHelper.String2LFromBuffer(remainingBuffer); remainingBuffer = newRemainingBuffer; result.set(key, value); } break; case ModelMapValueType.number: { const { instance: value, remainingBuffer: newRemainingBuffer } = BufferHelper_1.BufferHelper.UIntFromBuffer(remainingBuffer); remainingBuffer = newRemainingBuffer; result.set(key, value); } } } return { instance: result, remainingBuffer }; } get [Symbol.toStringTag]() { return 'ModelMap'; } [Symbol.iterator]() { return this._map.entries(); } clear() { this._map.clear(); } delete(key) { if (typeof key !== this._keyType) { throw new Error('ModelMap.delete: Unexpected type for key'); } return this._map.delete(key); } set(key, value) { if (typeof key !== this._keyType) { throw new Error('ModelMap.set: Unexpected type for key'); } this._map.set(key, value); return this; } get(key) { if (typeof key !== this._keyType) { throw new Error('ModelMap.get: Unexpected type for key'); } return this._map.get(key); } has(key) { if (typeof key !== this._keyType) { throw new Error('ModelMap.has: Unexpected type for key'); } return this._map.has(key); } get size() { return this._map.size; } entries() { return this._map.entries(); } keys() { return this._map.keys(); } values() { return this._map.values(); } forEach(callbackfn, // eslint-disable-next-line @typescript-eslint/no-explicit-any thisArg) { this._map.forEach(callbackfn, thisArg); } } exports.ModelMap = ModelMap; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxNYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWwvTW9kZWxNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBRXZDLHlEQUFxRDtBQVFyRCxJQUFLLGlCQUlKO0FBSkQsV0FBSyxpQkFBaUI7SUFDckIsNkRBQVUsQ0FBQTtJQUNWLDZEQUFVLENBQUE7SUFDViw2REFBVSxDQUFBO0FBQ1gsQ0FBQyxFQUpJLGlCQUFpQixLQUFqQixpQkFBaUIsUUFJckI7QUFFRCxNQUFhLFFBQXFGLFNBQVEscUJBQVM7SUFJbEgsWUFBWSxPQUE0QjtRQUN2QyxLQUFLLEVBQUUsQ0FBQTtRQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQWdCLENBQUE7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7SUFDeEIsQ0FBQztJQUVELE1BQU07UUFDTCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sU0FBUyxDQUFBO1FBQ2pCLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBK0IsRUFBRSxDQUFBO1FBQzdDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQVUsQ0FBQTtZQUN6QixDQUFDO2lCQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFVLENBQUE7WUFDekIsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBSSxLQUFtQixDQUFDLE1BQU0sRUFBTyxDQUFBO1lBQ2pELENBQUM7UUFDRixD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