@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.
- package/README.MD +280 -0
- package/dist/cjs/DomParser.js +360 -0
- package/dist/cjs/DomParser.js.map +7 -0
- package/dist/cjs/factory/ElementFactory.js +76 -0
- package/dist/cjs/factory/ElementFactory.js.map +7 -0
- package/dist/cjs/factory/index.js +24 -0
- package/dist/cjs/factory/index.js.map +7 -0
- package/dist/cjs/index.js +34 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/node/CharacterData.js +16 -0
- package/dist/cjs/node/CharacterData.js.map +7 -0
- package/dist/cjs/node/ChildNode.js +16 -0
- package/dist/cjs/node/ChildNode.js.map +7 -0
- package/dist/cjs/node/ChildNodeBase.js +62 -0
- package/dist/cjs/node/ChildNodeBase.js.map +7 -0
- package/dist/cjs/node/Comment.js +86 -0
- package/dist/cjs/node/Comment.js.map +7 -0
- package/dist/cjs/node/Document.js +28 -0
- package/dist/cjs/node/Document.js.map +7 -0
- package/dist/cjs/node/DocumentBase.js +378 -0
- package/dist/cjs/node/DocumentBase.js.map +7 -0
- package/dist/cjs/node/DocumentFragment.js +16 -0
- package/dist/cjs/node/DocumentFragment.js.map +7 -0
- package/dist/cjs/node/DocumentFragmentBase.js +88 -0
- package/dist/cjs/node/DocumentFragmentBase.js.map +7 -0
- package/dist/cjs/node/GetRootNodeOptions.js +16 -0
- package/dist/cjs/node/GetRootNodeOptions.js.map +7 -0
- package/dist/cjs/node/Node.js +58 -0
- package/dist/cjs/node/Node.js.map +7 -0
- package/dist/cjs/node/NodeBase.js +380 -0
- package/dist/cjs/node/NodeBase.js.map +7 -0
- package/dist/cjs/node/NodeIterator.js +163 -0
- package/dist/cjs/node/NodeIterator.js.map +7 -0
- package/dist/cjs/node/ParentNode.js +16 -0
- package/dist/cjs/node/ParentNode.js.map +7 -0
- package/dist/cjs/node/ParentNodeBase.js +134 -0
- package/dist/cjs/node/ParentNodeBase.js.map +7 -0
- package/dist/cjs/node/Text.js +16 -0
- package/dist/cjs/node/Text.js.map +7 -0
- package/dist/cjs/node/TextBase.js +106 -0
- package/dist/cjs/node/TextBase.js.map +7 -0
- package/dist/cjs/node/collection/HTMLCollection.js +105 -0
- package/dist/cjs/node/collection/HTMLCollection.js.map +7 -0
- package/dist/cjs/node/collection/HTMLCollectionOf.js +36 -0
- package/dist/cjs/node/collection/HTMLCollectionOf.js.map +7 -0
- package/dist/cjs/node/collection/NodeList.js +135 -0
- package/dist/cjs/node/collection/NodeList.js.map +7 -0
- package/dist/cjs/node/collection/NodeListOf.js +38 -0
- package/dist/cjs/node/collection/NodeListOf.js.map +7 -0
- package/dist/cjs/node/collection/index.js +30 -0
- package/dist/cjs/node/collection/index.js.map +7 -0
- package/dist/cjs/node/elements/Element.js +16 -0
- package/dist/cjs/node/elements/Element.js.map +7 -0
- package/dist/cjs/node/elements/ElementBase.js +936 -0
- package/dist/cjs/node/elements/ElementBase.js.map +7 -0
- package/dist/cjs/node/elements/HTMLAnchorElement.js +71 -0
- package/dist/cjs/node/elements/HTMLAnchorElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLAreaElement.js +77 -0
- package/dist/cjs/node/elements/HTMLAreaElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLBaseElement.js +77 -0
- package/dist/cjs/node/elements/HTMLBaseElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLBodyElement.js +29 -0
- package/dist/cjs/node/elements/HTMLBodyElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLButtonElement.js +89 -0
- package/dist/cjs/node/elements/HTMLButtonElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLCanvasElement.js +79 -0
- package/dist/cjs/node/elements/HTMLCanvasElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLCaptionElement.js +41 -0
- package/dist/cjs/node/elements/HTMLCaptionElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLDivElement.js +29 -0
- package/dist/cjs/node/elements/HTMLDivElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLElement.js +16 -0
- package/dist/cjs/node/elements/HTMLElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLElementBase.js +182 -0
- package/dist/cjs/node/elements/HTMLElementBase.js.map +7 -0
- package/dist/cjs/node/elements/HTMLEmbedElement.js +45 -0
- package/dist/cjs/node/elements/HTMLEmbedElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLFormElement.js +127 -0
- package/dist/cjs/node/elements/HTMLFormElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLGenericElement.js +32 -0
- package/dist/cjs/node/elements/HTMLGenericElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLH1Element.js +29 -0
- package/dist/cjs/node/elements/HTMLH1Element.js.map +7 -0
- package/dist/cjs/node/elements/HTMLHeadElement.js +29 -0
- package/dist/cjs/node/elements/HTMLHeadElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLHtmlElement.js +92 -0
- package/dist/cjs/node/elements/HTMLHtmlElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLImgElement.js +99 -0
- package/dist/cjs/node/elements/HTMLImgElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLInputElement.js +157 -0
- package/dist/cjs/node/elements/HTMLInputElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLLIElement.js +57 -0
- package/dist/cjs/node/elements/HTMLLIElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLLinkElement.js +99 -0
- package/dist/cjs/node/elements/HTMLLinkElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLMetaElement.js +29 -0
- package/dist/cjs/node/elements/HTMLMetaElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLOListElement.js +89 -0
- package/dist/cjs/node/elements/HTMLOListElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLPElement.js +29 -0
- package/dist/cjs/node/elements/HTMLPElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLScriptElement.js +127 -0
- package/dist/cjs/node/elements/HTMLScriptElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLSpanElement.js +29 -0
- package/dist/cjs/node/elements/HTMLSpanElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLStyleElement.js +71 -0
- package/dist/cjs/node/elements/HTMLStyleElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLTableElement.js +112 -0
- package/dist/cjs/node/elements/HTMLTableElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLTbodyElement.js +54 -0
- package/dist/cjs/node/elements/HTMLTbodyElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLTdElement.js +72 -0
- package/dist/cjs/node/elements/HTMLTdElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLTemplateElement.js +97 -0
- package/dist/cjs/node/elements/HTMLTemplateElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLTfootElement.js +56 -0
- package/dist/cjs/node/elements/HTMLTfootElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLThElement.js +72 -0
- package/dist/cjs/node/elements/HTMLThElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLTheadElement.js +54 -0
- package/dist/cjs/node/elements/HTMLTheadElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLTitleElement.js +38 -0
- package/dist/cjs/node/elements/HTMLTitleElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLTrElement.js +77 -0
- package/dist/cjs/node/elements/HTMLTrElement.js.map +7 -0
- package/dist/cjs/node/elements/HTMLUListElement.js +29 -0
- package/dist/cjs/node/elements/HTMLUListElement.js.map +7 -0
- package/dist/cjs/node/elements/MathMLElement.js +32 -0
- package/dist/cjs/node/elements/MathMLElement.js.map +7 -0
- package/dist/cjs/node/elements/SVGCircleElement.js +69 -0
- package/dist/cjs/node/elements/SVGCircleElement.js.map +7 -0
- package/dist/cjs/node/elements/SVGElement.js +32 -0
- package/dist/cjs/node/elements/SVGElement.js.map +7 -0
- package/dist/cjs/node/elements/SVGRectElement.js +80 -0
- package/dist/cjs/node/elements/SVGRectElement.js.map +7 -0
- package/dist/cjs/node/elements/index.js +183 -0
- package/dist/cjs/node/elements/index.js.map +7 -0
- package/dist/cjs/node/index.js +73 -0
- package/dist/cjs/node/index.js.map +7 -0
- package/dist/cjs/package.json +5 -0
- package/dist/cjs/utils/CSSSelector.js +271 -0
- package/dist/cjs/utils/CSSSelector.js.map +7 -0
- package/dist/cjs/window/Window.js +16 -0
- package/dist/cjs/window/Window.js.map +7 -0
- package/dist/cjs/window/WindowBase.js +847 -0
- package/dist/cjs/window/WindowBase.js.map +7 -0
- package/dist/cjs/window/index.js +29 -0
- package/dist/cjs/window/index.js.map +7 -0
- package/dist/esm/DomParser.js +341 -0
- package/dist/esm/DomParser.js.map +7 -0
- package/dist/esm/factory/ElementFactory.js +57 -0
- package/dist/esm/factory/ElementFactory.js.map +7 -0
- package/dist/esm/factory/index.js +5 -0
- package/dist/esm/factory/index.js.map +7 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +7 -0
- package/dist/esm/node/CharacterData.js +1 -0
- package/dist/esm/node/CharacterData.js.map +7 -0
- package/dist/esm/node/ChildNode.js +1 -0
- package/dist/esm/node/ChildNode.js.map +7 -0
- package/dist/esm/node/ChildNodeBase.js +43 -0
- package/dist/esm/node/ChildNodeBase.js.map +7 -0
- package/dist/esm/node/Comment.js +67 -0
- package/dist/esm/node/Comment.js.map +7 -0
- package/dist/esm/node/Document.js +9 -0
- package/dist/esm/node/Document.js.map +7 -0
- package/dist/esm/node/DocumentBase.js +359 -0
- package/dist/esm/node/DocumentBase.js.map +7 -0
- package/dist/esm/node/DocumentFragment.js +1 -0
- package/dist/esm/node/DocumentFragment.js.map +7 -0
- package/dist/esm/node/DocumentFragmentBase.js +69 -0
- package/dist/esm/node/DocumentFragmentBase.js.map +7 -0
- package/dist/esm/node/GetRootNodeOptions.js +1 -0
- package/dist/esm/node/GetRootNodeOptions.js.map +7 -0
- package/dist/esm/node/Node.js +39 -0
- package/dist/esm/node/Node.js.map +7 -0
- package/dist/esm/node/NodeBase.js +380 -0
- package/dist/esm/node/NodeBase.js.map +7 -0
- package/dist/esm/node/NodeIterator.js +144 -0
- package/dist/esm/node/NodeIterator.js.map +7 -0
- package/dist/esm/node/ParentNode.js +1 -0
- package/dist/esm/node/ParentNode.js.map +7 -0
- package/dist/esm/node/ParentNodeBase.js +115 -0
- package/dist/esm/node/ParentNodeBase.js.map +7 -0
- package/dist/esm/node/Text.js +1 -0
- package/dist/esm/node/Text.js.map +7 -0
- package/dist/esm/node/TextBase.js +87 -0
- package/dist/esm/node/TextBase.js.map +7 -0
- package/dist/esm/node/collection/HTMLCollection.js +86 -0
- package/dist/esm/node/collection/HTMLCollection.js.map +7 -0
- package/dist/esm/node/collection/HTMLCollectionOf.js +17 -0
- package/dist/esm/node/collection/HTMLCollectionOf.js.map +7 -0
- package/dist/esm/node/collection/NodeList.js +116 -0
- package/dist/esm/node/collection/NodeList.js.map +7 -0
- package/dist/esm/node/collection/NodeListOf.js +19 -0
- package/dist/esm/node/collection/NodeListOf.js.map +7 -0
- package/dist/esm/node/collection/index.js +11 -0
- package/dist/esm/node/collection/index.js.map +7 -0
- package/dist/esm/node/elements/Element.js +1 -0
- package/dist/esm/node/elements/Element.js.map +7 -0
- package/dist/esm/node/elements/ElementBase.js +917 -0
- package/dist/esm/node/elements/ElementBase.js.map +7 -0
- package/dist/esm/node/elements/HTMLAnchorElement.js +52 -0
- package/dist/esm/node/elements/HTMLAnchorElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLAreaElement.js +58 -0
- package/dist/esm/node/elements/HTMLAreaElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLBaseElement.js +58 -0
- package/dist/esm/node/elements/HTMLBaseElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLBodyElement.js +10 -0
- package/dist/esm/node/elements/HTMLBodyElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLButtonElement.js +70 -0
- package/dist/esm/node/elements/HTMLButtonElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLCanvasElement.js +60 -0
- package/dist/esm/node/elements/HTMLCanvasElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLCaptionElement.js +22 -0
- package/dist/esm/node/elements/HTMLCaptionElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLDivElement.js +10 -0
- package/dist/esm/node/elements/HTMLDivElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLElement.js +1 -0
- package/dist/esm/node/elements/HTMLElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLElementBase.js +163 -0
- package/dist/esm/node/elements/HTMLElementBase.js.map +7 -0
- package/dist/esm/node/elements/HTMLEmbedElement.js +26 -0
- package/dist/esm/node/elements/HTMLEmbedElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLFormElement.js +108 -0
- package/dist/esm/node/elements/HTMLFormElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLGenericElement.js +13 -0
- package/dist/esm/node/elements/HTMLGenericElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLH1Element.js +10 -0
- package/dist/esm/node/elements/HTMLH1Element.js.map +7 -0
- package/dist/esm/node/elements/HTMLHeadElement.js +10 -0
- package/dist/esm/node/elements/HTMLHeadElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLHtmlElement.js +73 -0
- package/dist/esm/node/elements/HTMLHtmlElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLImgElement.js +80 -0
- package/dist/esm/node/elements/HTMLImgElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLInputElement.js +138 -0
- package/dist/esm/node/elements/HTMLInputElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLLIElement.js +38 -0
- package/dist/esm/node/elements/HTMLLIElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLLinkElement.js +80 -0
- package/dist/esm/node/elements/HTMLLinkElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLMetaElement.js +10 -0
- package/dist/esm/node/elements/HTMLMetaElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLOListElement.js +70 -0
- package/dist/esm/node/elements/HTMLOListElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLPElement.js +10 -0
- package/dist/esm/node/elements/HTMLPElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLScriptElement.js +108 -0
- package/dist/esm/node/elements/HTMLScriptElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLSpanElement.js +10 -0
- package/dist/esm/node/elements/HTMLSpanElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLStyleElement.js +52 -0
- package/dist/esm/node/elements/HTMLStyleElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLTableElement.js +93 -0
- package/dist/esm/node/elements/HTMLTableElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLTbodyElement.js +35 -0
- package/dist/esm/node/elements/HTMLTbodyElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLTdElement.js +53 -0
- package/dist/esm/node/elements/HTMLTdElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLTemplateElement.js +78 -0
- package/dist/esm/node/elements/HTMLTemplateElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLTfootElement.js +37 -0
- package/dist/esm/node/elements/HTMLTfootElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLThElement.js +53 -0
- package/dist/esm/node/elements/HTMLThElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLTheadElement.js +35 -0
- package/dist/esm/node/elements/HTMLTheadElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLTitleElement.js +19 -0
- package/dist/esm/node/elements/HTMLTitleElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLTrElement.js +58 -0
- package/dist/esm/node/elements/HTMLTrElement.js.map +7 -0
- package/dist/esm/node/elements/HTMLUListElement.js +10 -0
- package/dist/esm/node/elements/HTMLUListElement.js.map +7 -0
- package/dist/esm/node/elements/MathMLElement.js +13 -0
- package/dist/esm/node/elements/MathMLElement.js.map +7 -0
- package/dist/esm/node/elements/SVGCircleElement.js +50 -0
- package/dist/esm/node/elements/SVGCircleElement.js.map +7 -0
- package/dist/esm/node/elements/SVGElement.js +13 -0
- package/dist/esm/node/elements/SVGElement.js.map +7 -0
- package/dist/esm/node/elements/SVGRectElement.js +61 -0
- package/dist/esm/node/elements/SVGRectElement.js.map +7 -0
- package/dist/esm/node/elements/index.js +164 -0
- package/dist/esm/node/elements/index.js.map +7 -0
- package/dist/esm/node/index.js +53 -0
- package/dist/esm/node/index.js.map +7 -0
- package/dist/esm/utils/CSSSelector.js +252 -0
- package/dist/esm/utils/CSSSelector.js.map +7 -0
- package/dist/esm/window/Window.js +1 -0
- package/dist/esm/window/Window.js.map +7 -0
- package/dist/esm/window/WindowBase.js +828 -0
- package/dist/esm/window/WindowBase.js.map +7 -0
- package/dist/esm/window/index.js +10 -0
- package/dist/esm/window/index.js.map +7 -0
- package/dist/esm-bundle/dooboostore-dom-parser.esm.js +6176 -0
- package/dist/esm-bundle/dooboostore-dom-parser.esm.js.map +7 -0
- package/dist/types/DomParser.d.ts +30 -0
- package/dist/types/DomParser.d.ts.map +1 -0
- package/dist/types/factory/ElementFactory.d.ts +27 -0
- package/dist/types/factory/ElementFactory.d.ts.map +1 -0
- package/dist/types/factory/index.d.ts +2 -0
- package/dist/types/factory/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/node/CharacterData.d.ts +52 -0
- package/dist/types/node/CharacterData.d.ts.map +1 -0
- package/dist/types/node/ChildNode.d.ts +39 -0
- package/dist/types/node/ChildNode.d.ts.map +1 -0
- package/dist/types/node/ChildNodeBase.d.ts +12 -0
- package/dist/types/node/ChildNodeBase.d.ts.map +1 -0
- package/dist/types/node/Comment.d.ts +26 -0
- package/dist/types/node/Comment.d.ts.map +1 -0
- package/dist/types/node/Document.d.ts +857 -0
- package/dist/types/node/Document.d.ts.map +1 -0
- package/dist/types/node/DocumentBase.d.ts +153 -0
- package/dist/types/node/DocumentBase.d.ts.map +1 -0
- package/dist/types/node/DocumentFragment.d.ts +39 -0
- package/dist/types/node/DocumentFragment.d.ts.map +1 -0
- package/dist/types/node/DocumentFragmentBase.d.ts +51 -0
- package/dist/types/node/DocumentFragmentBase.d.ts.map +1 -0
- package/dist/types/node/GetRootNodeOptions.d.ts +14 -0
- package/dist/types/node/GetRootNodeOptions.d.ts.map +1 -0
- package/dist/types/node/Node.d.ts +232 -0
- package/dist/types/node/Node.d.ts.map +1 -0
- package/dist/types/node/NodeBase.d.ts +98 -0
- package/dist/types/node/NodeBase.d.ts.map +1 -0
- package/dist/types/node/NodeIterator.d.ts +61 -0
- package/dist/types/node/NodeIterator.d.ts.map +1 -0
- package/dist/types/node/ParentNode.d.ts +85 -0
- package/dist/types/node/ParentNode.d.ts.map +1 -0
- package/dist/types/node/ParentNodeBase.d.ts +22 -0
- package/dist/types/node/ParentNodeBase.d.ts.map +1 -0
- package/dist/types/node/Text.d.ts +25 -0
- package/dist/types/node/Text.d.ts.map +1 -0
- package/dist/types/node/TextBase.d.ts +26 -0
- package/dist/types/node/TextBase.d.ts.map +1 -0
- package/dist/types/node/collection/HTMLCollection.d.ts +37 -0
- package/dist/types/node/collection/HTMLCollection.d.ts.map +1 -0
- package/dist/types/node/collection/HTMLCollectionOf.d.ts +14 -0
- package/dist/types/node/collection/HTMLCollectionOf.d.ts.map +1 -0
- package/dist/types/node/collection/NodeList.d.ts +55 -0
- package/dist/types/node/collection/NodeList.d.ts.map +1 -0
- package/dist/types/node/collection/NodeListOf.d.ts +14 -0
- package/dist/types/node/collection/NodeListOf.d.ts.map +1 -0
- package/dist/types/node/collection/index.d.ts +5 -0
- package/dist/types/node/collection/index.d.ts.map +1 -0
- package/dist/types/node/elements/Element.d.ts +687 -0
- package/dist/types/node/elements/Element.d.ts.map +1 -0
- package/dist/types/node/elements/ElementBase.d.ts +143 -0
- package/dist/types/node/elements/ElementBase.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLAnchorElement.d.ts +18 -0
- package/dist/types/node/elements/HTMLAnchorElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLAreaElement.d.ts +59 -0
- package/dist/types/node/elements/HTMLAreaElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLBaseElement.d.ts +25 -0
- package/dist/types/node/elements/HTMLBaseElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLBodyElement.d.ts +10 -0
- package/dist/types/node/elements/HTMLBodyElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLButtonElement.d.ts +21 -0
- package/dist/types/node/elements/HTMLButtonElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLCanvasElement.d.ts +15 -0
- package/dist/types/node/elements/HTMLCanvasElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLCaptionElement.d.ts +18 -0
- package/dist/types/node/elements/HTMLCaptionElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLDivElement.d.ts +10 -0
- package/dist/types/node/elements/HTMLDivElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLElement.d.ts +90 -0
- package/dist/types/node/elements/HTMLElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLElementBase.d.ts +42 -0
- package/dist/types/node/elements/HTMLElementBase.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLEmbedElement.d.ts +27 -0
- package/dist/types/node/elements/HTMLEmbedElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLFormElement.d.ts +30 -0
- package/dist/types/node/elements/HTMLFormElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLGenericElement.d.ts +6 -0
- package/dist/types/node/elements/HTMLGenericElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLH1Element.d.ts +10 -0
- package/dist/types/node/elements/HTMLH1Element.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLHeadElement.d.ts +10 -0
- package/dist/types/node/elements/HTMLHeadElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLHtmlElement.d.ts +17 -0
- package/dist/types/node/elements/HTMLHtmlElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLImgElement.d.ts +24 -0
- package/dist/types/node/elements/HTMLImgElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLInputElement.d.ts +33 -0
- package/dist/types/node/elements/HTMLInputElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLLIElement.d.ts +15 -0
- package/dist/types/node/elements/HTMLLIElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLLinkElement.d.ts +24 -0
- package/dist/types/node/elements/HTMLLinkElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLMetaElement.d.ts +10 -0
- package/dist/types/node/elements/HTMLMetaElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLOListElement.d.ts +21 -0
- package/dist/types/node/elements/HTMLOListElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLPElement.d.ts +10 -0
- package/dist/types/node/elements/HTMLPElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLScriptElement.d.ts +29 -0
- package/dist/types/node/elements/HTMLScriptElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLSpanElement.d.ts +10 -0
- package/dist/types/node/elements/HTMLSpanElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLStyleElement.d.ts +18 -0
- package/dist/types/node/elements/HTMLStyleElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLTableElement.d.ts +25 -0
- package/dist/types/node/elements/HTMLTableElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLTbodyElement.d.ts +15 -0
- package/dist/types/node/elements/HTMLTbodyElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLTdElement.d.ts +21 -0
- package/dist/types/node/elements/HTMLTdElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLTemplateElement.d.ts +32 -0
- package/dist/types/node/elements/HTMLTemplateElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLTfootElement.d.ts +16 -0
- package/dist/types/node/elements/HTMLTfootElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLThElement.d.ts +21 -0
- package/dist/types/node/elements/HTMLThElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLTheadElement.d.ts +15 -0
- package/dist/types/node/elements/HTMLTheadElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLTitleElement.d.ts +15 -0
- package/dist/types/node/elements/HTMLTitleElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLTrElement.d.ts +17 -0
- package/dist/types/node/elements/HTMLTrElement.d.ts.map +1 -0
- package/dist/types/node/elements/HTMLUListElement.d.ts +10 -0
- package/dist/types/node/elements/HTMLUListElement.d.ts.map +1 -0
- package/dist/types/node/elements/MathMLElement.d.ts +11 -0
- package/dist/types/node/elements/MathMLElement.d.ts.map +1 -0
- package/dist/types/node/elements/SVGCircleElement.d.ts +20 -0
- package/dist/types/node/elements/SVGCircleElement.d.ts.map +1 -0
- package/dist/types/node/elements/SVGElement.d.ts +11 -0
- package/dist/types/node/elements/SVGElement.d.ts.map +1 -0
- package/dist/types/node/elements/SVGRectElement.d.ts +23 -0
- package/dist/types/node/elements/SVGRectElement.d.ts.map +1 -0
- package/dist/types/node/elements/index.d.ts +128 -0
- package/dist/types/node/elements/index.d.ts.map +1 -0
- package/dist/types/node/index.d.ts +16 -0
- package/dist/types/node/index.d.ts.map +1 -0
- package/dist/types/utils/CSSSelector.d.ts +36 -0
- package/dist/types/utils/CSSSelector.d.ts.map +1 -0
- package/dist/types/window/Window.d.ts +620 -0
- package/dist/types/window/Window.d.ts.map +1 -0
- package/dist/types/window/WindowBase.d.ts +342 -0
- package/dist/types/window/WindowBase.d.ts.map +1 -0
- package/dist/types/window/index.d.ts +3 -0
- package/dist/types/window/index.d.ts.map +1 -0
- package/dist/umd-bundle/dooboostore-dom-parser.umd.js +6182 -0
- package/dist/umd-bundle/dooboostore-dom-parser.umd.js.map +7 -0
- package/package.json +120 -0
- package/src/DomParser.ts +491 -0
- package/src/factory/ElementFactory.ts +69 -0
- package/src/factory/index.ts +1 -0
- package/src/index.ts +28 -0
- package/src/node/CharacterData.ts +58 -0
- package/src/node/ChildNode.ts +42 -0
- package/src/node/ChildNodeBase.ts +54 -0
- package/src/node/Comment.ts +98 -0
- package/src/node/Document.ts +882 -0
- package/src/node/DocumentBase.ts +465 -0
- package/src/node/DocumentFragment.ts +44 -0
- package/src/node/DocumentFragmentBase.ts +109 -0
- package/src/node/GetRootNodeOptions.ts +13 -0
- package/src/node/Node.ts +245 -0
- package/src/node/NodeBase.ts +506 -0
- package/src/node/NodeIterator.ts +200 -0
- package/src/node/ParentNode.ts +93 -0
- package/src/node/ParentNodeBase.ts +145 -0
- package/src/node/Text.ts +30 -0
- package/src/node/TextBase.ts +113 -0
- package/src/node/collection/HTMLCollection.ts +107 -0
- package/src/node/collection/HTMLCollectionOf.ts +26 -0
- package/src/node/collection/NodeList.ts +140 -0
- package/src/node/collection/NodeListOf.ts +28 -0
- package/src/node/collection/index.ts +4 -0
- package/src/node/elements/Element.ts +771 -0
- package/src/node/elements/ElementBase.ts +1239 -0
- package/src/node/elements/HTMLAnchorElement.ts +63 -0
- package/src/node/elements/HTMLAreaElement.ts +73 -0
- package/src/node/elements/HTMLBaseElement.ts +70 -0
- package/src/node/elements/HTMLBodyElement.ts +12 -0
- package/src/node/elements/HTMLButtonElement.ts +83 -0
- package/src/node/elements/HTMLCanvasElement.ts +71 -0
- package/src/node/elements/HTMLCaptionElement.ts +26 -0
- package/src/node/elements/HTMLDivElement.ts +12 -0
- package/src/node/elements/HTMLElement.ts +105 -0
- package/src/node/elements/HTMLElementBase.ts +198 -0
- package/src/node/elements/HTMLEmbedElement.ts +33 -0
- package/src/node/elements/HTMLFormElement.ts +131 -0
- package/src/node/elements/HTMLGenericElement.ts +13 -0
- package/src/node/elements/HTMLH1Element.ts +12 -0
- package/src/node/elements/HTMLHeadElement.ts +12 -0
- package/src/node/elements/HTMLHtmlElement.ts +82 -0
- package/src/node/elements/HTMLImgElement.ts +96 -0
- package/src/node/elements/HTMLInputElement.ts +160 -0
- package/src/node/elements/HTMLLIElement.ts +47 -0
- package/src/node/elements/HTMLLinkElement.ts +95 -0
- package/src/node/elements/HTMLMetaElement.ts +12 -0
- package/src/node/elements/HTMLOListElement.ts +83 -0
- package/src/node/elements/HTMLPElement.ts +12 -0
- package/src/node/elements/HTMLScriptElement.ts +127 -0
- package/src/node/elements/HTMLSpanElement.ts +12 -0
- package/src/node/elements/HTMLStyleElement.ts +63 -0
- package/src/node/elements/HTMLTableElement.ts +117 -0
- package/src/node/elements/HTMLTbodyElement.ts +46 -0
- package/src/node/elements/HTMLTdElement.ts +67 -0
- package/src/node/elements/HTMLTemplateElement.ts +112 -0
- package/src/node/elements/HTMLTfootElement.ts +47 -0
- package/src/node/elements/HTMLThElement.ts +67 -0
- package/src/node/elements/HTMLTheadElement.ts +46 -0
- package/src/node/elements/HTMLTitleElement.ts +23 -0
- package/src/node/elements/HTMLTrElement.ts +72 -0
- package/src/node/elements/HTMLUListElement.ts +12 -0
- package/src/node/elements/MathMLElement.ts +16 -0
- package/src/node/elements/SVGCircleElement.ts +61 -0
- package/src/node/elements/SVGElement.ts +16 -0
- package/src/node/elements/SVGRectElement.ts +74 -0
- package/src/node/elements/index.ts +186 -0
- package/src/node/index.ts +28 -0
- package/src/utils/CSSSelector.ts +360 -0
- package/src/window/Window.ts +715 -0
- package/src/window/WindowBase.ts +1018 -0
- package/src/window/index.ts +2 -0
- package/tsconfig.json +24 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Node } from './Node';
|
|
2
|
+
import { NodeListOf } from './collection/NodeListOf';
|
|
3
|
+
import { HTMLCollection } from './collection/HTMLCollection';
|
|
4
|
+
import { Element } from './elements/Element';
|
|
5
|
+
import {HTMLElementDeprecatedTagNameMap, HTMLElementTagNameMap, MathMLElementTagNameMap, SVGElementTagNameMap} from "./elements";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The **`ParentNode`** interface contains methods and properties that are common to all types of Node objects that can have children.
|
|
9
|
+
*
|
|
10
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/ParentNode)
|
|
11
|
+
*/
|
|
12
|
+
export interface ParentNode extends Node {
|
|
13
|
+
/**
|
|
14
|
+
* Returns the number of child elements of this ParentNode.
|
|
15
|
+
*
|
|
16
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/childElementCount)
|
|
17
|
+
*/
|
|
18
|
+
readonly childElementCount: number;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Returns the child elements.
|
|
22
|
+
*
|
|
23
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/children)
|
|
24
|
+
*/
|
|
25
|
+
readonly children: HTMLCollection;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Returns the first child that is an element, and null otherwise.
|
|
29
|
+
*
|
|
30
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/firstElementChild)
|
|
31
|
+
*/
|
|
32
|
+
readonly firstElementChild: Element | null;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Returns the last child that is an element, and null otherwise.
|
|
36
|
+
*
|
|
37
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/lastElementChild)
|
|
38
|
+
*/
|
|
39
|
+
readonly lastElementChild: Element | null;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Inserts nodes after the last child of node, while replacing strings in nodes with equivalent Text nodes.
|
|
43
|
+
*
|
|
44
|
+
* Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
|
|
45
|
+
*
|
|
46
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/append)
|
|
47
|
+
*/
|
|
48
|
+
append(...nodes: (Node | string)[]): void;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Inserts nodes before the first child of node, while replacing strings in nodes with equivalent Text nodes.
|
|
52
|
+
*
|
|
53
|
+
* Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
|
|
54
|
+
*
|
|
55
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/prepend)
|
|
56
|
+
*/
|
|
57
|
+
prepend(...nodes: (Node | string)[]): void;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Returns the first element that is a descendant of node that matches selectors.
|
|
61
|
+
*
|
|
62
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/querySelector)
|
|
63
|
+
*/
|
|
64
|
+
querySelector<K extends keyof HTMLElementTagNameMap>(selectors: K): HTMLElementTagNameMap[K] | null;
|
|
65
|
+
querySelector<K extends keyof SVGElementTagNameMap>(selectors: K): SVGElementTagNameMap[K] | null;
|
|
66
|
+
querySelector<K extends keyof MathMLElementTagNameMap>(selectors: K): MathMLElementTagNameMap[K] | null;
|
|
67
|
+
/** @deprecated */
|
|
68
|
+
querySelector<K extends keyof HTMLElementDeprecatedTagNameMap>(selectors: K): HTMLElementDeprecatedTagNameMap[K] | null;
|
|
69
|
+
querySelector<E extends Element = Element>(selectors: string): E | null;
|
|
70
|
+
querySelector(selectors: string): Element | null;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Returns all element descendants of node that match selectors.
|
|
74
|
+
*
|
|
75
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/querySelectorAll)
|
|
76
|
+
*/
|
|
77
|
+
querySelectorAll<K extends keyof HTMLElementTagNameMap>(selectors: K): NodeListOf<HTMLElementTagNameMap[K]>;
|
|
78
|
+
querySelectorAll<K extends keyof SVGElementTagNameMap>(selectors: K): NodeListOf<SVGElementTagNameMap[K]>;
|
|
79
|
+
querySelectorAll<K extends keyof MathMLElementTagNameMap>(selectors: K): NodeListOf<MathMLElementTagNameMap[K]>;
|
|
80
|
+
/** @deprecated */
|
|
81
|
+
querySelectorAll<K extends keyof HTMLElementDeprecatedTagNameMap>(selectors: K): NodeListOf<HTMLElementDeprecatedTagNameMap[K]>;
|
|
82
|
+
querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E>;
|
|
83
|
+
querySelectorAll(selectors: string): NodeListOf<Element>;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Replace all children of node with nodes, while replacing strings in nodes with equivalent Text nodes.
|
|
87
|
+
*
|
|
88
|
+
* Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.
|
|
89
|
+
*
|
|
90
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/replaceChildren)
|
|
91
|
+
*/
|
|
92
|
+
replaceChildren(...nodes: (Node | string)[]): void;
|
|
93
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { Node } from './Node';
|
|
2
|
+
import { ChildNodeBase } from './ChildNodeBase';
|
|
3
|
+
import { ParentNode } from './ParentNode';
|
|
4
|
+
import { Element } from './elements/Element';
|
|
5
|
+
import { HTMLCollection } from './collection/HTMLCollection';
|
|
6
|
+
import { NodeListOf } from './collection/NodeListOf';
|
|
7
|
+
import { ELEMENT_NODE, TEXT_NODE } from './Node';
|
|
8
|
+
import { TextBase } from './TextBase';
|
|
9
|
+
import { CSSSelector } from '../utils/CSSSelector';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Base implementation of the ParentNode interface
|
|
13
|
+
*/
|
|
14
|
+
export abstract class ParentNodeBase extends ChildNodeBase implements ParentNode {
|
|
15
|
+
|
|
16
|
+
// ParentNode interface implementation
|
|
17
|
+
get childElementCount(): number {
|
|
18
|
+
let count = 0;
|
|
19
|
+
for (const child of this._childNodesInternal) {
|
|
20
|
+
if (child && child.nodeType === ELEMENT_NODE) {
|
|
21
|
+
count++;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return count;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
get children(): HTMLCollection {
|
|
28
|
+
const elements: Element[] = [];
|
|
29
|
+
for (const child of this._childNodesInternal) {
|
|
30
|
+
if (child && child.nodeType === ELEMENT_NODE) {
|
|
31
|
+
elements.push(child as unknown as Element);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return new HTMLCollection(elements);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
get firstElementChild(): Element | null {
|
|
38
|
+
for (const child of this._childNodesInternal) {
|
|
39
|
+
if (child && child.nodeType === ELEMENT_NODE) {
|
|
40
|
+
return child as unknown as Element;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
get lastElementChild(): Element | null {
|
|
47
|
+
for (let i = this._childNodesInternal.length - 1; i >= 0; i--) {
|
|
48
|
+
const child = this._childNodesInternal[i];
|
|
49
|
+
if (child && child.nodeType === ELEMENT_NODE) {
|
|
50
|
+
return child as unknown as Element;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
append(...nodes: (Node | string)[]): void {
|
|
57
|
+
for (const node of nodes) {
|
|
58
|
+
if (typeof node === 'string') {
|
|
59
|
+
const textNode = new TextBase(node, this._ownerDocument);
|
|
60
|
+
this.appendChild(textNode);
|
|
61
|
+
} else {
|
|
62
|
+
this.appendChild(node);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
prepend(...nodes: (Node | string)[]): void {
|
|
68
|
+
const firstChild = this.firstChild;
|
|
69
|
+
for (const node of nodes) {
|
|
70
|
+
if (typeof node === 'string') {
|
|
71
|
+
const textNode = new TextBase(node, this._ownerDocument);
|
|
72
|
+
this.insertBefore(textNode, firstChild);
|
|
73
|
+
} else {
|
|
74
|
+
this.insertBefore(node, firstChild);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
replaceChildren(...nodes: (Node | string)[]): void {
|
|
80
|
+
// Remove all existing children
|
|
81
|
+
while (this._childNodesInternal.length > 0) {
|
|
82
|
+
const child = this._childNodesInternal[0];
|
|
83
|
+
if (child) {
|
|
84
|
+
this.removeChild(child);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Add new nodes
|
|
89
|
+
this.append(...nodes);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Query selector implementation
|
|
93
|
+
querySelector<E extends Element>(selectors: string): E | null {
|
|
94
|
+
const elements = this.querySelectorAll(selectors);
|
|
95
|
+
return elements.length > 0 ? elements.item(0) as E: null;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E> {
|
|
99
|
+
const results: E[] = [];
|
|
100
|
+
|
|
101
|
+
// Split selectors by comma and process each one
|
|
102
|
+
const selectorList = selectors.split(',').map(s => s.trim());
|
|
103
|
+
|
|
104
|
+
for (const selector of selectorList) {
|
|
105
|
+
if (selector) {
|
|
106
|
+
this._querySelectorAllRecursive(selector, results);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Remove duplicates while preserving order
|
|
111
|
+
const uniqueResults: E[] = [];
|
|
112
|
+
const seen = new Set();
|
|
113
|
+
for (const element of results) {
|
|
114
|
+
if (!seen.has(element)) {
|
|
115
|
+
seen.add(element);
|
|
116
|
+
uniqueResults.push(element);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return new NodeListOf<E>(uniqueResults);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Private helper methods for querySelector
|
|
124
|
+
private _querySelectorAllRecursive(selectors: string, results: Element[]): void {
|
|
125
|
+
for (const child of this._childNodesInternal) {
|
|
126
|
+
if (child && child.nodeType === ELEMENT_NODE) {
|
|
127
|
+
const element = child as unknown as Element;
|
|
128
|
+
|
|
129
|
+
// Check if this element matches the selector
|
|
130
|
+
if (CSSSelector.matches(element, selectors)) {
|
|
131
|
+
results.push(element);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Recursively search in child elements
|
|
135
|
+
if (child instanceof ParentNodeBase) {
|
|
136
|
+
child._querySelectorAllRecursive(selectors, results);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// TextNode is now in a separate file
|
package/src/node/Text.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { CharacterData } from './CharacterData';
|
|
2
|
+
import { ChildNode } from './ChildNode';
|
|
3
|
+
import {TEXT_NODE} from "./Node";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The **`Text`** interface represents a text node in the DOM.
|
|
7
|
+
*
|
|
8
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Text)
|
|
9
|
+
*/
|
|
10
|
+
export interface Text extends CharacterData, ChildNode {
|
|
11
|
+
readonly nodeType: typeof TEXT_NODE; // TEXT_NODE
|
|
12
|
+
readonly nodeName: '#text';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The **`Text.splitText()`** method breaks the Text node into two nodes at the specified offset, keeping both nodes in the tree as siblings.
|
|
16
|
+
*
|
|
17
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Text/splitText)
|
|
18
|
+
*/
|
|
19
|
+
splitText(offset: number): Text;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The **`Text.wholeText`** read-only property returns the full text of all Text nodes logically adjacent to the node.
|
|
23
|
+
*
|
|
24
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Text/wholeText)
|
|
25
|
+
*/
|
|
26
|
+
readonly wholeText: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Note: TextBase is the implementation class for this interface
|
|
30
|
+
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { ChildNodeBase } from './ChildNodeBase';
|
|
2
|
+
import { TEXT_NODE } from './Node';
|
|
3
|
+
import { Text } from './Text';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The **`TextBase`** class represents a text node implementation in the DOM.
|
|
7
|
+
*/
|
|
8
|
+
export class TextBase extends ChildNodeBase implements Text {
|
|
9
|
+
private _data: string;
|
|
10
|
+
|
|
11
|
+
// Override nodeType to match Text interface
|
|
12
|
+
readonly nodeType: 3 = TEXT_NODE as 3;
|
|
13
|
+
readonly nodeName: '#text' = '#text';
|
|
14
|
+
|
|
15
|
+
constructor(data: string, ownerDocument?: any) {
|
|
16
|
+
super(TEXT_NODE, '#text', ownerDocument);
|
|
17
|
+
this._data = data;
|
|
18
|
+
this._nodeValue = data;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
get data(): string {
|
|
22
|
+
return this._data;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
set data(value: string) {
|
|
26
|
+
this._data = value;
|
|
27
|
+
this._nodeValue = value;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
get length(): number {
|
|
31
|
+
return this._data.length;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
get textContent(): string | null {
|
|
35
|
+
// Decode HTML entities to return original text
|
|
36
|
+
return this._data ? this.decodeHTMLEntities(this._data) : this._data;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
set textContent(value: string | null) {
|
|
40
|
+
this._data = value || '';
|
|
41
|
+
this._nodeValue = this._data;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
get wholeText(): string {
|
|
45
|
+
// For now, just return the current text
|
|
46
|
+
// In a full implementation, this would collect adjacent text nodes
|
|
47
|
+
return this._data;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// CharacterData methods
|
|
51
|
+
appendData(data: string): void {
|
|
52
|
+
this._data += data;
|
|
53
|
+
this._nodeValue = this._data;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
deleteData(offset: number, count: number): void {
|
|
57
|
+
if (offset < 0 || offset > this._data.length) {
|
|
58
|
+
throw new Error('Index out of bounds');
|
|
59
|
+
}
|
|
60
|
+
const endOffset = Math.min(offset + count, this._data.length);
|
|
61
|
+
this._data = this._data.slice(0, offset) + this._data.slice(endOffset);
|
|
62
|
+
this._nodeValue = this._data;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
insertData(offset: number, data: string): void {
|
|
66
|
+
if (offset < 0 || offset > this._data.length) {
|
|
67
|
+
throw new Error('Index out of bounds');
|
|
68
|
+
}
|
|
69
|
+
this._data = this._data.slice(0, offset) + data + this._data.slice(offset);
|
|
70
|
+
this._nodeValue = this._data;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
replaceData(offset: number, count: number, data: string): void {
|
|
74
|
+
this.deleteData(offset, count);
|
|
75
|
+
this.insertData(offset, data);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
substringData(offset: number, count: number): string {
|
|
79
|
+
if (offset < 0 || offset > this._data.length) {
|
|
80
|
+
throw new Error('Index out of bounds');
|
|
81
|
+
}
|
|
82
|
+
const endOffset = Math.min(offset + count, this._data.length);
|
|
83
|
+
return this._data.slice(offset, endOffset);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
splitText(offset: number): Text {
|
|
87
|
+
if (offset < 0 || offset > this._data.length) {
|
|
88
|
+
throw new Error('Index out of bounds');
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const newData = this._data.slice(offset);
|
|
92
|
+
this._data = this._data.slice(0, offset);
|
|
93
|
+
this._nodeValue = this._data;
|
|
94
|
+
|
|
95
|
+
const newTextNode = new TextBase(newData, this._ownerDocument);
|
|
96
|
+
|
|
97
|
+
// Insert the new text node after this one
|
|
98
|
+
if (this._parentNodeInternal) {
|
|
99
|
+
const nextSibling = this.nextSibling;
|
|
100
|
+
this._parentNodeInternal.insertBefore(newTextNode, nextSibling);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return newTextNode as Text;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
cloneNode(deep?: boolean): Text {
|
|
107
|
+
return new TextBase(this._data, this._ownerDocument) as Text;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
toString(): string {
|
|
111
|
+
return this._data;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Element } from '../elements/Element';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* **`HTMLCollection`** represents a generic collection of HTML elements.
|
|
5
|
+
*
|
|
6
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection)
|
|
7
|
+
*/
|
|
8
|
+
export class HTMLCollection {
|
|
9
|
+
// 인덱스 시그니처 선언
|
|
10
|
+
[index: number]: Element;
|
|
11
|
+
|
|
12
|
+
private _elements: Element[] = [];
|
|
13
|
+
|
|
14
|
+
constructor(elements: Element[] = []) {
|
|
15
|
+
this._elements = [...elements];
|
|
16
|
+
|
|
17
|
+
// 인덱스 시그니처 구현을 위한 프록시 설정
|
|
18
|
+
return new Proxy(this, {
|
|
19
|
+
get(target, prop) {
|
|
20
|
+
// 숫자 인덱스인 경우
|
|
21
|
+
if (typeof prop === 'string' && /^\d+$/.test(prop)) {
|
|
22
|
+
const index = parseInt(prop, 10);
|
|
23
|
+
return target._elements[index] || null;
|
|
24
|
+
}
|
|
25
|
+
// 일반 프로퍼티/메서드인 경우
|
|
26
|
+
return (target as any)[prop];
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
set(target, prop, value) {
|
|
30
|
+
// 숫자 인덱스 설정 방지 (읽기 전용)
|
|
31
|
+
if (typeof prop === 'string' && /^\d+$/.test(prop)) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
(target as any)[prop] = value;
|
|
35
|
+
return true;
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
has(target, prop) {
|
|
39
|
+
if (typeof prop === 'string' && /^\d+$/.test(prop)) {
|
|
40
|
+
const index = parseInt(prop, 10);
|
|
41
|
+
return index >= 0 && index < target._elements.length;
|
|
42
|
+
}
|
|
43
|
+
return prop in target;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Returns the number of elements in the collection.
|
|
50
|
+
*
|
|
51
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection/length)
|
|
52
|
+
*/
|
|
53
|
+
get length(): number {
|
|
54
|
+
return this._elements.length;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Returns the element at the specified index, or null if the index is out of range.
|
|
59
|
+
*
|
|
60
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection/item)
|
|
61
|
+
*/
|
|
62
|
+
item(index: number): Element | null {
|
|
63
|
+
if (index < 0 || index >= this._elements.length) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
return this._elements[index];
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Returns the element with the specified ID or name, or null if no such element exists.
|
|
71
|
+
*
|
|
72
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection/namedItem)
|
|
73
|
+
*/
|
|
74
|
+
namedItem(name: string): Element | null {
|
|
75
|
+
for (const element of this._elements) {
|
|
76
|
+
if (element.id === name || element.getAttribute('name') === name) {
|
|
77
|
+
return element;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Returns an iterator for the collection.
|
|
85
|
+
*/
|
|
86
|
+
[Symbol.iterator](): IterableIterator<Element> {
|
|
87
|
+
return this._elements[Symbol.iterator]();
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// 내부적으로 요소 추가/제거를 위한 메서드들 (DOM 조작 시 사용)
|
|
91
|
+
_addElement(element: Element): void {
|
|
92
|
+
this._elements.push(element);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
_removeElement(element: Element): boolean {
|
|
96
|
+
const index = this._elements.indexOf(element);
|
|
97
|
+
if (index !== -1) {
|
|
98
|
+
this._elements.splice(index, 1);
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
_insertElement(index: number, element: Element): void {
|
|
105
|
+
this._elements.splice(index, 0, element);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Element } from '../elements/Element';
|
|
2
|
+
import { HTMLCollection } from './HTMLCollection';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* **`HTMLCollectionOf<T>`** is a generic version of HTMLCollection that provides type safety for specific element types.
|
|
6
|
+
*
|
|
7
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLCollection)
|
|
8
|
+
*/
|
|
9
|
+
export class HTMLCollectionOf<T extends Element> extends HTMLCollection {
|
|
10
|
+
// 인덱스 시그니처를 명시적으로 선언하여 타입 추론 지원
|
|
11
|
+
[index: number]: T;
|
|
12
|
+
|
|
13
|
+
constructor(elements: T[] = []) {
|
|
14
|
+
// 부모 HTMLCollection의 생성자를 호출하면서 타입이 지정된 요소들을 전달
|
|
15
|
+
super(elements as Element[]);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// 타입 안전성을 위한 오버라이드 - 단순 캐스팅만
|
|
19
|
+
item(index: number): T | null {
|
|
20
|
+
return super.item(index) as T | null;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
namedItem(name: string): T | null {
|
|
24
|
+
return super.namedItem(name) as T | null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { Node } from '../Node';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* **`NodeList`** objects are collections of nodes, usually returned by properties such as Node.childNodes and methods such as document.querySelectorAll().
|
|
5
|
+
*
|
|
6
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/NodeList)
|
|
7
|
+
*/
|
|
8
|
+
export class NodeList<T extends Node = Node> {
|
|
9
|
+
// 인덱스 시그니처 선언
|
|
10
|
+
[index: number]: T;
|
|
11
|
+
|
|
12
|
+
private _nodes: T[] = [];
|
|
13
|
+
|
|
14
|
+
constructor(nodes: T[] = []) {
|
|
15
|
+
this._nodes = [...nodes];
|
|
16
|
+
|
|
17
|
+
// 인덱스 시그니처 구현을 위한 프록시 설정
|
|
18
|
+
return new Proxy(this, {
|
|
19
|
+
get(target, prop) {
|
|
20
|
+
// 숫자 인덱스인 경우
|
|
21
|
+
if (typeof prop === 'string' && /^\d+$/.test(prop)) {
|
|
22
|
+
const index = parseInt(prop, 10);
|
|
23
|
+
return target._nodes[index] || null;
|
|
24
|
+
}
|
|
25
|
+
// 일반 프로퍼티/메서드인 경우
|
|
26
|
+
return (target as any)[prop];
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
set(target, prop, value) {
|
|
30
|
+
// 숫자 인덱스 설정 방지 (읽기 전용)
|
|
31
|
+
if (typeof prop === 'string' && /^\d+$/.test(prop)) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
(target as any)[prop] = value;
|
|
35
|
+
return true;
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
has(target, prop) {
|
|
39
|
+
if (typeof prop === 'string' && /^\d+$/.test(prop)) {
|
|
40
|
+
const index = parseInt(prop, 10);
|
|
41
|
+
return index >= 0 && index < target._nodes.length;
|
|
42
|
+
}
|
|
43
|
+
return prop in target;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The **`NodeList.length`** property returns the number of items in a NodeList.
|
|
50
|
+
*
|
|
51
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/NodeList/length)
|
|
52
|
+
*/
|
|
53
|
+
get length(): number {
|
|
54
|
+
return this._nodes.length;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Returns a node from a `NodeList` by index.
|
|
59
|
+
*
|
|
60
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/NodeList/item)
|
|
61
|
+
*/
|
|
62
|
+
item(index: number): T | null {
|
|
63
|
+
if (index < 0 || index >= this._nodes.length) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
return this._nodes[index];
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Executes a provided function once for each `Node` value in the `NodeList`.
|
|
71
|
+
*
|
|
72
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/NodeList/forEach)
|
|
73
|
+
*/
|
|
74
|
+
forEach(callbackfn: (value: T, key: number, parent: NodeList) => void, thisArg?: any): void {
|
|
75
|
+
this._nodes.forEach((node, index) => {
|
|
76
|
+
callbackfn.call(thisArg, node, index, this);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// 내부적으로 노드 추가/제거를 위한 메서드들 (DOM 조작 시 사용)
|
|
81
|
+
_addNode(node: T): void {
|
|
82
|
+
this._nodes.push(node);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
_removeNode(node: T): boolean {
|
|
86
|
+
const index = this._nodes.indexOf(node);
|
|
87
|
+
if (index !== -1) {
|
|
88
|
+
this._nodes.splice(index, 1);
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
_insertNode(index: number, node: T): void {
|
|
95
|
+
this._nodes.splice(index, 0, node);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Iterator 지원 (for...of 사용 가능)
|
|
99
|
+
*[Symbol.iterator](): Iterator<T> {
|
|
100
|
+
for (const node of this._nodes) {
|
|
101
|
+
yield node;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Returns an iterator allowing to go through all keys contained in this object.
|
|
107
|
+
* The keys are unsigned integer (index).
|
|
108
|
+
*
|
|
109
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/NodeList/keys)
|
|
110
|
+
*/
|
|
111
|
+
*keys(): IterableIterator<number> {
|
|
112
|
+
for (let i = 0; i < this._nodes.length; i++) {
|
|
113
|
+
yield i;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Returns an iterator allowing to go through all values contained in this object.
|
|
119
|
+
* The values are Node objects.
|
|
120
|
+
*
|
|
121
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/NodeList/values)
|
|
122
|
+
*/
|
|
123
|
+
*values(): IterableIterator<T> {
|
|
124
|
+
for (const node of this._nodes) {
|
|
125
|
+
yield node;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Returns an iterator allowing to go through all key/value pairs contained in this object.
|
|
131
|
+
* The key is an unsigned integer (index) and the value is a Node object.
|
|
132
|
+
*
|
|
133
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/NodeList/entries)
|
|
134
|
+
*/
|
|
135
|
+
*entries(): IterableIterator<[number, T]> {
|
|
136
|
+
for (let i = 0; i < this._nodes.length; i++) {
|
|
137
|
+
yield [i, this._nodes[i]];
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Node } from '../Node';
|
|
2
|
+
import { NodeList } from './NodeList';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* **`NodeListOf<TNode>`** is a generic version of NodeList that provides type safety for specific node types.
|
|
6
|
+
*
|
|
7
|
+
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/NodeList)
|
|
8
|
+
*/
|
|
9
|
+
export class NodeListOf<TNode extends Node> extends NodeList<TNode> {
|
|
10
|
+
// 인덱스 시그니처를 명시적으로 선언하여 타입 추론 지원
|
|
11
|
+
[index: number]: TNode;
|
|
12
|
+
|
|
13
|
+
constructor(nodes: TNode[] = []) {
|
|
14
|
+
// 부모 NodeList의 생성자를 호출하면서 타입이 지정된 노드들을 전달
|
|
15
|
+
super(nodes as TNode[]);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// 타입 안전성을 위한 오버라이드 - 단순 캐스팅만
|
|
19
|
+
item(index: number): TNode | null {
|
|
20
|
+
return super.item(index) as TNode | null;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
forEach(callbackfn: (value: TNode, key: number, parent: NodeListOf<TNode>) => void, thisArg?: any): void {
|
|
24
|
+
super.forEach((node, index) => {
|
|
25
|
+
callbackfn.call(thisArg, node as TNode, index, this);
|
|
26
|
+
}, thisArg);
|
|
27
|
+
}
|
|
28
|
+
}
|