mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-11 02:46:16 -08:00
* docs(performance): plan Xtream benchmark * feat(xtream-mock-server): add deterministic 100k fixture * style(xtream-mock-server): apply repository formatting * fix(xtream-mock-server): harden performance fixture data * feat(xtream-mock-server): add performance control plane * docs(performance): correct Xtream capture plan * fix(xtream-mock-server): harden performance controls * fix(xtream-mock-server): harden control lifecycle * feat(performance): add Xtream preload markers * feat(performance): trace Xtream main phases * feat(performance): mark Xtream store publications * feat(performance): trace Xtream database phases * feat(performance): trace Xtream delete cancellation * feat(performance): capture Xtream phase attribution * feat(performance): mark Sources Xtream refresh * test(performance): define Xtream benchmark evidence contracts * test(performance): add Xtream benchmark runner * test(performance): surface failure evidence writes * test(performance): align database read clock * test(performance): preserve capture failure contracts
81 lines
3.0 KiB
TypeScript
81 lines
3.0 KiB
TypeScript
export const PERFORMANCE_PHASE_BOUNDARY = {
|
|
END: 'end',
|
|
START: 'start',
|
|
} as const;
|
|
|
|
export type PerformancePhaseBoundary =
|
|
(typeof PERFORMANCE_PHASE_BOUNDARY)[keyof typeof PERFORMANCE_PHASE_BOUNDARY];
|
|
|
|
export const M3U_IMPORT_PERFORMANCE_PHASE_EVENT_CHANNEL =
|
|
'IPTVNATOR_M3U_IMPORT_PERFORMANCE_PHASE_EVENT';
|
|
|
|
export const M3U_IMPORT_PERFORMANCE_PHASE = {
|
|
DATA_ACQUIRE: 'data.acquire',
|
|
NORMALIZE: 'normalize',
|
|
PARSE_M3U: 'parse.m3u',
|
|
} as const;
|
|
|
|
export type M3uImportPerformancePhase =
|
|
(typeof M3U_IMPORT_PERFORMANCE_PHASE)[keyof typeof M3U_IMPORT_PERFORMANCE_PHASE];
|
|
|
|
export const APP_PLAYLIST_UPSERT_PERFORMANCE_PHASE = {
|
|
SERIALIZE_PLAYLIST: 'serialize.playlist',
|
|
SQLITE_WRITE: 'sqlite.write',
|
|
} as const;
|
|
|
|
export type AppPlaylistUpsertPerformancePhase =
|
|
(typeof APP_PLAYLIST_UPSERT_PERFORMANCE_PHASE)[keyof typeof APP_PLAYLIST_UPSERT_PERFORMANCE_PHASE];
|
|
|
|
export const APP_PLAYLIST_GET_PERFORMANCE_PHASE = {
|
|
DESERIALIZE_PLAYLIST: 'deserialize.playlist',
|
|
SQLITE_READ: 'sqlite.read',
|
|
} as const;
|
|
|
|
export type AppPlaylistGetPerformancePhase =
|
|
(typeof APP_PLAYLIST_GET_PERFORMANCE_PHASE)[keyof typeof APP_PLAYLIST_GET_PERFORMANCE_PHASE];
|
|
|
|
export type AppPlaylistPerformancePhase =
|
|
AppPlaylistGetPerformancePhase | AppPlaylistUpsertPerformancePhase;
|
|
|
|
export const XTREAM_DATABASE_PERFORMANCE_PHASE = {
|
|
NORMALIZE_CATEGORIES: 'normalize.categories',
|
|
NORMALIZE_CONTENT: 'normalize.content',
|
|
NORMALIZE_SEARCH_RANK: 'normalize.search-rank',
|
|
SQLITE_CATEGORIES_READ: 'sqlite.categories.read',
|
|
SQLITE_CATEGORIES_WRITE_TRANSACTIONS:
|
|
'sqlite.categories.write-transactions',
|
|
SQLITE_CONTENT_CATEGORY_MAP_READ: 'sqlite.content.category-map-read',
|
|
SQLITE_CONTENT_READ: 'sqlite.content.read',
|
|
SQLITE_CONTENT_WRITE_TRANSACTIONS: 'sqlite.content.write-transactions',
|
|
SQLITE_PLAYLIST_DELETE_COLLECT_IDS: 'sqlite.playlist-delete.collect-ids',
|
|
SQLITE_PLAYLIST_DELETE_WRITE_TRANSACTIONS:
|
|
'sqlite.playlist-delete.write-transactions',
|
|
SQLITE_SEARCH_QUERY: 'sqlite.search.query',
|
|
SQLITE_XTREAM_CACHE_CLEAR_WRITE_TRANSACTIONS:
|
|
'sqlite.xtream-cache-clear.write-transactions',
|
|
SQLITE_XTREAM_DELETE_COLLECT_USER_DATA:
|
|
'sqlite.xtream-delete.collect-user-data',
|
|
SQLITE_XTREAM_DELETE_WRITE_TRANSACTIONS:
|
|
'sqlite.xtream-delete.write-transactions',
|
|
} as const;
|
|
|
|
export type XtreamDatabasePerformancePhase =
|
|
(typeof XTREAM_DATABASE_PERFORMANCE_PHASE)[keyof typeof XTREAM_DATABASE_PERFORMANCE_PHASE];
|
|
|
|
export type DatabaseWorkerPerformancePhase =
|
|
AppPlaylistPerformancePhase | XtreamDatabasePerformancePhase;
|
|
|
|
export interface PerformancePhaseMetadata {
|
|
readonly byteCount?: number;
|
|
readonly itemCount?: number;
|
|
}
|
|
|
|
export interface PerformancePhaseEvent<TPhase extends string = string> {
|
|
readonly boundary: PerformancePhaseBoundary;
|
|
readonly durationMs: number | null;
|
|
readonly epochMs: number;
|
|
readonly metadata?: PerformancePhaseMetadata;
|
|
readonly phase: TPhase;
|
|
readonly requestId: string;
|
|
}
|