diff --git a/src/isValid/index.js b/src/isValid/index.ts similarity index 85% rename from src/isValid/index.js rename to src/isValid/index.ts index 854c97e378..e4dc1e2ac4 100644 --- a/src/isValid/index.js +++ b/src/isValid/index.ts @@ -1,3 +1,4 @@ +import isDate from '../isDate/index' import toDate from '../toDate/index' import requiredArgs from '../_lib/requiredArgs/index' @@ -45,22 +46,25 @@ import requiredArgs from '../_lib/requiredArgs/index' * * @example * // For the valid date: - * var result = isValid(new Date(2014, 1, 31)) + * const result = isValid(new Date(2014, 1, 31)) * //=> true * * @example * // For the value, convertable into a date: - * var result = isValid(1393804800000) + * const result = isValid(1393804800000) * //=> true * * @example * // For the invalid date: - * var result = isValid(new Date('')) + * const result = isValid(new Date('')) * //=> false */ -export default function isValid(dirtyDate) { +export default function isValid(dirtyDate: unknown): boolean { requiredArgs(1, arguments) - var date = toDate(dirtyDate) - return !isNaN(date) + if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') { + return false + } + const date = toDate(dirtyDate) + return !isNaN(Number(date)) } diff --git a/src/isValid/test.js b/src/isValid/test.js deleted file mode 100644 index 95cb078214..0000000000 --- a/src/isValid/test.js +++ /dev/null @@ -1,31 +0,0 @@ -// @flow -/* eslint-env mocha */ - -import assert from 'power-assert' -import isValid from '.' - -describe('isValid', function() { - it('returns true if the given date is valid', function() { - var result = isValid(new Date()) - assert(result === true) - }) - - it('returns false if the given date is invalid', function() { - var result = isValid(new Date('')) - assert(result === false) - }) - - it('accepts a timestamp', function() { - assert(isValid(new Date(2014, 1 /* Feb */, 11).getTime()) === true) - assert(isValid(NaN) === false) - }) - - it('treats null as an invalid date', function() { - var result = isValid(null) - assert(result === false) - }) - - it('throws TypeError exception if passed less than 1 argument', function() { - assert.throws(isValid.bind(null), TypeError) - }) -}) diff --git a/src/isValid/test.ts b/src/isValid/test.ts new file mode 100644 index 0000000000..b24210fbdf --- /dev/null +++ b/src/isValid/test.ts @@ -0,0 +1,31 @@ +/* eslint-env mocha */ + +import assert from 'assert' +import isValid from '.' + +describe('isValid', function () { + it('returns true if the given date is valid', function () { + const result = isValid(new Date()) + assert(result === true) + }) + + it('returns false if the given date is invalid', function () { + const result = isValid(new Date('')) + assert(result === false) + }) + + it('accepts a timestamp', function () { + assert(isValid(new Date(2014, 1 /* Feb */, 11).getTime()) === true) + assert(isValid(NaN) === false) + }) + + it('treats null as an invalid date', function () { + const result = isValid(null) + assert(result === false) + }) + + it('throws TypeError exception if passed less than 1 argument', function () { + // @ts-expect-error + assert.throws(isValid.bind(null), TypeError) + }) +})