qrono 0.1.2 → 0.1.4

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.
package/dist/qrono.cjs CHANGED
@@ -1,4 +1,6 @@
1
1
  var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
2
4
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
4
6
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
@@ -14,15 +16,23 @@ var __spreadValues = (a, b) => {
14
16
  }
15
17
  return a;
16
18
  };
17
- var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
18
19
  var __export = (target, all) => {
19
- __markAsModule(target);
20
20
  for (var name in all)
21
21
  __defProp(target, name, { get: all[name], enumerable: true });
22
22
  };
23
+ var __copyProps = (to, from, except, desc) => {
24
+ if (from && typeof from === "object" || typeof from === "function") {
25
+ for (let key of __getOwnPropNames(from))
26
+ if (!__hasOwnProp.call(to, key) && key !== except)
27
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
28
+ }
29
+ return to;
30
+ };
31
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
32
 
24
33
  // src/qrono.js
25
- __export(exports, {
34
+ var qrono_exports = {};
35
+ __export(qrono_exports, {
26
36
  friday: () => friday,
27
37
  monday: () => monday,
28
38
  qrono: () => qrono,
@@ -32,9 +42,9 @@ __export(exports, {
32
42
  tuesday: () => tuesday,
33
43
  wednesday: () => wednesday
34
44
  });
45
+ module.exports = __toCommonJS(qrono_exports);
35
46
 
36
47
  // src/helpers.js
37
- var epoch = new Date(0);
38
48
  var daysPerWeek = 7;
39
49
  var hoursPerDay = 24;
40
50
  var hoursPerWeek = hoursPerDay * daysPerWeek;
@@ -61,7 +71,9 @@ function has(object, ...keys) {
61
71
  return keys.flat().some(object.hasOwnProperty, object);
62
72
  }
63
73
  function fields(object) {
64
- return Object.entries(object).filter(([, value]) => !isFunction(value)).map(([key]) => key);
74
+ return Object.entries(object).filter(
75
+ ([, value]) => !isFunction(value)
76
+ ).map(([key]) => key);
65
77
  }
66
78
  function given(arg) {
67
79
  return arg !== void 0;
@@ -220,7 +232,10 @@ Qrono.asLocaltime = function() {
220
232
  defaultContext.localtime = true;
221
233
  return this;
222
234
  };
223
- Object.assign(Qrono, { monday, tuesday, wednesday, thursday, friday, saturday, sunday });
235
+ Object.assign(
236
+ Qrono,
237
+ { monday, tuesday, wednesday, thursday, friday, saturday, sunday }
238
+ );
224
239
  var internal2 = Symbol("Qrono.internal");
225
240
  function Qrono(...args) {
226
241
  var _a;
@@ -228,9 +243,11 @@ function Qrono(...args) {
228
243
  return new Qrono(...args);
229
244
  }
230
245
  const self = this[internal2] = {
246
+ // properties
231
247
  nativeDate: null,
232
248
  localtime: false,
233
249
  ambiguousAsDst: false,
250
+ // methods
234
251
  set,
235
252
  parse,
236
253
  valid,
@@ -250,14 +267,16 @@ function Qrono(...args) {
250
267
  const first = args[0];
251
268
  const second = args[1];
252
269
  if (first == null) {
253
- (_a = self.nativeDate) != null ? _a : self.nativeDate = new Date();
270
+ (_a = self.nativeDate) != null ? _a : self.nativeDate = /* @__PURE__ */ new Date();
254
271
  } else if (first instanceof Date) {
255
272
  self.nativeDate = new Date(first.getTime());
256
273
  } else if (isString(first)) {
257
274
  self.parse(first);
258
275
  } else if (isObject(first)) {
259
276
  if (!hasDatetimeField(first)) {
260
- throw RangeError("Missing time field (year, minute, day, hour, minute, second or millisecond)");
277
+ throw RangeError(
278
+ "Missing time field (year, minute, day, hour, minute, second or millisecond)"
279
+ );
261
280
  }
262
281
  self.set(first);
263
282
  } else if (Number.isFinite(first) && !Number.isFinite(second)) {
@@ -303,21 +322,45 @@ function set(values) {
303
322
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
304
323
  const args = __spreadValues({}, values);
305
324
  args.month = args.month && args.month - 1;
306
- const date = (_a = this.nativeDate) != null ? _a : new Date();
325
+ const date = (_a = this.nativeDate) != null ? _a : /* @__PURE__ */ new Date();
307
326
  if (this.localtime) {
308
- this.nativeDate = asDst(this.ambiguousAsDst, new Date((_b = args.year) != null ? _b : date.getFullYear(), (_c = args.month) != null ? _c : this.nativeDate ? date.getMonth() : 0, (_d = args.day) != null ? _d : this.nativeDate ? date.getDate() : 1, (_e = args.hour) != null ? _e : this.nativeDate ? date.getHours() : 0, (_f = args.minute) != null ? _f : this.nativeDate ? date.getMinutes() : 0, (_g = args.second) != null ? _g : this.nativeDate ? date.getSeconds() : 0, (_h = args.millisecond) != null ? _h : this.nativeDate ? date.getMilliseconds() : 0));
327
+ this.nativeDate = asDst(
328
+ this.ambiguousAsDst,
329
+ new Date(
330
+ (_b = args.year) != null ? _b : date.getFullYear(),
331
+ (_c = args.month) != null ? _c : this.nativeDate ? date.getMonth() : 0,
332
+ (_d = args.day) != null ? _d : this.nativeDate ? date.getDate() : 1,
333
+ (_e = args.hour) != null ? _e : this.nativeDate ? date.getHours() : 0,
334
+ (_f = args.minute) != null ? _f : this.nativeDate ? date.getMinutes() : 0,
335
+ (_g = args.second) != null ? _g : this.nativeDate ? date.getSeconds() : 0,
336
+ (_h = args.millisecond) != null ? _h : this.nativeDate ? date.getMilliseconds() : 0
337
+ )
338
+ );
309
339
  } else {
310
- this.nativeDate = new Date(Date.UTC((_i = args.year) != null ? _i : date.getUTCFullYear(), (_j = args.month) != null ? _j : this.nativeDate ? date.getUTCMonth() : 0, (_k = args.day) != null ? _k : this.nativeDate ? date.getUTCDate() : 1, (_l = args.hour) != null ? _l : this.nativeDate ? date.getUTCHours() : 0, (_m = args.minute) != null ? _m : this.nativeDate ? date.getUTCMinutes() : 0, (_n = args.second) != null ? _n : this.nativeDate ? date.getUTCSeconds() : 0, (_o = args.millisecond) != null ? _o : this.nativeDate ? date.getUTCMilliseconds() : 0));
340
+ this.nativeDate = new Date(Date.UTC(
341
+ (_i = args.year) != null ? _i : date.getUTCFullYear(),
342
+ (_j = args.month) != null ? _j : this.nativeDate ? date.getUTCMonth() : 0,
343
+ (_k = args.day) != null ? _k : this.nativeDate ? date.getUTCDate() : 1,
344
+ (_l = args.hour) != null ? _l : this.nativeDate ? date.getUTCHours() : 0,
345
+ (_m = args.minute) != null ? _m : this.nativeDate ? date.getUTCMinutes() : 0,
346
+ (_n = args.second) != null ? _n : this.nativeDate ? date.getUTCSeconds() : 0,
347
+ (_o = args.millisecond) != null ? _o : this.nativeDate ? date.getUTCMilliseconds() : 0
348
+ ));
311
349
  }
312
350
  return this;
313
351
  }
314
- var parsePattern = new RegExp("^(\\d{4})(?:[-/]?([0-2]?\\d)(?:[-/]?([0-3]?\\d))?)?(?:[T\\s]([0-2]?\\d)(?::([0-5]?\\d)?(?::([0-6]?\\d)?(?:[.:](\\d{1,3})?\\d*)?)?)?)?(Z|[-+]\\d{2}:?\\d{2})?$");
352
+ var parsePattern = new RegExp(
353
+ // yyyy[[-|/]MM[[-|/]DD]]
354
+ "^(\\d{4})(?:[-/]?([0-2]?\\d)(?:[-/]?([0-3]?\\d))?)?(?:[T\\s]([0-2]?\\d)(?::([0-5]?\\d)?(?::([0-6]?\\d)?(?:[.:](\\d{1,3})?\\d*)?)?)?)?(Z|[-+]\\d{2}:?\\d{2})?$"
355
+ );
315
356
  function parse(str) {
316
357
  var _a;
317
358
  const text = str.trim().toUpperCase();
318
359
  const values = text.match(parsePattern);
319
360
  if (!values) {
320
- throw RangeError(`Failed to parse '${str}'. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`);
361
+ throw RangeError(
362
+ `Failed to parse '${str}'. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`
363
+ );
321
364
  }
322
365
  const [year, month, day, hour, minute, second, millisecond, offset] = [
323
366
  +values[1],
@@ -331,7 +374,9 @@ function parse(str) {
331
374
  ];
332
375
  const native = new Date(text);
333
376
  if (!isValidDate(native)) {
334
- throw RangeError(`Failed to parse '${str}' by Date. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`);
377
+ throw RangeError(
378
+ `Failed to parse '${str}' by Date. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`
379
+ );
335
380
  }
336
381
  if (offset) {
337
382
  this.nativeDate = native;
@@ -441,7 +486,9 @@ Qrono.prototype.weekOfYear = function() {
441
486
  const date = this.toDate();
442
487
  const theThursday = date.day(date.day() - date.dayOfWeek() + thursday);
443
488
  const startOfYear = theThursday.startOfYear();
444
- const firstThursday = startOfYear.dayOfWeek() === thursday ? startOfYear : startOfYear.day(1 + (thursday - startOfYear.dayOfWeek() + daysPerWeek) % daysPerWeek);
489
+ const firstThursday = startOfYear.dayOfWeek() === thursday ? startOfYear : startOfYear.day(
490
+ 1 + (thursday - startOfYear.dayOfWeek() + daysPerWeek) % daysPerWeek
491
+ );
445
492
  return 1 + Math.ceil((theThursday - firstThursday) / daysPerWeek);
446
493
  };
447
494
  Qrono.prototype.yearOfWeek = function() {
@@ -457,7 +504,9 @@ Qrono.prototype.hasDstInYear = function() {
457
504
  return false;
458
505
  }
459
506
  const currentOffset = this.offset();
460
- return [3, 6, 9, 12].map((month) => this.month(month).offset()).some((offset) => offset !== currentOffset);
507
+ return [3, 6, 9, 12].map(
508
+ (month) => this.month(month).offset()
509
+ ).some((offset) => offset !== currentOffset);
461
510
  };
462
511
  Qrono.prototype.isInDst = function() {
463
512
  if (!this[internal2].localtime) {
@@ -577,7 +626,9 @@ function plus(sign, ...args) {
577
626
  let timeFields = null;
578
627
  if (isObject(arg0)) {
579
628
  if (!hasDatetimeField(arg0)) {
580
- throw RangeError("Missing time field (year, minute, day, hour, minute, second or millisecond)");
629
+ throw RangeError(
630
+ "Missing time field (year, minute, day, hour, minute, second or millisecond)"
631
+ );
581
632
  }
582
633
  timeFields = arg0;
583
634
  } else if (Number.isFinite(arg0) || Array.isArray(arg0)) {
@@ -624,7 +675,9 @@ function plus(sign, ...args) {
624
675
  ["millisecond", "Milliseconds"]
625
676
  ].forEach(([key, nativeKey]) => {
626
677
  if (has(timeFields, key)) {
627
- date[`setUTC${nativeKey}`](date[`getUTC${nativeKey}`]() + sign * timeFields[key]);
678
+ date[`setUTC${nativeKey}`](
679
+ date[`getUTC${nativeKey}`]() + sign * timeFields[key]
680
+ );
628
681
  }
629
682
  });
630
683
  return this.clone(asDst(this[internal2].ambiguousAsDst, date));
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/qrono.js", "../src/helpers.js", "../src/qrono.date.js"],
4
- "sourcesContent": ["import {\n has,\n given,\n fields,\n isObject,\n isString,\n isValidDate,\n asDst,\n hasDatetimeField,\n daysPerWeek,\n minutesPerDay,\n minutesPerHour,\n millisecondsPerMinute,\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday\n} from './helpers.js'\n\nimport QronoDate from './qrono.date.js'\n\n// -----------------------------------------------------------------------------\n// Exports\n// -----------------------------------------------------------------------------\nconst qrono = Qrono\n\nexport { qrono }\n\nexport {\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday\n} from './helpers'\n\nQrono.date = QronoDate\n\n// -----------------------------------------------------------------------------\n// Static\n// -----------------------------------------------------------------------------\n// NOTE Must be flat object for shallow cloning.\nconst defaultContext = {\n localtime: false,\n ambiguousAsDst: false\n}\n\nfields(defaultContext).forEach(key => {\n Qrono[key] = function (arg) {\n if (given(arg)) {\n defaultContext[key] = arg\n return this\n }\n return defaultContext[key]\n }\n})\n\nQrono.context = function (context) {\n if (given(context)) {\n fields(defaultContext).filter(key => has(context, key)).forEach(key => {\n defaultContext[key] = context[key]\n })\n return this\n }\n return { ...defaultContext }\n}\n\nQrono.asUtc = function () {\n defaultContext.localtime = false\n return this\n}\n\nQrono.asLocaltime = function () {\n defaultContext.localtime = true\n return this\n}\n\nObject.assign(\n Qrono,\n { monday, tuesday, wednesday, thursday, friday, saturday, sunday }\n)\n\n// -----------------------------------------------------------------------------\n// Constructor\n// -----------------------------------------------------------------------------\nconst internal = Symbol('Qrono.internal')\n\nfunction Qrono (...args) {\n if (!new.target) { return new Qrono(...args) }\n const self = this[internal] = {\n // properties\n nativeDate: null,\n localtime: false,\n ambiguousAsDst: false,\n // methods\n set,\n parse,\n valid,\n context,\n getNative\n }\n\n // Construction\n self.context(defaultContext)\n if (args[0] instanceof Qrono) {\n const source = args.shift()\n fields(self).forEach(key => { self[key] = source[key]() })\n }\n if (isObject(args[0]) && !hasDatetimeField(args[0])) {\n self.context(args.shift())\n }\n const first = args[0]\n const second = args[1]\n if (first == null) {\n self.nativeDate ??= new Date()\n } else if (first instanceof Date) {\n self.nativeDate = new Date(first.getTime())\n } else if (isString(first)) {\n self.parse(first)\n } else if (isObject(first)) {\n if (!hasDatetimeField(first)) {\n throw RangeError('Missing time field' +\n ' (year, minute, day, hour, minute, second or millisecond)'\n )\n }\n self.set(first)\n } else if (Number.isFinite(first) && !Number.isFinite(second)) {\n self.nativeDate = new Date(first)\n } else if (Number.isFinite(first) || Array.isArray(first)) {\n const values = args.flat().filter(v => Number.isSafeInteger(v))\n if (values.length !== args.flat().length) {\n throw RangeError('Should be safe integers')\n }\n if (values.length > 7) {\n throw RangeError('Too many numbers')\n }\n self.set({\n year: values[0],\n month: values[1],\n day: values[2],\n hour: values[3],\n minute: values[4],\n second: values[5],\n millisecond: values[6]\n })\n } else {\n throw TypeError(`Invalid argument ${args}`)\n }\n return this\n}\n\n// -----------------------------------------------------------------------------\n// Private methods\n// -----------------------------------------------------------------------------\nfunction valid () {\n return isValidDate(this.nativeDate)\n}\n\nfunction context (context) {\n if (!context) { return }\n fields(defaultContext).filter(key => has(context, key)).forEach(key => {\n this[key] = context[key]\n })\n return this\n}\n\nfunction getNative (name) {\n return this.nativeDate[`get${this.localtime ? '' : 'UTC'}${name}`]()\n}\n\nfunction set (values) {\n const args = { ...values }\n args.month = args.month && args.month - 1\n const date = this.nativeDate ?? new Date()\n if (this.localtime) {\n this.nativeDate = asDst(\n this.ambiguousAsDst,\n new Date(\n args.year ?? date.getFullYear(),\n args.month ?? (this.nativeDate ? date.getMonth() : 0),\n args.day ?? (this.nativeDate ? date.getDate() : 1),\n args.hour ?? (this.nativeDate ? date.getHours() : 0),\n args.minute ?? (this.nativeDate ? date.getMinutes() : 0),\n args.second ?? (this.nativeDate ? date.getSeconds() : 0),\n args.millisecond ?? (this.nativeDate ? date.getMilliseconds() : 0)\n )\n )\n } else {\n this.nativeDate = new Date(Date.UTC(\n args.year ?? date.getUTCFullYear(),\n args.month ?? (this.nativeDate ? date.getUTCMonth() : 0),\n args.day ?? (this.nativeDate ? date.getUTCDate() : 1),\n args.hour ?? (this.nativeDate ? date.getUTCHours() : 0),\n args.minute ?? (this.nativeDate ? date.getUTCMinutes() : 0),\n args.second ?? (this.nativeDate ? date.getUTCSeconds() : 0),\n args.millisecond ?? (this.nativeDate ? date.getUTCMilliseconds() : 0)\n ))\n }\n return this\n}\n\nconst parsePattern = new RegExp(\n // yyyy[[-|/]MM[[-|/]DD]]\n '^(\\\\d{4})(?:[-/]?([0-2]?\\\\d)(?:[-/]?([0-3]?\\\\d))?)?' +\n // [(T| )HH[:]mm[[:]ss[(.|:)SSS]]]\n '(?:[T\\\\s]([0-2]?\\\\d)(?::([0-5]?\\\\d)?(?::([0-6]?\\\\d)?(?:[.:](\\\\d{1,3})?\\\\d*)?)?)?)?' +\n // [Z|(+|-)hh:mm]\n '(Z|[-+]\\\\d{2}:?\\\\d{2})?$'\n)\n\nfunction parse (str) {\n const text = str.trim().toUpperCase()\n const values = text.match(parsePattern)\n if (!values) {\n throw RangeError(\n `Failed to parse '${str}'.` +\n ' Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]'\n )\n }\n const [year, month, day, hour, minute, second, millisecond, offset] = [\n +values[1], +values[2] || 1, +values[3] || 1,\n +values[4] || 0, +values[5] || 0, +values[6] || 0,\n +values[7]?.padStart(3, '0') || 0,\n values[8]\n ]\n const native = new Date(text)\n if (!isValidDate(native)) {\n throw RangeError(\n `Failed to parse '${str}' by Date.` +\n ' Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]'\n )\n }\n if (offset) {\n this.nativeDate = native\n } else if (this.localtime) {\n this.nativeDate = asDst(this.ambiguousAsDst, native)\n } else {\n this.set({ year, month, day, hour, minute, second, millisecond })\n }\n return this\n}\n\n// -----------------------------------------------------------------------------\n// Public methods\n// -----------------------------------------------------------------------------\n// Basic\nQrono.prototype.toString = function () {\n if (this[internal].localtime) {\n const t = this[internal].nativeDate\n const offset = -t.getTimezoneOffset()\n const offsetAbs = Math.abs(offset)\n return `${String(t.getFullYear()).padStart(4, '0')\n }-${String(t.getMonth() + 1).padStart(2, '0')\n }-${String(t.getDate()).padStart(2, '0')\n }T${String(t.getHours()).padStart(2, '0')\n }:${String(t.getMinutes()).padStart(2, '0')\n }:${String(t.getSeconds()).padStart(2, '0')\n }.${String(t.getMilliseconds()).padStart(3, '0')\n }${(offset >= 0 ? '+' : '-') +\n String(Math.trunc(offsetAbs / minutesPerHour)).padStart(2, '0') +\n ':' + String(offsetAbs % minutesPerHour).padStart(2, '0')\n }`\n }\n return this[internal].nativeDate.toISOString()\n}\n\nQrono.prototype.valueOf = function () {\n return this[internal].nativeDate.valueOf()\n}\n\nQrono.prototype.clone = function (...args) {\n return new Qrono(this, ...args)\n}\n\nQrono.prototype.context = function (context) {\n return given(context)\n ? this.clone(context)\n : { localtime: this[internal].localtime, ambiguousAsDst: this[internal].ambiguousAsDst }\n}\n\nQrono.prototype.nativeDate = function () {\n return new Date(this[internal].nativeDate.getTime())\n}\n\nQrono.prototype.offset = function () {\n return (\n this[internal].localtime ? -this[internal].nativeDate.getTimezoneOffset() : 0\n )\n}\n\nQrono.prototype.localtime = function (arg) {\n return given(arg) ? this.clone({ localtime: arg }) : this[internal].localtime\n}\n\nQrono.prototype.ambiguousAsDst = function (arg) {\n return given(arg) ? this.clone({ ambiguousAsDst: arg }) : this[internal].ambiguousAsDst\n}\n\nQrono.prototype.valid = function () {\n return this[internal].valid()\n}\n\n// Transform\nQrono.prototype.numeric = function () {\n return this[internal].nativeDate.getTime()\n}\n\nQrono.prototype.toObject = function () {\n return {\n year: this.year(),\n month: this.month(),\n day: this.day(),\n hour: this.hour(),\n minute: this.minute(),\n second: this.second(),\n millisecond: this.millisecond()\n }\n}\n\nQrono.prototype.toArray = function () {\n return [\n this.year(),\n this.month(),\n this.day(),\n this.hour(),\n this.minute(),\n this.second(),\n this.millisecond()\n ]\n}\n\nQrono.prototype.toDate = function (...args) {\n return new QronoDate(this.clone(...args))\n}\n\n// Context\nQrono.prototype.asUtc = function () {\n return this.clone({ localtime: false })\n}\n\nQrono.prototype.asLocaltime = function () {\n return this.clone({ localtime: true })\n}\n\n// Accessor\nQrono.prototype.year = function (value) {\n return given(value)\n ? this.clone({ year: value })\n : this[internal].getNative('FullYear')\n}\n\nQrono.prototype.month = function (value) {\n return given(value)\n ? this.clone({ month: value })\n : this[internal].getNative('Month') + 1\n}\n\nQrono.prototype.day = function (value) {\n return given(value)\n ? this.clone({ day: value })\n : this[internal].getNative('Date')\n}\n\nQrono.prototype.hour = function (value) {\n return given(value)\n ? this.clone({ hour: value })\n : this[internal].getNative('Hours')\n}\n\nQrono.prototype.minute = function (value) {\n return given(value)\n ? this.clone({ minute: value })\n : this[internal].getNative('Minutes')\n}\n\nQrono.prototype.second = function (value) {\n return given(value)\n ? this.clone({ second: value })\n : this[internal].getNative('Seconds')\n}\n\nQrono.prototype.millisecond = function (value) {\n return given(value)\n ? this.clone({ millisecond: value })\n : this[internal].getNative('Milliseconds')\n}\n\n// Getter\nQrono.prototype.dayOfWeek = function () {\n return (\n 1 + (this[internal].getNative('Day') - 1 + daysPerWeek) % daysPerWeek\n )\n}\n\nQrono.prototype.dayOfYear = function () {\n const date = this.toDate()\n return 1 + date - date.startOfYear()\n}\n\nQrono.prototype.weekOfYear = function () {\n const date = this.toDate()\n const theThursday = date.day(date.day() - date.dayOfWeek() + thursday)\n const startOfYear = theThursday.startOfYear()\n const firstThursday = (startOfYear.dayOfWeek() === thursday)\n ? startOfYear\n : startOfYear.day(\n 1 + ((thursday - startOfYear.dayOfWeek() + daysPerWeek) % daysPerWeek)\n )\n return 1 + Math.ceil((theThursday - firstThursday) / daysPerWeek)\n}\n\nQrono.prototype.yearOfWeek = function () {\n const date = this.toDate()\n return date.day(date.day() - date.dayOfWeek() + thursday).year()\n}\n\nQrono.prototype.isLeapYear = function () {\n const year = this.year()\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nQrono.prototype.hasDstInYear = function () {\n if (!this[internal].localtime) { return false }\n const currentOffset = this.offset()\n return [3, 6, 9, 12].map(\n month => this.month(month).offset()\n ).some(offset => offset !== currentOffset)\n}\n\nQrono.prototype.isInDst = function () {\n if (!this[internal].localtime) { return false }\n return (\n this.offset() ===\n Math.max(...[3, 6, 9, 12].map(month => this.month(month).offset()))\n )\n}\n\nQrono.prototype.isDstTransitionDay = function () {\n if (!this[internal].localtime) { return false }\n return this.minutesInDay() !== minutesPerDay\n}\n\nQrono.prototype.minutesInDay = function () {\n if (!this[internal].localtime) { return minutesPerDay }\n const startOfDay = this.startOfDay()\n const nextDay = startOfDay.plus({ day: 1 }).startOfDay()\n if (startOfDay.day() === nextDay.day()) {\n return minutesPerDay\n }\n return (nextDay - startOfDay) / millisecondsPerMinute\n}\n\nQrono.prototype.daysInMonth = function () {\n const days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n const month = this.month()\n return days[month - 1] + (this.isLeapYear() && month === 2 ? 1 : 0)\n}\n\nQrono.prototype.daysInYear = function () {\n return this.isLeapYear() ? 366 : 365\n}\n\nQrono.prototype.weeksInYear = function () {\n const endOfYear = this.toDate({ month: 12, day: 31 })\n const endOfLastYear = endOfYear.minus({ year: 1 })\n if (endOfYear.dayOfWeek() === thursday || endOfLastYear.dayOfWeek() === wednesday) {\n return 53\n }\n return 52\n}\n\nQrono.prototype.startOfYear = function () {\n return this.clone({\n month: 1, day: 1, hour: 0, minute: 0, second: 0, millisecond: 0\n })\n}\n\nQrono.prototype.startOfMonth = function () {\n return this.clone({\n day: 1, hour: 0, minute: 0, second: 0, millisecond: 0\n })\n}\n\nQrono.prototype.startOfDay = function () {\n return this.clone({\n hour: 0, minute: 0, second: 0, millisecond: 0\n })\n}\n\nQrono.prototype.startOfHour = function () {\n return this.clone({\n minute: 0, second: 0, millisecond: 0\n })\n}\n\nQrono.prototype.startOfMinute = function () {\n return this.clone({\n second: 0, millisecond: 0\n })\n}\n\nQrono.prototype.startOfSecond = function () {\n return this.clone({\n millisecond: 0\n })\n}\n\nQrono.prototype.isSame = function (another) { return +this === +another }\nQrono.prototype.isBefore = function (another) { return this < another }\nQrono.prototype.isAfter = function (another) { return this > another }\nQrono.prototype.isSameOrBefore = function (another) { return this <= another }\nQrono.prototype.isSameOrAfter = function (another) { return this >= another }\nQrono.prototype.isBetween = function (a, b) {\n return (a <= this && this <= b) || (b <= this && this <= a)\n}\n\n// Calculation\nQrono.prototype.plus = function (...args) {\n return plus.call(this, 1, ...args)\n}\n\nQrono.prototype.minus = function (...args) {\n return plus.call(this, -1, ...args)\n}\n\nfunction plus (sign, ...args) {\n const arg0 = args[0]\n const arg1 = args[1]\n if (Number.isFinite(arg0) && !Number.isFinite(arg1)) {\n return this.clone(this.numeric() + arg0)\n }\n let timeFields = null\n if (isObject(arg0)) {\n if (!hasDatetimeField(arg0)) {\n throw RangeError('Missing time field' +\n ' (year, minute, day, hour, minute, second or millisecond)'\n )\n }\n timeFields = arg0\n } else if (Number.isFinite(arg0) || Array.isArray(arg0)) {\n const values = args.flat().filter(v => Number.isSafeInteger(v))\n if (values.length !== args.flat().length) {\n throw RangeError('Should be safe integers')\n }\n if (values.length > 7) {\n throw RangeError('Too many numbers')\n }\n timeFields = {\n year: args[0],\n month: args[1],\n day: args[2],\n hour: args[3],\n minute: args[4],\n second: args[5],\n millisecond: args[6]\n }\n } else {\n throw TypeError()\n }\n const date = this.nativeDate()\n const utc = this[internal].localtime ? '' : 'UTC'\n if (has(timeFields, 'year') || has(timeFields, 'month')) {\n const year = this.year() + sign * (timeFields.year ?? 0)\n const month = this.month() + sign * (timeFields.month ?? 0)\n const endOfMonth = new Date(date.getTime())\n endOfMonth[`set${utc}FullYear`](year, month, 0)\n const lastDay = endOfMonth.getDate()\n if (lastDay < this.day()) {\n date[`set${utc}FullYear`](year, endOfMonth[`get${utc}Month`](), lastDay)\n } else {\n date[`set${utc}FullYear`](year, month - 1)\n }\n }\n if (has(timeFields, 'day')) {\n date[`set${utc}Date`](date[`get${utc}Date`]() + sign * timeFields.day)\n }\n [\n ['hour', 'Hours'], ['minute', 'Minutes'],\n ['second', 'Seconds'], ['millisecond', 'Milliseconds']\n ].forEach(([key, nativeKey]) => {\n if (has(timeFields, key)) {\n date[`setUTC${nativeKey}`](\n date[`getUTC${nativeKey}`]() + sign * timeFields[key]\n )\n }\n })\n return this.clone(asDst(this[internal].ambiguousAsDst, date))\n}\n", "export const epoch = new Date(0)\n\nexport const daysPerWeek = 7\nexport const hoursPerDay = 24\nexport const hoursPerWeek = hoursPerDay * daysPerWeek\nexport const minutesPerHour = 60\nexport const minutesPerDay = minutesPerHour * hoursPerDay\nexport const minutesPerWeek = minutesPerDay * daysPerWeek\nexport const secondsPerMinute = 60\nexport const secondsPerHour = secondsPerMinute * minutesPerHour\nexport const secondsPerDay = secondsPerHour * hoursPerDay\nexport const secondsPerWeek = secondsPerDay * daysPerWeek\nexport const millisecondsPerSecond = 1000\nexport const millisecondsPerMinute = secondsPerMinute * millisecondsPerSecond\nexport const millisecondsPerHour = secondsPerHour * millisecondsPerSecond\nexport const millisecondsPerDay = secondsPerDay * millisecondsPerSecond\nexport const millisecondsPerWeek = secondsPerWeek * millisecondsPerSecond\n\nexport const monday = 1\nexport const tuesday = 2\nexport const wednesday = 3\nexport const thursday = 4\nexport const friday = 5\nexport const saturday = 6\nexport const sunday = 7\n\nexport function has (object, ...keys) {\n return keys.flat().some(object.hasOwnProperty, object)\n}\n\nexport function fields (object) {\n return Object.entries(object).filter(\n ([, value]) => !isFunction(value)\n ).map(([key]) => key)\n}\n\nexport function given (arg) {\n return arg !== undefined\n}\n\nexport function isFunction (a) {\n return a instanceof Function\n}\n\nexport function isString (a) {\n return typeof a === 'string' || a instanceof String\n}\n\nexport function isObject (a) {\n return a !== null && typeof (a) === 'object' && a.constructor === Object\n}\n\nexport function isValidDate (date) {\n return !isNaN(date.getTime())\n}\n\nexport function hasDateField (object) {\n return has(object, ['year', 'month', 'day'])\n}\n\nexport function hasTimeField (object) {\n return has(object, ['hour', 'minute', 'second', 'millisecond'])\n}\n\nexport function hasDatetimeField (object) {\n return has(object, [\n 'year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond'\n ])\n}\n\nexport function asDst (ambiguousAsDst, date) {\n const numeric = date.getTime()\n const result = new Date(numeric)\n const adjacentDay = new Date(numeric)\n const sign = ambiguousAsDst ? 1 : -1\n adjacentDay.setDate(date.getDate() + sign)\n const adjust = adjacentDay.getTimezoneOffset() - date.getTimezoneOffset()\n if ((ambiguousAsDst && adjust < 0) || (!ambiguousAsDst && adjust > 0)) {\n const adjusted = new Date(numeric).setMinutes(date.getMinutes() + sign * adjust)\n const adjustedUTC = new Date(numeric).setUTCMinutes(date.getUTCMinutes() + sign * adjust)\n if (adjusted !== adjustedUTC && (adjusted - adjustedUTC) / millisecondsPerMinute !== adjust) {\n result.setUTCMinutes(date.getUTCMinutes() + sign * adjust)\n }\n }\n return result\n}\n", "import {\n given,\n millisecondsPerDay\n} from './helpers.js'\nimport { qrono } from './qrono.js'\n\nconst internal = Symbol('QronoDate.internal')\n\nexport default function QronoDate (...args) {\n if (!new.target) { return new QronoDate(...args) }\n const self = this[internal] = {\n datetime: null\n }\n let source = null\n if (args[0] instanceof QronoDate) {\n source = args.shift().toDatetime()\n }\n const first = args[0]\n const second = args[1]\n if (Number.isFinite(first) && !Number.isFinite(second)) {\n args[0] *= millisecondsPerDay\n }\n source = (\n source ? source.clone(...args) : qrono(...args)\n ).startOfDay()\n self.datetime = qrono({ localtime: false }, source.toObject())\n return this\n}\n\nQronoDate.prototype.toString = function () {\n return this[internal].datetime.toString().substring(0, 10)\n}\n\nQronoDate.prototype.valueOf = function () {\n return this[internal].datetime / millisecondsPerDay\n}\n\nQronoDate.prototype.clone = function (...args) {\n return new QronoDate(this, ...args)\n}\n\nQronoDate.prototype.toDatetime = function () {\n return qrono(this[internal].datetime.toArray())\n}\n\nQronoDate.prototype.numeric = function () {\n return this[internal].datetime.numeric() / millisecondsPerDay\n}\n\nQronoDate.prototype.startOfYear = function () {\n return new QronoDate(this[internal].datetime.startOfYear())\n}\n\nQronoDate.prototype.startOfMonth = function () {\n return new QronoDate(this[internal].datetime.startOfMonth())\n}\n\n;['year', 'month', 'day'].forEach(field => {\n QronoDate.prototype[field] = function (value) {\n if (given(value)) {\n return new QronoDate(this[internal].datetime[field](value))\n }\n return this[internal].datetime[field]()\n }\n})\n\n;[\n 'dayOfWeek', 'dayOfYear', 'weekOfYear', 'yearOfWeek',\n 'isLeapYear', 'daysInMonth', 'daysInYear', 'weeksInYear'\n].forEach(method => {\n QronoDate.prototype[method] = function () {\n return this[internal].datetime[method]()\n }\n})\n\nQronoDate.prototype.isDstTransitionDay = function () {\n return this[internal].datetime.localtime(true).isDstTransitionDay()\n}\n\nQronoDate.prototype.endOfYear = function () {\n return this.clone({ month: 12, day: 31 })\n}\n\nQronoDate.prototype.endOfMonth = function () {\n return this.clone({ day: this.daysInMonth() })\n}\n\nQronoDate.prototype.plus = function (...args) {\n return this[internal].datetime.plus(...args).toDate()\n}\n\nQronoDate.prototype.minus = function (...args) {\n return this[internal].datetime.minus(...args).toDate()\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["/* @ts-self-types=\"../types/qrono.d.ts\" */\nimport {\n has,\n given,\n fields,\n isObject,\n isString,\n isValidDate,\n asDst,\n hasDatetimeField,\n daysPerWeek,\n minutesPerDay,\n minutesPerHour,\n millisecondsPerMinute,\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday\n} from './helpers.js'\n\nimport QronoDate from './qrono.date.js'\n\n// -----------------------------------------------------------------------------\n// Exports\n// -----------------------------------------------------------------------------\nconst qrono = Qrono\n\nexport { qrono }\n\nexport {\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday\n} from './helpers'\n\nQrono.date = QronoDate\n\n// -----------------------------------------------------------------------------\n// Static\n// -----------------------------------------------------------------------------\n// NOTE Must be flat object for shallow cloning.\nconst defaultContext = {\n localtime: false,\n ambiguousAsDst: false\n}\n\nfields(defaultContext).forEach(key => {\n Qrono[key] = function (arg) {\n if (given(arg)) {\n defaultContext[key] = arg\n return this\n }\n return defaultContext[key]\n }\n})\n\nQrono.context = function (context) {\n if (given(context)) {\n fields(defaultContext).filter(key => has(context, key)).forEach(key => {\n defaultContext[key] = context[key]\n })\n return this\n }\n return { ...defaultContext }\n}\n\nQrono.asUtc = function () {\n defaultContext.localtime = false\n return this\n}\n\nQrono.asLocaltime = function () {\n defaultContext.localtime = true\n return this\n}\n\nObject.assign(\n Qrono,\n { monday, tuesday, wednesday, thursday, friday, saturday, sunday }\n)\n\n// -----------------------------------------------------------------------------\n// Constructor\n// -----------------------------------------------------------------------------\nconst internal = Symbol('Qrono.internal')\n\nfunction Qrono (...args) {\n if (!new.target) { return new Qrono(...args) }\n const self = this[internal] = {\n // properties\n nativeDate: null,\n localtime: false,\n ambiguousAsDst: false,\n // methods\n set,\n parse,\n valid,\n context,\n getNative\n }\n\n // Construction\n self.context(defaultContext)\n if (args[0] instanceof Qrono) {\n const source = args.shift()\n fields(self).forEach(key => { self[key] = source[key]() })\n }\n if (isObject(args[0]) && !hasDatetimeField(args[0])) {\n self.context(args.shift())\n }\n const first = args[0]\n const second = args[1]\n if (first == null) {\n self.nativeDate ??= new Date()\n } else if (first instanceof Date) {\n self.nativeDate = new Date(first.getTime())\n } else if (isString(first)) {\n self.parse(first)\n } else if (isObject(first)) {\n if (!hasDatetimeField(first)) {\n throw RangeError('Missing time field' +\n ' (year, minute, day, hour, minute, second or millisecond)'\n )\n }\n self.set(first)\n } else if (Number.isFinite(first) && !Number.isFinite(second)) {\n self.nativeDate = new Date(first)\n } else if (Number.isFinite(first) || Array.isArray(first)) {\n const values = args.flat().filter(v => Number.isSafeInteger(v))\n if (values.length !== args.flat().length) {\n throw RangeError('Should be safe integers')\n }\n if (values.length > 7) {\n throw RangeError('Too many numbers')\n }\n self.set({\n year: values[0],\n month: values[1],\n day: values[2],\n hour: values[3],\n minute: values[4],\n second: values[5],\n millisecond: values[6]\n })\n } else {\n throw TypeError(`Invalid argument ${args}`)\n }\n return this\n}\n\n// -----------------------------------------------------------------------------\n// Private methods\n// -----------------------------------------------------------------------------\nfunction valid () {\n return isValidDate(this.nativeDate)\n}\n\nfunction context (context) {\n if (!context) { return }\n fields(defaultContext).filter(key => has(context, key)).forEach(key => {\n this[key] = context[key]\n })\n return this\n}\n\nfunction getNative (name) {\n return this.nativeDate[`get${this.localtime ? '' : 'UTC'}${name}`]()\n}\n\nfunction set (values) {\n const args = { ...values }\n args.month = args.month && args.month - 1\n const date = this.nativeDate ?? new Date()\n if (this.localtime) {\n this.nativeDate = asDst(\n this.ambiguousAsDst,\n new Date(\n args.year ?? date.getFullYear(),\n args.month ?? (this.nativeDate ? date.getMonth() : 0),\n args.day ?? (this.nativeDate ? date.getDate() : 1),\n args.hour ?? (this.nativeDate ? date.getHours() : 0),\n args.minute ?? (this.nativeDate ? date.getMinutes() : 0),\n args.second ?? (this.nativeDate ? date.getSeconds() : 0),\n args.millisecond ?? (this.nativeDate ? date.getMilliseconds() : 0)\n )\n )\n } else {\n this.nativeDate = new Date(Date.UTC(\n args.year ?? date.getUTCFullYear(),\n args.month ?? (this.nativeDate ? date.getUTCMonth() : 0),\n args.day ?? (this.nativeDate ? date.getUTCDate() : 1),\n args.hour ?? (this.nativeDate ? date.getUTCHours() : 0),\n args.minute ?? (this.nativeDate ? date.getUTCMinutes() : 0),\n args.second ?? (this.nativeDate ? date.getUTCSeconds() : 0),\n args.millisecond ?? (this.nativeDate ? date.getUTCMilliseconds() : 0)\n ))\n }\n return this\n}\n\nconst parsePattern = new RegExp(\n // yyyy[[-|/]MM[[-|/]DD]]\n '^(\\\\d{4})(?:[-/]?([0-2]?\\\\d)(?:[-/]?([0-3]?\\\\d))?)?' +\n // [(T| )HH[:]mm[[:]ss[(.|:)SSS]]]\n '(?:[T\\\\s]([0-2]?\\\\d)(?::([0-5]?\\\\d)?(?::([0-6]?\\\\d)?(?:[.:](\\\\d{1,3})?\\\\d*)?)?)?)?' +\n // [Z|(+|-)hh:mm]\n '(Z|[-+]\\\\d{2}:?\\\\d{2})?$'\n)\n\nfunction parse (str) {\n const text = str.trim().toUpperCase()\n const values = text.match(parsePattern)\n if (!values) {\n throw RangeError(\n `Failed to parse '${str}'.` +\n ' Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]'\n )\n }\n const [year, month, day, hour, minute, second, millisecond, offset] = [\n +values[1], +values[2] || 1, +values[3] || 1,\n +values[4] || 0, +values[5] || 0, +values[6] || 0,\n +values[7]?.padStart(3, '0') || 0,\n values[8]\n ]\n const native = new Date(text)\n if (!isValidDate(native)) {\n throw RangeError(\n `Failed to parse '${str}' by Date.` +\n ' Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]'\n )\n }\n if (offset) {\n this.nativeDate = native\n } else if (this.localtime) {\n this.nativeDate = asDst(this.ambiguousAsDst, native)\n } else {\n this.set({ year, month, day, hour, minute, second, millisecond })\n }\n return this\n}\n\n// -----------------------------------------------------------------------------\n// Public methods\n// -----------------------------------------------------------------------------\n// Basic\nQrono.prototype.toString = function () {\n if (this[internal].localtime) {\n const t = this[internal].nativeDate\n const offset = -t.getTimezoneOffset()\n const offsetAbs = Math.abs(offset)\n return `${String(t.getFullYear()).padStart(4, '0')\n }-${String(t.getMonth() + 1).padStart(2, '0')\n }-${String(t.getDate()).padStart(2, '0')\n }T${String(t.getHours()).padStart(2, '0')\n }:${String(t.getMinutes()).padStart(2, '0')\n }:${String(t.getSeconds()).padStart(2, '0')\n }.${String(t.getMilliseconds()).padStart(3, '0')\n }${(offset >= 0 ? '+' : '-') +\n String(Math.trunc(offsetAbs / minutesPerHour)).padStart(2, '0') +\n ':' + String(offsetAbs % minutesPerHour).padStart(2, '0')\n }`\n }\n return this[internal].nativeDate.toISOString()\n}\n\nQrono.prototype.valueOf = function () {\n return this[internal].nativeDate.valueOf()\n}\n\nQrono.prototype.clone = function (...args) {\n return new Qrono(this, ...args)\n}\n\nQrono.prototype.context = function (context) {\n return given(context)\n ? this.clone(context)\n : { localtime: this[internal].localtime, ambiguousAsDst: this[internal].ambiguousAsDst }\n}\n\nQrono.prototype.nativeDate = function () {\n return new Date(this[internal].nativeDate.getTime())\n}\n\nQrono.prototype.offset = function () {\n return (\n this[internal].localtime ? -this[internal].nativeDate.getTimezoneOffset() : 0\n )\n}\n\nQrono.prototype.localtime = function (arg) {\n return given(arg) ? this.clone({ localtime: arg }) : this[internal].localtime\n}\n\nQrono.prototype.ambiguousAsDst = function (arg) {\n return given(arg) ? this.clone({ ambiguousAsDst: arg }) : this[internal].ambiguousAsDst\n}\n\nQrono.prototype.valid = function () {\n return this[internal].valid()\n}\n\n// Transform\nQrono.prototype.numeric = function () {\n return this[internal].nativeDate.getTime()\n}\n\nQrono.prototype.toObject = function () {\n return {\n year: this.year(),\n month: this.month(),\n day: this.day(),\n hour: this.hour(),\n minute: this.minute(),\n second: this.second(),\n millisecond: this.millisecond()\n }\n}\n\nQrono.prototype.toArray = function () {\n return [\n this.year(),\n this.month(),\n this.day(),\n this.hour(),\n this.minute(),\n this.second(),\n this.millisecond()\n ]\n}\n\nQrono.prototype.toDate = function (...args) {\n return new QronoDate(this.clone(...args))\n}\n\n// Context\nQrono.prototype.asUtc = function () {\n return this.clone({ localtime: false })\n}\n\nQrono.prototype.asLocaltime = function () {\n return this.clone({ localtime: true })\n}\n\n// Accessor\nQrono.prototype.year = function (value) {\n return given(value)\n ? this.clone({ year: value })\n : this[internal].getNative('FullYear')\n}\n\nQrono.prototype.month = function (value) {\n return given(value)\n ? this.clone({ month: value })\n : this[internal].getNative('Month') + 1\n}\n\nQrono.prototype.day = function (value) {\n return given(value)\n ? this.clone({ day: value })\n : this[internal].getNative('Date')\n}\n\nQrono.prototype.hour = function (value) {\n return given(value)\n ? this.clone({ hour: value })\n : this[internal].getNative('Hours')\n}\n\nQrono.prototype.minute = function (value) {\n return given(value)\n ? this.clone({ minute: value })\n : this[internal].getNative('Minutes')\n}\n\nQrono.prototype.second = function (value) {\n return given(value)\n ? this.clone({ second: value })\n : this[internal].getNative('Seconds')\n}\n\nQrono.prototype.millisecond = function (value) {\n return given(value)\n ? this.clone({ millisecond: value })\n : this[internal].getNative('Milliseconds')\n}\n\n// Getter\nQrono.prototype.dayOfWeek = function () {\n return (\n 1 + (this[internal].getNative('Day') - 1 + daysPerWeek) % daysPerWeek\n )\n}\n\nQrono.prototype.dayOfYear = function () {\n const date = this.toDate()\n return 1 + date - date.startOfYear()\n}\n\nQrono.prototype.weekOfYear = function () {\n const date = this.toDate()\n const theThursday = date.day(date.day() - date.dayOfWeek() + thursday)\n const startOfYear = theThursday.startOfYear()\n const firstThursday = (startOfYear.dayOfWeek() === thursday)\n ? startOfYear\n : startOfYear.day(\n 1 + ((thursday - startOfYear.dayOfWeek() + daysPerWeek) % daysPerWeek)\n )\n return 1 + Math.ceil((theThursday - firstThursday) / daysPerWeek)\n}\n\nQrono.prototype.yearOfWeek = function () {\n const date = this.toDate()\n return date.day(date.day() - date.dayOfWeek() + thursday).year()\n}\n\nQrono.prototype.isLeapYear = function () {\n const year = this.year()\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nQrono.prototype.hasDstInYear = function () {\n if (!this[internal].localtime) { return false }\n const currentOffset = this.offset()\n return [3, 6, 9, 12].map(\n month => this.month(month).offset()\n ).some(offset => offset !== currentOffset)\n}\n\nQrono.prototype.isInDst = function () {\n if (!this[internal].localtime) { return false }\n return (\n this.offset() ===\n Math.max(...[3, 6, 9, 12].map(month => this.month(month).offset()))\n )\n}\n\nQrono.prototype.isDstTransitionDay = function () {\n if (!this[internal].localtime) { return false }\n return this.minutesInDay() !== minutesPerDay\n}\n\nQrono.prototype.minutesInDay = function () {\n if (!this[internal].localtime) { return minutesPerDay }\n const startOfDay = this.startOfDay()\n const nextDay = startOfDay.plus({ day: 1 }).startOfDay()\n if (startOfDay.day() === nextDay.day()) {\n return minutesPerDay\n }\n return (nextDay - startOfDay) / millisecondsPerMinute\n}\n\nQrono.prototype.daysInMonth = function () {\n const days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n const month = this.month()\n return days[month - 1] + (this.isLeapYear() && month === 2 ? 1 : 0)\n}\n\nQrono.prototype.daysInYear = function () {\n return this.isLeapYear() ? 366 : 365\n}\n\nQrono.prototype.weeksInYear = function () {\n const endOfYear = this.toDate({ month: 12, day: 31 })\n const endOfLastYear = endOfYear.minus({ year: 1 })\n if (endOfYear.dayOfWeek() === thursday || endOfLastYear.dayOfWeek() === wednesday) {\n return 53\n }\n return 52\n}\n\nQrono.prototype.startOfYear = function () {\n return this.clone({\n month: 1, day: 1, hour: 0, minute: 0, second: 0, millisecond: 0\n })\n}\n\nQrono.prototype.startOfMonth = function () {\n return this.clone({\n day: 1, hour: 0, minute: 0, second: 0, millisecond: 0\n })\n}\n\nQrono.prototype.startOfDay = function () {\n return this.clone({\n hour: 0, minute: 0, second: 0, millisecond: 0\n })\n}\n\nQrono.prototype.startOfHour = function () {\n return this.clone({\n minute: 0, second: 0, millisecond: 0\n })\n}\n\nQrono.prototype.startOfMinute = function () {\n return this.clone({\n second: 0, millisecond: 0\n })\n}\n\nQrono.prototype.startOfSecond = function () {\n return this.clone({\n millisecond: 0\n })\n}\n\nQrono.prototype.isSame = function (another) { return +this === +another }\nQrono.prototype.isBefore = function (another) { return this < another }\nQrono.prototype.isAfter = function (another) { return this > another }\nQrono.prototype.isSameOrBefore = function (another) { return this <= another }\nQrono.prototype.isSameOrAfter = function (another) { return this >= another }\nQrono.prototype.isBetween = function (a, b) {\n return (a <= this && this <= b) || (b <= this && this <= a)\n}\n\n// Calculation\nQrono.prototype.plus = function (...args) {\n return plus.call(this, 1, ...args)\n}\n\nQrono.prototype.minus = function (...args) {\n return plus.call(this, -1, ...args)\n}\n\nfunction plus (sign, ...args) {\n const arg0 = args[0]\n const arg1 = args[1]\n if (Number.isFinite(arg0) && !Number.isFinite(arg1)) {\n return this.clone(this.numeric() + arg0)\n }\n let timeFields = null\n if (isObject(arg0)) {\n if (!hasDatetimeField(arg0)) {\n throw RangeError('Missing time field' +\n ' (year, minute, day, hour, minute, second or millisecond)'\n )\n }\n timeFields = arg0\n } else if (Number.isFinite(arg0) || Array.isArray(arg0)) {\n const values = args.flat().filter(v => Number.isSafeInteger(v))\n if (values.length !== args.flat().length) {\n throw RangeError('Should be safe integers')\n }\n if (values.length > 7) {\n throw RangeError('Too many numbers')\n }\n timeFields = {\n year: args[0],\n month: args[1],\n day: args[2],\n hour: args[3],\n minute: args[4],\n second: args[5],\n millisecond: args[6]\n }\n } else {\n throw TypeError()\n }\n const date = this.nativeDate()\n const utc = this[internal].localtime ? '' : 'UTC'\n if (has(timeFields, 'year') || has(timeFields, 'month')) {\n const year = this.year() + sign * (timeFields.year ?? 0)\n const month = this.month() + sign * (timeFields.month ?? 0)\n const endOfMonth = new Date(date.getTime())\n endOfMonth[`set${utc}FullYear`](year, month, 0)\n const lastDay = endOfMonth.getDate()\n if (lastDay < this.day()) {\n date[`set${utc}FullYear`](year, endOfMonth[`get${utc}Month`](), lastDay)\n } else {\n date[`set${utc}FullYear`](year, month - 1)\n }\n }\n if (has(timeFields, 'day')) {\n date[`set${utc}Date`](date[`get${utc}Date`]() + sign * timeFields.day)\n }\n [\n ['hour', 'Hours'], ['minute', 'Minutes'],\n ['second', 'Seconds'], ['millisecond', 'Milliseconds']\n ].forEach(([key, nativeKey]) => {\n if (has(timeFields, key)) {\n date[`setUTC${nativeKey}`](\n date[`getUTC${nativeKey}`]() + sign * timeFields[key]\n )\n }\n })\n return this.clone(asDst(this[internal].ambiguousAsDst, date))\n}\n", "export const epoch = new Date(0)\n\nexport const daysPerWeek = 7\nexport const hoursPerDay = 24\nexport const hoursPerWeek = hoursPerDay * daysPerWeek\nexport const minutesPerHour = 60\nexport const minutesPerDay = minutesPerHour * hoursPerDay\nexport const minutesPerWeek = minutesPerDay * daysPerWeek\nexport const secondsPerMinute = 60\nexport const secondsPerHour = secondsPerMinute * minutesPerHour\nexport const secondsPerDay = secondsPerHour * hoursPerDay\nexport const secondsPerWeek = secondsPerDay * daysPerWeek\nexport const millisecondsPerSecond = 1000\nexport const millisecondsPerMinute = secondsPerMinute * millisecondsPerSecond\nexport const millisecondsPerHour = secondsPerHour * millisecondsPerSecond\nexport const millisecondsPerDay = secondsPerDay * millisecondsPerSecond\nexport const millisecondsPerWeek = secondsPerWeek * millisecondsPerSecond\n\nexport const monday = 1\nexport const tuesday = 2\nexport const wednesday = 3\nexport const thursday = 4\nexport const friday = 5\nexport const saturday = 6\nexport const sunday = 7\n\nexport function has (object, ...keys) {\n return keys.flat().some(object.hasOwnProperty, object)\n}\n\nexport function fields (object) {\n return Object.entries(object).filter(\n ([, value]) => !isFunction(value)\n ).map(([key]) => key)\n}\n\nexport function given (arg) {\n return arg !== undefined\n}\n\nexport function isFunction (a) {\n return a instanceof Function\n}\n\nexport function isString (a) {\n return typeof a === 'string' || a instanceof String\n}\n\nexport function isObject (a) {\n return a !== null && typeof (a) === 'object' && a.constructor === Object\n}\n\nexport function isValidDate (date) {\n return !isNaN(date.getTime())\n}\n\nexport function hasDateField (object) {\n return has(object, ['year', 'month', 'day'])\n}\n\nexport function hasTimeField (object) {\n return has(object, ['hour', 'minute', 'second', 'millisecond'])\n}\n\nexport function hasDatetimeField (object) {\n return has(object, [\n 'year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond'\n ])\n}\n\nexport function asDst (ambiguousAsDst, date) {\n const numeric = date.getTime()\n const result = new Date(numeric)\n const adjacentDay = new Date(numeric)\n const sign = ambiguousAsDst ? 1 : -1\n adjacentDay.setDate(date.getDate() + sign)\n const adjust = adjacentDay.getTimezoneOffset() - date.getTimezoneOffset()\n if ((ambiguousAsDst && adjust < 0) || (!ambiguousAsDst && adjust > 0)) {\n const adjusted = new Date(numeric).setMinutes(date.getMinutes() + sign * adjust)\n const adjustedUTC = new Date(numeric).setUTCMinutes(date.getUTCMinutes() + sign * adjust)\n if (adjusted !== adjustedUTC && (adjusted - adjustedUTC) / millisecondsPerMinute !== adjust) {\n result.setUTCMinutes(date.getUTCMinutes() + sign * adjust)\n }\n }\n return result\n}\n", "import {\n given,\n millisecondsPerDay\n} from './helpers.js'\nimport { qrono } from './qrono.js'\n\nconst internal = Symbol('QronoDate.internal')\n\nexport default function QronoDate (...args) {\n if (!new.target) { return new QronoDate(...args) }\n const self = this[internal] = {\n datetime: null\n }\n let source = null\n if (args[0] instanceof QronoDate) {\n source = args.shift().toDatetime()\n }\n const first = args[0]\n const second = args[1]\n if (Number.isFinite(first) && !Number.isFinite(second)) {\n args[0] *= millisecondsPerDay\n }\n source = (\n source ? source.clone(...args) : qrono(...args)\n ).startOfDay()\n self.datetime = qrono({ localtime: false }, source.toObject())\n return this\n}\n\nQronoDate.prototype.toString = function () {\n return this[internal].datetime.toString().substring(0, 10)\n}\n\nQronoDate.prototype.valueOf = function () {\n return this[internal].datetime / millisecondsPerDay\n}\n\nQronoDate.prototype.clone = function (...args) {\n return new QronoDate(this, ...args)\n}\n\nQronoDate.prototype.toDatetime = function () {\n return qrono(this[internal].datetime.toArray())\n}\n\nQronoDate.prototype.numeric = function () {\n return this[internal].datetime.numeric() / millisecondsPerDay\n}\n\nQronoDate.prototype.startOfYear = function () {\n return new QronoDate(this[internal].datetime.startOfYear())\n}\n\nQronoDate.prototype.startOfMonth = function () {\n return new QronoDate(this[internal].datetime.startOfMonth())\n}\n\n;['year', 'month', 'day'].forEach(field => {\n QronoDate.prototype[field] = function (value) {\n if (given(value)) {\n return new QronoDate(this[internal].datetime[field](value))\n }\n return this[internal].datetime[field]()\n }\n})\n\n;[\n 'dayOfWeek', 'dayOfYear', 'weekOfYear', 'yearOfWeek',\n 'isLeapYear', 'daysInMonth', 'daysInYear', 'weeksInYear'\n].forEach(method => {\n QronoDate.prototype[method] = function () {\n return this[internal].datetime[method]()\n }\n})\n\nQronoDate.prototype.isDstTransitionDay = function () {\n return this[internal].datetime.localtime(true).isDstTransitionDay()\n}\n\nQronoDate.prototype.endOfYear = function () {\n return this.clone({ month: 12, day: 31 })\n}\n\nQronoDate.prototype.endOfMonth = function () {\n return this.clone({ day: this.daysInMonth() })\n}\n\nQronoDate.prototype.plus = function (...args) {\n return this[internal].datetime.plus(...args).toDate()\n}\n\nQronoDate.prototype.minus = function (...args) {\n return this[internal].datetime.minus(...args).toDate()\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["context", "internal"]
7
7
  }
package/dist/qrono.js CHANGED
@@ -1,5 +1,4 @@
1
1
  // src/helpers.js
2
- var epoch = new Date(0);
3
2
  var daysPerWeek = 7;
4
3
  var hoursPerDay = 24;
5
4
  var hoursPerWeek = hoursPerDay * daysPerWeek;
@@ -26,7 +25,9 @@ function has(object, ...keys) {
26
25
  return keys.flat().some(object.hasOwnProperty, object);
27
26
  }
28
27
  function fields(object) {
29
- return Object.entries(object).filter(([, value]) => !isFunction(value)).map(([key]) => key);
28
+ return Object.entries(object).filter(
29
+ ([, value]) => !isFunction(value)
30
+ ).map(([key]) => key);
30
31
  }
31
32
  function given(arg) {
32
33
  return arg !== void 0;
@@ -185,16 +186,21 @@ Qrono.asLocaltime = function() {
185
186
  defaultContext.localtime = true;
186
187
  return this;
187
188
  };
188
- Object.assign(Qrono, { monday, tuesday, wednesday, thursday, friday, saturday, sunday });
189
+ Object.assign(
190
+ Qrono,
191
+ { monday, tuesday, wednesday, thursday, friday, saturday, sunday }
192
+ );
189
193
  var internal2 = Symbol("Qrono.internal");
190
194
  function Qrono(...args) {
191
195
  if (!new.target) {
192
196
  return new Qrono(...args);
193
197
  }
194
198
  const self = this[internal2] = {
199
+ // properties
195
200
  nativeDate: null,
196
201
  localtime: false,
197
202
  ambiguousAsDst: false,
203
+ // methods
198
204
  set,
199
205
  parse,
200
206
  valid,
@@ -214,14 +220,16 @@ function Qrono(...args) {
214
220
  const first = args[0];
215
221
  const second = args[1];
216
222
  if (first == null) {
217
- self.nativeDate ??= new Date();
223
+ self.nativeDate ??= /* @__PURE__ */ new Date();
218
224
  } else if (first instanceof Date) {
219
225
  self.nativeDate = new Date(first.getTime());
220
226
  } else if (isString(first)) {
221
227
  self.parse(first);
222
228
  } else if (isObject(first)) {
223
229
  if (!hasDatetimeField(first)) {
224
- throw RangeError("Missing time field (year, minute, day, hour, minute, second or millisecond)");
230
+ throw RangeError(
231
+ "Missing time field (year, minute, day, hour, minute, second or millisecond)"
232
+ );
225
233
  }
226
234
  self.set(first);
227
235
  } else if (Number.isFinite(first) && !Number.isFinite(second)) {
@@ -266,20 +274,44 @@ function getNative(name) {
266
274
  function set(values) {
267
275
  const args = { ...values };
268
276
  args.month = args.month && args.month - 1;
269
- const date = this.nativeDate ?? new Date();
277
+ const date = this.nativeDate ?? /* @__PURE__ */ new Date();
270
278
  if (this.localtime) {
271
- this.nativeDate = asDst(this.ambiguousAsDst, new Date(args.year ?? date.getFullYear(), args.month ?? (this.nativeDate ? date.getMonth() : 0), args.day ?? (this.nativeDate ? date.getDate() : 1), args.hour ?? (this.nativeDate ? date.getHours() : 0), args.minute ?? (this.nativeDate ? date.getMinutes() : 0), args.second ?? (this.nativeDate ? date.getSeconds() : 0), args.millisecond ?? (this.nativeDate ? date.getMilliseconds() : 0)));
279
+ this.nativeDate = asDst(
280
+ this.ambiguousAsDst,
281
+ new Date(
282
+ args.year ?? date.getFullYear(),
283
+ args.month ?? (this.nativeDate ? date.getMonth() : 0),
284
+ args.day ?? (this.nativeDate ? date.getDate() : 1),
285
+ args.hour ?? (this.nativeDate ? date.getHours() : 0),
286
+ args.minute ?? (this.nativeDate ? date.getMinutes() : 0),
287
+ args.second ?? (this.nativeDate ? date.getSeconds() : 0),
288
+ args.millisecond ?? (this.nativeDate ? date.getMilliseconds() : 0)
289
+ )
290
+ );
272
291
  } else {
273
- this.nativeDate = new Date(Date.UTC(args.year ?? date.getUTCFullYear(), args.month ?? (this.nativeDate ? date.getUTCMonth() : 0), args.day ?? (this.nativeDate ? date.getUTCDate() : 1), args.hour ?? (this.nativeDate ? date.getUTCHours() : 0), args.minute ?? (this.nativeDate ? date.getUTCMinutes() : 0), args.second ?? (this.nativeDate ? date.getUTCSeconds() : 0), args.millisecond ?? (this.nativeDate ? date.getUTCMilliseconds() : 0)));
292
+ this.nativeDate = new Date(Date.UTC(
293
+ args.year ?? date.getUTCFullYear(),
294
+ args.month ?? (this.nativeDate ? date.getUTCMonth() : 0),
295
+ args.day ?? (this.nativeDate ? date.getUTCDate() : 1),
296
+ args.hour ?? (this.nativeDate ? date.getUTCHours() : 0),
297
+ args.minute ?? (this.nativeDate ? date.getUTCMinutes() : 0),
298
+ args.second ?? (this.nativeDate ? date.getUTCSeconds() : 0),
299
+ args.millisecond ?? (this.nativeDate ? date.getUTCMilliseconds() : 0)
300
+ ));
274
301
  }
275
302
  return this;
276
303
  }
277
- var parsePattern = new RegExp("^(\\d{4})(?:[-/]?([0-2]?\\d)(?:[-/]?([0-3]?\\d))?)?(?:[T\\s]([0-2]?\\d)(?::([0-5]?\\d)?(?::([0-6]?\\d)?(?:[.:](\\d{1,3})?\\d*)?)?)?)?(Z|[-+]\\d{2}:?\\d{2})?$");
304
+ var parsePattern = new RegExp(
305
+ // yyyy[[-|/]MM[[-|/]DD]]
306
+ "^(\\d{4})(?:[-/]?([0-2]?\\d)(?:[-/]?([0-3]?\\d))?)?(?:[T\\s]([0-2]?\\d)(?::([0-5]?\\d)?(?::([0-6]?\\d)?(?:[.:](\\d{1,3})?\\d*)?)?)?)?(Z|[-+]\\d{2}:?\\d{2})?$"
307
+ );
278
308
  function parse(str) {
279
309
  const text = str.trim().toUpperCase();
280
310
  const values = text.match(parsePattern);
281
311
  if (!values) {
282
- throw RangeError(`Failed to parse '${str}'. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`);
312
+ throw RangeError(
313
+ `Failed to parse '${str}'. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`
314
+ );
283
315
  }
284
316
  const [year, month, day, hour, minute, second, millisecond, offset] = [
285
317
  +values[1],
@@ -293,7 +325,9 @@ function parse(str) {
293
325
  ];
294
326
  const native = new Date(text);
295
327
  if (!isValidDate(native)) {
296
- throw RangeError(`Failed to parse '${str}' by Date. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`);
328
+ throw RangeError(
329
+ `Failed to parse '${str}' by Date. Should be yyyy[[-|/]MM[[-|/]DD]][(T| )HH:mm[:ss[(.|:)SSS]]][Z|(+|-)hh:mm]`
330
+ );
297
331
  }
298
332
  if (offset) {
299
333
  this.nativeDate = native;
@@ -403,7 +437,9 @@ Qrono.prototype.weekOfYear = function() {
403
437
  const date = this.toDate();
404
438
  const theThursday = date.day(date.day() - date.dayOfWeek() + thursday);
405
439
  const startOfYear = theThursday.startOfYear();
406
- const firstThursday = startOfYear.dayOfWeek() === thursday ? startOfYear : startOfYear.day(1 + (thursday - startOfYear.dayOfWeek() + daysPerWeek) % daysPerWeek);
440
+ const firstThursday = startOfYear.dayOfWeek() === thursday ? startOfYear : startOfYear.day(
441
+ 1 + (thursday - startOfYear.dayOfWeek() + daysPerWeek) % daysPerWeek
442
+ );
407
443
  return 1 + Math.ceil((theThursday - firstThursday) / daysPerWeek);
408
444
  };
409
445
  Qrono.prototype.yearOfWeek = function() {
@@ -419,7 +455,9 @@ Qrono.prototype.hasDstInYear = function() {
419
455
  return false;
420
456
  }
421
457
  const currentOffset = this.offset();
422
- return [3, 6, 9, 12].map((month) => this.month(month).offset()).some((offset) => offset !== currentOffset);
458
+ return [3, 6, 9, 12].map(
459
+ (month) => this.month(month).offset()
460
+ ).some((offset) => offset !== currentOffset);
423
461
  };
424
462
  Qrono.prototype.isInDst = function() {
425
463
  if (!this[internal2].localtime) {
@@ -538,7 +576,9 @@ function plus(sign, ...args) {
538
576
  let timeFields = null;
539
577
  if (isObject(arg0)) {
540
578
  if (!hasDatetimeField(arg0)) {
541
- throw RangeError("Missing time field (year, minute, day, hour, minute, second or millisecond)");
579
+ throw RangeError(
580
+ "Missing time field (year, minute, day, hour, minute, second or millisecond)"
581
+ );
542
582
  }
543
583
  timeFields = arg0;
544
584
  } else if (Number.isFinite(arg0) || Array.isArray(arg0)) {
@@ -585,7 +625,9 @@ function plus(sign, ...args) {
585
625
  ["millisecond", "Milliseconds"]
586
626
  ].forEach(([key, nativeKey]) => {
587
627
  if (has(timeFields, key)) {
588
- date[`setUTC${nativeKey}`](date[`getUTC${nativeKey}`]() + sign * timeFields[key]);
628
+ date[`setUTC${nativeKey}`](
629
+ date[`getUTC${nativeKey}`]() + sign * timeFields[key]
630
+ );
589
631
  }
590
632
  });
591
633
  return this.clone(asDst(this[internal2].ambiguousAsDst, date));