@forestadmin/datasource-customizer
Advanced tools
Comparing version 1.35.5 to 1.36.0
@@ -1,2 +0,2 @@ | ||
import { DateOperation, DistributionChart, LeaderboardChart, ObjectiveChart, PercentageChart, SmartChart, TimeBasedChart, ValueChart } from '@forestadmin/datasource-toolkit'; | ||
import { DateOperation, DistributionChart, LeaderboardChart, MultipleTimeBasedChart, ObjectiveChart, PercentageChart, SmartChart, TimeBasedChart, ValueChart } from '@forestadmin/datasource-toolkit'; | ||
export default class ResultBuilder { | ||
@@ -6,3 +6,57 @@ private static readonly formats; | ||
distribution(obj: Record<string, number>): DistributionChart; | ||
timeBased(timeRange: DateOperation, values: Record<string, number>): TimeBasedChart; | ||
/** | ||
* Add a TimeBasedChart based on a time range and a set of values. | ||
* @param {DateOperation} timeRange - The time range for the chart, specified as a DateOperation. | ||
* @param {Array<{ date: Date; value: number | null }> | Record<string, number>} values - | ||
* This can be an array of objects with 'date' and 'value' properties, | ||
* or a record (object) with date-value pairs. | ||
* | ||
* @returns {TimeBasedChart} Returns a TimeBasedChart representing the data within the specified | ||
* time range. | ||
* | ||
* @example | ||
* timeBased( | ||
* 'Day', | ||
* [ | ||
* { date: new Date('2023-01-01'), value: 42 }, | ||
* { date: new Date('2023-01-02'), value: 55 }, | ||
* { date: new Date('2023-01-03'), value: null }, | ||
* ] | ||
* ); | ||
*/ | ||
timeBased(timeRange: DateOperation, values: Array<{ | ||
date: Date; | ||
value: number | null; | ||
}> | Record<string, number | null>): TimeBasedChart; | ||
/** | ||
* Add a MultipleTimeBasedChart based on a time range, | ||
* an array of dates, and multiple lines of data. | ||
* | ||
* @param {DateOperation} timeRange - The time range for the chart, specified as a DateOperation. | ||
* @param {Date[]} dates - An array of dates that define the x-axis values for the chart. | ||
* @param {Array<{ label: string; values: Array<number | null> }>} lines - An array of lines, | ||
* each containing a label and an array of numeric data values (or null) | ||
* corresponding to the dates. | ||
* | ||
* @returns {MultipleTimeBasedChart} Returns a MultipleTimeBasedChart representing multiple | ||
* lines of data within the specified time range. | ||
* | ||
* @example | ||
* multipleTimeBased( | ||
* 'Day', | ||
* [ | ||
* new Date('1985-10-26'), | ||
* new Date('2011-10-05T14:48:00.000Z'), | ||
* new Date() | ||
* ], | ||
* [ | ||
* { label: 'line1', values: [1, 2, 3] }, | ||
* { label: 'line2', values: [3, 4, null] } | ||
* ], | ||
* ); | ||
*/ | ||
multipleTimeBased(timeRange: DateOperation, dates: Date[], lines: Array<{ | ||
label: string; | ||
values: Array<number | null>; | ||
}>): MultipleTimeBasedChart; | ||
percentage(value: number): PercentageChart; | ||
@@ -12,3 +66,4 @@ objective(value: number, objective: number): ObjectiveChart; | ||
smart(data: unknown): SmartChart; | ||
private static buildTimeBasedChartResult; | ||
} | ||
//# sourceMappingURL=result-builder.d.ts.map |
@@ -11,19 +11,72 @@ "use strict"; | ||
} | ||
/** | ||
* Add a TimeBasedChart based on a time range and a set of values. | ||
* @param {DateOperation} timeRange - The time range for the chart, specified as a DateOperation. | ||
* @param {Array<{ date: Date; value: number | null }> | Record<string, number>} values - | ||
* This can be an array of objects with 'date' and 'value' properties, | ||
* or a record (object) with date-value pairs. | ||
* | ||
* @returns {TimeBasedChart} Returns a TimeBasedChart representing the data within the specified | ||
* time range. | ||
* | ||
* @example | ||
* timeBased( | ||
* 'Day', | ||
* [ | ||
* { date: new Date('2023-01-01'), value: 42 }, | ||
* { date: new Date('2023-01-02'), value: 55 }, | ||
* { date: new Date('2023-01-03'), value: null }, | ||
* ] | ||
* ); | ||
*/ | ||
timeBased(timeRange, values) { | ||
const format = ResultBuilder.formats[timeRange]; | ||
const formatted = {}; | ||
for (const [date, value] of Object.entries(values)) { | ||
const label = luxon_1.DateTime.fromISO(date).toFormat(format); | ||
formatted[label] = (formatted[label] ?? 0) + value; | ||
} | ||
const dataPoints = []; | ||
const dates = Object.keys(values).sort((dateA, dateB) => dateA.localeCompare(dateB)); | ||
const first = luxon_1.DateTime.fromISO(dates[0]).startOf(timeRange.toLowerCase()); | ||
const last = luxon_1.DateTime.fromISO(dates[dates.length - 1]); | ||
for (let current = first; current <= last; current = current.plus({ [timeRange]: 1 })) { | ||
const label = current.toFormat(format); | ||
dataPoints.push({ label, values: { value: formatted[label] ?? 0 } }); | ||
} | ||
return dataPoints; | ||
if (Array.isArray(values)) | ||
return ResultBuilder.buildTimeBasedChartResult(timeRange, values); | ||
const formattedValues = []; | ||
Object.entries(values).forEach(([stringDate, value]) => { | ||
formattedValues.push({ date: new Date(stringDate), value }); | ||
}); | ||
return ResultBuilder.buildTimeBasedChartResult(timeRange, formattedValues); | ||
} | ||
/** | ||
* Add a MultipleTimeBasedChart based on a time range, | ||
* an array of dates, and multiple lines of data. | ||
* | ||
* @param {DateOperation} timeRange - The time range for the chart, specified as a DateOperation. | ||
* @param {Date[]} dates - An array of dates that define the x-axis values for the chart. | ||
* @param {Array<{ label: string; values: Array<number | null> }>} lines - An array of lines, | ||
* each containing a label and an array of numeric data values (or null) | ||
* corresponding to the dates. | ||
* | ||
* @returns {MultipleTimeBasedChart} Returns a MultipleTimeBasedChart representing multiple | ||
* lines of data within the specified time range. | ||
* | ||
* @example | ||
* multipleTimeBased( | ||
* 'Day', | ||
* [ | ||
* new Date('1985-10-26'), | ||
* new Date('2011-10-05T14:48:00.000Z'), | ||
* new Date() | ||
* ], | ||
* [ | ||
* { label: 'line1', values: [1, 2, 3] }, | ||
* { label: 'line2', values: [3, 4, null] } | ||
* ], | ||
* ); | ||
*/ | ||
multipleTimeBased(timeRange, dates, lines) { | ||
let formattedTimes; | ||
const formattedLine = lines.map(line => { | ||
const values = dates.reduce((computed, date, index) => { | ||
computed.push({ date, value: line.values[index] }); | ||
return computed; | ||
}, []); | ||
const buildTimeBased = ResultBuilder.buildTimeBasedChartResult(timeRange, values); | ||
if (!formattedTimes) | ||
formattedTimes = buildTimeBased.map(timeBased => timeBased.label); | ||
return { key: line.label, values: buildTimeBased.map(timeBased => timeBased.values.value) }; | ||
}); | ||
return { labels: formattedTimes, values: formattedLine }; | ||
} | ||
percentage(value) { | ||
@@ -41,2 +94,42 @@ return value; | ||
} | ||
/* | ||
* Normalize the time based chart result to have a value for each time range. | ||
* For example, if the time range is 'Month' and the values are: | ||
* [ | ||
* // YYYY-MM-DD | ||
* { date: new Date('2022-01-07'), value: 1 }, // Jan 22 | ||
* { date: new Date('2022-02-02'), value: 2 }, // Feb 22 | ||
* { date: new Date('2022-01-01'), value: 3 }, // Jan 22 | ||
* { date: new Date('2022-02-01'), value: 4 }, // Feb 22 | ||
* ] | ||
* The result will be: | ||
* [ | ||
* { label: 'Jan 22', values: { value: 4 } }, | ||
* { label: 'Feb 22', values: { value: 6 } }, | ||
* ] | ||
*/ | ||
static buildTimeBasedChartResult(timeRange, points) { | ||
const pointsInDateTime = []; | ||
points.forEach(point => { | ||
pointsInDateTime.push({ date: luxon_1.DateTime.fromJSDate(point.date), value: point.value }); | ||
}); | ||
const format = ResultBuilder.formats[timeRange]; | ||
const formatted = {}; | ||
pointsInDateTime.forEach(point => { | ||
const label = point.date.toFormat(format); | ||
if (typeof point.value === 'number') | ||
formatted[label] = (formatted[label] ?? 0) + point.value; | ||
}); | ||
const dataPoints = []; | ||
const dates = pointsInDateTime | ||
.map(p => p.date) | ||
.sort((dateA, dateB) => dateA.toUnixInteger() - dateB.toUnixInteger()); | ||
const first = dates[0].startOf(timeRange.toLowerCase()); | ||
const last = dates[dates.length - 1]; | ||
for (let current = first; current <= last; current = current.plus({ [timeRange]: 1 })) { | ||
const label = current.toFormat(format); | ||
dataPoints.push({ label, values: { value: formatted[label] ?? null } }); | ||
} | ||
return dataPoints; | ||
} | ||
} | ||
@@ -50,2 +143,2 @@ exports.default = ResultBuilder; | ||
}; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVjb3JhdG9ycy9jaGFydC9yZXN1bHQtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVVBLGlDQUErQztBQUUvQyxNQUFxQixhQUFhO0lBUWhDLEtBQUssQ0FBQyxLQUFhLEVBQUUsYUFBc0I7UUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRCxZQUFZLENBQUMsR0FBMkI7UUFDdEMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsU0FBUyxDQUFDLFNBQXdCLEVBQUUsTUFBOEI7UUFDaEUsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRCxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFckIsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEQsTUFBTSxLQUFLLEdBQUcsZ0JBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RELFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7U0FDcEQ7UUFFRCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDdEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDckYsTUFBTSxLQUFLLEdBQUcsZ0JBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQWtCLENBQUMsQ0FBQztRQUMxRixNQUFNLElBQUksR0FBRyxnQkFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZELEtBQUssSUFBSSxPQUFPLEdBQUcsS0FBSyxFQUFFLE9BQU8sSUFBSSxJQUFJLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDckYsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ3RFO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhLEVBQUUsU0FBaUI7UUFDeEMsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQTJCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQWE7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztBQXBESCxnQ0FxREM7QUFwRHlCLHFCQUFPLEdBQWtDO0lBQy9ELEdBQUcsRUFBRSxZQUFZO0lBQ2pCLElBQUksRUFBRSxXQUFXO0lBQ2pCLEtBQUssRUFBRSxRQUFRO0lBQ2YsSUFBSSxFQUFFLE1BQU07Q0FDYixDQUFDIn0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVjb3JhdG9ycy9jaGFydC9yZXN1bHQtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVdBLGlDQUErQztBQUUvQyxNQUFxQixhQUFhO0lBUWhDLEtBQUssQ0FBQyxLQUFhLEVBQUUsYUFBc0I7UUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRCxZQUFZLENBQUMsR0FBMkI7UUFDdEMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FtQkc7SUFDSCxTQUFTLENBQ1AsU0FBd0IsRUFDeEIsTUFBbUY7UUFFbkYsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sYUFBYSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUU3RixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDM0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3JELGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sYUFBYSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMEJHO0lBQ0gsaUJBQWlCLENBQ2YsU0FBd0IsRUFDeEIsS0FBYSxFQUNiLEtBQTZEO1FBRTdELElBQUksY0FBYyxDQUFDO1FBQ25CLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3BELFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUVuRCxPQUFPLFFBQVEsQ0FBQztZQUNsQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFUCxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMseUJBQXlCLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2xGLElBQUksQ0FBQyxjQUFjO2dCQUFFLGNBQWMsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXZGLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5RixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDdEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWEsRUFBRSxTQUFpQjtRQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBMkI7UUFDckMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBYTtRQUNqQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSyxNQUFNLENBQUMseUJBQXlCLENBQ3RDLFNBQXdCLEVBQ3hCLE1BQW1EO1FBRW5ELE1BQU0sZ0JBQWdCLEdBQStDLEVBQUUsQ0FBQztRQUN4RSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxnQkFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRCxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFckIsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQy9CLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFDLElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxLQUFLLFFBQVE7Z0JBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDaEcsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDdEIsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCO2FBQzNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDaEIsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxHQUFHLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBa0IsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXJDLEtBQUssSUFBSSxPQUFPLEdBQUcsS0FBSyxFQUFFLE9BQU8sSUFBSSxJQUFJLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDckYsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ3pFO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzs7QUFqS0gsZ0NBa0tDO0FBakt5QixxQkFBTyxHQUFrQztJQUMvRCxHQUFHLEVBQUUsWUFBWTtJQUNqQixJQUFJLEVBQUUsV0FBVztJQUNqQixLQUFLLEVBQUUsUUFBUTtJQUNmLElBQUksRUFBRSxNQUFNO0NBQ2IsQ0FBQyJ9 |
{ | ||
"name": "@forestadmin/datasource-customizer", | ||
"version": "1.35.5", | ||
"version": "1.36.0", | ||
"main": "dist/index.js", | ||
@@ -31,3 +31,3 @@ "license": "GPL-3.0", | ||
"dependencies": { | ||
"@forestadmin/datasource-toolkit": "1.28.1", | ||
"@forestadmin/datasource-toolkit": "1.29.0", | ||
"file-type": "^16.5.4", | ||
@@ -34,0 +34,0 @@ "luxon": "^3.2.1", |
480651
5649
+ Added@forestadmin/datasource-toolkit@1.29.0(transitive)
- Removed@forestadmin/datasource-toolkit@1.28.1(transitive)