From 5489653a27573592126039d22b026aa5ca06dddf Mon Sep 17 00:00:00 2001 From: Dimitri Benin Date: Tue, 30 Apr 2019 03:56:18 +0000 Subject: [PATCH] Require Node.js 8, add TypeScript definition (#6) --- .gitattributes | 3 +-- .travis.yml | 3 ++- index.d.ts | 16 ++++++++++++++++ index.js | 6 +++--- index.test-d.ts | 5 +++++ package.json | 12 +++++++----- test.js | 6 +++--- 7 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 index.d.ts create mode 100644 index.test-d.ts diff --git a/.gitattributes b/.gitattributes index 391f0a4..6313b56 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1 @@ -* text=auto -*.js text eol=lf +* text=auto eol=lf diff --git a/.travis.yml b/.travis.yml index e0cc348..f98fed0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,5 @@ language: node_js node_js: + - '12' + - '10' - '8' - - '6' diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..dc90a75 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,16 @@ +/** +Lowercase the keys of an object. + +@returns A new object with the keys lowercased. + +@example +``` +import lowercaseKeys = require('lowercase-keys'); + +lowercaseKeys({FOO: true, bAr: false}); +//=> {foo: true, bar: false} +``` +*/ +declare function lowercaseKeys(object: {[key: string]: T}): {[key: string]: T}; + +export = lowercaseKeys; diff --git a/index.js b/index.js index eaac9d5..357fb8f 100644 --- a/index.js +++ b/index.js @@ -1,10 +1,10 @@ 'use strict'; module.exports = object => { - const ret = {}; + const result = {}; for (const [key, value] of Object.entries(object)) { - ret[key.toLowerCase()] = value; + result[key.toLowerCase()] = value; } - return ret; + return result; }; diff --git a/index.test-d.ts b/index.test-d.ts new file mode 100644 index 0000000..ec15712 --- /dev/null +++ b/index.test-d.ts @@ -0,0 +1,5 @@ +import {expectType} from 'tsd'; +import lowercaseKeys = require('.'); + +expectType<{[key: string]: boolean}>(lowercaseKeys({FOO: true, bAr: false})); +expectType<{[key: string]: string | number}>(lowercaseKeys({foo: 'bar', baz: 1})); diff --git a/package.json b/package.json index 26c8c13..a994008 100644 --- a/package.json +++ b/package.json @@ -10,13 +10,14 @@ "url": "sindresorhus.com" }, "engines": { - "node": ">=6" + "node": ">=8" }, "scripts": { - "test": "xo && ava" + "test": "xo && ava && tsd" }, "files": [ - "index.js" + "index.js", + "index.d.ts" ], "keywords": [ "object", @@ -30,7 +31,8 @@ "key" ], "devDependencies": { - "ava": "*", - "xo": "*" + "ava": "^1.4.1", + "tsd": "^0.7.2", + "xo": "^0.24.0" } } diff --git a/test.js b/test.js index 234f034..71efcc0 100644 --- a/test.js +++ b/test.js @@ -1,7 +1,7 @@ import test from 'ava'; -import m from '.'; +import lowercaseKeys from '.'; test('main', t => { - t.true(m({FOO: true}).foo); - t.true(m({FOO: true, bAr: true}).bar); + t.true(lowercaseKeys({FOO: true}).foo); + t.true(lowercaseKeys({FOO: true, bAr: true}).bar); });