tailwindcss 0.0.0-insiders.ecebde1 → 0.0.0-insiders.ed024ee

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 (85) hide show
  1. package/README.md +1 -2
  2. package/lib/cli/build/deps.js +62 -0
  3. package/lib/cli/build/index.js +0 -3
  4. package/lib/cli/build/plugin.js +60 -70
  5. package/lib/cli/build/watching.js +1 -1
  6. package/lib/cli/index.js +0 -1
  7. package/lib/cli-peer-dependencies.js +36 -0
  8. package/lib/corePluginList.js +4 -1
  9. package/lib/corePlugins.js +176 -45
  10. package/lib/css/preflight.css +20 -9
  11. package/lib/featureFlags.js +4 -6
  12. package/lib/lib/content.js +1 -27
  13. package/lib/lib/defaultExtractor.js +33 -25
  14. package/lib/lib/expandApplyAtRules.js +19 -0
  15. package/lib/lib/expandTailwindAtRules.js +23 -20
  16. package/lib/lib/generateRules.js +50 -22
  17. package/lib/lib/load-config.js +18 -3
  18. package/lib/lib/normalizeTailwindDirectives.js +15 -0
  19. package/lib/lib/offsets.js +51 -2
  20. package/lib/lib/resolveDefaultsAtRules.js +3 -1
  21. package/lib/lib/setupContextUtils.js +96 -43
  22. package/lib/plugin.js +3 -55
  23. package/lib/processTailwindFeatures.js +2 -4
  24. package/lib/util/cloneNodes.js +33 -13
  25. package/lib/util/color.js +1 -1
  26. package/lib/util/dataTypes.js +123 -12
  27. package/lib/util/formatVariantSelector.js +10 -3
  28. package/lib/util/isPlainObject.js +1 -1
  29. package/lib/util/log.js +0 -17
  30. package/lib/util/normalizeConfig.js +9 -21
  31. package/lib/util/pluginUtils.js +17 -2
  32. package/lib/util/prefixSelector.js +1 -1
  33. package/lib/util/pseudoElements.js +13 -30
  34. package/lib/util/validateConfig.js +0 -11
  35. package/nesting/index.d.ts +4 -0
  36. package/package.json +31 -28
  37. package/peers/index.js +96671 -0
  38. package/resolveConfig.d.ts +22 -3
  39. package/scripts/generate-types.js +1 -2
  40. package/src/cli/build/deps.js +56 -0
  41. package/src/cli/build/index.js +0 -4
  42. package/src/cli/build/plugin.js +53 -73
  43. package/src/cli/build/watching.js +1 -1
  44. package/src/cli/index.js +0 -1
  45. package/src/cli-peer-dependencies.js +15 -0
  46. package/src/corePluginList.js +1 -1
  47. package/src/corePlugins.js +161 -48
  48. package/src/css/preflight.css +20 -9
  49. package/src/featureFlags.js +2 -8
  50. package/src/lib/content.js +1 -33
  51. package/src/lib/defaultExtractor.js +30 -17
  52. package/src/lib/expandApplyAtRules.js +24 -0
  53. package/src/lib/expandTailwindAtRules.js +29 -32
  54. package/src/lib/generateRules.js +51 -23
  55. package/src/lib/load-config.ts +13 -0
  56. package/src/lib/normalizeTailwindDirectives.js +27 -0
  57. package/src/lib/offsets.js +61 -2
  58. package/src/lib/resolveDefaultsAtRules.js +5 -1
  59. package/src/lib/setupContextUtils.js +97 -44
  60. package/src/plugin.js +3 -63
  61. package/src/processTailwindFeatures.js +3 -5
  62. package/src/util/cloneNodes.js +35 -14
  63. package/src/util/color.js +1 -1
  64. package/src/util/dataTypes.js +129 -15
  65. package/src/util/formatVariantSelector.js +11 -3
  66. package/src/util/isPlainObject.js +1 -1
  67. package/src/util/log.js +0 -24
  68. package/src/util/normalizeConfig.js +10 -22
  69. package/src/util/pluginUtils.js +21 -1
  70. package/src/util/prefixSelector.js +1 -0
  71. package/src/util/pseudoElements.js +14 -13
  72. package/src/util/validateConfig.js +0 -10
  73. package/stubs/config.full.js +74 -15
  74. package/stubs/config.simple.js +1 -1
  75. package/stubs/postcss.config.cjs +1 -0
  76. package/stubs/postcss.config.js +1 -0
  77. package/types/config.d.ts +17 -9
  78. package/types/generated/corePluginList.d.ts +1 -1
  79. package/types/generated/default-theme.d.ts +34 -9
  80. package/types/index.d.ts +7 -3
  81. package/index.css +0 -5
  82. package/lib/lib/detectNesting.js +0 -45
  83. package/lib/lib/handleImportAtRules.js +0 -50
  84. package/src/lib/detectNesting.js +0 -47
  85. package/src/lib/handleImportAtRules.js +0 -34
package/README.md CHANGED
@@ -12,7 +12,6 @@
12
12
  A utility-first CSS framework for rapidly building custom user interfaces.
13
13
  </p>
14
14
 
15
-
16
15
  <p align="center">
17
16
  <a href="https://github.com/tailwindlabs/tailwindcss/actions"><img src="https://img.shields.io/github/actions/workflow/status/tailwindlabs/tailwindcss/ci.yml?branch=master" alt="Build Status"></a>
18
17
  <a href="https://www.npmjs.com/package/tailwindcss"><img src="https://img.shields.io/npm/dt/tailwindcss.svg" alt="Total Downloads"></a>
@@ -20,7 +19,7 @@
20
19
  <a href="https://github.com/tailwindcss/tailwindcss/blob/master/LICENSE"><img src="https://img.shields.io/npm/l/tailwindcss.svg" alt="License"></a>
21
20
  </p>
22
21
 
23
- ------
22
+ ---
24
23
 
25
24
  ## Documentation
26
25
 
@@ -0,0 +1,62 @@
1
+ // @ts-check
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ function _export(target, all) {
7
+ for(var name in all)Object.defineProperty(target, name, {
8
+ enumerable: true,
9
+ get: all[name]
10
+ });
11
+ }
12
+ _export(exports, {
13
+ loadPostcss: function() {
14
+ return loadPostcss;
15
+ },
16
+ loadPostcssImport: function() {
17
+ return loadPostcssImport;
18
+ },
19
+ loadCssNano: function() {
20
+ return loadCssNano;
21
+ },
22
+ loadAutoprefixer: function() {
23
+ return loadAutoprefixer;
24
+ }
25
+ });
26
+ const _index = require("../../../peers/index.js");
27
+ function loadPostcss() {
28
+ // Try to load a local `postcss` version first
29
+ try {
30
+ return require("postcss");
31
+ } catch {}
32
+ return (0, _index.lazyPostcss)();
33
+ }
34
+ function loadPostcssImport() {
35
+ // Try to load a local `postcss-import` version first
36
+ try {
37
+ return require("postcss-import");
38
+ } catch {}
39
+ return (0, _index.lazyPostcssImport)();
40
+ }
41
+ function loadCssNano() {
42
+ let options = {
43
+ preset: [
44
+ "default",
45
+ {
46
+ cssDeclarationSorter: false
47
+ }
48
+ ]
49
+ };
50
+ // Try to load a local `cssnano` version first
51
+ try {
52
+ return require("cssnano");
53
+ } catch {}
54
+ return (0, _index.lazyCssnano)()(options);
55
+ }
56
+ function loadAutoprefixer() {
57
+ // Try to load a local `autoprefixer` version first
58
+ try {
59
+ return require("autoprefixer");
60
+ } catch {}
61
+ return (0, _index.lazyAutoprefixer)();
62
+ }
@@ -34,9 +34,6 @@ async function build(args) {
34
34
  console.error(`Specified config file ${args["--config"]} does not exist.`);
35
35
  process.exit(9);
36
36
  }
37
- if (args["--no-autoprefixer"]) {
38
- console.error("[deprecation] The --no-autoprefixer flag is deprecated and has no effect.");
39
- }
40
37
  // TODO: Reference the @config path here if exists
41
38
  let configPath = args["--config"] ? args["--config"] : (0, _resolveConfigPath.resolveDefaultConfigPath)();
42
39
  let processor = await (0, _plugin.createProcessor)(args, configPath);
@@ -9,19 +9,16 @@ Object.defineProperty(exports, "createProcessor", {
9
9
  return createProcessor;
10
10
  }
11
11
  });
12
- const _packagejson = /*#__PURE__*/ _interop_require_default(require("../../../package.json"));
13
12
  const _path = /*#__PURE__*/ _interop_require_default(require("path"));
14
13
  const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
15
- const _postcss = /*#__PURE__*/ _interop_require_default(require("postcss"));
16
14
  const _postcssloadconfig = /*#__PURE__*/ _interop_require_default(require("postcss-load-config"));
17
- const _browserslist = /*#__PURE__*/ _interop_require_default(require("browserslist"));
18
- const _lightningcss = /*#__PURE__*/ _interop_require_default(require("lightningcss"));
19
15
  const _lilconfig = require("lilconfig");
20
16
  const _plugins = /*#__PURE__*/ _interop_require_default(require("postcss-load-config/src/plugins" // Little bit scary, looking at private/internal API
21
17
  ));
22
18
  const _options = /*#__PURE__*/ _interop_require_default(require("postcss-load-config/src/options" // Little bit scary, looking at private/internal API
23
19
  ));
24
20
  const _processTailwindFeatures = /*#__PURE__*/ _interop_require_default(require("../../processTailwindFeatures"));
21
+ const _deps = require("./deps");
25
22
  const _utils = require("./utils");
26
23
  const _sharedState = require("../../lib/sharedState");
27
24
  const _resolveConfig = /*#__PURE__*/ _interop_require_default(require("../../../resolveConfig.js"));
@@ -32,42 +29,11 @@ const _findAtConfigPath = require("../../lib/findAtConfigPath.js");
32
29
  const _log = /*#__PURE__*/ _interop_require_default(require("../../util/log"));
33
30
  const _loadconfig = require("../../lib/load-config");
34
31
  const _getModuleDependencies = /*#__PURE__*/ _interop_require_default(require("../../lib/getModuleDependencies"));
35
- const _validateConfig = require("../../util/validateConfig");
36
- const _handleImportAtRules = require("../../lib/handleImportAtRules");
37
- const _featureFlags = require("../../featureFlags");
38
32
  function _interop_require_default(obj) {
39
33
  return obj && obj.__esModule ? obj : {
40
34
  default: obj
41
35
  };
42
36
  }
43
- async function lightningcss(result, { map =true , minify =true } = {}) {
44
- try {
45
- let transformed = _lightningcss.default.transform({
46
- filename: result.opts.from || "input.css",
47
- code: Buffer.from(result.css, "utf-8"),
48
- minify,
49
- sourceMap: result.map === undefined ? map : !!result.map,
50
- inputSourceMap: result.map ? result.map.toString() : undefined,
51
- targets: _lightningcss.default.browserslistToTargets((0, _browserslist.default)(_packagejson.default.browserslist)),
52
- drafts: {
53
- nesting: true
54
- }
55
- });
56
- return Object.assign(result, {
57
- css: transformed.code.toString("utf8"),
58
- map: result.map ? Object.assign(result.map, {
59
- toString () {
60
- var _transformed_map;
61
- return (_transformed_map = transformed.map) === null || _transformed_map === void 0 ? void 0 : _transformed_map.toString();
62
- }
63
- }) : result.map
64
- });
65
- } catch (err) {
66
- console.error("Unable to use Lightning CSS. Using raw version instead.");
67
- console.error(err);
68
- return result;
69
- }
70
- }
71
37
  /**
72
38
  *
73
39
  * @param {string} [customPostCssPath ]
@@ -110,11 +76,43 @@ async function lightningcss(result, { map =true , minify =true } = {}) {
110
76
  config.options
111
77
  ];
112
78
  }
79
+ function loadBuiltinPostcssPlugins() {
80
+ let postcss = (0, _deps.loadPostcss)();
81
+ let IMPORT_COMMENT = "__TAILWIND_RESTORE_IMPORT__: ";
82
+ return [
83
+ [
84
+ (root)=>{
85
+ root.walkAtRules("import", (rule)=>{
86
+ if (rule.params.slice(1).startsWith("tailwindcss/")) {
87
+ rule.after(postcss.comment({
88
+ text: IMPORT_COMMENT + rule.params
89
+ }));
90
+ rule.remove();
91
+ }
92
+ });
93
+ },
94
+ (0, _deps.loadPostcssImport)(),
95
+ (root)=>{
96
+ root.walkComments((rule)=>{
97
+ if (rule.text.startsWith(IMPORT_COMMENT)) {
98
+ rule.after(postcss.atRule({
99
+ name: "import",
100
+ params: rule.text.replace(IMPORT_COMMENT, "")
101
+ }));
102
+ rule.remove();
103
+ }
104
+ });
105
+ }
106
+ ],
107
+ [],
108
+ {}
109
+ ];
110
+ }
113
111
  let state = {
114
112
  /** @type {any} */ context: null,
115
113
  /** @type {ReturnType<typeof createWatcher> | null} */ watcher: null,
116
114
  /** @type {{content: string, extension: string}[]} */ changedContent: [],
117
- /** @type {{config: import('../../../types').Config, dependencies: Set<string>, dispose: Function } | null} */ configBag: null,
115
+ /** @type {ReturnType<typeof load> | null} */ configBag: null,
118
116
  contextDependencies: new Set(),
119
117
  /** @type {import('../../lib/content.js').ContentPath[]} */ contentPaths: [],
120
118
  refreshContentPaths () {
@@ -145,7 +143,12 @@ let state = {
145
143
  }
146
144
  }
147
145
  };
148
- this.configBag.config = (0, _validateConfig.validateConfig)((0, _resolveConfig.default)(this.configBag.config));
146
+ // @ts-ignore
147
+ this.configBag.config = (0, _resolveConfig.default)(this.configBag.config, {
148
+ content: {
149
+ files: []
150
+ }
151
+ });
149
152
  // Override content files if `--content` has been passed explicitly
150
153
  if ((content === null || content === void 0 ? void 0 : content.length) > 0) {
151
154
  this.configBag.config.content.files = content;
@@ -164,17 +167,10 @@ let state = {
164
167
  // TODO: When we make the postcss plugin async-capable this can become async
165
168
  let files = _fastglob.default.sync(this.contentPatterns.all);
166
169
  for (let file of files){
167
- if ((0, _featureFlags.flagEnabled)(this.config, "oxideParser")) {
168
- content.push({
169
- file,
170
- extension: _path.default.extname(file).slice(1)
171
- });
172
- } else {
173
- content.push({
174
- content: _fs.default.readFileSync(_path.default.resolve(file), "utf8"),
175
- extension: _path.default.extname(file).slice(1)
176
- });
177
- }
170
+ content.push({
171
+ content: _fs.default.readFileSync(_path.default.resolve(file), "utf8"),
172
+ extension: _path.default.extname(file).slice(1)
173
+ });
178
174
  }
179
175
  // Resolve raw content in the tailwind config
180
176
  let rawContent = this.config.content.files.filter((file)=>{
@@ -189,14 +185,14 @@ let state = {
189
185
  return content;
190
186
  },
191
187
  getContext ({ createContext , cliConfigPath , root , result , content }) {
192
- if (this.context) {
193
- this.context.changedContent = this.changedContent.splice(0);
194
- return this.context;
195
- }
196
188
  _sharedState.env.DEBUG && console.time("Searching for config");
197
189
  var _findAtConfigPath1;
198
190
  let configPath = (_findAtConfigPath1 = (0, _findAtConfigPath.findAtConfigPath)(root, result)) !== null && _findAtConfigPath1 !== void 0 ? _findAtConfigPath1 : cliConfigPath;
199
191
  _sharedState.env.DEBUG && console.timeEnd("Searching for config");
192
+ if (this.context) {
193
+ this.context.changedContent = this.changedContent.splice(0);
194
+ return this.context;
195
+ }
200
196
  _sharedState.env.DEBUG && console.time("Loading config");
201
197
  let config = this.loadConfig(configPath, content);
202
198
  _sharedState.env.DEBUG && console.timeEnd("Loading config");
@@ -222,16 +218,12 @@ let state = {
222
218
  };
223
219
  async function createProcessor(args, cliConfigPath) {
224
220
  var _args_content;
221
+ let postcss = (0, _deps.loadPostcss)();
225
222
  let input = args["--input"];
226
223
  let output = args["--output"];
227
224
  let includePostCss = args["--postcss"];
228
225
  let customPostCssPath = typeof args["--postcss"] === "string" ? args["--postcss"] : undefined;
229
- let [beforePlugins, afterPlugins, postcssOptions] = includePostCss ? await loadPostCssPlugins(customPostCssPath) : [
230
- [],
231
- [],
232
- {}
233
- ];
234
- beforePlugins.unshift(...(0, _handleImportAtRules.handleImportAtRules)());
226
+ let [beforePlugins, afterPlugins, postcssOptions] = includePostCss ? await loadPostCssPlugins(customPostCssPath) : loadBuiltinPostcssPlugins();
235
227
  if (args["--purge"]) {
236
228
  _log.default.warn("purge-flag-deprecated", [
237
229
  "The `--purge` flag has been deprecated.",
@@ -246,9 +238,9 @@ async function createProcessor(args, cliConfigPath) {
246
238
  let tailwindPlugin = ()=>{
247
239
  return {
248
240
  postcssPlugin: "tailwindcss",
249
- Once (root, { result }) {
241
+ async Once (root, { result }) {
250
242
  _sharedState.env.DEBUG && console.time("Compiling CSS");
251
- (0, _processTailwindFeatures.default)(({ createContext })=>{
243
+ await (0, _processTailwindFeatures.default)(({ createContext })=>{
252
244
  console.error();
253
245
  console.error("Rebuilding...");
254
246
  return ()=>{
@@ -270,10 +262,12 @@ async function createProcessor(args, cliConfigPath) {
270
262
  ...beforePlugins,
271
263
  tailwindPlugin,
272
264
  !args["--minify"] && _utils.formatNodes,
273
- ...afterPlugins
265
+ ...afterPlugins,
266
+ !args["--no-autoprefixer"] && (0, _deps.loadAutoprefixer)(),
267
+ args["--minify"] && (0, _deps.loadCssNano)()
274
268
  ].filter(Boolean);
275
269
  /** @type {import('postcss').Processor} */ // @ts-ignore
276
- let processor = (0, _postcss.default)(plugins);
270
+ let processor = postcss(plugins);
277
271
  async function readInput() {
278
272
  // Piping in data, let's drain the stdin
279
273
  if (input === "-") {
@@ -288,14 +282,10 @@ async function createProcessor(args, cliConfigPath) {
288
282
  }
289
283
  async function build() {
290
284
  let start = process.hrtime.bigint();
291
- let options = {
292
- ...postcssOptions,
293
- from: input,
294
- to: output
295
- };
296
- return readInput().then((css)=>processor.process(css, options)).then((result)=>lightningcss(result, {
297
- ...options,
298
- minify: !!args["--minify"]
285
+ return readInput().then((css)=>processor.process(css, {
286
+ ...postcssOptions,
287
+ from: input,
288
+ to: output
299
289
  })).then((result)=>{
300
290
  if (!state.watcher) {
301
291
  return result;
@@ -126,7 +126,7 @@ function createWatcher(args, { state , rebuild }) {
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
128
  watcher.on("raw", (evt, filePath, meta)=>{
129
- if (evt !== "rename") {
129
+ if (evt !== "rename" || filePath === null) {
130
130
  return;
131
131
  }
132
132
  let watchedPath = meta.watchedPath;
package/lib/cli/index.js CHANGED
@@ -91,7 +91,6 @@ let commands = {
91
91
  description: "Path to a custom config file"
92
92
  },
93
93
  "--no-autoprefixer": {
94
- deprecated: true,
95
94
  type: Boolean,
96
95
  description: "Disable autoprefixer"
97
96
  },
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ lazyPostcss: function() {
13
+ return lazyPostcss;
14
+ },
15
+ lazyPostcssImport: function() {
16
+ return lazyPostcssImport;
17
+ },
18
+ lazyAutoprefixer: function() {
19
+ return lazyAutoprefixer;
20
+ },
21
+ lazyCssnano: function() {
22
+ return lazyCssnano;
23
+ }
24
+ });
25
+ function lazyPostcss() {
26
+ return require("postcss");
27
+ }
28
+ function lazyPostcssImport() {
29
+ return require("postcss-import");
30
+ }
31
+ function lazyAutoprefixer() {
32
+ return require("autoprefixer");
33
+ }
34
+ function lazyCssnano() {
35
+ return require("cssnano");
36
+ }
@@ -32,6 +32,7 @@ const _default = [
32
32
  "lineClamp",
33
33
  "display",
34
34
  "aspectRatio",
35
+ "size",
35
36
  "height",
36
37
  "maxHeight",
37
38
  "minHeight",
@@ -184,5 +185,7 @@ const _default = [
184
185
  "transitionDuration",
185
186
  "transitionTimingFunction",
186
187
  "willChange",
187
- "content"
188
+ "contain",
189
+ "content",
190
+ "forcedColorAdjust"
188
191
  ];