tailwindcss 0.0.0-insiders.729dafe → 0.0.0-insiders.73272fa

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