hypertrack-sdk-react-native 10.0.3 → 11.0.1

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 (70) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/CONTRIBUTING.md +1 -1
  3. package/README.md +2 -2
  4. package/android/build.gradle +5 -1
  5. package/android/gradle.properties +1 -1
  6. package/android/src/main/java/com/reactnativehypertracksdk/HyperTrackReactNativePlugin.kt +80 -115
  7. package/android/src/main/java/com/reactnativehypertracksdk/ReactNativeSerialization.kt +23 -3
  8. package/android/src/main/java/com/reactnativehypertracksdk/common/HyperTrackSdkWrapper.kt +87 -220
  9. package/android/src/main/java/com/reactnativehypertracksdk/common/SdkMethod.kt +11 -9
  10. package/android/src/main/java/com/reactnativehypertracksdk/common/Serialization.kt +216 -132
  11. package/android/src/main/java/com/reactnativehypertracksdk/common/{Result.kt → WrapperResult.kt} +9 -7
  12. package/hypertrack-sdk-react-native.podspec +1 -1
  13. package/ios/HyperTrackReactNativePlugin.m +13 -11
  14. package/ios/HyperTrackReactNativePlugin.swift +141 -114
  15. package/ios/common/DictionaryDecoder.swift +5 -5
  16. package/ios/common/HyperTrackSDKWrapper.swift +46 -80
  17. package/ios/common/SDKMethod.swift +13 -12
  18. package/ios/common/Serialization.swift +200 -245
  19. package/lib/commonjs/HyperTrack/HyperTrack.js +224 -124
  20. package/lib/commonjs/HyperTrack/HyperTrack.js.map +1 -1
  21. package/lib/commonjs/HyperTrack/data_types/HyperTrackError.js +13 -17
  22. package/lib/commonjs/HyperTrack/data_types/HyperTrackError.js.map +1 -1
  23. package/lib/commonjs/HyperTrack/data_types/internal/HyperTrackErrorInternal.js.map +1 -1
  24. package/lib/commonjs/HyperTrack/data_types/internal/Metadata.js +2 -0
  25. package/lib/commonjs/HyperTrack/data_types/internal/Metadata.js.map +1 -0
  26. package/lib/commonjs/HyperTrack/data_types/internal/Name.js +2 -0
  27. package/lib/commonjs/HyperTrack/data_types/internal/Name.js.map +1 -0
  28. package/lib/commonjs/index.js +0 -7
  29. package/lib/commonjs/index.js.map +1 -1
  30. package/lib/module/HyperTrack/HyperTrack.js +224 -124
  31. package/lib/module/HyperTrack/HyperTrack.js.map +1 -1
  32. package/lib/module/HyperTrack/data_types/HyperTrackError.js +13 -17
  33. package/lib/module/HyperTrack/data_types/HyperTrackError.js.map +1 -1
  34. package/lib/module/HyperTrack/data_types/internal/HyperTrackErrorInternal.js.map +1 -1
  35. package/lib/module/HyperTrack/data_types/internal/Metadata.js +2 -0
  36. package/lib/module/HyperTrack/data_types/internal/Metadata.js.map +1 -0
  37. package/lib/module/HyperTrack/data_types/internal/Name.js +2 -0
  38. package/lib/module/HyperTrack/data_types/internal/Name.js.map +1 -0
  39. package/lib/module/index.js +0 -1
  40. package/lib/module/index.js.map +1 -1
  41. package/lib/typescript/HyperTrack/HyperTrack.d.ts +106 -54
  42. package/lib/typescript/HyperTrack/data_types/HyperTrackError.d.ts +59 -17
  43. package/lib/typescript/HyperTrack/data_types/internal/HyperTrackErrorInternal.d.ts +1 -1
  44. package/lib/typescript/HyperTrack/data_types/internal/Metadata.d.ts +4 -0
  45. package/lib/typescript/HyperTrack/data_types/internal/Name.d.ts +7 -0
  46. package/lib/typescript/index.d.ts +0 -1
  47. package/package.json +1 -1
  48. package/src/HyperTrack/HyperTrack.ts +281 -161
  49. package/src/HyperTrack/data_types/HyperTrackError.ts +73 -18
  50. package/src/HyperTrack/data_types/internal/HyperTrackErrorInternal.ts +3 -3
  51. package/src/HyperTrack/data_types/internal/Metadata.ts +4 -0
  52. package/src/HyperTrack/data_types/internal/Name.ts +7 -0
  53. package/src/index.tsx +0 -1
  54. package/android/src/main/java/com/reactnativehypertracksdk/common/HyperTrackError.kt +0 -28
  55. package/android/src/main/java/com/reactnativehypertracksdk/common/LocationError.kt +0 -9
  56. package/android/src/main/java/com/reactnativehypertracksdk/common/SdkInitParams.kt +0 -44
  57. package/ios/common/HyperTrackError.swift +0 -20
  58. package/ios/common/SDKInitParams.swift +0 -13
  59. package/lib/commonjs/HyperTrack/data_types/SdkInitParams.js +0 -2
  60. package/lib/commonjs/HyperTrack/data_types/SdkInitParams.js.map +0 -1
  61. package/lib/commonjs/HyperTrack/data_types/internal/DeviceName.js +0 -2
  62. package/lib/commonjs/HyperTrack/data_types/internal/DeviceName.js.map +0 -1
  63. package/lib/module/HyperTrack/data_types/SdkInitParams.js +0 -2
  64. package/lib/module/HyperTrack/data_types/SdkInitParams.js.map +0 -1
  65. package/lib/module/HyperTrack/data_types/internal/DeviceName.js +0 -2
  66. package/lib/module/HyperTrack/data_types/internal/DeviceName.js.map +0 -1
  67. package/lib/typescript/HyperTrack/data_types/SdkInitParams.d.ts +0 -25
  68. package/lib/typescript/HyperTrack/data_types/internal/DeviceName.d.ts +0 -4
  69. package/src/HyperTrack/data_types/SdkInitParams.ts +0 -28
  70. package/src/HyperTrack/data_types/internal/DeviceName.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["HyperTrackErrorInternal.ts"],"sourcesContent":["export type HyperTrackErrorInternal = {\n type: \"hyperTrackError\",\n value: string\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["HyperTrackErrorInternal.ts"],"sourcesContent":["export type HyperTrackErrorInternal = {\n type: 'error';\n value: string;\n};\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=Metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["Metadata.ts"],"sourcesContent":["export type Metadata = {\n type: 'metadata';\n value: Object;\n};\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=Name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["Name.ts"],"sourcesContent":["/**\n * Device name\n */\nexport type Name = {\n type: 'name';\n value: string;\n};\n"],"mappings":""}
@@ -57,12 +57,6 @@ Object.defineProperty(exports, "Result", {
57
57
  return _Result.Result;
58
58
  }
59
59
  });
60
- Object.defineProperty(exports, "SdkInitParams", {
61
- enumerable: true,
62
- get: function () {
63
- return _SdkInitParams.SdkInitParams;
64
- }
65
- });
66
60
  Object.defineProperty(exports, "Starting", {
67
61
  enumerable: true,
68
62
  get: function () {
@@ -82,7 +76,6 @@ var _LocationErrorInternal = require("./HyperTrack/data_types/internal/LocationE
82
76
  var _LocationError = require("./HyperTrack/data_types/LocationError");
83
77
  var _LocationWithDeviation = require("./HyperTrack/data_types/LocationWithDeviation");
84
78
  var _Location = require("./HyperTrack/data_types/Location");
85
- var _SdkInitParams = require("./HyperTrack/data_types/SdkInitParams");
86
79
  var _Result = require("./HyperTrack/data_types/Result");
87
80
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
88
81
  var _default = _HyperTrack.default;
@@ -1 +1 @@
1
- {"version":3,"names":["_HyperTrack","_interopRequireDefault","require","_HyperTrackError","_LocationErrorInternal","_LocationError","_LocationWithDeviation","_Location","_SdkInitParams","_Result","obj","__esModule","default","_default","HyperTrack","exports"],"sources":["index.tsx"],"sourcesContent":["import HyperTrack from './HyperTrack/HyperTrack';\nexport default HyperTrack;\nexport { HyperTrack };\n\nexport { HyperTrackError } from './HyperTrack/data_types/HyperTrackError';\nexport {\n NotRunning,\n Starting,\n} from './HyperTrack/data_types/internal/LocationErrorInternal';\nexport { LocationError, Errors } from './HyperTrack/data_types/LocationError';\nexport { LocationWithDeviation } from './HyperTrack/data_types/LocationWithDeviation';\nexport { Location } from './HyperTrack/data_types/Location';\nexport { SdkInitParams } from './HyperTrack/data_types/SdkInitParams';\nexport { Result, Success, Failure } from './HyperTrack/data_types/Result';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AAIA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,sBAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AACA,IAAAM,cAAA,GAAAN,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AAA0E,SAAAD,uBAAAS,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAZ3DC,mBAAU;AAAAC,OAAA,CAAAH,OAAA,GAAAC,QAAA"}
1
+ {"version":3,"names":["_HyperTrack","_interopRequireDefault","require","_HyperTrackError","_LocationErrorInternal","_LocationError","_LocationWithDeviation","_Location","_Result","obj","__esModule","default","_default","HyperTrack","exports"],"sources":["index.tsx"],"sourcesContent":["import HyperTrack from './HyperTrack/HyperTrack';\nexport default HyperTrack;\nexport { HyperTrack };\n\nexport { HyperTrackError } from './HyperTrack/data_types/HyperTrackError';\nexport {\n NotRunning,\n Starting,\n} from './HyperTrack/data_types/internal/LocationErrorInternal';\nexport { LocationError, Errors } from './HyperTrack/data_types/LocationError';\nexport { LocationWithDeviation } from './HyperTrack/data_types/LocationWithDeviation';\nexport { Location } from './HyperTrack/data_types/Location';\nexport { Result, Success, Failure } from './HyperTrack/data_types/Result';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AAIA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,sBAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AAA0E,SAAAD,uBAAAQ,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,IAAAG,QAAA,GAX3DC,mBAAU;AAAAC,OAAA,CAAAH,OAAA,GAAAC,QAAA"}
@@ -1,8 +1,13 @@
1
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
1
4
  import { NativeModules, Platform, NativeEventEmitter } from 'react-native';
2
5
  import { HyperTrackError } from './data_types/HyperTrackError';
3
- const EVENT_TRACKING = 'onTrackingChanged';
4
- const EVENT_AVAILABILITY = 'onAvailabilityChanged';
5
- const EVENT_ERROR = 'onError';
6
+ const EVENT_ERRORS = 'errors';
7
+ const EVENT_IS_AVAILABLE = 'isAvailable';
8
+ const EVENT_IS_TRACKING = 'isTracking';
9
+ const EVENT_LOCATE = 'locate';
10
+ const EVENT_LOCATION = 'location';
6
11
  const LINKING_ERROR = `The package 'hypertrack-sdk-react-native' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
7
12
  ios: "- You have run 'pod install'\n",
8
13
  default: ''
@@ -14,162 +19,197 @@ const HyperTrackSdk = NativeModules.HyperTrackReactNativePlugin ? NativeModules.
14
19
  });
15
20
  const EventEmitter = new NativeEventEmitter(HyperTrackSdk);
16
21
  export default class HyperTrack {
17
- constructor() {
18
- return this;
19
- }
22
+ /**
23
+ * Adds a new geotag
24
+ *
25
+ * @param {Object} data - Geotad data JSON
26
+ * @returns current location if success or LocationError if failure
27
+ */
20
28
 
21
29
  /**
22
- * Creates an SDK instance
30
+ * Adds a new geotag with expected location
23
31
  *
24
- * @param publishableKey publishable key provided in HyperTrack’s dashboard setup page
25
- * @param sdkInitParams
26
- * @returns HyperTrack instance
32
+ * @param {Object} data - Geotad data JSON
33
+ * @param {Location} expectedLocation - Expected location
34
+ * @returns location with deviation if success or LocationError if failure
27
35
  */
28
- static async initialize(publishableKey) {
29
- let sdkInitParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
30
- try {
31
- await HyperTrackSdk.initializeSdk({
32
- publishableKey,
33
- loggingEnabled: sdkInitParams.loggingEnabled ?? false,
34
- allowMockLocations: sdkInitParams.allowMockLocations ?? false,
35
- requireBackgroundTrackingPermission: sdkInitParams.requireBackgroundTrackingPermission ?? false,
36
- automaticallyRequestPermissions: sdkInitParams.automaticallyRequestPermissions ?? true
36
+
37
+ static async addGeotag() {
38
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
39
+ args[_key] = arguments[_key];
40
+ }
41
+ if (args.length === 1 && typeof args[0] === 'object') {
42
+ return HyperTrackSdk.addGeotag({
43
+ data: args[0],
44
+ expectedLocation: undefined
45
+ }).then(locationResponse => {
46
+ return this.deserializeLocationResponse(locationResponse);
37
47
  });
38
- return new HyperTrack();
39
- } catch (error) {
40
- throw error;
48
+ } else if (args.length === 2 && typeof args[0] === 'object' && HyperTrack.isLocation(args[1])) {
49
+ let expectedLocation = args[1];
50
+ return HyperTrackSdk.addGeotag({
51
+ data: args[0],
52
+ expectedLocation: {
53
+ type: 'location',
54
+ value: {
55
+ latitude: expectedLocation.latitude,
56
+ longitude: expectedLocation.longitude
57
+ }
58
+ }
59
+ }).then(locationResponse => {
60
+ return this.deserializeLocationWithDeviationResponse(locationResponse);
61
+ });
62
+ } else {
63
+ throw new Error('Invalid arguments');
41
64
  }
42
65
  }
43
66
 
44
67
  /**
45
68
  * Returns a string that is used to uniquely identify the device
69
+ *
70
+ * @returns {string} Device ID
46
71
  */
47
- getDeviceId() {
72
+ static async getDeviceId() {
48
73
  return HyperTrackSdk.getDeviceId().then(deviceId => deviceId.value);
49
74
  }
50
75
 
51
76
  /**
52
- * Reflects availability of the device for the Nearby search
77
+ * Returns a list of errors that blocks SDK from tracking
53
78
  *
54
- * @returns true when is available or false when unavailable
79
+ * @returns {HyperTrackError[]} List of errors
55
80
  */
56
- isAvailable() {
57
- return HyperTrackSdk.isAvailable().then(isAvailable => isAvailable.value);
81
+ static async getErrors() {
82
+ return HyperTrackSdk.getErrors().then(errors => {
83
+ return this.deserializeHyperTrackErrors(errors);
84
+ });
58
85
  }
59
86
 
60
87
  /**
61
- * Sets the availability of the device for the Nearby search
88
+ * Reflects availability of the device for the Nearby search
62
89
  *
63
- * @param availability true when is available or false when unavailable
90
+ * @returns true when is available or false when unavailable
64
91
  */
65
- setAvailability(isAvailable) {
66
- HyperTrackSdk.setAvailability({
67
- type: 'isAvailable',
68
- value: isAvailable
69
- });
92
+ static async getIsAvailable() {
93
+ return HyperTrackSdk.getIsAvailable().then(isAvailable => isAvailable.value);
70
94
  }
71
95
 
72
96
  /**
73
97
  * Reflects the tracking intent for the device
74
98
  *
75
- * @return {boolean} Whether the user's movement data is getting tracked or not.
99
+ * @returns {boolean} Whether the user's movement data is getting tracked or not.
76
100
  */
77
- isTracking() {
78
- return HyperTrackSdk.isTracking().then(isTracking => isTracking.value);
101
+ static async getIsTracking() {
102
+ return HyperTrackSdk.getIsTracking().then(isTracking => isTracking.value);
79
103
  }
80
104
 
81
105
  /**
82
- * Syncs the device state with the HyperTrack servers
106
+ * Reflects the current location of the user or an outage reason
83
107
  */
84
- sync() {
85
- HyperTrackSdk.sync();
108
+ static async getLocation() {
109
+ return HyperTrackSdk.getLocation().then(locationResponse => {
110
+ return this.deserializeLocationResponse(locationResponse);
111
+ });
86
112
  }
87
113
 
88
114
  /**
89
- * Expresses an intent to start location tracking for the device
115
+ * Gets the metadata that is set for the device
116
+ *
117
+ * @returns {Object} Metadata JSON
90
118
  */
91
- startTracking() {
92
- HyperTrackSdk.startTracking();
119
+ static async getMetadata() {
120
+ return HyperTrackSdk.getMetadata().then(metadata => {
121
+ return this.deserializeMetadata(metadata);
122
+ });
93
123
  }
94
124
 
95
125
  /**
96
- * Stops location tracking immediately
126
+ * Gets the name that is set for the device
127
+ *
128
+ * @returns {string} Device name
97
129
  */
98
- stopTracking() {
99
- HyperTrackSdk.stopTracking();
130
+ static async getName() {
131
+ return HyperTrackSdk.getName().then(name => {
132
+ return this.deserializeName(name);
133
+ });
100
134
  }
101
135
 
102
136
  /**
103
- * Reflects the current location of the user or an outage reason
137
+ * Requests one-time location update and returns the location once it is available, or error.
138
+ *
139
+ * Only one locate subscription can be active at a time. If you re-subscribe, the old EmitterSubscription
140
+ * will be automaticaly removed.
141
+ *
142
+ * This method will start location tracking if called, and will stop it when the location is received or
143
+ * the subscription is cancelled. If any other tracking intent is present (e.g. isAvailable is set to `true`),
144
+ * the tracking will not be stopped.
145
+ *
146
+ * @param callback
147
+ * @returns EmitterSubscription
148
+ * @example ```js
149
+ * const subscription = HyperTrack.locate(location => {
150
+ * ...
151
+ * })
152
+ *
153
+ * // to unsubscribe
154
+ * subscription.remove()
155
+ * ```
104
156
  */
105
- getLocation() {
106
- return HyperTrackSdk.getLocation().then(locationResponse => {
107
- return this.deserializeLocationResponse(locationResponse);
157
+ static locate(callback) {
158
+ var _this$locateSubscript;
159
+ (_this$locateSubscript = this.locateSubscription) === null || _this$locateSubscript === void 0 ? void 0 : _this$locateSubscript.remove();
160
+ this.locateSubscription = EventEmitter.addListener(EVENT_LOCATE, location => {
161
+ callback(this.deserializeLocateResponse(location));
108
162
  });
163
+ HyperTrackSdk.locate();
164
+ return this.locateSubscription;
109
165
  }
110
166
 
111
167
  /**
112
- * Sets the name for the device
113
- * @param {string} name
168
+ * Sets the availability of the device for the Nearby search
169
+ *
170
+ * @param availability true when is available or false when unavailable
114
171
  */
115
- setName(name) {
116
- HyperTrackSdk.setName({
117
- type: 'deviceName',
118
- value: name
172
+ static async setIsAvailable(isAvailable) {
173
+ HyperTrackSdk.setIsAvailable({
174
+ type: 'isAvailable',
175
+ value: isAvailable
119
176
  });
120
177
  }
121
178
 
122
179
  /**
123
- * Sets the metadata for the device
124
- * @param {Object} data - Metadata JSON
180
+ * Sets the tracking intent for the device
181
+ *
182
+ * @param {boolean} isTracking
125
183
  */
126
- setMetadata(data) {
127
- HyperTrackSdk.setMetadata(data);
184
+ static async setIsTracking(isTracking) {
185
+ HyperTrackSdk.setIsTracking({
186
+ type: 'isTracking',
187
+ value: isTracking
188
+ });
128
189
  }
129
190
 
130
191
  /**
131
- * Adds a new geotag
192
+ * Sets the metadata for the device
132
193
  *
133
- * @param {Object} data - Geotad data JSON
134
- * @returns current location if success or LocationError if failure
194
+ * @param {Object} data - Metadata JSON
135
195
  */
196
+ static async setMetadata(data) {
197
+ HyperTrackSdk.setMetadata({
198
+ type: 'metadata',
199
+ value: data
200
+ });
201
+ }
136
202
 
137
203
  /**
138
- * Adds a new geotag with expected location
204
+ * Sets the name for the device
139
205
  *
140
- * @param {Object} data - Geotad data JSON
141
- * @param {Location} expectedLocation - Expected location
142
- * @returns location with deviation if success or LocationError if failure
206
+ * @param {string} name
143
207
  */
144
-
145
- async addGeotag() {
146
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
147
- args[_key] = arguments[_key];
148
- }
149
- if (args.length === 1 && typeof args[0] === 'object') {
150
- return HyperTrackSdk.addGeotag({
151
- data: args[0],
152
- expectedLocation: undefined
153
- }).then(locationResponse => {
154
- return this.deserializeLocationResponse(locationResponse);
155
- });
156
- } else if (args.length === 2 && typeof args[0] === 'object' && this.isLocation(args[1])) {
157
- let expectedLocation = args[1];
158
- return HyperTrackSdk.addGeotag({
159
- data: args[0],
160
- expectedLocation: {
161
- type: 'location',
162
- value: {
163
- latitude: expectedLocation.latitude,
164
- longitude: expectedLocation.longitude
165
- }
166
- }
167
- }).then(locationResponse => {
168
- return this.deserializeLocationWithDeviationResponse(locationResponse);
169
- });
170
- } else {
171
- throw new Error('Invalid arguments');
172
- }
208
+ static async setName(name) {
209
+ HyperTrackSdk.setName({
210
+ type: 'name',
211
+ value: name
212
+ });
173
213
  }
174
214
 
175
215
  /**
@@ -189,12 +229,35 @@ export default class HyperTrack {
189
229
  * subscription.remove()
190
230
  * ```
191
231
  */
192
- subscribeToErrors(listener) {
193
- return EventEmitter.addListener(EVENT_ERROR, rawErrors => {
232
+ static subscribeToErrors(listener) {
233
+ return EventEmitter.addListener(EVENT_ERRORS, rawErrors => {
194
234
  listener(this.deserializeHyperTrackErrors(rawErrors));
195
235
  });
196
236
  }
197
237
 
238
+ /**
239
+ * Subscribe to availability changes
240
+ *
241
+ * @param listener
242
+ * @returns EmitterSubscription
243
+ * @example
244
+ * ```js
245
+ * const subscription = HyperTrack.subscribeToIsAvailable(isAvailable => {
246
+ * if (isAvailable) {
247
+ * // ... ready to go
248
+ * }
249
+ * })
250
+ *
251
+ * // later, to stop listening
252
+ * subscription.remove()
253
+ * ```
254
+ */
255
+ static subscribeToIsAvailable(listener) {
256
+ return EventEmitter.addListener(EVENT_IS_AVAILABLE, isAvailable => {
257
+ listener(isAvailable.value);
258
+ });
259
+ }
260
+
198
261
  /**
199
262
  * Subscribe to tracking intent changes
200
263
  *
@@ -202,7 +265,7 @@ export default class HyperTrack {
202
265
  * @returns EmitterSubscription
203
266
  * @example
204
267
  * ```js
205
- * const subscription = HyperTrack.subscribeToTracking(isTracking => {
268
+ * const subscription = HyperTrack.subscribeToIsTracking(isTracking => {
206
269
  * if (isTracking) {
207
270
  * // ... ready to go
208
271
  * }
@@ -212,42 +275,76 @@ export default class HyperTrack {
212
275
  * subscription.remove()
213
276
  * ```
214
277
  */
215
- subscribeToTracking(listener) {
216
- return EventEmitter.addListener(EVENT_TRACKING, isTracking => {
278
+ static subscribeToIsTracking(listener) {
279
+ return EventEmitter.addListener(EVENT_IS_TRACKING, isTracking => {
217
280
  listener(isTracking.value);
218
281
  });
219
282
  }
220
283
 
221
284
  /**
222
- * Subscribe to availability changes
285
+ * Subscribe to location changes
223
286
  *
224
287
  * @param listener
225
288
  * @returns EmitterSubscription
226
289
  * @example
227
290
  * ```js
228
- * const subscription = HyperTrack.subscribeToAvailability(isAvailable => {
229
- * if (isAvailable) {
230
- * // ... ready to go
231
- * }
291
+ * const subscription = HyperTrack.subscribeToLocation(location => {
292
+ * ...
232
293
  * })
233
294
  *
234
295
  * // later, to stop listening
235
296
  * subscription.remove()
236
297
  * ```
237
298
  */
238
- subscribeToAvailability(listener) {
239
- return EventEmitter.addListener(EVENT_AVAILABILITY, isAvailable => {
240
- listener(isAvailable.value);
299
+ static subscribeToLocation(listener) {
300
+ return EventEmitter.addListener(EVENT_LOCATION, location => {
301
+ listener(this.deserializeLocationResponse(location));
241
302
  });
242
303
  }
243
304
 
244
305
  /** @ignore */
245
- deserializeHyperTrackErrors(errors) {
246
- return errors.map(error => HyperTrackError[error.value]);
306
+ static deserializeHyperTrackErrors(errors) {
307
+ let res = errors.map(error => {
308
+ if (error.type != 'error') {
309
+ throw new Error('Invalid error type');
310
+ }
311
+ return Object.keys(HyperTrackError).find(key => HyperTrackError[key] === error.value);
312
+ });
313
+ return res;
247
314
  }
248
315
 
249
316
  /** @ignore */
250
- deserializeLocationResponse(response) {
317
+ static deserializeLocateResponse(response) {
318
+ switch (response.type) {
319
+ case 'success':
320
+ return {
321
+ type: 'success',
322
+ value: response.value.value
323
+ };
324
+ case 'failure':
325
+ return {
326
+ type: 'failure',
327
+ value: this.deserializeHyperTrackErrors(response.value)
328
+ };
329
+ }
330
+ }
331
+
332
+ /** @ignore */
333
+ static deserializeLocationError(locationError) {
334
+ switch (locationError.type) {
335
+ case 'notRunning':
336
+ case 'starting':
337
+ return locationError;
338
+ case 'errors':
339
+ return {
340
+ type: 'errors',
341
+ value: this.deserializeHyperTrackErrors(locationError.value)
342
+ };
343
+ }
344
+ }
345
+
346
+ /** @ignore */
347
+ static deserializeLocationResponse(response) {
251
348
  switch (response.type) {
252
349
  case 'success':
253
350
  return {
@@ -263,7 +360,7 @@ export default class HyperTrack {
263
360
  }
264
361
 
265
362
  /** @ignore */
266
- deserializeLocationWithDeviationResponse(response) {
363
+ static deserializeLocationWithDeviationResponse(response) {
267
364
  switch (response.type) {
268
365
  case 'success':
269
366
  const locationWithDeviationInternal = response.value;
@@ -284,22 +381,25 @@ export default class HyperTrack {
284
381
  }
285
382
 
286
383
  /** @ignore */
287
- deserializeLocationError(locationError) {
288
- switch (locationError.type) {
289
- case 'notRunning':
290
- case 'starting':
291
- return locationError;
292
- case 'errors':
293
- return {
294
- type: 'errors',
295
- value: this.deserializeHyperTrackErrors(locationError.value)
296
- };
384
+ static deserializeMetadata(metadata) {
385
+ if (metadata.type != 'metadata') {
386
+ throw new Error(`Invalid metadata: ${JSON.stringify(metadata)}`);
387
+ }
388
+ return metadata.value;
389
+ }
390
+
391
+ /** @ignore */
392
+ static deserializeName(name) {
393
+ if (name.type != 'name') {
394
+ throw new Error(`Invalid name: ${JSON.stringify(name)}`);
297
395
  }
396
+ return name.value;
298
397
  }
299
398
 
300
399
  /** @ignore */
301
- isLocation(obj) {
400
+ static isLocation(obj) {
302
401
  return 'latitude' in obj && typeof obj.latitude == 'number' && 'longitude' in obj && typeof obj.longitude == 'number';
303
402
  }
304
403
  }
404
+ _defineProperty(HyperTrack, "locateSubscription", void 0);
305
405
  //# sourceMappingURL=HyperTrack.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","NativeEventEmitter","HyperTrackError","EVENT_TRACKING","EVENT_AVAILABILITY","EVENT_ERROR","LINKING_ERROR","select","ios","default","HyperTrackSdk","HyperTrackReactNativePlugin","Proxy","get","Error","EventEmitter","HyperTrack","constructor","initialize","publishableKey","sdkInitParams","arguments","length","undefined","initializeSdk","loggingEnabled","allowMockLocations","requireBackgroundTrackingPermission","automaticallyRequestPermissions","error","getDeviceId","then","deviceId","value","isAvailable","setAvailability","type","isTracking","sync","startTracking","stopTracking","getLocation","locationResponse","deserializeLocationResponse","setName","name","setMetadata","data","addGeotag","_len","args","Array","_key","expectedLocation","isLocation","latitude","longitude","deserializeLocationWithDeviationResponse","subscribeToErrors","listener","addListener","rawErrors","deserializeHyperTrackErrors","subscribeToTracking","subscribeToAvailability","errors","map","response","deserializeLocationError","locationWithDeviationInternal","locationInternal","location","deviation","locationError","obj"],"sources":["HyperTrack.ts"],"sourcesContent":["import { NativeModules, Platform, NativeEventEmitter } from 'react-native';\nimport { HyperTrackError } from './data_types/HyperTrackError';\nimport type { IsAvailable } from './data_types/internal/IsAvailable';\nimport type { IsTracking } from './data_types/internal/IsTracking';\nimport type { Location } from './data_types/Location';\nimport type { LocationError } from './data_types/LocationError';\nimport type { SdkInitParams } from './data_types/SdkInitParams';\nimport type { DeviceId } from './data_types/internal/DeviceId';\nimport type { GeotagData } from './data_types/internal/GeotagData';\nimport type { DeviceName } from './data_types/internal/DeviceName';\nimport type { HyperTrackErrorInternal } from './data_types/internal/HyperTrackErrorInternal';\nimport type { Result } from './data_types/Result';\nimport type { LocationWithDeviation } from './data_types/LocationWithDeviation';\nimport type { LocationErrorInternal } from './data_types/internal/LocationErrorInternal';\nimport type { LocationInternal } from './data_types/internal/LocationInternal';\nimport type { LocationWithDeviationInternal } from './data_types/internal/LocationWithDeviationInternal';\n\nconst EVENT_TRACKING = 'onTrackingChanged';\nconst EVENT_AVAILABILITY = 'onAvailabilityChanged';\nconst EVENT_ERROR = 'onError';\n\nconst LINKING_ERROR =\n `The package 'hypertrack-sdk-react-native' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\nconst HyperTrackSdk = NativeModules.HyperTrackReactNativePlugin\n ? NativeModules.HyperTrackReactNativePlugin\n : new Proxy(\n {},\n {\n get() {\n throw new Error(LINKING_ERROR);\n },\n }\n );\n\nconst EventEmitter = new NativeEventEmitter(HyperTrackSdk);\n\nexport default class HyperTrack {\n private constructor() {\n return this;\n }\n\n /**\n * Creates an SDK instance\n *\n * @param publishableKey publishable key provided in HyperTrack’s dashboard setup page\n * @param sdkInitParams\n * @returns HyperTrack instance\n */\n static async initialize(\n publishableKey: string,\n sdkInitParams: SdkInitParams = {}\n ): Promise<HyperTrack> {\n try {\n await HyperTrackSdk.initializeSdk({\n publishableKey,\n loggingEnabled: sdkInitParams.loggingEnabled ?? false,\n allowMockLocations: sdkInitParams.allowMockLocations ?? false,\n requireBackgroundTrackingPermission:\n sdkInitParams.requireBackgroundTrackingPermission ?? false,\n automaticallyRequestPermissions:\n sdkInitParams.automaticallyRequestPermissions ?? true,\n });\n return new HyperTrack();\n } catch (error: any) {\n throw error;\n }\n }\n\n /**\n * Returns a string that is used to uniquely identify the device\n */\n getDeviceId(): Promise<string> {\n return HyperTrackSdk.getDeviceId().then(\n (deviceId: DeviceId) => deviceId.value\n );\n }\n\n /**\n * Reflects availability of the device for the Nearby search\n *\n * @returns true when is available or false when unavailable\n */\n isAvailable(): Promise<boolean> {\n return HyperTrackSdk.isAvailable().then(\n (isAvailable: IsAvailable) => isAvailable.value\n );\n }\n\n /**\n * Sets the availability of the device for the Nearby search\n *\n * @param availability true when is available or false when unavailable\n */\n setAvailability(isAvailable: boolean) {\n HyperTrackSdk.setAvailability({\n type: 'isAvailable',\n value: isAvailable,\n } as IsAvailable);\n }\n\n /**\n * Reflects the tracking intent for the device\n *\n * @return {boolean} Whether the user's movement data is getting tracked or not.\n */\n isTracking(): Promise<boolean> {\n return HyperTrackSdk.isTracking().then(\n (isTracking: IsTracking) => isTracking.value\n );\n }\n\n /**\n * Syncs the device state with the HyperTrack servers\n */\n sync() {\n HyperTrackSdk.sync();\n }\n\n /**\n * Expresses an intent to start location tracking for the device\n */\n startTracking() {\n HyperTrackSdk.startTracking();\n }\n\n /**\n * Stops location tracking immediately\n */\n stopTracking() {\n HyperTrackSdk.stopTracking();\n }\n\n /**\n * Reflects the current location of the user or an outage reason\n */\n getLocation(): Promise<Result<Location, LocationError>> {\n return HyperTrackSdk.getLocation().then(\n (locationResponse: Result<LocationInternal, LocationErrorInternal>) => {\n return this.deserializeLocationResponse(locationResponse);\n }\n );\n }\n\n /**\n * Sets the name for the device\n * @param {string} name\n */\n setName(name: string) {\n HyperTrackSdk.setName({\n type: 'deviceName',\n value: name,\n } as DeviceName);\n }\n\n /**\n * Sets the metadata for the device\n * @param {Object} data - Metadata JSON\n */\n setMetadata(data: Object) {\n HyperTrackSdk.setMetadata(data);\n }\n\n /**\n * Adds a new geotag\n *\n * @param {Object} data - Geotad data JSON\n * @returns current location if success or LocationError if failure\n */\n async addGeotag(data: Object): Promise<Result<Location, LocationError>>;\n\n /**\n * Adds a new geotag with expected location\n *\n * @param {Object} data - Geotad data JSON\n * @param {Location} expectedLocation - Expected location\n * @returns location with deviation if success or LocationError if failure\n */\n async addGeotag(\n data: Object,\n expectedLocation: Location\n ): Promise<Result<LocationWithDeviation, LocationError>>;\n\n async addGeotag(\n ...args: any[]\n ): Promise<Result<Location | LocationWithDeviation, LocationError>> {\n if (args.length === 1 && typeof args[0] === 'object') {\n return HyperTrackSdk.addGeotag({\n data: args[0],\n expectedLocation: undefined,\n } as GeotagData).then(\n (locationResponse: Result<LocationInternal, LocationErrorInternal>) => {\n return this.deserializeLocationResponse(locationResponse);\n }\n );\n } else if (\n args.length === 2 &&\n typeof args[0] === 'object' &&\n this.isLocation(args[1])\n ) {\n let expectedLocation = args[1] as Location;\n return HyperTrackSdk.addGeotag({\n data: args[0],\n expectedLocation: {\n type: 'location',\n value: {\n latitude: expectedLocation.latitude,\n longitude: expectedLocation.longitude,\n },\n } as LocationInternal,\n } as GeotagData).then(\n (\n locationResponse: Result<\n LocationWithDeviationInternal,\n LocationErrorInternal\n >\n ) => {\n return this.deserializeLocationWithDeviationResponse(\n locationResponse\n );\n }\n );\n } else {\n throw new Error('Invalid arguments');\n }\n }\n\n /**\n * Subscribe to tracking errors\n *\n * @param listener\n * @returns EmitterSubscription\n * @example\n * ```js\n * const subscription = HyperTrack.subscribeToErrors(errors => {\n * errors.forEach(error => {\n * // ... error\n * })\n * })\n *\n * // later, to stop listening\n * subscription.remove()\n * ```\n */\n subscribeToErrors(listener: (errors: HyperTrackError[]) => void) {\n return EventEmitter.addListener(\n EVENT_ERROR,\n (rawErrors: HyperTrackErrorInternal[]) => {\n listener(this.deserializeHyperTrackErrors(rawErrors));\n }\n );\n }\n\n /**\n * Subscribe to tracking intent changes\n *\n * @param listener\n * @returns EmitterSubscription\n * @example\n * ```js\n * const subscription = HyperTrack.subscribeToTracking(isTracking => {\n * if (isTracking) {\n * // ... ready to go\n * }\n * })\n *\n * // later, to stop listening\n * subscription.remove()\n * ```\n */\n subscribeToTracking(listener: (isTracking: boolean) => void) {\n return EventEmitter.addListener(\n EVENT_TRACKING,\n (isTracking: IsTracking) => {\n listener(isTracking.value);\n }\n );\n }\n\n /**\n * Subscribe to availability changes\n *\n * @param listener\n * @returns EmitterSubscription\n * @example\n * ```js\n * const subscription = HyperTrack.subscribeToAvailability(isAvailable => {\n * if (isAvailable) {\n * // ... ready to go\n * }\n * })\n *\n * // later, to stop listening\n * subscription.remove()\n * ```\n */\n subscribeToAvailability(listener: (isAvailable: boolean) => void) {\n return EventEmitter.addListener(\n EVENT_AVAILABILITY,\n (isAvailable: IsAvailable) => {\n listener(isAvailable.value);\n }\n );\n }\n\n /** @ignore */\n private deserializeHyperTrackErrors(\n errors: HyperTrackErrorInternal[]\n ): HyperTrackError[] {\n return errors.map(\n (error: HyperTrackErrorInternal) =>\n HyperTrackError[error.value as keyof typeof HyperTrackError]\n );\n }\n\n /** @ignore */\n private deserializeLocationResponse(\n response: Result<LocationInternal, LocationErrorInternal>\n ): Result<Location, LocationError> {\n switch (response.type) {\n case 'success':\n return {\n type: 'success',\n value: response.value.value,\n };\n case 'failure':\n return {\n type: 'failure',\n value: this.deserializeLocationError(response.value),\n };\n }\n }\n\n /** @ignore */\n private deserializeLocationWithDeviationResponse(\n response: Result<LocationWithDeviationInternal, LocationErrorInternal>\n ): Result<LocationWithDeviation, LocationError> {\n switch (response.type) {\n case 'success':\n const locationWithDeviationInternal: LocationWithDeviationInternal =\n response.value;\n const locationInternal: LocationInternal =\n locationWithDeviationInternal.value.location;\n\n return {\n type: 'success',\n value: {\n location: locationInternal.value,\n deviation: locationWithDeviationInternal.value.deviation,\n } as LocationWithDeviation,\n };\n case 'failure':\n return {\n type: 'failure',\n value: this.deserializeLocationError(response.value),\n };\n }\n }\n\n /** @ignore */\n private deserializeLocationError(\n locationError: LocationErrorInternal\n ): LocationError {\n switch (locationError.type) {\n case 'notRunning':\n case 'starting':\n return locationError;\n case 'errors':\n return {\n type: 'errors',\n value: this.deserializeHyperTrackErrors(locationError.value),\n };\n }\n }\n\n /** @ignore */\n private isLocation(obj: Location): obj is Location {\n return (\n 'latitude' in obj &&\n typeof obj.latitude == 'number' &&\n 'longitude' in obj &&\n typeof obj.longitude == 'number'\n );\n }\n}\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,EAAEC,kBAAkB,QAAQ,cAAc;AAC1E,SAASC,eAAe,QAAQ,8BAA8B;AAgB9D,MAAMC,cAAc,GAAG,mBAAmB;AAC1C,MAAMC,kBAAkB,GAAG,uBAAuB;AAClD,MAAMC,WAAW,GAAG,SAAS;AAE7B,MAAMC,aAAa,GAChB,sFAAqF,GACtFN,QAAQ,CAACO,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,6CAA6C;AAE/C,MAAMC,aAAa,GAAGX,aAAa,CAACY,2BAA2B,GAC3DZ,aAAa,CAACY,2BAA2B,GACzC,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACR,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEL,MAAMS,YAAY,GAAG,IAAId,kBAAkB,CAACS,aAAa,CAAC;AAE1D,eAAe,MAAMM,UAAU,CAAC;EACtBC,WAAWA,CAAA,EAAG;IACpB,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACE,aAAaC,UAAUA,CACrBC,cAAsB,EAED;IAAA,IADrBC,aAA4B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAEjC,IAAI;MACF,MAAMX,aAAa,CAACc,aAAa,CAAC;QAChCL,cAAc;QACdM,cAAc,EAAEL,aAAa,CAACK,cAAc,IAAI,KAAK;QACrDC,kBAAkB,EAAEN,aAAa,CAACM,kBAAkB,IAAI,KAAK;QAC7DC,mCAAmC,EACjCP,aAAa,CAACO,mCAAmC,IAAI,KAAK;QAC5DC,+BAA+B,EAC7BR,aAAa,CAACQ,+BAA+B,IAAI;MACrD,CAAC,CAAC;MACF,OAAO,IAAIZ,UAAU,CAAC,CAAC;IACzB,CAAC,CAAC,OAAOa,KAAU,EAAE;MACnB,MAAMA,KAAK;IACb;EACF;;EAEA;AACF;AACA;EACEC,WAAWA,CAAA,EAAoB;IAC7B,OAAOpB,aAAa,CAACoB,WAAW,CAAC,CAAC,CAACC,IAAI,CACpCC,QAAkB,IAAKA,QAAQ,CAACC,KACnC,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;EACEC,WAAWA,CAAA,EAAqB;IAC9B,OAAOxB,aAAa,CAACwB,WAAW,CAAC,CAAC,CAACH,IAAI,CACpCG,WAAwB,IAAKA,WAAW,CAACD,KAC5C,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;EACEE,eAAeA,CAACD,WAAoB,EAAE;IACpCxB,aAAa,CAACyB,eAAe,CAAC;MAC5BC,IAAI,EAAE,aAAa;MACnBH,KAAK,EAAEC;IACT,CAAgB,CAAC;EACnB;;EAEA;AACF;AACA;AACA;AACA;EACEG,UAAUA,CAAA,EAAqB;IAC7B,OAAO3B,aAAa,CAAC2B,UAAU,CAAC,CAAC,CAACN,IAAI,CACnCM,UAAsB,IAAKA,UAAU,CAACJ,KACzC,CAAC;EACH;;EAEA;AACF;AACA;EACEK,IAAIA,CAAA,EAAG;IACL5B,aAAa,CAAC4B,IAAI,CAAC,CAAC;EACtB;;EAEA;AACF;AACA;EACEC,aAAaA,CAAA,EAAG;IACd7B,aAAa,CAAC6B,aAAa,CAAC,CAAC;EAC/B;;EAEA;AACF;AACA;EACEC,YAAYA,CAAA,EAAG;IACb9B,aAAa,CAAC8B,YAAY,CAAC,CAAC;EAC9B;;EAEA;AACF;AACA;EACEC,WAAWA,CAAA,EAA6C;IACtD,OAAO/B,aAAa,CAAC+B,WAAW,CAAC,CAAC,CAACV,IAAI,CACpCW,gBAAiE,IAAK;MACrE,OAAO,IAAI,CAACC,2BAA2B,CAACD,gBAAgB,CAAC;IAC3D,CACF,CAAC;EACH;;EAEA;AACF;AACA;AACA;EACEE,OAAOA,CAACC,IAAY,EAAE;IACpBnC,aAAa,CAACkC,OAAO,CAAC;MACpBR,IAAI,EAAE,YAAY;MAClBH,KAAK,EAAEY;IACT,CAAe,CAAC;EAClB;;EAEA;AACF;AACA;AACA;EACEC,WAAWA,CAACC,IAAY,EAAE;IACxBrC,aAAa,CAACoC,WAAW,CAACC,IAAI,CAAC;EACjC;;EAEA;AACF;AACA;AACA;AACA;AACA;;EAGE;AACF;AACA;AACA;AACA;AACA;AACA;;EAME,MAAMC,SAASA,CAAA,EAEqD;IAAA,SAAAC,IAAA,GAAA5B,SAAA,CAAAC,MAAA,EAD/D4B,IAAI,OAAAC,KAAA,CAAAF,IAAA,GAAAG,IAAA,MAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA;MAAJF,IAAI,CAAAE,IAAA,IAAA/B,SAAA,CAAA+B,IAAA;IAAA;IAEP,IAAIF,IAAI,CAAC5B,MAAM,KAAK,CAAC,IAAI,OAAO4B,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;MACpD,OAAOxC,aAAa,CAACsC,SAAS,CAAC;QAC7BD,IAAI,EAAEG,IAAI,CAAC,CAAC,CAAC;QACbG,gBAAgB,EAAE9B;MACpB,CAAe,CAAC,CAACQ,IAAI,CAClBW,gBAAiE,IAAK;QACrE,OAAO,IAAI,CAACC,2BAA2B,CAACD,gBAAgB,CAAC;MAC3D,CACF,CAAC;IACH,CAAC,MAAM,IACLQ,IAAI,CAAC5B,MAAM,KAAK,CAAC,IACjB,OAAO4B,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAC3B,IAAI,CAACI,UAAU,CAACJ,IAAI,CAAC,CAAC,CAAC,CAAC,EACxB;MACA,IAAIG,gBAAgB,GAAGH,IAAI,CAAC,CAAC,CAAa;MAC1C,OAAOxC,aAAa,CAACsC,SAAS,CAAC;QAC7BD,IAAI,EAAEG,IAAI,CAAC,CAAC,CAAC;QACbG,gBAAgB,EAAE;UAChBjB,IAAI,EAAE,UAAU;UAChBH,KAAK,EAAE;YACLsB,QAAQ,EAAEF,gBAAgB,CAACE,QAAQ;YACnCC,SAAS,EAAEH,gBAAgB,CAACG;UAC9B;QACF;MACF,CAAe,CAAC,CAACzB,IAAI,CAEjBW,gBAGC,IACE;QACH,OAAO,IAAI,CAACe,wCAAwC,CAClDf,gBACF,CAAC;MACH,CACF,CAAC;IACH,CAAC,MAAM;MACL,MAAM,IAAI5B,KAAK,CAAC,mBAAmB,CAAC;IACtC;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE4C,iBAAiBA,CAACC,QAA6C,EAAE;IAC/D,OAAO5C,YAAY,CAAC6C,WAAW,CAC7BvD,WAAW,EACVwD,SAAoC,IAAK;MACxCF,QAAQ,CAAC,IAAI,CAACG,2BAA2B,CAACD,SAAS,CAAC,CAAC;IACvD,CACF,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEE,mBAAmBA,CAACJ,QAAuC,EAAE;IAC3D,OAAO5C,YAAY,CAAC6C,WAAW,CAC7BzD,cAAc,EACbkC,UAAsB,IAAK;MAC1BsB,QAAQ,CAACtB,UAAU,CAACJ,KAAK,CAAC;IAC5B,CACF,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE+B,uBAAuBA,CAACL,QAAwC,EAAE;IAChE,OAAO5C,YAAY,CAAC6C,WAAW,CAC7BxD,kBAAkB,EACjB8B,WAAwB,IAAK;MAC5ByB,QAAQ,CAACzB,WAAW,CAACD,KAAK,CAAC;IAC7B,CACF,CAAC;EACH;;EAEA;EACQ6B,2BAA2BA,CACjCG,MAAiC,EACd;IACnB,OAAOA,MAAM,CAACC,GAAG,CACdrC,KAA8B,IAC7B3B,eAAe,CAAC2B,KAAK,CAACI,KAAK,CAC/B,CAAC;EACH;;EAEA;EACQU,2BAA2BA,CACjCwB,QAAyD,EACxB;IACjC,QAAQA,QAAQ,CAAC/B,IAAI;MACnB,KAAK,SAAS;QACZ,OAAO;UACLA,IAAI,EAAE,SAAS;UACfH,KAAK,EAAEkC,QAAQ,CAAClC,KAAK,CAACA;QACxB,CAAC;MACH,KAAK,SAAS;QACZ,OAAO;UACLG,IAAI,EAAE,SAAS;UACfH,KAAK,EAAE,IAAI,CAACmC,wBAAwB,CAACD,QAAQ,CAAClC,KAAK;QACrD,CAAC;IACL;EACF;;EAEA;EACQwB,wCAAwCA,CAC9CU,QAAsE,EACxB;IAC9C,QAAQA,QAAQ,CAAC/B,IAAI;MACnB,KAAK,SAAS;QACZ,MAAMiC,6BAA4D,GAChEF,QAAQ,CAAClC,KAAK;QAChB,MAAMqC,gBAAkC,GACtCD,6BAA6B,CAACpC,KAAK,CAACsC,QAAQ;QAE9C,OAAO;UACLnC,IAAI,EAAE,SAAS;UACfH,KAAK,EAAE;YACLsC,QAAQ,EAAED,gBAAgB,CAACrC,KAAK;YAChCuC,SAAS,EAAEH,6BAA6B,CAACpC,KAAK,CAACuC;UACjD;QACF,CAAC;MACH,KAAK,SAAS;QACZ,OAAO;UACLpC,IAAI,EAAE,SAAS;UACfH,KAAK,EAAE,IAAI,CAACmC,wBAAwB,CAACD,QAAQ,CAAClC,KAAK;QACrD,CAAC;IACL;EACF;;EAEA;EACQmC,wBAAwBA,CAC9BK,aAAoC,EACrB;IACf,QAAQA,aAAa,CAACrC,IAAI;MACxB,KAAK,YAAY;MACjB,KAAK,UAAU;QACb,OAAOqC,aAAa;MACtB,KAAK,QAAQ;QACX,OAAO;UACLrC,IAAI,EAAE,QAAQ;UACdH,KAAK,EAAE,IAAI,CAAC6B,2BAA2B,CAACW,aAAa,CAACxC,KAAK;QAC7D,CAAC;IACL;EACF;;EAEA;EACQqB,UAAUA,CAACoB,GAAa,EAAmB;IACjD,OACE,UAAU,IAAIA,GAAG,IACjB,OAAOA,GAAG,CAACnB,QAAQ,IAAI,QAAQ,IAC/B,WAAW,IAAImB,GAAG,IAClB,OAAOA,GAAG,CAAClB,SAAS,IAAI,QAAQ;EAEpC;AACF"}
1
+ {"version":3,"names":["NativeModules","Platform","NativeEventEmitter","HyperTrackError","EVENT_ERRORS","EVENT_IS_AVAILABLE","EVENT_IS_TRACKING","EVENT_LOCATE","EVENT_LOCATION","LINKING_ERROR","select","ios","default","HyperTrackSdk","HyperTrackReactNativePlugin","Proxy","get","Error","EventEmitter","HyperTrack","addGeotag","_len","arguments","length","args","Array","_key","data","expectedLocation","undefined","then","locationResponse","deserializeLocationResponse","isLocation","type","value","latitude","longitude","deserializeLocationWithDeviationResponse","getDeviceId","deviceId","getErrors","errors","deserializeHyperTrackErrors","getIsAvailable","isAvailable","getIsTracking","isTracking","getLocation","getMetadata","metadata","deserializeMetadata","getName","name","deserializeName","locate","callback","_this$locateSubscript","locateSubscription","remove","addListener","location","deserializeLocateResponse","setIsAvailable","setIsTracking","setMetadata","setName","subscribeToErrors","listener","rawErrors","subscribeToIsAvailable","subscribeToIsTracking","subscribeToLocation","res","map","error","Object","keys","find","key","response","deserializeLocationError","locationError","locationWithDeviationInternal","locationInternal","deviation","JSON","stringify","obj","_defineProperty"],"sources":["HyperTrack.ts"],"sourcesContent":["import {\n NativeModules,\n Platform,\n NativeEventEmitter,\n EmitterSubscription,\n} from 'react-native';\nimport { HyperTrackError } from './data_types/HyperTrackError';\nimport type { IsAvailable } from './data_types/internal/IsAvailable';\nimport type { IsTracking } from './data_types/internal/IsTracking';\nimport type { Location } from './data_types/Location';\nimport type { LocationError } from './data_types/LocationError';\nimport type { DeviceId } from './data_types/internal/DeviceId';\nimport type { GeotagData } from './data_types/internal/GeotagData';\nimport type { Name } from './data_types/internal/Name';\nimport type { HyperTrackErrorInternal } from './data_types/internal/HyperTrackErrorInternal';\nimport type { LocationWithDeviation } from './data_types/LocationWithDeviation';\nimport type { LocationErrorInternal } from './data_types/internal/LocationErrorInternal';\nimport type { Result } from './data_types/Result';\nimport type { LocationInternal } from './data_types/internal/LocationInternal';\nimport type { LocationWithDeviationInternal } from './data_types/internal/LocationWithDeviationInternal';\nimport type { Metadata } from './data_types/internal/Metadata';\n\nconst EVENT_ERRORS = 'errors';\nconst EVENT_IS_AVAILABLE = 'isAvailable';\nconst EVENT_IS_TRACKING = 'isTracking';\nconst EVENT_LOCATE = 'locate';\nconst EVENT_LOCATION = 'location';\n\nconst LINKING_ERROR =\n `The package 'hypertrack-sdk-react-native' doesn't seem to be linked. Make sure: \\n\\n` +\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\n '- You rebuilt the app after installing the package\\n' +\n '- You are not using Expo managed workflow\\n';\n\nconst HyperTrackSdk = NativeModules.HyperTrackReactNativePlugin\n ? NativeModules.HyperTrackReactNativePlugin\n : new Proxy(\n {},\n {\n get() {\n throw new Error(LINKING_ERROR);\n },\n }\n );\n\nconst EventEmitter = new NativeEventEmitter(HyperTrackSdk);\n\nexport default class HyperTrack {\n private static locateSubscription: EmitterSubscription | undefined;\n\n /**\n * Adds a new geotag\n *\n * @param {Object} data - Geotad data JSON\n * @returns current location if success or LocationError if failure\n */\n static async addGeotag(\n data: Object\n ): Promise<Result<Location, LocationError>>;\n\n /**\n * Adds a new geotag with expected location\n *\n * @param {Object} data - Geotad data JSON\n * @param {Location} expectedLocation - Expected location\n * @returns location with deviation if success or LocationError if failure\n */\n static async addGeotag(\n data: Object,\n expectedLocation: Location\n ): Promise<Result<LocationWithDeviation, LocationError>>;\n\n static async addGeotag(\n ...args: any[]\n ): Promise<Result<Location | LocationWithDeviation, LocationError>> {\n if (args.length === 1 && typeof args[0] === 'object') {\n return HyperTrackSdk.addGeotag({\n data: args[0],\n expectedLocation: undefined,\n } as GeotagData).then(\n (locationResponse: Result<LocationInternal, LocationErrorInternal>) => {\n return this.deserializeLocationResponse(locationResponse);\n }\n );\n } else if (\n args.length === 2 &&\n typeof args[0] === 'object' &&\n HyperTrack.isLocation(args[1])\n ) {\n let expectedLocation = args[1] as Location;\n return HyperTrackSdk.addGeotag({\n data: args[0],\n expectedLocation: {\n type: 'location',\n value: {\n latitude: expectedLocation.latitude,\n longitude: expectedLocation.longitude,\n },\n } as LocationInternal,\n } as GeotagData).then(\n (\n locationResponse: Result<\n LocationWithDeviationInternal,\n LocationErrorInternal\n >\n ) => {\n return this.deserializeLocationWithDeviationResponse(\n locationResponse\n );\n }\n );\n } else {\n throw new Error('Invalid arguments');\n }\n }\n\n /**\n * Returns a string that is used to uniquely identify the device\n *\n * @returns {string} Device ID\n */\n static async getDeviceId(): Promise<string> {\n return HyperTrackSdk.getDeviceId().then(\n (deviceId: DeviceId) => deviceId.value\n );\n }\n\n /**\n * Returns a list of errors that blocks SDK from tracking\n *\n * @returns {HyperTrackError[]} List of errors\n */\n static async getErrors(): Promise<HyperTrackError[]> {\n return HyperTrackSdk.getErrors().then(\n (errors: HyperTrackErrorInternal[]) => {\n return this.deserializeHyperTrackErrors(errors);\n }\n );\n }\n\n /**\n * Reflects availability of the device for the Nearby search\n *\n * @returns true when is available or false when unavailable\n */\n static async getIsAvailable(): Promise<boolean> {\n return HyperTrackSdk.getIsAvailable().then(\n (isAvailable: IsAvailable) => isAvailable.value\n );\n }\n\n /**\n * Reflects the tracking intent for the device\n *\n * @returns {boolean} Whether the user's movement data is getting tracked or not.\n */\n static async getIsTracking(): Promise<boolean> {\n return HyperTrackSdk.getIsTracking().then(\n (isTracking: IsTracking) => isTracking.value\n );\n }\n\n /**\n * Reflects the current location of the user or an outage reason\n */\n static async getLocation(): Promise<Result<Location, LocationError>> {\n return HyperTrackSdk.getLocation().then(\n (locationResponse: Result<LocationInternal, LocationErrorInternal>) => {\n return this.deserializeLocationResponse(locationResponse);\n }\n );\n }\n\n /**\n * Gets the metadata that is set for the device\n *\n * @returns {Object} Metadata JSON\n */\n static async getMetadata(): Promise<Object> {\n return HyperTrackSdk.getMetadata().then((metadata: Metadata) => {\n return this.deserializeMetadata(metadata);\n });\n }\n\n /**\n * Gets the name that is set for the device\n *\n * @returns {string} Device name\n */\n static async getName(): Promise<string> {\n return HyperTrackSdk.getName().then((name: Name) => {\n return this.deserializeName(name);\n });\n }\n\n /**\n * Requests one-time location update and returns the location once it is available, or error.\n *\n * Only one locate subscription can be active at a time. If you re-subscribe, the old EmitterSubscription\n * will be automaticaly removed.\n *\n * This method will start location tracking if called, and will stop it when the location is received or\n * the subscription is cancelled. If any other tracking intent is present (e.g. isAvailable is set to `true`),\n * the tracking will not be stopped.\n *\n * @param callback\n * @returns EmitterSubscription\n * @example ```js\n * const subscription = HyperTrack.locate(location => {\n * ...\n * })\n *\n * // to unsubscribe\n * subscription.remove()\n * ```\n */\n static locate(\n callback: (location: Result<Location, HyperTrackError[]>) => void\n ) {\n this.locateSubscription?.remove();\n this.locateSubscription = EventEmitter.addListener(\n EVENT_LOCATE,\n (location: Result<LocationInternal, HyperTrackErrorInternal[]>) => {\n callback(this.deserializeLocateResponse(location));\n }\n );\n HyperTrackSdk.locate();\n return this.locateSubscription;\n }\n\n /**\n * Sets the availability of the device for the Nearby search\n *\n * @param availability true when is available or false when unavailable\n */\n static async setIsAvailable(isAvailable: boolean) {\n HyperTrackSdk.setIsAvailable({\n type: 'isAvailable',\n value: isAvailable,\n } as IsAvailable);\n }\n\n /**\n * Sets the tracking intent for the device\n *\n * @param {boolean} isTracking\n */\n static async setIsTracking(isTracking: boolean): Promise<void> {\n HyperTrackSdk.setIsTracking({\n type: 'isTracking',\n value: isTracking,\n } as IsTracking);\n }\n\n /**\n * Sets the metadata for the device\n *\n * @param {Object} data - Metadata JSON\n */\n static async setMetadata(data: Object) {\n HyperTrackSdk.setMetadata({\n type: 'metadata',\n value: data,\n });\n }\n\n /**\n * Sets the name for the device\n *\n * @param {string} name\n */\n static async setName(name: string) {\n HyperTrackSdk.setName({\n type: 'name',\n value: name,\n } as Name);\n }\n\n /**\n * Subscribe to tracking errors\n *\n * @param listener\n * @returns EmitterSubscription\n * @example\n * ```js\n * const subscription = HyperTrack.subscribeToErrors(errors => {\n * errors.forEach(error => {\n * // ... error\n * })\n * })\n *\n * // later, to stop listening\n * subscription.remove()\n * ```\n */\n static subscribeToErrors(\n listener: (errors: HyperTrackError[]) => void\n ): EmitterSubscription {\n return EventEmitter.addListener(\n EVENT_ERRORS,\n (rawErrors: HyperTrackErrorInternal[]) => {\n listener(this.deserializeHyperTrackErrors(rawErrors));\n }\n );\n }\n\n /**\n * Subscribe to availability changes\n *\n * @param listener\n * @returns EmitterSubscription\n * @example\n * ```js\n * const subscription = HyperTrack.subscribeToIsAvailable(isAvailable => {\n * if (isAvailable) {\n * // ... ready to go\n * }\n * })\n *\n * // later, to stop listening\n * subscription.remove()\n * ```\n */\n static subscribeToIsAvailable(\n listener: (isAvailable: boolean) => void\n ): EmitterSubscription {\n return EventEmitter.addListener(\n EVENT_IS_AVAILABLE,\n (isAvailable: IsAvailable) => {\n listener(isAvailable.value);\n }\n );\n }\n\n /**\n * Subscribe to tracking intent changes\n *\n * @param listener\n * @returns EmitterSubscription\n * @example\n * ```js\n * const subscription = HyperTrack.subscribeToIsTracking(isTracking => {\n * if (isTracking) {\n * // ... ready to go\n * }\n * })\n *\n * // later, to stop listening\n * subscription.remove()\n * ```\n */\n static subscribeToIsTracking(\n listener: (isTracking: boolean) => void\n ): EmitterSubscription {\n return EventEmitter.addListener(\n EVENT_IS_TRACKING,\n (isTracking: IsTracking) => {\n listener(isTracking.value);\n }\n );\n }\n\n /**\n * Subscribe to location changes\n *\n * @param listener\n * @returns EmitterSubscription\n * @example\n * ```js\n * const subscription = HyperTrack.subscribeToLocation(location => {\n * ...\n * })\n *\n * // later, to stop listening\n * subscription.remove()\n * ```\n */\n static subscribeToLocation(\n listener: (location: Result<Location, LocationError>) => void\n ) {\n return EventEmitter.addListener(\n EVENT_LOCATION,\n (location: Result<LocationInternal, LocationErrorInternal>) => {\n listener(this.deserializeLocationResponse(location));\n }\n );\n }\n\n /** @ignore */\n private static deserializeHyperTrackErrors(\n errors: HyperTrackErrorInternal[]\n ): HyperTrackError[] {\n let res = errors.map((error: HyperTrackErrorInternal) => {\n if (error.type != 'error') {\n throw new Error('Invalid error type');\n }\n return Object.keys(HyperTrackError).find(\n (key) =>\n HyperTrackError[key as keyof typeof HyperTrackError] === error.value\n ) as HyperTrackError;\n });\n return res;\n }\n\n /** @ignore */\n private static deserializeLocateResponse(\n response: Result<LocationInternal, HyperTrackErrorInternal[]>\n ): Result<Location, HyperTrackError[]> {\n switch (response.type) {\n case 'success':\n return {\n type: 'success',\n value: response.value.value,\n };\n case 'failure':\n return {\n type: 'failure',\n value: this.deserializeHyperTrackErrors(response.value),\n };\n }\n }\n\n /** @ignore */\n private static deserializeLocationError(\n locationError: LocationErrorInternal\n ): LocationError {\n switch (locationError.type) {\n case 'notRunning':\n case 'starting':\n return locationError;\n case 'errors':\n return {\n type: 'errors',\n value: this.deserializeHyperTrackErrors(locationError.value),\n };\n }\n }\n\n /** @ignore */\n private static deserializeLocationResponse(\n response: Result<LocationInternal, LocationErrorInternal>\n ): Result<Location, LocationError> {\n switch (response.type) {\n case 'success':\n return {\n type: 'success',\n value: response.value.value,\n };\n case 'failure':\n return {\n type: 'failure',\n value: this.deserializeLocationError(response.value),\n };\n }\n }\n\n /** @ignore */\n private static deserializeLocationWithDeviationResponse(\n response: Result<LocationWithDeviationInternal, LocationErrorInternal>\n ): Result<LocationWithDeviation, LocationError> {\n switch (response.type) {\n case 'success':\n const locationWithDeviationInternal: LocationWithDeviationInternal =\n response.value;\n const locationInternal: LocationInternal =\n locationWithDeviationInternal.value.location;\n\n return {\n type: 'success',\n value: {\n location: locationInternal.value,\n deviation: locationWithDeviationInternal.value.deviation,\n } as LocationWithDeviation,\n };\n case 'failure':\n return {\n type: 'failure',\n value: this.deserializeLocationError(response.value),\n };\n }\n }\n\n /** @ignore */\n private static deserializeMetadata(metadata: Metadata): Object {\n if (metadata.type != 'metadata') {\n throw new Error(`Invalid metadata: ${JSON.stringify(metadata)}`);\n }\n return metadata.value;\n }\n\n /** @ignore */\n private static deserializeName(name: Name): string {\n if (name.type != 'name') {\n throw new Error(`Invalid name: ${JSON.stringify(name)}`);\n }\n return name.value;\n }\n\n /** @ignore */\n private static isLocation(obj: Location): obj is Location {\n return (\n 'latitude' in obj &&\n typeof obj.latitude == 'number' &&\n 'longitude' in obj &&\n typeof obj.longitude == 'number'\n );\n }\n}\n"],"mappings":"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"}