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" }