import { Session as HeroSession, Tab } from '@ulixee/hero-core'; import { TypedEventEmitter } from '@ulixee/commons/lib/eventUtils'; import IScriptInstanceMeta from '@ulixee/hero-interfaces/IScriptInstanceMeta'; import IHeroSessionActiveEvent from '@ulixee/apps-chromealive-interfaces/events/IHeroSessionActiveEvent'; import IDatastoreOutputEvent from '@ulixee/apps-chromealive-interfaces/events/IDatastoreOutputEvent'; import IDatastoreCollectedAssets from '@ulixee/apps-chromealive-interfaces/IDatastoreCollectedAssets'; import IDatastoreCollectedAssetEvent from '@ulixee/apps-chromealive-interfaces/events/IDatastoreCollectedAssetEvent'; import IAppModeEvent from '@ulixee/apps-chromealive-interfaces/events/IAppModeEvent'; import TimetravelPlayer from '@ulixee/hero-timetravel/player/TimetravelPlayer'; import TimelineWatch from '@ulixee/hero-timetravel/lib/TimelineWatch'; import ISessionApi from '@ulixee/apps-chromealive-interfaces/apis/ISessionApi'; import ISourceCodeLocation from '@ulixee/commons/interfaces/ISourceCodeLocation'; import ISourceCodeReference from '@ulixee/hero-interfaces/ISourceCodeReference'; import MirrorPage from '@ulixee/hero-timetravel/lib/MirrorPage'; import ISessionSearchResult, { ISearchContext } from '@ulixee/apps-chromealive-interfaces/ISessionSearchResult'; import { ISelectorMap } from '@ulixee/apps-chromealive-interfaces/ISelectorMap'; import HeroCorePlugin from './HeroCorePlugin'; import ElementsModule from './hero-plugin-modules/ElementsModule'; import DevtoolsBackdoorModule from './hero-plugin-modules/DevtoolsBackdoorModule'; import SourceCodeTimeline from './SourceCodeTimeline'; import TabGroupModule from './hero-plugin-modules/TabGroupModule'; export default class SessionObserver extends TypedEventEmitter<{ 'hero:updated': void; 'datastore:output': void; 'datastore:asset': IDatastoreCollectedAssetEvent; 'app:mode': void; closed: void; }> { readonly heroSession: HeroSession; mode: IAppModeEvent['mode']; playbackState: IHeroSessionActiveEvent['playbackState']; readonly timetravelPlayer: TimetravelPlayer; readonly timelineWatch: TimelineWatch; readonly scriptInstanceMeta: IScriptInstanceMeta; readonly sourceCodeTimeline: SourceCodeTimeline; readonly liveMirrorPagesByTabId: { [tabId: number]: MirrorPage; }; readonly worldHeroSessionIds: Set; get heroCorePlugin(): HeroCorePlugin; get tabGroupModule(): TabGroupModule; get devtoolsBackdoorModule(): DevtoolsBackdoorModule; get elementsModule(): ElementsModule; mirrorPagePauseRefreshing: boolean; private selectorRecommendations; private vueScreensByName; private scriptEntrypointTs; private scriptLastModifiedTime; private outputRebuilder; private hasScriptUpdatesSinceLastRun; private watchHandle; private events; private readonly lastDomChangesByTabId; private mirrorRefreshLastUpdated; private mirrorRefreshTimeout; private lastTimelineMetadata; private resourceSearch; private isSearchingTimetravel; private readonly logger; constructor(heroSession: HeroSession); onMultiverseSession(session: HeroSession): void; bindExtractor(extractorSession: HeroSession): void; pauseSession(): void; resumeSession(): void; relaunchSession(startLocation: 'sessionStart' | 'extraction'): Promise; toggleInspectElementMode(): Promise; highlightNode(id: { backendNodeId?: number; objectId?: string; }): Promise; hideHighlight(): Promise; search(query: string): Promise; getCurrentSearchContext(): ISearchContext; generateQuerySelector(id: { backendNodeId?: number; objectId?: string; }): Promise; openMode(mode: Parameters[0]['mode']): Promise; close(): void; getScriptDetails(): Pick; getHeroSessionEvent(): IHeroSessionActiveEvent; getCollectedAssets(fromSessionId?: string): Promise; getDatastoreEvent(): IDatastoreOutputEvent; timetravel(option: Parameters[0]): Promise<{ timelineOffsetPercent: number; }>; getSourceCodeAtCommandId(commandId: number): (ISourceCodeLocation & { code: string; })[]; addSourceCodeLocation(record: { commandId: number; } & ISourceCodeReference): void; onCollectedAsset(event: HeroSession['EventTypes']['collected-asset']): void; onTabCreated(event: HeroSession['EventTypes']['tab-created']): void; sendDomRecordingUpdates(tab: Tab, events: Tab['EventTypes']['page-events']): void; refreshLiveMirrorPage(tabId: number, force?: boolean): Promise; getDomRecording(tabId: number): ReturnType; private getSessionPages; private onScriptEntrypointUpdated; private onHeroSessionResumed; private onCommandsPaused; private onCommandsResumed; private onHeroSessionKeptAlive; private resetExtraction; private onOutputUpdated; }