qrono 0.1.4 → 0.1.6

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/README.md CHANGED
@@ -64,7 +64,7 @@ qrono({ localtime: true }, '2021-08-31 12:34').toString() === '2021-08-31T12:34.
64
64
  The ECMA TC39 Temporal Proposal
65
65
  </a>
66
66
  <br>
67
- An ECMAScript® API proposal that may become a future standard. The specification is rigorous, spectacular, and inspired by <a href="https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html">java.time</a>.
67
+ An ECMAScript® API proposal that may become a future standard. The specification is rigorous, spectacular, and inspired by <a href="https://jcp.org/aboutJava/communityprocess/pfd/jsr310/JSR-310-guide.html">java.time</a>.
68
68
  </li>
69
69
  </ul>
70
70
  </details>
package/dist/qrono.cjs CHANGED
@@ -118,87 +118,6 @@ function asDst(ambiguousAsDst, date) {
118
118
  return result;
119
119
  }
120
120
 
121
- // src/qrono.date.js
122
- var internal = Symbol("QronoDate.internal");
123
- function QronoDate(...args) {
124
- if (!new.target) {
125
- return new QronoDate(...args);
126
- }
127
- const self = this[internal] = {
128
- datetime: null
129
- };
130
- let source = null;
131
- if (args[0] instanceof QronoDate) {
132
- source = args.shift().toDatetime();
133
- }
134
- const first = args[0];
135
- const second = args[1];
136
- if (Number.isFinite(first) && !Number.isFinite(second)) {
137
- args[0] *= millisecondsPerDay;
138
- }
139
- source = (source ? source.clone(...args) : qrono(...args)).startOfDay();
140
- self.datetime = qrono({ localtime: false }, source.toObject());
141
- return this;
142
- }
143
- QronoDate.prototype.toString = function() {
144
- return this[internal].datetime.toString().substring(0, 10);
145
- };
146
- QronoDate.prototype.valueOf = function() {
147
- return this[internal].datetime / millisecondsPerDay;
148
- };
149
- QronoDate.prototype.clone = function(...args) {
150
- return new QronoDate(this, ...args);
151
- };
152
- QronoDate.prototype.toDatetime = function() {
153
- return qrono(this[internal].datetime.toArray());
154
- };
155
- QronoDate.prototype.numeric = function() {
156
- return this[internal].datetime.numeric() / millisecondsPerDay;
157
- };
158
- QronoDate.prototype.startOfYear = function() {
159
- return new QronoDate(this[internal].datetime.startOfYear());
160
- };
161
- QronoDate.prototype.startOfMonth = function() {
162
- return new QronoDate(this[internal].datetime.startOfMonth());
163
- };
164
- ["year", "month", "day"].forEach((field) => {
165
- QronoDate.prototype[field] = function(value) {
166
- if (given(value)) {
167
- return new QronoDate(this[internal].datetime[field](value));
168
- }
169
- return this[internal].datetime[field]();
170
- };
171
- });
172
- [
173
- "dayOfWeek",
174
- "dayOfYear",
175
- "weekOfYear",
176
- "yearOfWeek",
177
- "isLeapYear",
178
- "daysInMonth",
179
- "daysInYear",
180
- "weeksInYear"
181
- ].forEach((method) => {
182
- QronoDate.prototype[method] = function() {
183
- return this[internal].datetime[method]();
184
- };
185
- });
186
- QronoDate.prototype.isDstTransitionDay = function() {
187
- return this[internal].datetime.localtime(true).isDstTransitionDay();
188
- };
189
- QronoDate.prototype.endOfYear = function() {
190
- return this.clone({ month: 12, day: 31 });
191
- };
192
- QronoDate.prototype.endOfMonth = function() {
193
- return this.clone({ day: this.daysInMonth() });
194
- };
195
- QronoDate.prototype.plus = function(...args) {
196
- return this[internal].datetime.plus(...args).toDate();
197
- };
198
- QronoDate.prototype.minus = function(...args) {
199
- return this[internal].datetime.minus(...args).toDate();
200
- };
201
-
202
121
  // src/qrono.js
203
122
  var qrono = Qrono;
204
123
  Qrono.date = QronoDate;
@@ -236,13 +155,13 @@ Object.assign(
236
155
  Qrono,
237
156
  { monday, tuesday, wednesday, thursday, friday, saturday, sunday }
238
157
  );
239
- var internal2 = Symbol("Qrono.internal");
158
+ var internal = Symbol("Qrono.internal");
240
159
  function Qrono(...args) {
241
160
  var _a;
242
161
  if (!new.target) {
243
162
  return new Qrono(...args);
244
163
  }
245
- const self = this[internal2] = {
164
+ const self = this[internal] = {
246
165
  // properties
247
166
  nativeDate: null,
248
167
  localtime: false,
@@ -319,32 +238,48 @@ function getNative(name) {
319
238
  return this.nativeDate[`get${this.localtime ? "" : "UTC"}${name}`]();
320
239
  }
321
240
  function set(values) {
322
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
241
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B;
323
242
  const args = __spreadValues({}, values);
243
+ if (!this.nativeDate || args.year != null) {
244
+ const date2 = /* @__PURE__ */ new Date();
245
+ if (this.localtime) {
246
+ this.nativeDate = asDst(
247
+ this.ambiguousAsDst,
248
+ /* @__PURE__ */ new Date(
249
+ `${((_a = args.year) != null ? _a : date2.getFullYear()).toString().padStart(4, "0")}-${((_b = args.month) != null ? _b : 1).toString().padStart(2, "0")}-${((_c = args.day) != null ? _c : 1).toString().padStart(2, "0")}T${((_d = args.hour) != null ? _d : 0).toString().padStart(2, "0")}:${((_e = args.minute) != null ? _e : 0).toString().padStart(2, "0")}:${((_f = args.second) != null ? _f : 0).toString().padStart(2, "0")}.${((_g = args.millisecond) != null ? _g : 0).toString().padStart(3, "0")}`
250
+ )
251
+ );
252
+ } else {
253
+ this.nativeDate = /* @__PURE__ */ new Date(
254
+ `${((_h = args.year) != null ? _h : date2.getUTCFullYear()).toString().padStart(4, "0")}-${((_i = args.month) != null ? _i : 1).toString().padStart(2, "0")}-${((_j = args.day) != null ? _j : 1).toString().padStart(2, "0")}T${((_k = args.hour) != null ? _k : 0).toString().padStart(2, "0")}:${((_l = args.minute) != null ? _l : 0).toString().padStart(2, "0")}:${((_m = args.second) != null ? _m : 0).toString().padStart(2, "0")}.${((_n = args.millisecond) != null ? _n : 0).toString().padStart(3, "0")}Z`
255
+ );
256
+ }
257
+ return this;
258
+ }
324
259
  args.month = args.month && args.month - 1;
325
- const date = (_a = this.nativeDate) != null ? _a : /* @__PURE__ */ new Date();
260
+ const date = this.nativeDate;
326
261
  if (this.localtime) {
327
262
  this.nativeDate = asDst(
328
263
  this.ambiguousAsDst,
329
264
  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
265
+ (_o = args.year) != null ? _o : date.getFullYear(),
266
+ (_p = args.month) != null ? _p : date.getMonth(),
267
+ (_q = args.day) != null ? _q : date.getDate(),
268
+ (_r = args.hour) != null ? _r : date.getHours(),
269
+ (_s = args.minute) != null ? _s : date.getMinutes(),
270
+ (_t = args.second) != null ? _t : date.getSeconds(),
271
+ (_u = args.millisecond) != null ? _u : date.getMilliseconds()
337
272
  )
338
273
  );
339
274
  } else {
340
275
  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
276
+ (_v = args.year) != null ? _v : date.getUTCFullYear(),
277
+ (_w = args.month) != null ? _w : date.getUTCMonth(),
278
+ (_x = args.day) != null ? _x : date.getUTCDate(),
279
+ (_y = args.hour) != null ? _y : date.getUTCHours(),
280
+ (_z = args.minute) != null ? _z : date.getUTCMinutes(),
281
+ (_A = args.second) != null ? _A : date.getUTCSeconds(),
282
+ (_B = args.millisecond) != null ? _B : date.getUTCMilliseconds()
348
283
  ));
349
284
  }
350
285
  return this;
@@ -388,40 +323,40 @@ function parse(str) {
388
323
  return this;
389
324
  }
390
325
  Qrono.prototype.toString = function() {
391
- if (this[internal2].localtime) {
392
- const t = this[internal2].nativeDate;
326
+ if (this[internal].localtime) {
327
+ const t = this[internal].nativeDate;
393
328
  const offset = -t.getTimezoneOffset();
394
329
  const offsetAbs = Math.abs(offset);
395
330
  return `${String(t.getFullYear()).padStart(4, "0")}-${String(t.getMonth() + 1).padStart(2, "0")}-${String(t.getDate()).padStart(2, "0")}T${String(t.getHours()).padStart(2, "0")}:${String(t.getMinutes()).padStart(2, "0")}:${String(t.getSeconds()).padStart(2, "0")}.${String(t.getMilliseconds()).padStart(3, "0")}${(offset >= 0 ? "+" : "-") + String(Math.trunc(offsetAbs / minutesPerHour)).padStart(2, "0") + ":" + String(offsetAbs % minutesPerHour).padStart(2, "0")}`;
396
331
  }
397
- return this[internal2].nativeDate.toISOString();
332
+ return this[internal].nativeDate.toISOString();
398
333
  };
399
334
  Qrono.prototype.valueOf = function() {
400
- return this[internal2].nativeDate.valueOf();
335
+ return this[internal].nativeDate.valueOf();
401
336
  };
402
337
  Qrono.prototype.clone = function(...args) {
403
338
  return new Qrono(this, ...args);
404
339
  };
405
340
  Qrono.prototype.context = function(context2) {
406
- return given(context2) ? this.clone(context2) : { localtime: this[internal2].localtime, ambiguousAsDst: this[internal2].ambiguousAsDst };
341
+ return given(context2) ? this.clone(context2) : { localtime: this[internal].localtime, ambiguousAsDst: this[internal].ambiguousAsDst };
407
342
  };
408
343
  Qrono.prototype.nativeDate = function() {
409
- return new Date(this[internal2].nativeDate.getTime());
344
+ return new Date(this[internal].nativeDate.getTime());
410
345
  };
411
346
  Qrono.prototype.offset = function() {
412
- return this[internal2].localtime ? -this[internal2].nativeDate.getTimezoneOffset() : 0;
347
+ return this[internal].localtime ? -this[internal].nativeDate.getTimezoneOffset() : 0;
413
348
  };
414
349
  Qrono.prototype.localtime = function(arg) {
415
- return given(arg) ? this.clone({ localtime: arg }) : this[internal2].localtime;
350
+ return given(arg) ? this.clone({ localtime: arg }) : this[internal].localtime;
416
351
  };
417
352
  Qrono.prototype.ambiguousAsDst = function(arg) {
418
- return given(arg) ? this.clone({ ambiguousAsDst: arg }) : this[internal2].ambiguousAsDst;
353
+ return given(arg) ? this.clone({ ambiguousAsDst: arg }) : this[internal].ambiguousAsDst;
419
354
  };
420
355
  Qrono.prototype.valid = function() {
421
- return this[internal2].valid();
356
+ return this[internal].valid();
422
357
  };
423
358
  Qrono.prototype.numeric = function() {
424
- return this[internal2].nativeDate.getTime();
359
+ return this[internal].nativeDate.getTime();
425
360
  };
426
361
  Qrono.prototype.toObject = function() {
427
362
  return {
@@ -455,28 +390,28 @@ Qrono.prototype.asLocaltime = function() {
455
390
  return this.clone({ localtime: true });
456
391
  };
457
392
  Qrono.prototype.year = function(value) {
458
- return given(value) ? this.clone({ year: value }) : this[internal2].getNative("FullYear");
393
+ return given(value) ? this.clone({ year: value }) : this[internal].getNative("FullYear");
459
394
  };
460
395
  Qrono.prototype.month = function(value) {
461
- return given(value) ? this.clone({ month: value }) : this[internal2].getNative("Month") + 1;
396
+ return given(value) ? this.clone({ month: value }) : this[internal].getNative("Month") + 1;
462
397
  };
463
398
  Qrono.prototype.day = function(value) {
464
- return given(value) ? this.clone({ day: value }) : this[internal2].getNative("Date");
399
+ return given(value) ? this.clone({ day: value }) : this[internal].getNative("Date");
465
400
  };
466
401
  Qrono.prototype.hour = function(value) {
467
- return given(value) ? this.clone({ hour: value }) : this[internal2].getNative("Hours");
402
+ return given(value) ? this.clone({ hour: value }) : this[internal].getNative("Hours");
468
403
  };
469
404
  Qrono.prototype.minute = function(value) {
470
- return given(value) ? this.clone({ minute: value }) : this[internal2].getNative("Minutes");
405
+ return given(value) ? this.clone({ minute: value }) : this[internal].getNative("Minutes");
471
406
  };
472
407
  Qrono.prototype.second = function(value) {
473
- return given(value) ? this.clone({ second: value }) : this[internal2].getNative("Seconds");
408
+ return given(value) ? this.clone({ second: value }) : this[internal].getNative("Seconds");
474
409
  };
475
410
  Qrono.prototype.millisecond = function(value) {
476
- return given(value) ? this.clone({ millisecond: value }) : this[internal2].getNative("Milliseconds");
411
+ return given(value) ? this.clone({ millisecond: value }) : this[internal].getNative("Milliseconds");
477
412
  };
478
413
  Qrono.prototype.dayOfWeek = function() {
479
- return 1 + (this[internal2].getNative("Day") - 1 + daysPerWeek) % daysPerWeek;
414
+ return 1 + (this[internal].getNative("Day") - 1 + daysPerWeek) % daysPerWeek;
480
415
  };
481
416
  Qrono.prototype.dayOfYear = function() {
482
417
  const date = this.toDate();
@@ -500,7 +435,7 @@ Qrono.prototype.isLeapYear = function() {
500
435
  return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
501
436
  };
502
437
  Qrono.prototype.hasDstInYear = function() {
503
- if (!this[internal2].localtime) {
438
+ if (!this[internal].localtime) {
504
439
  return false;
505
440
  }
506
441
  const currentOffset = this.offset();
@@ -509,19 +444,19 @@ Qrono.prototype.hasDstInYear = function() {
509
444
  ).some((offset) => offset !== currentOffset);
510
445
  };
511
446
  Qrono.prototype.isInDst = function() {
512
- if (!this[internal2].localtime) {
447
+ if (!this[internal].localtime) {
513
448
  return false;
514
449
  }
515
450
  return this.offset() === Math.max(...[3, 6, 9, 12].map((month) => this.month(month).offset()));
516
451
  };
517
452
  Qrono.prototype.isDstTransitionDay = function() {
518
- if (!this[internal2].localtime) {
453
+ if (!this[internal].localtime) {
519
454
  return false;
520
455
  }
521
456
  return this.minutesInDay() !== minutesPerDay;
522
457
  };
523
458
  Qrono.prototype.minutesInDay = function() {
524
- if (!this[internal2].localtime) {
459
+ if (!this[internal].localtime) {
525
460
  return minutesPerDay;
526
461
  }
527
462
  const startOfDay = this.startOfDay();
@@ -652,7 +587,7 @@ function plus(sign, ...args) {
652
587
  throw TypeError();
653
588
  }
654
589
  const date = this.nativeDate();
655
- const utc = this[internal2].localtime ? "" : "UTC";
590
+ const utc = this[internal].localtime ? "" : "UTC";
656
591
  if (has(timeFields, "year") || has(timeFields, "month")) {
657
592
  const year = this.year() + sign * ((_a = timeFields.year) != null ? _a : 0);
658
593
  const month = this.month() + sign * ((_b = timeFields.month) != null ? _b : 0);
@@ -680,8 +615,87 @@ function plus(sign, ...args) {
680
615
  );
681
616
  }
682
617
  });
683
- return this.clone(asDst(this[internal2].ambiguousAsDst, date));
618
+ return this.clone(asDst(this[internal].ambiguousAsDst, date));
684
619
  }
620
+ var internalDate = Symbol("QronoDate.internal");
621
+ function QronoDate(...args) {
622
+ if (!new.target) {
623
+ return new QronoDate(...args);
624
+ }
625
+ const self = this[internalDate] = {
626
+ datetime: null
627
+ };
628
+ let source = null;
629
+ if (args[0] instanceof QronoDate) {
630
+ source = args.shift().toDatetime();
631
+ }
632
+ const first = args[0];
633
+ const second = args[1];
634
+ if (Number.isFinite(first) && !Number.isFinite(second)) {
635
+ args[0] *= millisecondsPerDay;
636
+ }
637
+ source = (source ? source.clone(...args) : qrono(...args)).startOfDay();
638
+ self.datetime = qrono({ localtime: false }, source.toObject());
639
+ return this;
640
+ }
641
+ QronoDate.prototype.toString = function() {
642
+ return this[internalDate].datetime.toString().substring(0, 10);
643
+ };
644
+ QronoDate.prototype.valueOf = function() {
645
+ return this[internalDate].datetime / millisecondsPerDay;
646
+ };
647
+ QronoDate.prototype.clone = function(...args) {
648
+ return new QronoDate(this, ...args);
649
+ };
650
+ QronoDate.prototype.toDatetime = function() {
651
+ return qrono(this[internalDate].datetime.toArray());
652
+ };
653
+ QronoDate.prototype.numeric = function() {
654
+ return this[internalDate].datetime.numeric() / millisecondsPerDay;
655
+ };
656
+ QronoDate.prototype.startOfYear = function() {
657
+ return new QronoDate(this[internalDate].datetime.startOfYear());
658
+ };
659
+ QronoDate.prototype.startOfMonth = function() {
660
+ return new QronoDate(this[internalDate].datetime.startOfMonth());
661
+ };
662
+ ["year", "month", "day"].forEach((field) => {
663
+ QronoDate.prototype[field] = function(value) {
664
+ if (given(value)) {
665
+ return new QronoDate(this[internalDate].datetime[field](value));
666
+ }
667
+ return this[internalDate].datetime[field]();
668
+ };
669
+ });
670
+ [
671
+ "dayOfWeek",
672
+ "dayOfYear",
673
+ "weekOfYear",
674
+ "yearOfWeek",
675
+ "isLeapYear",
676
+ "daysInMonth",
677
+ "daysInYear",
678
+ "weeksInYear"
679
+ ].forEach((method) => {
680
+ QronoDate.prototype[method] = function() {
681
+ return this[internalDate].datetime[method]();
682
+ };
683
+ });
684
+ QronoDate.prototype.isDstTransitionDay = function() {
685
+ return this[internalDate].datetime.localtime(true).isDstTransitionDay();
686
+ };
687
+ QronoDate.prototype.endOfYear = function() {
688
+ return this.clone({ month: 12, day: 31 });
689
+ };
690
+ QronoDate.prototype.endOfMonth = function() {
691
+ return this.clone({ day: this.daysInMonth() });
692
+ };
693
+ QronoDate.prototype.plus = function(...args) {
694
+ return this[internalDate].datetime.plus(...args).toDate();
695
+ };
696
+ QronoDate.prototype.minus = function(...args) {
697
+ return this[internalDate].datetime.minus(...args).toDate();
698
+ };
685
699
  // Annotate the CommonJS export names for ESM import in node:
686
700
  0 && (module.exports = {
687
701
  friday,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/qrono.js", "../src/helpers.js", "../src/qrono.date.js"],
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"]
3
+ "sources": ["../src/qrono.js", "../src/helpers.js"],
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 millisecondsPerDay,\n monday,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday\n} from './helpers.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\n// -----------------------------------------------------------------------------\n// Static\n// -----------------------------------------------------------------------------\nQrono.date = QronoDate\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 if (!this.nativeDate || args.year != null) {\n // Construct nativeDate from\n const date = new Date()\n if (this.localtime) {\n this.nativeDate = asDst(\n this.ambiguousAsDst,\n new Date(\n `${(args.year ?? date.getFullYear()).toString().padStart(4, '0')}` +\n `-${(args.month ?? 1).toString().padStart(2, '0')}` +\n `-${(args.day ?? 1).toString().padStart(2, '0')}` +\n `T${(args.hour ?? 0).toString().padStart(2, '0')}` +\n `:${(args.minute ?? 0).toString().padStart(2, '0')}` +\n `:${(args.second ?? 0).toString().padStart(2, '0')}` +\n `.${(args.millisecond ?? 0).toString().padStart(3, '0')}`\n )\n )\n } else {\n this.nativeDate = new Date(\n `${(args.year ?? date.getUTCFullYear()).toString().padStart(4, '0')}` +\n `-${(args.month ?? 1).toString().padStart(2, '0')}` +\n `-${(args.day ?? 1).toString().padStart(2, '0')}` +\n `T${(args.hour ?? 0).toString().padStart(2, '0')}` +\n `:${(args.minute ?? 0).toString().padStart(2, '0')}` +\n `:${(args.second ?? 0).toString().padStart(2, '0')}` +\n `.${(args.millisecond ?? 0).toString().padStart(3, '0')}` +\n 'Z'\n )\n }\n return this\n }\n // Manipulate nativeDate is already set\n args.month = args.month && args.month - 1\n const date = this.nativeDate\n if (this.localtime) {\n this.nativeDate = asDst(\n this.ambiguousAsDst,\n new Date(\n args.year ?? date.getFullYear(), args.month ?? date.getMonth(), args.day ?? date.getDate(),\n args.hour ?? date.getHours(), args.minute ?? date.getMinutes(), args.second ?? date.getSeconds(),\n args.millisecond ?? date.getMilliseconds()\n )\n )\n } else {\n this.nativeDate = new Date(Date.UTC(\n args.year ?? date.getUTCFullYear(), args.month ?? date.getUTCMonth(), args.day ?? date.getUTCDate(),\n args.hour ?? date.getUTCHours(), args.minute ?? date.getUTCMinutes(), args.second ?? date.getUTCSeconds(),\n args.millisecond ?? date.getUTCMilliseconds()\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\n// -----------------------------------------------------------------------------\n// QronoDate Class\n// -----------------------------------------------------------------------------\nconst internalDate = Symbol('QronoDate.internal')\n\nfunction QronoDate (...args) {\n if (!new.target) { return new QronoDate(...args) }\n const self = this[internalDate] = {\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[internalDate].datetime.toString().substring(0, 10)\n}\n\nQronoDate.prototype.valueOf = function () {\n return this[internalDate].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[internalDate].datetime.toArray())\n}\n\nQronoDate.prototype.numeric = function () {\n return this[internalDate].datetime.numeric() / millisecondsPerDay\n}\n\nQronoDate.prototype.startOfYear = function () {\n return new QronoDate(this[internalDate].datetime.startOfYear())\n}\n\nQronoDate.prototype.startOfMonth = function () {\n return new QronoDate(this[internalDate].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[internalDate].datetime[field](value))\n }\n return this[internalDate].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[internalDate].datetime[method]()\n }\n})\n\nQronoDate.prototype.isDstTransitionDay = function () {\n return this[internalDate].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[internalDate].datetime.plus(...args).toDate()\n}\n\nQronoDate.prototype.minus = function (...args) {\n return this[internalDate].datetime.minus(...args).toDate()\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"],
5
+ "mappings": "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",
6
+ "names": ["context", "date"]
7
7
  }