UNPKG

flexmonster-mongo-connector

Version:

Custom data source API implementation for MongoDB

80 lines 3.35 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ArrayDataObject = void 0; const AbstractDataObject_1 = require("./AbstractDataObject"); const timers_1 = require("timers"); class ArrayDataObject extends AbstractDataObject_1.AbstractDataObject { constructor(parsedData, startDate, dataMemorySize = 0) { super(); this.data = parsedData; this.computationTime = new Date().getTime() - startDate.getTime(); this.dataMemorySize = dataMemorySize; this.isCompleted = true; } getChunk(iterator) { let item = iterator.next(); let chunk = this.data[item.value]; let isFinished = item.done || item.value + 1 === this.data.length; return { data: chunk, isFinished: isFinished }; } getChunkAsync(iterator) { return __awaiter(this, void 0, void 0, function* () { const index = iterator.next().value; if (!this.isCompleted && index + 1 >= this.data.length) { return this.subscribeForChunk(index); } let isFinished = (index + 1 === this.data.length); return { data: this.data[index], isFinished: isFinished }; }); } subscribeForChunk(index, code) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { const intervalTimeout = setInterval(() => { if (index < this.data.length) { (0, timers_1.clearInterval)(intervalTimeout); resolve({ data: this.data[index], isFinished: (index + 1 === this.data.length && this.isCompleted) }); } }, 700); }); }); } getIterationKeys() { return this.data.keys(); } push(arrayDataObject) { this.dataMemorySize += arrayDataObject.dataMemorySize; this.computationTime += arrayDataObject.computationTime; for (let i = 0; i < arrayDataObject.data.length; i++) { this.data.push(arrayDataObject.data[i]); } return; } getNumberOfItems() { let numberOfMembers = 0; for (let i = 0; i < this.data.length; i++) { numberOfMembers += this.data[i].length; } return numberOfMembers; } } exports.ArrayDataObject = ArrayDataObject; //# sourceMappingURL=ArrayDataObject.js.map