UNPKG

1.7 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.flagEnabled = flagEnabled;
7exports.issueFlagNotices = issueFlagNotices;
8exports.default = void 0;
9
10var _lodash = _interopRequireDefault(require("lodash"));
11
12var _chalk = _interopRequireDefault(require("chalk"));
13
14var _log = _interopRequireDefault(require("./util/log"));
15
16function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
18const featureFlags = {
19 future: [],
20 experimental: ['optimizeUniversalDefaults']
21};
22
23function flagEnabled(config, flag) {
24 if (featureFlags.future.includes(flag)) {
25 return config.future === 'all' || _lodash.default.get(config, ['future', flag], false);
26 }
27
28 if (featureFlags.experimental.includes(flag)) {
29 return config.experimental === 'all' || _lodash.default.get(config, ['experimental', flag], false);
30 }
31
32 return false;
33}
34
35function experimentalFlagsEnabled(config) {
36 if (config.experimental === 'all') {
37 return featureFlags.experimental;
38 }
39
40 return Object.keys(_lodash.default.get(config, 'experimental', {})).filter(flag => featureFlags.experimental.includes(flag) && config.experimental[flag]);
41}
42
43function issueFlagNotices(config) {
44 if (process.env.JEST_WORKER_ID !== undefined) {
45 return;
46 }
47
48 if (experimentalFlagsEnabled(config).length > 0) {
49 const changes = experimentalFlagsEnabled(config).map(s => _chalk.default.yellow(s)).join(', ');
50
51 _log.default.warn([`You have enabled experimental features: ${changes}`, 'Experimental features are not covered by semver, may introduce breaking changes, and can change at any time.']);
52 }
53}
54
55var _default = featureFlags;
56exports.default = _default;
\No newline at end of file