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

194 lines 15.4 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 if (value instanceof Set) { result[key] = Array.from(value); } else { result[key] = value.toJSON(); } } return result; } static fromJSON(json, keyType, fromJSON) { // eslint-disable-next-line @typescript-eslint/no-explicit-any 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxNYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWwvTW9kZWxNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBRXZDLHlEQUFxRDtBQVdyRCxJQUFLLGlCQUlKO0FBSkQsV0FBSyxpQkFBaUI7SUFDckIsNkRBQVUsQ0FBQTtJQUNWLDZEQUFVLENBQUE7SUFDViw2REFBVSxDQUFBO0FBQ1gsQ0FBQyxFQUpJLGlCQUFpQixLQUFqQixpQkFBaUIsUUFJckI7QUFFRCxNQUFhLFFBR1gsU0FBUSxxQkFBUztJQUlsQixZQUFZLE9BQTRCO1FBQ3ZDLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBZ0IsQ0FBQTtRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQTtJQUN4QixDQUFDO0lBRUQsTUFBTTtRQUNMLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxTQUFTLENBQUE7UUFDakIsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUErQixFQUFFLENBQUE7UUFDN0MsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN0QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUMvQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBVSxDQUFBO1lBQ3pCLENBQUM7aUJBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDdEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQVUsQ0FBQTtZQUN6QixDQUFDO2lCQUFNLElBQUksS0FBSyxZQUFZLEdBQUcsRUFBRSxDQUFDO2dCQUNqQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQWlCLENBQUE7WUFDaEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FDVixLQUlBLENBQUMsTUFBTSxFQUFPLENBQUE7WUFDaEIsQ0FBQztRQUNGLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQTtJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUlkLElBQXFCLEVBQ3JCLE9BQTRCLEVBRTVCLFFBR3NCO1FBRXRCLDhEQUE4RDtRQUM5RCxJQUFJLElBQVMsQ0FBQTtRQUNiLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDeEIsQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ1osQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksUUFBUSxDQUFlLE9BQU8sQ0FBQyxDQUFBO1FBRWxELEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBcUIsRUFBRSxDQUFDO1lBQ3JFLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM1RCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFlLENBQUMsQ0FBQTtZQUN6QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ1AsSUFBSSxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDcEQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBVyxDQUFDLENBQUE7Z0JBQ25ELENBQUM7WUFDRixDQUFDO1FBQ0YsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFBO0lBQ2QsQ0FBQztJQUVELFFBQVE7UUFDUCxNQUFNLE9BQU8sR0FBRyxDQUFDLDJCQUFZLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUMzRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RDLFFBQVEsT0FBTyxHQUFXLEVBQUUsQ0FBQztnQkFDNUIsS0FBSyxRQUFRO29CQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkJBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFhLENBQUMsQ0FBQyxDQUFBO29CQUMxRCxNQUFLO2dCQUNOLEtBQUssUUFBUTtvQkFDWixPQUFPLENBQUMsSUFBSSxDQUFDLDJCQUFZLENBQUMsWUFBWSxDQUFDLEdBQWEsQ0FBQyxDQUFDLENBQUE7b0JBQ3RELE1BQUs7Z0JBQ047b0JBQ0MsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFBO1lBQzlELENBQUM7WUFDRCxRQUFRLE9BQU8sS0FBZSxFQUFFLENBQUM7Z0JBQ2hDLEtBQUssUUFBUTtvQkFDWixPQUFPLENBQUMsSUFBSSxDQUNYLDJCQUFZLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUNwRCwyQkFBWSxDQUFDLGdCQUFnQixDQUFDLEtBQWUsQ0FBQyxDQUM5QyxDQUFBO29CQUNELE1BQUs7Z0JBQ04sS0FBSyxRQUFRO29CQUNaLE9BQU8sQ0FBQyxJQUFJLENBQ1gsMkJBQVksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQ3BELDJCQUFZLENBQUMsWUFBWSxDQUFDLEtBQWUsQ0FBQyxDQUMxQyxDQUFBO29CQUNELE1BQUs7Z0JBQ047b0JBQ0MsT0FBTyxDQUFDLElBQUksQ0FDWCwyQkFBWSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFDbkQsS0FBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FDL0IsQ0FBQTtZQUNILENBQUM7UUFDRixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBSXZCLE1BQWMsRUFDZCxPQUE0QixFQUM1QixpQkFNc0I7UUFFdEIsSUFBSSxlQUFlLEdBQUcsTUFBTSxDQUFBO1FBQzVCLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxHQUM3RCwyQkFBWSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNwQyxlQUFlLEdBQUcsbUJBQW1CLENBQUE7UUFFckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxRQUFRLENBQWUsT0FBTyxDQUFDLENBQUE7UUFFbEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQy9CLElBQUksR0FBRyxHQUFHLFNBQVMsQ0FBQTtZQUNuQixRQUFRLE9BQU8sRUFBRSxDQUFDO2dCQUNqQixLQUFLLFFBQVE7b0JBQ1osQ0FBQzt3QkFDQSxNQUFNLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxHQUN0RCwyQkFBWSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFBO3dCQUNqRCxHQUFHLEdBQUcsUUFBUSxDQUFBO3dCQUNkLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQTtvQkFDckMsQ0FBQztvQkFDRCxNQUFLO2dCQUNOLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztvQkFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxHQUN0RCwyQkFBWSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQTtvQkFDN0MsR0FBRyxHQUFHLFFBQVEsQ0FBQTtvQkFDZCxlQUFlLEdBQUcsa0JBQWtCLENBQUE7Z0JBQ3JDLENBQUM7WUFDRixDQUFDO1lBQ0QsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLEdBQ2pFLDJCQUFZLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1lBQzlDLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQTtZQUNwQyxRQUFRLFNBQVMsRUFBRSxDQUFDO2dCQUNuQixLQUFLLGlCQUFpQixDQUFDLE1BQU07b0JBQzVCLENBQUM7d0JBQ0EsSUFDQyxpQkFBaUIsS0FBSyxRQUFROzRCQUM5QixpQkFBaUIsS0FBSyxRQUFRLEVBQzdCLENBQUM7NEJBQ0YsTUFBTSxJQUFJLEtBQUssQ0FDZCxzRUFBc0UsQ0FDdEUsQ0FBQTt3QkFDRixDQUFDO3dCQUNELE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxHQUM3RCxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQTt3QkFDbkMsZUFBZSxHQUFHLGtCQUFrQixDQUFBO3dCQUNwQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFlLENBQUMsQ0FBQTtvQkFDekMsQ0FBQztvQkFDRCxNQUFLO2dCQUNOLEtBQUssaUJBQWlCLENBQUMsTUFBTTtvQkFDNUIsQ0FBQzt3QkFDQSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsR0FDN0QsMkJBQVksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQTt3QkFDakQsZUFBZSxHQUFHLGtCQUFrQixDQUFBO3dCQUNwQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQVcsRUFBRSxLQUFlLENBQUMsQ0FBQTtvQkFDekMsQ0FBQztvQkFDRCxNQUFLO2dCQUNOLEtBQUssaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDL0IsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLEdBQzdELDJCQUFZLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFBO29CQUM3QyxlQUFlLEdBQUcsa0JBQWtCLENBQUE7b0JBQ3BDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQWUsQ0FBQyxDQUFBO2dCQUN6QyxDQUFDO1lBQ0YsQ0FBQztRQUNGLENBQUM7UUFDRCxPQUFPO1lBQ04sUUFBUSxFQUFFLE1BQU07WUFDaEIsZUFBZTtTQUNmLENBQUE7SUFDRixDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDdkIsT0FBTyxVQUFVLENBQUE7SUFDbEIsQ0FBQztJQUVELENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDM0IsQ0FBQztJQUVELEtBQUs7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2xCLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBUztRQUNmLElBQUksT0FBTyxHQUFHLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQTtRQUM1RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQVMsRUFBRSxLQUFhO1FBQzNCLElBQUksT0FBTyxHQUFHLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQTtRQUN6RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3pCLE9BQU8sSUFBSSxDQUFBO0lBQ1osQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFTO1FBQ1osSUFBSSxPQUFPLEdBQUcsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFBO1FBQ3pELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzFCLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBUztRQUNaLElBQUksT0FBTyxHQUFHLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQTtRQUN6RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMxQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQTtJQUN0QixDQUFDO0lBRUQsT0FBTztRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUMzQixDQUFDO0lBRUQsSUFBSTtRQUNILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUN4QixDQUFDO0lBRUQsTUFBTTtRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBRUQsT0FBTyxDQUNOLFVBQXNFO0lBQ3RFLDhEQUE4RDtJQUM5RCxPQUFhO1FBRWIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7Q0FDRDtBQTdQRCw0QkE2UEMifQ==