tailwindcss 0.0.0-insiders.e572dc6 → 0.0.0-insiders.e5eceb3

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