featureFlags.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. function _export(target, all) {
  6. for(var name in all)Object.defineProperty(target, name, {
  7. enumerable: true,
  8. get: all[name]
  9. });
  10. }
  11. _export(exports, {
  12. flagEnabled: ()=>flagEnabled,
  13. issueFlagNotices: ()=>issueFlagNotices,
  14. default: ()=>_default
  15. });
  16. const _picocolors = /*#__PURE__*/ _interopRequireDefault(require("picocolors"));
  17. const _log = /*#__PURE__*/ _interopRequireDefault(require("./util/log"));
  18. const _sharedState = require("./lib/sharedState");
  19. function _interopRequireDefault(obj) {
  20. return obj && obj.__esModule ? obj : {
  21. default: obj
  22. };
  23. }
  24. let defaults = {
  25. optimizeUniversalDefaults: false,
  26. generalizedModifiers: true,
  27. get disableColorOpacityUtilitiesByDefault () {
  28. return _sharedState.env.OXIDE;
  29. },
  30. get relativeContentPathsByDefault () {
  31. return _sharedState.env.OXIDE;
  32. }
  33. };
  34. let featureFlags = {
  35. future: [
  36. "hoverOnlyWhenSupported",
  37. "respectDefaultRingColorOpacity",
  38. "disableColorOpacityUtilitiesByDefault",
  39. "relativeContentPathsByDefault"
  40. ],
  41. experimental: [
  42. "optimizeUniversalDefaults",
  43. "generalizedModifiers"
  44. ]
  45. };
  46. function flagEnabled(config, flag) {
  47. if (featureFlags.future.includes(flag)) {
  48. var _config_future;
  49. var _config_future_flag, _ref;
  50. return config.future === "all" || ((_ref = (_config_future_flag = config === null || config === void 0 ? void 0 : (_config_future = config.future) === null || _config_future === void 0 ? void 0 : _config_future[flag]) !== null && _config_future_flag !== void 0 ? _config_future_flag : defaults[flag]) !== null && _ref !== void 0 ? _ref : false);
  51. }
  52. if (featureFlags.experimental.includes(flag)) {
  53. var _config_experimental;
  54. var _config_experimental_flag, _ref1;
  55. return config.experimental === "all" || ((_ref1 = (_config_experimental_flag = config === null || config === void 0 ? void 0 : (_config_experimental = config.experimental) === null || _config_experimental === void 0 ? void 0 : _config_experimental[flag]) !== null && _config_experimental_flag !== void 0 ? _config_experimental_flag : defaults[flag]) !== null && _ref1 !== void 0 ? _ref1 : false);
  56. }
  57. return false;
  58. }
  59. function experimentalFlagsEnabled(config) {
  60. if (config.experimental === "all") {
  61. return featureFlags.experimental;
  62. }
  63. var _config_experimental;
  64. return Object.keys((_config_experimental = config === null || config === void 0 ? void 0 : config.experimental) !== null && _config_experimental !== void 0 ? _config_experimental : {}).filter((flag)=>featureFlags.experimental.includes(flag) && config.experimental[flag]);
  65. }
  66. function issueFlagNotices(config) {
  67. if (process.env.JEST_WORKER_ID !== undefined) {
  68. return;
  69. }
  70. if (experimentalFlagsEnabled(config).length > 0) {
  71. let changes = experimentalFlagsEnabled(config).map((s)=>_picocolors.default.yellow(s)).join(", ");
  72. _log.default.warn("experimental-flags-enabled", [
  73. `You have enabled experimental features: ${changes}`,
  74. "Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time."
  75. ]);
  76. }
  77. }
  78. const _default = featureFlags;