diff --git a/types/domhandler/domhandler-tests.ts b/types/domhandler/domhandler-tests.ts new file mode 100644 index 0000000000..eea6441ad7 --- /dev/null +++ b/types/domhandler/domhandler-tests.ts @@ -0,0 +1,14 @@ +import { DomHandler, DomHandlerOptions, Node } from "domhandler"; + +const handler = new DomHandler((error: Error, dom: any) => { + if (error) + console.error('There has been an error...'); + else + console.log(dom); +}); +handler.ontext = (data: string) => { console.log(data); }; +handler.onreset = () => { console.log('We have a reset.'); }; +handler.onerror = (error: Error) => { console.error(Error); }; +handler.onopentag = (name: string, attribs) => { console.log(name, attribs); }; + +const dho: DomHandlerOptions = { normalizeWhitespace: true, withDomLvl1: true, withEndIndices: true, withStartIndices: true }; diff --git a/types/domhandler/index.d.ts b/types/domhandler/index.d.ts new file mode 100644 index 0000000000..9d33055bbd --- /dev/null +++ b/types/domhandler/index.d.ts @@ -0,0 +1,79 @@ +// Type definitions for domhandler 2.4 +// Project: https://github.com/fb55/DomHandler#readme +// Definitions by: Johan Davidsson +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.1 + +export interface DomHandlerOptions { + /*** + * Indicates whether the whitespace in text nodes should be normalized + * (= all whitespace should be replaced with single spaces). The default value is "false". + */ + normalizeWhitespace?: boolean; + + /*** + * Adds DOM level 1 properties to all elements. + */ + withDomLvl1?: boolean; + + /*** + * Indicates whether a startIndex property will be added to nodes. + * When the parser is used in a non-streaming fashion, startIndex is an integer + * indicating the position of the start of the node in the document. + * The default value is "false". + */ + withStartIndices?: boolean; + + /*** + * Indicates whether a endIndex property will be added to nodes. + * When the parser is used in a non-streaming fashion, endIndex is an integer + * indicating the position of the end of the node in the document. + * The default value is "false". + */ + withEndIndices?: boolean; +} + +export interface DomElement { + attribs?: {[s: string]: string}; + children?: DomElement[]; + data?: any; + name?: string; + next?: DomElement; + parent?: DomElement; + prev?: DomElement; + type?: string; +} + +export interface Element extends DomElement { + name: string; +} + +export interface Node extends DomElement { + readonly firstChild: DomElement; + readonly lastChild: DomElement; + readonly nodeType: number; +} + +export class DomHandler { + constructor(callback: (error: any, dom: DomElement[]) => any, options?: DomHandlerOptions); + + onparserinit(parser: any): void; + + /*** + * Resets the handler back to starting state + */ + onreset(): void; + + /*** + * Signals the handler that parsing is done + */ + onend(): void; + onerror(error: Error): void; + onclosetag(): void; + onopentag(name: string, attribs: {[s: string]: string}): void; + ontext(data: string): void; + oncomment(data: string): void; + oncdatastart(): void; + oncommentend(): void; + onprocessinginstruction(name: string, data: string): void; +} diff --git a/types/domhandler/tsconfig.json b/types/domhandler/tsconfig.json new file mode 100644 index 0000000000..62a39735a8 --- /dev/null +++ b/types/domhandler/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6", + "dom" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "domhandler-tests.ts" + ] +} diff --git a/types/domhandler/tslint.json b/types/domhandler/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/domhandler/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }