@nextera.one/tps-standard 0.5.33 → 0.6.0
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/CHANGELOG.md +88 -0
- package/README.md +133 -56
- package/dist/date.d.ts +54 -0
- package/dist/date.js +174 -0
- package/dist/date.js.map +1 -0
- package/dist/driver-manager.d.ts +34 -0
- package/dist/driver-manager.js +53 -0
- package/dist/driver-manager.js.map +1 -0
- package/dist/drivers/chinese.d.ts +25 -0
- package/dist/drivers/chinese.js +485 -0
- package/dist/drivers/chinese.js.map +1 -0
- package/dist/drivers/gregorian.d.ts +3 -5
- package/dist/drivers/gregorian.js +26 -19
- package/dist/drivers/gregorian.js.map +1 -1
- package/dist/drivers/hijri.d.ts +1 -16
- package/dist/drivers/hijri.js +9 -102
- package/dist/drivers/hijri.js.map +1 -1
- package/dist/drivers/holocene.d.ts +6 -3
- package/dist/drivers/holocene.js +7 -20
- package/dist/drivers/holocene.js.map +1 -1
- package/dist/drivers/julian.d.ts +3 -10
- package/dist/drivers/julian.js +11 -71
- package/dist/drivers/julian.js.map +1 -1
- package/dist/drivers/persian.d.ts +1 -6
- package/dist/drivers/persian.js +17 -92
- package/dist/drivers/persian.js.map +1 -1
- package/dist/drivers/tps.d.ts +11 -28
- package/dist/drivers/tps.js +8 -58
- package/dist/drivers/tps.js.map +1 -1
- package/dist/drivers/unix.d.ts +5 -6
- package/dist/drivers/unix.js +10 -32
- package/dist/drivers/unix.js.map +1 -1
- package/dist/esm/date.js +170 -0
- package/dist/esm/date.js.map +1 -0
- package/dist/esm/driver-manager.js +49 -0
- package/dist/esm/driver-manager.js.map +1 -0
- package/dist/esm/drivers/chinese.js +481 -0
- package/dist/esm/drivers/chinese.js.map +1 -0
- package/dist/esm/drivers/gregorian.js +160 -0
- package/dist/esm/drivers/gregorian.js.map +1 -0
- package/dist/esm/drivers/hijri.js +184 -0
- package/dist/esm/drivers/hijri.js.map +1 -0
- package/dist/esm/drivers/holocene.js +115 -0
- package/dist/esm/drivers/holocene.js.map +1 -0
- package/dist/esm/drivers/julian.js +161 -0
- package/dist/esm/drivers/julian.js.map +1 -0
- package/dist/esm/drivers/persian.js +190 -0
- package/dist/esm/drivers/persian.js.map +1 -0
- package/dist/esm/drivers/tps.js +181 -0
- package/dist/esm/drivers/tps.js.map +1 -0
- package/dist/esm/drivers/unix.js +50 -0
- package/dist/esm/drivers/unix.js.map +1 -0
- package/dist/esm/index.js +873 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/types.js +28 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/uid.js +221 -0
- package/dist/esm/uid.js.map +1 -0
- package/dist/esm/utils/calendar.js +126 -0
- package/dist/esm/utils/calendar.js.map +1 -0
- package/dist/esm/utils/env.js +76 -0
- package/dist/esm/utils/env.js.map +1 -0
- package/dist/esm/utils/timezone.js +168 -0
- package/dist/esm/utils/timezone.js.map +1 -0
- package/dist/esm/utils/tps-string.js +160 -0
- package/dist/esm/utils/tps-string.js.map +1 -0
- package/dist/index.d.ts +84 -466
- package/dist/index.js +430 -1095
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +103 -0
- package/dist/types.js +31 -0
- package/dist/types.js.map +1 -0
- package/dist/uid.d.ts +48 -0
- package/dist/uid.js +225 -0
- package/dist/uid.js.map +1 -0
- package/dist/utils/calendar.d.ts +55 -0
- package/dist/utils/calendar.js +136 -0
- package/dist/utils/calendar.js.map +1 -0
- package/dist/utils/env.d.ts +12 -0
- package/dist/utils/env.js +79 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/timezone.d.ts +32 -0
- package/dist/utils/timezone.js +173 -0
- package/dist/utils/timezone.js.map +1 -0
- package/dist/utils/tps-string.d.ts +12 -0
- package/dist/utils/tps-string.js +164 -0
- package/dist/utils/tps-string.js.map +1 -0
- package/package.json +20 -5
- package/src/date.ts +243 -0
- package/src/driver-manager.ts +54 -0
- package/src/drivers/chinese.ts +542 -0
- package/src/drivers/gregorian.ts +29 -27
- package/src/drivers/hijri.ts +13 -113
- package/src/drivers/holocene.ts +11 -12
- package/src/drivers/julian.ts +18 -72
- package/src/drivers/persian.ts +25 -92
- package/src/drivers/tps.ts +16 -55
- package/src/drivers/unix.ts +12 -33
- package/src/index.ts +384 -1556
- package/src/types.ts +131 -0
- package/src/uid.ts +308 -0
- package/src/utils/calendar.ts +161 -0
- package/src/utils/env.ts +88 -0
- package/src/utils/timezone.ts +182 -0
- package/src/utils/tps-string.ts +166 -0
package/dist/drivers/hijri.d.ts
CHANGED
|
@@ -10,15 +10,13 @@
|
|
|
10
10
|
* This uses the Tabular Islamic Calendar (civil/Type II-A) algorithm
|
|
11
11
|
* based on the formulas from Meeus "Astronomical Algorithms".
|
|
12
12
|
*/
|
|
13
|
-
import { CalendarDriver, CalendarMetadata, TPSComponents } from "../
|
|
13
|
+
import { CalendarDriver, CalendarMetadata, TPSComponents } from "../types";
|
|
14
14
|
export declare class HijriDriver implements CalendarDriver {
|
|
15
15
|
readonly code = "hij";
|
|
16
16
|
readonly name = "Hijri (Islamic Calendar)";
|
|
17
17
|
private readonly MONTH_NAMES;
|
|
18
18
|
private readonly MONTH_NAMES_SHORT;
|
|
19
19
|
private readonly DAY_NAMES;
|
|
20
|
-
/** Leap years in a 30-year cycle (civil / Type II-A pattern) */
|
|
21
|
-
private readonly LEAP_YEARS_IN_CYCLE;
|
|
22
20
|
getComponentsFromDate(date: Date): Partial<TPSComponents>;
|
|
23
21
|
getDateFromComponents(components: Partial<TPSComponents>): Date;
|
|
24
22
|
getFromDate(date: Date): string;
|
|
@@ -26,17 +24,4 @@ export declare class HijriDriver implements CalendarDriver {
|
|
|
26
24
|
format(components: Partial<TPSComponents>, format?: string): string;
|
|
27
25
|
validate(input: string | Partial<TPSComponents>): boolean;
|
|
28
26
|
getMetadata(): CalendarMetadata;
|
|
29
|
-
private isLeapYear;
|
|
30
|
-
private daysInMonth;
|
|
31
|
-
/**
|
|
32
|
-
* Convert Gregorian to Hijri (Tabular Islamic Calendar).
|
|
33
|
-
* Algorithm from "Astronomical Algorithms" by Jean Meeus.
|
|
34
|
-
*/
|
|
35
|
-
private gregorianToHijri;
|
|
36
|
-
/**
|
|
37
|
-
* Convert Hijri to Gregorian.
|
|
38
|
-
*/
|
|
39
|
-
private hijriToGregorian;
|
|
40
|
-
private gregorianToJdn;
|
|
41
|
-
private jdnToGregorian;
|
|
42
27
|
}
|
package/dist/drivers/hijri.js
CHANGED
|
@@ -1,19 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HijriDriver = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*
|
|
7
|
-
* Calendar characteristics:
|
|
8
|
-
* - Lunar calendar with 12 months of alternating 30/29 days
|
|
9
|
-
* - 30-year cycle with 11 leap years (Dhul Hijjah gains a day)
|
|
10
|
-
* - Year 1 AH ≈ 16 July 622 CE (Julian)
|
|
11
|
-
* - Average year ≈ 354.36667 days
|
|
12
|
-
*
|
|
13
|
-
* This uses the Tabular Islamic Calendar (civil/Type II-A) algorithm
|
|
14
|
-
* based on the formulas from Meeus "Astronomical Algorithms".
|
|
15
|
-
*/
|
|
16
|
-
const index_1 = require("../index");
|
|
4
|
+
const tps_string_1 = require("../utils/tps-string");
|
|
5
|
+
const calendar_1 = require("../utils/calendar");
|
|
17
6
|
class HijriDriver {
|
|
18
7
|
constructor() {
|
|
19
8
|
this.code = "hij";
|
|
@@ -55,14 +44,9 @@ class HijriDriver {
|
|
|
55
44
|
"al-Jumu'ah",
|
|
56
45
|
"as-Sabt",
|
|
57
46
|
];
|
|
58
|
-
/** Leap years in a 30-year cycle (civil / Type II-A pattern) */
|
|
59
|
-
this.LEAP_YEARS_IN_CYCLE = new Set([
|
|
60
|
-
2, 5, 7, 10, 13, 16, 18, 21, 24, 26, 29,
|
|
61
|
-
]);
|
|
62
47
|
}
|
|
63
|
-
// ── CalendarDriver interface ──────────────────────────────────────────
|
|
64
48
|
getComponentsFromDate(date) {
|
|
65
|
-
const { hy, hm, hd } =
|
|
49
|
+
const { hy, hm, hd } = (0, calendar_1.gregorianToHijri)(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate());
|
|
66
50
|
return {
|
|
67
51
|
calendar: this.code,
|
|
68
52
|
millennium: Math.floor(hy / 1000) + 1,
|
|
@@ -89,12 +73,12 @@ class HijriDriver {
|
|
|
89
73
|
}
|
|
90
74
|
const hm = components.month ?? 1;
|
|
91
75
|
const hd = components.day ?? 1;
|
|
92
|
-
const { gy, gm, gd } =
|
|
76
|
+
const { gy, gm, gd } = (0, calendar_1.hijriToGregorian)(hy, hm, hd);
|
|
93
77
|
return new Date(Date.UTC(gy, gm - 1, gd, components.hour ?? 0, components.minute ?? 0, Math.floor(components.second ?? 0), components.millisecond ?? 0));
|
|
94
78
|
}
|
|
95
79
|
getFromDate(date) {
|
|
96
80
|
const comp = this.getComponentsFromDate(date);
|
|
97
|
-
return
|
|
81
|
+
return (0, tps_string_1.buildTimePart)(comp);
|
|
98
82
|
}
|
|
99
83
|
parseDate(input, format) {
|
|
100
84
|
const trimmed = input.trim();
|
|
@@ -140,9 +124,8 @@ class HijriDriver {
|
|
|
140
124
|
else {
|
|
141
125
|
fullYear = components.year ?? 0;
|
|
142
126
|
}
|
|
143
|
-
if (format === "short")
|
|
127
|
+
if (format === "short")
|
|
144
128
|
return `${components.day}/${pad(components.month)}/${fullYear}`;
|
|
145
|
-
}
|
|
146
129
|
if (format === "long") {
|
|
147
130
|
const mn = this.MONTH_NAMES[(components.month ?? 1) - 1];
|
|
148
131
|
return `${components.day} ${mn} ${fullYear}`;
|
|
@@ -167,7 +150,6 @@ class HijriDriver {
|
|
|
167
150
|
comp = input;
|
|
168
151
|
}
|
|
169
152
|
const { year, month, day } = comp;
|
|
170
|
-
// Reconstruct full year for leap check
|
|
171
153
|
let fullYear;
|
|
172
154
|
if (comp.millennium !== undefined) {
|
|
173
155
|
fullYear =
|
|
@@ -184,7 +166,9 @@ class HijriDriver {
|
|
|
184
166
|
return false;
|
|
185
167
|
if (!day || day < 1)
|
|
186
168
|
return false;
|
|
187
|
-
|
|
169
|
+
// leap check (cycle of 30 years)
|
|
170
|
+
const isLeap = new Set([2, 5, 7, 10, 13, 16, 18, 21, 24, 26, 29]).has(((fullYear - 1) % 30) + 1);
|
|
171
|
+
const maxDays = month === 12 && isLeap ? 30 : month % 2 === 1 ? 30 : 29;
|
|
188
172
|
return day <= maxDays;
|
|
189
173
|
}
|
|
190
174
|
getMetadata() {
|
|
@@ -199,83 +183,6 @@ class HijriDriver {
|
|
|
199
183
|
epochYear: 1,
|
|
200
184
|
};
|
|
201
185
|
}
|
|
202
|
-
// ── Internal helpers ──────────────────────────────────────────────────
|
|
203
|
-
isLeapYear(year) {
|
|
204
|
-
return this.LEAP_YEARS_IN_CYCLE.has(((year - 1) % 30) + 1);
|
|
205
|
-
}
|
|
206
|
-
daysInMonth(year, month) {
|
|
207
|
-
if (month === 12 && this.isLeapYear(year))
|
|
208
|
-
return 30;
|
|
209
|
-
return month % 2 === 1 ? 30 : 29;
|
|
210
|
-
}
|
|
211
|
-
// ── Gregorian ↔ Hijri (Tabular algorithm from Meeus) ──────────────────
|
|
212
|
-
/**
|
|
213
|
-
* Convert Gregorian to Hijri (Tabular Islamic Calendar).
|
|
214
|
-
* Algorithm from "Astronomical Algorithms" by Jean Meeus.
|
|
215
|
-
*/
|
|
216
|
-
gregorianToHijri(gy, gm, gd) {
|
|
217
|
-
// Step 1: Gregorian → JDN
|
|
218
|
-
const jdn = this.gregorianToJdn(gy, gm, gd);
|
|
219
|
-
// Step 2: JDN → Hijri
|
|
220
|
-
// L = JDN − 1948440 + 10632
|
|
221
|
-
const L = jdn - 1948440 + 10632;
|
|
222
|
-
// N = floor((L − 1) / 10631)
|
|
223
|
-
const N = Math.floor((L - 1) / 10631);
|
|
224
|
-
// L = L − 10631 × N + 354
|
|
225
|
-
const L2 = L - 10631 * N + 354;
|
|
226
|
-
// J = floor((10985 − L2) / 5316) × floor((50×L2) / 17719) + floor(L2 / 5670) × floor((43×L2) / 15238)
|
|
227
|
-
const J = Math.floor((10985 - L2) / 5316) * Math.floor((50 * L2) / 17719) +
|
|
228
|
-
Math.floor(L2 / 5670) * Math.floor((43 * L2) / 15238);
|
|
229
|
-
// L3 = L2 − floor((30 − J) / 15) × floor((17719 × J) / 50) − floor(J / 16) × floor((15238 × J) / 43) + 29
|
|
230
|
-
const L3 = L2 -
|
|
231
|
-
Math.floor((30 - J) / 15) * Math.floor((17719 * J) / 50) -
|
|
232
|
-
Math.floor(J / 16) * Math.floor((15238 * J) / 43) +
|
|
233
|
-
29;
|
|
234
|
-
const hm = Math.floor((24 * L3) / 709);
|
|
235
|
-
const hd = L3 - Math.floor((709 * hm) / 24);
|
|
236
|
-
const hy = 30 * N + J - 30;
|
|
237
|
-
return { hy, hm, hd };
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Convert Hijri to Gregorian.
|
|
241
|
-
*/
|
|
242
|
-
hijriToGregorian(hy, hm, hd) {
|
|
243
|
-
// Hijri → JDN
|
|
244
|
-
const jdn = Math.floor((11 * hy + 3) / 30) +
|
|
245
|
-
354 * hy +
|
|
246
|
-
30 * hm -
|
|
247
|
-
Math.floor((hm - 1) / 2) +
|
|
248
|
-
hd +
|
|
249
|
-
1948440 -
|
|
250
|
-
385;
|
|
251
|
-
// JDN → Gregorian
|
|
252
|
-
return this.jdnToGregorian(jdn);
|
|
253
|
-
}
|
|
254
|
-
// ── JDN helpers ───────────────────────────────────────────────────────
|
|
255
|
-
gregorianToJdn(gy, gm, gd) {
|
|
256
|
-
const a = Math.floor((14 - gm) / 12);
|
|
257
|
-
const y = gy + 4800 - a;
|
|
258
|
-
const m = gm + 12 * a - 3;
|
|
259
|
-
return (gd +
|
|
260
|
-
Math.floor((153 * m + 2) / 5) +
|
|
261
|
-
365 * y +
|
|
262
|
-
Math.floor(y / 4) -
|
|
263
|
-
Math.floor(y / 100) +
|
|
264
|
-
Math.floor(y / 400) -
|
|
265
|
-
32045);
|
|
266
|
-
}
|
|
267
|
-
jdnToGregorian(jdn) {
|
|
268
|
-
const a = jdn + 32044;
|
|
269
|
-
const b = Math.floor((4 * a + 3) / 146097);
|
|
270
|
-
const c = a - Math.floor((146097 * b) / 4);
|
|
271
|
-
const d = Math.floor((4 * c + 3) / 1461);
|
|
272
|
-
const e = c - Math.floor((1461 * d) / 4);
|
|
273
|
-
const m = Math.floor((5 * e + 2) / 153);
|
|
274
|
-
const gd = e - Math.floor((153 * m + 2) / 5) + 1;
|
|
275
|
-
const gm = m + 3 - 12 * Math.floor(m / 10);
|
|
276
|
-
const gy = 100 * b + d - 4800 + Math.floor(m / 10);
|
|
277
|
-
return { gy, gm, gd };
|
|
278
|
-
}
|
|
279
186
|
}
|
|
280
187
|
exports.HijriDriver = HijriDriver;
|
|
281
188
|
//# sourceMappingURL=hijri.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hijri.js","sourceRoot":"","sources":["../../src/drivers/hijri.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"hijri.js","sourceRoot":"","sources":["../../src/drivers/hijri.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,10 @@
|
|
|
9
9
|
*
|
|
10
10
|
* This is a thin wrapper around GregorianDriver with a year offset.
|
|
11
11
|
*/
|
|
12
|
-
import { CalendarDriver, CalendarMetadata, TPSComponents } from "../
|
|
12
|
+
import { CalendarDriver, CalendarMetadata, TPSComponents } from "../types";
|
|
13
|
+
/**
|
|
14
|
+
* Holocene (Human Era) Calendar Driver
|
|
15
|
+
*/
|
|
13
16
|
export declare class HoloceneDriver implements CalendarDriver {
|
|
14
17
|
readonly code = "holo";
|
|
15
18
|
readonly name = "Holocene (Human Era)";
|
|
@@ -18,8 +21,8 @@ export declare class HoloceneDriver implements CalendarDriver {
|
|
|
18
21
|
getComponentsFromDate(date: Date): Partial<TPSComponents>;
|
|
19
22
|
getDateFromComponents(components: Partial<TPSComponents>): Date;
|
|
20
23
|
getFromDate(date: Date): string;
|
|
21
|
-
parseDate(input: string,
|
|
22
|
-
format(components: Partial<TPSComponents>,
|
|
24
|
+
parseDate(input: string, _format?: string): Partial<TPSComponents>;
|
|
25
|
+
format(components: Partial<TPSComponents>, _format?: string): string;
|
|
23
26
|
validate(input: string | Partial<TPSComponents>): boolean;
|
|
24
27
|
getMetadata(): CalendarMetadata;
|
|
25
28
|
}
|
package/dist/drivers/holocene.js
CHANGED
|
@@ -1,19 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HoloceneDriver = void 0;
|
|
4
|
+
const tps_string_1 = require("../utils/tps-string");
|
|
5
|
+
const gregorian_1 = require("./gregorian");
|
|
4
6
|
/**
|
|
5
7
|
* Holocene (Human Era) Calendar Driver
|
|
6
|
-
*
|
|
7
|
-
* Calendar characteristics:
|
|
8
|
-
* - Adds 10,000 to the Gregorian year (year 1 CE = 10,001 HE)
|
|
9
|
-
* - Same months, days, and leap year rules as Gregorian
|
|
10
|
-
* - Proposed by Cesare Emiliani in 1993 to encompass all of human history
|
|
11
|
-
* - Also called Human Era (HE) calendar
|
|
12
|
-
*
|
|
13
|
-
* This is a thin wrapper around GregorianDriver with a year offset.
|
|
14
8
|
*/
|
|
15
|
-
const index_1 = require("../index");
|
|
16
|
-
const gregorian_1 = require("./gregorian");
|
|
17
9
|
class HoloceneDriver {
|
|
18
10
|
constructor() {
|
|
19
11
|
this.code = "holo";
|
|
@@ -21,7 +13,6 @@ class HoloceneDriver {
|
|
|
21
13
|
this.gregorian = new gregorian_1.GregorianDriver();
|
|
22
14
|
this.YEAR_OFFSET = 10000;
|
|
23
15
|
}
|
|
24
|
-
// ── CalendarDriver interface ──────────────────────────────────────────
|
|
25
16
|
getComponentsFromDate(date) {
|
|
26
17
|
const greg = this.gregorian.getComponentsFromDate(date);
|
|
27
18
|
const fullYear = date.getUTCFullYear() + this.YEAR_OFFSET;
|
|
@@ -44,16 +35,14 @@ class HoloceneDriver {
|
|
|
44
35
|
}
|
|
45
36
|
getFromDate(date) {
|
|
46
37
|
const comp = this.getComponentsFromDate(date);
|
|
47
|
-
return
|
|
38
|
+
return (0, tps_string_1.buildTimePart)(comp);
|
|
48
39
|
}
|
|
49
|
-
parseDate(input,
|
|
50
|
-
// Accept ISO-like: "12026-01-09" (Holocene year)
|
|
40
|
+
parseDate(input, _format) {
|
|
51
41
|
const m = input
|
|
52
42
|
.trim()
|
|
53
43
|
.match(/^(\d{4,5})-(\d{2})-(\d{2})(?:[ T](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?)?$/);
|
|
54
|
-
if (!m)
|
|
44
|
+
if (!m)
|
|
55
45
|
throw new Error(`HoloceneDriver.parseDate: unsupported format "${input}"`);
|
|
56
|
-
}
|
|
57
46
|
const result = {
|
|
58
47
|
calendar: this.code,
|
|
59
48
|
year: parseInt(m[1], 10),
|
|
@@ -70,9 +59,8 @@ class HoloceneDriver {
|
|
|
70
59
|
result.millisecond = parseInt((m[7] + "000").slice(0, 3), 10);
|
|
71
60
|
return result;
|
|
72
61
|
}
|
|
73
|
-
format(components,
|
|
62
|
+
format(components, _format) {
|
|
74
63
|
const pad = (n, w = 2) => String(n ?? 0).padStart(w, "0");
|
|
75
|
-
// Reconstruct full Holocene year from components
|
|
76
64
|
let holoYear;
|
|
77
65
|
if (components.millennium !== undefined) {
|
|
78
66
|
const m = components.millennium ?? 0;
|
|
@@ -96,7 +84,6 @@ class HoloceneDriver {
|
|
|
96
84
|
return /^\d{4,5}-\d{2}-\d{2}(?:[ T]\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?)?$/.test(input.trim());
|
|
97
85
|
}
|
|
98
86
|
if (typeof input === "object") {
|
|
99
|
-
// Delegate day/month validation to Gregorian (same structure)
|
|
100
87
|
return this.gregorian.validate({
|
|
101
88
|
year: input.year,
|
|
102
89
|
month: input.month,
|
|
@@ -124,7 +111,7 @@ class HoloceneDriver {
|
|
|
124
111
|
],
|
|
125
112
|
isLunar: false,
|
|
126
113
|
monthsPerYear: 12,
|
|
127
|
-
epochYear: -10000,
|
|
114
|
+
epochYear: -10000,
|
|
128
115
|
};
|
|
129
116
|
}
|
|
130
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"holocene.js","sourceRoot":"","sources":["../../src/drivers/holocene.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"holocene.js","sourceRoot":"","sources":["../../src/drivers/holocene.ts"],"names":[],"mappings":"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"}
|
package/dist/drivers/julian.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Conversion uses Julian Day Number algorithms.
|
|
11
11
|
*/
|
|
12
|
-
import { CalendarDriver, CalendarMetadata, TPSComponents } from "../
|
|
12
|
+
import { CalendarDriver, CalendarMetadata, TPSComponents } from "../types";
|
|
13
13
|
export declare class JulianDriver implements CalendarDriver {
|
|
14
14
|
readonly code = "jul";
|
|
15
15
|
readonly name = "Julian Calendar";
|
|
@@ -19,15 +19,8 @@ export declare class JulianDriver implements CalendarDriver {
|
|
|
19
19
|
getComponentsFromDate(date: Date): Partial<TPSComponents>;
|
|
20
20
|
getDateFromComponents(components: Partial<TPSComponents>): Date;
|
|
21
21
|
getFromDate(date: Date): string;
|
|
22
|
-
parseDate(input: string,
|
|
23
|
-
format(components: Partial<TPSComponents>,
|
|
22
|
+
parseDate(input: string, _format?: string): Partial<TPSComponents>;
|
|
23
|
+
format(components: Partial<TPSComponents>, _format?: string): string;
|
|
24
24
|
validate(input: string | Partial<TPSComponents>): boolean;
|
|
25
25
|
getMetadata(): CalendarMetadata;
|
|
26
|
-
/** Julian leap year: every 4 years, no century exception */
|
|
27
|
-
private isLeapYear;
|
|
28
|
-
private julianToJdn;
|
|
29
|
-
private jdnToJulian;
|
|
30
|
-
/** Gregorian → JDN (for converting incoming Gregorian Date) */
|
|
31
|
-
private gregorianToJdn;
|
|
32
|
-
private jdnToGregorian;
|
|
33
26
|
}
|
package/dist/drivers/julian.js
CHANGED
|
@@ -1,18 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.JulianDriver = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*
|
|
7
|
-
* Calendar characteristics:
|
|
8
|
-
* - Predecessor to the Gregorian calendar, used until 1582 CE (and later in some regions)
|
|
9
|
-
* - Identical month structure to Gregorian (12 months, same lengths)
|
|
10
|
-
* - Leap year rule: every 4 years (no century exception)
|
|
11
|
-
* - Diverges from Gregorian by ~1 day every 128 years
|
|
12
|
-
*
|
|
13
|
-
* Conversion uses Julian Day Number algorithms.
|
|
14
|
-
*/
|
|
15
|
-
const index_1 = require("../index");
|
|
4
|
+
const tps_string_1 = require("../utils/tps-string");
|
|
5
|
+
const calendar_1 = require("../utils/calendar");
|
|
16
6
|
class JulianDriver {
|
|
17
7
|
constructor() {
|
|
18
8
|
this.code = "jul";
|
|
@@ -49,10 +39,9 @@ class JulianDriver {
|
|
|
49
39
|
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,
|
|
50
40
|
];
|
|
51
41
|
}
|
|
52
|
-
// ── CalendarDriver interface ──────────────────────────────────────────
|
|
53
42
|
getComponentsFromDate(date) {
|
|
54
|
-
const jdn =
|
|
55
|
-
const { jy, jm, jd } =
|
|
43
|
+
const jdn = (0, calendar_1.gregorianToJdn)(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate());
|
|
44
|
+
const { jy, jm, jd } = (0, calendar_1.jdnToJulian)(jdn);
|
|
56
45
|
return {
|
|
57
46
|
calendar: this.code,
|
|
58
47
|
millennium: Math.floor(jy / 1000) + 1,
|
|
@@ -79,20 +68,19 @@ class JulianDriver {
|
|
|
79
68
|
}
|
|
80
69
|
const jm = components.month ?? 1;
|
|
81
70
|
const jd = components.day ?? 1;
|
|
82
|
-
const jdn =
|
|
83
|
-
const { gy, gm, gd } =
|
|
71
|
+
const jdn = (0, calendar_1.julianToJdn)(fullYear, jm, jd);
|
|
72
|
+
const { gy, gm, gd } = (0, calendar_1.jdnToGregorian)(jdn);
|
|
84
73
|
return new Date(Date.UTC(gy, gm - 1, gd, components.hour ?? 0, components.minute ?? 0, Math.floor(components.second ?? 0), components.millisecond ?? 0));
|
|
85
74
|
}
|
|
86
75
|
getFromDate(date) {
|
|
87
76
|
const comp = this.getComponentsFromDate(date);
|
|
88
|
-
return
|
|
77
|
+
return (0, tps_string_1.buildTimePart)(comp);
|
|
89
78
|
}
|
|
90
|
-
parseDate(input,
|
|
79
|
+
parseDate(input, _format) {
|
|
91
80
|
const trimmed = input.trim();
|
|
92
81
|
const m = trimmed.match(/^(\d{4})-(\d{2})-(\d{2})(?:[ T](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?)?$/);
|
|
93
|
-
if (!m)
|
|
82
|
+
if (!m)
|
|
94
83
|
throw new Error(`JulianDriver.parseDate: unsupported format "${input}"`);
|
|
95
|
-
}
|
|
96
84
|
const fullYear = parseInt(m[1], 10);
|
|
97
85
|
const result = {
|
|
98
86
|
calendar: this.code,
|
|
@@ -112,7 +100,7 @@ class JulianDriver {
|
|
|
112
100
|
result.millisecond = parseInt((m[7] + "000").slice(0, 3), 10);
|
|
113
101
|
return result;
|
|
114
102
|
}
|
|
115
|
-
format(components,
|
|
103
|
+
format(components, _format) {
|
|
116
104
|
const pad = (n, w = 2) => String(n ?? 0).padStart(w, "0");
|
|
117
105
|
let fullYear;
|
|
118
106
|
if (components.millennium !== undefined) {
|
|
@@ -140,7 +128,6 @@ class JulianDriver {
|
|
|
140
128
|
return /^\d{4}-\d{2}-\d{2}(?:[ T]\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?)?$/.test(input.trim());
|
|
141
129
|
}
|
|
142
130
|
if (typeof input === "object") {
|
|
143
|
-
// Reconstruct full year for leap check
|
|
144
131
|
let fullYear;
|
|
145
132
|
if (input.millennium !== undefined) {
|
|
146
133
|
fullYear =
|
|
@@ -157,7 +144,7 @@ class JulianDriver {
|
|
|
157
144
|
if (month < 1 || month > 12 || day < 1)
|
|
158
145
|
return false;
|
|
159
146
|
let maxDay = this.DAYS_IN_MONTH[month - 1];
|
|
160
|
-
if (month === 2 &&
|
|
147
|
+
if (month === 2 && fullYear % 4 === 0)
|
|
161
148
|
maxDay = 29;
|
|
162
149
|
return day <= maxDay;
|
|
163
150
|
}
|
|
@@ -173,53 +160,6 @@ class JulianDriver {
|
|
|
173
160
|
epochYear: 1,
|
|
174
161
|
};
|
|
175
162
|
}
|
|
176
|
-
// ── Internal helpers ──────────────────────────────────────────────────
|
|
177
|
-
/** Julian leap year: every 4 years, no century exception */
|
|
178
|
-
isLeapYear(year) {
|
|
179
|
-
return year % 4 === 0;
|
|
180
|
-
}
|
|
181
|
-
// ── JDN algorithms ────────────────────────────────────────────────────
|
|
182
|
-
julianToJdn(jy, jm, jd) {
|
|
183
|
-
const a = Math.floor((14 - jm) / 12);
|
|
184
|
-
const y = jy + 4800 - a;
|
|
185
|
-
const m = jm + 12 * a - 3;
|
|
186
|
-
return (jd + Math.floor((153 * m + 2) / 5) + 365 * y + Math.floor(y / 4) - 32083);
|
|
187
|
-
}
|
|
188
|
-
jdnToJulian(jdn) {
|
|
189
|
-
const c = jdn + 32082;
|
|
190
|
-
const d = Math.floor((4 * c + 3) / 1461);
|
|
191
|
-
const e = c - Math.floor((1461 * d) / 4);
|
|
192
|
-
const m = Math.floor((5 * e + 2) / 153);
|
|
193
|
-
const jd = e - Math.floor((153 * m + 2) / 5) + 1;
|
|
194
|
-
const jm = m + 3 - 12 * Math.floor(m / 10);
|
|
195
|
-
const jy = d - 4800 + Math.floor(m / 10);
|
|
196
|
-
return { jy, jm, jd };
|
|
197
|
-
}
|
|
198
|
-
/** Gregorian → JDN (for converting incoming Gregorian Date) */
|
|
199
|
-
gregorianToJdn(gy, gm, gd) {
|
|
200
|
-
const a = Math.floor((14 - gm) / 12);
|
|
201
|
-
const y = gy + 4800 - a;
|
|
202
|
-
const m = gm + 12 * a - 3;
|
|
203
|
-
return (gd +
|
|
204
|
-
Math.floor((153 * m + 2) / 5) +
|
|
205
|
-
365 * y +
|
|
206
|
-
Math.floor(y / 4) -
|
|
207
|
-
Math.floor(y / 100) +
|
|
208
|
-
Math.floor(y / 400) -
|
|
209
|
-
32045);
|
|
210
|
-
}
|
|
211
|
-
jdnToGregorian(jdn) {
|
|
212
|
-
const a = jdn + 32044;
|
|
213
|
-
const b = Math.floor((4 * a + 3) / 146097);
|
|
214
|
-
const c = a - Math.floor((146097 * b) / 4);
|
|
215
|
-
const d = Math.floor((4 * c + 3) / 1461);
|
|
216
|
-
const e = c - Math.floor((1461 * d) / 4);
|
|
217
|
-
const m = Math.floor((5 * e + 2) / 153);
|
|
218
|
-
const gd = e - Math.floor((153 * m + 2) / 5) + 1;
|
|
219
|
-
const gm = m + 3 - 12 * Math.floor(m / 10);
|
|
220
|
-
const gy = 100 * b + d - 4800 + Math.floor(m / 10);
|
|
221
|
-
return { gy, gm, gd };
|
|
222
|
-
}
|
|
223
163
|
}
|
|
224
164
|
exports.JulianDriver = JulianDriver;
|
|
225
165
|
//# sourceMappingURL=julian.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"julian.js","sourceRoot":"","sources":["../../src/drivers/julian.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"julian.js","sourceRoot":"","sources":["../../src/drivers/julian.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Conversion uses Julian Day Number algorithms based on jalaali-js.
|
|
11
11
|
*/
|
|
12
|
-
import { CalendarDriver, CalendarMetadata, TPSComponents } from "../
|
|
12
|
+
import { CalendarDriver, CalendarMetadata, TPSComponents } from "../types";
|
|
13
13
|
export declare class PersianDriver implements CalendarDriver {
|
|
14
14
|
readonly code = "per";
|
|
15
15
|
readonly name = "Persian (Jalali/Solar Hijri)";
|
|
@@ -25,9 +25,4 @@ export declare class PersianDriver implements CalendarDriver {
|
|
|
25
25
|
format(components: Partial<TPSComponents>, format?: string): string;
|
|
26
26
|
validate(input: string | Partial<TPSComponents>): boolean;
|
|
27
27
|
getMetadata(): CalendarMetadata;
|
|
28
|
-
private isLeapYear;
|
|
29
|
-
private gregorianToJdn;
|
|
30
|
-
private jdnToGregorian;
|
|
31
|
-
private persianToJdn;
|
|
32
|
-
private jdnToPersian;
|
|
33
28
|
}
|