UNPKG

vscroll

Version:
37 lines 1.33 kB
import { AdapterContext } from './adapter/context'; import { reactiveConfigStorage, AdapterPropType, getDefaultAdapterProps } from './adapter/props'; import { wantedStorage } from './adapter/wanted'; const getDefaultAdapterConfig = () => { const reactive = getDefaultAdapterProps() .filter(({ type }) => type === AdapterPropType.Reactive) .reduce((acc, { name, value }) => { acc[name] = { source: value, emit: (source, val) => source.set(val) }; return acc; }, {}); return { mock: false, reactive }; }; export class DatasourceGeneric { constructor(datasource, config) { this.get = datasource.get; this.settings = datasource.settings; this.devSettings = datasource.devSettings; const adapterContext = new AdapterContext(config || { mock: false }); this.adapter = adapterContext; } // todo: should it be published? dispose() { reactiveConfigStorage.delete(this.adapter.id); wantedStorage.delete(this.adapter.id); } } export const makeDatasource = (getAdapterConfig) => class extends DatasourceGeneric { constructor(datasource) { const config = typeof getAdapterConfig === 'function' ? getAdapterConfig() : getDefaultAdapterConfig(); super(datasource, config); } }; export const Datasource = makeDatasource(); //# sourceMappingURL=datasource.js.map