@nextera.one/tps-standard 0.5.2 → 0.5.3

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.
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HoloceneDriver = void 0;
4
+ /**
5
+ * 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
+ */
15
+ const index_1 = require("../index");
16
+ const gregorian_1 = require("./gregorian");
17
+ class HoloceneDriver {
18
+ constructor() {
19
+ this.code = "holo";
20
+ this.name = "Holocene (Human Era)";
21
+ this.gregorian = new gregorian_1.GregorianDriver();
22
+ this.YEAR_OFFSET = 10000;
23
+ }
24
+ // ── CalendarDriver interface ──────────────────────────────────────────
25
+ getComponentsFromDate(date) {
26
+ const greg = this.gregorian.getComponentsFromDate(date);
27
+ const fullYear = date.getUTCFullYear() + this.YEAR_OFFSET;
28
+ return {
29
+ ...greg,
30
+ calendar: this.code,
31
+ millennium: Math.floor(fullYear / 1000) + 1,
32
+ century: Math.floor((fullYear % 1000) / 100) + 1,
33
+ year: fullYear % 100,
34
+ };
35
+ }
36
+ getDateFromComponents(components) {
37
+ const m = components.millennium ?? 0;
38
+ const c = components.century ?? 1;
39
+ const y = components.year ?? 0;
40
+ const holoYear = (m - 1) * 1000 + (c - 1) * 100 + y;
41
+ const gregYear = holoYear - this.YEAR_OFFSET;
42
+ return new Date(Date.UTC(gregYear, (components.month ?? 1) - 1, components.day ?? 1, components.hour ?? 0, components.minute ?? 0, Math.floor(components.second ?? 0), components.millisecond ??
43
+ Math.round(((components.second ?? 0) % 1) * 1000)));
44
+ }
45
+ getFromDate(date) {
46
+ const comp = this.getComponentsFromDate(date);
47
+ return index_1.TPS.buildTimePart(comp);
48
+ }
49
+ parseDate(input, format) {
50
+ // Accept ISO-like: "12026-01-09" (Holocene year)
51
+ const m = input
52
+ .trim()
53
+ .match(/^(\d{4,5})-(\d{2})-(\d{2})(?:[ T](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?)?$/);
54
+ if (!m) {
55
+ throw new Error(`HoloceneDriver.parseDate: unsupported format "${input}"`);
56
+ }
57
+ const result = {
58
+ calendar: this.code,
59
+ year: parseInt(m[1], 10),
60
+ month: parseInt(m[2], 10),
61
+ day: parseInt(m[3], 10),
62
+ };
63
+ if (m[4] !== undefined)
64
+ result.hour = parseInt(m[4], 10);
65
+ if (m[5] !== undefined)
66
+ result.minute = parseInt(m[5], 10);
67
+ if (m[6] !== undefined)
68
+ result.second = parseInt(m[6], 10);
69
+ if (m[7] !== undefined)
70
+ result.millisecond = parseInt((m[7] + "000").slice(0, 3), 10);
71
+ return result;
72
+ }
73
+ format(components, format) {
74
+ const pad = (n, w = 2) => String(n ?? 0).padStart(w, "0");
75
+ // Reconstruct full Holocene year from components
76
+ let holoYear;
77
+ if (components.millennium !== undefined) {
78
+ const m = components.millennium ?? 0;
79
+ const c = components.century ?? 1;
80
+ const y = components.year ?? 0;
81
+ holoYear = (m - 1) * 1000 + (c - 1) * 100 + y;
82
+ }
83
+ else {
84
+ holoYear = components.year ?? 0;
85
+ }
86
+ let out = `${String(holoYear).padStart(5, "0")}-${pad(components.month)}-${pad(components.day)}`;
87
+ if (components.hour !== undefined ||
88
+ components.minute !== undefined ||
89
+ components.second !== undefined) {
90
+ out += `T${pad(components.hour)}:${pad(components.minute)}:${pad(Math.floor(components.second ?? 0))}`;
91
+ }
92
+ return out;
93
+ }
94
+ validate(input) {
95
+ if (typeof input === "string") {
96
+ return /^\d{4,5}-\d{2}-\d{2}(?:[ T]\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?)?$/.test(input.trim());
97
+ }
98
+ if (typeof input === "object") {
99
+ // Delegate day/month validation to Gregorian (same structure)
100
+ return this.gregorian.validate({
101
+ year: input.year,
102
+ month: input.month,
103
+ day: input.day,
104
+ });
105
+ }
106
+ return false;
107
+ }
108
+ getMetadata() {
109
+ return {
110
+ name: "Holocene (Human Era)",
111
+ monthNames: [
112
+ "January",
113
+ "February",
114
+ "March",
115
+ "April",
116
+ "May",
117
+ "June",
118
+ "July",
119
+ "August",
120
+ "September",
121
+ "October",
122
+ "November",
123
+ "December",
124
+ ],
125
+ isLunar: false,
126
+ monthsPerYear: 12,
127
+ epochYear: -10000, // 10001 BCE
128
+ };
129
+ }
130
+ }
131
+ exports.HoloceneDriver = HoloceneDriver;
132
+ //# sourceMappingURL=holocene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"holocene.js","sourceRoot":"","sources":["../../src/drivers/holocene.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Julian Calendar Driver
3
+ *
4
+ * Calendar characteristics:
5
+ * - Predecessor to the Gregorian calendar, used until 1582 CE (and later in some regions)
6
+ * - Identical month structure to Gregorian (12 months, same lengths)
7
+ * - Leap year rule: every 4 years (no century exception)
8
+ * - Diverges from Gregorian by ~1 day every 128 years
9
+ *
10
+ * Conversion uses Julian Day Number algorithms.
11
+ */
12
+ import { CalendarDriver, CalendarMetadata, TPSComponents } from "../index";
13
+ export declare class JulianDriver implements CalendarDriver {
14
+ readonly code = "jul";
15
+ readonly name = "Julian Calendar";
16
+ private readonly MONTH_NAMES;
17
+ private readonly MONTH_NAMES_SHORT;
18
+ private readonly DAYS_IN_MONTH;
19
+ getComponentsFromDate(date: Date): Partial<TPSComponents>;
20
+ getDateFromComponents(components: Partial<TPSComponents>): Date;
21
+ getFromDate(date: Date): string;
22
+ parseDate(input: string, format?: string): Partial<TPSComponents>;
23
+ format(components: Partial<TPSComponents>, format?: string): string;
24
+ validate(input: string | Partial<TPSComponents>): boolean;
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
+ }
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JulianDriver = void 0;
4
+ /**
5
+ * Julian Calendar Driver
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");
16
+ class JulianDriver {
17
+ constructor() {
18
+ this.code = "jul";
19
+ this.name = "Julian Calendar";
20
+ this.MONTH_NAMES = [
21
+ "Januarius",
22
+ "Februarius",
23
+ "Martius",
24
+ "Aprilis",
25
+ "Maius",
26
+ "Junius",
27
+ "Julius",
28
+ "Augustus",
29
+ "September",
30
+ "October",
31
+ "November",
32
+ "December",
33
+ ];
34
+ this.MONTH_NAMES_SHORT = [
35
+ "Jan",
36
+ "Feb",
37
+ "Mar",
38
+ "Apr",
39
+ "May",
40
+ "Jun",
41
+ "Jul",
42
+ "Aug",
43
+ "Sep",
44
+ "Oct",
45
+ "Nov",
46
+ "Dec",
47
+ ];
48
+ this.DAYS_IN_MONTH = [
49
+ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,
50
+ ];
51
+ }
52
+ // ── CalendarDriver interface ──────────────────────────────────────────
53
+ getComponentsFromDate(date) {
54
+ const jdn = this.gregorianToJdn(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate());
55
+ const { jy, jm, jd } = this.jdnToJulian(jdn);
56
+ return {
57
+ calendar: this.code,
58
+ millennium: Math.floor(jy / 1000) + 1,
59
+ century: Math.floor((jy % 1000) / 100) + 1,
60
+ year: jy % 100,
61
+ month: jm,
62
+ day: jd,
63
+ hour: date.getUTCHours(),
64
+ minute: date.getUTCMinutes(),
65
+ second: date.getUTCSeconds(),
66
+ millisecond: date.getUTCMilliseconds(),
67
+ };
68
+ }
69
+ getDateFromComponents(components) {
70
+ let fullYear;
71
+ if (components.millennium !== undefined) {
72
+ const m = components.millennium ?? 0;
73
+ const c = components.century ?? 1;
74
+ const y = components.year ?? 0;
75
+ fullYear = (m - 1) * 1000 + (c - 1) * 100 + y;
76
+ }
77
+ else {
78
+ fullYear = components.year ?? 1;
79
+ }
80
+ const jm = components.month ?? 1;
81
+ const jd = components.day ?? 1;
82
+ const jdn = this.julianToJdn(fullYear, jm, jd);
83
+ const { gy, gm, gd } = this.jdnToGregorian(jdn);
84
+ return new Date(Date.UTC(gy, gm - 1, gd, components.hour ?? 0, components.minute ?? 0, Math.floor(components.second ?? 0), components.millisecond ?? 0));
85
+ }
86
+ getFromDate(date) {
87
+ const comp = this.getComponentsFromDate(date);
88
+ return index_1.TPS.buildTimePart(comp);
89
+ }
90
+ parseDate(input, format) {
91
+ const trimmed = input.trim();
92
+ const m = trimmed.match(/^(\d{4})-(\d{2})-(\d{2})(?:[ T](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?)?$/);
93
+ if (!m) {
94
+ throw new Error(`JulianDriver.parseDate: unsupported format "${input}"`);
95
+ }
96
+ const fullYear = parseInt(m[1], 10);
97
+ const result = {
98
+ calendar: this.code,
99
+ millennium: Math.floor(fullYear / 1000) + 1,
100
+ century: Math.floor((fullYear % 1000) / 100) + 1,
101
+ year: fullYear % 100,
102
+ month: parseInt(m[2], 10),
103
+ day: parseInt(m[3], 10),
104
+ };
105
+ if (m[4] !== undefined)
106
+ result.hour = parseInt(m[4], 10);
107
+ if (m[5] !== undefined)
108
+ result.minute = parseInt(m[5], 10);
109
+ if (m[6] !== undefined)
110
+ result.second = parseInt(m[6], 10);
111
+ if (m[7] !== undefined)
112
+ result.millisecond = parseInt((m[7] + "000").slice(0, 3), 10);
113
+ return result;
114
+ }
115
+ format(components, format) {
116
+ const pad = (n, w = 2) => String(n ?? 0).padStart(w, "0");
117
+ let fullYear;
118
+ if (components.millennium !== undefined) {
119
+ const m = components.millennium ?? 0;
120
+ const c = components.century ?? 1;
121
+ const y = components.year ?? 0;
122
+ fullYear = (m - 1) * 1000 + (c - 1) * 100 + y;
123
+ }
124
+ else {
125
+ fullYear = components.year ?? 0;
126
+ }
127
+ let out = `${pad(fullYear, 4)}-${pad(components.month)}-${pad(components.day)}`;
128
+ if (components.hour !== undefined ||
129
+ components.minute !== undefined ||
130
+ components.second !== undefined ||
131
+ components.millisecond !== undefined) {
132
+ out += `T${pad(components.hour)}:${pad(components.minute)}:${pad(Math.floor(components.second ?? 0))}`;
133
+ if (components.millisecond !== undefined)
134
+ out += `.${pad(components.millisecond, 3)}`;
135
+ }
136
+ return out;
137
+ }
138
+ validate(input) {
139
+ if (typeof input === "string") {
140
+ return /^\d{4}-\d{2}-\d{2}(?:[ T]\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?)?$/.test(input.trim());
141
+ }
142
+ if (typeof input === "object") {
143
+ // Reconstruct full year for leap check
144
+ let fullYear;
145
+ if (input.millennium !== undefined) {
146
+ fullYear =
147
+ ((input.millennium ?? 0) - 1) * 1000 +
148
+ ((input.century ?? 1) - 1) * 100 +
149
+ (input.year ?? 0);
150
+ }
151
+ else {
152
+ fullYear = input.year ?? 0;
153
+ }
154
+ const { month, day } = input;
155
+ if (month === undefined || day === undefined)
156
+ return false;
157
+ if (month < 1 || month > 12 || day < 1)
158
+ return false;
159
+ let maxDay = this.DAYS_IN_MONTH[month - 1];
160
+ if (month === 2 && this.isLeapYear(fullYear))
161
+ maxDay = 29;
162
+ return day <= maxDay;
163
+ }
164
+ return false;
165
+ }
166
+ getMetadata() {
167
+ return {
168
+ name: "Julian Calendar",
169
+ monthNames: this.MONTH_NAMES,
170
+ monthNamesShort: this.MONTH_NAMES_SHORT,
171
+ isLunar: false,
172
+ monthsPerYear: 12,
173
+ epochYear: 1,
174
+ };
175
+ }
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
+ }
224
+ exports.JulianDriver = JulianDriver;
225
+ //# sourceMappingURL=julian.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"julian.js","sourceRoot":"","sources":["../../src/drivers/julian.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Persian (Jalali / Solar Hijri) Calendar Driver
3
+ *
4
+ * Calendar characteristics:
5
+ * - Solar calendar used in Iran and Afghanistan
6
+ * - Year 1 started in 622 CE (same epoch as Islamic Hijri, but solar-based)
7
+ * - 6 months of 31 days, 5 months of 30 days, 1 month of 29 (30 in leap)
8
+ * - Current year ≈ Gregorian year − 621
9
+ *
10
+ * Conversion uses Julian Day Number algorithms based on jalaali-js.
11
+ */
12
+ import { CalendarDriver, CalendarMetadata, TPSComponents } from "../index";
13
+ export declare class PersianDriver implements CalendarDriver {
14
+ readonly code = "per";
15
+ readonly name = "Persian (Jalali/Solar Hijri)";
16
+ private readonly MONTH_NAMES;
17
+ private readonly MONTH_NAMES_SHORT;
18
+ private readonly DAY_NAMES;
19
+ /** Days per month (non-leap): 6×31 + 5×30 + 1×29 = 365 */
20
+ private readonly DAYS_IN_MONTH;
21
+ getComponentsFromDate(date: Date): Partial<TPSComponents>;
22
+ getDateFromComponents(components: Partial<TPSComponents>): Date;
23
+ getFromDate(date: Date): string;
24
+ parseDate(input: string, format?: string): Partial<TPSComponents>;
25
+ format(components: Partial<TPSComponents>, format?: string): string;
26
+ validate(input: string | Partial<TPSComponents>): boolean;
27
+ getMetadata(): CalendarMetadata;
28
+ private isLeapYear;
29
+ private gregorianToJdn;
30
+ private jdnToGregorian;
31
+ private persianToJdn;
32
+ private jdnToPersian;
33
+ }