@dooboostore/dom-parser 1.0.0

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 (519) hide show
  1. package/README.MD +280 -0
  2. package/dist/cjs/DomParser.js +360 -0
  3. package/dist/cjs/DomParser.js.map +7 -0
  4. package/dist/cjs/factory/ElementFactory.js +76 -0
  5. package/dist/cjs/factory/ElementFactory.js.map +7 -0
  6. package/dist/cjs/factory/index.js +24 -0
  7. package/dist/cjs/factory/index.js.map +7 -0
  8. package/dist/cjs/index.js +34 -0
  9. package/dist/cjs/index.js.map +7 -0
  10. package/dist/cjs/node/CharacterData.js +16 -0
  11. package/dist/cjs/node/CharacterData.js.map +7 -0
  12. package/dist/cjs/node/ChildNode.js +16 -0
  13. package/dist/cjs/node/ChildNode.js.map +7 -0
  14. package/dist/cjs/node/ChildNodeBase.js +62 -0
  15. package/dist/cjs/node/ChildNodeBase.js.map +7 -0
  16. package/dist/cjs/node/Comment.js +86 -0
  17. package/dist/cjs/node/Comment.js.map +7 -0
  18. package/dist/cjs/node/Document.js +28 -0
  19. package/dist/cjs/node/Document.js.map +7 -0
  20. package/dist/cjs/node/DocumentBase.js +378 -0
  21. package/dist/cjs/node/DocumentBase.js.map +7 -0
  22. package/dist/cjs/node/DocumentFragment.js +16 -0
  23. package/dist/cjs/node/DocumentFragment.js.map +7 -0
  24. package/dist/cjs/node/DocumentFragmentBase.js +88 -0
  25. package/dist/cjs/node/DocumentFragmentBase.js.map +7 -0
  26. package/dist/cjs/node/GetRootNodeOptions.js +16 -0
  27. package/dist/cjs/node/GetRootNodeOptions.js.map +7 -0
  28. package/dist/cjs/node/Node.js +58 -0
  29. package/dist/cjs/node/Node.js.map +7 -0
  30. package/dist/cjs/node/NodeBase.js +380 -0
  31. package/dist/cjs/node/NodeBase.js.map +7 -0
  32. package/dist/cjs/node/NodeIterator.js +163 -0
  33. package/dist/cjs/node/NodeIterator.js.map +7 -0
  34. package/dist/cjs/node/ParentNode.js +16 -0
  35. package/dist/cjs/node/ParentNode.js.map +7 -0
  36. package/dist/cjs/node/ParentNodeBase.js +134 -0
  37. package/dist/cjs/node/ParentNodeBase.js.map +7 -0
  38. package/dist/cjs/node/Text.js +16 -0
  39. package/dist/cjs/node/Text.js.map +7 -0
  40. package/dist/cjs/node/TextBase.js +106 -0
  41. package/dist/cjs/node/TextBase.js.map +7 -0
  42. package/dist/cjs/node/collection/HTMLCollection.js +105 -0
  43. package/dist/cjs/node/collection/HTMLCollection.js.map +7 -0
  44. package/dist/cjs/node/collection/HTMLCollectionOf.js +36 -0
  45. package/dist/cjs/node/collection/HTMLCollectionOf.js.map +7 -0
  46. package/dist/cjs/node/collection/NodeList.js +135 -0
  47. package/dist/cjs/node/collection/NodeList.js.map +7 -0
  48. package/dist/cjs/node/collection/NodeListOf.js +38 -0
  49. package/dist/cjs/node/collection/NodeListOf.js.map +7 -0
  50. package/dist/cjs/node/collection/index.js +30 -0
  51. package/dist/cjs/node/collection/index.js.map +7 -0
  52. package/dist/cjs/node/elements/Element.js +16 -0
  53. package/dist/cjs/node/elements/Element.js.map +7 -0
  54. package/dist/cjs/node/elements/ElementBase.js +936 -0
  55. package/dist/cjs/node/elements/ElementBase.js.map +7 -0
  56. package/dist/cjs/node/elements/HTMLAnchorElement.js +71 -0
  57. package/dist/cjs/node/elements/HTMLAnchorElement.js.map +7 -0
  58. package/dist/cjs/node/elements/HTMLAreaElement.js +77 -0
  59. package/dist/cjs/node/elements/HTMLAreaElement.js.map +7 -0
  60. package/dist/cjs/node/elements/HTMLBaseElement.js +77 -0
  61. package/dist/cjs/node/elements/HTMLBaseElement.js.map +7 -0
  62. package/dist/cjs/node/elements/HTMLBodyElement.js +29 -0
  63. package/dist/cjs/node/elements/HTMLBodyElement.js.map +7 -0
  64. package/dist/cjs/node/elements/HTMLButtonElement.js +89 -0
  65. package/dist/cjs/node/elements/HTMLButtonElement.js.map +7 -0
  66. package/dist/cjs/node/elements/HTMLCanvasElement.js +79 -0
  67. package/dist/cjs/node/elements/HTMLCanvasElement.js.map +7 -0
  68. package/dist/cjs/node/elements/HTMLCaptionElement.js +41 -0
  69. package/dist/cjs/node/elements/HTMLCaptionElement.js.map +7 -0
  70. package/dist/cjs/node/elements/HTMLDivElement.js +29 -0
  71. package/dist/cjs/node/elements/HTMLDivElement.js.map +7 -0
  72. package/dist/cjs/node/elements/HTMLElement.js +16 -0
  73. package/dist/cjs/node/elements/HTMLElement.js.map +7 -0
  74. package/dist/cjs/node/elements/HTMLElementBase.js +182 -0
  75. package/dist/cjs/node/elements/HTMLElementBase.js.map +7 -0
  76. package/dist/cjs/node/elements/HTMLEmbedElement.js +45 -0
  77. package/dist/cjs/node/elements/HTMLEmbedElement.js.map +7 -0
  78. package/dist/cjs/node/elements/HTMLFormElement.js +127 -0
  79. package/dist/cjs/node/elements/HTMLFormElement.js.map +7 -0
  80. package/dist/cjs/node/elements/HTMLGenericElement.js +32 -0
  81. package/dist/cjs/node/elements/HTMLGenericElement.js.map +7 -0
  82. package/dist/cjs/node/elements/HTMLH1Element.js +29 -0
  83. package/dist/cjs/node/elements/HTMLH1Element.js.map +7 -0
  84. package/dist/cjs/node/elements/HTMLHeadElement.js +29 -0
  85. package/dist/cjs/node/elements/HTMLHeadElement.js.map +7 -0
  86. package/dist/cjs/node/elements/HTMLHtmlElement.js +92 -0
  87. package/dist/cjs/node/elements/HTMLHtmlElement.js.map +7 -0
  88. package/dist/cjs/node/elements/HTMLImgElement.js +99 -0
  89. package/dist/cjs/node/elements/HTMLImgElement.js.map +7 -0
  90. package/dist/cjs/node/elements/HTMLInputElement.js +157 -0
  91. package/dist/cjs/node/elements/HTMLInputElement.js.map +7 -0
  92. package/dist/cjs/node/elements/HTMLLIElement.js +57 -0
  93. package/dist/cjs/node/elements/HTMLLIElement.js.map +7 -0
  94. package/dist/cjs/node/elements/HTMLLinkElement.js +99 -0
  95. package/dist/cjs/node/elements/HTMLLinkElement.js.map +7 -0
  96. package/dist/cjs/node/elements/HTMLMetaElement.js +29 -0
  97. package/dist/cjs/node/elements/HTMLMetaElement.js.map +7 -0
  98. package/dist/cjs/node/elements/HTMLOListElement.js +89 -0
  99. package/dist/cjs/node/elements/HTMLOListElement.js.map +7 -0
  100. package/dist/cjs/node/elements/HTMLPElement.js +29 -0
  101. package/dist/cjs/node/elements/HTMLPElement.js.map +7 -0
  102. package/dist/cjs/node/elements/HTMLScriptElement.js +127 -0
  103. package/dist/cjs/node/elements/HTMLScriptElement.js.map +7 -0
  104. package/dist/cjs/node/elements/HTMLSpanElement.js +29 -0
  105. package/dist/cjs/node/elements/HTMLSpanElement.js.map +7 -0
  106. package/dist/cjs/node/elements/HTMLStyleElement.js +71 -0
  107. package/dist/cjs/node/elements/HTMLStyleElement.js.map +7 -0
  108. package/dist/cjs/node/elements/HTMLTableElement.js +112 -0
  109. package/dist/cjs/node/elements/HTMLTableElement.js.map +7 -0
  110. package/dist/cjs/node/elements/HTMLTbodyElement.js +54 -0
  111. package/dist/cjs/node/elements/HTMLTbodyElement.js.map +7 -0
  112. package/dist/cjs/node/elements/HTMLTdElement.js +72 -0
  113. package/dist/cjs/node/elements/HTMLTdElement.js.map +7 -0
  114. package/dist/cjs/node/elements/HTMLTemplateElement.js +97 -0
  115. package/dist/cjs/node/elements/HTMLTemplateElement.js.map +7 -0
  116. package/dist/cjs/node/elements/HTMLTfootElement.js +56 -0
  117. package/dist/cjs/node/elements/HTMLTfootElement.js.map +7 -0
  118. package/dist/cjs/node/elements/HTMLThElement.js +72 -0
  119. package/dist/cjs/node/elements/HTMLThElement.js.map +7 -0
  120. package/dist/cjs/node/elements/HTMLTheadElement.js +54 -0
  121. package/dist/cjs/node/elements/HTMLTheadElement.js.map +7 -0
  122. package/dist/cjs/node/elements/HTMLTitleElement.js +38 -0
  123. package/dist/cjs/node/elements/HTMLTitleElement.js.map +7 -0
  124. package/dist/cjs/node/elements/HTMLTrElement.js +77 -0
  125. package/dist/cjs/node/elements/HTMLTrElement.js.map +7 -0
  126. package/dist/cjs/node/elements/HTMLUListElement.js +29 -0
  127. package/dist/cjs/node/elements/HTMLUListElement.js.map +7 -0
  128. package/dist/cjs/node/elements/MathMLElement.js +32 -0
  129. package/dist/cjs/node/elements/MathMLElement.js.map +7 -0
  130. package/dist/cjs/node/elements/SVGCircleElement.js +69 -0
  131. package/dist/cjs/node/elements/SVGCircleElement.js.map +7 -0
  132. package/dist/cjs/node/elements/SVGElement.js +32 -0
  133. package/dist/cjs/node/elements/SVGElement.js.map +7 -0
  134. package/dist/cjs/node/elements/SVGRectElement.js +80 -0
  135. package/dist/cjs/node/elements/SVGRectElement.js.map +7 -0
  136. package/dist/cjs/node/elements/index.js +183 -0
  137. package/dist/cjs/node/elements/index.js.map +7 -0
  138. package/dist/cjs/node/index.js +73 -0
  139. package/dist/cjs/node/index.js.map +7 -0
  140. package/dist/cjs/package.json +5 -0
  141. package/dist/cjs/utils/CSSSelector.js +271 -0
  142. package/dist/cjs/utils/CSSSelector.js.map +7 -0
  143. package/dist/cjs/window/Window.js +16 -0
  144. package/dist/cjs/window/Window.js.map +7 -0
  145. package/dist/cjs/window/WindowBase.js +847 -0
  146. package/dist/cjs/window/WindowBase.js.map +7 -0
  147. package/dist/cjs/window/index.js +29 -0
  148. package/dist/cjs/window/index.js.map +7 -0
  149. package/dist/esm/DomParser.js +341 -0
  150. package/dist/esm/DomParser.js.map +7 -0
  151. package/dist/esm/factory/ElementFactory.js +57 -0
  152. package/dist/esm/factory/ElementFactory.js.map +7 -0
  153. package/dist/esm/factory/index.js +5 -0
  154. package/dist/esm/factory/index.js.map +7 -0
  155. package/dist/esm/index.js +15 -0
  156. package/dist/esm/index.js.map +7 -0
  157. package/dist/esm/node/CharacterData.js +1 -0
  158. package/dist/esm/node/CharacterData.js.map +7 -0
  159. package/dist/esm/node/ChildNode.js +1 -0
  160. package/dist/esm/node/ChildNode.js.map +7 -0
  161. package/dist/esm/node/ChildNodeBase.js +43 -0
  162. package/dist/esm/node/ChildNodeBase.js.map +7 -0
  163. package/dist/esm/node/Comment.js +67 -0
  164. package/dist/esm/node/Comment.js.map +7 -0
  165. package/dist/esm/node/Document.js +9 -0
  166. package/dist/esm/node/Document.js.map +7 -0
  167. package/dist/esm/node/DocumentBase.js +359 -0
  168. package/dist/esm/node/DocumentBase.js.map +7 -0
  169. package/dist/esm/node/DocumentFragment.js +1 -0
  170. package/dist/esm/node/DocumentFragment.js.map +7 -0
  171. package/dist/esm/node/DocumentFragmentBase.js +69 -0
  172. package/dist/esm/node/DocumentFragmentBase.js.map +7 -0
  173. package/dist/esm/node/GetRootNodeOptions.js +1 -0
  174. package/dist/esm/node/GetRootNodeOptions.js.map +7 -0
  175. package/dist/esm/node/Node.js +39 -0
  176. package/dist/esm/node/Node.js.map +7 -0
  177. package/dist/esm/node/NodeBase.js +380 -0
  178. package/dist/esm/node/NodeBase.js.map +7 -0
  179. package/dist/esm/node/NodeIterator.js +144 -0
  180. package/dist/esm/node/NodeIterator.js.map +7 -0
  181. package/dist/esm/node/ParentNode.js +1 -0
  182. package/dist/esm/node/ParentNode.js.map +7 -0
  183. package/dist/esm/node/ParentNodeBase.js +115 -0
  184. package/dist/esm/node/ParentNodeBase.js.map +7 -0
  185. package/dist/esm/node/Text.js +1 -0
  186. package/dist/esm/node/Text.js.map +7 -0
  187. package/dist/esm/node/TextBase.js +87 -0
  188. package/dist/esm/node/TextBase.js.map +7 -0
  189. package/dist/esm/node/collection/HTMLCollection.js +86 -0
  190. package/dist/esm/node/collection/HTMLCollection.js.map +7 -0
  191. package/dist/esm/node/collection/HTMLCollectionOf.js +17 -0
  192. package/dist/esm/node/collection/HTMLCollectionOf.js.map +7 -0
  193. package/dist/esm/node/collection/NodeList.js +116 -0
  194. package/dist/esm/node/collection/NodeList.js.map +7 -0
  195. package/dist/esm/node/collection/NodeListOf.js +19 -0
  196. package/dist/esm/node/collection/NodeListOf.js.map +7 -0
  197. package/dist/esm/node/collection/index.js +11 -0
  198. package/dist/esm/node/collection/index.js.map +7 -0
  199. package/dist/esm/node/elements/Element.js +1 -0
  200. package/dist/esm/node/elements/Element.js.map +7 -0
  201. package/dist/esm/node/elements/ElementBase.js +917 -0
  202. package/dist/esm/node/elements/ElementBase.js.map +7 -0
  203. package/dist/esm/node/elements/HTMLAnchorElement.js +52 -0
  204. package/dist/esm/node/elements/HTMLAnchorElement.js.map +7 -0
  205. package/dist/esm/node/elements/HTMLAreaElement.js +58 -0
  206. package/dist/esm/node/elements/HTMLAreaElement.js.map +7 -0
  207. package/dist/esm/node/elements/HTMLBaseElement.js +58 -0
  208. package/dist/esm/node/elements/HTMLBaseElement.js.map +7 -0
  209. package/dist/esm/node/elements/HTMLBodyElement.js +10 -0
  210. package/dist/esm/node/elements/HTMLBodyElement.js.map +7 -0
  211. package/dist/esm/node/elements/HTMLButtonElement.js +70 -0
  212. package/dist/esm/node/elements/HTMLButtonElement.js.map +7 -0
  213. package/dist/esm/node/elements/HTMLCanvasElement.js +60 -0
  214. package/dist/esm/node/elements/HTMLCanvasElement.js.map +7 -0
  215. package/dist/esm/node/elements/HTMLCaptionElement.js +22 -0
  216. package/dist/esm/node/elements/HTMLCaptionElement.js.map +7 -0
  217. package/dist/esm/node/elements/HTMLDivElement.js +10 -0
  218. package/dist/esm/node/elements/HTMLDivElement.js.map +7 -0
  219. package/dist/esm/node/elements/HTMLElement.js +1 -0
  220. package/dist/esm/node/elements/HTMLElement.js.map +7 -0
  221. package/dist/esm/node/elements/HTMLElementBase.js +163 -0
  222. package/dist/esm/node/elements/HTMLElementBase.js.map +7 -0
  223. package/dist/esm/node/elements/HTMLEmbedElement.js +26 -0
  224. package/dist/esm/node/elements/HTMLEmbedElement.js.map +7 -0
  225. package/dist/esm/node/elements/HTMLFormElement.js +108 -0
  226. package/dist/esm/node/elements/HTMLFormElement.js.map +7 -0
  227. package/dist/esm/node/elements/HTMLGenericElement.js +13 -0
  228. package/dist/esm/node/elements/HTMLGenericElement.js.map +7 -0
  229. package/dist/esm/node/elements/HTMLH1Element.js +10 -0
  230. package/dist/esm/node/elements/HTMLH1Element.js.map +7 -0
  231. package/dist/esm/node/elements/HTMLHeadElement.js +10 -0
  232. package/dist/esm/node/elements/HTMLHeadElement.js.map +7 -0
  233. package/dist/esm/node/elements/HTMLHtmlElement.js +73 -0
  234. package/dist/esm/node/elements/HTMLHtmlElement.js.map +7 -0
  235. package/dist/esm/node/elements/HTMLImgElement.js +80 -0
  236. package/dist/esm/node/elements/HTMLImgElement.js.map +7 -0
  237. package/dist/esm/node/elements/HTMLInputElement.js +138 -0
  238. package/dist/esm/node/elements/HTMLInputElement.js.map +7 -0
  239. package/dist/esm/node/elements/HTMLLIElement.js +38 -0
  240. package/dist/esm/node/elements/HTMLLIElement.js.map +7 -0
  241. package/dist/esm/node/elements/HTMLLinkElement.js +80 -0
  242. package/dist/esm/node/elements/HTMLLinkElement.js.map +7 -0
  243. package/dist/esm/node/elements/HTMLMetaElement.js +10 -0
  244. package/dist/esm/node/elements/HTMLMetaElement.js.map +7 -0
  245. package/dist/esm/node/elements/HTMLOListElement.js +70 -0
  246. package/dist/esm/node/elements/HTMLOListElement.js.map +7 -0
  247. package/dist/esm/node/elements/HTMLPElement.js +10 -0
  248. package/dist/esm/node/elements/HTMLPElement.js.map +7 -0
  249. package/dist/esm/node/elements/HTMLScriptElement.js +108 -0
  250. package/dist/esm/node/elements/HTMLScriptElement.js.map +7 -0
  251. package/dist/esm/node/elements/HTMLSpanElement.js +10 -0
  252. package/dist/esm/node/elements/HTMLSpanElement.js.map +7 -0
  253. package/dist/esm/node/elements/HTMLStyleElement.js +52 -0
  254. package/dist/esm/node/elements/HTMLStyleElement.js.map +7 -0
  255. package/dist/esm/node/elements/HTMLTableElement.js +93 -0
  256. package/dist/esm/node/elements/HTMLTableElement.js.map +7 -0
  257. package/dist/esm/node/elements/HTMLTbodyElement.js +35 -0
  258. package/dist/esm/node/elements/HTMLTbodyElement.js.map +7 -0
  259. package/dist/esm/node/elements/HTMLTdElement.js +53 -0
  260. package/dist/esm/node/elements/HTMLTdElement.js.map +7 -0
  261. package/dist/esm/node/elements/HTMLTemplateElement.js +78 -0
  262. package/dist/esm/node/elements/HTMLTemplateElement.js.map +7 -0
  263. package/dist/esm/node/elements/HTMLTfootElement.js +37 -0
  264. package/dist/esm/node/elements/HTMLTfootElement.js.map +7 -0
  265. package/dist/esm/node/elements/HTMLThElement.js +53 -0
  266. package/dist/esm/node/elements/HTMLThElement.js.map +7 -0
  267. package/dist/esm/node/elements/HTMLTheadElement.js +35 -0
  268. package/dist/esm/node/elements/HTMLTheadElement.js.map +7 -0
  269. package/dist/esm/node/elements/HTMLTitleElement.js +19 -0
  270. package/dist/esm/node/elements/HTMLTitleElement.js.map +7 -0
  271. package/dist/esm/node/elements/HTMLTrElement.js +58 -0
  272. package/dist/esm/node/elements/HTMLTrElement.js.map +7 -0
  273. package/dist/esm/node/elements/HTMLUListElement.js +10 -0
  274. package/dist/esm/node/elements/HTMLUListElement.js.map +7 -0
  275. package/dist/esm/node/elements/MathMLElement.js +13 -0
  276. package/dist/esm/node/elements/MathMLElement.js.map +7 -0
  277. package/dist/esm/node/elements/SVGCircleElement.js +50 -0
  278. package/dist/esm/node/elements/SVGCircleElement.js.map +7 -0
  279. package/dist/esm/node/elements/SVGElement.js +13 -0
  280. package/dist/esm/node/elements/SVGElement.js.map +7 -0
  281. package/dist/esm/node/elements/SVGRectElement.js +61 -0
  282. package/dist/esm/node/elements/SVGRectElement.js.map +7 -0
  283. package/dist/esm/node/elements/index.js +164 -0
  284. package/dist/esm/node/elements/index.js.map +7 -0
  285. package/dist/esm/node/index.js +53 -0
  286. package/dist/esm/node/index.js.map +7 -0
  287. package/dist/esm/utils/CSSSelector.js +252 -0
  288. package/dist/esm/utils/CSSSelector.js.map +7 -0
  289. package/dist/esm/window/Window.js +1 -0
  290. package/dist/esm/window/Window.js.map +7 -0
  291. package/dist/esm/window/WindowBase.js +828 -0
  292. package/dist/esm/window/WindowBase.js.map +7 -0
  293. package/dist/esm/window/index.js +10 -0
  294. package/dist/esm/window/index.js.map +7 -0
  295. package/dist/esm-bundle/dooboostore-dom-parser.esm.js +6176 -0
  296. package/dist/esm-bundle/dooboostore-dom-parser.esm.js.map +7 -0
  297. package/dist/types/DomParser.d.ts +30 -0
  298. package/dist/types/DomParser.d.ts.map +1 -0
  299. package/dist/types/factory/ElementFactory.d.ts +27 -0
  300. package/dist/types/factory/ElementFactory.d.ts.map +1 -0
  301. package/dist/types/factory/index.d.ts +2 -0
  302. package/dist/types/factory/index.d.ts.map +1 -0
  303. package/dist/types/index.d.ts +9 -0
  304. package/dist/types/index.d.ts.map +1 -0
  305. package/dist/types/node/CharacterData.d.ts +52 -0
  306. package/dist/types/node/CharacterData.d.ts.map +1 -0
  307. package/dist/types/node/ChildNode.d.ts +39 -0
  308. package/dist/types/node/ChildNode.d.ts.map +1 -0
  309. package/dist/types/node/ChildNodeBase.d.ts +12 -0
  310. package/dist/types/node/ChildNodeBase.d.ts.map +1 -0
  311. package/dist/types/node/Comment.d.ts +26 -0
  312. package/dist/types/node/Comment.d.ts.map +1 -0
  313. package/dist/types/node/Document.d.ts +857 -0
  314. package/dist/types/node/Document.d.ts.map +1 -0
  315. package/dist/types/node/DocumentBase.d.ts +153 -0
  316. package/dist/types/node/DocumentBase.d.ts.map +1 -0
  317. package/dist/types/node/DocumentFragment.d.ts +39 -0
  318. package/dist/types/node/DocumentFragment.d.ts.map +1 -0
  319. package/dist/types/node/DocumentFragmentBase.d.ts +51 -0
  320. package/dist/types/node/DocumentFragmentBase.d.ts.map +1 -0
  321. package/dist/types/node/GetRootNodeOptions.d.ts +14 -0
  322. package/dist/types/node/GetRootNodeOptions.d.ts.map +1 -0
  323. package/dist/types/node/Node.d.ts +232 -0
  324. package/dist/types/node/Node.d.ts.map +1 -0
  325. package/dist/types/node/NodeBase.d.ts +98 -0
  326. package/dist/types/node/NodeBase.d.ts.map +1 -0
  327. package/dist/types/node/NodeIterator.d.ts +61 -0
  328. package/dist/types/node/NodeIterator.d.ts.map +1 -0
  329. package/dist/types/node/ParentNode.d.ts +85 -0
  330. package/dist/types/node/ParentNode.d.ts.map +1 -0
  331. package/dist/types/node/ParentNodeBase.d.ts +22 -0
  332. package/dist/types/node/ParentNodeBase.d.ts.map +1 -0
  333. package/dist/types/node/Text.d.ts +25 -0
  334. package/dist/types/node/Text.d.ts.map +1 -0
  335. package/dist/types/node/TextBase.d.ts +26 -0
  336. package/dist/types/node/TextBase.d.ts.map +1 -0
  337. package/dist/types/node/collection/HTMLCollection.d.ts +37 -0
  338. package/dist/types/node/collection/HTMLCollection.d.ts.map +1 -0
  339. package/dist/types/node/collection/HTMLCollectionOf.d.ts +14 -0
  340. package/dist/types/node/collection/HTMLCollectionOf.d.ts.map +1 -0
  341. package/dist/types/node/collection/NodeList.d.ts +55 -0
  342. package/dist/types/node/collection/NodeList.d.ts.map +1 -0
  343. package/dist/types/node/collection/NodeListOf.d.ts +14 -0
  344. package/dist/types/node/collection/NodeListOf.d.ts.map +1 -0
  345. package/dist/types/node/collection/index.d.ts +5 -0
  346. package/dist/types/node/collection/index.d.ts.map +1 -0
  347. package/dist/types/node/elements/Element.d.ts +687 -0
  348. package/dist/types/node/elements/Element.d.ts.map +1 -0
  349. package/dist/types/node/elements/ElementBase.d.ts +143 -0
  350. package/dist/types/node/elements/ElementBase.d.ts.map +1 -0
  351. package/dist/types/node/elements/HTMLAnchorElement.d.ts +18 -0
  352. package/dist/types/node/elements/HTMLAnchorElement.d.ts.map +1 -0
  353. package/dist/types/node/elements/HTMLAreaElement.d.ts +59 -0
  354. package/dist/types/node/elements/HTMLAreaElement.d.ts.map +1 -0
  355. package/dist/types/node/elements/HTMLBaseElement.d.ts +25 -0
  356. package/dist/types/node/elements/HTMLBaseElement.d.ts.map +1 -0
  357. package/dist/types/node/elements/HTMLBodyElement.d.ts +10 -0
  358. package/dist/types/node/elements/HTMLBodyElement.d.ts.map +1 -0
  359. package/dist/types/node/elements/HTMLButtonElement.d.ts +21 -0
  360. package/dist/types/node/elements/HTMLButtonElement.d.ts.map +1 -0
  361. package/dist/types/node/elements/HTMLCanvasElement.d.ts +15 -0
  362. package/dist/types/node/elements/HTMLCanvasElement.d.ts.map +1 -0
  363. package/dist/types/node/elements/HTMLCaptionElement.d.ts +18 -0
  364. package/dist/types/node/elements/HTMLCaptionElement.d.ts.map +1 -0
  365. package/dist/types/node/elements/HTMLDivElement.d.ts +10 -0
  366. package/dist/types/node/elements/HTMLDivElement.d.ts.map +1 -0
  367. package/dist/types/node/elements/HTMLElement.d.ts +90 -0
  368. package/dist/types/node/elements/HTMLElement.d.ts.map +1 -0
  369. package/dist/types/node/elements/HTMLElementBase.d.ts +42 -0
  370. package/dist/types/node/elements/HTMLElementBase.d.ts.map +1 -0
  371. package/dist/types/node/elements/HTMLEmbedElement.d.ts +27 -0
  372. package/dist/types/node/elements/HTMLEmbedElement.d.ts.map +1 -0
  373. package/dist/types/node/elements/HTMLFormElement.d.ts +30 -0
  374. package/dist/types/node/elements/HTMLFormElement.d.ts.map +1 -0
  375. package/dist/types/node/elements/HTMLGenericElement.d.ts +6 -0
  376. package/dist/types/node/elements/HTMLGenericElement.d.ts.map +1 -0
  377. package/dist/types/node/elements/HTMLH1Element.d.ts +10 -0
  378. package/dist/types/node/elements/HTMLH1Element.d.ts.map +1 -0
  379. package/dist/types/node/elements/HTMLHeadElement.d.ts +10 -0
  380. package/dist/types/node/elements/HTMLHeadElement.d.ts.map +1 -0
  381. package/dist/types/node/elements/HTMLHtmlElement.d.ts +17 -0
  382. package/dist/types/node/elements/HTMLHtmlElement.d.ts.map +1 -0
  383. package/dist/types/node/elements/HTMLImgElement.d.ts +24 -0
  384. package/dist/types/node/elements/HTMLImgElement.d.ts.map +1 -0
  385. package/dist/types/node/elements/HTMLInputElement.d.ts +33 -0
  386. package/dist/types/node/elements/HTMLInputElement.d.ts.map +1 -0
  387. package/dist/types/node/elements/HTMLLIElement.d.ts +15 -0
  388. package/dist/types/node/elements/HTMLLIElement.d.ts.map +1 -0
  389. package/dist/types/node/elements/HTMLLinkElement.d.ts +24 -0
  390. package/dist/types/node/elements/HTMLLinkElement.d.ts.map +1 -0
  391. package/dist/types/node/elements/HTMLMetaElement.d.ts +10 -0
  392. package/dist/types/node/elements/HTMLMetaElement.d.ts.map +1 -0
  393. package/dist/types/node/elements/HTMLOListElement.d.ts +21 -0
  394. package/dist/types/node/elements/HTMLOListElement.d.ts.map +1 -0
  395. package/dist/types/node/elements/HTMLPElement.d.ts +10 -0
  396. package/dist/types/node/elements/HTMLPElement.d.ts.map +1 -0
  397. package/dist/types/node/elements/HTMLScriptElement.d.ts +29 -0
  398. package/dist/types/node/elements/HTMLScriptElement.d.ts.map +1 -0
  399. package/dist/types/node/elements/HTMLSpanElement.d.ts +10 -0
  400. package/dist/types/node/elements/HTMLSpanElement.d.ts.map +1 -0
  401. package/dist/types/node/elements/HTMLStyleElement.d.ts +18 -0
  402. package/dist/types/node/elements/HTMLStyleElement.d.ts.map +1 -0
  403. package/dist/types/node/elements/HTMLTableElement.d.ts +25 -0
  404. package/dist/types/node/elements/HTMLTableElement.d.ts.map +1 -0
  405. package/dist/types/node/elements/HTMLTbodyElement.d.ts +15 -0
  406. package/dist/types/node/elements/HTMLTbodyElement.d.ts.map +1 -0
  407. package/dist/types/node/elements/HTMLTdElement.d.ts +21 -0
  408. package/dist/types/node/elements/HTMLTdElement.d.ts.map +1 -0
  409. package/dist/types/node/elements/HTMLTemplateElement.d.ts +32 -0
  410. package/dist/types/node/elements/HTMLTemplateElement.d.ts.map +1 -0
  411. package/dist/types/node/elements/HTMLTfootElement.d.ts +16 -0
  412. package/dist/types/node/elements/HTMLTfootElement.d.ts.map +1 -0
  413. package/dist/types/node/elements/HTMLThElement.d.ts +21 -0
  414. package/dist/types/node/elements/HTMLThElement.d.ts.map +1 -0
  415. package/dist/types/node/elements/HTMLTheadElement.d.ts +15 -0
  416. package/dist/types/node/elements/HTMLTheadElement.d.ts.map +1 -0
  417. package/dist/types/node/elements/HTMLTitleElement.d.ts +15 -0
  418. package/dist/types/node/elements/HTMLTitleElement.d.ts.map +1 -0
  419. package/dist/types/node/elements/HTMLTrElement.d.ts +17 -0
  420. package/dist/types/node/elements/HTMLTrElement.d.ts.map +1 -0
  421. package/dist/types/node/elements/HTMLUListElement.d.ts +10 -0
  422. package/dist/types/node/elements/HTMLUListElement.d.ts.map +1 -0
  423. package/dist/types/node/elements/MathMLElement.d.ts +11 -0
  424. package/dist/types/node/elements/MathMLElement.d.ts.map +1 -0
  425. package/dist/types/node/elements/SVGCircleElement.d.ts +20 -0
  426. package/dist/types/node/elements/SVGCircleElement.d.ts.map +1 -0
  427. package/dist/types/node/elements/SVGElement.d.ts +11 -0
  428. package/dist/types/node/elements/SVGElement.d.ts.map +1 -0
  429. package/dist/types/node/elements/SVGRectElement.d.ts +23 -0
  430. package/dist/types/node/elements/SVGRectElement.d.ts.map +1 -0
  431. package/dist/types/node/elements/index.d.ts +128 -0
  432. package/dist/types/node/elements/index.d.ts.map +1 -0
  433. package/dist/types/node/index.d.ts +16 -0
  434. package/dist/types/node/index.d.ts.map +1 -0
  435. package/dist/types/utils/CSSSelector.d.ts +36 -0
  436. package/dist/types/utils/CSSSelector.d.ts.map +1 -0
  437. package/dist/types/window/Window.d.ts +620 -0
  438. package/dist/types/window/Window.d.ts.map +1 -0
  439. package/dist/types/window/WindowBase.d.ts +342 -0
  440. package/dist/types/window/WindowBase.d.ts.map +1 -0
  441. package/dist/types/window/index.d.ts +3 -0
  442. package/dist/types/window/index.d.ts.map +1 -0
  443. package/dist/umd-bundle/dooboostore-dom-parser.umd.js +6182 -0
  444. package/dist/umd-bundle/dooboostore-dom-parser.umd.js.map +7 -0
  445. package/package.json +120 -0
  446. package/src/DomParser.ts +491 -0
  447. package/src/factory/ElementFactory.ts +69 -0
  448. package/src/factory/index.ts +1 -0
  449. package/src/index.ts +28 -0
  450. package/src/node/CharacterData.ts +58 -0
  451. package/src/node/ChildNode.ts +42 -0
  452. package/src/node/ChildNodeBase.ts +54 -0
  453. package/src/node/Comment.ts +98 -0
  454. package/src/node/Document.ts +882 -0
  455. package/src/node/DocumentBase.ts +465 -0
  456. package/src/node/DocumentFragment.ts +44 -0
  457. package/src/node/DocumentFragmentBase.ts +109 -0
  458. package/src/node/GetRootNodeOptions.ts +13 -0
  459. package/src/node/Node.ts +245 -0
  460. package/src/node/NodeBase.ts +506 -0
  461. package/src/node/NodeIterator.ts +200 -0
  462. package/src/node/ParentNode.ts +93 -0
  463. package/src/node/ParentNodeBase.ts +145 -0
  464. package/src/node/Text.ts +30 -0
  465. package/src/node/TextBase.ts +113 -0
  466. package/src/node/collection/HTMLCollection.ts +107 -0
  467. package/src/node/collection/HTMLCollectionOf.ts +26 -0
  468. package/src/node/collection/NodeList.ts +140 -0
  469. package/src/node/collection/NodeListOf.ts +28 -0
  470. package/src/node/collection/index.ts +4 -0
  471. package/src/node/elements/Element.ts +771 -0
  472. package/src/node/elements/ElementBase.ts +1239 -0
  473. package/src/node/elements/HTMLAnchorElement.ts +63 -0
  474. package/src/node/elements/HTMLAreaElement.ts +73 -0
  475. package/src/node/elements/HTMLBaseElement.ts +70 -0
  476. package/src/node/elements/HTMLBodyElement.ts +12 -0
  477. package/src/node/elements/HTMLButtonElement.ts +83 -0
  478. package/src/node/elements/HTMLCanvasElement.ts +71 -0
  479. package/src/node/elements/HTMLCaptionElement.ts +26 -0
  480. package/src/node/elements/HTMLDivElement.ts +12 -0
  481. package/src/node/elements/HTMLElement.ts +105 -0
  482. package/src/node/elements/HTMLElementBase.ts +198 -0
  483. package/src/node/elements/HTMLEmbedElement.ts +33 -0
  484. package/src/node/elements/HTMLFormElement.ts +131 -0
  485. package/src/node/elements/HTMLGenericElement.ts +13 -0
  486. package/src/node/elements/HTMLH1Element.ts +12 -0
  487. package/src/node/elements/HTMLHeadElement.ts +12 -0
  488. package/src/node/elements/HTMLHtmlElement.ts +82 -0
  489. package/src/node/elements/HTMLImgElement.ts +96 -0
  490. package/src/node/elements/HTMLInputElement.ts +160 -0
  491. package/src/node/elements/HTMLLIElement.ts +47 -0
  492. package/src/node/elements/HTMLLinkElement.ts +95 -0
  493. package/src/node/elements/HTMLMetaElement.ts +12 -0
  494. package/src/node/elements/HTMLOListElement.ts +83 -0
  495. package/src/node/elements/HTMLPElement.ts +12 -0
  496. package/src/node/elements/HTMLScriptElement.ts +127 -0
  497. package/src/node/elements/HTMLSpanElement.ts +12 -0
  498. package/src/node/elements/HTMLStyleElement.ts +63 -0
  499. package/src/node/elements/HTMLTableElement.ts +117 -0
  500. package/src/node/elements/HTMLTbodyElement.ts +46 -0
  501. package/src/node/elements/HTMLTdElement.ts +67 -0
  502. package/src/node/elements/HTMLTemplateElement.ts +112 -0
  503. package/src/node/elements/HTMLTfootElement.ts +47 -0
  504. package/src/node/elements/HTMLThElement.ts +67 -0
  505. package/src/node/elements/HTMLTheadElement.ts +46 -0
  506. package/src/node/elements/HTMLTitleElement.ts +23 -0
  507. package/src/node/elements/HTMLTrElement.ts +72 -0
  508. package/src/node/elements/HTMLUListElement.ts +12 -0
  509. package/src/node/elements/MathMLElement.ts +16 -0
  510. package/src/node/elements/SVGCircleElement.ts +61 -0
  511. package/src/node/elements/SVGElement.ts +16 -0
  512. package/src/node/elements/SVGRectElement.ts +74 -0
  513. package/src/node/elements/index.ts +186 -0
  514. package/src/node/index.ts +28 -0
  515. package/src/utils/CSSSelector.ts +360 -0
  516. package/src/window/Window.ts +715 -0
  517. package/src/window/WindowBase.ts +1018 -0
  518. package/src/window/index.ts +2 -0
  519. package/tsconfig.json +24 -0
@@ -0,0 +1,465 @@
1
+ import {ParentNodeBase} from './ParentNodeBase';
2
+ import {DOCUMENT_NODE, Node} from './Node';
3
+ import {Document, ElementCreationOptions, DocumentReadyState, DocumentVisibilityState, ImportNodeOptions, CaretPositionFromPointOptions, StartViewTransitionOptions, ViewTransitionUpdateCallback} from './Document';
4
+ import {Comment} from './Comment';
5
+ import {Text} from './Text';
6
+ import {DocumentFragment} from './DocumentFragment';
7
+ import {DocumentFragmentBase} from './DocumentFragmentBase';
8
+ import {Element} from './elements/Element';
9
+ import {HTMLElement} from './elements/HTMLElement';
10
+ import {HTMLCollection, HTMLCollectionOf} from './collection';
11
+ import {HTMLElementTagNameMap, SVGElementTagNameMap, MathMLElementTagNameMap, HTMLElementDeprecatedTagNameMap} from './elements';
12
+ import {NodeListOf} from './collection/NodeListOf';
13
+ import {ElementFactory} from '../factory';
14
+ import {NodeIterator, NodeFilter} from './NodeIterator';
15
+
16
+ // Document event listener interface
17
+ interface DocumentEventListener {
18
+ type: string;
19
+ listener: (event: any) => void;
20
+ options?: boolean | AddEventListenerOptions;
21
+ }
22
+
23
+ /**
24
+ * The **`DocumentBase`** class is the concrete implementation of the Document interface.
25
+ */
26
+ export class DocumentBase extends ParentNodeBase implements Document {
27
+ // Event system
28
+ private _eventListeners: DocumentEventListener[] = [];
29
+ private _readyState: DocumentReadyState = 'uninitialized' as any;
30
+ private _window: any = null; // Reference to window for load event
31
+ // Properties
32
+ readonly URL: string = 'about:blank';
33
+ alinkColor: string = '';
34
+ readonly all: any = null;
35
+ readonly anchors: HTMLCollectionOf<any> = new HTMLCollectionOf([]);
36
+ readonly applets: HTMLCollection = new HTMLCollection([]);
37
+ bgColor: string = '';
38
+ body: HTMLElement = null as any;
39
+ readonly characterSet: string = 'UTF-8';
40
+ readonly charset: string = 'UTF-8';
41
+ readonly compatMode: string = 'CSS1Compat';
42
+ readonly contentType: string = 'text/html';
43
+ cookie: string = '';
44
+ readonly currentScript: any = null;
45
+ readonly defaultView: any = null;
46
+ designMode: string = 'off';
47
+ dir: string = '';
48
+ readonly doctype: any = null;
49
+ readonly documentElement: HTMLElement = null as any;
50
+ readonly documentURI: string = 'about:blank';
51
+ domain: string = '';
52
+ readonly embeds: HTMLCollectionOf<any> = new HTMLCollectionOf([]);
53
+ fgColor: string = '';
54
+ readonly forms: HTMLCollectionOf<any> = new HTMLCollectionOf([]);
55
+ readonly fragmentDirective: any = null;
56
+ readonly fullscreen: boolean = false;
57
+ readonly fullscreenEnabled: boolean = false;
58
+ readonly head: any = null;
59
+ readonly hidden: boolean = false;
60
+ readonly images: HTMLCollectionOf<any> = new HTMLCollectionOf([]);
61
+ readonly implementation: any = null;
62
+ readonly inputEncoding: string = 'UTF-8';
63
+ readonly lastModified: string = new Date().toString();
64
+ linkColor: string = '';
65
+ readonly links: HTMLCollectionOf<any> = new HTMLCollectionOf([]);
66
+
67
+ // Location property - simple implementation for Document
68
+ private _location: any = {
69
+ href: 'about:blank',
70
+ protocol: 'about:',
71
+ host: '',
72
+ hostname: '',
73
+ port: '',
74
+ pathname: 'blank',
75
+ search: '',
76
+ hash: '',
77
+ origin: 'null',
78
+ assign: (url: string) => { this._location.href = url; },
79
+ replace: (url: string) => { this._location.href = url; },
80
+ reload: () => {},
81
+ toString: () => this._location.href
82
+ };
83
+
84
+ get location(): any {
85
+ return this._location;
86
+ }
87
+
88
+ set location(href: string) {
89
+ this._location.href = href;
90
+ // Simple URL parsing for document location
91
+ try {
92
+ const url = new URL(href);
93
+ this._location.protocol = url.protocol;
94
+ this._location.host = url.host;
95
+ this._location.hostname = url.hostname;
96
+ this._location.port = url.port;
97
+ this._location.pathname = url.pathname;
98
+ this._location.search = url.search;
99
+ this._location.hash = url.hash;
100
+ this._location.origin = url.origin;
101
+ } catch (e) {
102
+ // Keep defaults for invalid URLs
103
+ }
104
+ }
105
+
106
+ // Event handlers
107
+ onfullscreenchange: ((this: Document, ev: Event) => any) | null = null;
108
+ onfullscreenerror: ((this: Document, ev: Event) => any) | null = null;
109
+ onpointerlockchange: ((this: Document, ev: Event) => any) | null = null;
110
+ onpointerlockerror: ((this: Document, ev: Event) => any) | null = null;
111
+ onreadystatechange: ((this: Document, ev: Event) => any) | null = null;
112
+ onvisibilitychange: ((this: Document, ev: Event) => any) | null = null;
113
+
114
+ get ownerDocument(): null {
115
+ return null;
116
+ }
117
+ readonly pictureInPictureEnabled: boolean = false;
118
+ readonly plugins: HTMLCollectionOf<any> = new HTMLCollectionOf([]);
119
+ get readyState(): DocumentReadyState {
120
+ return this._readyState;
121
+ }
122
+ readonly referrer: string = '';
123
+ readonly rootElement: any = null;
124
+ readonly scripts: HTMLCollectionOf<any> = new HTMLCollectionOf([]);
125
+ readonly scrollingElement: Element | null = null;
126
+ readonly timeline: any = null;
127
+ get title(): string {
128
+ const titleElement = this.querySelector('title');
129
+ return titleElement ? titleElement.textContent || '' : '';
130
+ }
131
+
132
+ set title(value: string) {
133
+ let titleElement = this.querySelector('title');
134
+ if (!titleElement) {
135
+ // Create title element if it doesn't exist
136
+ titleElement = this.createElement('title');
137
+ const head = this.head || this.querySelector('head');
138
+ if (head) {
139
+ head.appendChild(titleElement);
140
+ }
141
+ }
142
+ titleElement.textContent = value;
143
+ }
144
+ readonly visibilityState: DocumentVisibilityState = 'visible';
145
+ vlinkColor: string = '';
146
+
147
+ constructor() {
148
+ super(DOCUMENT_NODE, '#document');
149
+ this._ownerDocument = null;
150
+
151
+ // Create basic document structure
152
+ const documentElement = this.createElement('html') as HTMLElement;
153
+ const head = this.createElement('head') as HTMLElement;
154
+ const body = this.createElement('body') as HTMLElement;
155
+
156
+ documentElement.appendChild(head);
157
+ documentElement.appendChild(body);
158
+ this.appendChild(documentElement);
159
+
160
+ // Set readonly properties
161
+ (this as any).documentElement = documentElement;
162
+ (this as any).head = head;
163
+ this.body = body;
164
+ }
165
+
166
+ get textContent(): null {
167
+ return null;
168
+ }
169
+
170
+ // Methods
171
+ adoptNode<T extends Node>(node: T): T {
172
+ (node as any)._ownerDocument = this;
173
+ return node;
174
+ }
175
+
176
+ captureEvents(): void {}
177
+
178
+ caretPositionFromPoint(_x: number, _y: number, _options?: CaretPositionFromPointOptions): any {
179
+ return null;
180
+ }
181
+
182
+ caretRangeFromPoint(_x: number, _y: number): any {
183
+ return null;
184
+ }
185
+
186
+ clear(): void {}
187
+
188
+ close(): void {}
189
+
190
+ createAttribute(localName: string): any {
191
+ return { name: localName, value: '' };
192
+ }
193
+
194
+ createAttributeNS(_namespace: string | null, qualifiedName: string): any {
195
+ return { name: qualifiedName, value: '' };
196
+ }
197
+
198
+ createCDATASection(data: string): any {
199
+ return { data, nodeType: 4 };
200
+ }
201
+
202
+ createComment(data: string): Comment {
203
+ return new Comment(data, this);
204
+ }
205
+
206
+ createDocumentFragment(): DocumentFragment {
207
+ return new DocumentFragmentBase(this);
208
+ }
209
+
210
+ createElement<K extends keyof HTMLElementTagNameMap>(tagName: K, _options?: ElementCreationOptions): HTMLElementTagNameMap[K];
211
+ createElement<K extends keyof HTMLElementDeprecatedTagNameMap>(tagName: K, _options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K];
212
+ createElement(tagName: string, _options?: ElementCreationOptions): HTMLElement;
213
+ createElement(tagName: string, _options?: ElementCreationOptions): HTMLElement {
214
+ return ElementFactory.createElement(tagName, this);
215
+ }
216
+
217
+ createElementNS(namespaceURI: "http://www.w3.org/1999/xhtml", qualifiedName: string): HTMLElement;
218
+ createElementNS<K extends keyof SVGElementTagNameMap>(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: K): SVGElementTagNameMap[K];
219
+ createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: string): any;
220
+ createElementNS<K extends keyof MathMLElementTagNameMap>(namespaceURI: "http://www.w3.org/1998/Math/MathML", qualifiedName: K): MathMLElementTagNameMap[K];
221
+ createElementNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", qualifiedName: string): any;
222
+ createElementNS(namespaceURI: string | null, qualifiedName: string, options?: ElementCreationOptions): Element;
223
+ createElementNS(_namespace: string | null, qualifiedName: string, _options?: string | ElementCreationOptions): Element;
224
+ createElementNS(_namespaceURI: string | null, qualifiedName: string, _options?: ElementCreationOptions | string): Element {
225
+ return ElementFactory.createElement(qualifiedName, this);
226
+ }
227
+
228
+ createEvent(_eventInterface: string): any {
229
+ return {};
230
+ }
231
+
232
+ createNodeIterator(root: Node, whatToShow: number = NodeFilter.SHOW_ALL, filter: NodeFilter | null = null): NodeIterator {
233
+ return new NodeIterator(root, whatToShow, filter);
234
+ }
235
+
236
+ createProcessingInstruction(target: string, data: string): any {
237
+ return { target, data, nodeType: 7 };
238
+ }
239
+
240
+ createRange(): any {
241
+ return {};
242
+ }
243
+
244
+ createTextNode(data: string): Text {
245
+ const { TextBase } = require('./TextBase');
246
+ return new TextBase(data, this);
247
+ }
248
+
249
+ createTreeWalker(_root: Node, _whatToShow?: number, _filter?: any): any {
250
+ return {};
251
+ }
252
+
253
+ execCommand(_commandId: string, _showUI?: boolean, _value?: string): boolean {
254
+ return false;
255
+ }
256
+
257
+ exitFullscreen(): Promise<void> {
258
+ return Promise.resolve();
259
+ }
260
+
261
+ exitPictureInPicture(): Promise<void> {
262
+ return Promise.resolve();
263
+ }
264
+
265
+ exitPointerLock(): void {}
266
+
267
+ getElementById(elementId: string): HTMLElement | null {
268
+ const elements = this.querySelectorAll(`#${elementId}`);
269
+ return elements.length > 0 ? elements[0] as HTMLElement : null;
270
+ }
271
+
272
+ getElementsByClassName(classNames: string): HTMLCollectionOf<Element> {
273
+ const elements = this.querySelectorAll(`.${classNames.split(' ').join('.')}`);
274
+ return new HTMLCollectionOf(Array.from(elements));
275
+ }
276
+
277
+ getElementsByName(elementName: string): NodeListOf<HTMLElement> {
278
+ const elements = this.querySelectorAll(`[name="${elementName}"]`);
279
+ return new NodeListOf(Array.from(elements) as HTMLElement[]);
280
+ }
281
+
282
+ getElementsByTagName<K extends keyof HTMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementTagNameMap[K]>;
283
+ getElementsByTagName<K extends keyof SVGElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<SVGElementTagNameMap[K]>;
284
+ getElementsByTagName<K extends keyof MathMLElementTagNameMap>(qualifiedName: K): HTMLCollectionOf<MathMLElementTagNameMap[K]>;
285
+ getElementsByTagName<K extends keyof HTMLElementDeprecatedTagNameMap>(qualifiedName: K): HTMLCollectionOf<HTMLElementDeprecatedTagNameMap[K]>;
286
+ getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element>;
287
+ getElementsByTagName(qualifiedName: string): HTMLCollectionOf<Element> {
288
+ const elements = this.querySelectorAll<Element>(qualifiedName);
289
+ return new HTMLCollectionOf(Array.from(elements));
290
+ }
291
+
292
+ getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf<HTMLElement>;
293
+ getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf<any>;
294
+ getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollectionOf<any>;
295
+ getElementsByTagNameNS(_namespace: string | null, localName: string): HTMLCollectionOf<Element>;
296
+ getElementsByTagNameNS(_namespace: string | null, localName: string): HTMLCollectionOf<Element> {
297
+ return this.getElementsByTagName(localName);
298
+ }
299
+
300
+ getSelection(): any {
301
+ return null;
302
+ }
303
+
304
+ hasFocus(): boolean {
305
+ return false;
306
+ }
307
+
308
+ hasStorageAccess(): Promise<boolean> {
309
+ return Promise.resolve(false);
310
+ }
311
+
312
+ importNode<T extends Node>(node: T, _options?: boolean | ImportNodeOptions): T {
313
+ const cloned = (node as any).cloneNode(typeof _options === 'boolean' ? _options : _options?.deep);
314
+ (cloned as any)._ownerDocument = this;
315
+ return cloned;
316
+ }
317
+
318
+ open(_unused1?: string, _unused2?: string): Document;
319
+ open(_url: string | URL, _name: string, _features: string): any;
320
+ open(_arg1?: string | URL, _arg2?: string, _arg3?: string): Document | any {
321
+ if (arguments.length <= 2) {
322
+ return this;
323
+ }
324
+ return null;
325
+ }
326
+
327
+ queryCommandEnabled(_commandId: string): boolean {
328
+ return false;
329
+ }
330
+
331
+ queryCommandIndeterm(_commandId: string): boolean {
332
+ return false;
333
+ }
334
+
335
+ queryCommandState(_commandId: string): boolean {
336
+ return false;
337
+ }
338
+
339
+ queryCommandSupported(_commandId: string): boolean {
340
+ return false;
341
+ }
342
+
343
+ queryCommandValue(_commandId: string): string {
344
+ return '';
345
+ }
346
+
347
+ releaseEvents(): void {}
348
+
349
+ requestStorageAccess(): Promise<void> {
350
+ return Promise.resolve();
351
+ }
352
+
353
+ startViewTransition(_callbackOptions?: ViewTransitionUpdateCallback | StartViewTransitionOptions): any {
354
+ return {};
355
+ }
356
+
357
+ write(...text: string[]): void {
358
+ console.log('Document.write:', text.join(''));
359
+ }
360
+
361
+ writeln(...text: string[]): void {
362
+ this.write(...text, '\n');
363
+ }
364
+
365
+ addEventListener(type: string, listener: any, options?: boolean | any): void {
366
+ // Support DOMContentLoaded and readystatechange events
367
+ if (type === 'DOMContentLoaded' || type === 'readystatechange') {
368
+ this._eventListeners.push({
369
+ type,
370
+ listener: typeof listener === 'function' ? listener : listener.handleEvent,
371
+ options
372
+ });
373
+ }
374
+ }
375
+
376
+ removeEventListener(type: string, listener: any, options?: boolean | any): void {
377
+ if (type === 'DOMContentLoaded' || type === 'readystatechange') {
378
+ const targetListener = typeof listener === 'function' ? listener : listener.handleEvent;
379
+ this._eventListeners = this._eventListeners.filter(
380
+ eventListener => !(eventListener.type === type && eventListener.listener === targetListener)
381
+ );
382
+ }
383
+ }
384
+
385
+ dispatchEvent(event: any): boolean {
386
+ const eventListeners = this._eventListeners.filter(listener => listener.type === event.type);
387
+
388
+ for (const eventListener of eventListeners) {
389
+ try {
390
+ eventListener.listener.call(this, event);
391
+
392
+ // Handle 'once' option
393
+ if (eventListener.options && typeof eventListener.options === 'object' && eventListener.options.once) {
394
+ this.removeEventListener(event.type, eventListener.listener);
395
+ }
396
+ } catch (error) {
397
+ console.error('Error in document event listener:', error);
398
+ }
399
+ }
400
+
401
+ return true;
402
+ }
403
+
404
+ /**
405
+ * Set window reference for load event dispatching
406
+ */
407
+ setWindow(window: any): void {
408
+ this._window = window;
409
+ }
410
+
411
+ /**
412
+ * Change document ready state and dispatch events
413
+ */
414
+ setReadyState(state: DocumentReadyState): void {
415
+ if (this._readyState === state) return;
416
+
417
+ this._readyState = state;
418
+
419
+ // Dispatch readystatechange event
420
+ this.dispatchEvent({
421
+ type: 'readystatechange',
422
+ target: this,
423
+ readyState: state
424
+ });
425
+
426
+ // Dispatch DOMContentLoaded when interactive
427
+ if (state === 'interactive') {
428
+ this.dispatchEvent({
429
+ type: 'DOMContentLoaded',
430
+ target: this
431
+ });
432
+ }
433
+
434
+ // Dispatch load event on window when complete
435
+ if (state === 'complete' && this._window) {
436
+ // Use setTimeout to ensure it's dispatched after current execution
437
+ setTimeout(() => {
438
+ if (this._window && this._window.dispatchEvent) {
439
+ this._window.dispatchEvent({
440
+ type: 'load',
441
+ target: this._window
442
+ });
443
+ }
444
+ }, 0);
445
+ }
446
+ }
447
+
448
+ /**
449
+ * Simulate document loading process
450
+ */
451
+ simulateLoading(): void {
452
+ // Start with loading state
453
+ this.setReadyState('loading');
454
+
455
+ // Simulate DOM parsing completion
456
+ setTimeout(() => {
457
+ this.setReadyState('interactive');
458
+
459
+ // Simulate resource loading completion
460
+ setTimeout(() => {
461
+ this.setReadyState('complete');
462
+ }, 10);
463
+ }, 5);
464
+ }
465
+ }
@@ -0,0 +1,44 @@
1
+ import { Node } from './Node';
2
+ import { ParentNode } from './ParentNode';
3
+
4
+ /**
5
+ * The **`DocumentFragment`** interface represents a minimal document object that has no parent.
6
+ * It is used as a lightweight version of Document that stores a segment of a document structure comprised of nodes just like a standard document.
7
+ *
8
+ * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DocumentFragment)
9
+ */
10
+ export interface DocumentFragment extends Node, ParentNode {
11
+ /**
12
+ * Returns the number of child elements of this DocumentFragment.
13
+ */
14
+ readonly childElementCount: number;
15
+
16
+ /**
17
+ * Returns the first Element node within the DocumentFragment, in document order, that matches the specified selectors.
18
+ */
19
+ querySelector<K extends keyof HTMLElementTagNameMap>(selectors: K): HTMLElementTagNameMap[K] | null;
20
+ querySelector<K extends keyof SVGElementTagNameMap>(selectors: K): SVGElementTagNameMap[K] | null;
21
+ querySelector<K extends keyof MathMLElementTagNameMap>(selectors: K): MathMLElementTagNameMap[K] | null;
22
+ querySelector<E extends Element = Element>(selectors: string): E | null;
23
+ querySelector(selectors: string): Element | null;
24
+
25
+ /**
26
+ * Returns all Element nodes within the DocumentFragment that match the specified selectors.
27
+ */
28
+ querySelectorAll<K extends keyof HTMLElementTagNameMap>(selectors: K): NodeListOf<HTMLElementTagNameMap[K]>;
29
+ querySelectorAll<K extends keyof SVGElementTagNameMap>(selectors: K): NodeListOf<SVGElementTagNameMap[K]>;
30
+ querySelectorAll<K extends keyof MathMLElementTagNameMap>(selectors: K): NodeListOf<MathMLElementTagNameMap[K]>;
31
+ querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E>;
32
+ querySelectorAll(selectors: string): NodeListOf<Element>;
33
+
34
+ /**
35
+ * Returns the Element within the DocumentFragment that has the specified ID.
36
+ */
37
+ getElementById(elementId: string): HTMLElement | null;
38
+ }
39
+
40
+ // Import types for the interface
41
+ import { HTMLElementTagNameMap, SVGElementTagNameMap, MathMLElementTagNameMap } from './elements';
42
+ import { Element } from './elements/Element';
43
+ import { HTMLElement } from './elements/HTMLElement';
44
+ import { NodeListOf } from './collection/NodeListOf';
@@ -0,0 +1,109 @@
1
+ import { ParentNodeBase } from './ParentNodeBase';
2
+ import { DocumentFragment } from './DocumentFragment';
3
+ import { Document } from './Document';
4
+ import {DOCUMENT_FRAGMENT_NODE, ELEMENT_NODE, Node} from './Node';
5
+ import { NodeBase } from './NodeBase';
6
+ import { Element } from './elements/Element';
7
+ import { HTMLElement } from './elements/HTMLElement';
8
+ import { HTMLElementTagNameMap, SVGElementTagNameMap, MathMLElementTagNameMap } from './elements';
9
+ import { NodeListOf } from './collection/NodeListOf';
10
+
11
+ /**
12
+ * The **`DocumentFragmentBase`** class is the concrete implementation of the DocumentFragment interface.
13
+ *
14
+ * DocumentFragment is a minimal document object that has no parent. It is used as a lightweight version of Document
15
+ * that stores a segment of a document structure comprised of nodes just like a standard document.
16
+ */
17
+ export class DocumentFragmentBase extends ParentNodeBase implements DocumentFragment {
18
+ constructor(ownerDocument?: Document) {
19
+ super(DOCUMENT_FRAGMENT_NODE, '#document-fragment', ownerDocument); // DOCUMENT_FRAGMENT_NODE = 11
20
+ }
21
+
22
+ /**
23
+ * Returns the number of child elements of this DocumentFragment.
24
+ */
25
+ get childElementCount(): number {
26
+ let count = 0;
27
+ for (const child of this._childNodesInternal) {
28
+ if (child && child.nodeType === ELEMENT_NODE) { // ELEMENT_NODE
29
+ count++;
30
+ }
31
+ }
32
+ return count;
33
+ }
34
+
35
+ /**
36
+ * Returns the first Element node within the DocumentFragment that matches the specified selectors.
37
+ */
38
+ querySelector<K extends keyof HTMLElementTagNameMap>(selectors: K): HTMLElementTagNameMap[K] | null;
39
+ querySelector<K extends keyof SVGElementTagNameMap>(selectors: K): SVGElementTagNameMap[K] | null;
40
+ querySelector<K extends keyof MathMLElementTagNameMap>(selectors: K): MathMLElementTagNameMap[K] | null;
41
+ querySelector<E extends Element = Element>(selectors: string): E | null;
42
+ querySelector(selectors: string): Element | null;
43
+ querySelector(selectors: string): Element | null {
44
+ const elements = this.querySelectorAll(selectors);
45
+ return elements.length > 0 ? elements.item(0) : null;
46
+ }
47
+
48
+ /**
49
+ * Returns all Element nodes within the DocumentFragment that match the specified selectors.
50
+ */
51
+ querySelectorAll<K extends keyof HTMLElementTagNameMap>(selectors: K): NodeListOf<HTMLElementTagNameMap[K]>;
52
+ querySelectorAll<K extends keyof SVGElementTagNameMap>(selectors: K): NodeListOf<SVGElementTagNameMap[K]>;
53
+ querySelectorAll<K extends keyof MathMLElementTagNameMap>(selectors: K): NodeListOf<MathMLElementTagNameMap[K]>;
54
+ querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E>;
55
+ querySelectorAll(selectors: string): NodeListOf<Element>;
56
+ querySelectorAll(selectors: string): NodeListOf<Element> {
57
+ // Use the inherited querySelectorAll from ParentNodeBase
58
+ return super.querySelectorAll(selectors);
59
+ }
60
+
61
+ /**
62
+ * Returns the Element within the DocumentFragment that has the specified ID.
63
+ */
64
+ getElementById(elementId: string): HTMLElement | null {
65
+ const element = this.querySelector(`#${elementId}`);
66
+ return element as HTMLElement | null;
67
+ }
68
+
69
+ /**
70
+ * Override cloneNode to return DocumentFragment
71
+ */
72
+ cloneNode(deep?: boolean): DocumentFragmentBase {
73
+ const clone = new DocumentFragmentBase(this._ownerDocument as Document);
74
+
75
+ if (deep) {
76
+ for (const child of this._childNodesInternal) {
77
+ if (child && 'cloneNode' in child) {
78
+ clone.appendChild((child as any).cloneNode(true));
79
+ }
80
+ }
81
+ }
82
+
83
+ return clone;
84
+ }
85
+
86
+ /**
87
+ * Override appendChild to handle DocumentFragment behavior
88
+ * When a DocumentFragment is appended to another node, its children are moved, not the fragment itself
89
+ */
90
+ appendChild<T extends Node>(node: T): T {
91
+ // If the node being appended is a DocumentFragment, move its children instead
92
+ if (node.nodeType === DOCUMENT_FRAGMENT_NODE) {
93
+ const fragment = node as any;
94
+
95
+ // Move all children from fragment to this node
96
+ while (fragment._childNodesInternal && fragment._childNodesInternal.length > 0) {
97
+ const child = fragment._childNodesInternal[0];
98
+ if (child) {
99
+ fragment.removeChild(child);
100
+ super.appendChild(child);
101
+ }
102
+ }
103
+
104
+ return node;
105
+ }
106
+
107
+ return super.appendChild(node);
108
+ }
109
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Options for the getRootNode() method.
3
+ *
4
+ * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/getRootNode)
5
+ */
6
+ export interface GetRootNodeOptions {
7
+ /**
8
+ * A boolean value that indicates whether the shadow root, if any, should be returned.
9
+ * If set to false (default), a shadow root node is not returned.
10
+ * If set to true, a shadow root node is returned.
11
+ */
12
+ composed?: boolean;
13
+ }