@ingissa/navcore-react-native 1.0.8 → 1.0.10

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 (125) hide show
  1. package/LICENSE +3 -3
  2. package/README.md +135 -0
  3. package/dist/index.d.mts +131 -0
  4. package/dist/index.d.ts +131 -0
  5. package/dist/index.js +233 -0
  6. package/dist/index.mjs +223 -0
  7. package/package.json +46 -54
  8. package/dist/core/src/NavCore.d.ts +0 -142
  9. package/dist/core/src/NavCore.d.ts.map +0 -1
  10. package/dist/core/src/NavCore.js +0 -390
  11. package/dist/core/src/bearing/BearingEngine.d.ts +0 -24
  12. package/dist/core/src/bearing/BearingEngine.d.ts.map +0 -1
  13. package/dist/core/src/bearing/BearingEngine.js +0 -50
  14. package/dist/core/src/constants.d.ts +0 -34
  15. package/dist/core/src/constants.d.ts.map +0 -1
  16. package/dist/core/src/constants.js +0 -41
  17. package/dist/core/src/corridor/DeviationDetector.d.ts +0 -33
  18. package/dist/core/src/corridor/DeviationDetector.d.ts.map +0 -1
  19. package/dist/core/src/corridor/DeviationDetector.js +0 -83
  20. package/dist/core/src/corridor/DynamicCorridor.d.ts +0 -13
  21. package/dist/core/src/corridor/DynamicCorridor.d.ts.map +0 -1
  22. package/dist/core/src/corridor/DynamicCorridor.js +0 -26
  23. package/dist/core/src/dead-reckoning/DeadReckoning.d.ts +0 -35
  24. package/dist/core/src/dead-reckoning/DeadReckoning.d.ts.map +0 -1
  25. package/dist/core/src/dead-reckoning/DeadReckoning.js +0 -49
  26. package/dist/core/src/directions/DirectionsProvider.d.ts +0 -70
  27. package/dist/core/src/directions/DirectionsProvider.d.ts.map +0 -1
  28. package/dist/core/src/directions/DirectionsProvider.js +0 -7
  29. package/dist/core/src/directions/OSRMDirectionsProvider.d.ts +0 -26
  30. package/dist/core/src/directions/OSRMDirectionsProvider.d.ts.map +0 -1
  31. package/dist/core/src/directions/OSRMDirectionsProvider.js +0 -90
  32. package/dist/core/src/directions/OpenRouteServiceProvider.d.ts +0 -30
  33. package/dist/core/src/directions/OpenRouteServiceProvider.d.ts.map +0 -1
  34. package/dist/core/src/directions/OpenRouteServiceProvider.js +0 -111
  35. package/dist/core/src/directions/ValhallaDirectionsProvider.d.ts +0 -33
  36. package/dist/core/src/directions/ValhallaDirectionsProvider.d.ts.map +0 -1
  37. package/dist/core/src/directions/ValhallaDirectionsProvider.js +0 -155
  38. package/dist/core/src/eta/ETAEngine.d.ts +0 -61
  39. package/dist/core/src/eta/ETAEngine.d.ts.map +0 -1
  40. package/dist/core/src/eta/ETAEngine.js +0 -74
  41. package/dist/core/src/features.d.ts +0 -76
  42. package/dist/core/src/features.d.ts.map +0 -1
  43. package/dist/core/src/features.js +0 -76
  44. package/dist/core/src/geo/bearing.d.ts +0 -11
  45. package/dist/core/src/geo/bearing.d.ts.map +0 -1
  46. package/dist/core/src/geo/bearing.js +0 -25
  47. package/dist/core/src/geo/cumulative.d.ts +0 -9
  48. package/dist/core/src/geo/cumulative.d.ts.map +0 -1
  49. package/dist/core/src/geo/cumulative.js +0 -20
  50. package/dist/core/src/geo/haversine.d.ts +0 -13
  51. package/dist/core/src/geo/haversine.d.ts.map +0 -1
  52. package/dist/core/src/geo/haversine.js +0 -39
  53. package/dist/core/src/geo/projection.d.ts +0 -7
  54. package/dist/core/src/geo/projection.d.ts.map +0 -1
  55. package/dist/core/src/geo/projection.js +0 -17
  56. package/dist/core/src/geofencing/GeofencingEngine.d.ts +0 -93
  57. package/dist/core/src/geofencing/GeofencingEngine.d.ts.map +0 -1
  58. package/dist/core/src/geofencing/GeofencingEngine.js +0 -154
  59. package/dist/core/src/index.d.ts +0 -66
  60. package/dist/core/src/index.d.ts.map +0 -1
  61. package/dist/core/src/index.js +0 -62
  62. package/dist/core/src/kalman/KalmanFilter2D.d.ts +0 -46
  63. package/dist/core/src/kalman/KalmanFilter2D.d.ts.map +0 -1
  64. package/dist/core/src/kalman/KalmanFilter2D.js +0 -77
  65. package/dist/core/src/license/LicenseManager.d.ts +0 -40
  66. package/dist/core/src/license/LicenseManager.d.ts.map +0 -1
  67. package/dist/core/src/license/LicenseManager.js +0 -119
  68. package/dist/core/src/license/verifyP256Signature.d.ts +0 -2
  69. package/dist/core/src/license/verifyP256Signature.d.ts.map +0 -1
  70. package/dist/core/src/license/verifyP256Signature.js +0 -26
  71. package/dist/core/src/off-route/NavigationFSM.d.ts +0 -42
  72. package/dist/core/src/off-route/NavigationFSM.d.ts.map +0 -1
  73. package/dist/core/src/off-route/NavigationFSM.js +0 -56
  74. package/dist/core/src/off-route/OffRouteFSM.d.ts +0 -70
  75. package/dist/core/src/off-route/OffRouteFSM.d.ts.map +0 -1
  76. package/dist/core/src/off-route/OffRouteFSM.js +0 -151
  77. package/dist/core/src/predictor/RouteOffsetPredictor.d.ts +0 -24
  78. package/dist/core/src/predictor/RouteOffsetPredictor.d.ts.map +0 -1
  79. package/dist/core/src/predictor/RouteOffsetPredictor.js +0 -55
  80. package/dist/core/src/progress/InstructionEditor.d.ts +0 -77
  81. package/dist/core/src/progress/InstructionEditor.d.ts.map +0 -1
  82. package/dist/core/src/progress/InstructionEditor.js +0 -151
  83. package/dist/core/src/progress/InstructionResolver.d.ts +0 -25
  84. package/dist/core/src/progress/InstructionResolver.d.ts.map +0 -1
  85. package/dist/core/src/progress/InstructionResolver.js +0 -78
  86. package/dist/core/src/progress/ProgressTracker.d.ts +0 -12
  87. package/dist/core/src/progress/ProgressTracker.d.ts.map +0 -1
  88. package/dist/core/src/progress/ProgressTracker.js +0 -22
  89. package/dist/core/src/renderer/MapRendererAdapter.d.ts +0 -72
  90. package/dist/core/src/renderer/MapRendererAdapter.d.ts.map +0 -1
  91. package/dist/core/src/renderer/MapRendererAdapter.js +0 -19
  92. package/dist/core/src/route-builder/CustomRouteBuilder.d.ts +0 -83
  93. package/dist/core/src/route-builder/CustomRouteBuilder.d.ts.map +0 -1
  94. package/dist/core/src/route-builder/CustomRouteBuilder.js +0 -160
  95. package/dist/core/src/route-plan/RoutePlan.d.ts +0 -38
  96. package/dist/core/src/route-plan/RoutePlan.d.ts.map +0 -1
  97. package/dist/core/src/route-plan/RoutePlan.js +0 -102
  98. package/dist/core/src/session/NavigationSession.d.ts +0 -81
  99. package/dist/core/src/session/NavigationSession.d.ts.map +0 -1
  100. package/dist/core/src/session/NavigationSession.js +0 -115
  101. package/dist/core/src/snapper/ParallelRoadResolver.d.ts +0 -86
  102. package/dist/core/src/snapper/ParallelRoadResolver.d.ts.map +0 -1
  103. package/dist/core/src/snapper/ParallelRoadResolver.js +0 -83
  104. package/dist/core/src/snapper/RouteSnapper.d.ts +0 -38
  105. package/dist/core/src/snapper/RouteSnapper.d.ts.map +0 -1
  106. package/dist/core/src/snapper/RouteSnapper.js +0 -80
  107. package/dist/core/src/voice/VoiceTriggerEngine.d.ts +0 -80
  108. package/dist/core/src/voice/VoiceTriggerEngine.d.ts.map +0 -1
  109. package/dist/core/src/voice/VoiceTriggerEngine.js +0 -108
  110. package/dist/react-native/src/NavCoreProvider.d.ts +0 -33
  111. package/dist/react-native/src/NavCoreProvider.d.ts.map +0 -1
  112. package/dist/react-native/src/NavCoreProvider.js +0 -41
  113. package/dist/react-native/src/index.d.ts +0 -10
  114. package/dist/react-native/src/index.d.ts.map +0 -1
  115. package/dist/react-native/src/index.js +0 -8
  116. package/dist/react-native/src/useNavCore.d.ts +0 -60
  117. package/dist/react-native/src/useNavCore.d.ts.map +0 -1
  118. package/dist/react-native/src/useNavCore.js +0 -119
  119. package/dist/react-native/src/useNavSelectors.d.ts +0 -42
  120. package/dist/react-native/src/useNavSelectors.d.ts.map +0 -1
  121. package/dist/react-native/src/useNavSelectors.js +0 -103
  122. package/src/NavCoreProvider.tsx +0 -59
  123. package/src/index.ts +0 -18
  124. package/src/useNavCore.ts +0 -208
  125. package/src/useNavSelectors.ts +0 -143
package/dist/index.mjs ADDED
@@ -0,0 +1,223 @@
1
+ import { createContext, useRef, useState, useEffect, useMemo, useContext, useCallback, useSyncExternalStore } from 'react';
2
+ import { NavCore } from '@ingissa/navcore-core';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ // src/useNavCore.ts
6
+ function useNavCore({
7
+ gpsCoord,
8
+ gpsBearing,
9
+ gpsAccuracy,
10
+ gpsTimestamp,
11
+ speed,
12
+ routeGeometry,
13
+ instructions,
14
+ isNavigating,
15
+ options,
16
+ resumeAtIndex,
17
+ outputRef,
18
+ onDeviation,
19
+ onRejoin,
20
+ onInstruction,
21
+ onArrival,
22
+ pollRateHz = 30
23
+ }) {
24
+ const navRef = useRef(null);
25
+ if (!navRef.current) {
26
+ navRef.current = new NavCore(options);
27
+ }
28
+ const engine = navRef.current;
29
+ const [state, setState] = useState(() => engine.getState());
30
+ useEffect(() => {
31
+ if (!onDeviation) return;
32
+ const handler = (data) => onDeviation(data);
33
+ engine.on("deviation", handler);
34
+ return () => {
35
+ engine.off("deviation", handler);
36
+ };
37
+ }, [engine, onDeviation]);
38
+ useEffect(() => {
39
+ if (!onRejoin) return;
40
+ const handler = (data) => onRejoin(data);
41
+ engine.on("rejoined", handler);
42
+ return () => {
43
+ engine.off("rejoined", handler);
44
+ };
45
+ }, [engine, onRejoin]);
46
+ useEffect(() => {
47
+ if (!onInstruction) return;
48
+ const handler = (data) => onInstruction(data);
49
+ engine.on("instruction", handler);
50
+ return () => {
51
+ engine.off("instruction", handler);
52
+ };
53
+ }, [engine, onInstruction]);
54
+ useEffect(() => {
55
+ if (!onArrival) return;
56
+ const handler = () => onArrival();
57
+ engine.on("arrival", handler);
58
+ return () => {
59
+ engine.off("arrival", handler);
60
+ };
61
+ }, [engine, onArrival]);
62
+ useEffect(() => {
63
+ if (routeGeometry && routeGeometry.length >= 2) {
64
+ engine.setRoute(routeGeometry, instructions);
65
+ }
66
+ }, [engine, routeGeometry]);
67
+ useEffect(() => {
68
+ if (instructions && instructions.length > 0 && routeGeometry && routeGeometry.length >= 2) {
69
+ engine.setRoute(routeGeometry, instructions);
70
+ }
71
+ }, [engine, instructions]);
72
+ useEffect(() => {
73
+ if (!gpsCoord || !isNavigating) return;
74
+ const gpsUpdate = {
75
+ coord: gpsCoord,
76
+ accuracy: gpsAccuracy ?? null,
77
+ bearing: gpsBearing ?? null,
78
+ speed,
79
+ timestamp: gpsTimestamp ?? Date.now()
80
+ };
81
+ const nextState = engine.update(gpsUpdate);
82
+ if (outputRef) {
83
+ outputRef.current = {
84
+ coord: nextState.snappedCoord ?? gpsCoord,
85
+ bearing: nextState.bearing,
86
+ speed: nextState.currentSpeed
87
+ };
88
+ }
89
+ }, [engine, gpsCoord, gpsAccuracy, gpsBearing, gpsTimestamp, speed, isNavigating, outputRef]);
90
+ useEffect(() => {
91
+ if (isNavigating) {
92
+ engine.startNavigation();
93
+ }
94
+ }, [engine, isNavigating]);
95
+ useEffect(() => {
96
+ if (!isNavigating) return;
97
+ const handleUpdate = (updatedState) => {
98
+ setState(updatedState);
99
+ };
100
+ engine.on("update", handleUpdate);
101
+ setState(engine.getState());
102
+ return () => {
103
+ engine.off("update", handleUpdate);
104
+ };
105
+ }, [engine, isNavigating]);
106
+ useEffect(() => {
107
+ return () => {
108
+ engine.destroy();
109
+ navRef.current = null;
110
+ };
111
+ }, [engine]);
112
+ return useMemo(() => ({
113
+ ...state,
114
+ engine
115
+ }), [state, engine]);
116
+ }
117
+ var NavCoreContext = createContext(null);
118
+ function NavCoreProvider({ children, options }) {
119
+ const engineRef = useRef(null);
120
+ if (!engineRef.current) {
121
+ engineRef.current = new NavCore(options);
122
+ }
123
+ const value = useMemo(() => ({
124
+ engine: engineRef.current
125
+ }), []);
126
+ return /* @__PURE__ */ jsx(NavCoreContext.Provider, { value, children });
127
+ }
128
+ function useNavCoreContext() {
129
+ const ctx = useContext(NavCoreContext);
130
+ if (!ctx) {
131
+ throw new Error("useNavCoreContext must be used within a <NavCoreProvider>");
132
+ }
133
+ return ctx;
134
+ }
135
+ function useNavSelector(selector, customEngine, isEqual = Object.is) {
136
+ let contextEngine;
137
+ try {
138
+ contextEngine = useNavCoreContext().engine;
139
+ } catch {
140
+ contextEngine = void 0;
141
+ }
142
+ const engine = customEngine ?? contextEngine;
143
+ if (!engine) {
144
+ throw new Error("useNavSelector must be provided an engine or used within a NavCoreProvider");
145
+ }
146
+ const lastSelectedRef = useRef(void 0);
147
+ const lastStateRef = useRef(void 0);
148
+ const getSnapshot = useCallback(() => {
149
+ const currentState = engine.getState();
150
+ if (lastStateRef.current === currentState && lastSelectedRef.current !== void 0) {
151
+ return lastSelectedRef.current;
152
+ }
153
+ const nextSelected = selector(currentState);
154
+ if (lastSelectedRef.current !== void 0 && isEqual(lastSelectedRef.current, nextSelected)) {
155
+ return lastSelectedRef.current;
156
+ }
157
+ lastStateRef.current = currentState;
158
+ lastSelectedRef.current = nextSelected;
159
+ return nextSelected;
160
+ }, [engine, selector, isEqual]);
161
+ const subscribe = useCallback((onStoreChange) => {
162
+ engine.on("update", onStoreChange);
163
+ return () => {
164
+ engine.off("update", onStoreChange);
165
+ };
166
+ }, [engine]);
167
+ return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
168
+ }
169
+ function useNavInstruction(customEngine) {
170
+ return useNavSelector(
171
+ (state) => {
172
+ if (state.nextInstructionIndex === null) return null;
173
+ let engine = customEngine;
174
+ if (!engine) {
175
+ try {
176
+ engine = useNavCoreContext().engine;
177
+ } catch {
178
+ }
179
+ }
180
+ if (!engine) return null;
181
+ const list = engine.getInstructions();
182
+ return list[state.nextInstructionIndex] ?? null;
183
+ },
184
+ customEngine,
185
+ (a, b) => a === b || a?.geometryIndex === b?.geometryIndex && a?.instruction === b?.instruction
186
+ );
187
+ }
188
+ function useNavAlert(customEngine) {
189
+ return useNavSelector(
190
+ (state) => state.alertState,
191
+ customEngine,
192
+ Object.is
193
+ );
194
+ }
195
+ function useNavProgress(customEngine) {
196
+ return useNavSelector(
197
+ (state) => ({
198
+ distanceToDestination: state.distanceToDestination,
199
+ distanceToNextInstruction: state.distanceToNextInstruction,
200
+ progressIndex: state.progressIndex,
201
+ routeIndex: state.routeIndex,
202
+ hasArrived: state.hasArrived
203
+ }),
204
+ customEngine,
205
+ (a, b) => a.distanceToDestination === b.distanceToDestination && a.distanceToNextInstruction === b.distanceToNextInstruction && a.progressIndex === b.progressIndex && a.routeIndex === b.routeIndex && a.hasArrived === b.hasArrived
206
+ );
207
+ }
208
+ function useNavIsOffRoute(customEngine) {
209
+ return useNavSelector(
210
+ (state) => state.isOffRoute,
211
+ customEngine,
212
+ Object.is
213
+ );
214
+ }
215
+ function useNavSpeed(customEngine) {
216
+ return useNavSelector(
217
+ (state) => state.currentSpeed,
218
+ customEngine,
219
+ Object.is
220
+ );
221
+ }
222
+
223
+ export { NavCoreProvider, useNavAlert, useNavCore, useNavCoreContext, useNavInstruction, useNavIsOffRoute, useNavProgress, useNavSelector, useNavSpeed };
package/package.json CHANGED
@@ -1,54 +1,46 @@
1
- {
2
- "name": "@ingissa/navcore-react-native",
3
- "version": "1.0.8",
4
- "description": "React Native bindings for the NavCore navigation engine.",
5
- "author": "Ingissa <8abnav@gmail.com>",
6
- "license": "SEE LICENSE IN LICENSE",
7
- "homepage": "https://navcore.dev",
8
- "repository": {
9
- "type": "git",
10
- "url": "git+https://github.com/ingissa/navcore-sdk.git"
11
- },
12
- "bugs": {
13
- "url": "https://github.com/ingissa/navcore-sdk/issues"
14
- },
15
- "main": "dist/index.js",
16
- "module": "dist/index.mjs",
17
- "types": "dist/index.d.ts",
18
- "exports": {
19
- ".": {
20
- "import": "./dist/index.mjs",
21
- "require": "./dist/index.js",
22
- "types": "./dist/index.d.ts"
23
- }
24
- },
25
- "files": [
26
- "dist",
27
- "src",
28
- "LICENSE"
29
- ],
30
- "sideEffects": false,
31
- "publishConfig": {
32
- "access": "public"
33
- },
34
- "engines": {
35
- "node": ">=16"
36
- },
37
- "scripts": {
38
- "build": "tsc -p tsconfig.build.json",
39
- "lint": "tsc --noEmit",
40
- "prepublishOnly": "npm run build"
41
- },
42
- "peerDependencies": {
43
- "@ingissa/navcore-core": "^1.0.8",
44
- "react": ">=18.0.0",
45
- "react-native": ">=0.72.0",
46
- "react-native-maps": ">=1.0.0"
47
- },
48
- "peerDependenciesMeta": {
49
- "react-native-maps": {
50
- "optional": true
51
- }
52
- },
53
- "dependencies": {}
54
- }
1
+ {
2
+ "name": "@ingissa/navcore-react-native",
3
+ "version": "1.0.10",
4
+ "description": "React Native bindings for the NavCore navigation engine.",
5
+ "author": "Ingissa <8abnav@gmail.com>",
6
+ "license": "SEE LICENSE IN LICENSE",
7
+ "homepage": "https://navcore-web.vercel.app/",
8
+ "main": "dist/index.js",
9
+ "module": "dist/index.mjs",
10
+ "types": "dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.mjs",
15
+ "require": "./dist/index.js"
16
+ }
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "LICENSE"
21
+ ],
22
+ "sideEffects": false,
23
+ "publishConfig": {
24
+ "access": "public"
25
+ },
26
+ "engines": {
27
+ "node": ">=16"
28
+ },
29
+ "scripts": {
30
+ "build": "tsup",
31
+ "lint": "tsc --noEmit",
32
+ "prepublishOnly": "npm run build --prefix ../.. && node ../../scripts/check-release.mjs"
33
+ },
34
+ "peerDependencies": {
35
+ "@ingissa/navcore-core": "^1.0.10",
36
+ "react": ">=18.0.0",
37
+ "react-native": ">=0.72.0",
38
+ "react-native-maps": ">=1.0.0"
39
+ },
40
+ "peerDependenciesMeta": {
41
+ "react-native-maps": {
42
+ "optional": true
43
+ }
44
+ },
45
+ "dependencies": {}
46
+ }
@@ -1,142 +0,0 @@
1
- /**
2
- * NavCore — Main Orchestrator
3
- *
4
- * Fuses all extracted modules into a single engine class.
5
- * Framework-agnostic; license verification does not require platform crypto APIs.
6
- *
7
- * Usage:
8
- * const engine = new NavCore({ licenseKey: '...' });
9
- * engine.setRoute(routeCoords, instructions);
10
- * engine.update(gpsUpdate);
11
- * const state = engine.getState();
12
- */
13
- import type { Coordinate } from './geo/haversine';
14
- import { type NavInstruction } from './progress/InstructionResolver';
15
- import { NavigationFSM } from './off-route/NavigationFSM';
16
- import { OffRouteFSM } from './off-route/OffRouteFSM';
17
- import { LicenseManager } from './license/LicenseManager';
18
- import type { RoutePlan } from './route-plan/RoutePlan';
19
- export interface NavGpsUpdate {
20
- coord: Coordinate;
21
- accuracy: number | null;
22
- bearing: number | null;
23
- speed: number;
24
- timestamp: number;
25
- }
26
- export interface NavCoreOptions {
27
- licenseKey?: string;
28
- isDev?: boolean;
29
- isCircuit?: boolean;
30
- kalmanQ?: number;
31
- kalmanRBase?: number;
32
- baseCorridorMeters?: number;
33
- maxCorridorMeters?: number;
34
- arrivalThresholdMeters?: number;
35
- bearingSmoothingAlpha?: number;
36
- }
37
- export interface NavCoreState {
38
- snappedCoord: Coordinate | null;
39
- ghostCoord: Coordinate | null;
40
- rawGpsCoord: Coordinate | null;
41
- bearing: number;
42
- rawGpsBearing: number | null;
43
- routeIndex: number;
44
- anchorRouteIndex: number | null;
45
- distanceToRoute: number;
46
- corridor: number;
47
- confidence: number;
48
- isOffRoute: boolean;
49
- navFsmState: string;
50
- progressIndex: number;
51
- hasArrived: boolean;
52
- rejoinCandidate: {
53
- coord: Coordinate;
54
- index: number;
55
- } | null;
56
- confidenceCone: {
57
- center: Coordinate;
58
- bearing: number;
59
- angle: number;
60
- length: number;
61
- } | null;
62
- alertState: 'NONE' | 'DEVIATING' | 'RECALCULATING' | 'REJOINING' | 'REJOINED';
63
- detourMode: 'NONE' | 'FREE' | 'COMMITTED';
64
- detourCommitProgress: number;
65
- distanceToDestination: number | null;
66
- distanceToNextInstruction: number | null;
67
- nextInstrIdx: number | null;
68
- nextInstructionIndex: number | null;
69
- currentSpeed: number;
70
- isGpsStale: boolean;
71
- gpsAgeMs: number;
72
- licenseStatus: string;
73
- offRouteState: string;
74
- lifecycleState: string;
75
- stability?: {
76
- oscillation: number;
77
- drift: number;
78
- jump: number;
79
- };
80
- }
81
- type EventHandler = (...args: unknown[]) => void;
82
- export declare class NavCore {
83
- private kalman;
84
- private snapper;
85
- private deadReckoning;
86
- private deviationDetector;
87
- private lifecycleFSM;
88
- private offRouteFSM;
89
- private license;
90
- private route;
91
- private instructions;
92
- private forwardCum;
93
- private reverseCum;
94
- private snappedCoord;
95
- private ghostCoord;
96
- private rawGpsCoord;
97
- private bearing;
98
- private rawGpsBearing;
99
- private routeIndex;
100
- private maxProgressIdx;
101
- private prevSegment;
102
- private distanceToRoute;
103
- private corridor;
104
- private prevDistToNext;
105
- private currentSpeed;
106
- private lastGpsTimestamp;
107
- private instrIdx;
108
- private linearOffset;
109
- private hasArrived;
110
- private readonly options;
111
- private listeners;
112
- constructor(options?: NavCoreOptions);
113
- /**
114
- * Returns true if the feature is unlocked (dev mode OR valid license).
115
- * Emits a one-time console warning when a Pro feature is blocked.
116
- */
117
- private has;
118
- /** Load route geometry and instructions */
119
- setRoute(route: ReadonlyArray<Coordinate>, instructions?: ReadonlyArray<NavInstruction>): void;
120
- /** Load a provider-normalized route plan without exposing mutable route state. */
121
- loadRoute(plan: RoutePlan): void;
122
- /** Start navigation */
123
- startNavigation(): void;
124
- /** Process a GPS update — the main engine tick */
125
- update(gps: NavGpsUpdate): NavCoreState;
126
- /** Time-advance tick for dead reckoning (call at RAF rate) */
127
- tick(nowMs: number): NavCoreState;
128
- /** Get the current engine state snapshot */
129
- getState(): NavCoreState;
130
- /** Destroy the engine */
131
- destroy(): void;
132
- on(event: string, handler: EventHandler): void;
133
- off(event: string, handler: EventHandler): void;
134
- private emit;
135
- getLicenseManager(): LicenseManager;
136
- getRoute(): ReadonlyArray<Coordinate>;
137
- getInstructions(): ReadonlyArray<NavInstruction>;
138
- getOffRouteFSM(): OffRouteFSM;
139
- getLifecycleFSM(): NavigationFSM;
140
- }
141
- export {};
142
- //# sourceMappingURL=NavCore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NavCore.d.ts","sourceRoot":"","sources":["../../../../core/src/NavCore.ts"],"names":[],"mappings":"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"}