polen
Version:
A framework for delightful GraphQL developer portals
41 lines • 1.5 kB
JavaScript
import { Arr } from '@wollybeard/kit';
import * as DataSources from './data-sources/data-sources.js';
export const readOrThrow = async (config) => {
if (config.enabled === false) {
return null;
}
const useDataSources = config.useDataSources ? Arr.sure(config.useDataSources) : null;
const usingDataSource = (dataSource) => useDataSources === null || useDataSources.includes(dataSource);
if (usingDataSource(`data`) && config.dataSources?.data) {
return config.dataSources.data;
}
if (usingDataSource(`directory`)) {
const directoryConfig = {
projectRoot: config.projectRoot,
...config.dataSources?.directory,
};
const result = await DataSources.SchemaDirectory.readOrThrow(directoryConfig);
if (result)
return result;
}
if (usingDataSource(`file`)) {
const fileConfig = {
projectRoot: config.projectRoot,
...config.dataSources?.file,
};
const result = await DataSources.SchemaFile.readOrThrow(fileConfig);
if (result)
return result;
}
if (usingDataSource(`memory`) && config.dataSources?.memory) {
const memoryConfig = {
projectRoot: config.projectRoot,
...config.dataSources.memory,
};
const result = await DataSources.Memory.read(memoryConfig);
if (result)
return result;
}
return null;
};
//# sourceMappingURL=read.js.map