tailwindcss 0.0.0-insiders.cdbcefc → 0.0.0-insiders.ce653c5

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 (172) hide show
  1. package/README.md +1 -1
  2. package/index.css +5 -0
  3. package/lib/cli/build/index.js +15 -12
  4. package/lib/cli/build/plugin.js +155 -104
  5. package/lib/cli/build/utils.js +20 -20
  6. package/lib/cli/build/watching.js +10 -10
  7. package/lib/cli/help/index.js +11 -11
  8. package/lib/cli/index.js +59 -58
  9. package/lib/cli/init/index.js +16 -16
  10. package/lib/cli.js +1 -5
  11. package/lib/corePluginList.js +4 -1
  12. package/lib/corePlugins.js +2000 -1895
  13. package/lib/css/preflight.css +27 -10
  14. package/lib/featureFlags.js +23 -22
  15. package/lib/index.js +1 -1
  16. package/lib/lib/cacheInvalidation.js +6 -4
  17. package/lib/lib/collapseAdjacentRules.js +9 -7
  18. package/lib/lib/collapseDuplicateDeclarations.js +1 -1
  19. package/lib/lib/content.js +68 -9
  20. package/lib/lib/defaultExtractor.js +44 -34
  21. package/lib/lib/detectNesting.js +10 -10
  22. package/lib/lib/evaluateTailwindFunctions.js +27 -25
  23. package/lib/lib/expandApplyAtRules.js +24 -18
  24. package/lib/lib/expandTailwindAtRules.js +89 -47
  25. package/lib/lib/findAtConfigPath.js +5 -5
  26. package/lib/lib/generateRules.js +103 -81
  27. package/lib/lib/getModuleDependencies.js +23 -23
  28. package/lib/lib/handleImportAtRules.js +50 -0
  29. package/lib/lib/load-config.js +17 -6
  30. package/lib/lib/normalizeTailwindDirectives.js +21 -36
  31. package/lib/lib/offsets.js +46 -46
  32. package/lib/lib/partitionApplyAtRules.js +2 -2
  33. package/lib/lib/regex.js +17 -17
  34. package/lib/lib/resolveDefaultsAtRules.js +28 -28
  35. package/lib/lib/setupContextUtils.js +198 -168
  36. package/lib/lib/setupTrackingContext.js +5 -4
  37. package/lib/lib/sharedState.js +24 -32
  38. package/lib/lib/substituteScreenAtRules.js +4 -4
  39. package/lib/plugin.js +108 -40
  40. package/lib/postcss-plugins/nesting/index.js +2 -2
  41. package/lib/postcss-plugins/nesting/plugin.js +10 -10
  42. package/lib/processTailwindFeatures.js +5 -5
  43. package/lib/public/colors.js +264 -264
  44. package/lib/util/applyImportantSelector.js +2 -2
  45. package/lib/util/buildMediaQuery.js +2 -2
  46. package/lib/util/cloneDeep.js +1 -1
  47. package/lib/util/cloneNodes.js +33 -13
  48. package/lib/util/color.js +23 -23
  49. package/lib/util/createUtilityPlugin.js +3 -3
  50. package/lib/util/dataTypes.js +253 -132
  51. package/lib/util/escapeCommas.js +1 -1
  52. package/lib/util/flattenColorPalette.js +2 -2
  53. package/lib/util/formatVariantSelector.js +29 -22
  54. package/lib/util/getAllConfigs.js +3 -3
  55. package/lib/util/isKeyframeRule.js +1 -1
  56. package/lib/util/isPlainObject.js +2 -2
  57. package/lib/util/isSyntacticallyValidPropertyValue.js +10 -10
  58. package/lib/util/log.js +26 -9
  59. package/lib/util/nameClass.js +4 -4
  60. package/lib/util/negateValue.js +8 -8
  61. package/lib/util/normalizeConfig.js +85 -57
  62. package/lib/util/normalizeScreens.js +22 -22
  63. package/lib/util/parseAnimationValue.js +38 -38
  64. package/lib/util/parseBoxShadowValue.js +21 -21
  65. package/lib/util/parseDependency.js +4 -4
  66. package/lib/util/parseGlob.js +4 -4
  67. package/lib/util/parseObjectStyles.js +1 -1
  68. package/lib/util/pluginUtils.js +45 -34
  69. package/lib/util/prefixSelector.js +4 -4
  70. package/lib/util/pseudoElements.js +78 -95
  71. package/lib/util/removeAlphaVariables.js +1 -1
  72. package/lib/util/resolveConfig.js +50 -43
  73. package/lib/util/resolveConfigPath.js +6 -6
  74. package/lib/util/responsive.js +1 -1
  75. package/lib/util/splitAtTopLevelOnly.js +3 -3
  76. package/lib/util/toColorValue.js +1 -1
  77. package/lib/util/toPath.js +2 -2
  78. package/lib/util/transformThemeValue.js +24 -24
  79. package/lib/util/validateConfig.js +20 -9
  80. package/lib/util/validateFormalSyntax.js +5 -5
  81. package/lib/util/withAlphaVariable.js +8 -8
  82. package/lib/value-parser/LICENSE +22 -0
  83. package/lib/value-parser/README.md +3 -0
  84. package/lib/value-parser/index.d.js +2 -0
  85. package/lib/value-parser/index.js +22 -0
  86. package/lib/value-parser/parse.js +259 -0
  87. package/lib/value-parser/stringify.js +38 -0
  88. package/lib/value-parser/unit.js +86 -0
  89. package/lib/value-parser/walk.js +16 -0
  90. package/nesting/index.d.ts +4 -0
  91. package/package.json +39 -47
  92. package/resolveConfig.d.ts +22 -3
  93. package/scripts/generate-types.js +1 -2
  94. package/scripts/release-notes.js +1 -1
  95. package/src/cli/build/index.js +4 -0
  96. package/src/cli/build/plugin.js +74 -52
  97. package/src/cli/build/watching.js +1 -1
  98. package/src/cli/index.js +1 -0
  99. package/src/cli.js +1 -5
  100. package/src/corePluginList.js +1 -1
  101. package/src/corePlugins.js +112 -24
  102. package/src/css/preflight.css +27 -10
  103. package/src/featureFlags.js +7 -13
  104. package/src/lib/content.js +75 -2
  105. package/src/lib/defaultExtractor.js +30 -17
  106. package/src/lib/evaluateTailwindFunctions.js +4 -1
  107. package/src/lib/expandApplyAtRules.js +7 -0
  108. package/src/lib/expandTailwindAtRules.js +75 -32
  109. package/src/lib/generateRules.js +52 -33
  110. package/src/lib/handleImportAtRules.js +34 -0
  111. package/src/lib/load-config.ts +8 -0
  112. package/src/lib/normalizeTailwindDirectives.js +0 -27
  113. package/src/lib/offsets.js +3 -3
  114. package/src/lib/setupContextUtils.js +82 -53
  115. package/src/lib/setupTrackingContext.js +1 -3
  116. package/src/lib/sharedState.js +0 -4
  117. package/src/plugin.js +86 -60
  118. package/src/processTailwindFeatures.js +3 -2
  119. package/src/util/cloneNodes.js +35 -14
  120. package/src/util/color.js +1 -1
  121. package/src/util/dataTypes.js +147 -24
  122. package/src/util/formatVariantSelector.js +11 -3
  123. package/src/util/isPlainObject.js +1 -1
  124. package/src/util/log.js +24 -0
  125. package/src/util/normalizeConfig.js +38 -11
  126. package/src/util/pluginUtils.js +16 -4
  127. package/src/util/prefixSelector.js +1 -0
  128. package/src/util/pseudoElements.js +14 -13
  129. package/src/util/resolveConfig.js +42 -24
  130. package/src/util/validateConfig.js +10 -0
  131. package/src/value-parser/LICENSE +22 -0
  132. package/src/value-parser/README.md +3 -0
  133. package/src/value-parser/index.d.ts +177 -0
  134. package/src/value-parser/index.js +28 -0
  135. package/src/value-parser/parse.js +303 -0
  136. package/src/value-parser/stringify.js +41 -0
  137. package/src/value-parser/unit.js +118 -0
  138. package/src/value-parser/walk.js +18 -0
  139. package/stubs/config.full.js +87 -15
  140. package/stubs/config.simple.js +1 -1
  141. package/stubs/postcss.config.cjs +0 -1
  142. package/stubs/postcss.config.js +0 -1
  143. package/types/config.d.ts +21 -10
  144. package/types/generated/corePluginList.d.ts +1 -1
  145. package/types/generated/default-theme.d.ts +35 -9
  146. package/types/index.d.ts +7 -3
  147. package/lib/cli/build/deps.js +0 -62
  148. package/lib/cli-peer-dependencies.js +0 -36
  149. package/lib/oxide/cli/build/deps.js +0 -89
  150. package/lib/oxide/cli/build/index.js +0 -53
  151. package/lib/oxide/cli/build/plugin.js +0 -375
  152. package/lib/oxide/cli/build/utils.js +0 -87
  153. package/lib/oxide/cli/build/watching.js +0 -179
  154. package/lib/oxide/cli/help/index.js +0 -72
  155. package/lib/oxide/cli/index.js +0 -214
  156. package/lib/oxide/cli/init/index.js +0 -52
  157. package/lib/oxide/cli.js +0 -5
  158. package/lib/oxide/postcss-plugin.js +0 -2
  159. package/peers/index.js +0 -96419
  160. package/scripts/swap-engines.js +0 -40
  161. package/src/cli/build/deps.js +0 -56
  162. package/src/cli-peer-dependencies.js +0 -15
  163. package/src/oxide/cli/build/deps.ts +0 -91
  164. package/src/oxide/cli/build/index.ts +0 -47
  165. package/src/oxide/cli/build/plugin.ts +0 -442
  166. package/src/oxide/cli/build/utils.ts +0 -74
  167. package/src/oxide/cli/build/watching.ts +0 -225
  168. package/src/oxide/cli/help/index.ts +0 -69
  169. package/src/oxide/cli/index.ts +0 -204
  170. package/src/oxide/cli/init/index.ts +0 -59
  171. package/src/oxide/cli.ts +0 -1
  172. 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;
@@ -19,29 +19,32 @@ function _interop_require_default(obj) {
19
19
  };
20
20
  }
21
21
  async function build(args) {
22
- let input = args["--input"];
23
- let shouldWatch = args["--watch"];
22
+ let input = args['--input'];
23
+ let shouldWatch = args['--watch'];
24
24
  // TODO: Deprecate this in future versions
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
+ if (!input && args['_'][1]) {
26
+ console.error('[deprecation] Running tailwindcss without -i, please provide an input file.');
27
+ input = args['--input'] = args['_'][1];
28
28
  }
29
- if (input && input !== "-" && !_fs.default.existsSync(input = _path.default.resolve(input))) {
30
- 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.`);
31
31
  process.exit(9);
32
32
  }
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.`);
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.`);
35
35
  process.exit(9);
36
36
  }
37
+ if (args['--no-autoprefixer']) {
38
+ console.error('[deprecation] The --no-autoprefixer flag is deprecated and has no effect.');
39
+ }
37
40
  // TODO: Reference the @config path here if exists
38
- let configPath = args["--config"] ? args["--config"] : (0, _resolveConfigPath.resolveDefaultConfigPath)();
41
+ let configPath = args['--config'] ? args['--config'] : (0, _resolveConfigPath.resolveDefaultConfigPath)();
39
42
  let processor = await (0, _plugin.createProcessor)(args, configPath);
40
43
  if (shouldWatch) {
41
44
  // Abort the watcher if stdin is closed to avoid zombie processes
42
45
  // You can disable this behavior with --watch=always
43
- if (args["--watch"] !== "always") {
44
- process.stdin.on("end", ()=>process.exit(0));
46
+ if (args['--watch'] !== 'always') {
47
+ process.stdin.on('end', ()=>process.exit(0));
45
48
  }
46
49
  process.stdin.resume();
47
50
  await processor.watch();
@@ -9,16 +9,19 @@ Object.defineProperty(exports, "createProcessor", {
9
9
  return createProcessor;
10
10
  }
11
11
  });
12
+ const _packagejson = /*#__PURE__*/ _interop_require_default(require("../../../package.json"));
12
13
  const _path = /*#__PURE__*/ _interop_require_default(require("path"));
13
14
  const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
15
+ const _postcss = /*#__PURE__*/ _interop_require_default(require("postcss"));
14
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"));
15
19
  const _lilconfig = require("lilconfig");
16
20
  const _plugins = /*#__PURE__*/ _interop_require_default(require("postcss-load-config/src/plugins" // Little bit scary, looking at private/internal API
17
21
  ));
18
22
  const _options = /*#__PURE__*/ _interop_require_default(require("postcss-load-config/src/options" // Little bit scary, looking at private/internal API
19
23
  ));
20
24
  const _processTailwindFeatures = /*#__PURE__*/ _interop_require_default(require("../../processTailwindFeatures"));
21
- const _deps = require("./deps");
22
25
  const _utils = require("./utils");
23
26
  const _sharedState = require("../../lib/sharedState");
24
27
  const _resolveConfig = /*#__PURE__*/ _interop_require_default(require("../../../resolveConfig.js"));
@@ -29,11 +32,90 @@ const _findAtConfigPath = require("../../lib/findAtConfigPath.js");
29
32
  const _log = /*#__PURE__*/ _interop_require_default(require("../../util/log"));
30
33
  const _loadconfig = require("../../lib/load-config");
31
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");
32
38
  function _interop_require_default(obj) {
33
39
  return obj && obj.__esModule ? obj : {
34
40
  default: obj
35
41
  };
36
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
+ }
37
119
  /**
38
120
  *
39
121
  * @param {string} [customPostCssPath ]
@@ -43,8 +125,8 @@ function _interop_require_default(obj) {
43
125
  let file = _path.default.resolve(customPostCssPath);
44
126
  // Implementation, see: https://unpkg.com/browse/postcss-load-config@3.1.0/src/index.js
45
127
  // @ts-ignore
46
- let { config ={} } = await (0, _lilconfig.lilconfig)("postcss").load(file);
47
- if (typeof config === "function") {
128
+ let { config = {} } = await (0, _lilconfig.lilconfig)('postcss').load(file);
129
+ if (typeof config === 'function') {
48
130
  config = config();
49
131
  } else {
50
132
  config = Object.assign({}, config);
@@ -60,10 +142,10 @@ function _interop_require_default(obj) {
60
142
  })() : await (0, _postcssloadconfig.default)();
61
143
  let configPlugins = config.plugins;
62
144
  let configPluginTailwindIdx = configPlugins.findIndex((plugin)=>{
63
- if (typeof plugin === "function" && plugin.name === "tailwindcss") {
145
+ if (typeof plugin === 'function' && plugin.name === 'tailwindcss') {
64
146
  return true;
65
147
  }
66
- if (typeof plugin === "object" && plugin !== null && plugin.postcssPlugin === "tailwindcss") {
148
+ if (typeof plugin === 'object' && plugin !== null && plugin.postcssPlugin === 'tailwindcss') {
67
149
  return true;
68
150
  }
69
151
  return false;
@@ -76,43 +158,11 @@ function _interop_require_default(obj) {
76
158
  config.options
77
159
  ];
78
160
  }
79
- function loadBuiltinPostcssPlugins() {
80
- let postcss = (0, _deps.loadPostcss)();
81
- let IMPORT_COMMENT = "__TAILWIND_RESTORE_IMPORT__: ";
82
- return [
83
- [
84
- (root)=>{
85
- root.walkAtRules("import", (rule)=>{
86
- if (rule.params.slice(1).startsWith("tailwindcss/")) {
87
- rule.after(postcss.comment({
88
- text: IMPORT_COMMENT + rule.params
89
- }));
90
- rule.remove();
91
- }
92
- });
93
- },
94
- (0, _deps.loadPostcssImport)(),
95
- (root)=>{
96
- root.walkComments((rule)=>{
97
- if (rule.text.startsWith(IMPORT_COMMENT)) {
98
- rule.after(postcss.atRule({
99
- name: "import",
100
- params: rule.text.replace(IMPORT_COMMENT, "")
101
- }));
102
- rule.remove();
103
- }
104
- });
105
- }
106
- ],
107
- [],
108
- {}
109
- ];
110
- }
111
161
  let state = {
112
162
  /** @type {any} */ context: null,
113
163
  /** @type {ReturnType<typeof createWatcher> | null} */ watcher: null,
114
164
  /** @type {{content: string, extension: string}[]} */ changedContent: [],
115
- /** @type {ReturnType<typeof load> | null} */ configBag: null,
165
+ /** @type {{config: import('../../../types').Config, dependencies: Set<string>, dispose: Function } | null} */ configBag: null,
116
166
  contextDependencies: new Set(),
117
167
  /** @type {import('../../lib/content.js').ContentPath[]} */ contentPaths: [],
118
168
  refreshContentPaths () {
@@ -143,12 +193,7 @@ let state = {
143
193
  }
144
194
  }
145
195
  };
146
- // @ts-ignore
147
- this.configBag.config = (0, _resolveConfig.default)(this.configBag.config, {
148
- content: {
149
- files: []
150
- }
151
- });
196
+ this.configBag.config = (0, _validateConfig.validateConfig)((0, _resolveConfig.default)(this.configBag.config));
152
197
  // Override content files if `--content` has been passed explicitly
153
198
  if ((content === null || content === void 0 ? void 0 : content.length) > 0) {
154
199
  this.configBag.config.content.files = content;
@@ -157,9 +202,9 @@ let state = {
157
202
  },
158
203
  refreshConfigDependencies () {
159
204
  var _this_configBag;
160
- _sharedState.env.DEBUG && console.time("Module dependencies");
205
+ _sharedState.env.DEBUG && console.time('Module dependencies');
161
206
  (_this_configBag = this.configBag) === null || _this_configBag === void 0 ? void 0 : _this_configBag.dispose();
162
- _sharedState.env.DEBUG && console.timeEnd("Module dependencies");
207
+ _sharedState.env.DEBUG && console.timeEnd('Module dependencies');
163
208
  },
164
209
  readContentPaths () {
165
210
  let content = [];
@@ -167,23 +212,23 @@ let state = {
167
212
  // TODO: When we make the postcss plugin async-capable this can become async
168
213
  let files = _fastglob.default.sync(this.contentPatterns.all);
169
214
  for (let file of files){
170
- if (false) {
215
+ if ((0, _featureFlags.flagEnabled)(this.config, 'oxideParser')) {
171
216
  content.push({
172
217
  file,
173
218
  extension: _path.default.extname(file).slice(1)
174
219
  });
175
220
  } else {
176
221
  content.push({
177
- content: _fs.default.readFileSync(_path.default.resolve(file), "utf8"),
222
+ content: _fs.default.readFileSync(_path.default.resolve(file), 'utf8'),
178
223
  extension: _path.default.extname(file).slice(1)
179
224
  });
180
225
  }
181
226
  }
182
227
  // Resolve raw content in the tailwind config
183
228
  let rawContent = this.config.content.files.filter((file)=>{
184
- return file !== null && typeof file === "object";
229
+ return file !== null && typeof file === 'object';
185
230
  });
186
- for (let { raw: htmlContent , extension ="html" } of rawContent){
231
+ for (let { raw: htmlContent, extension = 'html' } of rawContent){
187
232
  content.push({
188
233
  content: htmlContent,
189
234
  extension
@@ -191,31 +236,31 @@ let state = {
191
236
  }
192
237
  return content;
193
238
  },
194
- getContext ({ createContext , cliConfigPath , root , result , content }) {
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');
195
244
  if (this.context) {
196
245
  this.context.changedContent = this.changedContent.splice(0);
197
246
  return this.context;
198
247
  }
199
- _sharedState.env.DEBUG && console.time("Searching for config");
200
- var _findAtConfigPath1;
201
- let configPath = (_findAtConfigPath1 = (0, _findAtConfigPath.findAtConfigPath)(root, result)) !== null && _findAtConfigPath1 !== void 0 ? _findAtConfigPath1 : cliConfigPath;
202
- _sharedState.env.DEBUG && console.timeEnd("Searching for config");
203
- _sharedState.env.DEBUG && console.time("Loading config");
248
+ _sharedState.env.DEBUG && console.time('Loading config');
204
249
  let config = this.loadConfig(configPath, content);
205
- _sharedState.env.DEBUG && console.timeEnd("Loading config");
206
- _sharedState.env.DEBUG && console.time("Creating context");
250
+ _sharedState.env.DEBUG && console.timeEnd('Loading config');
251
+ _sharedState.env.DEBUG && console.time('Creating context');
207
252
  this.context = createContext(config, []);
208
253
  Object.assign(this.context, {
209
254
  userConfigPath: configPath
210
255
  });
211
- _sharedState.env.DEBUG && console.timeEnd("Creating context");
212
- _sharedState.env.DEBUG && console.time("Resolving content paths");
256
+ _sharedState.env.DEBUG && console.timeEnd('Creating context');
257
+ _sharedState.env.DEBUG && console.time('Resolving content paths');
213
258
  this.refreshContentPaths();
214
- _sharedState.env.DEBUG && console.timeEnd("Resolving content paths");
259
+ _sharedState.env.DEBUG && console.timeEnd('Resolving content paths');
215
260
  if (this.watcher) {
216
- _sharedState.env.DEBUG && console.time("Watch new files");
261
+ _sharedState.env.DEBUG && console.time('Watch new files');
217
262
  this.watcher.refreshWatchedFiles();
218
- _sharedState.env.DEBUG && console.timeEnd("Watch new files");
263
+ _sharedState.env.DEBUG && console.timeEnd('Watch new files');
219
264
  }
220
265
  for (let file of this.readContentPaths()){
221
266
  this.context.changedContent.push(file);
@@ -225,31 +270,35 @@ let state = {
225
270
  };
226
271
  async function createProcessor(args, cliConfigPath) {
227
272
  var _args_content;
228
- let postcss = (0, _deps.loadPostcss)();
229
- let input = args["--input"];
230
- let output = args["--output"];
231
- let includePostCss = args["--postcss"];
232
- let customPostCssPath = typeof args["--postcss"] === "string" ? args["--postcss"] : undefined;
233
- let [beforePlugins, afterPlugins, postcssOptions] = includePostCss ? await loadPostCssPlugins(customPostCssPath) : loadBuiltinPostcssPlugins();
234
- if (args["--purge"]) {
235
- _log.default.warn("purge-flag-deprecated", [
236
- "The `--purge` flag has been deprecated.",
237
- "Please use `--content` instead."
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.'
238
287
  ]);
239
- if (!args["--content"]) {
240
- args["--content"] = args["--purge"];
288
+ if (!args['--content']) {
289
+ args['--content'] = args['--purge'];
241
290
  }
242
291
  }
243
292
  var _args_content_split;
244
- 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 : [];
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 : [];
245
294
  let tailwindPlugin = ()=>{
246
295
  return {
247
- postcssPlugin: "tailwindcss",
248
- Once (root, { result }) {
249
- _sharedState.env.DEBUG && console.time("Compiling CSS");
250
- (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 })=>{
251
300
  console.error();
252
- console.error("Rebuilding...");
301
+ console.error('Rebuilding...');
253
302
  return ()=>{
254
303
  return state.getContext({
255
304
  createContext,
@@ -260,7 +309,7 @@ async function createProcessor(args, cliConfigPath) {
260
309
  });
261
310
  };
262
311
  })(root, result);
263
- _sharedState.env.DEBUG && console.timeEnd("Compiling CSS");
312
+ _sharedState.env.DEBUG && console.timeEnd('Compiling CSS');
264
313
  }
265
314
  };
266
315
  };
@@ -268,60 +317,62 @@ async function createProcessor(args, cliConfigPath) {
268
317
  let plugins = [
269
318
  ...beforePlugins,
270
319
  tailwindPlugin,
271
- !args["--minify"] && _utils.formatNodes,
272
- ...afterPlugins,
273
- !args["--no-autoprefixer"] && (0, _deps.loadAutoprefixer)(),
274
- args["--minify"] && (0, _deps.loadCssNano)()
320
+ !args['--minify'] && _utils.formatNodes,
321
+ ...afterPlugins
275
322
  ].filter(Boolean);
276
323
  /** @type {import('postcss').Processor} */ // @ts-ignore
277
- let processor = postcss(plugins);
324
+ let processor = (0, _postcss.default)(plugins);
278
325
  async function readInput() {
279
326
  // Piping in data, let's drain the stdin
280
- if (input === "-") {
327
+ if (input === '-') {
281
328
  return (0, _utils.drainStdin)();
282
329
  }
283
330
  // Input file has been provided
284
331
  if (input) {
285
- return _fs.default.promises.readFile(_path.default.resolve(input), "utf8");
332
+ return _fs.default.promises.readFile(_path.default.resolve(input), 'utf8');
286
333
  }
287
334
  // No input file provided, fallback to default atrules
288
- return "@tailwind base; @tailwind components; @tailwind utilities";
335
+ return '@tailwind base; @tailwind components; @tailwind utilities';
289
336
  }
290
337
  async function build() {
291
338
  let start = process.hrtime.bigint();
292
- return readInput().then((css)=>processor.process(css, {
293
- ...postcssOptions,
294
- from: input,
295
- 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']
296
347
  })).then((result)=>{
297
348
  if (!state.watcher) {
298
349
  return result;
299
350
  }
300
- _sharedState.env.DEBUG && console.time("Recording PostCSS dependencies");
351
+ _sharedState.env.DEBUG && console.time('Recording PostCSS dependencies');
301
352
  for (let message of result.messages){
302
- if (message.type === "dependency") {
353
+ if (message.type === 'dependency') {
303
354
  state.contextDependencies.add(message.file);
304
355
  }
305
356
  }
306
- _sharedState.env.DEBUG && console.timeEnd("Recording PostCSS dependencies");
357
+ _sharedState.env.DEBUG && console.timeEnd('Recording PostCSS dependencies');
307
358
  // TODO: This needs to be in a different spot
308
- _sharedState.env.DEBUG && console.time("Watch new files");
359
+ _sharedState.env.DEBUG && console.time('Watch new files');
309
360
  state.watcher.refreshWatchedFiles();
310
- _sharedState.env.DEBUG && console.timeEnd("Watch new files");
361
+ _sharedState.env.DEBUG && console.timeEnd('Watch new files');
311
362
  return result;
312
363
  }).then((result)=>{
313
364
  if (!output) {
314
- process.stdout.write(result.css);
365
+ process.stdout.write(license() + result.css);
315
366
  return;
316
367
  }
317
368
  return Promise.all([
318
- (0, _utils.outputFile)(result.opts.to, result.css),
319
- result.map && (0, _utils.outputFile)(result.opts.to + ".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())
320
371
  ]);
321
372
  }).then(()=>{
322
373
  let end = process.hrtime.bigint();
323
374
  console.error();
324
- console.error("Done in", (end - start) / BigInt(1e6) + "ms.");
375
+ console.error('Done in', (end - start) / BigInt(1e6) + 'ms.');
325
376
  }).then(()=>{}, (err)=>{
326
377
  // TODO: If an initial build fails we can't easily pick up any PostCSS dependencies
327
378
  // that were collected before the error occurred
@@ -347,7 +398,7 @@ async function createProcessor(args, cliConfigPath) {
347
398
  extension: change.extension
348
399
  })));
349
400
  }
350
- if (input !== undefined && input !== "-") {
401
+ if (input !== undefined && input !== '-') {
351
402
  state.contextDependencies.add(_path.default.resolve(input));
352
403
  }
353
404
  return {
@@ -10,20 +10,20 @@ function _export(target, all) {
10
10
  });
11
11
  }
12
12
  _export(exports, {
13
- indentRecursive: function() {
14
- return indentRecursive;
13
+ drainStdin: function() {
14
+ return drainStdin;
15
15
  },
16
16
  formatNodes: function() {
17
17
  return formatNodes;
18
18
  },
19
- readFileWithRetries: function() {
20
- return readFileWithRetries;
21
- },
22
- drainStdin: function() {
23
- return drainStdin;
19
+ indentRecursive: function() {
20
+ return indentRecursive;
24
21
  },
25
22
  outputFile: function() {
26
23
  return outputFile;
24
+ },
25
+ readFileWithRetries: function() {
26
+ return readFileWithRetries;
27
27
  }
28
28
  });
29
29
  const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
@@ -35,26 +35,26 @@ function _interop_require_default(obj) {
35
35
  }
36
36
  function indentRecursive(node, indent = 0) {
37
37
  node.each && node.each((child, i)=>{
38
- if (!child.raws.before || !child.raws.before.trim() || child.raws.before.includes("\n")) {
39
- child.raws.before = `\n${node.type !== "rule" && i > 0 ? "\n" : ""}${" ".repeat(indent)}`;
38
+ if (!child.raws.before || !child.raws.before.trim() || child.raws.before.includes('\n')) {
39
+ child.raws.before = `\n${node.type !== 'rule' && i > 0 ? '\n' : ''}${' '.repeat(indent)}`;
40
40
  }
41
- child.raws.after = `\n${" ".repeat(indent)}`;
41
+ child.raws.after = `\n${' '.repeat(indent)}`;
42
42
  indentRecursive(child, indent + 1);
43
43
  });
44
44
  }
45
45
  function formatNodes(root) {
46
46
  indentRecursive(root);
47
47
  if (root.first) {
48
- root.first.raws.before = "";
48
+ root.first.raws.before = '';
49
49
  }
50
50
  }
51
51
  async function readFileWithRetries(path, tries = 5) {
52
52
  for(let n = 0; n <= tries; n++){
53
53
  try {
54
- return await _fs.default.promises.readFile(path, "utf8");
54
+ return await _fs.default.promises.readFile(path, 'utf8');
55
55
  } catch (err) {
56
56
  if (n !== tries) {
57
- if (err.code === "ENOENT" || err.code === "EBUSY") {
57
+ if (err.code === 'ENOENT' || err.code === 'EBUSY') {
58
58
  await new Promise((resolve)=>setTimeout(resolve, 10));
59
59
  continue;
60
60
  }
@@ -65,24 +65,24 @@ async function readFileWithRetries(path, tries = 5) {
65
65
  }
66
66
  function drainStdin() {
67
67
  return new Promise((resolve, reject)=>{
68
- let result = "";
69
- process.stdin.on("data", (chunk)=>{
68
+ let result = '';
69
+ process.stdin.on('data', (chunk)=>{
70
70
  result += chunk;
71
71
  });
72
- process.stdin.on("end", ()=>resolve(result));
73
- process.stdin.on("error", (err)=>reject(err));
72
+ process.stdin.on('end', ()=>resolve(result));
73
+ process.stdin.on('error', (err)=>reject(err));
74
74
  });
75
75
  }
76
76
  async function outputFile(file, newContents) {
77
77
  try {
78
- let currentContents = await _fs.default.promises.readFile(file, "utf8");
78
+ let currentContents = await _fs.default.promises.readFile(file, 'utf8');
79
79
  if (currentContents === newContents) {
80
80
  return; // Skip writing the file
81
81
  }
82
- } catch {}
82
+ } catch (e) {}
83
83
  // Write the file
84
84
  await _fs.default.promises.mkdir(_path.default.dirname(file), {
85
85
  recursive: true
86
86
  });
87
- await _fs.default.promises.writeFile(file, newContents, "utf8");
87
+ await _fs.default.promises.writeFile(file, newContents, 'utf8');
88
88
  }
@@ -20,9 +20,9 @@ function _interop_require_default(obj) {
20
20
  default: obj
21
21
  };
22
22
  }
23
- function createWatcher(args, { state , rebuild }) {
24
- let shouldPoll = args["--poll"];
25
- let shouldCoalesceWriteEvents = shouldPoll || process.platform === "win32";
23
+ function createWatcher(args, { state, rebuild }) {
24
+ let shouldPoll = args['--poll'];
25
+ let shouldCoalesceWriteEvents = shouldPoll || process.platform === 'win32';
26
26
  // Polling interval in milliseconds
27
27
  // Used only when polling or coalescing add/change events on Windows
28
28
  let pollInterval = 10;
@@ -88,7 +88,7 @@ function createWatcher(args, { state , rebuild }) {
88
88
  pendingRebuilds.add(file);
89
89
  changedContent.push({
90
90
  file,
91
- content: content !== null && content !== void 0 ? content : ()=>_fs.default.promises.readFile(file, "utf8"),
91
+ content: content !== null && content !== void 0 ? content : ()=>_fs.default.promises.readFile(file, 'utf8'),
92
92
  extension: _path.default.extname(file).slice(1)
93
93
  });
94
94
  if (_timer) {
@@ -107,12 +107,12 @@ function createWatcher(args, { state , rebuild }) {
107
107
  chain = chain.then(rebuildAndContinue, rebuildAndContinue);
108
108
  return chain;
109
109
  }
110
- watcher.on("change", (file)=>recordChangedFile(file));
111
- watcher.on("add", (file)=>recordChangedFile(file));
110
+ watcher.on('change', (file)=>recordChangedFile(file));
111
+ watcher.on('add', (file)=>recordChangedFile(file));
112
112
  // Restore watching any files that are "removed"
113
113
  // This can happen when a file is pseudo-atomically replaced (a copy is created, overwritten, the old one is unlinked, and the new one is renamed)
114
114
  // TODO: An an optimization we should allow removal when the config changes
115
- watcher.on("unlink", (file)=>{
115
+ watcher.on('unlink', (file)=>{
116
116
  file = (0, _normalizepath.default)(file);
117
117
  // Only re-add the file if it's not covered by a dynamic pattern
118
118
  if (!_micromatch.default.some([
@@ -125,8 +125,8 @@ function createWatcher(args, { state , rebuild }) {
125
125
  // will only fire a rename event for atomic writes and not a change event
126
126
  // This is very likely a chokidar bug but it's one we need to work around
127
127
  // We treat this as a change event and rebuild the CSS
128
- watcher.on("raw", (evt, filePath, meta)=>{
129
- if (evt !== "rename") {
128
+ watcher.on('raw', (evt, filePath, meta)=>{
129
+ if (evt !== 'rename' || filePath === null) {
130
130
  return;
131
131
  }
132
132
  let watchedPath = meta.watchedPath;
@@ -161,7 +161,7 @@ function createWatcher(args, { state , rebuild }) {
161
161
  // This is because the order of events and timing is different on Linux
162
162
  // @ts-ignore: TypeScript isn't picking up that content is a string here
163
163
  await recordChangedFile(filePath, ()=>content, true);
164
- } catch {
164
+ } catch (e) {
165
165
  // If reading the file fails, it's was probably a deleted temporary file
166
166
  // So we can ignore it and no rebuild is needed
167
167
  }