diff --git a/timezone-js/timezone-js.d.ts b/timezone-js/timezone-js.d.ts index 50b9c3f369..ecf7d9e489 100644 --- a/timezone-js/timezone-js.d.ts +++ b/timezone-js/timezone-js.d.ts @@ -8,23 +8,73 @@ declare module "timezone-js" { export var timezone: TimezoneJs; - export var Date: { - new (timezone?: string): TimezoneJsDate; - new (time: string, timezone?: string): TimezoneJsDate; - new (year?: number, month?: number, day?: number, hour?: number, minute?: number, second?: string, timezone?: string): TimezoneJsDate; - }; - - export interface TimezoneJsDate extends Date { + export class Date { + constructor(timezone?: string); + // Note due to naming conflict I have not found a way to introduce the constructor + // that takes a regular Date object. Instead, I defined it to take an Object. + constructor(date: Object, timezone?: string); + constructor(utcMillis: number, timezone?: string); + constructor(time: string, timezone?: string); + constructor(year?: number, month?: number, day?: number, hour?: number, minute?: number, second?: number, millisecond?: number, timezone?: string); setTimezone: (timezone: string) => void; + + // regular Date members + toString(): string; + toDateString(): string; + toTimeString(): string; + toLocaleString(): string; + toLocaleDateString(): string; + toLocaleTimeString(): string; + valueOf(): number; + getTime(): number; + getFullYear(): number; + getUTCFullYear(): number; + getMonth(): number; + getUTCMonth(): number; + getDate(): number; + getUTCDate(): number; + getDay(): number; + getUTCDay(): number; + getHours(): number; + getUTCHours(): number; + getMinutes(): number; + getUTCMinutes(): number; + getSeconds(): number; + getUTCSeconds(): number; + getMilliseconds(): number; + getUTCMilliseconds(): number; + getTimezoneOffset(): number; + setTime(time: number): number; + + // Note the setters have a non-void return type. Date has them as well, according to TypeScript + setMilliseconds(ms: number): number; + setUTCMilliseconds(ms: number): number; + setSeconds(sec: number, ms?: number): number; + setUTCSeconds(sec: number, ms?: number): number; + setMinutes(min: number, sec?: number, ms?: number): number; + setUTCMinutes(min: number, sec?: number, ms?: number): number; + setHours(hours: number, min?: number, sec?: number, ms?: number): number; + setUTCHours(hours: number, min?: number, sec?: number, ms?: number): number; + setDate(date: number): number; + setUTCDate(date: number): number; + setMonth(month: number, date?: number): number; + setUTCMonth(month: number, date?: number): number; + setFullYear(year: number, month?: number, date?: number): number; + setUTCFullYear(year: number, month?: number, date?: number): number; + toUTCString(): string; + toISOString(): string; + toJSON(key?: any): string; } + export interface TimezoneJs { zoneFileBasePath: string; - loadingScheme: TimezoneJsLoadingScheme; + loadingScheme: number; loadingSchemes: TimezoneJsLoadingSchemes; transport(opts: TimezoneJsOptions): any; init(opts?: TimezoneJsOptions): any; + getAllZones(): string[]; } export interface TimezoneJsOptions { @@ -34,12 +84,9 @@ declare module "timezone-js" { url?: string; } - export interface TimezoneJsLoadingScheme { - } - - export enum TimezoneJsLoadingSchemes { - PRELOAD_ALL, - LAZY_LOAD, - MANUAL_LOAD + export class TimezoneJsLoadingSchemes { + PRELOAD_ALL: number; + LAZY_LOAD: number; + MANUAL_LOAD: number; } }