From 9129c5b06caa72fa1a48a619a2c665bb46f198a9 Mon Sep 17 00:00:00 2001 From: Richard Honor Date: Mon, 25 Mar 2019 10:40:57 +0000 Subject: [PATCH] [node-cron] Define timezone as a string literal --- types/node-cron/index.d.ts | 22 ++++++++++++++++++++-- types/node-cron/node-cron-tests.ts | 7 +++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/types/node-cron/index.d.ts b/types/node-cron/index.d.ts index 6cd1b1445e..33ea8edd41 100644 --- a/types/node-cron/index.d.ts +++ b/types/node-cron/index.d.ts @@ -1,9 +1,27 @@ // Type definitions for node-cron 2.0 // Project: https://github.com/node-cron/node-cron, https://github.com/merencia/node-cron // Definitions by: morsic , -// burtek +// burtek , +// Richard Honor // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +export type Timezone = 'Etc/GMT+12' | 'Pacific/Pago_Pago' | 'Pacific/Midway' | 'Pacific/Honolulu' | 'America/Juneau' | 'America/Los_Angeles' | 'America/Tijuana' | 'America/Phoenix' | + 'America/Chihuahua' | 'America/Mazatlan' | 'America/Denver' | 'America/Guatemala' | 'America/Chicago' | 'America/Mexico_City' | 'America/Monterrey' | 'America/Regina' | + 'America/Bogota' | 'America/New_York' | 'America/Indiana/Indianapolis' | 'America/Lima' | 'America/Halifax' | 'America/Caracas' | 'America/Guyana' | 'America/La_Paz' | + 'America/Puerto_Rico' | 'America/Santiago' | 'America/St_Johns' | 'America/Sao_Paulo' | 'America/Argentina/Buenos_Aires' | 'America/Godthab' | 'America/Montevideo' | + 'Atlantic/South_Georgia' | 'Atlantic/Azores' | 'Atlantic/Cape_Verde' | 'Africa/Casablanca' | 'Europe/London' | 'Europe/Lisbon' | 'Africa/Monrovia' | 'Etc/UTC' | + 'Europe/Amsterdam' | 'Europe/Belgrade' | 'Europe/Berlin' | 'Europe/Zurich' | 'Europe/Bratislava' | 'Europe/Brussels' | 'Europe/Budapest' | 'Europe/Copenhagen' | + 'Europe/Dublin' | 'Europe/Ljubljana' | 'Europe/Madrid' | 'Europe/Paris' | 'Europe/Prague' | 'Europe/Rome' | 'Europe/Sarajevo' | 'Europe/Skopje' | 'Europe/Stockholm' | + 'Europe/Vienna' | 'Europe/Warsaw' | 'Africa/Algiers' | 'Europe/Zagreb' | 'Europe/Athens' | 'Europe/Bucharest' | 'Africa/Cairo' | 'Africa/Harare' | 'Europe/Helsinki' | + 'Asia/Jerusalem' | 'Europe/Kaliningrad' | 'Europe/Kiev' | 'Africa/Johannesburg' | 'Europe/Riga' | 'Europe/Sofia' | 'Europe/Tallinn' | 'Europe/Vilnius' | 'Asia/Baghdad' | + 'Europe/Istanbul' | 'Asia/Kuwait' | 'Europe/Minsk' | 'Europe/Moscow' | 'Africa/Nairobi' | 'Asia/Riyadh' | 'Europe/Volgograd' | 'Asia/Tehran' | 'Asia/Muscat' | 'Asia/Baku' | + 'Europe/Samara' | 'Asia/Tbilisi' | 'Asia/Yerevan' | 'Asia/Kabul' | 'Asia/Yekaterinburg' | 'Asia/Karachi' | 'Asia/Tashkent' | 'Asia/Kolkata' | 'Asia/Colombo' | + 'Asia/Kathmandu' | 'Asia/Almaty' | 'Asia/Dhaka' | 'Asia/Urumqi' | 'Asia/Rangoon' | 'Asia/Bangkok' | 'Asia/Jakarta' | 'Asia/Krasnoyarsk' | 'Asia/Novosibirsk' | + 'Asia/Shanghai' | 'Asia/Chongqing' | 'Asia/Hong_Kong' | 'Asia/Irkutsk' | 'Asia/Kuala_Lumpur' | 'Australia/Perth' | 'Asia/Singapore' | 'Asia/Taipei' | 'Asia/Ulaanbaatar' | + 'Asia/Tokyo' | 'Asia/Seoul' | 'Asia/Yakutsk' | 'Australia/Adelaide' | 'Australia/Darwin' | 'Australia/Brisbane' | 'Australia/Melbourne' | 'Pacific/Guam' | 'Australia/Hobart' | + 'Pacific/Port_Moresby' | 'Australia/Sydney' | 'Asia/Vladivostok' | 'Asia/Magadan' | 'Pacific/Noumea' | 'Pacific/Guadalcanal' | 'Asia/Srednekolymsk' | 'Pacific/Auckland' | + 'Pacific/Fiji' | 'Asia/Kamchatka' | 'Pacific/Majuro' | 'Pacific/Chatham' | 'Pacific/Tongatapu' | 'Pacific/Apia' | 'Pacific/Fakaofo'; + export function schedule(cronExpression: string, func: () => void, options?: ScheduleOptions): ScheduledTask; export function validate(cronExpression: string): boolean; @@ -24,5 +42,5 @@ export interface ScheduleOptions { /** * The timezone that is used for job scheduling */ - timezone?: string; + timezone?: Timezone; } diff --git a/types/node-cron/node-cron-tests.ts b/types/node-cron/node-cron-tests.ts index 17350b6427..a5c92b5238 100644 --- a/types/node-cron/node-cron-tests.ts +++ b/types/node-cron/node-cron-tests.ts @@ -45,3 +45,10 @@ const invalid = cron.validate('60 * * * *'); if (valid && !invalid) { log('validator works'); } + +// check timezones are accepted from the string literal +const tast4 = cron.schedule('* * * * *', () => { + log('will execute every minute until stopped') +}, { timezone: 'Europe/London' }); + +tast4.destroy();