UNPKG

1.54 kBPlain TextView Raw
1/* globals EmberDataENV */
2
3/**
4 @module @ember-data/canary-features
5*/
6
7import { assign } from '@ember/polyfills';
8
9import DEFAULT_FEATURES from './default-features';
10
11type FeatureList = {
12 [key in keyof typeof DEFAULT_FEATURES]: boolean | null;
13};
14
15interface ConfigEnv {
16 ENABLE_OPTIONAL_FEATURES?: boolean;
17 FEATURES?: FeatureList;
18}
19
20declare global {
21 export const EmberDataENV: ConfigEnv | undefined | null;
22}
23const ENV: ConfigEnv = typeof EmberDataENV !== 'undefined' && EmberDataENV !== null ? EmberDataENV : {};
24
25function featureValue(value: boolean | null): boolean | null {
26 if (ENV.ENABLE_OPTIONAL_FEATURES && value === null) {
27 return true;
28 }
29
30 return value;
31}
32
33export const FEATURES: FeatureList = assign({}, DEFAULT_FEATURES, ENV.FEATURES);
34export const SAMPLE_FEATURE_FLAG = featureValue(FEATURES.SAMPLE_FEATURE_FLAG);
35export const RECORD_DATA_ERRORS = featureValue(FEATURES.RECORD_DATA_ERRORS);
36export const RECORD_DATA_STATE = featureValue(FEATURES.RECORD_DATA_STATE);
37export const REQUEST_SERVICE = featureValue(FEATURES.REQUEST_SERVICE);
38export const IDENTIFIERS = featureValue(FEATURES.IDENTIFIERS);
39export const CUSTOM_MODEL_CLASS = featureValue(FEATURES.CUSTOM_MODEL_CLASS);
40export const FULL_LINKS_ON_RELATIONSHIPS = featureValue(FEATURES.FULL_LINKS_ON_RELATIONSHIPS);
41export const RECORD_ARRAY_MANAGER_IDENTIFIERS = featureValue(FEATURES.RECORD_ARRAY_MANAGER_IDENTIFIERS);
42export const REMOVE_RECORD_ARRAY_MANAGER_LEGACY_COMPAT = featureValue(
43 FEATURES.REMOVE_RECORD_ARRAY_MANAGER_LEGACY_COMPAT
44);