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,3108 @@
1
+ /**
2
+ * finder.js
3
+ */
4
+
5
+ /* import */
6
+ import {
7
+ matchAttributeSelector,
8
+ matchDirectionPseudoClass,
9
+ matchDisabledPseudoClass,
10
+ matchLanguagePseudoClass,
11
+ matchPseudoElementSelector,
12
+ matchReadOnlyPseudoClass,
13
+ matchTypeSelector
14
+ } from './matcher.js';
15
+ import {
16
+ findAST,
17
+ generateCSS,
18
+ parseSelector,
19
+ sortAST,
20
+ unescapeSelector,
21
+ walkAST
22
+ } from './parser.js';
23
+ import {
24
+ filterNodesByAnB,
25
+ findLogicalWithNestedHas,
26
+ generateException,
27
+ isCustomElement,
28
+ isFocusVisible,
29
+ isFocusableArea,
30
+ isVisible,
31
+ resolveContent,
32
+ sortNodes,
33
+ traverseNode
34
+ } from './utility.js';
35
+
36
+ /* constants */
37
+ import {
38
+ ATTR_SELECTOR,
39
+ CLASS_SELECTOR,
40
+ COMBINATOR,
41
+ DOCUMENT_FRAGMENT_NODE,
42
+ ELEMENT_NODE,
43
+ FORM_PARTS,
44
+ ID_SELECTOR,
45
+ INPUT_CHECK,
46
+ INPUT_DATE,
47
+ INPUT_EDIT,
48
+ INPUT_TEXT,
49
+ KEYS_LOGICAL,
50
+ NOT_SUPPORTED_ERR,
51
+ PS_CLASS_SELECTOR,
52
+ PS_ELEMENT_SELECTOR,
53
+ SHOW_ALL,
54
+ SHOW_CONTAINER,
55
+ SYNTAX_ERR,
56
+ TARGET_ALL,
57
+ TARGET_FIRST,
58
+ TARGET_LINEAL,
59
+ TARGET_SELF,
60
+ TEXT_NODE,
61
+ TYPE_SELECTOR
62
+ } from './constant.js';
63
+ const DIR_NEXT = 'next';
64
+ const DIR_PREV = 'prev';
65
+ const KEYS_FORM = new Set([...FORM_PARTS, 'fieldset', 'form']);
66
+ const KEYS_FORM_PS_VALID = new Set([...FORM_PARTS, 'form']);
67
+ const KEYS_INPUT_CHECK = new Set(INPUT_CHECK);
68
+ const KEYS_INPUT_PLACEHOLDER = new Set([...INPUT_TEXT, 'number']);
69
+ const KEYS_INPUT_RANGE = new Set([...INPUT_DATE, 'number', 'range']);
70
+ const KEYS_INPUT_REQUIRED = new Set([...INPUT_CHECK, ...INPUT_EDIT, 'file']);
71
+ const KEYS_INPUT_RESET = new Set(['button', 'reset']);
72
+ const KEYS_INPUT_SUBMIT = new Set(['image', 'submit']);
73
+ const KEYS_MODIFIER = new Set([
74
+ 'Alt',
75
+ 'AltGraph',
76
+ 'CapsLock',
77
+ 'Control',
78
+ 'Fn',
79
+ 'FnLock',
80
+ 'Hyper',
81
+ 'Meta',
82
+ 'NumLock',
83
+ 'ScrollLock',
84
+ 'Shift',
85
+ 'Super',
86
+ 'Symbol',
87
+ 'SymbolLock'
88
+ ]);
89
+ const KEYS_PS_UNCACHE = new Set([
90
+ 'any-link',
91
+ 'defined',
92
+ 'dir',
93
+ 'link',
94
+ 'scope'
95
+ ]);
96
+ const KEYS_PS_NTH_OF_TYPE = new Set([
97
+ 'first-of-type',
98
+ 'last-of-type',
99
+ 'only-of-type'
100
+ ]);
101
+
102
+ /**
103
+ * Finder
104
+ * NOTE: #ast[i] corresponds to #nodes[i]
105
+ */
106
+ export class Finder {
107
+ /* private fields */
108
+ #ast;
109
+ #astCache;
110
+ #check;
111
+ #descendant;
112
+ #document;
113
+ #documentCache;
114
+ #documentURL;
115
+ #event;
116
+ #eventHandlers;
117
+ #focus;
118
+ #invalidate;
119
+ #invalidateResults;
120
+ #lastFocusVisible;
121
+ #node;
122
+ #nodeWalker;
123
+ #nodes;
124
+ #noexcept;
125
+ #pseudoElement;
126
+ #results;
127
+ #root;
128
+ #rootWalker;
129
+ #selector;
130
+ #shadow;
131
+ #verifyShadowHost;
132
+ #walkers;
133
+ #warn;
134
+ #window;
135
+
136
+ /**
137
+ * constructor
138
+ * @param {object} window - The window object.
139
+ */
140
+ constructor(window) {
141
+ this.#window = window;
142
+ this.#astCache = new WeakMap();
143
+ this.#documentCache = new WeakMap();
144
+ this.#event = null;
145
+ this.#focus = null;
146
+ this.#lastFocusVisible = null;
147
+ this.#eventHandlers = new Set([
148
+ {
149
+ keys: ['focus', 'focusin'],
150
+ handler: this._handleFocusEvent
151
+ },
152
+ {
153
+ keys: ['keydown', 'keyup'],
154
+ handler: this._handleKeyboardEvent
155
+ },
156
+ {
157
+ keys: ['mouseover', 'mousedown', 'mouseup', 'click', 'mouseout'],
158
+ handler: this._handleMouseEvent
159
+ }
160
+ ]);
161
+ this._registerEventListeners();
162
+ this.clearResults(true);
163
+ }
164
+
165
+ /**
166
+ * Handles errors.
167
+ * @param {Error} e - The error object.
168
+ * @param {object} [opt] - Options.
169
+ * @param {boolean} [opt.noexcept] - If true, exceptions are not thrown.
170
+ * @throws {Error} Throws an error.
171
+ * @returns {void}
172
+ */
173
+ onError = (e, opt = {}) => {
174
+ const noexcept = opt.noexcept ?? this.#noexcept;
175
+ if (noexcept) {
176
+ return;
177
+ }
178
+ const isDOMException =
179
+ e instanceof DOMException || e instanceof this.#window.DOMException;
180
+ if (isDOMException) {
181
+ if (e.name === NOT_SUPPORTED_ERR) {
182
+ if (this.#warn) {
183
+ console.warn(e.message);
184
+ }
185
+ return;
186
+ }
187
+ throw new this.#window.DOMException(e.message, e.name);
188
+ }
189
+ if (e.name in this.#window) {
190
+ throw new this.#window[e.name](e.message, { cause: e });
191
+ }
192
+ throw e;
193
+ };
194
+
195
+ /**
196
+ * Sets up the finder.
197
+ * @param {string} selector - The CSS selector.
198
+ * @param {object} node - Document, DocumentFragment, or Element.
199
+ * @param {object} [opt] - Options.
200
+ * @param {boolean} [opt.check] - Indicates if running in internal check().
201
+ * @param {boolean} [opt.noexcept] - If true, exceptions are not thrown.
202
+ * @param {boolean} [opt.warn] - If true, console warnings are enabled.
203
+ * @returns {object} The finder instance.
204
+ */
205
+ setup = (selector, node, opt = {}) => {
206
+ const { check, noexcept, warn } = opt;
207
+ this.#check = !!check;
208
+ this.#noexcept = !!noexcept;
209
+ this.#warn = !!warn;
210
+ [this.#document, this.#root, this.#shadow] = resolveContent(node);
211
+ this.#documentURL = null;
212
+ this.#node = node;
213
+ this.#selector = selector;
214
+ [this.#ast, this.#nodes] = this._correspond(selector);
215
+ this.#pseudoElement = [];
216
+ this.#walkers = new WeakMap();
217
+ this.#nodeWalker = null;
218
+ this.#rootWalker = null;
219
+ this.#verifyShadowHost = null;
220
+ this.clearResults();
221
+ return this;
222
+ };
223
+
224
+ /**
225
+ * Clear cached results.
226
+ * @param {boolean} all - clear all results
227
+ * @returns {void}
228
+ */
229
+ clearResults = (all = false) => {
230
+ this.#invalidateResults = new WeakMap();
231
+ if (all) {
232
+ this.#results = new WeakMap();
233
+ }
234
+ };
235
+
236
+ /**
237
+ * Handles focus events.
238
+ * @private
239
+ * @param {Event} evt - The event object.
240
+ * @returns {void}
241
+ */
242
+ _handleFocusEvent = evt => {
243
+ this.#focus = evt;
244
+ };
245
+
246
+ /**
247
+ * Handles keyboard events.
248
+ * @private
249
+ * @param {Event} evt - The event object.
250
+ * @returns {void}
251
+ */
252
+ _handleKeyboardEvent = evt => {
253
+ const { key } = evt;
254
+ if (!KEYS_MODIFIER.has(key)) {
255
+ this.#event = evt;
256
+ }
257
+ };
258
+
259
+ /**
260
+ * Handles mouse events.
261
+ * @private
262
+ * @param {Event} evt - The event object.
263
+ * @returns {void}
264
+ */
265
+ _handleMouseEvent = evt => {
266
+ this.#event = evt;
267
+ };
268
+
269
+ /**
270
+ * Registers event listeners.
271
+ * @private
272
+ * @returns {Array.<void>} An array of return values from addEventListener.
273
+ */
274
+ _registerEventListeners = () => {
275
+ const opt = {
276
+ capture: true,
277
+ passive: true
278
+ };
279
+ const func = [];
280
+ for (const eventHandler of this.#eventHandlers) {
281
+ const { keys, handler } = eventHandler;
282
+ const l = keys.length;
283
+ for (let i = 0; i < l; i++) {
284
+ const key = keys[i];
285
+ func.push(this.#window.addEventListener(key, handler, opt));
286
+ }
287
+ }
288
+ return func;
289
+ };
290
+
291
+ /**
292
+ * Processes selector branches into the internal AST structure.
293
+ * @private
294
+ * @param {Array.<Array.<object>>} branches - The branches from walkAST.
295
+ * @param {string} selector - The original selector for error reporting.
296
+ * @returns {{ast: Array, descendant: boolean}}
297
+ * An object with the AST, descendant flag.
298
+ */
299
+ _processSelectorBranches = (branches, selector) => {
300
+ let descendant = false;
301
+ const ast = [];
302
+ const l = branches.length;
303
+ for (let i = 0; i < l; i++) {
304
+ const items = [...branches[i]];
305
+ const branch = [];
306
+ let item = items.shift();
307
+ if (item && item.type !== COMBINATOR) {
308
+ const leaves = new Set();
309
+ while (item) {
310
+ if (item.type === COMBINATOR) {
311
+ const [nextItem] = items;
312
+ if (!nextItem || nextItem.type === COMBINATOR) {
313
+ const msg = `Invalid selector ${selector}`;
314
+ this.onError(generateException(msg, SYNTAX_ERR, this.#window));
315
+ // Stop processing on invalid selector.
316
+ return { ast: [], descendant: false, invalidate: false };
317
+ }
318
+ if (item.name === ' ' || item.name === '>') {
319
+ descendant = true;
320
+ }
321
+ branch.push({ combo: item, leaves: sortAST(leaves) });
322
+ leaves.clear();
323
+ } else {
324
+ if (item.name && typeof item.name === 'string') {
325
+ const unescapedName = unescapeSelector(item.name);
326
+ if (unescapedName !== item.name) {
327
+ item.name = unescapedName;
328
+ }
329
+ if (/[|:]/.test(unescapedName)) {
330
+ item.namespace = true;
331
+ }
332
+ }
333
+ leaves.add(item);
334
+ }
335
+ if (items.length) {
336
+ item = items.shift();
337
+ } else {
338
+ branch.push({ combo: null, leaves: sortAST(leaves) });
339
+ leaves.clear();
340
+ break;
341
+ }
342
+ }
343
+ }
344
+ ast.push({ branch, dir: null, filtered: false, find: false });
345
+ }
346
+ return { ast, descendant };
347
+ };
348
+
349
+ /**
350
+ * Corresponds AST and nodes.
351
+ * @private
352
+ * @param {string} selector - The CSS selector.
353
+ * @returns {Array.<Array.<object>>} An array with the AST and nodes.
354
+ */
355
+ _correspond = selector => {
356
+ const nodes = [];
357
+ this.#descendant = false;
358
+ this.#invalidate = false;
359
+ let ast;
360
+ if (this.#documentCache.has(this.#document)) {
361
+ const cachedItem = this.#documentCache.get(this.#document);
362
+ if (cachedItem && cachedItem.has(`${selector}`)) {
363
+ const item = cachedItem.get(`${selector}`);
364
+ ast = item.ast;
365
+ this.#descendant = item.descendant;
366
+ this.#invalidate = item.invalidate;
367
+ }
368
+ }
369
+ if (ast) {
370
+ const l = ast.length;
371
+ for (let i = 0; i < l; i++) {
372
+ ast[i].dir = null;
373
+ ast[i].filtered = false;
374
+ ast[i].find = false;
375
+ nodes[i] = [];
376
+ }
377
+ } else {
378
+ let cssAst;
379
+ try {
380
+ cssAst = parseSelector(selector);
381
+ } catch (e) {
382
+ return this.onError(e);
383
+ }
384
+ const { branches, info } = walkAST(cssAst);
385
+ const {
386
+ hasHasPseudoFunc,
387
+ hasLogicalPseudoFunc,
388
+ hasNthChildOfSelector,
389
+ hasStatePseudoClass
390
+ } = info;
391
+ this.#invalidate =
392
+ hasHasPseudoFunc ||
393
+ hasStatePseudoClass ||
394
+ !!(hasLogicalPseudoFunc && hasNthChildOfSelector);
395
+ const processed = this._processSelectorBranches(branches, selector);
396
+ ast = processed.ast;
397
+ this.#descendant = processed.descendant;
398
+ let cachedItem;
399
+ if (this.#documentCache.has(this.#document)) {
400
+ cachedItem = this.#documentCache.get(this.#document);
401
+ } else {
402
+ cachedItem = new Map();
403
+ }
404
+ cachedItem.set(`${selector}`, {
405
+ ast,
406
+ descendant: this.#descendant,
407
+ invalidate: this.#invalidate
408
+ });
409
+ this.#documentCache.set(this.#document, cachedItem);
410
+ // Initialize nodes array for each branch.
411
+ for (let i = 0; i < ast.length; i++) {
412
+ nodes[i] = [];
413
+ }
414
+ }
415
+ return [ast, nodes];
416
+ };
417
+
418
+ /**
419
+ * Creates a TreeWalker.
420
+ * @private
421
+ * @param {object} node - The Document, DocumentFragment, or Element node.
422
+ * @param {object} [opt] - Options.
423
+ * @param {boolean} [opt.force] - Force creation of a new TreeWalker.
424
+ * @param {number} [opt.whatToShow] - The NodeFilter whatToShow value.
425
+ * @returns {object} The TreeWalker object.
426
+ */
427
+ _createTreeWalker = (node, opt = {}) => {
428
+ const { force = false, whatToShow = SHOW_CONTAINER } = opt;
429
+ if (force) {
430
+ return this.#document.createTreeWalker(node, whatToShow);
431
+ } else if (this.#walkers.has(node)) {
432
+ return this.#walkers.get(node);
433
+ }
434
+ const walker = this.#document.createTreeWalker(node, whatToShow);
435
+ this.#walkers.set(node, walker);
436
+ return walker;
437
+ };
438
+
439
+ /**
440
+ * Gets selector branches from cache or parses them.
441
+ * @private
442
+ * @param {object} selector - The AST.
443
+ * @returns {Array.<Array.<object>>} The selector branches.
444
+ */
445
+ _getSelectorBranches = selector => {
446
+ if (this.#astCache.has(selector)) {
447
+ return this.#astCache.get(selector);
448
+ }
449
+ const { branches } = walkAST(selector);
450
+ this.#astCache.set(selector, branches);
451
+ return branches;
452
+ };
453
+
454
+ /**
455
+ * Gets the children of a node, optionally filtered by a selector.
456
+ * @private
457
+ * @param {object} parentNode - The parent element.
458
+ * @param {Array.<Array.<object>>} selectorBranches - The selector branches.
459
+ * @param {object} [opt] - Options.
460
+ * @returns {Array.<object>} An array of child nodes.
461
+ */
462
+ _getFilteredChildren = (parentNode, selectorBranches, opt = {}) => {
463
+ const children = [];
464
+ const walker = this._createTreeWalker(parentNode, { force: true });
465
+ let childNode = walker.firstChild();
466
+ while (childNode) {
467
+ if (selectorBranches) {
468
+ if (isVisible(childNode)) {
469
+ let isMatch = false;
470
+ const l = selectorBranches.length;
471
+ for (let i = 0; i < l; i++) {
472
+ const leaves = selectorBranches[i];
473
+ if (this._matchLeaves(leaves, childNode, opt)) {
474
+ isMatch = true;
475
+ break;
476
+ }
477
+ }
478
+ if (isMatch) {
479
+ children.push(childNode);
480
+ }
481
+ }
482
+ } else {
483
+ children.push(childNode);
484
+ }
485
+ childNode = walker.nextSibling();
486
+ }
487
+ return children;
488
+ };
489
+
490
+ /**
491
+ * Collects nth-child nodes.
492
+ * @private
493
+ * @param {object} anb - An+B options.
494
+ * @param {number} anb.a - The 'a' value.
495
+ * @param {number} anb.b - The 'b' value.
496
+ * @param {boolean} [anb.reverse] - If true, reverses the order.
497
+ * @param {object} [anb.selector] - The AST.
498
+ * @param {object} node - The Element node.
499
+ * @param {object} [opt] - Options.
500
+ * @returns {Set.<object>} A collection of matched nodes.
501
+ */
502
+ _collectNthChild = (anb, node, opt = {}) => {
503
+ const { a, b, selector } = anb;
504
+ const { parentNode } = node;
505
+ if (!parentNode) {
506
+ const matchedNode = new Set();
507
+ if (node === this.#root && a * 1 + b * 1 === 1) {
508
+ if (selector) {
509
+ const selectorBranches = this._getSelectorBranches(selector);
510
+ const l = selectorBranches.length;
511
+ for (let i = 0; i < l; i++) {
512
+ const leaves = selectorBranches[i];
513
+ if (this._matchLeaves(leaves, node, opt)) {
514
+ matchedNode.add(node);
515
+ break;
516
+ }
517
+ }
518
+ } else {
519
+ matchedNode.add(node);
520
+ }
521
+ }
522
+ return matchedNode;
523
+ }
524
+ const selectorBranches = selector
525
+ ? this._getSelectorBranches(selector)
526
+ : null;
527
+ const children = this._getFilteredChildren(
528
+ parentNode,
529
+ selectorBranches,
530
+ opt
531
+ );
532
+ const matchedNodes = filterNodesByAnB(children, anb);
533
+ return new Set(matchedNodes);
534
+ };
535
+
536
+ /**
537
+ * Collects nth-of-type nodes.
538
+ * @private
539
+ * @param {object} anb - An+B options.
540
+ * @param {number} anb.a - The 'a' value.
541
+ * @param {number} anb.b - The 'b' value.
542
+ * @param {boolean} [anb.reverse] - If true, reverses the order.
543
+ * @param {object} node - The Element node.
544
+ * @returns {Set.<object>} A collection of matched nodes.
545
+ */
546
+ _collectNthOfType = (anb, node) => {
547
+ const { parentNode } = node;
548
+ if (!parentNode) {
549
+ if (node === this.#root && anb.a * 1 + anb.b * 1 === 1) {
550
+ return new Set([node]);
551
+ }
552
+ return new Set();
553
+ }
554
+ const typedSiblings = [];
555
+ const walker = this._createTreeWalker(parentNode, { force: true });
556
+ let sibling = walker.firstChild();
557
+ while (sibling) {
558
+ if (
559
+ sibling.localName === node.localName &&
560
+ sibling.namespaceURI === node.namespaceURI &&
561
+ sibling.prefix === node.prefix
562
+ ) {
563
+ typedSiblings.push(sibling);
564
+ }
565
+ sibling = walker.nextSibling();
566
+ }
567
+ const matchedNodes = filterNodesByAnB(typedSiblings, anb);
568
+ return new Set(matchedNodes);
569
+ };
570
+
571
+ /**
572
+ * Matches An+B.
573
+ * @private
574
+ * @param {object} ast - The AST.
575
+ * @param {object} node - The Element node.
576
+ * @param {string} nthName - The name of the nth pseudo-class.
577
+ * @param {object} [opt] - Options.
578
+ * @returns {Set.<object>} A collection of matched nodes.
579
+ */
580
+ _matchAnPlusB = (ast, node, nthName, opt = {}) => {
581
+ const {
582
+ nth: { a, b, name: nthIdentName },
583
+ selector
584
+ } = ast;
585
+ const anbMap = new Map();
586
+ if (nthIdentName) {
587
+ if (nthIdentName === 'even') {
588
+ anbMap.set('a', 2);
589
+ anbMap.set('b', 0);
590
+ } else if (nthIdentName === 'odd') {
591
+ anbMap.set('a', 2);
592
+ anbMap.set('b', 1);
593
+ }
594
+ if (nthName.indexOf('last') > -1) {
595
+ anbMap.set('reverse', true);
596
+ }
597
+ } else {
598
+ if (typeof a === 'string' && /-?\d+/.test(a)) {
599
+ anbMap.set('a', a * 1);
600
+ } else {
601
+ anbMap.set('a', 0);
602
+ }
603
+ if (typeof b === 'string' && /-?\d+/.test(b)) {
604
+ anbMap.set('b', b * 1);
605
+ } else {
606
+ anbMap.set('b', 0);
607
+ }
608
+ if (nthName.indexOf('last') > -1) {
609
+ anbMap.set('reverse', true);
610
+ }
611
+ }
612
+ if (nthName === 'nth-child' || nthName === 'nth-last-child') {
613
+ if (selector) {
614
+ anbMap.set('selector', selector);
615
+ }
616
+ const anb = Object.fromEntries(anbMap);
617
+ const nodes = this._collectNthChild(anb, node, opt);
618
+ return nodes;
619
+ } else if (nthName === 'nth-of-type' || nthName === 'nth-last-of-type') {
620
+ const anb = Object.fromEntries(anbMap);
621
+ const nodes = this._collectNthOfType(anb, node);
622
+ return nodes;
623
+ }
624
+ return new Set();
625
+ };
626
+
627
+ /**
628
+ * Matches the :has() pseudo-class function.
629
+ * @private
630
+ * @param {Array.<object>} astLeaves - The AST leaves.
631
+ * @param {object} node - The Element node.
632
+ * @param {object} [opt] - Options.
633
+ * @returns {boolean} The result.
634
+ */
635
+ _matchHasPseudoFunc = (astLeaves, node, opt = {}) => {
636
+ if (Array.isArray(astLeaves) && astLeaves.length) {
637
+ // Prepare a copy to avoid astLeaves being consumed.
638
+ const leaves = [...astLeaves];
639
+ const [leaf] = leaves;
640
+ const { type: leafType } = leaf;
641
+ let combo;
642
+ if (leafType === COMBINATOR) {
643
+ combo = leaves.shift();
644
+ } else {
645
+ combo = {
646
+ name: ' ',
647
+ type: COMBINATOR
648
+ };
649
+ }
650
+ const twigLeaves = [];
651
+ while (leaves.length) {
652
+ const [item] = leaves;
653
+ const { type: itemType } = item;
654
+ if (itemType === COMBINATOR) {
655
+ break;
656
+ } else {
657
+ twigLeaves.push(leaves.shift());
658
+ }
659
+ }
660
+ const twig = {
661
+ combo,
662
+ leaves: twigLeaves
663
+ };
664
+ opt.dir = DIR_NEXT;
665
+ const nodes = this._matchCombinator(twig, node, opt);
666
+ if (nodes.size) {
667
+ if (leaves.length) {
668
+ let bool = false;
669
+ for (const nextNode of nodes) {
670
+ bool = this._matchHasPseudoFunc(leaves, nextNode, opt);
671
+ if (bool) {
672
+ break;
673
+ }
674
+ }
675
+ return bool;
676
+ }
677
+ return true;
678
+ }
679
+ }
680
+ return false;
681
+ };
682
+
683
+ /**
684
+ * Evaluates the :has() pseudo-class.
685
+ * @private
686
+ * @param {object} astData - The AST data.
687
+ * @param {object} node - The Element node.
688
+ * @param {object} [opt] - Options.
689
+ * @returns {?object} The matched node.
690
+ */
691
+ _evaluateHasPseudo = (astData, node, opt) => {
692
+ const { branches } = astData;
693
+ let bool = false;
694
+ const l = branches.length;
695
+ for (let i = 0; i < l; i++) {
696
+ const leaves = branches[i];
697
+ bool = this._matchHasPseudoFunc(leaves, node, opt);
698
+ if (bool) {
699
+ break;
700
+ }
701
+ }
702
+ if (!bool) {
703
+ return null;
704
+ }
705
+ if (
706
+ (opt.isShadowRoot || this.#shadow) &&
707
+ node.nodeType === DOCUMENT_FRAGMENT_NODE
708
+ ) {
709
+ return this.#verifyShadowHost ? node : null;
710
+ }
711
+ return node;
712
+ };
713
+
714
+ /**
715
+ * Matches logical pseudo-class functions.
716
+ * @private
717
+ * @param {object} astData - The AST data.
718
+ * @param {object} node - The Element node.
719
+ * @param {object} [opt] - Options.
720
+ * @returns {?object} The matched node.
721
+ */
722
+ _matchLogicalPseudoFunc = (astData, node, opt = {}) => {
723
+ const { astName, branches, twigBranches } = astData;
724
+ // Handle :has().
725
+ if (astName === 'has') {
726
+ return this._evaluateHasPseudo(astData, node, opt);
727
+ }
728
+ // Handle :is(), :not(), :where().
729
+ const isShadowRoot =
730
+ (opt.isShadowRoot || this.#shadow) &&
731
+ node.nodeType === DOCUMENT_FRAGMENT_NODE;
732
+ // Check for invalid shadow root.
733
+ if (isShadowRoot) {
734
+ let invalid = false;
735
+ for (const branch of branches) {
736
+ if (branch.length > 1) {
737
+ invalid = true;
738
+ break;
739
+ } else if (astName === 'not') {
740
+ const [{ type: childAstType }] = branch;
741
+ if (childAstType !== PS_CLASS_SELECTOR) {
742
+ invalid = true;
743
+ break;
744
+ }
745
+ }
746
+ }
747
+ if (invalid) {
748
+ return null;
749
+ }
750
+ }
751
+ opt.forgive = astName === 'is' || astName === 'where';
752
+ const l = twigBranches.length;
753
+ let bool;
754
+ for (let i = 0; i < l; i++) {
755
+ const branch = twigBranches[i];
756
+ const lastIndex = branch.length - 1;
757
+ const { leaves } = branch[lastIndex];
758
+ bool = this._matchLeaves(leaves, node, opt);
759
+ if (bool && lastIndex > 0) {
760
+ let nextNodes = new Set([node]);
761
+ for (let j = lastIndex - 1; j >= 0; j--) {
762
+ const twig = branch[j];
763
+ const arr = [];
764
+ opt.dir = DIR_PREV;
765
+ for (const nextNode of nextNodes) {
766
+ const m = this._matchCombinator(twig, nextNode, opt);
767
+ if (m.size) {
768
+ arr.push(...m);
769
+ }
770
+ }
771
+ if (arr.length) {
772
+ if (j === 0) {
773
+ bool = true;
774
+ } else {
775
+ nextNodes = new Set(arr);
776
+ }
777
+ } else {
778
+ bool = false;
779
+ break;
780
+ }
781
+ }
782
+ }
783
+ if (bool) {
784
+ break;
785
+ }
786
+ }
787
+ if (astName === 'not') {
788
+ if (bool) {
789
+ return null;
790
+ }
791
+ return node;
792
+ } else if (bool) {
793
+ return node;
794
+ }
795
+ return null;
796
+ };
797
+
798
+ /**
799
+ * match pseudo-class selector
800
+ * @private
801
+ * @see https://html.spec.whatwg.org/#pseudo-classes
802
+ * @param {object} ast - AST
803
+ * @param {object} node - Element node
804
+ * @param {object} [opt] - options
805
+ * @returns {Set.<object>} - collection of matched nodes
806
+ */
807
+ _matchPseudoClassSelector(ast, node, opt = {}) {
808
+ const { children: astChildren, name: astName } = ast;
809
+ const { localName, parentNode } = node;
810
+ const { forgive, warn = this.#warn } = opt;
811
+ const matched = new Set();
812
+ // :has(), :is(), :not(), :where()
813
+ if (Array.isArray(astChildren) && KEYS_LOGICAL.has(astName)) {
814
+ if (!astChildren.length && astName !== 'is' && astName !== 'where') {
815
+ const css = generateCSS(ast);
816
+ const msg = `Invalid selector ${css}`;
817
+ return this.onError(generateException(msg, SYNTAX_ERR, this.#window));
818
+ }
819
+ let astData;
820
+ if (this.#astCache.has(ast)) {
821
+ astData = this.#astCache.get(ast);
822
+ } else {
823
+ const { branches } = walkAST(ast);
824
+ if (astName === 'has') {
825
+ // Check for nested :has().
826
+ let forgiven = false;
827
+ const l = astChildren.length;
828
+ for (let i = 0; i < l; i++) {
829
+ const child = astChildren[i];
830
+ const item = findAST(child, findLogicalWithNestedHas);
831
+ if (item) {
832
+ const itemName = item.name;
833
+ if (itemName === 'is' || itemName === 'where') {
834
+ forgiven = true;
835
+ break;
836
+ } else {
837
+ const css = generateCSS(ast);
838
+ const msg = `Invalid selector ${css}`;
839
+ return this.onError(
840
+ generateException(msg, SYNTAX_ERR, this.#window)
841
+ );
842
+ }
843
+ }
844
+ }
845
+ if (forgiven) {
846
+ return matched;
847
+ }
848
+ astData = {
849
+ astName,
850
+ branches
851
+ };
852
+ } else {
853
+ const twigBranches = [];
854
+ const l = branches.length;
855
+ for (let i = 0; i < l; i++) {
856
+ const [...leaves] = branches[i];
857
+ const branch = [];
858
+ const leavesSet = new Set();
859
+ let item = leaves.shift();
860
+ while (item) {
861
+ if (item.type === COMBINATOR) {
862
+ branch.push({
863
+ combo: item,
864
+ leaves: [...leavesSet]
865
+ });
866
+ leavesSet.clear();
867
+ } else if (item) {
868
+ leavesSet.add(item);
869
+ }
870
+ if (leaves.length) {
871
+ item = leaves.shift();
872
+ } else {
873
+ branch.push({
874
+ combo: null,
875
+ leaves: [...leavesSet]
876
+ });
877
+ leavesSet.clear();
878
+ break;
879
+ }
880
+ }
881
+ twigBranches.push(branch);
882
+ }
883
+ astData = {
884
+ astName,
885
+ branches,
886
+ twigBranches
887
+ };
888
+ this.#astCache.set(ast, astData);
889
+ }
890
+ }
891
+ const res = this._matchLogicalPseudoFunc(astData, node, opt);
892
+ if (res) {
893
+ matched.add(res);
894
+ }
895
+ } else if (Array.isArray(astChildren)) {
896
+ // :nth-child(), :nth-last-child(), nth-of-type(), :nth-last-of-type()
897
+ if (/^nth-(?:last-)?(?:child|of-type)$/.test(astName)) {
898
+ if (astChildren.length !== 1) {
899
+ const css = generateCSS(ast);
900
+ return this.onError(
901
+ generateException(
902
+ `Invalid selector ${css}`,
903
+ SYNTAX_ERR,
904
+ this.#window
905
+ )
906
+ );
907
+ }
908
+ const [branch] = astChildren;
909
+ const nodes = this._matchAnPlusB(branch, node, astName, opt);
910
+ return nodes;
911
+ } else {
912
+ switch (astName) {
913
+ // :dir()
914
+ case 'dir': {
915
+ if (astChildren.length !== 1) {
916
+ const css = generateCSS(ast);
917
+ return this.onError(
918
+ generateException(
919
+ `Invalid selector ${css}`,
920
+ SYNTAX_ERR,
921
+ this.#window
922
+ )
923
+ );
924
+ }
925
+ const [astChild] = astChildren;
926
+ const res = matchDirectionPseudoClass(astChild, node);
927
+ if (res) {
928
+ matched.add(node);
929
+ }
930
+ break;
931
+ }
932
+ // :lang()
933
+ case 'lang': {
934
+ if (!astChildren.length) {
935
+ const css = generateCSS(ast);
936
+ return this.onError(
937
+ generateException(
938
+ `Invalid selector ${css}`,
939
+ SYNTAX_ERR,
940
+ this.#window
941
+ )
942
+ );
943
+ }
944
+ let bool;
945
+ for (const astChild of astChildren) {
946
+ bool = matchLanguagePseudoClass(astChild, node);
947
+ if (bool) {
948
+ break;
949
+ }
950
+ }
951
+ if (bool) {
952
+ matched.add(node);
953
+ }
954
+ break;
955
+ }
956
+ // :state()
957
+ case 'state': {
958
+ if (isCustomElement(node)) {
959
+ const [{ value: stateValue }] = astChildren;
960
+ if (stateValue) {
961
+ if (node[stateValue]) {
962
+ matched.add(node);
963
+ } else {
964
+ for (const i in node) {
965
+ const prop = node[i];
966
+ if (prop instanceof this.#window.ElementInternals) {
967
+ if (prop?.states?.has(stateValue)) {
968
+ matched.add(node);
969
+ }
970
+ break;
971
+ }
972
+ }
973
+ }
974
+ }
975
+ }
976
+ break;
977
+ }
978
+ case 'current':
979
+ case 'heading':
980
+ case 'nth-col':
981
+ case 'nth-last-col': {
982
+ if (warn) {
983
+ this.onError(
984
+ generateException(
985
+ `Unsupported pseudo-class :${astName}()`,
986
+ NOT_SUPPORTED_ERR,
987
+ this.#window
988
+ )
989
+ );
990
+ }
991
+ break;
992
+ }
993
+ // Ignore :host() and :host-context().
994
+ case 'host':
995
+ case 'host-context': {
996
+ break;
997
+ }
998
+ // Deprecated in CSS Selectors 3.
999
+ case 'contains': {
1000
+ if (warn) {
1001
+ this.onError(
1002
+ generateException(
1003
+ `Unknown pseudo-class :${astName}()`,
1004
+ NOT_SUPPORTED_ERR,
1005
+ this.#window
1006
+ )
1007
+ );
1008
+ }
1009
+ break;
1010
+ }
1011
+ default: {
1012
+ if (!forgive) {
1013
+ this.onError(
1014
+ generateException(
1015
+ `Unknown pseudo-class :${astName}()`,
1016
+ SYNTAX_ERR,
1017
+ this.#window
1018
+ )
1019
+ );
1020
+ }
1021
+ }
1022
+ }
1023
+ }
1024
+ } else if (KEYS_PS_NTH_OF_TYPE.has(astName)) {
1025
+ if (node === this.#root) {
1026
+ matched.add(node);
1027
+ } else if (parentNode) {
1028
+ switch (astName) {
1029
+ case 'first-of-type': {
1030
+ const [node1] = this._collectNthOfType(
1031
+ {
1032
+ a: 0,
1033
+ b: 1
1034
+ },
1035
+ node
1036
+ );
1037
+ if (node1) {
1038
+ matched.add(node1);
1039
+ }
1040
+ break;
1041
+ }
1042
+ case 'last-of-type': {
1043
+ const [node1] = this._collectNthOfType(
1044
+ {
1045
+ a: 0,
1046
+ b: 1,
1047
+ reverse: true
1048
+ },
1049
+ node
1050
+ );
1051
+ if (node1) {
1052
+ matched.add(node1);
1053
+ }
1054
+ break;
1055
+ }
1056
+ // 'only-of-type' is handled by default.
1057
+ default: {
1058
+ const [node1] = this._collectNthOfType(
1059
+ {
1060
+ a: 0,
1061
+ b: 1
1062
+ },
1063
+ node
1064
+ );
1065
+ if (node1 === node) {
1066
+ const [node2] = this._collectNthOfType(
1067
+ {
1068
+ a: 0,
1069
+ b: 1,
1070
+ reverse: true
1071
+ },
1072
+ node
1073
+ );
1074
+ if (node2 === node) {
1075
+ matched.add(node);
1076
+ }
1077
+ }
1078
+ }
1079
+ }
1080
+ }
1081
+ } else {
1082
+ switch (astName) {
1083
+ case 'disabled':
1084
+ case 'enabled': {
1085
+ const isMatch = matchDisabledPseudoClass(astName, node);
1086
+ if (isMatch) {
1087
+ matched.add(node);
1088
+ }
1089
+ break;
1090
+ }
1091
+ case 'read-only':
1092
+ case 'read-write': {
1093
+ const isMatch = matchReadOnlyPseudoClass(astName, node);
1094
+ if (isMatch) {
1095
+ matched.add(node);
1096
+ }
1097
+ break;
1098
+ }
1099
+ case 'any-link':
1100
+ case 'link': {
1101
+ if (
1102
+ (localName === 'a' || localName === 'area') &&
1103
+ node.hasAttribute('href')
1104
+ ) {
1105
+ matched.add(node);
1106
+ }
1107
+ break;
1108
+ }
1109
+ case 'local-link': {
1110
+ if (
1111
+ (localName === 'a' || localName === 'area') &&
1112
+ node.hasAttribute('href')
1113
+ ) {
1114
+ if (!this.#documentURL) {
1115
+ this.#documentURL = new URL(this.#document.URL);
1116
+ }
1117
+ const { href, origin, pathname } = this.#documentURL;
1118
+ const attrURL = new URL(node.getAttribute('href'), href);
1119
+ if (attrURL.origin === origin && attrURL.pathname === pathname) {
1120
+ matched.add(node);
1121
+ }
1122
+ }
1123
+ break;
1124
+ }
1125
+ case 'visited': {
1126
+ // prevent fingerprinting
1127
+ break;
1128
+ }
1129
+ case 'hover': {
1130
+ const { target, type } = this.#event ?? {};
1131
+ if (
1132
+ /^(?:click|mouse(?:down|over|up))$/.test(type) &&
1133
+ node.contains(target)
1134
+ ) {
1135
+ matched.add(node);
1136
+ }
1137
+ break;
1138
+ }
1139
+ case 'active': {
1140
+ const { buttons, target, type } = this.#event ?? {};
1141
+ if (type === 'mousedown' && buttons & 1 && node.contains(target)) {
1142
+ matched.add(node);
1143
+ }
1144
+ break;
1145
+ }
1146
+ case 'target': {
1147
+ if (!this.#documentURL) {
1148
+ this.#documentURL = new URL(this.#document.URL);
1149
+ }
1150
+ const { hash } = this.#documentURL;
1151
+ if (
1152
+ node.id &&
1153
+ hash === `#${node.id}` &&
1154
+ this.#document.contains(node)
1155
+ ) {
1156
+ matched.add(node);
1157
+ }
1158
+ break;
1159
+ }
1160
+ case 'target-within': {
1161
+ if (!this.#documentURL) {
1162
+ this.#documentURL = new URL(this.#document.URL);
1163
+ }
1164
+ const { hash } = this.#documentURL;
1165
+ if (hash) {
1166
+ const id = hash.replace(/^#/, '');
1167
+ let current = this.#document.getElementById(id);
1168
+ while (current) {
1169
+ if (current === node) {
1170
+ matched.add(node);
1171
+ break;
1172
+ }
1173
+ current = current.parentNode;
1174
+ }
1175
+ }
1176
+ break;
1177
+ }
1178
+ case 'scope': {
1179
+ if (this.#node.nodeType === ELEMENT_NODE) {
1180
+ if (!this.#shadow && node === this.#node) {
1181
+ matched.add(node);
1182
+ }
1183
+ } else if (node === this.#document.documentElement) {
1184
+ matched.add(node);
1185
+ }
1186
+ break;
1187
+ }
1188
+ case 'focus': {
1189
+ if (node === this.#document.activeElement && isFocusableArea(node)) {
1190
+ matched.add(node);
1191
+ }
1192
+ break;
1193
+ }
1194
+ case 'focus-visible': {
1195
+ if (node === this.#document.activeElement && isFocusableArea(node)) {
1196
+ let bool;
1197
+ if (isFocusVisible(node)) {
1198
+ bool = true;
1199
+ } else if (this.#focus) {
1200
+ const { relatedTarget, target: focusTarget } = this.#focus;
1201
+ if (focusTarget === node) {
1202
+ if (isFocusVisible(relatedTarget)) {
1203
+ bool = true;
1204
+ } else if (this.#event) {
1205
+ const {
1206
+ altKey: eventAltKey,
1207
+ ctrlKey: eventCtrlKey,
1208
+ key: eventKey,
1209
+ metaKey: eventMetaKey,
1210
+ target: eventTarget,
1211
+ type: eventType
1212
+ } = this.#event;
1213
+ // this.#event is irrelevant if eventTarget === relatedTarget
1214
+ if (eventTarget === relatedTarget) {
1215
+ if (this.#lastFocusVisible === null) {
1216
+ bool = true;
1217
+ } else if (focusTarget === this.#lastFocusVisible) {
1218
+ bool = true;
1219
+ }
1220
+ } else if (eventKey === 'Tab') {
1221
+ if (
1222
+ (eventType === 'keydown' && eventTarget !== node) ||
1223
+ (eventType === 'keyup' && eventTarget === node)
1224
+ ) {
1225
+ if (eventTarget === focusTarget) {
1226
+ if (this.#lastFocusVisible === null) {
1227
+ bool = true;
1228
+ } else if (
1229
+ eventTarget === this.#lastFocusVisible &&
1230
+ relatedTarget === null
1231
+ ) {
1232
+ bool = true;
1233
+ }
1234
+ } else {
1235
+ bool = true;
1236
+ }
1237
+ }
1238
+ } else if (eventKey) {
1239
+ if (
1240
+ (eventType === 'keydown' || eventType === 'keyup') &&
1241
+ !eventAltKey &&
1242
+ !eventCtrlKey &&
1243
+ !eventMetaKey &&
1244
+ eventTarget === node
1245
+ ) {
1246
+ bool = true;
1247
+ }
1248
+ }
1249
+ } else if (
1250
+ relatedTarget === null ||
1251
+ relatedTarget === this.#lastFocusVisible
1252
+ ) {
1253
+ bool = true;
1254
+ }
1255
+ }
1256
+ }
1257
+ if (bool) {
1258
+ this.#lastFocusVisible = node;
1259
+ matched.add(node);
1260
+ } else if (this.#lastFocusVisible === node) {
1261
+ this.#lastFocusVisible = null;
1262
+ }
1263
+ }
1264
+ break;
1265
+ }
1266
+ case 'focus-within': {
1267
+ let bool;
1268
+ let current = this.#document.activeElement;
1269
+ if (isFocusableArea(current)) {
1270
+ while (current) {
1271
+ if (current === node) {
1272
+ bool = true;
1273
+ break;
1274
+ }
1275
+ current = current.parentNode;
1276
+ }
1277
+ }
1278
+ if (bool) {
1279
+ matched.add(node);
1280
+ }
1281
+ break;
1282
+ }
1283
+ case 'open':
1284
+ case 'closed': {
1285
+ if (localName === 'details' || localName === 'dialog') {
1286
+ if (node.hasAttribute('open')) {
1287
+ if (astName === 'open') {
1288
+ matched.add(node);
1289
+ }
1290
+ } else if (astName === 'closed') {
1291
+ matched.add(node);
1292
+ }
1293
+ }
1294
+ break;
1295
+ }
1296
+ case 'placeholder-shown': {
1297
+ let placeholder;
1298
+ if (node.placeholder) {
1299
+ placeholder = node.placeholder;
1300
+ } else if (node.hasAttribute('placeholder')) {
1301
+ placeholder = node.getAttribute('placeholder');
1302
+ }
1303
+ if (typeof placeholder === 'string' && !/[\r\n]/.test(placeholder)) {
1304
+ let targetNode;
1305
+ if (localName === 'textarea') {
1306
+ targetNode = node;
1307
+ } else if (localName === 'input') {
1308
+ if (node.hasAttribute('type')) {
1309
+ if (KEYS_INPUT_PLACEHOLDER.has(node.getAttribute('type'))) {
1310
+ targetNode = node;
1311
+ }
1312
+ } else {
1313
+ targetNode = node;
1314
+ }
1315
+ }
1316
+ if (targetNode && node.value === '') {
1317
+ matched.add(node);
1318
+ }
1319
+ }
1320
+ break;
1321
+ }
1322
+ case 'checked': {
1323
+ const attrType = node.getAttribute('type');
1324
+ if (
1325
+ (node.checked &&
1326
+ localName === 'input' &&
1327
+ (attrType === 'checkbox' || attrType === 'radio')) ||
1328
+ (node.selected && localName === 'option')
1329
+ ) {
1330
+ matched.add(node);
1331
+ }
1332
+ break;
1333
+ }
1334
+ case 'indeterminate': {
1335
+ if (
1336
+ (node.indeterminate &&
1337
+ localName === 'input' &&
1338
+ node.type === 'checkbox') ||
1339
+ (localName === 'progress' && !node.hasAttribute('value'))
1340
+ ) {
1341
+ matched.add(node);
1342
+ } else if (
1343
+ localName === 'input' &&
1344
+ node.type === 'radio' &&
1345
+ !node.hasAttribute('checked')
1346
+ ) {
1347
+ const nodeName = node.name;
1348
+ let parent = node.parentNode;
1349
+ while (parent) {
1350
+ if (parent.localName === 'form') {
1351
+ break;
1352
+ }
1353
+ parent = parent.parentNode;
1354
+ }
1355
+ if (!parent) {
1356
+ parent = this.#document.documentElement;
1357
+ }
1358
+ const walker = this._createTreeWalker(parent);
1359
+ let refNode = traverseNode(parent, walker);
1360
+ refNode = walker.firstChild();
1361
+ let checked;
1362
+ while (refNode) {
1363
+ if (
1364
+ refNode.localName === 'input' &&
1365
+ refNode.getAttribute('type') === 'radio'
1366
+ ) {
1367
+ if (refNode.hasAttribute('name')) {
1368
+ if (refNode.getAttribute('name') === nodeName) {
1369
+ checked = !!refNode.checked;
1370
+ }
1371
+ } else {
1372
+ checked = !!refNode.checked;
1373
+ }
1374
+ if (checked) {
1375
+ break;
1376
+ }
1377
+ }
1378
+ refNode = walker.nextNode();
1379
+ }
1380
+ if (!checked) {
1381
+ matched.add(node);
1382
+ }
1383
+ }
1384
+ break;
1385
+ }
1386
+ case 'default': {
1387
+ // button[type="submit"], input[type="submit"], input[type="image"]
1388
+ const attrType = node.getAttribute('type');
1389
+ if (
1390
+ (localName === 'button' &&
1391
+ !(node.hasAttribute('type') && KEYS_INPUT_RESET.has(attrType))) ||
1392
+ (localName === 'input' &&
1393
+ node.hasAttribute('type') &&
1394
+ KEYS_INPUT_SUBMIT.has(attrType))
1395
+ ) {
1396
+ let form = node.parentNode;
1397
+ while (form) {
1398
+ if (form.localName === 'form') {
1399
+ break;
1400
+ }
1401
+ form = form.parentNode;
1402
+ }
1403
+ if (form) {
1404
+ const walker = this._createTreeWalker(form);
1405
+ let refNode = traverseNode(form, walker);
1406
+ refNode = walker.firstChild();
1407
+ while (refNode) {
1408
+ const nodeName = refNode.localName;
1409
+ const nodeAttrType = refNode.getAttribute('type');
1410
+ let m;
1411
+ if (nodeName === 'button') {
1412
+ m = !(
1413
+ refNode.hasAttribute('type') &&
1414
+ KEYS_INPUT_RESET.has(nodeAttrType)
1415
+ );
1416
+ } else if (nodeName === 'input') {
1417
+ m =
1418
+ refNode.hasAttribute('type') &&
1419
+ KEYS_INPUT_SUBMIT.has(nodeAttrType);
1420
+ }
1421
+ if (m) {
1422
+ if (refNode === node) {
1423
+ matched.add(node);
1424
+ }
1425
+ break;
1426
+ }
1427
+ refNode = walker.nextNode();
1428
+ }
1429
+ }
1430
+ // input[type="checkbox"], input[type="radio"]
1431
+ } else if (
1432
+ localName === 'input' &&
1433
+ node.hasAttribute('type') &&
1434
+ node.hasAttribute('checked') &&
1435
+ KEYS_INPUT_CHECK.has(attrType)
1436
+ ) {
1437
+ matched.add(node);
1438
+ // option
1439
+ } else if (localName === 'option' && node.hasAttribute('selected')) {
1440
+ matched.add(node);
1441
+ }
1442
+ break;
1443
+ }
1444
+ case 'valid':
1445
+ case 'invalid': {
1446
+ if (KEYS_FORM_PS_VALID.has(localName)) {
1447
+ let valid;
1448
+ if (node.checkValidity()) {
1449
+ if (node.maxLength >= 0) {
1450
+ if (node.maxLength >= node.value.length) {
1451
+ valid = true;
1452
+ }
1453
+ } else {
1454
+ valid = true;
1455
+ }
1456
+ }
1457
+ if (valid) {
1458
+ if (astName === 'valid') {
1459
+ matched.add(node);
1460
+ }
1461
+ } else if (astName === 'invalid') {
1462
+ matched.add(node);
1463
+ }
1464
+ } else if (localName === 'fieldset') {
1465
+ const walker = this._createTreeWalker(node);
1466
+ let refNode = traverseNode(node, walker);
1467
+ refNode = walker.firstChild();
1468
+ let valid;
1469
+ if (!refNode) {
1470
+ valid = true;
1471
+ } else {
1472
+ while (refNode) {
1473
+ if (KEYS_FORM_PS_VALID.has(refNode.localName)) {
1474
+ if (refNode.checkValidity()) {
1475
+ if (refNode.maxLength >= 0) {
1476
+ valid = refNode.maxLength >= refNode.value.length;
1477
+ } else {
1478
+ valid = true;
1479
+ }
1480
+ } else {
1481
+ valid = false;
1482
+ }
1483
+ if (!valid) {
1484
+ break;
1485
+ }
1486
+ }
1487
+ refNode = walker.nextNode();
1488
+ }
1489
+ }
1490
+ if (valid) {
1491
+ if (astName === 'valid') {
1492
+ matched.add(node);
1493
+ }
1494
+ } else if (astName === 'invalid') {
1495
+ matched.add(node);
1496
+ }
1497
+ }
1498
+ break;
1499
+ }
1500
+ case 'in-range':
1501
+ case 'out-of-range': {
1502
+ const attrType = node.getAttribute('type');
1503
+ if (
1504
+ localName === 'input' &&
1505
+ !(node.readonly || node.hasAttribute('readonly')) &&
1506
+ !(node.disabled || node.hasAttribute('disabled')) &&
1507
+ KEYS_INPUT_RANGE.has(attrType)
1508
+ ) {
1509
+ const flowed =
1510
+ node.validity.rangeUnderflow || node.validity.rangeOverflow;
1511
+ if (astName === 'out-of-range' && flowed) {
1512
+ matched.add(node);
1513
+ } else if (
1514
+ astName === 'in-range' &&
1515
+ !flowed &&
1516
+ (node.hasAttribute('min') ||
1517
+ node.hasAttribute('max') ||
1518
+ attrType === 'range')
1519
+ ) {
1520
+ matched.add(node);
1521
+ }
1522
+ }
1523
+ break;
1524
+ }
1525
+ case 'required':
1526
+ case 'optional': {
1527
+ let required;
1528
+ let optional;
1529
+ if (localName === 'select' || localName === 'textarea') {
1530
+ if (node.required || node.hasAttribute('required')) {
1531
+ required = true;
1532
+ } else {
1533
+ optional = true;
1534
+ }
1535
+ } else if (localName === 'input') {
1536
+ if (node.hasAttribute('type')) {
1537
+ const attrType = node.getAttribute('type');
1538
+ if (KEYS_INPUT_REQUIRED.has(attrType)) {
1539
+ if (node.required || node.hasAttribute('required')) {
1540
+ required = true;
1541
+ } else {
1542
+ optional = true;
1543
+ }
1544
+ } else {
1545
+ optional = true;
1546
+ }
1547
+ } else if (node.required || node.hasAttribute('required')) {
1548
+ required = true;
1549
+ } else {
1550
+ optional = true;
1551
+ }
1552
+ }
1553
+ if (astName === 'required' && required) {
1554
+ matched.add(node);
1555
+ } else if (astName === 'optional' && optional) {
1556
+ matched.add(node);
1557
+ }
1558
+ break;
1559
+ }
1560
+ case 'root': {
1561
+ if (node === this.#document.documentElement) {
1562
+ matched.add(node);
1563
+ }
1564
+ break;
1565
+ }
1566
+ case 'empty': {
1567
+ if (node.hasChildNodes()) {
1568
+ const walker = this._createTreeWalker(node, {
1569
+ force: true,
1570
+ whatToShow: SHOW_ALL
1571
+ });
1572
+ let refNode = walker.firstChild();
1573
+ let bool;
1574
+ while (refNode) {
1575
+ bool =
1576
+ refNode.nodeType !== ELEMENT_NODE &&
1577
+ refNode.nodeType !== TEXT_NODE;
1578
+ if (!bool) {
1579
+ break;
1580
+ }
1581
+ refNode = walker.nextSibling();
1582
+ }
1583
+ if (bool) {
1584
+ matched.add(node);
1585
+ }
1586
+ } else {
1587
+ matched.add(node);
1588
+ }
1589
+ break;
1590
+ }
1591
+ case 'first-child': {
1592
+ if (
1593
+ (parentNode && node === parentNode.firstElementChild) ||
1594
+ node === this.#root
1595
+ ) {
1596
+ matched.add(node);
1597
+ }
1598
+ break;
1599
+ }
1600
+ case 'last-child': {
1601
+ if (
1602
+ (parentNode && node === parentNode.lastElementChild) ||
1603
+ node === this.#root
1604
+ ) {
1605
+ matched.add(node);
1606
+ }
1607
+ break;
1608
+ }
1609
+ case 'only-child': {
1610
+ if (
1611
+ (parentNode &&
1612
+ node === parentNode.firstElementChild &&
1613
+ node === parentNode.lastElementChild) ||
1614
+ node === this.#root
1615
+ ) {
1616
+ matched.add(node);
1617
+ }
1618
+ break;
1619
+ }
1620
+ case 'defined': {
1621
+ if (node.hasAttribute('is') || localName.includes('-')) {
1622
+ if (isCustomElement(node)) {
1623
+ matched.add(node);
1624
+ }
1625
+ // NOTE: MathMLElement is not implemented in jsdom.
1626
+ } else if (
1627
+ node instanceof this.#window.HTMLElement ||
1628
+ node instanceof this.#window.SVGElement
1629
+ ) {
1630
+ matched.add(node);
1631
+ }
1632
+ break;
1633
+ }
1634
+ case 'popover-open': {
1635
+ if (node.popover && isVisible(node)) {
1636
+ matched.add(node);
1637
+ }
1638
+ break;
1639
+ }
1640
+ // Ignore :host.
1641
+ case 'host': {
1642
+ break;
1643
+ }
1644
+ // Legacy pseudo-elements.
1645
+ case 'after':
1646
+ case 'before':
1647
+ case 'first-letter':
1648
+ case 'first-line': {
1649
+ if (warn) {
1650
+ this.onError(
1651
+ generateException(
1652
+ `Unsupported pseudo-element ::${astName}`,
1653
+ NOT_SUPPORTED_ERR,
1654
+ this.#window
1655
+ )
1656
+ );
1657
+ }
1658
+ break;
1659
+ }
1660
+ // Not supported.
1661
+ case 'autofill':
1662
+ case 'blank':
1663
+ case 'buffering':
1664
+ case 'current':
1665
+ case 'fullscreen':
1666
+ case 'future':
1667
+ case 'has-slotted':
1668
+ case 'heading':
1669
+ case 'modal':
1670
+ case 'muted':
1671
+ case 'past':
1672
+ case 'paused':
1673
+ case 'picture-in-picture':
1674
+ case 'playing':
1675
+ case 'seeking':
1676
+ case 'stalled':
1677
+ case 'user-invalid':
1678
+ case 'user-valid':
1679
+ case 'volume-locked':
1680
+ case '-webkit-autofill': {
1681
+ if (warn) {
1682
+ this.onError(
1683
+ generateException(
1684
+ `Unsupported pseudo-class :${astName}`,
1685
+ NOT_SUPPORTED_ERR,
1686
+ this.#window
1687
+ )
1688
+ );
1689
+ }
1690
+ break;
1691
+ }
1692
+ default: {
1693
+ if (astName.startsWith('-webkit-')) {
1694
+ if (warn) {
1695
+ this.onError(
1696
+ generateException(
1697
+ `Unsupported pseudo-class :${astName}`,
1698
+ NOT_SUPPORTED_ERR,
1699
+ this.#window
1700
+ )
1701
+ );
1702
+ }
1703
+ } else if (!forgive) {
1704
+ this.onError(
1705
+ generateException(
1706
+ `Unknown pseudo-class :${astName}`,
1707
+ SYNTAX_ERR,
1708
+ this.#window
1709
+ )
1710
+ );
1711
+ }
1712
+ }
1713
+ }
1714
+ }
1715
+ return matched;
1716
+ }
1717
+
1718
+ /**
1719
+ * Evaluates the :host() pseudo-class.
1720
+ * @private
1721
+ * @param {Array.<object>} leaves - The AST leaves.
1722
+ * @param {object} host - The host element.
1723
+ * @param {object} ast - The original AST for error reporting.
1724
+ * @returns {boolean} True if matched.
1725
+ */
1726
+ _evaluateHostPseudo = (leaves, host, ast) => {
1727
+ const l = leaves.length;
1728
+ for (let i = 0; i < l; i++) {
1729
+ const leaf = leaves[i];
1730
+ if (leaf.type === COMBINATOR) {
1731
+ const css = generateCSS(ast);
1732
+ const msg = `Invalid selector ${css}`;
1733
+ this.onError(generateException(msg, SYNTAX_ERR, this.#window));
1734
+ return false;
1735
+ }
1736
+ if (!this._matchSelector(leaf, host).has(host)) {
1737
+ return false;
1738
+ }
1739
+ }
1740
+ return true;
1741
+ };
1742
+
1743
+ /**
1744
+ * Evaluates the :host-context() pseudo-class.
1745
+ * @private
1746
+ * @param {Array.<object>} leaves - The AST leaves.
1747
+ * @param {object} host - The host element.
1748
+ * @param {object} ast - The original AST for error reporting.
1749
+ * @returns {boolean} True if matched.
1750
+ */
1751
+ _evaluateHostContextPseudo = (leaves, host, ast) => {
1752
+ let parent = host;
1753
+ while (parent) {
1754
+ let bool;
1755
+ const l = leaves.length;
1756
+ for (let i = 0; i < l; i++) {
1757
+ const leaf = leaves[i];
1758
+ if (leaf.type === COMBINATOR) {
1759
+ const css = generateCSS(ast);
1760
+ const msg = `Invalid selector ${css}`;
1761
+ this.onError(generateException(msg, SYNTAX_ERR, this.#window));
1762
+ return false;
1763
+ }
1764
+ bool = this._matchSelector(leaf, parent).has(parent);
1765
+ if (!bool) {
1766
+ break;
1767
+ }
1768
+ }
1769
+ if (bool) {
1770
+ return true;
1771
+ }
1772
+ parent = parent.parentNode;
1773
+ }
1774
+ return false;
1775
+ };
1776
+
1777
+ /**
1778
+ * Matches shadow host pseudo-classes.
1779
+ * @private
1780
+ * @param {object} ast - The AST.
1781
+ * @param {object} node - The DocumentFragment node.
1782
+ * @returns {?object} The matched node.
1783
+ */
1784
+ _matchShadowHostPseudoClass = (ast, node) => {
1785
+ const { children: astChildren, name: astName } = ast;
1786
+ // Handle simple pseudo-class (no arguments).
1787
+ if (!Array.isArray(astChildren)) {
1788
+ if (astName === 'host') {
1789
+ return node;
1790
+ }
1791
+ const msg = `Invalid selector :${astName}`;
1792
+ return this.onError(generateException(msg, SYNTAX_ERR, this.#window));
1793
+ }
1794
+ // Handle functional pseudo-class like :host(...).
1795
+ if (astName !== 'host' && astName !== 'host-context') {
1796
+ const msg = `Invalid selector :${astName}()`;
1797
+ return this.onError(generateException(msg, SYNTAX_ERR, this.#window));
1798
+ }
1799
+ if (astChildren.length !== 1) {
1800
+ const css = generateCSS(ast);
1801
+ const msg = `Invalid selector ${css}`;
1802
+ return this.onError(generateException(msg, SYNTAX_ERR, this.#window));
1803
+ }
1804
+ const { host } = node;
1805
+ const { branches } = walkAST(astChildren[0]);
1806
+ const [branch] = branches;
1807
+ const [...leaves] = branch;
1808
+ let isMatch = false;
1809
+ if (astName === 'host') {
1810
+ isMatch = this._evaluateHostPseudo(leaves, host, ast);
1811
+ // astName === 'host-context'.
1812
+ } else {
1813
+ isMatch = this._evaluateHostContextPseudo(leaves, host, ast);
1814
+ }
1815
+ return isMatch ? node : null;
1816
+ };
1817
+
1818
+ /**
1819
+ * Matches a selector for element nodes.
1820
+ * @private
1821
+ * @param {object} ast - The AST.
1822
+ * @param {object} node - The Element node.
1823
+ * @param {object} [opt] - Options.
1824
+ * @returns {Set.<object>} A collection of matched nodes.
1825
+ */
1826
+ _matchSelectorForElement = (ast, node, opt = {}) => {
1827
+ const { type: astType } = ast;
1828
+ const astName = unescapeSelector(ast.name);
1829
+ const matched = new Set();
1830
+ switch (astType) {
1831
+ case ATTR_SELECTOR: {
1832
+ if (matchAttributeSelector(ast, node, opt)) {
1833
+ matched.add(node);
1834
+ }
1835
+ break;
1836
+ }
1837
+ case ID_SELECTOR: {
1838
+ if (node.id === astName) {
1839
+ matched.add(node);
1840
+ }
1841
+ break;
1842
+ }
1843
+ case CLASS_SELECTOR: {
1844
+ if (node.classList.contains(astName)) {
1845
+ matched.add(node);
1846
+ }
1847
+ break;
1848
+ }
1849
+ case PS_CLASS_SELECTOR: {
1850
+ return this._matchPseudoClassSelector(ast, node, opt);
1851
+ }
1852
+ case TYPE_SELECTOR: {
1853
+ if (matchTypeSelector(ast, node, opt)) {
1854
+ matched.add(node);
1855
+ }
1856
+ break;
1857
+ }
1858
+ // PS_ELEMENT_SELECTOR is handled by default.
1859
+ default: {
1860
+ try {
1861
+ if (opt.check) {
1862
+ const css = generateCSS(ast);
1863
+ this.#pseudoElement.push(css);
1864
+ matched.add(node);
1865
+ } else {
1866
+ matchPseudoElementSelector(astName, astType, opt);
1867
+ }
1868
+ } catch (e) {
1869
+ this.onError(e);
1870
+ }
1871
+ }
1872
+ }
1873
+ return matched;
1874
+ };
1875
+
1876
+ /**
1877
+ * Matches a selector for a shadow root.
1878
+ * @private
1879
+ * @param {object} ast - The AST.
1880
+ * @param {object} node - The DocumentFragment node.
1881
+ * @param {object} [opt] - Options.
1882
+ * @returns {Set.<object>} A collection of matched nodes.
1883
+ */
1884
+ _matchSelectorForShadowRoot = (ast, node, opt = {}) => {
1885
+ const { name: astName } = ast;
1886
+ if (KEYS_LOGICAL.has(astName)) {
1887
+ opt.isShadowRoot = true;
1888
+ return this._matchPseudoClassSelector(ast, node, opt);
1889
+ }
1890
+ const matched = new Set();
1891
+ if (astName === 'host' || astName === 'host-context') {
1892
+ const res = this._matchShadowHostPseudoClass(ast, node, opt);
1893
+ if (res) {
1894
+ this.#verifyShadowHost = true;
1895
+ matched.add(res);
1896
+ }
1897
+ }
1898
+ return matched;
1899
+ };
1900
+
1901
+ /**
1902
+ * Matches a selector.
1903
+ * @private
1904
+ * @param {object} ast - The AST.
1905
+ * @param {object} node - The Document, DocumentFragment, or Element node.
1906
+ * @param {object} [opt] - Options.
1907
+ * @returns {Set.<object>} A collection of matched nodes.
1908
+ */
1909
+ _matchSelector = (ast, node, opt = {}) => {
1910
+ if (node.nodeType === ELEMENT_NODE) {
1911
+ return this._matchSelectorForElement(ast, node, opt);
1912
+ }
1913
+ if (
1914
+ this.#shadow &&
1915
+ node.nodeType === DOCUMENT_FRAGMENT_NODE &&
1916
+ ast.type === PS_CLASS_SELECTOR
1917
+ ) {
1918
+ return this._matchSelectorForShadowRoot(ast, node, opt);
1919
+ }
1920
+ return new Set();
1921
+ };
1922
+
1923
+ /**
1924
+ * Matches leaves.
1925
+ * @private
1926
+ * @param {Array.<object>} leaves - The AST leaves.
1927
+ * @param {object} node - The node.
1928
+ * @param {object} [opt] - Options.
1929
+ * @returns {boolean} The result.
1930
+ */
1931
+ _matchLeaves = (leaves, node, opt = {}) => {
1932
+ const results = this.#invalidate ? this.#invalidateResults : this.#results;
1933
+ let result = results.get(leaves);
1934
+ if (result && result.has(node)) {
1935
+ const { matched } = result.get(node);
1936
+ return matched;
1937
+ }
1938
+ let cacheable = true;
1939
+ if (node.nodeType === ELEMENT_NODE && KEYS_FORM.has(node.localName)) {
1940
+ cacheable = false;
1941
+ }
1942
+ let bool;
1943
+ const l = leaves.length;
1944
+ for (let i = 0; i < l; i++) {
1945
+ const leaf = leaves[i];
1946
+ switch (leaf.type) {
1947
+ case ATTR_SELECTOR:
1948
+ case ID_SELECTOR: {
1949
+ cacheable = false;
1950
+ break;
1951
+ }
1952
+ case PS_CLASS_SELECTOR: {
1953
+ if (KEYS_PS_UNCACHE.has(leaf.name)) {
1954
+ cacheable = false;
1955
+ }
1956
+ break;
1957
+ }
1958
+ default: {
1959
+ // No action needed for other types.
1960
+ }
1961
+ }
1962
+ bool = this._matchSelector(leaf, node, opt).has(node);
1963
+ if (!bool) {
1964
+ break;
1965
+ }
1966
+ }
1967
+ if (cacheable) {
1968
+ if (!result) {
1969
+ result = new WeakMap();
1970
+ }
1971
+ result.set(node, {
1972
+ matched: bool
1973
+ });
1974
+ results.set(leaves, result);
1975
+ }
1976
+ return bool;
1977
+ };
1978
+
1979
+ /**
1980
+ * Traverses all descendant nodes and collects matches.
1981
+ * @private
1982
+ * @param {object} baseNode - The base Element node or Element.shadowRoot.
1983
+ * @param {Array.<object>} leaves - The AST leaves.
1984
+ * @param {object} [opt] - Options.
1985
+ * @returns {Set.<object>} A collection of matched nodes.
1986
+ */
1987
+ _traverseAllDescendants = (baseNode, leaves, opt = {}) => {
1988
+ const walker = this._createTreeWalker(baseNode);
1989
+ traverseNode(baseNode, walker);
1990
+ let currentNode = walker.firstChild();
1991
+ const nodes = new Set();
1992
+ while (currentNode) {
1993
+ if (this._matchLeaves(leaves, currentNode, opt)) {
1994
+ nodes.add(currentNode);
1995
+ }
1996
+ currentNode = walker.nextNode();
1997
+ }
1998
+ return nodes;
1999
+ };
2000
+
2001
+ /**
2002
+ * Finds descendant nodes.
2003
+ * @private
2004
+ * @param {Array.<object>} leaves - The AST leaves.
2005
+ * @param {object} baseNode - The base Element node or Element.shadowRoot.
2006
+ * @param {object} [opt] - Options.
2007
+ * @returns {Set.<object>} A collection of matched nodes.
2008
+ */
2009
+ _findDescendantNodes = (leaves, baseNode, opt = {}) => {
2010
+ const [leaf, ...filterLeaves] = leaves;
2011
+ const { type: leafType } = leaf;
2012
+ switch (leafType) {
2013
+ case ID_SELECTOR: {
2014
+ const canUseGetElementById =
2015
+ !this.#shadow &&
2016
+ baseNode.nodeType === ELEMENT_NODE &&
2017
+ this.#root.nodeType !== ELEMENT_NODE;
2018
+ if (canUseGetElementById) {
2019
+ const leafName = unescapeSelector(leaf.name);
2020
+ const nodes = new Set();
2021
+ const foundNode = this.#root.getElementById(leafName);
2022
+ if (
2023
+ foundNode &&
2024
+ foundNode !== baseNode &&
2025
+ baseNode.contains(foundNode)
2026
+ ) {
2027
+ const isCompoundSelector = filterLeaves.length > 0;
2028
+ if (
2029
+ !isCompoundSelector ||
2030
+ this._matchLeaves(filterLeaves, foundNode, opt)
2031
+ ) {
2032
+ nodes.add(foundNode);
2033
+ }
2034
+ }
2035
+ return nodes;
2036
+ }
2037
+ // Fallback to default traversal if fast path is not applicable.
2038
+ return this._traverseAllDescendants(baseNode, leaves, opt);
2039
+ }
2040
+ case PS_ELEMENT_SELECTOR: {
2041
+ const leafName = unescapeSelector(leaf.name);
2042
+ matchPseudoElementSelector(leafName, leafType, opt);
2043
+ return new Set();
2044
+ }
2045
+ default: {
2046
+ return this._traverseAllDescendants(baseNode, leaves, opt);
2047
+ }
2048
+ }
2049
+ };
2050
+
2051
+ /**
2052
+ * Matches the descendant combinator ' '.
2053
+ * @private
2054
+ * @param {object} twig - The twig object.
2055
+ * @param {object} node - The Element node.
2056
+ * @param {object} [opt] - Options.
2057
+ * @returns {Set.<object>} A collection of matched nodes.
2058
+ */
2059
+ _matchDescendantCombinator = (twig, node, opt = {}) => {
2060
+ const { leaves } = twig;
2061
+ const { parentNode } = node;
2062
+ const { dir } = opt;
2063
+ if (dir === DIR_NEXT) {
2064
+ return this._findDescendantNodes(leaves, node, opt);
2065
+ }
2066
+ // DIR_PREV
2067
+ const ancestors = [];
2068
+ let refNode = parentNode;
2069
+ while (refNode) {
2070
+ if (this._matchLeaves(leaves, refNode, opt)) {
2071
+ ancestors.push(refNode);
2072
+ }
2073
+ refNode = refNode.parentNode;
2074
+ }
2075
+ if (ancestors.length) {
2076
+ // Reverse to maintain document order.
2077
+ return new Set(ancestors.reverse());
2078
+ }
2079
+ return new Set();
2080
+ };
2081
+
2082
+ /**
2083
+ * Matches the child combinator '>'.
2084
+ * @private
2085
+ * @param {object} twig - The twig object.
2086
+ * @param {object} node - The Element node.
2087
+ * @param {object} [opt] - Options.
2088
+ * @returns {Set.<object>} A collection of matched nodes.
2089
+ */
2090
+ _matchChildCombinator = (twig, node, opt = {}) => {
2091
+ const { leaves } = twig;
2092
+ const { dir } = opt;
2093
+ const { parentNode } = node;
2094
+ const matched = new Set();
2095
+ if (dir === DIR_NEXT) {
2096
+ let refNode = node.firstElementChild;
2097
+ while (refNode) {
2098
+ if (this._matchLeaves(leaves, refNode, opt)) {
2099
+ matched.add(refNode);
2100
+ }
2101
+ refNode = refNode.nextElementSibling;
2102
+ }
2103
+ } else {
2104
+ // DIR_PREV
2105
+ if (parentNode && this._matchLeaves(leaves, parentNode, opt)) {
2106
+ matched.add(parentNode);
2107
+ }
2108
+ }
2109
+ return matched;
2110
+ };
2111
+
2112
+ /**
2113
+ * Matches the adjacent sibling combinator '+'.
2114
+ * @private
2115
+ * @param {object} twig - The twig object.
2116
+ * @param {object} node - The Element node.
2117
+ * @param {object} [opt] - Options.
2118
+ * @returns {Set.<object>} A collection of matched nodes.
2119
+ */
2120
+ _matchAdjacentSiblingCombinator = (twig, node, opt = {}) => {
2121
+ const { leaves } = twig;
2122
+ const { dir } = opt;
2123
+ const matched = new Set();
2124
+ const refNode =
2125
+ dir === DIR_NEXT ? node.nextElementSibling : node.previousElementSibling;
2126
+ if (refNode && this._matchLeaves(leaves, refNode, opt)) {
2127
+ matched.add(refNode);
2128
+ }
2129
+ return matched;
2130
+ };
2131
+
2132
+ /**
2133
+ * Matches the general sibling combinator '~'.
2134
+ * @private
2135
+ * @param {object} twig - The twig object.
2136
+ * @param {object} node - The Element node.
2137
+ * @param {object} [opt] - Options.
2138
+ * @returns {Set.<object>} A collection of matched nodes.
2139
+ */
2140
+ _matchGeneralSiblingCombinator = (twig, node, opt = {}) => {
2141
+ const { leaves } = twig;
2142
+ const { dir } = opt;
2143
+ const matched = new Set();
2144
+ let refNode =
2145
+ dir === DIR_NEXT ? node.nextElementSibling : node.previousElementSibling;
2146
+ while (refNode) {
2147
+ if (this._matchLeaves(leaves, refNode, opt)) {
2148
+ matched.add(refNode);
2149
+ }
2150
+ refNode =
2151
+ dir === DIR_NEXT
2152
+ ? refNode.nextElementSibling
2153
+ : refNode.previousElementSibling;
2154
+ }
2155
+ return matched;
2156
+ };
2157
+
2158
+ /**
2159
+ * Matches a combinator.
2160
+ * @private
2161
+ * @param {object} twig - The twig object.
2162
+ * @param {object} node - The Element node.
2163
+ * @param {object} [opt] - Options.
2164
+ * @returns {Set.<object>} A collection of matched nodes.
2165
+ */
2166
+ _matchCombinator = (twig, node, opt = {}) => {
2167
+ const {
2168
+ combo: { name: comboName }
2169
+ } = twig;
2170
+ switch (comboName) {
2171
+ case '+': {
2172
+ return this._matchAdjacentSiblingCombinator(twig, node, opt);
2173
+ }
2174
+ case '~': {
2175
+ return this._matchGeneralSiblingCombinator(twig, node, opt);
2176
+ }
2177
+ case '>': {
2178
+ return this._matchChildCombinator(twig, node, opt);
2179
+ }
2180
+ case ' ':
2181
+ default: {
2182
+ return this._matchDescendantCombinator(twig, node, opt);
2183
+ }
2184
+ }
2185
+ };
2186
+
2187
+ /**
2188
+ * Traverses with a TreeWalker and collects nodes matching the leaves.
2189
+ * @private
2190
+ * @param {TreeWalker} walker - The TreeWalker instance to use.
2191
+ * @param {Array} leaves - The AST leaves to match against.
2192
+ * @param {object} options - Traversal options.
2193
+ * @param {Node} options.startNode - The node to start traversal from.
2194
+ * @param {string} options.targetType - The type of target ('all' or 'first').
2195
+ * @param {Node} [options.boundaryNode] - The node to stop traversal at.
2196
+ * @param {boolean} [options.force] - Force traversal to the next node.
2197
+ * @returns {Array.<Node>} An array of matched nodes.
2198
+ */
2199
+ _traverseAndCollectNodes = (walker, leaves, options) => {
2200
+ const { boundaryNode, force, startNode, targetType } = options;
2201
+ const collectedNodes = [];
2202
+ let currentNode = traverseNode(startNode, walker, !!force);
2203
+ if (!currentNode) {
2204
+ return [];
2205
+ }
2206
+ // Adjust starting node.
2207
+ if (currentNode.nodeType !== ELEMENT_NODE) {
2208
+ currentNode = walker.nextNode();
2209
+ } else if (currentNode === startNode && currentNode !== this.#root) {
2210
+ currentNode = walker.nextNode();
2211
+ }
2212
+ const matchOpt = {
2213
+ warn: this.#warn
2214
+ };
2215
+ while (currentNode) {
2216
+ // Stop when we reach the boundary node.
2217
+ if (boundaryNode && currentNode === boundaryNode) {
2218
+ break;
2219
+ }
2220
+ if (
2221
+ this._matchLeaves(leaves, currentNode, matchOpt) &&
2222
+ currentNode !== this.#node
2223
+ ) {
2224
+ collectedNodes.push(currentNode);
2225
+ // Stop after the first match if not collecting all.
2226
+ if (targetType !== TARGET_ALL) {
2227
+ break;
2228
+ }
2229
+ }
2230
+ currentNode = walker.nextNode();
2231
+ }
2232
+ return collectedNodes;
2233
+ };
2234
+
2235
+ /**
2236
+ * Finds matched node(s) preceding this.#node.
2237
+ * @private
2238
+ * @param {Array.<object>} leaves - The AST leaves.
2239
+ * @param {object} node - The node to start from.
2240
+ * @param {object} opt - Options.
2241
+ * @param {boolean} [opt.force] - If true, traverses only to the next node.
2242
+ * @param {string} [opt.targetType] - The target type.
2243
+ * @returns {Array.<object>} A collection of matched nodes.
2244
+ */
2245
+ _findPrecede = (leaves, node, opt = {}) => {
2246
+ const { force, targetType } = opt;
2247
+ if (!this.#rootWalker) {
2248
+ this.#rootWalker = this._createTreeWalker(this.#root);
2249
+ }
2250
+ return this._traverseAndCollectNodes(this.#rootWalker, leaves, {
2251
+ force,
2252
+ targetType,
2253
+ boundaryNode: this.#node,
2254
+ startNode: node
2255
+ });
2256
+ };
2257
+
2258
+ /**
2259
+ * Finds matched node(s) in #nodeWalker.
2260
+ * @private
2261
+ * @param {Array.<object>} leaves - The AST leaves.
2262
+ * @param {object} node - The node to start from.
2263
+ * @param {object} opt - Options.
2264
+ * @param {boolean} [opt.precede] - If true, finds preceding nodes.
2265
+ * @returns {Array.<object>} A collection of matched nodes.
2266
+ */
2267
+ _findNodeWalker = (leaves, node, opt = {}) => {
2268
+ const { precede, ...traversalOpts } = opt;
2269
+ if (precede) {
2270
+ const precedeNodes = this._findPrecede(leaves, this.#root, opt);
2271
+ if (precedeNodes.length) {
2272
+ return precedeNodes;
2273
+ }
2274
+ }
2275
+ if (!this.#nodeWalker) {
2276
+ this.#nodeWalker = this._createTreeWalker(this.#node);
2277
+ }
2278
+ return this._traverseAndCollectNodes(this.#nodeWalker, leaves, {
2279
+ startNode: node,
2280
+ ...traversalOpts
2281
+ });
2282
+ };
2283
+
2284
+ /**
2285
+ * Matches the node itself.
2286
+ * @private
2287
+ * @param {Array} leaves - The AST leaves.
2288
+ * @param {boolean} check - Indicates if running in internal check().
2289
+ * @returns {Array} An array containing [nodes, filtered, pseudoElement].
2290
+ */
2291
+ _matchSelf = (leaves, check = false) => {
2292
+ const options = { check, warn: this.#warn };
2293
+ const matched = this._matchLeaves(leaves, this.#node, options);
2294
+ const nodes = matched ? [this.#node] : [];
2295
+ return [nodes, matched, this.#pseudoElement];
2296
+ };
2297
+
2298
+ /**
2299
+ * Finds lineal nodes (self and ancestors).
2300
+ * @private
2301
+ * @param {Array} leaves - The AST leaves.
2302
+ * @param {object} opt - Options.
2303
+ * @returns {Array} An array containing [nodes, filtered].
2304
+ */
2305
+ _findLineal = (leaves, opt) => {
2306
+ const { complex } = opt;
2307
+ const nodes = [];
2308
+ const options = { warn: this.#warn };
2309
+ const selfMatched = this._matchLeaves(leaves, this.#node, options);
2310
+ if (selfMatched) {
2311
+ nodes.push(this.#node);
2312
+ }
2313
+ if (!selfMatched || complex) {
2314
+ let currentNode = this.#node.parentNode;
2315
+ while (currentNode) {
2316
+ if (this._matchLeaves(leaves, currentNode, options)) {
2317
+ nodes.push(currentNode);
2318
+ }
2319
+ currentNode = currentNode.parentNode;
2320
+ }
2321
+ }
2322
+ const filtered = nodes.length > 0;
2323
+ return [nodes, filtered];
2324
+ };
2325
+
2326
+ /**
2327
+ * Finds entry nodes for pseudo-element selectors.
2328
+ * @private
2329
+ * @param {object} leaf - The pseudo-element leaf from the AST.
2330
+ * @param {Array.<object>} filterLeaves - Leaves for compound selectors.
2331
+ * @param {string} targetType - The type of target to find.
2332
+ * @returns {object} The result { nodes, filtered, pending }.
2333
+ */
2334
+ _findEntryNodesForPseudoElement = (leaf, filterLeaves, targetType) => {
2335
+ let nodes = [];
2336
+ let filtered = false;
2337
+ if (targetType === TARGET_SELF && this.#check) {
2338
+ const css = generateCSS(leaf);
2339
+ this.#pseudoElement.push(css);
2340
+ if (filterLeaves.length) {
2341
+ [nodes, filtered] = this._matchSelf(filterLeaves, this.#check);
2342
+ } else {
2343
+ nodes.push(this.#node);
2344
+ filtered = true;
2345
+ }
2346
+ } else {
2347
+ matchPseudoElementSelector(leaf.name, leaf.type, { warn: this.#warn });
2348
+ }
2349
+ return { nodes, filtered, pending: false };
2350
+ };
2351
+
2352
+ /**
2353
+ * Finds entry nodes for ID selectors.
2354
+ * @private
2355
+ * @param {object} twig - The current twig from the AST branch.
2356
+ * @param {string} targetType - The type of target to find.
2357
+ * @param {object} opt - Additional options for finding nodes.
2358
+ * @returns {object} The result { nodes, filtered, pending }.
2359
+ */
2360
+ _findEntryNodesForId = (twig, targetType, opt) => {
2361
+ const { leaves } = twig;
2362
+ const [leaf, ...filterLeaves] = leaves;
2363
+ const { complex, precede } = opt;
2364
+ let nodes = [];
2365
+ let filtered = false;
2366
+ if (targetType === TARGET_SELF) {
2367
+ [nodes, filtered] = this._matchSelf(leaves);
2368
+ } else if (targetType === TARGET_LINEAL) {
2369
+ [nodes, filtered] = this._findLineal(leaves, { complex });
2370
+ } else if (
2371
+ targetType === TARGET_FIRST &&
2372
+ this.#root.nodeType !== ELEMENT_NODE
2373
+ ) {
2374
+ const node = this.#root.getElementById(leaf.name);
2375
+ if (node) {
2376
+ if (filterLeaves.length) {
2377
+ if (this._matchLeaves(filterLeaves, node, { warn: this.#warn })) {
2378
+ nodes.push(node);
2379
+ filtered = true;
2380
+ }
2381
+ } else {
2382
+ nodes.push(node);
2383
+ filtered = true;
2384
+ }
2385
+ }
2386
+ } else {
2387
+ nodes = this._findNodeWalker(leaves, this.#node, { precede, targetType });
2388
+ filtered = nodes.length > 0;
2389
+ }
2390
+ return { nodes, filtered, pending: false };
2391
+ };
2392
+
2393
+ /**
2394
+ * Finds entry nodes for class selectors.
2395
+ * @private
2396
+ * @param {Array.<object>} leaves - The AST leaves for the selector.
2397
+ * @param {string} targetType - The type of target to find.
2398
+ * @param {object} opt - Additional options for finding nodes.
2399
+ * @returns {object} The result { nodes, filtered, pending }.
2400
+ */
2401
+ _findEntryNodesForClass = (leaves, targetType, opt) => {
2402
+ const { complex, precede } = opt;
2403
+ let nodes = [];
2404
+ let filtered = false;
2405
+ if (targetType === TARGET_SELF) {
2406
+ [nodes, filtered] = this._matchSelf(leaves);
2407
+ } else if (targetType === TARGET_LINEAL) {
2408
+ [nodes, filtered] = this._findLineal(leaves, { complex });
2409
+ } else {
2410
+ nodes = this._findNodeWalker(leaves, this.#node, { precede, targetType });
2411
+ filtered = nodes.length > 0;
2412
+ }
2413
+ return { nodes, filtered, pending: false };
2414
+ };
2415
+
2416
+ /**
2417
+ * Finds entry nodes for type selectors.
2418
+ * @private
2419
+ * @param {Array.<object>} leaves - The AST leaves for the selector.
2420
+ * @param {string} targetType - The type of target to find.
2421
+ * @param {object} opt - Additional options for finding nodes.
2422
+ * @returns {object} The result { nodes, filtered, pending }.
2423
+ */
2424
+ _findEntryNodesForType = (leaves, targetType, opt) => {
2425
+ const { complex, precede } = opt;
2426
+ let nodes = [];
2427
+ let filtered = false;
2428
+ if (targetType === TARGET_SELF) {
2429
+ [nodes, filtered] = this._matchSelf(leaves);
2430
+ } else if (targetType === TARGET_LINEAL) {
2431
+ [nodes, filtered] = this._findLineal(leaves, { complex });
2432
+ } else {
2433
+ nodes = this._findNodeWalker(leaves, this.#node, { precede, targetType });
2434
+ filtered = nodes.length > 0;
2435
+ }
2436
+ return { nodes, filtered, pending: false };
2437
+ };
2438
+
2439
+ /**
2440
+ * Finds entry nodes for other selector types (default case).
2441
+ * @private
2442
+ * @param {object} twig - The current twig from the AST branch.
2443
+ * @param {string} targetType - The type of target to find.
2444
+ * @param {object} opt - Additional options for finding nodes.
2445
+ * @returns {object} The result { nodes, filtered, pending }.
2446
+ */
2447
+ _findEntryNodesForOther = (twig, targetType, opt) => {
2448
+ const { leaves } = twig;
2449
+ const [leaf, ...filterLeaves] = leaves;
2450
+ const { complex, precede } = opt;
2451
+ let nodes = [];
2452
+ let filtered = false;
2453
+ let pending = false;
2454
+ if (targetType !== TARGET_LINEAL && /host(?:-context)?/.test(leaf.name)) {
2455
+ let shadowRoot = null;
2456
+ if (this.#shadow && this.#node.nodeType === DOCUMENT_FRAGMENT_NODE) {
2457
+ shadowRoot = this._matchShadowHostPseudoClass(leaf, this.#node);
2458
+ } else if (filterLeaves.length && this.#node.nodeType === ELEMENT_NODE) {
2459
+ shadowRoot = this._matchShadowHostPseudoClass(
2460
+ leaf,
2461
+ this.#node.shadowRoot
2462
+ );
2463
+ }
2464
+ if (shadowRoot) {
2465
+ let bool = true;
2466
+ const l = filterLeaves.length;
2467
+ for (let i = 0; i < l; i++) {
2468
+ const filterLeaf = filterLeaves[i];
2469
+ switch (filterLeaf.name) {
2470
+ case 'host':
2471
+ case 'host-context': {
2472
+ const matchedNode = this._matchShadowHostPseudoClass(
2473
+ filterLeaf,
2474
+ shadowRoot
2475
+ );
2476
+ bool = matchedNode === shadowRoot;
2477
+ break;
2478
+ }
2479
+ case 'has': {
2480
+ bool = this._matchPseudoClassSelector(
2481
+ filterLeaf,
2482
+ shadowRoot,
2483
+ {}
2484
+ ).has(shadowRoot);
2485
+ break;
2486
+ }
2487
+ default: {
2488
+ bool = false;
2489
+ }
2490
+ }
2491
+ if (!bool) {
2492
+ break;
2493
+ }
2494
+ }
2495
+ if (bool) {
2496
+ nodes.push(shadowRoot);
2497
+ filtered = true;
2498
+ }
2499
+ }
2500
+ } else if (targetType === TARGET_SELF) {
2501
+ [nodes, filtered] = this._matchSelf(leaves);
2502
+ } else if (targetType === TARGET_LINEAL) {
2503
+ [nodes, filtered] = this._findLineal(leaves, { complex });
2504
+ } else if (targetType === TARGET_FIRST) {
2505
+ nodes = this._findNodeWalker(leaves, this.#node, { precede, targetType });
2506
+ filtered = nodes.length > 0;
2507
+ } else {
2508
+ pending = true;
2509
+ }
2510
+ return { nodes, filtered, pending };
2511
+ };
2512
+
2513
+ /**
2514
+ * Finds entry nodes.
2515
+ * @private
2516
+ * @param {object} twig - The twig object.
2517
+ * @param {string} targetType - The target type.
2518
+ * @param {object} [opt] - Options.
2519
+ * @param {boolean} [opt.complex] - If true, the selector is complex.
2520
+ * @param {string} [opt.dir] - The find direction.
2521
+ * @returns {object} An object with nodes and their state.
2522
+ */
2523
+ _findEntryNodes = (twig, targetType, opt = {}) => {
2524
+ const { leaves } = twig;
2525
+ const [leaf, ...filterLeaves] = leaves;
2526
+ const { complex = false, dir = DIR_PREV } = opt;
2527
+ const precede =
2528
+ dir === DIR_NEXT &&
2529
+ this.#node.nodeType === ELEMENT_NODE &&
2530
+ this.#node !== this.#root;
2531
+ let result;
2532
+ switch (leaf.type) {
2533
+ case PS_ELEMENT_SELECTOR: {
2534
+ result = this._findEntryNodesForPseudoElement(
2535
+ leaf,
2536
+ filterLeaves,
2537
+ targetType
2538
+ );
2539
+ break;
2540
+ }
2541
+ case ID_SELECTOR: {
2542
+ result = this._findEntryNodesForId(twig, targetType, {
2543
+ complex,
2544
+ precede
2545
+ });
2546
+ break;
2547
+ }
2548
+ case CLASS_SELECTOR: {
2549
+ result = this._findEntryNodesForClass(leaves, targetType, {
2550
+ complex,
2551
+ precede
2552
+ });
2553
+ break;
2554
+ }
2555
+ case TYPE_SELECTOR: {
2556
+ result = this._findEntryNodesForType(leaves, targetType, {
2557
+ complex,
2558
+ precede
2559
+ });
2560
+ break;
2561
+ }
2562
+ default: {
2563
+ result = this._findEntryNodesForOther(twig, targetType, {
2564
+ complex,
2565
+ precede
2566
+ });
2567
+ }
2568
+ }
2569
+ return {
2570
+ compound: filterLeaves.length > 0,
2571
+ filtered: result.filtered,
2572
+ nodes: result.nodes,
2573
+ pending: result.pending
2574
+ };
2575
+ };
2576
+
2577
+ /**
2578
+ * Determines the direction and starting twig for a selector branch.
2579
+ * @private
2580
+ * @param {Array.<object>} branch - The AST branch.
2581
+ * @param {string} targetType - The type of target to find.
2582
+ * @returns {object} An object with the direction and starting twig.
2583
+ */
2584
+ _determineTraversalStrategy = (branch, targetType) => {
2585
+ const branchLen = branch.length;
2586
+ const firstTwig = branch[0];
2587
+ const lastTwig = branch[branchLen - 1];
2588
+ if (branchLen === 1) {
2589
+ return { dir: DIR_PREV, twig: firstTwig };
2590
+ }
2591
+ // Complex selector (branchLen > 1).
2592
+ const {
2593
+ leaves: [{ name: firstName, type: firstType }]
2594
+ } = firstTwig;
2595
+ const {
2596
+ leaves: [{ name: lastName, type: lastType }]
2597
+ } = lastTwig;
2598
+ const { combo: firstCombo } = firstTwig;
2599
+ if (
2600
+ this.#selector.includes(':scope') ||
2601
+ lastType === PS_ELEMENT_SELECTOR ||
2602
+ lastType === ID_SELECTOR
2603
+ ) {
2604
+ return { dir: DIR_PREV, twig: lastTwig };
2605
+ }
2606
+ if (firstType === ID_SELECTOR) {
2607
+ return { dir: DIR_NEXT, twig: firstTwig };
2608
+ }
2609
+ if (firstName === '*' && firstType === TYPE_SELECTOR) {
2610
+ return { dir: DIR_PREV, twig: lastTwig };
2611
+ }
2612
+ if (lastName === '*' && lastType === TYPE_SELECTOR) {
2613
+ return { dir: DIR_NEXT, twig: firstTwig };
2614
+ }
2615
+ if (branchLen === 2) {
2616
+ if (targetType === TARGET_FIRST) {
2617
+ return { dir: DIR_PREV, twig: lastTwig };
2618
+ }
2619
+ const { name: comboName } = firstCombo;
2620
+ if (comboName === '+' || comboName === '~') {
2621
+ return { dir: DIR_PREV, twig: lastTwig };
2622
+ }
2623
+ }
2624
+ // Default strategy for complex selectors.
2625
+ return { dir: DIR_NEXT, twig: firstTwig };
2626
+ };
2627
+
2628
+ /**
2629
+ * Processes pending items not resolved with a direct strategy.
2630
+ * @private
2631
+ * @param {Set.<Map>} pendingItems - The set of pending items.
2632
+ */
2633
+ _processPendingItems = pendingItems => {
2634
+ if (!pendingItems.size) {
2635
+ return;
2636
+ }
2637
+ if (!this.#rootWalker) {
2638
+ this.#rootWalker = this._createTreeWalker(this.#root);
2639
+ }
2640
+ const isScopedContext =
2641
+ this.#node !== this.#root && this.#node.nodeType === ELEMENT_NODE;
2642
+ const walker = this.#rootWalker;
2643
+ let node = this.#root;
2644
+ if (isScopedContext) {
2645
+ node = this.#node;
2646
+ }
2647
+ let nextNode = traverseNode(node, walker);
2648
+ while (nextNode) {
2649
+ const isWithinScope =
2650
+ this.#node.nodeType !== ELEMENT_NODE ||
2651
+ nextNode === this.#node ||
2652
+ this.#node.contains(nextNode);
2653
+ if (isWithinScope) {
2654
+ for (const pendingItem of pendingItems) {
2655
+ const { leaves } = pendingItem.get('twig');
2656
+ if (this._matchLeaves(leaves, nextNode, { warn: this.#warn })) {
2657
+ const index = pendingItem.get('index');
2658
+ this.#ast[index].filtered = true;
2659
+ this.#ast[index].find = true;
2660
+ this.#nodes[index].push(nextNode);
2661
+ }
2662
+ }
2663
+ } else if (isScopedContext) {
2664
+ break;
2665
+ }
2666
+ nextNode = walker.nextNode();
2667
+ }
2668
+ };
2669
+
2670
+ /**
2671
+ * Collects nodes.
2672
+ * @private
2673
+ * @param {string} targetType - The target type.
2674
+ * @returns {Array.<Array.<object>>} An array containing the AST and nodes.
2675
+ */
2676
+ _collectNodes = targetType => {
2677
+ const ast = this.#ast.values();
2678
+ if (targetType === TARGET_ALL || targetType === TARGET_FIRST) {
2679
+ const pendingItems = new Set();
2680
+ let i = 0;
2681
+ for (const { branch } of ast) {
2682
+ const complex = branch.length > 1;
2683
+ const { dir, twig } = this._determineTraversalStrategy(
2684
+ branch,
2685
+ targetType
2686
+ );
2687
+ const { compound, filtered, nodes, pending } = this._findEntryNodes(
2688
+ twig,
2689
+ targetType,
2690
+ { complex, dir }
2691
+ );
2692
+ if (nodes.length) {
2693
+ this.#ast[i].find = true;
2694
+ this.#nodes[i] = nodes;
2695
+ } else if (pending) {
2696
+ pendingItems.add(
2697
+ new Map([
2698
+ ['index', i],
2699
+ ['twig', twig]
2700
+ ])
2701
+ );
2702
+ }
2703
+ this.#ast[i].dir = dir;
2704
+ this.#ast[i].filtered = filtered || !compound;
2705
+ i++;
2706
+ }
2707
+ this._processPendingItems(pendingItems);
2708
+ } else {
2709
+ let i = 0;
2710
+ for (const { branch } of ast) {
2711
+ const twig = branch[branch.length - 1];
2712
+ const complex = branch.length > 1;
2713
+ const dir = DIR_PREV;
2714
+ const { compound, filtered, nodes } = this._findEntryNodes(
2715
+ twig,
2716
+ targetType,
2717
+ { complex, dir }
2718
+ );
2719
+ if (nodes.length) {
2720
+ this.#ast[i].find = true;
2721
+ this.#nodes[i] = nodes;
2722
+ }
2723
+ this.#ast[i].dir = dir;
2724
+ this.#ast[i].filtered = filtered || !compound;
2725
+ i++;
2726
+ }
2727
+ }
2728
+ return [this.#ast, this.#nodes];
2729
+ };
2730
+
2731
+ /**
2732
+ * Gets combined nodes.
2733
+ * @private
2734
+ * @param {object} twig - The twig object.
2735
+ * @param {object} nodes - A collection of nodes.
2736
+ * @param {string} dir - The direction.
2737
+ * @returns {Array.<object>} A collection of matched nodes.
2738
+ */
2739
+ _getCombinedNodes = (twig, nodes, dir) => {
2740
+ const arr = [];
2741
+ const options = {
2742
+ dir,
2743
+ warn: this.#warn
2744
+ };
2745
+ for (const node of nodes) {
2746
+ const matched = this._matchCombinator(twig, node, options);
2747
+ if (matched.size) {
2748
+ arr.push(...matched);
2749
+ }
2750
+ }
2751
+ return arr;
2752
+ };
2753
+
2754
+ /**
2755
+ * Matches a node in the 'next' direction.
2756
+ * @private
2757
+ * @param {Array} branch - The branch.
2758
+ * @param {Set.<object>} nodes - A collection of Element nodes.
2759
+ * @param {object} opt - Options.
2760
+ * @param {object} opt.combo - The combo object.
2761
+ * @param {number} opt.index - The index.
2762
+ * @returns {?object} The matched node.
2763
+ */
2764
+ _matchNodeNext = (branch, nodes, opt) => {
2765
+ const { combo, index } = opt;
2766
+ const { combo: nextCombo, leaves } = branch[index];
2767
+ const twig = {
2768
+ combo,
2769
+ leaves
2770
+ };
2771
+ const nextNodes = new Set(this._getCombinedNodes(twig, nodes, DIR_NEXT));
2772
+ if (nextNodes.size) {
2773
+ if (index === branch.length - 1) {
2774
+ const [nextNode] = sortNodes(nextNodes);
2775
+ return nextNode;
2776
+ }
2777
+ return this._matchNodeNext(branch, nextNodes, {
2778
+ combo: nextCombo,
2779
+ index: index + 1
2780
+ });
2781
+ }
2782
+ return null;
2783
+ };
2784
+
2785
+ /**
2786
+ * Matches a node in the 'previous' direction.
2787
+ * @private
2788
+ * @param {Array} branch - The branch.
2789
+ * @param {object} node - The Element node.
2790
+ * @param {object} opt - Options.
2791
+ * @param {number} opt.index - The index.
2792
+ * @returns {?object} The node.
2793
+ */
2794
+ _matchNodePrev = (branch, node, opt) => {
2795
+ const { index } = opt;
2796
+ const twig = branch[index];
2797
+ const nodes = new Set([node]);
2798
+ const nextNodes = new Set(this._getCombinedNodes(twig, nodes, DIR_PREV));
2799
+ if (nextNodes.size) {
2800
+ if (index === 0) {
2801
+ return node;
2802
+ }
2803
+ let matched;
2804
+ for (const nextNode of nextNodes) {
2805
+ matched = this._matchNodePrev(branch, nextNode, {
2806
+ index: index - 1
2807
+ });
2808
+ if (matched) {
2809
+ break;
2810
+ }
2811
+ }
2812
+ if (matched) {
2813
+ return node;
2814
+ }
2815
+ }
2816
+ return null;
2817
+ };
2818
+
2819
+ /**
2820
+ * Processes a complex selector branch to find all matching nodes.
2821
+ * @private
2822
+ * @param {Array} branch - The selector branch from the AST.
2823
+ * @param {Array} entryNodes - The initial set of nodes to start from.
2824
+ * @param {string} dir - The direction of traversal ('next' or 'prev').
2825
+ * @returns {Set.<object>} A set of all matched nodes.
2826
+ */
2827
+ _processComplexBranchAll = (branch, entryNodes, dir) => {
2828
+ const matchedNodes = new Set();
2829
+ const branchLen = branch.length;
2830
+ const lastIndex = branchLen - 1;
2831
+
2832
+ if (dir === DIR_NEXT) {
2833
+ const { combo: firstCombo } = branch[0];
2834
+ for (const node of entryNodes) {
2835
+ let combo = firstCombo;
2836
+ let nextNodes = new Set([node]);
2837
+ for (let j = 1; j < branchLen; j++) {
2838
+ const { combo: nextCombo, leaves } = branch[j];
2839
+ const twig = { combo, leaves };
2840
+ const nodesArr = this._getCombinedNodes(twig, nextNodes, dir);
2841
+ if (nodesArr.length) {
2842
+ if (j === lastIndex) {
2843
+ for (const nextNode of nodesArr) {
2844
+ matchedNodes.add(nextNode);
2845
+ }
2846
+ }
2847
+ combo = nextCombo;
2848
+ nextNodes = new Set(nodesArr);
2849
+ } else {
2850
+ // No further matches down this path.
2851
+ nextNodes.clear();
2852
+ break;
2853
+ }
2854
+ }
2855
+ }
2856
+ // DIR_PREV
2857
+ } else {
2858
+ for (const node of entryNodes) {
2859
+ let nextNodes = new Set([node]);
2860
+ for (let j = lastIndex - 1; j >= 0; j--) {
2861
+ const twig = branch[j];
2862
+ const nodesArr = this._getCombinedNodes(twig, nextNodes, dir);
2863
+ if (nodesArr.length) {
2864
+ // The entry node is the final match
2865
+ if (j === 0) {
2866
+ matchedNodes.add(node);
2867
+ }
2868
+ nextNodes = new Set(nodesArr);
2869
+ } else {
2870
+ // No further matches down this path.
2871
+ nextNodes.clear();
2872
+ break;
2873
+ }
2874
+ }
2875
+ }
2876
+ }
2877
+ return matchedNodes;
2878
+ };
2879
+
2880
+ /**
2881
+ * Find a node contained by this.#node.
2882
+ * @private
2883
+ * @param {Array} nodesArr - The set of nodes to find from.
2884
+ * @returns {?object} The matched node, or null.
2885
+ */
2886
+ _findChildNodeContainedByNode = nodesArr => {
2887
+ let matchedNode = null;
2888
+ if (Array.isArray(nodesArr)) {
2889
+ const l = nodesArr.length;
2890
+ for (let i = 0; i < l; i++) {
2891
+ const node = nodesArr[i];
2892
+ if (this.#node.contains(node)) {
2893
+ matchedNode = node;
2894
+ break;
2895
+ }
2896
+ }
2897
+ }
2898
+ return matchedNode;
2899
+ };
2900
+
2901
+ /**
2902
+ * Processes a complex selector branch to find the first matching node.
2903
+ * @private
2904
+ * @param {Array} branch - The selector branch from the AST.
2905
+ * @param {Array} entryNodes - The initial set of nodes to start from.
2906
+ * @param {string} dir - The direction of traversal ('next' or 'prev').
2907
+ * @param {string} targetType - The type of search (e.g., 'first').
2908
+ * @returns {?object} The first matched node, or null.
2909
+ */
2910
+ _processComplexBranchFirst = (branch, entryNodes, dir, targetType) => {
2911
+ const branchLen = branch.length;
2912
+ const lastIndex = branchLen - 1;
2913
+ // DIR_NEXT logic for finding the first match.
2914
+ if (dir === DIR_NEXT) {
2915
+ const { combo: entryCombo } = branch[0];
2916
+ for (const node of entryNodes) {
2917
+ const matchedNode = this._matchNodeNext(branch, new Set([node]), {
2918
+ combo: entryCombo,
2919
+ index: 1
2920
+ });
2921
+ if (matchedNode) {
2922
+ if (this.#node.nodeType === ELEMENT_NODE) {
2923
+ if (
2924
+ matchedNode !== this.#node &&
2925
+ this.#node.contains(matchedNode)
2926
+ ) {
2927
+ return matchedNode;
2928
+ }
2929
+ } else {
2930
+ return matchedNode;
2931
+ }
2932
+ }
2933
+ }
2934
+ // Fallback logic if no direct match found.
2935
+ const { leaves: entryLeaves } = branch[0];
2936
+ const [entryNode] = entryNodes;
2937
+ if (this.#node.contains(entryNode)) {
2938
+ let [refNode] = this._findNodeWalker(entryLeaves, entryNode, {
2939
+ targetType
2940
+ });
2941
+ while (refNode) {
2942
+ const matchedNode = this._matchNodeNext(branch, new Set([refNode]), {
2943
+ combo: entryCombo,
2944
+ index: 1
2945
+ });
2946
+ if (matchedNode) {
2947
+ if (this.#node.nodeType === ELEMENT_NODE) {
2948
+ if (
2949
+ matchedNode !== this.#node &&
2950
+ this.#node.contains(matchedNode)
2951
+ ) {
2952
+ return matchedNode;
2953
+ }
2954
+ } else {
2955
+ return matchedNode;
2956
+ }
2957
+ }
2958
+ [refNode] = this._findNodeWalker(entryLeaves, refNode, {
2959
+ targetType,
2960
+ force: true
2961
+ });
2962
+ }
2963
+ } else {
2964
+ const { combo: firstCombo } = branch[0];
2965
+ let combo = firstCombo;
2966
+ let nextNodes = new Set([entryNode]);
2967
+ for (let j = 1; j < branchLen; j++) {
2968
+ const { combo: nextCombo, leaves } = branch[j];
2969
+ const twig = { combo, leaves };
2970
+ const nodesArr = this._getCombinedNodes(twig, nextNodes, dir);
2971
+ if (nodesArr.length) {
2972
+ if (j === lastIndex) {
2973
+ return this._findChildNodeContainedByNode(nodesArr);
2974
+ }
2975
+ combo = nextCombo;
2976
+ nextNodes = new Set(nodesArr);
2977
+ } else {
2978
+ break;
2979
+ }
2980
+ }
2981
+ }
2982
+ // DIR_PREV logic for finding the first match.
2983
+ } else {
2984
+ for (const node of entryNodes) {
2985
+ const matchedNode = this._matchNodePrev(branch, node, {
2986
+ index: lastIndex - 1
2987
+ });
2988
+ if (matchedNode) {
2989
+ return matchedNode;
2990
+ }
2991
+ }
2992
+ // Fallback for TARGET_FIRST.
2993
+ if (targetType === TARGET_FIRST) {
2994
+ const { leaves: entryLeaves } = branch[lastIndex];
2995
+ const [entryNode] = entryNodes;
2996
+ let [refNode] = this._findNodeWalker(entryLeaves, entryNode, {
2997
+ targetType
2998
+ });
2999
+ while (refNode) {
3000
+ const matchedNode = this._matchNodePrev(branch, refNode, {
3001
+ index: lastIndex - 1
3002
+ });
3003
+ if (matchedNode) {
3004
+ return refNode;
3005
+ }
3006
+ [refNode] = this._findNodeWalker(entryLeaves, refNode, {
3007
+ targetType,
3008
+ force: true
3009
+ });
3010
+ }
3011
+ }
3012
+ }
3013
+ return null;
3014
+ };
3015
+
3016
+ /**
3017
+ * Finds matched nodes.
3018
+ * @param {string} targetType - The target type.
3019
+ * @returns {Set.<object>} A collection of matched nodes.
3020
+ */
3021
+ find = targetType => {
3022
+ const [[...branches], collectedNodes] = this._collectNodes(targetType);
3023
+ const l = branches.length;
3024
+ let sort = false;
3025
+ let nodes = new Set();
3026
+ for (let i = 0; i < l; i++) {
3027
+ const { branch, dir, find } = branches[i];
3028
+ if (!branch.length || !find) {
3029
+ continue;
3030
+ }
3031
+ const entryNodes = collectedNodes[i];
3032
+ const lastIndex = branch.length - 1;
3033
+ // Handle simple selectors (no combinators).
3034
+ if (lastIndex === 0) {
3035
+ if (
3036
+ (targetType === TARGET_ALL || targetType === TARGET_FIRST) &&
3037
+ this.#node.nodeType === ELEMENT_NODE
3038
+ ) {
3039
+ for (const node of entryNodes) {
3040
+ if (node !== this.#node && this.#node.contains(node)) {
3041
+ nodes.add(node);
3042
+ if (targetType === TARGET_FIRST) {
3043
+ break;
3044
+ }
3045
+ }
3046
+ }
3047
+ } else if (targetType === TARGET_ALL) {
3048
+ if (nodes.size) {
3049
+ for (const node of entryNodes) {
3050
+ nodes.add(node);
3051
+ }
3052
+ sort = true;
3053
+ } else {
3054
+ nodes = new Set(entryNodes);
3055
+ }
3056
+ } else {
3057
+ if (entryNodes.length) {
3058
+ nodes.add(entryNodes[0]);
3059
+ }
3060
+ }
3061
+ // Handle complex selectors.
3062
+ } else {
3063
+ if (targetType === TARGET_ALL) {
3064
+ const newNodes = this._processComplexBranchAll(
3065
+ branch,
3066
+ entryNodes,
3067
+ dir
3068
+ );
3069
+ if (nodes.size) {
3070
+ for (const newNode of newNodes) {
3071
+ nodes.add(newNode);
3072
+ }
3073
+ sort = true;
3074
+ } else {
3075
+ nodes = newNodes;
3076
+ }
3077
+ } else {
3078
+ const matchedNode = this._processComplexBranchFirst(
3079
+ branch,
3080
+ entryNodes,
3081
+ dir,
3082
+ targetType
3083
+ );
3084
+ if (matchedNode) {
3085
+ nodes.add(matchedNode);
3086
+ }
3087
+ }
3088
+ }
3089
+ }
3090
+ if (this.#check) {
3091
+ const match = !!nodes.size;
3092
+ let pseudoElement;
3093
+ if (this.#pseudoElement.length) {
3094
+ pseudoElement = this.#pseudoElement.join('');
3095
+ } else {
3096
+ pseudoElement = null;
3097
+ }
3098
+ return { match, pseudoElement };
3099
+ }
3100
+ if (targetType === TARGET_FIRST || targetType === TARGET_ALL) {
3101
+ nodes.delete(this.#node);
3102
+ }
3103
+ if ((sort || targetType === TARGET_FIRST) && nodes.size > 1) {
3104
+ return new Set(sortNodes(nodes));
3105
+ }
3106
+ return nodes;
3107
+ };
3108
+ }