readability_js 0.0.1

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.
Files changed (1607) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.rspec +2 -0
  4. data/CHANGELOG.md +2 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE +21 -0
  8. data/README.md +119 -0
  9. data/Rakefile +30 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/cli/pry.rb +5 -0
  13. data/lib/custom_errors/error.rb +4 -0
  14. data/lib/readability_js/node/node_modules/.bin/tldts +1 -0
  15. data/lib/readability_js/node/node_modules/.yarn-integrity +67 -0
  16. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/LICENSE +21 -0
  17. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/README.md +316 -0
  18. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/browser/css-color.min.js +220 -0
  19. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/browser/css-color.min.js.map +1 -0
  20. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/cjs/index.cjs +5666 -0
  21. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/cjs/index.cjs.map +1 -0
  22. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/cjs/index.d.cts +109 -0
  23. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/index.d.ts +17 -0
  24. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/index.js +27 -0
  25. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/index.js.map +1 -0
  26. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/cache.d.ts +44 -0
  27. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/cache.js +82 -0
  28. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/cache.js.map +1 -0
  29. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/color.d.ts +537 -0
  30. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/color.js +2833 -0
  31. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/color.js.map +1 -0
  32. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/common.d.ts +21 -0
  33. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/common.js +7 -0
  34. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/common.js.map +1 -0
  35. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/constant.d.ts +43 -0
  36. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/constant.js +101 -0
  37. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/constant.js.map +1 -0
  38. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/convert.d.ts +99 -0
  39. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/convert.js +361 -0
  40. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/convert.js.map +1 -0
  41. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-calc.d.ts +89 -0
  42. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-calc.js +860 -0
  43. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-calc.js.map +1 -0
  44. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-gradient.d.ts +79 -0
  45. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-gradient.js +261 -0
  46. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-gradient.js.map +1 -0
  47. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-var.d.ts +31 -0
  48. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-var.js +195 -0
  49. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-var.js.map +1 -0
  50. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/relative-color.d.ts +29 -0
  51. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/relative-color.js +507 -0
  52. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/relative-color.js.map +1 -0
  53. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/resolve.d.ts +52 -0
  54. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/resolve.js +350 -0
  55. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/resolve.js.map +1 -0
  56. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/typedef.d.ts +80 -0
  57. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/util.d.ts +45 -0
  58. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/util.js +279 -0
  59. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/util.js.map +1 -0
  60. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/package.json +82 -0
  61. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/index.ts +24 -0
  62. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/cache.ts +114 -0
  63. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/color.ts +3511 -0
  64. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/common.ts +31 -0
  65. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/constant.ts +68 -0
  66. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/convert.ts +469 -0
  67. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/css-calc.ts +965 -0
  68. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/css-gradient.ts +384 -0
  69. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/css-var.ts +250 -0
  70. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/relative-color.ts +603 -0
  71. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/resolve.ts +443 -0
  72. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/typedef.ts +88 -0
  73. data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/util.ts +336 -0
  74. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/LICENSE +21 -0
  75. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/README.md +324 -0
  76. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/dist/cjs/index.cjs +4613 -0
  77. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/dist/cjs/index.cjs.map +1 -0
  78. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/dist/cjs/index.d.cts +16 -0
  79. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/package.json +83 -0
  80. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/src/index.js +353 -0
  81. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/src/js/constant.js +129 -0
  82. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/src/js/finder.js +3108 -0
  83. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/src/js/matcher.js +587 -0
  84. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/src/js/parser.js +431 -0
  85. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/src/js/utility.js +1107 -0
  86. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/types/index.d.ts +14 -0
  87. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/types/js/constant.d.ts +79 -0
  88. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/types/js/finder.d.ts +64 -0
  89. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/types/js/matcher.d.ts +16 -0
  90. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/types/js/parser.d.ts +14 -0
  91. data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/types/js/utility.d.ts +30 -0
  92. data/lib/readability_js/node/node_modules/@asamuzakjp/nwsapi/LICENSE +22 -0
  93. data/lib/readability_js/node/node_modules/@asamuzakjp/nwsapi/README.md +132 -0
  94. data/lib/readability_js/node/node_modules/@asamuzakjp/nwsapi/package.json +43 -0
  95. data/lib/readability_js/node/node_modules/@asamuzakjp/nwsapi/src/nwsapi.js +1855 -0
  96. data/lib/readability_js/node/node_modules/@csstools/color-helpers/CHANGELOG.md +10 -0
  97. data/lib/readability_js/node/node_modules/@csstools/color-helpers/LICENSE.md +18 -0
  98. data/lib/readability_js/node/node_modules/@csstools/color-helpers/README.md +32 -0
  99. data/lib/readability_js/node/node_modules/@csstools/color-helpers/dist/index.cjs +263 -0
  100. data/lib/readability_js/node/node_modules/@csstools/color-helpers/dist/index.d.ts +429 -0
  101. data/lib/readability_js/node/node_modules/@csstools/color-helpers/dist/index.mjs +263 -0
  102. data/lib/readability_js/node/node_modules/@csstools/color-helpers/package.json +62 -0
  103. data/lib/readability_js/node/node_modules/@csstools/css-calc/CHANGELOG.md +10 -0
  104. data/lib/readability_js/node/node_modules/@csstools/css-calc/LICENSE.md +20 -0
  105. data/lib/readability_js/node/node_modules/@csstools/css-calc/README.md +132 -0
  106. data/lib/readability_js/node/node_modules/@csstools/css-calc/dist/index.cjs +1 -0
  107. data/lib/readability_js/node/node_modules/@csstools/css-calc/dist/index.d.ts +71 -0
  108. data/lib/readability_js/node/node_modules/@csstools/css-calc/dist/index.mjs +1 -0
  109. data/lib/readability_js/node/node_modules/@csstools/css-calc/package.json +66 -0
  110. data/lib/readability_js/node/node_modules/@csstools/css-color-parser/CHANGELOG.md +13 -0
  111. data/lib/readability_js/node/node_modules/@csstools/css-color-parser/LICENSE.md +20 -0
  112. data/lib/readability_js/node/node_modules/@csstools/css-color-parser/README.md +37 -0
  113. data/lib/readability_js/node/node_modules/@csstools/css-color-parser/dist/index.cjs +1 -0
  114. data/lib/readability_js/node/node_modules/@csstools/css-color-parser/dist/index.d.ts +168 -0
  115. data/lib/readability_js/node/node_modules/@csstools/css-color-parser/dist/index.mjs +1 -0
  116. data/lib/readability_js/node/node_modules/@csstools/css-color-parser/package.json +71 -0
  117. data/lib/readability_js/node/node_modules/@csstools/css-parser-algorithms/CHANGELOG.md +9 -0
  118. data/lib/readability_js/node/node_modules/@csstools/css-parser-algorithms/LICENSE.md +20 -0
  119. data/lib/readability_js/node/node_modules/@csstools/css-parser-algorithms/README.md +119 -0
  120. data/lib/readability_js/node/node_modules/@csstools/css-parser-algorithms/dist/index.cjs +1 -0
  121. data/lib/readability_js/node/node_modules/@csstools/css-parser-algorithms/dist/index.d.ts +604 -0
  122. data/lib/readability_js/node/node_modules/@csstools/css-parser-algorithms/dist/index.mjs +1 -0
  123. data/lib/readability_js/node/node_modules/@csstools/css-parser-algorithms/package.json +65 -0
  124. data/lib/readability_js/node/node_modules/@csstools/css-syntax-patches-for-csstree/CHANGELOG.md +9 -0
  125. data/lib/readability_js/node/node_modules/@csstools/css-syntax-patches-for-csstree/LICENSE.md +18 -0
  126. data/lib/readability_js/node/node_modules/@csstools/css-syntax-patches-for-csstree/README.md +43 -0
  127. data/lib/readability_js/node/node_modules/@csstools/css-syntax-patches-for-csstree/dist/index.d.ts +5 -0
  128. data/lib/readability_js/node/node_modules/@csstools/css-syntax-patches-for-csstree/dist/index.json +765 -0
  129. data/lib/readability_js/node/node_modules/@csstools/css-syntax-patches-for-csstree/package.json +54 -0
  130. data/lib/readability_js/node/node_modules/@csstools/css-tokenizer/CHANGELOG.md +9 -0
  131. data/lib/readability_js/node/node_modules/@csstools/css-tokenizer/LICENSE.md +20 -0
  132. data/lib/readability_js/node/node_modules/@csstools/css-tokenizer/README.md +111 -0
  133. data/lib/readability_js/node/node_modules/@csstools/css-tokenizer/dist/index.cjs +1 -0
  134. data/lib/readability_js/node/node_modules/@csstools/css-tokenizer/dist/index.d.ts +593 -0
  135. data/lib/readability_js/node/node_modules/@csstools/css-tokenizer/dist/index.mjs +1 -0
  136. data/lib/readability_js/node/node_modules/@csstools/css-tokenizer/package.json +62 -0
  137. data/lib/readability_js/node/node_modules/@mozilla/readability/.prettierrc.js +13 -0
  138. data/lib/readability_js/node/node_modules/@mozilla/readability/CHANGELOG.md +104 -0
  139. data/lib/readability_js/node/node_modules/@mozilla/readability/CODE_OF_CONDUCT.md +15 -0
  140. data/lib/readability_js/node/node_modules/@mozilla/readability/CONTRIBUTING.md +78 -0
  141. data/lib/readability_js/node/node_modules/@mozilla/readability/JSDOMParser.js +1278 -0
  142. data/lib/readability_js/node/node_modules/@mozilla/readability/LICENSE.md +13 -0
  143. data/lib/readability_js/node/node_modules/@mozilla/readability/README.md +129 -0
  144. data/lib/readability_js/node/node_modules/@mozilla/readability/Readability-readerable.js +122 -0
  145. data/lib/readability_js/node/node_modules/@mozilla/readability/Readability.js +2786 -0
  146. data/lib/readability_js/node/node_modules/@mozilla/readability/SECURITY.md +8 -0
  147. data/lib/readability_js/node/node_modules/@mozilla/readability/eslint.config.mjs +55 -0
  148. data/lib/readability_js/node/node_modules/@mozilla/readability/index.d.ts +64 -0
  149. data/lib/readability_js/node/node_modules/@mozilla/readability/index.js +8 -0
  150. data/lib/readability_js/node/node_modules/@mozilla/readability/package.json +41 -0
  151. data/lib/readability_js/node/node_modules/agent-base/LICENSE +22 -0
  152. data/lib/readability_js/node/node_modules/agent-base/README.md +69 -0
  153. data/lib/readability_js/node/node_modules/agent-base/dist/helpers.d.ts +15 -0
  154. data/lib/readability_js/node/node_modules/agent-base/dist/helpers.d.ts.map +1 -0
  155. data/lib/readability_js/node/node_modules/agent-base/dist/helpers.js +66 -0
  156. data/lib/readability_js/node/node_modules/agent-base/dist/helpers.js.map +1 -0
  157. data/lib/readability_js/node/node_modules/agent-base/dist/index.d.ts +41 -0
  158. data/lib/readability_js/node/node_modules/agent-base/dist/index.d.ts.map +1 -0
  159. data/lib/readability_js/node/node_modules/agent-base/dist/index.js +178 -0
  160. data/lib/readability_js/node/node_modules/agent-base/dist/index.js.map +1 -0
  161. data/lib/readability_js/node/node_modules/agent-base/package.json +46 -0
  162. data/lib/readability_js/node/node_modules/bidi-js/LICENSE.txt +22 -0
  163. data/lib/readability_js/node/node_modules/bidi-js/README.md +133 -0
  164. data/lib/readability_js/node/node_modules/bidi-js/dist/bidi.js +1010 -0
  165. data/lib/readability_js/node/node_modules/bidi-js/dist/bidi.min.js +1 -0
  166. data/lib/readability_js/node/node_modules/bidi-js/dist/bidi.min.mjs +1 -0
  167. data/lib/readability_js/node/node_modules/bidi-js/dist/bidi.mjs +1002 -0
  168. data/lib/readability_js/node/node_modules/bidi-js/package.json +39 -0
  169. data/lib/readability_js/node/node_modules/bidi-js/src/brackets.js +30 -0
  170. data/lib/readability_js/node/node_modules/bidi-js/src/charTypes.js +66 -0
  171. data/lib/readability_js/node/node_modules/bidi-js/src/data/bidiBrackets.data.js +5 -0
  172. data/lib/readability_js/node/node_modules/bidi-js/src/data/bidiCharTypes.data.js +25 -0
  173. data/lib/readability_js/node/node_modules/bidi-js/src/data/bidiMirroring.data.js +2 -0
  174. data/lib/readability_js/node/node_modules/bidi-js/src/embeddingLevels.js +690 -0
  175. data/lib/readability_js/node/node_modules/bidi-js/src/index.js +5 -0
  176. data/lib/readability_js/node/node_modules/bidi-js/src/mirroring.js +48 -0
  177. data/lib/readability_js/node/node_modules/bidi-js/src/reordering.js +99 -0
  178. data/lib/readability_js/node/node_modules/bidi-js/src/util/parseCharacterMap.js +30 -0
  179. data/lib/readability_js/node/node_modules/css-tree/LICENSE +19 -0
  180. data/lib/readability_js/node/node_modules/css-tree/README.md +192 -0
  181. data/lib/readability_js/node/node_modules/css-tree/cjs/convertor/create.cjs +32 -0
  182. data/lib/readability_js/node/node_modules/css-tree/cjs/convertor/index.cjs +8 -0
  183. data/lib/readability_js/node/node_modules/css-tree/cjs/data-patch.cjs +7 -0
  184. data/lib/readability_js/node/node_modules/css-tree/cjs/data.cjs +120 -0
  185. data/lib/readability_js/node/node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs +16 -0
  186. data/lib/readability_js/node/node_modules/css-tree/cjs/definition-syntax/generate.cjs +139 -0
  187. data/lib/readability_js/node/node_modules/css-tree/cjs/definition-syntax/index.cjs +13 -0
  188. data/lib/readability_js/node/node_modules/css-tree/cjs/definition-syntax/parse.cjs +556 -0
  189. data/lib/readability_js/node/node_modules/css-tree/cjs/definition-syntax/scanner.cjs +113 -0
  190. data/lib/readability_js/node/node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs +59 -0
  191. data/lib/readability_js/node/node_modules/css-tree/cjs/definition-syntax/walk.cjs +57 -0
  192. data/lib/readability_js/node/node_modules/css-tree/cjs/generator/create.cjs +102 -0
  193. data/lib/readability_js/node/node_modules/css-tree/cjs/generator/index.cjs +8 -0
  194. data/lib/readability_js/node/node_modules/css-tree/cjs/generator/sourceMap.cjs +96 -0
  195. data/lib/readability_js/node/node_modules/css-tree/cjs/generator/token-before.cjs +170 -0
  196. data/lib/readability_js/node/node_modules/css-tree/cjs/index.cjs +65 -0
  197. data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/Lexer.cjs +517 -0
  198. data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/error.cjs +128 -0
  199. data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs +235 -0
  200. data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/generic-const.cjs +12 -0
  201. data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/generic-urange.cjs +149 -0
  202. data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/generic.cjs +589 -0
  203. data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/index.cjs +7 -0
  204. data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/match-graph.cjs +530 -0
  205. data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/match.cjs +632 -0
  206. data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/prepare-tokens.cjs +54 -0
  207. data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/search.cjs +65 -0
  208. data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/structure.cjs +173 -0
  209. data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/trace.cjs +73 -0
  210. data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/units.cjs +38 -0
  211. data/lib/readability_js/node/node_modules/css-tree/cjs/parser/SyntaxError.cjs +74 -0
  212. data/lib/readability_js/node/node_modules/css-tree/cjs/parser/create.cjs +340 -0
  213. data/lib/readability_js/node/node_modules/css-tree/cjs/parser/index.cjs +8 -0
  214. data/lib/readability_js/node/node_modules/css-tree/cjs/parser/parse-selector.cjs +8 -0
  215. data/lib/readability_js/node/node_modules/css-tree/cjs/parser/sequence.cjs +47 -0
  216. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/container.cjs +32 -0
  217. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/font-face.cjs +12 -0
  218. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/import.cjs +101 -0
  219. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/index.cjs +27 -0
  220. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/layer.cjs +16 -0
  221. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/media.cjs +16 -0
  222. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/nest.cjs +16 -0
  223. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/page.cjs +16 -0
  224. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/scope.cjs +16 -0
  225. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/starting-style.cjs +12 -0
  226. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/supports.cjs +16 -0
  227. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/config/generator.cjs +9 -0
  228. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/config/lexer.cjs +14 -0
  229. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/config/mix.cjs +127 -0
  230. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/config/parser-selector.cjs +19 -0
  231. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/config/parser.cjs +49 -0
  232. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/config/walker.cjs +9 -0
  233. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/create.cjs +58 -0
  234. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/function/expression.cjs +11 -0
  235. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/function/var.cjs +43 -0
  236. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/index.cjs +14 -0
  237. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/AnPlusB.cjs +293 -0
  238. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Atrule.cjs +103 -0
  239. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/AtrulePrelude.cjs +52 -0
  240. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/AttributeSelector.cjs +148 -0
  241. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Block.cjs +96 -0
  242. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Brackets.cjs +38 -0
  243. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/CDC.cjs +26 -0
  244. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/CDO.cjs +26 -0
  245. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/ClassSelector.cjs +31 -0
  246. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Combinator.cjs +61 -0
  247. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Comment.cjs +40 -0
  248. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Condition.cjs +120 -0
  249. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Declaration.cjs +166 -0
  250. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/DeclarationList.cjs +62 -0
  251. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Dimension.cjs +30 -0
  252. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Feature.cjs +101 -0
  253. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/FeatureFunction.cjs +67 -0
  254. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/FeatureRange.cjs +133 -0
  255. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Function.cjs +45 -0
  256. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/GeneralEnclosed.cjs +68 -0
  257. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Hash.cjs +30 -0
  258. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/IdSelector.cjs +33 -0
  259. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Identifier.cjs +25 -0
  260. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Layer.cjs +35 -0
  261. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/LayerList.cjs +43 -0
  262. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/LayerName.cjs +34 -0
  263. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/LayerNameList.cjs +42 -0
  264. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/MediaCondition.cjs +70 -0
  265. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/MediaFeature.cjs +76 -0
  266. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/MediaFeatureRange.cjs +11 -0
  267. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/MediaQuery.cjs +100 -0
  268. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/MediaQueryList.cjs +41 -0
  269. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/NestingSelector.cjs +29 -0
  270. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Nth.cjs +54 -0
  271. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Number.cjs +25 -0
  272. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Operator.cjs +28 -0
  273. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Parentheses.cjs +38 -0
  274. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Percentage.cjs +25 -0
  275. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/PseudoClassSelector.cjs +67 -0
  276. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/PseudoElementSelector.cjs +69 -0
  277. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Ratio.cjs +71 -0
  278. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Raw.cjs +48 -0
  279. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Rule.cjs +58 -0
  280. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Scope.cjs +69 -0
  281. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Selector.cjs +38 -0
  282. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/SelectorList.cjs +43 -0
  283. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/String.cjs +26 -0
  284. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/StyleSheet.cjs +83 -0
  285. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/SupportsDeclaration.cjs +38 -0
  286. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/SupportsFeature.cjs +69 -0
  287. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/TypeSelector.cjs +59 -0
  288. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/UnicodeRange.cjs +158 -0
  289. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Url.cjs +54 -0
  290. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Value.cjs +26 -0
  291. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/WhiteSpace.cjs +34 -0
  292. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/common/feature-range.cjs +112 -0
  293. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/common/feature.cjs +76 -0
  294. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/index-generate.cjs +103 -0
  295. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/index-parse-selector.cjs +39 -0
  296. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/index-parse.cjs +103 -0
  297. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/index.cjs +103 -0
  298. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/pseudo/index.cjs +60 -0
  299. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/pseudo/lang.cjs +37 -0
  300. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/scope/atrulePrelude.cjs +9 -0
  301. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/scope/default.cjs +76 -0
  302. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/scope/index.cjs +11 -0
  303. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/scope/selector.cjs +88 -0
  304. data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/scope/value.cjs +29 -0
  305. data/lib/readability_js/node/node_modules/css-tree/cjs/tokenizer/OffsetToLocation.cjs +91 -0
  306. data/lib/readability_js/node/node_modules/css-tree/cjs/tokenizer/TokenStream.cjs +308 -0
  307. data/lib/readability_js/node/node_modules/css-tree/cjs/tokenizer/adopt-buffer.cjs +13 -0
  308. data/lib/readability_js/node/node_modules/css-tree/cjs/tokenizer/char-code-definitions.cjs +236 -0
  309. data/lib/readability_js/node/node_modules/css-tree/cjs/tokenizer/index.cjs +554 -0
  310. data/lib/readability_js/node/node_modules/css-tree/cjs/tokenizer/names.cjs +32 -0
  311. data/lib/readability_js/node/node_modules/css-tree/cjs/tokenizer/types.cjs +57 -0
  312. data/lib/readability_js/node/node_modules/css-tree/cjs/tokenizer/utils.cjs +261 -0
  313. data/lib/readability_js/node/node_modules/css-tree/cjs/utils/List.cjs +473 -0
  314. data/lib/readability_js/node/node_modules/css-tree/cjs/utils/clone.cjs +25 -0
  315. data/lib/readability_js/node/node_modules/css-tree/cjs/utils/create-custom-error.cjs +18 -0
  316. data/lib/readability_js/node/node_modules/css-tree/cjs/utils/ident.cjs +102 -0
  317. data/lib/readability_js/node/node_modules/css-tree/cjs/utils/index.cjs +20 -0
  318. data/lib/readability_js/node/node_modules/css-tree/cjs/utils/names.cjs +113 -0
  319. data/lib/readability_js/node/node_modules/css-tree/cjs/utils/string.cjs +99 -0
  320. data/lib/readability_js/node/node_modules/css-tree/cjs/utils/url.cjs +108 -0
  321. data/lib/readability_js/node/node_modules/css-tree/cjs/version.cjs +5 -0
  322. data/lib/readability_js/node/node_modules/css-tree/cjs/walker/create.cjs +291 -0
  323. data/lib/readability_js/node/node_modules/css-tree/cjs/walker/index.cjs +8 -0
  324. data/lib/readability_js/node/node_modules/css-tree/data/patch.json +982 -0
  325. data/lib/readability_js/node/node_modules/css-tree/dist/csstree.esm.js +12 -0
  326. data/lib/readability_js/node/node_modules/css-tree/dist/csstree.js +12 -0
  327. data/lib/readability_js/node/node_modules/css-tree/dist/data.cjs +1308 -0
  328. data/lib/readability_js/node/node_modules/css-tree/dist/data.js +1308 -0
  329. data/lib/readability_js/node/node_modules/css-tree/dist/version.cjs +1 -0
  330. data/lib/readability_js/node/node_modules/css-tree/dist/version.js +1 -0
  331. data/lib/readability_js/node/node_modules/css-tree/lib/convertor/create.js +28 -0
  332. data/lib/readability_js/node/node_modules/css-tree/lib/convertor/index.js +4 -0
  333. data/lib/readability_js/node/node_modules/css-tree/lib/data-patch.js +6 -0
  334. data/lib/readability_js/node/node_modules/css-tree/lib/data.js +118 -0
  335. data/lib/readability_js/node/node_modules/css-tree/lib/definition-syntax/SyntaxError.js +12 -0
  336. data/lib/readability_js/node/node_modules/css-tree/lib/definition-syntax/generate.js +135 -0
  337. data/lib/readability_js/node/node_modules/css-tree/lib/definition-syntax/index.js +4 -0
  338. data/lib/readability_js/node/node_modules/css-tree/lib/definition-syntax/parse.js +552 -0
  339. data/lib/readability_js/node/node_modules/css-tree/lib/definition-syntax/scanner.js +109 -0
  340. data/lib/readability_js/node/node_modules/css-tree/lib/definition-syntax/walk.js +53 -0
  341. data/lib/readability_js/node/node_modules/css-tree/lib/generator/create.js +97 -0
  342. data/lib/readability_js/node/node_modules/css-tree/lib/generator/index.js +4 -0
  343. data/lib/readability_js/node/node_modules/css-tree/lib/generator/sourceMap.js +92 -0
  344. data/lib/readability_js/node/node_modules/css-tree/lib/generator/token-before.js +182 -0
  345. data/lib/readability_js/node/node_modules/css-tree/lib/index.js +30 -0
  346. data/lib/readability_js/node/node_modules/css-tree/lib/lexer/Lexer.js +511 -0
  347. data/lib/readability_js/node/node_modules/css-tree/lib/lexer/error.js +123 -0
  348. data/lib/readability_js/node/node_modules/css-tree/lib/lexer/generic-an-plus-b.js +238 -0
  349. data/lib/readability_js/node/node_modules/css-tree/lib/lexer/generic-const.js +8 -0
  350. data/lib/readability_js/node/node_modules/css-tree/lib/lexer/generic-urange.js +151 -0
  351. data/lib/readability_js/node/node_modules/css-tree/lib/lexer/generic.js +622 -0
  352. data/lib/readability_js/node/node_modules/css-tree/lib/lexer/index.js +1 -0
  353. data/lib/readability_js/node/node_modules/css-tree/lib/lexer/match-graph.js +527 -0
  354. data/lib/readability_js/node/node_modules/css-tree/lib/lexer/match.js +630 -0
  355. data/lib/readability_js/node/node_modules/css-tree/lib/lexer/prepare-tokens.js +50 -0
  356. data/lib/readability_js/node/node_modules/css-tree/lib/lexer/search.js +61 -0
  357. data/lib/readability_js/node/node_modules/css-tree/lib/lexer/structure.js +169 -0
  358. data/lib/readability_js/node/node_modules/css-tree/lib/lexer/trace.js +66 -0
  359. data/lib/readability_js/node/node_modules/css-tree/lib/lexer/units.js +27 -0
  360. data/lib/readability_js/node/node_modules/css-tree/lib/parser/SyntaxError.js +70 -0
  361. data/lib/readability_js/node/node_modules/css-tree/lib/parser/create.js +350 -0
  362. data/lib/readability_js/node/node_modules/css-tree/lib/parser/index.js +4 -0
  363. data/lib/readability_js/node/node_modules/css-tree/lib/parser/parse-selector.js +4 -0
  364. data/lib/readability_js/node/node_modules/css-tree/lib/parser/sequence.js +43 -0
  365. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/container.js +28 -0
  366. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/font-face.js +8 -0
  367. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/import.js +104 -0
  368. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/index.js +23 -0
  369. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/layer.js +12 -0
  370. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/media.js +12 -0
  371. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/nest.js +12 -0
  372. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/page.js +12 -0
  373. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/scope.js +12 -0
  374. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/starting-style.js +8 -0
  375. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/supports.js +12 -0
  376. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/config/generator.js +5 -0
  377. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/config/lexer.js +10 -0
  378. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/config/mix.js +123 -0
  379. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/config/parser-selector.js +15 -0
  380. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/config/parser.js +45 -0
  381. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/config/walker.js +5 -0
  382. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/create.js +55 -0
  383. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/function/expression.js +7 -0
  384. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/function/var.js +39 -0
  385. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/index.js +10 -0
  386. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/AnPlusB.js +292 -0
  387. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Atrule.js +100 -0
  388. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/AtrulePrelude.js +47 -0
  389. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/AttributeSelector.js +147 -0
  390. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Block.js +95 -0
  391. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Brackets.js +35 -0
  392. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/CDC.js +19 -0
  393. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/CDO.js +19 -0
  394. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/ClassSelector.js +24 -0
  395. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Combinator.js +54 -0
  396. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Comment.js +33 -0
  397. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Condition.js +123 -0
  398. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Declaration.js +165 -0
  399. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/DeclarationList.js +62 -0
  400. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Dimension.js +23 -0
  401. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Feature.js +103 -0
  402. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/FeatureFunction.js +63 -0
  403. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/FeatureRange.js +133 -0
  404. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Function.js +41 -0
  405. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/GeneralEnclosed.js +66 -0
  406. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Hash.js +23 -0
  407. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/IdSelector.js +26 -0
  408. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Identifier.js +18 -0
  409. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Layer.js +28 -0
  410. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/LayerList.js +36 -0
  411. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/MediaQuery.js +102 -0
  412. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/MediaQueryList.js +34 -0
  413. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/NestingSelector.js +22 -0
  414. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Nth.js +47 -0
  415. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Number.js +18 -0
  416. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Operator.js +21 -0
  417. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Parentheses.js +34 -0
  418. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Percentage.js +18 -0
  419. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/PseudoClassSelector.js +65 -0
  420. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/PseudoElementSelector.js +66 -0
  421. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Ratio.js +68 -0
  422. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Raw.js +41 -0
  423. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Rule.js +51 -0
  424. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Scope.js +66 -0
  425. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Selector.js +31 -0
  426. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/SelectorList.js +35 -0
  427. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/String.js +19 -0
  428. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/StyleSheet.js +82 -0
  429. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/SupportsDeclaration.js +34 -0
  430. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/TypeSelector.js +52 -0
  431. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/UnicodeRange.js +156 -0
  432. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Url.js +52 -0
  433. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Value.js +19 -0
  434. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/WhiteSpace.js +27 -0
  435. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/index-generate.js +49 -0
  436. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/index-parse-selector.js +17 -0
  437. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/index-parse.js +49 -0
  438. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/index.js +49 -0
  439. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/pseudo/index.js +56 -0
  440. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/pseudo/lang.js +33 -0
  441. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/scope/atrulePrelude.js +5 -0
  442. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/scope/default.js +85 -0
  443. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/scope/index.js +3 -0
  444. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/scope/selector.js +94 -0
  445. data/lib/readability_js/node/node_modules/css-tree/lib/syntax/scope/value.js +25 -0
  446. data/lib/readability_js/node/node_modules/css-tree/lib/tokenizer/OffsetToLocation.js +87 -0
  447. data/lib/readability_js/node/node_modules/css-tree/lib/tokenizer/TokenStream.js +316 -0
  448. data/lib/readability_js/node/node_modules/css-tree/lib/tokenizer/adopt-buffer.js +9 -0
  449. data/lib/readability_js/node/node_modules/css-tree/lib/tokenizer/char-code-definitions.js +212 -0
  450. data/lib/readability_js/node/node_modules/css-tree/lib/tokenizer/index.js +513 -0
  451. data/lib/readability_js/node/node_modules/css-tree/lib/tokenizer/names.js +28 -0
  452. data/lib/readability_js/node/node_modules/css-tree/lib/tokenizer/types.js +28 -0
  453. data/lib/readability_js/node/node_modules/css-tree/lib/tokenizer/utils.js +254 -0
  454. data/lib/readability_js/node/node_modules/css-tree/lib/utils/List.js +469 -0
  455. data/lib/readability_js/node/node_modules/css-tree/lib/utils/clone.js +21 -0
  456. data/lib/readability_js/node/node_modules/css-tree/lib/utils/create-custom-error.js +14 -0
  457. data/lib/readability_js/node/node_modules/css-tree/lib/utils/ident.js +101 -0
  458. data/lib/readability_js/node/node_modules/css-tree/lib/utils/index.js +6 -0
  459. data/lib/readability_js/node/node_modules/css-tree/lib/utils/names.js +106 -0
  460. data/lib/readability_js/node/node_modules/css-tree/lib/utils/string.js +99 -0
  461. data/lib/readability_js/node/node_modules/css-tree/lib/utils/url.js +108 -0
  462. data/lib/readability_js/node/node_modules/css-tree/lib/version.js +5 -0
  463. data/lib/readability_js/node/node_modules/css-tree/lib/walker/create.js +287 -0
  464. data/lib/readability_js/node/node_modules/css-tree/lib/walker/index.js +4 -0
  465. data/lib/readability_js/node/node_modules/css-tree/package.json +125 -0
  466. data/lib/readability_js/node/node_modules/cssstyle/LICENSE +20 -0
  467. data/lib/readability_js/node/node_modules/cssstyle/README.md +11 -0
  468. data/lib/readability_js/node/node_modules/cssstyle/lib/CSSStyleDeclaration.js +636 -0
  469. data/lib/readability_js/node/node_modules/cssstyle/lib/generated/allProperties.js +653 -0
  470. data/lib/readability_js/node/node_modules/cssstyle/lib/generated/implementedProperties.js +2222 -0
  471. data/lib/readability_js/node/node_modules/cssstyle/lib/generated/properties.js +6951 -0
  472. data/lib/readability_js/node/node_modules/cssstyle/lib/normalize.js +1417 -0
  473. data/lib/readability_js/node/node_modules/cssstyle/lib/parsers.js +535 -0
  474. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/background.js +396 -0
  475. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/backgroundAttachment.js +64 -0
  476. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/backgroundClip.js +64 -0
  477. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/backgroundColor.js +55 -0
  478. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/backgroundImage.js +78 -0
  479. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/backgroundOrigin.js +64 -0
  480. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/backgroundPosition.js +193 -0
  481. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/backgroundRepeat.js +89 -0
  482. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/backgroundSize.js +120 -0
  483. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/border.js +164 -0
  484. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderBottom.js +156 -0
  485. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderBottomColor.js +60 -0
  486. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderBottomStyle.js +59 -0
  487. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderBottomWidth.js +69 -0
  488. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderCollapse.js +50 -0
  489. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderColor.js +116 -0
  490. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderLeft.js +156 -0
  491. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderLeftColor.js +60 -0
  492. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderLeftStyle.js +59 -0
  493. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderLeftWidth.js +69 -0
  494. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderRight.js +156 -0
  495. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderRightColor.js +60 -0
  496. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderRightStyle.js +59 -0
  497. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderRightWidth.js +69 -0
  498. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderSpacing.js +62 -0
  499. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderStyle.js +116 -0
  500. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderTop.js +156 -0
  501. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderTopColor.js +60 -0
  502. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderTopStyle.js +59 -0
  503. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderTopWidth.js +69 -0
  504. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderWidth.js +129 -0
  505. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/bottom.js +58 -0
  506. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/clear.js +50 -0
  507. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/clip.js +68 -0
  508. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/color.js +51 -0
  509. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/display.js +207 -0
  510. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/flex.js +176 -0
  511. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/flexBasis.js +62 -0
  512. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/flexGrow.js +61 -0
  513. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/flexShrink.js +61 -0
  514. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/float.js +50 -0
  515. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/floodColor.js +51 -0
  516. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/font.js +289 -0
  517. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/fontFamily.js +94 -0
  518. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/fontSize.js +64 -0
  519. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/fontStyle.js +63 -0
  520. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/fontVariant.js +73 -0
  521. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/fontWeight.js +68 -0
  522. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/height.js +58 -0
  523. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/left.js +58 -0
  524. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/lightingColor.js +51 -0
  525. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/lineHeight.js +66 -0
  526. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/margin.js +95 -0
  527. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/marginBottom.js +64 -0
  528. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/marginLeft.js +64 -0
  529. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/marginRight.js +64 -0
  530. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/marginTop.js +64 -0
  531. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/opacity.js +59 -0
  532. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/outlineColor.js +51 -0
  533. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/padding.js +93 -0
  534. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/paddingBottom.js +65 -0
  535. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/paddingLeft.js +65 -0
  536. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/paddingRight.js +65 -0
  537. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/paddingTop.js +65 -0
  538. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/right.js +58 -0
  539. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/stopColor.js +51 -0
  540. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/top.js +58 -0
  541. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitBorderAfterColor.js +51 -0
  542. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitBorderBeforeColor.js +51 -0
  543. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitBorderEndColor.js +51 -0
  544. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitBorderStartColor.js +51 -0
  545. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitColumnRuleColor.js +51 -0
  546. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitTapHighlightColor.js +51 -0
  547. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitTextEmphasisColor.js +51 -0
  548. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitTextFillColor.js +51 -0
  549. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitTextStrokeColor.js +51 -0
  550. data/lib/readability_js/node/node_modules/cssstyle/lib/properties/width.js +58 -0
  551. data/lib/readability_js/node/node_modules/cssstyle/lib/utils/allExtraProperties.js +155 -0
  552. data/lib/readability_js/node/node_modules/cssstyle/lib/utils/camelize.js +37 -0
  553. data/lib/readability_js/node/node_modules/cssstyle/lib/utils/propertyDescriptors.js +19 -0
  554. data/lib/readability_js/node/node_modules/cssstyle/lib/utils/strings.js +167 -0
  555. data/lib/readability_js/node/node_modules/cssstyle/package.json +74 -0
  556. data/lib/readability_js/node/node_modules/data-urls/LICENSE.txt +7 -0
  557. data/lib/readability_js/node/node_modules/data-urls/README.md +62 -0
  558. data/lib/readability_js/node/node_modules/data-urls/lib/parser.js +69 -0
  559. data/lib/readability_js/node/node_modules/data-urls/lib/utils.js +20 -0
  560. data/lib/readability_js/node/node_modules/data-urls/package.json +52 -0
  561. data/lib/readability_js/node/node_modules/debug/LICENSE +20 -0
  562. data/lib/readability_js/node/node_modules/debug/README.md +481 -0
  563. data/lib/readability_js/node/node_modules/debug/package.json +64 -0
  564. data/lib/readability_js/node/node_modules/debug/src/browser.js +272 -0
  565. data/lib/readability_js/node/node_modules/debug/src/common.js +292 -0
  566. data/lib/readability_js/node/node_modules/debug/src/index.js +10 -0
  567. data/lib/readability_js/node/node_modules/debug/src/node.js +263 -0
  568. data/lib/readability_js/node/node_modules/decimal.js/LICENCE.md +23 -0
  569. data/lib/readability_js/node/node_modules/decimal.js/README.md +246 -0
  570. data/lib/readability_js/node/node_modules/decimal.js/decimal.d.ts +301 -0
  571. data/lib/readability_js/node/node_modules/decimal.js/decimal.js +4951 -0
  572. data/lib/readability_js/node/node_modules/decimal.js/decimal.mjs +4914 -0
  573. data/lib/readability_js/node/node_modules/decimal.js/package.json +55 -0
  574. data/lib/readability_js/node/node_modules/entities/LICENSE +11 -0
  575. data/lib/readability_js/node/node_modules/entities/decode.d.ts +1 -0
  576. data/lib/readability_js/node/node_modules/entities/decode.js +3 -0
  577. data/lib/readability_js/node/node_modules/entities/dist/commonjs/decode-codepoint.d.ts +19 -0
  578. data/lib/readability_js/node/node_modules/entities/dist/commonjs/decode-codepoint.d.ts.map +1 -0
  579. data/lib/readability_js/node/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  580. data/lib/readability_js/node/node_modules/entities/dist/commonjs/decode-codepoint.js.map +1 -0
  581. data/lib/readability_js/node/node_modules/entities/dist/commonjs/decode.d.ts +209 -0
  582. data/lib/readability_js/node/node_modules/entities/dist/commonjs/decode.d.ts.map +1 -0
  583. data/lib/readability_js/node/node_modules/entities/dist/commonjs/decode.js +511 -0
  584. data/lib/readability_js/node/node_modules/entities/dist/commonjs/decode.js.map +1 -0
  585. data/lib/readability_js/node/node_modules/entities/dist/commonjs/encode.d.ts +22 -0
  586. data/lib/readability_js/node/node_modules/entities/dist/commonjs/encode.d.ts.map +1 -0
  587. data/lib/readability_js/node/node_modules/entities/dist/commonjs/encode.js +73 -0
  588. data/lib/readability_js/node/node_modules/entities/dist/commonjs/encode.js.map +1 -0
  589. data/lib/readability_js/node/node_modules/entities/dist/commonjs/escape.d.ts +43 -0
  590. data/lib/readability_js/node/node_modules/entities/dist/commonjs/escape.d.ts.map +1 -0
  591. data/lib/readability_js/node/node_modules/entities/dist/commonjs/escape.js +121 -0
  592. data/lib/readability_js/node/node_modules/entities/dist/commonjs/escape.js.map +1 -0
  593. data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/decode-data-html.d.ts +2 -0
  594. data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/decode-data-html.d.ts.map +1 -0
  595. data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/decode-data-html.js +10 -0
  596. data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/decode-data-html.js.map +1 -0
  597. data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/decode-data-xml.d.ts +2 -0
  598. data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/decode-data-xml.d.ts.map +1 -0
  599. data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +10 -0
  600. data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/decode-data-xml.js.map +1 -0
  601. data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/encode-html.d.ts +8 -0
  602. data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/encode-html.d.ts.map +1 -0
  603. data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/encode-html.js +13 -0
  604. data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/encode-html.js.map +1 -0
  605. data/lib/readability_js/node/node_modules/entities/dist/commonjs/index.d.ts +96 -0
  606. data/lib/readability_js/node/node_modules/entities/dist/commonjs/index.d.ts.map +1 -0
  607. data/lib/readability_js/node/node_modules/entities/dist/commonjs/index.js +131 -0
  608. data/lib/readability_js/node/node_modules/entities/dist/commonjs/index.js.map +1 -0
  609. data/lib/readability_js/node/node_modules/entities/dist/commonjs/package.json +3 -0
  610. data/lib/readability_js/node/node_modules/entities/dist/esm/decode-codepoint.d.ts +19 -0
  611. data/lib/readability_js/node/node_modules/entities/dist/esm/decode-codepoint.d.ts.map +1 -0
  612. data/lib/readability_js/node/node_modules/entities/dist/esm/decode-codepoint.js +72 -0
  613. data/lib/readability_js/node/node_modules/entities/dist/esm/decode-codepoint.js.map +1 -0
  614. data/lib/readability_js/node/node_modules/entities/dist/esm/decode.d.ts +209 -0
  615. data/lib/readability_js/node/node_modules/entities/dist/esm/decode.d.ts.map +1 -0
  616. data/lib/readability_js/node/node_modules/entities/dist/esm/decode.js +497 -0
  617. data/lib/readability_js/node/node_modules/entities/dist/esm/decode.js.map +1 -0
  618. data/lib/readability_js/node/node_modules/entities/dist/esm/encode.d.ts +22 -0
  619. data/lib/readability_js/node/node_modules/entities/dist/esm/encode.d.ts.map +1 -0
  620. data/lib/readability_js/node/node_modules/entities/dist/esm/encode.js +69 -0
  621. data/lib/readability_js/node/node_modules/entities/dist/esm/encode.js.map +1 -0
  622. data/lib/readability_js/node/node_modules/entities/dist/esm/escape.d.ts +43 -0
  623. data/lib/readability_js/node/node_modules/entities/dist/esm/escape.d.ts.map +1 -0
  624. data/lib/readability_js/node/node_modules/entities/dist/esm/escape.js +117 -0
  625. data/lib/readability_js/node/node_modules/entities/dist/esm/escape.js.map +1 -0
  626. data/lib/readability_js/node/node_modules/entities/dist/esm/generated/decode-data-html.d.ts +2 -0
  627. data/lib/readability_js/node/node_modules/entities/dist/esm/generated/decode-data-html.d.ts.map +1 -0
  628. data/lib/readability_js/node/node_modules/entities/dist/esm/generated/decode-data-html.js +7 -0
  629. data/lib/readability_js/node/node_modules/entities/dist/esm/generated/decode-data-html.js.map +1 -0
  630. data/lib/readability_js/node/node_modules/entities/dist/esm/generated/decode-data-xml.d.ts +2 -0
  631. data/lib/readability_js/node/node_modules/entities/dist/esm/generated/decode-data-xml.d.ts.map +1 -0
  632. data/lib/readability_js/node/node_modules/entities/dist/esm/generated/decode-data-xml.js +7 -0
  633. data/lib/readability_js/node/node_modules/entities/dist/esm/generated/decode-data-xml.js.map +1 -0
  634. data/lib/readability_js/node/node_modules/entities/dist/esm/generated/encode-html.d.ts +8 -0
  635. data/lib/readability_js/node/node_modules/entities/dist/esm/generated/encode-html.d.ts.map +1 -0
  636. data/lib/readability_js/node/node_modules/entities/dist/esm/generated/encode-html.js +10 -0
  637. data/lib/readability_js/node/node_modules/entities/dist/esm/generated/encode-html.js.map +1 -0
  638. data/lib/readability_js/node/node_modules/entities/dist/esm/index.d.ts +96 -0
  639. data/lib/readability_js/node/node_modules/entities/dist/esm/index.d.ts.map +1 -0
  640. data/lib/readability_js/node/node_modules/entities/dist/esm/index.js +107 -0
  641. data/lib/readability_js/node/node_modules/entities/dist/esm/index.js.map +1 -0
  642. data/lib/readability_js/node/node_modules/entities/dist/esm/package.json +3 -0
  643. data/lib/readability_js/node/node_modules/entities/escape.d.ts +1 -0
  644. data/lib/readability_js/node/node_modules/entities/escape.js +3 -0
  645. data/lib/readability_js/node/node_modules/entities/package.json +118 -0
  646. data/lib/readability_js/node/node_modules/entities/readme.md +122 -0
  647. data/lib/readability_js/node/node_modules/entities/src/decode-codepoint.ts +81 -0
  648. data/lib/readability_js/node/node_modules/entities/src/decode.spec.ts +320 -0
  649. data/lib/readability_js/node/node_modules/entities/src/decode.ts +620 -0
  650. data/lib/readability_js/node/node_modules/entities/src/encode.spec.ts +78 -0
  651. data/lib/readability_js/node/node_modules/entities/src/encode.ts +77 -0
  652. data/lib/readability_js/node/node_modules/entities/src/escape.spec.ts +14 -0
  653. data/lib/readability_js/node/node_modules/entities/src/escape.ts +148 -0
  654. data/lib/readability_js/node/node_modules/entities/src/generated/.eslintrc.json +10 -0
  655. data/lib/readability_js/node/node_modules/entities/src/generated/decode-data-html.ts +8 -0
  656. data/lib/readability_js/node/node_modules/entities/src/generated/decode-data-xml.ts +8 -0
  657. data/lib/readability_js/node/node_modules/entities/src/generated/encode-html.ts +17 -0
  658. data/lib/readability_js/node/node_modules/entities/src/index.spec.ts +125 -0
  659. data/lib/readability_js/node/node_modules/entities/src/index.ts +188 -0
  660. data/lib/readability_js/node/node_modules/html-encoding-sniffer/LICENSE.txt +7 -0
  661. data/lib/readability_js/node/node_modules/html-encoding-sniffer/README.md +40 -0
  662. data/lib/readability_js/node/node_modules/html-encoding-sniffer/lib/html-encoding-sniffer.js +295 -0
  663. data/lib/readability_js/node/node_modules/html-encoding-sniffer/package.json +30 -0
  664. data/lib/readability_js/node/node_modules/http-proxy-agent/LICENSE +22 -0
  665. data/lib/readability_js/node/node_modules/http-proxy-agent/README.md +44 -0
  666. data/lib/readability_js/node/node_modules/http-proxy-agent/dist/index.d.ts +44 -0
  667. data/lib/readability_js/node/node_modules/http-proxy-agent/dist/index.d.ts.map +1 -0
  668. data/lib/readability_js/node/node_modules/http-proxy-agent/dist/index.js +148 -0
  669. data/lib/readability_js/node/node_modules/http-proxy-agent/dist/index.js.map +1 -0
  670. data/lib/readability_js/node/node_modules/http-proxy-agent/package.json +47 -0
  671. data/lib/readability_js/node/node_modules/https-proxy-agent/LICENSE +22 -0
  672. data/lib/readability_js/node/node_modules/https-proxy-agent/README.md +70 -0
  673. data/lib/readability_js/node/node_modules/https-proxy-agent/dist/index.d.ts +47 -0
  674. data/lib/readability_js/node/node_modules/https-proxy-agent/dist/index.d.ts.map +1 -0
  675. data/lib/readability_js/node/node_modules/https-proxy-agent/dist/index.js +180 -0
  676. data/lib/readability_js/node/node_modules/https-proxy-agent/dist/index.js.map +1 -0
  677. data/lib/readability_js/node/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +15 -0
  678. data/lib/readability_js/node/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts.map +1 -0
  679. data/lib/readability_js/node/node_modules/https-proxy-agent/dist/parse-proxy-response.js +101 -0
  680. data/lib/readability_js/node/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +1 -0
  681. data/lib/readability_js/node/node_modules/https-proxy-agent/package.json +50 -0
  682. data/lib/readability_js/node/node_modules/iconv-lite/.github/dependabot.yml +11 -0
  683. data/lib/readability_js/node/node_modules/iconv-lite/.idea/codeStyles/Project.xml +47 -0
  684. data/lib/readability_js/node/node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml +5 -0
  685. data/lib/readability_js/node/node_modules/iconv-lite/.idea/iconv-lite.iml +12 -0
  686. data/lib/readability_js/node/node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml +6 -0
  687. data/lib/readability_js/node/node_modules/iconv-lite/.idea/modules.xml +8 -0
  688. data/lib/readability_js/node/node_modules/iconv-lite/.idea/vcs.xml +6 -0
  689. data/lib/readability_js/node/node_modules/iconv-lite/Changelog.md +212 -0
  690. data/lib/readability_js/node/node_modules/iconv-lite/LICENSE +21 -0
  691. data/lib/readability_js/node/node_modules/iconv-lite/README.md +130 -0
  692. data/lib/readability_js/node/node_modules/iconv-lite/encodings/dbcs-codec.js +597 -0
  693. data/lib/readability_js/node/node_modules/iconv-lite/encodings/dbcs-data.js +188 -0
  694. data/lib/readability_js/node/node_modules/iconv-lite/encodings/index.js +23 -0
  695. data/lib/readability_js/node/node_modules/iconv-lite/encodings/internal.js +198 -0
  696. data/lib/readability_js/node/node_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
  697. data/lib/readability_js/node/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
  698. data/lib/readability_js/node/node_modules/iconv-lite/encodings/sbcs-data.js +179 -0
  699. data/lib/readability_js/node/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
  700. data/lib/readability_js/node/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
  701. data/lib/readability_js/node/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
  702. data/lib/readability_js/node/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
  703. data/lib/readability_js/node/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
  704. data/lib/readability_js/node/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
  705. data/lib/readability_js/node/node_modules/iconv-lite/encodings/tables/gbk-added.json +56 -0
  706. data/lib/readability_js/node/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
  707. data/lib/readability_js/node/node_modules/iconv-lite/encodings/utf16.js +197 -0
  708. data/lib/readability_js/node/node_modules/iconv-lite/encodings/utf32.js +319 -0
  709. data/lib/readability_js/node/node_modules/iconv-lite/encodings/utf7.js +290 -0
  710. data/lib/readability_js/node/node_modules/iconv-lite/lib/bom-handling.js +52 -0
  711. data/lib/readability_js/node/node_modules/iconv-lite/lib/index.d.ts +41 -0
  712. data/lib/readability_js/node/node_modules/iconv-lite/lib/index.js +180 -0
  713. data/lib/readability_js/node/node_modules/iconv-lite/lib/streams.js +109 -0
  714. data/lib/readability_js/node/node_modules/iconv-lite/package.json +44 -0
  715. data/lib/readability_js/node/node_modules/is-potential-custom-element-name/LICENSE-MIT.txt +20 -0
  716. data/lib/readability_js/node/node_modules/is-potential-custom-element-name/README.md +40 -0
  717. data/lib/readability_js/node/node_modules/is-potential-custom-element-name/index.js +9 -0
  718. data/lib/readability_js/node/node_modules/is-potential-custom-element-name/package.json +35 -0
  719. data/lib/readability_js/node/node_modules/jsdom/LICENSE.txt +22 -0
  720. data/lib/readability_js/node/node_modules/jsdom/README.md +551 -0
  721. data/lib/readability_js/node/node_modules/jsdom/lib/api.js +335 -0
  722. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/Window.js +1022 -0
  723. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/default-stylesheet.css +415 -0
  724. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/js-globals.json +312 -0
  725. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/not-implemented.js +20 -0
  726. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/parser/html.js +208 -0
  727. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/parser/index.js +37 -0
  728. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/parser/xml.js +202 -0
  729. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/resources/async-resource-queue.js +114 -0
  730. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/resources/no-op-resource-loader.js +8 -0
  731. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/resources/per-document-resource-loader.js +98 -0
  732. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/resources/request-manager.js +33 -0
  733. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/resources/resource-loader.js +142 -0
  734. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/resources/resource-queue.js +142 -0
  735. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/level2/style.js +57 -0
  736. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/level3/xpath.js +1875 -0
  737. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/aborting/AbortController-impl.js +17 -0
  738. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/aborting/AbortSignal-impl.js +131 -0
  739. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/attributes/Attr-impl.js +60 -0
  740. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/attributes/NamedNodeMap-impl.js +78 -0
  741. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/attributes.js +312 -0
  742. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/constraint-validation/DefaultConstraintValidation-impl.js +75 -0
  743. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/constraint-validation/ValidityState-impl.js +66 -0
  744. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/crypto/Crypto-impl.js +68 -0
  745. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/cssom/StyleSheetList-impl.js +38 -0
  746. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/custom-elements/CustomElementRegistry-impl.js +279 -0
  747. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/custom-elements/ElementInternals-impl.js +56 -0
  748. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/deviceorientation/DeviceMotionEventAcceleration-impl.js +7 -0
  749. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/deviceorientation/DeviceMotionEventRotationRate-impl.js +7 -0
  750. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/documents.js +15 -0
  751. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/domparsing/DOMParser-impl.js +59 -0
  752. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/domparsing/InnerHTML-impl.js +30 -0
  753. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/domparsing/XMLSerializer-impl.js +18 -0
  754. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/domparsing/parse5-adapter-serialization.js +63 -0
  755. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js +36 -0
  756. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/BeforeUnloadEvent-impl.js +12 -0
  757. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/BlobEvent-impl.js +14 -0
  758. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/CloseEvent-impl.js +10 -0
  759. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/CompositionEvent-impl.js +20 -0
  760. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/CustomEvent-impl.js +21 -0
  761. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/DeviceMotionEvent-impl.js +49 -0
  762. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/DeviceOrientationEvent-impl.js +10 -0
  763. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/ErrorEvent-impl.js +14 -0
  764. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/Event-impl.js +195 -0
  765. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/EventModifierMixin-impl.js +24 -0
  766. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js +438 -0
  767. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/FocusEvent-impl.js +9 -0
  768. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/HashChangeEvent-impl.js +14 -0
  769. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/InputEvent-impl.js +11 -0
  770. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/KeyboardEvent-impl.js +29 -0
  771. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/MessageEvent-impl.js +25 -0
  772. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/MouseEvent-impl.js +72 -0
  773. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/PageTransitionEvent-impl.js +20 -0
  774. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/PointerEvent-impl.js +21 -0
  775. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/PopStateEvent-impl.js +9 -0
  776. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/ProgressEvent-impl.js +14 -0
  777. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/PromiseRejectionEvent-impl.js +14 -0
  778. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/StorageEvent-impl.js +26 -0
  779. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/SubmitEvent-impl.js +13 -0
  780. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/TouchEvent-impl.js +14 -0
  781. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/TransitionEvent-impl.js +10 -0
  782. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/UIEvent-impl.js +43 -0
  783. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/WheelEvent-impl.js +12 -0
  784. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/fetch/Headers-impl.js +172 -0
  785. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/fetch/header-list.js +65 -0
  786. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/fetch/header-types.js +103 -0
  787. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/file-api/Blob-impl.js +93 -0
  788. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/file-api/File-impl.js +12 -0
  789. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/file-api/FileList-impl.js +15 -0
  790. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/file-api/FileReader-impl.js +130 -0
  791. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/AbortController.js +143 -0
  792. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/AbortSignal.js +249 -0
  793. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/AbstractRange.js +171 -0
  794. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/AddEventListenerOptions.js +53 -0
  795. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/AssignedNodesOptions.js +28 -0
  796. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Attr.js +217 -0
  797. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/BarProp.js +117 -0
  798. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/BeforeUnloadEvent.js +139 -0
  799. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/BinaryType.js +12 -0
  800. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Blob.js +211 -0
  801. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/BlobCallback.js +30 -0
  802. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/BlobEvent.js +157 -0
  803. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/BlobEventInit.js +43 -0
  804. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/BlobPropertyBag.js +42 -0
  805. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CDATASection.js +109 -0
  806. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CanPlayTypeResult.js +12 -0
  807. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CharacterData.js +453 -0
  808. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CloseEvent.js +168 -0
  809. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CloseEventInit.js +65 -0
  810. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Comment.js +120 -0
  811. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CompositionEvent.js +219 -0
  812. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CompositionEventInit.js +32 -0
  813. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Crypto.js +148 -0
  814. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CustomElementConstructor.js +34 -0
  815. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CustomElementRegistry.js +267 -0
  816. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CustomEvent.js +206 -0
  817. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CustomEventInit.js +32 -0
  818. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DOMException.js +222 -0
  819. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DOMImplementation.js +237 -0
  820. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DOMParser.js +140 -0
  821. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DOMRect.js +276 -0
  822. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DOMRectInit.js +76 -0
  823. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DOMRectReadOnly.js +285 -0
  824. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DOMStringMap.js +297 -0
  825. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DOMTokenList.js +537 -0
  826. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DeviceMotionEvent.js +183 -0
  827. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DeviceMotionEventAcceleration.js +145 -0
  828. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DeviceMotionEventAccelerationInit.js +61 -0
  829. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DeviceMotionEventInit.js +70 -0
  830. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DeviceMotionEventRotationRate.js +145 -0
  831. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DeviceMotionEventRotationRateInit.js +61 -0
  832. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DeviceOrientationEvent.js +183 -0
  833. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DeviceOrientationEventInit.js +80 -0
  834. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Document.js +4509 -0
  835. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DocumentFragment.js +334 -0
  836. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DocumentReadyState.js +12 -0
  837. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DocumentType.js +252 -0
  838. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Element.js +3718 -0
  839. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ElementCreationOptions.js +26 -0
  840. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ElementDefinitionOptions.js +29 -0
  841. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ElementInternals.js +2150 -0
  842. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/EndingType.js +12 -0
  843. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ErrorEvent.js +192 -0
  844. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ErrorEventInit.js +92 -0
  845. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Event.js +430 -0
  846. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/EventHandlerNonNull.js +36 -0
  847. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/EventInit.js +58 -0
  848. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/EventListener.js +35 -0
  849. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/EventListenerOptions.js +28 -0
  850. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/EventModifierInit.js +221 -0
  851. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js +259 -0
  852. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/External.js +130 -0
  853. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/File.js +185 -0
  854. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/FileList.js +298 -0
  855. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/FilePropertyBag.js +33 -0
  856. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/FileReader.js +468 -0
  857. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/FocusEvent.js +144 -0
  858. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/FocusEventInit.js +36 -0
  859. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/FormData.js +468 -0
  860. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Function.js +42 -0
  861. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/GetRootNodeOptions.js +31 -0
  862. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLAnchorElement.js +1023 -0
  863. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLAreaElement.js +822 -0
  864. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLAudioElement.js +110 -0
  865. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLBRElement.js +153 -0
  866. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLBaseElement.js +193 -0
  867. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLBodyElement.js +877 -0
  868. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLButtonElement.js +522 -0
  869. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLCanvasElement.js +304 -0
  870. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLCollection.js +352 -0
  871. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLDListElement.js +156 -0
  872. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLDataElement.js +153 -0
  873. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLDataListElement.js +125 -0
  874. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLDetailsElement.js +156 -0
  875. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLDialogElement.js +156 -0
  876. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLDirectoryElement.js +156 -0
  877. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLDivElement.js +153 -0
  878. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js +3489 -0
  879. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLEmbedElement.js +378 -0
  880. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLFieldSetElement.js +329 -0
  881. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLFontElement.js +236 -0
  882. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLFormControlsCollection.js +318 -0
  883. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLFormElement.js +658 -0
  884. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLFrameElement.js +510 -0
  885. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLFrameSetElement.js +708 -0
  886. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLHRElement.js +320 -0
  887. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLHeadElement.js +110 -0
  888. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLHeadingElement.js +153 -0
  889. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLHtmlElement.js +153 -0
  890. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLIFrameElement.js +686 -0
  891. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLImageElement.js +902 -0
  892. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLInputElement.js +1927 -0
  893. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLLIElement.js +201 -0
  894. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLLabelElement.js +179 -0
  895. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLLegendElement.js +166 -0
  896. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLLinkElement.js +552 -0
  897. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLMapElement.js +168 -0
  898. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLMarqueeElement.js +554 -0
  899. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLMediaElement.js +898 -0
  900. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLMenuElement.js +156 -0
  901. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLMetaElement.js +276 -0
  902. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLMeterElement.js +365 -0
  903. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLModElement.js +214 -0
  904. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLOListElement.js +281 -0
  905. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLObjectElement.js +941 -0
  906. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptGroupElement.js +197 -0
  907. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptionElement.js +376 -0
  908. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptionsCollection.js +511 -0
  909. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLOutputElement.js +392 -0
  910. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLParagraphElement.js +153 -0
  911. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLParamElement.js +276 -0
  912. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLPictureElement.js +110 -0
  913. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLPreElement.js +160 -0
  914. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLProgressElement.js +228 -0
  915. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLQuoteElement.js +173 -0
  916. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLScriptElement.js +469 -0
  917. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLSelectElement.js +989 -0
  918. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLSlotElement.js +192 -0
  919. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLSourceElement.js +337 -0
  920. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLSpanElement.js +110 -0
  921. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLStyleElement.js +207 -0
  922. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableCaptionElement.js +153 -0
  923. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableCellElement.js +729 -0
  924. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableColElement.js +372 -0
  925. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableElement.js +799 -0
  926. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableRowElement.js +414 -0
  927. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableSectionElement.js +346 -0
  928. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTemplateElement.js +123 -0
  929. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTextAreaElement.js +1206 -0
  930. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTimeElement.js +153 -0
  931. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTitleElement.js +152 -0
  932. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTrackElement.js +363 -0
  933. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLUListElement.js +197 -0
  934. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLUnknownElement.js +109 -0
  935. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLVideoElement.js +340 -0
  936. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HashChangeEvent.js +157 -0
  937. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HashChangeEventInit.js +50 -0
  938. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Headers.js +418 -0
  939. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/History.js +266 -0
  940. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/InputEvent.js +168 -0
  941. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/InputEventInit.js +68 -0
  942. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/KeyboardEvent.js +445 -0
  943. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/KeyboardEventInit.js +116 -0
  944. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Location.js +404 -0
  945. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MessageEvent.js +317 -0
  946. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MessageEventInit.js +100 -0
  947. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MimeType.js +156 -0
  948. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MimeTypeArray.js +326 -0
  949. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MouseEvent.js +595 -0
  950. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MouseEventInit.js +189 -0
  951. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MutationCallback.js +34 -0
  952. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MutationObserver.js +178 -0
  953. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MutationObserverInit.js +121 -0
  954. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MutationRecord.js +229 -0
  955. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/NamedNodeMap.js +527 -0
  956. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Navigator.js +326 -0
  957. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Node.js +763 -0
  958. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/NodeFilter.js +75 -0
  959. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/NodeIterator.js +207 -0
  960. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/NodeList.js +302 -0
  961. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/OnBeforeUnloadEventHandlerNonNull.js +42 -0
  962. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/OnErrorEventHandlerNonNull.js +56 -0
  963. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PageTransitionEvent.js +144 -0
  964. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PageTransitionEventInit.js +35 -0
  965. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Performance.js +142 -0
  966. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Plugin.js +359 -0
  967. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PluginArray.js +336 -0
  968. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PointerEvent.js +324 -0
  969. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PointerEventInit.js +241 -0
  970. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PopStateEvent.js +144 -0
  971. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PopStateEventInit.js +32 -0
  972. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ProcessingInstruction.js +122 -0
  973. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ProgressEvent.js +170 -0
  974. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ProgressEventInit.js +65 -0
  975. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PromiseRejectionEvent.js +157 -0
  976. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PromiseRejectionEventInit.js +42 -0
  977. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/RadioNodeList.js +296 -0
  978. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Range.js +641 -0
  979. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGAnimatedPreserveAspectRatio.js +136 -0
  980. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGAnimatedRect.js +136 -0
  981. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGAnimatedString.js +149 -0
  982. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGBoundingBoxOptions.js +64 -0
  983. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGDefsElement.js +109 -0
  984. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGDescElement.js +109 -0
  985. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGElement.js +3155 -0
  986. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGGElement.js +109 -0
  987. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGGraphicsElement.js +139 -0
  988. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGMetadataElement.js +109 -0
  989. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGNumber.js +132 -0
  990. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGPreserveAspectRatio.js +196 -0
  991. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGRect.js +210 -0
  992. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGSVGElement.js +786 -0
  993. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGStringList.js +511 -0
  994. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGSwitchElement.js +109 -0
  995. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGSymbolElement.js +146 -0
  996. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGTitleElement.js +109 -0
  997. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Screen.js +180 -0
  998. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ScrollBehavior.js +12 -0
  999. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ScrollIntoViewOptions.js +45 -0
  1000. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ScrollLogicalPosition.js +14 -0
  1001. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ScrollOptions.js +30 -0
  1002. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ScrollRestoration.js +12 -0
  1003. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Selection.js +569 -0
  1004. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SelectionMode.js +12 -0
  1005. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ShadowRoot.js +187 -0
  1006. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ShadowRootInit.js +30 -0
  1007. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ShadowRootMode.js +12 -0
  1008. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/StaticRange.js +123 -0
  1009. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/StaticRangeInit.js +72 -0
  1010. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Storage.js +397 -0
  1011. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/StorageEvent.js +318 -0
  1012. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/StorageEventInit.js +99 -0
  1013. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/StyleSheetList.js +300 -0
  1014. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SubmitEvent.js +144 -0
  1015. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SubmitEventInit.js +36 -0
  1016. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SupportedType.js +18 -0
  1017. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Text.js +170 -0
  1018. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/TextTrackKind.js +12 -0
  1019. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/TouchEvent.js +222 -0
  1020. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/TouchEventInit.js +89 -0
  1021. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/TransitionEvent.js +170 -0
  1022. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/TransitionEventInit.js +65 -0
  1023. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/TreeWalker.js +255 -0
  1024. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/UIEvent.js +235 -0
  1025. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/UIEventInit.js +62 -0
  1026. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ValidityState.js +249 -0
  1027. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/VisibilityState.js +12 -0
  1028. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/VoidFunction.js +26 -0
  1029. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/WebSocket.js +480 -0
  1030. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/WheelEvent.js +191 -0
  1031. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/WheelEventInit.js +71 -0
  1032. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/XMLDocument.js +109 -0
  1033. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequest.js +663 -0
  1034. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestEventTarget.js +334 -0
  1035. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestResponseType.js +14 -0
  1036. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestUpload.js +109 -0
  1037. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/XMLSerializer.js +132 -0
  1038. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/utils.js +252 -0
  1039. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/geometry/DOMRect-impl.js +39 -0
  1040. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/geometry/DOMRectReadOnly-impl.js +72 -0
  1041. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/agent-factory.js +13 -0
  1042. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/binary-data.js +9 -0
  1043. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/colors.js +245 -0
  1044. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/create-element.js +329 -0
  1045. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/create-event-accessor.js +188 -0
  1046. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/custom-elements.js +272 -0
  1047. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/dates-and-times.js +270 -0
  1048. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/details.js +15 -0
  1049. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/events.js +24 -0
  1050. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/focusing.js +104 -0
  1051. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/form-controls.js +309 -0
  1052. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/html-constructor.js +78 -0
  1053. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/http-request.js +266 -0
  1054. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/internal-constants.js +12 -0
  1055. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/is-window.js +18 -0
  1056. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/iterable-weak-set.js +48 -0
  1057. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/json.js +12 -0
  1058. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/mutation-observers.js +198 -0
  1059. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/namespaces.js +16 -0
  1060. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/node.js +68 -0
  1061. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/number-and-date-inputs.js +195 -0
  1062. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/ordered-set.js +104 -0
  1063. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/page-transition-event.js +9 -0
  1064. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js +75 -0
  1065. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/shadow-dom.js +285 -0
  1066. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/strings.js +162 -0
  1067. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/style-rules.js +319 -0
  1068. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/stylesheets.js +129 -0
  1069. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/svg/basic-types.js +41 -0
  1070. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/svg/render.js +46 -0
  1071. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/system-colors.js +147 -0
  1072. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/text.js +19 -0
  1073. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/traversal.js +72 -0
  1074. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/validate-names.js +65 -0
  1075. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/hr-time/Performance-impl.js +22 -0
  1076. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/interfaces.js +249 -0
  1077. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/mutation-observer/MutationObserver-impl.js +95 -0
  1078. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/mutation-observer/MutationRecord-impl.js +37 -0
  1079. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/MimeType-impl.js +3 -0
  1080. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/MimeTypeArray-impl.js +21 -0
  1081. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/Navigator-impl.js +29 -0
  1082. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorConcurrentHardware-impl.js +8 -0
  1083. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorCookies-impl.js +7 -0
  1084. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorID-impl.js +37 -0
  1085. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorLanguage-impl.js +9 -0
  1086. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorOnLine-impl.js +7 -0
  1087. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorPlugins-impl.js +8 -0
  1088. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/Plugin-impl.js +3 -0
  1089. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/PluginArray-impl.js +23 -0
  1090. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/node-document-position.js +10 -0
  1091. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/node-type.js +16 -0
  1092. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/node.js +331 -0
  1093. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/CDATASection-impl.js +16 -0
  1094. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/CharacterData-impl.js +118 -0
  1095. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/ChildNode-impl.js +80 -0
  1096. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/Comment-impl.js +20 -0
  1097. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/DOMImplementation-impl.js +120 -0
  1098. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/DOMStringMap-impl.js +64 -0
  1099. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/DOMTokenList-impl.js +171 -0
  1100. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/Document-impl.js +1014 -0
  1101. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/DocumentFragment-impl.js +44 -0
  1102. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/DocumentOrShadowRoot-impl.js +28 -0
  1103. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/DocumentType-impl.js +24 -0
  1104. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/Element-impl.js +608 -0
  1105. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/ElementCSSInlineStyle-impl.js +22 -0
  1106. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/ElementContentEditable-impl.js +7 -0
  1107. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/GlobalEventHandlers-impl.js +157 -0
  1108. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAnchorElement-impl.js +50 -0
  1109. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAreaElement-impl.js +43 -0
  1110. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAudioElement-impl.js +9 -0
  1111. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBRElement-impl.js +9 -0
  1112. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBaseElement-impl.js +44 -0
  1113. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBodyElement-impl.js +17 -0
  1114. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLButtonElement-impl.js +79 -0
  1115. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLCanvasElement-impl.js +136 -0
  1116. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLCollection-impl.js +96 -0
  1117. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDListElement-impl.js +9 -0
  1118. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDataElement-impl.js +9 -0
  1119. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDataListElement-impl.js +20 -0
  1120. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDetailsElement-impl.js +35 -0
  1121. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDialogElement-impl.js +9 -0
  1122. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDirectoryElement-impl.js +9 -0
  1123. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDivElement-impl.js +9 -0
  1124. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js +211 -0
  1125. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLEmbedElement-impl.js +8 -0
  1126. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFieldSetElement-impl.js +43 -0
  1127. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFontElement-impl.js +9 -0
  1128. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFormControlsCollection-impl.js +33 -0
  1129. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFormElement-impl.js +248 -0
  1130. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFrameElement-impl.js +266 -0
  1131. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFrameSetElement-impl.js +17 -0
  1132. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHRElement-impl.js +9 -0
  1133. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHeadElement-impl.js +9 -0
  1134. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHeadingElement-impl.js +9 -0
  1135. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHtmlElement-impl.js +9 -0
  1136. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHyperlinkElementUtils-impl.js +366 -0
  1137. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLIFrameElement-impl.js +9 -0
  1138. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLImageElement-impl.js +131 -0
  1139. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLInputElement-impl.js +1097 -0
  1140. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLIElement-impl.js +9 -0
  1141. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLabelElement-impl.js +94 -0
  1142. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLegendElement-impl.js +18 -0
  1143. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLinkElement-impl.js +107 -0
  1144. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMapElement-impl.js +13 -0
  1145. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMarqueeElement-impl.js +9 -0
  1146. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMediaElement-impl.js +138 -0
  1147. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMenuElement-impl.js +9 -0
  1148. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMetaElement-impl.js +9 -0
  1149. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMeterElement-impl.js +180 -0
  1150. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLModElement-impl.js +9 -0
  1151. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOListElement-impl.js +22 -0
  1152. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLObjectElement-impl.js +26 -0
  1153. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptGroupElement-impl.js +9 -0
  1154. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptionElement-impl.js +146 -0
  1155. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptionsCollection-impl.js +110 -0
  1156. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js +88 -0
  1157. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOutputElement-impl.js +88 -0
  1158. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLParagraphElement-impl.js +9 -0
  1159. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLParamElement-impl.js +9 -0
  1160. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLPictureElement-impl.js +9 -0
  1161. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLPreElement-impl.js +9 -0
  1162. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js +72 -0
  1163. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLQuoteElement-impl.js +9 -0
  1164. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLScriptElement-impl.js +261 -0
  1165. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSelectElement-impl.js +283 -0
  1166. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js +59 -0
  1167. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSourceElement-impl.js +8 -0
  1168. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSpanElement-impl.js +9 -0
  1169. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLStyleElement-impl.js +73 -0
  1170. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableCaptionElement-impl.js +9 -0
  1171. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableCellElement-impl.js +73 -0
  1172. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableColElement-impl.js +9 -0
  1173. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableElement-impl.js +236 -0
  1174. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableRowElement-impl.js +88 -0
  1175. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableSectionElement-impl.js +61 -0
  1176. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTemplateElement-impl.js +67 -0
  1177. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTextAreaElement-impl.js +244 -0
  1178. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTimeElement-impl.js +9 -0
  1179. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTitleElement-impl.js +18 -0
  1180. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTrackElement-impl.js +13 -0
  1181. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLUListElement-impl.js +9 -0
  1182. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLUnknownElement-impl.js +9 -0
  1183. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLVideoElement-impl.js +17 -0
  1184. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/LinkStyle-impl.js +2 -0
  1185. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js +1160 -0
  1186. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/NodeList-impl.js +43 -0
  1187. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/NonDocumentTypeChildNode-impl.js +28 -0
  1188. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/NonElementParentNode-impl.js +11 -0
  1189. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/ParentNode-impl.js +90 -0
  1190. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/ProcessingInstruction-impl.js +22 -0
  1191. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/RadioNodeList-impl.js +49 -0
  1192. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGDefsElement-impl.js +9 -0
  1193. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGDescElement-impl.js +9 -0
  1194. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGElement-impl.js +64 -0
  1195. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGGElement-impl.js +9 -0
  1196. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGGraphicsElement-impl.js +16 -0
  1197. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGMetadataElement-impl.js +9 -0
  1198. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGSVGElement-impl.js +47 -0
  1199. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGSwitchElement-impl.js +9 -0
  1200. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGSymbolElement-impl.js +9 -0
  1201. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGTests-impl.js +42 -0
  1202. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGTitleElement-impl.js +9 -0
  1203. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/ShadowRoot-impl.js +41 -0
  1204. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/Slotable-impl.js +48 -0
  1205. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/Text-impl.js +96 -0
  1206. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/WindowEventHandlers-impl.js +52 -0
  1207. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/XMLDocument-impl.js +4 -0
  1208. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/range/AbstractRange-impl.js +43 -0
  1209. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/range/Range-impl.js +897 -0
  1210. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/range/StaticRange-impl.js +39 -0
  1211. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/range/boundary-point.js +47 -0
  1212. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/selection/Selection-impl.js +358 -0
  1213. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/svg/SVGAnimatedPreserveAspectRatio-impl.js +24 -0
  1214. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/svg/SVGAnimatedRect-impl.js +122 -0
  1215. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/svg/SVGAnimatedString-impl.js +42 -0
  1216. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/svg/SVGListBase.js +195 -0
  1217. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/svg/SVGNumber-impl.js +48 -0
  1218. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/svg/SVGPreserveAspectRatio-impl.js +100 -0
  1219. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/svg/SVGRect-impl.js +143 -0
  1220. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/svg/SVGStringList-impl.js +16 -0
  1221. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/traversal/NodeIterator-impl.js +107 -0
  1222. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/traversal/TreeWalker-impl.js +217 -0
  1223. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/traversal/helpers.js +44 -0
  1224. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/webidl/DOMException-impl.js +46 -0
  1225. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/websockets/WebSocket-impl.js +328 -0
  1226. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/webstorage/Storage-impl.js +102 -0
  1227. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/window/BarProp-impl.js +10 -0
  1228. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/window/External-impl.js +9 -0
  1229. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/window/History-impl.js +148 -0
  1230. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/window/Location-impl.js +227 -0
  1231. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/window/Screen-impl.js +13 -0
  1232. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/window/SessionHistory.js +163 -0
  1233. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/window/navigation.js +85 -0
  1234. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/window-properties.js +241 -0
  1235. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/xhr/FormData-impl.js +191 -0
  1236. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequest-impl.js +1005 -0
  1237. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequestEventTarget-impl.js +17 -0
  1238. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequestUpload-impl.js +4 -0
  1239. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/xhr/multipart-form-data.js +105 -0
  1240. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js +59 -0
  1241. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/xhr/xhr-utils.js +410 -0
  1242. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/utils.js +105 -0
  1243. data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/virtual-console.js +46 -0
  1244. data/lib/readability_js/node/node_modules/jsdom/package.json +93 -0
  1245. data/lib/readability_js/node/node_modules/lru-cache/LICENSE +15 -0
  1246. data/lib/readability_js/node/node_modules/lru-cache/README.md +338 -0
  1247. data/lib/readability_js/node/node_modules/lru-cache/dist/commonjs/index.d.ts +1322 -0
  1248. data/lib/readability_js/node/node_modules/lru-cache/dist/commonjs/index.d.ts.map +1 -0
  1249. data/lib/readability_js/node/node_modules/lru-cache/dist/commonjs/index.js +1568 -0
  1250. data/lib/readability_js/node/node_modules/lru-cache/dist/commonjs/index.js.map +1 -0
  1251. data/lib/readability_js/node/node_modules/lru-cache/dist/commonjs/index.min.js +2 -0
  1252. data/lib/readability_js/node/node_modules/lru-cache/dist/commonjs/index.min.js.map +7 -0
  1253. data/lib/readability_js/node/node_modules/lru-cache/dist/commonjs/package.json +3 -0
  1254. data/lib/readability_js/node/node_modules/lru-cache/dist/esm/index.d.ts +1322 -0
  1255. data/lib/readability_js/node/node_modules/lru-cache/dist/esm/index.d.ts.map +1 -0
  1256. data/lib/readability_js/node/node_modules/lru-cache/dist/esm/index.js +1564 -0
  1257. data/lib/readability_js/node/node_modules/lru-cache/dist/esm/index.js.map +1 -0
  1258. data/lib/readability_js/node/node_modules/lru-cache/dist/esm/index.min.js +2 -0
  1259. data/lib/readability_js/node/node_modules/lru-cache/dist/esm/index.min.js.map +7 -0
  1260. data/lib/readability_js/node/node_modules/lru-cache/dist/esm/package.json +3 -0
  1261. data/lib/readability_js/node/node_modules/lru-cache/package.json +113 -0
  1262. data/lib/readability_js/node/node_modules/mdn-data/LICENSE +116 -0
  1263. data/lib/readability_js/node/node_modules/mdn-data/README.md +59 -0
  1264. data/lib/readability_js/node/node_modules/mdn-data/api/index.js +3 -0
  1265. data/lib/readability_js/node/node_modules/mdn-data/api/inheritance.json +2681 -0
  1266. data/lib/readability_js/node/node_modules/mdn-data/api/inheritance.schema.json +31 -0
  1267. data/lib/readability_js/node/node_modules/mdn-data/css/at-rules.json +504 -0
  1268. data/lib/readability_js/node/node_modules/mdn-data/css/at-rules.schema.json +131 -0
  1269. data/lib/readability_js/node/node_modules/mdn-data/css/definitions.json +80 -0
  1270. data/lib/readability_js/node/node_modules/mdn-data/css/functions.json +593 -0
  1271. data/lib/readability_js/node/node_modules/mdn-data/css/functions.schema.json +45 -0
  1272. data/lib/readability_js/node/node_modules/mdn-data/css/index.js +9 -0
  1273. data/lib/readability_js/node/node_modules/mdn-data/css/properties.json +10806 -0
  1274. data/lib/readability_js/node/node_modules/mdn-data/css/properties.schema.json +449 -0
  1275. data/lib/readability_js/node/node_modules/mdn-data/css/selectors.json +1071 -0
  1276. data/lib/readability_js/node/node_modules/mdn-data/css/selectors.schema.json +36 -0
  1277. data/lib/readability_js/node/node_modules/mdn-data/css/syntaxes.json +899 -0
  1278. data/lib/readability_js/node/node_modules/mdn-data/css/syntaxes.schema.json +15 -0
  1279. data/lib/readability_js/node/node_modules/mdn-data/css/types.json +287 -0
  1280. data/lib/readability_js/node/node_modules/mdn-data/css/types.schema.json +32 -0
  1281. data/lib/readability_js/node/node_modules/mdn-data/css/units.json +213 -0
  1282. data/lib/readability_js/node/node_modules/mdn-data/css/units.schema.json +28 -0
  1283. data/lib/readability_js/node/node_modules/mdn-data/index.js +5 -0
  1284. data/lib/readability_js/node/node_modules/mdn-data/l10n/css.json +1876 -0
  1285. data/lib/readability_js/node/node_modules/mdn-data/l10n/index.js +3 -0
  1286. data/lib/readability_js/node/node_modules/mdn-data/package.json +38 -0
  1287. data/lib/readability_js/node/node_modules/ms/index.js +162 -0
  1288. data/lib/readability_js/node/node_modules/ms/license.md +21 -0
  1289. data/lib/readability_js/node/node_modules/ms/package.json +38 -0
  1290. data/lib/readability_js/node/node_modules/ms/readme.md +59 -0
  1291. data/lib/readability_js/node/node_modules/parse5/LICENSE +19 -0
  1292. data/lib/readability_js/node/node_modules/parse5/README.md +38 -0
  1293. data/lib/readability_js/node/node_modules/parse5/dist/common/doctype.d.ts +4 -0
  1294. data/lib/readability_js/node/node_modules/parse5/dist/common/doctype.js +114 -0
  1295. data/lib/readability_js/node/node_modules/parse5/dist/common/error-codes.d.ts +67 -0
  1296. data/lib/readability_js/node/node_modules/parse5/dist/common/error-codes.js +63 -0
  1297. data/lib/readability_js/node/node_modules/parse5/dist/common/foreign-content.d.ts +9 -0
  1298. data/lib/readability_js/node/node_modules/parse5/dist/common/foreign-content.js +228 -0
  1299. data/lib/readability_js/node/node_modules/parse5/dist/common/html.d.ts +289 -0
  1300. data/lib/readability_js/node/node_modules/parse5/dist/common/html.js +523 -0
  1301. data/lib/readability_js/node/node_modules/parse5/dist/common/token.d.ts +84 -0
  1302. data/lib/readability_js/node/node_modules/parse5/dist/common/token.js +20 -0
  1303. data/lib/readability_js/node/node_modules/parse5/dist/common/unicode.d.ts +42 -0
  1304. data/lib/readability_js/node/node_modules/parse5/dist/common/unicode.js +62 -0
  1305. data/lib/readability_js/node/node_modules/parse5/dist/index.d.ts +71 -0
  1306. data/lib/readability_js/node/node_modules/parse5/dist/index.js +42 -0
  1307. data/lib/readability_js/node/node_modules/parse5/dist/parser/formatting-element-list.d.ts +36 -0
  1308. data/lib/readability_js/node/node_modules/parse5/dist/parser/formatting-element-list.js +110 -0
  1309. data/lib/readability_js/node/node_modules/parse5/dist/parser/index.d.ts +221 -0
  1310. data/lib/readability_js/node/node_modules/parse5/dist/parser/index.js +3245 -0
  1311. data/lib/readability_js/node/node_modules/parse5/dist/parser/open-element-stack.d.ts +53 -0
  1312. data/lib/readability_js/node/node_modules/parse5/dist/parser/open-element-stack.js +324 -0
  1313. data/lib/readability_js/node/node_modules/parse5/dist/serializer/index.d.ts +60 -0
  1314. data/lib/readability_js/node/node_modules/parse5/dist/serializer/index.js +168 -0
  1315. data/lib/readability_js/node/node_modules/parse5/dist/tokenizer/index.d.ts +247 -0
  1316. data/lib/readability_js/node/node_modules/parse5/dist/tokenizer/index.js +2710 -0
  1317. data/lib/readability_js/node/node_modules/parse5/dist/tokenizer/preprocessor.d.ts +36 -0
  1318. data/lib/readability_js/node/node_modules/parse5/dist/tokenizer/preprocessor.js +196 -0
  1319. data/lib/readability_js/node/node_modules/parse5/dist/tree-adapters/default.d.ts +84 -0
  1320. data/lib/readability_js/node/node_modules/parse5/dist/tree-adapters/default.js +173 -0
  1321. data/lib/readability_js/node/node_modules/parse5/dist/tree-adapters/interface.d.ts +255 -0
  1322. data/lib/readability_js/node/node_modules/parse5/dist/tree-adapters/interface.js +1 -0
  1323. data/lib/readability_js/node/node_modules/parse5/package.json +48 -0
  1324. data/lib/readability_js/node/node_modules/punycode/LICENSE-MIT.txt +20 -0
  1325. data/lib/readability_js/node/node_modules/punycode/README.md +148 -0
  1326. data/lib/readability_js/node/node_modules/punycode/package.json +58 -0
  1327. data/lib/readability_js/node/node_modules/punycode/punycode.es6.js +444 -0
  1328. data/lib/readability_js/node/node_modules/punycode/punycode.js +443 -0
  1329. data/lib/readability_js/node/node_modules/require-from-string/index.js +34 -0
  1330. data/lib/readability_js/node/node_modules/require-from-string/license +21 -0
  1331. data/lib/readability_js/node/node_modules/require-from-string/package.json +28 -0
  1332. data/lib/readability_js/node/node_modules/require-from-string/readme.md +56 -0
  1333. data/lib/readability_js/node/node_modules/rrweb-cssom/LICENSE.txt +20 -0
  1334. data/lib/readability_js/node/node_modules/rrweb-cssom/README.mdown +74 -0
  1335. data/lib/readability_js/node/node_modules/rrweb-cssom/build/CSSOM.js +1995 -0
  1336. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSConditionRule.js +25 -0
  1337. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSContainerRule.js +50 -0
  1338. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSDocumentRule.js +39 -0
  1339. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSFontFaceRule.js +36 -0
  1340. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSGroupingRule.js +69 -0
  1341. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSHostRule.js +37 -0
  1342. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSImportRule.js +132 -0
  1343. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSKeyframeRule.js +37 -0
  1344. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSKeyframesRule.js +39 -0
  1345. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSLayerBlockRule.js +48 -0
  1346. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSMediaRule.js +53 -0
  1347. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSOM.js +3 -0
  1348. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSRule.js +42 -0
  1349. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSStartingStyleRule.js +37 -0
  1350. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSStyleDeclaration.js +148 -0
  1351. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSStyleRule.js +190 -0
  1352. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSStyleSheet.js +88 -0
  1353. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSSupportsRule.js +36 -0
  1354. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSValue.js +43 -0
  1355. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSValueExpression.js +344 -0
  1356. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/MatcherList.js +62 -0
  1357. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/MediaList.js +61 -0
  1358. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/StyleSheet.js +17 -0
  1359. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/clone.js +80 -0
  1360. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/index.js +26 -0
  1361. data/lib/readability_js/node/node_modules/rrweb-cssom/lib/parse.js +525 -0
  1362. data/lib/readability_js/node/node_modules/rrweb-cssom/package.json +27 -0
  1363. data/lib/readability_js/node/node_modules/safer-buffer/LICENSE +21 -0
  1364. data/lib/readability_js/node/node_modules/safer-buffer/Porting-Buffer.md +268 -0
  1365. data/lib/readability_js/node/node_modules/safer-buffer/Readme.md +156 -0
  1366. data/lib/readability_js/node/node_modules/safer-buffer/dangerous.js +58 -0
  1367. data/lib/readability_js/node/node_modules/safer-buffer/package.json +34 -0
  1368. data/lib/readability_js/node/node_modules/safer-buffer/safer.js +77 -0
  1369. data/lib/readability_js/node/node_modules/safer-buffer/tests.js +406 -0
  1370. data/lib/readability_js/node/node_modules/saxes/README.md +323 -0
  1371. data/lib/readability_js/node/node_modules/saxes/package.json +71 -0
  1372. data/lib/readability_js/node/node_modules/saxes/saxes.d.ts +635 -0
  1373. data/lib/readability_js/node/node_modules/saxes/saxes.js +2053 -0
  1374. data/lib/readability_js/node/node_modules/saxes/saxes.js.map +1 -0
  1375. data/lib/readability_js/node/node_modules/source-map-js/LICENSE +28 -0
  1376. data/lib/readability_js/node/node_modules/source-map-js/README.md +765 -0
  1377. data/lib/readability_js/node/node_modules/source-map-js/lib/array-set.js +121 -0
  1378. data/lib/readability_js/node/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  1379. data/lib/readability_js/node/node_modules/source-map-js/lib/base64.js +67 -0
  1380. data/lib/readability_js/node/node_modules/source-map-js/lib/binary-search.js +111 -0
  1381. data/lib/readability_js/node/node_modules/source-map-js/lib/mapping-list.js +79 -0
  1382. data/lib/readability_js/node/node_modules/source-map-js/lib/quick-sort.js +132 -0
  1383. data/lib/readability_js/node/node_modules/source-map-js/lib/source-map-consumer.d.ts +1 -0
  1384. data/lib/readability_js/node/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  1385. data/lib/readability_js/node/node_modules/source-map-js/lib/source-map-generator.d.ts +1 -0
  1386. data/lib/readability_js/node/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  1387. data/lib/readability_js/node/node_modules/source-map-js/lib/source-node.d.ts +1 -0
  1388. data/lib/readability_js/node/node_modules/source-map-js/lib/source-node.js +413 -0
  1389. data/lib/readability_js/node/node_modules/source-map-js/lib/util.js +594 -0
  1390. data/lib/readability_js/node/node_modules/source-map-js/package.json +71 -0
  1391. data/lib/readability_js/node/node_modules/source-map-js/source-map.d.ts +104 -0
  1392. data/lib/readability_js/node/node_modules/source-map-js/source-map.js +8 -0
  1393. data/lib/readability_js/node/node_modules/symbol-tree/LICENSE +21 -0
  1394. data/lib/readability_js/node/node_modules/symbol-tree/README.md +545 -0
  1395. data/lib/readability_js/node/node_modules/symbol-tree/lib/SymbolTree.js +838 -0
  1396. data/lib/readability_js/node/node_modules/symbol-tree/lib/SymbolTreeNode.js +54 -0
  1397. data/lib/readability_js/node/node_modules/symbol-tree/lib/TreeIterator.js +69 -0
  1398. data/lib/readability_js/node/node_modules/symbol-tree/lib/TreePosition.js +11 -0
  1399. data/lib/readability_js/node/node_modules/symbol-tree/package.json +47 -0
  1400. data/lib/readability_js/node/node_modules/tldts/LICENSE +13 -0
  1401. data/lib/readability_js/node/node_modules/tldts/README.md +327 -0
  1402. data/lib/readability_js/node/node_modules/tldts/bin/cli.js +21 -0
  1403. data/lib/readability_js/node/node_modules/tldts/dist/cjs/index.js +669 -0
  1404. data/lib/readability_js/node/node_modules/tldts/dist/cjs/index.js.map +1 -0
  1405. data/lib/readability_js/node/node_modules/tldts/dist/cjs/src/data/trie.js +14 -0
  1406. data/lib/readability_js/node/node_modules/tldts/dist/cjs/src/data/trie.js.map +1 -0
  1407. data/lib/readability_js/node/node_modules/tldts/dist/cjs/src/suffix-trie.js +67 -0
  1408. data/lib/readability_js/node/node_modules/tldts/dist/cjs/src/suffix-trie.js.map +1 -0
  1409. data/lib/readability_js/node/node_modules/tldts/dist/cjs/tsconfig.tsbuildinfo +1 -0
  1410. data/lib/readability_js/node/node_modules/tldts/dist/es6/index.js +33 -0
  1411. data/lib/readability_js/node/node_modules/tldts/dist/es6/index.js.map +1 -0
  1412. data/lib/readability_js/node/node_modules/tldts/dist/es6/src/data/trie.js +11 -0
  1413. data/lib/readability_js/node/node_modules/tldts/dist/es6/src/data/trie.js.map +1 -0
  1414. data/lib/readability_js/node/node_modules/tldts/dist/es6/src/suffix-trie.js +64 -0
  1415. data/lib/readability_js/node/node_modules/tldts/dist/es6/src/suffix-trie.js.map +1 -0
  1416. data/lib/readability_js/node/node_modules/tldts/dist/es6/tsconfig.bundle.tsbuildinfo +1 -0
  1417. data/lib/readability_js/node/node_modules/tldts/dist/index.cjs.min.js +2 -0
  1418. data/lib/readability_js/node/node_modules/tldts/dist/index.cjs.min.js.map +1 -0
  1419. data/lib/readability_js/node/node_modules/tldts/dist/index.esm.min.js +2 -0
  1420. data/lib/readability_js/node/node_modules/tldts/dist/index.esm.min.js.map +1 -0
  1421. data/lib/readability_js/node/node_modules/tldts/dist/index.umd.min.js +2 -0
  1422. data/lib/readability_js/node/node_modules/tldts/dist/index.umd.min.js.map +1 -0
  1423. data/lib/readability_js/node/node_modules/tldts/dist/types/index.d.ts +7 -0
  1424. data/lib/readability_js/node/node_modules/tldts/dist/types/src/data/trie.d.ts +5 -0
  1425. data/lib/readability_js/node/node_modules/tldts/dist/types/src/suffix-trie.d.ts +5 -0
  1426. data/lib/readability_js/node/node_modules/tldts/index.ts +62 -0
  1427. data/lib/readability_js/node/node_modules/tldts/package.json +91 -0
  1428. data/lib/readability_js/node/node_modules/tldts/src/data/trie.ts +14 -0
  1429. data/lib/readability_js/node/node_modules/tldts/src/suffix-trie.ts +110 -0
  1430. data/lib/readability_js/node/node_modules/tldts-core/LICENSE +13 -0
  1431. data/lib/readability_js/node/node_modules/tldts-core/README.md +3 -0
  1432. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/index.js +564 -0
  1433. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/index.js.map +1 -0
  1434. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js +15 -0
  1435. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js.map +1 -0
  1436. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/domain.js +83 -0
  1437. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/domain.js.map +1 -0
  1438. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/extract-hostname.js +149 -0
  1439. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/extract-hostname.js.map +1 -0
  1440. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/factory.js +107 -0
  1441. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/factory.js.map +1 -0
  1442. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/is-ip.js +72 -0
  1443. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/is-ip.js.map +1 -0
  1444. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/is-valid.js +69 -0
  1445. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/is-valid.js.map +1 -0
  1446. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js +69 -0
  1447. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js.map +1 -0
  1448. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/lookup/interface.js +3 -0
  1449. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/lookup/interface.js.map +1 -0
  1450. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/options.js +22 -0
  1451. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/options.js.map +1 -0
  1452. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/subdomain.js +14 -0
  1453. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/subdomain.js.map +1 -0
  1454. data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/tsconfig.tsbuildinfo +1 -0
  1455. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/index.js +4 -0
  1456. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/index.js.map +1 -0
  1457. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js +12 -0
  1458. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js.map +1 -0
  1459. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/domain.js +80 -0
  1460. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/domain.js.map +1 -0
  1461. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/extract-hostname.js +146 -0
  1462. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/extract-hostname.js.map +1 -0
  1463. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/factory.js +102 -0
  1464. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/factory.js.map +1 -0
  1465. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/is-ip.js +69 -0
  1466. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/is-ip.js.map +1 -0
  1467. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/is-valid.js +66 -0
  1468. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/is-valid.js.map +1 -0
  1469. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js +66 -0
  1470. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js.map +1 -0
  1471. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/lookup/interface.js +2 -0
  1472. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/lookup/interface.js.map +1 -0
  1473. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/options.js +19 -0
  1474. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/options.js.map +1 -0
  1475. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/subdomain.js +11 -0
  1476. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/subdomain.js.map +1 -0
  1477. data/lib/readability_js/node/node_modules/tldts-core/dist/es6/tsconfig.bundle.tsbuildinfo +1 -0
  1478. data/lib/readability_js/node/node_modules/tldts-core/dist/types/index.d.ts +4 -0
  1479. data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/domain-without-suffix.d.ts +6 -0
  1480. data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/domain.d.ts +5 -0
  1481. data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/extract-hostname.d.ts +5 -0
  1482. data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/factory.d.ts +28 -0
  1483. data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/is-ip.d.ts +6 -0
  1484. data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/is-valid.d.ts +15 -0
  1485. data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/lookup/fast-path.d.ts +2 -0
  1486. data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/lookup/interface.d.ts +9 -0
  1487. data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/options.d.ts +10 -0
  1488. data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/subdomain.d.ts +4 -0
  1489. data/lib/readability_js/node/node_modules/tldts-core/index.ts +10 -0
  1490. data/lib/readability_js/node/node_modules/tldts-core/package.json +68 -0
  1491. data/lib/readability_js/node/node_modules/tldts-core/src/domain-without-suffix.ts +14 -0
  1492. data/lib/readability_js/node/node_modules/tldts-core/src/domain.ts +100 -0
  1493. data/lib/readability_js/node/node_modules/tldts-core/src/extract-hostname.ts +170 -0
  1494. data/lib/readability_js/node/node_modules/tldts-core/src/factory.ts +163 -0
  1495. data/lib/readability_js/node/node_modules/tldts-core/src/is-ip.ts +87 -0
  1496. data/lib/readability_js/node/node_modules/tldts-core/src/is-valid.ts +79 -0
  1497. data/lib/readability_js/node/node_modules/tldts-core/src/lookup/fast-path.ts +80 -0
  1498. data/lib/readability_js/node/node_modules/tldts-core/src/lookup/interface.ts +10 -0
  1499. data/lib/readability_js/node/node_modules/tldts-core/src/options.ts +39 -0
  1500. data/lib/readability_js/node/node_modules/tldts-core/src/subdomain.ts +11 -0
  1501. data/lib/readability_js/node/node_modules/tough-cookie/LICENSE +12 -0
  1502. data/lib/readability_js/node/node_modules/tough-cookie/README.md +195 -0
  1503. data/lib/readability_js/node/node_modules/tough-cookie/dist/index.cjs +2313 -0
  1504. data/lib/readability_js/node/node_modules/tough-cookie/dist/index.cjs.map +1 -0
  1505. data/lib/readability_js/node/node_modules/tough-cookie/dist/index.d.cts +1879 -0
  1506. data/lib/readability_js/node/node_modules/tough-cookie/dist/index.d.ts +1879 -0
  1507. data/lib/readability_js/node/node_modules/tough-cookie/dist/index.js +2268 -0
  1508. data/lib/readability_js/node/node_modules/tough-cookie/dist/index.js.map +1 -0
  1509. data/lib/readability_js/node/node_modules/tough-cookie/node_modules/.bin/tldts +1 -0
  1510. data/lib/readability_js/node/node_modules/tough-cookie/package.json +149 -0
  1511. data/lib/readability_js/node/node_modules/tr46/LICENSE.md +21 -0
  1512. data/lib/readability_js/node/node_modules/tr46/README.md +76 -0
  1513. data/lib/readability_js/node/node_modules/tr46/index.js +344 -0
  1514. data/lib/readability_js/node/node_modules/tr46/lib/mappingTable.json +1 -0
  1515. data/lib/readability_js/node/node_modules/tr46/lib/regexes.js +29 -0
  1516. data/lib/readability_js/node/node_modules/tr46/lib/statusMapping.js +9 -0
  1517. data/lib/readability_js/node/node_modules/tr46/package.json +47 -0
  1518. data/lib/readability_js/node/node_modules/w3c-xmlserializer/LICENSE.md +25 -0
  1519. data/lib/readability_js/node/node_modules/w3c-xmlserializer/README.md +41 -0
  1520. data/lib/readability_js/node/node_modules/w3c-xmlserializer/lib/attributes.js +125 -0
  1521. data/lib/readability_js/node/node_modules/w3c-xmlserializer/lib/constants.js +44 -0
  1522. data/lib/readability_js/node/node_modules/w3c-xmlserializer/lib/serialize.js +365 -0
  1523. data/lib/readability_js/node/node_modules/w3c-xmlserializer/package.json +32 -0
  1524. data/lib/readability_js/node/node_modules/webidl-conversions/LICENSE.md +12 -0
  1525. data/lib/readability_js/node/node_modules/webidl-conversions/README.md +99 -0
  1526. data/lib/readability_js/node/node_modules/webidl-conversions/lib/index.js +462 -0
  1527. data/lib/readability_js/node/node_modules/webidl-conversions/package.json +34 -0
  1528. data/lib/readability_js/node/node_modules/whatwg-encoding/LICENSE.txt +7 -0
  1529. data/lib/readability_js/node/node_modules/whatwg-encoding/README.md +50 -0
  1530. data/lib/readability_js/node/node_modules/whatwg-encoding/lib/labels-to-names.json +217 -0
  1531. data/lib/readability_js/node/node_modules/whatwg-encoding/lib/supported-names.json +38 -0
  1532. data/lib/readability_js/node/node_modules/whatwg-encoding/lib/whatwg-encoding.js +60 -0
  1533. data/lib/readability_js/node/node_modules/whatwg-encoding/package.json +32 -0
  1534. data/lib/readability_js/node/node_modules/whatwg-mimetype/LICENSE.txt +7 -0
  1535. data/lib/readability_js/node/node_modules/whatwg-mimetype/README.md +101 -0
  1536. data/lib/readability_js/node/node_modules/whatwg-mimetype/lib/mime-type-parameters.js +70 -0
  1537. data/lib/readability_js/node/node_modules/whatwg-mimetype/lib/mime-type.js +127 -0
  1538. data/lib/readability_js/node/node_modules/whatwg-mimetype/lib/parser.js +105 -0
  1539. data/lib/readability_js/node/node_modules/whatwg-mimetype/lib/serializer.js +25 -0
  1540. data/lib/readability_js/node/node_modules/whatwg-mimetype/lib/utils.js +60 -0
  1541. data/lib/readability_js/node/node_modules/whatwg-mimetype/package.json +45 -0
  1542. data/lib/readability_js/node/node_modules/whatwg-url/LICENSE.txt +21 -0
  1543. data/lib/readability_js/node/node_modules/whatwg-url/README.md +106 -0
  1544. data/lib/readability_js/node/node_modules/whatwg-url/index.js +27 -0
  1545. data/lib/readability_js/node/node_modules/whatwg-url/lib/Function.js +42 -0
  1546. data/lib/readability_js/node/node_modules/whatwg-url/lib/URL-impl.js +233 -0
  1547. data/lib/readability_js/node/node_modules/whatwg-url/lib/URL.js +499 -0
  1548. data/lib/readability_js/node/node_modules/whatwg-url/lib/URLSearchParams-impl.js +135 -0
  1549. data/lib/readability_js/node/node_modules/whatwg-url/lib/URLSearchParams.js +505 -0
  1550. data/lib/readability_js/node/node_modules/whatwg-url/lib/VoidFunction.js +26 -0
  1551. data/lib/readability_js/node/node_modules/whatwg-url/lib/encoding.js +16 -0
  1552. data/lib/readability_js/node/node_modules/whatwg-url/lib/infra.js +26 -0
  1553. data/lib/readability_js/node/node_modules/whatwg-url/lib/percent-encoding.js +142 -0
  1554. data/lib/readability_js/node/node_modules/whatwg-url/lib/url-state-machine.js +1277 -0
  1555. data/lib/readability_js/node/node_modules/whatwg-url/lib/urlencoded.js +89 -0
  1556. data/lib/readability_js/node/node_modules/whatwg-url/lib/utils.js +240 -0
  1557. data/lib/readability_js/node/node_modules/whatwg-url/package.json +56 -0
  1558. data/lib/readability_js/node/node_modules/whatwg-url/webidl2js-wrapper.js +7 -0
  1559. data/lib/readability_js/node/node_modules/ws/LICENSE +20 -0
  1560. data/lib/readability_js/node/node_modules/ws/README.md +548 -0
  1561. data/lib/readability_js/node/node_modules/ws/browser.js +8 -0
  1562. data/lib/readability_js/node/node_modules/ws/index.js +13 -0
  1563. data/lib/readability_js/node/node_modules/ws/lib/buffer-util.js +131 -0
  1564. data/lib/readability_js/node/node_modules/ws/lib/constants.js +18 -0
  1565. data/lib/readability_js/node/node_modules/ws/lib/event-target.js +292 -0
  1566. data/lib/readability_js/node/node_modules/ws/lib/extension.js +203 -0
  1567. data/lib/readability_js/node/node_modules/ws/lib/limiter.js +55 -0
  1568. data/lib/readability_js/node/node_modules/ws/lib/permessage-deflate.js +528 -0
  1569. data/lib/readability_js/node/node_modules/ws/lib/receiver.js +706 -0
  1570. data/lib/readability_js/node/node_modules/ws/lib/sender.js +602 -0
  1571. data/lib/readability_js/node/node_modules/ws/lib/stream.js +161 -0
  1572. data/lib/readability_js/node/node_modules/ws/lib/subprotocol.js +62 -0
  1573. data/lib/readability_js/node/node_modules/ws/lib/validation.js +152 -0
  1574. data/lib/readability_js/node/node_modules/ws/lib/websocket-server.js +550 -0
  1575. data/lib/readability_js/node/node_modules/ws/lib/websocket.js +1388 -0
  1576. data/lib/readability_js/node/node_modules/ws/package.json +69 -0
  1577. data/lib/readability_js/node/node_modules/ws/wrapper.mjs +8 -0
  1578. data/lib/readability_js/node/node_modules/xml-name-validator/LICENSE.txt +176 -0
  1579. data/lib/readability_js/node/node_modules/xml-name-validator/README.md +35 -0
  1580. data/lib/readability_js/node/node_modules/xml-name-validator/lib/xml-name-validator.js +9 -0
  1581. data/lib/readability_js/node/node_modules/xml-name-validator/package.json +30 -0
  1582. data/lib/readability_js/node/node_modules/xmlchars/LICENSE +18 -0
  1583. data/lib/readability_js/node/node_modules/xmlchars/README.md +33 -0
  1584. data/lib/readability_js/node/node_modules/xmlchars/package.json +51 -0
  1585. data/lib/readability_js/node/node_modules/xmlchars/xml/1.0/ed4.d.ts +31 -0
  1586. data/lib/readability_js/node/node_modules/xmlchars/xml/1.0/ed4.js +44 -0
  1587. data/lib/readability_js/node/node_modules/xmlchars/xml/1.0/ed4.js.map +1 -0
  1588. data/lib/readability_js/node/node_modules/xmlchars/xml/1.0/ed5.d.ts +51 -0
  1589. data/lib/readability_js/node/node_modules/xmlchars/xml/1.0/ed5.js +105 -0
  1590. data/lib/readability_js/node/node_modules/xmlchars/xml/1.0/ed5.js.map +1 -0
  1591. data/lib/readability_js/node/node_modules/xmlchars/xml/1.1/ed2.d.ts +73 -0
  1592. data/lib/readability_js/node/node_modules/xmlchars/xml/1.1/ed2.js +145 -0
  1593. data/lib/readability_js/node/node_modules/xmlchars/xml/1.1/ed2.js.map +1 -0
  1594. data/lib/readability_js/node/node_modules/xmlchars/xmlchars.d.ts +170 -0
  1595. data/lib/readability_js/node/node_modules/xmlchars/xmlchars.js +191 -0
  1596. data/lib/readability_js/node/node_modules/xmlchars/xmlchars.js.map +1 -0
  1597. data/lib/readability_js/node/node_modules/xmlchars/xmlns/1.0/ed3.d.ts +28 -0
  1598. data/lib/readability_js/node/node_modules/xmlchars/xmlns/1.0/ed3.js +65 -0
  1599. data/lib/readability_js/node/node_modules/xmlchars/xmlns/1.0/ed3.js.map +1 -0
  1600. data/lib/readability_js/node/package.json +9 -0
  1601. data/lib/readability_js/node/readability-example.js +10 -0
  1602. data/lib/readability_js/node/yarn.lock +315 -0
  1603. data/lib/readability_js/nodo.rb +67 -0
  1604. data/lib/readability_js/version.rb +3 -0
  1605. data/lib/readability_js.rb +207 -0
  1606. data/readability_js.gemspec +47 -0
  1607. metadata +1775 -0
@@ -0,0 +1,4613 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/index.js
30
+ var index_exports = {};
31
+ __export(index_exports, {
32
+ DOMSelector: () => DOMSelector
33
+ });
34
+ module.exports = __toCommonJS(index_exports);
35
+ var import_lru_cache = require("lru-cache");
36
+
37
+ // src/js/parser.js
38
+ var cssTree2 = __toESM(require("css-tree"), 1);
39
+
40
+ // src/js/utility.js
41
+ var import_nwsapi = __toESM(require("@asamuzakjp/nwsapi"), 1);
42
+ var import_bidi_js = __toESM(require("bidi-js"), 1);
43
+ var cssTree = __toESM(require("css-tree"), 1);
44
+ var import_is_potential_custom_element_name = __toESM(require("is-potential-custom-element-name"), 1);
45
+
46
+ // src/js/constant.js
47
+ var ATTR_SELECTOR = "AttributeSelector";
48
+ var CLASS_SELECTOR = "ClassSelector";
49
+ var COMBINATOR = "Combinator";
50
+ var IDENT = "Identifier";
51
+ var ID_SELECTOR = "IdSelector";
52
+ var NOT_SUPPORTED_ERR = "NotSupportedError";
53
+ var NTH = "Nth";
54
+ var PS_CLASS_SELECTOR = "PseudoClassSelector";
55
+ var PS_ELEMENT_SELECTOR = "PseudoElementSelector";
56
+ var SELECTOR = "Selector";
57
+ var STRING = "String";
58
+ var SYNTAX_ERR = "SyntaxError";
59
+ var TARGET_ALL = "all";
60
+ var TARGET_FIRST = "first";
61
+ var TARGET_LINEAL = "lineal";
62
+ var TARGET_SELF = "self";
63
+ var TYPE_SELECTOR = "TypeSelector";
64
+ var BIT_01 = 1;
65
+ var BIT_02 = 2;
66
+ var BIT_04 = 4;
67
+ var BIT_08 = 8;
68
+ var BIT_16 = 16;
69
+ var BIT_32 = 32;
70
+ var BIT_FFFF = 65535;
71
+ var DUO = 2;
72
+ var HEX = 16;
73
+ var TYPE_FROM = 8;
74
+ var TYPE_TO = -1;
75
+ var ELEMENT_NODE = 1;
76
+ var TEXT_NODE = 3;
77
+ var DOCUMENT_NODE = 9;
78
+ var DOCUMENT_FRAGMENT_NODE = 11;
79
+ var DOCUMENT_POSITION_PRECEDING = 2;
80
+ var DOCUMENT_POSITION_CONTAINS = 8;
81
+ var SHOW_ALL = 4294967295;
82
+ var SHOW_CONTAINER = 1281;
83
+ var ALPHA_NUM = "[A-Z\\d]+";
84
+ var CHILD_IDX = "(?:first|last|only)-(?:child|of-type)";
85
+ var DIGIT = "(?:0|[1-9]\\d*)";
86
+ var LANG_PART = `(?:-${ALPHA_NUM})*`;
87
+ var PSEUDO_CLASS = `(?:any-)?link|${CHILD_IDX}|checked|empty|indeterminate|read-(?:only|write)|target`;
88
+ var ANB = `[+-]?(?:${DIGIT}n?|n)|(?:[+-]?${DIGIT})?n\\s*[+-]\\s*${DIGIT}`;
89
+ var N_TH = `nth-(?:last-)?(?:child|of-type)\\(\\s*(?:even|odd|${ANB})\\s*\\)`;
90
+ var SUB_TYPE = "\\[[^|\\]]+\\]|[#.:][\\w-]+";
91
+ var SUB_TYPE_WO_PSEUDO = "\\[[^|\\]]+\\]|[#.][\\w-]+";
92
+ var TAG_TYPE = "\\*|[A-Za-z][\\w-]*";
93
+ var TAG_TYPE_I = "\\*|[A-Z][\\w-]*";
94
+ var COMPOUND = `(?:${TAG_TYPE}|(?:${TAG_TYPE})?(?:${SUB_TYPE})+)`;
95
+ var COMPOUND_WO_PSEUDO = `(?:${TAG_TYPE}|(?:${TAG_TYPE})?(?:${SUB_TYPE_WO_PSEUDO})+)`;
96
+ var COMBO = "\\s?[\\s>~+]\\s?";
97
+ var COMPLEX = `${COMPOUND}(?:${COMBO}${COMPOUND})*`;
98
+ var DESCEND = "\\s?[\\s>]\\s?";
99
+ var SIBLING = "\\s?[+~]\\s?";
100
+ var NESTED_LOGIC_A = `:is\\(\\s*${COMPOUND}(?:\\s*,\\s*${COMPOUND})*\\s*\\)`;
101
+ var NESTED_LOGIC_B = `:is\\(\\s*${COMPLEX}(?:\\s*,\\s*${COMPLEX})*\\s*\\)`;
102
+ var COMPOUND_A = `(?:${TAG_TYPE}|(?:${TAG_TYPE})?(?:${SUB_TYPE}|${NESTED_LOGIC_A})+)`;
103
+ var COMPOUND_B = `(?:${TAG_TYPE}|(?:${TAG_TYPE})?(?:${SUB_TYPE}|${NESTED_LOGIC_B})+)`;
104
+ var COMPOUND_I = `(?:${TAG_TYPE_I}|(?:${TAG_TYPE_I})?(?:${SUB_TYPE})+)`;
105
+ var COMPLEX_L = `${COMPOUND_B}(?:${COMBO}${COMPOUND_B})*`;
106
+ var LOGIC_COMPLEX = `(?:is|not)\\(\\s*${COMPLEX_L}(?:\\s*,\\s*${COMPLEX_L})*\\s*\\)`;
107
+ var LOGIC_COMPOUND = `(?:is|not)\\(\\s*${COMPOUND_A}(?:\\s*,\\s*${COMPOUND_A})*\\s*\\)`;
108
+ var HAS_COMPOUND = `has\\([\\s>]?\\s*${COMPOUND_WO_PSEUDO}\\s*\\)`;
109
+ var FORM_PARTS = Object.freeze([
110
+ "button",
111
+ "input",
112
+ "select",
113
+ "textarea"
114
+ ]);
115
+ var INPUT_BUTTON = Object.freeze(["button", "reset", "submit"]);
116
+ var INPUT_CHECK = Object.freeze(["checkbox", "radio"]);
117
+ var INPUT_DATE = Object.freeze([
118
+ "date",
119
+ "datetime-local",
120
+ "month",
121
+ "time",
122
+ "week"
123
+ ]);
124
+ var INPUT_TEXT = Object.freeze([
125
+ "email",
126
+ "password",
127
+ "search",
128
+ "tel",
129
+ "text",
130
+ "url"
131
+ ]);
132
+ var INPUT_EDIT = Object.freeze([
133
+ ...INPUT_DATE,
134
+ ...INPUT_TEXT,
135
+ "number"
136
+ ]);
137
+ var INPUT_LTR = Object.freeze([
138
+ ...INPUT_CHECK,
139
+ "color",
140
+ "date",
141
+ "image",
142
+ "number",
143
+ "range",
144
+ "time"
145
+ ]);
146
+ var KEYS_LOGICAL = /* @__PURE__ */ new Set(["has", "is", "not", "where"]);
147
+
148
+ // src/js/utility.js
149
+ var KEYS_DIR_AUTO = /* @__PURE__ */ new Set([...INPUT_BUTTON, ...INPUT_TEXT, "hidden"]);
150
+ var KEYS_DIR_LTR = new Set(INPUT_LTR);
151
+ var KEYS_INPUT_EDIT = new Set(INPUT_EDIT);
152
+ var KEYS_NODE_DIR_EXCLUDE = /* @__PURE__ */ new Set(["bdi", "script", "style", "textarea"]);
153
+ var KEYS_NODE_FOCUSABLE = /* @__PURE__ */ new Set(["button", "select", "textarea"]);
154
+ var KEYS_NODE_FOCUSABLE_SVG = /* @__PURE__ */ new Set([
155
+ "clipPath",
156
+ "defs",
157
+ "desc",
158
+ "linearGradient",
159
+ "marker",
160
+ "mask",
161
+ "metadata",
162
+ "pattern",
163
+ "radialGradient",
164
+ "script",
165
+ "style",
166
+ "symbol",
167
+ "title"
168
+ ]);
169
+ var REG_EXCLUDE_BASIC = /[|\\]|::|[^\u0021-\u007F\s]|\[\s*[\w$*=^|~-]+(?:(?:"[\w$*=^|~\s'-]+"|'[\w$*=^|~\s"-]+')?(?:\s+[\w$*=^|~-]+)+|"[^"\]]{1,255}|'[^'\]]{1,255})\s*\]|:(?:is|where)\(\s*\)/;
170
+ var REG_COMPLEX = new RegExp(`${COMPOUND_I}${COMBO}${COMPOUND_I}`, "i");
171
+ var REG_DESCEND = new RegExp(`${COMPOUND_I}${DESCEND}${COMPOUND_I}`, "i");
172
+ var REG_SIBLING = new RegExp(`${COMPOUND_I}${SIBLING}${COMPOUND_I}`, "i");
173
+ var REG_LOGIC_COMPLEX = new RegExp(
174
+ `:(?!${PSEUDO_CLASS}|${N_TH}|${LOGIC_COMPLEX})`
175
+ );
176
+ var REG_LOGIC_COMPOUND = new RegExp(
177
+ `:(?!${PSEUDO_CLASS}|${N_TH}|${LOGIC_COMPOUND})`
178
+ );
179
+ var REG_LOGIC_HAS_COMPOUND = new RegExp(
180
+ `:(?!${PSEUDO_CLASS}|${N_TH}|${LOGIC_COMPOUND}|${HAS_COMPOUND})`
181
+ );
182
+ var REG_END_WITH_HAS = new RegExp(`:${HAS_COMPOUND}$`);
183
+ var REG_WO_LOGICAL = new RegExp(`:(?!${PSEUDO_CLASS}|${N_TH})`);
184
+ var REG_IS_HTML = /^(?:application\/xhtml\+x|text\/ht)ml$/;
185
+ var REG_IS_XML = /^(?:application\/(?:[\w\-.]+\+)?|image\/[\w\-.]+\+|text\/)xml$/;
186
+ var getType = (o) => Object.prototype.toString.call(o).slice(TYPE_FROM, TYPE_TO);
187
+ var generateException = (msg, name, globalObject = globalThis) => {
188
+ return new globalObject.DOMException(msg, name);
189
+ };
190
+ var findNestedHas = (leaf) => {
191
+ return leaf.name === "has";
192
+ };
193
+ var findLogicalWithNestedHas = (leaf) => {
194
+ if (KEYS_LOGICAL.has(leaf.name) && cssTree.find(leaf, findNestedHas)) {
195
+ return leaf;
196
+ }
197
+ return null;
198
+ };
199
+ var filterNodesByAnB = (nodes, anb) => {
200
+ const { a, b, reverse } = anb;
201
+ const processedNodes = reverse ? [...nodes].reverse() : nodes;
202
+ const l = nodes.length;
203
+ const matched = [];
204
+ if (a === 0) {
205
+ if (b > 0 && b <= l) {
206
+ matched.push(processedNodes[b - 1]);
207
+ }
208
+ return matched;
209
+ }
210
+ let startIndex = b - 1;
211
+ if (a > 0) {
212
+ while (startIndex < 0) {
213
+ startIndex += a;
214
+ }
215
+ for (let i = startIndex; i < l; i += a) {
216
+ matched.push(processedNodes[i]);
217
+ }
218
+ } else if (startIndex >= 0) {
219
+ for (let i = startIndex; i >= 0; i += a) {
220
+ matched.push(processedNodes[i]);
221
+ }
222
+ return matched.reverse();
223
+ }
224
+ return matched;
225
+ };
226
+ var resolveContent = (node) => {
227
+ if (!node?.nodeType) {
228
+ throw new TypeError(`Unexpected type ${getType(node)}`);
229
+ }
230
+ let document;
231
+ let root;
232
+ let shadow;
233
+ switch (node.nodeType) {
234
+ case DOCUMENT_NODE: {
235
+ document = node;
236
+ root = node;
237
+ break;
238
+ }
239
+ case DOCUMENT_FRAGMENT_NODE: {
240
+ const { host, mode, ownerDocument } = node;
241
+ document = ownerDocument;
242
+ root = node;
243
+ shadow = host && (mode === "close" || mode === "open");
244
+ break;
245
+ }
246
+ case ELEMENT_NODE: {
247
+ document = node.ownerDocument;
248
+ let refNode = node;
249
+ while (refNode) {
250
+ const { host, mode, nodeType, parentNode } = refNode;
251
+ if (nodeType === DOCUMENT_FRAGMENT_NODE) {
252
+ shadow = host && (mode === "close" || mode === "open");
253
+ break;
254
+ } else if (parentNode) {
255
+ refNode = parentNode;
256
+ } else {
257
+ break;
258
+ }
259
+ }
260
+ root = refNode;
261
+ break;
262
+ }
263
+ default: {
264
+ throw new TypeError(`Unexpected node ${node.nodeName}`);
265
+ }
266
+ }
267
+ return [document, root, !!shadow];
268
+ };
269
+ var traverseNode = (node, walker, force = false) => {
270
+ if (!node?.nodeType) {
271
+ throw new TypeError(`Unexpected type ${getType(node)}`);
272
+ }
273
+ if (!walker) {
274
+ return null;
275
+ }
276
+ let refNode = walker.currentNode;
277
+ if (refNode === node) {
278
+ return refNode;
279
+ } else if (force || refNode.contains(node)) {
280
+ refNode = walker.nextNode();
281
+ while (refNode) {
282
+ if (refNode === node) {
283
+ break;
284
+ }
285
+ refNode = walker.nextNode();
286
+ }
287
+ return refNode;
288
+ } else {
289
+ if (refNode !== walker.root) {
290
+ let bool;
291
+ while (refNode) {
292
+ if (refNode === node) {
293
+ bool = true;
294
+ break;
295
+ } else if (refNode === walker.root || refNode.contains(node)) {
296
+ break;
297
+ }
298
+ refNode = walker.parentNode();
299
+ }
300
+ if (bool) {
301
+ return refNode;
302
+ }
303
+ }
304
+ if (node.nodeType === ELEMENT_NODE) {
305
+ let bool;
306
+ while (refNode) {
307
+ if (refNode === node) {
308
+ bool = true;
309
+ break;
310
+ }
311
+ refNode = walker.nextNode();
312
+ }
313
+ if (bool) {
314
+ return refNode;
315
+ }
316
+ }
317
+ }
318
+ return null;
319
+ };
320
+ var isCustomElement = (node, opt = {}) => {
321
+ if (!node?.nodeType) {
322
+ throw new TypeError(`Unexpected type ${getType(node)}`);
323
+ }
324
+ if (node.nodeType !== ELEMENT_NODE) {
325
+ return false;
326
+ }
327
+ const { localName, ownerDocument } = node;
328
+ const { formAssociated } = opt;
329
+ const window = ownerDocument.defaultView;
330
+ let elmConstructor;
331
+ const attr = node.getAttribute("is");
332
+ if (attr) {
333
+ elmConstructor = (0, import_is_potential_custom_element_name.default)(attr) && window.customElements.get(attr);
334
+ } else {
335
+ elmConstructor = (0, import_is_potential_custom_element_name.default)(localName) && window.customElements.get(localName);
336
+ }
337
+ if (elmConstructor) {
338
+ if (formAssociated) {
339
+ return !!elmConstructor.formAssociated;
340
+ }
341
+ return true;
342
+ }
343
+ return false;
344
+ };
345
+ var getSlottedTextContent = (node) => {
346
+ if (!node?.nodeType) {
347
+ throw new TypeError(`Unexpected type ${getType(node)}`);
348
+ }
349
+ if (typeof node.assignedNodes !== "function") {
350
+ return null;
351
+ }
352
+ const nodes = node.assignedNodes();
353
+ if (nodes.length) {
354
+ let text = "";
355
+ const l = nodes.length;
356
+ for (let i = 0; i < l; i++) {
357
+ const item = nodes[i];
358
+ text = item.textContent.trim();
359
+ if (text) {
360
+ break;
361
+ }
362
+ }
363
+ return text;
364
+ }
365
+ return node.textContent.trim();
366
+ };
367
+ var getDirectionality = (node) => {
368
+ if (!node?.nodeType) {
369
+ throw new TypeError(`Unexpected type ${getType(node)}`);
370
+ }
371
+ if (node.nodeType !== ELEMENT_NODE) {
372
+ return null;
373
+ }
374
+ const { dir: dirAttr, localName, parentNode } = node;
375
+ const { getEmbeddingLevels } = (0, import_bidi_js.default)();
376
+ if (dirAttr === "ltr" || dirAttr === "rtl") {
377
+ return dirAttr;
378
+ } else if (dirAttr === "auto") {
379
+ let text = "";
380
+ switch (localName) {
381
+ case "input": {
382
+ if (!node.type || KEYS_DIR_AUTO.has(node.type)) {
383
+ text = node.value;
384
+ } else if (KEYS_DIR_LTR.has(node.type)) {
385
+ return "ltr";
386
+ }
387
+ break;
388
+ }
389
+ case "slot": {
390
+ text = getSlottedTextContent(node);
391
+ break;
392
+ }
393
+ case "textarea": {
394
+ text = node.value;
395
+ break;
396
+ }
397
+ default: {
398
+ const items = [].slice.call(node.childNodes);
399
+ for (const item of items) {
400
+ const {
401
+ dir: itemDir,
402
+ localName: itemLocalName,
403
+ nodeType: itemNodeType,
404
+ textContent: itemTextContent
405
+ } = item;
406
+ if (itemNodeType === TEXT_NODE) {
407
+ text = itemTextContent.trim();
408
+ } else if (itemNodeType === ELEMENT_NODE && !KEYS_NODE_DIR_EXCLUDE.has(itemLocalName) && (!itemDir || itemDir !== "ltr" && itemDir !== "rtl")) {
409
+ if (itemLocalName === "slot") {
410
+ text = getSlottedTextContent(item);
411
+ } else {
412
+ text = itemTextContent.trim();
413
+ }
414
+ }
415
+ if (text) {
416
+ break;
417
+ }
418
+ }
419
+ }
420
+ }
421
+ if (text) {
422
+ const {
423
+ paragraphs: [{ level }]
424
+ } = getEmbeddingLevels(text);
425
+ if (level % 2 === 1) {
426
+ return "rtl";
427
+ }
428
+ } else if (parentNode) {
429
+ const { nodeType: parentNodeType } = parentNode;
430
+ if (parentNodeType === ELEMENT_NODE) {
431
+ return getDirectionality(parentNode);
432
+ }
433
+ }
434
+ } else if (localName === "input" && node.type === "tel") {
435
+ return "ltr";
436
+ } else if (localName === "bdi") {
437
+ const text = node.textContent.trim();
438
+ if (text) {
439
+ const {
440
+ paragraphs: [{ level }]
441
+ } = getEmbeddingLevels(text);
442
+ if (level % 2 === 1) {
443
+ return "rtl";
444
+ }
445
+ }
446
+ } else if (parentNode) {
447
+ if (localName === "slot") {
448
+ const text = getSlottedTextContent(node);
449
+ if (text) {
450
+ const {
451
+ paragraphs: [{ level }]
452
+ } = getEmbeddingLevels(text);
453
+ if (level % 2 === 1) {
454
+ return "rtl";
455
+ }
456
+ return "ltr";
457
+ }
458
+ }
459
+ const { nodeType: parentNodeType } = parentNode;
460
+ if (parentNodeType === ELEMENT_NODE) {
461
+ return getDirectionality(parentNode);
462
+ }
463
+ }
464
+ return "ltr";
465
+ };
466
+ var getLanguageAttribute = (node) => {
467
+ if (!node?.nodeType) {
468
+ throw new TypeError(`Unexpected type ${getType(node)}`);
469
+ }
470
+ if (node.nodeType !== ELEMENT_NODE) {
471
+ return null;
472
+ }
473
+ const { contentType } = node.ownerDocument;
474
+ const isHtml = REG_IS_HTML.test(contentType);
475
+ const isXml = REG_IS_XML.test(contentType);
476
+ let isShadow = false;
477
+ let current = node;
478
+ while (current) {
479
+ switch (current.nodeType) {
480
+ case ELEMENT_NODE: {
481
+ if (isHtml && current.hasAttribute("lang")) {
482
+ return current.getAttribute("lang");
483
+ } else if (isXml && current.hasAttribute("xml:lang")) {
484
+ return current.getAttribute("xml:lang");
485
+ }
486
+ break;
487
+ }
488
+ case DOCUMENT_FRAGMENT_NODE: {
489
+ if (current.host) {
490
+ isShadow = true;
491
+ }
492
+ break;
493
+ }
494
+ case DOCUMENT_NODE:
495
+ default: {
496
+ return null;
497
+ }
498
+ }
499
+ if (isShadow) {
500
+ current = current.host;
501
+ isShadow = false;
502
+ } else if (current.parentNode) {
503
+ current = current.parentNode;
504
+ } else {
505
+ break;
506
+ }
507
+ }
508
+ return null;
509
+ };
510
+ var isContentEditable = (node) => {
511
+ if (!node?.nodeType) {
512
+ throw new TypeError(`Unexpected type ${getType(node)}`);
513
+ }
514
+ if (node.nodeType !== ELEMENT_NODE) {
515
+ return false;
516
+ }
517
+ if (typeof node.isContentEditable === "boolean") {
518
+ return node.isContentEditable;
519
+ } else if (node.ownerDocument.designMode === "on") {
520
+ return true;
521
+ } else {
522
+ let attr;
523
+ if (node.hasAttribute("contenteditable")) {
524
+ attr = node.getAttribute("contenteditable");
525
+ } else {
526
+ attr = "inherit";
527
+ }
528
+ switch (attr) {
529
+ case "":
530
+ case "true": {
531
+ return true;
532
+ }
533
+ case "plaintext-only": {
534
+ return true;
535
+ }
536
+ case "false": {
537
+ return false;
538
+ }
539
+ default: {
540
+ if (node?.parentNode?.nodeType === ELEMENT_NODE) {
541
+ return isContentEditable(node.parentNode);
542
+ }
543
+ return false;
544
+ }
545
+ }
546
+ }
547
+ };
548
+ var isVisible = (node) => {
549
+ if (node?.nodeType !== ELEMENT_NODE) {
550
+ return false;
551
+ }
552
+ const window = node.ownerDocument.defaultView;
553
+ const { display, visibility } = window.getComputedStyle(node);
554
+ if (display !== "none" && visibility === "visible") {
555
+ return true;
556
+ }
557
+ return false;
558
+ };
559
+ var isFocusVisible = (node) => {
560
+ if (node?.nodeType !== ELEMENT_NODE) {
561
+ return false;
562
+ }
563
+ const { localName, type } = node;
564
+ switch (localName) {
565
+ case "input": {
566
+ if (!type || KEYS_INPUT_EDIT.has(type)) {
567
+ return true;
568
+ }
569
+ return false;
570
+ }
571
+ case "textarea": {
572
+ return true;
573
+ }
574
+ default: {
575
+ return isContentEditable(node);
576
+ }
577
+ }
578
+ };
579
+ var isFocusableArea = (node) => {
580
+ if (node?.nodeType !== ELEMENT_NODE) {
581
+ return false;
582
+ }
583
+ if (!node.isConnected) {
584
+ return false;
585
+ }
586
+ const window = node.ownerDocument.defaultView;
587
+ if (node instanceof window.HTMLElement) {
588
+ if (Number.isInteger(parseInt(node.getAttribute("tabindex")))) {
589
+ return true;
590
+ }
591
+ if (isContentEditable(node)) {
592
+ return true;
593
+ }
594
+ const { localName, parentNode } = node;
595
+ switch (localName) {
596
+ case "a": {
597
+ if (node.href || node.hasAttribute("href")) {
598
+ return true;
599
+ }
600
+ return false;
601
+ }
602
+ case "iframe": {
603
+ return true;
604
+ }
605
+ case "input": {
606
+ if (node.disabled || node.hasAttribute("disabled") || node.hidden || node.hasAttribute("hidden")) {
607
+ return false;
608
+ }
609
+ return true;
610
+ }
611
+ case "summary": {
612
+ if (parentNode.localName === "details") {
613
+ let child = parentNode.firstElementChild;
614
+ let bool = false;
615
+ while (child) {
616
+ if (child.localName === "summary") {
617
+ bool = child === node;
618
+ break;
619
+ }
620
+ child = child.nextElementSibling;
621
+ }
622
+ return bool;
623
+ }
624
+ return false;
625
+ }
626
+ default: {
627
+ if (KEYS_NODE_FOCUSABLE.has(localName) && !(node.disabled || node.hasAttribute("disabled"))) {
628
+ return true;
629
+ }
630
+ }
631
+ }
632
+ } else if (node instanceof window.SVGElement) {
633
+ if (Number.isInteger(parseInt(node.getAttributeNS(null, "tabindex")))) {
634
+ const ns = "http://www.w3.org/2000/svg";
635
+ let bool;
636
+ let refNode = node;
637
+ while (refNode.namespaceURI === ns) {
638
+ bool = KEYS_NODE_FOCUSABLE_SVG.has(refNode.localName);
639
+ if (bool) {
640
+ break;
641
+ }
642
+ if (refNode?.parentNode?.namespaceURI === ns) {
643
+ refNode = refNode.parentNode;
644
+ } else {
645
+ break;
646
+ }
647
+ }
648
+ if (bool) {
649
+ return false;
650
+ }
651
+ return true;
652
+ }
653
+ if (node.localName === "a" && (node.href || node.hasAttributeNS(null, "href"))) {
654
+ return true;
655
+ }
656
+ }
657
+ return false;
658
+ };
659
+ var getNamespaceURI = (ns, node) => {
660
+ if (typeof ns !== "string") {
661
+ throw new TypeError(`Unexpected type ${getType(ns)}`);
662
+ } else if (!node?.nodeType) {
663
+ throw new TypeError(`Unexpected type ${getType(node)}`);
664
+ }
665
+ if (!ns || node.nodeType !== ELEMENT_NODE) {
666
+ return null;
667
+ }
668
+ const { attributes } = node;
669
+ let res;
670
+ for (const attr of attributes) {
671
+ const { name, namespaceURI, prefix, value } = attr;
672
+ if (name === `xmlns:${ns}`) {
673
+ res = value;
674
+ } else if (prefix === ns) {
675
+ res = namespaceURI;
676
+ }
677
+ if (res) {
678
+ break;
679
+ }
680
+ }
681
+ return res ?? null;
682
+ };
683
+ var isNamespaceDeclared = (ns = "", node = {}) => {
684
+ if (!ns || typeof ns !== "string" || node?.nodeType !== ELEMENT_NODE) {
685
+ return false;
686
+ }
687
+ if (node.lookupNamespaceURI(ns)) {
688
+ return true;
689
+ }
690
+ const root = node.ownerDocument.documentElement;
691
+ let parent = node;
692
+ let res;
693
+ while (parent) {
694
+ res = getNamespaceURI(ns, parent);
695
+ if (res || parent === root) {
696
+ break;
697
+ }
698
+ parent = parent.parentNode;
699
+ }
700
+ return !!res;
701
+ };
702
+ var isPreceding = (nodeA, nodeB) => {
703
+ if (!nodeA?.nodeType) {
704
+ throw new TypeError(`Unexpected type ${getType(nodeA)}`);
705
+ } else if (!nodeB?.nodeType) {
706
+ throw new TypeError(`Unexpected type ${getType(nodeB)}`);
707
+ }
708
+ if (nodeA.nodeType !== ELEMENT_NODE || nodeB.nodeType !== ELEMENT_NODE) {
709
+ return false;
710
+ }
711
+ const posBit = nodeB.compareDocumentPosition(nodeA);
712
+ const res = posBit & DOCUMENT_POSITION_PRECEDING || posBit & DOCUMENT_POSITION_CONTAINS;
713
+ return !!res;
714
+ };
715
+ var compareNodes = (a, b) => {
716
+ if (isPreceding(b, a)) {
717
+ return 1;
718
+ }
719
+ return -1;
720
+ };
721
+ var sortNodes = (nodes = []) => {
722
+ const arr = [...nodes];
723
+ if (arr.length > 1) {
724
+ arr.sort(compareNodes);
725
+ }
726
+ return arr;
727
+ };
728
+ var initNwsapi = (window, document) => {
729
+ if (!window?.DOMException) {
730
+ throw new TypeError(`Unexpected global object ${getType(window)}`);
731
+ }
732
+ if (document?.nodeType !== DOCUMENT_NODE) {
733
+ document = window.document;
734
+ }
735
+ const nw = (0, import_nwsapi.default)({
736
+ document,
737
+ DOMException: window.DOMException
738
+ });
739
+ nw.configure({
740
+ LOGERRORS: false
741
+ });
742
+ return nw;
743
+ };
744
+ var filterSelector = (selector, target) => {
745
+ const isQuerySelectorType = target === TARGET_FIRST || target === TARGET_ALL;
746
+ if (!selector || typeof selector !== "string" || /null|undefined/.test(selector)) {
747
+ return false;
748
+ }
749
+ if (selector.includes("[")) {
750
+ const index = selector.lastIndexOf("[");
751
+ const sel = selector.substring(index);
752
+ if (sel.indexOf("]") < 0) {
753
+ return false;
754
+ }
755
+ }
756
+ if (selector.includes("/") || REG_EXCLUDE_BASIC.test(selector)) {
757
+ return false;
758
+ }
759
+ if (selector.includes(":")) {
760
+ let complex = false;
761
+ if (target !== isQuerySelectorType) {
762
+ complex = REG_COMPLEX.test(selector);
763
+ }
764
+ if (isQuerySelectorType && REG_DESCEND.test(selector) && !REG_SIBLING.test(selector)) {
765
+ return false;
766
+ } else if (!isQuerySelectorType && /:has\(/.test(selector)) {
767
+ if (!complex || REG_LOGIC_HAS_COMPOUND.test(selector)) {
768
+ return false;
769
+ }
770
+ return REG_END_WITH_HAS.test(selector);
771
+ } else if (/:(?:is|not)\(/.test(selector)) {
772
+ if (complex) {
773
+ return !REG_LOGIC_COMPLEX.test(selector);
774
+ } else {
775
+ return !REG_LOGIC_COMPOUND.test(selector);
776
+ }
777
+ } else {
778
+ return !REG_WO_LOGICAL.test(selector);
779
+ }
780
+ }
781
+ return true;
782
+ };
783
+
784
+ // src/js/parser.js
785
+ var import_css_tree = require("css-tree");
786
+ var AST_SORT_ORDER = /* @__PURE__ */ new Map([
787
+ [PS_ELEMENT_SELECTOR, BIT_01],
788
+ [ID_SELECTOR, BIT_02],
789
+ [CLASS_SELECTOR, BIT_04],
790
+ [TYPE_SELECTOR, BIT_08],
791
+ [ATTR_SELECTOR, BIT_16],
792
+ [PS_CLASS_SELECTOR, BIT_32]
793
+ ]);
794
+ var KEYS_PS_CLASS_STATE = /* @__PURE__ */ new Set([
795
+ "checked",
796
+ "closed",
797
+ "disabled",
798
+ "empty",
799
+ "enabled",
800
+ "in-range",
801
+ "indeterminate",
802
+ "invalid",
803
+ "open",
804
+ "out-of-range",
805
+ "placeholder-shown",
806
+ "read-only",
807
+ "read-write",
808
+ "valid"
809
+ ]);
810
+ var KEYS_SHADOW_HOST = /* @__PURE__ */ new Set(["host", "host-context"]);
811
+ var REG_EMPTY_PS_FUNC = /(?<=:(?:dir|has|host(?:-context)?|is|lang|not|nth-(?:last-)?(?:child|of-type)|where))\(\s+\)/g;
812
+ var REG_SHADOW_PS_ELEMENT = /^part|slotted$/;
813
+ var U_FFFD = "\uFFFD";
814
+ var unescapeSelector = (selector = "") => {
815
+ if (typeof selector === "string" && selector.indexOf("\\", 0) >= 0) {
816
+ const arr = selector.split("\\");
817
+ const selectorItems = [arr[0]];
818
+ const l = arr.length;
819
+ for (let i = 1; i < l; i++) {
820
+ const item = arr[i];
821
+ if (item === "" && i === l - 1) {
822
+ selectorItems.push(U_FFFD);
823
+ } else {
824
+ const hexExists = /^([\da-f]{1,6}\s?)/i.exec(item);
825
+ if (hexExists) {
826
+ const [, hex] = hexExists;
827
+ let str;
828
+ try {
829
+ const low = parseInt("D800", HEX);
830
+ const high = parseInt("DFFF", HEX);
831
+ const deci = parseInt(hex, HEX);
832
+ if (deci === 0 || deci >= low && deci <= high) {
833
+ str = U_FFFD;
834
+ } else {
835
+ str = String.fromCodePoint(deci);
836
+ }
837
+ } catch (e) {
838
+ str = U_FFFD;
839
+ }
840
+ let postStr = "";
841
+ if (item.length > hex.length) {
842
+ postStr = item.substring(hex.length);
843
+ }
844
+ selectorItems.push(`${str}${postStr}`);
845
+ } else if (/^[\n\r\f]/.test(item)) {
846
+ selectorItems.push(`\\${item}`);
847
+ } else {
848
+ selectorItems.push(item);
849
+ }
850
+ }
851
+ }
852
+ return selectorItems.join("");
853
+ }
854
+ return selector;
855
+ };
856
+ var preprocess = (value) => {
857
+ if (typeof value !== "string") {
858
+ if (value === void 0 || value === null) {
859
+ return getType(value).toLowerCase();
860
+ } else if (Array.isArray(value)) {
861
+ return value.join(",");
862
+ } else if (Object.hasOwn(value, "toString")) {
863
+ return value.toString();
864
+ } else {
865
+ throw new DOMException(`Invalid selector ${value}`, SYNTAX_ERR);
866
+ }
867
+ }
868
+ let selector = value;
869
+ let index = 0;
870
+ while (index >= 0) {
871
+ index = selector.indexOf("#", index);
872
+ if (index < 0) {
873
+ break;
874
+ }
875
+ const preHash = selector.substring(0, index + 1);
876
+ let postHash = selector.substring(index + 1);
877
+ const codePoint = postHash.codePointAt(0);
878
+ if (codePoint > BIT_FFFF) {
879
+ const str = `\\${codePoint.toString(HEX)} `;
880
+ if (postHash.length === DUO) {
881
+ postHash = str;
882
+ } else {
883
+ postHash = `${str}${postHash.substring(DUO)}`;
884
+ }
885
+ }
886
+ selector = `${preHash}${postHash}`;
887
+ index++;
888
+ }
889
+ return selector.replace(/\f|\r\n?/g, "\n").replace(/[\0\uD800-\uDFFF]|\\$/g, U_FFFD).replace(/\x26/g, ":scope");
890
+ };
891
+ var parseSelector = (sel) => {
892
+ const selector = preprocess(sel);
893
+ if (/^$|^\s*>|,\s*$/.test(selector)) {
894
+ throw new DOMException(`Invalid selector ${selector}`, SYNTAX_ERR);
895
+ }
896
+ try {
897
+ const ast = cssTree2.parse(selector, {
898
+ context: "selectorList",
899
+ parseCustomProperty: true
900
+ });
901
+ return cssTree2.toPlainObject(ast);
902
+ } catch (e) {
903
+ const { message } = e;
904
+ if (/^(?:"\]"|Attribute selector [()\s,=~^$*|]+) is expected$/.test(
905
+ message
906
+ ) && !selector.endsWith("]")) {
907
+ const index = selector.lastIndexOf("[");
908
+ const selPart = selector.substring(index);
909
+ if (selPart.includes('"')) {
910
+ const quotes = selPart.match(/"/g).length;
911
+ if (quotes % 2) {
912
+ return parseSelector(`${selector}"]`);
913
+ }
914
+ return parseSelector(`${selector}]`);
915
+ }
916
+ return parseSelector(`${selector}]`);
917
+ } else if (message === '")" is expected') {
918
+ if (REG_EMPTY_PS_FUNC.test(selector)) {
919
+ return parseSelector(`${selector.replaceAll(REG_EMPTY_PS_FUNC, "()")}`);
920
+ } else if (!selector.endsWith(")")) {
921
+ return parseSelector(`${selector})`);
922
+ } else {
923
+ throw new DOMException(`Invalid selector ${selector}`, SYNTAX_ERR);
924
+ }
925
+ } else {
926
+ throw new DOMException(`Invalid selector ${selector}`, SYNTAX_ERR);
927
+ }
928
+ }
929
+ };
930
+ var walkAST = (ast = {}) => {
931
+ const branches = /* @__PURE__ */ new Set();
932
+ const info = {
933
+ hasForgivenPseudoFunc: false,
934
+ hasHasPseudoFunc: false,
935
+ hasLogicalPseudoFunc: false,
936
+ hasNotPseudoFunc: false,
937
+ hasNthChildOfSelector: false,
938
+ hasNestedSelector: false,
939
+ hasStatePseudoClass: false
940
+ };
941
+ const opt = {
942
+ enter(node) {
943
+ switch (node.type) {
944
+ case CLASS_SELECTOR: {
945
+ if (/^-?\d/.test(node.name)) {
946
+ throw new DOMException(
947
+ `Invalid selector .${node.name}`,
948
+ SYNTAX_ERR
949
+ );
950
+ }
951
+ break;
952
+ }
953
+ case ID_SELECTOR: {
954
+ if (/^-?\d/.test(node.name)) {
955
+ throw new DOMException(
956
+ `Invalid selector #${node.name}`,
957
+ SYNTAX_ERR
958
+ );
959
+ }
960
+ break;
961
+ }
962
+ case PS_CLASS_SELECTOR: {
963
+ if (KEYS_LOGICAL.has(node.name)) {
964
+ info.hasNestedSelector = true;
965
+ info.hasLogicalPseudoFunc = true;
966
+ if (node.name === "has") {
967
+ info.hasHasPseudoFunc = true;
968
+ } else if (node.name === "not") {
969
+ info.hasNotPseudoFunc = true;
970
+ } else {
971
+ info.hasForgivenPseudoFunc = true;
972
+ }
973
+ } else if (KEYS_PS_CLASS_STATE.has(node.name)) {
974
+ info.hasStatePseudoClass = true;
975
+ } else if (KEYS_SHADOW_HOST.has(node.name) && Array.isArray(node.children) && node.children.length) {
976
+ info.hasNestedSelector = true;
977
+ }
978
+ break;
979
+ }
980
+ case PS_ELEMENT_SELECTOR: {
981
+ if (REG_SHADOW_PS_ELEMENT.test(node.name)) {
982
+ info.hasNestedSelector = true;
983
+ }
984
+ break;
985
+ }
986
+ case NTH: {
987
+ if (node.selector) {
988
+ info.hasNestedSelector = true;
989
+ info.hasNthChildOfSelector = true;
990
+ }
991
+ break;
992
+ }
993
+ case SELECTOR: {
994
+ branches.add(node.children);
995
+ break;
996
+ }
997
+ default:
998
+ }
999
+ }
1000
+ };
1001
+ cssTree2.walk(ast, opt);
1002
+ if (info.hasNestedSelector === true) {
1003
+ cssTree2.findAll(ast, (node, item, list) => {
1004
+ if (list) {
1005
+ if (node.type === PS_CLASS_SELECTOR && KEYS_LOGICAL.has(node.name)) {
1006
+ const itemList = list.filter((i) => {
1007
+ const { name, type } = i;
1008
+ return type === PS_CLASS_SELECTOR && KEYS_LOGICAL.has(name);
1009
+ });
1010
+ for (const { children } of itemList) {
1011
+ for (const { children: grandChildren } of children) {
1012
+ for (const { children: greatGrandChildren } of grandChildren) {
1013
+ if (branches.has(greatGrandChildren)) {
1014
+ branches.delete(greatGrandChildren);
1015
+ }
1016
+ }
1017
+ }
1018
+ }
1019
+ } else if (node.type === PS_CLASS_SELECTOR && KEYS_SHADOW_HOST.has(node.name) && Array.isArray(node.children) && node.children.length) {
1020
+ const itemList = list.filter((i) => {
1021
+ const { children, name, type } = i;
1022
+ const res = type === PS_CLASS_SELECTOR && KEYS_SHADOW_HOST.has(name) && Array.isArray(children) && children.length;
1023
+ return res;
1024
+ });
1025
+ for (const { children } of itemList) {
1026
+ for (const { children: grandChildren } of children) {
1027
+ if (branches.has(grandChildren)) {
1028
+ branches.delete(grandChildren);
1029
+ }
1030
+ }
1031
+ }
1032
+ } else if (node.type === PS_ELEMENT_SELECTOR && REG_SHADOW_PS_ELEMENT.test(node.name)) {
1033
+ const itemList = list.filter((i) => {
1034
+ const { name, type } = i;
1035
+ const res = type === PS_ELEMENT_SELECTOR && REG_SHADOW_PS_ELEMENT.test(name);
1036
+ return res;
1037
+ });
1038
+ for (const { children } of itemList) {
1039
+ for (const { children: grandChildren } of children) {
1040
+ if (branches.has(grandChildren)) {
1041
+ branches.delete(grandChildren);
1042
+ }
1043
+ }
1044
+ }
1045
+ } else if (node.type === NTH && node.selector) {
1046
+ const itemList = list.filter((i) => {
1047
+ const { selector, type } = i;
1048
+ const res = type === NTH && selector;
1049
+ return res;
1050
+ });
1051
+ for (const { selector } of itemList) {
1052
+ const { children } = selector;
1053
+ for (const { children: grandChildren } of children) {
1054
+ if (branches.has(grandChildren)) {
1055
+ branches.delete(grandChildren);
1056
+ }
1057
+ }
1058
+ }
1059
+ }
1060
+ }
1061
+ });
1062
+ }
1063
+ return {
1064
+ info,
1065
+ branches: [...branches]
1066
+ };
1067
+ };
1068
+ var compareASTNodes = (a, b) => {
1069
+ const bitA = AST_SORT_ORDER.get(a.type);
1070
+ const bitB = AST_SORT_ORDER.get(b.type);
1071
+ if (bitA === bitB) {
1072
+ return 0;
1073
+ } else if (bitA > bitB) {
1074
+ return 1;
1075
+ } else {
1076
+ return -1;
1077
+ }
1078
+ };
1079
+ var sortAST = (asts) => {
1080
+ const arr = [...asts];
1081
+ if (arr.length > 1) {
1082
+ arr.sort(compareASTNodes);
1083
+ }
1084
+ return arr;
1085
+ };
1086
+ var parseAstName = (selector) => {
1087
+ let prefix;
1088
+ let localName;
1089
+ if (selector && typeof selector === "string") {
1090
+ if (selector.indexOf("|") > -1) {
1091
+ [prefix, localName] = selector.split("|");
1092
+ } else {
1093
+ prefix = "*";
1094
+ localName = selector;
1095
+ }
1096
+ } else {
1097
+ throw new DOMException(`Invalid selector ${selector}`, SYNTAX_ERR);
1098
+ }
1099
+ return {
1100
+ prefix,
1101
+ localName
1102
+ };
1103
+ };
1104
+
1105
+ // src/js/matcher.js
1106
+ var KEYS_FORM_PS_DISABLED = /* @__PURE__ */ new Set([
1107
+ ...FORM_PARTS,
1108
+ "fieldset",
1109
+ "optgroup",
1110
+ "option"
1111
+ ]);
1112
+ var KEYS_INPUT_EDIT2 = new Set(INPUT_EDIT);
1113
+ var REG_LANG_VALID = new RegExp(`^(?:\\*-)?${ALPHA_NUM}${LANG_PART}$`, "i");
1114
+ var REG_TAG_NAME = /[A-Z][\\w-]*/i;
1115
+ var matchPseudoElementSelector = (astName, astType, opt = {}) => {
1116
+ const { forgive, globalObject, warn } = opt;
1117
+ if (astType !== PS_ELEMENT_SELECTOR) {
1118
+ throw new TypeError(`Unexpected ast type ${getType(astType)}`);
1119
+ }
1120
+ switch (astName) {
1121
+ case "after":
1122
+ case "backdrop":
1123
+ case "before":
1124
+ case "cue":
1125
+ case "cue-region":
1126
+ case "first-letter":
1127
+ case "first-line":
1128
+ case "file-selector-button":
1129
+ case "marker":
1130
+ case "placeholder":
1131
+ case "selection":
1132
+ case "target-text": {
1133
+ if (warn) {
1134
+ throw generateException(
1135
+ `Unsupported pseudo-element ::${astName}`,
1136
+ NOT_SUPPORTED_ERR,
1137
+ globalObject
1138
+ );
1139
+ }
1140
+ break;
1141
+ }
1142
+ case "part":
1143
+ case "slotted": {
1144
+ if (warn) {
1145
+ throw generateException(
1146
+ `Unsupported pseudo-element ::${astName}()`,
1147
+ NOT_SUPPORTED_ERR,
1148
+ globalObject
1149
+ );
1150
+ }
1151
+ break;
1152
+ }
1153
+ default: {
1154
+ if (astName.startsWith("-webkit-")) {
1155
+ if (warn) {
1156
+ throw generateException(
1157
+ `Unsupported pseudo-element ::${astName}`,
1158
+ NOT_SUPPORTED_ERR,
1159
+ globalObject
1160
+ );
1161
+ }
1162
+ } else if (!forgive) {
1163
+ throw generateException(
1164
+ `Unknown pseudo-element ::${astName}`,
1165
+ SYNTAX_ERR,
1166
+ globalObject
1167
+ );
1168
+ }
1169
+ }
1170
+ }
1171
+ };
1172
+ var matchDirectionPseudoClass = (ast, node) => {
1173
+ const { name } = ast;
1174
+ if (!name) {
1175
+ const type = name === "" ? "(empty String)" : getType(name);
1176
+ throw new TypeError(`Unexpected ast type ${type}`);
1177
+ }
1178
+ const dir = getDirectionality(node);
1179
+ return name === dir;
1180
+ };
1181
+ var matchLanguagePseudoClass = (ast, node) => {
1182
+ const { name, type, value } = ast;
1183
+ let langPattern;
1184
+ if (type === STRING && value) {
1185
+ langPattern = value;
1186
+ } else if (type === IDENT && name) {
1187
+ langPattern = unescapeSelector(name);
1188
+ }
1189
+ if (typeof langPattern !== "string") {
1190
+ return false;
1191
+ }
1192
+ const elementLang = getLanguageAttribute(node);
1193
+ if (elementLang === null) {
1194
+ return false;
1195
+ }
1196
+ if (langPattern === "*") {
1197
+ return elementLang !== "";
1198
+ }
1199
+ if (!REG_LANG_VALID.test(langPattern)) {
1200
+ return false;
1201
+ }
1202
+ let matcherRegex;
1203
+ if (langPattern.indexOf("-") > -1) {
1204
+ const [langMain, langSub, ...langRest] = langPattern.split("-");
1205
+ const extendedMain = langMain === "*" ? `${ALPHA_NUM}${LANG_PART}` : `${langMain}${LANG_PART}`;
1206
+ const extendedSub = `-${langSub}${LANG_PART}`;
1207
+ let extendedRest = "";
1208
+ for (let i = 0; i < langRest.length; i++) {
1209
+ extendedRest += `-${langRest[i]}${LANG_PART}`;
1210
+ }
1211
+ matcherRegex = new RegExp(
1212
+ `^${extendedMain}${extendedSub}${extendedRest}$`,
1213
+ "i"
1214
+ );
1215
+ } else {
1216
+ matcherRegex = new RegExp(`^${langPattern}${LANG_PART}$`, "i");
1217
+ }
1218
+ return matcherRegex.test(elementLang);
1219
+ };
1220
+ var matchDisabledPseudoClass = (astName, node) => {
1221
+ const { localName, parentNode } = node;
1222
+ if (!KEYS_FORM_PS_DISABLED.has(localName) && !isCustomElement(node, { formAssociated: true })) {
1223
+ return false;
1224
+ }
1225
+ let isDisabled = false;
1226
+ if (node.disabled || node.hasAttribute("disabled")) {
1227
+ isDisabled = true;
1228
+ } else if (localName === "option") {
1229
+ if (parentNode && parentNode.localName === "optgroup" && (parentNode.disabled || parentNode.hasAttribute("disabled"))) {
1230
+ isDisabled = true;
1231
+ }
1232
+ } else if (localName !== "optgroup") {
1233
+ let current = parentNode;
1234
+ while (current) {
1235
+ if (current.localName === "fieldset" && (current.disabled || current.hasAttribute("disabled"))) {
1236
+ let legend;
1237
+ let element = current.firstElementChild;
1238
+ while (element) {
1239
+ if (element.localName === "legend") {
1240
+ legend = element;
1241
+ break;
1242
+ }
1243
+ element = element.nextElementSibling;
1244
+ }
1245
+ if (!legend || !legend.contains(node)) {
1246
+ isDisabled = true;
1247
+ }
1248
+ break;
1249
+ }
1250
+ current = current.parentNode;
1251
+ }
1252
+ }
1253
+ if (astName === "disabled") {
1254
+ return isDisabled;
1255
+ }
1256
+ return !isDisabled;
1257
+ };
1258
+ var matchReadOnlyPseudoClass = (astName, node) => {
1259
+ const { localName } = node;
1260
+ let isReadOnly = false;
1261
+ switch (localName) {
1262
+ case "textarea":
1263
+ case "input": {
1264
+ const isEditableInput = !node.type || KEYS_INPUT_EDIT2.has(node.type);
1265
+ if (localName === "textarea" || isEditableInput) {
1266
+ isReadOnly = node.readOnly || node.hasAttribute("readonly") || node.disabled || node.hasAttribute("disabled");
1267
+ } else {
1268
+ isReadOnly = true;
1269
+ }
1270
+ break;
1271
+ }
1272
+ default: {
1273
+ isReadOnly = !isContentEditable(node);
1274
+ }
1275
+ }
1276
+ if (astName === "read-only") {
1277
+ return isReadOnly;
1278
+ }
1279
+ return !isReadOnly;
1280
+ };
1281
+ var matchAttributeSelector = (ast, node, opt = {}) => {
1282
+ const {
1283
+ flags: astFlags,
1284
+ matcher: astMatcher,
1285
+ name: astName,
1286
+ value: astValue
1287
+ } = ast;
1288
+ const { check, forgive, globalObject } = opt;
1289
+ if (typeof astFlags === "string" && !/^[is]$/i.test(astFlags) && !forgive) {
1290
+ const css = (0, import_css_tree.generate)(ast);
1291
+ throw generateException(
1292
+ `Invalid selector ${css}`,
1293
+ SYNTAX_ERR,
1294
+ globalObject
1295
+ );
1296
+ }
1297
+ const { attributes } = node;
1298
+ if (!attributes || !attributes.length) {
1299
+ return false;
1300
+ }
1301
+ const contentType = node.ownerDocument.contentType;
1302
+ let caseInsensitive;
1303
+ if (contentType === "text/html") {
1304
+ if (typeof astFlags === "string" && /^s$/i.test(astFlags)) {
1305
+ caseInsensitive = false;
1306
+ } else {
1307
+ caseInsensitive = true;
1308
+ }
1309
+ } else if (typeof astFlags === "string" && /^i$/i.test(astFlags)) {
1310
+ caseInsensitive = true;
1311
+ } else {
1312
+ caseInsensitive = false;
1313
+ }
1314
+ let astAttrName = unescapeSelector(astName.name);
1315
+ if (caseInsensitive) {
1316
+ astAttrName = astAttrName.toLowerCase();
1317
+ }
1318
+ const attrValues = /* @__PURE__ */ new Set();
1319
+ if (astAttrName.indexOf("|") > -1) {
1320
+ const { prefix: astPrefix, localName: astLocalName } = parseAstName(astAttrName);
1321
+ for (const item of attributes) {
1322
+ let { name: itemName, value: itemValue } = item;
1323
+ if (caseInsensitive) {
1324
+ itemName = itemName.toLowerCase();
1325
+ itemValue = itemValue.toLowerCase();
1326
+ }
1327
+ switch (astPrefix) {
1328
+ case "": {
1329
+ if (astLocalName === itemName) {
1330
+ attrValues.add(itemValue);
1331
+ }
1332
+ break;
1333
+ }
1334
+ case "*": {
1335
+ if (itemName.indexOf(":") > -1) {
1336
+ const [, ...restItemName] = itemName.split(":");
1337
+ const itemLocalName = restItemName.join(":").replace(/^:/, "");
1338
+ if (itemLocalName === astLocalName) {
1339
+ attrValues.add(itemValue);
1340
+ }
1341
+ } else if (astLocalName === itemName) {
1342
+ attrValues.add(itemValue);
1343
+ }
1344
+ break;
1345
+ }
1346
+ default: {
1347
+ if (!check) {
1348
+ if (forgive) {
1349
+ return false;
1350
+ }
1351
+ const css = (0, import_css_tree.generate)(ast);
1352
+ throw generateException(
1353
+ `Invalid selector ${css}`,
1354
+ SYNTAX_ERR,
1355
+ globalObject
1356
+ );
1357
+ }
1358
+ if (itemName.indexOf(":") > -1) {
1359
+ const [itemPrefix, ...restItemName] = itemName.split(":");
1360
+ const itemLocalName = restItemName.join(":").replace(/^:/, "");
1361
+ if (itemPrefix === "xml" && itemLocalName === "lang") {
1362
+ continue;
1363
+ } else if (astPrefix === itemPrefix && astLocalName === itemLocalName) {
1364
+ const namespaceDeclared = isNamespaceDeclared(astPrefix, node);
1365
+ if (namespaceDeclared) {
1366
+ attrValues.add(itemValue);
1367
+ }
1368
+ }
1369
+ }
1370
+ }
1371
+ }
1372
+ }
1373
+ } else {
1374
+ for (let { name: itemName, value: itemValue } of attributes) {
1375
+ if (caseInsensitive) {
1376
+ itemName = itemName.toLowerCase();
1377
+ itemValue = itemValue.toLowerCase();
1378
+ }
1379
+ if (itemName.indexOf(":") > -1) {
1380
+ const [itemPrefix, ...restItemName] = itemName.split(":");
1381
+ const itemLocalName = restItemName.join(":").replace(/^:/, "");
1382
+ if (!itemPrefix && astAttrName === `:${itemLocalName}`) {
1383
+ attrValues.add(itemValue);
1384
+ } else if (itemPrefix === "xml" && itemLocalName === "lang") {
1385
+ continue;
1386
+ } else if (astAttrName === itemLocalName) {
1387
+ attrValues.add(itemValue);
1388
+ }
1389
+ } else if (astAttrName === itemName) {
1390
+ attrValues.add(itemValue);
1391
+ }
1392
+ }
1393
+ }
1394
+ if (!attrValues.size) {
1395
+ return false;
1396
+ }
1397
+ const { name: astIdentValue, value: astStringValue } = astValue ?? {};
1398
+ let attrValue;
1399
+ if (astIdentValue) {
1400
+ if (caseInsensitive) {
1401
+ attrValue = astIdentValue.toLowerCase();
1402
+ } else {
1403
+ attrValue = astIdentValue;
1404
+ }
1405
+ } else if (astStringValue) {
1406
+ if (caseInsensitive) {
1407
+ attrValue = astStringValue.toLowerCase();
1408
+ } else {
1409
+ attrValue = astStringValue;
1410
+ }
1411
+ } else if (astStringValue === "") {
1412
+ attrValue = astStringValue;
1413
+ }
1414
+ switch (astMatcher) {
1415
+ case "=": {
1416
+ return typeof attrValue === "string" && attrValues.has(attrValue);
1417
+ }
1418
+ case "~=": {
1419
+ if (attrValue && typeof attrValue === "string") {
1420
+ for (const value of attrValues) {
1421
+ const item = new Set(value.split(/\s+/));
1422
+ if (item.has(attrValue)) {
1423
+ return true;
1424
+ }
1425
+ }
1426
+ }
1427
+ return false;
1428
+ }
1429
+ case "|=": {
1430
+ if (attrValue && typeof attrValue === "string") {
1431
+ for (const value of attrValues) {
1432
+ if (value === attrValue || value.startsWith(`${attrValue}-`)) {
1433
+ return true;
1434
+ }
1435
+ }
1436
+ }
1437
+ return false;
1438
+ }
1439
+ case "^=": {
1440
+ if (attrValue && typeof attrValue === "string") {
1441
+ for (const value of attrValues) {
1442
+ if (value.startsWith(`${attrValue}`)) {
1443
+ return true;
1444
+ }
1445
+ }
1446
+ }
1447
+ return false;
1448
+ }
1449
+ case "$=": {
1450
+ if (attrValue && typeof attrValue === "string") {
1451
+ for (const value of attrValues) {
1452
+ if (value.endsWith(`${attrValue}`)) {
1453
+ return true;
1454
+ }
1455
+ }
1456
+ }
1457
+ return false;
1458
+ }
1459
+ case "*=": {
1460
+ if (attrValue && typeof attrValue === "string") {
1461
+ for (const value of attrValues) {
1462
+ if (value.includes(`${attrValue}`)) {
1463
+ return true;
1464
+ }
1465
+ }
1466
+ }
1467
+ return false;
1468
+ }
1469
+ case null:
1470
+ default: {
1471
+ return true;
1472
+ }
1473
+ }
1474
+ };
1475
+ var matchTypeSelector = (ast, node, opt = {}) => {
1476
+ const astName = unescapeSelector(ast.name);
1477
+ const { localName, namespaceURI, prefix } = node;
1478
+ const { check, forgive, globalObject } = opt;
1479
+ let { prefix: astPrefix, localName: astLocalName } = parseAstName(
1480
+ astName,
1481
+ node
1482
+ );
1483
+ if (node.ownerDocument.contentType === "text/html" && (!namespaceURI || namespaceURI === "http://www.w3.org/1999/xhtml") && REG_TAG_NAME.test(localName)) {
1484
+ astPrefix = astPrefix.toLowerCase();
1485
+ astLocalName = astLocalName.toLowerCase();
1486
+ }
1487
+ let nodePrefix;
1488
+ let nodeLocalName;
1489
+ if (localName.indexOf(":") > -1) {
1490
+ [nodePrefix, nodeLocalName] = localName.split(":");
1491
+ } else {
1492
+ nodePrefix = prefix || "";
1493
+ nodeLocalName = localName;
1494
+ }
1495
+ switch (astPrefix) {
1496
+ case "": {
1497
+ if (!nodePrefix && !namespaceURI && (astLocalName === "*" || astLocalName === nodeLocalName)) {
1498
+ return true;
1499
+ }
1500
+ return false;
1501
+ }
1502
+ case "*": {
1503
+ if (astLocalName === "*" || astLocalName === nodeLocalName) {
1504
+ return true;
1505
+ }
1506
+ return false;
1507
+ }
1508
+ default: {
1509
+ if (!check) {
1510
+ if (forgive) {
1511
+ return false;
1512
+ }
1513
+ const css = (0, import_css_tree.generate)(ast);
1514
+ throw generateException(
1515
+ `Invalid selector ${css}`,
1516
+ SYNTAX_ERR,
1517
+ globalObject
1518
+ );
1519
+ }
1520
+ const astNS = node.lookupNamespaceURI(astPrefix);
1521
+ const nodeNS = node.lookupNamespaceURI(nodePrefix);
1522
+ if (astNS === nodeNS && astPrefix === nodePrefix) {
1523
+ if (astLocalName === "*" || astLocalName === nodeLocalName) {
1524
+ return true;
1525
+ }
1526
+ return false;
1527
+ } else if (!forgive && !astNS) {
1528
+ throw generateException(
1529
+ `Undeclared namespace ${astPrefix}`,
1530
+ SYNTAX_ERR,
1531
+ globalObject
1532
+ );
1533
+ }
1534
+ return false;
1535
+ }
1536
+ }
1537
+ };
1538
+
1539
+ // src/js/finder.js
1540
+ var DIR_NEXT = "next";
1541
+ var DIR_PREV = "prev";
1542
+ var KEYS_FORM = /* @__PURE__ */ new Set([...FORM_PARTS, "fieldset", "form"]);
1543
+ var KEYS_FORM_PS_VALID = /* @__PURE__ */ new Set([...FORM_PARTS, "form"]);
1544
+ var KEYS_INPUT_CHECK = new Set(INPUT_CHECK);
1545
+ var KEYS_INPUT_PLACEHOLDER = /* @__PURE__ */ new Set([...INPUT_TEXT, "number"]);
1546
+ var KEYS_INPUT_RANGE = /* @__PURE__ */ new Set([...INPUT_DATE, "number", "range"]);
1547
+ var KEYS_INPUT_REQUIRED = /* @__PURE__ */ new Set([...INPUT_CHECK, ...INPUT_EDIT, "file"]);
1548
+ var KEYS_INPUT_RESET = /* @__PURE__ */ new Set(["button", "reset"]);
1549
+ var KEYS_INPUT_SUBMIT = /* @__PURE__ */ new Set(["image", "submit"]);
1550
+ var KEYS_MODIFIER = /* @__PURE__ */ new Set([
1551
+ "Alt",
1552
+ "AltGraph",
1553
+ "CapsLock",
1554
+ "Control",
1555
+ "Fn",
1556
+ "FnLock",
1557
+ "Hyper",
1558
+ "Meta",
1559
+ "NumLock",
1560
+ "ScrollLock",
1561
+ "Shift",
1562
+ "Super",
1563
+ "Symbol",
1564
+ "SymbolLock"
1565
+ ]);
1566
+ var KEYS_PS_UNCACHE = /* @__PURE__ */ new Set([
1567
+ "any-link",
1568
+ "defined",
1569
+ "dir",
1570
+ "link",
1571
+ "scope"
1572
+ ]);
1573
+ var KEYS_PS_NTH_OF_TYPE = /* @__PURE__ */ new Set([
1574
+ "first-of-type",
1575
+ "last-of-type",
1576
+ "only-of-type"
1577
+ ]);
1578
+ var Finder = class {
1579
+ /* private fields */
1580
+ #ast;
1581
+ #astCache;
1582
+ #check;
1583
+ #descendant;
1584
+ #document;
1585
+ #documentCache;
1586
+ #documentURL;
1587
+ #event;
1588
+ #eventHandlers;
1589
+ #focus;
1590
+ #invalidate;
1591
+ #invalidateResults;
1592
+ #lastFocusVisible;
1593
+ #node;
1594
+ #nodeWalker;
1595
+ #nodes;
1596
+ #noexcept;
1597
+ #pseudoElement;
1598
+ #results;
1599
+ #root;
1600
+ #rootWalker;
1601
+ #selector;
1602
+ #shadow;
1603
+ #verifyShadowHost;
1604
+ #walkers;
1605
+ #warn;
1606
+ #window;
1607
+ /**
1608
+ * constructor
1609
+ * @param {object} window - The window object.
1610
+ */
1611
+ constructor(window) {
1612
+ this.#window = window;
1613
+ this.#astCache = /* @__PURE__ */ new WeakMap();
1614
+ this.#documentCache = /* @__PURE__ */ new WeakMap();
1615
+ this.#event = null;
1616
+ this.#focus = null;
1617
+ this.#lastFocusVisible = null;
1618
+ this.#eventHandlers = /* @__PURE__ */ new Set([
1619
+ {
1620
+ keys: ["focus", "focusin"],
1621
+ handler: this._handleFocusEvent
1622
+ },
1623
+ {
1624
+ keys: ["keydown", "keyup"],
1625
+ handler: this._handleKeyboardEvent
1626
+ },
1627
+ {
1628
+ keys: ["mouseover", "mousedown", "mouseup", "click", "mouseout"],
1629
+ handler: this._handleMouseEvent
1630
+ }
1631
+ ]);
1632
+ this._registerEventListeners();
1633
+ this.clearResults(true);
1634
+ }
1635
+ /**
1636
+ * Handles errors.
1637
+ * @param {Error} e - The error object.
1638
+ * @param {object} [opt] - Options.
1639
+ * @param {boolean} [opt.noexcept] - If true, exceptions are not thrown.
1640
+ * @throws {Error} Throws an error.
1641
+ * @returns {void}
1642
+ */
1643
+ onError = (e, opt = {}) => {
1644
+ const noexcept = opt.noexcept ?? this.#noexcept;
1645
+ if (noexcept) {
1646
+ return;
1647
+ }
1648
+ const isDOMException = e instanceof DOMException || e instanceof this.#window.DOMException;
1649
+ if (isDOMException) {
1650
+ if (e.name === NOT_SUPPORTED_ERR) {
1651
+ if (this.#warn) {
1652
+ console.warn(e.message);
1653
+ }
1654
+ return;
1655
+ }
1656
+ throw new this.#window.DOMException(e.message, e.name);
1657
+ }
1658
+ if (e.name in this.#window) {
1659
+ throw new this.#window[e.name](e.message, { cause: e });
1660
+ }
1661
+ throw e;
1662
+ };
1663
+ /**
1664
+ * Sets up the finder.
1665
+ * @param {string} selector - The CSS selector.
1666
+ * @param {object} node - Document, DocumentFragment, or Element.
1667
+ * @param {object} [opt] - Options.
1668
+ * @param {boolean} [opt.check] - Indicates if running in internal check().
1669
+ * @param {boolean} [opt.noexcept] - If true, exceptions are not thrown.
1670
+ * @param {boolean} [opt.warn] - If true, console warnings are enabled.
1671
+ * @returns {object} The finder instance.
1672
+ */
1673
+ setup = (selector, node, opt = {}) => {
1674
+ const { check, noexcept, warn } = opt;
1675
+ this.#check = !!check;
1676
+ this.#noexcept = !!noexcept;
1677
+ this.#warn = !!warn;
1678
+ [this.#document, this.#root, this.#shadow] = resolveContent(node);
1679
+ this.#documentURL = null;
1680
+ this.#node = node;
1681
+ this.#selector = selector;
1682
+ [this.#ast, this.#nodes] = this._correspond(selector);
1683
+ this.#pseudoElement = [];
1684
+ this.#walkers = /* @__PURE__ */ new WeakMap();
1685
+ this.#nodeWalker = null;
1686
+ this.#rootWalker = null;
1687
+ this.#verifyShadowHost = null;
1688
+ this.clearResults();
1689
+ return this;
1690
+ };
1691
+ /**
1692
+ * Clear cached results.
1693
+ * @param {boolean} all - clear all results
1694
+ * @returns {void}
1695
+ */
1696
+ clearResults = (all = false) => {
1697
+ this.#invalidateResults = /* @__PURE__ */ new WeakMap();
1698
+ if (all) {
1699
+ this.#results = /* @__PURE__ */ new WeakMap();
1700
+ }
1701
+ };
1702
+ /**
1703
+ * Handles focus events.
1704
+ * @private
1705
+ * @param {Event} evt - The event object.
1706
+ * @returns {void}
1707
+ */
1708
+ _handleFocusEvent = (evt) => {
1709
+ this.#focus = evt;
1710
+ };
1711
+ /**
1712
+ * Handles keyboard events.
1713
+ * @private
1714
+ * @param {Event} evt - The event object.
1715
+ * @returns {void}
1716
+ */
1717
+ _handleKeyboardEvent = (evt) => {
1718
+ const { key } = evt;
1719
+ if (!KEYS_MODIFIER.has(key)) {
1720
+ this.#event = evt;
1721
+ }
1722
+ };
1723
+ /**
1724
+ * Handles mouse events.
1725
+ * @private
1726
+ * @param {Event} evt - The event object.
1727
+ * @returns {void}
1728
+ */
1729
+ _handleMouseEvent = (evt) => {
1730
+ this.#event = evt;
1731
+ };
1732
+ /**
1733
+ * Registers event listeners.
1734
+ * @private
1735
+ * @returns {Array.<void>} An array of return values from addEventListener.
1736
+ */
1737
+ _registerEventListeners = () => {
1738
+ const opt = {
1739
+ capture: true,
1740
+ passive: true
1741
+ };
1742
+ const func = [];
1743
+ for (const eventHandler of this.#eventHandlers) {
1744
+ const { keys, handler } = eventHandler;
1745
+ const l = keys.length;
1746
+ for (let i = 0; i < l; i++) {
1747
+ const key = keys[i];
1748
+ func.push(this.#window.addEventListener(key, handler, opt));
1749
+ }
1750
+ }
1751
+ return func;
1752
+ };
1753
+ /**
1754
+ * Processes selector branches into the internal AST structure.
1755
+ * @private
1756
+ * @param {Array.<Array.<object>>} branches - The branches from walkAST.
1757
+ * @param {string} selector - The original selector for error reporting.
1758
+ * @returns {{ast: Array, descendant: boolean}}
1759
+ * An object with the AST, descendant flag.
1760
+ */
1761
+ _processSelectorBranches = (branches, selector) => {
1762
+ let descendant = false;
1763
+ const ast = [];
1764
+ const l = branches.length;
1765
+ for (let i = 0; i < l; i++) {
1766
+ const items = [...branches[i]];
1767
+ const branch = [];
1768
+ let item = items.shift();
1769
+ if (item && item.type !== COMBINATOR) {
1770
+ const leaves = /* @__PURE__ */ new Set();
1771
+ while (item) {
1772
+ if (item.type === COMBINATOR) {
1773
+ const [nextItem] = items;
1774
+ if (!nextItem || nextItem.type === COMBINATOR) {
1775
+ const msg = `Invalid selector ${selector}`;
1776
+ this.onError(generateException(msg, SYNTAX_ERR, this.#window));
1777
+ return { ast: [], descendant: false, invalidate: false };
1778
+ }
1779
+ if (item.name === " " || item.name === ">") {
1780
+ descendant = true;
1781
+ }
1782
+ branch.push({ combo: item, leaves: sortAST(leaves) });
1783
+ leaves.clear();
1784
+ } else {
1785
+ if (item.name && typeof item.name === "string") {
1786
+ const unescapedName = unescapeSelector(item.name);
1787
+ if (unescapedName !== item.name) {
1788
+ item.name = unescapedName;
1789
+ }
1790
+ if (/[|:]/.test(unescapedName)) {
1791
+ item.namespace = true;
1792
+ }
1793
+ }
1794
+ leaves.add(item);
1795
+ }
1796
+ if (items.length) {
1797
+ item = items.shift();
1798
+ } else {
1799
+ branch.push({ combo: null, leaves: sortAST(leaves) });
1800
+ leaves.clear();
1801
+ break;
1802
+ }
1803
+ }
1804
+ }
1805
+ ast.push({ branch, dir: null, filtered: false, find: false });
1806
+ }
1807
+ return { ast, descendant };
1808
+ };
1809
+ /**
1810
+ * Corresponds AST and nodes.
1811
+ * @private
1812
+ * @param {string} selector - The CSS selector.
1813
+ * @returns {Array.<Array.<object>>} An array with the AST and nodes.
1814
+ */
1815
+ _correspond = (selector) => {
1816
+ const nodes = [];
1817
+ this.#descendant = false;
1818
+ this.#invalidate = false;
1819
+ let ast;
1820
+ if (this.#documentCache.has(this.#document)) {
1821
+ const cachedItem = this.#documentCache.get(this.#document);
1822
+ if (cachedItem && cachedItem.has(`${selector}`)) {
1823
+ const item = cachedItem.get(`${selector}`);
1824
+ ast = item.ast;
1825
+ this.#descendant = item.descendant;
1826
+ this.#invalidate = item.invalidate;
1827
+ }
1828
+ }
1829
+ if (ast) {
1830
+ const l = ast.length;
1831
+ for (let i = 0; i < l; i++) {
1832
+ ast[i].dir = null;
1833
+ ast[i].filtered = false;
1834
+ ast[i].find = false;
1835
+ nodes[i] = [];
1836
+ }
1837
+ } else {
1838
+ let cssAst;
1839
+ try {
1840
+ cssAst = parseSelector(selector);
1841
+ } catch (e) {
1842
+ return this.onError(e);
1843
+ }
1844
+ const { branches, info } = walkAST(cssAst);
1845
+ const {
1846
+ hasHasPseudoFunc,
1847
+ hasLogicalPseudoFunc,
1848
+ hasNthChildOfSelector,
1849
+ hasStatePseudoClass
1850
+ } = info;
1851
+ this.#invalidate = hasHasPseudoFunc || hasStatePseudoClass || !!(hasLogicalPseudoFunc && hasNthChildOfSelector);
1852
+ const processed = this._processSelectorBranches(branches, selector);
1853
+ ast = processed.ast;
1854
+ this.#descendant = processed.descendant;
1855
+ let cachedItem;
1856
+ if (this.#documentCache.has(this.#document)) {
1857
+ cachedItem = this.#documentCache.get(this.#document);
1858
+ } else {
1859
+ cachedItem = /* @__PURE__ */ new Map();
1860
+ }
1861
+ cachedItem.set(`${selector}`, {
1862
+ ast,
1863
+ descendant: this.#descendant,
1864
+ invalidate: this.#invalidate
1865
+ });
1866
+ this.#documentCache.set(this.#document, cachedItem);
1867
+ for (let i = 0; i < ast.length; i++) {
1868
+ nodes[i] = [];
1869
+ }
1870
+ }
1871
+ return [ast, nodes];
1872
+ };
1873
+ /**
1874
+ * Creates a TreeWalker.
1875
+ * @private
1876
+ * @param {object} node - The Document, DocumentFragment, or Element node.
1877
+ * @param {object} [opt] - Options.
1878
+ * @param {boolean} [opt.force] - Force creation of a new TreeWalker.
1879
+ * @param {number} [opt.whatToShow] - The NodeFilter whatToShow value.
1880
+ * @returns {object} The TreeWalker object.
1881
+ */
1882
+ _createTreeWalker = (node, opt = {}) => {
1883
+ const { force = false, whatToShow = SHOW_CONTAINER } = opt;
1884
+ if (force) {
1885
+ return this.#document.createTreeWalker(node, whatToShow);
1886
+ } else if (this.#walkers.has(node)) {
1887
+ return this.#walkers.get(node);
1888
+ }
1889
+ const walker = this.#document.createTreeWalker(node, whatToShow);
1890
+ this.#walkers.set(node, walker);
1891
+ return walker;
1892
+ };
1893
+ /**
1894
+ * Gets selector branches from cache or parses them.
1895
+ * @private
1896
+ * @param {object} selector - The AST.
1897
+ * @returns {Array.<Array.<object>>} The selector branches.
1898
+ */
1899
+ _getSelectorBranches = (selector) => {
1900
+ if (this.#astCache.has(selector)) {
1901
+ return this.#astCache.get(selector);
1902
+ }
1903
+ const { branches } = walkAST(selector);
1904
+ this.#astCache.set(selector, branches);
1905
+ return branches;
1906
+ };
1907
+ /**
1908
+ * Gets the children of a node, optionally filtered by a selector.
1909
+ * @private
1910
+ * @param {object} parentNode - The parent element.
1911
+ * @param {Array.<Array.<object>>} selectorBranches - The selector branches.
1912
+ * @param {object} [opt] - Options.
1913
+ * @returns {Array.<object>} An array of child nodes.
1914
+ */
1915
+ _getFilteredChildren = (parentNode, selectorBranches, opt = {}) => {
1916
+ const children = [];
1917
+ const walker = this._createTreeWalker(parentNode, { force: true });
1918
+ let childNode = walker.firstChild();
1919
+ while (childNode) {
1920
+ if (selectorBranches) {
1921
+ if (isVisible(childNode)) {
1922
+ let isMatch = false;
1923
+ const l = selectorBranches.length;
1924
+ for (let i = 0; i < l; i++) {
1925
+ const leaves = selectorBranches[i];
1926
+ if (this._matchLeaves(leaves, childNode, opt)) {
1927
+ isMatch = true;
1928
+ break;
1929
+ }
1930
+ }
1931
+ if (isMatch) {
1932
+ children.push(childNode);
1933
+ }
1934
+ }
1935
+ } else {
1936
+ children.push(childNode);
1937
+ }
1938
+ childNode = walker.nextSibling();
1939
+ }
1940
+ return children;
1941
+ };
1942
+ /**
1943
+ * Collects nth-child nodes.
1944
+ * @private
1945
+ * @param {object} anb - An+B options.
1946
+ * @param {number} anb.a - The 'a' value.
1947
+ * @param {number} anb.b - The 'b' value.
1948
+ * @param {boolean} [anb.reverse] - If true, reverses the order.
1949
+ * @param {object} [anb.selector] - The AST.
1950
+ * @param {object} node - The Element node.
1951
+ * @param {object} [opt] - Options.
1952
+ * @returns {Set.<object>} A collection of matched nodes.
1953
+ */
1954
+ _collectNthChild = (anb, node, opt = {}) => {
1955
+ const { a, b, selector } = anb;
1956
+ const { parentNode } = node;
1957
+ if (!parentNode) {
1958
+ const matchedNode = /* @__PURE__ */ new Set();
1959
+ if (node === this.#root && a * 1 + b * 1 === 1) {
1960
+ if (selector) {
1961
+ const selectorBranches2 = this._getSelectorBranches(selector);
1962
+ const l = selectorBranches2.length;
1963
+ for (let i = 0; i < l; i++) {
1964
+ const leaves = selectorBranches2[i];
1965
+ if (this._matchLeaves(leaves, node, opt)) {
1966
+ matchedNode.add(node);
1967
+ break;
1968
+ }
1969
+ }
1970
+ } else {
1971
+ matchedNode.add(node);
1972
+ }
1973
+ }
1974
+ return matchedNode;
1975
+ }
1976
+ const selectorBranches = selector ? this._getSelectorBranches(selector) : null;
1977
+ const children = this._getFilteredChildren(
1978
+ parentNode,
1979
+ selectorBranches,
1980
+ opt
1981
+ );
1982
+ const matchedNodes = filterNodesByAnB(children, anb);
1983
+ return new Set(matchedNodes);
1984
+ };
1985
+ /**
1986
+ * Collects nth-of-type nodes.
1987
+ * @private
1988
+ * @param {object} anb - An+B options.
1989
+ * @param {number} anb.a - The 'a' value.
1990
+ * @param {number} anb.b - The 'b' value.
1991
+ * @param {boolean} [anb.reverse] - If true, reverses the order.
1992
+ * @param {object} node - The Element node.
1993
+ * @returns {Set.<object>} A collection of matched nodes.
1994
+ */
1995
+ _collectNthOfType = (anb, node) => {
1996
+ const { parentNode } = node;
1997
+ if (!parentNode) {
1998
+ if (node === this.#root && anb.a * 1 + anb.b * 1 === 1) {
1999
+ return /* @__PURE__ */ new Set([node]);
2000
+ }
2001
+ return /* @__PURE__ */ new Set();
2002
+ }
2003
+ const typedSiblings = [];
2004
+ const walker = this._createTreeWalker(parentNode, { force: true });
2005
+ let sibling = walker.firstChild();
2006
+ while (sibling) {
2007
+ if (sibling.localName === node.localName && sibling.namespaceURI === node.namespaceURI && sibling.prefix === node.prefix) {
2008
+ typedSiblings.push(sibling);
2009
+ }
2010
+ sibling = walker.nextSibling();
2011
+ }
2012
+ const matchedNodes = filterNodesByAnB(typedSiblings, anb);
2013
+ return new Set(matchedNodes);
2014
+ };
2015
+ /**
2016
+ * Matches An+B.
2017
+ * @private
2018
+ * @param {object} ast - The AST.
2019
+ * @param {object} node - The Element node.
2020
+ * @param {string} nthName - The name of the nth pseudo-class.
2021
+ * @param {object} [opt] - Options.
2022
+ * @returns {Set.<object>} A collection of matched nodes.
2023
+ */
2024
+ _matchAnPlusB = (ast, node, nthName, opt = {}) => {
2025
+ const {
2026
+ nth: { a, b, name: nthIdentName },
2027
+ selector
2028
+ } = ast;
2029
+ const anbMap = /* @__PURE__ */ new Map();
2030
+ if (nthIdentName) {
2031
+ if (nthIdentName === "even") {
2032
+ anbMap.set("a", 2);
2033
+ anbMap.set("b", 0);
2034
+ } else if (nthIdentName === "odd") {
2035
+ anbMap.set("a", 2);
2036
+ anbMap.set("b", 1);
2037
+ }
2038
+ if (nthName.indexOf("last") > -1) {
2039
+ anbMap.set("reverse", true);
2040
+ }
2041
+ } else {
2042
+ if (typeof a === "string" && /-?\d+/.test(a)) {
2043
+ anbMap.set("a", a * 1);
2044
+ } else {
2045
+ anbMap.set("a", 0);
2046
+ }
2047
+ if (typeof b === "string" && /-?\d+/.test(b)) {
2048
+ anbMap.set("b", b * 1);
2049
+ } else {
2050
+ anbMap.set("b", 0);
2051
+ }
2052
+ if (nthName.indexOf("last") > -1) {
2053
+ anbMap.set("reverse", true);
2054
+ }
2055
+ }
2056
+ if (nthName === "nth-child" || nthName === "nth-last-child") {
2057
+ if (selector) {
2058
+ anbMap.set("selector", selector);
2059
+ }
2060
+ const anb = Object.fromEntries(anbMap);
2061
+ const nodes = this._collectNthChild(anb, node, opt);
2062
+ return nodes;
2063
+ } else if (nthName === "nth-of-type" || nthName === "nth-last-of-type") {
2064
+ const anb = Object.fromEntries(anbMap);
2065
+ const nodes = this._collectNthOfType(anb, node);
2066
+ return nodes;
2067
+ }
2068
+ return /* @__PURE__ */ new Set();
2069
+ };
2070
+ /**
2071
+ * Matches the :has() pseudo-class function.
2072
+ * @private
2073
+ * @param {Array.<object>} astLeaves - The AST leaves.
2074
+ * @param {object} node - The Element node.
2075
+ * @param {object} [opt] - Options.
2076
+ * @returns {boolean} The result.
2077
+ */
2078
+ _matchHasPseudoFunc = (astLeaves, node, opt = {}) => {
2079
+ if (Array.isArray(astLeaves) && astLeaves.length) {
2080
+ const leaves = [...astLeaves];
2081
+ const [leaf] = leaves;
2082
+ const { type: leafType } = leaf;
2083
+ let combo;
2084
+ if (leafType === COMBINATOR) {
2085
+ combo = leaves.shift();
2086
+ } else {
2087
+ combo = {
2088
+ name: " ",
2089
+ type: COMBINATOR
2090
+ };
2091
+ }
2092
+ const twigLeaves = [];
2093
+ while (leaves.length) {
2094
+ const [item] = leaves;
2095
+ const { type: itemType } = item;
2096
+ if (itemType === COMBINATOR) {
2097
+ break;
2098
+ } else {
2099
+ twigLeaves.push(leaves.shift());
2100
+ }
2101
+ }
2102
+ const twig = {
2103
+ combo,
2104
+ leaves: twigLeaves
2105
+ };
2106
+ opt.dir = DIR_NEXT;
2107
+ const nodes = this._matchCombinator(twig, node, opt);
2108
+ if (nodes.size) {
2109
+ if (leaves.length) {
2110
+ let bool = false;
2111
+ for (const nextNode of nodes) {
2112
+ bool = this._matchHasPseudoFunc(leaves, nextNode, opt);
2113
+ if (bool) {
2114
+ break;
2115
+ }
2116
+ }
2117
+ return bool;
2118
+ }
2119
+ return true;
2120
+ }
2121
+ }
2122
+ return false;
2123
+ };
2124
+ /**
2125
+ * Evaluates the :has() pseudo-class.
2126
+ * @private
2127
+ * @param {object} astData - The AST data.
2128
+ * @param {object} node - The Element node.
2129
+ * @param {object} [opt] - Options.
2130
+ * @returns {?object} The matched node.
2131
+ */
2132
+ _evaluateHasPseudo = (astData, node, opt) => {
2133
+ const { branches } = astData;
2134
+ let bool = false;
2135
+ const l = branches.length;
2136
+ for (let i = 0; i < l; i++) {
2137
+ const leaves = branches[i];
2138
+ bool = this._matchHasPseudoFunc(leaves, node, opt);
2139
+ if (bool) {
2140
+ break;
2141
+ }
2142
+ }
2143
+ if (!bool) {
2144
+ return null;
2145
+ }
2146
+ if ((opt.isShadowRoot || this.#shadow) && node.nodeType === DOCUMENT_FRAGMENT_NODE) {
2147
+ return this.#verifyShadowHost ? node : null;
2148
+ }
2149
+ return node;
2150
+ };
2151
+ /**
2152
+ * Matches logical pseudo-class functions.
2153
+ * @private
2154
+ * @param {object} astData - The AST data.
2155
+ * @param {object} node - The Element node.
2156
+ * @param {object} [opt] - Options.
2157
+ * @returns {?object} The matched node.
2158
+ */
2159
+ _matchLogicalPseudoFunc = (astData, node, opt = {}) => {
2160
+ const { astName, branches, twigBranches } = astData;
2161
+ if (astName === "has") {
2162
+ return this._evaluateHasPseudo(astData, node, opt);
2163
+ }
2164
+ const isShadowRoot = (opt.isShadowRoot || this.#shadow) && node.nodeType === DOCUMENT_FRAGMENT_NODE;
2165
+ if (isShadowRoot) {
2166
+ let invalid = false;
2167
+ for (const branch of branches) {
2168
+ if (branch.length > 1) {
2169
+ invalid = true;
2170
+ break;
2171
+ } else if (astName === "not") {
2172
+ const [{ type: childAstType }] = branch;
2173
+ if (childAstType !== PS_CLASS_SELECTOR) {
2174
+ invalid = true;
2175
+ break;
2176
+ }
2177
+ }
2178
+ }
2179
+ if (invalid) {
2180
+ return null;
2181
+ }
2182
+ }
2183
+ opt.forgive = astName === "is" || astName === "where";
2184
+ const l = twigBranches.length;
2185
+ let bool;
2186
+ for (let i = 0; i < l; i++) {
2187
+ const branch = twigBranches[i];
2188
+ const lastIndex = branch.length - 1;
2189
+ const { leaves } = branch[lastIndex];
2190
+ bool = this._matchLeaves(leaves, node, opt);
2191
+ if (bool && lastIndex > 0) {
2192
+ let nextNodes = /* @__PURE__ */ new Set([node]);
2193
+ for (let j = lastIndex - 1; j >= 0; j--) {
2194
+ const twig = branch[j];
2195
+ const arr = [];
2196
+ opt.dir = DIR_PREV;
2197
+ for (const nextNode of nextNodes) {
2198
+ const m = this._matchCombinator(twig, nextNode, opt);
2199
+ if (m.size) {
2200
+ arr.push(...m);
2201
+ }
2202
+ }
2203
+ if (arr.length) {
2204
+ if (j === 0) {
2205
+ bool = true;
2206
+ } else {
2207
+ nextNodes = new Set(arr);
2208
+ }
2209
+ } else {
2210
+ bool = false;
2211
+ break;
2212
+ }
2213
+ }
2214
+ }
2215
+ if (bool) {
2216
+ break;
2217
+ }
2218
+ }
2219
+ if (astName === "not") {
2220
+ if (bool) {
2221
+ return null;
2222
+ }
2223
+ return node;
2224
+ } else if (bool) {
2225
+ return node;
2226
+ }
2227
+ return null;
2228
+ };
2229
+ /**
2230
+ * match pseudo-class selector
2231
+ * @private
2232
+ * @see https://html.spec.whatwg.org/#pseudo-classes
2233
+ * @param {object} ast - AST
2234
+ * @param {object} node - Element node
2235
+ * @param {object} [opt] - options
2236
+ * @returns {Set.<object>} - collection of matched nodes
2237
+ */
2238
+ _matchPseudoClassSelector(ast, node, opt = {}) {
2239
+ const { children: astChildren, name: astName } = ast;
2240
+ const { localName, parentNode } = node;
2241
+ const { forgive, warn = this.#warn } = opt;
2242
+ const matched = /* @__PURE__ */ new Set();
2243
+ if (Array.isArray(astChildren) && KEYS_LOGICAL.has(astName)) {
2244
+ if (!astChildren.length && astName !== "is" && astName !== "where") {
2245
+ const css = (0, import_css_tree.generate)(ast);
2246
+ const msg = `Invalid selector ${css}`;
2247
+ return this.onError(generateException(msg, SYNTAX_ERR, this.#window));
2248
+ }
2249
+ let astData;
2250
+ if (this.#astCache.has(ast)) {
2251
+ astData = this.#astCache.get(ast);
2252
+ } else {
2253
+ const { branches } = walkAST(ast);
2254
+ if (astName === "has") {
2255
+ let forgiven = false;
2256
+ const l = astChildren.length;
2257
+ for (let i = 0; i < l; i++) {
2258
+ const child = astChildren[i];
2259
+ const item = (0, import_css_tree.find)(child, findLogicalWithNestedHas);
2260
+ if (item) {
2261
+ const itemName = item.name;
2262
+ if (itemName === "is" || itemName === "where") {
2263
+ forgiven = true;
2264
+ break;
2265
+ } else {
2266
+ const css = (0, import_css_tree.generate)(ast);
2267
+ const msg = `Invalid selector ${css}`;
2268
+ return this.onError(
2269
+ generateException(msg, SYNTAX_ERR, this.#window)
2270
+ );
2271
+ }
2272
+ }
2273
+ }
2274
+ if (forgiven) {
2275
+ return matched;
2276
+ }
2277
+ astData = {
2278
+ astName,
2279
+ branches
2280
+ };
2281
+ } else {
2282
+ const twigBranches = [];
2283
+ const l = branches.length;
2284
+ for (let i = 0; i < l; i++) {
2285
+ const [...leaves] = branches[i];
2286
+ const branch = [];
2287
+ const leavesSet = /* @__PURE__ */ new Set();
2288
+ let item = leaves.shift();
2289
+ while (item) {
2290
+ if (item.type === COMBINATOR) {
2291
+ branch.push({
2292
+ combo: item,
2293
+ leaves: [...leavesSet]
2294
+ });
2295
+ leavesSet.clear();
2296
+ } else if (item) {
2297
+ leavesSet.add(item);
2298
+ }
2299
+ if (leaves.length) {
2300
+ item = leaves.shift();
2301
+ } else {
2302
+ branch.push({
2303
+ combo: null,
2304
+ leaves: [...leavesSet]
2305
+ });
2306
+ leavesSet.clear();
2307
+ break;
2308
+ }
2309
+ }
2310
+ twigBranches.push(branch);
2311
+ }
2312
+ astData = {
2313
+ astName,
2314
+ branches,
2315
+ twigBranches
2316
+ };
2317
+ this.#astCache.set(ast, astData);
2318
+ }
2319
+ }
2320
+ const res = this._matchLogicalPseudoFunc(astData, node, opt);
2321
+ if (res) {
2322
+ matched.add(res);
2323
+ }
2324
+ } else if (Array.isArray(astChildren)) {
2325
+ if (/^nth-(?:last-)?(?:child|of-type)$/.test(astName)) {
2326
+ if (astChildren.length !== 1) {
2327
+ const css = (0, import_css_tree.generate)(ast);
2328
+ return this.onError(
2329
+ generateException(
2330
+ `Invalid selector ${css}`,
2331
+ SYNTAX_ERR,
2332
+ this.#window
2333
+ )
2334
+ );
2335
+ }
2336
+ const [branch] = astChildren;
2337
+ const nodes = this._matchAnPlusB(branch, node, astName, opt);
2338
+ return nodes;
2339
+ } else {
2340
+ switch (astName) {
2341
+ // :dir()
2342
+ case "dir": {
2343
+ if (astChildren.length !== 1) {
2344
+ const css = (0, import_css_tree.generate)(ast);
2345
+ return this.onError(
2346
+ generateException(
2347
+ `Invalid selector ${css}`,
2348
+ SYNTAX_ERR,
2349
+ this.#window
2350
+ )
2351
+ );
2352
+ }
2353
+ const [astChild] = astChildren;
2354
+ const res = matchDirectionPseudoClass(astChild, node);
2355
+ if (res) {
2356
+ matched.add(node);
2357
+ }
2358
+ break;
2359
+ }
2360
+ // :lang()
2361
+ case "lang": {
2362
+ if (!astChildren.length) {
2363
+ const css = (0, import_css_tree.generate)(ast);
2364
+ return this.onError(
2365
+ generateException(
2366
+ `Invalid selector ${css}`,
2367
+ SYNTAX_ERR,
2368
+ this.#window
2369
+ )
2370
+ );
2371
+ }
2372
+ let bool;
2373
+ for (const astChild of astChildren) {
2374
+ bool = matchLanguagePseudoClass(astChild, node);
2375
+ if (bool) {
2376
+ break;
2377
+ }
2378
+ }
2379
+ if (bool) {
2380
+ matched.add(node);
2381
+ }
2382
+ break;
2383
+ }
2384
+ // :state()
2385
+ case "state": {
2386
+ if (isCustomElement(node)) {
2387
+ const [{ value: stateValue }] = astChildren;
2388
+ if (stateValue) {
2389
+ if (node[stateValue]) {
2390
+ matched.add(node);
2391
+ } else {
2392
+ for (const i in node) {
2393
+ const prop = node[i];
2394
+ if (prop instanceof this.#window.ElementInternals) {
2395
+ if (prop?.states?.has(stateValue)) {
2396
+ matched.add(node);
2397
+ }
2398
+ break;
2399
+ }
2400
+ }
2401
+ }
2402
+ }
2403
+ }
2404
+ break;
2405
+ }
2406
+ case "current":
2407
+ case "heading":
2408
+ case "nth-col":
2409
+ case "nth-last-col": {
2410
+ if (warn) {
2411
+ this.onError(
2412
+ generateException(
2413
+ `Unsupported pseudo-class :${astName}()`,
2414
+ NOT_SUPPORTED_ERR,
2415
+ this.#window
2416
+ )
2417
+ );
2418
+ }
2419
+ break;
2420
+ }
2421
+ // Ignore :host() and :host-context().
2422
+ case "host":
2423
+ case "host-context": {
2424
+ break;
2425
+ }
2426
+ // Deprecated in CSS Selectors 3.
2427
+ case "contains": {
2428
+ if (warn) {
2429
+ this.onError(
2430
+ generateException(
2431
+ `Unknown pseudo-class :${astName}()`,
2432
+ NOT_SUPPORTED_ERR,
2433
+ this.#window
2434
+ )
2435
+ );
2436
+ }
2437
+ break;
2438
+ }
2439
+ default: {
2440
+ if (!forgive) {
2441
+ this.onError(
2442
+ generateException(
2443
+ `Unknown pseudo-class :${astName}()`,
2444
+ SYNTAX_ERR,
2445
+ this.#window
2446
+ )
2447
+ );
2448
+ }
2449
+ }
2450
+ }
2451
+ }
2452
+ } else if (KEYS_PS_NTH_OF_TYPE.has(astName)) {
2453
+ if (node === this.#root) {
2454
+ matched.add(node);
2455
+ } else if (parentNode) {
2456
+ switch (astName) {
2457
+ case "first-of-type": {
2458
+ const [node1] = this._collectNthOfType(
2459
+ {
2460
+ a: 0,
2461
+ b: 1
2462
+ },
2463
+ node
2464
+ );
2465
+ if (node1) {
2466
+ matched.add(node1);
2467
+ }
2468
+ break;
2469
+ }
2470
+ case "last-of-type": {
2471
+ const [node1] = this._collectNthOfType(
2472
+ {
2473
+ a: 0,
2474
+ b: 1,
2475
+ reverse: true
2476
+ },
2477
+ node
2478
+ );
2479
+ if (node1) {
2480
+ matched.add(node1);
2481
+ }
2482
+ break;
2483
+ }
2484
+ // 'only-of-type' is handled by default.
2485
+ default: {
2486
+ const [node1] = this._collectNthOfType(
2487
+ {
2488
+ a: 0,
2489
+ b: 1
2490
+ },
2491
+ node
2492
+ );
2493
+ if (node1 === node) {
2494
+ const [node2] = this._collectNthOfType(
2495
+ {
2496
+ a: 0,
2497
+ b: 1,
2498
+ reverse: true
2499
+ },
2500
+ node
2501
+ );
2502
+ if (node2 === node) {
2503
+ matched.add(node);
2504
+ }
2505
+ }
2506
+ }
2507
+ }
2508
+ }
2509
+ } else {
2510
+ switch (astName) {
2511
+ case "disabled":
2512
+ case "enabled": {
2513
+ const isMatch = matchDisabledPseudoClass(astName, node);
2514
+ if (isMatch) {
2515
+ matched.add(node);
2516
+ }
2517
+ break;
2518
+ }
2519
+ case "read-only":
2520
+ case "read-write": {
2521
+ const isMatch = matchReadOnlyPseudoClass(astName, node);
2522
+ if (isMatch) {
2523
+ matched.add(node);
2524
+ }
2525
+ break;
2526
+ }
2527
+ case "any-link":
2528
+ case "link": {
2529
+ if ((localName === "a" || localName === "area") && node.hasAttribute("href")) {
2530
+ matched.add(node);
2531
+ }
2532
+ break;
2533
+ }
2534
+ case "local-link": {
2535
+ if ((localName === "a" || localName === "area") && node.hasAttribute("href")) {
2536
+ if (!this.#documentURL) {
2537
+ this.#documentURL = new URL(this.#document.URL);
2538
+ }
2539
+ const { href, origin, pathname } = this.#documentURL;
2540
+ const attrURL = new URL(node.getAttribute("href"), href);
2541
+ if (attrURL.origin === origin && attrURL.pathname === pathname) {
2542
+ matched.add(node);
2543
+ }
2544
+ }
2545
+ break;
2546
+ }
2547
+ case "visited": {
2548
+ break;
2549
+ }
2550
+ case "hover": {
2551
+ const { target, type } = this.#event ?? {};
2552
+ if (/^(?:click|mouse(?:down|over|up))$/.test(type) && node.contains(target)) {
2553
+ matched.add(node);
2554
+ }
2555
+ break;
2556
+ }
2557
+ case "active": {
2558
+ const { buttons, target, type } = this.#event ?? {};
2559
+ if (type === "mousedown" && buttons & 1 && node.contains(target)) {
2560
+ matched.add(node);
2561
+ }
2562
+ break;
2563
+ }
2564
+ case "target": {
2565
+ if (!this.#documentURL) {
2566
+ this.#documentURL = new URL(this.#document.URL);
2567
+ }
2568
+ const { hash } = this.#documentURL;
2569
+ if (node.id && hash === `#${node.id}` && this.#document.contains(node)) {
2570
+ matched.add(node);
2571
+ }
2572
+ break;
2573
+ }
2574
+ case "target-within": {
2575
+ if (!this.#documentURL) {
2576
+ this.#documentURL = new URL(this.#document.URL);
2577
+ }
2578
+ const { hash } = this.#documentURL;
2579
+ if (hash) {
2580
+ const id = hash.replace(/^#/, "");
2581
+ let current = this.#document.getElementById(id);
2582
+ while (current) {
2583
+ if (current === node) {
2584
+ matched.add(node);
2585
+ break;
2586
+ }
2587
+ current = current.parentNode;
2588
+ }
2589
+ }
2590
+ break;
2591
+ }
2592
+ case "scope": {
2593
+ if (this.#node.nodeType === ELEMENT_NODE) {
2594
+ if (!this.#shadow && node === this.#node) {
2595
+ matched.add(node);
2596
+ }
2597
+ } else if (node === this.#document.documentElement) {
2598
+ matched.add(node);
2599
+ }
2600
+ break;
2601
+ }
2602
+ case "focus": {
2603
+ if (node === this.#document.activeElement && isFocusableArea(node)) {
2604
+ matched.add(node);
2605
+ }
2606
+ break;
2607
+ }
2608
+ case "focus-visible": {
2609
+ if (node === this.#document.activeElement && isFocusableArea(node)) {
2610
+ let bool;
2611
+ if (isFocusVisible(node)) {
2612
+ bool = true;
2613
+ } else if (this.#focus) {
2614
+ const { relatedTarget, target: focusTarget } = this.#focus;
2615
+ if (focusTarget === node) {
2616
+ if (isFocusVisible(relatedTarget)) {
2617
+ bool = true;
2618
+ } else if (this.#event) {
2619
+ const {
2620
+ altKey: eventAltKey,
2621
+ ctrlKey: eventCtrlKey,
2622
+ key: eventKey,
2623
+ metaKey: eventMetaKey,
2624
+ target: eventTarget,
2625
+ type: eventType
2626
+ } = this.#event;
2627
+ if (eventTarget === relatedTarget) {
2628
+ if (this.#lastFocusVisible === null) {
2629
+ bool = true;
2630
+ } else if (focusTarget === this.#lastFocusVisible) {
2631
+ bool = true;
2632
+ }
2633
+ } else if (eventKey === "Tab") {
2634
+ if (eventType === "keydown" && eventTarget !== node || eventType === "keyup" && eventTarget === node) {
2635
+ if (eventTarget === focusTarget) {
2636
+ if (this.#lastFocusVisible === null) {
2637
+ bool = true;
2638
+ } else if (eventTarget === this.#lastFocusVisible && relatedTarget === null) {
2639
+ bool = true;
2640
+ }
2641
+ } else {
2642
+ bool = true;
2643
+ }
2644
+ }
2645
+ } else if (eventKey) {
2646
+ if ((eventType === "keydown" || eventType === "keyup") && !eventAltKey && !eventCtrlKey && !eventMetaKey && eventTarget === node) {
2647
+ bool = true;
2648
+ }
2649
+ }
2650
+ } else if (relatedTarget === null || relatedTarget === this.#lastFocusVisible) {
2651
+ bool = true;
2652
+ }
2653
+ }
2654
+ }
2655
+ if (bool) {
2656
+ this.#lastFocusVisible = node;
2657
+ matched.add(node);
2658
+ } else if (this.#lastFocusVisible === node) {
2659
+ this.#lastFocusVisible = null;
2660
+ }
2661
+ }
2662
+ break;
2663
+ }
2664
+ case "focus-within": {
2665
+ let bool;
2666
+ let current = this.#document.activeElement;
2667
+ if (isFocusableArea(current)) {
2668
+ while (current) {
2669
+ if (current === node) {
2670
+ bool = true;
2671
+ break;
2672
+ }
2673
+ current = current.parentNode;
2674
+ }
2675
+ }
2676
+ if (bool) {
2677
+ matched.add(node);
2678
+ }
2679
+ break;
2680
+ }
2681
+ case "open":
2682
+ case "closed": {
2683
+ if (localName === "details" || localName === "dialog") {
2684
+ if (node.hasAttribute("open")) {
2685
+ if (astName === "open") {
2686
+ matched.add(node);
2687
+ }
2688
+ } else if (astName === "closed") {
2689
+ matched.add(node);
2690
+ }
2691
+ }
2692
+ break;
2693
+ }
2694
+ case "placeholder-shown": {
2695
+ let placeholder;
2696
+ if (node.placeholder) {
2697
+ placeholder = node.placeholder;
2698
+ } else if (node.hasAttribute("placeholder")) {
2699
+ placeholder = node.getAttribute("placeholder");
2700
+ }
2701
+ if (typeof placeholder === "string" && !/[\r\n]/.test(placeholder)) {
2702
+ let targetNode;
2703
+ if (localName === "textarea") {
2704
+ targetNode = node;
2705
+ } else if (localName === "input") {
2706
+ if (node.hasAttribute("type")) {
2707
+ if (KEYS_INPUT_PLACEHOLDER.has(node.getAttribute("type"))) {
2708
+ targetNode = node;
2709
+ }
2710
+ } else {
2711
+ targetNode = node;
2712
+ }
2713
+ }
2714
+ if (targetNode && node.value === "") {
2715
+ matched.add(node);
2716
+ }
2717
+ }
2718
+ break;
2719
+ }
2720
+ case "checked": {
2721
+ const attrType = node.getAttribute("type");
2722
+ if (node.checked && localName === "input" && (attrType === "checkbox" || attrType === "radio") || node.selected && localName === "option") {
2723
+ matched.add(node);
2724
+ }
2725
+ break;
2726
+ }
2727
+ case "indeterminate": {
2728
+ if (node.indeterminate && localName === "input" && node.type === "checkbox" || localName === "progress" && !node.hasAttribute("value")) {
2729
+ matched.add(node);
2730
+ } else if (localName === "input" && node.type === "radio" && !node.hasAttribute("checked")) {
2731
+ const nodeName = node.name;
2732
+ let parent = node.parentNode;
2733
+ while (parent) {
2734
+ if (parent.localName === "form") {
2735
+ break;
2736
+ }
2737
+ parent = parent.parentNode;
2738
+ }
2739
+ if (!parent) {
2740
+ parent = this.#document.documentElement;
2741
+ }
2742
+ const walker = this._createTreeWalker(parent);
2743
+ let refNode = traverseNode(parent, walker);
2744
+ refNode = walker.firstChild();
2745
+ let checked;
2746
+ while (refNode) {
2747
+ if (refNode.localName === "input" && refNode.getAttribute("type") === "radio") {
2748
+ if (refNode.hasAttribute("name")) {
2749
+ if (refNode.getAttribute("name") === nodeName) {
2750
+ checked = !!refNode.checked;
2751
+ }
2752
+ } else {
2753
+ checked = !!refNode.checked;
2754
+ }
2755
+ if (checked) {
2756
+ break;
2757
+ }
2758
+ }
2759
+ refNode = walker.nextNode();
2760
+ }
2761
+ if (!checked) {
2762
+ matched.add(node);
2763
+ }
2764
+ }
2765
+ break;
2766
+ }
2767
+ case "default": {
2768
+ const attrType = node.getAttribute("type");
2769
+ if (localName === "button" && !(node.hasAttribute("type") && KEYS_INPUT_RESET.has(attrType)) || localName === "input" && node.hasAttribute("type") && KEYS_INPUT_SUBMIT.has(attrType)) {
2770
+ let form = node.parentNode;
2771
+ while (form) {
2772
+ if (form.localName === "form") {
2773
+ break;
2774
+ }
2775
+ form = form.parentNode;
2776
+ }
2777
+ if (form) {
2778
+ const walker = this._createTreeWalker(form);
2779
+ let refNode = traverseNode(form, walker);
2780
+ refNode = walker.firstChild();
2781
+ while (refNode) {
2782
+ const nodeName = refNode.localName;
2783
+ const nodeAttrType = refNode.getAttribute("type");
2784
+ let m;
2785
+ if (nodeName === "button") {
2786
+ m = !(refNode.hasAttribute("type") && KEYS_INPUT_RESET.has(nodeAttrType));
2787
+ } else if (nodeName === "input") {
2788
+ m = refNode.hasAttribute("type") && KEYS_INPUT_SUBMIT.has(nodeAttrType);
2789
+ }
2790
+ if (m) {
2791
+ if (refNode === node) {
2792
+ matched.add(node);
2793
+ }
2794
+ break;
2795
+ }
2796
+ refNode = walker.nextNode();
2797
+ }
2798
+ }
2799
+ } else if (localName === "input" && node.hasAttribute("type") && node.hasAttribute("checked") && KEYS_INPUT_CHECK.has(attrType)) {
2800
+ matched.add(node);
2801
+ } else if (localName === "option" && node.hasAttribute("selected")) {
2802
+ matched.add(node);
2803
+ }
2804
+ break;
2805
+ }
2806
+ case "valid":
2807
+ case "invalid": {
2808
+ if (KEYS_FORM_PS_VALID.has(localName)) {
2809
+ let valid;
2810
+ if (node.checkValidity()) {
2811
+ if (node.maxLength >= 0) {
2812
+ if (node.maxLength >= node.value.length) {
2813
+ valid = true;
2814
+ }
2815
+ } else {
2816
+ valid = true;
2817
+ }
2818
+ }
2819
+ if (valid) {
2820
+ if (astName === "valid") {
2821
+ matched.add(node);
2822
+ }
2823
+ } else if (astName === "invalid") {
2824
+ matched.add(node);
2825
+ }
2826
+ } else if (localName === "fieldset") {
2827
+ const walker = this._createTreeWalker(node);
2828
+ let refNode = traverseNode(node, walker);
2829
+ refNode = walker.firstChild();
2830
+ let valid;
2831
+ if (!refNode) {
2832
+ valid = true;
2833
+ } else {
2834
+ while (refNode) {
2835
+ if (KEYS_FORM_PS_VALID.has(refNode.localName)) {
2836
+ if (refNode.checkValidity()) {
2837
+ if (refNode.maxLength >= 0) {
2838
+ valid = refNode.maxLength >= refNode.value.length;
2839
+ } else {
2840
+ valid = true;
2841
+ }
2842
+ } else {
2843
+ valid = false;
2844
+ }
2845
+ if (!valid) {
2846
+ break;
2847
+ }
2848
+ }
2849
+ refNode = walker.nextNode();
2850
+ }
2851
+ }
2852
+ if (valid) {
2853
+ if (astName === "valid") {
2854
+ matched.add(node);
2855
+ }
2856
+ } else if (astName === "invalid") {
2857
+ matched.add(node);
2858
+ }
2859
+ }
2860
+ break;
2861
+ }
2862
+ case "in-range":
2863
+ case "out-of-range": {
2864
+ const attrType = node.getAttribute("type");
2865
+ if (localName === "input" && !(node.readonly || node.hasAttribute("readonly")) && !(node.disabled || node.hasAttribute("disabled")) && KEYS_INPUT_RANGE.has(attrType)) {
2866
+ const flowed = node.validity.rangeUnderflow || node.validity.rangeOverflow;
2867
+ if (astName === "out-of-range" && flowed) {
2868
+ matched.add(node);
2869
+ } else if (astName === "in-range" && !flowed && (node.hasAttribute("min") || node.hasAttribute("max") || attrType === "range")) {
2870
+ matched.add(node);
2871
+ }
2872
+ }
2873
+ break;
2874
+ }
2875
+ case "required":
2876
+ case "optional": {
2877
+ let required;
2878
+ let optional;
2879
+ if (localName === "select" || localName === "textarea") {
2880
+ if (node.required || node.hasAttribute("required")) {
2881
+ required = true;
2882
+ } else {
2883
+ optional = true;
2884
+ }
2885
+ } else if (localName === "input") {
2886
+ if (node.hasAttribute("type")) {
2887
+ const attrType = node.getAttribute("type");
2888
+ if (KEYS_INPUT_REQUIRED.has(attrType)) {
2889
+ if (node.required || node.hasAttribute("required")) {
2890
+ required = true;
2891
+ } else {
2892
+ optional = true;
2893
+ }
2894
+ } else {
2895
+ optional = true;
2896
+ }
2897
+ } else if (node.required || node.hasAttribute("required")) {
2898
+ required = true;
2899
+ } else {
2900
+ optional = true;
2901
+ }
2902
+ }
2903
+ if (astName === "required" && required) {
2904
+ matched.add(node);
2905
+ } else if (astName === "optional" && optional) {
2906
+ matched.add(node);
2907
+ }
2908
+ break;
2909
+ }
2910
+ case "root": {
2911
+ if (node === this.#document.documentElement) {
2912
+ matched.add(node);
2913
+ }
2914
+ break;
2915
+ }
2916
+ case "empty": {
2917
+ if (node.hasChildNodes()) {
2918
+ const walker = this._createTreeWalker(node, {
2919
+ force: true,
2920
+ whatToShow: SHOW_ALL
2921
+ });
2922
+ let refNode = walker.firstChild();
2923
+ let bool;
2924
+ while (refNode) {
2925
+ bool = refNode.nodeType !== ELEMENT_NODE && refNode.nodeType !== TEXT_NODE;
2926
+ if (!bool) {
2927
+ break;
2928
+ }
2929
+ refNode = walker.nextSibling();
2930
+ }
2931
+ if (bool) {
2932
+ matched.add(node);
2933
+ }
2934
+ } else {
2935
+ matched.add(node);
2936
+ }
2937
+ break;
2938
+ }
2939
+ case "first-child": {
2940
+ if (parentNode && node === parentNode.firstElementChild || node === this.#root) {
2941
+ matched.add(node);
2942
+ }
2943
+ break;
2944
+ }
2945
+ case "last-child": {
2946
+ if (parentNode && node === parentNode.lastElementChild || node === this.#root) {
2947
+ matched.add(node);
2948
+ }
2949
+ break;
2950
+ }
2951
+ case "only-child": {
2952
+ if (parentNode && node === parentNode.firstElementChild && node === parentNode.lastElementChild || node === this.#root) {
2953
+ matched.add(node);
2954
+ }
2955
+ break;
2956
+ }
2957
+ case "defined": {
2958
+ if (node.hasAttribute("is") || localName.includes("-")) {
2959
+ if (isCustomElement(node)) {
2960
+ matched.add(node);
2961
+ }
2962
+ } else if (node instanceof this.#window.HTMLElement || node instanceof this.#window.SVGElement) {
2963
+ matched.add(node);
2964
+ }
2965
+ break;
2966
+ }
2967
+ case "popover-open": {
2968
+ if (node.popover && isVisible(node)) {
2969
+ matched.add(node);
2970
+ }
2971
+ break;
2972
+ }
2973
+ // Ignore :host.
2974
+ case "host": {
2975
+ break;
2976
+ }
2977
+ // Legacy pseudo-elements.
2978
+ case "after":
2979
+ case "before":
2980
+ case "first-letter":
2981
+ case "first-line": {
2982
+ if (warn) {
2983
+ this.onError(
2984
+ generateException(
2985
+ `Unsupported pseudo-element ::${astName}`,
2986
+ NOT_SUPPORTED_ERR,
2987
+ this.#window
2988
+ )
2989
+ );
2990
+ }
2991
+ break;
2992
+ }
2993
+ // Not supported.
2994
+ case "autofill":
2995
+ case "blank":
2996
+ case "buffering":
2997
+ case "current":
2998
+ case "fullscreen":
2999
+ case "future":
3000
+ case "has-slotted":
3001
+ case "heading":
3002
+ case "modal":
3003
+ case "muted":
3004
+ case "past":
3005
+ case "paused":
3006
+ case "picture-in-picture":
3007
+ case "playing":
3008
+ case "seeking":
3009
+ case "stalled":
3010
+ case "user-invalid":
3011
+ case "user-valid":
3012
+ case "volume-locked":
3013
+ case "-webkit-autofill": {
3014
+ if (warn) {
3015
+ this.onError(
3016
+ generateException(
3017
+ `Unsupported pseudo-class :${astName}`,
3018
+ NOT_SUPPORTED_ERR,
3019
+ this.#window
3020
+ )
3021
+ );
3022
+ }
3023
+ break;
3024
+ }
3025
+ default: {
3026
+ if (astName.startsWith("-webkit-")) {
3027
+ if (warn) {
3028
+ this.onError(
3029
+ generateException(
3030
+ `Unsupported pseudo-class :${astName}`,
3031
+ NOT_SUPPORTED_ERR,
3032
+ this.#window
3033
+ )
3034
+ );
3035
+ }
3036
+ } else if (!forgive) {
3037
+ this.onError(
3038
+ generateException(
3039
+ `Unknown pseudo-class :${astName}`,
3040
+ SYNTAX_ERR,
3041
+ this.#window
3042
+ )
3043
+ );
3044
+ }
3045
+ }
3046
+ }
3047
+ }
3048
+ return matched;
3049
+ }
3050
+ /**
3051
+ * Evaluates the :host() pseudo-class.
3052
+ * @private
3053
+ * @param {Array.<object>} leaves - The AST leaves.
3054
+ * @param {object} host - The host element.
3055
+ * @param {object} ast - The original AST for error reporting.
3056
+ * @returns {boolean} True if matched.
3057
+ */
3058
+ _evaluateHostPseudo = (leaves, host, ast) => {
3059
+ const l = leaves.length;
3060
+ for (let i = 0; i < l; i++) {
3061
+ const leaf = leaves[i];
3062
+ if (leaf.type === COMBINATOR) {
3063
+ const css = (0, import_css_tree.generate)(ast);
3064
+ const msg = `Invalid selector ${css}`;
3065
+ this.onError(generateException(msg, SYNTAX_ERR, this.#window));
3066
+ return false;
3067
+ }
3068
+ if (!this._matchSelector(leaf, host).has(host)) {
3069
+ return false;
3070
+ }
3071
+ }
3072
+ return true;
3073
+ };
3074
+ /**
3075
+ * Evaluates the :host-context() pseudo-class.
3076
+ * @private
3077
+ * @param {Array.<object>} leaves - The AST leaves.
3078
+ * @param {object} host - The host element.
3079
+ * @param {object} ast - The original AST for error reporting.
3080
+ * @returns {boolean} True if matched.
3081
+ */
3082
+ _evaluateHostContextPseudo = (leaves, host, ast) => {
3083
+ let parent = host;
3084
+ while (parent) {
3085
+ let bool;
3086
+ const l = leaves.length;
3087
+ for (let i = 0; i < l; i++) {
3088
+ const leaf = leaves[i];
3089
+ if (leaf.type === COMBINATOR) {
3090
+ const css = (0, import_css_tree.generate)(ast);
3091
+ const msg = `Invalid selector ${css}`;
3092
+ this.onError(generateException(msg, SYNTAX_ERR, this.#window));
3093
+ return false;
3094
+ }
3095
+ bool = this._matchSelector(leaf, parent).has(parent);
3096
+ if (!bool) {
3097
+ break;
3098
+ }
3099
+ }
3100
+ if (bool) {
3101
+ return true;
3102
+ }
3103
+ parent = parent.parentNode;
3104
+ }
3105
+ return false;
3106
+ };
3107
+ /**
3108
+ * Matches shadow host pseudo-classes.
3109
+ * @private
3110
+ * @param {object} ast - The AST.
3111
+ * @param {object} node - The DocumentFragment node.
3112
+ * @returns {?object} The matched node.
3113
+ */
3114
+ _matchShadowHostPseudoClass = (ast, node) => {
3115
+ const { children: astChildren, name: astName } = ast;
3116
+ if (!Array.isArray(astChildren)) {
3117
+ if (astName === "host") {
3118
+ return node;
3119
+ }
3120
+ const msg = `Invalid selector :${astName}`;
3121
+ return this.onError(generateException(msg, SYNTAX_ERR, this.#window));
3122
+ }
3123
+ if (astName !== "host" && astName !== "host-context") {
3124
+ const msg = `Invalid selector :${astName}()`;
3125
+ return this.onError(generateException(msg, SYNTAX_ERR, this.#window));
3126
+ }
3127
+ if (astChildren.length !== 1) {
3128
+ const css = (0, import_css_tree.generate)(ast);
3129
+ const msg = `Invalid selector ${css}`;
3130
+ return this.onError(generateException(msg, SYNTAX_ERR, this.#window));
3131
+ }
3132
+ const { host } = node;
3133
+ const { branches } = walkAST(astChildren[0]);
3134
+ const [branch] = branches;
3135
+ const [...leaves] = branch;
3136
+ let isMatch = false;
3137
+ if (astName === "host") {
3138
+ isMatch = this._evaluateHostPseudo(leaves, host, ast);
3139
+ } else {
3140
+ isMatch = this._evaluateHostContextPseudo(leaves, host, ast);
3141
+ }
3142
+ return isMatch ? node : null;
3143
+ };
3144
+ /**
3145
+ * Matches a selector for element nodes.
3146
+ * @private
3147
+ * @param {object} ast - The AST.
3148
+ * @param {object} node - The Element node.
3149
+ * @param {object} [opt] - Options.
3150
+ * @returns {Set.<object>} A collection of matched nodes.
3151
+ */
3152
+ _matchSelectorForElement = (ast, node, opt = {}) => {
3153
+ const { type: astType } = ast;
3154
+ const astName = unescapeSelector(ast.name);
3155
+ const matched = /* @__PURE__ */ new Set();
3156
+ switch (astType) {
3157
+ case ATTR_SELECTOR: {
3158
+ if (matchAttributeSelector(ast, node, opt)) {
3159
+ matched.add(node);
3160
+ }
3161
+ break;
3162
+ }
3163
+ case ID_SELECTOR: {
3164
+ if (node.id === astName) {
3165
+ matched.add(node);
3166
+ }
3167
+ break;
3168
+ }
3169
+ case CLASS_SELECTOR: {
3170
+ if (node.classList.contains(astName)) {
3171
+ matched.add(node);
3172
+ }
3173
+ break;
3174
+ }
3175
+ case PS_CLASS_SELECTOR: {
3176
+ return this._matchPseudoClassSelector(ast, node, opt);
3177
+ }
3178
+ case TYPE_SELECTOR: {
3179
+ if (matchTypeSelector(ast, node, opt)) {
3180
+ matched.add(node);
3181
+ }
3182
+ break;
3183
+ }
3184
+ // PS_ELEMENT_SELECTOR is handled by default.
3185
+ default: {
3186
+ try {
3187
+ if (opt.check) {
3188
+ const css = (0, import_css_tree.generate)(ast);
3189
+ this.#pseudoElement.push(css);
3190
+ matched.add(node);
3191
+ } else {
3192
+ matchPseudoElementSelector(astName, astType, opt);
3193
+ }
3194
+ } catch (e) {
3195
+ this.onError(e);
3196
+ }
3197
+ }
3198
+ }
3199
+ return matched;
3200
+ };
3201
+ /**
3202
+ * Matches a selector for a shadow root.
3203
+ * @private
3204
+ * @param {object} ast - The AST.
3205
+ * @param {object} node - The DocumentFragment node.
3206
+ * @param {object} [opt] - Options.
3207
+ * @returns {Set.<object>} A collection of matched nodes.
3208
+ */
3209
+ _matchSelectorForShadowRoot = (ast, node, opt = {}) => {
3210
+ const { name: astName } = ast;
3211
+ if (KEYS_LOGICAL.has(astName)) {
3212
+ opt.isShadowRoot = true;
3213
+ return this._matchPseudoClassSelector(ast, node, opt);
3214
+ }
3215
+ const matched = /* @__PURE__ */ new Set();
3216
+ if (astName === "host" || astName === "host-context") {
3217
+ const res = this._matchShadowHostPseudoClass(ast, node, opt);
3218
+ if (res) {
3219
+ this.#verifyShadowHost = true;
3220
+ matched.add(res);
3221
+ }
3222
+ }
3223
+ return matched;
3224
+ };
3225
+ /**
3226
+ * Matches a selector.
3227
+ * @private
3228
+ * @param {object} ast - The AST.
3229
+ * @param {object} node - The Document, DocumentFragment, or Element node.
3230
+ * @param {object} [opt] - Options.
3231
+ * @returns {Set.<object>} A collection of matched nodes.
3232
+ */
3233
+ _matchSelector = (ast, node, opt = {}) => {
3234
+ if (node.nodeType === ELEMENT_NODE) {
3235
+ return this._matchSelectorForElement(ast, node, opt);
3236
+ }
3237
+ if (this.#shadow && node.nodeType === DOCUMENT_FRAGMENT_NODE && ast.type === PS_CLASS_SELECTOR) {
3238
+ return this._matchSelectorForShadowRoot(ast, node, opt);
3239
+ }
3240
+ return /* @__PURE__ */ new Set();
3241
+ };
3242
+ /**
3243
+ * Matches leaves.
3244
+ * @private
3245
+ * @param {Array.<object>} leaves - The AST leaves.
3246
+ * @param {object} node - The node.
3247
+ * @param {object} [opt] - Options.
3248
+ * @returns {boolean} The result.
3249
+ */
3250
+ _matchLeaves = (leaves, node, opt = {}) => {
3251
+ const results = this.#invalidate ? this.#invalidateResults : this.#results;
3252
+ let result = results.get(leaves);
3253
+ if (result && result.has(node)) {
3254
+ const { matched } = result.get(node);
3255
+ return matched;
3256
+ }
3257
+ let cacheable = true;
3258
+ if (node.nodeType === ELEMENT_NODE && KEYS_FORM.has(node.localName)) {
3259
+ cacheable = false;
3260
+ }
3261
+ let bool;
3262
+ const l = leaves.length;
3263
+ for (let i = 0; i < l; i++) {
3264
+ const leaf = leaves[i];
3265
+ switch (leaf.type) {
3266
+ case ATTR_SELECTOR:
3267
+ case ID_SELECTOR: {
3268
+ cacheable = false;
3269
+ break;
3270
+ }
3271
+ case PS_CLASS_SELECTOR: {
3272
+ if (KEYS_PS_UNCACHE.has(leaf.name)) {
3273
+ cacheable = false;
3274
+ }
3275
+ break;
3276
+ }
3277
+ default: {
3278
+ }
3279
+ }
3280
+ bool = this._matchSelector(leaf, node, opt).has(node);
3281
+ if (!bool) {
3282
+ break;
3283
+ }
3284
+ }
3285
+ if (cacheable) {
3286
+ if (!result) {
3287
+ result = /* @__PURE__ */ new WeakMap();
3288
+ }
3289
+ result.set(node, {
3290
+ matched: bool
3291
+ });
3292
+ results.set(leaves, result);
3293
+ }
3294
+ return bool;
3295
+ };
3296
+ /**
3297
+ * Traverses all descendant nodes and collects matches.
3298
+ * @private
3299
+ * @param {object} baseNode - The base Element node or Element.shadowRoot.
3300
+ * @param {Array.<object>} leaves - The AST leaves.
3301
+ * @param {object} [opt] - Options.
3302
+ * @returns {Set.<object>} A collection of matched nodes.
3303
+ */
3304
+ _traverseAllDescendants = (baseNode, leaves, opt = {}) => {
3305
+ const walker = this._createTreeWalker(baseNode);
3306
+ traverseNode(baseNode, walker);
3307
+ let currentNode = walker.firstChild();
3308
+ const nodes = /* @__PURE__ */ new Set();
3309
+ while (currentNode) {
3310
+ if (this._matchLeaves(leaves, currentNode, opt)) {
3311
+ nodes.add(currentNode);
3312
+ }
3313
+ currentNode = walker.nextNode();
3314
+ }
3315
+ return nodes;
3316
+ };
3317
+ /**
3318
+ * Finds descendant nodes.
3319
+ * @private
3320
+ * @param {Array.<object>} leaves - The AST leaves.
3321
+ * @param {object} baseNode - The base Element node or Element.shadowRoot.
3322
+ * @param {object} [opt] - Options.
3323
+ * @returns {Set.<object>} A collection of matched nodes.
3324
+ */
3325
+ _findDescendantNodes = (leaves, baseNode, opt = {}) => {
3326
+ const [leaf, ...filterLeaves] = leaves;
3327
+ const { type: leafType } = leaf;
3328
+ switch (leafType) {
3329
+ case ID_SELECTOR: {
3330
+ const canUseGetElementById = !this.#shadow && baseNode.nodeType === ELEMENT_NODE && this.#root.nodeType !== ELEMENT_NODE;
3331
+ if (canUseGetElementById) {
3332
+ const leafName = unescapeSelector(leaf.name);
3333
+ const nodes = /* @__PURE__ */ new Set();
3334
+ const foundNode = this.#root.getElementById(leafName);
3335
+ if (foundNode && foundNode !== baseNode && baseNode.contains(foundNode)) {
3336
+ const isCompoundSelector = filterLeaves.length > 0;
3337
+ if (!isCompoundSelector || this._matchLeaves(filterLeaves, foundNode, opt)) {
3338
+ nodes.add(foundNode);
3339
+ }
3340
+ }
3341
+ return nodes;
3342
+ }
3343
+ return this._traverseAllDescendants(baseNode, leaves, opt);
3344
+ }
3345
+ case PS_ELEMENT_SELECTOR: {
3346
+ const leafName = unescapeSelector(leaf.name);
3347
+ matchPseudoElementSelector(leafName, leafType, opt);
3348
+ return /* @__PURE__ */ new Set();
3349
+ }
3350
+ default: {
3351
+ return this._traverseAllDescendants(baseNode, leaves, opt);
3352
+ }
3353
+ }
3354
+ };
3355
+ /**
3356
+ * Matches the descendant combinator ' '.
3357
+ * @private
3358
+ * @param {object} twig - The twig object.
3359
+ * @param {object} node - The Element node.
3360
+ * @param {object} [opt] - Options.
3361
+ * @returns {Set.<object>} A collection of matched nodes.
3362
+ */
3363
+ _matchDescendantCombinator = (twig, node, opt = {}) => {
3364
+ const { leaves } = twig;
3365
+ const { parentNode } = node;
3366
+ const { dir } = opt;
3367
+ if (dir === DIR_NEXT) {
3368
+ return this._findDescendantNodes(leaves, node, opt);
3369
+ }
3370
+ const ancestors = [];
3371
+ let refNode = parentNode;
3372
+ while (refNode) {
3373
+ if (this._matchLeaves(leaves, refNode, opt)) {
3374
+ ancestors.push(refNode);
3375
+ }
3376
+ refNode = refNode.parentNode;
3377
+ }
3378
+ if (ancestors.length) {
3379
+ return new Set(ancestors.reverse());
3380
+ }
3381
+ return /* @__PURE__ */ new Set();
3382
+ };
3383
+ /**
3384
+ * Matches the child combinator '>'.
3385
+ * @private
3386
+ * @param {object} twig - The twig object.
3387
+ * @param {object} node - The Element node.
3388
+ * @param {object} [opt] - Options.
3389
+ * @returns {Set.<object>} A collection of matched nodes.
3390
+ */
3391
+ _matchChildCombinator = (twig, node, opt = {}) => {
3392
+ const { leaves } = twig;
3393
+ const { dir } = opt;
3394
+ const { parentNode } = node;
3395
+ const matched = /* @__PURE__ */ new Set();
3396
+ if (dir === DIR_NEXT) {
3397
+ let refNode = node.firstElementChild;
3398
+ while (refNode) {
3399
+ if (this._matchLeaves(leaves, refNode, opt)) {
3400
+ matched.add(refNode);
3401
+ }
3402
+ refNode = refNode.nextElementSibling;
3403
+ }
3404
+ } else {
3405
+ if (parentNode && this._matchLeaves(leaves, parentNode, opt)) {
3406
+ matched.add(parentNode);
3407
+ }
3408
+ }
3409
+ return matched;
3410
+ };
3411
+ /**
3412
+ * Matches the adjacent sibling combinator '+'.
3413
+ * @private
3414
+ * @param {object} twig - The twig object.
3415
+ * @param {object} node - The Element node.
3416
+ * @param {object} [opt] - Options.
3417
+ * @returns {Set.<object>} A collection of matched nodes.
3418
+ */
3419
+ _matchAdjacentSiblingCombinator = (twig, node, opt = {}) => {
3420
+ const { leaves } = twig;
3421
+ const { dir } = opt;
3422
+ const matched = /* @__PURE__ */ new Set();
3423
+ const refNode = dir === DIR_NEXT ? node.nextElementSibling : node.previousElementSibling;
3424
+ if (refNode && this._matchLeaves(leaves, refNode, opt)) {
3425
+ matched.add(refNode);
3426
+ }
3427
+ return matched;
3428
+ };
3429
+ /**
3430
+ * Matches the general sibling combinator '~'.
3431
+ * @private
3432
+ * @param {object} twig - The twig object.
3433
+ * @param {object} node - The Element node.
3434
+ * @param {object} [opt] - Options.
3435
+ * @returns {Set.<object>} A collection of matched nodes.
3436
+ */
3437
+ _matchGeneralSiblingCombinator = (twig, node, opt = {}) => {
3438
+ const { leaves } = twig;
3439
+ const { dir } = opt;
3440
+ const matched = /* @__PURE__ */ new Set();
3441
+ let refNode = dir === DIR_NEXT ? node.nextElementSibling : node.previousElementSibling;
3442
+ while (refNode) {
3443
+ if (this._matchLeaves(leaves, refNode, opt)) {
3444
+ matched.add(refNode);
3445
+ }
3446
+ refNode = dir === DIR_NEXT ? refNode.nextElementSibling : refNode.previousElementSibling;
3447
+ }
3448
+ return matched;
3449
+ };
3450
+ /**
3451
+ * Matches a combinator.
3452
+ * @private
3453
+ * @param {object} twig - The twig object.
3454
+ * @param {object} node - The Element node.
3455
+ * @param {object} [opt] - Options.
3456
+ * @returns {Set.<object>} A collection of matched nodes.
3457
+ */
3458
+ _matchCombinator = (twig, node, opt = {}) => {
3459
+ const {
3460
+ combo: { name: comboName }
3461
+ } = twig;
3462
+ switch (comboName) {
3463
+ case "+": {
3464
+ return this._matchAdjacentSiblingCombinator(twig, node, opt);
3465
+ }
3466
+ case "~": {
3467
+ return this._matchGeneralSiblingCombinator(twig, node, opt);
3468
+ }
3469
+ case ">": {
3470
+ return this._matchChildCombinator(twig, node, opt);
3471
+ }
3472
+ case " ":
3473
+ default: {
3474
+ return this._matchDescendantCombinator(twig, node, opt);
3475
+ }
3476
+ }
3477
+ };
3478
+ /**
3479
+ * Traverses with a TreeWalker and collects nodes matching the leaves.
3480
+ * @private
3481
+ * @param {TreeWalker} walker - The TreeWalker instance to use.
3482
+ * @param {Array} leaves - The AST leaves to match against.
3483
+ * @param {object} options - Traversal options.
3484
+ * @param {Node} options.startNode - The node to start traversal from.
3485
+ * @param {string} options.targetType - The type of target ('all' or 'first').
3486
+ * @param {Node} [options.boundaryNode] - The node to stop traversal at.
3487
+ * @param {boolean} [options.force] - Force traversal to the next node.
3488
+ * @returns {Array.<Node>} An array of matched nodes.
3489
+ */
3490
+ _traverseAndCollectNodes = (walker, leaves, options) => {
3491
+ const { boundaryNode, force, startNode, targetType } = options;
3492
+ const collectedNodes = [];
3493
+ let currentNode = traverseNode(startNode, walker, !!force);
3494
+ if (!currentNode) {
3495
+ return [];
3496
+ }
3497
+ if (currentNode.nodeType !== ELEMENT_NODE) {
3498
+ currentNode = walker.nextNode();
3499
+ } else if (currentNode === startNode && currentNode !== this.#root) {
3500
+ currentNode = walker.nextNode();
3501
+ }
3502
+ const matchOpt = {
3503
+ warn: this.#warn
3504
+ };
3505
+ while (currentNode) {
3506
+ if (boundaryNode && currentNode === boundaryNode) {
3507
+ break;
3508
+ }
3509
+ if (this._matchLeaves(leaves, currentNode, matchOpt) && currentNode !== this.#node) {
3510
+ collectedNodes.push(currentNode);
3511
+ if (targetType !== TARGET_ALL) {
3512
+ break;
3513
+ }
3514
+ }
3515
+ currentNode = walker.nextNode();
3516
+ }
3517
+ return collectedNodes;
3518
+ };
3519
+ /**
3520
+ * Finds matched node(s) preceding this.#node.
3521
+ * @private
3522
+ * @param {Array.<object>} leaves - The AST leaves.
3523
+ * @param {object} node - The node to start from.
3524
+ * @param {object} opt - Options.
3525
+ * @param {boolean} [opt.force] - If true, traverses only to the next node.
3526
+ * @param {string} [opt.targetType] - The target type.
3527
+ * @returns {Array.<object>} A collection of matched nodes.
3528
+ */
3529
+ _findPrecede = (leaves, node, opt = {}) => {
3530
+ const { force, targetType } = opt;
3531
+ if (!this.#rootWalker) {
3532
+ this.#rootWalker = this._createTreeWalker(this.#root);
3533
+ }
3534
+ return this._traverseAndCollectNodes(this.#rootWalker, leaves, {
3535
+ force,
3536
+ targetType,
3537
+ boundaryNode: this.#node,
3538
+ startNode: node
3539
+ });
3540
+ };
3541
+ /**
3542
+ * Finds matched node(s) in #nodeWalker.
3543
+ * @private
3544
+ * @param {Array.<object>} leaves - The AST leaves.
3545
+ * @param {object} node - The node to start from.
3546
+ * @param {object} opt - Options.
3547
+ * @param {boolean} [opt.precede] - If true, finds preceding nodes.
3548
+ * @returns {Array.<object>} A collection of matched nodes.
3549
+ */
3550
+ _findNodeWalker = (leaves, node, opt = {}) => {
3551
+ const { precede, ...traversalOpts } = opt;
3552
+ if (precede) {
3553
+ const precedeNodes = this._findPrecede(leaves, this.#root, opt);
3554
+ if (precedeNodes.length) {
3555
+ return precedeNodes;
3556
+ }
3557
+ }
3558
+ if (!this.#nodeWalker) {
3559
+ this.#nodeWalker = this._createTreeWalker(this.#node);
3560
+ }
3561
+ return this._traverseAndCollectNodes(this.#nodeWalker, leaves, {
3562
+ startNode: node,
3563
+ ...traversalOpts
3564
+ });
3565
+ };
3566
+ /**
3567
+ * Matches the node itself.
3568
+ * @private
3569
+ * @param {Array} leaves - The AST leaves.
3570
+ * @param {boolean} check - Indicates if running in internal check().
3571
+ * @returns {Array} An array containing [nodes, filtered, pseudoElement].
3572
+ */
3573
+ _matchSelf = (leaves, check = false) => {
3574
+ const options = { check, warn: this.#warn };
3575
+ const matched = this._matchLeaves(leaves, this.#node, options);
3576
+ const nodes = matched ? [this.#node] : [];
3577
+ return [nodes, matched, this.#pseudoElement];
3578
+ };
3579
+ /**
3580
+ * Finds lineal nodes (self and ancestors).
3581
+ * @private
3582
+ * @param {Array} leaves - The AST leaves.
3583
+ * @param {object} opt - Options.
3584
+ * @returns {Array} An array containing [nodes, filtered].
3585
+ */
3586
+ _findLineal = (leaves, opt) => {
3587
+ const { complex } = opt;
3588
+ const nodes = [];
3589
+ const options = { warn: this.#warn };
3590
+ const selfMatched = this._matchLeaves(leaves, this.#node, options);
3591
+ if (selfMatched) {
3592
+ nodes.push(this.#node);
3593
+ }
3594
+ if (!selfMatched || complex) {
3595
+ let currentNode = this.#node.parentNode;
3596
+ while (currentNode) {
3597
+ if (this._matchLeaves(leaves, currentNode, options)) {
3598
+ nodes.push(currentNode);
3599
+ }
3600
+ currentNode = currentNode.parentNode;
3601
+ }
3602
+ }
3603
+ const filtered = nodes.length > 0;
3604
+ return [nodes, filtered];
3605
+ };
3606
+ /**
3607
+ * Finds entry nodes for pseudo-element selectors.
3608
+ * @private
3609
+ * @param {object} leaf - The pseudo-element leaf from the AST.
3610
+ * @param {Array.<object>} filterLeaves - Leaves for compound selectors.
3611
+ * @param {string} targetType - The type of target to find.
3612
+ * @returns {object} The result { nodes, filtered, pending }.
3613
+ */
3614
+ _findEntryNodesForPseudoElement = (leaf, filterLeaves, targetType) => {
3615
+ let nodes = [];
3616
+ let filtered = false;
3617
+ if (targetType === TARGET_SELF && this.#check) {
3618
+ const css = (0, import_css_tree.generate)(leaf);
3619
+ this.#pseudoElement.push(css);
3620
+ if (filterLeaves.length) {
3621
+ [nodes, filtered] = this._matchSelf(filterLeaves, this.#check);
3622
+ } else {
3623
+ nodes.push(this.#node);
3624
+ filtered = true;
3625
+ }
3626
+ } else {
3627
+ matchPseudoElementSelector(leaf.name, leaf.type, { warn: this.#warn });
3628
+ }
3629
+ return { nodes, filtered, pending: false };
3630
+ };
3631
+ /**
3632
+ * Finds entry nodes for ID selectors.
3633
+ * @private
3634
+ * @param {object} twig - The current twig from the AST branch.
3635
+ * @param {string} targetType - The type of target to find.
3636
+ * @param {object} opt - Additional options for finding nodes.
3637
+ * @returns {object} The result { nodes, filtered, pending }.
3638
+ */
3639
+ _findEntryNodesForId = (twig, targetType, opt) => {
3640
+ const { leaves } = twig;
3641
+ const [leaf, ...filterLeaves] = leaves;
3642
+ const { complex, precede } = opt;
3643
+ let nodes = [];
3644
+ let filtered = false;
3645
+ if (targetType === TARGET_SELF) {
3646
+ [nodes, filtered] = this._matchSelf(leaves);
3647
+ } else if (targetType === TARGET_LINEAL) {
3648
+ [nodes, filtered] = this._findLineal(leaves, { complex });
3649
+ } else if (targetType === TARGET_FIRST && this.#root.nodeType !== ELEMENT_NODE) {
3650
+ const node = this.#root.getElementById(leaf.name);
3651
+ if (node) {
3652
+ if (filterLeaves.length) {
3653
+ if (this._matchLeaves(filterLeaves, node, { warn: this.#warn })) {
3654
+ nodes.push(node);
3655
+ filtered = true;
3656
+ }
3657
+ } else {
3658
+ nodes.push(node);
3659
+ filtered = true;
3660
+ }
3661
+ }
3662
+ } else {
3663
+ nodes = this._findNodeWalker(leaves, this.#node, { precede, targetType });
3664
+ filtered = nodes.length > 0;
3665
+ }
3666
+ return { nodes, filtered, pending: false };
3667
+ };
3668
+ /**
3669
+ * Finds entry nodes for class selectors.
3670
+ * @private
3671
+ * @param {Array.<object>} leaves - The AST leaves for the selector.
3672
+ * @param {string} targetType - The type of target to find.
3673
+ * @param {object} opt - Additional options for finding nodes.
3674
+ * @returns {object} The result { nodes, filtered, pending }.
3675
+ */
3676
+ _findEntryNodesForClass = (leaves, targetType, opt) => {
3677
+ const { complex, precede } = opt;
3678
+ let nodes = [];
3679
+ let filtered = false;
3680
+ if (targetType === TARGET_SELF) {
3681
+ [nodes, filtered] = this._matchSelf(leaves);
3682
+ } else if (targetType === TARGET_LINEAL) {
3683
+ [nodes, filtered] = this._findLineal(leaves, { complex });
3684
+ } else {
3685
+ nodes = this._findNodeWalker(leaves, this.#node, { precede, targetType });
3686
+ filtered = nodes.length > 0;
3687
+ }
3688
+ return { nodes, filtered, pending: false };
3689
+ };
3690
+ /**
3691
+ * Finds entry nodes for type selectors.
3692
+ * @private
3693
+ * @param {Array.<object>} leaves - The AST leaves for the selector.
3694
+ * @param {string} targetType - The type of target to find.
3695
+ * @param {object} opt - Additional options for finding nodes.
3696
+ * @returns {object} The result { nodes, filtered, pending }.
3697
+ */
3698
+ _findEntryNodesForType = (leaves, targetType, opt) => {
3699
+ const { complex, precede } = opt;
3700
+ let nodes = [];
3701
+ let filtered = false;
3702
+ if (targetType === TARGET_SELF) {
3703
+ [nodes, filtered] = this._matchSelf(leaves);
3704
+ } else if (targetType === TARGET_LINEAL) {
3705
+ [nodes, filtered] = this._findLineal(leaves, { complex });
3706
+ } else {
3707
+ nodes = this._findNodeWalker(leaves, this.#node, { precede, targetType });
3708
+ filtered = nodes.length > 0;
3709
+ }
3710
+ return { nodes, filtered, pending: false };
3711
+ };
3712
+ /**
3713
+ * Finds entry nodes for other selector types (default case).
3714
+ * @private
3715
+ * @param {object} twig - The current twig from the AST branch.
3716
+ * @param {string} targetType - The type of target to find.
3717
+ * @param {object} opt - Additional options for finding nodes.
3718
+ * @returns {object} The result { nodes, filtered, pending }.
3719
+ */
3720
+ _findEntryNodesForOther = (twig, targetType, opt) => {
3721
+ const { leaves } = twig;
3722
+ const [leaf, ...filterLeaves] = leaves;
3723
+ const { complex, precede } = opt;
3724
+ let nodes = [];
3725
+ let filtered = false;
3726
+ let pending = false;
3727
+ if (targetType !== TARGET_LINEAL && /host(?:-context)?/.test(leaf.name)) {
3728
+ let shadowRoot = null;
3729
+ if (this.#shadow && this.#node.nodeType === DOCUMENT_FRAGMENT_NODE) {
3730
+ shadowRoot = this._matchShadowHostPseudoClass(leaf, this.#node);
3731
+ } else if (filterLeaves.length && this.#node.nodeType === ELEMENT_NODE) {
3732
+ shadowRoot = this._matchShadowHostPseudoClass(
3733
+ leaf,
3734
+ this.#node.shadowRoot
3735
+ );
3736
+ }
3737
+ if (shadowRoot) {
3738
+ let bool = true;
3739
+ const l = filterLeaves.length;
3740
+ for (let i = 0; i < l; i++) {
3741
+ const filterLeaf = filterLeaves[i];
3742
+ switch (filterLeaf.name) {
3743
+ case "host":
3744
+ case "host-context": {
3745
+ const matchedNode = this._matchShadowHostPseudoClass(
3746
+ filterLeaf,
3747
+ shadowRoot
3748
+ );
3749
+ bool = matchedNode === shadowRoot;
3750
+ break;
3751
+ }
3752
+ case "has": {
3753
+ bool = this._matchPseudoClassSelector(
3754
+ filterLeaf,
3755
+ shadowRoot,
3756
+ {}
3757
+ ).has(shadowRoot);
3758
+ break;
3759
+ }
3760
+ default: {
3761
+ bool = false;
3762
+ }
3763
+ }
3764
+ if (!bool) {
3765
+ break;
3766
+ }
3767
+ }
3768
+ if (bool) {
3769
+ nodes.push(shadowRoot);
3770
+ filtered = true;
3771
+ }
3772
+ }
3773
+ } else if (targetType === TARGET_SELF) {
3774
+ [nodes, filtered] = this._matchSelf(leaves);
3775
+ } else if (targetType === TARGET_LINEAL) {
3776
+ [nodes, filtered] = this._findLineal(leaves, { complex });
3777
+ } else if (targetType === TARGET_FIRST) {
3778
+ nodes = this._findNodeWalker(leaves, this.#node, { precede, targetType });
3779
+ filtered = nodes.length > 0;
3780
+ } else {
3781
+ pending = true;
3782
+ }
3783
+ return { nodes, filtered, pending };
3784
+ };
3785
+ /**
3786
+ * Finds entry nodes.
3787
+ * @private
3788
+ * @param {object} twig - The twig object.
3789
+ * @param {string} targetType - The target type.
3790
+ * @param {object} [opt] - Options.
3791
+ * @param {boolean} [opt.complex] - If true, the selector is complex.
3792
+ * @param {string} [opt.dir] - The find direction.
3793
+ * @returns {object} An object with nodes and their state.
3794
+ */
3795
+ _findEntryNodes = (twig, targetType, opt = {}) => {
3796
+ const { leaves } = twig;
3797
+ const [leaf, ...filterLeaves] = leaves;
3798
+ const { complex = false, dir = DIR_PREV } = opt;
3799
+ const precede = dir === DIR_NEXT && this.#node.nodeType === ELEMENT_NODE && this.#node !== this.#root;
3800
+ let result;
3801
+ switch (leaf.type) {
3802
+ case PS_ELEMENT_SELECTOR: {
3803
+ result = this._findEntryNodesForPseudoElement(
3804
+ leaf,
3805
+ filterLeaves,
3806
+ targetType
3807
+ );
3808
+ break;
3809
+ }
3810
+ case ID_SELECTOR: {
3811
+ result = this._findEntryNodesForId(twig, targetType, {
3812
+ complex,
3813
+ precede
3814
+ });
3815
+ break;
3816
+ }
3817
+ case CLASS_SELECTOR: {
3818
+ result = this._findEntryNodesForClass(leaves, targetType, {
3819
+ complex,
3820
+ precede
3821
+ });
3822
+ break;
3823
+ }
3824
+ case TYPE_SELECTOR: {
3825
+ result = this._findEntryNodesForType(leaves, targetType, {
3826
+ complex,
3827
+ precede
3828
+ });
3829
+ break;
3830
+ }
3831
+ default: {
3832
+ result = this._findEntryNodesForOther(twig, targetType, {
3833
+ complex,
3834
+ precede
3835
+ });
3836
+ }
3837
+ }
3838
+ return {
3839
+ compound: filterLeaves.length > 0,
3840
+ filtered: result.filtered,
3841
+ nodes: result.nodes,
3842
+ pending: result.pending
3843
+ };
3844
+ };
3845
+ /**
3846
+ * Determines the direction and starting twig for a selector branch.
3847
+ * @private
3848
+ * @param {Array.<object>} branch - The AST branch.
3849
+ * @param {string} targetType - The type of target to find.
3850
+ * @returns {object} An object with the direction and starting twig.
3851
+ */
3852
+ _determineTraversalStrategy = (branch, targetType) => {
3853
+ const branchLen = branch.length;
3854
+ const firstTwig = branch[0];
3855
+ const lastTwig = branch[branchLen - 1];
3856
+ if (branchLen === 1) {
3857
+ return { dir: DIR_PREV, twig: firstTwig };
3858
+ }
3859
+ const {
3860
+ leaves: [{ name: firstName, type: firstType }]
3861
+ } = firstTwig;
3862
+ const {
3863
+ leaves: [{ name: lastName, type: lastType }]
3864
+ } = lastTwig;
3865
+ const { combo: firstCombo } = firstTwig;
3866
+ if (this.#selector.includes(":scope") || lastType === PS_ELEMENT_SELECTOR || lastType === ID_SELECTOR) {
3867
+ return { dir: DIR_PREV, twig: lastTwig };
3868
+ }
3869
+ if (firstType === ID_SELECTOR) {
3870
+ return { dir: DIR_NEXT, twig: firstTwig };
3871
+ }
3872
+ if (firstName === "*" && firstType === TYPE_SELECTOR) {
3873
+ return { dir: DIR_PREV, twig: lastTwig };
3874
+ }
3875
+ if (lastName === "*" && lastType === TYPE_SELECTOR) {
3876
+ return { dir: DIR_NEXT, twig: firstTwig };
3877
+ }
3878
+ if (branchLen === 2) {
3879
+ if (targetType === TARGET_FIRST) {
3880
+ return { dir: DIR_PREV, twig: lastTwig };
3881
+ }
3882
+ const { name: comboName } = firstCombo;
3883
+ if (comboName === "+" || comboName === "~") {
3884
+ return { dir: DIR_PREV, twig: lastTwig };
3885
+ }
3886
+ }
3887
+ return { dir: DIR_NEXT, twig: firstTwig };
3888
+ };
3889
+ /**
3890
+ * Processes pending items not resolved with a direct strategy.
3891
+ * @private
3892
+ * @param {Set.<Map>} pendingItems - The set of pending items.
3893
+ */
3894
+ _processPendingItems = (pendingItems) => {
3895
+ if (!pendingItems.size) {
3896
+ return;
3897
+ }
3898
+ if (!this.#rootWalker) {
3899
+ this.#rootWalker = this._createTreeWalker(this.#root);
3900
+ }
3901
+ const isScopedContext = this.#node !== this.#root && this.#node.nodeType === ELEMENT_NODE;
3902
+ const walker = this.#rootWalker;
3903
+ let node = this.#root;
3904
+ if (isScopedContext) {
3905
+ node = this.#node;
3906
+ }
3907
+ let nextNode = traverseNode(node, walker);
3908
+ while (nextNode) {
3909
+ const isWithinScope = this.#node.nodeType !== ELEMENT_NODE || nextNode === this.#node || this.#node.contains(nextNode);
3910
+ if (isWithinScope) {
3911
+ for (const pendingItem of pendingItems) {
3912
+ const { leaves } = pendingItem.get("twig");
3913
+ if (this._matchLeaves(leaves, nextNode, { warn: this.#warn })) {
3914
+ const index = pendingItem.get("index");
3915
+ this.#ast[index].filtered = true;
3916
+ this.#ast[index].find = true;
3917
+ this.#nodes[index].push(nextNode);
3918
+ }
3919
+ }
3920
+ } else if (isScopedContext) {
3921
+ break;
3922
+ }
3923
+ nextNode = walker.nextNode();
3924
+ }
3925
+ };
3926
+ /**
3927
+ * Collects nodes.
3928
+ * @private
3929
+ * @param {string} targetType - The target type.
3930
+ * @returns {Array.<Array.<object>>} An array containing the AST and nodes.
3931
+ */
3932
+ _collectNodes = (targetType) => {
3933
+ const ast = this.#ast.values();
3934
+ if (targetType === TARGET_ALL || targetType === TARGET_FIRST) {
3935
+ const pendingItems = /* @__PURE__ */ new Set();
3936
+ let i = 0;
3937
+ for (const { branch } of ast) {
3938
+ const complex = branch.length > 1;
3939
+ const { dir, twig } = this._determineTraversalStrategy(
3940
+ branch,
3941
+ targetType
3942
+ );
3943
+ const { compound, filtered, nodes, pending } = this._findEntryNodes(
3944
+ twig,
3945
+ targetType,
3946
+ { complex, dir }
3947
+ );
3948
+ if (nodes.length) {
3949
+ this.#ast[i].find = true;
3950
+ this.#nodes[i] = nodes;
3951
+ } else if (pending) {
3952
+ pendingItems.add(
3953
+ /* @__PURE__ */ new Map([
3954
+ ["index", i],
3955
+ ["twig", twig]
3956
+ ])
3957
+ );
3958
+ }
3959
+ this.#ast[i].dir = dir;
3960
+ this.#ast[i].filtered = filtered || !compound;
3961
+ i++;
3962
+ }
3963
+ this._processPendingItems(pendingItems);
3964
+ } else {
3965
+ let i = 0;
3966
+ for (const { branch } of ast) {
3967
+ const twig = branch[branch.length - 1];
3968
+ const complex = branch.length > 1;
3969
+ const dir = DIR_PREV;
3970
+ const { compound, filtered, nodes } = this._findEntryNodes(
3971
+ twig,
3972
+ targetType,
3973
+ { complex, dir }
3974
+ );
3975
+ if (nodes.length) {
3976
+ this.#ast[i].find = true;
3977
+ this.#nodes[i] = nodes;
3978
+ }
3979
+ this.#ast[i].dir = dir;
3980
+ this.#ast[i].filtered = filtered || !compound;
3981
+ i++;
3982
+ }
3983
+ }
3984
+ return [this.#ast, this.#nodes];
3985
+ };
3986
+ /**
3987
+ * Gets combined nodes.
3988
+ * @private
3989
+ * @param {object} twig - The twig object.
3990
+ * @param {object} nodes - A collection of nodes.
3991
+ * @param {string} dir - The direction.
3992
+ * @returns {Array.<object>} A collection of matched nodes.
3993
+ */
3994
+ _getCombinedNodes = (twig, nodes, dir) => {
3995
+ const arr = [];
3996
+ const options = {
3997
+ dir,
3998
+ warn: this.#warn
3999
+ };
4000
+ for (const node of nodes) {
4001
+ const matched = this._matchCombinator(twig, node, options);
4002
+ if (matched.size) {
4003
+ arr.push(...matched);
4004
+ }
4005
+ }
4006
+ return arr;
4007
+ };
4008
+ /**
4009
+ * Matches a node in the 'next' direction.
4010
+ * @private
4011
+ * @param {Array} branch - The branch.
4012
+ * @param {Set.<object>} nodes - A collection of Element nodes.
4013
+ * @param {object} opt - Options.
4014
+ * @param {object} opt.combo - The combo object.
4015
+ * @param {number} opt.index - The index.
4016
+ * @returns {?object} The matched node.
4017
+ */
4018
+ _matchNodeNext = (branch, nodes, opt) => {
4019
+ const { combo, index } = opt;
4020
+ const { combo: nextCombo, leaves } = branch[index];
4021
+ const twig = {
4022
+ combo,
4023
+ leaves
4024
+ };
4025
+ const nextNodes = new Set(this._getCombinedNodes(twig, nodes, DIR_NEXT));
4026
+ if (nextNodes.size) {
4027
+ if (index === branch.length - 1) {
4028
+ const [nextNode] = sortNodes(nextNodes);
4029
+ return nextNode;
4030
+ }
4031
+ return this._matchNodeNext(branch, nextNodes, {
4032
+ combo: nextCombo,
4033
+ index: index + 1
4034
+ });
4035
+ }
4036
+ return null;
4037
+ };
4038
+ /**
4039
+ * Matches a node in the 'previous' direction.
4040
+ * @private
4041
+ * @param {Array} branch - The branch.
4042
+ * @param {object} node - The Element node.
4043
+ * @param {object} opt - Options.
4044
+ * @param {number} opt.index - The index.
4045
+ * @returns {?object} The node.
4046
+ */
4047
+ _matchNodePrev = (branch, node, opt) => {
4048
+ const { index } = opt;
4049
+ const twig = branch[index];
4050
+ const nodes = /* @__PURE__ */ new Set([node]);
4051
+ const nextNodes = new Set(this._getCombinedNodes(twig, nodes, DIR_PREV));
4052
+ if (nextNodes.size) {
4053
+ if (index === 0) {
4054
+ return node;
4055
+ }
4056
+ let matched;
4057
+ for (const nextNode of nextNodes) {
4058
+ matched = this._matchNodePrev(branch, nextNode, {
4059
+ index: index - 1
4060
+ });
4061
+ if (matched) {
4062
+ break;
4063
+ }
4064
+ }
4065
+ if (matched) {
4066
+ return node;
4067
+ }
4068
+ }
4069
+ return null;
4070
+ };
4071
+ /**
4072
+ * Processes a complex selector branch to find all matching nodes.
4073
+ * @private
4074
+ * @param {Array} branch - The selector branch from the AST.
4075
+ * @param {Array} entryNodes - The initial set of nodes to start from.
4076
+ * @param {string} dir - The direction of traversal ('next' or 'prev').
4077
+ * @returns {Set.<object>} A set of all matched nodes.
4078
+ */
4079
+ _processComplexBranchAll = (branch, entryNodes, dir) => {
4080
+ const matchedNodes = /* @__PURE__ */ new Set();
4081
+ const branchLen = branch.length;
4082
+ const lastIndex = branchLen - 1;
4083
+ if (dir === DIR_NEXT) {
4084
+ const { combo: firstCombo } = branch[0];
4085
+ for (const node of entryNodes) {
4086
+ let combo = firstCombo;
4087
+ let nextNodes = /* @__PURE__ */ new Set([node]);
4088
+ for (let j = 1; j < branchLen; j++) {
4089
+ const { combo: nextCombo, leaves } = branch[j];
4090
+ const twig = { combo, leaves };
4091
+ const nodesArr = this._getCombinedNodes(twig, nextNodes, dir);
4092
+ if (nodesArr.length) {
4093
+ if (j === lastIndex) {
4094
+ for (const nextNode of nodesArr) {
4095
+ matchedNodes.add(nextNode);
4096
+ }
4097
+ }
4098
+ combo = nextCombo;
4099
+ nextNodes = new Set(nodesArr);
4100
+ } else {
4101
+ nextNodes.clear();
4102
+ break;
4103
+ }
4104
+ }
4105
+ }
4106
+ } else {
4107
+ for (const node of entryNodes) {
4108
+ let nextNodes = /* @__PURE__ */ new Set([node]);
4109
+ for (let j = lastIndex - 1; j >= 0; j--) {
4110
+ const twig = branch[j];
4111
+ const nodesArr = this._getCombinedNodes(twig, nextNodes, dir);
4112
+ if (nodesArr.length) {
4113
+ if (j === 0) {
4114
+ matchedNodes.add(node);
4115
+ }
4116
+ nextNodes = new Set(nodesArr);
4117
+ } else {
4118
+ nextNodes.clear();
4119
+ break;
4120
+ }
4121
+ }
4122
+ }
4123
+ }
4124
+ return matchedNodes;
4125
+ };
4126
+ /**
4127
+ * Find a node contained by this.#node.
4128
+ * @private
4129
+ * @param {Array} nodesArr - The set of nodes to find from.
4130
+ * @returns {?object} The matched node, or null.
4131
+ */
4132
+ _findChildNodeContainedByNode = (nodesArr) => {
4133
+ let matchedNode = null;
4134
+ if (Array.isArray(nodesArr)) {
4135
+ const l = nodesArr.length;
4136
+ for (let i = 0; i < l; i++) {
4137
+ const node = nodesArr[i];
4138
+ if (this.#node.contains(node)) {
4139
+ matchedNode = node;
4140
+ break;
4141
+ }
4142
+ }
4143
+ }
4144
+ return matchedNode;
4145
+ };
4146
+ /**
4147
+ * Processes a complex selector branch to find the first matching node.
4148
+ * @private
4149
+ * @param {Array} branch - The selector branch from the AST.
4150
+ * @param {Array} entryNodes - The initial set of nodes to start from.
4151
+ * @param {string} dir - The direction of traversal ('next' or 'prev').
4152
+ * @param {string} targetType - The type of search (e.g., 'first').
4153
+ * @returns {?object} The first matched node, or null.
4154
+ */
4155
+ _processComplexBranchFirst = (branch, entryNodes, dir, targetType) => {
4156
+ const branchLen = branch.length;
4157
+ const lastIndex = branchLen - 1;
4158
+ if (dir === DIR_NEXT) {
4159
+ const { combo: entryCombo } = branch[0];
4160
+ for (const node of entryNodes) {
4161
+ const matchedNode = this._matchNodeNext(branch, /* @__PURE__ */ new Set([node]), {
4162
+ combo: entryCombo,
4163
+ index: 1
4164
+ });
4165
+ if (matchedNode) {
4166
+ if (this.#node.nodeType === ELEMENT_NODE) {
4167
+ if (matchedNode !== this.#node && this.#node.contains(matchedNode)) {
4168
+ return matchedNode;
4169
+ }
4170
+ } else {
4171
+ return matchedNode;
4172
+ }
4173
+ }
4174
+ }
4175
+ const { leaves: entryLeaves } = branch[0];
4176
+ const [entryNode] = entryNodes;
4177
+ if (this.#node.contains(entryNode)) {
4178
+ let [refNode] = this._findNodeWalker(entryLeaves, entryNode, {
4179
+ targetType
4180
+ });
4181
+ while (refNode) {
4182
+ const matchedNode = this._matchNodeNext(branch, /* @__PURE__ */ new Set([refNode]), {
4183
+ combo: entryCombo,
4184
+ index: 1
4185
+ });
4186
+ if (matchedNode) {
4187
+ if (this.#node.nodeType === ELEMENT_NODE) {
4188
+ if (matchedNode !== this.#node && this.#node.contains(matchedNode)) {
4189
+ return matchedNode;
4190
+ }
4191
+ } else {
4192
+ return matchedNode;
4193
+ }
4194
+ }
4195
+ [refNode] = this._findNodeWalker(entryLeaves, refNode, {
4196
+ targetType,
4197
+ force: true
4198
+ });
4199
+ }
4200
+ } else {
4201
+ const { combo: firstCombo } = branch[0];
4202
+ let combo = firstCombo;
4203
+ let nextNodes = /* @__PURE__ */ new Set([entryNode]);
4204
+ for (let j = 1; j < branchLen; j++) {
4205
+ const { combo: nextCombo, leaves } = branch[j];
4206
+ const twig = { combo, leaves };
4207
+ const nodesArr = this._getCombinedNodes(twig, nextNodes, dir);
4208
+ if (nodesArr.length) {
4209
+ if (j === lastIndex) {
4210
+ return this._findChildNodeContainedByNode(nodesArr);
4211
+ }
4212
+ combo = nextCombo;
4213
+ nextNodes = new Set(nodesArr);
4214
+ } else {
4215
+ break;
4216
+ }
4217
+ }
4218
+ }
4219
+ } else {
4220
+ for (const node of entryNodes) {
4221
+ const matchedNode = this._matchNodePrev(branch, node, {
4222
+ index: lastIndex - 1
4223
+ });
4224
+ if (matchedNode) {
4225
+ return matchedNode;
4226
+ }
4227
+ }
4228
+ if (targetType === TARGET_FIRST) {
4229
+ const { leaves: entryLeaves } = branch[lastIndex];
4230
+ const [entryNode] = entryNodes;
4231
+ let [refNode] = this._findNodeWalker(entryLeaves, entryNode, {
4232
+ targetType
4233
+ });
4234
+ while (refNode) {
4235
+ const matchedNode = this._matchNodePrev(branch, refNode, {
4236
+ index: lastIndex - 1
4237
+ });
4238
+ if (matchedNode) {
4239
+ return refNode;
4240
+ }
4241
+ [refNode] = this._findNodeWalker(entryLeaves, refNode, {
4242
+ targetType,
4243
+ force: true
4244
+ });
4245
+ }
4246
+ }
4247
+ }
4248
+ return null;
4249
+ };
4250
+ /**
4251
+ * Finds matched nodes.
4252
+ * @param {string} targetType - The target type.
4253
+ * @returns {Set.<object>} A collection of matched nodes.
4254
+ */
4255
+ find = (targetType) => {
4256
+ const [[...branches], collectedNodes] = this._collectNodes(targetType);
4257
+ const l = branches.length;
4258
+ let sort = false;
4259
+ let nodes = /* @__PURE__ */ new Set();
4260
+ for (let i = 0; i < l; i++) {
4261
+ const { branch, dir, find: find3 } = branches[i];
4262
+ if (!branch.length || !find3) {
4263
+ continue;
4264
+ }
4265
+ const entryNodes = collectedNodes[i];
4266
+ const lastIndex = branch.length - 1;
4267
+ if (lastIndex === 0) {
4268
+ if ((targetType === TARGET_ALL || targetType === TARGET_FIRST) && this.#node.nodeType === ELEMENT_NODE) {
4269
+ for (const node of entryNodes) {
4270
+ if (node !== this.#node && this.#node.contains(node)) {
4271
+ nodes.add(node);
4272
+ if (targetType === TARGET_FIRST) {
4273
+ break;
4274
+ }
4275
+ }
4276
+ }
4277
+ } else if (targetType === TARGET_ALL) {
4278
+ if (nodes.size) {
4279
+ for (const node of entryNodes) {
4280
+ nodes.add(node);
4281
+ }
4282
+ sort = true;
4283
+ } else {
4284
+ nodes = new Set(entryNodes);
4285
+ }
4286
+ } else {
4287
+ if (entryNodes.length) {
4288
+ nodes.add(entryNodes[0]);
4289
+ }
4290
+ }
4291
+ } else {
4292
+ if (targetType === TARGET_ALL) {
4293
+ const newNodes = this._processComplexBranchAll(
4294
+ branch,
4295
+ entryNodes,
4296
+ dir
4297
+ );
4298
+ if (nodes.size) {
4299
+ for (const newNode of newNodes) {
4300
+ nodes.add(newNode);
4301
+ }
4302
+ sort = true;
4303
+ } else {
4304
+ nodes = newNodes;
4305
+ }
4306
+ } else {
4307
+ const matchedNode = this._processComplexBranchFirst(
4308
+ branch,
4309
+ entryNodes,
4310
+ dir,
4311
+ targetType
4312
+ );
4313
+ if (matchedNode) {
4314
+ nodes.add(matchedNode);
4315
+ }
4316
+ }
4317
+ }
4318
+ }
4319
+ if (this.#check) {
4320
+ const match = !!nodes.size;
4321
+ let pseudoElement;
4322
+ if (this.#pseudoElement.length) {
4323
+ pseudoElement = this.#pseudoElement.join("");
4324
+ } else {
4325
+ pseudoElement = null;
4326
+ }
4327
+ return { match, pseudoElement };
4328
+ }
4329
+ if (targetType === TARGET_FIRST || targetType === TARGET_ALL) {
4330
+ nodes.delete(this.#node);
4331
+ }
4332
+ if ((sort || targetType === TARGET_FIRST) && nodes.size > 1) {
4333
+ return new Set(sortNodes(nodes));
4334
+ }
4335
+ return nodes;
4336
+ };
4337
+ };
4338
+
4339
+ // src/index.js
4340
+ var MAX_CACHE = 1024;
4341
+ var DOMSelector = class {
4342
+ /* private fields */
4343
+ #window;
4344
+ #document;
4345
+ #finder;
4346
+ #idlUtils;
4347
+ #nwsapi;
4348
+ #cache;
4349
+ /**
4350
+ * Creates an instance of DOMSelector.
4351
+ * @param {Window} window - The window object.
4352
+ * @param {Document} document - The document object.
4353
+ * @param {object} [opt] - Options.
4354
+ */
4355
+ constructor(window, document, opt = {}) {
4356
+ const { idlUtils } = opt;
4357
+ this.#window = window;
4358
+ this.#document = document ?? window.document;
4359
+ this.#finder = new Finder(window);
4360
+ this.#idlUtils = idlUtils;
4361
+ this.#nwsapi = initNwsapi(window, document);
4362
+ this.#cache = new import_lru_cache.LRUCache({
4363
+ max: MAX_CACHE
4364
+ });
4365
+ }
4366
+ /**
4367
+ * Clears the internal cache of finder results.
4368
+ * @returns {void}
4369
+ */
4370
+ clear = () => {
4371
+ this.#finder.clearResults(true);
4372
+ };
4373
+ /**
4374
+ * Checks if an element matches a CSS selector.
4375
+ * @param {string} selector - The CSS selector to check against.
4376
+ * @param {Element} node - The element node to check.
4377
+ * @param {object} [opt] - Optional parameters.
4378
+ * @returns {CheckResult} An object containing the check result.
4379
+ */
4380
+ check = (selector, node, opt = {}) => {
4381
+ if (!node?.nodeType) {
4382
+ const e = new this.#window.TypeError(`Unexpected type ${getType(node)}`);
4383
+ return this.#finder.onError(e, opt);
4384
+ } else if (node.nodeType !== ELEMENT_NODE) {
4385
+ const e = new this.#window.TypeError(`Unexpected node ${node.nodeName}`);
4386
+ return this.#finder.onError(e, opt);
4387
+ }
4388
+ const document = node.ownerDocument;
4389
+ if (document === this.#document && document.contentType === "text/html" && document.documentElement && node.parentNode) {
4390
+ const cacheKey = `check_${selector}`;
4391
+ let filterMatches = false;
4392
+ if (this.#cache.has(cacheKey)) {
4393
+ filterMatches = this.#cache.get(cacheKey);
4394
+ } else {
4395
+ filterMatches = filterSelector(selector, TARGET_SELF);
4396
+ this.#cache.set(cacheKey, filterMatches);
4397
+ }
4398
+ if (filterMatches) {
4399
+ try {
4400
+ const n = this.#idlUtils ? this.#idlUtils.wrapperForImpl(node) : node;
4401
+ const match = this.#nwsapi.match(selector, n);
4402
+ return {
4403
+ match,
4404
+ pseudoElement: null
4405
+ };
4406
+ } catch (e) {
4407
+ }
4408
+ }
4409
+ }
4410
+ let res;
4411
+ try {
4412
+ if (this.#idlUtils) {
4413
+ node = this.#idlUtils.wrapperForImpl(node);
4414
+ }
4415
+ opt.check = true;
4416
+ opt.noexept = true;
4417
+ opt.warn = false;
4418
+ this.#finder.setup(selector, node, opt);
4419
+ res = this.#finder.find(TARGET_SELF);
4420
+ } catch (e) {
4421
+ this.#finder.onError(e, opt);
4422
+ }
4423
+ return res;
4424
+ };
4425
+ /**
4426
+ * Returns true if the element matches the selector.
4427
+ * @param {string} selector - The CSS selector to match against.
4428
+ * @param {Element} node - The element node to test.
4429
+ * @param {object} [opt] - Optional parameters.
4430
+ * @returns {boolean} `true` if the element matches, or `false` otherwise.
4431
+ */
4432
+ matches = (selector, node, opt = {}) => {
4433
+ if (!node?.nodeType) {
4434
+ const e = new this.#window.TypeError(`Unexpected type ${getType(node)}`);
4435
+ return this.#finder.onError(e, opt);
4436
+ } else if (node.nodeType !== ELEMENT_NODE) {
4437
+ const e = new this.#window.TypeError(`Unexpected node ${node.nodeName}`);
4438
+ return this.#finder.onError(e, opt);
4439
+ }
4440
+ const document = node.ownerDocument;
4441
+ if (document === this.#document && document.contentType === "text/html" && document.documentElement && node.parentNode) {
4442
+ const cacheKey = `matches_${selector}`;
4443
+ let filterMatches = false;
4444
+ if (this.#cache.has(cacheKey)) {
4445
+ filterMatches = this.#cache.get(cacheKey);
4446
+ } else {
4447
+ filterMatches = filterSelector(selector, TARGET_SELF);
4448
+ this.#cache.set(cacheKey, filterMatches);
4449
+ }
4450
+ if (filterMatches) {
4451
+ try {
4452
+ const n = this.#idlUtils ? this.#idlUtils.wrapperForImpl(node) : node;
4453
+ const res2 = this.#nwsapi.match(selector, n);
4454
+ return res2;
4455
+ } catch (e) {
4456
+ }
4457
+ }
4458
+ }
4459
+ let res;
4460
+ try {
4461
+ if (this.#idlUtils) {
4462
+ node = this.#idlUtils.wrapperForImpl(node);
4463
+ }
4464
+ this.#finder.setup(selector, node, opt);
4465
+ const nodes = this.#finder.find(TARGET_SELF);
4466
+ res = nodes.size;
4467
+ } catch (e) {
4468
+ this.#finder.onError(e, opt);
4469
+ }
4470
+ return !!res;
4471
+ };
4472
+ /**
4473
+ * Traverses up the DOM tree to find the first node that matches the selector.
4474
+ * @param {string} selector - The CSS selector to match against.
4475
+ * @param {Element} node - The element from which to start traversing.
4476
+ * @param {object} [opt] - Optional parameters.
4477
+ * @returns {?Element} The first matching ancestor element, or `null`.
4478
+ */
4479
+ closest = (selector, node, opt = {}) => {
4480
+ if (!node?.nodeType) {
4481
+ const e = new this.#window.TypeError(`Unexpected type ${getType(node)}`);
4482
+ return this.#finder.onError(e, opt);
4483
+ } else if (node.nodeType !== ELEMENT_NODE) {
4484
+ const e = new this.#window.TypeError(`Unexpected node ${node.nodeName}`);
4485
+ return this.#finder.onError(e, opt);
4486
+ }
4487
+ const document = node.ownerDocument;
4488
+ if (document === this.#document && document.contentType === "text/html" && document.documentElement && node.parentNode) {
4489
+ const cacheKey = `closest_${selector}`;
4490
+ let filterMatches = false;
4491
+ if (this.#cache.has(cacheKey)) {
4492
+ filterMatches = this.#cache.get(cacheKey);
4493
+ } else {
4494
+ filterMatches = filterSelector(selector, TARGET_LINEAL);
4495
+ this.#cache.set(cacheKey, filterMatches);
4496
+ }
4497
+ if (filterMatches) {
4498
+ try {
4499
+ const n = this.#idlUtils ? this.#idlUtils.wrapperForImpl(node) : node;
4500
+ const res2 = this.#nwsapi.closest(selector, n);
4501
+ return res2;
4502
+ } catch (e) {
4503
+ }
4504
+ }
4505
+ }
4506
+ let res;
4507
+ try {
4508
+ if (this.#idlUtils) {
4509
+ node = this.#idlUtils.wrapperForImpl(node);
4510
+ }
4511
+ this.#finder.setup(selector, node, opt);
4512
+ const nodes = this.#finder.find(TARGET_LINEAL);
4513
+ if (nodes.size) {
4514
+ let refNode = node;
4515
+ while (refNode) {
4516
+ if (nodes.has(refNode)) {
4517
+ res = refNode;
4518
+ break;
4519
+ }
4520
+ refNode = refNode.parentNode;
4521
+ }
4522
+ }
4523
+ } catch (e) {
4524
+ this.#finder.onError(e, opt);
4525
+ }
4526
+ return res ?? null;
4527
+ };
4528
+ /**
4529
+ * Returns the first element within the subtree that matches the selector.
4530
+ * @param {string} selector - The CSS selector to match.
4531
+ * @param {Document|DocumentFragment|Element} node - The node to find within.
4532
+ * @param {object} [opt] - Optional parameters.
4533
+ * @returns {?Element} The first matching element, or `null`.
4534
+ */
4535
+ querySelector = (selector, node, opt = {}) => {
4536
+ if (!node?.nodeType) {
4537
+ const e = new this.#window.TypeError(`Unexpected type ${getType(node)}`);
4538
+ return this.#finder.onError(e, opt);
4539
+ }
4540
+ let res;
4541
+ try {
4542
+ if (this.#idlUtils) {
4543
+ node = this.#idlUtils.wrapperForImpl(node);
4544
+ }
4545
+ this.#finder.setup(selector, node, opt);
4546
+ const nodes = this.#finder.find(TARGET_FIRST);
4547
+ if (nodes.size) {
4548
+ [res] = [...nodes];
4549
+ }
4550
+ } catch (e) {
4551
+ this.#finder.onError(e, opt);
4552
+ }
4553
+ return res ?? null;
4554
+ };
4555
+ /**
4556
+ * Returns an array of elements within the subtree that match the selector.
4557
+ * Note: This method returns an Array, not a NodeList.
4558
+ * @param {string} selector - The CSS selector to match.
4559
+ * @param {Document|DocumentFragment|Element} node - The node to find within.
4560
+ * @param {object} [opt] - Optional parameters.
4561
+ * @returns {Array<Element>} An array of elements, or an empty array.
4562
+ */
4563
+ querySelectorAll = (selector, node, opt = {}) => {
4564
+ if (!node?.nodeType) {
4565
+ const e = new this.#window.TypeError(`Unexpected type ${getType(node)}`);
4566
+ return this.#finder.onError(e, opt);
4567
+ }
4568
+ const document = node.nodeType === DOCUMENT_NODE ? node : node.ownerDocument;
4569
+ if (document === this.#document && document.contentType === "text/html" && document.documentElement && (node.nodeType !== DOCUMENT_FRAGMENT_NODE || !node.host)) {
4570
+ const cacheKey = `querySelectorAll_${selector}`;
4571
+ let filterMatches = false;
4572
+ if (this.#cache.has(cacheKey)) {
4573
+ filterMatches = this.#cache.get(cacheKey);
4574
+ } else {
4575
+ filterMatches = filterSelector(selector, TARGET_ALL);
4576
+ this.#cache.set(cacheKey, filterMatches);
4577
+ }
4578
+ if (filterMatches) {
4579
+ try {
4580
+ const n = this.#idlUtils ? this.#idlUtils.wrapperForImpl(node) : node;
4581
+ const res2 = this.#nwsapi.select(selector, n);
4582
+ return res2;
4583
+ } catch (e) {
4584
+ }
4585
+ }
4586
+ }
4587
+ let res;
4588
+ try {
4589
+ if (this.#idlUtils) {
4590
+ node = this.#idlUtils.wrapperForImpl(node);
4591
+ }
4592
+ this.#finder.setup(selector, node, opt);
4593
+ const nodes = this.#finder.find(TARGET_ALL);
4594
+ if (nodes.size) {
4595
+ res = [...nodes];
4596
+ }
4597
+ } catch (e) {
4598
+ this.#finder.onError(e, opt);
4599
+ }
4600
+ return res ?? [];
4601
+ };
4602
+ };
4603
+ // Annotate the CommonJS export names for ESM import in node:
4604
+ 0 && (module.exports = {
4605
+ DOMSelector
4606
+ });
4607
+ /*!
4608
+ * DOM Selector - A CSS selector engine.
4609
+ * @license MIT
4610
+ * @copyright asamuzaK (Kazz)
4611
+ * @see {@link https://github.com/asamuzaK/domSelector/blob/main/LICENSE}
4612
+ */
4613
+ //# sourceMappingURL=index.cjs.map