tailwindcss 0.0.0-insiders.e4af07f → 0.0.0-insiders.e4b32a7

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