tailwindcss 0.0.0-insiders.eae2b7a → 0.0.0-insiders.eb2fe94

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