@nextera.one/tps-standard 0.5.33 → 0.5.34
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/date.d.ts +54 -0
- package/dist/date.js +174 -0
- package/dist/date.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/index.d.ts +6 -477
- package/dist/index.js +33 -978
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +85 -0
- package/dist/types.js +30 -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/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 +1 -1
- package/src/date.ts +243 -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 +18 -1446
- package/src/types.ts +107 -0
- package/src/uid.ts +308 -0
- package/src/utils/calendar.ts +161 -0
- package/src/utils/env.ts +88 -0
- package/src/utils/tps-string.ts +166 -0
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
|
}
|
package/dist/drivers/persian.js
CHANGED
|
@@ -1,18 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PersianDriver = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*
|
|
7
|
-
* Calendar characteristics:
|
|
8
|
-
* - Solar calendar used in Iran and Afghanistan
|
|
9
|
-
* - Year 1 started in 622 CE (same epoch as Islamic Hijri, but solar-based)
|
|
10
|
-
* - 6 months of 31 days, 5 months of 30 days, 1 month of 29 (30 in leap)
|
|
11
|
-
* - Current year ≈ Gregorian year − 621
|
|
12
|
-
*
|
|
13
|
-
* Conversion uses Julian Day Number algorithms based on jalaali-js.
|
|
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 PersianDriver {
|
|
17
7
|
constructor() {
|
|
18
8
|
this.code = "per";
|
|
@@ -59,10 +49,9 @@ class PersianDriver {
|
|
|
59
49
|
31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29,
|
|
60
50
|
];
|
|
61
51
|
}
|
|
62
|
-
// ── CalendarDriver interface ──────────────────────────────────────────
|
|
63
52
|
getComponentsFromDate(date) {
|
|
64
|
-
const jdn =
|
|
65
|
-
const { jy, jm, jd } =
|
|
53
|
+
const jdn = (0, calendar_1.gregorianToJdn)(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate());
|
|
54
|
+
const { jy, jm, jd } = (0, calendar_1.jdnToPersian)(jdn);
|
|
66
55
|
return {
|
|
67
56
|
calendar: this.code,
|
|
68
57
|
millennium: Math.floor(jy / 1000) + 1,
|
|
@@ -77,7 +66,6 @@ class PersianDriver {
|
|
|
77
66
|
};
|
|
78
67
|
}
|
|
79
68
|
getDateFromComponents(components) {
|
|
80
|
-
// Reconstruct full Persian year from millennium/century/year if available
|
|
81
69
|
let jy;
|
|
82
70
|
if (components.millennium !== undefined) {
|
|
83
71
|
const m = components.millennium ?? 0;
|
|
@@ -90,17 +78,16 @@ class PersianDriver {
|
|
|
90
78
|
}
|
|
91
79
|
const jm = components.month ?? 1;
|
|
92
80
|
const jd = components.day ?? 1;
|
|
93
|
-
const jdn =
|
|
94
|
-
const { gy, gm, gd } =
|
|
81
|
+
const jdn = (0, calendar_1.persianToJdn)(jy, jm, jd);
|
|
82
|
+
const { gy, gm, gd } = (0, calendar_1.jdnToGregorian)(jdn);
|
|
95
83
|
return new Date(Date.UTC(gy, gm - 1, gd, components.hour ?? 0, components.minute ?? 0, Math.floor(components.second ?? 0), components.millisecond ?? 0));
|
|
96
84
|
}
|
|
97
85
|
getFromDate(date) {
|
|
98
86
|
const comp = this.getComponentsFromDate(date);
|
|
99
|
-
return
|
|
87
|
+
return (0, tps_string_1.buildTimePart)(comp);
|
|
100
88
|
}
|
|
101
89
|
parseDate(input, format) {
|
|
102
90
|
const trimmed = input.trim();
|
|
103
|
-
// Short format: 19/10/1404 or 1404/10/19
|
|
104
91
|
if (format === "short" ||
|
|
105
92
|
(trimmed.includes("/") && trimmed.split("/")[0].length <= 2)) {
|
|
106
93
|
const parts = trimmed.split("/").map(Number);
|
|
@@ -120,7 +107,6 @@ class PersianDriver {
|
|
|
120
107
|
day,
|
|
121
108
|
};
|
|
122
109
|
}
|
|
123
|
-
// ISO-like: 1404-10-19 [HH:MM:SS]
|
|
124
110
|
const segments = trimmed.split(/[\s,T]+/);
|
|
125
111
|
const [parsedYear, month, day] = segments[0].split(/[-/]/).map(Number);
|
|
126
112
|
const result = { calendar: this.code };
|
|
@@ -140,7 +126,6 @@ class PersianDriver {
|
|
|
140
126
|
}
|
|
141
127
|
format(components, format) {
|
|
142
128
|
const pad = (n) => String(n ?? 0).padStart(2, "0");
|
|
143
|
-
// Reconstruct full year from millennium/century/year
|
|
144
129
|
let fullYear;
|
|
145
130
|
if (components.millennium !== undefined) {
|
|
146
131
|
const m = components.millennium ?? 0;
|
|
@@ -151,9 +136,8 @@ class PersianDriver {
|
|
|
151
136
|
else {
|
|
152
137
|
fullYear = components.year ?? 0;
|
|
153
138
|
}
|
|
154
|
-
if (format === "short")
|
|
139
|
+
if (format === "short")
|
|
155
140
|
return `${components.day}/${pad(components.month)}/${fullYear}`;
|
|
156
|
-
}
|
|
157
141
|
if (format === "long") {
|
|
158
142
|
const mn = this.MONTH_NAMES[(components.month ?? 1) - 1];
|
|
159
143
|
return `${components.day} ${mn} ${fullYear}`;
|
|
@@ -178,14 +162,18 @@ class PersianDriver {
|
|
|
178
162
|
comp = input;
|
|
179
163
|
}
|
|
180
164
|
const { year, month, day } = comp;
|
|
181
|
-
if (
|
|
165
|
+
if (year === undefined || year < 1)
|
|
182
166
|
return false;
|
|
183
|
-
if (
|
|
167
|
+
if (month === undefined || month < 1 || month > 12)
|
|
184
168
|
return false;
|
|
185
|
-
if (
|
|
169
|
+
if (day === undefined || day < 1)
|
|
186
170
|
return false;
|
|
187
|
-
|
|
188
|
-
|
|
171
|
+
// leap check
|
|
172
|
+
const leapYears = [1, 5, 9, 13, 17, 22, 26, 30];
|
|
173
|
+
const cycle = ((year - 1) % 33) + 1;
|
|
174
|
+
const isLeap = leapYears.includes(cycle);
|
|
175
|
+
let max = this.DAYS_IN_MONTH[month - 1];
|
|
176
|
+
if (month === 12 && isLeap)
|
|
189
177
|
max = 30;
|
|
190
178
|
return day <= max;
|
|
191
179
|
}
|
|
@@ -201,69 +189,6 @@ class PersianDriver {
|
|
|
201
189
|
epochYear: 622,
|
|
202
190
|
};
|
|
203
191
|
}
|
|
204
|
-
// ── Internal: leap year (33-year cycle) ───────────────────────────────
|
|
205
|
-
isLeapYear(year) {
|
|
206
|
-
const leapYears = [1, 5, 9, 13, 17, 22, 26, 30];
|
|
207
|
-
const cycle = ((year - 1) % 33) + 1;
|
|
208
|
-
return leapYears.includes(cycle);
|
|
209
|
-
}
|
|
210
|
-
// ── Internal: Julian Day Number algorithms ────────────────────────────
|
|
211
|
-
gregorianToJdn(gy, gm, gd) {
|
|
212
|
-
const a = Math.floor((14 - gm) / 12);
|
|
213
|
-
const y = gy + 4800 - a;
|
|
214
|
-
const m = gm + 12 * a - 3;
|
|
215
|
-
return (gd +
|
|
216
|
-
Math.floor((153 * m + 2) / 5) +
|
|
217
|
-
365 * y +
|
|
218
|
-
Math.floor(y / 4) -
|
|
219
|
-
Math.floor(y / 100) +
|
|
220
|
-
Math.floor(y / 400) -
|
|
221
|
-
32045);
|
|
222
|
-
}
|
|
223
|
-
jdnToGregorian(jdn) {
|
|
224
|
-
const a = jdn + 32044;
|
|
225
|
-
const b = Math.floor((4 * a + 3) / 146097);
|
|
226
|
-
const c = a - Math.floor((146097 * b) / 4);
|
|
227
|
-
const d = Math.floor((4 * c + 3) / 1461);
|
|
228
|
-
const e = c - Math.floor((1461 * d) / 4);
|
|
229
|
-
const m = Math.floor((5 * e + 2) / 153);
|
|
230
|
-
const gd = e - Math.floor((153 * m + 2) / 5) + 1;
|
|
231
|
-
const gm = m + 3 - 12 * Math.floor(m / 10);
|
|
232
|
-
const gy = 100 * b + d - 4800 + Math.floor(m / 10);
|
|
233
|
-
return { gy, gm, gd };
|
|
234
|
-
}
|
|
235
|
-
persianToJdn(jy, jm, jd) {
|
|
236
|
-
const EPOCH = 1948320;
|
|
237
|
-
const epbase = jy - (jy >= 0 ? 474 : 473);
|
|
238
|
-
const epyear = 474 + (epbase % 2820);
|
|
239
|
-
return (jd +
|
|
240
|
-
(jm <= 7 ? (jm - 1) * 31 : (jm - 1) * 30 + 6) +
|
|
241
|
-
Math.floor((epyear * 682 - 110) / 2816) +
|
|
242
|
-
(epyear - 1) * 365 +
|
|
243
|
-
Math.floor(epbase / 2820) * 1029983 +
|
|
244
|
-
EPOCH -
|
|
245
|
-
1);
|
|
246
|
-
}
|
|
247
|
-
jdnToPersian(jdn) {
|
|
248
|
-
const depoch = jdn - this.persianToJdn(475, 1, 1);
|
|
249
|
-
const cycle = Math.floor(depoch / 1029983);
|
|
250
|
-
const cyear = depoch % 1029983;
|
|
251
|
-
let ycycle;
|
|
252
|
-
if (cyear === 1029982) {
|
|
253
|
-
ycycle = 2820;
|
|
254
|
-
}
|
|
255
|
-
else {
|
|
256
|
-
const aux1 = Math.floor(cyear / 366);
|
|
257
|
-
const aux2 = cyear % 366;
|
|
258
|
-
ycycle =
|
|
259
|
-
Math.floor((2134 * aux1 + 2816 * aux2 + 2815) / 1028522) + aux1 + 1;
|
|
260
|
-
}
|
|
261
|
-
const jy = ycycle + 2820 * cycle + 474;
|
|
262
|
-
const yday = jdn - this.persianToJdn(jy, 1, 1) + 1;
|
|
263
|
-
const jm = yday <= 186 ? Math.ceil(yday / 31) : Math.ceil((yday - 6) / 30);
|
|
264
|
-
const jd = jdn - this.persianToJdn(jy, jm, 1) + 1;
|
|
265
|
-
return { jy: jy <= 0 ? jy - 1 : jy, jm, jd };
|
|
266
|
-
}
|
|
267
192
|
}
|
|
268
193
|
exports.PersianDriver = PersianDriver;
|
|
269
194
|
//# sourceMappingURL=persian.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persian.js","sourceRoot":"","sources":["../../src/drivers/persian.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"persian.js","sourceRoot":"","sources":["../../src/drivers/persian.ts"],"names":[],"mappings":"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"}
|
package/dist/drivers/tps.d.ts
CHANGED
|
@@ -12,44 +12,27 @@
|
|
|
12
12
|
* 3. Convert day-of-year to TPS month/day (each month = 28 days)
|
|
13
13
|
* 4. Preserve millennium/century/year structure
|
|
14
14
|
*/
|
|
15
|
-
import { CalendarDriver, CalendarMetadata, TPSComponents } from "../
|
|
15
|
+
import { CalendarDriver, CalendarMetadata, TPSComponents } from "../types";
|
|
16
|
+
/**
|
|
17
|
+
* TPS calendar driver for canonical TPS time strings.
|
|
18
|
+
*
|
|
19
|
+
* TPS Calendar characteristics:
|
|
20
|
+
* - Epoch: August 11, 1999 (00:00 UTC)
|
|
21
|
+
* - Months: Always 28 days (12 months per year = 336 days)
|
|
22
|
+
* - Time offset: 7 hours ahead of Gregorian (00:00 Gregorian = 07:00 TPS)
|
|
23
|
+
*/
|
|
16
24
|
export declare class TpsDriver implements CalendarDriver {
|
|
17
25
|
readonly code = "tps";
|
|
18
26
|
readonly name = "TPS Canonical";
|
|
19
|
-
private readonly TPS_EPOCH;
|
|
20
27
|
private readonly TPS_OFFSET_HOURS;
|
|
21
28
|
private readonly TPS_DAYS_PER_MONTH;
|
|
22
29
|
private readonly TPS_MONTHS_PER_YEAR;
|
|
23
30
|
private readonly gregorian;
|
|
24
|
-
/**
|
|
25
|
-
* Converts a Gregorian Date to TPS components.
|
|
26
|
-
* Applies 7-hour offset and converts day-of-year to TPS month/day (28-day months).
|
|
27
|
-
*/
|
|
28
31
|
getComponentsFromDate(date: Date): Partial<TPSComponents>;
|
|
29
|
-
/**
|
|
30
|
-
* Converts TPS components to a Gregorian Date.
|
|
31
|
-
* Converts TPS month/day (28-day months) to day-of-year, then removes 7-hour offset.
|
|
32
|
-
*/
|
|
33
32
|
getDateFromComponents(components: Partial<TPSComponents>): Date;
|
|
34
33
|
getFromDate(date: Date): string;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
* Optional time: "YYYY-MM-DD HH:MM:SS.mmm"
|
|
38
|
-
*/
|
|
39
|
-
parseDate(input: string, format?: string): Partial<TPSComponents>;
|
|
40
|
-
/**
|
|
41
|
-
* Format TPS components to "YYYY-MM-DD" where MM is 01-12, DD is 01-28.
|
|
42
|
-
* With time: "YYYY-MM-DD THH:MM:SS.mmm"
|
|
43
|
-
*/
|
|
44
|
-
format(components: Partial<TPSComponents>, format?: string): string;
|
|
45
|
-
/**
|
|
46
|
-
* Validate TPS date string or components.
|
|
47
|
-
* TPS has months 1-12, each with 28 days.
|
|
48
|
-
*/
|
|
34
|
+
parseDate(input: string, _format?: string): Partial<TPSComponents>;
|
|
35
|
+
format(components: Partial<TPSComponents>, _format?: string): string;
|
|
49
36
|
validate(input: string | Partial<TPSComponents>): boolean;
|
|
50
|
-
/**
|
|
51
|
-
* Get TPS calendar metadata.
|
|
52
|
-
* TPS has 12 months, each with 28 days.
|
|
53
|
-
*/
|
|
54
37
|
getMetadata(): CalendarMetadata;
|
|
55
38
|
}
|