{"id":13465302,"url":"https://github.com/GottaGetSwifty/CodableWrappers","last_synced_at":"2025-03-25T16:31:36.233Z","repository":{"id":36556348,"uuid":"209208771","full_name":"GottaGetSwifty/CodableWrappers","owner":"GottaGetSwifty","description":"A Collection of PropertyWrappers to make custom Serialization of Swift Codable Types easy","archived":false,"fork":false,"pushed_at":"2024-05-05T19:42:58.000Z","size":210,"stargazers_count":643,"open_issues_count":6,"forks_count":39,"subscribers_count":12,"default_branch":"main","last_synced_at":"2024-10-01T01:11:54.359Z","etag":null,"topics":["codable","ios","property-wrappers","swift","swift-package-manager","swift5-1"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GottaGetSwifty.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["GottaGetSwifty"],"buy_me_a_coffee":"gitswifty"}},"created_at":"2019-09-18T03:26:06.000Z","updated_at":"2024-09-29T11:12:48.000Z","dependencies_parsed_at":"2022-08-08T15:30:56.267Z","dependency_job_id":"c808792d-679f-47af-9e27-6a26939eb81f","html_url":"https://github.com/GottaGetSwifty/CodableWrappers","commit_stats":{"total_commits":72,"total_committers":10,"mean_commits":7.2,"dds":"0.18055555555555558","last_synced_commit":"4eb46a4c656333e8514db8aad204445741de7d40"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GottaGetSwifty%2FCodableWrappers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GottaGetSwifty%2FCodableWrappers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GottaGetSwifty%2FCodableWrappers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GottaGetSwifty%2FCodableWrappers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GottaGetSwifty","download_url":"https://codeload.github.com/GottaGetSwifty/CodableWrappers/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222088537,"owners_count":16928976,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["codable","ios","property-wrappers","swift","swift-package-manager","swift5-1"],"created_at":"2024-07-31T15:00:26.342Z","updated_at":"2025-03-25T16:31:36.221Z","avatar_url":"https://github.com/GottaGetSwifty.png","language":"Swift","readme":"# CodableWrappers\n[![API Docs](http://img.shields.io/badge/Read_the-docs-2196f3.svg)](https://swiftpackageindex.com/GottaGetSwifty/CodableWrappers/documentation/codablewrappers)\n[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2FGottaGetSwifty%2FCodableWrappers%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/GottaGetSwifty/CodableWrappers)\n[![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2FGottaGetSwifty%2FCodableWrappers%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/GottaGetSwifty/CodableWrappers)\n[![codecov](https://codecov.io/github/GottaGetSwifty/CodableWrappers/graph/badge.svg?token=3F2A9MM6ED)](https://codecov.io/github/GottaGetSwifty/CodableWrappers)\n\n## Simplified Serialization with [Property Wrappers](https://github.com/apple/swift-evolution/blob/master/proposals/0258-property-wrappers.md)\n\nMake Complex Codable Serialization a breeze with declarative annotations!\n\n```swift\n@CustomCodable @SnakeCase\nstruct User: Codable {\n    let firstName: String\n    let lastName: String\n    @SecondsSince1970DateCoding\n    var joinDate: Date\n    @CustomCodingKey(\"data\")\n    var imageData: Data\n}\n```\n\n3.0 released! [Release Notes](https://github.com/GottaGetSwifty/CodableWrappers/blob/master/ReleaseNotes.md)\n\n---\n\n## Documentation\n\n[Full DocC documentation here](https://swiftpackageindex.com/GottaGetSwifty/CodableWrappers/documentation/codablewrappers) thanks to the Swift Package Index!\n\n## Installation\n\n### Swift Package Manager \\***Preferred***\n\nURL:\n\n`https://github.com/GottaGetSwifty/CodableWrappers.git`\n\nManifest:\n\n```swift\ndependencies: [\n    .package(url: \"https://github.com/GottaGetSwifty/CodableWrappers.git\", .upToNextMajor(from: \"3.0.0\" )),\n]\n```\n\n### CocoaPods\n\n\\***WARNING*** CocoaPods is not currently supported for version 3.0 to avoid complications with Swift Macros.\n--- \n\n\n```ruby\npod 'CodableWrappers', '~\u003e 2.0.0'\n```\n\n## Available CodingKey Macros\n\n- [@CustomCodable](CodingKeyMacrosDocumentation.md/#customcodable)\n- [@CustomCodingKey(String)](CodingKeyMacrosDocumentation.md/#customcodingkeystring)\n- [@CodingKeyPrefix(String)](CodingKeyMacrosDocumentation.md/#codingkeyprefixstring)\n- [@CodingKeySuffix(String)](CodingKeyMacrosDocumentation.md/#codingkeysuffixstring)\n- [@CamelCase](CodingKeyMacrosDocumentation.md/#camelcase)\n- [@FlatCase](CodingKeyMacrosDocumentation.md/#flatcase)\n- [@PascalCase](CodingKeyMacrosDocumentation.md/#pascalcase)\n- [@UpperCase](CodingKeyMacrosDocumentation.md/#uppercase)\n- [@SnakeCase](CodingKeyMacrosDocumentation.md/#snakecase)\n- [@CamelSnakeCase](CodingKeyMacrosDocumentation.md/#camelsnakecase)\n- [@PascalSnakeCase](CodingKeyMacrosDocumentation.md/#pascalsnakecase)\n- [@ScreamingSnakeCase](CodingKeyMacrosDocumentation.md/#screamingsnakecase)\n- [@KebabCase](CodingKeyMacrosDocumentation.md/#kebabcase)\n- [@CamelKebabCase](CodingKeyMacrosDocumentation.md/#camelkebabcase)\n- [@PascalKebabCase](CodingKeyMacrosDocumentation.md/#pascalkebabcase)\n- [@ScreamingKebabCase](CodingKeyMacrosDocumentation.md/#screamingkebabcase)\n\n## Available Property Wrappers\n\n- [@EncodeNulls](PropertyWrappersDocumentation.md/#encodenulls)\n- [Lossy Collections](PropertyWrappersDocumentation.md/#lossy-collections)\n- [Empty Defaults](PropertyWrappersDocumentation.md/#empty-defaults)\n- [Other Fallbacks](PropertyWrappersDocumentation.md/#other-fallbacks)\n- [@OmitCoding](PropertyWrappersDocumentation.md/#omitcoding)\n- [@Base64Coding](PropertyWrappersDocumentation.md/#base64coding)\n- [@SecondsSince1970DateCoding](PropertyWrappersDocumentation.md/#secondssince1970datecoding)\n- [@MillisecondsSince1970DateCoding](PropertyWrappersDocumentation.md/#millisecondssince1970datecoding)\n- [@DateFormatterCoding\\\u003cDateFormatterStaticCoder\u003e](PropertyWrappersDocumentation.md/#dateformattercodingdateformatterstaticcoder)\n- [@ISO8601Coding](PropertyWrappersDocumentation.md/#iso8601coding)\n- [@ISO8601DateFormatStyleCoding\\\u003cISO8601DateFormatterStaticCoder\u003e](PropertyWrappersDocumentation.md/#iso8601dateformatstylecodingiso8601dateformatstylestaticcoder)\n- [@NonConformingFloatCoding\\\u003cValueProvider\u003e](PropertyWrappersDocumentation.md/#nonconformingfloatcodingvalueprovider)\n- [@NonConformingDoubleCoding\\\u003cValueProvider\u003e](PropertyWrappersDocumentation.md/#nonconformingdoublecodingvalueprovider)\n- [Bool Coding](PropertyWrappersDocumentation.md/#bool-coding)\n- [Additional Customization](PropertyWrappersDocumentation.md/#additional-customization)\n- [Property Mutability](PropertyWrappersDocumentation.md/#property-mutability)\n- [Only Encoding or Decoding](PropertyWrappersDocumentation.md/#only-encoding-or-decoding)\n\n## Additional Customization\n\n- [Property Mutability](PropertyWrappersDocumentation.md/#property-mutability)\n- [Optionals](PropertyWrappersDocumentation.md/#optionals)\n- [Only Encoding or Decoding](PropertyWrappersDocumentation.md/#only-encoding-or-decoding)\n\n## Additional Links\n\n- [Introduction Blog Post](https://www.getswifty.blog/blog/making-custom-serialization-a-breeze-in-swift-51-with-property-wrappers)\n- [Custom Examples](https://github.com/GottaGetSwifty/CodableWrappers/blob/master/CustomExamples.md)\n- [Release Notes](https://github.com/GottaGetSwifty/CodableWrappers/blob/master/ReleaseNotes.md)\n\n---\n\n## Compatibility\n\n- 3.x supports Swift 5.9+  \n- 2.x supports Swift 5.2+\n- 1.x supports Swift 5.1+\n\n---\n\n## Contributions\n\nIf there is a standard Serialization or Coding Key strategy that could be added feel free to open an issue requesting it and/or submit a pull request with the new option.\n","funding_links":["https://github.com/sponsors/GottaGetSwifty","https://buymeacoffee.com/gitswifty"],"categories":["Misc","Awesome Repositories","Misc [🔝](#readme)","Swift"],"sub_categories":["Vim"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGottaGetSwifty%2FCodableWrappers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FGottaGetSwifty%2FCodableWrappers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGottaGetSwifty%2FCodableWrappers/lists"}