diff --git a/types/caseless/caseless-tests.ts b/types/caseless/caseless-tests.ts new file mode 100644 index 0000000000..2fb16afaad --- /dev/null +++ b/types/caseless/caseless-tests.ts @@ -0,0 +1,40 @@ +import caseless, { Caseless, httpify } from "caseless"; + +new Caseless(); // $ExpectError + +// tslint:disable-next-line: prefer-const +let c1: Caseless; + +caseless(); // $ExpectType Caseless +caseless({}); // $ExpectType Caseless +caseless(null); // $ExpectError +caseless(1); // $ExpectError +caseless("2"); // $ExpectError + +const c2 = caseless(); + +c2.set({}); // $ExpectType void +c2.set('foo', 'bar'); // $ExpectType string | false +c2.set('foo', 'bar', false); // $ExpectType string | false +c2.set('foo', new Date()); // $ExpectType string | false +c2.set(10, 'bar'); // $ExpectError + +c2.get('foo'); // $ExpectType any +c2.get(10); // $ExpectError + +c2.has('foo'); // $ExpectType string | false +c2.has(10); // $ExpectError + +c2.swap('foo'); // $ExpectType void +c2.swap(10); // $ExpectError + +c2.del('foo'); // $ExpectType boolean + +httpify(null, {}); // $ExpectError +httpify(1, {}); // $ExpectError +httpify("2", {}); // $ExpectError +httpify({}, null); // $ExpectError +httpify({}, 1); // $ExpectError +httpify({}, "2"); // $ExpectError + +httpify({}, {}); // $ExpectType Caseless diff --git a/types/caseless/index.d.ts b/types/caseless/index.d.ts new file mode 100644 index 0000000000..db295a8f89 --- /dev/null +++ b/types/caseless/index.d.ts @@ -0,0 +1,24 @@ +// Type definitions for caseless 0.12 +// Project: https://github.com/mikeal/caseless +// Definitions by: downace +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.2 + +type KeyType = string; +type ValueType = any; +type RawDict = object; + +export interface Caseless { + set(name: KeyType, value: ValueType, clobber?: boolean): KeyType | false; + set(dict: RawDict): void; + has(name: KeyType): KeyType | false; + get(name: KeyType): ValueType | undefined; + swap(name: KeyType): void; + del(name: KeyType): boolean; +} + +export function httpify(resp: object, headers: RawDict): Caseless; + +declare function caseless(dict?: RawDict): Caseless; + +export default caseless; diff --git a/types/caseless/tsconfig.json b/types/caseless/tsconfig.json new file mode 100644 index 0000000000..c7dace4424 --- /dev/null +++ b/types/caseless/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "caseless-tests.ts" + ] +} diff --git a/types/caseless/tslint.json b/types/caseless/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/caseless/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }