diff --git a/types/mri/index.d.ts b/types/mri/index.d.ts index d015594de1..c1808211db 100644 --- a/types/mri/index.d.ts +++ b/types/mri/index.d.ts @@ -2,12 +2,37 @@ // Project: https://github.com/lukeed/mri // Definitions by: Brendan Forster // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.4 export = mri; -declare function mri(args: any, opts: any): any; +declare function mri(args: ReadonlyArray, options?: mri.Options): mri.Argv; declare namespace mri { const prototype: { }; + + /** A string or array of strings */ + type ArrayOrString = string | ReadonlyArray; + + /** An object with any keys whose values conform to a specific type */ + interface DictionaryObject { + [key: string]: T; + } + + interface Options { + /** Additional aliases for specific flags */ + alias?: DictionaryObject; + /** A flag or array of flags whose values are boolean */ + boolean?: ArrayOrString; + /** Default values for flags */ + default?: DictionaryObject; + string?: ArrayOrString; + unknown?: (flag: string) => void; + } + + interface Argv extends DictionaryObject { + /** anything after `--` or between options */ + _: ReadonlyArray; + } } diff --git a/types/mri/mri-tests.ts b/types/mri/mri-tests.ts index e69de29bb2..c766587db1 100644 --- a/types/mri/mri-tests.ts +++ b/types/mri/mri-tests.ts @@ -0,0 +1,7 @@ +import * as mri from 'mri'; + +const first = mri(['--foo', 'bar']); + +const second = mri(['--foo', 'bar'], { + default: { foo: true, baz: 'hello', bat: 42 } +}); diff --git a/types/mri/tslint.json b/types/mri/tslint.json index 3db14f85ea..bc2968ccad 100644 --- a/types/mri/tslint.json +++ b/types/mri/tslint.json @@ -1 +1,7 @@ -{ "extends": "dtslint/dt.json" } +{ + "extends": "dtslint/dt.json", + "rules": { + "strict-export-declare-modifiers": false, + "prefer-method-signature": false + } +}