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

148 lines 11.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModelSet = exports.ModelSetValueTypeEnum = void 0; const BaseModel_1 = require("./BaseModel"); const helper_1 = require("../helper"); var ModelSetValueTypeEnum; (function (ModelSetValueTypeEnum) { ModelSetValueTypeEnum[ModelSetValueTypeEnum["string"] = 0] = "string"; ModelSetValueTypeEnum[ModelSetValueTypeEnum["number"] = 1] = "number"; ModelSetValueTypeEnum[ModelSetValueTypeEnum["object"] = 2] = "object"; })(ModelSetValueTypeEnum || (exports.ModelSetValueTypeEnum = ModelSetValueTypeEnum = {})); class ModelSet extends BaseModel_1.BaseModel { constructor() { super(); this._set = new Set(); } get size() { return this._set.size; } add(value) { this._set.add(value); } delete(value) { this._set.delete(value); } clear() { this._set.clear(); } has(value) { return this._set.has(value); } entries() { return this._set.values(); } get [Symbol.toStringTag]() { return 'ModelSet'; } [Symbol.iterator]() { return this._set.entries(); } forEach(callback, // eslint-disable-next-line @typescript-eslint/no-explicit-any thisArg) { this._set.forEach(callback, thisArg); } toJSON() { if (this._set.size === 0) { return undefined; } const result = []; for (const value of this._set) { if (typeof value === 'string' || typeof value === 'number') { result.push(value); } else { result.push(value.toJSON()); } } return result; } static fromJSON(json, 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 ModelSet(); for (const value of data) { if (typeof value === 'string' || typeof value === 'number') { result.add(value); } else { if (fromJSON !== 'string' && fromJSON !== 'number') { result.add(fromJSON(value)); } } } return result; } toBuffer() { const buffers = [helper_1.BufferHelper.UIntToBuffer(this._set.size)]; for (const value of this._set) { // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check switch (typeof value) { case 'string': buffers.push(helper_1.BufferHelper.UInt8ToBuffer(ModelSetValueTypeEnum.string)); buffers.push(helper_1.BufferHelper.String2LToBuffer(value)); break; case 'number': buffers.push(helper_1.BufferHelper.UInt8ToBuffer(ModelSetValueTypeEnum.number)); buffers.push(helper_1.BufferHelper.UIntToBuffer(value)); break; default: buffers.push(helper_1.BufferHelper.UInt8ToBuffer(ModelSetValueTypeEnum.object)); buffers.push(value.toBuffer()); } } return Buffer.concat(buffers); } static consumeFromBuffer(buffer, fromBuffer) { let remainingBuffer = buffer; const { instance: size, remainingBuffer: newRemainingBuffer1 } = helper_1.BufferHelper.UIntFromBuffer(buffer); const result = new ModelSet(); remainingBuffer = newRemainingBuffer1; for (let i = 0; i < size; i++) { // determine value type const { instance: valueType, remainingBuffer: newRemainingBuffer2 } = helper_1.BufferHelper.UInt8FromBuffer(remainingBuffer); remainingBuffer = newRemainingBuffer2; // decode value based on type switch (valueType) { case ModelSetValueTypeEnum.string: { const { instance, remainingBuffer: newRemainingBuffer } = helper_1.BufferHelper.String2LFromBuffer(remainingBuffer); result.add(instance); remainingBuffer = newRemainingBuffer; } break; case ModelSetValueTypeEnum.number: { const { instance, remainingBuffer: newRemainingBuffer } = helper_1.BufferHelper.UIntFromBuffer(remainingBuffer); result.add(instance); remainingBuffer = newRemainingBuffer; } break; case ModelSetValueTypeEnum.object: { if (fromBuffer !== 'string' && fromBuffer !== 'number') { const { instance, remainingBuffer: newRemainingBuffer } = fromBuffer(remainingBuffer); result.add(instance); remainingBuffer = newRemainingBuffer; } } break; default: throw new Error(`Unknown ModelSetValueTypeEnum: ${valueType}`); } } return { instance: result, remainingBuffer }; } } exports.ModelSet = ModelSet; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kZWxTZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWwvTW9kZWxTZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBRXZDLHNDQUF3QztBQUl4QyxJQUFZLHFCQUlYO0FBSkQsV0FBWSxxQkFBcUI7SUFDaEMscUVBQVUsQ0FBQTtJQUNWLHFFQUFVLENBQUE7SUFDVixxRUFBVSxDQUFBO0FBQ1gsQ0FBQyxFQUpXLHFCQUFxQixxQ0FBckIscUJBQXFCLFFBSWhDO0FBRUQsTUFBYSxRQUEyQyxTQUFRLHFCQUFTO0lBR3hFO1FBQ0MsS0FBSyxFQUFFLENBQUE7UUFDUCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUE7SUFDdEIsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFhO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3JCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN4QixDQUFDO0lBRUQsS0FBSztRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDbEIsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFhO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUVELE9BQU87UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDMUIsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQ3ZCLE9BQU8sVUFBVSxDQUFBO0lBQ2xCLENBQUM7SUFFRCxDQUFD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