diff --git a/types/dom-parser/dom-parser-tests.ts b/types/dom-parser/dom-parser-tests.ts new file mode 100644 index 0000000000..f49bdba25a --- /dev/null +++ b/types/dom-parser/dom-parser-tests.ts @@ -0,0 +1,29 @@ +import DomParser = require('dom-parser'); + +const parser = new DomParser(); + +const exampleHtml = + '
'; + +const dom = parser.parseFromString(exampleHtml); // $ExpectType Dom + +const element = dom.getElementById('one'); // $ExpectType Node | null +dom.getElementsByClassName('myclass'); // $ExpectType Node[] | null +dom.getElementsByTagName('div'); // $ExpectType Node[] | null +dom.getElementsByName('somenonexistentname'); // $ExpectType Node[] | null +dom.getElementsByAttribute('nonexistentattr'); // $ExpectType Node[] | null + +if (element) { + element.getAttribute('madeupattr'); // $ExpectType string | null + + element.nodeType; // $ExpectType NodeType + element.nodeName; // $ExpectType string + element.childNodes; // $ExpectType Node[] + element.firstChild; // $ExpectType Node | null + element.lastChild; // $ExpectType Node | null + element.parentNode; // $ExpectType Node | null + element.attributes; // $ExpectType string[] + element.innerHTML; // $ExpectType string + element.outerHTML; // $ExpectType string + element.textContent; // $ExpectType string +} diff --git a/types/dom-parser/index.d.ts b/types/dom-parser/index.d.ts new file mode 100644 index 0000000000..21e19355cd --- /dev/null +++ b/types/dom-parser/index.d.ts @@ -0,0 +1,55 @@ +// Type definitions for dom-parser 0.1 +// Project: https://github.com/ershov-konst/dom-parser#readme +// Definitions by: Guy Bidkar +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare class DomParser { + constructor(); + + parseFromString(html: string): DomParser.Dom; +} + +declare namespace DomParser { + interface Dom extends DOMSearchable { + getElementsByClassName(className: string): Node[] | null; + getElementsByTagName(tagName: string): Node[] | null; + getElementsByName(name: string): Node[] | null; + getElementById(id: string): Node | null; + + getElementsByAttribute(attribute: string): Node[] | null; + } + + interface Node extends DOMSearchable { + nodeType: NodeType; + nodeName: string; + childNodes: Node[]; + firstChild: Node | null; + lastChild: Node | null; + parentNode: Node | null; + attributes: string[]; + innerHTML: string; + outerHTML: string; + textContent: string; + + getElementsByClassName(className: string): Node[] | null; + getElementsByTagName(tagName: string): Node[] | null; + getElementsByName(name: string): Node[] | null; + getElementById(id: string): Node | null; + + getAttribute(name: string): string | null; + } + + interface DOMSearchable { + getElementsByClassName(className: string): Node[] | null; + getElementsByTagName(tagName: string): Node[] | null; + getElementsByName(name: string): Node[] | null; + getElementById(id: string): Node | null; + } + + enum NodeType { + ELEMENT_NODE = 1, + TEXT_NODE = 3 + } +} + +export = DomParser; diff --git a/types/dom-parser/tsconfig.json b/types/dom-parser/tsconfig.json new file mode 100644 index 0000000000..a8cc926e96 --- /dev/null +++ b/types/dom-parser/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "dom-parser-tests.ts" + ] +} diff --git a/types/dom-parser/tslint.json b/types/dom-parser/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/dom-parser/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }