gnss-js 0.1.0 → 0.1.2

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/index.js CHANGED
@@ -1,103 +1,3 @@
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/index.ts
21
- var src_exports = {};
22
- __export(src_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_CALENDAR_UNIX_SECONDS: () => START_JULIAN_CALENDAR_UNIX_SECONDS,
42
- START_JULIAN_TAI: () => START_JULIAN_TAI,
43
- START_LEAP_SECS_GPS: () => START_LEAP_SECS_GPS,
44
- START_MJD2000_TIME: () => START_MJD2000_TIME,
45
- START_MJD_UNIX_SECONDS: () => START_MJD_UNIX_SECONDS,
46
- START_NTP_TIME: () => START_NTP_TIME,
47
- START_TAI_TIME: () => START_TAI_TIME,
48
- START_UNIX_TIME: () => START_UNIX_TIME,
49
- getBdsTime: () => getBdsTime,
50
- getDateFromBdsTime: () => getDateFromBdsTime,
51
- getDateFromDayOfWeek: () => getDateFromDayOfWeek,
52
- getDateFromDayOfYear: () => getDateFromDayOfYear,
53
- getDateFromGalTime: () => getDateFromGalTime,
54
- getDateFromGloN: () => getDateFromGloN,
55
- getDateFromGpsData: () => getDateFromGpsData,
56
- getDateFromGpsTime: () => getDateFromGpsTime,
57
- getDateFromHourCode: () => getDateFromHourCode,
58
- getDateFromJulianDate: () => getDateFromJulianDate,
59
- getDateFromMJD: () => getDateFromMJD,
60
- getDateFromMJD2000: () => getDateFromMJD2000,
61
- getDateFromRINEX: () => getDateFromRINEX,
62
- getDateFromTAI: () => getDateFromTAI,
63
- getDateFromTT: () => getDateFromTT,
64
- getDateFromTimeOfDay: () => getDateFromTimeOfDay,
65
- getDateFromUnixTime: () => getDateFromUnixTime,
66
- getDayOfWeek: () => getDayOfWeek,
67
- getDayOfYear: () => getDayOfYear,
68
- getGalTime: () => getGalTime,
69
- getGloN4: () => getGloN4,
70
- getGloNA: () => getGloNA,
71
- getGpsLeap: () => getGpsLeap,
72
- getGpsTime: () => getGpsTime,
73
- getHourCode: () => getHourCode,
74
- getHoursFromTimeDifference: () => getHoursFromTimeDifference,
75
- getJulianDate: () => getJulianDate,
76
- getLeap: () => getLeap,
77
- getMJD: () => getMJD,
78
- getMJD2000: () => getMJD2000,
79
- getMinutesFromTimeDifference: () => getMinutesFromTimeDifference,
80
- getNtpTime: () => getNtpTime,
81
- getRINEX: () => getRINEX,
82
- getSecondsFromTimeDifference: () => getSecondsFromTimeDifference,
83
- getTAIDate: () => getTAIDate,
84
- getTTDate: () => getTTDate,
85
- getTimeDifference: () => getTimeDifference,
86
- getTimeDifferenceFromDays: () => getTimeDifferenceFromDays,
87
- getTimeDifferenceFromHours: () => getTimeDifferenceFromHours,
88
- getTimeDifferenceFromMinutes: () => getTimeDifferenceFromMinutes,
89
- getTimeDifferenceFromObject: () => getTimeDifferenceFromObject,
90
- getTimeDifferenceFromSeconds: () => getTimeDifferenceFromSeconds,
91
- getTimeOfDay: () => getTimeOfDay,
92
- getTimeOfWeek: () => getTimeOfWeek,
93
- getTotalDaysFromTimeDifference: () => getTotalDaysFromTimeDifference,
94
- getUnixTime: () => getUnixTime,
95
- getUtcDate: () => getUtcDate,
96
- getWeekNumber: () => getWeekNumber,
97
- getWeekOfYear: () => getWeekOfYear
98
- });
99
- module.exports = __toCommonJS(src_exports);
100
-
101
1
  // src/constants/time.ts
102
2
  var SECONDS_IN_WEEK = 604800;
103
3
  var SECONDS_IN_DAY = 86400;
@@ -110,14 +10,12 @@ var MILLISECONDS_IN_MINUTE = 6e4;
110
10
  var MILLISECONDS_IN_SECOND = 1e3;
111
11
  var MILLISECONDS_TT_TAI = 32184;
112
12
  var MILLISECONDS_GPS_TAI = 19e3;
113
- var START_LEAP_SECS_GPS = 19;
114
13
  var START_GPS_TIME = /* @__PURE__ */ new Date("1980-01-06T00:00:00Z");
115
14
  var START_GAL_TIME = /* @__PURE__ */ new Date("1999-08-22T00:00:00Z");
116
- var START_BDS_TIME = /* @__PURE__ */ new Date("2006-01-01T00:00:00Z");
117
- var START_UNIX_TIME = /* @__PURE__ */ new Date("1970-01-01T00: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");
118
17
  var START_NTP_TIME = /* @__PURE__ */ new Date("1900-01-01T00:00:00Z");
119
18
  var START_GLO_LEAP = /* @__PURE__ */ new Date("1996-01-01T00:00:00Z");
120
- var START_MJD2000_TIME = /* @__PURE__ */ new Date("2000-01-01T00:00:00Z");
121
19
  var START_TAI_TIME = /* @__PURE__ */ new Date("1957-12-31T23:59:41Z");
122
20
  var RINEX_CODES = [
123
21
  "a",
@@ -145,12 +43,20 @@ var RINEX_CODES = [
145
43
  "w",
146
44
  "x"
147
45
  ];
148
- var START_JULIAN_CALENDAR_UNIX_SECONDS = 24405875e-1;
149
46
  var START_JULIAN_TAI = 24362045e-1;
150
47
  var DAYS_MJD_JULIAN = 24000005e-1;
151
48
  var DAYS_MJD2000_MJD = 51544.5;
152
49
  var START_MJD_UNIX_SECONDS = 40587;
153
50
 
51
+ // src/types/enums.ts
52
+ var Scale = /* @__PURE__ */ ((Scale2) => {
53
+ Scale2[Scale2["TAI"] = 0] = "TAI";
54
+ Scale2[Scale2["TT"] = 1] = "TT";
55
+ Scale2[Scale2["GPS"] = 2] = "GPS";
56
+ Scale2[Scale2["UTC"] = 3] = "UTC";
57
+ return Scale2;
58
+ })(Scale || {});
59
+
154
60
  // src/time/functions.ts
155
61
  function getTimeOfDay(date) {
156
62
  return (date.getTime() - Date.UTC(
@@ -264,6 +170,97 @@ function getTimeDifferenceFromObject(timeDifferenceObject) {
264
170
  return getTimeDifferenceFromSeconds(seconds) + getTimeDifferenceFromMinutes(minutes) + getTimeDifferenceFromHours(hours) + getTimeDifferenceFromDays(days);
265
171
  }
266
172
 
173
+ // src/time/utc.ts
174
+ function getLeap(date) {
175
+ const ntp_time = getNtpTime(date);
176
+ const leapSecondsMap = {
177
+ 2272060800: 10,
178
+ // 1 Jan 1972
179
+ 2287785600: 11,
180
+ // 1 Jul 1972
181
+ 2303683200: 12,
182
+ // 1 Jan 1973
183
+ 2335219200: 13,
184
+ // 1 Jan 1974
185
+ 2366755200: 14,
186
+ // 1 Jan 1975
187
+ 2398291200: 15,
188
+ // 1 Jan 1976
189
+ 2429913600: 16,
190
+ // 1 Jan 1977
191
+ 2461449600: 17,
192
+ // 1 Jan 1978
193
+ 2492985600: 18,
194
+ // 1 Jan 1979
195
+ 2524521600: 19,
196
+ // 1 Jan 1980
197
+ 2571782400: 20,
198
+ // 1 Jul 1981
199
+ 2603318400: 21,
200
+ // 1 Jul 1982
201
+ 2634854400: 22,
202
+ // 1 Jul 1983
203
+ 2698012800: 23,
204
+ // 1 Jul 1985
205
+ 2776982400: 24,
206
+ // 1 Jan 1988
207
+ 2840140800: 25,
208
+ // 1 Jan 1990
209
+ 2871676800: 26,
210
+ // 1 Jan 1991
211
+ 2918937600: 27,
212
+ // 1 Jul 1992
213
+ 2950473600: 28,
214
+ // 1 Jul 1993
215
+ 2982009600: 29,
216
+ // 1 Jul 1994
217
+ 3029443200: 30,
218
+ // 1 Jan 1996
219
+ 3076704e3: 31,
220
+ // 1 Jul 1997
221
+ 3124137600: 32,
222
+ // 1 Jan 1999
223
+ 3345062400: 33,
224
+ // 1 Jan 2006
225
+ 3439756800: 34,
226
+ // 1 Jan 2009
227
+ 3550089600: 35,
228
+ // 1 Jul 2012
229
+ 3644697600: 36,
230
+ // 1 Jul 2015
231
+ 3692217600: 37
232
+ // 1 Jan 2017
233
+ };
234
+ for (const [timestamp, leapSeconds] of Object.entries(
235
+ leapSecondsMap
236
+ ).reverse()) {
237
+ if (ntp_time / MILLISECONDS_IN_SECOND - leapSeconds >= Number(timestamp)) {
238
+ return leapSeconds;
239
+ }
240
+ }
241
+ return 8;
242
+ }
243
+ function getGpsLeap(date) {
244
+ const leap_seconds = getLeap(date);
245
+ if (leap_seconds < 0) return 0;
246
+ return leap_seconds - 19;
247
+ }
248
+ function getUtcDate(date) {
249
+ const tai_date = getTaiDate(date);
250
+ const leap_seconds = getLeap(date);
251
+ return new Date(tai_date.getTime() - leap_seconds * MILLISECONDS_IN_SECOND);
252
+ }
253
+ function getDateFromUtc(utc_date) {
254
+ const tai_date = new Date(
255
+ utc_date.getTime() + getLeap(utc_date) * MILLISECONDS_IN_SECOND
256
+ );
257
+ const leap_seconds = getLeap(getDateFromTai(tai_date));
258
+ const gps_date = getDateFromTai(
259
+ new Date(utc_date.getTime() + leap_seconds * MILLISECONDS_IN_SECOND)
260
+ );
261
+ return gps_date;
262
+ }
263
+
267
264
  // src/time/gnss.ts
268
265
  function getGpsTime(date) {
269
266
  return date.getTime() - START_GPS_TIME.getTime();
@@ -284,10 +281,11 @@ function getDateFromBdsTime(bdsTime) {
284
281
  return new Date(bdsTime + START_BDS_TIME.getTime());
285
282
  }
286
283
  function getUnixTime(date) {
287
- return date.getTime() - START_UNIX_TIME.getTime();
284
+ const utc_date = getUtcDate(date);
285
+ return utc_date.getTime();
288
286
  }
289
287
  function getDateFromUnixTime(unixTime) {
290
- return new Date(unixTime + START_UNIX_TIME.getTime());
288
+ return getDateFromUtc(new Date(unixTime));
291
289
  }
292
290
  function getWeekNumber(date) {
293
291
  return Math.floor(getGpsTime(date) / MILLISECONDS_IN_WEEK);
@@ -300,16 +298,16 @@ function getDateFromGpsData(weekNumber, timeOfWeek) {
300
298
  weekNumber * MILLISECONDS_IN_WEEK + timeOfWeek * MILLISECONDS_IN_SECOND + START_GPS_TIME.getTime()
301
299
  );
302
300
  }
303
- function getTAIDate(date) {
301
+ function getTaiDate(date) {
304
302
  return new Date(date.getTime() + MILLISECONDS_GPS_TAI);
305
303
  }
306
- function getDateFromTAI(tai_date) {
304
+ function getDateFromTai(tai_date) {
307
305
  return new Date(tai_date.getTime() - MILLISECONDS_GPS_TAI);
308
306
  }
309
- function getTTDate(date) {
307
+ function getTtDate(date) {
310
308
  return new Date(date.getTime() + MILLISECONDS_GPS_TAI + MILLISECONDS_TT_TAI);
311
309
  }
312
- function getDateFromTT(tt_date) {
310
+ function getDateFromTt(tt_date) {
313
311
  return new Date(
314
312
  tt_date.getTime() - MILLISECONDS_GPS_TAI - MILLISECONDS_TT_TAI
315
313
  );
@@ -332,7 +330,7 @@ function getDateFromGloN(n4, na, tod) {
332
330
  return date;
333
331
  }
334
332
  function getNtpTime(date) {
335
- return getTAIDate(date).getTime() - START_NTP_TIME.getTime();
333
+ return getTaiDate(date).getTime() - START_NTP_TIME.getTime();
336
334
  }
337
335
 
338
336
  // src/time/rinex.ts
@@ -364,111 +362,57 @@ function getDateFromRINEX(rinex) {
364
362
  return date;
365
363
  }
366
364
 
367
- // src/time/utc.ts
368
- function getLeap(date) {
369
- const ntp_time = getNtpTime(date);
370
- const leapSecondsMap = {
371
- 2272060800: 10,
372
- // 1 Jan 1972
373
- 2287785600: 11,
374
- // 1 Jul 1972
375
- 2303683200: 12,
376
- // 1 Jan 1973
377
- 2335219200: 13,
378
- // 1 Jan 1974
379
- 2366755200: 14,
380
- // 1 Jan 1975
381
- 2398291200: 15,
382
- // 1 Jan 1976
383
- 2429913600: 16,
384
- // 1 Jan 1977
385
- 2461449600: 17,
386
- // 1 Jan 1978
387
- 2492985600: 18,
388
- // 1 Jan 1979
389
- 2524521600: 19,
390
- // 1 Jan 1980
391
- 2571782400: 20,
392
- // 1 Jul 1981
393
- 2603318400: 21,
394
- // 1 Jul 1982
395
- 2634854400: 22,
396
- // 1 Jul 1983
397
- 2698012800: 23,
398
- // 1 Jul 1985
399
- 2776982400: 24,
400
- // 1 Jan 1988
401
- 2840140800: 25,
402
- // 1 Jan 1990
403
- 2871676800: 26,
404
- // 1 Jan 1991
405
- 2918937600: 27,
406
- // 1 Jul 1992
407
- 2950473600: 28,
408
- // 1 Jul 1993
409
- 2982009600: 29,
410
- // 1 Jul 1994
411
- 3029443200: 30,
412
- // 1 Jan 1996
413
- 3076704e3: 31,
414
- // 1 Jul 1997
415
- 3124137600: 32,
416
- // 1 Jan 1999
417
- 3345062400: 33,
418
- // 1 Jan 2006
419
- 3439756800: 34,
420
- // 1 Jan 2009
421
- 3550089600: 35,
422
- // 1 Jul 2012
423
- 3644697600: 36,
424
- // 1 Jul 2015
425
- 3692217600: 37
426
- // 1 Jan 2017
427
- };
428
- for (const [timestamp, leapSeconds] of Object.entries(
429
- leapSecondsMap
430
- ).reverse()) {
431
- if (ntp_time / MILLISECONDS_IN_SECOND - leapSeconds >= Number(timestamp)) {
432
- return leapSeconds;
433
- }
434
- }
435
- return 0;
436
- }
437
- function getGpsLeap(date) {
438
- const leap_seconds = getLeap(date);
439
- if (leap_seconds < 0)
440
- return 0;
441
- return leap_seconds - 19;
442
- }
443
- function getUtcDate(date) {
444
- const tai_date = getTAIDate(date);
445
- const leap_seconds = getLeap(date);
446
- return new Date(tai_date.getTime() - leap_seconds * MILLISECONDS_IN_SECOND);
447
- }
448
-
449
365
  // src/time/julian.ts
450
- function getJulianDate(date) {
451
- return (date.getTime() - START_TAI_TIME.getTime()) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
366
+ function getJulianDate(date, scale = 1 /* TT */) {
367
+ if (scale === 0 /* TAI */) {
368
+ return (date.getTime() - START_TAI_TIME.getTime()) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
369
+ }
370
+ if (scale === 2 /* GPS */) {
371
+ return (date.getTime() - START_TAI_TIME.getTime() - MILLISECONDS_GPS_TAI) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
372
+ }
373
+ if (scale === 3 /* UTC */) {
374
+ return (date.getTime() - START_TAI_TIME.getTime() - getLeap(date) * MILLISECONDS_IN_SECOND) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
375
+ }
376
+ return (date.getTime() - START_TAI_TIME.getTime() + MILLISECONDS_TT_TAI) / MILLISECONDS_IN_DAY + START_JULIAN_TAI;
452
377
  }
453
- function getDateFromJulianDate(julianDate) {
378
+ function getDateFromJulianDate(julianDate, scale = 1 /* TT */) {
379
+ if (scale === 0 /* TAI */) {
380
+ return new Date(
381
+ (julianDate - START_JULIAN_TAI) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime()
382
+ );
383
+ }
384
+ if (scale === 2 /* GPS */) {
385
+ return new Date(
386
+ (julianDate - START_JULIAN_TAI) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime() + MILLISECONDS_GPS_TAI
387
+ );
388
+ }
389
+ if (scale === 3 /* UTC */) {
390
+ const utc_date = new Date(
391
+ (julianDate - START_JULIAN_TAI) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime()
392
+ );
393
+ const tai_date = new Date(
394
+ utc_date.getTime() + getLeap(utc_date) * MILLISECONDS_IN_SECOND
395
+ );
396
+ const leap_seconds = getLeap(getDateFromTai(tai_date));
397
+ return new Date(utc_date.getTime() + leap_seconds * MILLISECONDS_IN_SECOND);
398
+ }
454
399
  return new Date(
455
- (julianDate - 24362045e-1) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime()
400
+ (julianDate - START_JULIAN_TAI) * MILLISECONDS_IN_DAY + START_TAI_TIME.getTime() - MILLISECONDS_TT_TAI
456
401
  );
457
402
  }
458
- function getMJD(date) {
459
- return getJulianDate(date) - DAYS_MJD_JULIAN;
403
+ function getMJD(date, scale = 1 /* TT */) {
404
+ return getJulianDate(date, scale) - DAYS_MJD_JULIAN;
460
405
  }
461
- function getDateFromMJD(mjd) {
462
- return getDateFromJulianDate(mjd + DAYS_MJD_JULIAN);
406
+ function getDateFromMJD(mjd, scale = 1 /* TT */) {
407
+ return getDateFromJulianDate(mjd + DAYS_MJD_JULIAN, scale);
463
408
  }
464
- function getMJD2000(date) {
465
- return getMJD(date) - DAYS_MJD2000_MJD;
409
+ function getMJD2000(date, scale = 1 /* TT */) {
410
+ return getMJD(date, scale) - DAYS_MJD2000_MJD;
466
411
  }
467
- function getDateFromMJD2000(mjd2000) {
468
- return getDateFromMJD(mjd2000 + DAYS_MJD2000_MJD);
412
+ function getDateFromMJD2000(mjd2000, scale = 1 /* TT */) {
413
+ return getDateFromMJD(mjd2000 + DAYS_MJD2000_MJD, scale);
469
414
  }
470
- // Annotate the CommonJS export names for ESM import in node:
471
- 0 && (module.exports = {
415
+ export {
472
416
  DAYS_MJD2000_MJD,
473
417
  DAYS_MJD_JULIAN,
474
418
  MILLISECONDS_GPS_TAI,
@@ -487,14 +431,12 @@ function getDateFromMJD2000(mjd2000) {
487
431
  START_GAL_TIME,
488
432
  START_GLO_LEAP,
489
433
  START_GPS_TIME,
490
- START_JULIAN_CALENDAR_UNIX_SECONDS,
491
434
  START_JULIAN_TAI,
492
- START_LEAP_SECS_GPS,
493
- START_MJD2000_TIME,
494
435
  START_MJD_UNIX_SECONDS,
495
436
  START_NTP_TIME,
496
437
  START_TAI_TIME,
497
438
  START_UNIX_TIME,
439
+ Scale,
498
440
  getBdsTime,
499
441
  getDateFromBdsTime,
500
442
  getDateFromDayOfWeek,
@@ -508,10 +450,11 @@ function getDateFromMJD2000(mjd2000) {
508
450
  getDateFromMJD,
509
451
  getDateFromMJD2000,
510
452
  getDateFromRINEX,
511
- getDateFromTAI,
512
- getDateFromTT,
453
+ getDateFromTai,
513
454
  getDateFromTimeOfDay,
455
+ getDateFromTt,
514
456
  getDateFromUnixTime,
457
+ getDateFromUtc,
515
458
  getDayOfWeek,
516
459
  getDayOfYear,
517
460
  getGalTime,
@@ -529,8 +472,7 @@ function getDateFromMJD2000(mjd2000) {
529
472
  getNtpTime,
530
473
  getRINEX,
531
474
  getSecondsFromTimeDifference,
532
- getTAIDate,
533
- getTTDate,
475
+ getTaiDate,
534
476
  getTimeDifference,
535
477
  getTimeDifferenceFromDays,
536
478
  getTimeDifferenceFromHours,
@@ -540,8 +482,9 @@ function getDateFromMJD2000(mjd2000) {
540
482
  getTimeOfDay,
541
483
  getTimeOfWeek,
542
484
  getTotalDaysFromTimeDifference,
485
+ getTtDate,
543
486
  getUnixTime,
544
487
  getUtcDate,
545
488
  getWeekNumber,
546
489
  getWeekOfYear
547
- });
490
+ };
package/jest.config.ts ADDED
@@ -0,0 +1,9 @@
1
+ import type { Config } from 'jest';
2
+
3
+ const config: Config = {
4
+ preset: 'ts-jest',
5
+ testEnvironment: 'node',
6
+ testMatch: ['**/test/**/*.test.ts'],
7
+ };
8
+
9
+ export default config;
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "gnss-js",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Tool to peform GNSS-related computations",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
7
7
  "types": "./dist/index.d.ts",
8
+ "type": "module",
8
9
  "scripts": {
9
10
  "build": "tsup",
10
11
  "test": "jest",
@@ -22,7 +23,8 @@
22
23
  "jest": "^29.7.0",
23
24
  "prettier": "^3.5.3",
24
25
  "ts-jest": "^29.3.2",
26
+ "ts-node": "^10.9.2",
25
27
  "tsup": "^8.0.2",
26
- "typescript": "^5.3.3"
28
+ "typescript": "^5.8.3"
27
29
  }
28
30
  }
@@ -0,0 +1,63 @@
1
+ import {
2
+ getHourCode,
3
+ getDayOfYear,
4
+ getDateFromHourCode,
5
+ getDayOfWeek,
6
+ getDateFromDayOfWeek,
7
+ getTimeOfDay,
8
+ getDateFromTimeOfDay,
9
+ getDateFromDayOfYear,
10
+ getWeekOfYear,
11
+ } from '../src/index';
12
+
13
+ test('getTimeOfDay', () => {
14
+ const date: Date = new Date('1980-01-06T23:09:00Z');
15
+ const time_of_day: number = getTimeOfDay(date);
16
+ expect(time_of_day).toBe(83340);
17
+ });
18
+
19
+ test('getDateFromTimeOfDay', () => {
20
+ const date: Date = new Date('1980-01-06T00:00:00Z');
21
+ const new_date: Date = getDateFromTimeOfDay(83340, date);
22
+ expect(new_date.toISOString()).toBe('1980-01-06T23:09:00.000Z');
23
+ });
24
+
25
+ test('getDayOfYear', () => {
26
+ const date: Date = new Date('1980-01-06T23:09:00Z');
27
+ const day_of_year: Date = getDayOfYear(date);
28
+ expect(day_of_year).toBe(6);
29
+ });
30
+
31
+ test('getDateFromDayOfYear', () => {
32
+ const date: Date = new Date('1980-01-06T00:00:00Z');
33
+ const new_date: Date = getDateFromDayOfYear(100, date);
34
+ expect(new_date.toISOString()).toBe('1980-04-09T00:00:00.000Z');
35
+ });
36
+
37
+ test('getHourCode', () => {
38
+ const date: Date = new Date('1980-01-06T00:00:00Z');
39
+ const hour_code: Date = getHourCode(date);
40
+ expect(hour_code).toBe('a');
41
+ });
42
+
43
+ test('getDateFromHourCode', () => {
44
+ const date: Date = new Date('1980-01-06T00:00:00Z');
45
+ const new_date: Date = getDateFromHourCode('c', date);
46
+ expect(new_date.toISOString()).toBe('1980-01-06T02:00:00.000Z');
47
+ });
48
+
49
+ test('getDayOfWeek', () => {
50
+ const date: Date = new Date('1980-01-06T00:00:00Z');
51
+ expect(getDayOfWeek(date)).toBe(0);
52
+ });
53
+
54
+ test('getDateFromDayOfWeek', () => {
55
+ const date: Date = new Date('1980-01-06T00:00:00Z');
56
+ const new_date: Date = getDateFromDayOfWeek(1, date);
57
+ expect(new_date.toISOString()).toBe('1980-01-07T00:00:00.000Z');
58
+ });
59
+
60
+ test('getWeekOfYear', () => {
61
+ const date: Date = new Date('2025-05-05T00:00:00Z');
62
+ expect(getWeekOfYear(date)).toBe(19);
63
+ });
@@ -0,0 +1,95 @@
1
+ import {
2
+ getGpsTime,
3
+ getDateFromGpsTime,
4
+ getGalTime,
5
+ getDateFromGalTime,
6
+ getBdsTime,
7
+ getDateFromBdsTime,
8
+ getUnixTime,
9
+ getDateFromUnixTime,
10
+ getTaiDate,
11
+ getTtDate,
12
+ getDateFromTai,
13
+ getDateFromTt,
14
+ getWeekNumber,
15
+ getDateFromGpsData,
16
+ } from '../src/index';
17
+
18
+ test('getGpsTime', () => {
19
+ const gps_time: number = getGpsTime(new Date('1980-01-06T00:00:00Z'));
20
+ expect(gps_time).toBe(0);
21
+ });
22
+
23
+ test('getDateFromGpsTime', () => {
24
+ const date: Date = getDateFromGpsTime(0);
25
+ expect(date.getTime()).toBe(new Date('1980-01-06T00:00:00Z').getTime());
26
+ });
27
+
28
+ test('getWeekNumber', () => {
29
+ const week_no: number = getWeekNumber(new Date('1980-01-06T00:00:00Z'));
30
+ expect(week_no).toBe(0);
31
+ });
32
+
33
+ test('getTimeOfWeek', () => {
34
+ const tow: number = getWeekNumber(new Date('1980-01-06T00:00:00Z'));
35
+ expect(tow).toBe(0);
36
+ });
37
+
38
+ test('getDateFromGpsData', () => {
39
+ const date: Date = getDateFromGpsData(0, 0);
40
+ expect(date.getTime()).toBe(new Date('1980-01-06T00:00:00Z').getTime());
41
+ });
42
+
43
+ test('getGalTime', () => {
44
+ const gal_time: number = getGalTime(new Date('1999-08-22T00:00:00Z'));
45
+ expect(gal_time).toBe(0);
46
+ });
47
+
48
+ test('getDateFromGalTime', () => {
49
+ const date: Date = getDateFromGalTime(0);
50
+ expect(date.getTime()).toBe(new Date('1999-08-22T00:00:00Z').getTime());
51
+ });
52
+
53
+ test('getBdsTime', () => {
54
+ const bds_time: number = getBdsTime(new Date('2006-01-01T00:00:13Z'));
55
+ expect(bds_time).toBe(0);
56
+ });
57
+
58
+ test('getDateFromBdsTime', () => {
59
+ const date: Date = getDateFromBdsTime(0);
60
+ expect(date.getTime()).toBe(new Date('2006-01-01T00:00:13Z').getTime());
61
+ });
62
+
63
+ test('getUnixTime', () => {
64
+ const unix_time = getUnixTime(new Date('2025-01-01T00:00:18Z'));
65
+ expect(unix_time).toBe(1735689600000);
66
+ });
67
+
68
+ test('getDateFromUnixTime', () => {
69
+ const date: Date = getDateFromUnixTime(0);
70
+ expect(date.toISOString()).toBe('1969-12-31T23:59:49.000Z');
71
+ });
72
+
73
+ test('getTaiDate', () => {
74
+ const date: Date = getDateFromGpsTime(0);
75
+ const tai_date: Date = getTaiDate(date);
76
+ expect(tai_date.getTime()).toBe(new Date('1980-01-06T00:00:19Z').getTime());
77
+ });
78
+
79
+ test('getDateFromTai', () => {
80
+ const date: Date = getDateFromTai(new Date('1980-01-06T00:00:19Z'));
81
+ expect(getGpsTime(date)).toBe(0);
82
+ });
83
+
84
+ test('getTtDate', () => {
85
+ const date: Date = getDateFromGpsTime(0);
86
+ const tt_date: Date = getTtDate(date);
87
+ expect(tt_date.getTime()).toBe(
88
+ new Date('1980-01-06T00:00:51.184Z').getTime()
89
+ );
90
+ });
91
+
92
+ test('getDateFromTt', () => {
93
+ const date: Date = getDateFromTt(new Date('1980-01-06T00:00:51.184Z'));
94
+ expect(getGpsTime(date)).toBe(0);
95
+ });