From 76cb9c2a39d477a64824a985ade40507e3bbade1 Mon Sep 17 00:00:00 2001 From: Adam Mathes Date: Fri, 13 Feb 2026 21:34:48 -0800 Subject: feat(vanilla): add testing infrastructure and tests (NK-wjnczv) --- .../node_modules/@csstools/css-tokenizer/README.md | 111 +++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 vanilla/node_modules/@csstools/css-tokenizer/README.md (limited to 'vanilla/node_modules/@csstools/css-tokenizer/README.md') diff --git a/vanilla/node_modules/@csstools/css-tokenizer/README.md b/vanilla/node_modules/@csstools/css-tokenizer/README.md new file mode 100644 index 0000000..d2b6394 --- /dev/null +++ b/vanilla/node_modules/@csstools/css-tokenizer/README.md @@ -0,0 +1,111 @@ +# CSS Tokenizer for CSS + +[npm version][npm-url] +[Build Status][cli-url] +[Discord][discord] + +Implemented from : https://drafts.csswg.org/css-syntax/ + +## API + +[Read the API docs](./docs/css-tokenizer.md) + +## Usage + +Add [CSS Tokenizer] to your project: + +```bash +npm install @csstools/css-tokenizer --save-dev +``` + +```js +import { tokenize } from '@csstools/css-tokenizer'; + +const myCSS = `@media only screen and (min-width: 768rem) { + .foo { + content: 'Some content!' !important; + } +} +`; + +const tokens = tokenize({ + css: myCSS, +}); + +console.log(tokens); +``` + +Or use the streaming interface: + +```js +import { tokenizer, TokenType } from '@csstools/css-tokenizer'; + +const myCSS = `@media only screen and (min-width: 768rem) { + .foo { + content: 'Some content!' !important; + } +} +`; + +const t = tokenizer({ + css: myCSS, +}); + +while (true) { + const token = t.nextToken(); + if (token[0] === TokenType.EOF) { + break; + } + + console.log(token); +} +``` + +### Options + +```ts +{ + onParseError?: (error: ParseError) => void +} +``` + +#### `onParseError` + +The tokenizer is forgiving and won't stop when a parse error is encountered. + +To receive parsing error information you can set a callback. + +```js +import { tokenizer, TokenType } from '@csstools/css-tokenizer'; + +const t = tokenizer({ + css: '\\', +}, { onParseError: (err) => console.warn(err) }); + +while (true) { + const token = t.nextToken(); + if (token[0] === TokenType.EOF) { + break; + } +} +``` + +Parser errors will try to inform you where in the tokenizer logic the error happened. +This tells you what kind of error occurred. + +## Order of priorities + +1. specification compliance +2. correctness +3. reliability +4. tokenizing and serializing must round trip losslessly +5. exposing useful aspects about the source code +6. runtime performance +7. package size + + +[cli-url]: https://github.com/csstools/postcss-plugins/actions/workflows/test.yml?query=workflow/test +[discord]: https://discord.gg/bUadyRwkJS +[npm-url]: https://www.npmjs.com/package/@csstools/css-tokenizer + +[CSS Tokenizer]: https://github.com/csstools/postcss-plugins/tree/main/packages/css-tokenizer -- cgit v1.2.3