DataDog / dd-sdk-ios

Datadog SDK for iOS - Swift and Objective-C.
Apache License 2.0
219 stars 127 forks source link

List `DatadogInternal` as a `product` in the `Package.swift` #2055

Closed luispadron closed 2 months ago

luispadron commented 2 months ago

Describe the issue

Im migrating from CocoaPods to SPM and unable to do so because we are missing the DatadogInternal module. This is similar to #2010 but for my case I cannot find where several symbols are, like: AttributeKey, TrackingHTTPHeaders, etc.

Given that DatadogInternal is public for CocoaPods we should consider doing the same for SPM to make projects migrating from CocoaPods possible.

Reproduction steps

Device Information

No response

SDK version

2.13.0

Integration Methods

SPM

Xcode Version

No response

Swift Version

No response

MacOS Version

No response

Deployment Target

No response

Other relevant information

No response

maxep commented 2 months ago

Hi @luispadron 👋

Thanks for the report and for using our SDK.

DatadogInternal is not meant to be imported, every public facing types should be exposed by the feature modules. Could you please provide a list of symbols that you are not able to access? I will make sure that these are accessible.

As a workaround, you can still do import DatadogInternal if you link one of our SPM library. Let me know if that work for you.

luispadron commented 2 months ago

@maxep Ah thank you for the tip on being able to still import it even though its not a product, that worked and our build is back to green without any changes on our end!

If we wanted to expose some of the other fields so users don't need to import DatadogInternal that makes sense, I listed some in the original description here but i imagine anything thats public in DatadogInternal would need to be re-exported by one of the other products instead, maybe DatadogCore?

While DatadogInternal is not a product in SPM it is a spec we can depend on in CocoaPods which is where my confusion came from but thank you for the speedy reply i believe we can close this issue

maxep commented 2 months ago

Thanks, happy that it unblocked you!

The public interfaces of the DatadogInternal are meant for our own usage, we still have few exception that we need to address. Some type are re-exported by our feature modules, like here. But it's not a pattern we should follow as it brings confusion.

Also, please note that AttributeKey is a typealias for String, there is not need to use it as a type.