From 45d0ca54bb025ffc2e0ed86fd3f6a032976dde5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martynas=20=C5=BDilinskas?= Date: Tue, 20 Jun 2017 13:53:11 +0300 Subject: [PATCH] Updated extended moment function return type. Updated tests. --- types/moment-range/index.d.ts | 38 +++++++++++++----------- types/moment-range/moment-range-tests.ts | 33 ++++++++++++-------- 2 files changed, 41 insertions(+), 30 deletions(-) diff --git a/types/moment-range/index.d.ts b/types/moment-range/index.d.ts index 4ada0490cc..e74bd5a1be 100644 --- a/types/moment-range/index.d.ts +++ b/types/moment-range/index.d.ts @@ -6,16 +6,16 @@ // MartynasZilinskas // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -import { Moment, unitOfTime } from 'moment'; +import * as moment from 'moment'; export class DateRange { - start: Moment; - end: Moment; + start: moment.Moment; + end: moment.Moment; - constructor(range: string | Date[] | Moment[]); - constructor(start: Date | Moment, end: Date | Moment); + constructor(range: string | Date[] | moment.Moment[]); + constructor(start: Date | moment.Moment, end: Date | moment.Moment); - contains(other: DateRange | Moment | Date, options?: { exclusive?: boolean }): boolean; + contains(other: DateRange | moment.Moment | Date, options?: { exclusive?: boolean }): boolean; overlaps(range: DateRange, options?: { adjacent?: boolean }): boolean; @@ -25,13 +25,13 @@ export class DateRange { subtract(other: DateRange): DateRange[]; - by(interval: unitOfTime.Diff, options?: { exclusive?: boolean, step?: number }): Iterable; + by(interval: moment.unitOfTime.Diff, options?: { exclusive?: boolean, step?: number }): Iterable; - byRange(interval: DateRange, options?: { exclusive?: boolean, step?: number }): Iterable; + byRange(interval: DateRange, options?: { exclusive?: boolean, step?: number }): Iterable; isSame(other: DateRange): boolean; - diff(unit?: unitOfTime.Diff, rounded?: boolean): number; + diff(unit?: moment.unitOfTime.Diff, rounded?: boolean): number; toDate(): Date[]; @@ -39,7 +39,7 @@ export class DateRange { valueOf(): number; - center(): Moment; + center(): moment.Moment; clone(): DateRange; @@ -47,17 +47,21 @@ export class DateRange { adjacent(other: DateRange): boolean; - duration(unit?: unitOfTime.Diff, precise?: boolean): number; + duration(unit?: moment.unitOfTime.Diff, precise?: boolean): number; - reverseBy(interval: unitOfTime.Diff, options?: { exclusive?: boolean, step?: number }): Iterable; + reverseBy(interval: moment.unitOfTime.Diff, options?: { exclusive?: boolean, step?: number }): Iterable; - reverseByRange(interval: DateRange, options?: { exclusive?: boolean, step?: number }): Iterable; + reverseByRange(interval: DateRange, options?: { exclusive?: boolean, step?: number }): Iterable; } -export interface MomentRangeExtends { - range(range: string | Date[] | Moment[]): DateRange; - range(start: Date | Moment, end: Date | Moment): DateRange; +export interface MomentRangeMethods { + range(range: string | Date[] | moment.Moment[]): DateRange; + range(start: Date | moment.Moment, end: Date | moment.Moment): DateRange; within(range: DateRange): boolean; } -export function extendMoment(moment: T): T & MomentRangeExtends; +export interface MomentRangeExtends extends MomentRangeMethods { + (...args: any[]): MomentRangeMethods & T; +} + +export function extendMoment(moment: T): MomentRangeExtends & T; diff --git a/types/moment-range/moment-range-tests.ts b/types/moment-range/moment-range-tests.ts index 7aa63c593f..00b60c7f41 100644 --- a/types/moment-range/moment-range-tests.ts +++ b/types/moment-range/moment-range-tests.ts @@ -1,7 +1,10 @@ -import * as moment from 'moment'; +import * as moment from "moment"; import * as momentRange from "moment-range"; const range: momentRange.DateRange = new momentRange.DateRange(new Date(2012, 0, 15), new Date(2012, 4, 23)); + +const extendedMoment = momentRange.extendMoment(moment); + const range2: momentRange.DateRange = new momentRange.DateRange(moment("2011-04-15", "YYYY-MM-DD"), moment("2011-11-27", "YYYY-MM-DD")); const range3: momentRange.DateRange = new momentRange.DateRange([moment("2011-04-15", "YYYY-MM-DD"), moment("2011-11-27", "YYYY-MM-DD")]); const range4: momentRange.DateRange = new momentRange.DateRange("2015-01-17T09:50:04+00:00/2015-04-17T08:29:55+00:00"); @@ -11,20 +14,20 @@ const date: moment.Moment = moment('2012-05-15'); const res1: boolean = range.adjacent(range2); const it0: Iterable = range.by('days'); -const it1: Iterable = range.by('months', {exclusive: true}); -const it2: Iterable = range.by('years', {exclusive: false, step: 2}); +const it1: Iterable = range.by('months', { exclusive: true }); +const it2: Iterable = range.by('years', { exclusive: false, step: 2 }); const it3: Iterable = range.byRange(range); -const it4: Iterable = range.byRange(range, {exclusive: true}); -const it5: Iterable = range.byRange(range, {exclusive: false, step: 2}); +const it4: Iterable = range.byRange(range, { exclusive: true }); +const it5: Iterable = range.byRange(range, { exclusive: false, step: 2 }); const res2: moment.Moment = range.center(); const res3: momentRange.DateRange = range.clone(); const res4: boolean = range.contains(range); -const res5: boolean = range.contains(range, {exclusive: true}); -const res6: boolean = range.contains(range, {exclusive: false}); +const res5: boolean = range.contains(range, { exclusive: true }); +const res6: boolean = range.contains(range, { exclusive: false }); const res10: number = range.diff('months', true); const res11: number = range.diff('days'); @@ -41,16 +44,16 @@ const res17: boolean = range.isSame(range2); const res18: boolean = range.isEqual(range2); const res20: boolean = range.overlaps(range2); -const res21: boolean = range.overlaps(range2, {adjacent: true}); -const res22: boolean = range.overlaps(range2, {adjacent: false}); +const res21: boolean = range.overlaps(range2, { adjacent: true }); +const res22: boolean = range.overlaps(range2, { adjacent: false }); const it6: Iterable = range.reverseBy('days'); -const it7: Iterable = range.reverseBy('months', {exclusive: true}); -const it8: Iterable = range.reverseBy('years', {exclusive: false, step: 2}); +const it7: Iterable = range.reverseBy('months', { exclusive: true }); +const it8: Iterable = range.reverseBy('years', { exclusive: false, step: 2 }); const it9: Iterable = range.reverseByRange(range); -const it10: Iterable = range.reverseByRange(range, {exclusive: true}); -const it11: Iterable = range.reverseByRange(range, {exclusive: false, step: 2}); +const it10: Iterable = range.reverseByRange(range, { exclusive: true }); +const it11: Iterable = range.reverseByRange(range, { exclusive: false, step: 2 }); const res23: momentRange.DateRange = range.add(range2); @@ -64,3 +67,7 @@ const res27: number = range.valueOf(); const res28: moment.Moment = range.start; const res29: moment.Moment = range.end; + +const res30: boolean = extendedMoment.within(range); +const res31: boolean = extendedMoment().within(range); +const res32: momentRange.DateRange = extendedMoment().range(moment("2011-04-15", "YYYY-MM-DD"), moment("2011-11-27", "YYYY-MM-DD"));