@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
JavaScript
;
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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