react-native-step-tracker-pro 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 (110) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +148 -0
  3. package/android/build.gradle +119 -0
  4. package/android/consumer-rules.pro +13 -0
  5. package/android/gradle.properties +3 -0
  6. package/android/src/main/AndroidManifest.xml +78 -0
  7. package/android/src/main/java/com/steptrackerpro/StepTrackerProModule.kt +598 -0
  8. package/android/src/main/java/com/steptrackerpro/StepTrackerProPackage.kt +26 -0
  9. package/android/src/main/java/com/steptrackerpro/core/DateKeys.kt +90 -0
  10. package/android/src/main/java/com/steptrackerpro/core/GoalTracker.kt +66 -0
  11. package/android/src/main/java/com/steptrackerpro/core/MetricsCalculator.kt +48 -0
  12. package/android/src/main/java/com/steptrackerpro/core/Models.kt +73 -0
  13. package/android/src/main/java/com/steptrackerpro/core/StepCounterEngine.kt +338 -0
  14. package/android/src/main/java/com/steptrackerpro/core/StepStateStore.kt +137 -0
  15. package/android/src/main/java/com/steptrackerpro/core/StepTrackerConfig.kt +184 -0
  16. package/android/src/main/java/com/steptrackerpro/core/StepTrackerCore.kt +280 -0
  17. package/android/src/main/java/com/steptrackerpro/db/Entities.kt +67 -0
  18. package/android/src/main/java/com/steptrackerpro/db/StepDao.kt +118 -0
  19. package/android/src/main/java/com/steptrackerpro/db/StepDatabase.kt +60 -0
  20. package/android/src/main/java/com/steptrackerpro/db/StepRepository.kt +146 -0
  21. package/android/src/main/java/com/steptrackerpro/health/HealthConnectManager.kt +198 -0
  22. package/android/src/main/java/com/steptrackerpro/health/HealthPermissionActivity.kt +99 -0
  23. package/android/src/main/java/com/steptrackerpro/service/BootReceiver.kt +54 -0
  24. package/android/src/main/java/com/steptrackerpro/service/NotificationActionReceiver.kt +17 -0
  25. package/android/src/main/java/com/steptrackerpro/service/NotificationFactory.kt +170 -0
  26. package/android/src/main/java/com/steptrackerpro/service/ServiceCommands.kt +42 -0
  27. package/android/src/main/java/com/steptrackerpro/service/StepTrackerService.kt +409 -0
  28. package/android/src/main/java/com/steptrackerpro/sync/SyncScheduler.kt +102 -0
  29. package/android/src/main/java/com/steptrackerpro/sync/SyncWorkers.kt +175 -0
  30. package/android/src/main/java/com/steptrackerpro/util/BatteryOptimizationHelper.kt +94 -0
  31. package/android/src/main/java/com/steptrackerpro/util/Bridge.kt +149 -0
  32. package/android/src/main/java/com/steptrackerpro/util/PermissionHelper.kt +92 -0
  33. package/android/src/main/java/com/steptrackerpro/util/StepEventBus.kt +53 -0
  34. package/android/src/main/res/drawable/stp_ic_steps.xml +9 -0
  35. package/android/src/main/res/values/strings.xml +9 -0
  36. package/android/src/main/res/values/styles.xml +8 -0
  37. package/android/src/newarch/java/com/steptrackerpro/StepTrackerProSpec.kt +10 -0
  38. package/android/src/oldarch/java/com/steptrackerpro/StepTrackerProSpec.kt +60 -0
  39. package/docs/API.md +329 -0
  40. package/docs/ARCHITECTURE.md +203 -0
  41. package/docs/INSTALLATION.md +175 -0
  42. package/docs/PLAY_STORE_COMPLIANCE.md +122 -0
  43. package/docs/TESTING.md +312 -0
  44. package/docs/TROUBLESHOOTING.md +96 -0
  45. package/lib/commonjs/NativeStepTrackerPro.js +14 -0
  46. package/lib/commonjs/NativeStepTrackerPro.js.map +1 -0
  47. package/lib/commonjs/StepTracker.js +290 -0
  48. package/lib/commonjs/StepTracker.js.map +1 -0
  49. package/lib/commonjs/constants.js +30 -0
  50. package/lib/commonjs/constants.js.map +1 -0
  51. package/lib/commonjs/errors.js +24 -0
  52. package/lib/commonjs/errors.js.map +1 -0
  53. package/lib/commonjs/hooks/index.js +20 -0
  54. package/lib/commonjs/hooks/index.js.map +1 -0
  55. package/lib/commonjs/hooks/useStepStats.js +51 -0
  56. package/lib/commonjs/hooks/useStepStats.js.map +1 -0
  57. package/lib/commonjs/hooks/useStepTracker.js +134 -0
  58. package/lib/commonjs/hooks/useStepTracker.js.map +1 -0
  59. package/lib/commonjs/index.js +64 -0
  60. package/lib/commonjs/index.js.map +1 -0
  61. package/lib/commonjs/package.json +1 -0
  62. package/lib/commonjs/types.js +2 -0
  63. package/lib/commonjs/types.js.map +1 -0
  64. package/lib/module/NativeStepTrackerPro.js +12 -0
  65. package/lib/module/NativeStepTrackerPro.js.map +1 -0
  66. package/lib/module/StepTracker.js +284 -0
  67. package/lib/module/StepTracker.js.map +1 -0
  68. package/lib/module/constants.js +26 -0
  69. package/lib/module/constants.js.map +1 -0
  70. package/lib/module/errors.js +18 -0
  71. package/lib/module/errors.js.map +1 -0
  72. package/lib/module/hooks/index.js +5 -0
  73. package/lib/module/hooks/index.js.map +1 -0
  74. package/lib/module/hooks/useStepStats.js +46 -0
  75. package/lib/module/hooks/useStepStats.js.map +1 -0
  76. package/lib/module/hooks/useStepTracker.js +129 -0
  77. package/lib/module/hooks/useStepTracker.js.map +1 -0
  78. package/lib/module/index.js +7 -0
  79. package/lib/module/index.js.map +1 -0
  80. package/lib/module/package.json +1 -0
  81. package/lib/module/types.js +2 -0
  82. package/lib/module/types.js.map +1 -0
  83. package/lib/typescript/NativeStepTrackerPro.d.ts +50 -0
  84. package/lib/typescript/NativeStepTrackerPro.d.ts.map +1 -0
  85. package/lib/typescript/StepTracker.d.ts +76 -0
  86. package/lib/typescript/StepTracker.d.ts.map +1 -0
  87. package/lib/typescript/constants.d.ts +10 -0
  88. package/lib/typescript/constants.d.ts.map +1 -0
  89. package/lib/typescript/errors.d.ts +8 -0
  90. package/lib/typescript/errors.d.ts.map +1 -0
  91. package/lib/typescript/hooks/index.d.ts +5 -0
  92. package/lib/typescript/hooks/index.d.ts.map +1 -0
  93. package/lib/typescript/hooks/useStepStats.d.ts +11 -0
  94. package/lib/typescript/hooks/useStepStats.d.ts.map +1 -0
  95. package/lib/typescript/hooks/useStepTracker.d.ts +26 -0
  96. package/lib/typescript/hooks/useStepTracker.d.ts.map +1 -0
  97. package/lib/typescript/index.d.ts +7 -0
  98. package/lib/typescript/index.d.ts.map +1 -0
  99. package/lib/typescript/types.d.ts +183 -0
  100. package/lib/typescript/types.d.ts.map +1 -0
  101. package/package.json +79 -0
  102. package/src/NativeStepTrackerPro.ts +66 -0
  103. package/src/StepTracker.ts +410 -0
  104. package/src/constants.ts +43 -0
  105. package/src/errors.ts +31 -0
  106. package/src/hooks/index.ts +4 -0
  107. package/src/hooks/useStepStats.ts +55 -0
  108. package/src/hooks/useStepTracker.ts +167 -0
  109. package/src/index.ts +27 -0
  110. package/src/types.ts +203 -0
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactNative = require("react-native");
8
+ /**
9
+ * Codegen spec. Everything crossing the bridge is an UnsafeObject so that a
10
+ * single native method can evolve without a codegen break; the strongly typed
11
+ * surface lives in `StepTracker.ts`, which is what consumers import.
12
+ */
13
+ var _default = exports.default = _reactNative.TurboModuleRegistry.get('StepTrackerPro');
14
+ //# sourceMappingURL=NativeStepTrackerPro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","get"],"sourceRoot":"../../src","sources":["NativeStepTrackerPro.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAGA;AACA;AACA;AACA;AACA;AAJA,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GA6DeC,gCAAmB,CAACC,GAAG,CAAO,gBAAgB,CAAC","ignoreList":[]}
@@ -0,0 +1,290 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.StepTracker = void 0;
7
+ exports.isSupported = isSupported;
8
+ var _reactNative = require("react-native");
9
+ var _NativeStepTrackerPro = _interopRequireDefault(require("./NativeStepTrackerPro"));
10
+ var _constants = require("./constants");
11
+ var _errors = require("./errors");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ const LINKING_ERROR = `The native module '${_constants.MODULE_NAME}' could not be found.\n` + '- Rebuild the app after installing (npx react-native run-android)\n' + '- Make sure autolinking picked up the package\n' + '- This package is Android only.';
14
+ function getNativeModule() {
15
+ if (_reactNative.Platform.OS !== 'android') {
16
+ throw new _errors.StepTrackerError('E_UNSUPPORTED_PLATFORM', 'react-native-step-tracker-pro only supports Android.');
17
+ }
18
+ const mod = _NativeStepTrackerPro.default ?? _reactNative.NativeModules[_constants.MODULE_NAME];
19
+ if (!mod) throw new _errors.StepTrackerError('E_UNKNOWN', LINKING_ERROR);
20
+ return mod;
21
+ }
22
+
23
+ /** Android is the only supported platform; call this before anything else. */
24
+ function isSupported() {
25
+ if (_reactNative.Platform.OS !== 'android') return false;
26
+ return Boolean(_NativeStepTrackerPro.default ?? _reactNative.NativeModules[_constants.MODULE_NAME]);
27
+ }
28
+ let emitter = null;
29
+ function getEmitter() {
30
+ if (!emitter) {
31
+ emitter = new _reactNative.NativeEventEmitter(_reactNative.NativeModules[_constants.MODULE_NAME] ?? undefined);
32
+ }
33
+ return emitter;
34
+ }
35
+ const EVENT_PREFIX = 'StepTrackerPro:';
36
+ async function call(fn) {
37
+ try {
38
+ return await fn();
39
+ } catch (error) {
40
+ throw (0, _errors.toStepTrackerError)(error);
41
+ }
42
+ }
43
+ function resolveStride(config) {
44
+ if (config.strideLength && config.strideLength > 0) return config.strideLength;
45
+ const height = config.height ?? _constants.DEFAULT_CONFIG.height;
46
+ const sex = config.sex ?? _constants.DEFAULT_CONFIG.sex;
47
+ return height * _constants.STRIDE_COEFFICIENT[sex] / 100;
48
+ }
49
+ const DATE_KEY = /^\d{4}-\d{2}-\d{2}$/;
50
+ function assertRange(startDate, endDate) {
51
+ if (!DATE_KEY.test(startDate) || !DATE_KEY.test(endDate)) {
52
+ throw new _errors.StepTrackerError('E_INVALID_CONFIG', 'Dates must be yyyy-MM-dd');
53
+ }
54
+ if (startDate > endDate) {
55
+ throw new _errors.StepTrackerError('E_INVALID_CONFIG', `startDate (${startDate}) must be on or before endDate (${endDate})`);
56
+ }
57
+ }
58
+ function normaliseConfig(config) {
59
+ const daily = config.dailyGoal ?? _constants.DEFAULT_CONFIG.dailyGoal;
60
+ if (daily <= 0) {
61
+ throw new _errors.StepTrackerError('E_INVALID_CONFIG', 'dailyGoal must be > 0');
62
+ }
63
+ if (config.height != null && (config.height < 50 || config.height > 260)) {
64
+ throw new _errors.StepTrackerError('E_INVALID_CONFIG', 'height must be 50–260 cm');
65
+ }
66
+ if (config.weight != null && (config.weight < 10 || config.weight > 400)) {
67
+ throw new _errors.StepTrackerError('E_INVALID_CONFIG', 'weight must be 10–400 kg');
68
+ }
69
+ if (config.persistEveryNSteps != null && config.persistEveryNSteps < 1) {
70
+ // 0 makes the native `pendingCommit >= threshold` check true with nothing
71
+ // pending, which turns every step into a database write.
72
+ throw new _errors.StepTrackerError('E_INVALID_CONFIG', 'persistEveryNSteps must be >= 1');
73
+ }
74
+ if (config.calorieCoefficient != null && config.calorieCoefficient < 0) {
75
+ throw new _errors.StepTrackerError('E_INVALID_CONFIG', 'calorieCoefficient must be >= 0');
76
+ }
77
+ if (config.historyRetentionDays != null && config.historyRetentionDays < 1) {
78
+ throw new _errors.StepTrackerError('E_INVALID_CONFIG', 'historyRetentionDays must be >= 1');
79
+ }
80
+ const normalised = {
81
+ ..._constants.DEFAULT_CONFIG,
82
+ ...config,
83
+ weeklyGoal: config.weeklyGoal ?? daily * 7,
84
+ monthlyGoal: config.monthlyGoal ?? daily * 30
85
+ };
86
+
87
+ // Only derive a stride when the caller actually supplied something it is
88
+ // derived from. Deriving unconditionally meant that initialize({dailyGoal})
89
+ // on a returning user recomputed their stride from the default 170 cm and
90
+ // silently discarded the height they had configured; omitting the key leaves
91
+ // whatever the native side already has.
92
+ if (config.strideLength != null || config.height != null || config.sex != null) {
93
+ normalised.strideLength = resolveStride(config);
94
+ } else {
95
+ delete normalised.strideLength;
96
+ }
97
+ return normalised;
98
+ }
99
+
100
+ /**
101
+ * The public API. All methods reject with a `StepTrackerError` carrying a
102
+ * stable `code`, so callers can branch without string matching.
103
+ */
104
+ const StepTracker = exports.StepTracker = {
105
+ /**
106
+ * Loads config into the native layer and restores any persisted state.
107
+ * Safe to call on every app launch — it is idempotent.
108
+ */
109
+ async initialize(config = {}) {
110
+ const merged = normaliseConfig(config);
111
+ return call(() => getNativeModule().initialize(merged));
112
+ },
113
+ /** Patches config at runtime. Notification and goals update immediately. */
114
+ async updateConfig(config) {
115
+ const patch = {
116
+ ...config
117
+ };
118
+ if (config.height != null || config.sex != null || config.strideLength != null) {
119
+ // Stride depends on height *and* sex, so a patch carrying only one of
120
+ // them has to be combined with the stored value of the other. Passing the
121
+ // bare patch fell back to the package defaults instead, which silently
122
+ // reset a 190 cm user to 170 cm on updateConfig({ sex }).
123
+ const current = await StepTracker.getConfig();
124
+ patch.strideLength = resolveStride({
125
+ height: config.height ?? current.height,
126
+ sex: config.sex ?? current.sex,
127
+ strideLength: config.strideLength
128
+ });
129
+ }
130
+ return call(() => getNativeModule().updateConfig(patch));
131
+ },
132
+ async getConfig() {
133
+ return call(() => getNativeModule().getConfig());
134
+ },
135
+ /** Starts the foreground service. Requires permissions to be granted first. */
136
+ async startTracking() {
137
+ return call(() => getNativeModule().startTracking());
138
+ },
139
+ /** Keeps the service and notification alive but ignores sensor deltas. */
140
+ async pauseTracking() {
141
+ return call(() => getNativeModule().pauseTracking());
142
+ },
143
+ async resumeTracking() {
144
+ return call(() => getNativeModule().resumeTracking());
145
+ },
146
+ /** Flushes to the database, unregisters sensors and kills the service. */
147
+ async stopTracking() {
148
+ return call(() => getNativeModule().stopTracking());
149
+ },
150
+ async getTrackingState() {
151
+ const result = await call(() => getNativeModule().getTrackingState());
152
+ return result.state;
153
+ },
154
+ async isTracking() {
155
+ return call(() => getNativeModule().isTracking());
156
+ },
157
+ // ---- reads -----------------------------------------------------------
158
+
159
+ async getTodaySteps() {
160
+ return call(() => getNativeModule().getTodaySteps());
161
+ },
162
+ async getYesterdaySteps() {
163
+ return call(() => getNativeModule().getYesterdaySteps());
164
+ },
165
+ /** @param date yyyy-MM-dd */
166
+ async getStepsForDate(date) {
167
+ return call(() => getNativeModule().getStepsForDate(date));
168
+ },
169
+ async getWeeklyStats(options = {}) {
170
+ return call(() => getNativeModule().getWeeklyStats(options));
171
+ },
172
+ async getMonthlyStats(options = {}) {
173
+ return call(() => getNativeModule().getMonthlyStats(options));
174
+ },
175
+ async getYearlyStats(options = {}) {
176
+ return call(() => getNativeModule().getYearlyStats(options));
177
+ },
178
+ /** Inclusive on both ends. Dates are yyyy-MM-dd, and start must precede end. */
179
+ async getStatsForRange(startDate, endDate) {
180
+ assertRange(startDate, endDate);
181
+ return call(() => getNativeModule().getStatsForRange(startDate, endDate));
182
+ },
183
+ async getHistory(startDate, endDate) {
184
+ assertRange(startDate, endDate);
185
+ const result = await call(() => getNativeModule().getHistory(startDate, endDate));
186
+ return result.records;
187
+ },
188
+ // ---- writes ----------------------------------------------------------
189
+
190
+ /** Zeroes today's counter without touching history. Useful in QA builds. */
191
+ async resetToday() {
192
+ return call(() => getNativeModule().resetToday());
193
+ },
194
+ async clearHistory() {
195
+ return call(() => getNativeModule().clearHistory());
196
+ },
197
+ /** Deletes rows older than `retentionDays`; returns rows removed. */
198
+ async pruneHistory(retentionDays) {
199
+ return call(() => getNativeModule().pruneHistory(retentionDays ?? _constants.DEFAULT_CONFIG.historyRetentionDays));
200
+ },
201
+ // ---- permissions -----------------------------------------------------
202
+
203
+ async checkPermissions() {
204
+ return call(() => getNativeModule().checkPermissions());
205
+ },
206
+ /** Shows the Android runtime dialogs. Must be called with an Activity attached. */
207
+ async requestPermissions() {
208
+ return call(() => getNativeModule().requestPermissions());
209
+ },
210
+ async getDeviceCapabilities() {
211
+ return call(() => getNativeModule().getDeviceCapabilities());
212
+ },
213
+ async openAppSettings() {
214
+ return call(() => getNativeModule().openAppSettings());
215
+ },
216
+ // ---- battery ---------------------------------------------------------
217
+
218
+ /** True when the OS is still applying doze restrictions to this app. */
219
+ async isBatteryOptimizationEnabled() {
220
+ return call(() => getNativeModule().isBatteryOptimizationEnabled());
221
+ },
222
+ /**
223
+ * Shows the system exemption dialog. Play policy requires an eligible use
224
+ * case — see docs/PLAY_STORE_COMPLIANCE.md before shipping this.
225
+ */
226
+ async requestDisableBatteryOptimization() {
227
+ return call(() => getNativeModule().requestDisableBatteryOptimization());
228
+ },
229
+ /** Policy-safe alternative: opens the settings list, no direct prompt. */
230
+ async openBatteryOptimizationSettings() {
231
+ return call(() => getNativeModule().openBatteryOptimizationSettings());
232
+ },
233
+ /** Best-effort deep link into Xiaomi/Oppo/Vivo/Huawei autostart screens. */
234
+ async openManufacturerAutoStartSettings() {
235
+ return call(() => getNativeModule().openManufacturerAutoStartSettings());
236
+ },
237
+ // ---- health connect --------------------------------------------------
238
+
239
+ async getHealthConnectStatus() {
240
+ return call(() => getNativeModule().getHealthConnectStatus());
241
+ },
242
+ async requestHealthConnectPermissions() {
243
+ return call(() => getNativeModule().requestHealthConnectPermissions());
244
+ },
245
+ async openHealthConnectSettings() {
246
+ return call(() => getNativeModule().openHealthConnectSettings());
247
+ },
248
+ /** ISO-8601 instants, e.g. '2026-09-01T00:00:00Z'. */
249
+ async readHealthConnectSteps(startIso, endIso) {
250
+ return call(() => getNativeModule().readHealthConnectSteps(startIso, endIso));
251
+ },
252
+ /** Upserts one day's steps/distance/calories into Health Connect. */
253
+ async writeHealthConnectSteps(date) {
254
+ return call(() => getNativeModule().writeHealthConnectSteps(date));
255
+ },
256
+ async syncWithHealthConnect() {
257
+ return call(() => getNativeModule().syncWithHealthConnect());
258
+ },
259
+ // ---- sync ------------------------------------------------------------
260
+
261
+ async getPendingSyncCount() {
262
+ return call(() => getNativeModule().getPendingSyncCount());
263
+ },
264
+ /** Runs Health Connect + remote sync immediately instead of waiting for WorkManager. */
265
+ async syncNow() {
266
+ const result = await call(() => getNativeModule().syncNow());
267
+ return result.results;
268
+ },
269
+ // ---- events ----------------------------------------------------------
270
+
271
+ addListener(event, listener) {
272
+ if (_reactNative.Platform.OS !== 'android') return {
273
+ remove: () => {}
274
+ };
275
+ const sub = getEmitter().addListener(`${EVENT_PREFIX}${event}`, listener);
276
+ return {
277
+ remove: () => sub.remove()
278
+ };
279
+ },
280
+ /** Removes every listener for one event, or all events when omitted. */
281
+ removeListener(event) {
282
+ if (_reactNative.Platform.OS !== 'android') return;
283
+ const em = getEmitter();
284
+ if (event) em.removeAllListeners(`${EVENT_PREFIX}${event}`);else {
285
+ ['stepsChanged', 'goalReached', 'goalProgressChanged', 'trackingStateChanged', 'dayChanged', 'syncCompleted', 'error'].forEach(name => em.removeAllListeners(`${EVENT_PREFIX}${name}`));
286
+ }
287
+ }
288
+ };
289
+ var _default = exports.default = StepTracker;
290
+ //# sourceMappingURL=StepTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_NativeStepTrackerPro","_interopRequireDefault","_constants","_errors","e","__esModule","default","LINKING_ERROR","MODULE_NAME","getNativeModule","Platform","OS","StepTrackerError","mod","NativeStepTrackerPro","NativeModules","isSupported","Boolean","emitter","getEmitter","NativeEventEmitter","undefined","EVENT_PREFIX","call","fn","error","toStepTrackerError","resolveStride","config","strideLength","height","DEFAULT_CONFIG","sex","STRIDE_COEFFICIENT","DATE_KEY","assertRange","startDate","endDate","test","normaliseConfig","daily","dailyGoal","weight","persistEveryNSteps","calorieCoefficient","historyRetentionDays","normalised","weeklyGoal","monthlyGoal","StepTracker","exports","initialize","merged","updateConfig","patch","current","getConfig","startTracking","pauseTracking","resumeTracking","stopTracking","getTrackingState","result","state","isTracking","getTodaySteps","getYesterdaySteps","getStepsForDate","date","getWeeklyStats","options","getMonthlyStats","getYearlyStats","getStatsForRange","getHistory","records","resetToday","clearHistory","pruneHistory","retentionDays","checkPermissions","requestPermissions","getDeviceCapabilities","openAppSettings","isBatteryOptimizationEnabled","requestDisableBatteryOptimization","openBatteryOptimizationSettings","openManufacturerAutoStartSettings","getHealthConnectStatus","requestHealthConnectPermissions","openHealthConnectSettings","readHealthConnectSteps","startIso","endIso","writeHealthConnectSteps","syncWithHealthConnect","getPendingSyncCount","syncNow","results","addListener","event","listener","remove","sub","removeListener","em","removeAllListeners","forEach","name","_default"],"sourceRoot":"../../src","sources":["StepTracker.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.STRIDE_COEFFICIENT = exports.MODULE_NAME = exports.DEFAULT_CONFIG = void 0;
7
+ const MODULE_NAME = exports.MODULE_NAME = 'StepTrackerPro';
8
+ const DEFAULT_CONFIG = exports.DEFAULT_CONFIG = {
9
+ height: 170,
10
+ weight: 70,
11
+ sex: 'unspecified',
12
+ dailyGoal: 10000,
13
+ calorieCoefficient: 0.57,
14
+ historyRetentionDays: 35,
15
+ notificationActions: true,
16
+ notificationThrottleMs: 1000,
17
+ eventThrottleMs: 500,
18
+ persistEveryNSteps: 10,
19
+ healthConnectEnabled: true,
20
+ healthConnectSyncIntervalMinutes: 30,
21
+ autoStartOnBoot: true
22
+ };
23
+
24
+ /** Stride length = height(cm) * coefficient / 100. */
25
+ const STRIDE_COEFFICIENT = exports.STRIDE_COEFFICIENT = {
26
+ male: 0.415,
27
+ female: 0.413,
28
+ unspecified: 0.414
29
+ };
30
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MODULE_NAME","exports","DEFAULT_CONFIG","height","weight","sex","dailyGoal","calorieCoefficient","historyRetentionDays","notificationActions","notificationThrottleMs","eventThrottleMs","persistEveryNSteps","healthConnectEnabled","healthConnectSyncIntervalMinutes","autoStartOnBoot","STRIDE_COEFFICIENT","male","female","unspecified"],"sourceRoot":"../../src","sources":["constants.ts"],"mappings":";;;;;;AAEO,MAAMA,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,gBAAgB;AAEpC,MAAME,cAiBZ,GAAAD,OAAA,CAAAC,cAAA,GAAG;EACFC,MAAM,EAAE,GAAG;EACXC,MAAM,EAAE,EAAE;EACVC,GAAG,EAAE,aAAa;EAClBC,SAAS,EAAE,KAAK;EAChBC,kBAAkB,EAAE,IAAI;EACxBC,oBAAoB,EAAE,EAAE;EACxBC,mBAAmB,EAAE,IAAI;EACzBC,sBAAsB,EAAE,IAAI;EAC5BC,eAAe,EAAE,GAAG;EACpBC,kBAAkB,EAAE,EAAE;EACtBC,oBAAoB,EAAE,IAAI;EAC1BC,gCAAgC,EAAE,EAAE;EACpCC,eAAe,EAAE;AACnB,CAAC;;AAED;AACO,MAAMC,kBAAkB,GAAAf,OAAA,CAAAe,kBAAA,GAAG;EAChCC,IAAI,EAAE,KAAK;EACXC,MAAM,EAAE,KAAK;EACbC,WAAW,EAAE;AACf,CAAU","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.StepTrackerError = void 0;
7
+ exports.toStepTrackerError = toStepTrackerError;
8
+ class StepTrackerError extends Error {
9
+ constructor(code, message) {
10
+ super(message);
11
+ this.name = 'StepTrackerError';
12
+ this.code = code;
13
+ }
14
+ }
15
+
16
+ /** Normalises rejections coming off the native bridge. */
17
+ exports.StepTrackerError = StepTrackerError;
18
+ function toStepTrackerError(error) {
19
+ if (error instanceof StepTrackerError) return error;
20
+ const anyError = error;
21
+ const code = anyError?.code ?? 'E_UNKNOWN';
22
+ return new StepTrackerError(code, anyError?.message ?? 'Unknown native error');
23
+ }
24
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StepTrackerError","Error","constructor","code","message","name","exports","toStepTrackerError","error","anyError"],"sourceRoot":"../../src","sources":["errors.ts"],"mappings":";;;;;;;AAcO,MAAMA,gBAAgB,SAASC,KAAK,CAAC;EAG1CC,WAAWA,CAACC,IAA0B,EAAEC,OAAe,EAAE;IACvD,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACC,IAAI,GAAG,kBAAkB;IAC9B,IAAI,CAACF,IAAI,GAAGA,IAAI;EAClB;AACF;;AAEA;AAAAG,OAAA,CAAAN,gBAAA,GAAAA,gBAAA;AACO,SAASO,kBAAkBA,CAACC,KAAc,EAAoB;EACnE,IAAIA,KAAK,YAAYR,gBAAgB,EAAE,OAAOQ,KAAK;EACnD,MAAMC,QAAQ,GAAGD,KAAmD;EACpE,MAAML,IAAI,GAAIM,QAAQ,EAAEN,IAAI,IAAI,WAAoC;EACpE,OAAO,IAAIH,gBAAgB,CAACG,IAAI,EAAEM,QAAQ,EAAEL,OAAO,IAAI,sBAAsB,CAAC;AAChF","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "useStepStats", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _useStepStats.useStepStats;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "useStepTracker", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _useStepTracker.useStepTracker;
16
+ }
17
+ });
18
+ var _useStepTracker = require("./useStepTracker");
19
+ var _useStepStats = require("./useStepStats");
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_useStepTracker","require","_useStepStats"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAEA,IAAAC,aAAA,GAAAD,OAAA","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useStepStats = useStepStats;
7
+ var _react = require("react");
8
+ var _StepTracker = _interopRequireWildcard(require("../StepTracker"));
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
+ /** Fetches a windowed summary and refreshes it when the day rolls over. */
11
+ function useStepStats(period, options = {}) {
12
+ const [stats, setStats] = (0, _react.useState)(null);
13
+ const [loading, setLoading] = (0, _react.useState)(true);
14
+ const [error, setError] = (0, _react.useState)(null);
15
+ const {
16
+ mode,
17
+ offset
18
+ } = options;
19
+ const reload = (0, _react.useCallback)(async () => {
20
+ if (!(0, _StepTracker.isSupported)()) {
21
+ setLoading(false);
22
+ return;
23
+ }
24
+ setLoading(true);
25
+ try {
26
+ const opts = {
27
+ mode,
28
+ offset
29
+ };
30
+ const next = period === 'week' ? await _StepTracker.default.getWeeklyStats(opts) : period === 'month' ? await _StepTracker.default.getMonthlyStats(opts) : await _StepTracker.default.getYearlyStats(opts);
31
+ setStats(next);
32
+ setError(null);
33
+ } catch (e) {
34
+ setError(e);
35
+ } finally {
36
+ setLoading(false);
37
+ }
38
+ }, [period, mode, offset]);
39
+ (0, _react.useEffect)(() => {
40
+ void reload();
41
+ const sub = _StepTracker.default.addListener('dayChanged', () => void reload());
42
+ return () => sub.remove();
43
+ }, [reload]);
44
+ return {
45
+ stats,
46
+ loading,
47
+ error,
48
+ reload
49
+ };
50
+ }
51
+ //# sourceMappingURL=useStepStats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_StepTracker","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useStepStats","period","options","stats","setStats","useState","loading","setLoading","error","setError","mode","offset","reload","useCallback","isSupported","opts","next","StepTracker","getWeeklyStats","getMonthlyStats","getYearlyStats","useEffect","sub","addListener","remove"],"sourceRoot":"../../../src","sources":["hooks/useStepStats.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAC,uBAAA,CAAAF,OAAA;AAA0D,SAAAE,wBAAAC,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAH,uBAAA,YAAAA,CAAAC,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAY1D;AACO,SAASkB,YAAYA,CAC1BC,MAAmB,EACnBC,OAAqB,GAAG,CAAC,CAAC,EACN;EACpB,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAC,eAAQ,EAAoB,IAAI,CAAC;EAC3D,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAF,eAAQ,EAAC,IAAI,CAAC;EAC5C,MAAM,CAACG,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAJ,eAAQ,EAAe,IAAI,CAAC;EAEtD,MAAM;IAAEK,IAAI;IAAEC;EAAO,CAAC,GAAGT,OAAO;EAEhC,MAAMU,MAAM,GAAG,IAAAC,kBAAW,EAAC,YAAY;IACrC,IAAI,CAAC,IAAAC,wBAAW,EAAC,CAAC,EAAE;MAClBP,UAAU,CAAC,KAAK,CAAC;MACjB;IACF;IACAA,UAAU,CAAC,IAAI,CAAC;IAChB,IAAI;MACF,MAAMQ,IAAkB,GAAG;QAAEL,IAAI;QAAEC;MAAO,CAAC;MAC3C,MAAMK,IAAI,GACRf,MAAM,KAAK,MAAM,GACb,MAAMgB,oBAAW,CAACC,cAAc,CAACH,IAAI,CAAC,GACtCd,MAAM,KAAK,OAAO,GAChB,MAAMgB,oBAAW,CAACE,eAAe,CAACJ,IAAI,CAAC,GACvC,MAAME,oBAAW,CAACG,cAAc,CAACL,IAAI,CAAC;MAC9CX,QAAQ,CAACY,IAAI,CAAC;MACdP,QAAQ,CAAC,IAAI,CAAC;IAChB,CAAC,CAAC,OAAO5B,CAAC,EAAE;MACV4B,QAAQ,CAAC5B,CAAU,CAAC;IACtB,CAAC,SAAS;MACR0B,UAAU,CAAC,KAAK,CAAC;IACnB;EACF,CAAC,EAAE,CAACN,MAAM,EAAES,IAAI,EAAEC,MAAM,CAAC,CAAC;EAE1B,IAAAU,gBAAS,EAAC,MAAM;IACd,KAAKT,MAAM,CAAC,CAAC;IACb,MAAMU,GAAG,GAAGL,oBAAW,CAACM,WAAW,CAAC,YAAY,EAAE,MAAM,KAAKX,MAAM,CAAC,CAAC,CAAC;IACtE,OAAO,MAAMU,GAAG,CAACE,MAAM,CAAC,CAAC;EAC3B,CAAC,EAAE,CAACZ,MAAM,CAAC,CAAC;EAEZ,OAAO;IAAET,KAAK;IAAEG,OAAO;IAAEE,KAAK;IAAEI;EAAO,CAAC;AAC1C","ignoreList":[]}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useStepTracker = useStepTracker;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _StepTracker = _interopRequireWildcard(require("../StepTracker"));
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ /**
12
+ * Wires the tracker into a component: initialises once, subscribes to
13
+ * `stepsChanged`, and re-reads the snapshot when the app is foregrounded.
14
+ */
15
+ function useStepTracker(options = {}) {
16
+ const {
17
+ autoStart = false,
18
+ refreshOnForeground = true,
19
+ onGoalReached,
20
+ ...config
21
+ } = options;
22
+ const [snapshot, setSnapshot] = (0, _react.useState)(null);
23
+ const [state, setState] = (0, _react.useState)('idle');
24
+ const [ready, setReady] = (0, _react.useState)(false);
25
+ const [error, setError] = (0, _react.useState)(null);
26
+ const configRef = (0, _react.useRef)(config);
27
+ configRef.current = config;
28
+ const goalRef = (0, _react.useRef)(onGoalReached);
29
+ goalRef.current = onGoalReached;
30
+ const refresh = (0, _react.useCallback)(async () => {
31
+ if (!(0, _StepTracker.isSupported)()) return;
32
+ try {
33
+ setSnapshot(await _StepTracker.default.getTodaySteps());
34
+ setState(await _StepTracker.default.getTrackingState());
35
+ } catch (e) {
36
+ setError(e);
37
+ }
38
+ }, []);
39
+ (0, _react.useEffect)(() => {
40
+ let cancelled = false;
41
+ if (!(0, _StepTracker.isSupported)()) {
42
+ setState('unsupported');
43
+ setReady(true);
44
+ return;
45
+ }
46
+ (async () => {
47
+ try {
48
+ const initial = await _StepTracker.default.initialize(configRef.current);
49
+ if (cancelled) return;
50
+ setSnapshot(initial);
51
+ setState(initial.state);
52
+ if (autoStart) {
53
+ const perms = await _StepTracker.default.checkPermissions();
54
+ if (perms.allGranted) {
55
+ const started = await _StepTracker.default.startTracking();
56
+ if (!cancelled) {
57
+ setSnapshot(started);
58
+ setState(started.state);
59
+ }
60
+ }
61
+ }
62
+ } catch (e) {
63
+ if (!cancelled) setError(e);
64
+ } finally {
65
+ if (!cancelled) setReady(true);
66
+ }
67
+ })();
68
+ const stepsSub = _StepTracker.default.addListener('stepsChanged', payload => {
69
+ setSnapshot(payload);
70
+ });
71
+ const stateSub = _StepTracker.default.addListener('trackingStateChanged', payload => {
72
+ setState(payload.state);
73
+ });
74
+ const goalSub = _StepTracker.default.addListener('goalReached', payload => {
75
+ goalRef.current?.(payload);
76
+ });
77
+ const daySub = _StepTracker.default.addListener('dayChanged', () => {
78
+ void refresh();
79
+ });
80
+ return () => {
81
+ cancelled = true;
82
+ stepsSub.remove();
83
+ stateSub.remove();
84
+ goalSub.remove();
85
+ daySub.remove();
86
+ };
87
+ }, [autoStart, refresh]);
88
+ (0, _react.useEffect)(() => {
89
+ if (!refreshOnForeground) return;
90
+ const sub = _reactNative.AppState.addEventListener('change', next => {
91
+ if (next === 'active') void refresh();
92
+ });
93
+ return () => sub.remove();
94
+ }, [refresh, refreshOnForeground]);
95
+
96
+ // Each action is memoised separately. Building them inline in the returned
97
+ // object handed callers a new function identity on every render, which loops
98
+ // any `useEffect` that lists one in its dependency array.
99
+ const run = (0, _react.useCallback)(async fn => {
100
+ try {
101
+ const result = await fn();
102
+ setSnapshot(result);
103
+ setState(result.state);
104
+ } catch (e) {
105
+ setError(e);
106
+ }
107
+ }, []);
108
+ const start = (0, _react.useCallback)(() => run(() => _StepTracker.default.startTracking()), [run]);
109
+ const pause = (0, _react.useCallback)(() => run(() => _StepTracker.default.pauseTracking()), [run]);
110
+ const resume = (0, _react.useCallback)(() => run(() => _StepTracker.default.resumeTracking()), [run]);
111
+ const stop = (0, _react.useCallback)(() => run(() => _StepTracker.default.stopTracking()), [run]);
112
+ const requestPermissions = (0, _react.useCallback)(async () => {
113
+ try {
114
+ const result = await _StepTracker.default.requestPermissions();
115
+ return result.allGranted;
116
+ } catch (e) {
117
+ setError(e);
118
+ return false;
119
+ }
120
+ }, []);
121
+ return {
122
+ snapshot,
123
+ state,
124
+ ready,
125
+ error,
126
+ refresh,
127
+ start,
128
+ pause,
129
+ resume,
130
+ stop,
131
+ requestPermissions
132
+ };
133
+ }
134
+ //# sourceMappingURL=useStepTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_StepTracker","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useStepTracker","options","autoStart","refreshOnForeground","onGoalReached","config","snapshot","setSnapshot","useState","state","setState","ready","setReady","error","setError","configRef","useRef","current","goalRef","refresh","useCallback","isSupported","StepTracker","getTodaySteps","getTrackingState","useEffect","cancelled","initial","initialize","perms","checkPermissions","allGranted","started","startTracking","stepsSub","addListener","payload","stateSub","goalSub","daySub","remove","sub","AppState","addEventListener","next","run","fn","result","start","pause","pauseTracking","resume","resumeTracking","stop","stopTracking","requestPermissions"],"sourceRoot":"../../../src","sources":["hooks/useStepTracker.ts"],"mappings":"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","ignoreList":[]}