mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-15 13:46:16 -08:00
feat(stalker): discover portal endpoints on add and edit (#1391)
* feat(stalker): discover portal connection on edit * docs(stalker): document smart endpoint discovery * fix(stalker): make edited connection persistence atomic * fix(stalker): serialize edit discovery * fix(stalker): fence all edit authentication * fix(stalker): serialize overlapping edits * fix(stalker): hydrate playlist identity before edit * test(stalker): await edit hydration * fix(stalker): release abandoned edit fences * fix(stalker): reject stale repairs before discovery * fix(stalker): fence stale portal modes * test(stalker): align simple portal session guard * fix(stalker): reject superseded portal responses * test(stalker): await settled append failure * fix(stalker): retain abandoned auth fences * fix(stalker): fence abandoned discovery retries * fix(stalker): retire restored repair overrides * fix(stalker): verify repair override retirement * fix(stalker): preserve edit-owned repair tokens * fix(stalker): defer repair retirement during edits * fix(stalker): fence repair history reads * fix(stalker): fingerprint portal URL credentials * fix(stalker): persist submitted identity after navigation * fix(stalker): merge late connection saves * fix(stalker): keep edits off Xtream save path * fix(stalker): preserve concurrent edit state * fix(stalker): reject replaced late edit targets * fix(stalker): guard every resolved edit write * fix(stalker): make pwa edit guard transactional * fix(stalker): migrate pwa flags transactionally * fix(stalker): reserve pwa edits across tabs * fix(stalker): coordinate playlist replacements with edit * fix(stalker): reserve lazy repairs across tabs * fix(stalker): drain local repair before edit lock * fix(stalker): block queued repairs during edit drain
This commit is contained in:
1 parent
ae375e0e8f
commit
6ad9f3ff8a
74 files changed
+6353
-1083
No files matched your search
@@ -35,3 +35,23 @@ export type PlaylistMeta = Pick<
|
||||
| 'stalkerSignature1'
|
||||
| 'stalkerSignature2'
|
||||
>;
|
||||
|
||||
export interface StalkerPlaylistSessionMetadata {
|
||||
stalkerToken: string;
|
||||
stalkerSessionIdentity?: string;
|
||||
stalkerWatchdogTimeout?: number;
|
||||
stalkerTimeslot?: number;
|
||||
stalkerAccountInfo?: Playlist['stalkerAccountInfo'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Metadata update accepted by the persistence boundary.
|
||||
*
|
||||
* `stalkerSessionPatch` is transient: absence preserves the negotiated
|
||||
* session, `null` clears it, and an object fully replaces it. The patch is
|
||||
* projected onto the existing flat playlist fields and is never persisted as
|
||||
* its own database or backup property.
|
||||
*/
|
||||
export interface PlaylistMetaUpdate extends PlaylistMeta {
|
||||
stalkerSessionPatch?: StalkerPlaylistSessionMetadata | null;
|
||||
}
|
||||
Reference in new issue
Block a user