chronokinesis 3.1.2 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,43 +3,27 @@ var chronokinesis = (function (exports) {
3
3
 
4
4
  function ownKeys(object, enumerableOnly) {
5
5
  var keys = Object.keys(object);
6
-
7
6
  if (Object.getOwnPropertySymbols) {
8
7
  var symbols = Object.getOwnPropertySymbols(object);
9
-
10
- if (enumerableOnly) {
11
- symbols = symbols.filter(function (sym) {
12
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
13
- });
14
- }
15
-
16
- keys.push.apply(keys, symbols);
8
+ enumerableOnly && (symbols = symbols.filter(function (sym) {
9
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
10
+ })), keys.push.apply(keys, symbols);
17
11
  }
18
-
19
12
  return keys;
20
13
  }
21
-
22
14
  function _objectSpread2(target) {
23
15
  for (var i = 1; i < arguments.length; i++) {
24
- var source = arguments[i] != null ? arguments[i] : {};
25
-
26
- if (i % 2) {
27
- ownKeys(Object(source), true).forEach(function (key) {
28
- _defineProperty(target, key, source[key]);
29
- });
30
- } else if (Object.getOwnPropertyDescriptors) {
31
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
32
- } else {
33
- ownKeys(Object(source)).forEach(function (key) {
34
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
35
- });
36
- }
16
+ var source = null != arguments[i] ? arguments[i] : {};
17
+ i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
18
+ _defineProperty(target, key, source[key]);
19
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
20
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
21
+ });
37
22
  }
38
-
39
23
  return target;
40
24
  }
41
-
42
25
  function _defineProperty(obj, key, value) {
26
+ key = _toPropertyKey(key);
43
27
  if (key in obj) {
44
28
  Object.defineProperty(obj, key, {
45
29
  value: value,
@@ -50,10 +34,8 @@ var chronokinesis = (function (exports) {
50
34
  } else {
51
35
  obj[key] = value;
52
36
  }
53
-
54
37
  return obj;
55
38
  }
56
-
57
39
  function _unsupportedIterableToArray(o, minLen) {
58
40
  if (!o) return;
59
41
  if (typeof o === "string") return _arrayLikeToArray(o, minLen);
@@ -62,25 +44,18 @@ var chronokinesis = (function (exports) {
62
44
  if (n === "Map" || n === "Set") return Array.from(o);
63
45
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
64
46
  }
65
-
66
47
  function _arrayLikeToArray(arr, len) {
67
48
  if (len == null || len > arr.length) len = arr.length;
68
-
69
49
  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
70
-
71
50
  return arr2;
72
51
  }
73
-
74
52
  function _createForOfIteratorHelper(o, allowArrayLike) {
75
53
  var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
76
-
77
54
  if (!it) {
78
55
  if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
79
56
  if (it) o = it;
80
57
  var i = 0;
81
-
82
58
  var F = function () {};
83
-
84
59
  return {
85
60
  s: F,
86
61
  n: function () {
@@ -98,13 +73,11 @@ var chronokinesis = (function (exports) {
98
73
  f: F
99
74
  };
100
75
  }
101
-
102
76
  throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
103
77
  }
104
-
105
78
  var normalCompletion = true,
106
- didErr = false,
107
- err;
79
+ didErr = false,
80
+ err;
108
81
  return {
109
82
  s: function () {
110
83
  it = it.call(o);
@@ -127,31 +100,35 @@ var chronokinesis = (function (exports) {
127
100
  }
128
101
  };
129
102
  }
103
+ function _toPrimitive(input, hint) {
104
+ if (typeof input !== "object" || input === null) return input;
105
+ var prim = input[Symbol.toPrimitive];
106
+ if (prim !== undefined) {
107
+ var res = prim.call(input, hint || "default");
108
+ if (typeof res !== "object") return res;
109
+ throw new TypeError("@@toPrimitive must return a primitive value.");
110
+ }
111
+ return (hint === "string" ? String : Number)(input);
112
+ }
113
+ function _toPropertyKey(arg) {
114
+ var key = _toPrimitive(arg, "string");
115
+ return typeof key === "symbol" ? key : String(key);
116
+ }
130
117
 
131
- /**
132
- * Inspired by Time keeper - EEasy testing of time-dependent code.
133
- *
134
- * Veselin Todorov <hi@vesln.com>
135
- * MIT License.
136
- */
137
118
  var NativeDate = Date;
138
119
  var nativeGetTimezoneOffset = NativeDate.prototype.getTimezoneOffset;
139
120
  var freezedAt = null;
140
121
  var traveledTo = null;
141
122
  var started = null;
142
123
  var iana = null;
143
-
144
124
  function FakeDate() {
145
125
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
146
126
  args[_key] = arguments[_key];
147
127
  }
148
-
149
128
  var length = args.length;
150
-
151
129
  if (!length) {
152
130
  if (freezedAt) args = [freezedAt];else if (traveledTo) args = [time()];
153
131
  }
154
-
155
132
  var dt = instantiate(NativeDate, args);
156
133
  Object.defineProperty(dt, 'getTimezoneOffset', {
157
134
  enumerable: false,
@@ -164,16 +141,13 @@ var chronokinesis = (function (exports) {
164
141
  });
165
142
  return dt;
166
143
  }
167
-
168
144
  FakeDate.UTC = NativeDate.UTC;
169
145
  FakeDate.parse = NativeDate.parse;
170
146
  FakeDate.prototype = NativeDate.prototype;
171
-
172
147
  FakeDate.now = function () {
173
148
  if (freezedAt) return freezedAt.getTime();
174
149
  return time();
175
150
  };
176
-
177
151
  var chronokinesis = {
178
152
  freeze: freeze,
179
153
  defrost: defrost,
@@ -182,40 +156,38 @@ var chronokinesis = (function (exports) {
182
156
  isKeepingTime: isKeepingTime,
183
157
  timezone: timezone
184
158
  };
185
-
186
159
  function freeze() {
187
160
  useFakeDate();
188
-
189
161
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
190
162
  args[_key2] = arguments[_key2];
191
163
  }
192
-
193
164
  freezedAt = instantiate(Date, args);
165
+ if (isNaN(freezedAt)) {
166
+ reset();
167
+ throw new TypeError('Chronokinesis cannot freeze to invalid date, check your arguments. Chronokinesis is reset');
168
+ }
194
169
  return freezedAt;
195
170
  }
196
-
197
171
  function defrost() {
198
172
  freezedAt = null;
199
173
  }
200
-
201
174
  function travel() {
202
175
  useFakeDate();
203
-
204
176
  for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
205
177
  args[_key3] = arguments[_key3];
206
178
  }
207
-
208
179
  var travelToDate = instantiate(Date, args);
180
+ if (isNaN(travelToDate)) {
181
+ reset();
182
+ throw new TypeError('Chronokinesis cannot travel to invalid date, check your arguments. Chronokinesis is reset');
183
+ }
209
184
  traveledTo = travelToDate.getTime();
210
185
  started = NativeDate.now();
211
-
212
186
  if (freezedAt) {
213
187
  freezedAt = travelToDate;
214
188
  }
215
-
216
189
  return travelToDate;
217
190
  }
218
-
219
191
  function reset() {
220
192
  useNativeDate();
221
193
  freezedAt = null;
@@ -223,11 +195,9 @@ var chronokinesis = (function (exports) {
223
195
  traveledTo = null;
224
196
  iana = null;
225
197
  }
226
-
227
198
  function isKeepingTime() {
228
199
  return Date === FakeDate;
229
200
  }
230
-
231
201
  function timezone(timeZone) {
232
202
  var options = {
233
203
  year: 'numeric',
@@ -251,24 +221,20 @@ var chronokinesis = (function (exports) {
251
221
  freeze: freezeInTimezone,
252
222
  travel: travelInTimezone
253
223
  };
254
-
255
224
  function freezeInTimezone() {
256
225
  if (!arguments.length && iana === timeZone) return freeze();
257
226
  iana = timeZone;
258
227
  return freeze(getTime.apply(void 0, arguments));
259
228
  }
260
-
261
229
  function travelInTimezone() {
262
230
  if (!arguments.length && iana === timeZone) return travel();
263
231
  iana = timeZone;
264
232
  return travel(getTime.apply(void 0, arguments));
265
233
  }
266
-
267
234
  function getTime() {
268
235
  for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
269
236
  args[_key4] = arguments[_key4];
270
237
  }
271
-
272
238
  var realDate = instantiate(Date, args);
273
239
  var tz = new NativeDate(toUTC(formatter, realDate));
274
240
  if (!args.length) return tz.getTime();
@@ -276,7 +242,6 @@ var chronokinesis = (function (exports) {
276
242
  return realDate.getTime() + currentTz.getTime() - tz.getTime();
277
243
  }
278
244
  }
279
-
280
245
  function useFakeDate() {
281
246
  Date = FakeDate; // eslint-disable-line no-global-assign
282
247
  }
@@ -288,46 +253,36 @@ var chronokinesis = (function (exports) {
288
253
  function time() {
289
254
  return traveledTo + (NativeDate.now() - started);
290
255
  }
291
-
292
256
  function instantiate(type, args) {
293
257
  var ctorArgs = args.slice();
294
258
  ctorArgs.unshift(null);
295
259
  return new (Function.prototype.bind.apply(type, ctorArgs))();
296
260
  }
297
-
298
261
  function toUTC(formatter, dt) {
299
262
  var year, month, day, hour, minute, second;
300
-
301
263
  var _iterator = _createForOfIteratorHelper(formatter.formatToParts(dt)),
302
- _step;
303
-
264
+ _step;
304
265
  try {
305
266
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
306
267
  var _step$value = _step.value,
307
- type = _step$value.type,
308
- value = _step$value.value;
309
-
268
+ type = _step$value.type,
269
+ value = _step$value.value;
310
270
  switch (type) {
311
271
  case 'year':
312
272
  year = parseInt(value);
313
273
  break;
314
-
315
274
  case 'month':
316
275
  month = parseInt(value) - 1;
317
276
  break;
318
-
319
277
  case 'day':
320
278
  day = parseInt(value);
321
279
  break;
322
-
323
280
  case 'hour':
324
281
  hour = parseInt(value) % 24;
325
282
  break;
326
-
327
283
  case 'minute':
328
284
  minute = parseInt(value);
329
285
  break;
330
-
331
286
  case 'second':
332
287
  second = parseInt(value);
333
288
  break;
@@ -338,26 +293,13 @@ var chronokinesis = (function (exports) {
338
293
  } finally {
339
294
  _iterator.f();
340
295
  }
341
-
342
296
  return NativeDate.UTC(year, month, day, hour, minute, second, dt.getMilliseconds());
343
297
  }
344
- var chronokinesis_1 = chronokinesis.freeze;
345
- var chronokinesis_2 = chronokinesis.defrost;
346
- var chronokinesis_3 = chronokinesis.travel;
347
- var chronokinesis_4 = chronokinesis.reset;
348
- var chronokinesis_5 = chronokinesis.isKeepingTime;
349
- var chronokinesis_6 = chronokinesis.timezone;
350
298
 
351
- exports['default'] = chronokinesis;
352
- exports.defrost = chronokinesis_2;
353
- exports.freeze = chronokinesis_1;
354
- exports.isKeepingTime = chronokinesis_5;
355
- exports.reset = chronokinesis_4;
356
- exports.timezone = chronokinesis_6;
357
- exports.travel = chronokinesis_3;
299
+ exports.default = chronokinesis;
358
300
 
359
301
  Object.defineProperty(exports, '__esModule', { value: true });
360
302
 
361
303
  return exports;
362
304
 
363
- }({}));
305
+ })({});
package/dist/index.es.js CHANGED
@@ -1,42 +1,26 @@
1
1
  function ownKeys(object, enumerableOnly) {
2
2
  var keys = Object.keys(object);
3
-
4
3
  if (Object.getOwnPropertySymbols) {
5
4
  var symbols = Object.getOwnPropertySymbols(object);
6
-
7
- if (enumerableOnly) {
8
- symbols = symbols.filter(function (sym) {
9
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
10
- });
11
- }
12
-
13
- keys.push.apply(keys, symbols);
5
+ enumerableOnly && (symbols = symbols.filter(function (sym) {
6
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
7
+ })), keys.push.apply(keys, symbols);
14
8
  }
15
-
16
9
  return keys;
17
10
  }
18
-
19
11
  function _objectSpread2(target) {
20
12
  for (var i = 1; i < arguments.length; i++) {
21
- var source = arguments[i] != null ? arguments[i] : {};
22
-
23
- if (i % 2) {
24
- ownKeys(Object(source), true).forEach(function (key) {
25
- _defineProperty(target, key, source[key]);
26
- });
27
- } else if (Object.getOwnPropertyDescriptors) {
28
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
29
- } else {
30
- ownKeys(Object(source)).forEach(function (key) {
31
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
32
- });
33
- }
13
+ var source = null != arguments[i] ? arguments[i] : {};
14
+ i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
15
+ _defineProperty(target, key, source[key]);
16
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
17
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
18
+ });
34
19
  }
35
-
36
20
  return target;
37
21
  }
38
-
39
22
  function _defineProperty(obj, key, value) {
23
+ key = _toPropertyKey(key);
40
24
  if (key in obj) {
41
25
  Object.defineProperty(obj, key, {
42
26
  value: value,
@@ -47,10 +31,8 @@ function _defineProperty(obj, key, value) {
47
31
  } else {
48
32
  obj[key] = value;
49
33
  }
50
-
51
34
  return obj;
52
35
  }
53
-
54
36
  function _unsupportedIterableToArray(o, minLen) {
55
37
  if (!o) return;
56
38
  if (typeof o === "string") return _arrayLikeToArray(o, minLen);
@@ -59,25 +41,18 @@ function _unsupportedIterableToArray(o, minLen) {
59
41
  if (n === "Map" || n === "Set") return Array.from(o);
60
42
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
61
43
  }
62
-
63
44
  function _arrayLikeToArray(arr, len) {
64
45
  if (len == null || len > arr.length) len = arr.length;
65
-
66
46
  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
67
-
68
47
  return arr2;
69
48
  }
70
-
71
49
  function _createForOfIteratorHelper(o, allowArrayLike) {
72
50
  var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
73
-
74
51
  if (!it) {
75
52
  if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
76
53
  if (it) o = it;
77
54
  var i = 0;
78
-
79
55
  var F = function () {};
80
-
81
56
  return {
82
57
  s: F,
83
58
  n: function () {
@@ -95,13 +70,11 @@ function _createForOfIteratorHelper(o, allowArrayLike) {
95
70
  f: F
96
71
  };
97
72
  }
98
-
99
73
  throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
100
74
  }
101
-
102
75
  var normalCompletion = true,
103
- didErr = false,
104
- err;
76
+ didErr = false,
77
+ err;
105
78
  return {
106
79
  s: function () {
107
80
  it = it.call(o);
@@ -124,31 +97,35 @@ function _createForOfIteratorHelper(o, allowArrayLike) {
124
97
  }
125
98
  };
126
99
  }
100
+ function _toPrimitive(input, hint) {
101
+ if (typeof input !== "object" || input === null) return input;
102
+ var prim = input[Symbol.toPrimitive];
103
+ if (prim !== undefined) {
104
+ var res = prim.call(input, hint || "default");
105
+ if (typeof res !== "object") return res;
106
+ throw new TypeError("@@toPrimitive must return a primitive value.");
107
+ }
108
+ return (hint === "string" ? String : Number)(input);
109
+ }
110
+ function _toPropertyKey(arg) {
111
+ var key = _toPrimitive(arg, "string");
112
+ return typeof key === "symbol" ? key : String(key);
113
+ }
127
114
 
128
- /**
129
- * Inspired by Time keeper - EEasy testing of time-dependent code.
130
- *
131
- * Veselin Todorov <hi@vesln.com>
132
- * MIT License.
133
- */
134
115
  var NativeDate = Date;
135
116
  var nativeGetTimezoneOffset = NativeDate.prototype.getTimezoneOffset;
136
117
  var freezedAt = null;
137
118
  var traveledTo = null;
138
119
  var started = null;
139
120
  var iana = null;
140
-
141
121
  function FakeDate() {
142
122
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
143
123
  args[_key] = arguments[_key];
144
124
  }
145
-
146
125
  var length = args.length;
147
-
148
126
  if (!length) {
149
127
  if (freezedAt) args = [freezedAt];else if (traveledTo) args = [time()];
150
128
  }
151
-
152
129
  var dt = instantiate(NativeDate, args);
153
130
  Object.defineProperty(dt, 'getTimezoneOffset', {
154
131
  enumerable: false,
@@ -161,16 +138,13 @@ function FakeDate() {
161
138
  });
162
139
  return dt;
163
140
  }
164
-
165
141
  FakeDate.UTC = NativeDate.UTC;
166
142
  FakeDate.parse = NativeDate.parse;
167
143
  FakeDate.prototype = NativeDate.prototype;
168
-
169
144
  FakeDate.now = function () {
170
145
  if (freezedAt) return freezedAt.getTime();
171
146
  return time();
172
147
  };
173
-
174
148
  var chronokinesis = {
175
149
  freeze: freeze,
176
150
  defrost: defrost,
@@ -179,40 +153,38 @@ var chronokinesis = {
179
153
  isKeepingTime: isKeepingTime,
180
154
  timezone: timezone
181
155
  };
182
-
183
156
  function freeze() {
184
157
  useFakeDate();
185
-
186
158
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
187
159
  args[_key2] = arguments[_key2];
188
160
  }
189
-
190
161
  freezedAt = instantiate(Date, args);
162
+ if (isNaN(freezedAt)) {
163
+ reset();
164
+ throw new TypeError('Chronokinesis cannot freeze to invalid date, check your arguments. Chronokinesis is reset');
165
+ }
191
166
  return freezedAt;
192
167
  }
193
-
194
168
  function defrost() {
195
169
  freezedAt = null;
196
170
  }
197
-
198
171
  function travel() {
199
172
  useFakeDate();
200
-
201
173
  for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
202
174
  args[_key3] = arguments[_key3];
203
175
  }
204
-
205
176
  var travelToDate = instantiate(Date, args);
177
+ if (isNaN(travelToDate)) {
178
+ reset();
179
+ throw new TypeError('Chronokinesis cannot travel to invalid date, check your arguments. Chronokinesis is reset');
180
+ }
206
181
  traveledTo = travelToDate.getTime();
207
182
  started = NativeDate.now();
208
-
209
183
  if (freezedAt) {
210
184
  freezedAt = travelToDate;
211
185
  }
212
-
213
186
  return travelToDate;
214
187
  }
215
-
216
188
  function reset() {
217
189
  useNativeDate();
218
190
  freezedAt = null;
@@ -220,11 +192,9 @@ function reset() {
220
192
  traveledTo = null;
221
193
  iana = null;
222
194
  }
223
-
224
195
  function isKeepingTime() {
225
196
  return Date === FakeDate;
226
197
  }
227
-
228
198
  function timezone(timeZone) {
229
199
  var options = {
230
200
  year: 'numeric',
@@ -248,24 +218,20 @@ function timezone(timeZone) {
248
218
  freeze: freezeInTimezone,
249
219
  travel: travelInTimezone
250
220
  };
251
-
252
221
  function freezeInTimezone() {
253
222
  if (!arguments.length && iana === timeZone) return freeze();
254
223
  iana = timeZone;
255
224
  return freeze(getTime.apply(void 0, arguments));
256
225
  }
257
-
258
226
  function travelInTimezone() {
259
227
  if (!arguments.length && iana === timeZone) return travel();
260
228
  iana = timeZone;
261
229
  return travel(getTime.apply(void 0, arguments));
262
230
  }
263
-
264
231
  function getTime() {
265
232
  for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
266
233
  args[_key4] = arguments[_key4];
267
234
  }
268
-
269
235
  var realDate = instantiate(Date, args);
270
236
  var tz = new NativeDate(toUTC(formatter, realDate));
271
237
  if (!args.length) return tz.getTime();
@@ -273,7 +239,6 @@ function timezone(timeZone) {
273
239
  return realDate.getTime() + currentTz.getTime() - tz.getTime();
274
240
  }
275
241
  }
276
-
277
242
  function useFakeDate() {
278
243
  Date = FakeDate; // eslint-disable-line no-global-assign
279
244
  }
@@ -285,46 +250,36 @@ function useNativeDate() {
285
250
  function time() {
286
251
  return traveledTo + (NativeDate.now() - started);
287
252
  }
288
-
289
253
  function instantiate(type, args) {
290
254
  var ctorArgs = args.slice();
291
255
  ctorArgs.unshift(null);
292
256
  return new (Function.prototype.bind.apply(type, ctorArgs))();
293
257
  }
294
-
295
258
  function toUTC(formatter, dt) {
296
259
  var year, month, day, hour, minute, second;
297
-
298
260
  var _iterator = _createForOfIteratorHelper(formatter.formatToParts(dt)),
299
- _step;
300
-
261
+ _step;
301
262
  try {
302
263
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
303
264
  var _step$value = _step.value,
304
- type = _step$value.type,
305
- value = _step$value.value;
306
-
265
+ type = _step$value.type,
266
+ value = _step$value.value;
307
267
  switch (type) {
308
268
  case 'year':
309
269
  year = parseInt(value);
310
270
  break;
311
-
312
271
  case 'month':
313
272
  month = parseInt(value) - 1;
314
273
  break;
315
-
316
274
  case 'day':
317
275
  day = parseInt(value);
318
276
  break;
319
-
320
277
  case 'hour':
321
278
  hour = parseInt(value) % 24;
322
279
  break;
323
-
324
280
  case 'minute':
325
281
  minute = parseInt(value);
326
282
  break;
327
-
328
283
  case 'second':
329
284
  second = parseInt(value);
330
285
  break;
@@ -335,14 +290,7 @@ function toUTC(formatter, dt) {
335
290
  } finally {
336
291
  _iterator.f();
337
292
  }
338
-
339
293
  return NativeDate.UTC(year, month, day, hour, minute, second, dt.getMilliseconds());
340
294
  }
341
- var chronokinesis_1 = chronokinesis.freeze;
342
- var chronokinesis_2 = chronokinesis.defrost;
343
- var chronokinesis_3 = chronokinesis.travel;
344
- var chronokinesis_4 = chronokinesis.reset;
345
- var chronokinesis_5 = chronokinesis.isKeepingTime;
346
- var chronokinesis_6 = chronokinesis.timezone;
347
295
 
348
- export { chronokinesis as default, chronokinesis_2 as defrost, chronokinesis_1 as freeze, chronokinesis_5 as isKeepingTime, chronokinesis_4 as reset, chronokinesis_6 as timezone, chronokinesis_3 as travel };
296
+ export { chronokinesis as default };
package/index.js CHANGED
@@ -59,6 +59,10 @@ module.exports = {
59
59
  function freeze(...args) {
60
60
  useFakeDate();
61
61
  freezedAt = instantiate(Date, args);
62
+ if (isNaN(freezedAt)) {
63
+ reset();
64
+ throw new TypeError('Chronokinesis cannot freeze to invalid date, check your arguments. Chronokinesis is reset');
65
+ }
62
66
  return freezedAt;
63
67
  }
64
68
 
@@ -68,8 +72,11 @@ function defrost() {
68
72
 
69
73
  function travel(...args) {
70
74
  useFakeDate();
71
-
72
75
  const travelToDate = instantiate(Date, args);
76
+ if (isNaN(travelToDate)) {
77
+ reset();
78
+ throw new TypeError('Chronokinesis cannot travel to invalid date, check your arguments. Chronokinesis is reset');
79
+ }
73
80
 
74
81
  traveledTo = travelToDate.getTime();
75
82
  started = NativeDate.now();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chronokinesis",
3
- "version": "3.1.2",
3
+ "version": "4.0.1",
4
4
  "description": "Module for testing time-dependent code",
5
5
  "author": {
6
6
  "name": "Pål Edman",
@@ -14,22 +14,19 @@
14
14
  "type": "git",
15
15
  "url": "git://github.com/paed01/chronokinesis"
16
16
  },
17
- "engines": {
18
- "node": ">=10"
19
- },
20
17
  "scripts": {
21
18
  "toc": "node generate-api-toc.js",
22
- "test": "lab -vcL",
23
- "posttest": "npm run prepare",
24
- "test:lcov": "npm t -- -r lcov -o coverage.lcov",
25
- "prepare": "npm run toc && rollup -c"
19
+ "test": "mocha",
20
+ "lint": "eslint . --cache",
21
+ "test:lcov": "c8 -r lcov mocha && npm run lint",
22
+ "posttest": "npm run lint && npm run dist",
23
+ "prepublishOnly": "npm run dist",
24
+ "dist": "npm run toc && rollup -c"
26
25
  },
27
26
  "files": [
28
27
  "index.js",
29
28
  "dist/chronokinesis.js",
30
- "dist/index.es.js",
31
- "LICENSE",
32
- "README.md"
29
+ "dist/index.es.js"
33
30
  ],
34
31
  "bugs": {
35
32
  "url": "https://github.com/paed01/chronokinesis/issues"
@@ -49,15 +46,15 @@
49
46
  "devDependencies": {
50
47
  "@babel/core": "^7.12.3",
51
48
  "@babel/preset-env": "^7.12.1",
52
- "@hapi/code": "^8.0.2",
53
- "@hapi/lab": "^24.1.0",
54
- "coveralls": "^3.1.0",
55
- "eslint": "^7.13.0",
49
+ "@rollup/plugin-babel": "^6.0.3",
50
+ "@rollup/plugin-commonjs": "^23.0.4",
51
+ "c8": "^7.12.0",
52
+ "chai": "^4.3.7",
53
+ "eslint": "^8.29.0",
56
54
  "lodash.clonedeep": "^4.5.0",
57
55
  "markdown-toc": "^1.2.0",
56
+ "mocha": "^10.1.0",
58
57
  "moment": "^2.29.1",
59
- "rollup": "^2.56.3",
60
- "rollup-plugin-babel": "^4.4.0",
61
- "rollup-plugin-commonjs": "^10.1.0"
58
+ "rollup": "^3.7.0"
62
59
  }
63
60
  }