From 0690a24d165f4d4c82c3eca923e007943cc00dd4 Mon Sep 17 00:00:00 2001 From: Lexus Drumgold Date: Tue, 16 May 2023 03:02:10 -0400 Subject: [PATCH] feat(utils): `isDate` Signed-off-by: Lexus Drumgold --- src/utils/__tests__/is-date.spec-d.ts | 12 ++++++++++++ src/utils/__tests__/is-date.spec.ts | 16 ++++++++++++++++ src/utils/index.ts | 1 + src/utils/is-date.ts | 18 ++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 src/utils/__tests__/is-date.spec-d.ts create mode 100644 src/utils/__tests__/is-date.spec.ts create mode 100644 src/utils/is-date.ts diff --git a/src/utils/__tests__/is-date.spec-d.ts b/src/utils/__tests__/is-date.spec-d.ts new file mode 100644 index 00000000..eb398ec9 --- /dev/null +++ b/src/utils/__tests__/is-date.spec-d.ts @@ -0,0 +1,12 @@ +/** + * @file Type Tests - isDate + * @module tutils/utils/tests/unit-d/isDate + */ + +import type testSubject from '../is-date' + +describe('unit-d:utils/isDate', () => { + it('should guard Date', () => { + expectTypeOf().guards.toEqualTypeOf() + }) +}) diff --git a/src/utils/__tests__/is-date.spec.ts b/src/utils/__tests__/is-date.spec.ts new file mode 100644 index 00000000..1220d5c1 --- /dev/null +++ b/src/utils/__tests__/is-date.spec.ts @@ -0,0 +1,16 @@ +/** + * @file Unit Tests - isDate + * @module tutils/utils/tests/unit/isDate + */ + +import testSubject from '../is-date' + +describe('unit:utils/isDate', () => { + it('should return false if value is not Date instance', () => { + expect(testSubject(faker.date.anytime().toISOString())).to.be.false + }) + + it('should return true if value is Date instance', () => { + expect(testSubject(faker.date.anytime())).to.be.true + }) +}) diff --git a/src/utils/index.ts b/src/utils/index.ts index 69ebceaf..b9fa6e7a 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -8,6 +8,7 @@ export { default as isArray } from './is-array' export { default as isBigInt } from './is-big-int' export { default as isBoolean } from './is-boolean' export { default as isBooleanish } from './is-booleanish' +export { default as isDate } from './is-date' export { default as isEmptyString } from './is-empty-string' export { default as isEmptyValue } from './is-empty-value' export { default as isFloat } from './is-float' diff --git a/src/utils/is-date.ts b/src/utils/is-date.ts new file mode 100644 index 00000000..d7225b45 --- /dev/null +++ b/src/utils/is-date.ts @@ -0,0 +1,18 @@ +/** + * @file Utilities - isDate + * @module tutils/utils/isDate + */ + +import isObject from './is-object' + +/** + * Checks if `value` is a {@linkcode Date} instance. + * + * @param {unknown} value - Value to check + * @return {value is Date} `true` if `value` is {@linkcode Date} instance + */ +function isDate(value: unknown): value is Date { + return isObject(value) && Reflect.get(value, 'constructor') === Date +} + +export default isDate