tailwindcss 0.0.0-insiders.fa693e5 → 0.0.0-insiders.fa9be73

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