Socket
Socket
Sign inDemoInstall

@apio/timeframes

Package Overview
Dependencies
Maintainers
2
Versions
40
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@apio/timeframes - npm Package Compare versions

Comparing version 0.1.11 to 0.1.13

build/main/lib/parse.d.ts

76

build/main/lib/timeframe.d.ts
import { TimeSerie } from './timeserie';
import { DateLike, Metadata, PointValue, ResampleOptions, Row, TelemetryV1Output, TimeFrameInternal, TimeframeRowsIterator, TimeserieIterator, TimeseriePointCombiner } from './types';
interface AggregationConfiguration {
output: string;
operation: string | TimeseriePointCombiner;
columns: string[];
}
import { AggregationConfiguration, AggregationOptions, DateLike, FromTimeseriesOptions, Metadata, PointValue, ResampleOptions, Row, TelemetryV1Output, TimeFrameInternal, TimeFramePartitionOptions, TimeframeRowsIterator, TimeserieIterator } from './types';
interface TimeFrameOptions {

@@ -17,5 +12,6 @@ data: Row[];

export declare class TimeFrame {
readonly data: TimeFrameInternal;
private readonly data;
columnNames: string[];
metadata: Metadata;
private indexes;
/**

@@ -27,2 +23,3 @@ * Creates a Timeframe instance from a list of rows. It infers the list of column names from each row's fields.

constructor(options: TimeFrameOptions);
private buildTimeCheckpoints;
/**

@@ -34,6 +31,11 @@ * Creates a new timeframe preserving the metadata but replacing data

recreate(data: Row[]): TimeFrame;
/**
* Creates a new TimeFrame using this timeframe's metadata and using `series` as columns.
* @param series Array of timeseries which will be used as timeframe columns
* @returns
*/
recreateFromSeries(series: TimeSerie[]): TimeFrame;
/**
*
* @param data An object which is telemetry V1 output {device1: {property1:[[time,value]],property2:[[time,value]]}}
* @param data An object which is telemetry V1 output (Apio Internal)
* @returns

@@ -46,17 +48,25 @@ */

* @param timeseries An array of TimeSerie objects
* @param options.fill Value to use as filler when a column does not hold a value for a specific time
* @returns A new TimeFrame, where each timeserie represent a column
*/
static fromTimeseries(timeseries: TimeSerie[]): TimeFrame;
static fromTimeseries(timeseries: TimeSerie[], options?: FromTimeseriesOptions): TimeFrame;
/**
* Concatenates timeframes. Throws error if overlapping times are found. Use merge to join together
* Concatenates timeframes. Throws error if overlapping times are found. Use join() to join together
* timeframes with overlapping times
* @param timeframes Array of timeframes to concatenate
*/
static concat(timeframes: TimeFrame[]): TimeFrame;
/**
*
* Joins multiple timeframes by adding the columns together and merging indexes (time)
* @param timeframes Array of timeframes to join together
* @returns A timeframe with joined columns
*/
static join(timeframes: TimeFrame[]): TimeFrame;
join(timeframes: TimeFrame[]): TimeFrame;
/**
* Add a column to the timeframe
* @param serie The new column
* @returns {TimeFrame}
*/
addColumn(serie: TimeSerie): TimeFrame;
/**
*

@@ -73,2 +83,5 @@ * @param name The name of the wanted column

rows(): readonly Row[];
/**
* Returns a new timeframe with a subset of columns.
*/
project(columns: string[]): TimeFrame;

@@ -83,3 +96,3 @@ /**

*
* @returns The value at the given index (position, not time)
* @returns The row at the given index (position, not time)
*/

@@ -133,12 +146,20 @@ atIndex(index: number): PointValue;

}): TimeFrame;
groupBy(column: string): TimeFrameGrouper;
/**
*
* @param intervalSizeMs An interval in milliseconds
* @returns {TimeFramesResampler} a resampler instance that can be used to obtain a new timeframe by aggregating values
* Applies transformations to TimeFrame. Each transformation is defined as an operation between columns. Allows, for example, to
* aggregate two columns into one by applying scalar operations element-wise.
* @param aggregations An array of AggregationConfigurations
* @param options? Options
* @returns {TimeFrame}
* @example
* // Average by hour
* const hourlyAverage = ts.resample(1000 * 60 * 60).avg()
* // Creates a 3 new cilumns named power1,power2 and power3 by multiplying other columns
* // Then combines the 3 powerN by addition
* // The resulting TimeFrame has only 1 column named power
* tf = tf.aggregate([
* { output: 'power1', columns: ['voltage1', 'current1'], operation: 'mul' },
* { output: 'power2', columns: ['voltage2', 'current2'], operation: 'mul' },
* { output: 'power3', columns: ['voltage3', 'current3'], operation: 'mul' }
* ])
* .aggregate([{ output: 'power', columns: ['power1', 'power2', 'power3'], operation: 'add'}])
*/
aggregate(aggregations: AggregationConfiguration[]): TimeFrame;
aggregate(aggregations: AggregationConfiguration[], options?: AggregationOptions): TimeFrame;
resample(options: ResampleOptions): TimeFramesResampler;

@@ -152,3 +173,3 @@ /**

/**
* Returns a new timeframe where each **row** is mapped by the iterator function. For mapping over columns, use apply
* Returns a new timeframe where each **row** is mapped by the iterator function. For mapping over columns, use apply()
* @param fn Iterator function

@@ -159,4 +180,5 @@ * @returns {TimeFrame}

/**
* Applies transformations to the columns of the dataframe, each column is passed to the iterator like a timeserie.
* Applies transformations to the **columns** of the dataframe, each column is passed to the iterator like a timeserie.
* If no column is specified, all columns will be used.
* For mapping over rows, see map()
* @param fn {TimeserieIterator}

@@ -166,2 +188,8 @@ */

/**
* Partitions The TimeFrame into multiple sub timeframes by dividing the time column into even groups. Returns an array of sub TimeFrames.
* @param options
* @returns
*/
partition(options: TimeFramePartitionOptions): TimeFrame[];
/**
* Pretty prints the TimeFrame to the console

@@ -171,6 +199,2 @@ */

}
declare class TimeFrameGrouper {
timeframes: TimeFrame[];
constructor(timeframes?: TimeFrame[]);
}
/**

@@ -177,0 +201,0 @@ * @class TimeframesResampler

@@ -6,7 +6,17 @@ "use strict";

const types_1 = require("./types");
// interface Column {
// name: string;
// data: PointValue[];
// metadata: Metadata;
// }
const utils_1 = require("./utils");
const test = (r, f, t, includeSuperior, includeInferior) => {
if (includeInferior && includeSuperior) {
return r >= f && r <= t;
}
else if (includeInferior && !includeSuperior) {
return r >= f && r < t;
}
else if (!includeInferior && includeSuperior) {
return r > f && r <= t;
}
else {
return r > f && r < t;
}
};
/**

@@ -29,21 +39,47 @@ * @class TimeFrame

this.metadata = metadata;
this.columnNames = [...new Set(data.map((row) => Object.keys(row)).flat())].filter((name) => name !== 'time');
this.data = data
.concat([])
.sort((a, b) => {
const ta = new Date(a.time).getTime();
const tb = new Date(b.time).getTime();
if (ta >= tb) {
return 1;
}
else {
return -1;
}
})
.reduce((acc, row) => {
const { time, ...rest } = row;
acc[row.time] ? acc[row.time] = { ...acc[row.time], ...rest } : acc[row.time] = rest;
return acc;
}, {});
if (data.length === 0) {
this.data = {};
this.columnNames = [];
}
else {
this.columnNames = [...new Set(data
.filter((row) => !!row)
.map((row) => Object.keys(row))
.flat())]
.filter((name) => name !== 'time');
this.data = data
.concat([])
.filter((row) => !!row)
.sort((a, b) => {
const ta = new Date(a.time).getTime();
const tb = new Date(b.time).getTime();
if (ta >= tb) {
return 1;
}
else {
return -1;
}
})
.reduce((acc, row) => {
const { time, ...rest } = row;
acc[row.time] ? acc[row.time] = { ...acc[row.time], ...rest } : acc[row.time] = rest;
return acc;
}, {});
}
this.indexes = {
time: Object.keys(this.data),
checkpoints: null
};
}
buildTimeCheckpoints() {
if (!this.indexes.checkpoints) {
this.indexes.checkpoints = {};
const o = utils_1.getOrderOfMagnitude(this.indexes.time.length);
this.indexes.time.forEach((el, i) => {
if (i % (o / 100) === 0) {
this.indexes.checkpoints[el] = i;
}
});
}
}
/**

@@ -57,2 +93,7 @@ * Creates a new timeframe preserving the metadata but replacing data

}
/**
* Creates a new TimeFrame using this timeframe's metadata and using `series` as columns.
* @param series Array of timeseries which will be used as timeframe columns
* @returns
*/
recreateFromSeries(series) {

@@ -65,3 +106,3 @@ const tf = TimeFrame.fromTimeseries(series);

*
* @param data An object which is telemetry V1 output {device1: {property1:[[time,value]],property2:[[time,value]]}}
* @param data An object which is telemetry V1 output (Apio Internal)
* @returns

@@ -100,5 +141,6 @@ */

* @param timeseries An array of TimeSerie objects
* @param options.fill Value to use as filler when a column does not hold a value for a specific time
* @returns A new TimeFrame, where each timeserie represent a column
*/
static fromTimeseries(timeseries) {
static fromTimeseries(timeseries, options) {
const data = {};

@@ -110,3 +152,3 @@ const metadata = {};

data[point[0]] = data[point[0]] || {};
data[point[0]][ts.name] = point[1];
data[point[0]][ts.name] = point[1] || (options === null || options === void 0 ? void 0 : options.fill) || null;
});

@@ -117,17 +159,26 @@ });

/**
* Concatenates timeframes. Throws error if overlapping times are found. Use merge to join together
* Concatenates timeframes. Throws error if overlapping times are found. Use join() to join together
* timeframes with overlapping times
* @param timeframes Array of timeframes to concatenate
*/
// static concat(timeframes: TimeFrame[]) : TimeFrame{
// }
static concat(timeframes) {
return new TimeFrame({ data: timeframes.map((tf) => tf.rows()).flat() });
}
/**
*
* Joins multiple timeframes by adding the columns together and merging indexes (time)
* @param timeframes Array of timeframes to join together
* @returns A timeframe with joined columns
*/
static join(timeframes) {
return TimeFrame.fromInternalFormat(Object.assign({}, ...timeframes.map(tf => tf.data)));
join(timeframes) {
return TimeFrame.fromInternalFormat(Object.assign({}, ...(timeframes.map(tf => tf.data).concat([this.data]))));
}
/**
* Add a column to the timeframe
* @param serie The new column
* @returns {TimeFrame}
*/
addColumn(serie) {
return this.recreateFromSeries(this.columns().concat([serie]));
}
/**
*

@@ -138,2 +189,5 @@ * @param name The name of the wanted column

column(name) {
if (!this.columnNames.includes(name)) {
return null;
}
const data = Object.entries(this.data).map(([time, values]) => ([time, values[name]]));

@@ -153,2 +207,5 @@ const metadata = this.metadata[name] || {};

}
/**
* Returns a new timeframe with a subset of columns.
*/
project(columns) {

@@ -173,3 +230,3 @@ const nonExisting = columns.filter((name) => !this.columnNames.includes(name));

*
* @returns The value at the given index (position, not time)
* @returns The row at the given index (position, not time)
*/

@@ -183,3 +240,3 @@ atIndex(index) {

length() {
return Object.keys(this.data).length;
return this.indexes.time.length;
}

@@ -191,3 +248,3 @@ /**

shape() {
return [Object.keys(this.data).length, this.columnNames.length];
return [this.indexes.time.length, this.columnNames.length];
}

@@ -200,2 +257,5 @@ /**

var _a;
if (this.length() === 0) {
return null;
}
return ((_a = this.rows()) === null || _a === void 0 ? void 0 : _a[0]) || null;

@@ -208,2 +268,5 @@ }

last() {
if (this.length() === 0) {
return null;
}
const t = this.rows();

@@ -216,2 +279,5 @@ return (t === null || t === void 0 ? void 0 : t[t.length - 1]) || null;

sum() {
if (this.length() === 0) {
return null;
}
const time = this.first().time;

@@ -224,2 +290,5 @@ return this.columns().reduce((acc, column) => { acc[column.name] = column.sum(); return acc; }, { time });

avg() {
if (this.length() === 0) {
return null;
}
const time = this.first().time;

@@ -232,2 +301,5 @@ return this.columns().reduce((acc, column) => { acc[column.name] = column.avg(); return acc; }, { time });

delta() {
if (this.length() === 0) {
return null;
}
const time = this.first().time;

@@ -240,2 +312,5 @@ return this.columns().reduce((acc, column) => { acc[column.name] = column.delta(); return acc; }, { time });

max() {
if (this.length() === 0) {
return null;
}
const time = this.first().time;

@@ -248,2 +323,5 @@ return this.columns().reduce((acc, column) => { acc[column.name] = column.max()[1]; return acc; }, { time });

min() {
if (this.length() === 0) {
return null;
}
const time = this.first().time;

@@ -259,58 +337,63 @@ return this.columns().reduce((acc, column) => { acc[column.name] = column.min()[1]; return acc; }, { time });

betweenTime(from, to, options = { includeInferior: true, includeSuperior: true }) {
/**
* Here we might have to scan a huge sorted array. To prevent scanning too many useless keys
* we index the array by mapping a certain number of timestamps to positions in the time index.
*
* This sparse index is smaller than the full index and fester to use for scanning ranges like in this case.
*/
this.buildTimeCheckpoints();
const { includeInferior, includeSuperior } = options;
const f = new Date(from);
const t = new Date(to);
return this.filter((row) => {
if (includeInferior && includeSuperior) {
return new Date(row.time).getTime() >= f.getTime() && new Date(row.time).getTime() <= t.getTime();
const f = new Date(from).getTime();
const t = new Date(to).getTime();
const keys = Object.keys(this.indexes.checkpoints);
// Indice della prima chiave che va oltre il from
const startingPointValueIndex = keys.findIndex((key) => new Date(key).getTime() > from);
// Ultimo timestamp prima di quell'indice
let startingPoint = this.indexes.checkpoints[keys[startingPointValueIndex - 1]];
if (!startingPoint) {
// Siamo oltre l'ultimo checkpoint
const lastCheckpoint = keys[keys.length - 1];
startingPoint = this.indexes.checkpoints[lastCheckpoint];
}
const goodRows = [];
for (let i = startingPoint; i < this.indexes.time.length; i++) {
const curr = new Date(this.indexes.time[i]).getTime();
if (curr < f) {
continue;
}
else if (includeInferior && !includeSuperior) {
return new Date(row.time).getTime() >= f.getTime() && new Date(row.time).getTime() < t.getTime();
if (curr > t) {
break;
}
else if (!includeInferior && includeSuperior) {
return new Date(row.time).getTime() > f.getTime() && new Date(row.time).getTime() <= t.getTime();
if (test(curr, f, t, includeSuperior, includeInferior)) {
goodRows.push({ time: this.indexes.time[i], ...this.data[this.indexes.time[i]] });
}
else {
return new Date(row.time).getTime() > f.getTime() && new Date(row.time).getTime() < t.getTime();
}
});
}
return this.recreate(goodRows);
}
groupBy(column) {
return new TimeFrameGrouper([...new Set(this.column(column).values())]
.map((v) => new TimeFrame({
data: this.rows().filter((row) => { return row[column] === v; }),
metadata: this.metadata
})));
}
/**
*
* @param intervalSizeMs An interval in milliseconds
* @returns {TimeFramesResampler} a resampler instance that can be used to obtain a new timeframe by aggregating values
* Applies transformations to TimeFrame. Each transformation is defined as an operation between columns. Allows, for example, to
* aggregate two columns into one by applying scalar operations element-wise.
* @param aggregations An array of AggregationConfigurations
* @param options? Options
* @returns {TimeFrame}
* @example
* // Average by hour
* const hourlyAverage = ts.resample(1000 * 60 * 60).avg()
* // Creates a 3 new cilumns named power1,power2 and power3 by multiplying other columns
* // Then combines the 3 powerN by addition
* // The resulting TimeFrame has only 1 column named power
* tf = tf.aggregate([
* { output: 'power1', columns: ['voltage1', 'current1'], operation: 'mul' },
* { output: 'power2', columns: ['voltage2', 'current2'], operation: 'mul' },
* { output: 'power3', columns: ['voltage3', 'current3'], operation: 'mul' }
* ])
* .aggregate([{ output: 'power', columns: ['power1', 'power2', 'power3'], operation: 'add'}])
*/
aggregate(aggregations) {
// Aggregazione per colonne
// Applica operazioni a gruppi di colonne per trasformarle in altre colonne
// Ad esempio ho le colonne device1.energy device2.energy device1.power device2.power
// voglio poter fare il resample per delta alle energie, per avg alle potenze per poi aggregare le energie
/**
* const totalenergy = tf.project(['device1.energy','device2.energy'])
* .resample({size:'15min'})
* .delta() // qui ho un tf con le due colonne energia contenenti i delta quartorari
* .aggregate([
* {output:"totalenergy, operation:"sum", columns:['device1.energy','device2.energy']}
* ]) // Qui ho un TF con 1 sola colonna chiamata totalenergy che contiene la somma quartoraria delle energie
*/
// L'aggregazione per righe è il resampling
// Vedi https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.aggregate.html
return this.recreateFromSeries(aggregations.map((agg) => {
const columns = agg.columns
aggregate(aggregations, options = {}) {
const newColumns = aggregations.map((agg) => {
const columnsToAggregate = agg.columns
.map((colName) => this.column(colName));
if (typeof agg.operation === 'function') {
return timeserie_1.TimeSerie.internals.combine(columns, agg.operation, { name: agg.output });
return timeserie_1.TimeSerie.internals.combine(columnsToAggregate, agg.operation, { name: agg.output });
}
else if (typeof agg.operation === 'string' && agg.operation in timeserie_1.TimeSerie.internals.combiners) {
return timeserie_1.TimeSerie.internals.combine(columns, timeserie_1.TimeSerie.internals.combiners[agg.operation], { name: agg.output });
return timeserie_1.TimeSerie.internals.combine(columnsToAggregate, timeserie_1.TimeSerie.internals.combiners[agg.operation], { name: agg.output });
}

@@ -320,3 +403,7 @@ else {

}
}));
});
if (options.keepOriginalColumns) {
return this.recreateFromSeries(newColumns.concat(this.columns()));
}
return this.recreateFromSeries(newColumns);
}

@@ -335,3 +422,3 @@ resample(options) {

/**
* Returns a new timeframe where each **row** is mapped by the iterator function. For mapping over columns, use apply
* Returns a new timeframe where each **row** is mapped by the iterator function. For mapping over columns, use apply()
* @param fn Iterator function

@@ -344,4 +431,5 @@ * @returns {TimeFrame}

/**
* Applies transformations to the columns of the dataframe, each column is passed to the iterator like a timeserie.
* Applies transformations to the **columns** of the dataframe, each column is passed to the iterator like a timeserie.
* If no column is specified, all columns will be used.
* For mapping over rows, see map()
* @param fn {TimeserieIterator}

@@ -357,2 +445,22 @@ */

/**
* Partitions The TimeFrame into multiple sub timeframes by dividing the time column into even groups. Returns an array of sub TimeFrames.
* @param options
* @returns
*/
partition(options) {
var _a, _b;
const from = options.from || ((_a = this.first()) === null || _a === void 0 ? void 0 : _a.time);
if (!from) {
throw new Error('Cannot infer a lower bound for resample');
}
const to = options.to || ((_b = this.last()) === null || _b === void 0 ? void 0 : _b.time);
if (!to) {
throw new Error('Cannot infer an upper bound for resample');
}
const intervals = types_1.TimeInterval.generate(from, to, options.interval);
return intervals.map((interval) => {
return this.betweenTime(interval.from, interval.to, { includeInferior: true, includeSuperior: false });
});
}
/**
* Pretty prints the TimeFrame to the console

@@ -365,7 +473,2 @@ */

exports.TimeFrame = TimeFrame;
class TimeFrameGrouper {
constructor(timeframes = []) {
this.timeframes = timeframes;
}
}
/**

@@ -377,39 +480,48 @@ * @class TimeframesResampler

constructor(timeframe, options) {
var _a, _b;
this.timeframe = timeframe;
const from = options.from || ((_a = timeframe.first()) === null || _a === void 0 ? void 0 : _a.time);
if (!from) {
throw new Error('Cannot infer a lower bound for resample');
}
const to = options.to || ((_b = timeframe.last()) === null || _b === void 0 ? void 0 : _b.time);
if (!to) {
throw new Error('Cannot infer an upper bound for resample');
}
const intervals = types_1.TimeInterval.generate(from, to, options.size);
this.chunks = intervals.map((interval) => {
return timeframe.betweenTime(interval.from, interval.to, { includeInferior: true, includeSuperior: false });
});
this.chunks = this.timeframe.partition({ from: options.from, to: options.to, interval: options.size });
}
sum() {
if (this.chunks.length === 0) {
return this.timeframe;
}
return this.timeframe.recreate(this.chunks.map((tf) => tf.sum()));
}
avg() {
if (this.chunks.length === 0) {
return this.timeframe;
}
return this.timeframe.recreate(this.chunks.map((tf) => tf.avg()));
}
first() {
if (this.chunks.length === 0) {
return this.timeframe;
}
return this.timeframe.recreate(this.chunks.map((tf) => tf.first()));
}
last() {
if (this.chunks.length === 0) {
return this.timeframe;
}
return this.timeframe.recreate(this.chunks.map((tf) => tf.last()));
}
max() {
if (this.chunks.length === 0) {
return this.timeframe;
}
return this.timeframe.recreate(this.chunks.map((tf) => tf.max()));
}
min() {
if (this.chunks.length === 0) {
return this.timeframe;
}
return this.timeframe.recreate(this.chunks.map((tf) => tf.min()));
}
delta() {
if (this.chunks.length === 0) {
return this.timeframe;
}
return this.timeframe.recreate(this.chunks.map((tf) => tf.delta()));
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWZyYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90aW1lZnJhbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBQ3ZDLG1DQUEyTTtBQVkzTSxxQkFBcUI7QUFDckIsa0JBQWtCO0FBQ2xCLHdCQUF3QjtBQUN4Qix3QkFBd0I7QUFDeEIsSUFBSTtBQUVKOzs7R0FHRztBQUNILE1BQWEsU0FBUztJQUtwQjs7OztPQUlHO0lBQ0gsWUFBYSxPQUF5QjtRQVQ3QixTQUFJLEdBQXNCLEVBQUUsQ0FBQTtRQUNyQyxnQkFBVyxHQUFhLEVBQUUsQ0FBQTtRQUMxQixhQUFRLEdBQWEsRUFBRSxDQUFBO1FBUXJCLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUN2QywyREFBMkQ7UUFDM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQTtRQUMxSCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUk7YUFDYixNQUFNLENBQUMsRUFBRSxDQUFDO2FBQ1YsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2IsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO1lBQ3JDLE1BQU0sRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJ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O1FBQ0YsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ3JCLE9BQU8sQ0FBQSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLE1BQUssSUFBSSxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUc7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFBO1FBQzlCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzFHLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUc7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFBO1FBQzlCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzFHLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFBO1FBQzlCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzVHLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUc7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFBO1FBQzlCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzdHLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUc7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFBO1FBQzlCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzdHLENBQUM7SUFFRDs7Ozs7S0FLQztJQUNELFdBQVcsQ0FBRSxJQUFjLEVBQUUsRUFBWSxFQUFFLE9BQU8sR0FBRyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRTtRQUNuRyxNQUFNLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUNwRCxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QixNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN0QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUM5QixJQUFJLGVBQWUsSUFBSSxlQUFlLEVBQUU7Z0JBQ3RDLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO2FBQ2xHO2lCQUFNLElBQUksZUFBZSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUM5QyxPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTthQUNqRztpQkFBTSxJQUFJLENBQUMsZUFBZSxJQUFJLGVBQWUsRUFBRTtnQkFDOUMsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7YUFDakc7aUJBQU07Z0JBQ0wsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7YUFDaEc7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxPQUFPLENBQUUsTUFBYztRQUNyQixPQUFPLElBQUksZ0JBQWdCLENBQ3pCLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7YUFDdkMsR0FBRyxDQUNGLENBQUMsQ0FBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQztZQUMvQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLEdBQUcsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUN4QixDQUFDLENBQ0gsQ0FDSixDQUFBO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxTQUFTLENBQUUsWUFBd0M7UUFDakQsMkJBQTJCO1FBQzNCLDJFQUEyRTtRQUMzRSxxRkFBcUY7UUFDckYsMEdBQTBHO1FBQzFHOzs7Ozs7O1dBT0c7UUFDSCwyQ0FBMkM7UUFDM0Msb0ZBQW9GO1FBQ3BGLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUE2QixFQUFFLEVBQUU7WUFDaEYsTUFBTSxPQUFPLEdBQWdCLEdBQUcsQ0FBQyxPQUFPO2lCQUNyQyxHQUFHLENBQUMsQ0FBQyxPQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtZQUVoRCxJQUFJLE9BQU8sR0FBRyxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUU7Z0JBQ3ZDLE9BQU8scUJBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO2FBQ2pGO2lCQUFNLElBQUksT0FBTyxHQUFHLENBQUMsU0FBUyxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsU0FBUyxJQUFJLHFCQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRTtnQkFDOUYsT0FBTyxxQkFBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLHFCQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7YUFDaEg7aUJBQU07Z0JBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFBO2FBQ3hEO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUM7SUFFRCxRQUFRLENBQUUsT0FBd0I7UUFDaEMsT0FBTyxJQUFJLG1CQUFtQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBRSxFQUF5QjtRQUMvQixPQUFPLElBQUksU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQ2pGLENBQUM7SUFFRDs7OztLQUlDO0lBQ0QsR0FBRyxDQUFFLEVBQXlCO1FBQzVCLE9BQU8sSUFBSSxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDOUUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUUsRUFBcUIsRUFBRSxVQUFvQixJQUFJLENBQUMsV0FBVztRQUNoRSxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBa0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO1FBQzdKLE1BQU0sTUFBTSxHQUFnQixPQUFPO2FBQ2hDLEdBQUcsQ0FBQyxDQUFDLFVBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2FBQ3RELEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUVWLE9BQU8sU0FBUyxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUNuRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUM1QixDQUFDO0NBQ0Y7QUE3VkQsOEJBNlZDO0FBRUQsTUFBTSxnQkFBZ0I7SUFHcEIsWUFBYSxhQUEwQixFQUFFO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO0lBQzlCLENBQUM7Q0FDRjtBQUVEOzs7R0FHRztBQUNILE1BQU0sbUJBQW1CO0lBR3ZCLFlBQWEsU0FBb0IsRUFBRSxPQUF3Qjs7UUFDekQsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7UUFDMUIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksV0FBSSxTQUFTLENBQUMsS0FBSyxFQUFFLDBDQUFFLElBQUksQ0FBQSxDQUFBO1FBQ3BELElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUE7U0FDM0Q7UUFDRCxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxXQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsMENBQUUsSUFBSSxDQUFBLENBQUE7UUFDL0MsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQTtTQUM1RDtRQUNELE1BQU0sU0FBUyxHQUFHLG9CQUFZLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQy9ELElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQXNCLEVBQUUsRUFBRTtZQUNyRCxPQUFPLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUM3RyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxHQUFHO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5RSxDQUFDO0lBRUQsR0FBRztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFhLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDOUUsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBYSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ2hGLENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUMvRSxDQUFDO0lBRUQsR0FBRztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFhLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDOUUsQ0FBQztJQUVELEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBYSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzlFLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNoRixDQUFDO0NBQ0YifQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWZyYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90aW1lZnJhbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBQ3ZDLG1DQUFtUjtBQUNuUixtQ0FBNkM7QUFDN0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLEVBQUU7SUFDekQsSUFBSSxlQUFlLElBQUksZUFBZSxFQUFFO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0tBQ3hCO1NBQU0sSUFBSSxlQUFlLElBQUksQ0FBQyxlQUFlLEVBQUU7UUFDOUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDdkI7U0FBTSxJQUFJLENBQUMsZUFBZSxJQUFJLGVBQWUsRUFBRTtRQUM5QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtLQUN2QjtTQUFNO1FBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7S0FDdEI7QUFDSCxDQUFDLENBQUE7QUFLRDs7O0dBR0c7QUFDSCxNQUFhLFNBQVM7SUFNcEI7Ozs7T0FJRztJQUNILFlBQWEsT0FBeUI7UUFWckIsU0FBSSxHQUFzQixFQUFFLENBQUE7UUFDN0MsZ0JBQVcsR0FBYSxFQUFFLENBQUE7UUFDMUIsYUFBUSxHQUFhLEVBQUUsQ0FBQTtRQVNyQixNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsR0FBRyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFDdkMsMkRBQTJEO1FBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBRXhCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDckIsSUFBSSxDQUFDLElBQUksR0FB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QUFPLElBQUksQ0FBQTtTQUFFO1FBQ3hDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNyQixPQUFPLENBQUEsQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxNQUFLLElBQUksQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUE7U0FBRTtRQUN4QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFBO1FBQzlCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzFHLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUc7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQTtTQUFFO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUE7UUFDOUIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDMUcsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FB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QUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ3hHLENBQUM7SUFFRCxHQUFHO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUE7U0FBRTtRQUN2RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBYSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzlFLENBQUM7SUFFRCxHQUFHO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUE7U0FBRTtRQUN2RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBYSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzlFLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUE7U0FBRTtRQUN2RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBYSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ2hGLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUE7U0FBRTtRQUN2RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBYSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQy9FLENBQUM7SUFFRCxHQUFHO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUE7U0FBRTtRQUN2RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBYSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzlFLENBQUM7SUFFRCxHQUFHO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUE7U0FBRTtRQUN2RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBYSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzlFLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUE7U0FBRTtRQUN2RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBYSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ2hGLENBQUM7Q0FDRiJ9

@@ -9,3 +9,3 @@ "use strict";

const timeserie_1 = require("./timeserie");
ava_1.default('TimeFrame::column() should return the correct timeserie', (t) => {
ava_1.default('TimeFrame.column() should return the correct timeserie', (t) => {
const data = [

@@ -22,3 +22,3 @@ { time: '2021-01-01', energy: 1, power: 4 },

});
ava_1.default('TimeFrame::length() should return the correct value', (t) => {
ava_1.default('TimeFrame.length() should return the correct value', (t) => {
const data = [

@@ -32,3 +32,3 @@ { time: '2021-01-01', energy: 1, power: 4 },

});
ava_1.default('TimeFrame::shape() should return the correct value', (t) => {
ava_1.default('TimeFrame.shape() should return the correct value', (t) => {
const data = [

@@ -42,3 +42,3 @@ { time: '2021-01-01', energy: 1, power: 4 },

});
ava_1.default('TimeFrame::atTime() should return the correct row', (t) => {
ava_1.default('TimeFrame.atTime() should return the correct row', (t) => {
const data = [

@@ -53,3 +53,3 @@ { time: '2021-01-01', energy: 1, power: 4 },

});
ava_1.default('TimeFrame::toArray() should return an array of rows', (t) => {
ava_1.default('TimeFrame.toArray() should return an array of rows', (t) => {
const data = [

@@ -64,3 +64,3 @@ { time: '2021-01-01', energy: 1, power: 4 },

});
ava_1.default('TimeFrame::fromTelemetryV1Output() should return the correct timeframe', (t) => {
ava_1.default('TimeFrame.fromTelemetryV1Output() should return the correct timeframe', (t) => {
const data = {

@@ -84,3 +84,3 @@ device1: {

});
ava_1.default('TimeFrame::fromTimeseries() should return the correct timeframe', (t) => {
ava_1.default('TimeFrame.fromTimeseries() should return the correct timeframe', (t) => {
var _a, _b, _c, _d;

@@ -107,3 +107,3 @@ const energyData = [

});
ava_1.default('TimeFrame::filter() should return the correct timeframe', (t) => {
ava_1.default('TimeFrame.filter() should return the correct timeframe', (t) => {
const data = [

@@ -118,3 +118,3 @@ { time: '2021-01-01', energy: 1, power: 4 },

});
ava_1.default('TimeFrame::join() should return the correct timeframe', (t) => {
ava_1.default('TimeFrame.join() should return the correct timeframe', (t) => {
const data1 = [

@@ -129,27 +129,6 @@ { time: '2021-01-01', energy: 1, power: 4 }

const tf2 = new timeframe_1.TimeFrame({ data: data2 });
const joined = timeframe_1.TimeFrame.join([tf1, tf2]);
const joined = tf1.join([tf2]);
t.is(joined.length(), 3);
});
// test('TimeFrame::resample().sum() should return the correct timeframes', (t) => {
// const data = [
// { time: '2021-01-01T00:00:00.000Z', energy: 1, power: -4 },
// { time: '2021-01-02T00:00:00.000Z', energy: 1, power: 3 },
// { time: '2021-01-03T00:00:00.000Z', energy: 1, power: -4 },
// { time: '2021-01-04T00:00:00.000Z', energy: 1, power: 5 }
// ]
// const tf = new TimeFrame({ data })
// const resampled = tf.resample({
// size: 1000 * 60 * 60 * 48,
// aggregations: {
// energy: 'sum',
// power: 'avg'
// }
// })
// t.is(resampled.length(), 2)
// t.is(resampled.rows()[0].energy, 2)
// t.is(resampled.rows()[0].power, -0.5)
// t.is(resampled.rows()[1].energy, 2)
// t.is(resampled.rows()[1].power, 0.5)
// })
ava_1.default('TimeFrame::apply() should correctly modify columns', (t) => {
ava_1.default('TimeFrame.apply() should correctly modify columns', (t) => {
const energyData = [

@@ -193,3 +172,3 @@ ['2021-01-01T00:00:00.000Z', 4],

});
ava_1.default('Timeframe.sum() should correctly sum all columns', t => {
ava_1.default('TimeFrame.sum() should correctly sum all columns', t => {
const data = [

@@ -206,3 +185,3 @@ { time: '2021-01-01T00:00:00.000Z', energy: 1, power: 4 },

});
ava_1.default('Timeframe.delta() should correctly delta all columns', t => {
ava_1.default('TimeFrame.delta() should correctly delta all columns', t => {
const data = [

@@ -219,4 +198,40 @@ { time: '2021-01-01T00:00:00.000Z', energy: 1, expenergy: 4 },

});
ava_1.default('Timeframe.aggregate() should correctly aggregate columns', t => {
ava_1.default('TimeFrame.max() should correctly max() all columns', t => {
const data = [
{ time: '2021-01-01T00:00:00.000Z', energy: 1, power: 4 },
{ time: '2021-01-02T00:00:00.000Z', energy: 7, power: 3 },
{ time: '2021-01-03T00:00:00.000Z', energy: 2, power: 2 },
{ time: '2021-01-04T00:00:00.000Z', energy: 1, power: 9 }
];
const row = new timeframe_1.TimeFrame({ data }).max();
t.is(row.time, '2021-01-01T00:00:00.000Z');
t.is(row.energy, 7);
t.is(row.power, 9);
});
ava_1.default('TimeFrame.min() should correctly min() all columns', t => {
const data = [
{ time: '2021-01-01T00:00:00.000Z', energy: 3, power: 1 },
{ time: '2021-01-02T00:00:00.000Z', energy: 7, power: 3 },
{ time: '2021-01-03T00:00:00.000Z', energy: 2, power: 2 },
{ time: '2021-01-04T00:00:00.000Z', energy: 1, power: 9 }
];
const row = new timeframe_1.TimeFrame({ data }).min();
t.is(row.time, '2021-01-01T00:00:00.000Z');
t.is(row.energy, 1);
t.is(row.power, 1);
});
ava_1.default('TimeFrame.avg() should correctly avg() all columns', t => {
const data = [
{ time: '2021-01-01T00:00:00.000Z', energy: 4, power: 1 },
{ time: '2021-01-02T00:00:00.000Z', energy: 4, power: 1 },
{ time: '2021-01-03T00:00:00.000Z', energy: 8, power: 11 },
{ time: '2021-01-04T00:00:00.000Z', energy: 8, power: 11 }
];
const row = new timeframe_1.TimeFrame({ data }).avg();
t.is(row.time, '2021-01-01T00:00:00.000Z');
t.is(row.energy, 6);
t.is(row.power, 6);
});
ava_1.default('TimeFrame.aggregate() should correctly aggregate columns', t => {
const data = [
{ time: '2021-01-01T00:00:00.000Z', energy1: 1, energy2: 4 },

@@ -228,4 +243,3 @@ { time: '2021-01-02T00:00:00.000Z', energy1: 2, energy2: 8 },

const agg = new timeframe_1.TimeFrame({ data, metadata: { hello: 'world' } })
.aggregate([{ output: 'totalenergy', columns: ['energy1', 'energy2'], operation: 'sum' }]);
console.log('Aggregato umano', agg);
.aggregate([{ output: 'totalenergy', columns: ['energy1', 'energy2'], operation: 'add' }]);
t.is(agg.atIndex(0).totalenergy, 5);

@@ -237,2 +251,15 @@ t.is(agg.atIndex(1).totalenergy, 10);

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWZyYW1lLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RpbWVmcmFtZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOENBQXNCO0FBRXRCLDJDQUF1QztBQUN2QywyQ0FBdUM7QUFHdkMsYUFBSSxDQUFDLHlEQUF5RCxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDcEUsTUFBTSxJQUFJLEdBQUc7UUFDWCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1FBQzNDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7S0FDNUMsQ0FBQTtJQUNELE1BQU0sRUFBRSxHQUFHLElBQUkscUJBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFFbEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUVsQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLFlBQVkscUJBQVMsQ0FBQyxDQUFBO0lBQ3ZDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBQ3hCLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNwQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDdEMsQ0FBQyxDQUFDLENBQUE7QUFFRixhQUFJLENBQUMscURBQXFELEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUNoRSxNQUFNLElBQUksR0FBRztRQUNYLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7UUFDM0MsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtRQUMzQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0tBQzVDLENBQUE7SUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLHFCQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRWxDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3RCLENBQUMsQ0FBQyxDQUFBO0FBQ0YsYUFBSSxDQUFDLG9EQUFvRCxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDL0QsTUFBTSxJQUFJLEdBQUc7UUFDWCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1FBQzNDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7UUFDM0MsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtLQUM1QyxDQUFBO0lBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxxQkFBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNsQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ2pDLENBQUMsQ0FBQyxDQUFBO0FBRUYsYUFBSSxDQUFDLG1EQUFtRCxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDOUQsTUFBTSxJQUFJLEdBQUc7UUFDWCxFQUFFLElBQUksRUFBRSxZQUFZ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
ava_1.default('TimeFrame.project() should correctly aggregate columns', t => {
const data = [
{ time: '2021-01-01T00:00:00.000Z', energy1: 1, energy2: 4 },
{ time: '2021-01-02T00:00:00.000Z', energy1: 2, energy2: 8 },
{ time: '2021-01-03T00:00:00.000Z', energy1: 3, energy2: 12 },
{ time: '2021-01-04T00:00:00.000Z', energy1: 4, energy2: 16 }
];
const tf = new timeframe_1.TimeFrame({ data, metadata: { hello: 'world' } });
const projected = tf.project(['energy1']);
t.is(tf.columns().length, 2);
t.is(projected.columns().length, 1);
t.is(projected.metadata.hello, 'world');
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWZyYW1lLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RpbWVmcmFtZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOENBQXNCO0FBRXRCLDJDQUF1QztBQUN2QywyQ0FBdUM7QUFHdkMsYUFBSSxDQUFDLHdEQUF3RCxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDbkUsTUFBTSxJQUFJLEdBQUc7UUFDWCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1FBQzNDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7S0FDNUMsQ0FBQTtJQUNELE1BQU0sRUFBRSxHQUFHLElBQUkscUJBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFFbEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUVsQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLFlBQVkscUJBQVMsQ0FBQyxDQUFBO0lBQ3ZDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBQ3hCLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNwQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDdEMsQ0FBQyxDQUFDLENBQUE7QUFFRixhQUFJLENBQUMsb0RBQW9ELEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUMvRCxNQUFNLElBQUksR0FBRztRQUNYLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7UUFDM0MsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtRQUMzQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0tBQzVDLENBQUE7SUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLHFCQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRWxDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3RCLENBQUMsQ0FBQyxDQUFBO0FBQ0YsYUFBSSxDQUFDLG1EQUFtRCxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDOUQsTUFBTSxJQUFJLEdBQUc7UUFDWCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1FBQzNDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7UUFDM0MsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtLQUM1QyxDQUFBO0lBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxxQkFBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNsQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ2pDLENBQUMsQ0FBQyxDQUFBO0FBRUYsYUFBSSxDQUFDLGtEQUFrRCxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDN0QsTUFBTSxJQUFJLEdBQUc7UUFDWCxFQUFFLElBQUksRUFBRSxZQUFZ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S0FDMUQsQ0FBQTtJQUNELE1BQU0sRUFBRSxHQUFHLElBQUkscUJBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRWhFLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUM7UUFDNUIsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7S0FDMUIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBRVIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDM0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLDBCQUEwQixDQUFDLENBQUE7SUFDMUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ25DLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDbkMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ25DLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDekMsQ0FBQyxDQUFDLENBQUE7QUFFRixhQUFJLENBQUMsa0RBQWtELEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDM0QsTUFB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

@@ -1,7 +0,2 @@

import { DateLike, Metadata, Point, PointValue, ResampleOptions, TimeseriePointIterator } from './types';
interface TimeSeriesOperationOptions {
name: string;
metadata?: {};
fill?: number;
}
import { DateLike, FromIndexOptions, Index, Metadata, Point, PointValue, ReindexOptions, ResampleOptions, TimeseriePointIterator, TimeSeriesOperationOptions } from './types';
/**

@@ -12,7 +7,20 @@ * A data structure for a time serie.

static internals: any;
static createIndex: Function;
readonly data: Point[];
readonly name: string;
name: string;
metadata: Metadata;
index: {
[key: string]: PointValue;
};
constructor(name: string, serie: Point[] | ReadonlyArray<Point>, metadata?: Metadata);
static fromIndex(index: Index, options: FromIndexOptions): TimeSerie;
/**
* Recreates the serie's index
* @param index The new index to use. Can be created with createIndex()
* @see createIndex
* @param options
* @return The reindexed timeserie
*/
reindex(index: Index, options?: ReindexOptions): TimeSerie;
/**
*

@@ -22,2 +30,3 @@ * @returns Array of points, where each point is a tuple with ISO8601 timestamp and value

toArray(): Point[];
rename(name: string): this;
/**

@@ -97,6 +106,2 @@ * Creates a new serie preserving the name and the metadata but replacing data

avg(): number;
/**
* @returns The time weighted average of points. Every point is weighted by the timestamp, in this way we handle "data holes"
*/
weightedAvg(): number;
delta(): number;

@@ -155,3 +160,7 @@ /**

round(decimals: number): TimeSerie;
combine(series: TimeSerie[], options: TimeSeriesOperationOptions): TimeSerie;
combine(operation: string, series: TimeSerie[], options?: TimeSeriesOperationOptions): TimeSerie;
add(value: number | TimeSerie): TimeSerie;
sub(value: number | TimeSerie): TimeSerie;
mul(value: number | TimeSerie): TimeSerie;
div(value: number | TimeSerie): TimeSerie;
}

@@ -158,0 +167,0 @@ /**

@@ -35,4 +35,21 @@ "use strict";

this.metadata = metadata;
this.index = [].concat(this.data).reduce((acc, p) => {
acc[p[0]] = p;
return acc;
}, {});
}
static fromIndex(index, options) {
return new TimeSerie(options.name, index.map((i) => ([i, (options === null || options === void 0 ? void 0 : options.fill) || null])), options.metadata);
}
/**
* Recreates the serie's index
* @param index The new index to use. Can be created with createIndex()
* @see createIndex
* @param options
* @return The reindexed timeserie
*/
reindex(index, options) {
return new TimeSerie(this.name, index.map((i) => ([i, this.atTime(i) || (options === null || options === void 0 ? void 0 : options.fill) || null])), this.metadata);
}
/**
*

@@ -44,2 +61,6 @@ * @returns Array of points, where each point is a tuple with ISO8601 timestamp and value

}
rename(name) {
this.name = name;
return this;
}
/**

@@ -132,11 +153,4 @@ * Creates a new serie preserving the name and the metadata but replacing data

atTime(time, fillValue = null) {
const point = this.data.find((point) => {
return point[0] === utils_1.DateLikeToString(time);
});
if (point) {
return point[1];
}
else {
return fillValue;
}
var _a, _b;
return ((_b = (_a = this.index) === null || _a === void 0 ? void 0 : _a[utils_1.DateLikeToString(time)]) === null || _b === void 0 ? void 0 : _b[1]) || fillValue;
}

@@ -213,21 +227,2 @@ /**

}
/**
* @returns The time weighted average of points. Every point is weighted by the timestamp, in this way we handle "data holes"
*/
weightedAvg() {
if (this.length() === 0) {
return 0;
}
if (this.length() === 1) {
return 1;
}
const numerator = this.data.map((p) => {
const t = new Date(p[0]).getTime();
return t * p[1];
}).reduce((a, b) => { return a + b; }, 0);
const denominator = this.data.map((p) => {
return new Date(p[0]).getTime();
}).reduce((a, b) => { return a + b; }, 0);
return numerator / denominator;
}
delta() {

@@ -336,7 +331,42 @@ if (this.length() <= 0) {

// Operation between timeseries
combine(series, options) {
return TimeSerie.internals.add(series.concat(this), options);
combine(operation, series, options = {}) {
options.name = options.name || this.name;
options.metadata = options.metadata || this.metadata;
return TimeSerie.internals.combine([this.recreate(this.data)].concat(series), TimeSerie.internals.combiners[operation], options);
}
add(value) {
if (typeof value === 'number') {
return this.map((point) => [point[0], point[1] + value]);
}
else {
return this.combine('add', [value]);
}
}
sub(value) {
if (typeof value === 'number') {
return this.map((point) => [point[0], point[1] - value]);
}
else {
return this.combine('sub', [value]);
}
}
mul(value) {
if (typeof value === 'number') {
return this.map((point) => [point[0], point[1] * value]);
}
else {
return this.combine('mul', [value]);
}
}
div(value) {
if (typeof value === 'number') {
return this.map((point) => [point[0], point[1] / value]);
}
else {
return this.combine('div', [value]);
}
}
}
exports.TimeSerie = TimeSerie;
TimeSerie.internals = {};
// Estrae gli indici dalla prima serie o li prende dalle opzioni

@@ -348,4 +378,3 @@ // Per ogni elemento dell'indice scorre gli elementi di tutte le timeserie e li combina con una funzione combiner

TimeSerie.internals.combine = (series, combiner, options) => {
const indexes = series[0].data.map((p) => p[0]);
const points = indexes.map((idx) => {
const points = series[0].data.map((p) => p[0]).map((idx) => {
const values = series.map((serie) => serie.atTime(idx, options.fill));

@@ -359,6 +388,6 @@ return [

};
TimeSerie.internals.combiners.sum = (points) => points.reduce((a, b) => a + b, 0);
TimeSerie.internals.combiners.diff = (points) => points.reduce((a, b) => a - b, 0);
TimeSerie.internals.combiners.mul = (points) => points.reduce((a, b) => a * b, 0);
TimeSerie.internals.combiners.div = (points) => points.reduce((a, b) => a / b, 0);
TimeSerie.internals.combiners.add = (points) => points.reduce((a, b) => a + b, 0);
TimeSerie.internals.combiners.sub = (points) => points.reduce((a, b) => a - b, points[0] * 2);
TimeSerie.internals.combiners.mul = (points) => points.reduce((a, b) => a * b, 1);
TimeSerie.internals.combiners.div = (points) => points.reduce((a, b) => a / b, points[0] * points[0]);
TimeSerie.internals.combiners.avg = (points) => (TimeSerie.internals.combiners.sum(points) / points.length);

@@ -408,2 +437,3 @@ /**

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXNlcmllLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90aW1lc2VyaWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQThJO0FBQzlJLG1DQUEwQztBQVExQyxTQUFTLFNBQVMsQ0FBRSxHQUFvQjtJQUN0QyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQy9DLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFBLENBQUMsMkJBQTJCO0lBQ3JFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBVSxDQUFDLElBQUksbUdBQW1HO1FBQzlILENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLENBQUMsMkNBQTJDO0FBQ3ZFLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBRSxNQUFzQztJQUN6RCxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUSxFQUFFLENBQVEsRUFBRSxFQUFFO1FBQ25ELElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNmLE9BQU8sQ0FBQyxDQUFBO1NBQ1Q7YUFBTTtZQUNMLE9BQU8sQ0FBQyxDQUFDLENBQUE7U0FDVjtJQUNILENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFFLENBQVE7SUFDL0IsT0FBTyxDQUFDLHdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3ZDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQWEsU0FBUztJQUtwQixZQUFhLElBQVksRUFBRSxLQUFxQyxFQUFFLFdBQXFCLEVBQUU7UUFDdkYsSUFBSSxDQUFD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
TimeSerie.createIndex = types_1.createIndex;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXNlcmllLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90aW1lc2VyaWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWdPO0FBQ2hPLG1DQUEwQztBQUUxQyxTQUFTLFNBQVMsQ0FBRSxHQUFvQjtJQUN0QyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQy9DLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFBLENBQUMsMkJBQTJCO0lBQ3JFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBVSxDQUFDLElBQUksbUdBQW1HO1FBQzlILENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLENBQUMsMkNBQTJDO0FBQ3ZFLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBRSxNQUFzQztJQUN6RCxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUSxFQUFFLENBQVEsRUFBRSxFQUFFO1FBQ25ELElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNmLE9BQU8sQ0FBQyxDQUFBO1NBQ1Q7YUFBTTtZQUNMLE9BQU8sQ0FBQyxDQUFDLENBQUE7U0FDVjtJQUNILENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFFLENBQVE7SUFDL0IsT0FBTyxDQUFDLHdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3ZDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQWEsU0FBUztJQU9wQixZQUFhLElBQVksRUFBRSxLQUFxQyxFQUFFLFdBQXFCLEVBQUU7UUFDdkYsSUFBSSxDQUFD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RUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNwRyxDQUFDO0lBRUQsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNuRyxDQUFDO0lBRUQsR0FBRztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNsRyxDQUFDO0lBRUQsR0FBRztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNsRyxDQUFDO0NBQ0Y7QUFFRCxTQUFTLENBQUMsV0FBVyxHQUFHLG1CQUFXLENBQUEifQ==

@@ -8,3 +8,3 @@ "use strict";

const timeserie_1 = require("./timeserie");
ava_1.default('TimeSerie::atTime() should return the correct point or null', (t) => {
ava_1.default('TimeSerie.atTime() should return the correct point or null', (t) => {
const data = [

@@ -19,3 +19,3 @@ ['2021-01-01T00:00:00.000Z', 4],

});
ava_1.default('TimeSerie::atIndex() should return the correct point', (t) => {
ava_1.default('TimeSerie.atIndex() should return the correct point', (t) => {
const data = [

@@ -29,3 +29,3 @@ ['2021-01-01T00:00:00.000Z', 4],

});
ava_1.default('TimeSerie::atIndex() should throw when the index is out of bounds', (t) => {
ava_1.default('TimeSerie.atIndex() should throw when the index is out of bounds', (t) => {
const data = [

@@ -41,3 +41,3 @@ ['2021-01-01T00:00:00.000Z', 4],

});
ava_1.default('TimeSerie::toArray() should return the whole data', (t) => {
ava_1.default('TimeSerie.toArray() should return the whole data', (t) => {
const data = [

@@ -51,3 +51,3 @@ ['2021-01-01T00:00:00.000Z', 4],

});
ava_1.default('TimeSerie::firstValidIndex() should return the first valid value index', (t) => {
ava_1.default('TimeSerie.firstValidIndex() should return the first valid value index', (t) => {
const data = [

@@ -64,3 +64,3 @@ ['2021-01-01T00:00:00.000Z', null],

});
ava_1.default('TimeSerie::lastValidIndex() should return the last valid value index', (t) => {
ava_1.default('TimeSerie.lastValidIndex() should return the last valid value index', (t) => {
const data = [

@@ -77,3 +77,3 @@ ['2021-01-01', null],

});
ava_1.default('TimeSerie::firstValidValue() should return the first valid value index or null', (t) => {
ava_1.default('TimeSerie.firstValidValue() should return the first valid value index or null', (t) => {
const data = [

@@ -96,3 +96,3 @@ ['2021-01-01', null],

});
ava_1.default('TimeSerie::lastValidValue() should return the last valid value index', (t) => {
ava_1.default('TimeSerie.lastValidValue() should return the last valid value index', (t) => {
const data = [

@@ -109,3 +109,3 @@ ['2021-01-01', null],

});
ava_1.default('TimeSerie::betweenTime() should return the correct timeserie subset', (t) => {
ava_1.default('TimeSerie.betweenTime() should return the correct timeserie subset', (t) => {
const data = [

@@ -125,3 +125,3 @@ ['2021-01-01', 4],

});
ava_1.default('TimeSerie::filter() should allow to pass custom filtering logic', (t) => {
ava_1.default('TimeSerie.filter() should allow to pass custom filtering logic', (t) => {
const data = [

@@ -143,3 +143,3 @@ ['2021-01-01', 4],

});
ava_1.default('TimeSerie::map() should allow to pass custom mapping logic', (t) => {
ava_1.default('TimeSerie.map() should allow to pass custom mapping logic', (t) => {
const data = [

@@ -161,3 +161,3 @@ ['2021-01-01', 4],

});
ava_1.default('TimeSerie::isEmpty() should behave correctly', (t) => {
ava_1.default('TimeSerie.isEmpty() should behave correctly', (t) => {
const data = [

@@ -171,3 +171,3 @@ ['2021-01-01', 4]

});
ava_1.default('Timeserie::sum() should return the sum of the values', (t) => {
ava_1.default('Timeserie.sum() should return the sum of the values', (t) => {
const data = [

@@ -184,3 +184,3 @@ ['2021-01-01', 4],

});
ava_1.default('Timeserie::avg() should return the average of the values', (t) => {
ava_1.default('Timeserie.avg() should return the average of the values', (t) => {
const data = [

@@ -195,3 +195,3 @@ ['2021-01-01', 4],

});
ava_1.default('Timeserie::first() should return the first point or null', (t) => {
ava_1.default('Timeserie.first() should return the first point or null', (t) => {
const ts1 = new timeserie_1.TimeSerie('ts1', [['2021-01-01', 4]]);

@@ -202,3 +202,3 @@ const ts2 = new timeserie_1.TimeSerie('ts2', []);

});
ava_1.default('Timeserie::firstAt() should return the first point with time >= the given', (t) => {
ava_1.default('Timeserie.firstAt() should return the first point with time >= the given', (t) => {
const data = [

@@ -214,3 +214,3 @@ ['2021-01-01', 4],

});
ava_1.default('Timeserie::last() should return the last point or null', (t) => {
ava_1.default('Timeserie.last() should return the last point or null', (t) => {
const ts1 = new timeserie_1.TimeSerie('ts1', [['2021-01-01', 4], ['2021-01-02', 5]]);

@@ -221,3 +221,3 @@ const ts2 = new timeserie_1.TimeSerie('ts2', []);

});
ava_1.default('Timeserie::max() should return the point with maximum value', (t) => {
ava_1.default('Timeserie.max() should return the point with maximum value', (t) => {
const data = [

@@ -232,3 +232,3 @@ ['2021-01-01', 4],

});
ava_1.default('Timeserie::min() should return the point with minimum value', (t) => {
ava_1.default('Timeserie.min() should return the point with minimum value', (t) => {
const data = [

@@ -243,3 +243,3 @@ ['2021-01-01', 4],

});
ava_1.default('Timeserie::resample().sum() should provide the correct timeserie', (t) => {
ava_1.default('Timeserie.resample().sum() should provide the correct timeserie', (t) => {
const data = [

@@ -265,3 +265,3 @@ ['2021-01-01T12:00:00.000Z', 4],

});
ava_1.default('Timeserie::resample().avg() should provide the correct timeserie', (t) => {
ava_1.default('Timeserie.resample().avg() should provide the correct timeserie', (t) => {
const data = [

@@ -287,3 +287,3 @@ ['2021-01-01T12:00:00.000Z', 4],

});
ava_1.default('Timeserie::resample().first() should provide the correct timeserie', (t) => {
ava_1.default('Timeserie.resample().first() should provide the correct timeserie', (t) => {
const data = [

@@ -309,3 +309,3 @@ ['2021-01-01T12:00:00.000Z', 1],

});
ava_1.default('Timeserie::resample().last() should provide the correct timeserie', (t) => {
ava_1.default('Timeserie.resample().last() should provide the correct timeserie', (t) => {
const data = [

@@ -331,3 +331,3 @@ ['2021-01-01T12:00:00.000Z', 1],

});
ava_1.default('Timeserie::resample().max() should provide the correct timeserie', (t) => {
ava_1.default('Timeserie.resample().max() should provide the correct timeserie', (t) => {
const data = [

@@ -353,3 +353,3 @@ ['2021-01-01T12:00:00.000Z', 1],

});
ava_1.default('Timeserie::resample().min() should provide the correct timeserie', (t) => {
ava_1.default('Timeserie.resample().min() should provide the correct timeserie', (t) => {
const data = [

@@ -375,3 +375,3 @@ ['2021-01-01T12:00:00.000Z', 1],

});
ava_1.default('Timeserie::resample().delta() should provide the correct timeserie', (t) => {
ava_1.default('Timeserie.resample().delta() should provide the correct timeserie', (t) => {
const data = [

@@ -398,3 +398,3 @@ ['2021-01-01T12:00:00.000Z', 1],

});
ava_1.default('Timeserie::removeAt() should remove points from the timeserie', (t) => {
ava_1.default('Timeserie.removeAt() should remove points from the timeserie', (t) => {
const data = [

@@ -411,3 +411,3 @@ ['2021-01-01T00:00:00.000Z', 1],

});
ava_1.default('Timeserie::removeAtIndex() should remove points from the timeserie', (t) => {
ava_1.default('Timeserie.removeAtIndex() should remove points from the timeserie', (t) => {
const data = [

@@ -424,3 +424,3 @@ ['2021-01-01T00:00:00.000Z', 1],

});
ava_1.default('Timeserie::removeBetweenTime() should remove points from the timeserie', (t) => {
ava_1.default('Timeserie.removeBetweenTime() should remove points from the timeserie', (t) => {
const data = [

@@ -437,3 +437,3 @@ ['2021-01-01T00:00:00.000Z', 1],

});
ava_1.default('Timeserie::dropNaN() should remove points from the timeserie', (t) => {
ava_1.default('Timeserie.dropNaN() should remove points from the timeserie', (t) => {
const data = [

@@ -451,3 +451,3 @@ ['2021-01-01T00:00:00.000Z', 1],

});
ava_1.default('Timeserie::dropNull() should remove points from the timeserie', (t) => {
ava_1.default('Timeserie.dropNull() should remove points from the timeserie', (t) => {
const data = [

@@ -465,3 +465,3 @@ ['2021-01-01T00:00:00.000Z', 1],

});
ava_1.default('Timeserie::indexes() and Timeserie::values() should return correct values', (t) => {
ava_1.default('Timeserie.indexes() and Timeserie.values() should return correct values', (t) => {
const data = [

@@ -479,2 +479,57 @@ ['2021-01-01T00:00:00.000Z', 1],

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXNlcmllLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RpbWVzZXJpZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOENBQXNCO0FBRXRCLDJDQUF1QztBQUd2QyxhQUFJLENBQUMsNkRBQTZELEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUN4RSxNQUFNLElBQUksR0FBWTtRQUNwQixDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztLQUNoQyxDQUFBO0lBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxxQkFBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUV4QyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5QyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtBQUNuRCxDQUFDLENBQUMsQ0FBQTtBQUVGLGFBQUksQ0FBQyxzREFBc0QsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ2pFLE1BQU0sSUFBSSxHQUFZO1FBQ3BCLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO0tBQ2hDLENBQUE7SUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLHFCQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRXhDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUN4QixDQUFD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Q0FBQyxDQUFBO0lBQzFCLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNsQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDOUIsQ0FBQyxDQUFDLENBQUE7QUFFRixhQUFJLENBQUMsMkVBQTJFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUN0RixNQUFNLElBQUksR0FBWTtRQUNwQixDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDLDBCQUEwQixFQUFFLE9BQU8sQ0FBQztLQUN0QyxDQUFBO0lBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxxQkFBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN4QyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDNUIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBRTFCLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLENBQUE7SUFDNUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsMEJBQTBCLENBQUMsQ0FBQTtJQUM1QyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNsQixDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUMxQixDQUFDLENBQUMsQ0FBQSJ9
ava_1.default('Timeserie.reindex() should correctly replace the series index', (t) => {
const data = [
['2021-01-01T00:00:00.000Z', 1],
['2021-01-02T00:00:00.000Z', 2]
];
const ts = new timeserie_1.TimeSerie('energy', data);
const reindexed = ts.reindex(timeserie_1.TimeSerie.createIndex({ from: ts.firstValidIndex(), to: ts.lastValidIndex(), interval: '1h' }), { fill: 0 });
t.is(reindexed.length(), 25);
});
ava_1.default('Timeserie.fromIndex() should correctly create the series', (t) => {
const idx = timeserie_1.TimeSerie.createIndex({ from: '2022-01-01', to: '2022-01-01T23:00:00.000Z', interval: '1h' });
const ts = timeserie_1.TimeSerie.fromIndex(idx, { fill: 1, name: 'ts' });
t.is(ts.length(), 24);
t.is(true, ts.toArray().every((item) => item[1] === 1));
});
ava_1.default('Timeserie.combine() should correctly combine the series', (t) => {
const idx = timeserie_1.TimeSerie.createIndex({ from: '2022-01-01', to: '2022-01-01T23:00:00.000Z', interval: '1h' });
const ts1 = timeserie_1.TimeSerie.fromIndex(idx, { fill: 1, name: 'ts1' });
const ts2 = timeserie_1.TimeSerie.fromIndex(idx, { fill: 2, name: 'ts2' });
const result = ts1.combine('add', [ts2]);
t.is(result.length(), ts1.length());
t.is(true, result.toArray().every((item) => item[1] === 3));
});
ava_1.default('Timeserie.add() should correctly add the series to numbers and other series', (t) => {
const idx = timeserie_1.TimeSerie.createIndex({ from: '2022-01-01', to: '2022-01-01T23:00:00.000Z', interval: '1h' });
const ts1 = timeserie_1.TimeSerie.fromIndex(idx, { fill: 1, name: 'ts1' });
const ts2 = timeserie_1.TimeSerie.fromIndex(idx, { fill: 2, name: 'ts2' });
const ts3 = ts1.add(ts2).add(7);
t.is(ts3.length(), ts1.length());
t.is(true, ts3.toArray().every((item) => item[1] === 10));
});
ava_1.default('Timeserie.sub() should correctly diff the series to numbers and other series', (t) => {
const idx = timeserie_1.TimeSerie.createIndex({ from: '2022-01-01', to: '2022-01-01T23:00:00.000Z', interval: '1h' });
const ts1 = timeserie_1.TimeSerie.fromIndex(idx, { fill: 8, name: 'ts1' });
const ts2 = timeserie_1.TimeSerie.fromIndex(idx, { fill: 4, name: 'ts2' });
const ts3 = ts1.sub(ts2).sub(7);
t.is(ts3.length(), ts1.length());
t.is(true, ts3.toArray().every((item) => item[1] === -3));
});
ava_1.default('Timeserie.mul() should correctly multiply the series to numbers and other series', (t) => {
const idx = timeserie_1.TimeSerie.createIndex({ from: '2022-01-01', to: '2022-01-01T23:00:00.000Z', interval: '1h' });
const ts1 = timeserie_1.TimeSerie.fromIndex(idx, { fill: 1, name: 'ts1' });
const ts2 = timeserie_1.TimeSerie.fromIndex(idx, { fill: 2, name: 'ts2' });
const ts3 = ts1.mul(ts2).mul(7);
t.is(ts3.length(), ts1.length());
t.is(true, ts3.toArray().every((item) => item[1] === 14));
});
ava_1.default('Timeserie.div() should correctly divide the series to numbers and other series', (t) => {
const idx = timeserie_1.TimeSerie.createIndex({ from: '2022-01-01', to: '2022-01-01T23:00:00.000Z', interval: '1h' });
const ts1 = timeserie_1.TimeSerie.fromIndex(idx, { fill: 16, name: 'ts1' });
const ts2 = timeserie_1.TimeSerie.fromIndex(idx, { fill: 4, name: 'ts2' });
const ts3 = ts1.div(ts2).div(4);
t.is(ts3.length(), ts1.length());
t.is(true, ts3.toArray().every((item) => item[1] === 1));
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXNlcmllLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RpbWVzZXJpZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOENBQXNCO0FBRXRCLDJDQUF1QztBQUd2QyxhQUFJLENBQUMsNERBQTRELEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUN2RSxNQUFNLElBQUksR0FBWTtRQUNwQixDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztLQUNoQyxDQUFBO0lBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxxQkFBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUV4QyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5QyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtBQUNuRCxDQUFDLENBQUMsQ0FBQTtBQUVGLGFBQUksQ0FBQyxxREFBcUQsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ2hFLE1BQU0sSUFBSSxHQUFZO1FBQ3BCLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO0tBQ2hDLENBQUE7SUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLHFCQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRXhDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUN4QixDQUFD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QUMsRUFBRSxFQUFFO0lBQ3BFLE1BQU0sR0FBRyxHQUFHLHFCQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsMEJBQTBCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDekcsTUFBTSxHQUFHLEdBQUcscUJBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUM5RCxNQUFNLEdBQUcsR0FBRyxxQkFBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQzlELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUV4QyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUNuQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNuRSxDQUFDLENBQUMsQ0FBQTtBQUVGLGFBQUksQ0FBQyw2RUFBNkUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ3hGLE1BQU0sR0FBRyxHQUFHLHFCQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsMEJBQTBCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDekcsTUFBTSxHQUFHLEdBQUcscUJBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLENB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
import { TimeSerie } from './timeserie';
export declare type PointValue = number | string | boolean | any;
export declare type DateLike = Date | string | number;
/**

@@ -22,2 +23,12 @@ * A time indexed value

};
export interface TimeSeriesOperationOptions {
name?: string;
metadata?: {};
fill?: number;
}
export interface FromIndexOptions {
name: string;
metadata?: Metadata;
fill?: PointValue;
}
/**

@@ -30,3 +41,3 @@ * A time indexed group of values of different measurements.

}
export declare type DateLike = Date | string | number;
export declare type Index = string[];
/**

@@ -52,2 +63,7 @@ * Support type for iterating points from a timeserie

declare type ResampleDefaultAggregation = 'sum' | 'avg' | 'max' | 'min';
export interface TimeFramePartitionOptions {
interval: number;
from?: DateLike;
to?: DateLike;
}
export declare type ResampleOptions = {

@@ -61,2 +77,21 @@ size: number;

};
export interface IndexCreationOptions {
from: DateLike;
to: DateLike;
interval?: number | string;
}
export interface AggregationConfiguration {
output: string;
operation: 'add' | 'mul' | 'div' | 'sub' | 'avg' | TimeseriePointCombiner;
columns: string[];
}
export interface AggregationOptions {
keepOriginalColumns?: boolean;
}
export interface FromTimeseriesOptions {
fill?: PointValue;
}
export interface ReindexOptions {
fill?: PointValue;
}
export declare class TimeInterval {

@@ -69,2 +104,8 @@ from: Date;

}
/**
* Generates a time-index
* @param options
* @returns
*/
export declare function createIndex(options: IndexCreationOptions): Index;
export {};
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TimeInterval = void 0;
exports.createIndex = exports.TimeInterval = void 0;
const parse_duration_1 = __importDefault(require("parse-duration"));
;

@@ -28,2 +32,22 @@ ;

exports.TimeInterval = TimeInterval;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVNDLENBQUM7QUFHRCxDQUFDO0FBbUJELENBQUM7QUF1Q0YsTUFBYSxZQUFZO0lBSXZCLFlBQWEsSUFBVSxFQUFFLEVBQVE7UUFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUE7UUFDWixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7SUFDM0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUUsSUFBYyxFQUFFLEVBQVksRUFBRSxJQUFZO1FBQ3pELE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3hCLElBQUksTUFBTSxHQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2pDLE1BQU0sU0FBUyxHQUFtQixFQUFFLENBQUE7UUFDcEMsT0FBTyxNQUFNLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFBO1lBQ25ELE1BQU0sUUFBUSxHQUFHLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUMvQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ3hCLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUN4QjtRQUNELE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7Q0FDRjtBQXZCRCxvQ0F1QkMifQ==
/**
* Generates a time-index
* @param options
* @returns
*/
function createIndex(options) {
let size = options.interval;
if (typeof options.interval === 'string') {
size = parse_duration_1.default(options.interval);
}
const _to = new Date(options.to);
const cursor = new Date(options.from);
const index = [];
while (cursor.getTime() <= _to.getTime()) {
index.push(cursor.toISOString());
cursor.setMilliseconds(cursor.getMilliseconds() + size);
}
return index;
}
exports.createIndex = createIndex;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9FQUFrQztBQVlqQyxDQUFDO0FBR0QsQ0FBQztBQThCRCxDQUFDO0FBcUVGLE1BQWEsWUFBWTtJQUl2QixZQUFhLElBQVUsRUFBRSxFQUFRO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFBO1FBQ1osSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQzNDLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFFLElBQWMsRUFBRSxFQUFZLEVBQUUsSUFBWTtRQUN6RCxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN4QixJQUFJLE1BQU0sR0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNqQyxNQUFNLFNBQVMsR0FBbUIsRUFBRSxDQUFBO1FBQ3BDLE9BQU8sTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN2QyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtZQUNuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDL0MsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUN4QixNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FDeEI7UUFDRCxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0NBQ0Y7QUF2QkQsb0NBdUJDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLFdBQVcsQ0FBRSxPQUE2QjtJQUN4RCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFBO0lBQzNCLElBQUksT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtRQUN4QyxJQUFJLEdBQUcsd0JBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7S0FDL0I7SUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDaEMsTUFBTSxNQUFNLEdBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzNDLE1BQU0sS0FBSyxHQUFVLEVBQUUsQ0FBQTtJQUN2QixPQUFPLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtRQUNoQyxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsR0FBSSxJQUFlLENBQUMsQ0FBQTtLQUNwRTtJQUNELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQWJELGtDQWFDIn0=

@@ -5,1 +5,2 @@ import { DateLike } from './types';

export declare function DateLikeToTimestamp(d: DateLike): number;
export declare function getOrderOfMagnitude(n: number): number;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DateLikeToTimestamp = exports.DateLikeToString = exports.ms = void 0;
exports.getOrderOfMagnitude = exports.DateLikeToTimestamp = exports.DateLikeToString = exports.ms = void 0;
function ms(date) {

@@ -22,2 +22,8 @@ return new Date(date).getTime();

exports.DateLikeToTimestamp = DateLikeToTimestamp;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLFNBQWdCLEVBQUUsQ0FBRSxJQUFtQjtJQUNyQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO0FBQ2pDLENBQUM7QUFGRCxnQkFFQztBQUVELFNBQWdCLGdCQUFnQixDQUFFLENBQVc7SUFDM0MsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtRQUNsRSxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0tBQ3pDO0lBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtBQUNsQyxDQUFDO0FBTEQsNENBS0M7QUFFRCxTQUFnQixtQkFBbUIsQ0FBRSxDQUFXO0lBQzlDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUU7UUFDbEUsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtLQUNyQztJQUNELE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7QUFDOUIsQ0FBQztBQUxELGtEQUtDIn0=
function getOrderOfMagnitude(n) {
const order = Math.floor(Math.log(n) / Math.LN10 +
0.000000001); // because float math sucks like that
return Math.pow(10, order);
}
exports.getOrderOfMagnitude = getOrderOfMagnitude;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLFNBQWdCLEVBQUUsQ0FBRSxJQUFtQjtJQUNyQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO0FBQ2pDLENBQUM7QUFGRCxnQkFFQztBQUVELFNBQWdCLGdCQUFnQixDQUFFLENBQVc7SUFDM0MsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtRQUNsRSxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0tBQ3pDO0lBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtBQUNsQyxDQUFDO0FBTEQsNENBS0M7QUFFRCxTQUFnQixtQkFBbUIsQ0FBRSxDQUFXO0lBQzlDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUU7UUFDbEUsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtLQUNyQztJQUNELE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7QUFDOUIsQ0FBQztBQUxELGtEQUtDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUUsQ0FBUTtJQUMzQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUk7UUFDM0IsV0FBVyxDQUFDLENBQUEsQ0FBQyxxQ0FBcUM7SUFDdkUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUM1QixDQUFDO0FBSkQsa0RBSUMifQ==
import { TimeSerie } from './timeserie';
import { DateLike, Metadata, PointValue, ResampleOptions, Row, TelemetryV1Output, TimeFrameInternal, TimeframeRowsIterator, TimeserieIterator, TimeseriePointCombiner } from './types';
interface AggregationConfiguration {
output: string;
operation: string | TimeseriePointCombiner;
columns: string[];
}
import { AggregationConfiguration, AggregationOptions, DateLike, FromTimeseriesOptions, Metadata, PointValue, ResampleOptions, Row, TelemetryV1Output, TimeFrameInternal, TimeFramePartitionOptions, TimeframeRowsIterator, TimeserieIterator } from './types';
interface TimeFrameOptions {

@@ -17,5 +12,6 @@ data: Row[];

export declare class TimeFrame {
readonly data: TimeFrameInternal;
private readonly data;
columnNames: string[];
metadata: Metadata;
private indexes;
/**

@@ -27,2 +23,3 @@ * Creates a Timeframe instance from a list of rows. It infers the list of column names from each row's fields.

constructor(options: TimeFrameOptions);
private buildTimeCheckpoints;
/**

@@ -34,6 +31,11 @@ * Creates a new timeframe preserving the metadata but replacing data

recreate(data: Row[]): TimeFrame;
/**
* Creates a new TimeFrame using this timeframe's metadata and using `series` as columns.
* @param series Array of timeseries which will be used as timeframe columns
* @returns
*/
recreateFromSeries(series: TimeSerie[]): TimeFrame;
/**
*
* @param data An object which is telemetry V1 output {device1: {property1:[[time,value]],property2:[[time,value]]}}
* @param data An object which is telemetry V1 output (Apio Internal)
* @returns

@@ -46,17 +48,25 @@ */

* @param timeseries An array of TimeSerie objects
* @param options.fill Value to use as filler when a column does not hold a value for a specific time
* @returns A new TimeFrame, where each timeserie represent a column
*/
static fromTimeseries(timeseries: TimeSerie[]): TimeFrame;
static fromTimeseries(timeseries: TimeSerie[], options?: FromTimeseriesOptions): TimeFrame;
/**
* Concatenates timeframes. Throws error if overlapping times are found. Use merge to join together
* Concatenates timeframes. Throws error if overlapping times are found. Use join() to join together
* timeframes with overlapping times
* @param timeframes Array of timeframes to concatenate
*/
static concat(timeframes: TimeFrame[]): TimeFrame;
/**
*
* Joins multiple timeframes by adding the columns together and merging indexes (time)
* @param timeframes Array of timeframes to join together
* @returns A timeframe with joined columns
*/
static join(timeframes: TimeFrame[]): TimeFrame;
join(timeframes: TimeFrame[]): TimeFrame;
/**
* Add a column to the timeframe
* @param serie The new column
* @returns {TimeFrame}
*/
addColumn(serie: TimeSerie): TimeFrame;
/**
*

@@ -73,2 +83,5 @@ * @param name The name of the wanted column

rows(): readonly Row[];
/**
* Returns a new timeframe with a subset of columns.
*/
project(columns: string[]): TimeFrame;

@@ -83,3 +96,3 @@ /**

*
* @returns The value at the given index (position, not time)
* @returns The row at the given index (position, not time)
*/

@@ -133,12 +146,20 @@ atIndex(index: number): PointValue;

}): TimeFrame;
groupBy(column: string): TimeFrameGrouper;
/**
*
* @param intervalSizeMs An interval in milliseconds
* @returns {TimeFramesResampler} a resampler instance that can be used to obtain a new timeframe by aggregating values
* Applies transformations to TimeFrame. Each transformation is defined as an operation between columns. Allows, for example, to
* aggregate two columns into one by applying scalar operations element-wise.
* @param aggregations An array of AggregationConfigurations
* @param options? Options
* @returns {TimeFrame}
* @example
* // Average by hour
* const hourlyAverage = ts.resample(1000 * 60 * 60).avg()
* // Creates a 3 new cilumns named power1,power2 and power3 by multiplying other columns
* // Then combines the 3 powerN by addition
* // The resulting TimeFrame has only 1 column named power
* tf = tf.aggregate([
* { output: 'power1', columns: ['voltage1', 'current1'], operation: 'mul' },
* { output: 'power2', columns: ['voltage2', 'current2'], operation: 'mul' },
* { output: 'power3', columns: ['voltage3', 'current3'], operation: 'mul' }
* ])
* .aggregate([{ output: 'power', columns: ['power1', 'power2', 'power3'], operation: 'add'}])
*/
aggregate(aggregations: AggregationConfiguration[]): TimeFrame;
aggregate(aggregations: AggregationConfiguration[], options?: AggregationOptions): TimeFrame;
resample(options: ResampleOptions): TimeFramesResampler;

@@ -152,3 +173,3 @@ /**

/**
* Returns a new timeframe where each **row** is mapped by the iterator function. For mapping over columns, use apply
* Returns a new timeframe where each **row** is mapped by the iterator function. For mapping over columns, use apply()
* @param fn Iterator function

@@ -159,4 +180,5 @@ * @returns {TimeFrame}

/**
* Applies transformations to the columns of the dataframe, each column is passed to the iterator like a timeserie.
* Applies transformations to the **columns** of the dataframe, each column is passed to the iterator like a timeserie.
* If no column is specified, all columns will be used.
* For mapping over rows, see map()
* @param fn {TimeserieIterator}

@@ -166,2 +188,8 @@ */

/**
* Partitions The TimeFrame into multiple sub timeframes by dividing the time column into even groups. Returns an array of sub TimeFrames.
* @param options
* @returns
*/
partition(options: TimeFramePartitionOptions): TimeFrame[];
/**
* Pretty prints the TimeFrame to the console

@@ -171,6 +199,2 @@ */

}
declare class TimeFrameGrouper {
timeframes: TimeFrame[];
constructor(timeframes?: TimeFrame[]);
}
/**

@@ -177,0 +201,0 @@ * @class TimeframesResampler

import { TimeSerie } from './timeserie';
import { TimeInterval } from './types';
// interface Column {
// name: string;
// data: PointValue[];
// metadata: Metadata;
// }
import { getOrderOfMagnitude } from './utils';
const test = (r, f, t, includeSuperior, includeInferior) => {
if (includeInferior && includeSuperior) {
return r >= f && r <= t;
}
else if (includeInferior && !includeSuperior) {
return r >= f && r < t;
}
else if (!includeInferior && includeSuperior) {
return r > f && r <= t;
}
else {
return r > f && r < t;
}
};
/**

@@ -25,21 +35,47 @@ * @class TimeFrame

this.metadata = metadata;
this.columnNames = [...new Set(data.map((row) => Object.keys(row)).flat())].filter((name) => name !== 'time');
this.data = data
.concat([])
.sort((a, b) => {
const ta = new Date(a.time).getTime();
const tb = new Date(b.time).getTime();
if (ta >= tb) {
return 1;
}
else {
return -1;
}
})
.reduce((acc, row) => {
const { time, ...rest } = row;
acc[row.time] ? acc[row.time] = { ...acc[row.time], ...rest } : acc[row.time] = rest;
return acc;
}, {});
if (data.length === 0) {
this.data = {};
this.columnNames = [];
}
else {
this.columnNames = [...new Set(data
.filter((row) => !!row)
.map((row) => Object.keys(row))
.flat())]
.filter((name) => name !== 'time');
this.data = data
.concat([])
.filter((row) => !!row)
.sort((a, b) => {
const ta = new Date(a.time).getTime();
const tb = new Date(b.time).getTime();
if (ta >= tb) {
return 1;
}
else {
return -1;
}
})
.reduce((acc, row) => {
const { time, ...rest } = row;
acc[row.time] ? acc[row.time] = { ...acc[row.time], ...rest } : acc[row.time] = rest;
return acc;
}, {});
}
this.indexes = {
time: Object.keys(this.data),
checkpoints: null
};
}
buildTimeCheckpoints() {
if (!this.indexes.checkpoints) {
this.indexes.checkpoints = {};
const o = getOrderOfMagnitude(this.indexes.time.length);
this.indexes.time.forEach((el, i) => {
if (i % (o / 100) === 0) {
this.indexes.checkpoints[el] = i;
}
});
}
}
/**

@@ -53,2 +89,7 @@ * Creates a new timeframe preserving the metadata but replacing data

}
/**
* Creates a new TimeFrame using this timeframe's metadata and using `series` as columns.
* @param series Array of timeseries which will be used as timeframe columns
* @returns
*/
recreateFromSeries(series) {

@@ -61,3 +102,3 @@ const tf = TimeFrame.fromTimeseries(series);

*
* @param data An object which is telemetry V1 output {device1: {property1:[[time,value]],property2:[[time,value]]}}
* @param data An object which is telemetry V1 output (Apio Internal)
* @returns

@@ -96,5 +137,6 @@ */

* @param timeseries An array of TimeSerie objects
* @param options.fill Value to use as filler when a column does not hold a value for a specific time
* @returns A new TimeFrame, where each timeserie represent a column
*/
static fromTimeseries(timeseries) {
static fromTimeseries(timeseries, options) {
const data = {};

@@ -106,3 +148,3 @@ const metadata = {};

data[point[0]] = data[point[0]] || {};
data[point[0]][ts.name] = point[1];
data[point[0]][ts.name] = point[1] || options?.fill || null;
});

@@ -113,17 +155,26 @@ });

/**
* Concatenates timeframes. Throws error if overlapping times are found. Use merge to join together
* Concatenates timeframes. Throws error if overlapping times are found. Use join() to join together
* timeframes with overlapping times
* @param timeframes Array of timeframes to concatenate
*/
// static concat(timeframes: TimeFrame[]) : TimeFrame{
// }
static concat(timeframes) {
return new TimeFrame({ data: timeframes.map((tf) => tf.rows()).flat() });
}
/**
*
* Joins multiple timeframes by adding the columns together and merging indexes (time)
* @param timeframes Array of timeframes to join together
* @returns A timeframe with joined columns
*/
static join(timeframes) {
return TimeFrame.fromInternalFormat(Object.assign({}, ...timeframes.map(tf => tf.data)));
join(timeframes) {
return TimeFrame.fromInternalFormat(Object.assign({}, ...(timeframes.map(tf => tf.data).concat([this.data]))));
}
/**
* Add a column to the timeframe
* @param serie The new column
* @returns {TimeFrame}
*/
addColumn(serie) {
return this.recreateFromSeries(this.columns().concat([serie]));
}
/**
*

@@ -134,2 +185,5 @@ * @param name The name of the wanted column

column(name) {
if (!this.columnNames.includes(name)) {
return null;
}
const data = Object.entries(this.data).map(([time, values]) => ([time, values[name]]));

@@ -149,2 +203,5 @@ const metadata = this.metadata[name] || {};

}
/**
* Returns a new timeframe with a subset of columns.
*/
project(columns) {

@@ -169,3 +226,3 @@ const nonExisting = columns.filter((name) => !this.columnNames.includes(name));

*
* @returns The value at the given index (position, not time)
* @returns The row at the given index (position, not time)
*/

@@ -179,3 +236,3 @@ atIndex(index) {

length() {
return Object.keys(this.data).length;
return this.indexes.time.length;
}

@@ -187,3 +244,3 @@ /**

shape() {
return [Object.keys(this.data).length, this.columnNames.length];
return [this.indexes.time.length, this.columnNames.length];
}

@@ -195,2 +252,5 @@ /**

first() {
if (this.length() === 0) {
return null;
}
return this.rows()?.[0] || null;

@@ -203,2 +263,5 @@ }

last() {
if (this.length() === 0) {
return null;
}
const t = this.rows();

@@ -211,2 +274,5 @@ return t?.[t.length - 1] || null;

sum() {
if (this.length() === 0) {
return null;
}
const time = this.first().time;

@@ -219,2 +285,5 @@ return this.columns().reduce((acc, column) => { acc[column.name] = column.sum(); return acc; }, { time });

avg() {
if (this.length() === 0) {
return null;
}
const time = this.first().time;

@@ -227,2 +296,5 @@ return this.columns().reduce((acc, column) => { acc[column.name] = column.avg(); return acc; }, { time });

delta() {
if (this.length() === 0) {
return null;
}
const time = this.first().time;

@@ -235,2 +307,5 @@ return this.columns().reduce((acc, column) => { acc[column.name] = column.delta(); return acc; }, { time });

max() {
if (this.length() === 0) {
return null;
}
const time = this.first().time;

@@ -243,2 +318,5 @@ return this.columns().reduce((acc, column) => { acc[column.name] = column.max()[1]; return acc; }, { time });

min() {
if (this.length() === 0) {
return null;
}
const time = this.first().time;

@@ -254,58 +332,63 @@ return this.columns().reduce((acc, column) => { acc[column.name] = column.min()[1]; return acc; }, { time });

betweenTime(from, to, options = { includeInferior: true, includeSuperior: true }) {
/**
* Here we might have to scan a huge sorted array. To prevent scanning too many useless keys
* we index the array by mapping a certain number of timestamps to positions in the time index.
*
* This sparse index is smaller than the full index and fester to use for scanning ranges like in this case.
*/
this.buildTimeCheckpoints();
const { includeInferior, includeSuperior } = options;
const f = new Date(from);
const t = new Date(to);
return this.filter((row) => {
if (includeInferior && includeSuperior) {
return new Date(row.time).getTime() >= f.getTime() && new Date(row.time).getTime() <= t.getTime();
const f = new Date(from).getTime();
const t = new Date(to).getTime();
const keys = Object.keys(this.indexes.checkpoints);
// Indice della prima chiave che va oltre il from
const startingPointValueIndex = keys.findIndex((key) => new Date(key).getTime() > from);
// Ultimo timestamp prima di quell'indice
let startingPoint = this.indexes.checkpoints[keys[startingPointValueIndex - 1]];
if (!startingPoint) {
// Siamo oltre l'ultimo checkpoint
const lastCheckpoint = keys[keys.length - 1];
startingPoint = this.indexes.checkpoints[lastCheckpoint];
}
const goodRows = [];
for (let i = startingPoint; i < this.indexes.time.length; i++) {
const curr = new Date(this.indexes.time[i]).getTime();
if (curr < f) {
continue;
}
else if (includeInferior && !includeSuperior) {
return new Date(row.time).getTime() >= f.getTime() && new Date(row.time).getTime() < t.getTime();
if (curr > t) {
break;
}
else if (!includeInferior && includeSuperior) {
return new Date(row.time).getTime() > f.getTime() && new Date(row.time).getTime() <= t.getTime();
if (test(curr, f, t, includeSuperior, includeInferior)) {
goodRows.push({ time: this.indexes.time[i], ...this.data[this.indexes.time[i]] });
}
else {
return new Date(row.time).getTime() > f.getTime() && new Date(row.time).getTime() < t.getTime();
}
});
}
return this.recreate(goodRows);
}
groupBy(column) {
return new TimeFrameGrouper([...new Set(this.column(column).values())]
.map((v) => new TimeFrame({
data: this.rows().filter((row) => { return row[column] === v; }),
metadata: this.metadata
})));
}
/**
*
* @param intervalSizeMs An interval in milliseconds
* @returns {TimeFramesResampler} a resampler instance that can be used to obtain a new timeframe by aggregating values
* Applies transformations to TimeFrame. Each transformation is defined as an operation between columns. Allows, for example, to
* aggregate two columns into one by applying scalar operations element-wise.
* @param aggregations An array of AggregationConfigurations
* @param options? Options
* @returns {TimeFrame}
* @example
* // Average by hour
* const hourlyAverage = ts.resample(1000 * 60 * 60).avg()
* // Creates a 3 new cilumns named power1,power2 and power3 by multiplying other columns
* // Then combines the 3 powerN by addition
* // The resulting TimeFrame has only 1 column named power
* tf = tf.aggregate([
* { output: 'power1', columns: ['voltage1', 'current1'], operation: 'mul' },
* { output: 'power2', columns: ['voltage2', 'current2'], operation: 'mul' },
* { output: 'power3', columns: ['voltage3', 'current3'], operation: 'mul' }
* ])
* .aggregate([{ output: 'power', columns: ['power1', 'power2', 'power3'], operation: 'add'}])
*/
aggregate(aggregations) {
// Aggregazione per colonne
// Applica operazioni a gruppi di colonne per trasformarle in altre colonne
// Ad esempio ho le colonne device1.energy device2.energy device1.power device2.power
// voglio poter fare il resample per delta alle energie, per avg alle potenze per poi aggregare le energie
/**
* const totalenergy = tf.project(['device1.energy','device2.energy'])
* .resample({size:'15min'})
* .delta() // qui ho un tf con le due colonne energia contenenti i delta quartorari
* .aggregate([
* {output:"totalenergy, operation:"sum", columns:['device1.energy','device2.energy']}
* ]) // Qui ho un TF con 1 sola colonna chiamata totalenergy che contiene la somma quartoraria delle energie
*/
// L'aggregazione per righe è il resampling
// Vedi https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.aggregate.html
return this.recreateFromSeries(aggregations.map((agg) => {
const columns = agg.columns
aggregate(aggregations, options = {}) {
const newColumns = aggregations.map((agg) => {
const columnsToAggregate = agg.columns
.map((colName) => this.column(colName));
if (typeof agg.operation === 'function') {
return TimeSerie.internals.combine(columns, agg.operation, { name: agg.output });
return TimeSerie.internals.combine(columnsToAggregate, agg.operation, { name: agg.output });
}
else if (typeof agg.operation === 'string' && agg.operation in TimeSerie.internals.combiners) {
return TimeSerie.internals.combine(columns, TimeSerie.internals.combiners[agg.operation], { name: agg.output });
return TimeSerie.internals.combine(columnsToAggregate, TimeSerie.internals.combiners[agg.operation], { name: agg.output });
}

@@ -315,3 +398,7 @@ else {

}
}));
});
if (options.keepOriginalColumns) {
return this.recreateFromSeries(newColumns.concat(this.columns()));
}
return this.recreateFromSeries(newColumns);
}

@@ -330,3 +417,3 @@ resample(options) {

/**
* Returns a new timeframe where each **row** is mapped by the iterator function. For mapping over columns, use apply
* Returns a new timeframe where each **row** is mapped by the iterator function. For mapping over columns, use apply()
* @param fn Iterator function

@@ -339,4 +426,5 @@ * @returns {TimeFrame}

/**
* Applies transformations to the columns of the dataframe, each column is passed to the iterator like a timeserie.
* Applies transformations to the **columns** of the dataframe, each column is passed to the iterator like a timeserie.
* If no column is specified, all columns will be used.
* For mapping over rows, see map()
* @param fn {TimeserieIterator}

@@ -352,2 +440,21 @@ */

/**
* Partitions The TimeFrame into multiple sub timeframes by dividing the time column into even groups. Returns an array of sub TimeFrames.
* @param options
* @returns
*/
partition(options) {
const from = options.from || this.first()?.time;
if (!from) {
throw new Error('Cannot infer a lower bound for resample');
}
const to = options.to || this.last()?.time;
if (!to) {
throw new Error('Cannot infer an upper bound for resample');
}
const intervals = TimeInterval.generate(from, to, options.interval);
return intervals.map((interval) => {
return this.betweenTime(interval.from, interval.to, { includeInferior: true, includeSuperior: false });
});
}
/**
* Pretty prints the TimeFrame to the console

@@ -359,7 +466,2 @@ */

}
class TimeFrameGrouper {
constructor(timeframes = []) {
this.timeframes = timeframes;
}
}
/**

@@ -372,37 +474,47 @@ * @class TimeframesResampler

this.timeframe = timeframe;
const from = options.from || timeframe.first()?.time;
if (!from) {
throw new Error('Cannot infer a lower bound for resample');
}
const to = options.to || timeframe.last()?.time;
if (!to) {
throw new Error('Cannot infer an upper bound for resample');
}
const intervals = TimeInterval.generate(from, to, options.size);
this.chunks = intervals.map((interval) => {
return timeframe.betweenTime(interval.from, interval.to, { includeInferior: true, includeSuperior: false });
});
this.chunks = this.timeframe.partition({ from: options.from, to: options.to, interval: options.size });
}
sum() {
if (this.chunks.length === 0) {
return this.timeframe;
}
return this.timeframe.recreate(this.chunks.map((tf) => tf.sum()));
}
avg() {
if (this.chunks.length === 0) {
return this.timeframe;
}
return this.timeframe.recreate(this.chunks.map((tf) => tf.avg()));
}
first() {
if (this.chunks.length === 0) {
return this.timeframe;
}
return this.timeframe.recreate(this.chunks.map((tf) => tf.first()));
}
last() {
if (this.chunks.length === 0) {
return this.timeframe;
}
return this.timeframe.recreate(this.chunks.map((tf) => tf.last()));
}
max() {
if (this.chunks.length === 0) {
return this.timeframe;
}
return this.timeframe.recreate(this.chunks.map((tf) => tf.max()));
}
min() {
if (this.chunks.length === 0) {
return this.timeframe;
}
return this.timeframe.recreate(this.chunks.map((tf) => tf.min()));
}
delta() {
if (this.chunks.length === 0) {
return this.timeframe;
}
return this.timeframe.recreate(this.chunks.map((tf) => tf.delta()));
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWZyYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90aW1lZnJhbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN2QyxPQUFPLEVBQTRILFlBQVksRUFBNkMsTUFBTSxTQUFTLENBQUE7QUFZM00scUJBQXFCO0FBQ3JCLGtCQUFrQjtBQUNsQix3QkFBd0I7QUFDeEIsd0JBQXdCO0FBQ3hCLElBQUk7QUFFSjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sU0FBUztJQUtwQjs7OztPQUlHO0lBQ0gsWUFBYSxPQUF5QjtRQVQ3QixTQUFJLEdBQXNCLEVBQUUsQ0FBQTtRQUNyQyxnQkFBVyxHQUFhLEVBQUUsQ0FBQTtRQUMxQixhQUFRLEdBQWEsRUFBRSxDQUFBO1FBUXJCLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUN2QywyREFBMkQ7UUFDM0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQTtRQUMxSCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUk7YUFDYixNQUFNLENBQUMsRUFBRSxDQUFDO2FBQ1YsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2IsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9B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Q0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUE7SUFDakMsQ0FBQztJQUVEOzs7TUFHRTtJQUNGLElBQUk7UUFDRixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDckIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQTtRQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFBLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUMxRyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQTtRQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFBLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUMxRyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQTtRQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVB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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWZyYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90aW1lZnJhbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN2QyxPQUFPLEVBQTROLFlBQVksRUFBcUIsTUFBTSxTQUFTLENBQUE7QUFDblIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzdDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxFQUFFO0lBQ3pELElBQUksZUFBZSxJQUFJLGVBQWUsRUFBRTtRQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtLQUN4QjtTQUFNLElBQUksZUFBZSxJQUFJLENBQUMsZUFBZSxFQUFFO1FBQzlDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0tBQ3ZCO1NBQU0sSUFBSSxDQUFDLGVBQWUsSUFBSSxlQUFlLEVBQUU7UUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7S0FDdkI7U0FBTTtRQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0tBQ3RCO0FBQ0gsQ0FBQyxDQUFBO0FBS0Q7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFNcEI7Ozs7T0FJRztJQUNILFlBQWEsT0FBeUI7UUFWckIsU0FBSSxHQUFzQixFQUFFLENBQUE7UUFDN0MsZ0JBQVcsR0FBYSxFQUFFLENBQUE7UUFDMUIsYUFBUSxHQUFhLEVBQUUsQ0FBQTtRQVNyQixNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsR0FBRyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFDdkMsMkRBQTJEO1FBQzNELElBQUks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QVEsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUN4RyxDQUFDO0lBRUQsR0FBRztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFBO1NBQUU7UUFDdkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5RSxDQUFDO0lBRUQsR0FBRztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFBO1NBQUU7UUFDdkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5RSxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFBO1NBQUU7UUFDdkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNoRixDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFBO1NBQUU7UUFDdkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUMvRSxDQUFDO0lBRUQsR0FBRztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFBO1NBQUU7UUFDdkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5RSxDQUFDO0lBRUQsR0FBRztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFBO1NBQUU7UUFDdkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5RSxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFBO1NBQUU7UUFDdkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNoRixDQUFDO0NBQ0YifQ==
import test from 'ava';
import { TimeFrame } from './timeframe';
import { TimeSerie } from './timeserie';
test('TimeFrame::column() should return the correct timeserie', (t) => {
test('TimeFrame.column() should return the correct timeserie', (t) => {
const data = [

@@ -16,3 +16,3 @@ { time: '2021-01-01', energy: 1, power: 4 },

});
test('TimeFrame::length() should return the correct value', (t) => {
test('TimeFrame.length() should return the correct value', (t) => {
const data = [

@@ -26,3 +26,3 @@ { time: '2021-01-01', energy: 1, power: 4 },

});
test('TimeFrame::shape() should return the correct value', (t) => {
test('TimeFrame.shape() should return the correct value', (t) => {
const data = [

@@ -36,3 +36,3 @@ { time: '2021-01-01', energy: 1, power: 4 },

});
test('TimeFrame::atTime() should return the correct row', (t) => {
test('TimeFrame.atTime() should return the correct row', (t) => {
const data = [

@@ -47,3 +47,3 @@ { time: '2021-01-01', energy: 1, power: 4 },

});
test('TimeFrame::toArray() should return an array of rows', (t) => {
test('TimeFrame.toArray() should return an array of rows', (t) => {
const data = [

@@ -58,3 +58,3 @@ { time: '2021-01-01', energy: 1, power: 4 },

});
test('TimeFrame::fromTelemetryV1Output() should return the correct timeframe', (t) => {
test('TimeFrame.fromTelemetryV1Output() should return the correct timeframe', (t) => {
const data = {

@@ -78,3 +78,3 @@ device1: {

});
test('TimeFrame::fromTimeseries() should return the correct timeframe', (t) => {
test('TimeFrame.fromTimeseries() should return the correct timeframe', (t) => {
const energyData = [

@@ -100,3 +100,3 @@ ['2021-01-01T00:00:00.000Z', 4],

});
test('TimeFrame::filter() should return the correct timeframe', (t) => {
test('TimeFrame.filter() should return the correct timeframe', (t) => {
const data = [

@@ -111,3 +111,3 @@ { time: '2021-01-01', energy: 1, power: 4 },

});
test('TimeFrame::join() should return the correct timeframe', (t) => {
test('TimeFrame.join() should return the correct timeframe', (t) => {
const data1 = [

@@ -122,27 +122,6 @@ { time: '2021-01-01', energy: 1, power: 4 }

const tf2 = new TimeFrame({ data: data2 });
const joined = TimeFrame.join([tf1, tf2]);
const joined = tf1.join([tf2]);
t.is(joined.length(), 3);
});
// test('TimeFrame::resample().sum() should return the correct timeframes', (t) => {
// const data = [
// { time: '2021-01-01T00:00:00.000Z', energy: 1, power: -4 },
// { time: '2021-01-02T00:00:00.000Z', energy: 1, power: 3 },
// { time: '2021-01-03T00:00:00.000Z', energy: 1, power: -4 },
// { time: '2021-01-04T00:00:00.000Z', energy: 1, power: 5 }
// ]
// const tf = new TimeFrame({ data })
// const resampled = tf.resample({
// size: 1000 * 60 * 60 * 48,
// aggregations: {
// energy: 'sum',
// power: 'avg'
// }
// })
// t.is(resampled.length(), 2)
// t.is(resampled.rows()[0].energy, 2)
// t.is(resampled.rows()[0].power, -0.5)
// t.is(resampled.rows()[1].energy, 2)
// t.is(resampled.rows()[1].power, 0.5)
// })
test('TimeFrame::apply() should correctly modify columns', (t) => {
test('TimeFrame.apply() should correctly modify columns', (t) => {
const energyData = [

@@ -186,3 +165,3 @@ ['2021-01-01T00:00:00.000Z', 4],

});
test('Timeframe.sum() should correctly sum all columns', t => {
test('TimeFrame.sum() should correctly sum all columns', t => {
const data = [

@@ -199,3 +178,3 @@ { time: '2021-01-01T00:00:00.000Z', energy: 1, power: 4 },

});
test('Timeframe.delta() should correctly delta all columns', t => {
test('TimeFrame.delta() should correctly delta all columns', t => {
const data = [

@@ -212,4 +191,40 @@ { time: '2021-01-01T00:00:00.000Z', energy: 1, expenergy: 4 },

});
test('Timeframe.aggregate() should correctly aggregate columns', t => {
test('TimeFrame.max() should correctly max() all columns', t => {
const data = [
{ time: '2021-01-01T00:00:00.000Z', energy: 1, power: 4 },
{ time: '2021-01-02T00:00:00.000Z', energy: 7, power: 3 },
{ time: '2021-01-03T00:00:00.000Z', energy: 2, power: 2 },
{ time: '2021-01-04T00:00:00.000Z', energy: 1, power: 9 }
];
const row = new TimeFrame({ data }).max();
t.is(row.time, '2021-01-01T00:00:00.000Z');
t.is(row.energy, 7);
t.is(row.power, 9);
});
test('TimeFrame.min() should correctly min() all columns', t => {
const data = [
{ time: '2021-01-01T00:00:00.000Z', energy: 3, power: 1 },
{ time: '2021-01-02T00:00:00.000Z', energy: 7, power: 3 },
{ time: '2021-01-03T00:00:00.000Z', energy: 2, power: 2 },
{ time: '2021-01-04T00:00:00.000Z', energy: 1, power: 9 }
];
const row = new TimeFrame({ data }).min();
t.is(row.time, '2021-01-01T00:00:00.000Z');
t.is(row.energy, 1);
t.is(row.power, 1);
});
test('TimeFrame.avg() should correctly avg() all columns', t => {
const data = [
{ time: '2021-01-01T00:00:00.000Z', energy: 4, power: 1 },
{ time: '2021-01-02T00:00:00.000Z', energy: 4, power: 1 },
{ time: '2021-01-03T00:00:00.000Z', energy: 8, power: 11 },
{ time: '2021-01-04T00:00:00.000Z', energy: 8, power: 11 }
];
const row = new TimeFrame({ data }).avg();
t.is(row.time, '2021-01-01T00:00:00.000Z');
t.is(row.energy, 6);
t.is(row.power, 6);
});
test('TimeFrame.aggregate() should correctly aggregate columns', t => {
const data = [
{ time: '2021-01-01T00:00:00.000Z', energy1: 1, energy2: 4 },

@@ -221,4 +236,3 @@ { time: '2021-01-02T00:00:00.000Z', energy1: 2, energy2: 8 },

const agg = new TimeFrame({ data, metadata: { hello: 'world' } })
.aggregate([{ output: 'totalenergy', columns: ['energy1', 'energy2'], operation: 'sum' }]);
console.log('Aggregato umano', agg);
.aggregate([{ output: 'totalenergy', columns: ['energy1', 'energy2'], operation: 'add' }]);
t.is(agg.atIndex(0).totalenergy, 5);

@@ -230,2 +244,15 @@ t.is(agg.atIndex(1).totalenergy, 10);

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWZyYW1lLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RpbWVmcmFtZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLEtBQUssQ0FBQTtBQUV0QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFHdkMsSUFBSSxDQUFDLHlEQUF5RCxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDcEUsTUFBTSxJQUFJLEdBQUc7UUFDWCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1FBQzNDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7S0FDNUMsQ0FBQTtJQUNELE1BQU0sRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUVsQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRWxDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sWUFBWSxTQUFTLENBQUMsQ0FBQTtJQUN2QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUN4QixDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDcEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3RDLENBQUMsQ0FBQyxDQUFBO0FBRUYsSUFBSSxDQUFDLHFEQUFxRCxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDaEUsTUFBTSxJQUFJLEdBQUc7UUFDWCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1FBQzNDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7UUFDM0MsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtLQUM1QyxDQUFBO0lBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRWxDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3RCLENBQUMsQ0FBQyxDQUFBO0FBQ0YsSUFBSSxDQUFDLG9EQUFvRCxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDL0QsTUFBTSxJQUFJLEdBQUc7UUFDWCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1FBQzNDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7UUFDM0MsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtLQUM1QyxDQUFBO0lBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ2xDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDakMsQ0FBQyxDQUFDLENBQUE7QUFFRixJQUFJLENBQUMsbURBQW1ELEVBQUUs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
test('TimeFrame.project() should correctly aggregate columns', t => {
const data = [
{ time: '2021-01-01T00:00:00.000Z', energy1: 1, energy2: 4 },
{ time: '2021-01-02T00:00:00.000Z', energy1: 2, energy2: 8 },
{ time: '2021-01-03T00:00:00.000Z', energy1: 3, energy2: 12 },
{ time: '2021-01-04T00:00:00.000Z', energy1: 4, energy2: 16 }
];
const tf = new TimeFrame({ data, metadata: { hello: 'world' } });
const projected = tf.project(['energy1']);
t.is(tf.columns().length, 2);
t.is(projected.columns().length, 1);
t.is(projected.metadata.hello, 'world');
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWZyYW1lLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RpbWVmcmFtZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLEtBQUssQ0FBQTtBQUV0QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFHdkMsSUFBSSxDQUFDLHdEQUF3RCxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDbkUsTUFBTSxJQUFJLEdBQUc7UUFDWCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1FBQzNDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7S0FDNUMsQ0FBQTtJQUNELE1BQU0sRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUVsQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRWxDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sWUFBWSxTQUFTLENBQUMsQ0FBQTtJQUN2QyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUN4QixDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDcEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3RDLENBQUMsQ0FBQyxDQUFBO0FBRUYsSUFBSSxDQUFDLG9EQUFvRCxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDL0QsTUFBTSxJQUFJLEdBQUc7UUFDWCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1FBQzNDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7UUFDM0MsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtLQUM1QyxDQUFBO0lBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRWxDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3RCLENBQUMsQ0FBQyxDQUFBO0FBQ0YsSUFBSSxDQUFDLG1EQUFtRCxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDOUQsTUFBTSxJQUFJLEdBQUc7UUFDWCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1FBQzNDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7UUFDM0MsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtLQUM1QyxDQUFBO0lBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ2xDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDakMsQ0FBQyxDQUFDLENBQUE7QUFFRixJQUFJLENBQUMsa0RBQWtELEVBQUUs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MEIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7S0FDMUQsQ0FBQTtJQUNELE1BQU0sRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFFaEUsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUM1QixJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRTtLQUMxQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUE7SUFFUixDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUMzQixDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLENBQUMsQ0FBQTtJQUMxRCxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDbkMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNuQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDbkMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUN6QyxDQUFDLENBQUMsQ0FBQTtBQUVG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QUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7UUFDN0QsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO0tBQzlELENBQUE7SUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ2hFLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO0lBRXpDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM1QixDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDbkMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUN6QyxDQUFDLENBQUMsQ0FBQSJ9

@@ -1,7 +0,2 @@

import { DateLike, Metadata, Point, PointValue, ResampleOptions, TimeseriePointIterator } from './types';
interface TimeSeriesOperationOptions {
name: string;
metadata?: {};
fill?: number;
}
import { DateLike, FromIndexOptions, Index, Metadata, Point, PointValue, ReindexOptions, ResampleOptions, TimeseriePointIterator, TimeSeriesOperationOptions } from './types';
/**

@@ -12,7 +7,20 @@ * A data structure for a time serie.

static internals: any;
static createIndex: Function;
readonly data: Point[];
readonly name: string;
name: string;
metadata: Metadata;
index: {
[key: string]: PointValue;
};
constructor(name: string, serie: Point[] | ReadonlyArray<Point>, metadata?: Metadata);
static fromIndex(index: Index, options: FromIndexOptions): TimeSerie;
/**
* Recreates the serie's index
* @param index The new index to use. Can be created with createIndex()
* @see createIndex
* @param options
* @return The reindexed timeserie
*/
reindex(index: Index, options?: ReindexOptions): TimeSerie;
/**
*

@@ -22,2 +30,3 @@ * @returns Array of points, where each point is a tuple with ISO8601 timestamp and value

toArray(): Point[];
rename(name: string): this;
/**

@@ -97,6 +106,2 @@ * Creates a new serie preserving the name and the metadata but replacing data

avg(): number;
/**
* @returns The time weighted average of points. Every point is weighted by the timestamp, in this way we handle "data holes"
*/
weightedAvg(): number;
delta(): number;

@@ -155,3 +160,7 @@ /**

round(decimals: number): TimeSerie;
combine(series: TimeSerie[], options: TimeSeriesOperationOptions): TimeSerie;
combine(operation: string, series: TimeSerie[], options?: TimeSeriesOperationOptions): TimeSerie;
add(value: number | TimeSerie): TimeSerie;
sub(value: number | TimeSerie): TimeSerie;
mul(value: number | TimeSerie): TimeSerie;
div(value: number | TimeSerie): TimeSerie;
}

@@ -158,0 +167,0 @@ /**

@@ -1,2 +0,2 @@

import { TimeInterval } from './types';
import { createIndex, TimeInterval } from './types';
import { DateLikeToString } from './utils';

@@ -32,4 +32,21 @@ function isNumeric(str) {

this.metadata = metadata;
this.index = [].concat(this.data).reduce((acc, p) => {
acc[p[0]] = p;
return acc;
}, {});
}
static fromIndex(index, options) {
return new TimeSerie(options.name, index.map((i) => ([i, options?.fill || null])), options.metadata);
}
/**
* Recreates the serie's index
* @param index The new index to use. Can be created with createIndex()
* @see createIndex
* @param options
* @return The reindexed timeserie
*/
reindex(index, options) {
return new TimeSerie(this.name, index.map((i) => ([i, this.atTime(i) || options?.fill || null])), this.metadata);
}
/**
*

@@ -41,2 +58,6 @@ * @returns Array of points, where each point is a tuple with ISO8601 timestamp and value

}
rename(name) {
this.name = name;
return this;
}
/**

@@ -129,11 +150,3 @@ * Creates a new serie preserving the name and the metadata but replacing data

atTime(time, fillValue = null) {
const point = this.data.find((point) => {
return point[0] === DateLikeToString(time);
});
if (point) {
return point[1];
}
else {
return fillValue;
}
return this.index?.[DateLikeToString(time)]?.[1] || fillValue;
}

@@ -210,21 +223,2 @@ /**

}
/**
* @returns The time weighted average of points. Every point is weighted by the timestamp, in this way we handle "data holes"
*/
weightedAvg() {
if (this.length() === 0) {
return 0;
}
if (this.length() === 1) {
return 1;
}
const numerator = this.data.map((p) => {
const t = new Date(p[0]).getTime();
return t * p[1];
}).reduce((a, b) => { return a + b; }, 0);
const denominator = this.data.map((p) => {
return new Date(p[0]).getTime();
}).reduce((a, b) => { return a + b; }, 0);
return numerator / denominator;
}
delta() {

@@ -333,6 +327,41 @@ if (this.length() <= 0) {

// Operation between timeseries
combine(series, options) {
return TimeSerie.internals.add(series.concat(this), options);
combine(operation, series, options = {}) {
options.name = options.name || this.name;
options.metadata = options.metadata || this.metadata;
return TimeSerie.internals.combine([this.recreate(this.data)].concat(series), TimeSerie.internals.combiners[operation], options);
}
add(value) {
if (typeof value === 'number') {
return this.map((point) => [point[0], point[1] + value]);
}
else {
return this.combine('add', [value]);
}
}
sub(value) {
if (typeof value === 'number') {
return this.map((point) => [point[0], point[1] - value]);
}
else {
return this.combine('sub', [value]);
}
}
mul(value) {
if (typeof value === 'number') {
return this.map((point) => [point[0], point[1] * value]);
}
else {
return this.combine('mul', [value]);
}
}
div(value) {
if (typeof value === 'number') {
return this.map((point) => [point[0], point[1] / value]);
}
else {
return this.combine('div', [value]);
}
}
}
TimeSerie.internals = {};
// Estrae gli indici dalla prima serie o li prende dalle opzioni

@@ -344,4 +373,3 @@ // Per ogni elemento dell'indice scorre gli elementi di tutte le timeserie e li combina con una funzione combiner

TimeSerie.internals.combine = (series, combiner, options) => {
const indexes = series[0].data.map((p) => p[0]);
const points = indexes.map((idx) => {
const points = series[0].data.map((p) => p[0]).map((idx) => {
const values = series.map((serie) => serie.atTime(idx, options.fill));

@@ -355,6 +383,6 @@ return [

};
TimeSerie.internals.combiners.sum = (points) => points.reduce((a, b) => a + b, 0);
TimeSerie.internals.combiners.diff = (points) => points.reduce((a, b) => a - b, 0);
TimeSerie.internals.combiners.mul = (points) => points.reduce((a, b) => a * b, 0);
TimeSerie.internals.combiners.div = (points) => points.reduce((a, b) => a / b, 0);
TimeSerie.internals.combiners.add = (points) => points.reduce((a, b) => a + b, 0);
TimeSerie.internals.combiners.sub = (points) => points.reduce((a, b) => a - b, points[0] * 2);
TimeSerie.internals.combiners.mul = (points) => points.reduce((a, b) => a * b, 1);
TimeSerie.internals.combiners.div = (points) => points.reduce((a, b) => a / b, points[0] * points[0]);
TimeSerie.internals.combiners.avg = (points) => (TimeSerie.internals.combiners.sum(points) / points.length);

@@ -403,2 +431,3 @@ /**

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXNlcmllLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90aW1lc2VyaWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEwRCxZQUFZLEVBQWtELE1BQU0sU0FBUyxDQUFBO0FBQzlJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQVExQyxTQUFTLFNBQVMsQ0FBRSxHQUFvQjtJQUN0QyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQy9DLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFBLENBQUMsMkJBQTJCO0lBQ3JFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBVSxDQUFDLElBQUksbUdBQW1HO1FBQzlILENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLENBQUMsMkNBQTJDO0FBQ3ZFLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBRSxNQUFzQztJQUN6RCxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBUSxFQUFFLENBQVEsRUFBRSxFQUFFO1FBQ25ELElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNmLE9BQU8sQ0FBQyxDQUFBO1NBQ1Q7YUFBTTtZQUNMLE9BQU8sQ0FBQyxDQUFDLENBQUE7U0FDVjtJQUNILENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFFLENBQVE7SUFDL0IsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3ZDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBS3BCLFlBQWEsSUFBWSxFQUFFLEtBQXFDLEVBQUUsV0FBcUIsRUFBRTtRQUN2RixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7SUFDMUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUE7SUFDbEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUUsS0FBcUM7UUFDN0MsT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDdkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjO1FBQ1osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDbEUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ25CLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxNQUFNLEVBQUU7WUFDVixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNqQjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUE7U0FDWjtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlO1FBQ2IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUM3QyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbkIsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLE1BQU0sRUFBRTtZQUNWLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ2pCO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQTtTQUNaO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWM7UUFDWixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUNsRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbkIsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLE1BQU0sRUFBRTtZQUNWLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ2pCO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQTtTQUNaO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILGVBQWU7UUFDYixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQzdDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNuQixDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksTUFBTSxFQUFFO1lBQ1YsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDakI7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFBO1NBQ1o7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFFLElBQWMsRUFBRSxZQUFvQixJQUFJO1FBQzlDLE1BQU0sS0FBSyxHQUFzQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQy9ELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzVDLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxLQUFLLEVBQUU7WUFDVCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNoQjthQUFNO1lBQ0wsT0FBTyxTQUFTLENBQUE7U0FDakI7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTyxDQUFFLEtBQWE7UUFDcEIsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1NBQ3ZDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzVCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBRSxJQUFjLEVBQUUsRUFBWSxFQUFFLE9BQU8sR0FBRyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRTtRQUNuRyxNQUFNLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUNwRCxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN4QixNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN0QixNQUFNLElBQUksR0FBWSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQ3RELElBQUksZUFBZSxJQUFJLGVBQWUsRUFBRTtnQkFDdEMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO2FBQ2xHO2lCQUFNLElBQUksZUFBZSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUM5QyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7YUFDakc7aUJBQU0sSUFBSSxDQUFDLGVBQWUsSUFBSSxlQUFlLEVBQUU7Z0JBQzlDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTthQUNqRztpQkFBTTtnQkFDTCxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7YUFDaEc7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM1QixDQUFDO0lBRUQ7Ozs7O0tBS0M7SUFDRCxjQUFjLENBQUUsSUFBWSxFQUFFLEVBQVU7UUFDdEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBUSxFQUFFLENBQVMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM5RSxDQUFDO0lBRUQsTUFBTSxDQUFFLEVBQTBCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFFRCxHQUFHLENBQUUsRUFBMEI7UUFDN0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3pCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVELElBQUk7UUFDRixPQUFPLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUVELEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3pGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHO1FBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLENBQUMsQ0FBQTtTQUFFO1FBQ3JDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRTtZQUFFLE9BQU8sQ0FBQyxDQUFBO1NBQUU7UUFFckMsTUFBTSxTQUFTLEdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFRLEVBQUUsRUFBRTtZQUNuRCxNQUFNLENBQUMsR0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUMxQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDakIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBRXhELE1BQU0sV0FBVyxHQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUU7WUFDckQsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNqQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFFeEMsT0FBTyxTQUFTLEdBQUcsV0FBVyxDQUFBO0lBQ2hDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ3RCLE9BQU8sSUFBSSxDQUFBO1NBQ1o7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3ZCO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQTtJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBRSxJQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFRLEVBQUUsRUFBRSxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN0RyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFBO0lBQzdDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFBO1NBQ1o7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3BCO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNqRyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsR0FBRztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRTtZQUN2QixPQUFPLElBQUksQ0FBQTtTQUNaO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNwQjtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakcsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxRQUFRLENBQUUsT0FBd0I7UUFDaEMsT0FBTyxJQUFJLG1CQUFtQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRUQsUUFBUSxDQUFFLElBQWM7UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbEcsQ0FBQztJQUVELGFBQWEsQ0FBRSxLQUFhO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQVEsRUFBRSxDQUFTLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEtBQUssQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekYsQ0FBQztJQUVEOzs7OztLQUtDO0lBQ0QsaUJBQWlCLENBQUUsSUFBYyxFQUFFLEVBQVk7UUFDN0MsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDeEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDdEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUM3QyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDakcsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFRLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUUsUUFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakYsQ0FBQztJQUVELCtCQUErQjtJQUMvQixPQUFPLENBQUUsTUFBbUIsRUFBRSxPQUFtQztRQUMvRCxPQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDOUQsQ0FBQztDQUNGO0FBRUQsZ0VBQWdFO0FBQ2hFLGlIQUFpSDtBQUNqSCwwQkFBMEI7QUFDMUIsU0FBUyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUE7QUFDeEIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFBO0FBQ2xDLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLENBQUMsTUFBbUIsRUFBRSxRQUFnQyxFQUFFLE9BQW1DLEVBQWMsRUFBRTtJQUN2SSxNQUFNLE9BQU8sR0FBZSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbEUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO1FBQ3pDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFlLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQy9FLE9BQU87WUFDTCxHQUFHO1lBQ0gsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7U0FDYixDQUFBO0lBQ1osQ0FBQyxDQUFDLENBQUE7SUFDRixPQUFPLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUM5RCxDQUFDLENBQUE7QUFFRCxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFvQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBWSxFQUFFLENBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUNySCxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFvQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBWSxFQUFFLENBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUN0SCxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFvQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBWSxFQUFFLENBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUNySCxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFvQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBWSxFQUFFLENBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUNySCxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7QUFFekg7OztHQUdHO0FBQ0gsTUFBTSxtQkFBbUI7SUFHdkIsWUFBYSxTQUFvQixFQUFFLE9BQXdCO1FBQ3pELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO1FBQzFCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbkQsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQTtTQUMzRDtRQUNELE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDOUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQTtTQUM1RDtRQUNELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDL0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBc0IsRUFBRSxFQUFFO1lBQ3JELE9BQU8sU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQzdHLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDL0YsQ0FBQztJQUVELEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDL0YsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUM1QyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQy9DLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3BHLENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ25HLENBQUM7SUFFRCxHQUFHO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2xHLENBQUM7SUFFRCxHQUFHO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2xHLENBQUM7Q0FDRiJ9
TimeSerie.createIndex = createIndex;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXNlcmllLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90aW1lc2VyaWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBbUcsWUFBWSxFQUE4RSxNQUFNLFNBQVMsQ0FBQTtBQUNoTyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFMUMsU0FBUyxTQUFTLENBQUUsR0FBb0I7SUFDdEMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMvQyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQSxDQUFDLDJCQUEyQjtJQUNyRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQVUsQ0FBQyxJQUFJLG1HQUFtRztRQUM5SCxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFDLDJDQUEyQztBQUN2RSxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUUsTUFBc0M7SUFDekQsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVEsRUFBRSxDQUFRLEVBQUUsRUFBRTtRQUNuRCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDZixPQUFPLENBQUMsQ0FBQTtTQUNUO2FBQU07WUFDTCxPQUFPLENBQUMsQ0FBQyxDQUFBO1NBQ1Y7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBRSxDQUFRO0lBQy9CLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUN2QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxN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RUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDcEcsQ0FBQztJQUVELElBQUk7UUFDRixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbkcsQ0FBQztJQUVELEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbEcsQ0FBQztJQUVELEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbEcsQ0FBQztDQUNGO0FBRUQsU0FBUyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUEifQ==
import test from 'ava';
import { TimeSerie } from './timeserie';
test('TimeSerie::atTime() should return the correct point or null', (t) => {
test('TimeSerie.atTime() should return the correct point or null', (t) => {
const data = [

@@ -13,3 +13,3 @@ ['2021-01-01T00:00:00.000Z', 4],

});
test('TimeSerie::atIndex() should return the correct point', (t) => {
test('TimeSerie.atIndex() should return the correct point', (t) => {
const data = [

@@ -23,3 +23,3 @@ ['2021-01-01T00:00:00.000Z', 4],

});
test('TimeSerie::atIndex() should throw when the index is out of bounds', (t) => {
test('TimeSerie.atIndex() should throw when the index is out of bounds', (t) => {
const data = [

@@ -35,3 +35,3 @@ ['2021-01-01T00:00:00.000Z', 4],

});
test('TimeSerie::toArray() should return the whole data', (t) => {
test('TimeSerie.toArray() should return the whole data', (t) => {
const data = [

@@ -45,3 +45,3 @@ ['2021-01-01T00:00:00.000Z', 4],

});
test('TimeSerie::firstValidIndex() should return the first valid value index', (t) => {
test('TimeSerie.firstValidIndex() should return the first valid value index', (t) => {
const data = [

@@ -58,3 +58,3 @@ ['2021-01-01T00:00:00.000Z', null],

});
test('TimeSerie::lastValidIndex() should return the last valid value index', (t) => {
test('TimeSerie.lastValidIndex() should return the last valid value index', (t) => {
const data = [

@@ -71,3 +71,3 @@ ['2021-01-01', null],

});
test('TimeSerie::firstValidValue() should return the first valid value index or null', (t) => {
test('TimeSerie.firstValidValue() should return the first valid value index or null', (t) => {
const data = [

@@ -90,3 +90,3 @@ ['2021-01-01', null],

});
test('TimeSerie::lastValidValue() should return the last valid value index', (t) => {
test('TimeSerie.lastValidValue() should return the last valid value index', (t) => {
const data = [

@@ -103,3 +103,3 @@ ['2021-01-01', null],

});
test('TimeSerie::betweenTime() should return the correct timeserie subset', (t) => {
test('TimeSerie.betweenTime() should return the correct timeserie subset', (t) => {
const data = [

@@ -119,3 +119,3 @@ ['2021-01-01', 4],

});
test('TimeSerie::filter() should allow to pass custom filtering logic', (t) => {
test('TimeSerie.filter() should allow to pass custom filtering logic', (t) => {
const data = [

@@ -137,3 +137,3 @@ ['2021-01-01', 4],

});
test('TimeSerie::map() should allow to pass custom mapping logic', (t) => {
test('TimeSerie.map() should allow to pass custom mapping logic', (t) => {
const data = [

@@ -155,3 +155,3 @@ ['2021-01-01', 4],

});
test('TimeSerie::isEmpty() should behave correctly', (t) => {
test('TimeSerie.isEmpty() should behave correctly', (t) => {
const data = [

@@ -165,3 +165,3 @@ ['2021-01-01', 4]

});
test('Timeserie::sum() should return the sum of the values', (t) => {
test('Timeserie.sum() should return the sum of the values', (t) => {
const data = [

@@ -178,3 +178,3 @@ ['2021-01-01', 4],

});
test('Timeserie::avg() should return the average of the values', (t) => {
test('Timeserie.avg() should return the average of the values', (t) => {
const data = [

@@ -189,3 +189,3 @@ ['2021-01-01', 4],

});
test('Timeserie::first() should return the first point or null', (t) => {
test('Timeserie.first() should return the first point or null', (t) => {
const ts1 = new TimeSerie('ts1', [['2021-01-01', 4]]);

@@ -196,3 +196,3 @@ const ts2 = new TimeSerie('ts2', []);

});
test('Timeserie::firstAt() should return the first point with time >= the given', (t) => {
test('Timeserie.firstAt() should return the first point with time >= the given', (t) => {
const data = [

@@ -208,3 +208,3 @@ ['2021-01-01', 4],

});
test('Timeserie::last() should return the last point or null', (t) => {
test('Timeserie.last() should return the last point or null', (t) => {
const ts1 = new TimeSerie('ts1', [['2021-01-01', 4], ['2021-01-02', 5]]);

@@ -215,3 +215,3 @@ const ts2 = new TimeSerie('ts2', []);

});
test('Timeserie::max() should return the point with maximum value', (t) => {
test('Timeserie.max() should return the point with maximum value', (t) => {
const data = [

@@ -226,3 +226,3 @@ ['2021-01-01', 4],

});
test('Timeserie::min() should return the point with minimum value', (t) => {
test('Timeserie.min() should return the point with minimum value', (t) => {
const data = [

@@ -237,3 +237,3 @@ ['2021-01-01', 4],

});
test('Timeserie::resample().sum() should provide the correct timeserie', (t) => {
test('Timeserie.resample().sum() should provide the correct timeserie', (t) => {
const data = [

@@ -259,3 +259,3 @@ ['2021-01-01T12:00:00.000Z', 4],

});
test('Timeserie::resample().avg() should provide the correct timeserie', (t) => {
test('Timeserie.resample().avg() should provide the correct timeserie', (t) => {
const data = [

@@ -281,3 +281,3 @@ ['2021-01-01T12:00:00.000Z', 4],

});
test('Timeserie::resample().first() should provide the correct timeserie', (t) => {
test('Timeserie.resample().first() should provide the correct timeserie', (t) => {
const data = [

@@ -303,3 +303,3 @@ ['2021-01-01T12:00:00.000Z', 1],

});
test('Timeserie::resample().last() should provide the correct timeserie', (t) => {
test('Timeserie.resample().last() should provide the correct timeserie', (t) => {
const data = [

@@ -325,3 +325,3 @@ ['2021-01-01T12:00:00.000Z', 1],

});
test('Timeserie::resample().max() should provide the correct timeserie', (t) => {
test('Timeserie.resample().max() should provide the correct timeserie', (t) => {
const data = [

@@ -347,3 +347,3 @@ ['2021-01-01T12:00:00.000Z', 1],

});
test('Timeserie::resample().min() should provide the correct timeserie', (t) => {
test('Timeserie.resample().min() should provide the correct timeserie', (t) => {
const data = [

@@ -369,3 +369,3 @@ ['2021-01-01T12:00:00.000Z', 1],

});
test('Timeserie::resample().delta() should provide the correct timeserie', (t) => {
test('Timeserie.resample().delta() should provide the correct timeserie', (t) => {
const data = [

@@ -392,3 +392,3 @@ ['2021-01-01T12:00:00.000Z', 1],

});
test('Timeserie::removeAt() should remove points from the timeserie', (t) => {
test('Timeserie.removeAt() should remove points from the timeserie', (t) => {
const data = [

@@ -405,3 +405,3 @@ ['2021-01-01T00:00:00.000Z', 1],

});
test('Timeserie::removeAtIndex() should remove points from the timeserie', (t) => {
test('Timeserie.removeAtIndex() should remove points from the timeserie', (t) => {
const data = [

@@ -418,3 +418,3 @@ ['2021-01-01T00:00:00.000Z', 1],

});
test('Timeserie::removeBetweenTime() should remove points from the timeserie', (t) => {
test('Timeserie.removeBetweenTime() should remove points from the timeserie', (t) => {
const data = [

@@ -431,3 +431,3 @@ ['2021-01-01T00:00:00.000Z', 1],

});
test('Timeserie::dropNaN() should remove points from the timeserie', (t) => {
test('Timeserie.dropNaN() should remove points from the timeserie', (t) => {
const data = [

@@ -445,3 +445,3 @@ ['2021-01-01T00:00:00.000Z', 1],

});
test('Timeserie::dropNull() should remove points from the timeserie', (t) => {
test('Timeserie.dropNull() should remove points from the timeserie', (t) => {
const data = [

@@ -459,3 +459,3 @@ ['2021-01-01T00:00:00.000Z', 1],

});
test('Timeserie::indexes() and Timeserie::values() should return correct values', (t) => {
test('Timeserie.indexes() and Timeserie.values() should return correct values', (t) => {
const data = [

@@ -473,2 +473,57 @@ ['2021-01-01T00:00:00.000Z', 1],

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXNlcmllLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RpbWVzZXJpZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLEtBQUssQ0FBQTtBQUV0QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBR3ZDLElBQUksQ0FBQyw2REFBNkQsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ3hFLE1BQU0sSUFBSSxHQUFZO1FBQ3BCLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO0tBQ2hDLENBQUE7SUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFFeEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDOUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDbkQsQ0FBQyxDQUFDLENBQUE7QUFFRixJQUFJLENBQUMsc0RBQXNELEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUNqRSxNQUFNLElBQUksR0FBWTtRQUNwQixDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztLQUNoQyxDQUFBO0lBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRXhDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxD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QUU7SUFDN0UsTUFBTSxJQUFJLEdBQVk7UUFDcEIsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUM7UUFDaEMsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLENBQUM7UUFDakMsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7S0FDaEMsQ0FBQTtJQUVELE1BQU0sRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN4QyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUE7SUFFOUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDdkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3pCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN6QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDMUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQzdCLENBQUMsQ0FBQyxDQUFBO0FBRUYsSUFBSSxDQUFDLGtFQUFrRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDN0UsTUFBTSxJQUFJLEdBQVk7UUFDcEIsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUM7UUFDaEMsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLENBQUM7UUFDakMsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7S0FDaEMsQ0FBQTtJQUVELE1BQU0sRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN4QyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUE7SUFFOUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDdkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3pCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN6QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDekIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQzNCLENBQUMsQ0FBQyxDQUFBO0FBRUYsSUFBSSxDQUFDLG9FQUFvRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDL0UsTUFBTSxJQUFJLEdBQVk7UUFDcEIsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUM7UUFDaEMsQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUM7UUFDaEMsQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUM7S0FDakMsQ0FBQTtJQUVELE1BQU0sRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN4QyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDaEUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDdkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMs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
test('Timeserie.reindex() should correctly replace the series index', (t) => {
const data = [
['2021-01-01T00:00:00.000Z', 1],
['2021-01-02T00:00:00.000Z', 2]
];
const ts = new TimeSerie('energy', data);
const reindexed = ts.reindex(TimeSerie.createIndex({ from: ts.firstValidIndex(), to: ts.lastValidIndex(), interval: '1h' }), { fill: 0 });
t.is(reindexed.length(), 25);
});
test('Timeserie.fromIndex() should correctly create the series', (t) => {
const idx = TimeSerie.createIndex({ from: '2022-01-01', to: '2022-01-01T23:00:00.000Z', interval: '1h' });
const ts = TimeSerie.fromIndex(idx, { fill: 1, name: 'ts' });
t.is(ts.length(), 24);
t.is(true, ts.toArray().every((item) => item[1] === 1));
});
test('Timeserie.combine() should correctly combine the series', (t) => {
const idx = TimeSerie.createIndex({ from: '2022-01-01', to: '2022-01-01T23:00:00.000Z', interval: '1h' });
const ts1 = TimeSerie.fromIndex(idx, { fill: 1, name: 'ts1' });
const ts2 = TimeSerie.fromIndex(idx, { fill: 2, name: 'ts2' });
const result = ts1.combine('add', [ts2]);
t.is(result.length(), ts1.length());
t.is(true, result.toArray().every((item) => item[1] === 3));
});
test('Timeserie.add() should correctly add the series to numbers and other series', (t) => {
const idx = TimeSerie.createIndex({ from: '2022-01-01', to: '2022-01-01T23:00:00.000Z', interval: '1h' });
const ts1 = TimeSerie.fromIndex(idx, { fill: 1, name: 'ts1' });
const ts2 = TimeSerie.fromIndex(idx, { fill: 2, name: 'ts2' });
const ts3 = ts1.add(ts2).add(7);
t.is(ts3.length(), ts1.length());
t.is(true, ts3.toArray().every((item) => item[1] === 10));
});
test('Timeserie.sub() should correctly diff the series to numbers and other series', (t) => {
const idx = TimeSerie.createIndex({ from: '2022-01-01', to: '2022-01-01T23:00:00.000Z', interval: '1h' });
const ts1 = TimeSerie.fromIndex(idx, { fill: 8, name: 'ts1' });
const ts2 = TimeSerie.fromIndex(idx, { fill: 4, name: 'ts2' });
const ts3 = ts1.sub(ts2).sub(7);
t.is(ts3.length(), ts1.length());
t.is(true, ts3.toArray().every((item) => item[1] === -3));
});
test('Timeserie.mul() should correctly multiply the series to numbers and other series', (t) => {
const idx = TimeSerie.createIndex({ from: '2022-01-01', to: '2022-01-01T23:00:00.000Z', interval: '1h' });
const ts1 = TimeSerie.fromIndex(idx, { fill: 1, name: 'ts1' });
const ts2 = TimeSerie.fromIndex(idx, { fill: 2, name: 'ts2' });
const ts3 = ts1.mul(ts2).mul(7);
t.is(ts3.length(), ts1.length());
t.is(true, ts3.toArray().every((item) => item[1] === 14));
});
test('Timeserie.div() should correctly divide the series to numbers and other series', (t) => {
const idx = TimeSerie.createIndex({ from: '2022-01-01', to: '2022-01-01T23:00:00.000Z', interval: '1h' });
const ts1 = TimeSerie.fromIndex(idx, { fill: 16, name: 'ts1' });
const ts2 = TimeSerie.fromIndex(idx, { fill: 4, name: 'ts2' });
const ts3 = ts1.div(ts2).div(4);
t.is(ts3.length(), ts1.length());
t.is(true, ts3.toArray().every((item) => item[1] === 1));
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXNlcmllLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RpbWVzZXJpZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLEtBQUssQ0FBQTtBQUV0QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBR3ZDLElBQUksQ0FBQyw0REFBNEQsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ3ZFLE1BQU0sSUFBSSxHQUFZO1FBQ3BCLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO0tBQ2hDLENBQUE7SUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFFeEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDOUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDbkQsQ0FBQyxDQUFDLENBQUE7QUFFRixJQUFJLENBQUMscURBQXFELEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUNoRSxNQUFNLElBQUksR0FBWTtRQUNwQixDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUMvQixDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQztLQUNoQyxDQUFBO0lBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRXhDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxD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QUU7SUFDNUUsTUFBTSxJQUFJLEdBQVk7UUFDcEIsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUM7UUFDaEMsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLENBQUM7UUFDakMsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7S0FDaEMsQ0FBQTtJQUVELE1BQU0sRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN4QyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUE7SUFFOUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDdkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3pCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN6QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDMUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQzdCLENBQUMsQ0FBQyxDQUFBO0FBRUYsSUFBSSxDQUFDLGlFQUFpRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDNUUsTUFBTSxJQUFJLEdBQVk7UUFDcEIsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUM7UUFDaEMsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLENBQUM7UUFDakMsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7S0FDaEMsQ0FBQTtJQUVELE1BQU0sRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN4QyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUE7SUFFOUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDdkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3pCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN6QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDekIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQzNCLENBQUMsQ0FBQyxDQUFBO0FBRUYsSUFBSSxDQUFDLG1FQUFtRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDOUUsTUFBTSxJQUFJLEdBQVk7UUFDcEIsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7UUFDL0IsQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUM7UUFDaEMsQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUM7UUFDaEMsQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUM7S0FDakMsQ0FBQTtJQUVELE1BQU0sRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN4QyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDaEUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDdkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMs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QUFDLEVBQUUsRUFBRTtJQUNwRSxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsMEJBQTBCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDekcsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQzlELE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUM5RCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFFeEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7SUFDbkMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDbkUsQ0FBQyxDQUFDLENBQUE7QUFFRixJQUFJLENBQUMsNkVBQTZFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUN4RixNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsMEJBQTBCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDekcsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxF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
import { TimeSerie } from './timeserie';
export declare type PointValue = number | string | boolean | any;
export declare type DateLike = Date | string | number;
/**

@@ -22,2 +23,12 @@ * A time indexed value

};
export interface TimeSeriesOperationOptions {
name?: string;
metadata?: {};
fill?: number;
}
export interface FromIndexOptions {
name: string;
metadata?: Metadata;
fill?: PointValue;
}
/**

@@ -30,3 +41,3 @@ * A time indexed group of values of different measurements.

}
export declare type DateLike = Date | string | number;
export declare type Index = string[];
/**

@@ -52,2 +63,7 @@ * Support type for iterating points from a timeserie

declare type ResampleDefaultAggregation = 'sum' | 'avg' | 'max' | 'min';
export interface TimeFramePartitionOptions {
interval: number;
from?: DateLike;
to?: DateLike;
}
export declare type ResampleOptions = {

@@ -61,2 +77,21 @@ size: number;

};
export interface IndexCreationOptions {
from: DateLike;
to: DateLike;
interval?: number | string;
}
export interface AggregationConfiguration {
output: string;
operation: 'add' | 'mul' | 'div' | 'sub' | 'avg' | TimeseriePointCombiner;
columns: string[];
}
export interface AggregationOptions {
keepOriginalColumns?: boolean;
}
export interface FromTimeseriesOptions {
fill?: PointValue;
}
export interface ReindexOptions {
fill?: PointValue;
}
export declare class TimeInterval {

@@ -69,2 +104,8 @@ from: Date;

}
/**
* Generates a time-index
* @param options
* @returns
*/
export declare function createIndex(options: IndexCreationOptions): Index;
export {};

@@ -0,1 +1,2 @@

import parse from 'parse-duration';
;

@@ -24,2 +25,21 @@ ;

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNDLENBQUM7QUFHRCxDQUFDO0FBbUJELENBQUM7QUF1Q0YsTUFBTSxPQUFPLFlBQVk7SUFJdkIsWUFBYSxJQUFVLEVBQUUsRUFBUTtRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUMzQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBRSxJQUFjLEVBQUUsRUFBWSxFQUFFLElBQVk7UUFDekQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDeEIsSUFBSSxNQUFNLEdBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDakMsTUFBTSxTQUFTLEdBQW1CLEVBQUUsQ0FBQTtRQUNwQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUE7WUFDbkQsTUFBTSxRQUFRLEdBQUcsSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQy9DLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDeEIsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQ3hCO1FBQ0QsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQztDQUNGIn0=
/**
* Generates a time-index
* @param options
* @returns
*/
export function createIndex(options) {
let size = options.interval;
if (typeof options.interval === 'string') {
size = parse(options.interval);
}
const _to = new Date(options.to);
const cursor = new Date(options.from);
const index = [];
while (cursor.getTime() <= _to.getTime()) {
index.push(cursor.toISOString());
cursor.setMilliseconds(cursor.getMilliseconds() + size);
}
return index;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLGdCQUFnQixDQUFBO0FBWWpDLENBQUM7QUFHRCxDQUFDO0FBOEJELENBQUM7QUFxRUYsTUFBTSxPQUFPLFlBQVk7SUFJdkIsWUFBYSxJQUFVLEVBQUUsRUFBUTtRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUMzQyxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBRSxJQUFjLEVBQUUsRUFBWSxFQUFFLElBQVk7UUFDekQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDeEIsSUFBSSxNQUFNLEdBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDakMsTUFBTSxTQUFTLEdBQW1CLEVBQUUsQ0FBQTtRQUNwQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUE7WUFDbkQsTUFBTSxRQUFRLEdBQUcsSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQy9DLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDeEIsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQ3hCO1FBQ0QsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQztDQUNGO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUUsT0FBNkI7SUFDeEQsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQTtJQUMzQixJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7UUFDeEMsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7S0FDL0I7SUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDaEMsTUFBTSxNQUFNLEdBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzNDLE1BQU0sS0FBSyxHQUFVLEVBQUUsQ0FBQTtJQUN2QixPQUFPLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDeEMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtRQUNoQyxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsR0FBSSxJQUFlLENBQUMsQ0FBQTtLQUNwRTtJQUNELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQyJ9

@@ -5,1 +5,2 @@ import { DateLike } from './types';

export declare function DateLikeToTimestamp(d: DateLike): number;
export declare function getOrderOfMagnitude(n: number): number;

@@ -16,2 +16,7 @@ export function ms(date) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxFQUFFLENBQUUsSUFBbUI7SUFDckMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtBQUNqQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFFLENBQVc7SUFDM0MsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtRQUNsRSxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0tBQ3pDO0lBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtBQUNsQyxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFFLENBQVc7SUFDOUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtRQUNsRSxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO0tBQ3JDO0lBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtBQUM5QixDQUFDIn0=
export function getOrderOfMagnitude(n) {
const order = Math.floor(Math.log(n) / Math.LN10 +
0.000000001); // because float math sucks like that
return Math.pow(10, order);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxFQUFFLENBQUUsSUFBbUI7SUFDckMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtBQUNqQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFFLENBQVc7SUFDM0MsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtRQUNsRSxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0tBQ3pDO0lBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtBQUNsQyxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFFLENBQVc7SUFDOUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtRQUNsRSxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO0tBQ3JDO0lBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtBQUM5QixDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFFLENBQVE7SUFDM0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJO1FBQzNCLFdBQVcsQ0FBQyxDQUFBLENBQUMscUNBQXFDO0lBQ3ZFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFDNUIsQ0FBQyJ9

@@ -1,3 +0,10 @@

# 📦 0.1.1 (15 Oct 2022)
# 📦 0.1.1 (23 Oct 2022)
- [7eaf8](https://github.com/fatmatto/timeframes/commit/7eaf8365c0e1892a9ff74787fe29cb1958fdfe81) chore(release): 0.1.13
- [497de](https://github.com/fatmatto/timeframes/commit/497de104e03a90e4fb214aa2ad702a08fdba56b6) perf: add index to series
- [5cdb1](https://github.com/fatmatto/timeframes/commit/5cdb1caf4d0355f44ec70694aefa0d27158adc90) doc: fix TimeFrame.aggregate() doc
- [525e8](https://github.com/fatmatto/timeframes/commit/525e8f5951bb2b864fc2d6ec6ab0fb34405e8b2a) perf: multiple perf improvements
- [92e13](https://github.com/fatmatto/timeframes/commit/92e131e6f5ba8ff485bf24982dd84f18c5ec1897) fix: add guard for computations with empty timeframes
- [cd22f](https://github.com/fatmatto/timeframes/commit/cd22f769da23ccd8dece3e7486710a210359d025) 📦 Release 0.1.11 standard-version [skip ci]
- [cc952](https://github.com/fatmatto/timeframes/commit/cc9523d663094df014cf3c27cec5164ea8570b5d) chore(release): 0.1.11
- [8813b](https://github.com/fatmatto/timeframes/commit/8813b80be3cbd6f2355dcb93291f26ce496228c5) Merge pull request #1 from fatmatto/aggregation
- [7cfff](https://github.com/fatmatto/timeframes/commit/7cfff8d05f6fcebdcee9a6ee19e96fc074b56b1d) feat: aggrefation

@@ -4,0 +11,0 @@ - [b86d5](https://github.com/fatmatto/timeframes/commit/b86d57a4a7a4c64b62ffb7facde906838d90d139) 📦 Release 0.1.9 standard-version [skip ci]

{
"name": "@apio/timeframes",
"version": "0.1.11",
"version": "0.1.13",
"description": "Library for dealing with timeseries data",

@@ -23,3 +23,3 @@ "main": "build/main/index.js",

"test:lint": "eslint src --ext .ts",
"test:unit": "nyc ava",
"test:unit": "nyc ava --fail-fast",
"check-cli": "run-s test diff-integration-tests check-integration-tests",

@@ -35,6 +35,5 @@ "check-integration-tests": "run-s check-integration-test:*",

"cov:check": "nyc report && nyc check-coverage --lines 100 --functions 100 --branches 100",
"doc": "run-s doc:html && open-cli build/docs/index.html",
"doc:html": "typedoc src/ --exclude **/*.spec.ts --target ES6 --mode file --out build/docs",
"doc:json": "typedoc src/ --exclude **/*.spec.ts --target ES6 --mode file --json build/docs/typedoc.json",
"doc:publish": "gh-pages -m \"[ci skip] Updates\" -d build/docs",
"doc": "npx typedoc --out docs src/**/*.ts",
"doc:json": "typedoc --json docs/docs.json src/**/*.ts",
"doc:publish": "gh-pages -m \"[ci skip] Updates\" -d docs",
"version": "standard-version",

@@ -57,2 +56,3 @@ "reset-hard": "git clean -dfx && git reset --hard && npm i",

"cz-conventional-changelog": "^3.3.0",
"doctrine": "^3.0.0",
"eslint": "^8.25.0",

@@ -73,3 +73,3 @@ "eslint-config-prettier": "^6.11.0",

"ts-node": "^9.0.0",
"typedoc": "^0.22.15",
"typedoc": "^0.22.18",
"typedoc-plugin-markdown": "^3.12.0",

@@ -114,3 +114,6 @@ "typescript": "^4.0.2"

]
},
"dependencies": {
"parse-duration": "^1.0.2"
}
}
import { TimeSerie } from './timeserie'
import { AggregationConfiguration, DateLike, Metadata, Point, PointValue, ResampleOptions, Row, TelemetryV1Output, TimeFrameInternal, TimeframeRowsIterator, TimeInterval, TimeserieIterator } from './types'
import { AggregationConfiguration, AggregationOptions, DateLike, FromTimeseriesOptions, Metadata, Point, PointValue, ResampleOptions, Row, TelemetryV1Output, TimeFrameInternal, TimeFramePartitionOptions, TimeframeRowsIterator, TimeInterval, TimeserieIterator } from './types'
import { getOrderOfMagnitude } from './utils'
const test = (r, f, t, includeSuperior, includeInferior) => {
if (includeInferior && includeSuperior) {
return r >= f && r <= t
} else if (includeInferior && !includeSuperior) {
return r >= f && r < t
} else if (!includeInferior && includeSuperior) {
return r > f && r <= t
} else {
return r > f && r < t
}
}
interface TimeFrameOptions {

@@ -8,3 +19,2 @@ data: Row[];

}
/**

@@ -15,5 +25,6 @@ * @class TimeFrame

export class TimeFrame {
readonly data: TimeFrameInternal = {}
private readonly data: TimeFrameInternal = {}
columnNames: string[] = []
metadata: Metadata = {}
private indexes: any

@@ -29,15 +40,42 @@ /**

this.metadata = metadata
this.columnNames = [...new Set(data.map((row: Row) => Object.keys(row)).flat())].filter((name: string) => name !== 'time')
this.data = data
.concat([])
.sort((a, b) => {
const ta = new Date(a.time).getTime()
const tb = new Date(b.time).getTime()
if (ta >= tb) { return 1 } else { return -1 }
if (data.length === 0) {
this.data = {}
this.columnNames = []
} else {
this.columnNames = [...new Set(data
.filter((row: any) => !!row)
.map((row: Row) => Object.keys(row))
.flat())]
.filter((name: string) => name !== 'time')
this.data = data
.concat([])
.filter((row: any) => !!row)
.sort((a, b) => {
const ta = new Date(a.time).getTime()
const tb = new Date(b.time).getTime()
if (ta >= tb) { return 1 } else { return -1 }
})
.reduce((acc: TimeFrameInternal, row: Row) => {
const { time, ...rest } = row
acc[row.time] ? acc[row.time] = { ...acc[row.time], ...rest } : acc[row.time] = rest
return acc
}, {})
}
this.indexes = {
time: Object.keys(this.data),
checkpoints: null
}
}
private buildTimeCheckpoints () {
if (!this.indexes.checkpoints) {
this.indexes.checkpoints = {}
const o = getOrderOfMagnitude(this.indexes.time.length)
this.indexes.time.forEach((el, i) => {
if (i % (o / 100) === 0) { this.indexes.checkpoints[el] = i }
})
.reduce((acc: TimeFrameInternal, row: Row) => {
const { time, ...rest } = row
acc[row.time] ? acc[row.time] = { ...acc[row.time], ...rest } : acc[row.time] = rest
return acc
}, {})
}
}

@@ -54,2 +92,7 @@

/**
* Creates a new TimeFrame using this timeframe's metadata and using `series` as columns.
* @param series Array of timeseries which will be used as timeframe columns
* @returns
*/
recreateFromSeries (series: TimeSerie[]) {

@@ -63,3 +106,3 @@ const tf = TimeFrame.fromTimeseries(series)

*
* @param data An object which is telemetry V1 output {device1: {property1:[[time,value]],property2:[[time,value]]}}
* @param data An object which is telemetry V1 output (Apio Internal)
* @returns

@@ -100,5 +143,6 @@ */

* @param timeseries An array of TimeSerie objects
* @param options.fill Value to use as filler when a column does not hold a value for a specific time
* @returns A new TimeFrame, where each timeserie represent a column
*/
static fromTimeseries (timeseries: TimeSerie[]): TimeFrame {
static fromTimeseries (timeseries: TimeSerie[], options?: FromTimeseriesOptions): TimeFrame {
const data: TimeFrameInternal = {}

@@ -110,3 +154,3 @@ const metadata: Metadata = {}

data[point[0]] = data[point[0]] || {}
data[point[0]][ts.name] = point[1]
data[point[0]][ts.name] = point[1] || options?.fill || null
})

@@ -118,20 +162,29 @@ })

/**
* Concatenates timeframes. Throws error if overlapping times are found. Use merge to join together
* Concatenates timeframes. Throws error if overlapping times are found. Use join() to join together
* timeframes with overlapping times
* @param timeframes Array of timeframes to concatenate
*/
// static concat(timeframes: TimeFrame[]) : TimeFrame{
static concat (timeframes: TimeFrame[]) : TimeFrame {
return new TimeFrame({ data: timeframes.map((tf: TimeFrame) => tf.rows()).flat() })
}
// }
/**
*
* Joins multiple timeframes by adding the columns together and merging indexes (time)
* @param timeframes Array of timeframes to join together
* @returns A timeframe with joined columns
*/
static join (timeframes: TimeFrame[]): TimeFrame {
return TimeFrame.fromInternalFormat(Object.assign({}, ...timeframes.map(tf => tf.data)))
join (timeframes: TimeFrame[]): TimeFrame {
return TimeFrame.fromInternalFormat(Object.assign({}, ...(timeframes.map(tf => tf.data).concat([this.data]))))
}
/**
* Add a column to the timeframe
* @param serie The new column
* @returns {TimeFrame}
*/
addColumn (serie: TimeSerie): TimeFrame {
return this.recreateFromSeries(this.columns().concat([serie]))
}
/**
*

@@ -142,2 +195,5 @@ * @param name The name of the wanted column

column (name: string): TimeSerie {
if (!this.columnNames.includes(name)) {
return null
}
const data: Point[] = Object.entries(this.data).map(([time, values]) => ([time, values[name]]))

@@ -160,6 +216,9 @@ const metadata = this.metadata[name] || {}

project (columns: string[]) : TimeFrame {
/**
* Returns a new timeframe with a subset of columns.
*/
project (columns: string[]): TimeFrame {
const nonExisting = columns.filter((name: string) => !this.columnNames.includes(name))
if (nonExisting.length > 0) { throw new Error(`Non existing columns ${nonExisting.join(',')}`) }
const tf = TimeFrame.fromTimeseries(columns.map((columnName:string) => this.column(columnName)))
const tf = TimeFrame.fromTimeseries(columns.map((columnName: string) => this.column(columnName)))
tf.metadata = this.metadata

@@ -180,3 +239,3 @@ return tf

*
* @returns The value at the given index (position, not time)
* @returns The row at the given index (position, not time)
*/

@@ -191,3 +250,3 @@ atIndex (index: number): PointValue {

length (): number {
return Object.keys(this.data).length
return this.indexes.time.length
}

@@ -200,3 +259,3 @@

shape (): number[] {
return [Object.keys(this.data).length, this.columnNames.length]
return [this.indexes.time.length, this.columnNames.length]
}

@@ -209,2 +268,3 @@

first (): Row {
if (this.length() === 0) { return null }
return this.rows()?.[0] || null

@@ -218,2 +278,3 @@ }

last (): Row {
if (this.length() === 0) { return null }
const t = this.rows()

@@ -227,2 +288,3 @@ return t?.[t.length - 1] || null

sum (): Row {
if (this.length() === 0) { return null }
const time = this.first().time

@@ -236,2 +298,3 @@ return this.columns().reduce((acc, column) => { acc[column.name] = column.sum(); return acc }, { time })

avg (): Row {
if (this.length() === 0) { return null }
const time = this.first().time

@@ -245,2 +308,3 @@ return this.columns().reduce((acc, column) => { acc[column.name] = column.avg(); return acc }, { time })

delta (): Row {
if (this.length() === 0) { return null }
const time = this.first().time

@@ -254,2 +318,3 @@ return this.columns().reduce((acc, column) => { acc[column.name] = column.delta(); return acc }, { time })

max (): Row {
if (this.length() === 0) { return null }
const time = this.first().time

@@ -263,2 +328,3 @@ return this.columns().reduce((acc, column) => { acc[column.name] = column.max()[1]; return acc }, { time })

min (): Row {
if (this.length() === 0) { return null }
const time = this.first().time

@@ -274,66 +340,72 @@ return this.columns().reduce((acc, column) => { acc[column.name] = column.min()[1]; return acc }, { time })

*/
betweenTime (from: DateLike, to: DateLike, options = { includeInferior: true, includeSuperior: true }) {
betweenTime (from: DateLike, to: DateLike, options = { includeInferior: true, includeSuperior: true }): TimeFrame {
/**
* Here we might have to scan a huge sorted array. To prevent scanning too many useless keys
* we index the array by mapping a certain number of timestamps to positions in the time index.
*
* This sparse index is smaller than the full index and fester to use for scanning ranges like in this case.
*/
this.buildTimeCheckpoints()
const { includeInferior, includeSuperior } = options
const f = new Date(from)
const t = new Date(to)
return this.filter((row: Row) => {
if (includeInferior && includeSuperior) {
return new Date(row.time).getTime() >= f.getTime() && new Date(row.time).getTime() <= t.getTime()
} else if (includeInferior && !includeSuperior) {
return new Date(row.time).getTime() >= f.getTime() && new Date(row.time).getTime() < t.getTime()
} else if (!includeInferior && includeSuperior) {
return new Date(row.time).getTime() > f.getTime() && new Date(row.time).getTime() <= t.getTime()
} else {
return new Date(row.time).getTime() > f.getTime() && new Date(row.time).getTime() < t.getTime()
const f = new Date(from).getTime()
const t = new Date(to).getTime()
const keys = Object.keys(this.indexes.checkpoints)
// Indice della prima chiave che va oltre il from
const startingPointValueIndex = keys.findIndex((key) => new Date(key).getTime() > from)
// Ultimo timestamp prima di quell'indice
let startingPoint = this.indexes.checkpoints[keys[startingPointValueIndex - 1]]
if (!startingPoint) {
// Siamo oltre l'ultimo checkpoint
const lastCheckpoint = keys[keys.length - 1]
startingPoint = this.indexes.checkpoints[lastCheckpoint]
}
const goodRows = []
for (let i = startingPoint; i < this.indexes.time.length; i++) {
const curr = new Date(this.indexes.time[i]).getTime()
if (curr < f) { continue }
if (curr > t) {
break
}
})
if (test(curr, f, t, includeSuperior, includeInferior)) {
goodRows.push({ time: this.indexes.time[i], ...this.data[this.indexes.time[i]] })
}
}
return this.recreate(goodRows)
}
groupBy (column: string): TimeFrameGrouper {
return new TimeFrameGrouper(
[...new Set(this.column(column).values())]
.map(
(v: PointValue) => new TimeFrame({
data: this.rows().filter((row: any) => { return row[column] === v }),
metadata: this.metadata
})
)
)
}
/**
*
* @param intervalSizeMs An interval in milliseconds
* @returns {TimeFramesResampler} a resampler instance that can be used to obtain a new timeframe by aggregating values
* Applies transformations to TimeFrame. Each transformation is defined as an operation between columns. Allows, for example, to
* aggregate two columns into one by applying scalar operations element-wise.
* @param aggregations An array of AggregationConfigurations
* @param options? Options
* @returns {TimeFrame}
* @example
* // Average by hour
* const hourlyAverage = ts.resample(1000 * 60 * 60).avg()
* // Creates a 3 new cilumns named power1,power2 and power3 by multiplying other columns
* // Then combines the 3 powerN by addition
* // The resulting TimeFrame has only 1 column named power
* tf = tf.aggregate([
* { output: 'power1', columns: ['voltage1', 'current1'], operation: 'mul' },
* { output: 'power2', columns: ['voltage2', 'current2'], operation: 'mul' },
* { output: 'power3', columns: ['voltage3', 'current3'], operation: 'mul' }
* ])
* .aggregate([{ output: 'power', columns: ['power1', 'power2', 'power3'], operation: 'add'}])
*/
aggregate (aggregations: AggregationConfiguration[]): TimeFrame {
// Aggregazione per colonne
// Applica operazioni a gruppi di colonne per trasformarle in altre colonne
// Ad esempio ho le colonne device1.energy device2.energy device1.power device2.power
// voglio poter fare il resample per delta alle energie, per avg alle potenze per poi aggregare le energie
/**
* const totalenergy = tf.project(['device1.energy','device2.energy'])
* .resample({size:'15min'})
* .delta() // qui ho un tf con le due colonne energia contenenti i delta quartorari
* .aggregate([
* {output:"totalenergy, operation:"sum", columns:['device1.energy','device2.energy']}
* ]) // Qui ho un TF con 1 sola colonna chiamata totalenergy che contiene la somma quartoraria delle energie
*/
// L'aggregazione per righe è il resampling
// Vedi https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.aggregate.html
return this.recreateFromSeries(aggregations.map((agg: AggregationConfiguration) => {
const columns: TimeSerie[] = agg.columns
.map((colName:string) => this.column(colName))
aggregate (aggregations: AggregationConfiguration[], options: AggregationOptions = {}): TimeFrame {
const newColumns = aggregations.map((agg: AggregationConfiguration) => {
const columnsToAggregate: TimeSerie[] = agg.columns
.map((colName: string) => this.column(colName))
if (typeof agg.operation === 'function') {
return TimeSerie.internals.combine(columns, agg.operation, { name: agg.output })
return TimeSerie.internals.combine(columnsToAggregate, agg.operation, { name: agg.output })
} else if (typeof agg.operation === 'string' && agg.operation in TimeSerie.internals.combiners) {
return TimeSerie.internals.combine(columns, TimeSerie.internals.combiners[agg.operation], { name: agg.output })
return TimeSerie.internals.combine(columnsToAggregate, TimeSerie.internals.combiners[agg.operation], { name: agg.output })
} else {
throw new Error('Wrong type for aggregation operation')
}
}))
})
if (options.keepOriginalColumns) {
return this.recreateFromSeries(newColumns.concat(this.columns()))
}
return this.recreateFromSeries(newColumns)
}

@@ -350,3 +422,3 @@

*/
filter (fn: TimeframeRowsIterator) {
filter (fn: TimeframeRowsIterator): TimeFrame {
return new TimeFrame({ data: this.rows().filter(fn), metadata: this.metadata })

@@ -356,7 +428,7 @@ }

/**
* Returns a new timeframe where each **row** is mapped by the iterator function. For mapping over columns, use apply
* Returns a new timeframe where each **row** is mapped by the iterator function. For mapping over columns, use apply()
* @param fn Iterator function
* @returns {TimeFrame}
*/
map (fn: TimeframeRowsIterator) {
map (fn: TimeframeRowsIterator): TimeFrame {
return new TimeFrame({ data: this.rows().map(fn), metadata: this.metadata })

@@ -366,7 +438,8 @@ }

/**
* Applies transformations to the columns of the dataframe, each column is passed to the iterator like a timeserie.
* Applies transformations to the **columns** of the dataframe, each column is passed to the iterator like a timeserie.
* If no column is specified, all columns will be used.
* For mapping over rows, see map()
* @param fn {TimeserieIterator}
*/
apply (fn: TimeserieIterator, columns: string[] = this.columnNames) {
apply (fn: TimeserieIterator, columns: string[] = this.columnNames): TimeFrame {
const unmodifiedColumns = this.columnNames.filter((columnName: string) => !columns.includes(columnName)).map((columnName: string) => this.column(columnName))

@@ -381,2 +454,23 @@ const series: TimeSerie[] = columns

/**
* Partitions The TimeFrame into multiple sub timeframes by dividing the time column into even groups. Returns an array of sub TimeFrames.
* @param options
* @returns
*/
partition (options: TimeFramePartitionOptions): TimeFrame[] {
const from = options.from || this.first()?.time
if (!from) {
throw new Error('Cannot infer a lower bound for resample')
}
const to = options.to || this.last()?.time
if (!to) {
throw new Error('Cannot infer an upper bound for resample')
}
const intervals = TimeInterval.generate(from, to, options.interval)
return intervals.map((interval: TimeInterval) => {
return this.betweenTime(interval.from, interval.to, { includeInferior: true, includeSuperior: false })
})
}
/**
* Pretty prints the TimeFrame to the console

@@ -389,10 +483,2 @@ */

class TimeFrameGrouper {
timeframes: TimeFrame[]
constructor (timeframes: TimeFrame[] = []) {
this.timeframes = timeframes
}
}
/**

@@ -407,17 +493,7 @@ * @class TimeframesResampler

this.timeframe = timeframe
const from = options.from || timeframe.first()?.time
if (!from) {
throw new Error('Cannot infer a lower bound for resample')
}
const to = options.to || timeframe.last()?.time
if (!to) {
throw new Error('Cannot infer an upper bound for resample')
}
const intervals = TimeInterval.generate(from, to, options.size)
this.chunks = intervals.map((interval: TimeInterval) => {
return timeframe.betweenTime(interval.from, interval.to, { includeInferior: true, includeSuperior: false })
})
this.chunks = this.timeframe.partition({ from: options.from, to: options.to, interval: options.size })
}
sum (): TimeFrame {
if (this.chunks.length === 0) { return this.timeframe }
return this.timeframe.recreate(this.chunks.map((tf: TimeFrame) => tf.sum()))

@@ -427,2 +503,3 @@ }

avg (): TimeFrame {
if (this.chunks.length === 0) { return this.timeframe }
return this.timeframe.recreate(this.chunks.map((tf: TimeFrame) => tf.avg()))

@@ -432,2 +509,3 @@ }

first (): TimeFrame {
if (this.chunks.length === 0) { return this.timeframe }
return this.timeframe.recreate(this.chunks.map((tf: TimeFrame) => tf.first()))

@@ -437,2 +515,3 @@ }

last (): TimeFrame {
if (this.chunks.length === 0) { return this.timeframe }
return this.timeframe.recreate(this.chunks.map((tf: TimeFrame) => tf.last()))

@@ -442,2 +521,3 @@ }

max (): TimeFrame {
if (this.chunks.length === 0) { return this.timeframe }
return this.timeframe.recreate(this.chunks.map((tf: TimeFrame) => tf.max()))

@@ -447,2 +527,3 @@ }

min (): TimeFrame {
if (this.chunks.length === 0) { return this.timeframe }
return this.timeframe.recreate(this.chunks.map((tf: TimeFrame) => tf.min()))

@@ -452,4 +533,5 @@ }

delta (): TimeFrame {
if (this.chunks.length === 0) { return this.timeframe }
return this.timeframe.recreate(this.chunks.map((tf: TimeFrame) => tf.delta()))
}
}

@@ -1,10 +0,4 @@

import { DateLike, Metadata, Point, PointValue, ResampleOptions, TimeInterval, TimeseriePointCombiner, TimeseriePointIterator } from './types'
import { createIndex, DateLike, FromIndexOptions, Index, Metadata, Point, PointValue, ReindexOptions, ResampleOptions, TimeInterval, TimeseriePointCombiner, TimeseriePointIterator, TimeSeriesOperationOptions } from './types'
import { DateLikeToString } from './utils'
interface TimeSeriesOperationOptions {
name: string;
metadata?: {};
fill?: number;
}
function isNumeric (str: string | number): boolean {

@@ -35,6 +29,8 @@ if (typeof str === 'number') return !isNaN(str)

export class TimeSerie {
static internals: any
public static internals: any = {}
public static createIndex: Function
readonly data: Point[]
readonly name: string
name: string
metadata: Metadata
index: {[key: string] : PointValue}
constructor (name: string, serie: Point[] | ReadonlyArray<Point>, metadata: Metadata = {}) {

@@ -44,5 +40,24 @@ this.data = sortPoints(serie).map(normalizePoint)

this.metadata = metadata
this.index = [].concat(this.data).reduce((acc: any, p:Point) => {
acc[p[0]] = p
return acc
}, {})
}
static fromIndex (index: Index, options: FromIndexOptions) : TimeSerie {
return new TimeSerie(options.name, index.map((i: string) => ([i, options?.fill || null])), options.metadata)
}
/**
* Recreates the serie's index
* @param index The new index to use. Can be created with createIndex()
* @see createIndex
* @param options
* @return The reindexed timeserie
*/
reindex (index : Index, options?: ReindexOptions) : TimeSerie {
return new TimeSerie(this.name, index.map((i: string) => ([i, this.atTime(i) || options?.fill || null])), this.metadata)
}
/**
*

@@ -55,2 +70,7 @@ * @returns Array of points, where each point is a tuple with ISO8601 timestamp and value

rename (name: string) {
this.name = name
return this
}
/**

@@ -146,11 +166,3 @@ * Creates a new serie preserving the name and the metadata but replacing data

atTime (time: DateLike, fillValue: number = null): PointValue {
const point: Point | undefined = this.data.find((point: Point) => {
return point[0] === DateLikeToString(time)
})
if (point) {
return point[1]
} else {
return fillValue
}
return this.index?.[DateLikeToString(time)]?.[1] || fillValue
}

@@ -235,21 +247,2 @@

/**
* @returns The time weighted average of points. Every point is weighted by the timestamp, in this way we handle "data holes"
*/
weightedAvg (): number {
if (this.length() === 0) { return 0 }
if (this.length() === 1) { return 1 }
const numerator: number = this.data.map((p: Point) => {
const t: number = new Date(p[0]).getTime()
return t * p[1]
}).reduce((a: number, b: number) => { return a + b }, 0)
const denominator: number = this.data.map((p: Point) => {
return new Date(p[0]).getTime()
}).reduce((a, b) => { return a + b }, 0)
return numerator / denominator
}
delta (): number {

@@ -372,5 +365,39 @@ if (this.length() <= 0) {

// Operation between timeseries
combine (series: TimeSerie[], options: TimeSeriesOperationOptions) : TimeSerie {
return TimeSerie.internals.add(series.concat(this), options)
combine (operation:string, series: TimeSerie[], options: TimeSeriesOperationOptions = {}) : TimeSerie {
options.name = options.name || this.name
options.metadata = options.metadata || this.metadata
return TimeSerie.internals.combine([this.recreate(this.data)].concat(series), TimeSerie.internals.combiners[operation], options)
}
add (value: number | TimeSerie): TimeSerie {
if (typeof value === 'number') {
return this.map((point:Point) => [point[0], point[1] + value])
} else {
return this.combine('add', [value])
}
}
sub (value: number | TimeSerie): TimeSerie {
if (typeof value === 'number') {
return this.map((point:Point) => [point[0], point[1] - value])
} else {
return this.combine('sub', [value])
}
}
mul (value: number | TimeSerie): TimeSerie {
if (typeof value === 'number') {
return this.map((point:Point) => [point[0], point[1] * value])
} else {
return this.combine('mul', [value])
}
}
div (value: number | TimeSerie): TimeSerie {
if (typeof value === 'number') {
return this.map((point:Point) => [point[0], point[1] / value])
} else {
return this.combine('div', [value])
}
}
}

@@ -384,4 +411,3 @@

TimeSerie.internals.combine = (series: TimeSerie[], combiner: TimeseriePointCombiner, options: TimeSeriesOperationOptions) : TimeSerie => {
const indexes: DateLike[] = series[0].data.map((p: Point) => p[0])
const points = indexes.map((idx: string) => {
const points = series[0].data.map((p: Point) => p[0]).map((idx: string) => {
const values = series.map((serie:TimeSerie) => serie.atTime(idx, options.fill))

@@ -396,6 +422,6 @@ return [

TimeSerie.internals.combiners.sum = (points: PointValue[]) => points.reduce((a:PointValue, b:PointValue) => a + b, 0)
TimeSerie.internals.combiners.diff = (points: PointValue[]) => points.reduce((a:PointValue, b:PointValue) => a - b, 0)
TimeSerie.internals.combiners.mul = (points: PointValue[]) => points.reduce((a:PointValue, b:PointValue) => a * b, 0)
TimeSerie.internals.combiners.div = (points: PointValue[]) => points.reduce((a:PointValue, b:PointValue) => a / b, 0)
TimeSerie.internals.combiners.add = (points: PointValue[]) => points.reduce((a:PointValue, b:PointValue) => a + b, 0)
TimeSerie.internals.combiners.sub = (points: PointValue[]) => points.reduce((a:PointValue, b:PointValue) => a - b, points[0] * 2)
TimeSerie.internals.combiners.mul = (points: PointValue[]) => points.reduce((a:PointValue, b:PointValue) => a * b, 1)
TimeSerie.internals.combiners.div = (points: PointValue[]) => points.reduce((a:PointValue, b:PointValue) => a / b, points[0] * points[0])
TimeSerie.internals.combiners.avg = (points: PointValue[]) => (TimeSerie.internals.combiners.sum(points) / points.length)

@@ -456,1 +482,3 @@

}
TimeSerie.createIndex = createIndex

@@ -0,4 +1,7 @@

import parse from 'parse-duration'
import { TimeSerie } from './timeserie'
export type PointValue = number | string | boolean | any
export type DateLike = Date | string | number;
/**

@@ -26,2 +29,13 @@ * A time indexed value

export interface TimeSeriesOperationOptions {
name?: string;
metadata?: {};
fill?: number;
}
export interface FromIndexOptions {
name: string
metadata?: Metadata
fill?: PointValue
}
/**

@@ -35,3 +49,3 @@ * A time indexed group of values of different measurements.

export type DateLike = Date | string | number;
export type Index = string[]

@@ -64,2 +78,8 @@ /**

export interface TimeFramePartitionOptions {
interval: number;
from?: DateLike;
to?: DateLike;
}
export type ResampleOptions = {

@@ -74,8 +94,26 @@ size: number;

export interface IndexCreationOptions {
from: DateLike;
to: DateLike;
interval?: number | string;
}
export interface AggregationConfiguration {
output:string;
operation:string | TimeseriePointCombiner;
operation:'add' | 'mul' | 'div' | 'sub' | 'avg' | TimeseriePointCombiner;
columns: string[]
}
export interface AggregationOptions {
keepOriginalColumns?: boolean;
}
export interface FromTimeseriesOptions {
fill?: PointValue
}
export interface ReindexOptions {
fill?: PointValue
}
export class TimeInterval {

@@ -105,1 +143,21 @@ from: Date

}
/**
* Generates a time-index
* @param options
* @returns
*/
export function createIndex (options: IndexCreationOptions): Index {
let size = options.interval
if (typeof options.interval === 'string') {
size = parse(options.interval)
}
const _to = new Date(options.to)
const cursor: Date = new Date(options.from)
const index: Index = []
while (cursor.getTime() <= _to.getTime()) {
index.push(cursor.toISOString())
cursor.setMilliseconds(cursor.getMilliseconds() + (size as number))
}
return index
}

@@ -20,1 +20,7 @@ import { DateLike } from './types'

}
export function getOrderOfMagnitude (n:number):number {
const order = Math.floor(Math.log(n) / Math.LN10 +
0.000000001) // because float math sucks like that
return Math.pow(10, order)
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc