diff options
Diffstat (limited to 'node_modules/postcss-selector-parser/CHANGELOG.md')
| -rw-r--r-- | node_modules/postcss-selector-parser/CHANGELOG.md | 549 |
1 files changed, 0 insertions, 549 deletions
diff --git a/node_modules/postcss-selector-parser/CHANGELOG.md b/node_modules/postcss-selector-parser/CHANGELOG.md deleted file mode 100644 index 14ffadcc..00000000 --- a/node_modules/postcss-selector-parser/CHANGELOG.md +++ /dev/null @@ -1,549 +0,0 @@ -# 6.1.2 - -- Fixed: erroneous trailing combinators in pseudos - -# 6.1.1 - -- Fixed: improve typings of constructor helpers (#292) - -# 6.1.0 - -- Feature: add `sourceIndex` to `Selector` nodes (#290) - -# 6.0.16 - -- Fixed: add missing `index` argument to `each`/`walk` callback types (#289) - -# 6.0.15 - -- Fixed: Node#prev and Node#next type for the first/last node - -# 6.0.14 - -- Fixed: type definitions - -# 6.0.13 - -- Fixed: throw on unexpected pipe symbols - -# 6.0.12 - -- Fixed: `clone` arguments should be optional - -# 6.0.11 - -- Fixed: parse attribute case insensitivity flag - -# 6.0.10 - -- Fixed: `isPseudoElement()` supports `:first-letter` and `:first-line` - -# 6.0.9 - -- Fixed: `Combinator.raws` property type - -# 6.0.8 - -- Fixed: reduced size - -# 6.0.7 - -- Fixed: parse animation percents - -# 6.0.6 - -- Fixed: parse quoted attributes containing a newline correctly - -# 6.0.5 - -- Perf: rework unesc for a 63+% performance boost - -# 6.0.4 - -- Fixed: ts errors - -# 6.0.3 - -- Fixed: replace node built-in "util" module with "util-deprecate" -- Fixed: handle uppercase pseudo elements -- Fixed: do not create invalid combinator before comment - -# 6.0.2 - -- Fixed an issue with parsing and stringifying an empty attribute value - -# 6.0.1 - -- Fixed an issue with unicode surrogate pair parsing - -# 6.0.0 - -- Updated: `cssesc` to 3.0.0 (major) -- Fixed: Issues with escaped `id` and `class` selectors - -# 5.0.0 - -- Allow escaped dot within class name. -- Update PostCSS to 7.0.7 (patch) - -# 5.0.0-rc.4 - -- Fixed an issue where comments immediately after an insensitive (in attribute) - were not parsed correctly. -- Updated `cssesc` to 2.0.0 (major). -- Removed outdated integration tests. -- Added tests for custom selectors, tags with attributes, the universal - selector with pseudos, and tokens after combinators. - -# 5.0.0-rc.1 - -To ease adoption of the v5.0 release, we have relaxed the node version -check performed by npm at installation time to allow for node 4, which -remains officially unsupported, but likely to continue working for the -time being. - -# 5.0.0-rc.0 - -This release has **BREAKING CHANGES** that were required to fix regressions -in 4.0.0 and to make the Combinator Node API consistent for all combinator -types. Please read carefully. - -## Summary of Changes - -* The way a descendent combinator that isn't a single space character (E.g. `.a .b`) is stored in the AST has changed. -* Named Combinators (E.g. `.a /for/ .b`) are now properly parsed as a combinator. -* It is now possible to look up a node based on the source location of a character in that node and to query nodes if they contain some character. -* Several bug fixes that caused the parser to hang and run out of memory when a `/` was encountered have been fixed. -* The minimum supported version of Node is now `v6.0.0`. - -### Changes to the Descendent Combinator - -In prior releases, the value of a descendant combinator with multiple spaces included all the spaces. - -* `.a .b`: Extra spaces are now stored as space before. - - Old & Busted: - - `combinator.value === " "` - - New hotness: - - `combinator.value === " " && combinator.spaces.before === " "` -* `.a /*comment*/.b`: A comment at the end of the combinator causes extra space to become after space. - - Old & Busted: - - `combinator.value === " "` - - `combinator.raws.value === " /*comment/"` - - New hotness: - - `combinator.value === " "` - - `combinator.spaces.after === " "` - - `combinator.raws.spaces.after === " /*comment*/"` -* `.a<newline>.b`: whitespace that doesn't start or end with a single space character is stored as a raw value. - - Old & Busted: - - `combinator.value === "\n"` - - `combinator.raws.value === undefined` - - New hotness: - - `combinator.value === " "` - - `combinator.raws.value === "\n"` - -### Support for "Named Combinators" - -Although, nonstandard and unlikely to ever become a standard, combinators like `/deep/` and `/for/` are now properly supported. - -Because they've been taken off the standardization track, there is no spec-official name for combinators of the form `/<ident>/`. However, I talked to [Tab Atkins](https://twitter.com/tabatkins) and we agreed to call them "named combinators" so now they are called that. - -Before this release such named combinators were parsed without intention and generated three nodes of type `"tag"` where the first and last nodes had a value of `"/"`. - -* `.a /for/ .b` is parsed as a combinator. - - Old & Busted: - - `root.nodes[0].nodes[1].type === "tag"` - - `root.nodes[0].nodes[1].value === "/"` - - New hotness: - - `root.nodes[0].nodes[1].type === "combinator"` - - `root.nodes[0].nodes[1].value === "/for/"` -* `.a /F\6fR/ .b` escapes are handled and uppercase is normalized. - - Old & Busted: - - `root.nodes[0].nodes[2].type === "tag"` - - `root.nodes[0].nodes[2].value === "F\\6fR"` - - New hotness: - - `root.nodes[0].nodes[1].type === "combinator"` - - `root.nodes[0].nodes[1].value === "/for/"` - - `root.nodes[0].nodes[1].raws.value === "/F\\6fR/"` - -### Source position checks and lookups - -A new API was added to look up a node based on the source location. - -```js -const selectorParser = require("postcss-selector-parser"); -// You can find the most specific node for any given character -let combinator = selectorParser.astSync(".a > .b").atPosition(1,4); -combinator.toString() === " > "; -// You can check if a node includes a specific character -// Whitespace surrounding the node that is owned by that node -// is included in the check. -[2,3,4,5,6].map(column => combinator.isAtPosition(1, column)); -// => [false, true, true, true, false] -``` - -# 4.0.0 - -This release has **BREAKING CHANGES** that were required to fix bugs regarding values with escape sequences. Please read carefully. - -* **Identifiers with escapes** - CSS escape sequences are now hidden from the public API by default. - The normal value of a node like a class name or ID, or an aspect of a node such as attribute - selector's value, is unescaped. Escapes representing Non-ascii characters are unescaped into - unicode characters. For example: `bu\tton, .\31 00, #i\2764\FE0Fu, [attr="value is \"quoted\""]` - will parse respectively to the values `button`, `100`, `iā¤ļøu`, `value is "quoted"`. - The original escape sequences for these values can be found in the corresponding property name - in `node.raws`. Where possible, deprecation warnings were added, but the nature - of escape handling makes it impossible to detect what is escaped or not. Our expectation is - that most users are neither expecting nor handling escape sequences in their use of this library, - and so for them, this is a bug fix. Users who are taking care to handle escapes correctly can - now update their code to remove the escape handling and let us do it for them. - -* **Mutating values with escapes** - When you make an update to a node property that has escape handling - The value is assumed to be unescaped, and any special characters are escaped automatically and - the corresponding `raws` value is immediately updated. This can result in changes to the original - escape format. Where the exact value of the escape sequence is important there are methods that - allow both values to be set in conjunction. There are a number of new convenience methods for - manipulating values that involve escapes, especially for attributes values where the quote mark - is involved. See https://github.com/postcss/postcss-selector-parser/pull/133 for an extensive - write-up on these changes. - - -**Upgrade/API Example** - -In `3.x` there was no unescape handling and internal consistency of several properties was the caller's job to maintain. It was very easy for the developer -to create a CSS file that did not parse correctly when some types of values -were in use. - -```js -const selectorParser = require("postcss-selector-parser"); -let attr = selectorParser.attribute({attribute: "id", operator: "=", value: "a-value"}); -attr.value; // => "a-value" -attr.toString(); // => [id=a-value] -// Add quotes to an attribute's value. -// All these values have to be set by the caller to be consistent: -// no internal consistency is maintained. -attr.raws.unquoted = attr.value -attr.value = "'" + attr.value + "'"; -attr.value; // => "'a-value'" -attr.quoted = true; -attr.toString(); // => "[id='a-value']" -``` - -In `4.0` there is a convenient API for setting and mutating values -that may need escaping. Especially for attributes. - -```js -const selectorParser = require("postcss-selector-parser"); - -// The constructor requires you specify the exact escape sequence -let className = selectorParser.className({value: "illegal class name", raws: {value: "illegal\\ class\\ name"}}); -className.toString(); // => '.illegal\\ class\\ name' - -// So it's better to set the value as a property -className = selectorParser.className(); -// Most properties that deal with identifiers work like this -className.value = "escape for me"; -className.value; // => 'escape for me' -className.toString(); // => '.escape\\ for\\ me' - -// emoji and all non-ascii are escaped to ensure it works in every css file. -className.value = "š±š¦š"; -className.value; // => 'š±š¦š' -className.toString(); // => '.\\1F631\\1F984\\1F60D' - -// you can control the escape sequence if you want, or do bad bad things -className.setPropertyAndEscape('value', 'xxxx', 'yyyy'); -className.value; // => "xxxx" -className.toString(); // => ".yyyy" - -// Pass a value directly through to the css output without escaping it. -className.setPropertyWithoutEscape('value', '$REPLACE_ME$'); -className.value; // => "$REPLACE_ME$" -className.toString(); // => ".$REPLACE_ME$" - -// The biggest changes are to the Attribute class -// passing quoteMark explicitly is required to avoid a deprecation warning. -let attr = selectorParser.attribute({attribute: "id", operator: "=", value: "a-value", quoteMark: null}); -attr.toString(); // => "[id=a-value]" -// Get the value with quotes on it and any necessary escapes. -// This is the same as reading attr.value in 3.x. -attr.getQuotedValue(); // => "a-value"; -attr.quoteMark; // => null - -// Add quotes to an attribute's value. -attr.quoteMark = "'"; // This is all that's required. -attr.toString(); // => "[id='a-value']" -attr.quoted; // => true -// The value is still the same, only the quotes have changed. -attr.value; // => a-value -attr.getQuotedValue(); // => "'a-value'"; - -// deprecated assignment, no warning because there's no escapes -attr.value = "new-value"; -// no quote mark is needed so it is removed -attr.getQuotedValue(); // => "new-value"; - -// deprecated assignment, -attr.value = "\"a 'single quoted' value\""; -// > (node:27859) DeprecationWarning: Assigning an attribute a value containing characters that might need to be escaped is deprecated. Call attribute.setValue() instead. -attr.getQuotedValue(); // => '"a \'single quoted\' value"'; -// quote mark inferred from first and last characters. -attr.quoteMark; // => '"' - -// setValue takes options to make manipulating the value simple. -attr.setValue('foo', {smart: true}); -// foo doesn't require any escapes or quotes. -attr.toString(); // => '[id=foo]' -attr.quoteMark; // => null - -// An explicit quote mark can be specified -attr.setValue('foo', {quoteMark: '"'}); -attr.toString(); // => '[id="foo"]' - -// preserves quote mark by default -attr.setValue('bar'); -attr.toString(); // => '[id="bar"]' -attr.quoteMark = null; -attr.toString(); // => '[id=bar]' - -// with no arguments, it preserves quote mark even when it's not a great idea -attr.setValue('a value \n that should be quoted'); -attr.toString(); // => '[id=a\\ value\\ \\A\\ that\\ should\\ be\\ quoted]' - -// smart preservation with a specified default -attr.setValue('a value \n that should be quoted', {smart: true, preferCurrentQuoteMark: true, quoteMark: "'"}); -// => "[id='a value \\A that should be quoted']" -attr.quoteMark = '"'; -// => '[id="a value \\A that should be quoted"]' - -// this keeps double quotes because it wants to quote the value and the existing value has double quotes. -attr.setValue('this should be quoted', {smart: true, preferCurrentQuoteMark: true, quoteMark: "'"}); -// => '[id="this should be quoted"]' - -// picks single quotes because the value has double quotes -attr.setValue('a "double quoted" value', {smart: true, preferCurrentQuoteMark: true, quoteMark: "'"}); -// => "[id='a "double quoted" value']" - -// setPropertyAndEscape lets you do anything you want. Even things that are a bad idea and illegal. -attr.setPropertyAndEscape('value', 'xxxx', 'the password is 42'); -attr.value; // => "xxxx" -attr.toString(); // => "[id=the password is 42]" - -// Pass a value directly through to the css output without escaping it. -attr.setPropertyWithoutEscape('value', '$REPLACEMENT$'); -attr.value; // => "$REPLACEMENT$" -attr.toString(); // => "[id=$REPLACEMENT$]" -``` - -# 3.1.2 - -* Fix: Removed dot-prop dependency since it's no longer written in es5. - -# 3.1.1 - -* Fix: typescript definitions weren't in the published package. - -# 3.1.0 - -* Fixed numerous bugs in attribute nodes relating to the handling of comments - and whitespace. There's significant changes to `attrNode.spaces` and `attrNode.raws` since the `3.0.0` release. -* Added `Attribute#offsetOf(part)` to get the offset location of - attribute parts like `"operator"` and `"value"`. This is most - often added to `Attribute#sourceIndex` for error reporting. - -# 3.0.0 - -## Breaking changes - -* Some tweaks to the tokenizer/attribute selector parsing mean that whitespace - locations might be slightly different to the 2.x code. -* Better attribute selector parsing with more validation; postcss-selector-parser - no longer uses regular expressions to parse attribute selectors. -* Added an async API (thanks to @jacobp100); the default `process` API is now - async, and the sync API is now accessed through `processSync` instead. -* `process()` and `processSync()` now return a string instead of the Processor - instance. -* Tweaks handling of Less interpolation (thanks to @jwilsson). -* Removes support for Node 0.12. - -## Other changes - -* `ast()` and `astSync()` methods have been added to the `Processor`. These - return the `Root` node of the selectors after processing them. -* `transform()` and `transformSync()` methods have been added to the - `Processor`. These return the value returned by the processor callback - after processing the selectors. -* Set the parent when inserting a node (thanks to @chriseppstein). -* Correctly adjust indices when using insertBefore/insertAfter (thanks to @tivac). -* Fixes handling of namespaces with qualified tag selectors. -* `process`, `ast` and `transform` (and their sync variants) now accept a - `postcss` rule node. When provided, better errors are generated and selector - processing is automatically set back to the rule selector (unless the `updateSelector` option is set to `false`.) -* Now more memory efficient when tokenizing selectors. - -### Upgrade hints - -The pattern of: - -`rule.selector = processor.process(rule.selector).result.toString();` - -is now: - -`processor.processSync(rule)` - -# 2.2.3 - -* Resolves an issue where the parser would not reduce multiple spaces between an - ampersand and another simple selector in lossy mode (thanks to @adam-26). - -# 2.2.2 - -* No longer hangs on an unescaped semicolon; instead the parser will throw - an exception for these cases. - -# 2.2.1 - -* Allows a consumer to specify whitespace tokens when creating a new Node - (thanks to @Semigradsky). - -# 2.2.0 - -* Added a new option to normalize whitespace when parsing the selector string - (thanks to @adam-26). - -# 2.1.1 - -* Better unquoted value handling within attribute selectors - (thanks to @evilebottnawi). - -# 2.1.0 - -* Added: Use string constants for all node types & expose them on the main - parser instance (thanks to @Aweary). - -#Ā 2.0.0 - -This release contains the following breaking changes: - -* Renamed all `eachInside` iterators to `walk`. For example, `eachTag` is now - `walkTags`, and `eachInside` is now `walk`. -* Renamed `Node#removeSelf()` to `Node#remove()`. -* Renamed `Container#remove()` to `Container#removeChild()`. -* Renamed `Node#raw` to `Node#raws` (thanks to @davidtheclark). -* Now parses `&` as the *nesting* selector, rather than a *tag* selector. -* Fixes misinterpretation of Sass interpolation (e.g. `#{foo}`) as an - id selector (thanks to @davidtheclark). - -and; - -* Fixes parsing of attribute selectors with equals signs in them - (e.g. `[data-attr="foo=bar"]`) (thanks to @montmanu). -* Adds `quoted` and `raw.unquoted` properties to attribute nodes - (thanks to @davidtheclark). - -# 1.3.3 - -* Fixes an infinite loop on `)` and `]` tokens when they had no opening pairs. - Now postcss-selector-parser will throw when it encounters these lone tokens. - -#Ā 1.3.2 - -* Now uses plain integers rather than `str.charCodeAt(0)` for compiled builds. - -# 1.3.1 - -* Update flatten to v1.x (thanks to @shinnn). - -# 1.3.0 - -* Adds a new node type, `String`, to fix a crash on selectors such as - `foo:bar("test")`. - -# 1.2.1 - -* Fixes a crash when the parser encountered a trailing combinator. - -# 1.2.0 - -* A more descriptive error is thrown when the parser expects to find a - pseudo-class/pseudo-element (thanks to @ashelley). -* Adds support for line/column locations for selector nodes, as well as a - `Node#sourceIndex` method (thanks to @davidtheclark). - -# 1.1.4 - -* Fixes a crash when a selector started with a `>` combinator. The module will - now no longer throw if a selector has a leading/trailing combinator node. - -# 1.1.3 - -* Fixes a crash on `@` tokens. - -# 1.1.2 - -* Fixes an infinite loop caused by using parentheses in a non-pseudo element - context. - -# 1.1.1 - -* Fixes a crash when a backslash ended a selector string. - -# 1.1.0 - -* Adds support for replacing multiple nodes at once with `replaceWith` - (thanks to @jonathantneal). -* Parser no longer throws on sequential IDs and trailing commas, to support - parsing of selector hacks. - -# 1.0.1 - -* Fixes using `insertAfter` and `insertBefore` during iteration. - -# 1.0.0 - -* Adds `clone` and `replaceWith` methods to nodes. -* Adds `insertBefore` and `insertAfter` to containers. -* Stabilises API. - -# 0.0.5 - -* Fixes crash on extra whitespace inside a pseudo selector's parentheses. -* Adds sort function to the container class. -* Enables the parser to pass its input through without transforming. -* Iteration-safe `each` and `eachInside`. - -# 0.0.4 - -* Tidy up redundant duplication. -* Fixes a bug where the parser would loop infinitely on universal selectors - inside pseudo selectors. -* Adds `length` getter and `eachInside`, `map`, `reduce` to the container class. -* When a selector has been removed from the tree, the root node will no longer - cast it to a string. -* Adds node type iterators to the container class (e.g. `eachComment`). -* Adds filter function to the container class. -* Adds split function to the container class. -* Create new node types by doing `parser.id(opts)` etc. -* Adds support for pseudo classes anywhere in the selector. - -# 0.0.3 - -* Adds `next` and `prev` to the node class. -* Adds `first` and `last` getters to the container class. -* Adds `every` and `some` iterators to the container class. -* Add `empty` alias for `removeAll`. -* Combinators are now types of node. -* Fixes the at method so that it is not an alias for `index`. -* Tidy up creation of new nodes in the parser. -* Refactors how namespaces are handled for consistency & less redundant code. -* Refactors AST to use `nodes` exclusively, and eliminates excessive nesting. -* Fixes nested pseudo parsing. -* Fixes whitespace parsing. - -# 0.0.2 - -* Adds support for namespace selectors. -* Adds support for selectors joined by escaped spaces - such as `.\31\ 0`. - -# 0.0.1 - -* Initial release. |
