@wayq/beekon-rn 0.0.1 → 0.0.3

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 (78) hide show
  1. package/BeekonRn.podspec +3 -3
  2. package/README.md +24 -30
  3. package/android/build.gradle +3 -3
  4. package/android/src/main/java/in/wayq/beekonrn/BeekonRnModule.kt +182 -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 +15 -25
  8. package/ios/BeekonRn.swift +96 -116
  9. package/ios/Frameworks/BeekonKit.xcframework/_CodeSignature/CodeDirectory +0 -0
  10. package/ios/Frameworks/BeekonKit.xcframework/_CodeSignature/CodeResources +105 -42
  11. package/ios/Frameworks/BeekonKit.xcframework/_CodeSignature/CodeSignature +0 -0
  12. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64/BeekonKit.framework/BeekonKit +0 -0
  13. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64/BeekonKit.framework/Info.plist +0 -0
  14. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios.abi.json +2427 -0
  15. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  16. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios.swiftinterface +85 -0
  17. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64/BeekonKit.framework/PrivacyInfo.xcprivacy +1 -1
  18. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64/BeekonKit.framework/_CodeSignature/CodeResources +36 -3
  19. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/BeekonKit +0 -0
  20. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/Info.plist +0 -0
  21. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios-simulator.abi.json +2427 -0
  22. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  23. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios-simulator.swiftinterface +85 -0
  24. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/x86_64-apple-ios-simulator.abi.json +2427 -0
  25. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  26. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +85 -0
  27. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/PrivacyInfo.xcprivacy +1 -1
  28. package/ios/Frameworks/BeekonKit.xcframework/ios-arm64_x86_64-simulator/BeekonKit.framework/_CodeSignature/CodeResources +69 -3
  29. package/lib/module/NativeBeekonRn.js +2 -2
  30. package/lib/module/NativeBeekonRn.js.map +1 -1
  31. package/lib/module/beekon.js +50 -53
  32. package/lib/module/beekon.js.map +1 -1
  33. package/lib/module/index.js +1 -0
  34. package/lib/module/index.js.map +1 -1
  35. package/lib/module/internal/mappers.js +49 -21
  36. package/lib/module/internal/mappers.js.map +1 -1
  37. package/lib/module/types/config.js +0 -2
  38. package/lib/module/types/error.js +19 -0
  39. package/lib/module/types/error.js.map +1 -0
  40. package/lib/module/types/location.js +2 -0
  41. package/lib/module/types/{position.js.map → location.js.map} +1 -1
  42. package/lib/typescript/src/NativeBeekonRn.d.ts +22 -26
  43. package/lib/typescript/src/NativeBeekonRn.d.ts.map +1 -1
  44. package/lib/typescript/src/beekon.d.ts +29 -42
  45. package/lib/typescript/src/beekon.d.ts.map +1 -1
  46. package/lib/typescript/src/index.d.ts +3 -3
  47. package/lib/typescript/src/index.d.ts.map +1 -1
  48. package/lib/typescript/src/internal/mappers.d.ts +10 -3
  49. package/lib/typescript/src/internal/mappers.d.ts.map +1 -1
  50. package/lib/typescript/src/types/config.d.ts +23 -31
  51. package/lib/typescript/src/types/config.d.ts.map +1 -1
  52. package/lib/typescript/src/types/error.d.ts +14 -0
  53. package/lib/typescript/src/types/error.d.ts.map +1 -0
  54. package/lib/typescript/src/types/location.d.ts +26 -0
  55. package/lib/typescript/src/types/location.d.ts.map +1 -0
  56. package/lib/typescript/src/types/state.d.ts +9 -9
  57. package/lib/typescript/src/types/state.d.ts.map +1 -1
  58. package/package.json +2 -2
  59. package/scripts/fetch-beekonkit.sh +5 -2
  60. package/src/NativeBeekonRn.ts +22 -26
  61. package/src/beekon.ts +58 -56
  62. package/src/index.tsx +3 -3
  63. package/src/internal/mappers.ts +52 -18
  64. package/src/types/config.ts +23 -32
  65. package/src/types/error.ts +22 -0
  66. package/src/types/location.ts +25 -0
  67. package/src/types/state.ts +13 -7
  68. package/android/src/main/java/com/wayq/beekonrn/BeekonRnModule.kt +0 -233
  69. package/ios/Frameworks/BeekonKit.xcframework/_CodeSignature/CodeRequirements-1 +0 -0
  70. package/lib/module/types/position.js +0 -2
  71. package/lib/module/types/preset.js +0 -2
  72. package/lib/module/types/preset.js.map +0 -1
  73. package/lib/typescript/src/types/position.d.ts +0 -24
  74. package/lib/typescript/src/types/position.d.ts.map +0 -1
  75. package/lib/typescript/src/types/preset.d.ts +0 -12
  76. package/lib/typescript/src/types/preset.d.ts.map +0 -1
  77. package/src/types/position.ts +0 -23
  78. package/src/types/preset.ts +0 -11
@@ -7,78 +7,74 @@ import BeekonKit
7
7
  /// (resolver/rejecter) and dictionaries so they can be invoked from `.mm`.
8
8
  ///
9
9
  /// Event delivery: `BeekonRn.mm` constructs this with two closures that call
10
- /// the codegen-generated `emitOnState:` / `emitOnPosition:` ObjC methods on
11
- /// the spec; the closures are invoked from the per-stream `Task`s started
12
- /// during `initialize`.
13
- @objc public final class BeekonRnImpl: NSObject {
10
+ /// the codegen-generated `emitOnState:` / `emitOnLocation:` ObjC methods on
11
+ /// the spec; the closures are invoked from per-stream `Task`s started during
12
+ /// init.
13
+ // `@unchecked Sendable` is correct here: `onStateCb`/`onLocationCb` are
14
+ // immutable closures, and `stateTask`/`locationsTask` are mutated only from
15
+ // init/stopCollectors which run sequentially. NSObject can't be auto-Sendable
16
+ // and `@objc` rules out `actor`, so this is the path.
17
+ @objc public final class BeekonRnImpl: NSObject, @unchecked Sendable {
14
18
 
15
19
  private let onStateCb: (NSDictionary) -> Void
16
- private let onPositionCb: (NSDictionary) -> Void
20
+ private let onLocationCb: (NSDictionary) -> Void
17
21
 
18
22
  private var stateTask: Task<Void, Never>?
19
- private var positionsTask: Task<Void, Never>?
23
+ private var locationsTask: Task<Void, Never>?
20
24
 
21
25
  @objc public init(
22
26
  onState: @escaping (NSDictionary) -> Void,
23
- onPosition: @escaping (NSDictionary) -> Void
27
+ onLocation: @escaping (NSDictionary) -> Void
24
28
  ) {
25
29
  self.onStateCb = onState
26
- self.onPositionCb = onPosition
30
+ self.onLocationCb = onLocation
27
31
  super.init()
28
- }
29
-
30
- // MARK: - Lifecycle
31
-
32
- @objc public func initializeWithResolver(
33
- _ resolve: @escaping (Any?) -> Void,
34
- rejecter reject: @escaping (String?, String?, Error?) -> Void
35
- ) {
36
- Task { [weak self] in
32
+ self.stateTask = Task { [weak self] in
37
33
  guard let self = self else { return }
38
- do {
39
- try await Beekon.shared.initialize()
40
- // Idempotent: cancel any prior collectors before starting new ones.
41
- self.stateTask?.cancel()
42
- self.positionsTask?.cancel()
43
- self.stateTask = Task { [weak self] in
44
- guard let self = self else { return }
45
- for await state in await Beekon.shared.state {
46
- self.onStateCb(self.stateToWire(state))
47
- }
48
- }
49
- self.positionsTask = Task { [weak self] in
50
- guard let self = self else { return }
51
- for await pos in await Beekon.shared.positions {
52
- self.onPositionCb(self.positionToWire(pos))
53
- }
54
- }
55
- resolve(nil)
56
- } catch {
57
- reject(self.errorCode(error), error.localizedDescription, error)
34
+ for await state in await Beekon.shared.state {
35
+ self.onStateCb(self.stateToWire(state))
36
+ }
37
+ }
38
+ self.locationsTask = Task { [weak self] in
39
+ guard let self = self else { return }
40
+ for await loc in await Beekon.shared.locations {
41
+ self.onLocationCb(self.locationToWire(loc))
58
42
  }
59
43
  }
60
44
  }
61
45
 
46
+ @objc public func invalidate() {
47
+ stateTask?.cancel()
48
+ locationsTask?.cancel()
49
+ stateTask = nil
50
+ locationsTask = nil
51
+ }
52
+
53
+ // MARK: - Lifecycle
54
+
62
55
  @objc public func configure(
63
56
  _ config: NSDictionary,
64
- resolver resolve: @escaping RCTPromiseResolveBlock,
65
- rejecter reject: @escaping RCTPromiseRejectBlock
57
+ resolver resolve: @escaping @Sendable (Any?) -> Void,
58
+ rejecter reject: @escaping @Sendable (String?, String?, Error?) -> Void
66
59
  ) {
67
- Task { [weak self] in
68
- guard let self = self else { return }
69
- do {
70
- let cfg = try self.wireToConfig(config)
71
- await Beekon.shared.configure(cfg)
72
- resolve(nil)
73
- } catch {
74
- reject(self.errorCode(error), error.localizedDescription, error)
75
- }
60
+ // Convert the non-Sendable NSDictionary to a Sendable BeekonConfig before
61
+ // crossing into the Task closure.
62
+ let cfg: BeekonConfig
63
+ do {
64
+ cfg = try wireToConfig(config)
65
+ } catch {
66
+ reject(errorCode(error), error.localizedDescription, error)
67
+ return
68
+ }
69
+ Task {
70
+ await Beekon.shared.configure(cfg)
71
+ resolve(nil)
76
72
  }
77
73
  }
78
74
 
79
75
  @objc public func startWithResolver(
80
- _ resolve: @escaping (Any?) -> Void,
81
- rejecter reject: @escaping (String?, String?, Error?) -> Void
76
+ _ resolve: @escaping @Sendable (Any?) -> Void,
77
+ rejecter reject: @escaping @Sendable (String?, String?, Error?) -> Void
82
78
  ) {
83
79
  Task { [weak self] in
84
80
  guard let self = self else { return }
@@ -92,42 +88,31 @@ import BeekonKit
92
88
  }
93
89
 
94
90
  @objc public func stopWithResolver(
95
- _ resolve: @escaping (Any?) -> Void,
96
- rejecter reject: @escaping (String?, String?, Error?) -> Void
91
+ _ resolve: @escaping @Sendable (Any?) -> Void,
92
+ rejecter reject: @escaping @Sendable (String?, String?, Error?) -> Void
97
93
  ) {
98
- Task { [weak self] in
99
- guard let self = self else { return }
94
+ Task {
100
95
  await Beekon.shared.stop()
101
96
  resolve(nil)
102
97
  }
103
98
  }
104
99
 
105
- @objc public func shutdownWithResolver(
106
- _ resolve: @escaping (Any?) -> Void,
107
- rejecter reject: @escaping (String?, String?, Error?) -> Void
108
- ) {
109
- Task { [weak self] in
110
- guard let self = self else { return }
111
- self.stateTask?.cancel()
112
- self.positionsTask?.cancel()
113
- await Beekon.shared.shutdown()
114
- resolve(nil)
115
- }
116
- }
117
-
118
100
  @objc public func historyFromMs(
119
101
  _ fromMs: Double,
120
102
  toMs: Double,
121
- resolver resolve: @escaping RCTPromiseResolveBlock,
122
- rejecter reject: @escaping RCTPromiseRejectBlock
103
+ resolver resolve: @escaping @Sendable (Any?) -> Void,
104
+ rejecter reject: @escaping @Sendable (String?, String?, Error?) -> Void
123
105
  ) {
124
106
  Task { [weak self] in
125
107
  guard let self = self else { return }
126
108
  do {
127
109
  let from = Date(timeIntervalSince1970: fromMs / 1000.0)
128
110
  let to = Date(timeIntervalSince1970: toMs / 1000.0)
129
- let positions = try await Beekon.shared.history(from: from, to: to)
130
- let arr = positions.map { self.positionToWire($0) }
111
+ // Function-form overload of `locations` the property is the live
112
+ // stream, the function is the historical fetch. Swift resolves on
113
+ // signature.
114
+ let locations = try await Beekon.shared.locations(from: from, to: to)
115
+ let arr = locations.map { self.locationToWire($0) }
131
116
  resolve(arr)
132
117
  } catch {
133
118
  reject(self.errorCode(error), error.localizedDescription, error)
@@ -138,58 +123,55 @@ import BeekonKit
138
123
  // MARK: - Mappers
139
124
 
140
125
  private func wireToConfig(_ d: NSDictionary) throws -> BeekonConfig {
141
- let presetStr = (d["preset"] as? String) ?? "balanced"
142
- let preset: Preset
143
- switch presetStr {
144
- case "saver": preset = .saver
145
- case "precision": preset = .precision
146
- default: preset = .balanced
147
- }
148
-
149
- let distanceFilterMeters = d["distanceFilterMeters"] as? Double
150
- // JS sends millis; iOS BeekonConfig wants seconds. Normalize here.
151
- let intervalSeconds: Double?
152
- if let ms = d["intervalMillis"] as? Double {
153
- intervalSeconds = ms / 1000.0
154
- } else {
155
- intervalSeconds = nil
126
+ // Wire defaults are applied by the TS facade — both fields are required at
127
+ // the wire level, so missing keys are a programmer error.
128
+ guard
129
+ let intervalSeconds = (d["intervalSeconds"] as? NSNumber)?.doubleValue,
130
+ let distanceMeters = (d["distanceMeters"] as? NSNumber)?.doubleValue
131
+ else {
132
+ throw NSError(
133
+ domain: "BeekonRn",
134
+ code: -1,
135
+ userInfo: [NSLocalizedDescriptionKey: "intervalSeconds/distanceMeters missing"]
136
+ )
156
137
  }
157
- let licenseKey = d["licenseKey"] as? String
158
-
159
138
  return BeekonConfig(
160
- preset: preset,
161
- distanceFilterMeters: distanceFilterMeters,
162
139
  intervalSeconds: intervalSeconds,
163
- licenseKey: licenseKey
140
+ distanceMeters: distanceMeters
164
141
  )
142
+ // androidNotification ignored on iOS.
165
143
  }
166
144
 
167
- private func positionToWire(_ p: Position) -> NSDictionary {
168
- return [
169
- "lat": p.lat,
170
- "lng": p.lng,
171
- "accuracy": p.accuracy,
172
- "speed": p.speed,
173
- "bearing": p.bearing,
174
- "altitude": p.altitude,
175
- "timestampMs": p.timestamp.timeIntervalSince1970 * 1000.0,
176
- ]
145
+ private func locationToWire(_ loc: Location) -> NSDictionary {
146
+ // NSDictionary literals can't carry `nil` values, so optionals collapse
147
+ // to `NSNull` — the JS Codegen layer translates that back to `null`.
148
+ let d = NSMutableDictionary()
149
+ d["lat"] = loc.lat
150
+ d["lng"] = loc.lng
151
+ d["timestampMs"] = loc.timestamp.timeIntervalSince1970 * 1000.0
152
+ d["accuracy"] = loc.accuracy.map { $0 as Any } ?? NSNull()
153
+ d["speed"] = loc.speed.map { $0 as Any } ?? NSNull()
154
+ d["bearing"] = loc.bearing.map { $0 as Any } ?? NSNull()
155
+ d["altitude"] = loc.altitude.map { $0 as Any } ?? NSNull()
156
+ return d
177
157
  }
178
158
 
179
159
  private func stateToWire(_ s: BeekonState) -> NSDictionary {
180
160
  switch s {
181
- case .idle: return ["type": "idle"]
182
- case .starting: return ["type": "starting"]
183
- case .tracking: return ["type": "tracking"]
184
- case .stopped: return ["type": "stopped"]
185
- case .paused(let reason):
186
- let r: String
187
- switch reason {
188
- case .permissionRevoked: r = "permissionRevoked"
189
- case .locationDisabled: r = "locationDisabled"
190
- case .unknown: r = "unknown"
191
- }
192
- return ["type": "paused", "pauseReason": r]
161
+ case .idle:
162
+ return ["type": "idle"]
163
+ case .tracking:
164
+ return ["type": "tracking"]
165
+ case .stopped(let reason):
166
+ return ["type": "stopped", "stopReason": stopReasonToWire(reason)]
167
+ }
168
+ }
169
+
170
+ private func stopReasonToWire(_ r: StopReason) -> String {
171
+ switch r {
172
+ case .user: return "user"
173
+ case .permissionDenied: return "permissionDenied"
174
+ case .locationServicesDisabled: return "locationServicesDisabled"
193
175
  }
194
176
  }
195
177
 
@@ -201,9 +183,7 @@ import BeekonKit
201
183
  switch be {
202
184
  case .permissionDenied: return "PERMISSION_DENIED"
203
185
  case .locationServicesDisabled: return "LOCATION_SERVICES_DISABLED"
204
- case .notConfigured: return "NOT_CONFIGURED"
205
- case .notInitialised: return "NOT_INITIALISED"
206
- case .internalError: return "INTERNAL_ERROR"
186
+ case .storageFailure: return "STORAGE_FAILURE"
207
187
  }
208
188
  }
209
189
  return "INTERNAL_ERROR"
@@ -10,45 +10,77 @@
10
10
  </data>
11
11
  <key>ios-arm64/BeekonKit.framework/BeekonKit</key>
12
12
  <data>
13
- SyrIBjwS5o/8csiCfKIXmBtvzio=
13
+ +naAIv6MaKzUx2+ey3MVX1DIjx8=
14
14
  </data>
15
15
  <key>ios-arm64/BeekonKit.framework/Info.plist</key>
16
16
  <data>
17
- 3d/2OPEwv55L8dW+0woT9NRCNi0=
17
+ J2Q8IsOOK4KAiFaP40/M4N6vym0=
18
+ </data>
19
+ <key>ios-arm64/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios.abi.json</key>
20
+ <data>
21
+ g3XuCRuM2juW8XYn4Y2Xe208MbM=
22
+ </data>
23
+ <key>ios-arm64/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios.swiftdoc</key>
24
+ <data>
25
+ GYBAar6iPnb1XJGupWqUhKVBjKU=
26
+ </data>
27
+ <key>ios-arm64/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios.swiftinterface</key>
28
+ <data>
29
+ v4db5W67RIw4bayliPlZv35/sFU=
18
30
  </data>
19
31
  <key>ios-arm64/BeekonKit.framework/PrivacyInfo.xcprivacy</key>
20
32
  <data>
21
- +Hzj9e+o3dYoDboCDA7ofM2a0kc=
33
+ 9ZHPJ6MUYP0Ios5LKP+bfuWVxJk=
22
34
  </data>
23
35
  <key>ios-arm64/BeekonKit.framework/_CodeSignature/CodeResources</key>
24
36
  <data>
25
- iZuijJG0soEo1jfi0V3NeqZXX4s=
37
+ qVAi0E8MUwJOhDlgAXFRDX/3vgQ=
26
38
  </data>
27
39
  <key>ios-arm64_x86_64-simulator/BeekonKit.framework/BeekonKit</key>
28
40
  <data>
29
- cEmeEm6qJLQueaJja0nxBKt+nEA=
41
+ FjUHhPklgfj60f3nqZyzCz/MPWQ=
30
42
  </data>
31
43
  <key>ios-arm64_x86_64-simulator/BeekonKit.framework/Info.plist</key>
32
44
  <data>
33
- w9rsPHfS6nhyFAFD48jpWHGzYuc=
45
+ uIBZEl29bIa6BD82AJqNnqxItQ8=
46
+ </data>
47
+ <key>ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
48
+ <data>
49
+ VX3G5xWaHufjuctExyD3KxnvPKo=
50
+ </data>
51
+ <key>ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
52
+ <data>
53
+ N69rpbNFqxF9nC3LxN0wVnxXtGI=
54
+ </data>
55
+ <key>ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios-simulator.swiftinterface</key>
56
+ <data>
57
+ OwWAJveN4oSVFdX/aWzFdGsMh5s=
58
+ </data>
59
+ <key>ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
60
+ <data>
61
+ VX3G5xWaHufjuctExyD3KxnvPKo=
62
+ </data>
63
+ <key>ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
64
+ <data>
65
+ jNcXtOMMcpL2++xWcYLei9tqS5w=
66
+ </data>
67
+ <key>ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/x86_64-apple-ios-simulator.swiftinterface</key>
68
+ <data>
69
+ aX58esTNE/RvDF6suImnsEDQMTM=
34
70
  </data>
35
71
  <key>ios-arm64_x86_64-simulator/BeekonKit.framework/PrivacyInfo.xcprivacy</key>
36
72
  <data>
37
- +Hzj9e+o3dYoDboCDA7ofM2a0kc=
73
+ 9ZHPJ6MUYP0Ios5LKP+bfuWVxJk=
38
74
  </data>
39
75
  <key>ios-arm64_x86_64-simulator/BeekonKit.framework/_CodeSignature/CodeResources</key>
40
76
  <data>
41
- hbmbyZ85ag/7tawlrdWmUyumzVo=
77
+ EBmJZa5BQFnAnSPP6dz5anbVsTo=
42
78
  </data>
43
79
  </dict>
44
80
  <key>files2</key>
45
81
  <dict>
46
82
  <key>LICENSE.txt</key>
47
83
  <dict>
48
- <key>hash</key>
49
- <data>
50
- Cd50llceWtwBPWNSIAJRdTfQQiE=
51
- </data>
52
84
  <key>hash2</key>
53
85
  <data>
54
86
  PDylgJZfZxoKTHUmgv6aK1hRYtMtH4titPlIb7e5iRY=
@@ -56,90 +88,121 @@
56
88
  </dict>
57
89
  <key>ios-arm64/BeekonKit.framework/BeekonKit</key>
58
90
  <dict>
59
- <key>hash</key>
91
+ <key>hash2</key>
60
92
  <data>
61
- SyrIBjwS5o/8csiCfKIXmBtvzio=
93
+ W7xcJOc7VsRvMXihdfEUxGsTpBfHxH1gPbjRVtI8kEM=
62
94
  </data>
95
+ </dict>
96
+ <key>ios-arm64/BeekonKit.framework/Info.plist</key>
97
+ <dict>
63
98
  <key>hash2</key>
64
99
  <data>
65
- sJNDsLwayhdCOxwHz2nvh5hWAy7aH+1xYTklkXYLTVo=
100
+ igGx9bEJCs/Wm2r/0fm1xWlHDmA9Yd/HN+S1eNuxziU=
66
101
  </data>
67
102
  </dict>
68
- <key>ios-arm64/BeekonKit.framework/Info.plist</key>
103
+ <key>ios-arm64/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios.abi.json</key>
69
104
  <dict>
70
- <key>hash</key>
105
+ <key>hash2</key>
71
106
  <data>
72
- 3d/2OPEwv55L8dW+0woT9NRCNi0=
107
+ vc71j/YWrI9vpX+HcsT84p2Mh+AIR7i4y90BFkENP3w=
73
108
  </data>
109
+ </dict>
110
+ <key>ios-arm64/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios.swiftdoc</key>
111
+ <dict>
74
112
  <key>hash2</key>
75
113
  <data>
76
- pwRHyHj1JmPCiUn+GAAwVdCWQOj+rrrs7WDjyfqTwcE=
114
+ gKcGwL/AcvR3lotu9XY2suukPsj+jWsSJvD7sm2jQXw=
77
115
  </data>
78
116
  </dict>
79
- <key>ios-arm64/BeekonKit.framework/PrivacyInfo.xcprivacy</key>
117
+ <key>ios-arm64/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios.swiftinterface</key>
80
118
  <dict>
81
- <key>hash</key>
119
+ <key>hash2</key>
82
120
  <data>
83
- +Hzj9e+o3dYoDboCDA7ofM2a0kc=
121
+ mitVvWaJ1tpzwgWCfcEIK3u3ybZ7hSpmykZJnK8vf00=
84
122
  </data>
123
+ </dict>
124
+ <key>ios-arm64/BeekonKit.framework/PrivacyInfo.xcprivacy</key>
125
+ <dict>
85
126
  <key>hash2</key>
86
127
  <data>
87
- E3plr2RiT1CPWdLg5VfDUw1k7yShykpszuDqfKG4YYw=
128
+ KNi008FJ9ZF/nLOH4DadbEUqysKXh/HjMAmdLdidn4c=
88
129
  </data>
89
130
  </dict>
90
131
  <key>ios-arm64/BeekonKit.framework/_CodeSignature/CodeResources</key>
91
132
  <dict>
92
- <key>hash</key>
133
+ <key>hash2</key>
93
134
  <data>
94
- iZuijJG0soEo1jfi0V3NeqZXX4s=
135
+ biAvH5F300CuORBO8PAXwbaZrvFJ6IKpJ03mwqoa9pw=
95
136
  </data>
137
+ </dict>
138
+ <key>ios-arm64_x86_64-simulator/BeekonKit.framework/BeekonKit</key>
139
+ <dict>
96
140
  <key>hash2</key>
97
141
  <data>
98
- qgFb+LKTIRzW2w+dr7F9VFD6m1FpP0HSjHBtgwKpkxk=
142
+ hn5zblRjRXs8jCxlS5BGNLVmLw5QciKIbrNDMVj7aZQ=
99
143
  </data>
100
144
  </dict>
101
- <key>ios-arm64_x86_64-simulator/BeekonKit.framework/BeekonKit</key>
145
+ <key>ios-arm64_x86_64-simulator/BeekonKit.framework/Info.plist</key>
102
146
  <dict>
103
- <key>hash</key>
147
+ <key>hash2</key>
104
148
  <data>
105
- cEmeEm6qJLQueaJja0nxBKt+nEA=
149
+ n7FykM0hwZBYpdOmRZVNIhq+yVw0D05HUv4gQvp3a+o=
106
150
  </data>
151
+ </dict>
152
+ <key>ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios-simulator.abi.json</key>
153
+ <dict>
107
154
  <key>hash2</key>
108
155
  <data>
109
- 1OteRVaQF1w/938f/tCgu7XydD6pJkclY8MQ8rUpc4c=
156
+ 9WWtJ/SunDN+RNh+QhuE+dUtw0x58nNbt9gYBn3XlBE=
110
157
  </data>
111
158
  </dict>
112
- <key>ios-arm64_x86_64-simulator/BeekonKit.framework/Info.plist</key>
159
+ <key>ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios-simulator.swiftdoc</key>
160
+ <dict>
161
+ <key>hash2</key>
162
+ <data>
163
+ kiW5NMFrXxi4aekbMu1hT1jL4NsFbUsT5gwvjIUim48=
164
+ </data>
165
+ </dict>
166
+ <key>ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/arm64-apple-ios-simulator.swiftinterface</key>
113
167
  <dict>
114
- <key>hash</key>
168
+ <key>hash2</key>
115
169
  <data>
116
- w9rsPHfS6nhyFAFD48jpWHGzYuc=
170
+ v/Cfl3tF13LG5nhjGFypVGQvacvwZ+VAdyy0Iy6c994=
117
171
  </data>
172
+ </dict>
173
+ <key>ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/x86_64-apple-ios-simulator.abi.json</key>
174
+ <dict>
118
175
  <key>hash2</key>
119
176
  <data>
120
- Yr1G0VwEkAQ7fULqXaAcgXxuiXyV2ANn7hepvYQTcDo=
177
+ 9WWtJ/SunDN+RNh+QhuE+dUtw0x58nNbt9gYBn3XlBE=
121
178
  </data>
122
179
  </dict>
123
- <key>ios-arm64_x86_64-simulator/BeekonKit.framework/PrivacyInfo.xcprivacy</key>
180
+ <key>ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/x86_64-apple-ios-simulator.swiftdoc</key>
124
181
  <dict>
125
- <key>hash</key>
182
+ <key>hash2</key>
126
183
  <data>
127
- +Hzj9e+o3dYoDboCDA7ofM2a0kc=
184
+ GMOMoBM3ikrulB6x4+R3kPTTGUXqZ5eueJPYsJ4NkaU=
128
185
  </data>
186
+ </dict>
187
+ <key>ios-arm64_x86_64-simulator/BeekonKit.framework/Modules/BeekonKit.swiftmodule/x86_64-apple-ios-simulator.swiftinterface</key>
188
+ <dict>
129
189
  <key>hash2</key>
130
190
  <data>
131
- E3plr2RiT1CPWdLg5VfDUw1k7yShykpszuDqfKG4YYw=
191
+ cP2NWEZSOyc/7TF6zwN7la0671FBm2P9UHwb1WLWAog=
132
192
  </data>
133
193
  </dict>
134
- <key>ios-arm64_x86_64-simulator/BeekonKit.framework/_CodeSignature/CodeResources</key>
194
+ <key>ios-arm64_x86_64-simulator/BeekonKit.framework/PrivacyInfo.xcprivacy</key>
135
195
  <dict>
136
- <key>hash</key>
196
+ <key>hash2</key>
137
197
  <data>
138
- hbmbyZ85ag/7tawlrdWmUyumzVo=
198
+ KNi008FJ9ZF/nLOH4DadbEUqysKXh/HjMAmdLdidn4c=
139
199
  </data>
200
+ </dict>
201
+ <key>ios-arm64_x86_64-simulator/BeekonKit.framework/_CodeSignature/CodeResources</key>
202
+ <dict>
140
203
  <key>hash2</key>
141
204
  <data>
142
- wi0JVImM9cRW0rzNqoJGY96gS/irH4VrWsZvyoVDhZE=
205
+ AaRejSOyW3Vcnyr0w4kXJi9QuAwGpM4D9yxdKsJMrlk=
143
206
  </data>
144
207
  </dict>
145
208
  </dict>