import { AFM } from '@gooddata/typings'; import * as stringify from 'json-stable-stringify'; import { IDataSource } from '../interfaces/DataSource'; export { IDataSource }; export type ExecFactory = (resultSpec: AFM.IResultSpec) => Promise; export class DataSource implements IDataSource { constructor( private execFactory: ExecFactory, private afm: AFM.IAfm, private fingerprint?: string ) {} public getData(resultSpec: AFM.IResultSpec): Promise { return this.execFactory(resultSpec); } public getAfm(): AFM.IAfm { return this.afm; } public getFingerprint(): string { return this.fingerprint ? this.fingerprint : stringify(this.afm); } }