@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
package/README.MD ADDED
@@ -0,0 +1,280 @@
1
+ # @dooboostore/dom-parser
2
+
3
+ [![NPM version](https://img.shields.io/npm/v/@dooboostore/dom-parser.svg?style=flat-square)](https://www.npmjs.com/package/@dooboostore/dom-parser)
4
+ [![Build and Test](https://github.com/dooboostore-develop/packages/actions/workflows/main.yaml/badge.svg?branch=main)](https://github.com/dooboostore-develop/packages/actions/workflows/main.yaml)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://opensource.org/licenses/MIT)
6
+
7
+ **Full Documentation:** [https://dooboostore-develop.github.io/packages/dom-parser](https://dooboostore-develop.github.io/packages/dom-parser)
8
+
9
+ A lightweight DOM parser for server-side HTML parsing and manipulation with full DOM API support. Features advanced JavaScript expression parsing for modern framework templates.
10
+
11
+ ---
12
+
13
+ ## Features
14
+
15
+ - **🚀 Advanced JavaScript Expression Parsing**: Handles complex expressions like `${(data) => @this@?.handleChange?.(data)}$`
16
+ - **🎯 Framework Template Support**: Perfect for parsing modern framework templates with custom syntax
17
+ - **⚡ Server-Side DOM**: Complete DOM implementation for Node.js environments without browser dependencies
18
+ - **🔍 CSS Selector Queries**: Full support for `querySelector` and `querySelectorAll` with complex selectors
19
+ - **📦 Multi-Format Support**: Available as ESM, CJS, and UMD bundles
20
+ - **🛡️ TypeScript Support**: Full TypeScript definitions for type-safe development
21
+ - **🪶 Lightweight**: Zero dependencies with fast parsing performance
22
+
23
+ ## Installation
24
+
25
+ ```bash
26
+ # pnpm
27
+ pnpm add @dooboostore/dom-parser
28
+
29
+ # npm
30
+ npm install @dooboostore/dom-parser
31
+
32
+ # yarn
33
+ yarn add @dooboostore/dom-parser
34
+ ```
35
+
36
+ ## Quick Start
37
+
38
+ ### Basic HTML Parsing
39
+
40
+ ```typescript
41
+ import { DomParser } from '@dooboostore/dom-parser';
42
+
43
+ const html = `
44
+ <!DOCTYPE html>
45
+ <html>
46
+ <head>
47
+ <title>Test Page</title>
48
+ </head>
49
+ <body>
50
+ <div id="app">
51
+ <h1>Hello World</h1>
52
+ <p class="content">This is a test paragraph.</p>
53
+ </div>
54
+ </body>
55
+ </html>
56
+ `;
57
+
58
+ const parser = new DomParser(html);
59
+ const document = parser.document;
60
+
61
+ // Use standard DOM APIs
62
+ const title = document.querySelector('title');
63
+ console.log(title?.textContent); // "Test Page"
64
+
65
+ const app = document.getElementById('app');
66
+ console.log(app?.innerHTML); // Contains the div content
67
+ ```
68
+
69
+ ### Quick Setup with parseHTML Utility
70
+
71
+ ```typescript
72
+ import { parseHTML } from '@dooboostore/dom-parser';
73
+
74
+ // Quick way to get window object for SSR
75
+ const window = parseHTML(html);
76
+ const document = window.document;
77
+
78
+ // Perfect for setting up global DOM
79
+ global.window = window;
80
+ global.document = document;
81
+ ```
82
+
83
+ ### Advanced: Framework Template Parsing
84
+
85
+ ```typescript
86
+ import { DomParser } from '@dooboostore/dom-parser';
87
+
88
+ // Parse complex framework templates with JavaScript expressions
89
+ const templateHtml = `
90
+ <div class="container">
91
+ <dr-select
92
+ changeSelected="\${(data) => @this@?.handleSelectChange?.(data, #it#)}$"
93
+ items="@this@.items"
94
+ >
95
+ <option value="1">Option 1</option>
96
+ </dr-select>
97
+ <dr-button
98
+ onClick="\${() => @this@.submit?.()}$"
99
+ disabled="@this@.loading ? 'true' : 'false'"
100
+ >
101
+ Submit
102
+ </dr-button>
103
+ </div>
104
+ `;
105
+
106
+ const parser = new DomParser(templateHtml);
107
+ const document = parser.document;
108
+
109
+ // Access complex attributes
110
+ const select = document.querySelector('dr-select');
111
+ console.log(select?.getAttribute('changeSelected'));
112
+ // "${(data) => @this@?.handleSelectChange?.(data, #it#)}$"
113
+
114
+ const button = document.querySelector('dr-button');
115
+ console.log(button?.getAttribute('onClick'));
116
+ // "${() => @this@.submit?.()}$"
117
+ ```
118
+
119
+ ## API Reference
120
+
121
+ ### DomParser Class
122
+
123
+ #### Constructor
124
+ ```typescript
125
+ new DomParser(html: string, options?: DomParserOptions)
126
+ ```
127
+
128
+ Creates a new DOM parser instance with the provided HTML string.
129
+
130
+ **Parameters:**
131
+ - `html`: HTML string to parse
132
+ - `options`: Optional configuration object
133
+ - `href?: string`: Base URL for the document
134
+
135
+ #### Properties
136
+
137
+ - `document`: Returns the parsed document object with full DOM API support
138
+ - `window`: Returns the window object for server-side rendering compatibility
139
+
140
+ ### parseHTML Utility Function
141
+
142
+ #### Function Signature
143
+ ```typescript
144
+ parseHTML(html: string, options?: DomParserOptions): Window
145
+ ```
146
+
147
+ A convenient utility function that creates a DomParser instance and returns the window object directly.
148
+
149
+ **Usage:**
150
+ ```typescript
151
+ import { parseHTML } from '@dooboostore/dom-parser';
152
+
153
+ // Quick setup for SSR
154
+ const window = parseHTML('<html><body><h1>Hello</h1></body></html>');
155
+ const document = window.document;
156
+
157
+ // Set up globals
158
+ global.window = window;
159
+ global.document = document;
160
+
161
+ // Use DOM APIs immediately
162
+ const h1 = document.querySelector('h1');
163
+ console.log(h1?.textContent); // "Hello"
164
+ ```
165
+
166
+ ### Key Features
167
+
168
+ #### 🚀 Advanced JavaScript Expression Support
169
+
170
+ Handles complex JavaScript expressions that would break other parsers:
171
+
172
+ ```typescript
173
+ // ✅ Supported: Arrow functions with '>' operators
174
+ changeSelected="${(data) => data.value > 0 ? data : null}$"
175
+
176
+ // ✅ Supported: Ternary operators with nested expressions
177
+ condition="${user?.role === 'admin' ? 'show' : 'hide'}$"
178
+
179
+ // ✅ Supported: Framework-specific syntax
180
+ items="@this@.items"
181
+ handler="#item#.onClick"
182
+ ```
183
+
184
+ #### 🔍 Complete DOM API Support
185
+
186
+ - `document.querySelector()` / `document.querySelectorAll()`
187
+ - `document.getElementById()` / `document.getElementsByClassName()`
188
+ - `element.innerHTML` / `element.textContent`
189
+ - `element.setAttribute()` / `element.getAttribute()`
190
+ - `element.appendChild()` / `element.removeChild()`
191
+ - CSS selector parsing with complex expressions
192
+ - Event handling and DOM manipulation
193
+
194
+ ## Use Cases
195
+
196
+ ### 🎯 Framework Template Processing
197
+
198
+ Perfect for processing modern framework templates with complex JavaScript expressions:
199
+
200
+ ```typescript
201
+ import { DomParser } from '@dooboostore/dom-parser';
202
+
203
+ // Parse framework components with complex expressions
204
+ const componentHtml = `
205
+ <my-component
206
+ data-handler="\${(event) => @this@?.onEvent?.(event)}$"
207
+ condition="@user@.isLoggedIn ? 'show' : 'hide'"
208
+ >
209
+ <nested-component items="@data@.items" />
210
+ </my-component>
211
+ `;
212
+
213
+ const parser = new DomParser(componentHtml);
214
+ const component = parser.document.querySelector('my-component');
215
+
216
+ // Extract and process JavaScript expressions
217
+ const handler = component?.getAttribute('data-handler');
218
+ // Safely parse complex expressions without breaking on '>' characters
219
+ ```
220
+
221
+ ### 🔧 Server-Side Rendering (SSR)
222
+
223
+ ```typescript
224
+ import { parseHTML } from '@dooboostore/dom-parser';
225
+
226
+ // Quick setup with parseHTML utility
227
+ const templateHtml = fs.readFileSync('template.html', 'utf8');
228
+ const window = parseHTML(templateHtml);
229
+
230
+ // Set up global DOM for SSR
231
+ global.document = window.document;
232
+ global.window = window;
233
+
234
+ // Now your components can use DOM APIs on the server
235
+ ```
236
+
237
+ **Alternative with DomParser class:**
238
+ ```typescript
239
+ import { DomParser } from '@dooboostore/dom-parser';
240
+
241
+ const parser = new DomParser(templateHtml);
242
+ global.document = parser.document;
243
+ global.window = parser.window;
244
+ ```
245
+
246
+ ### 📝 HTML Processing & Manipulation
247
+
248
+ ```typescript
249
+ import { DomParser } from '@dooboostore/dom-parser';
250
+
251
+ function processHtml(html: string) {
252
+ const parser = new DomParser(html);
253
+ const document = parser.document;
254
+
255
+ // Modify the DOM
256
+ const title = document.querySelector('title');
257
+ if (title) {
258
+ title.textContent = 'Processed Title';
259
+ }
260
+
261
+ // Add meta tags
262
+ const head = document.querySelector('head');
263
+ const meta = document.createElement('meta');
264
+ meta.setAttribute('name', 'description');
265
+ meta.setAttribute('content', 'Processed content');
266
+ head?.appendChild(meta);
267
+
268
+ return document.documentElement.outerHTML;
269
+ }
270
+ ```
271
+
272
+ ## Learn More
273
+
274
+ The detailed API documentation, including all supported DOM methods and usage examples, is available on our documentation website.
275
+
276
+ **[Explore the full @dooboostore/dom-parser documentation &raquo;](https://dooboostore-develop.github.io/packages/dom-parser)**
277
+
278
+ ## License
279
+
280
+ This package is licensed under the [MIT License](https://opensource.org/licenses/MIT).
@@ -0,0 +1,360 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var DomParser_exports = {};
19
+ __export(DomParser_exports, {
20
+ DomParser: () => DomParser
21
+ });
22
+ module.exports = __toCommonJS(DomParser_exports);
23
+ var import_DocumentBase = require("./node/DocumentBase");
24
+ var import_TextBase = require("./node/TextBase");
25
+ var import_Comment = require("./node/Comment");
26
+ var import_WindowBase = require("./window/WindowBase");
27
+ class DomParser {
28
+ constructor(html, option) {
29
+ const document = new import_DocumentBase.DocumentBase();
30
+ const windowBase = new import_WindowBase.WindowBase(document, option?.href);
31
+ this._window = windowBase;
32
+ this._document = document;
33
+ this.parseHTML(html);
34
+ this.setupDocumentReferences();
35
+ if (document && document.simulateLoading) {
36
+ document.simulateLoading();
37
+ }
38
+ }
39
+ get window() {
40
+ return this._window;
41
+ }
42
+ get document() {
43
+ return this._document;
44
+ }
45
+ /**
46
+ * Load new HTML content and replace the current document
47
+ */
48
+ loadHTML(html) {
49
+ this.clearDocument();
50
+ this.parseHTML(html);
51
+ this.setupDocumentReferences();
52
+ }
53
+ clearDocument() {
54
+ if (this.document.head) {
55
+ while (this.document.head.firstChild) {
56
+ this.document.head.removeChild(this.document.head.firstChild);
57
+ }
58
+ }
59
+ if (this.document.body) {
60
+ while (this.document.body.firstChild) {
61
+ this.document.body.removeChild(this.document.body.firstChild);
62
+ }
63
+ }
64
+ }
65
+ parseHTML(html) {
66
+ if (!html.trim()) {
67
+ return;
68
+ }
69
+ this.parseHTMLString(html, this.document);
70
+ }
71
+ parseHTMLString(html, parent) {
72
+ html = html.replace(/<!DOCTYPE[^>]*>/i, "").trim();
73
+ if (!html) return;
74
+ const templateRegex = /<template([^>]*)>(.*?)<\/template>/gs;
75
+ html = html.replace(templateRegex, (match, attributes, content) => {
76
+ const element = this.document.createElement("template");
77
+ if (attributes.trim()) {
78
+ this.parseAttributes(attributes, element);
79
+ }
80
+ if (content.trim()) {
81
+ this.parseHTMLString(content.trim(), element.content);
82
+ }
83
+ parent.appendChild(element);
84
+ return "";
85
+ });
86
+ this.parseHTMLRecursive(html, parent);
87
+ }
88
+ parseHTMLRecursive(html, parent) {
89
+ let position = 0;
90
+ while (position < html.length) {
91
+ const tagStart = html.indexOf("<", position);
92
+ if (tagStart === -1) {
93
+ const remainingText = html.substring(position).trim();
94
+ if (remainingText) {
95
+ const textNode = new import_TextBase.TextBase(remainingText, this.document);
96
+ parent.appendChild(textNode);
97
+ }
98
+ break;
99
+ }
100
+ if (tagStart > position) {
101
+ const textContent = html.substring(position, tagStart).trim();
102
+ if (textContent) {
103
+ const textNode = new import_TextBase.TextBase(textContent, this.document);
104
+ parent.appendChild(textNode);
105
+ }
106
+ }
107
+ if (html.substring(tagStart, tagStart + 4) === "<!--") {
108
+ const commentEnd = html.indexOf("-->", tagStart + 4);
109
+ if (commentEnd !== -1) {
110
+ const commentContent = html.substring(tagStart + 4, commentEnd);
111
+ const commentNode = new import_Comment.Comment(commentContent, this.document);
112
+ parent.appendChild(commentNode);
113
+ position = commentEnd + 3;
114
+ continue;
115
+ } else {
116
+ const textNode = new import_TextBase.TextBase(html.substring(tagStart, tagStart + 4), this.document);
117
+ parent.appendChild(textNode);
118
+ position = tagStart + 4;
119
+ continue;
120
+ }
121
+ }
122
+ const tagEnd = html.indexOf(">", tagStart);
123
+ if (tagEnd === -1) break;
124
+ const tagContent = html.substring(tagStart + 1, tagEnd);
125
+ if (tagContent.startsWith("/")) {
126
+ position = tagEnd + 1;
127
+ break;
128
+ }
129
+ const isSelfClosing = tagContent.endsWith("/") || this.isSelfClosingTag(tagContent.split(/\s+/)[0]);
130
+ const spaceIndex = tagContent.indexOf(" ");
131
+ const tagName = spaceIndex === -1 ? tagContent.replace("/", "") : tagContent.substring(0, spaceIndex);
132
+ let attributes = spaceIndex === -1 ? "" : tagContent.substring(spaceIndex + 1);
133
+ if (attributes.endsWith("/")) {
134
+ attributes = attributes.slice(0, -1).trim();
135
+ }
136
+ const element = this.document.createElement(tagName.toLowerCase());
137
+ if (attributes.trim()) {
138
+ this.parseAttributes(attributes, element);
139
+ }
140
+ parent.appendChild(element);
141
+ if (isSelfClosing) {
142
+ position = tagEnd + 1;
143
+ } else {
144
+ const closingTag = `</${tagName}>`;
145
+ const closingTagIndex = this.findMatchingClosingTag(html, tagEnd + 1, tagName);
146
+ if (closingTagIndex !== -1) {
147
+ const innerContent = html.substring(tagEnd + 1, closingTagIndex);
148
+ if (innerContent.trim()) {
149
+ this.parseHTMLRecursive(innerContent, element);
150
+ }
151
+ position = closingTagIndex + closingTag.length;
152
+ } else {
153
+ position = tagEnd + 1;
154
+ }
155
+ }
156
+ }
157
+ }
158
+ findMatchingClosingTag(html, startPos, tagName) {
159
+ const openTag = `<${tagName}`;
160
+ const closeTag = `</${tagName}>`;
161
+ let depth = 1;
162
+ let pos = startPos;
163
+ while (pos < html.length && depth > 0) {
164
+ const nextOpen = html.indexOf(openTag, pos);
165
+ const nextClose = html.indexOf(closeTag, pos);
166
+ if (nextClose === -1) {
167
+ return -1;
168
+ }
169
+ if (nextOpen !== -1 && nextOpen < nextClose) {
170
+ depth++;
171
+ pos = nextOpen + openTag.length;
172
+ } else {
173
+ depth--;
174
+ if (depth === 0) {
175
+ return nextClose;
176
+ }
177
+ pos = nextClose + closeTag.length;
178
+ }
179
+ }
180
+ return -1;
181
+ }
182
+ parseAttributes(attributeString, element) {
183
+ let position = 0;
184
+ const length = attributeString.length;
185
+ while (position < length) {
186
+ while (position < length && /\s/.test(attributeString[position])) {
187
+ position++;
188
+ }
189
+ if (position >= length) break;
190
+ const nameStart = position;
191
+ while (position < length && /[\w:-]/.test(attributeString[position])) {
192
+ position++;
193
+ }
194
+ if (position === nameStart) {
195
+ position++;
196
+ continue;
197
+ }
198
+ const name = attributeString.substring(nameStart, position);
199
+ while (position < length && /\s/.test(attributeString[position])) {
200
+ position++;
201
+ }
202
+ let value = "";
203
+ if (position < length && attributeString[position] === "=") {
204
+ position++;
205
+ while (position < length && /\s/.test(attributeString[position])) {
206
+ position++;
207
+ }
208
+ if (position < length) {
209
+ const quote = attributeString[position];
210
+ if (quote === '"' || quote === "'") {
211
+ position++;
212
+ const valueStart = position;
213
+ while (position < length && attributeString[position] !== quote) {
214
+ position++;
215
+ }
216
+ value = attributeString.substring(valueStart, position);
217
+ if (position < length && attributeString[position] === quote) {
218
+ position++;
219
+ }
220
+ } else {
221
+ const valueStart = position;
222
+ while (position < length && !/\s/.test(attributeString[position])) {
223
+ position++;
224
+ }
225
+ value = attributeString.substring(valueStart, position);
226
+ }
227
+ }
228
+ }
229
+ value = this.decodeHTMLEntities(value);
230
+ element.setAttribute(name, value);
231
+ }
232
+ }
233
+ /**
234
+ * Decode HTML entities in a string
235
+ */
236
+ decodeHTMLEntities(str) {
237
+ const entityMap = {
238
+ "&amp;": "&",
239
+ "&lt;": "<",
240
+ "&gt;": ">",
241
+ "&quot;": '"',
242
+ "&#39;": "'",
243
+ "&#34;": '"',
244
+ "&apos;": "'",
245
+ "&copy;": "\xA9",
246
+ "&reg;": "\xAE",
247
+ "&trade;": "\u2122",
248
+ "&nbsp;": " ",
249
+ "&hellip;": "\u2026",
250
+ "&mdash;": "\u2014",
251
+ "&ndash;": "\u2013",
252
+ "&lsquo;": "\u2018",
253
+ "&rsquo;": "\u2019",
254
+ "&ldquo;": '"',
255
+ "&rdquo;": '"'
256
+ };
257
+ return str.replace(/&[a-zA-Z0-9#]+;/g, (entity) => {
258
+ if (entityMap[entity]) {
259
+ return entityMap[entity];
260
+ }
261
+ if (entity.startsWith("&#") && entity.endsWith(";")) {
262
+ const numStr = entity.slice(2, -1);
263
+ const num = parseInt(numStr, 10);
264
+ if (!isNaN(num)) {
265
+ return String.fromCharCode(num);
266
+ }
267
+ }
268
+ if (entity.startsWith("&#x") && entity.endsWith(";")) {
269
+ const hexStr = entity.slice(3, -1);
270
+ const num = parseInt(hexStr, 16);
271
+ if (!isNaN(num)) {
272
+ return String.fromCharCode(num);
273
+ }
274
+ }
275
+ return entity;
276
+ });
277
+ }
278
+ isSelfClosingTag(tagName) {
279
+ const selfClosingTags = ["area", "base", "br", "col", "embed", "hr", "img", "input", "link", "meta", "param", "source", "track", "wbr"];
280
+ return selfClosingTags.includes(tagName.toLowerCase());
281
+ }
282
+ /**
283
+ * Set up document references after HTML parsing
284
+ */
285
+ setupDocumentReferences() {
286
+ const allHtmlElements = this.document.querySelectorAll("html");
287
+ const allHeadElements = this.document.querySelectorAll("head");
288
+ const allBodyElements = this.document.querySelectorAll("body");
289
+ let htmlElement = null;
290
+ for (let i = 0; i < allHtmlElements.length; i++) {
291
+ const html = allHtmlElements[i];
292
+ if (html.attributes.length > 0) {
293
+ htmlElement = html;
294
+ break;
295
+ }
296
+ }
297
+ if (!htmlElement) {
298
+ for (let i = 0; i < allHtmlElements.length; i++) {
299
+ const html = allHtmlElements[i];
300
+ if (html.childNodes.length > 0) {
301
+ htmlElement = html;
302
+ break;
303
+ }
304
+ }
305
+ }
306
+ if (!htmlElement && allHtmlElements.length > 0) {
307
+ htmlElement = allHtmlElements[0];
308
+ }
309
+ let headElement = null;
310
+ for (let i = 0; i < allHeadElements.length; i++) {
311
+ const head = allHeadElements[i];
312
+ if (head.childNodes.length > 0) {
313
+ headElement = head;
314
+ break;
315
+ }
316
+ }
317
+ if (!headElement) {
318
+ for (let i = 0; i < allHeadElements.length; i++) {
319
+ const head = allHeadElements[i];
320
+ if (head.attributes.length > 0) {
321
+ headElement = head;
322
+ break;
323
+ }
324
+ }
325
+ }
326
+ if (!headElement && allHeadElements.length > 0) {
327
+ headElement = allHeadElements[0];
328
+ }
329
+ let bodyElement = null;
330
+ for (let i = 0; i < allBodyElements.length; i++) {
331
+ const body = allBodyElements[i];
332
+ if (body.childNodes.length > 0) {
333
+ bodyElement = body;
334
+ break;
335
+ }
336
+ }
337
+ if (!bodyElement) {
338
+ for (let i = 0; i < allBodyElements.length; i++) {
339
+ const body = allBodyElements[i];
340
+ if (body.attributes.length > 0) {
341
+ bodyElement = body;
342
+ break;
343
+ }
344
+ }
345
+ }
346
+ if (!bodyElement && allBodyElements.length > 0) {
347
+ bodyElement = allBodyElements[0];
348
+ }
349
+ if (htmlElement) {
350
+ this.document.documentElement = htmlElement;
351
+ }
352
+ if (headElement) {
353
+ this.document.head = headElement;
354
+ }
355
+ if (bodyElement) {
356
+ this.document.body = bodyElement;
357
+ }
358
+ }
359
+ }
360
+ //# sourceMappingURL=DomParser.js.map