No description
Find a file
Robin Malfait 5ddd9c4db6
Fallback to RegEx based parser when using custom transformers or extractors (#11335)
* handle custom `transformer` and `extractor` implementations

Right now the Rust based parser can't work with custom `transfomers` or
`extractors`.

In a perfect world we can implement as many custom parsers/extractors in
Rust such that we don't need this at all. In an almost perfect world we
can pass the transformer and extractor to the Rust based parser and call
the callback functions to handle all of this. This is probably what we
are going to do in the future but this requires more work to make sure
that:

1. It works as expected
2. Doesn't result in (major) performance issues

Since it currently doesn't work with the Rust based parser, we can
implement a fix for this in the meantime before we reach the "perfect"
solution.

One solution to this problem is to check if we do have a custom
transformer or a custom extractor and if we do, then we can bail on the
Rust parser completely and just use the current regex based parser.

An alternative solution, the solution implemented here, is that we group
the `changedContent` into 2 buckets. The bucket where we rely on the
default transformer and extractor and a bucket where a custom
transformer or extractor is used.

Then, the bucket where we use the default transformer and extractor can
still rely on the way faster Rust based parser. For the other bucket we
fallback to the regex based parser.

The nice part about this is that we can use both parsers at the same
time, and the majority of the use cases should use the faster Rust based
parser.

* update changelog
2023-06-01 22:37:12 +02:00
.github update build-linux steps in release workflows 2023-05-25 12:15:55 +02:00
integrations Update rollup to version 3.23.0 2023-05-29 06:30:31 +00:00
jest Drop support for Node.js v12 (#11089) 2023-04-25 16:28:20 -04:00
nesting Ensure to transpile the PostCSS Nesting plugin (tailwindcss/nesting) (#7080) 2022-01-15 16:07:20 +01:00
oxide use parseCandidateStrings directly (#11332) 2023-06-01 13:24:53 +02:00
perf Performance improvements + memory leak fix (#3032) 2020-12-11 15:03:49 +01:00
scripts Merge engines (#11275) 2023-05-24 22:10:00 -04:00
src Fallback to RegEx based parser when using custom transformers or extractors (#11335) 2023-06-01 22:37:12 +02:00
standalone-cli Update test 2023-04-25 17:45:45 -04:00
stubs Add svh, lvh, and dvh values to default theme (#11317) 2023-05-30 11:58:16 -04:00
tests Fix source maps issue resulting in a crash (#11319) 2023-05-31 18:28:11 +02:00
types Update the types for the safelist config (#10901) 2023-03-29 22:54:57 +02:00
.editorconfig Convert new stuff to use ES6 modules 2017-08-27 18:02:41 -04:00
.eslintignore Separate stable and oxide engines (#10359) 2023-01-19 11:58:25 -05:00
.eslintrc.json Remove duplicate prettier.config.js settings from .eslintrc.json (#5087) 2021-09-01 17:41:43 +02:00
.gitignore Add script for running integration tests 2023-01-21 11:28:24 -05:00
.swcrc Disable SWC “unused” minification 2023-04-25 17:42:58 -04:00
base.css Remove preflight CSS export in favor of base 2019-02-11 12:38:46 -05:00
CHANGELOG.md Fallback to RegEx based parser when using custom transformers or extractors (#11335) 2023-06-01 22:37:12 +02:00
colors.d.ts Add TypeScript types for the tailwind.config.js file (#7891) 2022-03-22 10:24:28 +01:00
colors.js Add default interop to public available functions (#6348) 2021-12-10 11:25:10 +01:00
components.css Move CSS files to root for easier imports 2018-03-13 10:05:24 -04:00
defaultConfig.d.ts Add TypeScript types for the tailwind.config.js file (#7891) 2022-03-22 10:24:28 +01:00
defaultConfig.js Add default interop to public available functions (#6348) 2021-12-10 11:25:10 +01:00
defaultTheme.d.ts Add more explicit types for the default theme (#8780) 2022-07-07 09:05:38 -04:00
defaultTheme.js Add default interop to public available functions (#6348) 2021-12-10 11:25:10 +01:00
index.css Support @import "tailwindcss" using top-level index.css file (#11205) 2023-05-12 18:49:35 +02:00
LICENSE Update LICENSE 2022-02-05 15:22:47 -05:00
loadConfig.d.ts Enable ESM and TS based config files (#10785) 2023-03-15 17:04:18 -04:00
loadConfig.js Enable ESM and TS based config files (#10785) 2023-03-15 17:04:18 -04:00
package-lock.json bump napi-rs (#11328) 2023-05-31 13:44:28 +02:00
package.json Remove autoprefixer dependency (#11315) 2023-05-30 13:27:15 +02:00
plugin.d.ts Make Config completely optional for plugins (#9502) 2022-10-07 10:45:22 -04:00
plugin.js Add default interop to public available functions (#6348) 2021-12-10 11:25:10 +01:00
prettier.config.js Add Prettier configuration file (prettier.config.js) (#3713) 2021-05-13 09:07:24 -04:00
README.md fix CI badge in README 2023-05-25 12:01:03 +02:00
resolveConfig.d.ts Improve return value of resolveConfig, unwrap ResolvableTo (#9972) 2022-11-30 14:26:15 +01:00
resolveConfig.js Add default interop to public available functions (#6348) 2021-12-10 11:25:10 +01:00
screens.css Add screen.css file for postcss-import convenience 2019-05-12 10:36:59 -04:00
tailwind.css Undo accidental changes to CDN build process 2019-12-25 13:54:09 -05:00
turbo.json Merge engines (#11275) 2023-05-24 22:10:00 -04:00
utilities.css Move CSS files to root for easier imports 2018-03-13 10:05:24 -04:00
variants.css JIT: Replace @tailwind screens with @tailwind variants (#4356) 2021-05-14 13:58:52 -04:00

Tailwind CSS

A utility-first CSS framework for rapidly building custom user interfaces.

Build Status Total Downloads Latest Release License


Documentation

For full documentation, visit tailwindcss.com.

Community

For help, discussion about best practices, or any other conversation that would benefit from being searchable:

Discuss Tailwind CSS on GitHub

For casual chit-chat with others using the framework:

Join the Tailwind CSS Discord Server

Contributing

If you're interested in contributing to Tailwind CSS, please read our contributing docs before submitting a pull request.