{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":630567214,"defaultBranch":"main","name":"swift-openapi-runtime","ownerLogin":"apple","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-04-20T16:52:03.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/10639145?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1713261337.0","currentOid":""},"activityList":{"items":[{"before":"9d4a2ffb98c1bb6a2a037b267a4ef0eec0654059","after":"9a8291fa2f90cc7296f2393a99bb4824ee34f869","ref":"refs/heads/main","pushedAt":"2024-04-16T09:51:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"[Runtime] Add support of deepObject style in query params (#100)\n\n### Motivation\r\n\r\nThe runtime changes for:\r\nhttps://github.com/apple/swift-openapi-generator/issues/259\r\n\r\n### Modifications\r\n\r\nAdded `deepObject` style to serializer & parser in order to support\r\nnested keys on query parameters.\r\n\r\n### Result\r\n\r\nSupport nested keys on query parameters.\r\n\r\n### Test Plan\r\n\r\nThese are just the runtime changes, tested together with generated\r\nchanges.\r\n\r\n---------\r\n\r\nCo-authored-by: Honza Dvorsky ","shortMessageHtmlLink":"[Runtime] Add support of deepObject style in query params (#100)"}},{"before":"6e2f9b9787a2ba597fd97960bfa65ff101bf79b8","after":"9d4a2ffb98c1bb6a2a037b267a4ef0eec0654059","ref":"refs/heads/main","pushedAt":"2024-04-09T09:37:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"Improve error message when encountering unexpected content-type headers (#104)\n\n### Motivation\r\n\r\nWhen the server response has a content-type header that does not conform\r\nto the OpenAPI document, we currently throw an error. However, this\r\nerror presents itself in a very confusing manner: it prints `Unexpected\r\nContent-Type header: application/json`, where `application/json is the\r\n_expected_ content-type. At best, this is ambiguous and potentially\r\nmisleading.\r\n\r\n### Modifications\r\n\r\n- Extend `case RuntimeError.unexpectedContentTypeHeader` with _both_ the\r\nexpected and received content-type associated values.\r\n- Update the printed description to include both the expected and\r\nreceived content-type header values.\r\n\r\n### Result\r\n\r\nWhen an unexpected content-type is received, the error message is\r\nclearer.\r\n\r\n### Test Plan\r\n\r\nUpdated the existing test that expects an error to check the error and\r\nthat the error values are provided in the correct order.","shortMessageHtmlLink":"Improve error message when encountering unexpected content-type heade…"}},{"before":"634b7ebb1cd2e131a8400e3176b9f53205f8fff8","after":"6e2f9b9787a2ba597fd97960bfa65ff101bf79b8","ref":"refs/heads/main","pushedAt":"2024-04-05T06:31:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"Add support for application/xml body (#102)\n\n### Motivation\r\n\r\nSee\r\n[apple/swift-openapi-generator#556](https://github.com/apple/swift-openapi-generator/issues/556)\r\nfor more.\r\n\r\n### Modifications\r\n\r\nAdd converter methods for encoding and decoding XML request and response\r\nbody.\r\nAdd `CustomCoder` protocol, allows to use other `Encoder` and `Decoder`\r\nfor other `content-type` body.\r\n\r\nUser can define custom coder, and assign a custom coder to a specific\r\ncontent-type within `Configuration.customCoders` dictionary.\r\n\r\n### Result\r\n\r\nIt's now possible to define custom encoder and decoder for supported\r\ncontent-type.\r\n\r\n### Test Plan\r\n\r\nAdded converter methods are tested with a mock custom coder for\r\n`application/xml` content-type. To avoid adding a dependency to a\r\nXMLCoder like\r\n[CoreOffice/XMLCoder](https://github.com/CoreOffice/XMLCoder), mock\r\ncustom coder uses JSONEncoder and JSONDecoder.\r\n\r\nEncoding and decoding to XML are out of scope of the tests, because\r\nencoding and decoding logic must be provided by user through custom\r\ncoder implementation.\r\n\r\n---------\r\n\r\nSigned-off-by: Ugo Cottin \r\nCo-authored-by: Honza Dvorsky ","shortMessageHtmlLink":"Add support for application/xml body (#102)"}},{"before":"a875c2d45477be7a6d193ed3201603d05175d164","after":"634b7ebb1cd2e131a8400e3176b9f53205f8fff8","ref":"refs/heads/main","pushedAt":"2024-04-03T08:43:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"Fix empty additionalProperties dictionary encoding (#103)\n\n### Motivation\r\n\r\nFixes https://github.com/apple/swift-openapi-generator/issues/525.\r\n\r\nTurns out that the mere act of creating a decoding container is\r\nmeaningful and we skipped it as an optimization, causing JSONDecoder to\r\nfail for empty dictionaries when used in additional properties.\r\n\r\n### Modifications\r\n\r\nRemove the extra guards that skipped creating a container, even when we\r\nalready know there are no elements.\r\n\r\n### Result\r\n\r\nNo more failures when encoding empty dictionaries in\r\nadditionalProperties.\r\n\r\n### Test Plan\r\n\r\nTested manually as this requirement seems to be coming out of\r\nJSONDecoder.","shortMessageHtmlLink":"Fix empty additionalProperties dictionary encoding (#103)"}},{"before":"76951d77a0609599d2dc233e7e40808a74767c6a","after":"a875c2d45477be7a6d193ed3201603d05175d164","ref":"refs/heads/main","pushedAt":"2024-03-11T08:05:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"Update CI to use release 5.10 (#101)","shortMessageHtmlLink":"Update CI to use release 5.10 (#101)"}},{"before":"95307ba1c0b0184c97e6baf1c0f8ea3d5fd45733","after":"76951d77a0609599d2dc233e7e40808a74767c6a","ref":"refs/heads/main","pushedAt":"2024-01-18T17:35:32.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"Set content length in request/response bodies (#96)\n\n### Motivation\r\n\r\nA surprising oversight, we were never setting the `content-length`\r\nheader when sending out a known-length body.\r\n\r\nSome transports might be already doing this, but this change makes\r\nthings more consistent.\r\n\r\n### Modifications\r\n\r\nAdd the `content-length` header when setting a body and we know the\r\nlength from the `HTTPBody`.\r\n\r\n### Result\r\n\r\nMore consistent experience.\r\n\r\n### Test Plan\r\n\r\nAdapted unit tests.","shortMessageHtmlLink":"Set content length in request/response bodies (#96)"}},{"before":"7f86e4a103bcc1732cddcd197ac924c178b440f3","after":"95307ba1c0b0184c97e6baf1c0f8ea3d5fd45733","ref":"refs/heads/main","pushedAt":"2024-01-18T12:47:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"Bug/502 crash thread safety fix (#95)\n\n### Motivation\r\n\r\nFixes https://github.com/apple/swift-openapi-generator/issues/502\r\n- Ensure thread safety of `HTTPBody.collect(upTo)`.\r\n- `makeAsyncIterator()`: Instead of crashing, return AsyncSequence which\r\nthrows `TooManyIterationsError` thereby honoring the contract for\r\n`IterationBehavior.single` (HTTPBody, MultipartBody)\r\n\r\n### Modifications\r\n\r\n- HTTPBody, MultipartBody: `makeAsyncIterator()`: removed `try!`, catch\r\nerror and create a sequence which throws the error on iteration.\r\n- This removed the need for `try checkIfCanCreateIterator()` in\r\n`HTTPBody.collect(upTo)`.\r\n**Note**: This creates a small change in behavior: There may be a\r\n`TooManyBytesError` thrown before the check for `iterationBehavior`.\r\nThis approach uses the simplest code, IMO. If we want to keep that\r\n`iterationBehavior` is checked first and only after that for the length,\r\nthen the code needs to be more complex.\r\n- Removed `try checkIfCanCreateIterator()` in both classes (only used in\r\n`HTTPBody`).\r\n\r\n### Result\r\n\r\n- No intentional crash in `makeAsyncIterator()` anymore.\r\n- Tests supplied as example in\r\nhttps://github.com/apple/swift-openapi-generator/issues/502 succeed.\r\n\r\n### Test Plan\r\n\r\n- Added check in `Test_Body.testIterationBehavior_single()` to ensure\r\nthat using `makeAsyncIterator()` directly yields the expected error.\r\n- Added tests to check iteration behavior of `MultipartBody`.\r\n\r\n---------\r\n\r\nCo-authored-by: Lars Peters ","shortMessageHtmlLink":"Bug/502 crash thread safety fix (#95)"}},{"before":"6be221fe0ae025d01a49cd733df746db0e3e8fc9","after":"7f86e4a103bcc1732cddcd197ac924c178b440f3","ref":"refs/heads/main","pushedAt":"2024-01-16T15:33:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"Make the ISO8601 date transcoder configurable (#94)\n\nMake the ISO8601 date transcoder configurable\n\n### Motivation\r\n\r\nFixes https://github.com/apple/swift-openapi-generator/issues/389.\r\n\r\n### Modifications\r\n\r\nAdd a way to configure the existing `ISO8601DateTranscoder`.\r\n\r\n### Result\r\n\r\nAdopters can more easily use e.g. fractional seconds-based transcoder.\r\n\r\n### Test Plan\r\n\r\nAdded unit tests.\r\n\n\nReviewed by: simonjbeaumont\n\nBuilds:\n ✔︎ pull request validation (5.10) - Build finished. \n ✔︎ pull request validation (5.9) - Build finished. \n ✔︎ pull request validation (5.9.0) - Build finished. \n ✔︎ pull request validation (api breakage) - Build finished. \n ✔︎ pull request validation (docc test) - Build finished. \n ✔︎ pull request validation (integration test) - Build finished. \n ✔︎ pull request validation (nightly) - Build finished. \n ✔︎ pull request validation (soundness) - Build finished. \n\nhttps://github.com/apple/swift-openapi-runtime/pull/94","shortMessageHtmlLink":"Make the ISO8601 date transcoder configurable (#94)"}},{"before":"fd101c320185313bbf9c5a45b827b17eda9ff18a","after":"6be221fe0ae025d01a49cd733df746db0e3e8fc9","ref":"refs/heads/main","pushedAt":"2024-01-08T14:06:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"[Runtime] SOAR-0010: Event streams sequences (#91)\n\n### Motivation\r\n\r\nLand changes approved in\r\nhttps://github.com/apple/swift-openapi-generator/pull/495.\r\n\r\n### Modifications\r\n\r\nIntroduced the new APIs.\r\n\r\n### Result\r\n\r\nEasy use of event streams.\r\n\r\n### Test Plan\r\n\r\nAdded unit tests for all.\r\n\r\n---------\r\n\r\nCo-authored-by: Si Beaumont ","shortMessageHtmlLink":"[Runtime] SOAR-0010: Event streams sequences (#91)"}},{"before":"bc1023f948f0093e2d79244feedb2203379d148a","after":"fd101c320185313bbf9c5a45b827b17eda9ff18a","ref":"refs/heads/main","pushedAt":"2023-12-15T12:58:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"[Runtime] Add headerFields and body to UndocumentedPayload (#90)\n\n### Motivation\r\n\r\nThe runtime changes for\r\nhttps://github.com/apple/swift-openapi-generator/issues/299.\r\n\r\n### Modifications\r\n\r\nAdded `headerFields` and `body` properties to `UndocumentedPayload`,\r\nallowing adopters to access the full request information when an\r\nundocumented response is returned.\r\n\r\n### Result\r\n\r\nEasier access to the raw payload when an undocumented response is\r\nreturned.\r\n\r\n### Test Plan\r\n\r\nThese are just the runtime changes, tested together with generated\r\nchanges.","shortMessageHtmlLink":"[Runtime] Add headerFields and body to UndocumentedPayload (#90)"}},{"before":"160ff92214cf5a1aa9503ca3092220c2c4ff4f1a","after":"bc1023f948f0093e2d79244feedb2203379d148a","ref":"refs/heads/main","pushedAt":"2023-12-11T10:52:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"[Docs] Prep 1.0.0 (#89)\n\n### Motivation\r\n\r\nPrep docs for 1.0.\r\n\r\n### Modifications\r\n\r\nSee above.\r\n\r\n### Result\r\n\r\nReady to tag 1.0.\r\n\r\n### Test Plan\r\n\r\nManual inspection.","shortMessageHtmlLink":"[Docs] Prep 1.0.0 (#89)"}},{"before":"860a3ed237c952c0ddf3f9814ed20dcc1b36363a","after":"160ff92214cf5a1aa9503ca3092220c2c4ff4f1a","ref":"refs/heads/main","pushedAt":"2023-12-11T09:54:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"simonjbeaumont","name":"Si Beaumont","path":"/simonjbeaumont","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1125539?s=80&v=4"},"commit":{"message":"Add issue template, redirecting to swift-openapi-generator issues","shortMessageHtmlLink":"Add issue template, redirecting to swift-openapi-generator issues"}},{"before":"3452f2b837c634f48d07909fa819224bcacde5c6","after":"860a3ed237c952c0ddf3f9814ed20dcc1b36363a","ref":"refs/heads/main","pushedAt":"2023-12-05T16:54:38.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"[Docs] Make sure all symbols are curated (#88)\n\n### Motivation\r\n\r\nEnsure all symbols are curated.\r\n\r\n### Modifications\r\n\r\nAdded symbols that were showing up in automatic sections to existing\r\ncurated sections.\r\n\r\n### Result\r\n\r\nAll symbols are curated.\r\n\r\n### Test Plan\r\n\r\nBuilt docs locally.","shortMessageHtmlLink":"[Docs] Make sure all symbols are curated (#88)"}},{"before":"3300cc48eb3563339dbdb5dd0fb21d9327940d4d","after":"3452f2b837c634f48d07909fa819224bcacde5c6","ref":"refs/heads/main","pushedAt":"2023-12-01T09:03:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"Remove no-longer-needed `@preconcurrency`s (#83)\n\nSee https://github.com/apple/swift-openapi-generator/pull/396.\r\n\r\n---------\r\n\r\nCo-authored-by: Honza Dvorsky ","shortMessageHtmlLink":"Remove no-longer-needed @preconcurrencys (#83)"}},{"before":"32cef1a271e8edc41a637a2527b299a03832adfe","after":"3300cc48eb3563339dbdb5dd0fb21d9327940d4d","ref":"refs/heads/main","pushedAt":"2023-11-30T20:23:12.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"simonjbeaumont","name":"Si Beaumont","path":"/simonjbeaumont","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1125539?s=80&v=4"},"commit":{"message":"Add Docker Compose file for Swift 5.9.0 (#86)","shortMessageHtmlLink":"Add Docker Compose file for Swift 5.9.0 (#86)"}},{"before":"7d1644b125c02be1bedcfe1a69b58fae881b2393","after":"32cef1a271e8edc41a637a2527b299a03832adfe","ref":"refs/heads/main","pushedAt":"2023-11-30T08:48:40.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"simonjbeaumont","name":"Si Beaumont","path":"/simonjbeaumont","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1125539?s=80&v=4"},"commit":{"message":"Add visionOS platform support (#85)\n\n### Motivation\r\n\r\nWhile this isn't technically necessary, as all versions of a platform\r\nnot explicitly mentioned are assumed to be supported, it's better to be\r\nexplicit here.\r\n\r\n### Modifications\r\n\r\nAdd `visionOS(.v1)` to the list of supported platforms.\r\n\r\n### Result\r\n\r\nClearer support matrix.\r\n\r\n### Test Plan\r\n\r\nN/A, this is basically just a documentation change.","shortMessageHtmlLink":"Add visionOS platform support (#85)"}},{"before":"336b77ce633f753284fa6bf4ceec385ae78c1095","after":"7d1644b125c02be1bedcfe1a69b58fae881b2393","ref":"refs/heads/main","pushedAt":"2023-11-27T17:15:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"Bump version docs to 1.0.0-alpha.1 (#82)\n\nBump version docs to 1.0.0-alpha.1\n\n### Motivation\n\n_[Explain here the context, and why you're making that change. What is the problem you're trying to solve.]_\n\n### Modifications\n\n_[Describe the modifications you've made.]_\n\n### Result\n\n_[After your change, what will change.]_\n\n### Test Plan\n\n_[Describe the steps you took, or will take, to qualify the change - such as adjusting tests and manual testing.]_\n\n\n\nReviewed by: simonjbeaumont\n\nBuilds:\n ✔︎ pull request validation (5.10) - Build finished. \n ✔︎ pull request validation (5.9) - Build finished. \n ✔︎ pull request validation (api breakage) - Build finished. \n ✔︎ pull request validation (docc test) - Build finished. \n ✔︎ pull request validation (integration test) - Build finished. \n ✔︎ pull request validation (nightly) - Build finished. \n ✔︎ pull request validation (soundness) - Build finished. \n\nhttps://github.com/apple/swift-openapi-runtime/pull/82","shortMessageHtmlLink":"Bump version docs to 1.0.0-alpha.1 (#82)"}},{"before":"e5816cb665f1a54a25e5c15195f31bad83c55603","after":"336b77ce633f753284fa6bf4ceec385ae78c1095","ref":"refs/heads/main","pushedAt":"2023-11-27T16:21:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"Remove deprecated code (#81)\n\n### Motivation\r\n\r\nPreparing for 1.0.0-alpha.1, remove deprecated code.\r\n\r\n### Modifications\r\n\r\nRemoved deprecated code.\r\n\r\n### Result\r\n\r\nNo more deprecated code.\r\n\r\n### Test Plan\r\n\r\nAll tests pass, no warnings.","shortMessageHtmlLink":"Remove deprecated code (#81)"}},{"before":"391703120df51fb22869ad29b91b4e9913d8458e","after":"e5816cb665f1a54a25e5c15195f31bad83c55603","ref":"refs/heads/main","pushedAt":"2023-11-27T15:16:30.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"Move to Swift 5.9 as the minimum version (#80)\n\n### Motivation\r\n\r\nPart of addressing\r\nhttps://github.com/apple/swift-openapi-generator/issues/75 and\r\nhttps://github.com/apple/swift-openapi-generator/issues/119.\r\n\r\n### Modifications\r\n\r\nBumped Swift tools version to 5.9 and made the `ExistentialAny` build\r\nsetting unconditional.\r\n\r\n### Result\r\n\r\nBuilding the package requires 5.9 now.\r\n\r\n### Test Plan\r\n\r\nRan tests, all passed when using a Swift 5.9 toolchain.","shortMessageHtmlLink":"Move to Swift 5.9 as the minimum version (#80)"}},{"before":"bb2d2b3cb2f3062f7b0d0ce607aa89f6911755d2","after":"391703120df51fb22869ad29b91b4e9913d8458e","ref":"refs/heads/main","pushedAt":"2023-11-27T12:35:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"simonjbeaumont","name":"Si Beaumont","path":"/simonjbeaumont","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1125539?s=80&v=4"},"commit":{"message":"Change type of HTTPBody.Length.known from Int to Int64 (#79)\n\n### Motivation\r\n\r\nThe associated value of enum case `HTTPBody.Length.known` was `Int`,\r\nand, on watchOS, `Int = Int32`, which is not ideal for a content length.\r\n\r\n### Modifications\r\n\r\n- (API breaking) Change type of HTTPBody.Length.known from Int to Int64.\r\n\r\n### Result\r\n\r\nCan now express larger values for content type on 32-bit platforms.\r\n\r\n### Test Plan\r\n\r\nUnit tests pass.\r\n\r\n### Related Issues\r\n\r\n- Fixes https://github.com/apple/swift-openapi-generator/issues/354.\r\n\r\n### Note\r\n\r\nI have marked this PR as `semver/major` as it constitutes the first of\r\nthe PRs we make in the run up to 1.0.0-alpha.1 and the release notes\r\ngenerator should therefore catch us from inadvertently cutting another\r\npre-1.0 patch release.","shortMessageHtmlLink":"Change type of HTTPBody.Length.known from Int to Int64 (#79)"}},{"before":"5060bb9f1fe02d7d23c35a592d6a00c04ed2e9d3","after":"bb2d2b3cb2f3062f7b0d0ce607aa89f6911755d2","ref":"refs/heads/main","pushedAt":"2023-11-24T11:01:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"[Multipart] Add converter SPI methods (#78)\n\n[Multipart] Add converter SPI methods\n\n### Motivation\r\n\r\nLast planned runtime PR for multipart, this adds the remaining SPI methods that allow the generated code to serialize/deserialize multipart bodies, both for client and server.\r\n\r\n### Modifications\r\n\r\nAdded SPI methods on `Converter` for multipart.\r\n\r\n### Result\r\n\r\nClient and server generated code can now serialize/deserialize multipart bodies.\r\n\r\n### Test Plan\r\n\r\nAdded unit tests for the SPI methods.\r\n\n\nReviewed by: simonjbeaumont\n\nBuilds:\n ✔︎ pull request validation (5.10) - Build finished. \n ✔︎ pull request validation (5.8) - Build finished. \n ✔︎ pull request validation (5.9) - Build finished. \n ✔︎ pull request validation (api breakage) - Build finished. \n ✔︎ pull request validation (docc test) - Build finished. \n ✔︎ pull request validation (integration test) - Build finished. \n ✔︎ pull request validation (nightly) - Build finished. \n ✔︎ pull request validation (soundness) - Build finished. \n\nhttps://github.com/apple/swift-openapi-runtime/pull/78","shortMessageHtmlLink":"[Multipart] Add converter SPI methods (#78)"}},{"before":"d50b48957ccb388fb89db98a56c2337276298e79","after":"5060bb9f1fe02d7d23c35a592d6a00c04ed2e9d3","ref":"refs/heads/main","pushedAt":"2023-11-24T10:47:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"[Multipart] Add public types (#77)\n\n[Multipart] Add public types\n\n### Motivation\r\n\r\nAdd the public types approved in SOAR-0009.\r\n\r\n### Modifications\r\n\r\nAdded the public types and make other changes outlined in SOAR-0009.\r\n\r\n### Result\r\n\r\nMost of the required runtime types are now in place.\r\n\r\n### Test Plan\r\n\r\nAdded unit tests for the new code, where it made sense.\r\n\r\n⚠️ The pipeline `pull request validation (api breakage)` is failing with:\r\n\r\n```\r\n1 breaking change detected in OpenAPIRuntime:\r\n 💔 API breakage: constructor Configuration.init(dateTranscoder:) has removed default argument from parameter 0\r\n** ERROR: ❌ Breaking API changes detected.\r\n```\r\n\r\nbut that seems to be a false positive in the tool, as there is now a newer initializer that you can use as `.init()`, `.init(dateTranscoder:)`, `.init(multipartBoundaryGenerator:)`, or `init(dateTranscoder:multipartBoundaryGenerator:)`, so no existing code could be broken by this change.\r\n\n\nReviewed by: simonjbeaumont\n\nBuilds:\n ✔︎ pull request validation (5.10) - Build finished. \n ✔︎ pull request validation (5.8) - Build finished. \n ✔︎ pull request validation (5.9) - Build finished. \n ✔︎ pull request validation (docc test) - Build finished. \n ✔︎ pull request validation (integration test) - Build finished. \n ✔︎ pull request validation (nightly) - Build finished. \n ✔︎ pull request validation (soundness) - Build finished. \n ✖︎ pull request validation (api breakage) - Build finished. \n\nhttps://github.com/apple/swift-openapi-runtime/pull/77","shortMessageHtmlLink":"[Multipart] Add public types (#77)"}},{"before":"304808aaebda67cdc08cefc7b95bc34f0bff36a8","after":"d50b48957ccb388fb89db98a56c2337276298e79","ref":"refs/heads/main","pushedAt":"2023-11-20T11:42:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"[Multipart] Validation sequence (#76)\n\n[Multipart] Validation sequence\n\n### Motivation\n\nThe OpenAPI document provides information about which parts are required, optional, arrays, and single values, so we need to enforce those semantics for the adopter, just like we enforce (using JSONDecoder) that a received JSON payload follows the documented structure.\n\n### Modifications\n\nSince the mutlipart body is not a struct, but an async sequence of parts, it's a little more complicated.\n\nWe introduce a `MultipartValidationSequence` with a state machine that keeps track of the requirements and which of them have already been fulfilled over time. And it throws an error if any of the requirements are violated.\n\nFor missing required parts, the error is thrown when `nil` is received from the upstream sequence, indicating that there will be no more parts coming.\n\nTo implement this, an internal type `ContentDisposition` was also introduced for working with that header's values, and helper accessors on `MultipartRawPart` as well.\n\n### Result\n\nAdopters don't have to validate these semantics manually, if they successfully iterate over the parts without an error being thrown, they can be confident that the received (or sent) parts match the requirements from the OpenAPI document.\n\n### Test Plan\n\nUnit tests for the sequence, the validator, and the state machine were added. Also added unit tests for the `ContentDisposition` type.\n\n\nReviewed by: simonjbeaumont\n\nBuilds:\n ✔︎ pull request validation (5.10) - Build finished. \n ✔︎ pull request validation (5.8) - Build finished. \n ✔︎ pull request validation (5.9) - Build finished. \n ✔︎ pull request validation (api breakage) - Build finished. \n ✔︎ pull request validation (docc test) - Build finished. \n ✔︎ pull request validation (integration test) - Build finished. \n ✔︎ pull request validation (nightly) - Build finished. \n ✔︎ pull request validation (soundness) - Build finished. \n\nhttps://github.com/apple/swift-openapi-runtime/pull/76","shortMessageHtmlLink":"[Multipart] Validation sequence (#76)"}},{"before":"927f93009947d2bf0be32f14975e6a9107d4a725","after":"304808aaebda67cdc08cefc7b95bc34f0bff36a8","ref":"refs/heads/main","pushedAt":"2023-11-17T17:15:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"[Multipart] Add a raw parts to frames serializer sequence. (#75)","shortMessageHtmlLink":"[Multipart] Add a raw parts to frames serializer sequence. (#75)"}},{"before":"94c1b30e40a38b8cf6cbad2fdd41628c53bb6995","after":"927f93009947d2bf0be32f14975e6a9107d4a725","ref":"refs/heads/main","pushedAt":"2023-11-17T16:56:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"[Multipart] Add a frames -> raw parts parsing sequence (#74)","shortMessageHtmlLink":"[Multipart] Add a frames -> raw parts parsing sequence (#74)"}},{"before":"ce4fc058f4a2e81bd21aee53bde418a1c6c76470","after":"94c1b30e40a38b8cf6cbad2fdd41628c53bb6995","ref":"refs/heads/main","pushedAt":"2023-11-16T14:27:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"[Multipart] Add the frame -> bytes serializer (#73)\n\n### Motivation\r\n\r\nSecond state machine, doing the inverse of #72, serializes frames into\r\nbytes.\r\n\r\n### Modifications\r\n\r\n- A new state machine.\r\n- A new serializer wrapping the state machine.\r\n- An async sequence wrapping the serializer.\r\n\r\n### Result\r\n\r\nWe can now serialize multipart frames into bytes.\r\n\r\n### Test Plan\r\n\r\nUnit tests for all 3 layers.","shortMessageHtmlLink":"[Multipart] Add the frame -> bytes serializer (#73)"}},{"before":"cefdc80e08be81bdc436bbc28ffe71421bb93af4","after":"ce4fc058f4a2e81bd21aee53bde418a1c6c76470","ref":"refs/heads/main","pushedAt":"2023-11-16T08:40:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"Add README badges (#70)\n\n### Motivation\r\n\r\nSurface the Swift version and platform support status from Swift Package\r\nIndex.\r\n\r\n### Modifications\r\n\r\nAdded badges, plus a quick link to the docc docs, to the top of the\r\nREADME.\r\n\r\n### Result\r\n\r\nEasier to quickly see our support matrix, plus the quick link to docs.\r\n\r\n### Test Plan\r\n\r\nPreviewed locally.","shortMessageHtmlLink":"Add README badges (#70)"}},{"before":"9da9ad67b09d38e307d95ce15fabd9bd0769a80b","after":"cefdc80e08be81bdc436bbc28ffe71421bb93af4","ref":"refs/heads/main","pushedAt":"2023-11-15T08:48:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"[Multipart] Introduce a bytes -> frames parser (#72)\n\n[Multipart] Introduce a bytes -> frames parser\n\n### Motivation\n\nStart landing the parts of the multipart machinery that is unlikely to change as part of the multipart proposal that's finishing review tomorrow.\n\n### Modifications\n\nIntroduce a bytes -> frames parser and an async sequence that wraps it.\n\nA \"frame\" is either the full header fields section or a single chunk of a part body.\n\n### Result\n\nWe can now frame bytes of a multipart body.\n\n### Test Plan\n\nAdded unit tests for the state machine, the parser, and the async sequence.\n\n\nReviewed by: simonjbeaumont\n\nBuilds:\n ✔︎ pull request validation (5.10) - Build finished. \n ✔︎ pull request validation (5.8) - Build finished. \n ✔︎ pull request validation (5.9) - Build finished. \n ✔︎ pull request validation (api breakage) - Build finished. \n ✔︎ pull request validation (docc test) - Build finished. \n ✔︎ pull request validation (integration test) - Build finished. \n ✔︎ pull request validation (nightly) - Build finished. \n ✔︎ pull request validation (soundness) - Build finished. \n\nhttps://github.com/apple/swift-openapi-runtime/pull/72","shortMessageHtmlLink":"[Multipart] Introduce a bytes -> frames parser (#72)"}},{"before":"f6085a3b33dc5267becb13b7217f23f1c891091d","after":"9da9ad67b09d38e307d95ce15fabd9bd0769a80b","ref":"refs/heads/main","pushedAt":"2023-11-09T21:57:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"Base64EncodedData initializer taking an array slice shouldn't have a label (#71)\n\n### Motivation\r\n\r\n- Fixes\r\n[#369](https://github.com/apple/swift-openapi-generator/issues/368)\r\n\r\n### Modifications\r\n\r\n- Remove init label argument from Base64EncodedData\r\n\r\n### Result\r\n\r\n- The Base64EncodedData init will be called without the label.\r\n\r\n### Test Plan\r\n\r\n- Adjust some tests from Test_OpenAPIValue","shortMessageHtmlLink":"Base64EncodedData initializer taking an array slice shouldn't have a …"}},{"before":"a51b3bd6f2151e9a6f792ca6937a7242c4758768","after":"f6085a3b33dc5267becb13b7217f23f1c891091d","ref":"refs/heads/main","pushedAt":"2023-10-31T14:55:52.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"czechboy0","name":"Honza Dvorsky","path":"/czechboy0","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2182121?s=80&v=4"},"commit":{"message":"Apply the same .swift-format as the generator repo (#68)\n\nApply the same .swift-format as the generator repo\n\n### Motivation\r\n\r\nBring the runtime library formatting in line with the generator repo.\r\n\r\nAlso fixes https://github.com/apple/swift-openapi-generator/issues/250.\r\n\r\n### Modifications\r\n\r\nCopied the `.swift-format` file, reran swift-format.\r\n\r\nOnly formatting changes.\r\n\r\n### Result\r\n\r\nConsistent style.\r\n\r\n### Test Plan\r\n\r\nCI.\r\n\n\nReviewed by: gjcairo\n\nBuilds:\n ✔︎ pull request validation (5.10) - Build finished. \n ✔︎ pull request validation (5.8) - Build finished. \n ✔︎ pull request validation (5.9) - Build finished. \n ✔︎ pull request validation (api breakage) - Build finished. \n ✔︎ pull request validation (docc test) - Build finished. \n ✔︎ pull request validation (integration test) - Build finished. \n ✔︎ pull request validation (nightly) - Build finished. \n ✔︎ pull request validation (soundness) - Build finished. \n\nhttps://github.com/apple/swift-openapi-runtime/pull/68","shortMessageHtmlLink":"Apply the same .swift-format as the generator repo (#68)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEMdXLnwA","startCursor":null,"endCursor":null}},"title":"Activity · apple/swift-openapi-runtime"}