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 +1 -1
- package/dist/qrono.cjs +138 -124
- package/dist/qrono.cjs.map +4 -4
- package/dist/qrono.js +135 -121
- package/dist/qrono.js.map +4 -4
- package/dist/qrono.min.js +1 -1
- package/dist/qrono.min.js.map +4 -4
- package/dist/qrono.mjs +138 -124
- package/dist/qrono.mjs.map +4 -4
- package/package.json +3 -3
- package/src/qrono.js +133 -19
- package/src/qrono.date.js +0 -94
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://
|
|
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
|
|
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[
|
|
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 =
|
|
260
|
+
const date = this.nativeDate;
|
|
326
261
|
if (this.localtime) {
|
|
327
262
|
this.nativeDate = asDst(
|
|
328
263
|
this.ambiguousAsDst,
|
|
329
264
|
new Date(
|
|
330
|
-
(
|
|
331
|
-
(
|
|
332
|
-
(
|
|
333
|
-
(
|
|
334
|
-
(
|
|
335
|
-
(
|
|
336
|
-
(
|
|
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
|
-
(
|
|
342
|
-
(
|
|
343
|
-
(
|
|
344
|
-
(
|
|
345
|
-
(
|
|
346
|
-
(
|
|
347
|
-
(
|
|
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[
|
|
392
|
-
const t = this[
|
|
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[
|
|
332
|
+
return this[internal].nativeDate.toISOString();
|
|
398
333
|
};
|
|
399
334
|
Qrono.prototype.valueOf = function() {
|
|
400
|
-
return this[
|
|
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[
|
|
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[
|
|
344
|
+
return new Date(this[internal].nativeDate.getTime());
|
|
410
345
|
};
|
|
411
346
|
Qrono.prototype.offset = function() {
|
|
412
|
-
return this[
|
|
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[
|
|
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[
|
|
353
|
+
return given(arg) ? this.clone({ ambiguousAsDst: arg }) : this[internal].ambiguousAsDst;
|
|
419
354
|
};
|
|
420
355
|
Qrono.prototype.valid = function() {
|
|
421
|
-
return this[
|
|
356
|
+
return this[internal].valid();
|
|
422
357
|
};
|
|
423
358
|
Qrono.prototype.numeric = function() {
|
|
424
|
-
return this[
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
411
|
+
return given(value) ? this.clone({ millisecond: value }) : this[internal].getNative("Milliseconds");
|
|
477
412
|
};
|
|
478
413
|
Qrono.prototype.dayOfWeek = function() {
|
|
479
|
-
return 1 + (this[
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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[
|
|
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,
|
package/dist/qrono.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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 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", "
|
|
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
|
}
|