Awesome
<img alt="Smithy" src="https://github.com/smithy-lang/smithy/blob/main/docs/_static/smithy-anvil.svg?raw=true" width="32"> Smithy Swift
Smithy code generators for Swift.
⚠️ WARNING: All interfaces are subject to change.
Getting Started
- Check out high-level overview of Smithy
- Try out Smithy by following the quick start guide
- Apply the Smithy Swift codegen plugin to your Gradle project to generate Swift code
Feedback
If you'd like to provide feedback, report a bug, request a feature, or would like to bring attention to an issue in general, please do so by submitting a GitHub issue to the repo here.
This is the preferred mechanism for user feedback as it allows anyone with similar issue or suggestion to engage in conversation as well.
Contributing
If you are interested in contributing to Smithy Swift, see CONTRIBUTING for more information.
Development
Module Structure
Codegen Modules
smithy-swift-codegen
- the Kotlin module that generates Swift code from Smithy models.
Runtime Modules (under Sources/
)
-
API modules
SmithyChecksumsAPI
- protocols & enums for checksumSmithyEventStreamsAPI
- protocols & enums for encoding / decoding a single event stream messageSmithyEventStreamsAuthAPI
- protocols & enums for encoding / decoding event streams and signing event stream messagesSmithyHTTPAPI
- protocols & enums for HTTP request and responseSmithyHTTPAuthAPI
- protocols & enums related to signing HTTP requestsSmithyIdentityAPI
- protocols & enums for identity and identity resolver, which are used to sign requestsSmithyRetriesAPI
- protocols & enums related to automatic client-side retry behaviorSmithyWaitersAPI
- protocols & enums related to waiters
-
Implementation modules
ClientRuntime
- various runtime functionality used by generated code; contains anything that doesn't squarely fit into other implementation modules below. Has most of the runtime modules as its dependency.Smithy
- core functionality used by all clients and other runtime modules, such as custom logger type and generic request and response typesSmithyChecksums
- implementations for checksum algorithmsSmithyEventStreams
- implementations for message encoder / decoder and event stream encoder / decoderSmithyHTTPAuth
- concrete types related to auth flowSmithyHTTPClient
- concrete request type and its builderSmithyIdentity
- concrete identity types and identity resolvers for those identity typesSmithyRetries
- concrete retry strategy typesSmithyStreams
- concrete stream typesSmithyTimestamps
- utility implementations for timestamp shapes in SmithySmithyReadWrite
- generic implementations for runtime serdeSmithyJSON
- serde implementations specific to JSONSmithyXML
- serde implementations specific to XMLSmithyFormURL
- serde implementations specific to FormURLSmithyTestUtil
- helper methods for auto-generated Swift unit tests.
📖 For more information on runtime modules, see the Smithy Runtime Module Documentation in API reference.
License
This project is licensed under the Apache-2.0 License.
Security
See CONTRIBUTING for more information.