@asamuzakjp/dom-selector 6.5.0 → 6.5.2
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.
- package/README.md +20 -19
- package/dist/cjs/index.cjs +25 -15
- package/dist/cjs/index.cjs.map +1 -1
- package/package.json +21 -21
- package/src/js/constant.js +1 -2
- package/src/js/finder.js +4 -5
- package/src/js/parser.js +19 -14
- package/types/js/constant.d.ts +1 -2
package/README.md
CHANGED
|
@@ -172,14 +172,15 @@ const dom = new JSDOM('', {
|
|
|
172
172
|
|Pattern|Supported|Note|
|
|
173
173
|
|:--------|:-------:|:--------|
|
|
174
174
|
|\*|✓| |
|
|
175
|
+
|E|✓| |
|
|
175
176
|
|ns\|E|✓| |
|
|
176
177
|
|\*\|E|✓| |
|
|
177
178
|
|\|E|✓| |
|
|
178
|
-
|E|✓| |
|
|
179
|
-
|E
|
|
180
|
-
|E
|
|
181
|
-
|E
|
|
182
|
-
|
|
|
179
|
+
|E F|✓| |
|
|
180
|
+
|E > F|✓| |
|
|
181
|
+
|E + F|✓| |
|
|
182
|
+
|E ~ F|✓| |
|
|
183
|
+
|F \|\| E|Unsupported| |
|
|
183
184
|
|E.warning|✓| |
|
|
184
185
|
|E#myid|✓| |
|
|
185
186
|
|E\[foo\]|✓| |
|
|
@@ -191,6 +192,10 @@ const dom = new JSDOM('', {
|
|
|
191
192
|
|E\[foo$="bar"\]|✓| |
|
|
192
193
|
|E\[foo*="bar"\]|✓| |
|
|
193
194
|
|E\[foo\|="en"\]|✓| |
|
|
195
|
+
|E:is(s1, s2, …)|✓| |
|
|
196
|
+
|E:not(s1, s2, …)|✓| |
|
|
197
|
+
|E:where(s1, s2, …)|✓| |
|
|
198
|
+
|E:has(rs1, rs2, …)|✓| |
|
|
194
199
|
|E:defined|Partially supported|Matching with MathML is not yet supported.|
|
|
195
200
|
|E:dir(ltr)|✓| |
|
|
196
201
|
|E:lang(en)|✓| |
|
|
@@ -201,25 +206,27 @@ const dom = new JSDOM('', {
|
|
|
201
206
|
|E:target|✓| |
|
|
202
207
|
|E:target‑within|✓| |
|
|
203
208
|
|E:scope|✓| |
|
|
209
|
+
|E:hover|✓| |
|
|
210
|
+
|E:active|✓| |
|
|
211
|
+
|E:focus|✓| |
|
|
212
|
+
|E:focus‑visible|✓| |
|
|
213
|
+
|E:focus‑within|✓| |
|
|
204
214
|
|E:current|Unsupported| |
|
|
205
215
|
|E:current(s)|Unsupported| |
|
|
206
216
|
|E:past|Unsupported| |
|
|
207
217
|
|E:future|Unsupported| |
|
|
208
|
-
|E:active|✓| |
|
|
209
|
-
|E:hover|✓| |
|
|
210
|
-
|E:focus|✓| |
|
|
211
|
-
|E:focus‑within|✓| |
|
|
212
|
-
|E:focus‑visible|✓| |
|
|
213
218
|
|E:open<br>E:closed|Partially supported|Matching with <select>, e.g. `select:open`, is not supported.|
|
|
219
|
+
|E:popover-open|✓| |
|
|
214
220
|
|E:enabled<br>E:disabled|✓| |
|
|
215
221
|
|E:read‑write<br>E:read‑only|✓| |
|
|
216
222
|
|E:placeholder‑shown|✓| |
|
|
217
223
|
|E:default|✓| |
|
|
218
224
|
|E:checked|✓| |
|
|
219
225
|
|E:indeterminate|✓| |
|
|
226
|
+
|E:blank|Unsupported| |
|
|
220
227
|
|E:valid<br>E:invalid|✓| |
|
|
228
|
+
|E:in-range<br>E:out-of-range|✓| |
|
|
221
229
|
|E:required<br>E:optional|✓| |
|
|
222
|
-
|E:blank|Unsupported| |
|
|
223
230
|
|E:user‑valid<br>E:user‑invalid|Unsupported| |
|
|
224
231
|
|E:root|✓| |
|
|
225
232
|
|E:empty|✓| |
|
|
@@ -233,21 +240,15 @@ const dom = new JSDOM('', {
|
|
|
233
240
|
|E:first‑of‑type|✓| |
|
|
234
241
|
|E:last‑of‑type|✓| |
|
|
235
242
|
|E:only‑of‑type|✓| |
|
|
236
|
-
|E F|✓| |
|
|
237
|
-
|E > F|✓| |
|
|
238
|
-
|E + F|✓| |
|
|
239
|
-
|E ~ F|✓| |
|
|
240
|
-
|F \|\| E|Unsupported| |
|
|
241
243
|
|E:nth‑col(n)|Unsupported| |
|
|
242
244
|
|E:nth‑last‑col(n)|Unsupported| |
|
|
243
|
-
|
|
|
244
|
-
|E:state(v)|✓|*1|
|
|
245
|
+
|CE:state(v)|✓|*1|
|
|
245
246
|
|:host|✓| |
|
|
246
247
|
|:host(s)|✓| |
|
|
247
|
-
|:host‑context(s)|✓| |
|
|
248
248
|
|:host(:state(v))|✓|*1|
|
|
249
249
|
|:host:has(rs1, rs2, ...)|✓| |
|
|
250
250
|
|:host(s):has(rs1, rs2, ...)|✓| |
|
|
251
|
+
|:host‑context(s)|✓| |
|
|
251
252
|
|:host‑context(s):has(rs1, rs2, ...)|✓| |
|
|
252
253
|
|&|✓|Only supports outermost `&`, i.e. equivalent to `:scope`|
|
|
253
254
|
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -69,7 +69,6 @@ var BIT_32 = 32;
|
|
|
69
69
|
var BIT_FFFF = 65535;
|
|
70
70
|
var DUO = 2;
|
|
71
71
|
var HEX = 16;
|
|
72
|
-
var HYPHEN = 45;
|
|
73
72
|
var TYPE_FROM = 8;
|
|
74
73
|
var TYPE_TO = -1;
|
|
75
74
|
var ELEMENT_NODE = 1;
|
|
@@ -79,7 +78,7 @@ var DOCUMENT_FRAGMENT_NODE = 11;
|
|
|
79
78
|
var DOCUMENT_POSITION_PRECEDING = 2;
|
|
80
79
|
var DOCUMENT_POSITION_CONTAINS = 8;
|
|
81
80
|
var SHOW_ALL = 4294967295;
|
|
82
|
-
var
|
|
81
|
+
var SHOW_CONTAINER = 1281;
|
|
83
82
|
var ALPHA_NUM = "[A-Z\\d]+";
|
|
84
83
|
var CHILD_IDX = "(?:first|last|only)-(?:child|of-type)";
|
|
85
84
|
var DIGIT = "(?:0|[1-9]\\d*)";
|
|
@@ -768,15 +767,8 @@ var preprocess = (...args) => {
|
|
|
768
767
|
}
|
|
769
768
|
const preHash = selector.substring(0, index + 1);
|
|
770
769
|
let postHash = selector.substring(index + 1);
|
|
771
|
-
if (/^\d$/.test(postHash.substring(0, 1))) {
|
|
772
|
-
throw new DOMException(`Invalid selector ${selector}`, SYNTAX_ERR);
|
|
773
|
-
}
|
|
774
770
|
const codePoint = postHash.codePointAt(0);
|
|
775
|
-
if (codePoint
|
|
776
|
-
if (/^\d$/.test(postHash.substring(1, 2))) {
|
|
777
|
-
throw new DOMException(`Invalid selector ${selector}`, SYNTAX_ERR);
|
|
778
|
-
}
|
|
779
|
-
} else if (codePoint > BIT_FFFF) {
|
|
771
|
+
if (codePoint > BIT_FFFF) {
|
|
780
772
|
const str = `\\${codePoint.toString(HEX)} `;
|
|
781
773
|
if (postHash.length === DUO) {
|
|
782
774
|
postHash = str;
|
|
@@ -792,7 +784,7 @@ var preprocess = (...args) => {
|
|
|
792
784
|
selector = getType(selector).toLowerCase();
|
|
793
785
|
} else if (Array.isArray(selector)) {
|
|
794
786
|
selector = selector.join(",");
|
|
795
|
-
} else if (Object.
|
|
787
|
+
} else if (Object.hasOwn(selector, "toString")) {
|
|
796
788
|
selector = selector.toString();
|
|
797
789
|
} else {
|
|
798
790
|
throw new DOMException(`Invalid selector ${selector}`, SYNTAX_ERR);
|
|
@@ -846,8 +838,22 @@ var walkAST = (ast = {}) => {
|
|
|
846
838
|
const opt = {
|
|
847
839
|
enter: (node) => {
|
|
848
840
|
switch (node.type) {
|
|
849
|
-
case
|
|
850
|
-
|
|
841
|
+
case CLASS_SELECTOR: {
|
|
842
|
+
if (/^-?\d/.test(node.name)) {
|
|
843
|
+
throw new DOMException(
|
|
844
|
+
`Invalid selector .${node.name}`,
|
|
845
|
+
SYNTAX_ERR
|
|
846
|
+
);
|
|
847
|
+
}
|
|
848
|
+
break;
|
|
849
|
+
}
|
|
850
|
+
case ID_SELECTOR: {
|
|
851
|
+
if (/^-?\d/.test(node.name)) {
|
|
852
|
+
throw new DOMException(
|
|
853
|
+
`Invalid selector #${node.name}`,
|
|
854
|
+
SYNTAX_ERR
|
|
855
|
+
);
|
|
856
|
+
}
|
|
851
857
|
break;
|
|
852
858
|
}
|
|
853
859
|
case PS_CLASS_SELECTOR: {
|
|
@@ -877,6 +883,10 @@ var walkAST = (ast = {}) => {
|
|
|
877
883
|
}
|
|
878
884
|
break;
|
|
879
885
|
}
|
|
886
|
+
case SELECTOR: {
|
|
887
|
+
branches.add(node.children);
|
|
888
|
+
break;
|
|
889
|
+
}
|
|
880
890
|
default:
|
|
881
891
|
}
|
|
882
892
|
}
|
|
@@ -1478,7 +1488,7 @@ var Finder = class {
|
|
|
1478
1488
|
throw new this.#window.DOMException(e.message, e.name);
|
|
1479
1489
|
}
|
|
1480
1490
|
} else if (e.name in this.#window) {
|
|
1481
|
-
throw new this.#window[e.name](e.message);
|
|
1491
|
+
throw new this.#window[e.name](e.message, { cause: e });
|
|
1482
1492
|
} else {
|
|
1483
1493
|
throw e;
|
|
1484
1494
|
}
|
|
@@ -1692,7 +1702,7 @@ var Finder = class {
|
|
|
1692
1702
|
* @returns {object} - tree walker
|
|
1693
1703
|
*/
|
|
1694
1704
|
_createTreeWalker(node, opt = {}) {
|
|
1695
|
-
const { force = false, whatToShow =
|
|
1705
|
+
const { force = false, whatToShow = SHOW_CONTAINER } = opt;
|
|
1696
1706
|
let walker;
|
|
1697
1707
|
if (force) {
|
|
1698
1708
|
walker = this.#document.createTreeWalker(node, whatToShow);
|