tailwindcss 0.0.0-insiders.fde30c3 → 0.0.0-insiders.ff26372

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/README.md +1 -1
  2. package/index.css +5 -0
  3. package/lib/cli/build/index.js +29 -20
  4. package/lib/cli/build/plugin.js +213 -144
  5. package/lib/cli/build/utils.js +31 -21
  6. package/lib/cli/build/watching.js +26 -22
  7. package/lib/cli/help/index.js +17 -15
  8. package/lib/cli/index.js +223 -10
  9. package/lib/cli/init/index.js +30 -13
  10. package/lib/cli.js +1 -237
  11. package/lib/corePluginList.js +8 -1
  12. package/lib/corePlugins.js +2108 -1813
  13. package/lib/css/preflight.css +15 -3
  14. package/lib/featureFlags.js +36 -22
  15. package/lib/index.js +1 -47
  16. package/lib/lib/cacheInvalidation.js +10 -8
  17. package/lib/lib/collapseAdjacentRules.js +9 -7
  18. package/lib/lib/collapseDuplicateDeclarations.js +11 -9
  19. package/lib/lib/content.js +66 -36
  20. package/lib/lib/defaultExtractor.js +21 -14
  21. package/lib/lib/detectNesting.js +18 -10
  22. package/lib/lib/evaluateTailwindFunctions.js +43 -39
  23. package/lib/lib/expandApplyAtRules.js +58 -50
  24. package/lib/lib/expandTailwindAtRules.js +112 -44
  25. package/lib/lib/findAtConfigPath.js +11 -9
  26. package/lib/lib/generateRules.js +192 -122
  27. package/lib/lib/getModuleDependencies.js +85 -37
  28. package/lib/lib/handleImportAtRules.js +50 -0
  29. package/lib/lib/load-config.js +42 -0
  30. package/lib/lib/normalizeTailwindDirectives.js +26 -39
  31. package/lib/lib/offsets.js +136 -47
  32. package/lib/lib/partitionApplyAtRules.js +5 -3
  33. package/lib/lib/regex.js +26 -12
  34. package/lib/lib/remap-bitfield.js +89 -0
  35. package/lib/lib/resolveDefaultsAtRules.js +49 -45
  36. package/lib/lib/setupContextUtils.js +300 -220
  37. package/lib/lib/setupTrackingContext.js +54 -29
  38. package/lib/lib/sharedState.js +36 -17
  39. package/lib/lib/substituteScreenAtRules.js +9 -7
  40. package/lib/plugin.js +164 -0
  41. package/lib/postcss-plugins/nesting/index.js +5 -3
  42. package/lib/postcss-plugins/nesting/plugin.js +19 -17
  43. package/lib/processTailwindFeatures.js +19 -17
  44. package/lib/public/colors.js +269 -245
  45. package/lib/public/create-plugin.js +5 -3
  46. package/lib/public/default-config.js +6 -4
  47. package/lib/public/default-theme.js +6 -4
  48. package/lib/public/load-config.js +12 -0
  49. package/lib/public/resolve-config.js +6 -4
  50. package/lib/util/applyImportantSelector.js +36 -0
  51. package/lib/util/bigSign.js +3 -1
  52. package/lib/util/buildMediaQuery.js +5 -3
  53. package/lib/util/cloneDeep.js +4 -2
  54. package/lib/util/cloneNodes.js +4 -2
  55. package/lib/util/color.js +42 -24
  56. package/lib/util/colorNames.js +752 -0
  57. package/lib/util/configurePlugins.js +3 -1
  58. package/lib/util/createPlugin.js +3 -1
  59. package/lib/util/createUtilityPlugin.js +8 -6
  60. package/lib/util/dataTypes.js +213 -97
  61. package/lib/util/defaults.js +9 -7
  62. package/lib/util/escapeClassName.js +9 -7
  63. package/lib/util/escapeCommas.js +4 -2
  64. package/lib/util/flattenColorPalette.js +5 -3
  65. package/lib/util/formatVariantSelector.js +149 -177
  66. package/lib/util/getAllConfigs.js +11 -8
  67. package/lib/util/hashConfig.js +6 -4
  68. package/lib/util/isKeyframeRule.js +4 -2
  69. package/lib/util/isPlainObject.js +4 -2
  70. package/lib/util/isSyntacticallyValidPropertyValue.js +13 -11
  71. package/lib/util/log.js +31 -10
  72. package/lib/util/nameClass.js +16 -10
  73. package/lib/util/negateValue.js +12 -10
  74. package/lib/util/normalizeConfig.js +101 -69
  75. package/lib/util/normalizeScreens.js +30 -22
  76. package/lib/util/parseAnimationValue.js +41 -39
  77. package/lib/util/parseBoxShadowValue.js +24 -20
  78. package/lib/util/parseDependency.js +7 -5
  79. package/lib/util/parseGlob.js +10 -8
  80. package/lib/util/parseObjectStyles.js +10 -8
  81. package/lib/util/pluginUtils.js +54 -63
  82. package/lib/util/prefixSelector.js +27 -11
  83. package/lib/util/pseudoElements.js +209 -0
  84. package/lib/util/removeAlphaVariables.js +4 -2
  85. package/lib/util/resolveConfig.js +25 -19
  86. package/lib/util/resolveConfigPath.js +28 -12
  87. package/lib/util/responsive.js +7 -5
  88. package/lib/util/splitAtTopLevelOnly.js +12 -4
  89. package/lib/util/tap.js +3 -1
  90. package/lib/util/toColorValue.js +4 -2
  91. package/lib/util/toPath.js +5 -3
  92. package/lib/util/transformThemeValue.js +30 -28
  93. package/lib/util/validateConfig.js +31 -7
  94. package/lib/util/validateFormalSyntax.js +8 -6
  95. package/lib/util/withAlphaVariable.js +11 -7
  96. package/lib/value-parser/LICENSE +22 -0
  97. package/lib/value-parser/README.md +3 -0
  98. package/lib/value-parser/index.d.js +2 -0
  99. package/lib/value-parser/index.js +22 -0
  100. package/lib/value-parser/parse.js +259 -0
  101. package/lib/value-parser/stringify.js +38 -0
  102. package/lib/value-parser/unit.js +86 -0
  103. package/lib/value-parser/walk.js +16 -0
  104. package/loadConfig.d.ts +4 -0
  105. package/loadConfig.js +2 -0
  106. package/package.json +49 -50
  107. package/src/cli/build/index.js +11 -7
  108. package/src/cli/build/plugin.js +110 -75
  109. package/src/cli/build/watching.js +4 -2
  110. package/src/cli/index.js +217 -3
  111. package/src/cli/init/index.js +37 -8
  112. package/src/cli.js +1 -232
  113. package/src/corePluginList.js +1 -1
  114. package/src/corePlugins.js +247 -44
  115. package/src/css/preflight.css +15 -3
  116. package/src/featureFlags.js +7 -3
  117. package/src/index.js +1 -47
  118. package/src/lib/content.js +45 -18
  119. package/src/lib/defaultExtractor.js +8 -2
  120. package/src/lib/detectNesting.js +9 -1
  121. package/src/lib/evaluateTailwindFunctions.js +4 -1
  122. package/src/lib/expandApplyAtRules.js +8 -1
  123. package/src/lib/expandTailwindAtRules.js +78 -13
  124. package/src/lib/generateRules.js +137 -52
  125. package/src/lib/getModuleDependencies.js +70 -30
  126. package/src/lib/handleImportAtRules.js +34 -0
  127. package/src/lib/load-config.ts +31 -0
  128. package/src/lib/normalizeTailwindDirectives.js +0 -27
  129. package/src/lib/offsets.js +105 -2
  130. package/src/lib/remap-bitfield.js +82 -0
  131. package/src/lib/setupContextUtils.js +121 -61
  132. package/src/lib/setupTrackingContext.js +37 -14
  133. package/src/lib/sharedState.js +11 -4
  134. package/src/plugin.js +133 -0
  135. package/src/processTailwindFeatures.js +3 -2
  136. package/src/public/colors.js +22 -0
  137. package/src/public/default-config.js +1 -1
  138. package/src/public/default-theme.js +2 -2
  139. package/src/public/load-config.js +2 -0
  140. package/src/util/applyImportantSelector.js +27 -0
  141. package/src/util/color.js +18 -3
  142. package/src/util/colorNames.js +150 -0
  143. package/src/util/dataTypes.js +93 -9
  144. package/src/util/formatVariantSelector.js +161 -174
  145. package/src/util/getAllConfigs.js +2 -2
  146. package/src/util/log.js +24 -0
  147. package/src/util/negateValue.js +1 -1
  148. package/src/util/normalizeConfig.js +39 -11
  149. package/src/util/pluginUtils.js +11 -38
  150. package/src/util/prefixSelector.js +29 -10
  151. package/src/util/pseudoElements.js +167 -0
  152. package/src/util/resolveConfigPath.js +12 -1
  153. package/src/util/splitAtTopLevelOnly.js +8 -1
  154. package/src/util/validateConfig.js +23 -0
  155. package/src/value-parser/LICENSE +22 -0
  156. package/src/value-parser/README.md +3 -0
  157. package/src/value-parser/index.d.ts +177 -0
  158. package/src/value-parser/index.js +28 -0
  159. package/src/value-parser/parse.js +303 -0
  160. package/src/value-parser/stringify.js +41 -0
  161. package/src/value-parser/unit.js +118 -0
  162. package/src/value-parser/walk.js +18 -0
  163. package/stubs/.gitignore +1 -0
  164. package/stubs/.prettierrc.json +6 -0
  165. package/stubs/{defaultConfig.stub.js → config.full.js} +52 -9
  166. package/stubs/{simpleConfig.stub.js → config.simple.js} +1 -2
  167. package/stubs/{defaultPostCssConfig.stub.js → postcss.config.cjs} +0 -1
  168. package/stubs/postcss.config.js +5 -0
  169. package/stubs/tailwind.config.cjs +2 -0
  170. package/stubs/tailwind.config.js +2 -0
  171. package/stubs/tailwind.config.ts +3 -0
  172. package/types/config.d.ts +19 -12
  173. package/types/generated/colors.d.ts +22 -0
  174. package/types/generated/corePluginList.d.ts +1 -1
  175. package/types/generated/default-theme.d.ts +33 -3
  176. package/CHANGELOG.md +0 -2347
  177. package/lib/cli/build/deps.js +0 -54
  178. package/lib/cli/shared.js +0 -12
  179. package/lib/cli-peer-dependencies.js +0 -28
  180. package/lib/constants.js +0 -44
  181. package/peers/index.js +0 -79526
  182. package/scripts/install-integrations.js +0 -27
  183. package/scripts/rebuildFixtures.js +0 -68
  184. package/src/cli/build/deps.js +0 -56
  185. package/src/cli/shared.js +0 -5
  186. package/src/cli-peer-dependencies.js +0 -15
  187. package/src/constants.js +0 -17
package/README.md CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
  <p align="center">
17
- <a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/workflow/status/tailwindlabs/tailwindcss/Node.js%20CI" alt="Build Status"></a>
17
+ <a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/actions/workflow/status/tailwindlabs/tailwindcss/ci.yml?branch=master" alt="Build Status"></a>
18
18
  <a href="https://www.npmjs.com/package/tailwindcss"><img src="https://img.shields.io/npm/dt/tailwindcss.svg" alt="Total Downloads"></a>
19
19
  <a href="https://github.com/tailwindcss/tailwindcss/releases"><img src="https://img.shields.io/npm/v/tailwindcss.svg" alt="Latest Release"></a>
20
20
  <a href="https://github.com/tailwindcss/tailwindcss/blob/master/LICENSE"><img src="https://img.shields.io/npm/l/tailwindcss.svg" alt="License"></a>
package/index.css ADDED
@@ -0,0 +1,5 @@
1
+ @tailwind base;
2
+
3
+ @tailwind components;
4
+
5
+ @tailwind utilities;
@@ -5,44 +5,53 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  Object.defineProperty(exports, "build", {
7
7
  enumerable: true,
8
- get: ()=>build
8
+ get: function() {
9
+ return build;
10
+ }
9
11
  });
10
- const _fs = /*#__PURE__*/ _interopRequireDefault(require("fs"));
11
- const _path = /*#__PURE__*/ _interopRequireDefault(require("path"));
12
- const _pluginJs = require("./plugin.js");
13
- function _interopRequireDefault(obj) {
12
+ const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
13
+ const _path = /*#__PURE__*/ _interop_require_default(require("path"));
14
+ const _resolveConfigPath = require("../../util/resolveConfigPath.js");
15
+ const _plugin = require("./plugin.js");
16
+ function _interop_require_default(obj) {
14
17
  return obj && obj.__esModule ? obj : {
15
18
  default: obj
16
19
  };
17
20
  }
18
- async function build(args, configs) {
19
- let input = args["--input"];
20
- let shouldWatch = args["--watch"];
21
+ async function build(args) {
22
+ let input = args['--input'];
23
+ let shouldWatch = args['--watch'];
21
24
  // TODO: Deprecate this in future versions
22
- if (!input && args["_"][1]) {
23
- console.error("[deprecation] Running tailwindcss without -i, please provide an input file.");
24
- input = args["--input"] = args["_"][1];
25
+ if (!input && args['_'][1]) {
26
+ console.error('[deprecation] Running tailwindcss without -i, please provide an input file.');
27
+ input = args['--input'] = args['_'][1];
25
28
  }
26
- if (input && input !== "-" && !_fs.default.existsSync(input = _path.default.resolve(input))) {
27
- console.error(`Specified input file ${args["--input"]} does not exist.`);
29
+ if (input && input !== '-' && !_fs.default.existsSync(input = _path.default.resolve(input))) {
30
+ console.error(`Specified input file ${args['--input']} does not exist.`);
28
31
  process.exit(9);
29
32
  }
30
- if (args["--config"] && !_fs.default.existsSync(args["--config"] = _path.default.resolve(args["--config"]))) {
31
- console.error(`Specified config file ${args["--config"]} does not exist.`);
33
+ if (args['--config'] && !_fs.default.existsSync(args['--config'] = _path.default.resolve(args['--config']))) {
34
+ console.error(`Specified config file ${args['--config']} does not exist.`);
32
35
  process.exit(9);
33
36
  }
37
+ if (args['--no-autoprefixer']) {
38
+ console.error('[deprecation] The --no-autoprefixer flag is deprecated and has no effect.');
39
+ }
34
40
  // TODO: Reference the @config path here if exists
35
- let configPath = args["--config"] ? args["--config"] : ((defaultPath)=>_fs.default.existsSync(defaultPath) ? defaultPath : null)(_path.default.resolve(`./${configs.tailwind}`));
36
- let processor = await (0, _pluginJs.createProcessor)(args, configPath);
41
+ let configPath = args['--config'] ? args['--config'] : (0, _resolveConfigPath.resolveDefaultConfigPath)();
42
+ let processor = await (0, _plugin.createProcessor)(args, configPath);
37
43
  if (shouldWatch) {
38
44
  // Abort the watcher if stdin is closed to avoid zombie processes
39
45
  // You can disable this behavior with --watch=always
40
- if (args["--watch"] !== "always") {
41
- process.stdin.on("end", ()=>process.exit(0));
46
+ if (args['--watch'] !== 'always') {
47
+ process.stdin.on('end', ()=>process.exit(0));
42
48
  }
43
49
  process.stdin.resume();
44
50
  await processor.watch();
45
51
  } else {
46
- await processor.build();
52
+ await processor.build().catch((e)=>{
53
+ console.error(e);
54
+ process.exit(1);
55
+ });
47
56
  }
48
57
  }
@@ -5,32 +5,118 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  Object.defineProperty(exports, "createProcessor", {
7
7
  enumerable: true,
8
- get: ()=>createProcessor
8
+ get: function() {
9
+ return createProcessor;
10
+ }
9
11
  });
10
- const _path = /*#__PURE__*/ _interopRequireDefault(require("path"));
11
- const _fs = /*#__PURE__*/ _interopRequireDefault(require("fs"));
12
- const _postcssLoadConfig = /*#__PURE__*/ _interopRequireDefault(require("postcss-load-config"));
12
+ const _packagejson = /*#__PURE__*/ _interop_require_default(require("../../../package.json"));
13
+ const _path = /*#__PURE__*/ _interop_require_default(require("path"));
14
+ const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
15
+ const _postcss = /*#__PURE__*/ _interop_require_default(require("postcss"));
16
+ const _postcssloadconfig = /*#__PURE__*/ _interop_require_default(require("postcss-load-config"));
17
+ const _browserslist = /*#__PURE__*/ _interop_require_default(require("browserslist"));
18
+ const _lightningcss = /*#__PURE__*/ _interop_require_wildcard(require("lightningcss"));
13
19
  const _lilconfig = require("lilconfig");
14
- const _plugins = /*#__PURE__*/ _interopRequireDefault(require("postcss-load-config/src/plugins" // Little bit scary, looking at private/internal API
20
+ const _plugins = /*#__PURE__*/ _interop_require_default(require("postcss-load-config/src/plugins" // Little bit scary, looking at private/internal API
15
21
  ));
16
- const _options = /*#__PURE__*/ _interopRequireDefault(require("postcss-load-config/src/options" // Little bit scary, looking at private/internal API
22
+ const _options = /*#__PURE__*/ _interop_require_default(require("postcss-load-config/src/options" // Little bit scary, looking at private/internal API
17
23
  ));
18
- const _processTailwindFeatures = /*#__PURE__*/ _interopRequireDefault(require("../../processTailwindFeatures"));
19
- const _deps = require("./deps");
24
+ const _processTailwindFeatures = /*#__PURE__*/ _interop_require_default(require("../../processTailwindFeatures"));
20
25
  const _utils = require("./utils");
21
- const _shared = require("../shared");
22
- const _resolveConfigJs = /*#__PURE__*/ _interopRequireDefault(require("../../../resolveConfig.js"));
23
- const _getModuleDependenciesJs = /*#__PURE__*/ _interopRequireDefault(require("../../lib/getModuleDependencies.js"));
24
- const _contentJs = require("../../lib/content.js");
25
- const _watchingJs = require("./watching.js");
26
- const _fastGlob = /*#__PURE__*/ _interopRequireDefault(require("fast-glob"));
27
- const _findAtConfigPathJs = require("../../lib/findAtConfigPath.js");
28
- const _log = /*#__PURE__*/ _interopRequireDefault(require("../../util/log"));
29
- function _interopRequireDefault(obj) {
26
+ const _sharedState = require("../../lib/sharedState");
27
+ const _resolveConfig = /*#__PURE__*/ _interop_require_default(require("../../../resolveConfig.js"));
28
+ const _content = require("../../lib/content.js");
29
+ const _watching = require("./watching.js");
30
+ const _fastglob = /*#__PURE__*/ _interop_require_default(require("fast-glob"));
31
+ const _findAtConfigPath = require("../../lib/findAtConfigPath.js");
32
+ const _log = /*#__PURE__*/ _interop_require_default(require("../../util/log"));
33
+ const _loadconfig = require("../../lib/load-config");
34
+ const _getModuleDependencies = /*#__PURE__*/ _interop_require_default(require("../../lib/getModuleDependencies"));
35
+ const _validateConfig = require("../../util/validateConfig");
36
+ const _handleImportAtRules = require("../../lib/handleImportAtRules");
37
+ const _featureFlags = require("../../featureFlags");
38
+ function _interop_require_default(obj) {
30
39
  return obj && obj.__esModule ? obj : {
31
40
  default: obj
32
41
  };
33
42
  }
43
+ function _getRequireWildcardCache(nodeInterop) {
44
+ if (typeof WeakMap !== "function") return null;
45
+ var cacheBabelInterop = new WeakMap();
46
+ var cacheNodeInterop = new WeakMap();
47
+ return (_getRequireWildcardCache = function(nodeInterop) {
48
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
49
+ })(nodeInterop);
50
+ }
51
+ function _interop_require_wildcard(obj, nodeInterop) {
52
+ if (!nodeInterop && obj && obj.__esModule) {
53
+ return obj;
54
+ }
55
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
56
+ return {
57
+ default: obj
58
+ };
59
+ }
60
+ var cache = _getRequireWildcardCache(nodeInterop);
61
+ if (cache && cache.has(obj)) {
62
+ return cache.get(obj);
63
+ }
64
+ var newObj = {};
65
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
66
+ for(var key in obj){
67
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
68
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
69
+ if (desc && (desc.get || desc.set)) {
70
+ Object.defineProperty(newObj, key, desc);
71
+ } else {
72
+ newObj[key] = obj[key];
73
+ }
74
+ }
75
+ }
76
+ newObj.default = obj;
77
+ if (cache) {
78
+ cache.set(obj, newObj);
79
+ }
80
+ return newObj;
81
+ }
82
+ function license() {
83
+ return `/* ! tailwindcss v${_packagejson.default.version} | MIT License | https://tailwindcss.com */\n`;
84
+ }
85
+ async function lightningcss(result, { map = true, minify = true } = {}) {
86
+ try {
87
+ var _browserslist_findConfig;
88
+ var _result_opts_from;
89
+ let resolvedBrowsersListConfig = (_browserslist_findConfig = _browserslist.default.findConfig((_result_opts_from = result.opts.from) !== null && _result_opts_from !== void 0 ? _result_opts_from : process.cwd())) === null || _browserslist_findConfig === void 0 ? void 0 : _browserslist_findConfig.defaults;
90
+ let defaultBrowsersListConfig = _packagejson.default.browserslist;
91
+ let browsersListConfig = resolvedBrowsersListConfig !== null && resolvedBrowsersListConfig !== void 0 ? resolvedBrowsersListConfig : defaultBrowsersListConfig;
92
+ let transformed = _lightningcss.default.transform({
93
+ filename: result.opts.from || 'input.css',
94
+ code: Buffer.from(result.css, 'utf-8'),
95
+ minify,
96
+ sourceMap: result.map === undefined ? map : !!result.map,
97
+ inputSourceMap: result.map ? result.map.toString() : undefined,
98
+ targets: _lightningcss.default.browserslistToTargets((0, _browserslist.default)(browsersListConfig)),
99
+ drafts: {
100
+ nesting: true
101
+ },
102
+ include: _lightningcss.Features.Nesting,
103
+ exclude: _lightningcss.Features.LogicalProperties
104
+ });
105
+ return Object.assign(result, {
106
+ css: transformed.code.toString('utf8'),
107
+ map: result.map ? Object.assign(result.map, {
108
+ toString () {
109
+ var _transformed_map;
110
+ return (_transformed_map = transformed.map) === null || _transformed_map === void 0 ? void 0 : _transformed_map.toString();
111
+ }
112
+ }) : result.map
113
+ });
114
+ } catch (err) {
115
+ console.error('Unable to use Lightning CSS. Using raw version instead.');
116
+ console.error(err);
117
+ return result;
118
+ }
119
+ }
34
120
  /**
35
121
  *
36
122
  * @param {string} [customPostCssPath ]
@@ -40,8 +126,8 @@ function _interopRequireDefault(obj) {
40
126
  let file = _path.default.resolve(customPostCssPath);
41
127
  // Implementation, see: https://unpkg.com/browse/postcss-load-config@3.1.0/src/index.js
42
128
  // @ts-ignore
43
- let { config ={} } = await (0, _lilconfig.lilconfig)("postcss").load(file);
44
- if (typeof config === "function") {
129
+ let { config = {} } = await (0, _lilconfig.lilconfig)('postcss').load(file);
130
+ if (typeof config === 'function') {
45
131
  config = config();
46
132
  } else {
47
133
  config = Object.assign({}, config);
@@ -54,13 +140,13 @@ function _interopRequireDefault(obj) {
54
140
  plugins: (0, _plugins.default)(config, file),
55
141
  options: (0, _options.default)(config, file)
56
142
  };
57
- })() : await (0, _postcssLoadConfig.default)();
143
+ })() : await (0, _postcssloadconfig.default)();
58
144
  let configPlugins = config.plugins;
59
145
  let configPluginTailwindIdx = configPlugins.findIndex((plugin)=>{
60
- if (typeof plugin === "function" && plugin.name === "tailwindcss") {
146
+ if (typeof plugin === 'function' && plugin.name === 'tailwindcss') {
61
147
  return true;
62
148
  }
63
- if (typeof plugin === "object" && plugin !== null && plugin.postcssPlugin === "tailwindcss") {
149
+ if (typeof plugin === 'object' && plugin !== null && plugin.postcssPlugin === 'tailwindcss') {
64
150
  return true;
65
151
  }
66
152
  return false;
@@ -73,48 +159,16 @@ function _interopRequireDefault(obj) {
73
159
  config.options
74
160
  ];
75
161
  }
76
- function loadBuiltinPostcssPlugins() {
77
- let postcss = (0, _deps.loadPostcss)();
78
- let IMPORT_COMMENT = "__TAILWIND_RESTORE_IMPORT__: ";
79
- return [
80
- [
81
- (root)=>{
82
- root.walkAtRules("import", (rule)=>{
83
- if (rule.params.slice(1).startsWith("tailwindcss/")) {
84
- rule.after(postcss.comment({
85
- text: IMPORT_COMMENT + rule.params
86
- }));
87
- rule.remove();
88
- }
89
- });
90
- },
91
- (0, _deps.loadPostcssImport)(),
92
- (root)=>{
93
- root.walkComments((rule)=>{
94
- if (rule.text.startsWith(IMPORT_COMMENT)) {
95
- rule.after(postcss.atRule({
96
- name: "import",
97
- params: rule.text.replace(IMPORT_COMMENT, "")
98
- }));
99
- rule.remove();
100
- }
101
- });
102
- }
103
- ],
104
- [],
105
- {}
106
- ];
107
- }
108
162
  let state = {
109
163
  /** @type {any} */ context: null,
110
164
  /** @type {ReturnType<typeof createWatcher> | null} */ watcher: null,
111
165
  /** @type {{content: string, extension: string}[]} */ changedContent: [],
112
- configDependencies: new Set(),
166
+ /** @type {{config: import('../../../types').Config, dependencies: Set<string>, dispose: Function } | null} */ configBag: null,
113
167
  contextDependencies: new Set(),
114
168
  /** @type {import('../../lib/content.js').ContentPath[]} */ contentPaths: [],
115
169
  refreshContentPaths () {
116
170
  var _this_context;
117
- this.contentPaths = (0, _contentJs.parseCandidateFiles)(this.context, (_this_context = this.context) === null || _this_context === void 0 ? void 0 : _this_context.tailwindConfig);
171
+ this.contentPaths = (0, _content.parseCandidateFiles)(this.context, (_this_context = this.context) === null || _this_context === void 0 ? void 0 : _this_context.tailwindConfig);
118
172
  },
119
173
  get config () {
120
174
  return this.context.tailwindConfig;
@@ -126,51 +180,57 @@ let state = {
126
180
  };
127
181
  },
128
182
  loadConfig (configPath, content) {
183
+ var _content;
129
184
  if (this.watcher && configPath) {
130
- this.refreshConfigDependencies(configPath);
185
+ this.refreshConfigDependencies();
131
186
  }
132
- let config = configPath ? require(configPath) : {};
133
- // @ts-ignore
134
- config = (0, _resolveConfigJs.default)(config, {
135
- content: {
136
- files: []
187
+ let config = (0, _loadconfig.loadConfig)(configPath);
188
+ let dependencies = (0, _getModuleDependencies.default)(configPath);
189
+ this.configBag = {
190
+ config,
191
+ dependencies,
192
+ dispose () {
193
+ for (let file of dependencies){
194
+ delete require.cache[require.resolve(file)];
195
+ }
137
196
  }
138
- });
197
+ };
198
+ this.configBag.config = (0, _validateConfig.validateConfig)((0, _resolveConfig.default)(this.configBag.config));
139
199
  // Override content files if `--content` has been passed explicitly
140
- if ((content === null || content === void 0 ? void 0 : content.length) > 0) {
141
- config.content.files = content;
200
+ if (((_content = content) === null || _content === void 0 ? void 0 : _content.length) > 0) {
201
+ this.configBag.config.content.files = content;
142
202
  }
143
- return config;
203
+ return this.configBag.config;
144
204
  },
145
- refreshConfigDependencies (configPath) {
146
- _shared.env.DEBUG && console.time("Module dependencies");
147
- for (let file of this.configDependencies){
148
- delete require.cache[require.resolve(file)];
149
- }
150
- if (configPath) {
151
- let deps = (0, _getModuleDependenciesJs.default)(configPath).map(({ file })=>file);
152
- for (let dependency of deps){
153
- this.configDependencies.add(dependency);
154
- }
155
- }
156
- _shared.env.DEBUG && console.timeEnd("Module dependencies");
205
+ refreshConfigDependencies () {
206
+ var _this_configBag;
207
+ _sharedState.env.DEBUG && console.time('Module dependencies');
208
+ (_this_configBag = this.configBag) === null || _this_configBag === void 0 ? void 0 : _this_configBag.dispose();
209
+ _sharedState.env.DEBUG && console.timeEnd('Module dependencies');
157
210
  },
158
211
  readContentPaths () {
159
212
  let content = [];
160
213
  // Resolve globs from the content config
161
214
  // TODO: When we make the postcss plugin async-capable this can become async
162
- let files = _fastGlob.default.sync(this.contentPatterns.all);
215
+ let files = _fastglob.default.sync(this.contentPatterns.all);
163
216
  for (let file of files){
164
- content.push({
165
- content: _fs.default.readFileSync(_path.default.resolve(file), "utf8"),
166
- extension: _path.default.extname(file).slice(1)
167
- });
217
+ if ((0, _featureFlags.flagEnabled)(this.config, 'oxideParser')) {
218
+ content.push({
219
+ file,
220
+ extension: _path.default.extname(file).slice(1)
221
+ });
222
+ } else {
223
+ content.push({
224
+ content: _fs.default.readFileSync(_path.default.resolve(file), 'utf8'),
225
+ extension: _path.default.extname(file).slice(1)
226
+ });
227
+ }
168
228
  }
169
229
  // Resolve raw content in the tailwind config
170
230
  let rawContent = this.config.content.files.filter((file)=>{
171
- return file !== null && typeof file === "object";
231
+ return file !== null && typeof file === 'object';
172
232
  });
173
- for (let { raw: htmlContent , extension ="html" } of rawContent){
233
+ for (let { raw: htmlContent, extension = 'html' } of rawContent){
174
234
  content.push({
175
235
  content: htmlContent,
176
236
  extension
@@ -178,67 +238,69 @@ let state = {
178
238
  }
179
239
  return content;
180
240
  },
181
- getContext ({ createContext , cliConfigPath , root , result , content }) {
241
+ getContext ({ createContext, cliConfigPath, root, result, content }) {
182
242
  if (this.context) {
183
243
  this.context.changedContent = this.changedContent.splice(0);
184
244
  return this.context;
185
245
  }
186
- _shared.env.DEBUG && console.time("Searching for config");
187
- var _findAtConfigPath;
188
- let configPath = (_findAtConfigPath = (0, _findAtConfigPathJs.findAtConfigPath)(root, result)) !== null && _findAtConfigPath !== void 0 ? _findAtConfigPath : cliConfigPath;
189
- _shared.env.DEBUG && console.timeEnd("Searching for config");
190
- _shared.env.DEBUG && console.time("Loading config");
246
+ _sharedState.env.DEBUG && console.time('Searching for config');
247
+ var _findAtConfigPath1;
248
+ let configPath = (_findAtConfigPath1 = (0, _findAtConfigPath.findAtConfigPath)(root, result)) !== null && _findAtConfigPath1 !== void 0 ? _findAtConfigPath1 : cliConfigPath;
249
+ _sharedState.env.DEBUG && console.timeEnd('Searching for config');
250
+ _sharedState.env.DEBUG && console.time('Loading config');
191
251
  let config = this.loadConfig(configPath, content);
192
- _shared.env.DEBUG && console.timeEnd("Loading config");
193
- _shared.env.DEBUG && console.time("Creating context");
252
+ _sharedState.env.DEBUG && console.timeEnd('Loading config');
253
+ _sharedState.env.DEBUG && console.time('Creating context');
194
254
  this.context = createContext(config, []);
195
255
  Object.assign(this.context, {
196
256
  userConfigPath: configPath
197
257
  });
198
- _shared.env.DEBUG && console.timeEnd("Creating context");
199
- _shared.env.DEBUG && console.time("Resolving content paths");
258
+ _sharedState.env.DEBUG && console.timeEnd('Creating context');
259
+ _sharedState.env.DEBUG && console.time('Resolving content paths');
200
260
  this.refreshContentPaths();
201
- _shared.env.DEBUG && console.timeEnd("Resolving content paths");
261
+ _sharedState.env.DEBUG && console.timeEnd('Resolving content paths');
202
262
  if (this.watcher) {
203
- _shared.env.DEBUG && console.time("Watch new files");
263
+ _sharedState.env.DEBUG && console.time('Watch new files');
204
264
  this.watcher.refreshWatchedFiles();
205
- _shared.env.DEBUG && console.timeEnd("Watch new files");
265
+ _sharedState.env.DEBUG && console.timeEnd('Watch new files');
206
266
  }
207
- _shared.env.DEBUG && console.time("Reading content files");
208
267
  for (let file of this.readContentPaths()){
209
268
  this.context.changedContent.push(file);
210
269
  }
211
- _shared.env.DEBUG && console.timeEnd("Reading content files");
212
270
  return this.context;
213
271
  }
214
272
  };
215
273
  async function createProcessor(args, cliConfigPath) {
216
274
  var _args_content;
217
- let postcss = (0, _deps.loadPostcss)();
218
- let input = args["--input"];
219
- let output = args["--output"];
220
- let includePostCss = args["--postcss"];
221
- let customPostCssPath = typeof args["--postcss"] === "string" ? args["--postcss"] : undefined;
222
- let [beforePlugins, afterPlugins, postcssOptions] = includePostCss ? await loadPostCssPlugins(customPostCssPath) : loadBuiltinPostcssPlugins();
223
- if (args["--purge"]) {
224
- _log.default.warn("purge-flag-deprecated", [
225
- "The `--purge` flag has been deprecated.",
226
- "Please use `--content` instead."
275
+ let input = args['--input'];
276
+ let output = args['--output'];
277
+ let includePostCss = args['--postcss'];
278
+ let customPostCssPath = typeof args['--postcss'] === 'string' ? args['--postcss'] : undefined;
279
+ let [beforePlugins, afterPlugins, postcssOptions] = includePostCss ? await loadPostCssPlugins(customPostCssPath) : [
280
+ [],
281
+ [],
282
+ {}
283
+ ];
284
+ beforePlugins.unshift(...(0, _handleImportAtRules.handleImportAtRules)());
285
+ if (args['--purge']) {
286
+ _log.default.warn('purge-flag-deprecated', [
287
+ 'The `--purge` flag has been deprecated.',
288
+ 'Please use `--content` instead.'
227
289
  ]);
228
- if (!args["--content"]) {
229
- args["--content"] = args["--purge"];
290
+ if (!args['--content']) {
291
+ args['--content'] = args['--purge'];
230
292
  }
231
293
  }
232
294
  var _args_content_split;
233
- let content = (_args_content_split = (_args_content = args["--content"]) === null || _args_content === void 0 ? void 0 : _args_content.split(/(?<!{[^}]+),/)) !== null && _args_content_split !== void 0 ? _args_content_split : [];
295
+ let content = (_args_content_split = (_args_content = args['--content']) === null || _args_content === void 0 ? void 0 : _args_content.split(RegExp("(?<!{[^}]+),"))) !== null && _args_content_split !== void 0 ? _args_content_split : [];
234
296
  let tailwindPlugin = ()=>{
235
297
  return {
236
- postcssPlugin: "tailwindcss",
237
- Once (root, { result }) {
238
- _shared.env.DEBUG && console.time("Compiling CSS");
239
- (0, _processTailwindFeatures.default)(({ createContext })=>{
298
+ postcssPlugin: 'tailwindcss',
299
+ async Once (root, { result }) {
300
+ _sharedState.env.DEBUG && console.time('Compiling CSS');
301
+ await (0, _processTailwindFeatures.default)(({ createContext })=>{
240
302
  console.error();
241
- console.error("Rebuilding...");
303
+ console.error('Rebuilding...');
242
304
  return ()=>{
243
305
  return state.getContext({
244
306
  createContext,
@@ -249,7 +311,7 @@ async function createProcessor(args, cliConfigPath) {
249
311
  });
250
312
  };
251
313
  })(root, result);
252
- _shared.env.DEBUG && console.timeEnd("Compiling CSS");
314
+ _sharedState.env.DEBUG && console.timeEnd('Compiling CSS');
253
315
  }
254
316
  };
255
317
  };
@@ -257,60 +319,62 @@ async function createProcessor(args, cliConfigPath) {
257
319
  let plugins = [
258
320
  ...beforePlugins,
259
321
  tailwindPlugin,
260
- !args["--minify"] && _utils.formatNodes,
261
- ...afterPlugins,
262
- !args["--no-autoprefixer"] && (0, _deps.loadAutoprefixer)(),
263
- args["--minify"] && (0, _deps.loadCssNano)()
322
+ !args['--minify'] && _utils.formatNodes,
323
+ ...afterPlugins
264
324
  ].filter(Boolean);
265
325
  /** @type {import('postcss').Processor} */ // @ts-ignore
266
- let processor = postcss(plugins);
326
+ let processor = (0, _postcss.default)(plugins);
267
327
  async function readInput() {
268
328
  // Piping in data, let's drain the stdin
269
- if (input === "-") {
329
+ if (input === '-') {
270
330
  return (0, _utils.drainStdin)();
271
331
  }
272
332
  // Input file has been provided
273
333
  if (input) {
274
- return _fs.default.promises.readFile(_path.default.resolve(input), "utf8");
334
+ return _fs.default.promises.readFile(_path.default.resolve(input), 'utf8');
275
335
  }
276
336
  // No input file provided, fallback to default atrules
277
- return "@tailwind base; @tailwind components; @tailwind utilities";
337
+ return '@tailwind base; @tailwind components; @tailwind utilities';
278
338
  }
279
339
  async function build() {
280
340
  let start = process.hrtime.bigint();
281
- return readInput().then((css)=>processor.process(css, {
282
- ...postcssOptions,
283
- from: input,
284
- to: output
341
+ let options = {
342
+ ...postcssOptions,
343
+ from: input,
344
+ to: output
345
+ };
346
+ return readInput().then((css)=>processor.process(css, options)).then((result)=>lightningcss(result, {
347
+ ...options,
348
+ minify: !!args['--minify']
285
349
  })).then((result)=>{
286
350
  if (!state.watcher) {
287
351
  return result;
288
352
  }
289
- _shared.env.DEBUG && console.time("Recording PostCSS dependencies");
353
+ _sharedState.env.DEBUG && console.time('Recording PostCSS dependencies');
290
354
  for (let message of result.messages){
291
- if (message.type === "dependency") {
355
+ if (message.type === 'dependency') {
292
356
  state.contextDependencies.add(message.file);
293
357
  }
294
358
  }
295
- _shared.env.DEBUG && console.timeEnd("Recording PostCSS dependencies");
359
+ _sharedState.env.DEBUG && console.timeEnd('Recording PostCSS dependencies');
296
360
  // TODO: This needs to be in a different spot
297
- _shared.env.DEBUG && console.time("Watch new files");
361
+ _sharedState.env.DEBUG && console.time('Watch new files');
298
362
  state.watcher.refreshWatchedFiles();
299
- _shared.env.DEBUG && console.timeEnd("Watch new files");
363
+ _sharedState.env.DEBUG && console.timeEnd('Watch new files');
300
364
  return result;
301
365
  }).then((result)=>{
302
366
  if (!output) {
303
- process.stdout.write(result.css);
367
+ process.stdout.write(license() + result.css);
304
368
  return;
305
369
  }
306
370
  return Promise.all([
307
- (0, _utils.outputFile)(result.opts.to, result.css),
308
- result.map && (0, _utils.outputFile)(result.opts.to + ".map", result.map.toString())
371
+ (0, _utils.outputFile)(result.opts.to, license() + result.css),
372
+ result.map && (0, _utils.outputFile)(result.opts.to + '.map', result.map.toString())
309
373
  ]);
310
374
  }).then(()=>{
311
375
  let end = process.hrtime.bigint();
312
376
  console.error();
313
- console.error("Done in", (end - start) / BigInt(1e6) + "ms.");
377
+ console.error('Done in', (end - start) / BigInt(1e6) + 'ms.');
314
378
  }).then(()=>{}, (err)=>{
315
379
  // TODO: If an initial build fails we can't easily pick up any PostCSS dependencies
316
380
  // that were collected before the error occurred
@@ -321,7 +385,11 @@ async function createProcessor(args, cliConfigPath) {
321
385
  // If you fix it and then save the main CSS file so there's no error
322
386
  // The watcher will start watching the imported CSS files and will be
323
387
  // resilient to future errors.
324
- console.error(err);
388
+ if (state.watcher) {
389
+ console.error(err);
390
+ } else {
391
+ return Promise.reject(err);
392
+ }
325
393
  });
326
394
  }
327
395
  /**
@@ -332,19 +400,20 @@ async function createProcessor(args, cliConfigPath) {
332
400
  extension: change.extension
333
401
  })));
334
402
  }
335
- if (input !== undefined && input !== "-") {
403
+ if (input !== undefined && input !== '-') {
336
404
  state.contextDependencies.add(_path.default.resolve(input));
337
405
  }
338
406
  return {
339
407
  build,
340
408
  watch: async ()=>{
341
- state.watcher = (0, _watchingJs.createWatcher)(args, {
409
+ state.watcher = (0, _watching.createWatcher)(args, {
342
410
  state,
343
411
  /**
344
412
  * @param {{file: string, content(): Promise<string>, extension: string}[]} changes
345
413
  */ async rebuild (changes) {
346
414
  let needsNewContext = changes.some((change)=>{
347
- return state.configDependencies.has(change.file) || state.contextDependencies.has(change.file);
415
+ var _state_configBag;
416
+ return ((_state_configBag = state.configBag) === null || _state_configBag === void 0 ? void 0 : _state_configBag.dependencies.has(change.file)) || state.contextDependencies.has(change.file);
348
417
  });
349
418
  if (needsNewContext) {
350
419
  state.context = null;