import { IPayment } from '@ulixee/platform-specification'; import { IDatastoreApiTypes } from '@ulixee/platform-specification/datastore'; import { IDatastoreQueryResult } from '@ulixee/platform-specification/datastore/DatastoreApis'; import Crawler from '../lib/Crawler'; import Extractor from '../lib/Extractor'; import { IOutputClass } from '../lib/Output'; import ResultIterable from '../lib/ResultIterable'; import Table from '../lib/Table'; import ICrawlerOutputSchema from './ICrawlerOutputSchema'; import IDatastoreMetadata from './IDatastoreMetadata'; import IExtractorSchema, { ExtractSchemaType } from './IExtractorSchema'; import IQueryOptions from './IQueryOptions'; export default interface IExtractorContext { input?: ExtractSchemaType; readonly outputs?: ExtractSchemaType[]; readonly Output?: IOutputClass>; schema?: TSchema; datastoreMetadata: IDatastoreMetadata; datastoreAffiliateId?: string; callerAffiliateId?: string; readonly onQueryResult?: (result: IDatastoreQueryResult) => Promise | void; readonly queryId: string; readonly authentication: IDatastoreApiTypes['Datastore.query']['args']['authentication']; readonly onCacheUpdated?: (sessionId: string, crawler: string, action: 'cached' | 'evicted') => Promise | void; readonly payment: IPayment; crawl(crawler: T, options?: T['runArgsType']): Promise; run(extractor: T, options?: T['runArgsType']): ResultIterable>; fetch(extractor: T, options?: T['runArgsType']): ResultIterable>; fetch(table: T, options?: IQueryOptions): ResultIterable>; query(sql: string, boundValues: any[], options: IQueryOptions): Promise; }