27 lines
1.1 KiB
TypeScript
Raw Normal View History

import { IAppConfig, IConfigurator } from '@datahub/shared/types/configurator/configurator';
2019-08-31 20:51:14 -07:00
import { DataModelEntity } from '@datahub/data-models/constants/entity';
import { PersonEntity } from '@datahub/data-models/entity/person/person-entity';
2019-08-31 20:51:14 -07:00
/**
* Filters out DataModelEntity types that have configurator guard values set to false
*/
export const unGuardedEntities = (getConfig: IConfigurator['getConfig']): Array<DataModelEntity> => {
2019-08-31 20:51:14 -07:00
// Map of Entity display names to configurator flags
const guards: Record<PersonEntity['displayName'], keyof IAppConfig> = {
[PersonEntity.displayName]: 'showPeople'
};
2019-08-31 20:51:14 -07:00
// List of DataModeEntities that are not flag guarded
const unGuardedEntities: Array<DataModelEntity> = [];
return Object.values(DataModelEntity).reduce(
(unGuardedEntities, entity: typeof DataModelEntity[keyof typeof guards]): Array<DataModelEntity> => {
const guard = guards[entity.displayName];
const isGuarded = Boolean(guard && !getConfig(guard));
2019-08-31 20:51:14 -07:00
return isGuarded ? unGuardedEntities : [...unGuardedEntities, entity];
},
unGuardedEntities
);
};