gnss-js 0.1.1 → 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.
Files changed (88) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +171 -5
  3. package/dist/analysis.cjs +1381 -0
  4. package/dist/analysis.d.cts +211 -0
  5. package/dist/analysis.d.ts +211 -0
  6. package/dist/analysis.js +14 -0
  7. package/dist/antex.cjs +239 -0
  8. package/dist/antex.d.cts +77 -0
  9. package/dist/antex.d.ts +77 -0
  10. package/dist/antex.js +8 -0
  11. package/dist/chunk-354IRDOG.js +239 -0
  12. package/dist/chunk-37QNKGTC.js +65 -0
  13. package/dist/chunk-5CMSYIYM.js +214 -0
  14. package/dist/chunk-5S5MONFK.js +0 -0
  15. package/dist/chunk-6FAL6P4G.js +12 -0
  16. package/dist/{index.mjs → chunk-7NOFXKET.js} +179 -198
  17. package/dist/chunk-CB6EOOLA.js +753 -0
  18. package/dist/chunk-HKN3PUGN.js +800 -0
  19. package/dist/chunk-IS4UUDBV.js +577 -0
  20. package/dist/chunk-K7WZQFBV.js +236 -0
  21. package/dist/chunk-LEEU5OIO.js +75 -0
  22. package/dist/chunk-PRSZIWKM.js +1482 -0
  23. package/dist/chunk-SDRRAJT5.js +433 -0
  24. package/dist/chunk-WR7LCB52.js +143 -0
  25. package/dist/chunk-Y3R57B5P.js +473 -0
  26. package/dist/chunk-YDMYO3YK.js +220 -0
  27. package/dist/constants.cjs +394 -0
  28. package/dist/constants.d.cts +14 -0
  29. package/dist/constants.d.ts +14 -0
  30. package/dist/constants.js +103 -0
  31. package/dist/coordinates.cjs +334 -0
  32. package/dist/coordinates.d.cts +81 -0
  33. package/dist/coordinates.d.ts +81 -0
  34. package/dist/coordinates.js +39 -0
  35. package/dist/ecef-CF0uAysr.d.cts +40 -0
  36. package/dist/ecef-CF0uAysr.d.ts +40 -0
  37. package/dist/ephemeris-BUWzfmBy.d.cts +114 -0
  38. package/dist/ephemeris-BUWzfmBy.d.ts +114 -0
  39. package/dist/gnss-BT6ulR17.d.cts +56 -0
  40. package/dist/gnss-C-tgoYNa.d.ts +56 -0
  41. package/dist/index.cjs +6286 -0
  42. package/dist/index.d.cts +17 -0
  43. package/dist/index.d.ts +17 -89
  44. package/dist/index.js +355 -479
  45. package/dist/nav-BAI1a9vK.d.cts +108 -0
  46. package/dist/nav-BAI1a9vK.d.ts +108 -0
  47. package/dist/nmea.cjs +247 -0
  48. package/dist/nmea.d.cts +37 -0
  49. package/dist/nmea.d.ts +37 -0
  50. package/dist/nmea.js +12 -0
  51. package/dist/ntrip.cjs +169 -0
  52. package/dist/ntrip.d.cts +98 -0
  53. package/dist/ntrip.d.ts +98 -0
  54. package/dist/ntrip.js +10 -0
  55. package/dist/orbit.cjs +504 -0
  56. package/dist/orbit.d.cts +117 -0
  57. package/dist/orbit.d.ts +117 -0
  58. package/dist/orbit.js +29 -0
  59. package/dist/parser-JPjjFgeP.d.cts +73 -0
  60. package/dist/parser-JPjjFgeP.d.ts +73 -0
  61. package/dist/rinex.cjs +1375 -0
  62. package/dist/rinex.d.cts +116 -0
  63. package/dist/rinex.d.ts +116 -0
  64. package/dist/rinex.js +37 -0
  65. package/dist/rtcm3.cjs +1519 -0
  66. package/dist/rtcm3.d.cts +143 -0
  67. package/dist/rtcm3.d.ts +143 -0
  68. package/dist/rtcm3.js +31 -0
  69. package/dist/signals.cjs +858 -0
  70. package/dist/signals.d.cts +93 -0
  71. package/dist/signals.d.ts +93 -0
  72. package/dist/signals.js +70 -0
  73. package/dist/time-DnI1VpE8.d.cts +33 -0
  74. package/dist/time-DnI1VpE8.d.ts +33 -0
  75. package/dist/time.cjs +585 -0
  76. package/dist/time.d.cts +307 -0
  77. package/dist/time.d.ts +307 -0
  78. package/dist/time.js +154 -0
  79. package/package.json +112 -12
  80. package/.prettierrc +0 -5
  81. package/dist/index.d.mts +0 -89
  82. package/jest.config.js +0 -6
  83. package/test/functions.test.js +0 -69
  84. package/test/gnss-scales.test.js +0 -95
  85. package/test/julian.test.js +0 -41
  86. package/test/rinex.test.js +0 -11
  87. package/test/test.js +0 -11
  88. package/test/utc.test.js +0 -30
@@ -1,66 +1,45 @@
1
- // src/constants/time.ts
2
- var SECONDS_IN_WEEK = 604800;
3
- var SECONDS_IN_DAY = 86400;
4
- var SECONDS_IN_HOUR = 3600;
5
- var SECONDS_IN_MINUTE = 60;
6
- var MILLISECONDS_IN_WEEK = 6048e5;
7
- var MILLISECONDS_IN_DAY = 864e5;
8
- var MILLISECONDS_IN_HOUR = 36e5;
9
- var MILLISECONDS_IN_MINUTE = 6e4;
10
- var MILLISECONDS_IN_SECOND = 1e3;
11
- var MILLISECONDS_TT_TAI = 32184;
12
- var MILLISECONDS_GPS_TAI = 19e3;
13
- var START_GPS_TIME = /* @__PURE__ */ new Date("1980-01-06T00:00:00Z");
14
- var START_GAL_TIME = /* @__PURE__ */ new Date("1999-08-22T00:00:00Z");
15
- var START_BDS_TIME = /* @__PURE__ */ new Date("2006-01-01T00:00:13Z");
16
- var START_UNIX_TIME = /* @__PURE__ */ new Date("1969-12-31T23:59:49Z");
17
- var START_NTP_TIME = /* @__PURE__ */ new Date("1900-01-01T00:00:00Z");
18
- var START_GLO_LEAP = /* @__PURE__ */ new Date("1996-01-01T00:00:00Z");
19
- var START_TAI_TIME = /* @__PURE__ */ new Date("1957-12-31T23:59:41Z");
20
- var RINEX_CODES = [
21
- "a",
22
- "b",
23
- "c",
24
- "d",
25
- "e",
26
- "f",
27
- "g",
28
- "h",
29
- "i",
30
- "j",
31
- "k",
32
- "l",
33
- "m",
34
- "n",
35
- "o",
36
- "p",
37
- "q",
38
- "r",
39
- "s",
40
- "t",
41
- "u",
42
- "v",
43
- "w",
44
- "x"
45
- ];
46
- var START_JULIAN_TAI = 24362045e-1;
47
- var DAYS_MJD_JULIAN = 24000005e-1;
48
- var DAYS_MJD2000_MJD = 51544.5;
49
- var START_MJD_UNIX_SECONDS = 40587;
1
+ import {
2
+ DAYS_MJD2000_MJD,
3
+ DAYS_MJD_JULIAN,
4
+ MILLISECONDS_GPS_TAI,
5
+ MILLISECONDS_IN_DAY,
6
+ MILLISECONDS_IN_HOUR,
7
+ MILLISECONDS_IN_MINUTE,
8
+ MILLISECONDS_IN_SECOND,
9
+ MILLISECONDS_IN_WEEK,
10
+ MILLISECONDS_TT_TAI,
11
+ RINEX_CODES,
12
+ START_BDS_TIME,
13
+ START_GAL_TIME,
14
+ START_GLO_LEAP,
15
+ START_GPS_TIME,
16
+ START_JULIAN_TAI,
17
+ START_NTP_TIME,
18
+ START_TAI_TIME
19
+ } from "./chunk-LEEU5OIO.js";
20
+
21
+ // src/types/enums.ts
22
+ var Scale = /* @__PURE__ */ ((Scale2) => {
23
+ Scale2[Scale2["TAI"] = 0] = "TAI";
24
+ Scale2[Scale2["TT"] = 1] = "TT";
25
+ Scale2[Scale2["GPS"] = 2] = "GPS";
26
+ Scale2[Scale2["UTC"] = 3] = "UTC";
27
+ return Scale2;
28
+ })(Scale || {});
50
29
 
51
30
  // src/time/functions.ts
52
31
  function getTimeOfDay(date) {
53
- return (date.getTime() - Date.UTC(
32
+ return date.getTime() - Date.UTC(
54
33
  date.getUTCFullYear(),
55
34
  date.getUTCMonth(),
56
35
  date.getUTCDate(),
57
36
  0,
58
37
  0,
59
38
  0
60
- )) / MILLISECONDS_IN_SECOND;
39
+ );
61
40
  }
62
41
  function getDateFromTimeOfDay(timeOfDay, dateRaw) {
63
- const date = new Date(
42
+ return new Date(
64
43
  Date.UTC(
65
44
  dateRaw.getUTCFullYear(),
66
45
  dateRaw.getUTCMonth(),
@@ -68,9 +47,8 @@ function getDateFromTimeOfDay(timeOfDay, dateRaw) {
68
47
  0,
69
48
  0,
70
49
  0
71
- ) + timeOfDay * MILLISECONDS_IN_SECOND
50
+ ) + timeOfDay
72
51
  );
73
- return date;
74
52
  }
75
53
  function getDayOfYear(date) {
76
54
  return Math.floor(
@@ -162,70 +140,68 @@ function getTimeDifferenceFromObject(timeDifferenceObject) {
162
140
  }
163
141
 
164
142
  // src/time/utc.ts
143
+ var LEAP_SECONDS_TABLE = [
144
+ [3692217600, 37],
145
+ // 1 Jan 2017
146
+ [3644697600, 36],
147
+ // 1 Jul 2015
148
+ [3550089600, 35],
149
+ // 1 Jul 2012
150
+ [3439756800, 34],
151
+ // 1 Jan 2009
152
+ [3345062400, 33],
153
+ // 1 Jan 2006
154
+ [3124137600, 32],
155
+ // 1 Jan 1999
156
+ [3076704e3, 31],
157
+ // 1 Jul 1997
158
+ [3029443200, 30],
159
+ // 1 Jan 1996
160
+ [2982009600, 29],
161
+ // 1 Jul 1994
162
+ [2950473600, 28],
163
+ // 1 Jul 1993
164
+ [2918937600, 27],
165
+ // 1 Jul 1992
166
+ [2871676800, 26],
167
+ // 1 Jan 1991
168
+ [2840140800, 25],
169
+ // 1 Jan 1990
170
+ [2776982400, 24],
171
+ // 1 Jan 1988
172
+ [2698012800, 23],
173
+ // 1 Jul 1985
174
+ [2634854400, 22],
175
+ // 1 Jul 1983
176
+ [2603318400, 21],
177
+ // 1 Jul 1982
178
+ [2571782400, 20],
179
+ // 1 Jul 1981
180
+ [2524521600, 19],
181
+ // 1 Jan 1980
182
+ [2492985600, 18],
183
+ // 1 Jan 1979
184
+ [2461449600, 17],
185
+ // 1 Jan 1978
186
+ [2429913600, 16],
187
+ // 1 Jan 1977
188
+ [2398291200, 15],
189
+ // 1 Jan 1976
190
+ [2366755200, 14],
191
+ // 1 Jan 1975
192
+ [2335219200, 13],
193
+ // 1 Jan 1974
194
+ [2303683200, 12],
195
+ // 1 Jan 1973
196
+ [2287785600, 11],
197
+ // 1 Jul 1972
198
+ [2272060800, 10]
199
+ // 1 Jan 1972
200
+ ];
165
201
  function getLeap(date) {
166
202
  const ntp_time = getNtpTime(date);
167
- const leapSecondsMap = {
168
- 2272060800: 10,
169
- // 1 Jan 1972
170
- 2287785600: 11,
171
- // 1 Jul 1972
172
- 2303683200: 12,
173
- // 1 Jan 1973
174
- 2335219200: 13,
175
- // 1 Jan 1974
176
- 2366755200: 14,
177
- // 1 Jan 1975
178
- 2398291200: 15,
179
- // 1 Jan 1976
180
- 2429913600: 16,
181
- // 1 Jan 1977
182
- 2461449600: 17,
183
- // 1 Jan 1978
184
- 2492985600: 18,
185
- // 1 Jan 1979
186
- 2524521600: 19,
187
- // 1 Jan 1980
188
- 2571782400: 20,
189
- // 1 Jul 1981
190
- 2603318400: 21,
191
- // 1 Jul 1982
192
- 2634854400: 22,
193
- // 1 Jul 1983
194
- 2698012800: 23,
195
- // 1 Jul 1985
196
- 2776982400: 24,
197
- // 1 Jan 1988
198
- 2840140800: 25,
199
- // 1 Jan 1990
200
- 2871676800: 26,
201
- // 1 Jan 1991
202
- 2918937600: 27,
203
- // 1 Jul 1992
204
- 2950473600: 28,
205
- // 1 Jul 1993
206
- 2982009600: 29,
207
- // 1 Jul 1994
208
- 3029443200: 30,
209
- // 1 Jan 1996
210
- 3076704e3: 31,
211
- // 1 Jul 1997
212
- 3124137600: 32,
213
- // 1 Jan 1999
214
- 3345062400: 33,
215
- // 1 Jan 2006
216
- 3439756800: 34,
217
- // 1 Jan 2009
218
- 3550089600: 35,
219
- // 1 Jul 2012
220
- 3644697600: 36,
221
- // 1 Jul 2015
222
- 3692217600: 37
223
- // 1 Jan 2017
224
- };
225
- for (const [timestamp, leapSeconds] of Object.entries(
226
- leapSecondsMap
227
- ).reverse()) {
228
- if (ntp_time / MILLISECONDS_IN_SECOND - leapSeconds >= Number(timestamp)) {
203
+ for (const [timestamp, leapSeconds] of LEAP_SECONDS_TABLE) {
204
+ if (ntp_time / MILLISECONDS_IN_SECOND - leapSeconds >= timestamp) {
229
205
  return leapSeconds;
230
206
  }
231
207
  }
@@ -233,8 +209,7 @@ function getLeap(date) {
233
209
  }
234
210
  function getGpsLeap(date) {
235
211
  const leap_seconds = getLeap(date);
236
- if (leap_seconds < 0)
237
- return 0;
212
+ if (leap_seconds < 0) return 0;
238
213
  return leap_seconds - 19;
239
214
  }
240
215
  function getUtcDate(date) {
@@ -283,11 +258,11 @@ function getWeekNumber(date) {
283
258
  return Math.floor(getGpsTime(date) / MILLISECONDS_IN_WEEK);
284
259
  }
285
260
  function getTimeOfWeek(date) {
286
- return getGpsTime(date) % MILLISECONDS_IN_WEEK / MILLISECONDS_IN_SECOND;
261
+ return getGpsTime(date) % MILLISECONDS_IN_WEEK;
287
262
  }
288
263
  function getDateFromGpsData(weekNumber, timeOfWeek) {
289
264
  return new Date(
290
- weekNumber * MILLISECONDS_IN_WEEK + timeOfWeek * MILLISECONDS_IN_SECOND + START_GPS_TIME.getTime()
265
+ weekNumber * MILLISECONDS_IN_WEEK + timeOfWeek + START_GPS_TIME.getTime()
291
266
  );
292
267
  }
293
268
  function getTaiDate(date) {
@@ -316,9 +291,7 @@ function getGloNA(date) {
316
291
  function getDateFromGloN(n4, na, tod) {
317
292
  const date = new Date(START_GLO_LEAP);
318
293
  date.setFullYear(date.getUTCFullYear() + n4 * 4);
319
- date.setTime(
320
- date.getTime() + (na - 1) * MILLISECONDS_IN_DAY + tod * MILLISECONDS_IN_SECOND
321
- );
294
+ date.setTime(date.getTime() + (na - 1) * MILLISECONDS_IN_DAY + tod);
322
295
  return date;
323
296
  }
324
297
  function getNtpTime(date) {
@@ -355,98 +328,106 @@ function getDateFromRINEX(rinex) {
355
328
  }
356
329
 
357
330
  // src/time/julian.ts
358
- function getJulianDate(date) {
359
- return (date.getTime() - START_TAI_TIME.getTime()) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
331
+ function getJulianDate(date, scale = 1 /* TT */) {
332
+ if (scale === 0 /* TAI */) {
333
+ return (date.getTime() - START_TAI_TIME.getTime()) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
334
+ }
335
+ if (scale === 2 /* GPS */) {
336
+ return (date.getTime() - START_TAI_TIME.getTime() - MILLISECONDS_GPS_TAI) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
337
+ }
338
+ if (scale === 3 /* UTC */) {
339
+ return (date.getTime() - START_TAI_TIME.getTime() - getLeap(date) * MILLISECONDS_IN_SECOND) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
340
+ }
341
+ return (date.getTime() - START_TAI_TIME.getTime() + MILLISECONDS_TT_TAI) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
360
342
  }
361
- function getDateFromJulianDate(julianDate) {
343
+ function getDateFromJulianDate(julianDate, scale = 1 /* TT */) {
344
+ if (scale === 0 /* TAI */) {
345
+ return new Date(
346
+ (julianDate - START_JULIAN_TAI) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime()
347
+ );
348
+ }
349
+ if (scale === 2 /* GPS */) {
350
+ return new Date(
351
+ (julianDate - START_JULIAN_TAI) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime() + MILLISECONDS_GPS_TAI
352
+ );
353
+ }
354
+ if (scale === 3 /* UTC */) {
355
+ const utc_date = new Date(
356
+ (julianDate - START_JULIAN_TAI) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime()
357
+ );
358
+ const tai_date = new Date(
359
+ utc_date.getTime() + getLeap(utc_date) * MILLISECONDS_IN_SECOND
360
+ );
361
+ const leap_seconds = getLeap(getDateFromTai(tai_date));
362
+ return new Date(utc_date.getTime() + leap_seconds * MILLISECONDS_IN_SECOND);
363
+ }
362
364
  return new Date(
363
- (julianDate - 24362045e-1) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime()
365
+ (julianDate - START_JULIAN_TAI) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime() - MILLISECONDS_TT_TAI
364
366
  );
365
367
  }
366
- function getMJD(date) {
367
- return getJulianDate(date) - DAYS_MJD_JULIAN;
368
+ function getMJD(date, scale = 1 /* TT */) {
369
+ return getJulianDate(date, scale) - DAYS_MJD_JULIAN;
368
370
  }
369
- function getDateFromMJD(mjd) {
370
- return getDateFromJulianDate(mjd + DAYS_MJD_JULIAN);
371
+ function getDateFromMJD(mjd, scale = 1 /* TT */) {
372
+ return getDateFromJulianDate(mjd + DAYS_MJD_JULIAN, scale);
371
373
  }
372
- function getMJD2000(date) {
373
- return getMJD(date) - DAYS_MJD2000_MJD;
374
+ function getMJD2000(date, scale = 1 /* TT */) {
375
+ return getMJD(date, scale) - DAYS_MJD2000_MJD;
374
376
  }
375
- function getDateFromMJD2000(mjd2000) {
376
- return getDateFromMJD(mjd2000 + DAYS_MJD2000_MJD);
377
+ function getDateFromMJD2000(mjd2000, scale = 1 /* TT */) {
378
+ return getDateFromMJD(mjd2000 + DAYS_MJD2000_MJD, scale);
377
379
  }
380
+
378
381
  export {
379
- DAYS_MJD2000_MJD,
380
- DAYS_MJD_JULIAN,
381
- MILLISECONDS_GPS_TAI,
382
- MILLISECONDS_IN_DAY,
383
- MILLISECONDS_IN_HOUR,
384
- MILLISECONDS_IN_MINUTE,
385
- MILLISECONDS_IN_SECOND,
386
- MILLISECONDS_IN_WEEK,
387
- MILLISECONDS_TT_TAI,
388
- RINEX_CODES,
389
- SECONDS_IN_DAY,
390
- SECONDS_IN_HOUR,
391
- SECONDS_IN_MINUTE,
392
- SECONDS_IN_WEEK,
393
- START_BDS_TIME,
394
- START_GAL_TIME,
395
- START_GLO_LEAP,
396
- START_GPS_TIME,
397
- START_JULIAN_TAI,
398
- START_MJD_UNIX_SECONDS,
399
- START_NTP_TIME,
400
- START_TAI_TIME,
401
- START_UNIX_TIME,
402
- getBdsTime,
403
- getDateFromBdsTime,
404
- getDateFromDayOfWeek,
382
+ Scale,
383
+ getTimeOfDay,
384
+ getDateFromTimeOfDay,
385
+ getDayOfYear,
405
386
  getDateFromDayOfYear,
387
+ getDayOfWeek,
388
+ getDateFromDayOfWeek,
389
+ getDateFromHourCode,
390
+ getHourCode,
391
+ getWeekOfYear,
392
+ getTimeDifference,
393
+ getSecondsFromTimeDifference,
394
+ getMinutesFromTimeDifference,
395
+ getHoursFromTimeDifference,
396
+ getTotalDaysFromTimeDifference,
397
+ getTimeDifferenceFromSeconds,
398
+ getTimeDifferenceFromMinutes,
399
+ getTimeDifferenceFromHours,
400
+ getTimeDifferenceFromDays,
401
+ getTimeDifferenceFromObject,
402
+ getLeap,
403
+ getGpsLeap,
404
+ getUtcDate,
405
+ getDateFromUtc,
406
+ getGpsTime,
407
+ getDateFromGpsTime,
408
+ getGalTime,
406
409
  getDateFromGalTime,
407
- getDateFromGloN,
410
+ getBdsTime,
411
+ getDateFromBdsTime,
412
+ getUnixTime,
413
+ getDateFromUnixTime,
414
+ getWeekNumber,
415
+ getTimeOfWeek,
408
416
  getDateFromGpsData,
409
- getDateFromGpsTime,
410
- getDateFromHourCode,
411
- getDateFromJulianDate,
412
- getDateFromMJD,
413
- getDateFromMJD2000,
414
- getDateFromRINEX,
417
+ getTaiDate,
415
418
  getDateFromTai,
416
- getDateFromTimeOfDay,
419
+ getTtDate,
417
420
  getDateFromTt,
418
- getDateFromUnixTime,
419
- getDateFromUtc,
420
- getDayOfWeek,
421
- getDayOfYear,
422
- getGalTime,
423
421
  getGloN4,
424
422
  getGloNA,
425
- getGpsLeap,
426
- getGpsTime,
427
- getHourCode,
428
- getHoursFromTimeDifference,
423
+ getDateFromGloN,
424
+ getNtpTime,
425
+ getRINEX,
426
+ getDateFromRINEX,
429
427
  getJulianDate,
430
- getLeap,
428
+ getDateFromJulianDate,
431
429
  getMJD,
430
+ getDateFromMJD,
432
431
  getMJD2000,
433
- getMinutesFromTimeDifference,
434
- getNtpTime,
435
- getRINEX,
436
- getSecondsFromTimeDifference,
437
- getTaiDate,
438
- getTimeDifference,
439
- getTimeDifferenceFromDays,
440
- getTimeDifferenceFromHours,
441
- getTimeDifferenceFromMinutes,
442
- getTimeDifferenceFromObject,
443
- getTimeDifferenceFromSeconds,
444
- getTimeOfDay,
445
- getTimeOfWeek,
446
- getTotalDaysFromTimeDifference,
447
- getTtDate,
448
- getUnixTime,
449
- getUtcDate,
450
- getWeekNumber,
451
- getWeekOfYear
432
+ getDateFromMJD2000
452
433
  };