Socket
Socket
Sign inDemoInstall

timezone

Package Overview
Dependencies
Maintainers
1
Versions
67
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

timezone - npm Package Compare versions

Comparing version 0.0.5 to 0.0.6

.AppleDouble/.gitignore

1205

lib/timezone.js
(function() {
var defintion;
var __slice = Array.prototype.slice;
defintion = function(exports) {
var DAY, HOUR, LOCALES, MINUTE, SECOND, TIMEZONES, ch, dialHours, flag, isDate, isLeapYear, isoWeek, monthDayOfYear, offsetInMilliseconds, pad, padding, paddings, parse, specifiers, toString, transforms, tz, wallclock, weekOfYear, _ref;
TIMEZONES = {
zones: {},
rules: {}
};
LOCALES = {
en_US: {
day: {
abbrev: "Sun Mon Tue Wed Thu Fri Sat".split(/\s/),
full: "Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(/\s/)
(function() {
return (exports || (exports = window)) && (function(exports) {
var DAY, HOUR, LOCALES, MINUTE, SECOND, TIMEZONES, adjust, convertToUTC, convertToWallclock, convertUntil, daysInMonth, format, isLeapYear, makeDate, offsetInMilliseconds, parse, ruleToDate, summerRule, tz;
TIMEZONES = {
zones: {
UTC: [
{
"offset": "0",
"format": "UTC"
}
]
},
month: {
abbrev: "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(/\s/),
full: "January February March April May June July August September October November December".split(/\s/)
},
dateFormat: "%m/%d/%y",
timeFormat: "%H:%M:%S",
dateTimeFormat: "%a %b %_d %H:%M:%S %Y",
meridiem: ["am", "pm"]
}
};
SECOND = 1000;
MINUTE = SECOND * 60;
HOUR = MINUTE * 60;
DAY = HOUR * 24;
pad = function(number, padding, char) {
var string;
string = String(number);
return "" + (new Array((padding - string.length) + 1).join(char)) + string;
};
monthDayOfYear = [1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];
isLeapYear = function(date) {
var year;
year = date.getUTCFullYear();
if (year % 400 === 0) {
return true;
} else if (year % 100 === 0) {
return false;
} else if (year % 4 === 0) {
return true;
} else {
return false;
}
};
weekOfYear = function(date, startOfWeek) {
var day, diff, nyd, remaining, utc, week, weekStart;
utc = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
nyd = new Date(Date.UTC(date.getUTCFullYear(), 0, 1));
diff = (utc.getTime() - nyd.getTime()) / DAY;
day = utc.getUTCDay();
if (nyd.getUTCDay() === startOfWeek) {
weekStart = 0;
} else {
weekStart = 7 - nyd.getUTCDay() + startOfWeek;
if (weekStart === 8) {
weekStart = 1;
rules: {}
};
TIMEZONES.zones.UTC.name = "UTC";
LOCALES = {
en_US: {
name: "en_US",
day: {
abbrev: "Sun Mon Tue Wed Thu Fri Sat".split(/\s/),
full: "Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(/\s+/)
},
month: {
abbrev: "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(/\s+/),
full: "January February March\nApril May June\nJuly August September\nOctober November December".split(/\s+/)
},
dateFormat: "%m/%d/%y",
timeFormat: "%H:%M:%S",
dateTimeFormat: "%a %b %_d %H:%M:%S %Y",
meridiem: ["am", "pm"],
monthBeforeDate: true
}
}
remaining = diff - weekStart;
week = 0;
if (diff >= weekStart) {
week++;
diff -= weekStart;
week += Math.floor(diff / 7);
}
return week;
};
isoWeek = function(date) {
var ny, nyd, offset, week;
nyd = new Date(Date.UTC(date.getUTCFullYear(), 0, 1)).getUTCDay();
offset = nyd > 1 && nyd <= 4 ? 1 : 0;
week = weekOfYear(date, 1) + offset;
if (week === 0) {
ny = new Date(Date.UTC(date.getUTCFullYear() - 1, 0, 1));
nyd = ny.getUTCDay();
week = nyd === 4 || (nyd === 3 && isLeapYear(ny)) ? 53 : 52;
return [week, date.getUTCFullYear() - 1];
} else if (week === 53 && !(nyd === 4 || (nyd === 3 && isLeapYear(date)))) {
return [1, date.getUTCFullYear() + 1];
} else {
return [week, date.getUTCFullYear()];
}
};
dialHours = function(date) {
var hours;
hours = Math.floor(date.getUTCHours() % 12);
if (hours === 0) {
return 12;
} else {
return hours;
}
};
specifiers = {
a: function(date, locale) {
return locale.day.abbrev[date.getUTCDay()];
},
A: function(date, locale) {
return locale.day.full[date.getUTCDay()];
},
d: function(date) {
return date.getUTCDate();
},
e: function(date) {
return date.getUTCDate();
},
j: function(date) {
var days, month;
month = date.getUTCMonth();
days = monthDayOfYear[month];
if (month > 2 && isLeapYear(date)) {
days++;
}
days += date.getUTCDate() - 1;
return days;
},
u: function(date) {
var day;
day = date.getUTCDay();
if (day === 0) {
day = 7;
}
return day;
},
w: function(date) {
return date.getUTCDay();
},
U: function(date) {
return weekOfYear(date, 0);
},
W: function(date) {
return weekOfYear(date, 1);
},
V: function(date) {
var iso;
return iso = isoWeek(date)[0];
},
G: function(date) {
var iso;
return iso = isoWeek(date)[1];
},
g: function(date) {
var iso;
return iso = isoWeek(date)[1] % 100;
},
m: function(date) {
return date.getUTCMonth() + 1;
},
h: function(date, locale) {
return locale.month.abbrev[date.getUTCMonth()];
},
b: function(date, locale) {
return locale.month.abbrev[date.getUTCMonth()];
},
B: function(date, locale) {
return locale.month.full[date.getUTCMonth()];
},
y: function(date) {
return date.getUTCFullYear() % 100;
},
Y: function(date) {
return date.getUTCFullYear();
},
C: function(date) {
return Math.floor(date.getFullYear() / 100);
},
D: function(date) {
return tz("%m/%d/%y", date);
},
x: function(date, locale) {
return tz(locale.dateFormat, date, locale);
},
F: function(date) {
return tz("%Y-%m-%d", date);
},
l: function(date) {
return dialHours(date);
},
I: function(date) {
return dialHours(date);
},
k: function(date) {
return date.getUTCHours();
},
H: function(date) {
return date.getUTCHours();
},
P: function(date, locale) {
return locale.meridiem[Math.floor(date.getUTCHours() / 12)];
},
p: function(date, locale) {
return locale.meridiem[Math.floor(date.getUTCHours() / 12)].toUpperCase();
},
M: function(date) {
return date.getUTCMinutes();
},
s: function(date) {
return Math.floor(date.getTime() / 1000);
},
S: function(date) {
return date.getUTCSeconds();
},
N: function(date) {
return (date.getTime() % 1000) * 1000000;
},
r: function(date) {
return tz("%I:%M:%S %p", date);
},
R: function(date) {
return tz("%H:%M", date);
},
T: function(date) {
return tz("%H:%M:%S", date);
},
X: function(date, locale) {
return tz(locale.timeFormat, date, locale);
},
c: function(date, locale) {
return tz(locale.dateTimeFormat, date, locale);
},
z: function(date, locale, tzdata) {
var offset;
offset = Math.floor(offsetInMilliseconds(tzdata.offset) / 1000 / 60);
if (offset < 0) {
return "-" + (pad(Math.abs(offset), 4, "0"));
};
SECOND = 1000;
MINUTE = SECOND * 60;
HOUR = MINUTE * 60;
DAY = HOUR * 24;
isLeapYear = function(year) {
if (year % 400 === 0) {
return true;
} else if (year % 100 === 0) {
return false;
} else if (year % 4 === 0) {
return true;
} else {
return pad(Math.abs(offset), 4, "0");
return false;
}
}
};
padding = {
d: 2,
U: 2,
W: 2,
V: 2,
g: 2,
m: 2,
j: 3,
C: 2,
I: 2,
H: 2,
k: 2,
M: 2,
S: 2,
N: 9,
y: 2
};
paddings = {
"-": function(number) {
return number;
}
};
_ref = {
"_": " ",
"0": "0"
};
for (flag in _ref) {
ch = _ref[flag];
paddings[flag] = (function(ch) {
return function(number, padding) {
return pad(number, padding, ch);
};
daysInMonth = (function() {
var DAYS_IN_MONTH;
DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
return function(month, year) {
var days;
days = DAYS_IN_MONTH[month];
if (month === 1 && isLeapYear(year)) {
days++;
}
return days;
};
})(ch);
}
transforms = {
none: function(value) {
return value;
},
"^": function(value) {
return value.toUpperCase();
}
};
toString = function(date, request) {
var flags, format, i, locale, match, offset, output, prefix, rest, specifier, transform, tzdata, value, zone, _ref2, _ref3, _ref4, _ref5;
format = request.format, locale = request.locale, zone = request.zone;
_ref2 = [new Date(date), []], offset = _ref2[0], output = _ref2[1];
tzdata = TIMEZONES.zones[zone];
if (zone !== "UTC") {
offset = wallclock(offset, tzdata);
}
while (format.length) {
match = /^(.*?)%([-0_^]?)([aAcdDeFHIjklMNpPsrRSTuwXUWVmhbByYcGgCx])(.*)$/.exec(format);
if (match) {
_ref3 = match.slice(1), prefix = _ref3[0], flags = _ref3[1], specifier = _ref3[2], rest = _ref3[3];
value = specifiers[specifier](offset, locale);
if (padding[specifier]) {
flag = specifier === "k" ? "_" : "0";
for (i = 0, _ref4 = flags.length; 0 <= _ref4 ? i < _ref4 : i > _ref4; 0 <= _ref4 ? i++ : i--) {
if (paddings[flags[i]]) {
flag = flags[i];
})();
format = (function() {
var MONTH_DAY_OF_YEAR, ch, dialHours, flag, isoWeek, pad, padding, paddings, specifiers, transforms, weekOfYear, _ref;
MONTH_DAY_OF_YEAR = [1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];
weekOfYear = function(date, startOfWeek) {
var day, diff, fields, nyd, remaining, week, weekStart;
fields = [date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()];
date = new Date(Date.UTC.apply(null, fields));
nyd = new Date(Date.UTC(date.getUTCFullYear(), 0, 1));
diff = (date.getTime() - nyd.getTime()) / DAY;
day = date.getUTCDay();
if (nyd.getUTCDay() === startOfWeek) {
weekStart = 0;
} else {
weekStart = 7 - nyd.getUTCDay() + startOfWeek;
if (weekStart === 8) {
weekStart = 1;
}
}
remaining = diff - weekStart;
week = 0;
if (diff >= weekStart) {
week++;
diff -= weekStart;
week += Math.floor(diff / 7);
}
return week;
};
isoWeek = function(date) {
var ny, nyd, nyy, offset, week;
nyy = date.getUTCFullYear();
nyd = new Date(Date.UTC(nyy, 0, 1)).getUTCDay();
offset = nyd > 1 && nyd <= 4 ? 1 : 0;
week = weekOfYear(date, 1) + offset;
if (week === 0) {
ny = new Date(Date.UTC(date.getUTCFullYear() - 1, 0, 1));
nyd = ny.getUTCDay();
nyy = ny.getUTCFullYear();
week = nyd === 4 || (nyd === 3 && isLeapYear(nyy)) ? 53 : 52;
return [week, date.getUTCFullYear() - 1];
} else if (week === 53 && !(nyd === 4 || (nyd === 3 && isLeapYear(nyy)))) {
return [1, date.getUTCFullYear() + 1];
} else {
return [week, date.getUTCFullYear()];
}
};
dialHours = function(date) {
var hours;
hours = Math.floor(date.getUTCHours() % 12);
if (hours === 0) {
return 12;
} else {
return hours;
}
};
specifiers = {
a: function(date, locale) {
return locale.day.abbrev[date.getUTCDay()];
},
A: function(date, locale) {
return locale.day.full[date.getUTCDay()];
},
d: function(date) {
return date.getUTCDate();
},
e: function(date) {
return date.getUTCDate();
},
j: function(date) {
var days, month;
month = date.getUTCMonth();
days = MONTH_DAY_OF_YEAR[month];
if (month > 2 && isLeapYear(date.getUTCFullYear())) {
days++;
}
days += date.getUTCDate() - 1;
return days;
},
u: function(date) {
var day;
day = date.getUTCDay();
if (day === 0) {
day = 7;
}
return day;
},
w: function(date) {
return date.getUTCDay();
},
U: function(date) {
return weekOfYear(date, 0);
},
W: function(date) {
return weekOfYear(date, 1);
},
V: function(date) {
var iso;
return iso = isoWeek(date)[0];
},
G: function(date) {
var iso;
return iso = isoWeek(date)[1];
},
g: function(date) {
var iso;
return iso = isoWeek(date)[1] % 100;
},
m: function(date) {
return date.getUTCMonth() + 1;
},
h: function(date, locale) {
return locale.month.abbrev[date.getUTCMonth()];
},
b: function(date, locale) {
return locale.month.abbrev[date.getUTCMonth()];
},
B: function(date, locale) {
return locale.month.full[date.getUTCMonth()];
},
y: function(date) {
return date.getUTCFullYear() % 100;
},
Y: function(date) {
return date.getUTCFullYear();
},
C: function(date) {
return Math.floor(date.getFullYear() / 100);
},
D: function(date) {
return tz(date, "%m/%d/%y");
},
x: function(date, locale, tzdata) {
var utc;
utc = convertToUTC(date.getTime(), tzdata);
return tz(utc, locale.dateFormat, locale.name, tzdata.name);
},
F: function(date) {
return tz(date, "%Y-%m-%d");
},
l: function(date) {
return dialHours(date);
},
I: function(date) {
return dialHours(date);
},
k: function(date) {
return date.getUTCHours();
},
H: function(date) {
return date.getUTCHours();
},
P: function(date, locale) {
return locale.meridiem[Math.floor(date.getUTCHours() / 12)];
},
p: function(date, locale) {
return locale.meridiem[Math.floor(date.getUTCHours() / 12)].toUpperCase();
},
M: function(date) {
return date.getUTCMinutes();
},
s: function(date) {
return Math.floor(date.getTime() / 1000);
},
S: function(date) {
return date.getUTCSeconds();
},
N: function(date) {
return (date.getTime() % 1000) * 1000000;
},
r: function(date) {
return tz(date, "%I:%M:%S %p");
},
R: function(date) {
return tz(date, "%H:%M");
},
T: function(date) {
return tz(date, "%H:%M:%S");
},
X: function(date, locale, tzdata) {
var utc;
utc = convertToUTC(date.getTime(), tzdata);
return tz(utc, locale.timeFormat, locale.name, tzdata.name);
},
c: function(date, locale, tzdata) {
var utc;
utc = convertToUTC(date.getTime(), tzdata);
return tz(utc, locale.dateTimeFormat, locale.name, tzdata.name);
},
z: function(date, locale, tzdata) {
var offset;
offset = Math.floor(offsetInMilliseconds(tzdata.offset) / 1000 / 60);
if (offset < 0) {
return "-" + (pad(Math.abs(offset), 4, "0"));
} else {
return pad(Math.abs(offset), 4, "0");
}
}
};
padding = {
d: 2,
U: 2,
W: 2,
V: 2,
g: 2,
m: 2,
j: 3,
C: 2,
I: 2,
H: 2,
k: 2,
M: 2,
S: 2,
N: 9,
y: 2
};
paddings = {
"-": function(number) {
return number;
}
};
_ref = {
"_": " ",
"0": "0"
};
for (flag in _ref) {
ch = _ref[flag];
paddings[flag] = (function(ch) {
return function(number, count) {
return pad(number, count, ch);
};
})(ch);
}
pad = function(number, count, char) {
var string;
string = String(number);
return "" + (new Array((count - string.length) + 1).join(char)) + string;
};
transforms = {
none: function(value) {
return value;
},
"^": function(value) {
return value.toUpperCase();
}
};
return function(wallclock, rest, locale, tzdata) {
var date, flags, match, output, prefix, specifier, style, transform, value, _ref2;
date = new Date(wallclock);
output = [];
while (rest.length) {
match = /^(.*?)%(?:%|([-0_^]?)([aAcdDeFHIjklMNpPsrRSTuwXUWVmhbByYcGgCx]))(.*)$/.exec(rest);
if (match) {
_ref2 = match.slice(1), prefix = _ref2[0], flags = _ref2[1], specifier = _ref2[2], rest = _ref2[3];
if (specifier) {
value = specifiers[specifier](date, locale, tzdata);
if (padding[specifier]) {
style = specifier === "k" ? "_" : "0";
if (flags.length) {
if (paddings[flags[0]]) {
style = flags[0];
}
}
value = paddings[style](value, padding[specifier], tzdata);
}
transform = transforms.none;
if (flags.length) {
transform = transforms[flags[0]] || transform;
}
value = transform(value);
if (prefix != null) {
output.push(prefix);
}
output.push(value);
} else {
output.push("%");
}
} else if (rest.length) {
output.push(rest);
rest = "";
}
value = paddings[flag](value, padding[specifier], tzdata);
}
transform = transforms.none;
for (i = 0, _ref5 = flags.length; 0 <= _ref5 ? i <= _ref5 : i >= _ref5; 0 <= _ref5 ? i++ : i--) {
transform = transforms[flags[i]] || transform;
return output.join("");
};
})();
makeDate = (function() {
var zeroUnless;
zeroUnless = function(date, value) {
if (value != null) {
return date.push(parseInt(value, 10));
} else {
return date.push(0);
}
value = transform(value);
if (prefix != null) {
output.push(prefix);
};
return function(year, month, day, hours, minutes, seconds, milliseconds) {
var date, now;
date = [];
if (!(year != null)) {
now = new Date();
date.push(now.getUTCFullYear());
} else {
date.push(parseInt(year, 10));
}
output.push(value);
format = rest;
} else if (format.length) {
output.push(format);
format = "";
if (!(month != null)) {
if (!(year != null)) {
date.push(now.getUTCMonth());
} else {
date.push(0);
}
} else {
date.push(parseInt(month, 10) - 1);
}
if (!(day != null)) {
if (!(month != null)) {
date.push(now.getUTCDate());
} else {
date.push(1);
}
} else {
date.push(parseInt(day, 10));
}
zeroUnless(date, hours);
zeroUnless(date, minutes);
zeroUnless(date, seconds);
zeroUnless(date, milliseconds);
return Date.UTC.apply(null, date);
};
})();
parse = function(pattern, locale) {
var abbrev, after, before, date, day, dow, first, hours, i, made, match, milliseconds, minutes, month, num, offset, remaining, second, seconds, time, year, zone, zoneOffset, _i, _len, _len2, _ref, _ref10, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9;
if (match = /^(.*?)(\w{3}),\s+(\d{1,2})\s+(\w{3})\s+(\d{2,4})\s+(\d{2}):(\d{2})(?::(\d{2}))?\s*(?:([A-IK-Z]|UT|GMT|[ECMP][SD]T)|([-+]?\d{4}))?(.*)$/i.exec(pattern)) {
_ref = match.slice(1), before = _ref[0], dow = _ref[1], day = _ref[2], month = _ref[3], year = _ref[4], hours = _ref[5], minutes = _ref[6], seconds = _ref[7], zone = _ref[8], offset = _ref[9], after = _ref[10];
dow = dow.toLowerCase();
_ref2 = locale.day.abbrev;
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
abbrev = _ref2[_i];
if (dow === abbrev.toLowerCase()) {
dow = null;
break;
}
}
if (dow) {
throw new Error("bad weekday");
}
month = month.toLowerCase();
_ref3 = locale.month.abbrev;
for (i = 0, _len2 = _ref3.length; i < _len2; i++) {
abbrev = _ref3[i];
if (month === abbrev.toLowerCase()) {
month = i;
break;
}
}
if (typeof month === "string") {
throw new Error("bad month");
}
seconds || (seconds = "0");
offset || (offset = "0");
_ref4 = (function() {
var _j, _len3, _ref4, _results;
_ref4 = [day, year, hours, minutes, seconds, offset];
_results = [];
for (_j = 0, _len3 = _ref4.length; _j < _len3; _j++) {
num = _ref4[_j];
_results.push(parseInt(num, 10));
}
return _results;
})(), day = _ref4[0], year = _ref4[1], hours = _ref4[2], minutes = _ref4[3], seconds = _ref4[4], offset = _ref4[5];
made = makeDate(year, month + 1, day, hours, minutes, seconds, 0);
if (offset) {
made -= Math.floor(offset / 100) * HOUR;
}
return made;
}
}
return output.join("");
};
isDate = function(object) {};
parse = function(pattern) {};
offsetInMilliseconds = function(pattern) {
var hours, match, minutes, offset, seconds, sign, _ref2;
match = /^(-?)(\d)+:(\d)+(?::(\d+))?$/.exec(pattern).slice(1);
sign = match.shift();
_ref2 = match.map(function(number) {
return parseInt(number, 10);
}), hours = _ref2[0], minutes = _ref2[1], seconds = _ref2[2];
offset = hours * HOUR;
offset += minutes * MINUTE;
offset += (seconds || 0) * SECOND;
if (sign === '-') {
offset *= -1;
}
console.log(offset, pattern);
return offset;
};
({
compare: function() {
var difference, field, fields, left, right, _i, _len;
left = arguments[0], right = arguments[1], fields = 3 <= arguments.length ? __slice.call(arguments, 2) : [];
for (_i = 0, _len = fields.length; _i < _len; _i++) {
field = fields[_i];
field = field.replace(/^./, function(m) {
return "getUTC" + (m.toUpperCase());
});
difference = left[field]() - right[field]();
if (!difference) {
return difference;
if (match = /^(.*?)(?:(\d\d\d\d)-(\d\d)(?:-(\d{2}))?|(\d{4})(\d{2})(\d{2})?)(?:(?:\s+|T)(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?)?(?:(?:\s+|Z)([+-]\d{2}(?::?\d{2})?))?(.*)$/.exec(pattern)) {
before = match.splice(0, 2).pop();
date = match.splice(0, 3);
if (date[0] != null) {
year = date[0], month = date[1], day = date[2];
}
date = match.splice(0, 3);
if (date[0] != null) {
year = date[0], month = date[1], day = date[2];
}
time = match.splice(0, 4);
if (time[0] != null) {
hours = time[0], minutes = time[1], seconds = time[2], milliseconds = time[3];
}
zone = match.shift();
if (zone != null) {
zoneOffset = offsetInMilliseconds(zone);
}
after = match.pop();
remaining = (before + after).replace(/\s+/, "").length;
if (remaining === 0) {
return makeDate(year, month, day, hours, minutes, seconds, milliseconds);
}
}
}
});
wallclock = function(date, tzdata) {
var adjusted, adjustment, candidate, i, parsed, time, _ref2;
time = date.getTime();
for (i = _ref2 = tzdata.length - 1; _ref2 <= 0 ? i <= 0 : i >= 0; _ref2 <= 0 ? i++ : i--) {
candidate = tzdata[i];
adjustment = time + offsetInMilliseconds(candidate.offset);
console.log(time, adjustment, new Date(time).toUTCString(), new Date(adjustment).toUTCString());
if (candidate.until) {
parsed = new Date(candidate.until);
if (parsed.getTime() < adjustment) {
match = /^([^\u0000]*?)(\d{1,2})\/(\d{1,2})\/(\d{4})([^\u0000]*)$/.exec(pattern);
if (match) {
before = match.splice(0, 2).pop();
_ref5 = (function() {
var _j, _len3, _ref5, _results;
_ref5 = match.splice(0, 3);
_results = [];
for (_j = 0, _len3 = _ref5.length; _j < _len3; _j++) {
num = _ref5[_j];
_results.push(parseInt(num, 10));
}
return _results;
})(), first = _ref5[0], second = _ref5[1], year = _ref5[2];
after = match.pop();
if (locale.monthBeforeDate) {
_ref6 = [first, second], month = _ref6[0], day = _ref6[1];
} else {
_ref7 = [first, second], day = _ref7[0], month = _ref7[1];
}
if (month > 12) {
_ref8 = [month, day], day = _ref8[0], month = _ref8[1];
}
} else if (match = /^([^\u0000]*?)(\d{4})\/(\d{1,2})\/(\d{1,2})([^\u0000]*)$/.exec(pattern)) {
before = match.splice(0, 2).pop();
_ref9 = (function() {
var _j, _len3, _ref9, _results;
_ref9 = match.splice(0, 3);
_results = [];
for (_j = 0, _len3 = _ref9.length; _j < _len3; _j++) {
num = _ref9[_j];
_results.push(parseInt(num, 10));
}
return _results;
})(), year = _ref9[0], month = _ref9[1], day = _ref9[2];
after = match.pop();
} else {
_ref10 = ['', pattern], before = _ref10[0], after = _ref10[1];
}
if (after.length) {
match = /(?:)/;
}
return makeDate(year, month, day, hours, minutes, seconds, milliseconds);
};
offsetInMilliseconds = function(pattern) {
var hours, match, minutes, number, offset, seconds, sign, _ref;
match = /^(-?)(\d)+(?::(\d)+)?(?::(\d+))?$/.exec(pattern).slice(1);
match[0] += "1";
_ref = (function() {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = match.length; _i < _len; _i++) {
number = match[_i];
_results.push(parseInt(number || "0", 10));
}
return _results;
})(), sign = _ref[0], hours = _ref[1], minutes = _ref[2], seconds = _ref[3];
offset = hours * HOUR;
offset += minutes * MINUTE;
offset += seconds * SECOND;
offset *= sign;
return offset;
};
ruleToDate = function(year, rule) {
var date, day, hours, i, index, match, min, minutes, month, number, seconds, _len, _len2, _ref, _ref2, _ref3, _ref4;
match = /^(\d)+:(\d)+(?::(\d+))?$/.exec(rule.time).slice(1);
_ref = (function() {
var _i, _len, _results;
_results = [];
for (_i = 0, _len = match.length; _i < _len; _i++) {
number = match[_i];
_results.push(parseInt(number || 0, 10));
}
return _results;
})(), hours = _ref[0], minutes = _ref[1], seconds = _ref[2];
match = /^(?:(\d+)|last(\w+)|(\w+)>=(\d+))$/.exec(rule.day);
if (match[1]) {
_ref2 = [rule.month, parseInt(match[1], 10)], month = _ref2[0], day = _ref2[1];
date = new Date(Date.UTC(year, month, day, hours, minutes, seconds));
} else if (match[2]) {
_ref3 = LOCALES.en_US.day.abbrev;
for (i = 0, _len = _ref3.length; i < _len; i++) {
day = _ref3[i];
if (day === match[2]) {
index = i;
break;
}
}
day = daysInMonth(rule.month, year);
while (true) {
date = new Date(Date.UTC(year, rule.month, day, hours, minutes, seconds));
if (date.getDay() === index) {
break;
}
day--;
}
} else {
min = parseInt(match[4], 10);
_ref4 = LOCALES.en_US.day.abbrev;
for (i = 0, _len2 = _ref4.length; i < _len2; i++) {
day = _ref4[i];
if (day === match[3]) {
index = i;
break;
}
}
day = 1;
while (true) {
date = new Date(Date.UTC(year, rule.month, day, hours, minutes, seconds));
if (date.getDay() === index && date.getDate() >= min) {
break;
}
day++;
}
}
return date.getTime();
};
convertUntil = function(zone) {
var field, fields;
if (typeof zone.until !== "number") {
if (zone.until != null) {
fields = (function() {
var _i, _len, _ref, _results;
_ref = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}).000Z$/.exec(zone.until).slice(1);
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
field = _ref[_i];
_results.push(parseInt(field, 10));
}
return _results;
})();
fields[1]--;
zone.until = Date.UTC.apply(null, fields);
} else {
zone.until = Math.MAX_VALUE;
}
}
return zone.until;
};
summerRule = function(wall, utc, zone) {
var dst, offsetWall, previous, rule, rules, start, year, _i, _len;
if (rules = TIMEZONES.rules[zone.rules]) {
year = new Date(wall).getUTCFullYear();
previous = new Date(year - 1, 11, 31).getTime();
for (_i = 0, _len = rules.length; _i < _len; _i++) {
rule = rules[_i];
if (rule.from <= year && year <= rule.to) {
start = ruleToDate(year, rule);
offsetWall = wall;
if (dst && utc) {
offsetWall += offsetInMilliseconds(dst.save);
}
if (start <= offsetWall && previous < start) {
previous = start;
dst = rule;
}
}
}
}
return dst;
};
convertToWallclock = function(utc, tzdata) {
var dst, maybe, offset, wallclock, zone, _i, _len;
for (_i = 0, _len = tzdata.length; _i < _len; _i++) {
maybe = tzdata[_i];
offset = utc + offsetInMilliseconds(maybe.offset);
if (convertUntil(maybe) < offset) {
break;
}
zone = maybe;
wallclock = offset;
}
adjusted = adjustment;
}
return new Date(adjusted);
};
exports.tz = tz = function() {
var adjustment, argument, date, request, splat, _i, _j, _len, _len2, _ref2;
date = arguments[0], splat = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
if (!(date != null)) {
throw new Error("invalid arguments");
}
request = {
zone: "UTC",
adjustments: []
dst = summerRule(wallclock, true, zone);
wallclock += offsetInMilliseconds((dst != null ? dst.save : void 0) || "0");
return wallclock;
};
if (typeof date === "string" && date.indexOf("%") !== -1) {
request.format = date;
date = splat.shift();
} else {
convertToUTC = function(wallclock, tzdata) {
var dst, end, maybe, start, utc, zone, _i, _len;
for (_i = 0, _len = tzdata.length; _i < _len; _i++) {
maybe = tzdata[_i];
if (convertUntil(maybe) < wallclock) {
break;
}
zone = maybe;
}
utc = wallclock - offsetInMilliseconds(zone.offset);
dst = summerRule(wallclock, false, zone);
if (dst && dst.save !== "0") {
start = ruleToDate(new Date(wallclock).getUTCFullYear(), dst);
end = start + offsetInMilliseconds(dst.save);
if (start <= wallclock && wallclock < end) {
utc = null;
} else {
utc -= offsetInMilliseconds((dst != null ? dst.save : void 0) || "0");
}
}
return utc;
};
adjust = (function() {
var FIELD, SIGN_OFFSET, explode;
FIELD = {
year: 0,
month: 1,
day: 2,
hour: 3,
minute: 4,
second: 5,
milli: 6
};
SIGN_OFFSET = {
"-": -1,
"+": +1
};
explode = function(wallclock) {};
return function(wallclock, adjustment, tzdata) {
var count, date, fields, forward, increment, match, month, offset, offsets, rest, sign, terminal, unit, utc, _ref;
fields = explode(wallclock);
offsets = [0, 0, 0, 0, 0, 0, 0];
rest = adjustment.replace(/^\s+/, "");
while (true) {
match = /^([+-])\s*(\d+)\s+(year|month|day|hour|minute|second|milli)s?(:?(?:\s+(.*))|(.*))$/.exec(rest);
if (!match) {
throw new Error("bad date math pattern " + adjustment + ".");
}
_ref = match.slice(1), sign = _ref[0], count = _ref[1], unit = _ref[2], rest = _ref[3], terminal = _ref[4];
if (terminal != null) {
if (terminal !== "") {
throw new Error("bad date math pattern " + adjustment + ".");
}
break;
}
offsets[FIELD[unit]] += parseInt(count, 10) * SIGN_OFFSET[sign];
if (rest === "") {
break;
}
}
utc = convertToUTC(wallclock, tzdata);
utc += offsets[FIELD.milli];
utc += offsets[FIELD.second] * SECOND;
utc += offsets[FIELD.minute] * MINUTE;
utc += offsets[FIELD.hour] * HOUR;
wallclock = convertToWallclock(utc, tzdata);
if (offset = offsets[FIELD.day]) {
forward = offset / Math.abs(offset);
wallclock += offset * DAY;
}
date = new Date(wallclock);
fields = [date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds()];
if (offset = offsets[FIELD.month]) {
forward = increment = offset / Math.abs(offset);
while (offset !== 0) {
month = offset[FIELD.month];
if (month === 0 && offset < 0) {
fields[FIELD.month] = 11;
fields[FIELD.year]--;
} else if (month === 11 && offset > 0) {
fields[FIELD.month] = 0;
fields[FIELD.year]++;
} else {
fields[FIELD.month] += increment;
}
offset += increment;
}
}
if (offset = offsets[FIELD.year]) {
forward = offset / Math.abs(offset);
fields[FIELD.year] += offset;
}
wallclock = Date.UTC.apply(null, fields);
if (!(convertToUTC(wallclock, tzdata) != null)) {
wallclock += DAY * forward;
utc = convertToUTC(wallclock, tzdata);
utc -= DAY * forward;
wallclock = convertToWallclock(utc, tzdata);
}
return wallclock;
};
})();
exports.tz = tz = function() {
var adjustment, argument, date, request, splat, token, wallclock, _i, _j, _len, _len2, _ref;
date = arguments[0], splat = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
if (!(date != null)) {
throw new Error("invalid arguments");
}
request = {
adjustments: []
};
for (_i = 0, _len = splat.length; _i < _len; _i++) {

@@ -387,7 +752,7 @@ argument = splat[_i];

request.zone || (request.zone = argument);
} else if (/^\w{2}_\w+{2}$/.test(argument)) {
request.locale || (request.locale = LOCALES[argument]);
if (!request.locale) {
} else if (/^\w{2}_\w{2}$/.test(argument)) {
if (!LOCALES[argument]) {
throw new Error("unknown locale");
}
request.locale || (request.locale = argument);
} else {

@@ -397,52 +762,72 @@ request.adjustments.push(argument);

}
}
request.locale || (request.locale = LOCALES.en_US);
if (date.getTime) {
date = date.getTime();
} else if (typeof date === "string") {
date = parse(date, request);
}
_ref2 = request.adjustments;
for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
adjustment = _ref2[_j];
date = adjust(adjustment, request);
}
if (request.format) {
return toString(date, request);
} else {
return date;
}
};
tz.locales = function(override) {
var k, v;
if (override != null) {
for (k in override) {
v = override[k];
LOCALES[k] = v;
request.locale || (request.locale = "en_US");
request.zone || (request.zone = "UTC");
request.tzdata = TIMEZONES.zones[request.zone];
request.locale = LOCALES[request.locale];
if (typeof date === "string") {
wallclock = parse(date, request.locale, request.tzdata);
} else {
wallclock = date.getTime ? date.getTime() : date;
if (request.zone !== "UTC") {
wallclock = convertToWallclock(wallclock, request.tzdata);
}
}
}
return LOCALES;
};
return tz.timezones = function(override) {
var k, v, _ref2, _ref3;
if (override != null) {
_ref2 = override != null ? override.zones : void 0;
for (k in _ref2) {
v = _ref2[k];
TIMEZONES.zones[k] = v;
_ref = request.adjustments;
for (_j = 0, _len2 = _ref.length; _j < _len2; _j++) {
adjustment = _ref[_j];
wallclock = adjust(wallclock, adjustment, request.tzdata);
}
_ref3 = override != null ? override.rules : void 0;
for (k in _ref3) {
v = _ref3[k];
TIMEZONES.rules[k] = v;
if (request.format) {
token = format(wallclock, request.format, request.locale, request.tzdata);
} else if (request.zone !== "UTC") {
token = convertToUTC(wallclock, request.tzdata);
} else {
token = wallclock;
}
}
return TIMEZONES;
};
};
if ((typeof module !== "undefined" && module !== null) && (module.exports != null)) {
defintion(module.exports);
} else {
defintion(this);
}
return token;
};
tz.specialize = function() {
var curried, k, self, splat, v;
splat = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
self = this;
curried = function() {
var before;
before = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
return self.apply(null, before.concat(splat));
};
for (k in self) {
v = self[k];
curried[k] = v;
}
return curried;
};
tz.locales = function(override) {
var k, v;
if (override != null) {
for (k in override) {
v = override[k];
LOCALES[k] = v;
}
}
return LOCALES;
};
return tz.timezones = function(override) {
var k, v, _ref, _ref2;
if ((override != null ? override.zones : void 0) != null) {
_ref = override.zones;
for (k in _ref) {
v = _ref[k];
TIMEZONES.zones[k] = v;
TIMEZONES.zones[k].name = k;
}
_ref2 = override != null ? override.rules : void 0;
for (k in _ref2) {
v = _ref2[k];
TIMEZONES.rules[k] = v;
}
}
return TIMEZONES;
};
})(exports);
})();
}).call(this);
{ "name": "timezone"
, "version": "0.0.5"
, "version": "0.0.6"
, "author": "Alan Gutierrez"
, "directories": { "lib": "./lib" }
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc