tailwindcss 0.0.0-insiders.d77b9ce → 0.0.0-insiders.d884e9b

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