tailwindcss 0.0.0-insiders.bc00445 → 0.0.0-insiders.bc1af02

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 (194) hide show
  1. package/README.md +7 -6
  2. package/index.css +5 -0
  3. package/lib/cli/build/index.js +23 -10
  4. package/lib/cli/build/plugin.js +232 -118
  5. package/lib/cli/build/utils.js +18 -8
  6. package/lib/cli/build/watching.js +92 -23
  7. package/lib/cli/help/index.js +8 -6
  8. package/lib/cli/index.js +223 -10
  9. package/lib/cli/init/index.js +29 -12
  10. package/lib/cli.js +1 -227
  11. package/lib/corePluginList.js +8 -1
  12. package/lib/corePlugins.js +531 -235
  13. package/lib/css/preflight.css +11 -1
  14. package/lib/featureFlags.js +31 -17
  15. package/lib/index.js +1 -47
  16. package/lib/lib/cacheInvalidation.js +7 -5
  17. package/lib/lib/collapseAdjacentRules.js +5 -3
  18. package/lib/lib/collapseDuplicateDeclarations.js +12 -10
  19. package/lib/lib/content.js +65 -25
  20. package/lib/lib/defaultExtractor.js +15 -8
  21. package/lib/lib/detectNesting.js +10 -2
  22. package/lib/lib/evaluateTailwindFunctions.js +26 -22
  23. package/lib/lib/expandApplyAtRules.js +72 -45
  24. package/lib/lib/expandTailwindAtRules.js +92 -24
  25. package/lib/lib/findAtConfigPath.js +13 -11
  26. package/lib/lib/generateRules.js +189 -107
  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 +5 -18
  31. package/lib/lib/offsets.js +93 -4
  32. package/lib/lib/partitionApplyAtRules.js +3 -1
  33. package/lib/lib/regex.js +21 -7
  34. package/lib/lib/remap-bitfield.js +89 -0
  35. package/lib/lib/resolveDefaultsAtRules.js +29 -25
  36. package/lib/lib/setupContextUtils.js +256 -164
  37. package/lib/lib/setupTrackingContext.js +52 -27
  38. package/lib/lib/sharedState.js +29 -8
  39. package/lib/lib/substituteScreenAtRules.js +7 -5
  40. package/lib/plugin.js +164 -0
  41. package/lib/postcss-plugins/nesting/index.js +4 -2
  42. package/lib/postcss-plugins/nesting/plugin.js +10 -8
  43. package/lib/processTailwindFeatures.js +17 -15
  44. package/lib/public/colors.js +50 -26
  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 +3 -1
  53. package/lib/util/cloneDeep.js +3 -1
  54. package/lib/util/cloneNodes.js +5 -3
  55. package/lib/util/color.js +32 -14
  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 +9 -7
  60. package/lib/util/dataTypes.js +88 -23
  61. package/lib/util/defaults.js +9 -7
  62. package/lib/util/escapeClassName.js +10 -8
  63. package/lib/util/escapeCommas.js +3 -1
  64. package/lib/util/flattenColorPalette.js +3 -1
  65. package/lib/util/formatVariantSelector.js +141 -162
  66. package/lib/util/getAllConfigs.js +10 -7
  67. package/lib/util/hashConfig.js +6 -4
  68. package/lib/util/isKeyframeRule.js +3 -1
  69. package/lib/util/isPlainObject.js +3 -1
  70. package/lib/util/{isValidArbitraryValue.js → isSyntacticallyValidPropertyValue.js} +4 -2
  71. package/lib/util/log.js +25 -4
  72. package/lib/util/nameClass.js +12 -6
  73. package/lib/util/negateValue.js +4 -2
  74. package/lib/util/normalizeConfig.js +95 -49
  75. package/lib/util/normalizeScreens.js +15 -7
  76. package/lib/util/parseAnimationValue.js +3 -1
  77. package/lib/util/parseBoxShadowValue.js +6 -2
  78. package/lib/util/parseDependency.js +3 -1
  79. package/lib/util/parseGlob.js +6 -4
  80. package/lib/util/parseObjectStyles.js +9 -7
  81. package/lib/util/pluginUtils.js +83 -73
  82. package/lib/util/prefixSelector.js +27 -11
  83. package/lib/util/pseudoElements.js +209 -0
  84. package/lib/util/removeAlphaVariables.js +3 -1
  85. package/lib/util/resolveConfig.js +27 -26
  86. package/lib/util/resolveConfigPath.js +26 -10
  87. package/lib/util/responsive.js +6 -4
  88. package/lib/util/splitAtTopLevelOnly.js +10 -2
  89. package/lib/util/tap.js +3 -1
  90. package/lib/util/toColorValue.js +3 -1
  91. package/lib/util/toPath.js +3 -1
  92. package/lib/util/transformThemeValue.js +6 -4
  93. package/lib/util/validateConfig.js +27 -3
  94. package/lib/util/validateFormalSyntax.js +3 -1
  95. package/lib/util/withAlphaVariable.js +7 -3
  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 +50 -51
  107. package/resolveConfig.d.ts +11 -2
  108. package/scripts/release-channel.js +18 -0
  109. package/scripts/release-notes.js +21 -0
  110. package/src/cli/build/index.js +17 -9
  111. package/src/cli/build/plugin.js +177 -80
  112. package/src/cli/build/watching.js +108 -13
  113. package/src/cli/index.js +217 -3
  114. package/src/cli/init/index.js +37 -8
  115. package/src/cli.js +1 -221
  116. package/src/corePluginList.js +1 -1
  117. package/src/corePlugins.js +270 -65
  118. package/src/css/preflight.css +11 -1
  119. package/src/featureFlags.js +7 -3
  120. package/src/index.js +1 -47
  121. package/src/lib/content.js +52 -17
  122. package/src/lib/defaultExtractor.js +9 -3
  123. package/src/lib/detectNesting.js +9 -1
  124. package/src/lib/evaluateTailwindFunctions.js +4 -1
  125. package/src/lib/expandApplyAtRules.js +43 -16
  126. package/src/lib/expandTailwindAtRules.js +78 -13
  127. package/src/lib/findAtConfigPath.js +4 -6
  128. package/src/lib/generateRules.js +153 -52
  129. package/src/lib/getModuleDependencies.js +70 -30
  130. package/src/lib/handleImportAtRules.js +34 -0
  131. package/src/lib/load-config.ts +31 -0
  132. package/src/lib/normalizeTailwindDirectives.js +0 -27
  133. package/src/lib/offsets.js +105 -2
  134. package/src/lib/remap-bitfield.js +82 -0
  135. package/src/lib/setupContextUtils.js +155 -80
  136. package/src/lib/setupTrackingContext.js +37 -14
  137. package/src/lib/sharedState.js +13 -4
  138. package/src/plugin.js +133 -0
  139. package/src/processTailwindFeatures.js +3 -2
  140. package/src/public/colors.js +22 -0
  141. package/src/public/default-config.js +1 -1
  142. package/src/public/default-theme.js +2 -2
  143. package/src/public/load-config.js +2 -0
  144. package/src/util/applyImportantSelector.js +27 -0
  145. package/src/util/color.js +18 -3
  146. package/src/util/colorNames.js +150 -0
  147. package/src/util/dataTypes.js +49 -9
  148. package/src/util/formatVariantSelector.js +162 -165
  149. package/src/util/getAllConfigs.js +2 -2
  150. package/src/util/{isValidArbitraryValue.js → isSyntacticallyValidPropertyValue.js} +1 -1
  151. package/src/util/log.js +24 -0
  152. package/src/util/negateValue.js +1 -1
  153. package/src/util/normalizeConfig.js +57 -11
  154. package/src/util/pluginUtils.js +49 -42
  155. package/src/util/prefixSelector.js +29 -10
  156. package/src/util/pseudoElements.js +167 -0
  157. package/src/util/resolveConfig.js +3 -9
  158. package/src/util/resolveConfigPath.js +12 -1
  159. package/src/util/splitAtTopLevelOnly.js +8 -1
  160. package/src/util/validateConfig.js +23 -0
  161. package/src/value-parser/LICENSE +22 -0
  162. package/src/value-parser/README.md +3 -0
  163. package/src/value-parser/index.d.ts +177 -0
  164. package/src/value-parser/index.js +28 -0
  165. package/src/value-parser/parse.js +303 -0
  166. package/src/value-parser/stringify.js +41 -0
  167. package/src/value-parser/unit.js +118 -0
  168. package/src/value-parser/walk.js +18 -0
  169. package/stubs/.gitignore +1 -0
  170. package/stubs/.prettierrc.json +6 -0
  171. package/stubs/{defaultConfig.stub.js → config.full.js} +199 -166
  172. package/stubs/{simpleConfig.stub.js → config.simple.js} +1 -2
  173. package/stubs/{defaultPostCssConfig.stub.js → postcss.config.cjs} +0 -1
  174. package/stubs/postcss.config.js +5 -0
  175. package/stubs/tailwind.config.cjs +2 -0
  176. package/stubs/tailwind.config.js +2 -0
  177. package/stubs/tailwind.config.ts +3 -0
  178. package/types/config.d.ts +18 -10
  179. package/types/generated/colors.d.ts +22 -0
  180. package/types/generated/corePluginList.d.ts +1 -1
  181. package/types/generated/default-theme.d.ts +110 -80
  182. package/CHANGELOG.md +0 -2280
  183. package/lib/cli/build/deps.js +0 -54
  184. package/lib/cli/shared.js +0 -12
  185. package/lib/cli-peer-dependencies.js +0 -28
  186. package/lib/constants.js +0 -44
  187. package/peers/index.js +0 -79457
  188. package/scripts/calculate-tag-name.js +0 -8
  189. package/scripts/install-integrations.js +0 -27
  190. package/scripts/rebuildFixtures.js +0 -68
  191. package/src/cli/build/deps.js +0 -56
  192. package/src/cli/shared.js +0 -5
  193. package/src/cli-peer-dependencies.js +0 -15
  194. package/src/constants.js +0 -17
package/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  <p align="center">
2
- <a href="https://tailwindcss.com/#gh-light-mode-only" target="_blank">
3
- <img src="./.github/logo-light.svg" alt="Tailwind CSS" width="350" height="70">
4
- </a>
5
- <a href="https://tailwindcss.com/#gh-dark-mode-only" target="_blank">
6
- <img src="./.github/logo-dark.svg" alt="Tailwind CSS" width="350" height="70">
2
+ <a href="https://tailwindcss.com" target="_blank">
3
+ <picture>
4
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/tailwindlabs/tailwindcss/HEAD/.github/logo-dark.svg">
5
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/tailwindlabs/tailwindcss/HEAD/.github/logo-light.svg">
6
+ <img alt="Tailwind CSS" src="https://raw.githubusercontent.com/tailwindlabs/tailwindcss/HEAD/.github/logo-light.svg" width="350" height="70" style="max-width: 100%;">
7
+ </picture>
7
8
  </a>
8
9
  </p>
9
10
 
@@ -13,7 +14,7 @@
13
14
 
14
15
 
15
16
  <p align="center">
16
- <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>
17
18
  <a href="https://www.npmjs.com/package/tailwindcss"><img src="https://img.shields.io/npm/dt/tailwindcss.svg" alt="Total Downloads"></a>
18
19
  <a href="https://github.com/tailwindcss/tailwindcss/releases"><img src="https://img.shields.io/npm/v/tailwindcss.svg" alt="Latest Release"></a>
19
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,17 +5,20 @@ 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) {
21
+ async function build(args) {
19
22
  let input = args["--input"];
20
23
  let shouldWatch = args["--watch"];
21
24
  // TODO: Deprecate this in future versions
@@ -31,14 +34,24 @@ async function build(args, configs) {
31
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
- /* Abort the watcher if stdin is closed to avoid zombie processes */ process.stdin.on("end", ()=>process.exit(0));
44
+ // Abort the watcher if stdin is closed to avoid zombie processes
45
+ // You can disable this behavior with --watch=always
46
+ if (args["--watch"] !== "always") {
47
+ process.stdin.on("end", ()=>process.exit(0));
48
+ }
39
49
  process.stdin.resume();
40
50
  await processor.watch();
41
51
  } else {
42
- await processor.build();
52
+ await processor.build().catch((e)=>{
53
+ console.error(e);
54
+ process.exit(1);
55
+ });
43
56
  }
44
57
  }
@@ -5,31 +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
- 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) {
29
39
  return obj && obj.__esModule ? obj : {
30
40
  default: obj
31
41
  };
32
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
+ }
33
120
  /**
34
121
  *
35
122
  * @param {string} [customPostCssPath ]
@@ -39,7 +126,7 @@ function _interopRequireDefault(obj) {
39
126
  let file = _path.default.resolve(customPostCssPath);
40
127
  // Implementation, see: https://unpkg.com/browse/postcss-load-config@3.1.0/src/index.js
41
128
  // @ts-ignore
42
- let { config ={} } = await (0, _lilconfig.lilconfig)("postcss").load(file);
129
+ let { config = {} } = await (0, _lilconfig.lilconfig)("postcss").load(file);
43
130
  if (typeof config === "function") {
44
131
  config = config();
45
132
  } else {
@@ -53,7 +140,7 @@ function _interopRequireDefault(obj) {
53
140
  plugins: (0, _plugins.default)(config, file),
54
141
  options: (0, _options.default)(config, file)
55
142
  };
56
- })() : await (0, _postcssLoadConfig.default)();
143
+ })() : await (0, _postcssloadconfig.default)();
57
144
  let configPlugins = config.plugins;
58
145
  let configPluginTailwindIdx = configPlugins.findIndex((plugin)=>{
59
146
  if (typeof plugin === "function" && plugin.name === "tailwindcss") {
@@ -72,48 +159,16 @@ function _interopRequireDefault(obj) {
72
159
  config.options
73
160
  ];
74
161
  }
75
- function loadBuiltinPostcssPlugins() {
76
- let postcss = (0, _deps.loadPostcss)();
77
- let IMPORT_COMMENT = "__TAILWIND_RESTORE_IMPORT__: ";
78
- return [
79
- [
80
- (root)=>{
81
- root.walkAtRules("import", (rule)=>{
82
- if (rule.params.slice(1).startsWith("tailwindcss/")) {
83
- rule.after(postcss.comment({
84
- text: IMPORT_COMMENT + rule.params
85
- }));
86
- rule.remove();
87
- }
88
- });
89
- },
90
- (0, _deps.loadPostcssImport)(),
91
- (root)=>{
92
- root.walkComments((rule)=>{
93
- if (rule.text.startsWith(IMPORT_COMMENT)) {
94
- rule.after(postcss.atRule({
95
- name: "import",
96
- params: rule.text.replace(IMPORT_COMMENT, "")
97
- }));
98
- rule.remove();
99
- }
100
- });
101
- }
102
- ],
103
- [],
104
- {}
105
- ];
106
- }
107
162
  let state = {
108
163
  /** @type {any} */ context: null,
109
164
  /** @type {ReturnType<typeof createWatcher> | null} */ watcher: null,
110
165
  /** @type {{content: string, extension: string}[]} */ changedContent: [],
111
- configDependencies: new Set(),
166
+ /** @type {{config: import('../../../types').Config, dependencies: Set<string>, dispose: Function } | null} */ configBag: null,
112
167
  contextDependencies: new Set(),
113
168
  /** @type {import('../../lib/content.js').ContentPath[]} */ contentPaths: [],
114
169
  refreshContentPaths () {
115
- var ref;
116
- this.contentPaths = (0, _contentJs.parseCandidateFiles)(this.context, (ref = this.context) === null || ref === void 0 ? void 0 : ref.tailwindConfig);
170
+ var _this_context;
171
+ this.contentPaths = (0, _content.parseCandidateFiles)(this.context, (_this_context = this.context) === null || _this_context === void 0 ? void 0 : _this_context.tailwindConfig);
117
172
  },
118
173
  get config () {
119
174
  return this.context.tailwindConfig;
@@ -124,102 +179,126 @@ let state = {
124
179
  dynamic: this.contentPaths.filter((contentPath)=>contentPath.glob !== undefined).map((contentPath)=>contentPath.pattern)
125
180
  };
126
181
  },
127
- loadConfig (configPath) {
182
+ loadConfig (configPath, content) {
183
+ var _content;
128
184
  if (this.watcher && configPath) {
129
- this.refreshConfigDependencies(configPath);
130
- }
131
- let config = configPath ? require(configPath) : {};
132
- // @ts-ignore
133
- config = (0, _resolveConfigJs.default)(config, {
134
- content: {
135
- files: []
136
- }
137
- });
138
- return config;
139
- },
140
- refreshConfigDependencies (configPath) {
141
- _shared.env.DEBUG && console.time("Module dependencies");
142
- for (let file of this.configDependencies){
143
- delete require.cache[require.resolve(file)];
185
+ this.refreshConfigDependencies();
144
186
  }
145
- if (configPath) {
146
- let deps = (0, _getModuleDependenciesJs.default)(configPath).map(({ file })=>file);
147
- for (let dependency of deps){
148
- this.configDependencies.add(dependency);
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
+ }
149
196
  }
197
+ };
198
+ this.configBag.config = (0, _validateConfig.validateConfig)((0, _resolveConfig.default)(this.configBag.config));
199
+ // Override content files if `--content` has been passed explicitly
200
+ if (((_content = content) === null || _content === void 0 ? void 0 : _content.length) > 0) {
201
+ this.configBag.config.content.files = content;
150
202
  }
151
- _shared.env.DEBUG && console.timeEnd("Module dependencies");
203
+ return this.configBag.config;
204
+ },
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");
152
210
  },
153
211
  readContentPaths () {
154
212
  let content = [];
155
213
  // Resolve globs from the content config
156
214
  // TODO: When we make the postcss plugin async-capable this can become async
157
- let files = _fastGlob.default.sync(this.contentPatterns.all);
215
+ let files = _fastglob.default.sync(this.contentPatterns.all);
158
216
  for (let file of files){
159
- content.push({
160
- content: _fs.default.readFileSync(_path.default.resolve(file), "utf8"),
161
- extension: _path.default.extname(file).slice(1)
162
- });
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
+ }
163
228
  }
164
229
  // Resolve raw content in the tailwind config
165
230
  let rawContent = this.config.content.files.filter((file)=>{
166
231
  return file !== null && typeof file === "object";
167
232
  });
168
- for (let { raw: content1 , extension ="html" } of rawContent){
169
- content1.push({
170
- content: content1,
233
+ for (let { raw: htmlContent, extension = "html" } of rawContent){
234
+ content.push({
235
+ content: htmlContent,
171
236
  extension
172
237
  });
173
238
  }
174
239
  return content;
175
240
  },
176
- getContext ({ createContext , cliConfigPath , root , result }) {
241
+ getContext ({ createContext, cliConfigPath, root, result, content }) {
177
242
  if (this.context) {
178
243
  this.context.changedContent = this.changedContent.splice(0);
179
244
  return this.context;
180
245
  }
181
- _shared.env.DEBUG && console.time("Searching for config");
182
- var ref;
183
- let configPath = (ref = (0, _findAtConfigPathJs.findAtConfigPath)(root, result)) !== null && ref !== void 0 ? ref : cliConfigPath;
184
- _shared.env.DEBUG && console.timeEnd("Searching for config");
185
- _shared.env.DEBUG && console.time("Loading config");
186
- let config = this.loadConfig(configPath);
187
- _shared.env.DEBUG && console.timeEnd("Loading config");
188
- _shared.env.DEBUG && console.time("Creating context");
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");
251
+ let config = this.loadConfig(configPath, content);
252
+ _sharedState.env.DEBUG && console.timeEnd("Loading config");
253
+ _sharedState.env.DEBUG && console.time("Creating context");
189
254
  this.context = createContext(config, []);
190
255
  Object.assign(this.context, {
191
256
  userConfigPath: configPath
192
257
  });
193
- _shared.env.DEBUG && console.timeEnd("Creating context");
194
- _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");
195
260
  this.refreshContentPaths();
196
- _shared.env.DEBUG && console.timeEnd("Resolving content paths");
261
+ _sharedState.env.DEBUG && console.timeEnd("Resolving content paths");
197
262
  if (this.watcher) {
198
- _shared.env.DEBUG && console.time("Watch new files");
263
+ _sharedState.env.DEBUG && console.time("Watch new files");
199
264
  this.watcher.refreshWatchedFiles();
200
- _shared.env.DEBUG && console.timeEnd("Watch new files");
265
+ _sharedState.env.DEBUG && console.timeEnd("Watch new files");
201
266
  }
202
- _shared.env.DEBUG && console.time("Reading content files");
203
267
  for (let file of this.readContentPaths()){
204
268
  this.context.changedContent.push(file);
205
269
  }
206
- _shared.env.DEBUG && console.timeEnd("Reading content files");
207
270
  return this.context;
208
271
  }
209
272
  };
210
273
  async function createProcessor(args, cliConfigPath) {
211
- let postcss = (0, _deps.loadPostcss)();
274
+ var _args_content;
212
275
  let input = args["--input"];
213
276
  let output = args["--output"];
214
277
  let includePostCss = args["--postcss"];
215
278
  let customPostCssPath = typeof args["--postcss"] === "string" ? args["--postcss"] : undefined;
216
- let [beforePlugins, afterPlugins, postcssOptions] = includePostCss ? await loadPostCssPlugins(customPostCssPath) : loadBuiltinPostcssPlugins();
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."
289
+ ]);
290
+ if (!args["--content"]) {
291
+ args["--content"] = args["--purge"];
292
+ }
293
+ }
294
+ var _args_content_split;
295
+ 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 : [];
217
296
  let tailwindPlugin = ()=>{
218
297
  return {
219
298
  postcssPlugin: "tailwindcss",
220
- Once (root, { result }) {
221
- _shared.env.DEBUG && console.time("Compiling CSS");
222
- (0, _processTailwindFeatures.default)(({ createContext })=>{
299
+ async Once (root, { result }) {
300
+ _sharedState.env.DEBUG && console.time("Compiling CSS");
301
+ await (0, _processTailwindFeatures.default)(({ createContext })=>{
223
302
  console.error();
224
303
  console.error("Rebuilding...");
225
304
  return ()=>{
@@ -227,11 +306,12 @@ async function createProcessor(args, cliConfigPath) {
227
306
  createContext,
228
307
  cliConfigPath,
229
308
  root,
230
- result
309
+ result,
310
+ content
231
311
  });
232
312
  };
233
313
  })(root, result);
234
- _shared.env.DEBUG && console.timeEnd("Compiling CSS");
314
+ _sharedState.env.DEBUG && console.timeEnd("Compiling CSS");
235
315
  }
236
316
  };
237
317
  };
@@ -240,12 +320,10 @@ async function createProcessor(args, cliConfigPath) {
240
320
  ...beforePlugins,
241
321
  tailwindPlugin,
242
322
  !args["--minify"] && _utils.formatNodes,
243
- ...afterPlugins,
244
- !args["--no-autoprefixer"] && (0, _deps.loadAutoprefixer)(),
245
- args["--minify"] && (0, _deps.loadCssNano)()
323
+ ...afterPlugins
246
324
  ].filter(Boolean);
247
325
  /** @type {import('postcss').Processor} */ // @ts-ignore
248
- let processor = postcss(plugins);
326
+ let processor = (0, _postcss.default)(plugins);
249
327
  async function readInput() {
250
328
  // Piping in data, let's drain the stdin
251
329
  if (input === "-") {
@@ -260,23 +338,58 @@ async function createProcessor(args, cliConfigPath) {
260
338
  }
261
339
  async function build() {
262
340
  let start = process.hrtime.bigint();
263
- return readInput().then((css)=>processor.process(css, {
264
- ...postcssOptions,
265
- from: input,
266
- 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"]
267
349
  })).then((result)=>{
350
+ if (!state.watcher) {
351
+ return result;
352
+ }
353
+ _sharedState.env.DEBUG && console.time("Recording PostCSS dependencies");
354
+ for (let message of result.messages){
355
+ if (message.type === "dependency") {
356
+ state.contextDependencies.add(message.file);
357
+ }
358
+ }
359
+ _sharedState.env.DEBUG && console.timeEnd("Recording PostCSS dependencies");
360
+ // TODO: This needs to be in a different spot
361
+ _sharedState.env.DEBUG && console.time("Watch new files");
362
+ state.watcher.refreshWatchedFiles();
363
+ _sharedState.env.DEBUG && console.timeEnd("Watch new files");
364
+ return result;
365
+ }).then((result)=>{
268
366
  if (!output) {
269
- process.stdout.write(result.css);
367
+ process.stdout.write(license() + result.css);
270
368
  return;
271
369
  }
272
370
  return Promise.all([
273
- (0, _utils.outputFile)(output, result.css),
274
- result.map && (0, _utils.outputFile)(output + ".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())
275
373
  ]);
276
374
  }).then(()=>{
277
375
  let end = process.hrtime.bigint();
278
376
  console.error();
279
377
  console.error("Done in", (end - start) / BigInt(1e6) + "ms.");
378
+ }).then(()=>{}, (err)=>{
379
+ // TODO: If an initial build fails we can't easily pick up any PostCSS dependencies
380
+ // that were collected before the error occurred
381
+ // The result is not stored on the error so we have to store it externally
382
+ // and pull the messages off of it here somehow
383
+ // This results in a less than ideal DX because the watcher will not pick up
384
+ // changes to imported CSS if one of them caused an error during the initial build
385
+ // If you fix it and then save the main CSS file so there's no error
386
+ // The watcher will start watching the imported CSS files and will be
387
+ // resilient to future errors.
388
+ if (state.watcher) {
389
+ console.error(err);
390
+ } else {
391
+ return Promise.reject(err);
392
+ }
280
393
  });
281
394
  }
282
395
  /**
@@ -293,13 +406,14 @@ async function createProcessor(args, cliConfigPath) {
293
406
  return {
294
407
  build,
295
408
  watch: async ()=>{
296
- state.watcher = (0, _watchingJs.createWatcher)(args, {
409
+ state.watcher = (0, _watching.createWatcher)(args, {
297
410
  state,
298
411
  /**
299
412
  * @param {{file: string, content(): Promise<string>, extension: string}[]} changes
300
413
  */ async rebuild (changes) {
301
414
  let needsNewContext = changes.some((change)=>{
302
- 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);
303
417
  });
304
418
  if (needsNewContext) {
305
419
  state.context = null;
@@ -10,15 +10,25 @@ function _export(target, all) {
10
10
  });
11
11
  }
12
12
  _export(exports, {
13
- indentRecursive: ()=>indentRecursive,
14
- formatNodes: ()=>formatNodes,
15
- readFileWithRetries: ()=>readFileWithRetries,
16
- drainStdin: ()=>drainStdin,
17
- outputFile: ()=>outputFile
13
+ indentRecursive: function() {
14
+ return indentRecursive;
15
+ },
16
+ formatNodes: function() {
17
+ return formatNodes;
18
+ },
19
+ readFileWithRetries: function() {
20
+ return readFileWithRetries;
21
+ },
22
+ drainStdin: function() {
23
+ return drainStdin;
24
+ },
25
+ outputFile: function() {
26
+ return outputFile;
27
+ }
18
28
  });
19
- const _fs = /*#__PURE__*/ _interopRequireDefault(require("fs"));
20
- const _path = /*#__PURE__*/ _interopRequireDefault(require("path"));
21
- function _interopRequireDefault(obj) {
29
+ const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
30
+ const _path = /*#__PURE__*/ _interop_require_default(require("path"));
31
+ function _interop_require_default(obj) {
22
32
  return obj && obj.__esModule ? obj : {
23
33
  default: obj
24
34
  };