From 51222f3dc981afb43d3cbeb342ead1d5c884e84c Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 15 Feb 2018 11:35:04 -0500 Subject: [PATCH 1/2] Add type definition for @rgrove/parse-xml. --- types/rgrove__parse-xml/index.d.ts | 53 +++++++++++++ .../rgrove__parse-xml-tests.ts | 8 ++ types/rgrove__parse-xml/tsconfig.json | 27 +++++++ types/rgrove__parse-xml/tslint.json | 79 +++++++++++++++++++ 4 files changed, 167 insertions(+) create mode 100644 types/rgrove__parse-xml/index.d.ts create mode 100644 types/rgrove__parse-xml/rgrove__parse-xml-tests.ts create mode 100644 types/rgrove__parse-xml/tsconfig.json create mode 100644 types/rgrove__parse-xml/tslint.json diff --git a/types/rgrove__parse-xml/index.d.ts b/types/rgrove__parse-xml/index.d.ts new file mode 100644 index 0000000000..c642415055 --- /dev/null +++ b/types/rgrove__parse-xml/index.d.ts @@ -0,0 +1,53 @@ +// Type definitions for @rgrove/parse-xml 1.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.IDocument; + +declare namespace parseXml { + export interface INode { + parent?: INode; + type: string; + } + + export interface IDocument extends INode { + type: "document"; + children: Node[]; + } + + export interface ICData extends INode { + type: "cdata"; + text: string; + } + + export interface IComment extends INode { + type: "comment"; + content: string; + } + + export interface IText extends INode { + type: "text"; + text: string; + } + + export interface IElement extends INode { + type: "element"; + attributes: { [key: string]: string }; + children: INode[]; + name: string; + preserveWhitespace?: string; + } + + export type Node = ICData | IComment | IElement | IText; + + export 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..99fd5a4131 --- /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'); + +let doc = parseXml(''); +doc.type === "document"; +assert.equal(doc.children[0].type, "element"); +assert.equal((doc.children[0] as parseXml.IElement).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..a41bf5d19a --- /dev/null +++ b/types/rgrove__parse-xml/tslint.json @@ -0,0 +1,79 @@ +{ + "extends": "dtslint/dt.json", + "rules": { + "adjacent-overload-signatures": false, + "array-type": false, + "arrow-return-shorthand": false, + "ban-types": false, + "callable-types": false, + "comment-format": false, + "dt-header": false, + "eofline": false, + "export-just-namespace": false, + "import-spacing": false, + "interface-name": false, + "interface-over-type-literal": false, + "jsdoc-format": false, + "max-line-length": false, + "member-access": false, + "new-parens": false, + "no-any-union": false, + "no-boolean-literal-compare": false, + "no-conditional-assignment": false, + "no-consecutive-blank-lines": false, + "no-construct": false, + "no-declare-current-package": false, + "no-duplicate-imports": false, + "no-duplicate-variable": false, + "no-empty-interface": false, + "no-for-in-array": false, + "no-inferrable-types": false, + "no-internal-module": false, + "no-irregular-whitespace": false, + "no-mergeable-namespace": false, + "no-misused-new": false, + "no-namespace": false, + "no-object-literal-type-assertion": false, + "no-padding": false, + "no-redundant-jsdoc": false, + "no-redundant-jsdoc-2": false, + "no-redundant-undefined": false, + "no-reference-import": false, + "no-relative-import-in-test": false, + "no-self-import": false, + "no-single-declare-module": false, + "no-string-throw": false, + "no-unnecessary-callback-wrapper": false, + "no-unnecessary-class": false, + "no-unnecessary-generics": false, + "no-unnecessary-qualifier": false, + "no-unnecessary-type-assertion": false, + "no-useless-files": false, + "no-var-keyword": false, + "no-var-requires": false, + "no-void-expression": false, + "no-trailing-whitespace": false, + "object-literal-key-quotes": false, + "object-literal-shorthand": false, + "one-line": false, + "one-variable-per-declaration": false, + "only-arrow-functions": false, + "prefer-conditional-expression": false, + "prefer-const": false, + "prefer-declare-function": false, + "prefer-for-of": false, + "prefer-method-signature": false, + "prefer-template": false, + "radix": false, + "semicolon": false, + "space-before-function-paren": false, + "space-within-parens": false, + "strict-export-declare-modifiers": false, + "trim-file": false, + "triple-equals": false, + "typedef-whitespace": false, + "unified-signatures": false, + "void-return": false, + "whitespace": false + } +} From cdcb61923b42ea0426b88ada6011f3bf4fa8d2f9 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Thu, 15 Feb 2018 14:54:17 -0500 Subject: [PATCH 2/2] Re-enable full linting, and code fixes accordingly. --- types/rgrove__parse-xml/index.d.ts | 28 +++---- .../rgrove__parse-xml-tests.ts | 4 +- types/rgrove__parse-xml/tslint.json | 78 +------------------ 3 files changed, 17 insertions(+), 93 deletions(-) diff --git a/types/rgrove__parse-xml/index.d.ts b/types/rgrove__parse-xml/index.d.ts index c642415055..f8e9944047 100644 --- a/types/rgrove__parse-xml/index.d.ts +++ b/types/rgrove__parse-xml/index.d.ts @@ -1,48 +1,48 @@ -// Type definitions for @rgrove/parse-xml 1.1.1 +// 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.IDocument; +declare function parseXml(name: string, options?: parseXml.ParseOptions): parseXml.Document; declare namespace parseXml { - export interface INode { - parent?: INode; + interface NodeBase { + parent?: NodeBase; type: string; } - export interface IDocument extends INode { + interface Document extends NodeBase { type: "document"; - children: Node[]; + children: NodeBase[]; } - export interface ICData extends INode { + interface CData extends NodeBase { type: "cdata"; text: string; } - export interface IComment extends INode { + interface Comment extends NodeBase { type: "comment"; content: string; } - export interface IText extends INode { + interface Text extends NodeBase { type: "text"; text: string; } - export interface IElement extends INode { + interface Element extends NodeBase { type: "element"; attributes: { [key: string]: string }; - children: INode[]; + children: NodeBase[]; name: string; preserveWhitespace?: string; } - export type Node = ICData | IComment | IElement | IText; + type Node = CData | Comment | Element | Text; - export interface ParseOptions { + interface ParseOptions { ignoreUndefinedEntities?: boolean; preserveCdata?: boolean; preserveComments?: boolean; @@ -50,4 +50,4 @@ declare namespace parseXml { } } -export = parseXml +export = parseXml; diff --git a/types/rgrove__parse-xml/rgrove__parse-xml-tests.ts b/types/rgrove__parse-xml/rgrove__parse-xml-tests.ts index 99fd5a4131..797465da3c 100644 --- a/types/rgrove__parse-xml/rgrove__parse-xml-tests.ts +++ b/types/rgrove__parse-xml/rgrove__parse-xml-tests.ts @@ -2,7 +2,7 @@ import assert = require('assert'); import parseXml = require('@rgrove/parse-xml'); -let doc = parseXml(''); +const doc = parseXml(''); doc.type === "document"; assert.equal(doc.children[0].type, "element"); -assert.equal((doc.children[0] as parseXml.IElement).name, "party"); +assert.equal((doc.children[0] as parseXml.Element).name, "party"); diff --git a/types/rgrove__parse-xml/tslint.json b/types/rgrove__parse-xml/tslint.json index a41bf5d19a..f93cf8562a 100644 --- a/types/rgrove__parse-xml/tslint.json +++ b/types/rgrove__parse-xml/tslint.json @@ -1,79 +1,3 @@ { - "extends": "dtslint/dt.json", - "rules": { - "adjacent-overload-signatures": false, - "array-type": false, - "arrow-return-shorthand": false, - "ban-types": false, - "callable-types": false, - "comment-format": false, - "dt-header": false, - "eofline": false, - "export-just-namespace": false, - "import-spacing": false, - "interface-name": false, - "interface-over-type-literal": false, - "jsdoc-format": false, - "max-line-length": false, - "member-access": false, - "new-parens": false, - "no-any-union": false, - "no-boolean-literal-compare": false, - "no-conditional-assignment": false, - "no-consecutive-blank-lines": false, - "no-construct": false, - "no-declare-current-package": false, - "no-duplicate-imports": false, - "no-duplicate-variable": false, - "no-empty-interface": false, - "no-for-in-array": false, - "no-inferrable-types": false, - "no-internal-module": false, - "no-irregular-whitespace": false, - "no-mergeable-namespace": false, - "no-misused-new": false, - "no-namespace": false, - "no-object-literal-type-assertion": false, - "no-padding": false, - "no-redundant-jsdoc": false, - "no-redundant-jsdoc-2": false, - "no-redundant-undefined": false, - "no-reference-import": false, - "no-relative-import-in-test": false, - "no-self-import": false, - "no-single-declare-module": false, - "no-string-throw": false, - "no-unnecessary-callback-wrapper": false, - "no-unnecessary-class": false, - "no-unnecessary-generics": false, - "no-unnecessary-qualifier": false, - "no-unnecessary-type-assertion": false, - "no-useless-files": false, - "no-var-keyword": false, - "no-var-requires": false, - "no-void-expression": false, - "no-trailing-whitespace": false, - "object-literal-key-quotes": false, - "object-literal-shorthand": false, - "one-line": false, - "one-variable-per-declaration": false, - "only-arrow-functions": false, - "prefer-conditional-expression": false, - "prefer-const": false, - "prefer-declare-function": false, - "prefer-for-of": false, - "prefer-method-signature": false, - "prefer-template": false, - "radix": false, - "semicolon": false, - "space-before-function-paren": false, - "space-within-parens": false, - "strict-export-declare-modifiers": false, - "trim-file": false, - "triple-equals": false, - "typedef-whitespace": false, - "unified-signatures": false, - "void-return": false, - "whitespace": false - } + "extends": "dtslint/dt.json" }