feat: historical averages

This commit is contained in:
TrèsAbhi committed 2024-07-08 12:41:06 -05:00
1 parent b27d200ae6
commit d34bc4db06
5 files changed
+134 -58

No files matched your search

@@ -1,4 +1,4 @@
import { AverageDefinitionsAllStats } from '.';
import { AverageDefinitionsAllStats, Samples } from '.';
import { emptyAllStats } from '../../blitzstars/getStatsInPeriod/constants';
export const emptyAverageDefinitionsAllStats: AverageDefinitionsAllStats = {
@@ -9,3 +9,13 @@ export const emptyAverageDefinitionsAllStats: AverageDefinitionsAllStats = {
export const averageDefinitionsAllStatsKeys = Object.keys(
emptyAverageDefinitionsAllStats,
) as (keyof AverageDefinitionsAllStats)[];
export const emptySamples: Samples = {
d_1: 0,
d_7: 0,
d_30: 0,
d_60: 0,
d_90: 0,
d_120: 0,
total: 0,
};
+35 -15
View File
@@ -7,37 +7,57 @@ export interface AverageDefinitionsAllStats extends AllStats {
}
export interface AverageDefinitionsEntry {
samples: number;
mu: AverageDefinitionsAllStats;
sigma: AverageDefinitionsAllStats;
r: AverageDefinitionsAllStats;
samples: Samples;
}
export interface AverageDefinitionsEntrySubPartial {
mu: Partial<AverageDefinitionsAllStats>;
sigma: Partial<AverageDefinitionsAllStats>;
r: Partial<AverageDefinitionsAllStats>;
samples: Samples;
}
export interface AverageDefinitionsEntryWithId extends AverageDefinitionsEntry {
id: number;
}
export interface AverageDefinitionsEntrySubPartial {
samples: number;
mu: Partial<AverageDefinitionsAllStats>;
sigma: Partial<AverageDefinitionsAllStats>;
r: Partial<AverageDefinitionsAllStats>;
}
export interface AverageDefinitions {
averages: Record<number, AverageDefinitionsEntry>;
sampled_players: number;
scanned_players: number;
samples: Samples;
time: number;
}
export const averageDefinitions = fetch(asset('definitions/averages.pb'))
export interface Samples {
d_1: number;
d_7: number;
d_30: number;
d_60: number;
d_90: number;
d_120: number;
total: number;
}
export interface AverageDefinitionsManifest {
version: 1;
/**
* epoch in days
*/
latest: number;
}
export const averageDefinitions = fetch(asset('averages/manifest.json'))
.then((response) => response.json() as Promise<AverageDefinitionsManifest>)
.then((manifest) => fetch(asset(`averages/${manifest.latest}.pb`)))
.then((response) => response.arrayBuffer())
.then((buffer) => {
return decode<AverageDefinitions>(
.then((buffer) =>
decode<AverageDefinitions>(
'blitzkit.AverageDefinitions',
new Uint8Array(buffer),
);
});
),
);
export const averageDefinitionsArray = averageDefinitions.then((data) =>
Object.entries(data.averages).map(