@idm-plugin/geo 1.9.2 → 1.9.4

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,5 +1,5 @@
1
1
  import * as N from "@turf/turf";
2
- import t from "moment";
2
+ import u from "moment";
3
3
  import _ from "@log4js-node/log4js-api";
4
4
  var a0 = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
5
5
  function n0(m) {
@@ -13,23 +13,23 @@ var j = { exports: {} };
13
13
  //! license : MIT
14
14
  //! github.com/moment/moment-timezone
15
15
  (function(M, z) {
16
- m.exports ? m.exports = z(t) : z(M.moment);
16
+ m.exports ? m.exports = z(u) : z(M.moment);
17
17
  })(a0, function(M) {
18
18
  M.version === void 0 && M.default && (M = M.default);
19
19
  var z = "0.5.48", b = {}, p = {}, c = {}, O = {}, A = {}, W;
20
20
  (!M || typeof M.version != "string") && D("Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/");
21
21
  var q = M.version.split("."), Y = +q[0], d = +q[1];
22
22
  (Y < 2 || Y === 2 && d < 6) && D("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js " + M.version + ". See momentjs.com");
23
- function L(o) {
23
+ function R(o) {
24
24
  return o > 96 ? o - 87 : o > 64 ? o - 29 : o - 48;
25
25
  }
26
26
  function T(o) {
27
- var a = 0, X = o.split("."), R = X[0], e = X[1] || "", U = 1, E, u = 0, l = 1;
28
- for (o.charCodeAt(0) === 45 && (a = 1, l = -1), a; a < R.length; a++)
29
- E = L(R.charCodeAt(a)), u = 60 * u + E;
27
+ var a = 0, X = o.split("."), L = X[0], e = X[1] || "", U = 1, E, t = 0, l = 1;
28
+ for (o.charCodeAt(0) === 45 && (a = 1, l = -1), a; a < L.length; a++)
29
+ E = R(L.charCodeAt(a)), t = 60 * t + E;
30
30
  for (a = 0; a < e.length; a++)
31
- U = U / 60, E = L(e.charCodeAt(a)), u += E * U;
32
- return u * l;
31
+ U = U / 60, E = R(e.charCodeAt(a)), t += E * U;
32
+ return t * l;
33
33
  }
34
34
  function f(o) {
35
35
  for (var a = 0; a < o.length; a++)
@@ -40,18 +40,18 @@ var j = { exports: {} };
40
40
  o[X] = Math.round((o[X - 1] || 0) + o[X] * 6e4);
41
41
  o[a - 1] = 1 / 0;
42
42
  }
43
- function r(o, a) {
44
- var X = [], R;
45
- for (R = 0; R < a.length; R++)
46
- X[R] = o[a[R]];
43
+ function S(o, a) {
44
+ var X = [], L;
45
+ for (L = 0; L < a.length; L++)
46
+ X[L] = o[a[L]];
47
47
  return X;
48
48
  }
49
49
  function s(o) {
50
- var a = o.split("|"), X = a[2].split(" "), R = a[3].split(""), e = a[4].split(" ");
51
- return f(X), f(R), f(e), i(e, R.length), {
50
+ var a = o.split("|"), X = a[2].split(" "), L = a[3].split(""), e = a[4].split(" ");
51
+ return f(X), f(L), f(e), i(e, L.length), {
52
52
  name: a[0],
53
- abbrs: r(a[1].split(" "), R),
54
- offsets: r(X, R),
53
+ abbrs: S(a[1].split(" "), L),
54
+ offsets: S(X, L),
55
55
  untils: e,
56
56
  population: a[5] | 0
57
57
  };
@@ -67,8 +67,8 @@ var j = { exports: {} };
67
67
  return X - 1;
68
68
  if (o >= a[X - 1])
69
69
  return -1;
70
- for (var R, e = 0, U = X - 1; U - e > 1; )
71
- R = Math.floor((e + U) / 2), a[R] <= o ? e = R : U = R;
70
+ for (var L, e = 0, U = X - 1; U - e > 1; )
71
+ L = Math.floor((e + U) / 2), a[L] <= o ? e = L : U = L;
72
72
  return U;
73
73
  }
74
74
  Z.prototype = {
@@ -76,9 +76,9 @@ var j = { exports: {} };
76
76
  this.name = o.name, this.abbrs = o.abbrs, this.untils = o.untils, this.offsets = o.offsets, this.population = o.population;
77
77
  },
78
78
  _index: function(o) {
79
- var a = +o, X = this.untils, R;
80
- if (R = P(a, X), R >= 0)
81
- return R;
79
+ var a = +o, X = this.untils, L;
80
+ if (L = P(a, X), L >= 0)
81
+ return L;
82
82
  },
83
83
  countries: function() {
84
84
  var o = this.name;
@@ -87,9 +87,9 @@ var j = { exports: {} };
87
87
  });
88
88
  },
89
89
  parse: function(o) {
90
- var a = +o, X = this.offsets, R = this.untils, e = R.length - 1, U, E, u, l;
90
+ var a = +o, X = this.offsets, L = this.untils, e = L.length - 1, U, E, t, l;
91
91
  for (l = 0; l < e; l++)
92
- if (U = X[l], E = X[l + 1], u = X[l && l - 1], U < E && V.moveAmbiguousForward ? U = E : U > u && V.moveInvalidForward && (U = u), a < R[l] - U * 6e4)
92
+ if (U = X[l], E = X[l + 1], t = X[l && l - 1], U < E && V.moveAmbiguousForward ? U = E : U > t && V.moveInvalidForward && (U = t), a < L[l] - U * 6e4)
93
93
  return X[l];
94
94
  return X[e];
95
95
  },
@@ -103,7 +103,7 @@ var j = { exports: {} };
103
103
  return this.offsets[this._index(o)];
104
104
  }
105
105
  };
106
- function B(o, a) {
106
+ function r(o, a) {
107
107
  this.name = o, this.zones = a;
108
108
  }
109
109
  function G(o) {
@@ -117,38 +117,38 @@ var j = { exports: {} };
117
117
  this.offsetScore += Math.abs(this.zone.utcOffset(o.at) - o.offset), this.zone.abbr(o.at).replace(/[^A-Z]/g, "") !== o.abbr && this.abbrScore++;
118
118
  };
119
119
  function Q(o, a) {
120
- for (var X, R; R = ((a.at - o.at) / 12e4 | 0) * 6e4; )
121
- X = new G(new Date(o.at + R)), X.offset === o.offset ? o = X : a = X;
120
+ for (var X, L; L = ((a.at - o.at) / 12e4 | 0) * 6e4; )
121
+ X = new G(new Date(o.at + L)), X.offset === o.offset ? o = X : a = X;
122
122
  return o;
123
123
  }
124
124
  function F() {
125
- var o = (/* @__PURE__ */ new Date()).getFullYear() - 2, a = new G(new Date(o, 0, 1)), X = a.offset, R = [a], e, U, E, u;
126
- for (u = 1; u < 48; u++)
127
- E = new Date(o, u, 1).getTimezoneOffset(), E !== X && (U = new G(new Date(o, u, 1)), e = Q(a, U), R.push(e), R.push(new G(new Date(e.at + 6e4))), a = U, X = E);
128
- for (u = 0; u < 4; u++)
129
- R.push(new G(new Date(o + u, 0, 1))), R.push(new G(new Date(o + u, 6, 1)));
130
- return R;
125
+ var o = (/* @__PURE__ */ new Date()).getFullYear() - 2, a = new G(new Date(o, 0, 1)), X = a.offset, L = [a], e, U, E, t;
126
+ for (t = 1; t < 48; t++)
127
+ E = new Date(o, t, 1).getTimezoneOffset(), E !== X && (U = new G(new Date(o, t, 1)), e = Q(a, U), L.push(e), L.push(new G(new Date(e.at + 6e4))), a = U, X = E);
128
+ for (t = 0; t < 4; t++)
129
+ L.push(new G(new Date(o + t, 0, 1))), L.push(new G(new Date(o + t, 6, 1)));
130
+ return L;
131
131
  }
132
132
  function M0(o, a) {
133
133
  return o.offsetScore !== a.offsetScore ? o.offsetScore - a.offsetScore : o.abbrScore !== a.abbrScore ? o.abbrScore - a.abbrScore : o.zone.population !== a.zone.population ? a.zone.population - o.zone.population : a.zone.name.localeCompare(o.zone.name);
134
134
  }
135
135
  function z0(o, a) {
136
- var X, R;
136
+ var X, L;
137
137
  for (f(a), X = 0; X < a.length; X++)
138
- R = a[X], A[R] = A[R] || {}, A[R][o] = !0;
138
+ L = a[X], A[L] = A[L] || {}, A[L][o] = !0;
139
139
  }
140
140
  function b0(o) {
141
- var a = o.length, X = {}, R = [], e = {}, U, E, u, l;
141
+ var a = o.length, X = {}, L = [], e = {}, U, E, t, l;
142
142
  for (U = 0; U < a; U++)
143
- if (u = o[U].offset, !e.hasOwnProperty(u)) {
144
- l = A[u] || {};
143
+ if (t = o[U].offset, !e.hasOwnProperty(t)) {
144
+ l = A[t] || {};
145
145
  for (E in l)
146
146
  l.hasOwnProperty(E) && (X[E] = !0);
147
- e[u] = !0;
147
+ e[t] = !0;
148
148
  }
149
149
  for (U in X)
150
- X.hasOwnProperty(U) && R.push(O[U]);
151
- return R;
150
+ X.hasOwnProperty(U) && L.push(O[U]);
151
+ return L;
152
152
  }
153
153
  function p0() {
154
154
  try {
@@ -161,9 +161,9 @@ var j = { exports: {} };
161
161
  }
162
162
  } catch {
163
163
  }
164
- var X = F(), R = X.length, e = b0(X), U = [], E, u, l;
165
- for (u = 0; u < e.length; u++) {
166
- for (E = new h(g(e[u])), l = 0; l < R; l++)
164
+ var X = F(), L = X.length, e = b0(X), U = [], E, t, l;
165
+ for (t = 0; t < e.length; t++) {
166
+ for (E = new h(g(e[t])), l = 0; l < L; l++)
167
167
  E.scoreOffsetAt(X[l]);
168
168
  U.push(E);
169
169
  }
@@ -176,14 +176,14 @@ var j = { exports: {} };
176
176
  return (o || "").toLowerCase().replace(/\//g, "_");
177
177
  }
178
178
  function k(o) {
179
- var a, X, R, e;
179
+ var a, X, L, e;
180
180
  for (typeof o == "string" && (o = [o]), a = 0; a < o.length; a++)
181
- R = o[a].split("|"), X = R[0], e = K(X), b[e] = o[a], O[e] = X, z0(e, R[2].split(" "));
181
+ L = o[a].split("|"), X = L[0], e = K(X), b[e] = o[a], O[e] = X, z0(e, L[2].split(" "));
182
182
  }
183
183
  function g(o, a) {
184
184
  o = K(o);
185
- var X = b[o], R;
186
- return X instanceof Z ? X : typeof X == "string" ? (X = new Z(X), b[o] = X, X) : p[o] && a !== g && (R = g(p[o], g)) ? (X = b[o] = new Z(), X._set(R), X.name = O[o], X) : null;
185
+ var X = b[o], L;
186
+ return X instanceof Z ? X : typeof X == "string" ? (X = new Z(X), b[o] = X, X) : p[o] && a !== g && (L = g(p[o], g)) ? (X = b[o] = new Z(), X._set(L), X.name = O[o], X) : null;
187
187
  }
188
188
  function A0() {
189
189
  var o, a = [];
@@ -195,17 +195,17 @@ var j = { exports: {} };
195
195
  return Object.keys(c);
196
196
  }
197
197
  function v(o) {
198
- var a, X, R, e;
198
+ var a, X, L, e;
199
199
  for (typeof o == "string" && (o = [o]), a = 0; a < o.length; a++)
200
- X = o[a].split("|"), R = K(X[0]), e = K(X[1]), p[R] = e, O[R] = X[0], p[e] = R, O[e] = X[1];
200
+ X = o[a].split("|"), L = K(X[0]), e = K(X[1]), p[L] = e, O[L] = X[0], p[e] = L, O[e] = X[1];
201
201
  }
202
202
  function W0(o) {
203
- var a, X, R, e;
203
+ var a, X, L, e;
204
204
  if (!(!o || !o.length))
205
205
  for (a = 0; a < o.length; a++)
206
- e = o[a].split("|"), X = e[0].toUpperCase(), R = e[1].split(" "), c[X] = new B(
206
+ e = o[a].split("|"), X = e[0].toUpperCase(), L = e[1].split(" "), c[X] = new r(
207
207
  X,
208
- R
208
+ L
209
209
  );
210
210
  }
211
211
  function o0(o) {
@@ -215,10 +215,10 @@ var j = { exports: {} };
215
215
  if (o = o0(o), !o)
216
216
  return null;
217
217
  var X = o.zones.sort();
218
- return a ? X.map(function(R) {
219
- var e = g(R);
218
+ return a ? X.map(function(L) {
219
+ var e = g(L);
220
220
  return {
221
- name: R,
221
+ name: L,
222
222
  offset: e.utcOffset(/* @__PURE__ */ new Date())
223
223
  };
224
224
  }) : X;
@@ -237,19 +237,19 @@ var j = { exports: {} };
237
237
  typeof console < "u" && typeof console.error == "function" && console.error(o);
238
238
  }
239
239
  function V(o) {
240
- var a = Array.prototype.slice.call(arguments, 0, -1), X = arguments[arguments.length - 1], R = M.utc.apply(null, a), e;
241
- return !M.isMoment(o) && J(R) && (e = g(X)) && R.add(e.parse(R), "minutes"), R.tz(X), R;
240
+ var a = Array.prototype.slice.call(arguments, 0, -1), X = arguments[arguments.length - 1], L = M.utc.apply(null, a), e;
241
+ return !M.isMoment(o) && J(L) && (e = g(X)) && L.add(e.parse(L), "minutes"), L.tz(X), L;
242
242
  }
243
243
  V.version = z, V.dataVersion = "", V._zones = b, V._links = p, V._names = O, V._countries = c, V.add = k, V.link = v, V.load = Y0, V.zone = g, V.zoneExists = $, V.guess = O0, V.names = A0, V.Zone = Z, V.unpack = s, V.unpackBase60 = T, V.needsOffset = J, V.moveInvalidForward = !0, V.moveAmbiguousForward = !1, V.countries = c0, V.zonesForCountry = q0;
244
244
  var C = M.fn;
245
245
  M.tz = V, M.defaultZone = null, M.updateOffset = function(o, a) {
246
- var X = M.defaultZone, R;
246
+ var X = M.defaultZone, L;
247
247
  if (o._z === void 0 && (X && J(o) && !o._isUTC && o.isValid() && (o._d = M.utc(o._a)._d, o.utc().add(X.parse(o), "minutes")), o._z = X), o._z)
248
- if (R = o._z.utcOffset(o), Math.abs(R) < 16 && (R = R / 60), o.utcOffset !== void 0) {
248
+ if (L = o._z.utcOffset(o), Math.abs(L) < 16 && (L = L / 60), o.utcOffset !== void 0) {
249
249
  var e = o._z;
250
- o.utcOffset(-R, a), o._z = e;
250
+ o.utcOffset(-L, a), o._z = e;
251
251
  } else
252
- o.zone(R, a);
252
+ o.zone(L, a);
253
253
  }, C.tz = function(o, a) {
254
254
  if (o) {
255
255
  if (typeof o != "string")
@@ -1161,7 +1161,7 @@ class n {
1161
1161
  * @param lat
1162
1162
  */
1163
1163
  static guessTimeZoneOffset(M, z) {
1164
- const b = S0(z, M), p = t().tz(b).utcOffset();
1164
+ const b = S0(z, M), p = u().tz(b).utcOffset();
1165
1165
  return this.roundPrecision(p / 60, 1);
1166
1166
  }
1167
1167
  /**
@@ -1184,13 +1184,13 @@ class n {
1184
1184
  M < 0 && (p = "W"), M = Math.abs(M), b = b.toUpperCase();
1185
1185
  let c = M * 3600, O, A, W, q, Y, d;
1186
1186
  O = c % 3600 % 60, b.indexOf("S") !== -1 && (c = c - O, A = n.padNumber(O, 2, 2)), W = c / 60 % 60, b.indexOf("M") !== -1 && (b.indexOf("S") !== -1 ? q = n.roundPrecision(W, z).toString().padStart(2, "0") : q = n.padNumber(W, 2, 2), c = c - W * 60), Y = c / 3600, b.indexOf("M") !== -1 ? d = n.roundPrecision(Y, z).toString().padStart(3, "0") : d = n.padNumber(Y, 3, 2), Number(A) >= 60 && (q = Number(q) + 1, A = 0), Number(q) >= 60 && (d = Number(d) + 1, q = 0);
1187
- const L = `${b.replace(/S+/gi, A).replace(/M+/gi, q).replace(/H+/gi, d)}${p}`;
1187
+ const R = `${b.replace(/S+/gi, A).replace(/M+/gi, q).replace(/H+/gi, d)}${p}`;
1188
1188
  return {
1189
1189
  direction: p,
1190
1190
  degree: n.roundPrecision(Y, z),
1191
1191
  minute: n.roundPrecision(W, z),
1192
1192
  second: n.roundPrecision(O, z),
1193
- pretty: L
1193
+ pretty: R
1194
1194
  };
1195
1195
  }
1196
1196
  /**
@@ -1205,13 +1205,13 @@ class n {
1205
1205
  M < 0 && (p = "S"), M = Math.abs(M), b = b.toUpperCase();
1206
1206
  let c = M * 3600, O, A, W, q, Y, d;
1207
1207
  O = c % 3600 % 60, b.indexOf("S") !== -1 && (c = c - O, A = n.padNumber(O, 2, 2)), W = c / 60 % 60, b.indexOf("M") !== -1 && (b.indexOf("S") !== -1 ? q = n.roundPrecision(W, z).toString().padStart(2, "0") : q = n.padNumber(W, 2, 2), c = c - W * 60), Y = c / 3600, b.indexOf("M") !== -1 ? d = n.roundPrecision(Y, z).toString().padStart(2, "0") : d = n.padNumber(Y, 2, 2), Number(A) >= 60 && (q = Number(q) + 1, A = 0), Number(q) >= 60 && (d = Number(d) + 1, q = 0);
1208
- const L = `${b.replace(/S+/gi, A).replace(/M+/gi, q).replace(/H+/gi, d)}${p}`;
1208
+ const R = `${b.replace(/S+/gi, A).replace(/M+/gi, q).replace(/H+/gi, d)}${p}`;
1209
1209
  return {
1210
1210
  direction: p,
1211
1211
  degree: n.roundPrecision(Y, z),
1212
1212
  minute: n.roundPrecision(W, z),
1213
1213
  second: n.roundPrecision(O, z),
1214
- pretty: L
1214
+ pretty: R
1215
1215
  };
1216
1216
  }
1217
1217
  static str2Lng(M, z = 6) {
@@ -1313,7 +1313,7 @@ try {
1313
1313
  } catch {
1314
1314
  } finally {
1315
1315
  }
1316
- class S {
1316
+ class B {
1317
1317
  /**
1318
1318
  * 计算方位角
1319
1319
  * @param from 坐标 {lng, lat}
@@ -1424,12 +1424,12 @@ class S {
1424
1424
  [O, M[W].lat],
1425
1425
  [A, M[W + 1].lat]
1426
1426
  ]);
1427
- let d, L;
1428
- z ? (d = N.lineString(Y), L = N.lineString([
1427
+ let d, R;
1428
+ z ? (d = N.lineString(Y), R = N.lineString([
1429
1429
  [q > 0 ? 180 : -180, 89],
1430
1430
  [q > 0 ? 180 : -180, -89]
1431
- ])) : (d = N.greatCircle(Y[0], Y[1]), L = N.greatCircle([q > 0 ? 180 : -180, 89], [q > 0 ? 180 : -180, -89]));
1432
- const T = N.lineIntersect(d, L);
1431
+ ])) : (d = N.greatCircle(Y[0], Y[1]), R = N.greatCircle([q > 0 ? 180 : -180, 89], [q > 0 ? 180 : -180, -89]));
1432
+ const T = N.lineIntersect(d, R);
1433
1433
  let f;
1434
1434
  if (T.features.length) {
1435
1435
  const i = N.getCoord(T.features[0]);
@@ -1500,8 +1500,8 @@ class S {
1500
1500
  let b = Number.MAX_VALUE, p = 0, c = 0, O, A;
1501
1501
  return z.forEach((W, q) => {
1502
1502
  for (let Y = 0; Y < W.length - 1; Y++) {
1503
- const d = { lng: W[Y][0], lat: W[Y][1] }, L = { lng: W[Y + 1][0], lat: W[Y + 1][1] }, T = this.calculatePointToLineDistance(M, d, L);
1504
- b > T && (b = T, c = Y, p = q, O = this.calculateDistance(d, M), A = this.calculateDistance(L, M));
1503
+ const d = { lng: W[Y][0], lat: W[Y][1] }, R = { lng: W[Y + 1][0], lat: W[Y + 1][1] }, T = this.calculatePointToLineDistance(M, d, R);
1504
+ b > T && (b = T, c = Y, p = q, O = this.calculateDistance(d, M), A = this.calculateDistance(R, M));
1505
1505
  }
1506
1506
  }), O !== 0 && A !== 0 ? z[p].splice(c + 1, 0, [M.lng, M.lat]) : O === 0 ? z[p].splice(c, 1, [M.lng, M.lat]) : A === 0 && z[p].splice(c + 1, 1, [M.lng, M.lat]), z;
1507
1507
  }
@@ -1512,8 +1512,8 @@ class S {
1512
1512
  */
1513
1513
  static appendCoordinateToRoute(M, z) {
1514
1514
  M.lng = n.convertToStdLng(M.lng, 8);
1515
- const b = S.convertRouteToCoordinates(z);
1516
- return b.push(M), S.divideAccordingToLng(b);
1515
+ const b = B.convertRouteToCoordinates(z);
1516
+ return b.push(M), B.divideAccordingToLng(b);
1517
1517
  }
1518
1518
  /**
1519
1519
  * 向route头加1个坐标
@@ -1521,8 +1521,8 @@ class S {
1521
1521
  * @param route
1522
1522
  */
1523
1523
  static unshiftCoordinateToRoute(M, z) {
1524
- const b = S.convertRouteToCoordinates(z);
1525
- return b.unshift(M), S.divideAccordingToLng(b);
1524
+ const b = B.convertRouteToCoordinates(z);
1525
+ return b.unshift(M), B.divideAccordingToLng(b);
1526
1526
  }
1527
1527
  /**
1528
1528
  * 合并多个waypoints进航线
@@ -1596,8 +1596,8 @@ class S {
1596
1596
  * @return [[[lng, lat]]]
1597
1597
  */
1598
1598
  static calculateSubRoute(M, z) {
1599
- const b = S.convertRouteToCoordinates(z);
1600
- S.mergeCoordinateToWaypoints(M, b, !0), z = S.divideAccordingToLng(b);
1599
+ const b = B.convertRouteToCoordinates(z);
1600
+ B.mergeCoordinateToWaypoints(M, b, !0), z = B.divideAccordingToLng(b);
1601
1601
  const { segIndex: p, minIndex: c } = this.calculateMinDistanceToRoute({ ...M }, z);
1602
1602
  M.lng = n.convertToStdLng(M.lng);
1603
1603
  const O = [];
@@ -1704,8 +1704,8 @@ class S {
1704
1704
  W.lng = n.convertToStdLng(W.lng);
1705
1705
  const Y = z[q + 1];
1706
1706
  if (Y && (W.bearing || ((W.positionTime || 0) > (Y.positionTime || 0) ? W.bearing = this.calculateBearing(Y, W, !0) : W.bearing = this.calculateBearing(W, Y, !0)), W.cog = W.cog || W.bearing, !W.sog && W.positionTime && Y.positionTime)) {
1707
- const d = this.calculateDistance(W, Y, !0), L = Math.abs(Y.positionTime - W.positionTime) / 3600;
1708
- W.sog = n.roundPrecision(d / L, 2);
1707
+ const d = this.calculateDistance(W, Y, !0), R = Math.abs(Y.positionTime - W.positionTime) / 3600;
1708
+ W.sog = n.roundPrecision(d / R, 2);
1709
1709
  }
1710
1710
  return W;
1711
1711
  });
@@ -1768,7 +1768,7 @@ class S {
1768
1768
  * @return { coordinate: {lng, lat}, route: [[[lng, lat]]]}
1769
1769
  */
1770
1770
  static calculateNextCoordinateAlongRoute(M, z, b, p = "nauticalmiles") {
1771
- var L;
1771
+ var R;
1772
1772
  const c = M.speed || 12, O = [];
1773
1773
  let A = [], W = !1, q = 0, Y = 0, d;
1774
1774
  if (z && b.length ? (O.push(M), b.forEach((T, f) => {
@@ -1776,29 +1776,29 @@ class S {
1776
1776
  A.push(T);
1777
1777
  else {
1778
1778
  const i = [];
1779
- let r;
1779
+ let S;
1780
1780
  for (let s = 0; s < T.length; s++)
1781
1781
  if (d)
1782
1782
  i.push(T[s]);
1783
1783
  else {
1784
- r = { lng: T[s][0], lat: T[s][1] };
1785
- const Z = this.calculateDistance(M, r, !0, 8, p);
1784
+ S = { lng: T[s][0], lat: T[s][1] };
1785
+ const Z = this.calculateDistance(M, S, !0, 8, p);
1786
1786
  if (q += Z, q < z)
1787
- Y += Z, Z && O.push(r), M = r;
1787
+ Y += Z, Z && O.push(S), M = S;
1788
1788
  else {
1789
1789
  if (Y = z, q === z)
1790
- d = r, i.push([d.lng, d.lat]);
1790
+ d = S, i.push([d.lng, d.lat]);
1791
1791
  else {
1792
- const P = q - z, B = this.calculateBearing(r, M);
1793
- d = this.calculateCoordinate(r, B, P, p), i.push([d.lng, d.lat]), i.push([r.lng, r.lat]);
1792
+ const P = q - z, r = this.calculateBearing(S, M);
1793
+ d = this.calculateCoordinate(S, r, P, p), i.push([d.lng, d.lat]), i.push([S.lng, S.lat]);
1794
1794
  }
1795
1795
  W = !0;
1796
1796
  }
1797
1797
  }
1798
- i.length && A.push(i), f === b.length - 1 && !d && (d = r);
1798
+ i.length && A.push(i), f === b.length - 1 && !d && (d = S);
1799
1799
  }
1800
1800
  })) : (A = b, d = { ...M }), d)
1801
- if (O.push(d), d.distanceFromPrevious = Y, d.hourFromPrevious = Math.round(Y / c * 1e4) / 1e4, ((L = A[0]) == null ? void 0 : L.length) > 1) {
1801
+ if (O.push(d), d.distanceFromPrevious = Math.round(Y * 1e4) / 1e4, d.hourFromPrevious = Math.round(Y / c * 1e4) / 1e4, ((R = A[0]) == null ? void 0 : R.length) > 1) {
1802
1802
  const T = { lng: A[0][1][0], lat: A[0][1][1] };
1803
1803
  d.bearing = this.calculateBearing(d, T);
1804
1804
  } else
@@ -1815,8 +1815,8 @@ class S {
1815
1815
  const p = n.convertToStdLng(M.lng, 6), c = N.point([p, M.lat]), O = n.convertToStdLng(z.lng, 6), A = n.convertToStdLng(b.lng, 6), W = N.lineString([
1816
1816
  [O, z.lat],
1817
1817
  [A, b.lat]
1818
- ]), q = N.nearestPointOnLine(W, c), Y = N.getCoord(q), d = n.roundPrecision(Y[0], 6), L = n.roundPrecision(Y[1], 6);
1819
- return { lng: d, lat: L, inline: !(d === O && L === z.lat) && !(d === A && L === b.lat) };
1818
+ ]), q = N.nearestPointOnLine(W, c), Y = N.getCoord(q), d = n.roundPrecision(Y[0], 6), R = n.roundPrecision(Y[1], 6);
1819
+ return { lng: d, lat: R, inline: !(d === O && R === z.lat) && !(d === A && R === b.lat) };
1820
1820
  }
1821
1821
  /**
1822
1822
  * 将route转coordinate
@@ -1930,7 +1930,7 @@ class S {
1930
1930
  const O = M[c - 1], A = M[c], W = M[c + 1];
1931
1931
  let q = !1, Y = !1;
1932
1932
  if ((O.velocity || O.suspend || O.important || O.pilot || c === 1) && (q = !0, p.push(O)), A.gcToPrevious && (q || (q = !0, p.push(O)), Y = !0, p.push(A), c++), W) {
1933
- const d = S.calculateDistance(O, A, !0), L = S.calculateDistance(A, W, !0), T = S.calculateDistance(O, W, !0), f = (Math.pow(d, 2) + Math.pow(L, 2) - Math.pow(T, 2)) / (2 * d * L);
1933
+ const d = B.calculateDistance(O, A, !0), R = B.calculateDistance(A, W, !0), T = B.calculateDistance(O, W, !0), f = (Math.pow(d, 2) + Math.pow(R, 2) - Math.pow(T, 2)) / (2 * d * R);
1934
1934
  Math.round(Math.acos(f) * 180 / Math.PI) < b && T > z && !Y && (p.push(A), c++);
1935
1935
  }
1936
1936
  if (c >= M.length - 1) {
@@ -1947,7 +1947,7 @@ class S {
1947
1947
  * @param waypoints 带时间的轨迹, 单位秒
1948
1948
  */
1949
1949
  static nearestTSPointInWaypoints(M, z, b) {
1950
- const p = t.unix(M), c = b.filter(
1950
+ const p = u.unix(M), c = b.filter(
1951
1951
  (O) => p.clone().subtract(z, "hour").unix() <= (O.positionTime || 0) && p.clone().add(z, "h").unix() >= (O.positionTime || 0)
1952
1952
  );
1953
1953
  return c.sort((O, A) => (O.positionTime || 0) - (A.positionTime || 0)), c.at(-1);
@@ -1960,15 +1960,15 @@ class S {
1960
1960
  static deadReckoning(M, z) {
1961
1961
  var c, O, A, W;
1962
1962
  M > 1e12 && (M = Math.round(M / 1e3));
1963
- const b = t.unix(M);
1963
+ const b = u.unix(M);
1964
1964
  let p = z.find((q) => q.positionTime === b.unix());
1965
1965
  if (!p) {
1966
- const q = (O = (c = z.filter((d) => (d == null ? void 0 : d.positionTime) < b.unix())) == null ? void 0 : c.sort((d, L) => (d.positionTime || 0) - (L.positionTime || 0))) == null ? void 0 : O.at(-1), Y = (W = (A = z.filter((d) => (d == null ? void 0 : d.positionTime) > b.unix())) == null ? void 0 : A.sort((d, L) => (d.positionTime || 0) - (L.positionTime || 0))) == null ? void 0 : W.at(0);
1966
+ const q = (O = (c = z.filter((d) => (d == null ? void 0 : d.positionTime) < b.unix())) == null ? void 0 : c.sort((d, R) => (d.positionTime || 0) - (R.positionTime || 0))) == null ? void 0 : O.at(-1), Y = (W = (A = z.filter((d) => (d == null ? void 0 : d.positionTime) > b.unix())) == null ? void 0 : A.sort((d, R) => (d.positionTime || 0) - (R.positionTime || 0))) == null ? void 0 : W.at(0);
1967
1967
  if (q && Y) {
1968
- const d = S.calculateBearing(q, Y, !0), L = S.calculateDistance(q, Y), T = (b.unix() - q.positionTime) / (Y.positionTime - q.positionTime);
1969
- p = S.calculateCoordinate(q, d, L * T), p.positionTime = b.unix(), p.utc = b.utc().format(), p.cog = d, p.sog = Math.round(L / ((Y.positionTime - q.positionTime) / 3600) * 100) / 100;
1968
+ const d = B.calculateBearing(q, Y, !0), R = B.calculateDistance(q, Y), T = (b.unix() - q.positionTime) / (Y.positionTime - q.positionTime);
1969
+ p = B.calculateCoordinate(q, d, R * T), p.positionTime = b.unix(), p.utc = b.utc().format(), p.cog = d, p.sog = Math.round(R / ((Y.positionTime - q.positionTime) / 3600) * 100) / 100;
1970
1970
  } else
1971
- p = q || Y, p && (p.utc = t.unix(p == null ? void 0 : p.positionTime).utc().format());
1971
+ p = q || Y, p && (p.utc = u.unix(p == null ? void 0 : p.positionTime).utc().format());
1972
1972
  }
1973
1973
  return p;
1974
1974
  }
@@ -1981,19 +1981,19 @@ class S {
1981
1981
  z = JSON.parse(JSON.stringify(z)), z.sort((q, Y) => (q.positionTime || 0) - (Y.positionTime || 0));
1982
1982
  let b = Number.MAX_SAFE_INTEGER, p = Number.MAX_SAFE_INTEGER;
1983
1983
  for (let q = 0; q < z.length - 1; q++) {
1984
- const Y = z[q], d = z[q + 1], L = S.calculatePointToLineDistance(M, Y, d);
1985
- L < b && (b = L, p = q);
1984
+ const Y = z[q], d = z[q + 1], R = B.calculatePointToLineDistance(M, Y, d);
1985
+ R < b && (b = R, p = q);
1986
1986
  }
1987
- const c = z[p], O = z[p + 1], A = S.calculateDistance(c, M), W = S.calculateDistance(O, M);
1987
+ const c = z[p], O = z[p + 1], A = B.calculateDistance(c, M), W = B.calculateDistance(O, M);
1988
1988
  if (A === 0)
1989
1989
  M = c;
1990
1990
  else if (W === 0)
1991
1991
  M = O;
1992
1992
  else {
1993
- const q = c.positionTime || 0, Y = O.positionTime || 0, d = S.calculateDistance(c, O);
1993
+ const q = c.positionTime || 0, Y = O.positionTime || 0, d = B.calculateDistance(c, O);
1994
1994
  M.positionTime = Math.round(q + (Y - q) * (A / d));
1995
1995
  }
1996
- return M.utc = M.positionTime ? t.unix(M.positionTime).utc().format() : void 0, M.positionTime ? M : void 0;
1996
+ return M.utc = M.positionTime ? u.unix(M.positionTime).utc().format() : void 0, M.positionTime ? M : void 0;
1997
1997
  }
1998
1998
  /**
1999
1999
  * 翻转轨迹
@@ -2040,7 +2040,7 @@ class S {
2040
2040
  */
2041
2041
  static coordinatesSummary(M) {
2042
2042
  if (M.length > 1) {
2043
- const z = M[0], b = M[M.length - 1], p = (z == null ? void 0 : z.positionTime) < (b == null ? void 0 : b.positionTime) ? t.unix(z == null ? void 0 : z.positionTime) : t.unix(b == null ? void 0 : b.positionTime), c = (z == null ? void 0 : z.positionTime) > (b == null ? void 0 : b.positionTime) ? t.unix(z == null ? void 0 : z.positionTime) : t.unix(b == null ? void 0 : b.positionTime), O = Math.round(c.diff(p, "hours", !0) * 100) / 100, A = this.generateRouteAccordingToWaypoints(M, !0, !0), W = this.calculateRouteDistance(A), q = O ? Math.round(W / O * 100) / 100 : 0;
2043
+ const z = M[0], b = M[M.length - 1], p = (z == null ? void 0 : z.positionTime) < (b == null ? void 0 : b.positionTime) ? u.unix(z == null ? void 0 : z.positionTime) : u.unix(b == null ? void 0 : b.positionTime), c = (z == null ? void 0 : z.positionTime) > (b == null ? void 0 : b.positionTime) ? u.unix(z == null ? void 0 : z.positionTime) : u.unix(b == null ? void 0 : b.positionTime), O = Math.round(c.diff(p, "hours", !0) * 100) / 100, A = this.generateRouteAccordingToWaypoints(M, !0, !0), W = this.calculateRouteDistance(A), q = O ? Math.round(W / O * 100) / 100 : 0;
2044
2044
  return {
2045
2045
  begin: p.utc().format(),
2046
2046
  end: c.utc().format(),
@@ -2067,37 +2067,47 @@ class S {
2067
2067
  * }
2068
2068
  */
2069
2069
  static pickUTCSampleFromSpeed(M, z) {
2070
- var Y, d, L;
2070
+ var Y, d, R;
2071
2071
  if (!((d = (Y = z == null ? void 0 : z.sample) == null ? void 0 : Y.hours) != null && d.length))
2072
2072
  return { routes: [], hour: void 0 };
2073
- const b = z.sample.hours.at(0), p = t.utc(M), c = t.utc(z.eta), O = p.isAfter(c) ? c : p;
2073
+ const b = z.sample.hours.at(0), p = u.utc(M), c = u.utc(z.eta), O = p.isAfter(c) ? c : p;
2074
2074
  let A = z.sample.hours.find((T) => T.eta === O.format());
2075
2075
  if (!A) {
2076
- const T = z.sample.hours.filter((h) => t.utc(h.eta).isBefore(O)).at(-1), f = S.calculateSubRoute(T, z.route);
2077
- A = (L = this.calculateNextCoordinateAlongRoute(T, T.speed * O.diff(t(T.etd), "hours", !0), f)) == null ? void 0 : L.coordinate;
2078
- const { bearing: i, cFactor: r, cog: s, wxFactor: Z, meteo: P } = T, B = Math.round(A.distanceFromPrevious * 1e4) / 1e4, G = Math.round((B + T.distanceFromStart) * 1e4) / 1e4;
2076
+ const T = z.sample.hours.filter((h) => u.utc(h.eta).isBefore(O)).at(-1), f = this.calculateSubRoute(T, z.route);
2077
+ A = (R = this.calculateNextCoordinateAlongRoute(T, T.speed * O.diff(u(T.etd), "hours", !0), f)) == null ? void 0 : R.coordinate;
2078
+ const { bearing: i, cFactor: S, cog: s, wxFactor: Z, meteo: P } = T, r = Math.round(A.distanceFromPrevious * 1e4) / 1e4, G = Math.round((r + T.distanceFromStart) * 1e4) / 1e4;
2079
2079
  A = {
2080
2080
  ...A,
2081
- bearing: i,
2082
- cFactor: r,
2081
+ cFactor: S,
2083
2082
  cog: s,
2084
2083
  speed: T.speed,
2085
2084
  wxFactor: Z,
2086
2085
  distanceFromStart: G,
2087
- distanceFromPrevious: B,
2088
- distanceToGo: Math.round((z.distance - G) * 1e4) / 1e4,
2089
- timeToGo: Math.round(c.diff(O, "hours", !0) * 100) / 100,
2086
+ distanceFromPrevious: r,
2090
2087
  meteo: P,
2091
2088
  eta: O.format(),
2092
2089
  etd: O.format()
2093
2090
  };
2094
2091
  }
2092
+ A.distanceToGo = Math.round((z.distance - A.distanceFromStart) * 100) / 100, A.timeToGo = Math.round(c.diff(A.etd, "hours", !0) * 100) / 100;
2095
2093
  const W = this.calculateRangeWaypoints(b, A, z.route);
2096
2094
  return {
2097
2095
  routes: this.generateRouteAccordingToWaypoints(W),
2098
2096
  hour: A
2099
2097
  };
2100
2098
  }
2099
+ static pickUTCSampleFromRoute(M, z, b) {
2100
+ var T;
2101
+ const p = this.calculateSubRoute(z, b), c = this.calculateRouteDistance(p), O = c / z.speed, A = u.utc(M), W = u(z.etd), q = (T = this.calculateNextCoordinateAlongRoute(z, z.speed * A.diff(u(z.etd), "hours", !0), p)) == null ? void 0 : T.coordinate;
2102
+ q.speed = z.speed;
2103
+ const Y = W.clone().add(q.hourFromPrevious, "hour");
2104
+ q.eta = Math.abs(Y.diff(A, "second")) < 2 ? A.format() : Y.format(), q.etd = q.eta, q.distanceFromStart = Math.round(q.distanceFromPrevious * 100) / 100, q.distanceToGo = Math.round((c - q.distanceFromStart) * 100) / 100, q.timeToGo = Math.round(W.clone().add(O, "hour").diff(u(q.etd), "hour") * 100) / 100;
2105
+ const d = this.calculateRangeWaypoints(z, q, b);
2106
+ return {
2107
+ routes: this.generateRouteAccordingToWaypoints(d),
2108
+ hour: q
2109
+ };
2110
+ }
2101
2111
  }
2102
2112
  let I;
2103
2113
  try {
@@ -2119,20 +2129,20 @@ class t0 {
2119
2129
  A && A.wind && (A.wind.kts = A.kts);
2120
2130
  for (const W of O.forecasts) {
2121
2131
  let q;
2122
- const Y = [], d = [], L = t(W.date).utc(), T = `${O.name}-${W.model}`;
2132
+ const Y = [], d = [], R = u(W.date).utc(), T = `${O.name}-${W.model}`;
2123
2133
  for (const i in W == null ? void 0 : W.hours) {
2124
- const r = W.hours[i];
2125
- q = q || r;
2126
- const s = L.clone().add(Number(i), "hour"), Z = N.point([r.lng, r.lat], {
2134
+ const S = W.hours[i];
2135
+ q = q || S;
2136
+ const s = R.clone().add(Number(i), "hour"), Z = N.point([S.lng, S.lat], {
2127
2137
  model: W.model,
2128
2138
  name: O.name,
2129
2139
  date: s.format(),
2130
2140
  hour: Number(i),
2131
2141
  format: s.format("MMM-DD/HHmm[Z]"),
2132
- pressure: r.pressure > 1e4 ? n.roundPrecision(r.pressure / 100, 0) : n.roundPrecision(r.pressure, 0),
2133
- gusts: r.gusts,
2134
- wind: r.wind || {},
2135
- movement: r.movement,
2142
+ pressure: S.pressure > 1e4 ? n.roundPrecision(S.pressure / 100, 0) : n.roundPrecision(S.pressure, 0),
2143
+ gusts: S.gusts,
2144
+ wind: S.wind || {},
2145
+ movement: S.movement,
2136
2146
  category: T,
2137
2147
  type: "forecast"
2138
2148
  });
@@ -2143,12 +2153,12 @@ class t0 {
2143
2153
  deg: void 0
2144
2154
  };
2145
2155
  if (A) {
2146
- const i = t(A.updated).utc();
2156
+ const i = u(A.updated).utc();
2147
2157
  if (q) {
2148
- const s = S.calculateDistance(A, q), Z = t(q.utc || q.updated).diff(i, "h", !0);
2149
- f.kts = Math.round(s / Z * 100) / 100, f.deg = S.calculateBearing(A, q, !0, 0);
2158
+ const s = B.calculateDistance(A, q), Z = u(q.utc || q.updated).diff(i, "h", !0);
2159
+ f.kts = Math.round(s / Z * 100) / 100, f.deg = B.calculateBearing(A, q, !0, 0);
2150
2160
  }
2151
- const r = N.point([A.lng, A.lat], {
2161
+ const S = N.point([A.lng, A.lat], {
2152
2162
  model: W.model,
2153
2163
  name: O.name,
2154
2164
  date: i.format(),
@@ -2162,11 +2172,11 @@ class t0 {
2162
2172
  important: !0
2163
2173
  // 第一个预报点为重要点
2164
2174
  });
2165
- d.unshift(r), Y.unshift(r.geometry.coordinates);
2175
+ d.unshift(S), Y.unshift(S.geometry.coordinates);
2166
2176
  }
2167
2177
  if (z.features.push(...d), (Y == null ? void 0 : Y.length) > 1) {
2168
2178
  const i = N.lineString(n.convertToMonotonicLng2(Y), {
2169
- date: (A == null ? void 0 : A.updated) || (L == null ? void 0 : L.format()),
2179
+ date: (A == null ? void 0 : A.updated) || (R == null ? void 0 : R.format()),
2170
2180
  id: O.id || O.name,
2171
2181
  model: W.model,
2172
2182
  name: O.name,
@@ -2178,28 +2188,28 @@ class t0 {
2178
2188
  }
2179
2189
  }
2180
2190
  }
2181
- if (z.features.sort((W, q) => W.properties.type === "forecast" && q.properties.type === "forecast" && W.geometry.type === "Point" && q.geometry.type === "Point" ? t(W.properties.date).valueOf() - t(q.properties.date).valueOf() : 0), (p = O.history) != null && p.length) {
2182
- const W = [], q = t(A == null ? void 0 : A.updated).utc(), Y = t((c = O.history) == null ? void 0 : c.at(-1).updated).utc(), d = q.diff(Y, "h") % 24 > 2 ? 24 : 12;
2183
- for (const L of O.history) {
2184
- const T = t(L.updated).utc(), f = T.isSameOrBefore(q) || T.isSame(Y);
2191
+ if (z.features.sort((W, q) => W.properties.type === "forecast" && q.properties.type === "forecast" && W.geometry.type === "Point" && q.geometry.type === "Point" ? u(W.properties.date).valueOf() - u(q.properties.date).valueOf() : 0), (p = O.history) != null && p.length) {
2192
+ const W = [], q = u(A == null ? void 0 : A.updated).utc(), Y = u((c = O.history) == null ? void 0 : c.at(-1).updated).utc(), d = q.diff(Y, "h") % 24 > 2 ? 24 : 12;
2193
+ for (const R of O.history) {
2194
+ const T = u(R.updated).utc(), f = T.isSameOrBefore(q) || T.isSame(Y);
2185
2195
  f && q.add(-d, "h");
2186
- const i = N.point([L.lng, L.lat], {
2196
+ const i = N.point([R.lng, R.lat], {
2187
2197
  name: O.name,
2188
2198
  date: T.format(),
2189
2199
  format: T.format("MMM-DD/HHmm[Z]"),
2190
- pressure: L.pressure > 1e4 ? n.roundPrecision(L.pressure / 100, 0) : n.roundPrecision(L.pressure, 0),
2191
- kts: L.kts,
2192
- level: L.type,
2200
+ pressure: R.pressure > 1e4 ? n.roundPrecision(R.pressure / 100, 0) : n.roundPrecision(R.pressure, 0),
2201
+ kts: R.kts,
2202
+ level: R.type,
2193
2203
  type: "history",
2194
2204
  category: `${O.name}-history`,
2195
- wind: L.wind,
2196
- movement: L.movement,
2205
+ wind: R.wind,
2206
+ movement: R.movement,
2197
2207
  important: f
2198
2208
  });
2199
2209
  z.features.push(i), W.push(i.geometry.coordinates);
2200
2210
  }
2201
2211
  if (W.length === 1 && W.push(W[0]), W.length > 1) {
2202
- const L = N.lineString(n.convertToMonotonicLng2(W), {
2212
+ const R = N.lineString(n.convertToMonotonicLng2(W), {
2203
2213
  name: O.name,
2204
2214
  type: "history",
2205
2215
  updated: A == null ? void 0 : A.updated,
@@ -2207,7 +2217,7 @@ class t0 {
2207
2217
  kts: A == null ? void 0 : A.kts,
2208
2218
  level: A == null ? void 0 : A.type
2209
2219
  });
2210
- z.features.push(L);
2220
+ z.features.push(R);
2211
2221
  }
2212
2222
  }
2213
2223
  }
@@ -2222,28 +2232,28 @@ class t0 {
2222
2232
  var c, O, A, W;
2223
2233
  const b = (c = M == null ? void 0 : M.data) == null ? void 0 : c.features.filter((q) => q.geometry.type === "LineString" && q.properties.type === "forecast"), p = [];
2224
2234
  for (const q of b) {
2225
- const Y = q.properties.name, d = q.properties.model, L = q.properties.showCircle, T = q.properties.disabled, f = t(q.properties.date).utc();
2235
+ const Y = q.properties.name, d = q.properties.model, R = q.properties.showCircle, T = q.properties.disabled, f = u(q.properties.date).utc();
2226
2236
  let i = z * 60;
2227
- const r = (O = M == null ? void 0 : M.data) == null ? void 0 : O.features.filter(
2237
+ const S = (O = M == null ? void 0 : M.data) == null ? void 0 : O.features.filter(
2228
2238
  (P) => P.geometry.type === "Point" && P.properties.type === "forecast" && P.properties.category === `${Y}-${d}`
2229
2239
  );
2230
2240
  let s, Z = f.clone().add(i, "minute").set({ minute: 0, second: 0, millisecond: 0 });
2231
- for (; s = this.pickIndex(r, Z), s <= r.length - 1; ) {
2241
+ for (; s = this.pickIndex(S, Z), s <= S.length - 1; ) {
2232
2242
  if (s > 0) {
2233
- const P = r[s], B = s === 0 ? void 0 : r[s - 1], G = (i / 60 - ((A = B == null ? void 0 : B.properties) == null ? void 0 : A.hour)) / (P.properties.hour - ((W = B == null ? void 0 : B.properties) == null ? void 0 : W.hour)), h = this.computeNumber(B == null ? void 0 : B.geometry.coordinates[0], P.geometry.coordinates[0], G), Q = this.computeNumber(B == null ? void 0 : B.geometry.coordinates[1], P.geometry.coordinates[1], G), F = N.point([h, Q], {
2243
+ const P = S[s], r = s === 0 ? void 0 : S[s - 1], G = (i / 60 - ((A = r == null ? void 0 : r.properties) == null ? void 0 : A.hour)) / (P.properties.hour - ((W = r == null ? void 0 : r.properties) == null ? void 0 : W.hour)), h = this.computeNumber(r == null ? void 0 : r.geometry.coordinates[0], P.geometry.coordinates[0], G), Q = this.computeNumber(r == null ? void 0 : r.geometry.coordinates[1], P.geometry.coordinates[1], G), F = N.point([h, Q], {
2234
2244
  name: Y,
2235
2245
  model: d,
2236
2246
  category: P == null ? void 0 : P.properties.category,
2237
2247
  date: Z.format(),
2238
2248
  format: Z.format("MMM-DD/HHmm[Z]"),
2239
- gusts: this.computeNumber(B == null ? void 0 : B.properties.gusts, P.properties.gusts, G),
2240
- hour: this.computeNumber(B == null ? void 0 : B.properties.hour, P.properties.hour, G),
2241
- movement: this.computeNumber(B == null ? void 0 : B.properties.movement, P.properties.movement, G),
2242
- pressure: this.computeNumber(B == null ? void 0 : B.properties.pressure, P.properties.pressure, G),
2243
- wind: this.computeNumber(B == null ? void 0 : B.properties.wind, P.properties.wind, G),
2249
+ gusts: this.computeNumber(r == null ? void 0 : r.properties.gusts, P.properties.gusts, G),
2250
+ hour: this.computeNumber(r == null ? void 0 : r.properties.hour, P.properties.hour, G),
2251
+ movement: this.computeNumber(r == null ? void 0 : r.properties.movement, P.properties.movement, G),
2252
+ pressure: this.computeNumber(r == null ? void 0 : r.properties.pressure, P.properties.pressure, G),
2253
+ wind: this.computeNumber(r == null ? void 0 : r.properties.wind, P.properties.wind, G),
2244
2254
  type: "forecast",
2245
2255
  disabled: T,
2246
- showCircle: L
2256
+ showCircle: R
2247
2257
  });
2248
2258
  p.push(F);
2249
2259
  }
@@ -2277,7 +2287,7 @@ class t0 {
2277
2287
  const { t1: c, t2: O, hr: A, hours: W } = this.tropicalCenterTwin(z, 24, p);
2278
2288
  if (c && O) {
2279
2289
  if (!p.debug) {
2280
- const f = S.calculateDistance(M, c), i = S.calculateDistance(M, O);
2290
+ const f = B.calculateDistance(M, c), i = B.calculateDistance(M, O);
2281
2291
  if (f > 2 * b && i > 2 * b)
2282
2292
  return I == null || I.info("[%s] the distance between from and t1(%d) and t2(%d) is enough, no need diversion: %j", p.requestId, f, i, {
2283
2293
  from: M,
@@ -2286,10 +2296,10 @@ class t0 {
2286
2296
  hr: A
2287
2297
  }), {};
2288
2298
  }
2289
- const q = S.calculateBearing(M, c), Y = S.calculateBearing(c, O), d = Math.abs(q - Y);
2290
- let L = 0;
2291
- d < 180 ? L = d + 90 : d >= 180 && (L = d - 90);
2292
- const T = S.calculateCoordinate(c, L, b);
2299
+ const q = B.calculateBearing(M, c), Y = B.calculateBearing(c, O), d = Math.abs(q - Y);
2300
+ let R = 0;
2301
+ d < 180 ? R = d + 90 : d >= 180 && (R = d - 90);
2302
+ const T = B.calculateCoordinate(c, R, b);
2293
2303
  return I == null || I.info("[%s] the right tangent position: %j", p.requestId, {
2294
2304
  from: M,
2295
2305
  t1: c,
@@ -2316,7 +2326,7 @@ class t0 {
2316
2326
  const { t1: c, t2: O, hr: A, hours: W } = this.tropicalCenterTwin(z, 24, p);
2317
2327
  if (c && O) {
2318
2328
  if (!p.debug) {
2319
- const T = S.calculateDistance(M, c), f = S.calculateDistance(M, O);
2329
+ const T = B.calculateDistance(M, c), f = B.calculateDistance(M, O);
2320
2330
  if (T > 2 * b && f > 2 * b)
2321
2331
  return I == null || I.info("[%s] the distance between from and t1(%d) and t2(%d) is enough, no need drifting: %j", p.requestId, T, f, {
2322
2332
  from: M,
@@ -2325,8 +2335,8 @@ class t0 {
2325
2335
  hr: A
2326
2336
  }), {};
2327
2337
  }
2328
- const q = S.calculateBearing(M, c), Y = S.calculateBearing(c, O), d = S.calculateDistance(M, c);
2329
- return { at: S.calculateCoordinate(c, q - Y + 180, b < d ? b : d), t1: c, t2: O, hr: Number(A), hours: W };
2338
+ const q = B.calculateBearing(M, c), Y = B.calculateBearing(c, O), d = B.calculateDistance(M, c);
2339
+ return { at: B.calculateCoordinate(c, q - Y + 180, b < d ? b : d), t1: c, t2: O, hr: Number(A), hours: W };
2330
2340
  } else
2331
2341
  return I == null || I.info("[%s] no need drift: %j", p.requestId, { from: M, t1: c, t2: O, hr: A }), {};
2332
2342
  }
@@ -2339,12 +2349,12 @@ class t0 {
2339
2349
  * @private
2340
2350
  */
2341
2351
  static tropicalCenterTwin(M, z = 24, b = {}) {
2342
- var Y, d, L, T, f;
2352
+ var Y, d, R, T, f;
2343
2353
  let p = {};
2344
2354
  (Y = M.forecasts) == null || Y.forEach((i) => {
2345
2355
  p = { ...i.hours, ...p };
2346
2356
  });
2347
- const c = ((d = M == null ? void 0 : M.history) == null ? void 0 : d[0]) || (p == null ? void 0 : p[(L = Object.keys(p)) == null ? void 0 : L[0]]);
2357
+ const c = ((d = M == null ? void 0 : M.history) == null ? void 0 : d[0]) || (p == null ? void 0 : p[(R = Object.keys(p)) == null ? void 0 : R[0]]);
2348
2358
  I == null || I.info("[%s] the first tropical center: %j", b.requestId, c);
2349
2359
  let O = (T = Object.keys(p || {}).filter((i) => Number(i) <= (z < 0 ? 24 : z))) == null ? void 0 : T.at(-1);
2350
2360
  O || (O = (f = Object.keys(p || {}).filter((i) => Number(i) <= (z < 0 ? 24 : 2 * z))) == null ? void 0 : f.at(-1));
@@ -2358,7 +2368,7 @@ class t0 {
2358
2368
  static pickIndex(M, z) {
2359
2369
  let b = 0;
2360
2370
  for (const p of M) {
2361
- if (t(p.properties.date).isAfter(z))
2371
+ if (u(p.properties.date).isAfter(z))
2362
2372
  return b === 0 ? -1 : b;
2363
2373
  b++;
2364
2374
  }
@@ -2386,7 +2396,7 @@ class V0 {
2386
2396
  return `${M.lat}|${M.lng}|${M.positionTime}|${M.sog}|${M.cog}|${M.hdg}|${M.draught}|${z}|${JSON.stringify(M.meteo || {})}|${M.vendor}|${M.deleted}`;
2387
2397
  }
2388
2398
  static str2Json(M) {
2389
- const [z, b, p, c, O, A, W, q, Y, d, L] = M.split("|");
2399
+ const [z, b, p, c, O, A, W, q, Y, d, R] = M.split("|");
2390
2400
  return {
2391
2401
  lat: Number(z),
2392
2402
  lng: Number(b),
@@ -2400,7 +2410,7 @@ class V0 {
2400
2410
  important: q !== "A",
2401
2411
  meteo: Y ? JSON.parse(Y) : void 0,
2402
2412
  vendor: d,
2403
- deleted: L === "true"
2413
+ deleted: R === "true"
2404
2414
  };
2405
2415
  }
2406
2416
  static inspectStoppages(M, z = 1, b = !0) {
@@ -2412,12 +2422,12 @@ class V0 {
2412
2422
  const q = M[W];
2413
2423
  if (!(b && ["N", "B", "E", "NOON", "BOSP", "EOSP"].includes(q.type))) {
2414
2424
  for (let Y = W + 1; Y < M.length; Y++) {
2415
- const d = M[Y - 1], L = M[Y];
2425
+ const d = M[Y - 1], R = M[Y];
2416
2426
  if (b && ["N", "B", "E", "NOON", "BOSP", "EOSP"].includes(q.type))
2417
2427
  continue;
2418
- const T = L.positionTime - d.positionTime;
2419
- if (S.calculateDistance(L, d, !0, 4) / (T / 3600) < z)
2420
- O || (O = q), Y === M.length - 1 && (A = L, W = Y);
2428
+ const T = R.positionTime - d.positionTime;
2429
+ if (B.calculateDistance(R, d, !0, 4) / (T / 3600) < z)
2430
+ O || (O = q), Y === M.length - 1 && (A = R, W = Y);
2421
2431
  else {
2422
2432
  O && (A = M[Y - 1], W = Y);
2423
2433
  break;
@@ -2430,18 +2440,18 @@ class V0 {
2430
2440
  lng: O.lng,
2431
2441
  sog: O.sog,
2432
2442
  positionTime: O.positionTime,
2433
- utc: t.unix(O.positionTime).utc().format()
2443
+ utc: u.unix(O.positionTime).utc().format()
2434
2444
  },
2435
2445
  end: {
2436
2446
  lat: A.lat,
2437
2447
  lng: A.lng,
2438
2448
  sog: A.sog,
2439
2449
  positionTime: A.positionTime,
2440
- utc: t.unix(A.positionTime).utc().format()
2450
+ utc: u.unix(A.positionTime).utc().format()
2441
2451
  },
2442
2452
  duration: A.positionTime - O.positionTime
2443
- }, d = M.filter((T) => T.positionTime >= Y.start.positionTime && T.positionTime <= Y.end.positionTime), L = S.divideAccordingToLng(d);
2444
- Y.distance = S.calculateRouteDistance(L), Y.hours = Math.round(Y.duration / 3600 * 10) / 10, Y.avgSog = Math.round(Y.distance / Y.hours * 10) / 10, c.push(Y);
2453
+ }, d = M.filter((T) => T.positionTime >= Y.start.positionTime && T.positionTime <= Y.end.positionTime), R = B.divideAccordingToLng(d);
2454
+ Y.distance = B.calculateRouteDistance(R), Y.hours = Math.round(Y.duration / 3600 * 10) / 10, Y.avgSog = Math.round(Y.distance / Y.hours * 10) / 10, c.push(Y);
2445
2455
  }
2446
2456
  O = void 0, A = void 0;
2447
2457
  }
@@ -2451,7 +2461,7 @@ class V0 {
2451
2461
  }
2452
2462
  export {
2453
2463
  V0 as AisHelper,
2454
- S as LaneHelper,
2464
+ B as LaneHelper,
2455
2465
  n as LngLatHelper,
2456
2466
  t0 as TropicalHelper
2457
2467
  };