@nextera.one/tps-standard 0.5.3 → 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/date.d.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TpsDate Date-like wrapper with native TPS conversion helpers.
|
|
3
|
+
*/
|
|
4
|
+
import { TimeOrder } from "./types";
|
|
5
|
+
export declare class TpsDate {
|
|
6
|
+
private readonly internal;
|
|
7
|
+
private _cachedComponents;
|
|
8
|
+
private _cachedTps;
|
|
9
|
+
constructor();
|
|
10
|
+
constructor(value: string | number | Date | TpsDate);
|
|
11
|
+
constructor(year: number, monthIndex: number, day?: number, hours?: number, minutes?: number, seconds?: number, ms?: number);
|
|
12
|
+
private static looksLikeTPS;
|
|
13
|
+
private getTpsComponents;
|
|
14
|
+
private getTpsFullYear;
|
|
15
|
+
static now(): number;
|
|
16
|
+
static parse(input: string): number;
|
|
17
|
+
static UTC(year: number, monthIndex: number, day?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number;
|
|
18
|
+
static fromTPS(tps: string): TpsDate;
|
|
19
|
+
toGregorianDate(): Date;
|
|
20
|
+
toDate(): Date;
|
|
21
|
+
toTPS(calendar?: string, opts?: {
|
|
22
|
+
order?: TimeOrder;
|
|
23
|
+
}): string;
|
|
24
|
+
toTPSURI(calendar?: string, opts?: {
|
|
25
|
+
order?: TimeOrder;
|
|
26
|
+
latitude?: number;
|
|
27
|
+
longitude?: number;
|
|
28
|
+
altitude?: number;
|
|
29
|
+
isUnknownLocation?: boolean;
|
|
30
|
+
isHiddenLocation?: boolean;
|
|
31
|
+
isRedactedLocation?: boolean;
|
|
32
|
+
}): string;
|
|
33
|
+
getTime(): number;
|
|
34
|
+
valueOf(): number;
|
|
35
|
+
toString(): string;
|
|
36
|
+
toISOString(): string;
|
|
37
|
+
toUTCString(): string;
|
|
38
|
+
toJSON(): string | null;
|
|
39
|
+
getFullYear(): number;
|
|
40
|
+
getUTCFullYear(): number;
|
|
41
|
+
getMonth(): number;
|
|
42
|
+
getUTCMonth(): number;
|
|
43
|
+
getDate(): number;
|
|
44
|
+
getUTCDate(): number;
|
|
45
|
+
getHours(): number;
|
|
46
|
+
getUTCHours(): number;
|
|
47
|
+
getMinutes(): number;
|
|
48
|
+
getUTCMinutes(): number;
|
|
49
|
+
getSeconds(): number;
|
|
50
|
+
getUTCSeconds(): number;
|
|
51
|
+
getMilliseconds(): number;
|
|
52
|
+
getUTCMilliseconds(): number;
|
|
53
|
+
[Symbol.toPrimitive](hint: string): string | number;
|
|
54
|
+
}
|
package/dist/date.js
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TpsDate Date-like wrapper with native TPS conversion helpers.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TpsDate = void 0;
|
|
7
|
+
const types_1 = require("./types");
|
|
8
|
+
const index_1 = require("./index");
|
|
9
|
+
class TpsDate {
|
|
10
|
+
constructor(...args) {
|
|
11
|
+
this._cachedComponents = null;
|
|
12
|
+
this._cachedTps = null;
|
|
13
|
+
if (args.length === 0) {
|
|
14
|
+
this.internal = new Date();
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (args.length === 1) {
|
|
18
|
+
const value = args[0];
|
|
19
|
+
if (value instanceof TpsDate) {
|
|
20
|
+
this.internal = new Date(value.getTime());
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (value instanceof Date) {
|
|
24
|
+
this.internal = new Date(value.getTime());
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (typeof value === "string" && TpsDate.looksLikeTPS(value)) {
|
|
28
|
+
const parsed = index_1.TPS.toDate(value);
|
|
29
|
+
if (!parsed) {
|
|
30
|
+
throw new RangeError(`Invalid TPS date string: ${value}`);
|
|
31
|
+
}
|
|
32
|
+
this.internal = parsed;
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
this.internal = new Date(value);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const [year, monthIndex, day, hours, minutes, seconds, ms] = args;
|
|
39
|
+
this.internal = new Date(year, monthIndex, day ?? 1, hours ?? 0, minutes ?? 0, seconds ?? 0, ms ?? 0);
|
|
40
|
+
}
|
|
41
|
+
static looksLikeTPS(input) {
|
|
42
|
+
const s = input.trim();
|
|
43
|
+
return s.startsWith("tps://") || s.startsWith("T:") || s.startsWith("t:");
|
|
44
|
+
}
|
|
45
|
+
getTpsComponents() {
|
|
46
|
+
const currentTps = this.toTPS(types_1.DefaultCalendars.TPS);
|
|
47
|
+
if (this._cachedTps === currentTps && this._cachedComponents) {
|
|
48
|
+
return this._cachedComponents;
|
|
49
|
+
}
|
|
50
|
+
const parsed = index_1.TPS.parse(currentTps);
|
|
51
|
+
if (!parsed) {
|
|
52
|
+
throw new Error("TpsDate: failed to derive TPS components");
|
|
53
|
+
}
|
|
54
|
+
this._cachedTps = currentTps;
|
|
55
|
+
this._cachedComponents = parsed;
|
|
56
|
+
return parsed;
|
|
57
|
+
}
|
|
58
|
+
getTpsFullYear() {
|
|
59
|
+
const comp = this.getTpsComponents();
|
|
60
|
+
return (comp.millennium - 1) * 1000 + (comp.century - 1) * 100 + comp.year;
|
|
61
|
+
}
|
|
62
|
+
static now() {
|
|
63
|
+
return Date.now();
|
|
64
|
+
}
|
|
65
|
+
static parse(input) {
|
|
66
|
+
if (this.looksLikeTPS(input)) {
|
|
67
|
+
const d = index_1.TPS.toDate(input);
|
|
68
|
+
return d ? d.getTime() : Number.NaN;
|
|
69
|
+
}
|
|
70
|
+
return Date.parse(input);
|
|
71
|
+
}
|
|
72
|
+
static UTC(year, monthIndex, day, hours, minutes, seconds, ms) {
|
|
73
|
+
return Date.UTC(year, monthIndex, day ?? 1, hours ?? 0, minutes ?? 0, seconds ?? 0, ms ?? 0);
|
|
74
|
+
}
|
|
75
|
+
static fromTPS(tps) {
|
|
76
|
+
return new TpsDate(tps);
|
|
77
|
+
}
|
|
78
|
+
toGregorianDate() {
|
|
79
|
+
return new Date(this.internal.getTime());
|
|
80
|
+
}
|
|
81
|
+
toDate() {
|
|
82
|
+
return this.toGregorianDate();
|
|
83
|
+
}
|
|
84
|
+
toTPS(calendar = types_1.DefaultCalendars.TPS, opts) {
|
|
85
|
+
return index_1.TPS.fromDate(this.internal, calendar, opts);
|
|
86
|
+
}
|
|
87
|
+
toTPSURI(calendar = types_1.DefaultCalendars.TPS, opts) {
|
|
88
|
+
const time = this.toTPS(calendar, { order: opts?.order });
|
|
89
|
+
const comp = index_1.TPS.parse(time);
|
|
90
|
+
if (opts?.latitude !== undefined && opts?.longitude !== undefined) {
|
|
91
|
+
comp.latitude = opts.latitude;
|
|
92
|
+
comp.longitude = opts.longitude;
|
|
93
|
+
if (opts.altitude !== undefined)
|
|
94
|
+
comp.altitude = opts.altitude;
|
|
95
|
+
}
|
|
96
|
+
else if (opts?.isHiddenLocation) {
|
|
97
|
+
comp.isHiddenLocation = true;
|
|
98
|
+
}
|
|
99
|
+
else if (opts?.isRedactedLocation) {
|
|
100
|
+
comp.isRedactedLocation = true;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
comp.isUnknownLocation = true;
|
|
104
|
+
}
|
|
105
|
+
return index_1.TPS.toURI(comp);
|
|
106
|
+
}
|
|
107
|
+
getTime() {
|
|
108
|
+
return this.internal.getTime();
|
|
109
|
+
}
|
|
110
|
+
valueOf() {
|
|
111
|
+
return this.internal.valueOf();
|
|
112
|
+
}
|
|
113
|
+
toString() {
|
|
114
|
+
return this.toTPS(types_1.DefaultCalendars.TPS);
|
|
115
|
+
}
|
|
116
|
+
toISOString() {
|
|
117
|
+
return this.internal.toISOString();
|
|
118
|
+
}
|
|
119
|
+
toUTCString() {
|
|
120
|
+
return this.internal.toUTCString();
|
|
121
|
+
}
|
|
122
|
+
toJSON() {
|
|
123
|
+
return this.internal.toJSON();
|
|
124
|
+
}
|
|
125
|
+
getFullYear() {
|
|
126
|
+
return this.getTpsFullYear();
|
|
127
|
+
}
|
|
128
|
+
getUTCFullYear() {
|
|
129
|
+
return this.getTpsFullYear();
|
|
130
|
+
}
|
|
131
|
+
getMonth() {
|
|
132
|
+
return this.getTpsComponents().month - 1;
|
|
133
|
+
}
|
|
134
|
+
getUTCMonth() {
|
|
135
|
+
return this.getTpsComponents().month - 1;
|
|
136
|
+
}
|
|
137
|
+
getDate() {
|
|
138
|
+
return this.getTpsComponents().day;
|
|
139
|
+
}
|
|
140
|
+
getUTCDate() {
|
|
141
|
+
return this.getTpsComponents().day;
|
|
142
|
+
}
|
|
143
|
+
getHours() {
|
|
144
|
+
return this.getTpsComponents().hour;
|
|
145
|
+
}
|
|
146
|
+
getUTCHours() {
|
|
147
|
+
return this.getTpsComponents().hour;
|
|
148
|
+
}
|
|
149
|
+
getMinutes() {
|
|
150
|
+
return this.getTpsComponents().minute;
|
|
151
|
+
}
|
|
152
|
+
getUTCMinutes() {
|
|
153
|
+
return this.getTpsComponents().minute;
|
|
154
|
+
}
|
|
155
|
+
getSeconds() {
|
|
156
|
+
return this.getTpsComponents().second;
|
|
157
|
+
}
|
|
158
|
+
getUTCSeconds() {
|
|
159
|
+
return this.getTpsComponents().second;
|
|
160
|
+
}
|
|
161
|
+
getMilliseconds() {
|
|
162
|
+
return this.getTpsComponents().millisecond;
|
|
163
|
+
}
|
|
164
|
+
getUTCMilliseconds() {
|
|
165
|
+
return this.getTpsComponents().millisecond;
|
|
166
|
+
}
|
|
167
|
+
[Symbol.toPrimitive](hint) {
|
|
168
|
+
if (hint === "number")
|
|
169
|
+
return this.valueOf();
|
|
170
|
+
return this.toString();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
exports.TpsDate = TpsDate;
|
|
174
|
+
//# sourceMappingURL=date.js.map
|
package/dist/date.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../src/date.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import { CalendarDriver,
|
|
1
|
+
import { CalendarDriver, CalendarMetadata, TPSComponents } from "../types";
|
|
2
2
|
/**
|
|
3
3
|
* Gregorian calendar driver.
|
|
4
|
-
*
|
|
5
|
-
* and provides implementations for the full `CalendarDriver` interface.
|
|
6
|
-
* The driver also implements the optional helpers, enabling unit tests to
|
|
7
|
-
* exercise `parseDate`, `format`, `validate`, and `getMetadata`.
|
|
4
|
+
* Supports robust validation and canonical Date conversions.
|
|
8
5
|
*/
|
|
9
6
|
export declare class GregorianDriver implements CalendarDriver {
|
|
10
7
|
readonly code: string;
|
|
@@ -13,6 +10,7 @@ export declare class GregorianDriver implements CalendarDriver {
|
|
|
13
10
|
getFromDate(date: Date): string;
|
|
14
11
|
parseDate(input: string, format?: string): Partial<TPSComponents>;
|
|
15
12
|
format(components: Partial<TPSComponents>, format?: string): string;
|
|
13
|
+
private isLeap;
|
|
16
14
|
validate(input: string | Partial<TPSComponents>): boolean;
|
|
17
15
|
getMetadata(): CalendarMetadata;
|
|
18
16
|
}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GregorianDriver = void 0;
|
|
4
|
-
const
|
|
4
|
+
const tps_string_1 = require("../utils/tps-string");
|
|
5
5
|
/**
|
|
6
6
|
* Gregorian calendar driver.
|
|
7
|
-
*
|
|
8
|
-
* and provides implementations for the full `CalendarDriver` interface.
|
|
9
|
-
* The driver also implements the optional helpers, enabling unit tests to
|
|
10
|
-
* exercise `parseDate`, `format`, `validate`, and `getMetadata`.
|
|
7
|
+
* Supports robust validation and canonical Date conversions.
|
|
11
8
|
*/
|
|
12
9
|
class GregorianDriver {
|
|
13
10
|
constructor() {
|
|
@@ -38,14 +35,11 @@ class GregorianDriver {
|
|
|
38
35
|
}
|
|
39
36
|
getFromDate(date) {
|
|
40
37
|
const comp = this.getComponentsFromDate(date);
|
|
41
|
-
|
|
42
|
-
return index_1.TPS.buildTimePart(comp);
|
|
38
|
+
return (0, tps_string_1.buildTimePart)(comp);
|
|
43
39
|
}
|
|
44
40
|
// --- optional helpers --------------------------------------------------
|
|
45
41
|
parseDate(input, format) {
|
|
46
|
-
// Accept ISO-like formats: "YYYY-MM-DD" and optionally time portion
|
|
47
42
|
const s = input.trim();
|
|
48
|
-
// simple regex - not exhaustive
|
|
49
43
|
const m = s.match(/^(\d{4})-(\d{2})-(\d{2})(?:[ T](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?)?$/);
|
|
50
44
|
if (!m) {
|
|
51
45
|
throw new Error(`GregorianDriver.parseDate: unsupported format "${input}"`);
|
|
@@ -74,7 +68,6 @@ class GregorianDriver {
|
|
|
74
68
|
return comp;
|
|
75
69
|
}
|
|
76
70
|
format(components, format) {
|
|
77
|
-
// For simplicity we ignore `format` and always produce ISO-ish string
|
|
78
71
|
const y = components.year !== undefined
|
|
79
72
|
? String(components.year).padStart(4, "0")
|
|
80
73
|
: "0000";
|
|
@@ -105,20 +98,34 @@ class GregorianDriver {
|
|
|
105
98
|
}
|
|
106
99
|
return out;
|
|
107
100
|
}
|
|
101
|
+
isLeap(y) {
|
|
102
|
+
return (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0;
|
|
103
|
+
}
|
|
108
104
|
validate(input) {
|
|
109
105
|
if (typeof input === "string") {
|
|
110
|
-
// basic ISO date with optional time and fractional seconds
|
|
111
106
|
return /^\d{4}-\d{2}-\d{2}(?:[ T]\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?)?$/.test(input.trim());
|
|
112
107
|
}
|
|
113
108
|
if (typeof input === "object") {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
109
|
+
const y = input.year ?? 0;
|
|
110
|
+
const m = input.month ?? 1;
|
|
111
|
+
const d = input.day ?? 1;
|
|
112
|
+
if (y < 0 || m < 1 || m > 12 || d < 1)
|
|
113
|
+
return false;
|
|
114
|
+
const daysInMonth = [
|
|
115
|
+
31,
|
|
116
|
+
this.isLeap(y) ? 29 : 28,
|
|
117
|
+
31,
|
|
118
|
+
30,
|
|
119
|
+
31,
|
|
120
|
+
30,
|
|
121
|
+
31,
|
|
122
|
+
31,
|
|
123
|
+
30,
|
|
124
|
+
31,
|
|
125
|
+
30,
|
|
126
|
+
31,
|
|
127
|
+
];
|
|
128
|
+
return d <= daysInMonth[m - 1];
|
|
122
129
|
}
|
|
123
130
|
return false;
|
|
124
131
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gregorian.js","sourceRoot":"","sources":["../../src/drivers/gregorian.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"gregorian.js","sourceRoot":"","sources":["../../src/drivers/gregorian.ts"],"names":[],"mappings":"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"}
|
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
|
}
|