gnss-js 0.1.2 → 1.0.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/LICENSE +23 -0
- package/README.md +171 -5
- package/dist/analysis.cjs +1381 -0
- package/dist/analysis.d.cts +211 -0
- package/dist/analysis.d.ts +211 -0
- package/dist/analysis.js +14 -0
- package/dist/antex.cjs +239 -0
- package/dist/antex.d.cts +77 -0
- package/dist/antex.d.ts +77 -0
- package/dist/antex.js +8 -0
- package/dist/chunk-354IRDOG.js +239 -0
- package/dist/chunk-37QNKGTC.js +65 -0
- package/dist/chunk-5CMSYIYM.js +214 -0
- package/dist/chunk-5S5MONFK.js +0 -0
- package/dist/chunk-6FAL6P4G.js +12 -0
- package/dist/chunk-7NOFXKET.js +433 -0
- package/dist/chunk-CB6EOOLA.js +753 -0
- package/dist/chunk-HKN3PUGN.js +800 -0
- package/dist/chunk-IS4UUDBV.js +577 -0
- package/dist/chunk-K7WZQFBV.js +236 -0
- package/dist/chunk-LEEU5OIO.js +75 -0
- package/dist/chunk-PRSZIWKM.js +1482 -0
- package/dist/chunk-SDRRAJT5.js +433 -0
- package/dist/chunk-WR7LCB52.js +143 -0
- package/dist/chunk-Y3R57B5P.js +473 -0
- package/dist/chunk-YDMYO3YK.js +220 -0
- package/dist/constants.cjs +394 -0
- package/dist/constants.d.cts +14 -0
- package/dist/constants.d.ts +14 -0
- package/dist/constants.js +103 -0
- package/dist/coordinates.cjs +334 -0
- package/dist/coordinates.d.cts +81 -0
- package/dist/coordinates.d.ts +81 -0
- package/dist/coordinates.js +39 -0
- package/dist/ecef-CF0uAysr.d.cts +40 -0
- package/dist/ecef-CF0uAysr.d.ts +40 -0
- package/dist/ephemeris-BUWzfmBy.d.cts +114 -0
- package/dist/ephemeris-BUWzfmBy.d.ts +114 -0
- package/dist/gnss-BT6ulR17.d.cts +56 -0
- package/dist/gnss-C-tgoYNa.d.ts +56 -0
- package/dist/index.cjs +5774 -78
- package/dist/index.d.cts +17 -96
- package/dist/index.d.ts +17 -96
- package/dist/index.js +352 -415
- package/dist/nav-BAI1a9vK.d.cts +108 -0
- package/dist/nav-BAI1a9vK.d.ts +108 -0
- package/dist/nmea.cjs +247 -0
- package/dist/nmea.d.cts +37 -0
- package/dist/nmea.d.ts +37 -0
- package/dist/nmea.js +12 -0
- package/dist/ntrip.cjs +169 -0
- package/dist/ntrip.d.cts +98 -0
- package/dist/ntrip.d.ts +98 -0
- package/dist/ntrip.js +10 -0
- package/dist/orbit.cjs +504 -0
- package/dist/orbit.d.cts +117 -0
- package/dist/orbit.d.ts +117 -0
- package/dist/orbit.js +29 -0
- package/dist/parser-JPjjFgeP.d.cts +73 -0
- package/dist/parser-JPjjFgeP.d.ts +73 -0
- package/dist/rinex.cjs +1375 -0
- package/dist/rinex.d.cts +116 -0
- package/dist/rinex.d.ts +116 -0
- package/dist/rinex.js +37 -0
- package/dist/rtcm3.cjs +1519 -0
- package/dist/rtcm3.d.cts +143 -0
- package/dist/rtcm3.d.ts +143 -0
- package/dist/rtcm3.js +31 -0
- package/dist/signals.cjs +858 -0
- package/dist/signals.d.cts +93 -0
- package/dist/signals.d.ts +93 -0
- package/dist/signals.js +70 -0
- package/dist/time-DnI1VpE8.d.cts +33 -0
- package/dist/time-DnI1VpE8.d.ts +33 -0
- package/dist/time.cjs +585 -0
- package/dist/time.d.cts +307 -0
- package/dist/time.d.ts +307 -0
- package/dist/time.js +154 -0
- package/package.json +112 -14
- package/.prettierrc +0 -5
- package/jest.config.ts +0 -9
- package/test/functions.test.ts +0 -63
- package/test/gnss-scales.test.ts +0 -95
- package/test/julian.test.ts +0 -145
- package/test/rinex.test.ts +0 -11
- package/test/test.ts +0 -10
- package/test/utc.test.ts +0 -25
package/dist/time.cjs
ADDED
|
@@ -0,0 +1,585 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/time/index.ts
|
|
21
|
+
var time_exports = {};
|
|
22
|
+
__export(time_exports, {
|
|
23
|
+
DAYS_MJD2000_MJD: () => DAYS_MJD2000_MJD,
|
|
24
|
+
DAYS_MJD_JULIAN: () => DAYS_MJD_JULIAN,
|
|
25
|
+
MILLISECONDS_GPS_TAI: () => MILLISECONDS_GPS_TAI,
|
|
26
|
+
MILLISECONDS_IN_DAY: () => MILLISECONDS_IN_DAY,
|
|
27
|
+
MILLISECONDS_IN_HOUR: () => MILLISECONDS_IN_HOUR,
|
|
28
|
+
MILLISECONDS_IN_MINUTE: () => MILLISECONDS_IN_MINUTE,
|
|
29
|
+
MILLISECONDS_IN_SECOND: () => MILLISECONDS_IN_SECOND,
|
|
30
|
+
MILLISECONDS_IN_WEEK: () => MILLISECONDS_IN_WEEK,
|
|
31
|
+
MILLISECONDS_TT_TAI: () => MILLISECONDS_TT_TAI,
|
|
32
|
+
RINEX_CODES: () => RINEX_CODES,
|
|
33
|
+
SECONDS_IN_DAY: () => SECONDS_IN_DAY,
|
|
34
|
+
SECONDS_IN_HOUR: () => SECONDS_IN_HOUR,
|
|
35
|
+
SECONDS_IN_MINUTE: () => SECONDS_IN_MINUTE,
|
|
36
|
+
SECONDS_IN_WEEK: () => SECONDS_IN_WEEK,
|
|
37
|
+
START_BDS_TIME: () => START_BDS_TIME,
|
|
38
|
+
START_GAL_TIME: () => START_GAL_TIME,
|
|
39
|
+
START_GLO_LEAP: () => START_GLO_LEAP,
|
|
40
|
+
START_GPS_TIME: () => START_GPS_TIME,
|
|
41
|
+
START_JULIAN_TAI: () => START_JULIAN_TAI,
|
|
42
|
+
START_MJD_UNIX_SECONDS: () => START_MJD_UNIX_SECONDS,
|
|
43
|
+
START_NTP_TIME: () => START_NTP_TIME,
|
|
44
|
+
START_TAI_TIME: () => START_TAI_TIME,
|
|
45
|
+
START_UNIX_TIME: () => START_UNIX_TIME,
|
|
46
|
+
Scale: () => Scale,
|
|
47
|
+
getBdsTime: () => getBdsTime,
|
|
48
|
+
getDateFromBdsTime: () => getDateFromBdsTime,
|
|
49
|
+
getDateFromDayOfWeek: () => getDateFromDayOfWeek,
|
|
50
|
+
getDateFromDayOfYear: () => getDateFromDayOfYear,
|
|
51
|
+
getDateFromGalTime: () => getDateFromGalTime,
|
|
52
|
+
getDateFromGloN: () => getDateFromGloN,
|
|
53
|
+
getDateFromGpsData: () => getDateFromGpsData,
|
|
54
|
+
getDateFromGpsTime: () => getDateFromGpsTime,
|
|
55
|
+
getDateFromHourCode: () => getDateFromHourCode,
|
|
56
|
+
getDateFromJulianDate: () => getDateFromJulianDate,
|
|
57
|
+
getDateFromMJD: () => getDateFromMJD,
|
|
58
|
+
getDateFromMJD2000: () => getDateFromMJD2000,
|
|
59
|
+
getDateFromRINEX: () => getDateFromRINEX,
|
|
60
|
+
getDateFromTai: () => getDateFromTai,
|
|
61
|
+
getDateFromTimeOfDay: () => getDateFromTimeOfDay,
|
|
62
|
+
getDateFromTt: () => getDateFromTt,
|
|
63
|
+
getDateFromUnixTime: () => getDateFromUnixTime,
|
|
64
|
+
getDateFromUtc: () => getDateFromUtc,
|
|
65
|
+
getDayOfWeek: () => getDayOfWeek,
|
|
66
|
+
getDayOfYear: () => getDayOfYear,
|
|
67
|
+
getGalTime: () => getGalTime,
|
|
68
|
+
getGloN4: () => getGloN4,
|
|
69
|
+
getGloNA: () => getGloNA,
|
|
70
|
+
getGpsLeap: () => getGpsLeap,
|
|
71
|
+
getGpsTime: () => getGpsTime,
|
|
72
|
+
getHourCode: () => getHourCode,
|
|
73
|
+
getHoursFromTimeDifference: () => getHoursFromTimeDifference,
|
|
74
|
+
getJulianDate: () => getJulianDate,
|
|
75
|
+
getLeap: () => getLeap,
|
|
76
|
+
getMJD: () => getMJD,
|
|
77
|
+
getMJD2000: () => getMJD2000,
|
|
78
|
+
getMinutesFromTimeDifference: () => getMinutesFromTimeDifference,
|
|
79
|
+
getNtpTime: () => getNtpTime,
|
|
80
|
+
getRINEX: () => getRINEX,
|
|
81
|
+
getSecondsFromTimeDifference: () => getSecondsFromTimeDifference,
|
|
82
|
+
getTaiDate: () => getTaiDate,
|
|
83
|
+
getTimeDifference: () => getTimeDifference,
|
|
84
|
+
getTimeDifferenceFromDays: () => getTimeDifferenceFromDays,
|
|
85
|
+
getTimeDifferenceFromHours: () => getTimeDifferenceFromHours,
|
|
86
|
+
getTimeDifferenceFromMinutes: () => getTimeDifferenceFromMinutes,
|
|
87
|
+
getTimeDifferenceFromObject: () => getTimeDifferenceFromObject,
|
|
88
|
+
getTimeDifferenceFromSeconds: () => getTimeDifferenceFromSeconds,
|
|
89
|
+
getTimeOfDay: () => getTimeOfDay,
|
|
90
|
+
getTimeOfWeek: () => getTimeOfWeek,
|
|
91
|
+
getTotalDaysFromTimeDifference: () => getTotalDaysFromTimeDifference,
|
|
92
|
+
getTtDate: () => getTtDate,
|
|
93
|
+
getUnixTime: () => getUnixTime,
|
|
94
|
+
getUtcDate: () => getUtcDate,
|
|
95
|
+
getWeekNumber: () => getWeekNumber,
|
|
96
|
+
getWeekOfYear: () => getWeekOfYear
|
|
97
|
+
});
|
|
98
|
+
module.exports = __toCommonJS(time_exports);
|
|
99
|
+
|
|
100
|
+
// src/constants/time.ts
|
|
101
|
+
var SECONDS_IN_WEEK = 604800;
|
|
102
|
+
var SECONDS_IN_DAY = 86400;
|
|
103
|
+
var SECONDS_IN_HOUR = 3600;
|
|
104
|
+
var SECONDS_IN_MINUTE = 60;
|
|
105
|
+
var MILLISECONDS_IN_WEEK = 6048e5;
|
|
106
|
+
var MILLISECONDS_IN_DAY = 864e5;
|
|
107
|
+
var MILLISECONDS_IN_HOUR = 36e5;
|
|
108
|
+
var MILLISECONDS_IN_MINUTE = 6e4;
|
|
109
|
+
var MILLISECONDS_IN_SECOND = 1e3;
|
|
110
|
+
var MILLISECONDS_TT_TAI = 32184;
|
|
111
|
+
var MILLISECONDS_GPS_TAI = 19e3;
|
|
112
|
+
var START_GPS_TIME = /* @__PURE__ */ new Date("1980-01-06T00:00:00Z");
|
|
113
|
+
var START_GAL_TIME = /* @__PURE__ */ new Date("1999-08-22T00:00:00Z");
|
|
114
|
+
var START_BDS_TIME = /* @__PURE__ */ new Date("2006-01-01T00:00:14Z");
|
|
115
|
+
var START_UNIX_TIME = /* @__PURE__ */ new Date("1969-12-31T23:59:49Z");
|
|
116
|
+
var START_NTP_TIME = /* @__PURE__ */ new Date("1900-01-01T00:00:00Z");
|
|
117
|
+
var START_GLO_LEAP = /* @__PURE__ */ new Date("1996-01-01T00:00:00Z");
|
|
118
|
+
var START_TAI_TIME = /* @__PURE__ */ new Date("1957-12-31T23:59:41Z");
|
|
119
|
+
var RINEX_CODES = [
|
|
120
|
+
"a",
|
|
121
|
+
"b",
|
|
122
|
+
"c",
|
|
123
|
+
"d",
|
|
124
|
+
"e",
|
|
125
|
+
"f",
|
|
126
|
+
"g",
|
|
127
|
+
"h",
|
|
128
|
+
"i",
|
|
129
|
+
"j",
|
|
130
|
+
"k",
|
|
131
|
+
"l",
|
|
132
|
+
"m",
|
|
133
|
+
"n",
|
|
134
|
+
"o",
|
|
135
|
+
"p",
|
|
136
|
+
"q",
|
|
137
|
+
"r",
|
|
138
|
+
"s",
|
|
139
|
+
"t",
|
|
140
|
+
"u",
|
|
141
|
+
"v",
|
|
142
|
+
"w",
|
|
143
|
+
"x"
|
|
144
|
+
];
|
|
145
|
+
var START_JULIAN_TAI = 24362045e-1;
|
|
146
|
+
var DAYS_MJD_JULIAN = 24000005e-1;
|
|
147
|
+
var DAYS_MJD2000_MJD = 51544.5;
|
|
148
|
+
var START_MJD_UNIX_SECONDS = 40587;
|
|
149
|
+
|
|
150
|
+
// src/types/enums.ts
|
|
151
|
+
var Scale = /* @__PURE__ */ ((Scale2) => {
|
|
152
|
+
Scale2[Scale2["TAI"] = 0] = "TAI";
|
|
153
|
+
Scale2[Scale2["TT"] = 1] = "TT";
|
|
154
|
+
Scale2[Scale2["GPS"] = 2] = "GPS";
|
|
155
|
+
Scale2[Scale2["UTC"] = 3] = "UTC";
|
|
156
|
+
return Scale2;
|
|
157
|
+
})(Scale || {});
|
|
158
|
+
|
|
159
|
+
// src/time/functions.ts
|
|
160
|
+
function getTimeOfDay(date) {
|
|
161
|
+
return date.getTime() - Date.UTC(
|
|
162
|
+
date.getUTCFullYear(),
|
|
163
|
+
date.getUTCMonth(),
|
|
164
|
+
date.getUTCDate(),
|
|
165
|
+
0,
|
|
166
|
+
0,
|
|
167
|
+
0
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
function getDateFromTimeOfDay(timeOfDay, dateRaw) {
|
|
171
|
+
return new Date(
|
|
172
|
+
Date.UTC(
|
|
173
|
+
dateRaw.getUTCFullYear(),
|
|
174
|
+
dateRaw.getUTCMonth(),
|
|
175
|
+
dateRaw.getUTCDate(),
|
|
176
|
+
0,
|
|
177
|
+
0,
|
|
178
|
+
0
|
|
179
|
+
) + timeOfDay
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
function getDayOfYear(date) {
|
|
183
|
+
return Math.floor(
|
|
184
|
+
(date.getTime() - Date.UTC(date.getUTCFullYear())) / MILLISECONDS_IN_DAY
|
|
185
|
+
) + 1;
|
|
186
|
+
}
|
|
187
|
+
function getDateFromDayOfYear(dayOfYear, date) {
|
|
188
|
+
return new Date(
|
|
189
|
+
Date.UTC(
|
|
190
|
+
date.getUTCFullYear(),
|
|
191
|
+
0,
|
|
192
|
+
1,
|
|
193
|
+
date.getUTCHours(),
|
|
194
|
+
date.getUTCMinutes(),
|
|
195
|
+
date.getUTCSeconds(),
|
|
196
|
+
date.getUTCMilliseconds()
|
|
197
|
+
) + (dayOfYear - 1) * MILLISECONDS_IN_DAY
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
function getDayOfWeek(date) {
|
|
201
|
+
return date.getUTCDay();
|
|
202
|
+
}
|
|
203
|
+
function getDateFromDayOfWeek(dayOfWeek, dateRaw) {
|
|
204
|
+
if (dayOfWeek < 0 || dayOfWeek > 6)
|
|
205
|
+
throw new Error("Day of week must be a value between 0 and 7");
|
|
206
|
+
return new Date(
|
|
207
|
+
dateRaw.getTime() + (dayOfWeek - dateRaw.getUTCDay()) * MILLISECONDS_IN_DAY
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
function getDateFromHourCode(hourCode, date) {
|
|
211
|
+
const hour = RINEX_CODES.indexOf(hourCode);
|
|
212
|
+
if (hour === -1)
|
|
213
|
+
throw new Error("Hour code must be a lowercase letter between a and x");
|
|
214
|
+
const newDate = new Date(date.getTime());
|
|
215
|
+
newDate.setUTCHours(hour);
|
|
216
|
+
return newDate;
|
|
217
|
+
}
|
|
218
|
+
function getHourCode(date) {
|
|
219
|
+
return RINEX_CODES[date.getUTCHours()];
|
|
220
|
+
}
|
|
221
|
+
function getWeekOfYear(date) {
|
|
222
|
+
const target = new Date(
|
|
223
|
+
Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())
|
|
224
|
+
);
|
|
225
|
+
const dayNr = (target.getUTCDay() + 6) % 7;
|
|
226
|
+
target.setUTCDate(target.getUTCDate() - dayNr + 3);
|
|
227
|
+
const firstThursday = new Date(Date.UTC(target.getUTCFullYear(), 0, 4));
|
|
228
|
+
const dayDiff = (target.getTime() - firstThursday.getTime()) / (86400 * 1e3);
|
|
229
|
+
return 1 + Math.floor(dayDiff / 7) + 1;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// src/time/time-difference.ts
|
|
233
|
+
function getTimeDifference(startDate, finalDate) {
|
|
234
|
+
return Math.floor(finalDate.getTime() - startDate.getTime());
|
|
235
|
+
}
|
|
236
|
+
function getSecondsFromTimeDifference(timeDifference) {
|
|
237
|
+
return Math.floor(
|
|
238
|
+
timeDifference % MILLISECONDS_IN_MINUTE / MILLISECONDS_IN_SECOND
|
|
239
|
+
);
|
|
240
|
+
}
|
|
241
|
+
function getMinutesFromTimeDifference(timeDifference) {
|
|
242
|
+
return Math.floor(
|
|
243
|
+
timeDifference % MILLISECONDS_IN_HOUR / MILLISECONDS_IN_MINUTE
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
function getHoursFromTimeDifference(timeDifference) {
|
|
247
|
+
return Math.floor(
|
|
248
|
+
timeDifference % MILLISECONDS_IN_DAY / MILLISECONDS_IN_HOUR
|
|
249
|
+
);
|
|
250
|
+
}
|
|
251
|
+
function getTotalDaysFromTimeDifference(timeDifference) {
|
|
252
|
+
return Math.floor(timeDifference / MILLISECONDS_IN_DAY);
|
|
253
|
+
}
|
|
254
|
+
function getTimeDifferenceFromSeconds(seconds) {
|
|
255
|
+
return seconds * MILLISECONDS_IN_SECOND;
|
|
256
|
+
}
|
|
257
|
+
function getTimeDifferenceFromMinutes(minutes) {
|
|
258
|
+
return minutes * MILLISECONDS_IN_MINUTE;
|
|
259
|
+
}
|
|
260
|
+
function getTimeDifferenceFromHours(hours) {
|
|
261
|
+
return hours * MILLISECONDS_IN_HOUR;
|
|
262
|
+
}
|
|
263
|
+
function getTimeDifferenceFromDays(days) {
|
|
264
|
+
return days * MILLISECONDS_IN_DAY;
|
|
265
|
+
}
|
|
266
|
+
function getTimeDifferenceFromObject(timeDifferenceObject) {
|
|
267
|
+
const { seconds, minutes, hours, days } = timeDifferenceObject;
|
|
268
|
+
return getTimeDifferenceFromSeconds(seconds) + getTimeDifferenceFromMinutes(minutes) + getTimeDifferenceFromHours(hours) + getTimeDifferenceFromDays(days);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// src/time/utc.ts
|
|
272
|
+
var LEAP_SECONDS_TABLE = [
|
|
273
|
+
[3692217600, 37],
|
|
274
|
+
// 1 Jan 2017
|
|
275
|
+
[3644697600, 36],
|
|
276
|
+
// 1 Jul 2015
|
|
277
|
+
[3550089600, 35],
|
|
278
|
+
// 1 Jul 2012
|
|
279
|
+
[3439756800, 34],
|
|
280
|
+
// 1 Jan 2009
|
|
281
|
+
[3345062400, 33],
|
|
282
|
+
// 1 Jan 2006
|
|
283
|
+
[3124137600, 32],
|
|
284
|
+
// 1 Jan 1999
|
|
285
|
+
[3076704e3, 31],
|
|
286
|
+
// 1 Jul 1997
|
|
287
|
+
[3029443200, 30],
|
|
288
|
+
// 1 Jan 1996
|
|
289
|
+
[2982009600, 29],
|
|
290
|
+
// 1 Jul 1994
|
|
291
|
+
[2950473600, 28],
|
|
292
|
+
// 1 Jul 1993
|
|
293
|
+
[2918937600, 27],
|
|
294
|
+
// 1 Jul 1992
|
|
295
|
+
[2871676800, 26],
|
|
296
|
+
// 1 Jan 1991
|
|
297
|
+
[2840140800, 25],
|
|
298
|
+
// 1 Jan 1990
|
|
299
|
+
[2776982400, 24],
|
|
300
|
+
// 1 Jan 1988
|
|
301
|
+
[2698012800, 23],
|
|
302
|
+
// 1 Jul 1985
|
|
303
|
+
[2634854400, 22],
|
|
304
|
+
// 1 Jul 1983
|
|
305
|
+
[2603318400, 21],
|
|
306
|
+
// 1 Jul 1982
|
|
307
|
+
[2571782400, 20],
|
|
308
|
+
// 1 Jul 1981
|
|
309
|
+
[2524521600, 19],
|
|
310
|
+
// 1 Jan 1980
|
|
311
|
+
[2492985600, 18],
|
|
312
|
+
// 1 Jan 1979
|
|
313
|
+
[2461449600, 17],
|
|
314
|
+
// 1 Jan 1978
|
|
315
|
+
[2429913600, 16],
|
|
316
|
+
// 1 Jan 1977
|
|
317
|
+
[2398291200, 15],
|
|
318
|
+
// 1 Jan 1976
|
|
319
|
+
[2366755200, 14],
|
|
320
|
+
// 1 Jan 1975
|
|
321
|
+
[2335219200, 13],
|
|
322
|
+
// 1 Jan 1974
|
|
323
|
+
[2303683200, 12],
|
|
324
|
+
// 1 Jan 1973
|
|
325
|
+
[2287785600, 11],
|
|
326
|
+
// 1 Jul 1972
|
|
327
|
+
[2272060800, 10]
|
|
328
|
+
// 1 Jan 1972
|
|
329
|
+
];
|
|
330
|
+
function getLeap(date) {
|
|
331
|
+
const ntp_time = getNtpTime(date);
|
|
332
|
+
for (const [timestamp, leapSeconds] of LEAP_SECONDS_TABLE) {
|
|
333
|
+
if (ntp_time / MILLISECONDS_IN_SECOND - leapSeconds >= timestamp) {
|
|
334
|
+
return leapSeconds;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return 8;
|
|
338
|
+
}
|
|
339
|
+
function getGpsLeap(date) {
|
|
340
|
+
const leap_seconds = getLeap(date);
|
|
341
|
+
if (leap_seconds < 0) return 0;
|
|
342
|
+
return leap_seconds - 19;
|
|
343
|
+
}
|
|
344
|
+
function getUtcDate(date) {
|
|
345
|
+
const tai_date = getTaiDate(date);
|
|
346
|
+
const leap_seconds = getLeap(date);
|
|
347
|
+
return new Date(tai_date.getTime() - leap_seconds * MILLISECONDS_IN_SECOND);
|
|
348
|
+
}
|
|
349
|
+
function getDateFromUtc(utc_date) {
|
|
350
|
+
const tai_date = new Date(
|
|
351
|
+
utc_date.getTime() + getLeap(utc_date) * MILLISECONDS_IN_SECOND
|
|
352
|
+
);
|
|
353
|
+
const leap_seconds = getLeap(getDateFromTai(tai_date));
|
|
354
|
+
const gps_date = getDateFromTai(
|
|
355
|
+
new Date(utc_date.getTime() + leap_seconds * MILLISECONDS_IN_SECOND)
|
|
356
|
+
);
|
|
357
|
+
return gps_date;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// src/time/gnss.ts
|
|
361
|
+
function getGpsTime(date) {
|
|
362
|
+
return date.getTime() - START_GPS_TIME.getTime();
|
|
363
|
+
}
|
|
364
|
+
function getDateFromGpsTime(gpsTime) {
|
|
365
|
+
return new Date(gpsTime + START_GPS_TIME.getTime());
|
|
366
|
+
}
|
|
367
|
+
function getGalTime(date) {
|
|
368
|
+
return date.getTime() - START_GAL_TIME.getTime();
|
|
369
|
+
}
|
|
370
|
+
function getDateFromGalTime(galTime) {
|
|
371
|
+
return new Date(galTime + START_GAL_TIME.getTime());
|
|
372
|
+
}
|
|
373
|
+
function getBdsTime(date) {
|
|
374
|
+
return date.getTime() - START_BDS_TIME.getTime();
|
|
375
|
+
}
|
|
376
|
+
function getDateFromBdsTime(bdsTime) {
|
|
377
|
+
return new Date(bdsTime + START_BDS_TIME.getTime());
|
|
378
|
+
}
|
|
379
|
+
function getUnixTime(date) {
|
|
380
|
+
const utc_date = getUtcDate(date);
|
|
381
|
+
return utc_date.getTime();
|
|
382
|
+
}
|
|
383
|
+
function getDateFromUnixTime(unixTime) {
|
|
384
|
+
return getDateFromUtc(new Date(unixTime));
|
|
385
|
+
}
|
|
386
|
+
function getWeekNumber(date) {
|
|
387
|
+
return Math.floor(getGpsTime(date) / MILLISECONDS_IN_WEEK);
|
|
388
|
+
}
|
|
389
|
+
function getTimeOfWeek(date) {
|
|
390
|
+
return getGpsTime(date) % MILLISECONDS_IN_WEEK;
|
|
391
|
+
}
|
|
392
|
+
function getDateFromGpsData(weekNumber, timeOfWeek) {
|
|
393
|
+
return new Date(
|
|
394
|
+
weekNumber * MILLISECONDS_IN_WEEK + timeOfWeek + START_GPS_TIME.getTime()
|
|
395
|
+
);
|
|
396
|
+
}
|
|
397
|
+
function getTaiDate(date) {
|
|
398
|
+
return new Date(date.getTime() + MILLISECONDS_GPS_TAI);
|
|
399
|
+
}
|
|
400
|
+
function getDateFromTai(tai_date) {
|
|
401
|
+
return new Date(tai_date.getTime() - MILLISECONDS_GPS_TAI);
|
|
402
|
+
}
|
|
403
|
+
function getTtDate(date) {
|
|
404
|
+
return new Date(date.getTime() + MILLISECONDS_GPS_TAI + MILLISECONDS_TT_TAI);
|
|
405
|
+
}
|
|
406
|
+
function getDateFromTt(tt_date) {
|
|
407
|
+
return new Date(
|
|
408
|
+
tt_date.getTime() - MILLISECONDS_GPS_TAI - MILLISECONDS_TT_TAI
|
|
409
|
+
);
|
|
410
|
+
}
|
|
411
|
+
function getGloN4(date) {
|
|
412
|
+
return Math.floor((date.getUTCFullYear() - START_GLO_LEAP.getFullYear()) / 4);
|
|
413
|
+
}
|
|
414
|
+
function getGloNA(date) {
|
|
415
|
+
const n4 = getGloN4(date);
|
|
416
|
+
const init4YearPeriod = new Date(START_GLO_LEAP);
|
|
417
|
+
init4YearPeriod.setUTCFullYear(init4YearPeriod.getUTCFullYear() + n4 * 4);
|
|
418
|
+
return Math.floor(getTimeDifference(init4YearPeriod, date) / MILLISECONDS_IN_DAY) + 1;
|
|
419
|
+
}
|
|
420
|
+
function getDateFromGloN(n4, na, tod) {
|
|
421
|
+
const date = new Date(START_GLO_LEAP);
|
|
422
|
+
date.setFullYear(date.getUTCFullYear() + n4 * 4);
|
|
423
|
+
date.setTime(date.getTime() + (na - 1) * MILLISECONDS_IN_DAY + tod);
|
|
424
|
+
return date;
|
|
425
|
+
}
|
|
426
|
+
function getNtpTime(date) {
|
|
427
|
+
return getTaiDate(date).getTime() - START_NTP_TIME.getTime();
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
// src/time/rinex.ts
|
|
431
|
+
function getRINEX(date) {
|
|
432
|
+
const seconds = date.getUTCSeconds();
|
|
433
|
+
const milliseconds = date.getUTCMilliseconds();
|
|
434
|
+
const fractionalSeconds = (milliseconds / MILLISECONDS_IN_SECOND).toFixed(7).slice(1);
|
|
435
|
+
const formatted = `> ${date.getUTCFullYear()} ${String(
|
|
436
|
+
date.getUTCMonth() + 1
|
|
437
|
+
).padStart(2, "0")} ${String(date.getUTCDate()).padStart(2, "0")} ${String(
|
|
438
|
+
date.getUTCHours()
|
|
439
|
+
).padStart(2, "0")} ${String(date.getUTCMinutes()).padStart(
|
|
440
|
+
2,
|
|
441
|
+
"0"
|
|
442
|
+
)} ${String(seconds).padStart(2, "0")}${fractionalSeconds}`;
|
|
443
|
+
return formatted;
|
|
444
|
+
}
|
|
445
|
+
function getDateFromRINEX(rinex) {
|
|
446
|
+
const year = Number.parseInt(rinex.substring(2, 6));
|
|
447
|
+
const month = Number.parseInt(rinex.substring(7, 9)) - 1;
|
|
448
|
+
const day = Number.parseInt(rinex.substring(10, 12));
|
|
449
|
+
const hour = Number.parseInt(rinex.substring(13, 15));
|
|
450
|
+
const minute = Number.parseInt(rinex.substring(16, 18));
|
|
451
|
+
const second = Number.parseInt(rinex.substring(19, 21));
|
|
452
|
+
const millisecond = Number.parseInt(rinex.substring(22, 29)) / 1e4;
|
|
453
|
+
const date = new Date(
|
|
454
|
+
Date.UTC(year, month, day, hour, minute, second, millisecond)
|
|
455
|
+
);
|
|
456
|
+
return date;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
// src/time/julian.ts
|
|
460
|
+
function getJulianDate(date, scale = 1 /* TT */) {
|
|
461
|
+
if (scale === 0 /* TAI */) {
|
|
462
|
+
return (date.getTime() - START_TAI_TIME.getTime()) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
|
|
463
|
+
}
|
|
464
|
+
if (scale === 2 /* GPS */) {
|
|
465
|
+
return (date.getTime() - START_TAI_TIME.getTime() - MILLISECONDS_GPS_TAI) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
|
|
466
|
+
}
|
|
467
|
+
if (scale === 3 /* UTC */) {
|
|
468
|
+
return (date.getTime() - START_TAI_TIME.getTime() - getLeap(date) * MILLISECONDS_IN_SECOND) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
|
|
469
|
+
}
|
|
470
|
+
return (date.getTime() - START_TAI_TIME.getTime() + MILLISECONDS_TT_TAI) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
|
|
471
|
+
}
|
|
472
|
+
function getDateFromJulianDate(julianDate, scale = 1 /* TT */) {
|
|
473
|
+
if (scale === 0 /* TAI */) {
|
|
474
|
+
return new Date(
|
|
475
|
+
(julianDate - START_JULIAN_TAI) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime()
|
|
476
|
+
);
|
|
477
|
+
}
|
|
478
|
+
if (scale === 2 /* GPS */) {
|
|
479
|
+
return new Date(
|
|
480
|
+
(julianDate - START_JULIAN_TAI) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime() + MILLISECONDS_GPS_TAI
|
|
481
|
+
);
|
|
482
|
+
}
|
|
483
|
+
if (scale === 3 /* UTC */) {
|
|
484
|
+
const utc_date = new Date(
|
|
485
|
+
(julianDate - START_JULIAN_TAI) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime()
|
|
486
|
+
);
|
|
487
|
+
const tai_date = new Date(
|
|
488
|
+
utc_date.getTime() + getLeap(utc_date) * MILLISECONDS_IN_SECOND
|
|
489
|
+
);
|
|
490
|
+
const leap_seconds = getLeap(getDateFromTai(tai_date));
|
|
491
|
+
return new Date(utc_date.getTime() + leap_seconds * MILLISECONDS_IN_SECOND);
|
|
492
|
+
}
|
|
493
|
+
return new Date(
|
|
494
|
+
(julianDate - START_JULIAN_TAI) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime() - MILLISECONDS_TT_TAI
|
|
495
|
+
);
|
|
496
|
+
}
|
|
497
|
+
function getMJD(date, scale = 1 /* TT */) {
|
|
498
|
+
return getJulianDate(date, scale) - DAYS_MJD_JULIAN;
|
|
499
|
+
}
|
|
500
|
+
function getDateFromMJD(mjd, scale = 1 /* TT */) {
|
|
501
|
+
return getDateFromJulianDate(mjd + DAYS_MJD_JULIAN, scale);
|
|
502
|
+
}
|
|
503
|
+
function getMJD2000(date, scale = 1 /* TT */) {
|
|
504
|
+
return getMJD(date, scale) - DAYS_MJD2000_MJD;
|
|
505
|
+
}
|
|
506
|
+
function getDateFromMJD2000(mjd2000, scale = 1 /* TT */) {
|
|
507
|
+
return getDateFromMJD(mjd2000 + DAYS_MJD2000_MJD, scale);
|
|
508
|
+
}
|
|
509
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
510
|
+
0 && (module.exports = {
|
|
511
|
+
DAYS_MJD2000_MJD,
|
|
512
|
+
DAYS_MJD_JULIAN,
|
|
513
|
+
MILLISECONDS_GPS_TAI,
|
|
514
|
+
MILLISECONDS_IN_DAY,
|
|
515
|
+
MILLISECONDS_IN_HOUR,
|
|
516
|
+
MILLISECONDS_IN_MINUTE,
|
|
517
|
+
MILLISECONDS_IN_SECOND,
|
|
518
|
+
MILLISECONDS_IN_WEEK,
|
|
519
|
+
MILLISECONDS_TT_TAI,
|
|
520
|
+
RINEX_CODES,
|
|
521
|
+
SECONDS_IN_DAY,
|
|
522
|
+
SECONDS_IN_HOUR,
|
|
523
|
+
SECONDS_IN_MINUTE,
|
|
524
|
+
SECONDS_IN_WEEK,
|
|
525
|
+
START_BDS_TIME,
|
|
526
|
+
START_GAL_TIME,
|
|
527
|
+
START_GLO_LEAP,
|
|
528
|
+
START_GPS_TIME,
|
|
529
|
+
START_JULIAN_TAI,
|
|
530
|
+
START_MJD_UNIX_SECONDS,
|
|
531
|
+
START_NTP_TIME,
|
|
532
|
+
START_TAI_TIME,
|
|
533
|
+
START_UNIX_TIME,
|
|
534
|
+
Scale,
|
|
535
|
+
getBdsTime,
|
|
536
|
+
getDateFromBdsTime,
|
|
537
|
+
getDateFromDayOfWeek,
|
|
538
|
+
getDateFromDayOfYear,
|
|
539
|
+
getDateFromGalTime,
|
|
540
|
+
getDateFromGloN,
|
|
541
|
+
getDateFromGpsData,
|
|
542
|
+
getDateFromGpsTime,
|
|
543
|
+
getDateFromHourCode,
|
|
544
|
+
getDateFromJulianDate,
|
|
545
|
+
getDateFromMJD,
|
|
546
|
+
getDateFromMJD2000,
|
|
547
|
+
getDateFromRINEX,
|
|
548
|
+
getDateFromTai,
|
|
549
|
+
getDateFromTimeOfDay,
|
|
550
|
+
getDateFromTt,
|
|
551
|
+
getDateFromUnixTime,
|
|
552
|
+
getDateFromUtc,
|
|
553
|
+
getDayOfWeek,
|
|
554
|
+
getDayOfYear,
|
|
555
|
+
getGalTime,
|
|
556
|
+
getGloN4,
|
|
557
|
+
getGloNA,
|
|
558
|
+
getGpsLeap,
|
|
559
|
+
getGpsTime,
|
|
560
|
+
getHourCode,
|
|
561
|
+
getHoursFromTimeDifference,
|
|
562
|
+
getJulianDate,
|
|
563
|
+
getLeap,
|
|
564
|
+
getMJD,
|
|
565
|
+
getMJD2000,
|
|
566
|
+
getMinutesFromTimeDifference,
|
|
567
|
+
getNtpTime,
|
|
568
|
+
getRINEX,
|
|
569
|
+
getSecondsFromTimeDifference,
|
|
570
|
+
getTaiDate,
|
|
571
|
+
getTimeDifference,
|
|
572
|
+
getTimeDifferenceFromDays,
|
|
573
|
+
getTimeDifferenceFromHours,
|
|
574
|
+
getTimeDifferenceFromMinutes,
|
|
575
|
+
getTimeDifferenceFromObject,
|
|
576
|
+
getTimeDifferenceFromSeconds,
|
|
577
|
+
getTimeOfDay,
|
|
578
|
+
getTimeOfWeek,
|
|
579
|
+
getTotalDaysFromTimeDifference,
|
|
580
|
+
getTtDate,
|
|
581
|
+
getUnixTime,
|
|
582
|
+
getUtcDate,
|
|
583
|
+
getWeekNumber,
|
|
584
|
+
getWeekOfYear
|
|
585
|
+
});
|