diff --git a/types/rgrove__parse-xml/index.d.ts b/types/rgrove__parse-xml/index.d.ts new file mode 100644 index 0000000000..f8e9944047 --- /dev/null +++ b/types/rgrove__parse-xml/index.d.ts @@ -0,0 +1,53 @@ +// Type definitions for @rgrove/parse-xml 1.1 +// Project: https://github.com/rgrove/parse-xml +// Definitions by: Pete Johanson +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.3 + +declare function parseXml(name: string, options?: parseXml.ParseOptions): parseXml.Document; + +declare namespace parseXml { + interface NodeBase { + parent?: NodeBase; + type: string; + } + + interface Document extends NodeBase { + type: "document"; + children: NodeBase[]; + } + + interface CData extends NodeBase { + type: "cdata"; + text: string; + } + + interface Comment extends NodeBase { + type: "comment"; + content: string; + } + + interface Text extends NodeBase { + type: "text"; + text: string; + } + + interface Element extends NodeBase { + type: "element"; + attributes: { [key: string]: string }; + children: NodeBase[]; + name: string; + preserveWhitespace?: string; + } + + type Node = CData | Comment | Element | Text; + + interface ParseOptions { + ignoreUndefinedEntities?: boolean; + preserveCdata?: boolean; + preserveComments?: boolean; + resolveUndefinedEntity?: (ref: string) => string; + } +} + +export = parseXml; diff --git a/types/rgrove__parse-xml/rgrove__parse-xml-tests.ts b/types/rgrove__parse-xml/rgrove__parse-xml-tests.ts new file mode 100644 index 0000000000..797465da3c --- /dev/null +++ b/types/rgrove__parse-xml/rgrove__parse-xml-tests.ts @@ -0,0 +1,8 @@ +/// +import assert = require('assert'); +import parseXml = require('@rgrove/parse-xml'); + +const doc = parseXml(''); +doc.type === "document"; +assert.equal(doc.children[0].type, "element"); +assert.equal((doc.children[0] as parseXml.Element).name, "party"); diff --git a/types/rgrove__parse-xml/tsconfig.json b/types/rgrove__parse-xml/tsconfig.json new file mode 100644 index 0000000000..b939e6d003 --- /dev/null +++ b/types/rgrove__parse-xml/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "paths": { + "@rgrove/parse-xml": ["rgrove__parse-xml"] + }, + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true, + "esModuleInterop": true + }, + "files": [ + "index.d.ts", + "rgrove__parse-xml-tests.ts" + ] +} diff --git a/types/rgrove__parse-xml/tslint.json b/types/rgrove__parse-xml/tslint.json new file mode 100644 index 0000000000..f93cf8562a --- /dev/null +++ b/types/rgrove__parse-xml/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "dtslint/dt.json" +}