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