1 | import _ from 'lodash';
|
2 |
|
3 | const TIMEZONE_REGEX = /^([+-](2[0-3]|[01][0-9])(:?[0-5][0-9])?|Z)$/;
|
4 |
|
5 | export const timezones = {
|
6 | 'UTC': '+00:00',
|
7 | 'GMT': '+00:00',
|
8 | 'BST': '+01:00',
|
9 | 'IST': '+01:00',
|
10 | 'WET': '+00:00',
|
11 | 'WEST': '+01:00',
|
12 | 'CET': '+01:00',
|
13 | 'CEST': '+02:00',
|
14 | 'EET': '+02:00',
|
15 | 'EEST': '+03:00',
|
16 | 'MSK': '+03:00',
|
17 | 'MSD': '+04:00',
|
18 | 'AST': '-04:00',
|
19 | 'ADT': '-03:00',
|
20 | 'EST': '-05:00',
|
21 | 'EDT': '-04:00',
|
22 | 'CST': '-06:00',
|
23 | 'CDT': '-05:00',
|
24 | 'MST': '-07:00',
|
25 | 'MDT': '-06:00',
|
26 | 'PST': '-08:00',
|
27 | 'PDT': '-07:00',
|
28 | 'HST': '-10:00',
|
29 | 'AKST': '-09:00',
|
30 | 'AKDT': '-08:00',
|
31 | 'AEST': '+10:00',
|
32 | 'AEDT': '+11:00',
|
33 | 'ACST': '+09:30',
|
34 | 'ACDT': '+10:30',
|
35 | 'AWST': '+08:00'
|
36 | };
|
37 |
|
38 | const isTimezone = (value) => {
|
39 | return _.isInteger(value)
|
40 | ? value <= 840 && value >= -720
|
41 | : _.isString(value) && (value in timezones || TIMEZONE_REGEX.test(value));
|
42 | };
|
43 |
|
44 | export function getTimezoneKey(configuration) {
|
45 | return _.findKey(configuration, { 'type': 'timezone' });
|
46 | }
|
47 |
|
48 | export default isTimezone;
|