@wayq/beekon-rn 0.0.1 → 0.0.5

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 (92) hide show
  1. package/BeekonRn.podspec +4 -4
  2. package/README.md +94 -48
  3. package/android/build.gradle +11 -6
  4. package/android/src/main/java/in/wayq/beekonrn/BeekonRnModule.kt +428 -0
  5. package/android/src/main/java/{com → in}/wayq/beekonrn/BeekonRnPackage.kt +1 -1
  6. package/ios/BeekonRn.h +5 -1
  7. package/ios/BeekonRn.mm +90 -34
  8. package/ios/BeekonRn.swift +396 -116
  9. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64/BeekonKit.framework/BeekonKit +0 -0
  10. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64/BeekonKit.framework/Info.plist +0 -0
  11. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios.abi.json +8636 -0
  12. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  13. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios.swiftinterface +236 -0
  14. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64/BeekonKit.framework/PrivacyInfo.xcprivacy +1 -1
  15. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/BeekonKit +0 -0
  16. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/Info.plist +0 -0
  17. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios-simulator.abi.json +8636 -0
  18. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  19. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios-simulator.swiftinterface +236 -0
  20. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/x86_64-apple-ios-simulator.abi.json +8636 -0
  21. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  22. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +236 -0
  23. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/PrivacyInfo.xcprivacy +1 -1
  24. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/_CodeSignature/CodeResources +2 -14
  25. package/lib/module/NativeBeekonRn.js +22 -7
  26. package/lib/module/NativeBeekonRn.js.map +1 -1
  27. package/lib/module/beekon.js +209 -60
  28. package/lib/module/beekon.js.map +1 -1
  29. package/lib/module/index.js +1 -0
  30. package/lib/module/index.js.map +1 -1
  31. package/lib/module/internal/mappers.js +145 -23
  32. package/lib/module/internal/mappers.js.map +1 -1
  33. package/lib/module/types/enums.js +2 -0
  34. package/lib/module/types/{preset.js.map → enums.js.map} +1 -1
  35. package/lib/module/types/error.js +25 -0
  36. package/lib/module/types/error.js.map +1 -0
  37. package/lib/module/types/geofence.js +2 -0
  38. package/lib/module/types/{position.js.map → geofence.js.map} +1 -1
  39. package/lib/module/types/location.js +4 -0
  40. package/lib/module/types/location.js.map +1 -0
  41. package/lib/module/types/sync.js +2 -0
  42. package/lib/module/types/sync.js.map +1 -0
  43. package/lib/typescript/src/NativeBeekonRn.d.ts +113 -35
  44. package/lib/typescript/src/NativeBeekonRn.d.ts.map +1 -1
  45. package/lib/typescript/src/beekon.d.ts +84 -49
  46. package/lib/typescript/src/beekon.d.ts.map +1 -1
  47. package/lib/typescript/src/index.d.ts +7 -4
  48. package/lib/typescript/src/index.d.ts.map +1 -1
  49. package/lib/typescript/src/internal/mappers.d.ts +16 -3
  50. package/lib/typescript/src/internal/mappers.d.ts.map +1 -1
  51. package/lib/typescript/src/types/config.d.ts +53 -31
  52. package/lib/typescript/src/types/config.d.ts.map +1 -1
  53. package/lib/typescript/src/types/enums.d.ts +48 -0
  54. package/lib/typescript/src/types/enums.d.ts.map +1 -0
  55. package/lib/typescript/src/types/error.d.ts +20 -0
  56. package/lib/typescript/src/types/error.d.ts.map +1 -0
  57. package/lib/typescript/src/types/geofence.d.ts +36 -0
  58. package/lib/typescript/src/types/geofence.d.ts.map +1 -0
  59. package/lib/typescript/src/types/location.d.ts +40 -0
  60. package/lib/typescript/src/types/location.d.ts.map +1 -0
  61. package/lib/typescript/src/types/state.d.ts +18 -9
  62. package/lib/typescript/src/types/state.d.ts.map +1 -1
  63. package/lib/typescript/src/types/sync.d.ts +27 -0
  64. package/lib/typescript/src/types/sync.d.ts.map +1 -0
  65. package/package.json +5 -6
  66. package/scripts/fetch-beekonkit.sh +5 -2
  67. package/src/NativeBeekonRn.ts +120 -34
  68. package/src/beekon.ts +235 -63
  69. package/src/index.tsx +23 -4
  70. package/src/internal/mappers.ts +213 -22
  71. package/src/types/config.ts +54 -31
  72. package/src/types/enums.ts +64 -0
  73. package/src/types/error.ts +25 -0
  74. package/src/types/geofence.ts +37 -0
  75. package/src/types/location.ts +45 -0
  76. package/src/types/state.ts +23 -7
  77. package/src/types/sync.ts +23 -0
  78. package/android/src/main/java/com/wayq/beekonrn/BeekonRnModule.kt +0 -233
  79. package/ios/Frameworks/BeekonKit.xcframework/_CodeSignature/CodeDirectory +0 -0
  80. package/ios/Frameworks/BeekonKit.xcframework/_CodeSignature/CodeRequirements +0 -0
  81. package/ios/Frameworks/BeekonKit.xcframework/_CodeSignature/CodeRequirements-1 +0 -0
  82. package/ios/Frameworks/BeekonKit.xcframework/_CodeSignature/CodeResources +0 -233
  83. package/ios/Frameworks/BeekonKit.xcframework/_CodeSignature/CodeSignature +0 -0
  84. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64/BeekonKit.framework/_CodeSignature/CodeResources +0 -113
  85. package/lib/module/types/position.js +0 -2
  86. package/lib/module/types/preset.js +0 -2
  87. package/lib/typescript/src/types/position.d.ts +0 -24
  88. package/lib/typescript/src/types/position.d.ts.map +0 -1
  89. package/lib/typescript/src/types/preset.d.ts +0 -12
  90. package/lib/typescript/src/types/preset.d.ts.map +0 -1
  91. package/src/types/position.ts +0 -23
  92. package/src/types/preset.ts +0 -11
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
2
 
3
3
  export { Beekon } from "./beekon.js";
4
+ export { BeekonError } from "./types/error.js";
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Beekon"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,aAAU","ignoreList":[]}
1
+ {"version":3,"names":["Beekon","BeekonError"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,aAAU;AAuBjC,SAASC,WAAW,QAA8B,kBAAe","ignoreList":[]}
@@ -1,28 +1,96 @@
1
1
  "use strict";
2
2
 
3
+ import { BeekonError } from "../types/error.js";
4
+ // Config defaults. Kept here (not in the wire layer) so the native modules can
5
+ // treat every wire field as present.
6
+ const DEFAULTS = {
7
+ minTimeBetweenLocationsSeconds: 30,
8
+ minDistanceBetweenLocationsMeters: 100,
9
+ accuracyMode: 'balanced',
10
+ whenStationary: 'pause',
11
+ stationaryRadiusMeters: 5,
12
+ detectActivity: false,
13
+ syncIntervalSeconds: 300,
14
+ syncBatchSize: 100
15
+ };
16
+
17
+ // --- Public → wire ---------------------------------------------------------
18
+
19
+ export function recordToEntries(record) {
20
+ if (!record) return [];
21
+ return Object.keys(record).map(key => ({
22
+ key,
23
+ value: record[key]
24
+ }));
25
+ }
3
26
  export function configToWire(config) {
27
+ const sync = config.sync;
4
28
  return {
5
- preset: config.preset ?? 'balanced',
6
- distanceFilterMeters: config.distanceFilterMeters,
7
- intervalMillis: config.intervalMillis,
8
- androidNotification: config.androidNotification,
9
- licenseKey: config.licenseKey
29
+ minTimeBetweenLocationsSeconds: config.minTimeBetweenLocationsSeconds ?? DEFAULTS.minTimeBetweenLocationsSeconds,
30
+ minDistanceBetweenLocationsMeters: config.minDistanceBetweenLocationsMeters ?? DEFAULTS.minDistanceBetweenLocationsMeters,
31
+ accuracyMode: config.accuracyMode ?? DEFAULTS.accuracyMode,
32
+ whenStationary: config.whenStationary ?? DEFAULTS.whenStationary,
33
+ stationaryRadiusMeters: config.stationaryRadiusMeters ?? DEFAULTS.stationaryRadiusMeters,
34
+ detectActivity: config.detectActivity ?? DEFAULTS.detectActivity,
35
+ sync: sync ? {
36
+ url: sync.url,
37
+ headers: recordToEntries(sync.headers),
38
+ intervalSeconds: sync.intervalSeconds ?? DEFAULTS.syncIntervalSeconds,
39
+ batchSize: sync.batchSize ?? DEFAULTS.syncBatchSize
40
+ } : undefined,
41
+ notification: config.notification ? {
42
+ title: config.notification.title,
43
+ text: config.notification.text
44
+ } : undefined
10
45
  };
11
46
  }
12
- export function wireToPosition(w) {
47
+ export function geofenceToWire(g) {
13
48
  return {
14
- lat: w.lat,
15
- lng: w.lng,
49
+ id: g.id,
50
+ lat: g.latitude,
51
+ lng: g.longitude,
52
+ radiusMeters: g.radiusMeters,
53
+ notifyOnEntry: g.notifyOnEntry ?? true,
54
+ notifyOnExit: g.notifyOnExit ?? true
55
+ };
56
+ }
57
+
58
+ // --- Wire → public ---------------------------------------------------------
59
+
60
+ export function wireToLocation(w) {
61
+ return {
62
+ id: w.id,
63
+ latitude: w.lat,
64
+ longitude: w.lng,
65
+ timestamp: new Date(w.timestampMs),
16
66
  accuracy: w.accuracy,
17
67
  speed: w.speed,
18
68
  bearing: w.bearing,
19
69
  altitude: w.altitude,
20
- timestamp: new Date(w.timestampMs)
70
+ quality: oneOf(w.quality, ['ok', 'lowAccuracy', 'implausibleSpeed'], 'ok'),
71
+ trigger: oneOf(w.trigger, ['interval', 'motion', 'checkIn', 'geofence', 'manual'], 'interval'),
72
+ motion: oneOf(w.motion, ['moving', 'stationary', 'unknown'], 'unknown'),
73
+ activity: w.activity == null ? null : oneOf(w.activity, ['stationary', 'walking', 'running', 'cycling', 'automotive', 'unknown'], 'unknown'),
74
+ isMock: w.isMock
75
+ };
76
+ }
77
+ export function wireToGeofence(w) {
78
+ return {
79
+ id: w.id,
80
+ latitude: w.lat,
81
+ longitude: w.lng,
82
+ radiusMeters: w.radiusMeters,
83
+ notifyOnEntry: w.notifyOnEntry,
84
+ notifyOnExit: w.notifyOnExit
21
85
  };
22
86
  }
23
- function toPauseReason(s) {
24
- if (s === 'permissionRevoked' || s === 'locationDisabled') return s;
25
- return 'unknown';
87
+ export function wireToGeofenceEvent(w) {
88
+ return {
89
+ id: w.id,
90
+ geofenceId: w.geofenceId,
91
+ type: oneOf(w.type, ['enter', 'exit'], 'enter'),
92
+ timestamp: new Date(w.timestampMs)
93
+ };
26
94
  }
27
95
  export function wireToState(w) {
28
96
  switch (w.type) {
@@ -30,29 +98,83 @@ export function wireToState(w) {
30
98
  return {
31
99
  kind: 'idle'
32
100
  };
33
- case 'starting':
34
- return {
35
- kind: 'starting'
36
- };
37
101
  case 'tracking':
38
102
  return {
39
103
  kind: 'tracking'
40
104
  };
41
- case 'paused':
105
+ case 'stopped':
42
106
  return {
43
- kind: 'paused',
44
- reason: toPauseReason(w.pauseReason)
107
+ kind: 'stopped',
108
+ reason: toStopReason(w.stopReason)
45
109
  };
46
- case 'stopped':
110
+ default:
111
+ // Forward-compat: treat unknown as idle rather than throwing.
47
112
  return {
48
- kind: 'stopped'
113
+ kind: 'idle'
114
+ };
115
+ }
116
+ }
117
+ export function wireToSyncStatus(w) {
118
+ switch (w.type) {
119
+ case 'idle':
120
+ return {
121
+ kind: 'idle'
122
+ };
123
+ case 'pending':
124
+ return {
125
+ kind: 'pending'
126
+ };
127
+ case 'failed':
128
+ return {
129
+ kind: 'failed',
130
+ reason: toSyncFailure(w.failure)
49
131
  };
50
132
  default:
51
- // Defensive fallback. Native should never emit an unknown state, but
52
- // forward-compat: treat as idle rather than throwing.
53
133
  return {
54
134
  kind: 'idle'
55
135
  };
56
136
  }
57
137
  }
138
+ function toStopReason(s) {
139
+ return oneOf(s, ['user', 'permissionDenied', 'locationServicesDisabled', 'locationUnavailable', 'system'],
140
+ // The native side always populates the reason for a `stopped` state; an
141
+ // unknown/missing value means the wire contract was violated — fall back to
142
+ // `system` rather than throwing on a subscriber.
143
+ 'system');
144
+ }
145
+ function toSyncFailure(s) {
146
+ return oneOf(s, ['auth', 'rejected'], 'rejected');
147
+ }
148
+
149
+ /** Validate a wire enum string against the known set, with a safe fallback. */
150
+ function oneOf(value, allowed, fallback) {
151
+ return allowed.includes(value ?? '') ? value : fallback;
152
+ }
153
+
154
+ // --- Errors ----------------------------------------------------------------
155
+
156
+ /**
157
+ * Re-throw a native promise rejection as a typed {@link BeekonError}. The native
158
+ * modules encode the kind in the error-code string (`STORAGE_FAILURE`,
159
+ * `INVALID_GEOFENCE`); anything else falls through as the original error.
160
+ */
161
+ export function rethrowAsBeekonError(e) {
162
+ const code = e?.code;
163
+ const message = e?.message ?? String(e);
164
+ const kind = codeToKind(code);
165
+ if (kind) {
166
+ throw new BeekonError(kind, message);
167
+ }
168
+ throw e;
169
+ }
170
+ function codeToKind(code) {
171
+ switch (code) {
172
+ case 'STORAGE_FAILURE':
173
+ return 'storage';
174
+ case 'INVALID_GEOFENCE':
175
+ return 'invalidGeofence';
176
+ default:
177
+ return undefined;
178
+ }
179
+ }
58
180
  //# sourceMappingURL=mappers.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["configToWire","config","preset","distanceFilterMeters","intervalMillis","androidNotification","licenseKey","wireToPosition","w","lat","lng","accuracy","speed","bearing","altitude","timestamp","Date","timestampMs","toPauseReason","s","wireToState","type","kind","reason","pauseReason"],"sourceRoot":"../../../src","sources":["internal/mappers.ts"],"mappings":";;AAKA,OAAO,SAASA,YAAYA,CAACC,MAAoB,EAAc;EAC7D,OAAO;IACLC,MAAM,EAAED,MAAM,CAACC,MAAM,IAAI,UAAU;IACnCC,oBAAoB,EAAEF,MAAM,CAACE,oBAAoB;IACjDC,cAAc,EAAEH,MAAM,CAACG,cAAc;IACrCC,mBAAmB,EAAEJ,MAAM,CAACI,mBAAmB;IAC/CC,UAAU,EAAEL,MAAM,CAACK;EACrB,CAAC;AACH;AAEA,OAAO,SAASC,cAAcA,CAACC,CAAe,EAAY;EACxD,OAAO;IACLC,GAAG,EAAED,CAAC,CAACC,GAAG;IACVC,GAAG,EAAEF,CAAC,CAACE,GAAG;IACVC,QAAQ,EAAEH,CAAC,CAACG,QAAQ;IACpBC,KAAK,EAAEJ,CAAC,CAACI,KAAK;IACdC,OAAO,EAAEL,CAAC,CAACK,OAAO;IAClBC,QAAQ,EAAEN,CAAC,CAACM,QAAQ;IACpBC,SAAS,EAAE,IAAIC,IAAI,CAACR,CAAC,CAACS,WAAW;EACnC,CAAC;AACH;AAEA,SAASC,aAAaA,CAACC,CAAqB,EAAe;EACzD,IAAIA,CAAC,KAAK,mBAAmB,IAAIA,CAAC,KAAK,kBAAkB,EAAE,OAAOA,CAAC;EACnE,OAAO,SAAS;AAClB;AAEA,OAAO,SAASC,WAAWA,CAACZ,CAAY,EAAe;EACrD,QAAQA,CAAC,CAACa,IAAI;IACZ,KAAK,MAAM;MACT,OAAO;QAAEC,IAAI,EAAE;MAAO,CAAC;IACzB,KAAK,UAAU;MACb,OAAO;QAAEA,IAAI,EAAE;MAAW,CAAC;IAC7B,KAAK,UAAU;MACb,OAAO;QAAEA,IAAI,EAAE;MAAW,CAAC;IAC7B,KAAK,QAAQ;MACX,OAAO;QAAEA,IAAI,EAAE,QAAQ;QAAEC,MAAM,EAAEL,aAAa,CAACV,CAAC,CAACgB,WAAW;MAAE,CAAC;IACjE,KAAK,SAAS;MACZ,OAAO;QAAEF,IAAI,EAAE;MAAU,CAAC;IAC5B;MACE;MACA;MACA,OAAO;QAAEA,IAAI,EAAE;MAAO,CAAC;EAC3B;AACF","ignoreList":[]}
1
+ {"version":3,"names":["BeekonError","DEFAULTS","minTimeBetweenLocationsSeconds","minDistanceBetweenLocationsMeters","accuracyMode","whenStationary","stationaryRadiusMeters","detectActivity","syncIntervalSeconds","syncBatchSize","recordToEntries","record","Object","keys","map","key","value","configToWire","config","sync","url","headers","intervalSeconds","batchSize","undefined","notification","title","text","geofenceToWire","g","id","lat","latitude","lng","longitude","radiusMeters","notifyOnEntry","notifyOnExit","wireToLocation","w","timestamp","Date","timestampMs","accuracy","speed","bearing","altitude","quality","oneOf","trigger","motion","activity","isMock","wireToGeofence","wireToGeofenceEvent","geofenceId","type","wireToState","kind","reason","toStopReason","stopReason","wireToSyncStatus","toSyncFailure","failure","s","allowed","fallback","includes","rethrowAsBeekonError","e","code","message","String","codeToKind"],"sourceRoot":"../../../src","sources":["internal/mappers.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=enums.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/preset.ts"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/enums.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Error kinds thrown across the bridge. These are the **only** errors Beekon
5
+ * throws — permission / location-services / lifecycle problems never throw; they
6
+ * surface on the `onState` stream as `stopped(reason)` instead.
7
+ *
8
+ * - `'storage'` — a local-store (SQLite) read/write failed. Thrown by
9
+ * `getLocations()`, `deleteLocations()`, and `pendingUploadCount()`.
10
+ * - `'invalidGeofence'` — a geofence passed to `addGeofences()` failed
11
+ * validation (empty/oversized id, or non-positive radius).
12
+ */
13
+
14
+ /**
15
+ * Typed error surfaced from the bridge. The native module rejects promises with
16
+ * the kind encoded as the error code; the facade re-wraps into this.
17
+ */
18
+ export class BeekonError extends Error {
19
+ constructor(kind, message) {
20
+ super(message);
21
+ this.name = 'BeekonError';
22
+ this.kind = kind;
23
+ }
24
+ }
25
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BeekonError","Error","constructor","kind","message","name"],"sourceRoot":"../../../src","sources":["types/error.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA,OAAO,MAAMA,WAAW,SAASC,KAAK,CAAC;EAGrCC,WAAWA,CAACC,IAAqB,EAAEC,OAAe,EAAE;IAClD,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACC,IAAI,GAAG,aAAa;IACzB,IAAI,CAACF,IAAI,GAAGA,IAAI;EAClB;AACF","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=geofence.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/position.ts"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/geofence.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=location.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/location.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/sync.ts"],"mappings":"","ignoreList":[]}
@@ -1,57 +1,135 @@
1
1
  /**
2
- * Codegen TurboModule spec — DO NOT export Wire* types from `src/index.tsx`.
3
- * The public TS API in `src/beekon.ts` and `src/types/` is what consumers use;
4
- * mappers in `src/internal/mappers.ts` convert between the two.
2
+ * Codegen TurboModule spec — the single source React Native's Codegen reads to
3
+ * generate the native interface. **DO NOT export Wire* types from
4
+ * `src/index.tsx`.** The public TS API in `src/beekon.ts` and `src/types/` is
5
+ * what consumers use; mappers in `src/internal/mappers.ts` convert between the
6
+ * two.
5
7
  *
6
- * Wire types are flat (primitives + nested flat objects) because Codegen's
7
- * TS-to-Kotlin/ObjC type derivation has limited support for unions and
8
- * recursive structures. State variants are encoded as a `type` discriminator
9
- * string with sibling fields nullable per variant.
8
+ * Wire types are deliberately **flat** (primitives + flat nested objects +
9
+ * arrays) because Codegen's TSKotlin/ObjC derivation has no support for unions
10
+ * or recursive structures:
11
+ *
12
+ * - **Enums travel as plain `string`** (e.g. `accuracyMode`, `quality`); the
13
+ * mappers translate to/from the public string-literal unions with a defensive
14
+ * fallback, so an unknown value never crashes a subscriber.
15
+ * - **Sum types** (`WireState`, `WireSyncStatus`) are a `type` discriminator
16
+ * string plus sibling fields nullable per variant.
17
+ * - **String maps** (`headers`, `extras`) travel as `WireKeyValue[]` pairs —
18
+ * Codegen has no portable dictionary type.
19
+ * - **Timestamps** are epoch-milliseconds; intervals are seconds.
10
20
  */
11
21
  import type { CodegenTypes, TurboModule } from 'react-native';
12
- export type WireAndroidNotification = {
13
- channelId: string;
14
- channelName: string;
15
- notificationId: number;
16
- title: string;
17
- text: string;
18
- smallIconResName: string;
22
+ /** A single string map entry — see `headers` / `setExtras`. */
23
+ export type WireKeyValue = {
24
+ key: string;
25
+ value: string;
26
+ };
27
+ export type WireSyncConfig = {
28
+ url: string;
29
+ headers: WireKeyValue[];
30
+ intervalSeconds: number;
31
+ batchSize: number;
32
+ };
33
+ /** Android-only foreground-service notification overrides. iOS ignores it. */
34
+ export type WireNotificationConfig = {
35
+ title?: string;
36
+ text?: string;
19
37
  };
20
38
  export type WireConfig = {
21
- /** One of: 'saver' | 'balanced' | 'precision'. */
22
- preset: string;
23
- distanceFilterMeters?: number;
24
- intervalMillis?: number;
25
- androidNotification?: WireAndroidNotification;
26
- licenseKey?: string;
27
- };
28
- export type WirePosition = {
39
+ /** All fields required at the wire level — the TS facade applies defaults. */
40
+ minTimeBetweenLocationsSeconds: number;
41
+ minDistanceBetweenLocationsMeters: number;
42
+ /** One of: 'high' | 'balanced' | 'low'. */
43
+ accuracyMode: string;
44
+ /** One of: 'keepTracking' | 'pause' | 'pauseWithCheckIns'. */
45
+ whenStationary: string;
46
+ stationaryRadiusMeters: number;
47
+ detectActivity: boolean;
48
+ /** Omitted keeps tracking local-only. */
49
+ sync?: WireSyncConfig;
50
+ /** Android-only; the iOS native module ignores it. */
51
+ notification?: WireNotificationConfig;
52
+ };
53
+ export type WireLocation = {
54
+ id: string;
55
+ lat: number;
56
+ lng: number;
57
+ timestampMs: number;
58
+ /** `null` when the OS did not report a value. */
59
+ accuracy: number | null;
60
+ speed: number | null;
61
+ bearing: number | null;
62
+ altitude: number | null;
63
+ /** One of: 'ok' | 'lowAccuracy' | 'implausibleSpeed'. */
64
+ quality: string;
65
+ /** One of: 'interval' | 'motion' | 'checkIn' | 'geofence' | 'manual'. */
66
+ trigger: string;
67
+ /** One of: 'moving' | 'stationary' | 'unknown'. */
68
+ motion: string;
69
+ /** Activity enum string, or `null` unless activity detection is enabled. */
70
+ activity: string | null;
71
+ isMock: boolean;
72
+ };
73
+ export type WireGeofence = {
74
+ id: string;
29
75
  lat: number;
30
76
  lng: number;
31
- accuracy: number;
32
- speed: number;
33
- bearing: number;
34
- altitude: number;
77
+ radiusMeters: number;
78
+ notifyOnEntry: boolean;
79
+ notifyOnExit: boolean;
80
+ };
81
+ export type WireGeofenceEvent = {
82
+ id: string;
83
+ geofenceId: string;
84
+ /** One of: 'enter' | 'exit'. */
85
+ type: string;
35
86
  timestampMs: number;
36
87
  };
37
88
  export type WireState = {
38
- /** One of: 'idle' | 'starting' | 'tracking' | 'paused' | 'stopped'. */
89
+ /** One of: 'idle' | 'tracking' | 'stopped'. */
39
90
  type: string;
40
91
  /**
41
- * Only populated when `type === 'paused'`. One of:
42
- * 'permissionRevoked' | 'locationDisabled' | 'unknown'.
92
+ * Only populated when `type === 'stopped'`. One of: 'user' |
93
+ * 'permissionDenied' | 'locationServicesDisabled' | 'locationUnavailable' |
94
+ * 'system'.
43
95
  */
44
- pauseReason?: string;
96
+ stopReason?: string;
97
+ };
98
+ export type WireSyncStatus = {
99
+ /** One of: 'idle' | 'pending' | 'failed'. */
100
+ type: string;
101
+ /** Only populated when `type === 'failed'`. One of: 'auth' | 'rejected'. */
102
+ failure?: string;
45
103
  };
46
104
  export interface Spec extends TurboModule {
47
- initialize(): Promise<void>;
48
- configure(config: WireConfig): Promise<void>;
105
+ /**
106
+ * The config crosses as an untyped object (`ReadableMap` on Android,
107
+ * `NSDictionary` on iOS) and is parsed natively. Typing it as the nested
108
+ * {@link WireConfig} struct would force the iOS ObjC++ layer to walk Codegen's
109
+ * generated C++ structs; the facade still builds a `WireConfig`-shaped value
110
+ * via `configToWire`, so the shape is enforced upstream.
111
+ */
112
+ configure(config: CodegenTypes.UnsafeObject): Promise<void>;
49
113
  start(): Promise<void>;
50
114
  stop(): Promise<void>;
51
- shutdown(): Promise<void>;
52
- history(fromMs: number, toMs: number): Promise<WirePosition[]>;
115
+ resumeIfNeeded(): Promise<void>;
116
+ getLocations(fromMs: number, toMs: number): Promise<WireLocation[]>;
117
+ /**
118
+ * A negative `beforeMs` deletes all stored locations (the wire encoding of
119
+ * the public `deleteLocations()` no-argument case). A plain `number` is used
120
+ * rather than `number | null` for portable Codegen support across platforms.
121
+ */
122
+ deleteLocations(beforeMs: number): Promise<number>;
123
+ pendingUploadCount(): Promise<number>;
124
+ sync(): Promise<void>;
125
+ setExtras(entries: WireKeyValue[]): Promise<void>;
126
+ addGeofences(geofences: WireGeofence[]): Promise<void>;
127
+ removeGeofences(ids: string[]): Promise<void>;
128
+ listGeofences(): Promise<WireGeofence[]>;
53
129
  readonly onState: CodegenTypes.EventEmitter<WireState>;
54
- readonly onPosition: CodegenTypes.EventEmitter<WirePosition>;
130
+ readonly onLocation: CodegenTypes.EventEmitter<WireLocation>;
131
+ readonly onGeofenceEvent: CodegenTypes.EventEmitter<WireGeofenceEvent>;
132
+ readonly onSyncStatus: CodegenTypes.EventEmitter<WireSyncStatus>;
55
133
  }
56
134
  declare const _default: Spec;
57
135
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeBeekonRn.d.ts","sourceRoot":"","sources":["../../../src/NativeBeekonRn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG9D,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE/D,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACvD,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;CAC9D;;AAED,wBAAkE"}
1
+ {"version":3,"file":"NativeBeekonRn.d.ts","sourceRoot":"","sources":["../../../src/NativeBeekonRn.ts"],"names":[],"mappings":"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"}