tailwindcss 0.0.0-insiders.ff26372 → 0.0.0-insiders.ff6f085

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