postcss-selector-parser
Advanced tools
Comparing version
@@ -687,3 +687,3 @@ # API Documentation | ||
attribute: "href", | ||
operatator: "=", | ||
operator: "=", | ||
value: "test", | ||
@@ -690,0 +690,0 @@ spaces: { |
@@ -0,1 +1,7 @@ | ||
# 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 | ||
@@ -2,0 +8,0 @@ |
@@ -216,2 +216,12 @@ "use strict"; | ||
t.deepEqual(tree.nodes[0].nodes[0].raws.value, '\\1D306'); | ||
}); | ||
(0, _helpers.test)('class selector with escaping (35)', '.not-pseudo\\:focus', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].value, 'not-pseudo:focus'); | ||
t.deepEqual(tree.nodes[0].nodes[0].type, 'class'); | ||
t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'not-pseudo\\:focus'); | ||
}); | ||
(0, _helpers.test)('class selector with escaping (36)', '.not-pseudo\\:\\:focus', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].value, 'not-pseudo::focus'); | ||
t.deepEqual(tree.nodes[0].nodes[0].type, 'class'); | ||
t.deepEqual(tree.nodes[0].nodes[0].raws.value, 'not-pseudo\\:\\:focus'); | ||
}); |
@@ -38,2 +38,45 @@ "use strict"; | ||
t.deepEqual(classname.raws.spaces.after, ' /* comment 3 */'); | ||
}); | ||
(0, _helpers.test)('comments in selector list', 'h2, /*test*/ h4', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[0].value, 'h2'); | ||
t.deepEqual(tree.nodes[1].nodes[0].rawSpaceBefore, ' '); | ||
t.deepEqual(tree.nodes[1].nodes[0].type, 'comment'); | ||
t.deepEqual(tree.nodes[1].nodes[0].value, '/*test*/'); | ||
t.deepEqual(tree.nodes[1].nodes[1].rawSpaceBefore, ' '); | ||
t.deepEqual(tree.nodes[1].nodes[1].type, 'tag'); | ||
t.deepEqual(tree.nodes[1].nodes[1].value, 'h4'); | ||
}); | ||
(0, _helpers.test)('comments in selector list (2)', 'h2,/*test*/h4', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[0].value, 'h2'); | ||
t.deepEqual(tree.nodes[1].nodes[0].rawSpaceBefore, ''); | ||
t.deepEqual(tree.nodes[1].nodes[0].type, 'comment'); | ||
t.deepEqual(tree.nodes[1].nodes[0].value, '/*test*/'); | ||
t.deepEqual(tree.nodes[1].nodes[1].type, 'tag'); | ||
t.deepEqual(tree.nodes[1].nodes[1].value, 'h4'); | ||
t.deepEqual(tree.nodes[1].nodes[1].rawSpaceBefore, ''); | ||
}); | ||
(0, _helpers.test)('comments in selector list (3)', 'h2/*test*/, h4', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[0].value, 'h2'); | ||
t.deepEqual(tree.nodes[0].nodes[1].rawSpaceBefore, ''); | ||
t.deepEqual(tree.nodes[0].nodes[1].type, 'comment'); | ||
t.deepEqual(tree.nodes[0].nodes[1].value, '/*test*/'); | ||
t.deepEqual(tree.nodes[1].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[1].nodes[0].value, 'h4'); | ||
t.deepEqual(tree.nodes[1].nodes[0].rawSpaceBefore, ' '); | ||
}); | ||
(0, _helpers.test)('comments in selector list (4)', 'h2, /*test*/ /*test*/ h4', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[0].value, 'h2'); | ||
t.deepEqual(tree.nodes[1].nodes[0].rawSpaceBefore, ' '); | ||
t.deepEqual(tree.nodes[1].nodes[0].type, 'comment'); | ||
t.deepEqual(tree.nodes[1].nodes[0].value, '/*test*/'); | ||
t.deepEqual(tree.nodes[1].nodes[1].rawSpaceBefore, ' '); | ||
t.deepEqual(tree.nodes[1].nodes[1].type, 'comment'); | ||
t.deepEqual(tree.nodes[1].nodes[1].value, '/*test*/'); | ||
t.deepEqual(tree.nodes[1].nodes[2].rawSpaceBefore, ' '); | ||
t.deepEqual(tree.nodes[1].nodes[2].type, 'tag'); | ||
t.deepEqual(tree.nodes[1].nodes[2].value, 'h4'); | ||
}); |
@@ -94,2 +94,11 @@ "use strict"; | ||
}); | ||
(0, _helpers.test)('special pseudo element guard (uppercase)', ':BEFORE:AFTER', function (t, tree) { | ||
[node(tree), node(tree, 1)].forEach(function (n) { | ||
t.true(_.default.isPseudo(n)); | ||
t.false(_.default.isPseudoClass(n)); | ||
t.true(_.default.isPseudoElement(n)); | ||
t.true(_.default.isContainer(n)); | ||
t.false(_.default.isNamespace(n)); | ||
}); | ||
}); | ||
(0, _helpers.test)('string guard', '"string"', function (t, tree) { | ||
@@ -96,0 +105,0 @@ var n = node(tree); |
@@ -9,2 +9,8 @@ "use strict"; | ||
}); | ||
(0, _helpers.test)('id selector with universal', '*#z98y ', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].value, '*'); | ||
t.deepEqual(tree.nodes[0].nodes[0].type, 'universal'); | ||
t.deepEqual(tree.nodes[0].nodes[1].value, 'z98y'); | ||
t.deepEqual(tree.nodes[0].nodes[1].type, 'id'); | ||
}); | ||
(0, _helpers.test)('id hack', '#one#two', function (t, tree) { | ||
@@ -11,0 +17,0 @@ t.deepEqual(tree.nodes[0].nodes[0].type, 'id'); |
@@ -22,18 +22,26 @@ "use strict"; | ||
(0, _helpers.test)('sass escapes', '.#{$classname}', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes.map(function (n) { | ||
return n.type; | ||
}), ["class"]); | ||
t.deepEqual(tree.nodes[0].nodes[0].type, "class"); | ||
t.deepEqual(tree.nodes[0].nodes[0].value, "#{$classname}"); | ||
}); | ||
(0, _helpers.test)('sass escapes (2)', '[lang=#{$locale}]', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes.map(function (n) { | ||
return n.type; | ||
}), ["attribute"]); | ||
t.deepEqual(tree.nodes[0].nodes[0].type, "attribute"); | ||
t.deepEqual(tree.nodes[0].nodes[0].attribute, "lang"); | ||
t.deepEqual(tree.nodes[0].nodes[0].operator, "="); | ||
t.deepEqual(tree.nodes[0].nodes[0].value, "#{$locale}"); | ||
}); | ||
(0, _helpers.test)('placeholder', '%foo', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes.map(function (n) { | ||
return n.type; | ||
}), ["tag"]); | ||
t.deepEqual(tree.nodes[0].nodes[0].type, "tag"); | ||
t.deepEqual(tree.nodes[0].nodes[0].value, "%foo"); | ||
}); | ||
(0, _helpers.test)('styled selector', '${Step}', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].type, "tag"); | ||
t.deepEqual(tree.nodes[0].nodes[0].value, "${Step}"); | ||
}); | ||
(0, _helpers.test)('styled selector (2)', '${Step}:nth-child(odd)', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].type, "tag"); | ||
t.deepEqual(tree.nodes[0].nodes[0].value, "${Step}"); | ||
t.deepEqual(tree.nodes[0].nodes[1].type, "pseudo"); | ||
t.deepEqual(tree.nodes[0].nodes[1].value, ":nth-child"); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].type, "tag"); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].value, "odd"); | ||
}); |
@@ -98,2 +98,69 @@ "use strict"; | ||
t.deepEqual(tree.nodes[1].nodes[0].type, 'pseudo'); | ||
}); | ||
(0, _helpers.test)('current pseudo class', ':current(p, li, dt, dd)', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].type, 'pseudo'); | ||
t.deepEqual(tree.nodes[0].nodes[0].value, ':current'); | ||
t.deepEqual(tree.nodes[0].nodes[0].nodes[0].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[0].nodes[0].nodes[0].value, 'p'); | ||
t.deepEqual(tree.nodes[0].nodes[0].nodes[1].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[0].nodes[1].nodes[0].value, 'li'); | ||
t.deepEqual(tree.nodes[0].nodes[0].nodes[2].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[0].nodes[2].nodes[0].value, 'dt'); | ||
t.deepEqual(tree.nodes[0].nodes[0].nodes[3].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[0].nodes[3].nodes[0].value, 'dd'); | ||
}); | ||
(0, _helpers.test)('is pseudo class', ':is(p, li, dt, dd)', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].type, 'pseudo'); | ||
t.deepEqual(tree.nodes[0].nodes[0].value, ':is'); | ||
t.deepEqual(tree.nodes[0].nodes[0].nodes[0].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[0].nodes[0].nodes[0].value, 'p'); | ||
t.deepEqual(tree.nodes[0].nodes[0].nodes[1].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[0].nodes[1].nodes[0].value, 'li'); | ||
t.deepEqual(tree.nodes[0].nodes[0].nodes[2].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[0].nodes[2].nodes[0].value, 'dt'); | ||
t.deepEqual(tree.nodes[0].nodes[0].nodes[3].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[0].nodes[3].nodes[0].value, 'dd'); | ||
}); | ||
(0, _helpers.test)('is pseudo class with namespace', '*|*:is(:hover, :focus) ', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].type, 'universal'); | ||
t.deepEqual(tree.nodes[0].nodes[0].namespace, '*'); | ||
t.deepEqual(tree.nodes[0].nodes[0].value, '*'); | ||
t.deepEqual(tree.nodes[0].nodes[1].type, 'pseudo'); | ||
t.deepEqual(tree.nodes[0].nodes[1].value, ':is'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].type, 'pseudo'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].value, ':hover'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[1].nodes[0].type, 'pseudo'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[1].nodes[0].value, ':focus'); | ||
}); | ||
(0, _helpers.test)('has pseudo class', 'a:has(> img)', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[0].value, 'a'); | ||
t.deepEqual(tree.nodes[0].nodes[1].type, 'pseudo'); | ||
t.deepEqual(tree.nodes[0].nodes[1].value, ':has'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].type, 'combinator'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].value, '>'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[1].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[1].value, 'img'); | ||
}); | ||
(0, _helpers.test)('where pseudo class', 'a:where(:not(:hover))', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[0].value, 'a'); | ||
t.deepEqual(tree.nodes[0].nodes[1].type, 'pseudo'); | ||
t.deepEqual(tree.nodes[0].nodes[1].value, ':where'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].type, 'pseudo'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].value, ':not'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].nodes[0].nodes[0].type, 'pseudo'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].nodes[0].nodes[0].value, ':hover'); | ||
}); | ||
(0, _helpers.test)('nested pseudo classes', "section:not( :has(h1, h2 ) )", function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[0].value, 'section'); | ||
t.deepEqual(tree.nodes[0].nodes[1].type, 'pseudo'); | ||
t.deepEqual(tree.nodes[0].nodes[1].value, ':not'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].type, 'pseudo'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].value, ':has'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].nodes[0].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].nodes[0].nodes[0].value, 'h1'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].nodes[1].nodes[0].type, 'tag'); | ||
t.deepEqual(tree.nodes[0].nodes[1].nodes[0].nodes[0].nodes[1].nodes[0].value, 'h2'); | ||
}); |
@@ -14,2 +14,12 @@ "use strict"; | ||
}); | ||
(0, _helpers.test)('universal selector with descendant combinator', '* *', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].type, 'universal'); | ||
t.deepEqual(tree.nodes[0].nodes[1].type, 'combinator'); | ||
t.deepEqual(tree.nodes[0].nodes[2].type, 'universal'); | ||
}); | ||
(0, _helpers.test)('universal selector with descendant combinator and extraneous non-combinating whitespace', '* *', function (t, tree) { | ||
t.deepEqual(tree.nodes[0].nodes[0].type, 'universal'); | ||
t.deepEqual(tree.nodes[0].nodes[1].type, 'combinator'); | ||
t.deepEqual(tree.nodes[0].nodes[2].type, 'universal'); | ||
}); | ||
(0, _helpers.test)('extraneous non-combinating whitespace', ' * , * ', function (t, tree) { | ||
@@ -16,0 +26,0 @@ t.deepEqual(tree.nodes[0].nodes[0].value, '*'); |
@@ -888,3 +888,5 @@ "use strict"; | ||
if (this.position === 0 || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) { | ||
if (this.position === 0 || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis || this.current.nodes.every(function (node) { | ||
return node.type === 'comment'; | ||
})) { | ||
this.spaces = this.optionalSpace(content); | ||
@@ -891,0 +893,0 @@ this.position++; |
@@ -25,4 +25,3 @@ "use strict"; | ||
var _require = require("util"), | ||
deprecate = _require.deprecate; | ||
var deprecate = require("util-deprecate"); | ||
@@ -29,0 +28,0 @@ var WRAPPED_IN_QUOTES = /^('|")(.*)\1$/; |
@@ -38,4 +38,4 @@ "use strict"; | ||
_proto.toString = function toString() { | ||
return [this.rawSpaceBefore, String('.' + this.stringifyProperty("value")), this.rawSpaceAfter].join(''); | ||
_proto.valueToString = function valueToString() { | ||
return '.' + _Node.prototype.valueToString.call(this); | ||
}; | ||
@@ -42,0 +42,0 @@ |
@@ -51,3 +51,3 @@ "use strict"; | ||
function isPseudoElement(node) { | ||
return isPseudo(node) && node.value && (node.value.startsWith("::") || node.value === ":before" || node.value === ":after"); | ||
return isPseudo(node) && node.value && (node.value.startsWith("::") || node.value.toLowerCase() === ":before" || node.value.toLowerCase() === ":after"); | ||
} | ||
@@ -54,0 +54,0 @@ |
@@ -29,4 +29,4 @@ "use strict"; | ||
_proto.toString = function toString() { | ||
return [this.rawSpaceBefore, String('#' + this.stringifyProperty("value")), this.rawSpaceAfter].join(''); | ||
_proto.valueToString = function valueToString() { | ||
return '#' + _Node.prototype.valueToString.call(this); | ||
}; | ||
@@ -33,0 +33,0 @@ |
@@ -39,4 +39,4 @@ "use strict"; | ||
_proto.toString = function toString() { | ||
return [this.rawSpaceBefore, this.qualifiedName(this.stringifyProperty("value")), this.rawSpaceAfter].join(''); | ||
_proto.valueToString = function valueToString() { | ||
return this.qualifiedName(_Node.prototype.valueToString.call(this)); | ||
}; | ||
@@ -43,0 +43,0 @@ |
@@ -163,3 +163,3 @@ "use strict"; | ||
/** | ||
* | ||
* | ||
* @param {number} line The number (starting with 1) | ||
@@ -198,4 +198,8 @@ * @param {number} column The column number (starting with 1) | ||
_proto.valueToString = function valueToString() { | ||
return String(this.stringifyProperty("value")); | ||
}; | ||
_proto.toString = function toString() { | ||
return [this.rawSpaceBefore, String(this.stringifyProperty("value")), this.rawSpaceAfter].join(''); | ||
return [this.rawSpaceBefore, this.valueToString(), this.rawSpaceAfter].join(''); | ||
}; | ||
@@ -202,0 +206,0 @@ |
{ | ||
"name": "postcss-selector-parser", | ||
"version": "6.0.2", | ||
"version": "6.0.3", | ||
"devDependencies": { | ||
@@ -44,3 +44,4 @@ "@babel/cli": "^7.2.3", | ||
"indexes-of": "^1.0.1", | ||
"uniq": "^1.0.1" | ||
"uniq": "^1.0.1", | ||
"util-deprecate": "^1.0.2" | ||
}, | ||
@@ -47,0 +48,0 @@ "license": "MIT", |
@@ -17,2 +17,5 @@ // Type definitions for postcss-selector-parser 2.2.3 | ||
// A type that's T but not U. | ||
type Diff<T, U> = T extends U ? never : T; | ||
// TODO: Conditional types in TS 1.8 will really clean this up. | ||
@@ -207,7 +210,10 @@ declare function parser(): parser.Processor<never>; | ||
} | ||
interface Container<Value extends string | undefined = string> extends Base<Value> { | ||
nodes: Array<Node>; | ||
append(selector: Selector): Container; | ||
prepend(selector: Selector): Container; | ||
at(index: number): Node; | ||
interface Container< | ||
Value extends string | undefined = string, | ||
Child extends Node = Node | ||
> extends Base<Value> { | ||
nodes: Array<Child>; | ||
append(selector: Selector): this; | ||
prepend(selector: Selector): this; | ||
at(index: number): Child; | ||
/** | ||
@@ -226,29 +232,70 @@ * Return the most specific node at the line and column number given. | ||
*/ | ||
atPosition(line: number, column: number): Node; | ||
index(child: Node): number; | ||
readonly first: Node; | ||
readonly last: Node; | ||
atPosition(line: number, column: number): Child; | ||
index(child: Child): number; | ||
readonly first: Child; | ||
readonly last: Child; | ||
readonly length: number; | ||
removeChild(child: Node): Container; | ||
removeChild(child: Child): this; | ||
removeAll(): Container; | ||
empty(): Container; | ||
insertAfter(oldNode: Node, newNode: Node): Container; | ||
insertBefore(oldNode: Node, newNode: Node): Container; | ||
each(callback: (node: Node) => boolean | void): boolean | undefined; | ||
walk(callback: (node: Node) => boolean | void): boolean | undefined; | ||
walkAttributes(callback: (node: Node) => boolean | void): boolean | undefined; | ||
walkClasses(callback: (node: Node) => boolean | void): boolean | undefined; | ||
walkCombinators(callback: (node: Node) => boolean | void): boolean | undefined; | ||
walkComments(callback: (node: Node) => boolean | void): boolean | undefined; | ||
walkIds(callback: (node: Node) => boolean | void): boolean | undefined; | ||
walkNesting(callback: (node: Node) => boolean | void): boolean | undefined; | ||
walkPseudos(callback: (node: Node) => boolean | void): boolean | undefined; | ||
walkTags(callback: (node: Node) => boolean | void): boolean | undefined; | ||
split(callback: (node: Node) => boolean): [Node[], Node[]]; | ||
map(callback: (node: Node) => Node): Node[]; | ||
reduce<T>(callback: (node: Node) => Node, memo: T): T; | ||
every(callback: (node: Node) => boolean): boolean; | ||
some(callback: (node: Node) => boolean): boolean; | ||
filter(callback: (node: Node) => boolean): Node[]; | ||
sort(callback: (nodeA: Node, nodeB: Node) => number): Node[]; | ||
insertAfter(oldNode: Child, newNode: Child): this; | ||
insertBefore(oldNode: Child, newNode: Child): this; | ||
each(callback: (node: Child) => boolean | void): boolean | undefined; | ||
walk( | ||
callback: (node: Node) => boolean | void | ||
): boolean | undefined; | ||
walkAttributes( | ||
callback: (node: Attribute) => boolean | void | ||
): boolean | undefined; | ||
walkClasses( | ||
callback: (node: ClassName) => boolean | void | ||
): boolean | undefined; | ||
walkCombinators( | ||
callback: (node: Combinator) => boolean | void | ||
): boolean | undefined; | ||
walkComments( | ||
callback: (node: Comment) => boolean | void | ||
): boolean | undefined; | ||
walkIds( | ||
callback: (node: Identifier) => boolean | void | ||
): boolean | undefined; | ||
walkNesting( | ||
callback: (node: Nesting) => boolean | void | ||
): boolean | undefined; | ||
walkPseudos( | ||
callback: (node: Pseudo) => boolean | void | ||
): boolean | undefined; | ||
walkTags(callback: (node: Tag) => boolean | void): boolean | undefined; | ||
split(callback: (node: Child) => boolean): [Child[], Child[]]; | ||
map<T>(callback: (node: Child) => T): T[]; | ||
reduce( | ||
callback: ( | ||
previousValue: Child, | ||
currentValue: Child, | ||
currentIndex: number, | ||
array: readonly Child[] | ||
) => Child | ||
): Child; | ||
reduce( | ||
callback: ( | ||
previousValue: Child, | ||
currentValue: Child, | ||
currentIndex: number, | ||
array: readonly Child[] | ||
) => Child, | ||
initialValue: Child | ||
): Child; | ||
reduce<T>( | ||
callback: ( | ||
previousValue: T, | ||
currentValue: Child, | ||
currentIndex: number, | ||
array: readonly Child[] | ||
) => T, | ||
initialValue: T | ||
): T; | ||
every(callback: (node: Child) => boolean): boolean; | ||
some(callback: (node: Child) => boolean): boolean; | ||
filter(callback: (node: Child) => boolean): Child[]; | ||
sort(callback: (nodeA: Child, nodeB: Child) => number): Child[]; | ||
toString(): string; | ||
@@ -279,3 +326,3 @@ } | ||
interface Root extends Container<undefined> { | ||
interface Root extends Container<undefined, Selector> { | ||
type: "root"; | ||
@@ -292,3 +339,3 @@ /** | ||
interface Selector extends Container { | ||
interface Selector extends Container<string, Diff<Node, Selector>> { | ||
type: "selector"; | ||
@@ -447,3 +494,3 @@ } | ||
interface Pseudo extends Container { | ||
interface Pseudo extends Container<string, Selector> { | ||
type: "pseudo"; | ||
@@ -450,0 +497,0 @@ } |
314629
3.38%6372
3.29%4
33.33%+ Added
+ Added