import { EventEmitter } from 'events'; import ISessionMeta from '@ulixee/hero-interfaces/ISessionMeta'; import { IJsPath } from '@ulixee/js-path'; import IHeroMeta from '@ulixee/hero-interfaces/IHeroMeta'; import ISessionCreateOptions from '@ulixee/hero-interfaces/ISessionCreateOptions'; import IDetachedElement from '@ulixee/hero-interfaces/IDetachedElement'; import IDataSnippet from '@ulixee/hero-interfaces/IDataSnippet'; import IDetachedResource from '@ulixee/hero-interfaces/IDetachedResource'; import { TypedEventEmitter } from '@ulixee/commons/lib/eventUtils'; import CoreCommandQueue from './CoreCommandQueue'; import CoreEventHeap from './CoreEventHeap'; import CoreTab from './CoreTab'; import IJsPathEventTarget from '../interfaces/IJsPathEventTarget'; import ConnectionToHeroCore from '../connections/ConnectionToHeroCore'; import ICoreSession, { IOutputChangeToRecord } from '../interfaces/ICoreSession'; import Hero from './Hero'; import CallsiteLocator from './CallsiteLocator'; export default class CoreSession extends TypedEventEmitter<{ close: void; }> implements IJsPathEventTarget, ICoreSession { tabsById: Map; sessionId: string; sessionName: string; commandQueue: CoreCommandQueue; eventHeap: CoreEventHeap; emitter: EventEmitter<[never]>; readonly mode: ISessionCreateOptions['mode']; readonly hero: Hero; callsiteLocator: CallsiteLocator; get lastCommandId(): number; get nextCommandId(): number; get firstTab(): CoreTab; protected readonly meta: ISessionMeta; private readonly connectionToCore; private commandId; private keepAlivePrompt; private isClosing; private closingPromise; constructor(sessionMeta: ISessionMeta, connectionToCore: ConnectionToHeroCore, options: ISessionCreateOptions, callsiteLocator: CallsiteLocator); onEvent(meta: ISessionMeta, listenerId: string, eventData: any, lastCommandId?: number): void; getHeroMeta(): Promise; newTab(): Promise; getTabs(): Promise; addTab(tabMeta: ISessionMeta): CoreTab; removeTab(tab: CoreTab): void; recordOutput(changes: IOutputChangeToRecord[]): void; setSnippet(key: string, value: any): Promise; getCollectedAssetNames(sessionId: string): Promise<{ resources: string[]; elements: string[]; snippets: string[]; }>; getSnippets(sessionId: string, name: string): Promise; getDetachedElements(sessionId: string, name: string): Promise; getDetachedResources(sessionId: string, name: string): Promise; close(force?: boolean): Promise; addEventListener(jsPath: IJsPath | null, eventType: string, listenerFn: (...args: any[]) => void, options?: any): Promise; removeEventListener(jsPath: IJsPath | null, eventType: string, listenerFn: (...args: any[]) => void): Promise; pause(): Promise; private doClose; private closeCliPrompt; private watchRelaunchLogs; }