@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.
@@ -1,4 +1,4 @@
1
- import { CalendarDriver, TPSComponents, CalendarMetadata } from '../index';
1
+ import { CalendarDriver, TPSComponents, CalendarMetadata } from "../index";
2
2
  /**
3
3
  * Gregorian calendar driver.
4
4
  * This mirrors the built-in logic that used to live in `TPS.fromDate`/`toDate`
@@ -11,7 +11,7 @@ const index_1 = require("../index");
11
11
  */
12
12
  class GregorianDriver {
13
13
  constructor() {
14
- this.code = 'greg';
14
+ this.code = "greg";
15
15
  }
16
16
  getComponentsFromDate(date) {
17
17
  const fullYear = date.getUTCFullYear();
@@ -29,11 +29,12 @@ class GregorianDriver {
29
29
  };
30
30
  }
31
31
  getDateFromComponents(components) {
32
- const m = components.millennium || 0;
33
- const c = components.century || 1;
34
- const y = components.year || 0;
32
+ const m = components.millennium ?? 0;
33
+ const c = components.century ?? 1;
34
+ const y = components.year ?? 0;
35
35
  const fullYear = (m - 1) * 1000 + (c - 1) * 100 + y;
36
- return new Date(Date.UTC(fullYear, (components.month || 1) - 1, components.day || 1, components.hour || 0, components.minute || 0, Math.floor(components.second || 0), components.millisecond ?? Math.round(((components.second || 0) % 1) * 1000)));
36
+ return new Date(Date.UTC(fullYear, (components.month || 1) - 1, components.day || 1, components.hour || 0, components.minute || 0, Math.floor(components.second || 0), components.millisecond ??
37
+ Math.round(((components.second || 0) % 1) * 1000)));
37
38
  }
38
39
  getFromDate(date) {
39
40
  const comp = this.getComponentsFromDate(date);
@@ -55,7 +56,7 @@ class GregorianDriver {
55
56
  const hour = m[4] !== undefined ? parseInt(m[4], 10) : undefined;
56
57
  const minute = m[5] !== undefined ? parseInt(m[5], 10) : undefined;
57
58
  const second = m[6] !== undefined ? parseInt(m[6], 10) : undefined;
58
- const millisecond = m[7] !== undefined ? parseInt((m[7] + '000').slice(0, 3), 10) : undefined;
59
+ const millisecond = m[7] !== undefined ? parseInt((m[7] + "000").slice(0, 3), 10) : undefined;
59
60
  const comp = {
60
61
  calendar: this.code,
61
62
  year,
@@ -74,28 +75,42 @@ class GregorianDriver {
74
75
  }
75
76
  format(components, format) {
76
77
  // For simplicity we ignore `format` and always produce ISO-ish string
77
- const y = components.year !== undefined ? String(components.year).padStart(4, '0') : '0000';
78
- const mo = components.month !== undefined ? String(components.month).padStart(2, '0') : '01';
79
- const d = components.day !== undefined ? String(components.day).padStart(2, '0') : '01';
78
+ const y = components.year !== undefined
79
+ ? String(components.year).padStart(4, "0")
80
+ : "0000";
81
+ const mo = components.month !== undefined
82
+ ? String(components.month).padStart(2, "0")
83
+ : "01";
84
+ const d = components.day !== undefined
85
+ ? String(components.day).padStart(2, "0")
86
+ : "01";
80
87
  let out = `${y}-${mo}-${d}`;
81
88
  if (components.hour !== undefined ||
82
89
  components.minute !== undefined ||
83
90
  components.second !== undefined ||
84
91
  components.millisecond !== undefined) {
85
- const h = components.hour !== undefined ? String(components.hour).padStart(2, '0') : '00';
86
- const mi = components.minute !== undefined ? String(components.minute).padStart(2, '0') : '00';
87
- const s = components.second !== undefined ? String(Math.floor(components.second)).padStart(2, '0') : '00';
88
- const ms = components.millisecond !== undefined ? String(components.millisecond).padStart(3, '0') : '000';
92
+ const h = components.hour !== undefined
93
+ ? String(components.hour).padStart(2, "0")
94
+ : "00";
95
+ const mi = components.minute !== undefined
96
+ ? String(components.minute).padStart(2, "0")
97
+ : "00";
98
+ const s = components.second !== undefined
99
+ ? String(Math.floor(components.second)).padStart(2, "0")
100
+ : "00";
101
+ const ms = components.millisecond !== undefined
102
+ ? String(components.millisecond).padStart(3, "0")
103
+ : "000";
89
104
  out += `T${h}:${mi}:${s}.${ms}`;
90
105
  }
91
106
  return out;
92
107
  }
93
108
  validate(input) {
94
- if (typeof input === 'string') {
109
+ if (typeof input === "string") {
95
110
  // basic ISO date with optional time and fractional seconds
96
111
  return /^\d{4}-\d{2}-\d{2}(?:[ T]\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?)?$/.test(input.trim());
97
112
  }
98
- if (typeof input === 'object') {
113
+ if (typeof input === "object") {
99
114
  return (input.year !== undefined &&
100
115
  input.month !== undefined &&
101
116
  input.day !== undefined &&
@@ -109,29 +124,29 @@ class GregorianDriver {
109
124
  }
110
125
  getMetadata() {
111
126
  return {
112
- name: 'Gregorian',
127
+ name: "Gregorian",
113
128
  monthNames: [
114
- 'January',
115
- 'February',
116
- 'March',
117
- 'April',
118
- 'May',
119
- 'June',
120
- 'July',
121
- 'August',
122
- 'September',
123
- 'October',
124
- 'November',
125
- 'December',
129
+ "January",
130
+ "February",
131
+ "March",
132
+ "April",
133
+ "May",
134
+ "June",
135
+ "July",
136
+ "August",
137
+ "September",
138
+ "October",
139
+ "November",
140
+ "December",
126
141
  ],
127
142
  dayNames: [
128
- 'Sunday',
129
- 'Monday',
130
- 'Tuesday',
131
- 'Wednesday',
132
- 'Thursday',
133
- 'Friday',
134
- 'Saturday',
143
+ "Sunday",
144
+ "Monday",
145
+ "Tuesday",
146
+ "Wednesday",
147
+ "Thursday",
148
+ "Friday",
149
+ "Saturday",
135
150
  ],
136
151
  monthsPerYear: 12,
137
152
  epochYear: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"gregorian.js","sourceRoot":"","sources":["../../src/drivers/gregorian.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gregorian.js","sourceRoot":"","sources":["../../src/drivers/gregorian.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Hijri (Islamic) Calendar Driver — Tabular / Arithmetic variant
3
+ *
4
+ * Calendar characteristics:
5
+ * - Lunar calendar with 12 months of alternating 30/29 days
6
+ * - 30-year cycle with 11 leap years (Dhul Hijjah gains a day)
7
+ * - Year 1 AH ≈ 16 July 622 CE (Julian)
8
+ * - Average year ≈ 354.36667 days
9
+ *
10
+ * This uses the Tabular Islamic Calendar (civil/Type II-A) algorithm
11
+ * based on the formulas from Meeus "Astronomical Algorithms".
12
+ */
13
+ import { CalendarDriver, CalendarMetadata, TPSComponents } from "../index";
14
+ export declare class HijriDriver implements CalendarDriver {
15
+ readonly code = "hij";
16
+ readonly name = "Hijri (Islamic Calendar)";
17
+ private readonly MONTH_NAMES;
18
+ private readonly MONTH_NAMES_SHORT;
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
+ getComponentsFromDate(date: Date): Partial<TPSComponents>;
23
+ getDateFromComponents(components: Partial<TPSComponents>): Date;
24
+ getFromDate(date: Date): string;
25
+ parseDate(input: string, format?: string): Partial<TPSComponents>;
26
+ format(components: Partial<TPSComponents>, format?: string): string;
27
+ validate(input: string | Partial<TPSComponents>): boolean;
28
+ 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
+ }
@@ -0,0 +1,281 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HijriDriver = void 0;
4
+ /**
5
+ * Hijri (Islamic) Calendar Driver — Tabular / Arithmetic variant
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");
17
+ class HijriDriver {
18
+ constructor() {
19
+ this.code = "hij";
20
+ this.name = "Hijri (Islamic Calendar)";
21
+ this.MONTH_NAMES = [
22
+ "Muharram",
23
+ "Safar",
24
+ "Rabi' al-Awwal",
25
+ "Rabi' al-Thani",
26
+ "Jumada al-Ula",
27
+ "Jumada al-Thani",
28
+ "Rajab",
29
+ "Sha'ban",
30
+ "Ramadan",
31
+ "Shawwal",
32
+ "Dhu al-Qi'dah",
33
+ "Dhu al-Hijjah",
34
+ ];
35
+ this.MONTH_NAMES_SHORT = [
36
+ "Muh",
37
+ "Saf",
38
+ "Rab I",
39
+ "Rab II",
40
+ "Jum I",
41
+ "Jum II",
42
+ "Raj",
43
+ "Sha",
44
+ "Ram",
45
+ "Shaw",
46
+ "Dhu Q",
47
+ "Dhu H",
48
+ ];
49
+ this.DAY_NAMES = [
50
+ "al-Ahad",
51
+ "al-Ithnayn",
52
+ "ath-Thulatha",
53
+ "al-Arbi'a",
54
+ "al-Khamis",
55
+ "al-Jumu'ah",
56
+ "as-Sabt",
57
+ ];
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
+ }
63
+ // ── CalendarDriver interface ──────────────────────────────────────────
64
+ getComponentsFromDate(date) {
65
+ const { hy, hm, hd } = this.gregorianToHijri(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate());
66
+ return {
67
+ calendar: this.code,
68
+ millennium: Math.floor(hy / 1000) + 1,
69
+ century: Math.floor((hy % 1000) / 100) + 1,
70
+ year: hy % 100,
71
+ month: hm,
72
+ day: hd,
73
+ hour: date.getUTCHours(),
74
+ minute: date.getUTCMinutes(),
75
+ second: date.getUTCSeconds(),
76
+ millisecond: date.getUTCMilliseconds(),
77
+ };
78
+ }
79
+ getDateFromComponents(components) {
80
+ let hy;
81
+ if (components.millennium !== undefined) {
82
+ const m = components.millennium ?? 0;
83
+ const c = components.century ?? 1;
84
+ const y = components.year ?? 0;
85
+ hy = (m - 1) * 1000 + (c - 1) * 100 + y;
86
+ }
87
+ else {
88
+ hy = components.year ?? 1;
89
+ }
90
+ const hm = components.month ?? 1;
91
+ const hd = components.day ?? 1;
92
+ const { gy, gm, gd } = this.hijriToGregorian(hy, hm, hd);
93
+ return new Date(Date.UTC(gy, gm - 1, gd, components.hour ?? 0, components.minute ?? 0, Math.floor(components.second ?? 0), components.millisecond ?? 0));
94
+ }
95
+ getFromDate(date) {
96
+ const comp = this.getComponentsFromDate(date);
97
+ return index_1.TPS.buildTimePart(comp);
98
+ }
99
+ parseDate(input, format) {
100
+ const trimmed = input.trim();
101
+ if (format === "short" ||
102
+ (trimmed.includes("/") && trimmed.split("/")[0].length <= 2)) {
103
+ const [day, month, year] = trimmed.split("/").map(Number);
104
+ return {
105
+ calendar: this.code,
106
+ millennium: Math.floor(year / 1000) + 1,
107
+ century: Math.floor((year % 1000) / 100) + 1,
108
+ year: year % 100,
109
+ month,
110
+ day,
111
+ };
112
+ }
113
+ const segments = trimmed.split(/[\s,T]+/);
114
+ const [fullYear, month, day] = segments[0].split("-").map(Number);
115
+ const result = {
116
+ calendar: this.code,
117
+ millennium: Math.floor(fullYear / 1000) + 1,
118
+ century: Math.floor((fullYear % 1000) / 100) + 1,
119
+ year: fullYear % 100,
120
+ month,
121
+ day,
122
+ };
123
+ if (segments[1]) {
124
+ const [h, m, s] = segments[1].split(":").map(Number);
125
+ result.hour = h ?? 0;
126
+ result.minute = m ?? 0;
127
+ result.second = s ?? 0;
128
+ }
129
+ return result;
130
+ }
131
+ format(components, format) {
132
+ const pad = (n) => String(n ?? 0).padStart(2, "0");
133
+ let fullYear;
134
+ if (components.millennium !== undefined) {
135
+ const m = components.millennium ?? 0;
136
+ const c = components.century ?? 1;
137
+ const y = components.year ?? 0;
138
+ fullYear = (m - 1) * 1000 + (c - 1) * 100 + y;
139
+ }
140
+ else {
141
+ fullYear = components.year ?? 0;
142
+ }
143
+ if (format === "short") {
144
+ return `${components.day}/${pad(components.month)}/${fullYear}`;
145
+ }
146
+ if (format === "long") {
147
+ const mn = this.MONTH_NAMES[(components.month ?? 1) - 1];
148
+ return `${components.day} ${mn} ${fullYear}`;
149
+ }
150
+ let out = `${fullYear}-${pad(components.month)}-${pad(components.day)}`;
151
+ if (components.hour !== undefined) {
152
+ out += ` ${pad(components.hour)}:${pad(components.minute)}:${pad(Math.floor(components.second ?? 0))}`;
153
+ }
154
+ return out;
155
+ }
156
+ validate(input) {
157
+ let comp;
158
+ if (typeof input === "string") {
159
+ try {
160
+ comp = this.parseDate(input);
161
+ }
162
+ catch {
163
+ return false;
164
+ }
165
+ }
166
+ else {
167
+ comp = input;
168
+ }
169
+ const { year, month, day } = comp;
170
+ // Reconstruct full year for leap check
171
+ let fullYear;
172
+ if (comp.millennium !== undefined) {
173
+ fullYear =
174
+ ((comp.millennium ?? 0) - 1) * 1000 +
175
+ ((comp.century ?? 1) - 1) * 100 +
176
+ (year ?? 0);
177
+ }
178
+ else {
179
+ fullYear = year ?? 0;
180
+ }
181
+ if (fullYear < 1)
182
+ return false;
183
+ if (!month || month < 1 || month > 12)
184
+ return false;
185
+ if (!day || day < 1)
186
+ return false;
187
+ const maxDays = this.daysInMonth(fullYear, month);
188
+ return day <= maxDays;
189
+ }
190
+ getMetadata() {
191
+ return {
192
+ name: "Hijri (Islamic Calendar)",
193
+ monthNames: this.MONTH_NAMES,
194
+ monthNamesShort: this.MONTH_NAMES_SHORT,
195
+ dayNames: this.DAY_NAMES,
196
+ dayNamesShort: this.DAY_NAMES.map((d) => d.slice(0, 3)),
197
+ isLunar: true,
198
+ monthsPerYear: 12,
199
+ epochYear: 1,
200
+ };
201
+ }
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
+ }
280
+ exports.HijriDriver = HijriDriver;
281
+ //# sourceMappingURL=hijri.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hijri.js","sourceRoot":"","sources":["../../src/drivers/hijri.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Holocene (Human Era) Calendar Driver
3
+ *
4
+ * Calendar characteristics:
5
+ * - Adds 10,000 to the Gregorian year (year 1 CE = 10,001 HE)
6
+ * - Same months, days, and leap year rules as Gregorian
7
+ * - Proposed by Cesare Emiliani in 1993 to encompass all of human history
8
+ * - Also called Human Era (HE) calendar
9
+ *
10
+ * This is a thin wrapper around GregorianDriver with a year offset.
11
+ */
12
+ import { CalendarDriver, CalendarMetadata, TPSComponents } from "../index";
13
+ export declare class HoloceneDriver implements CalendarDriver {
14
+ readonly code = "holo";
15
+ readonly name = "Holocene (Human Era)";
16
+ private readonly gregorian;
17
+ private readonly YEAR_OFFSET;
18
+ getComponentsFromDate(date: Date): Partial<TPSComponents>;
19
+ getDateFromComponents(components: Partial<TPSComponents>): Date;
20
+ getFromDate(date: Date): string;
21
+ parseDate(input: string, format?: string): Partial<TPSComponents>;
22
+ format(components: Partial<TPSComponents>, format?: string): string;
23
+ validate(input: string | Partial<TPSComponents>): boolean;
24
+ getMetadata(): CalendarMetadata;
25
+ }