88import Foundation
99import Sovran
1010
11+ // MARK: - Supplementary Types
12+
13+ public struct DestinationMetadata : Codable {
14+ var bundled : [ String ] = [ ]
15+ var unbundled : [ String ] = [ ]
16+ var bundledIds : [ String ] = [ ]
17+ }
1118
1219// MARK: - Event Types
1320
1421public protocol RawEvent : Codable {
15-
1622 var type : String ? { get set }
1723 var anonymousId : String ? { get set }
1824 var messageId : String ? { get set }
@@ -22,6 +28,7 @@ public protocol RawEvent: Codable {
2228 var context : JSON ? { get set }
2329 var integrations : JSON ? { get set }
2430 var metrics : [ JSON ] ? { get set }
31+ var _metadata : DestinationMetadata ? { get set }
2532}
2633
2734public struct TrackEvent : RawEvent {
@@ -33,6 +40,7 @@ public struct TrackEvent: RawEvent {
3340 public var context : JSON ? = nil
3441 public var integrations : JSON ? = nil
3542 public var metrics : [ JSON ] ? = nil
43+ public var _metadata : DestinationMetadata ? = nil
3644
3745 public var event : String
3846 public var properties : JSON ?
@@ -57,9 +65,11 @@ public struct IdentifyEvent: RawEvent {
5765 public var context : JSON ? = nil
5866 public var integrations : JSON ? = nil
5967 public var metrics : [ JSON ] ? = nil
68+ public var _metadata : DestinationMetadata ? = nil
6069
6170 public var traits : JSON ?
6271
72+
6373 public init ( userId: String ? = nil , traits: JSON ? = nil ) {
6474 self . userId = userId
6575 self . traits = traits
@@ -80,6 +90,7 @@ public struct ScreenEvent: RawEvent {
8090 public var context : JSON ? = nil
8191 public var integrations : JSON ? = nil
8292 public var metrics : [ JSON ] ? = nil
93+ public var _metadata : DestinationMetadata ? = nil
8394
8495 public var name : String ?
8596 public var category : String ?
@@ -106,6 +117,7 @@ public struct GroupEvent: RawEvent {
106117 public var context : JSON ? = nil
107118 public var integrations : JSON ? = nil
108119 public var metrics : [ JSON ] ? = nil
120+ public var _metadata : DestinationMetadata ? = nil
109121
110122 public var groupId : String ?
111123 public var traits : JSON ?
@@ -129,6 +141,7 @@ public struct AliasEvent: RawEvent {
129141 public var context : JSON ? = nil
130142 public var integrations : JSON ? = nil
131143 public var metrics : [ JSON ] ? = nil
144+ public var _metadata : DestinationMetadata ? = nil
132145
133146 public var userId : String ?
134147 public var previousId : String ?
@@ -271,6 +284,7 @@ extension RawEvent {
271284 timestamp = e. timestamp
272285 context = e. context
273286 integrations = e. integrations
287+ _metadata = e. _metadata
274288 }
275289 }
276290
@@ -284,6 +298,7 @@ extension RawEvent {
284298 result. messageId = UUID ( ) . uuidString
285299 result. timestamp = Date ( ) . iso8601 ( )
286300 result. integrations = try ? JSON ( [ String: Any] ( ) )
301+ result. _metadata = DestinationMetadata ( )
287302
288303 return result
289304 }
0 commit comments