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