{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":167839176,"defaultBranch":"main","name":"ts-proto","ownerLogin":"stephenh","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2019-01-27T17:49:37.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/6401?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1715732102.0","currentOid":""},"activityList":{"items":[{"before":"064665f064e072f9d530f84e45f605fd4b5a749c","after":"d0096d30c8d7e7198802d56d55cef5759e7a5c82","ref":"refs/heads/main","pushedAt":"2024-05-15T00:15:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"chore(release): 1.175.1 [skip ci]\n\n## [1.175.1](https://github.com/stephenh/ts-proto/compare/v1.175.0...v1.175.1) (2024-05-15)\n\n### Bug Fixes\n\n* `outputSchema=true` when `onlyTypes=true` ([#1039](https://github.com/stephenh/ts-proto/issues/1039)) ([064665f](https://github.com/stephenh/ts-proto/commit/064665f064e072f9d530f84e45f605fd4b5a749c))","shortMessageHtmlLink":"chore(release): 1.175.1 [skip ci]"}},{"before":"9c5b588fef354d41d474c416d580e71351a9c864","after":null,"ref":"refs/heads/lalvoeiro/fix-options-with-no-decode-method","pushedAt":"2024-05-15T00:10:29.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"}},{"before":"23bb2f856436a4f2b94b9f168fccae819c5c94c3","after":"064665f064e072f9d530f84e45f605fd4b5a749c","ref":"refs/heads/main","pushedAt":"2024-05-15T00:10:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"fix: `outputSchema=true` when `onlyTypes=true` (#1039)\n\nThis PR aims to fix a conflict that is created between two options that\r\nresults in code that fails to compile. Please note that this is not an\r\nattempt to fix the underlying problem, which I have explained in a TODO\r\ncomment in the code for posterity. I also created new tests to capture\r\nany regressions.\r\n\r\n---------\r\n\r\nCo-authored-by: semantic-release-bot ","shortMessageHtmlLink":"fix: outputSchema=true when onlyTypes=true (#1039)"}},{"before":"8242bedf5e2c30f24fd75f60a646b42ca5482928","after":"9c5b588fef354d41d474c416d580e71351a9c864","ref":"refs/heads/lalvoeiro/fix-options-with-no-decode-method","pushedAt":"2024-05-14T23:02:23.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"lukealvoeiro","name":"Luke Alvoeiro","path":"/lukealvoeiro","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28986906?s=80&v=4"},"commit":{"message":"make test better","shortMessageHtmlLink":"make test better"}},{"before":"46e0c9648623916553fcda1b9bc0fbf8af5e743c","after":"8242bedf5e2c30f24fd75f60a646b42ca5482928","ref":"refs/heads/lalvoeiro/fix-options-with-no-decode-method","pushedAt":"2024-05-14T22:55:24.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"lukealvoeiro","name":"Luke Alvoeiro","path":"/lukealvoeiro","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28986906?s=80&v=4"},"commit":{"message":"Merge branch 'main' into lalvoeiro/fix-options-with-no-decode-method\n\n* main:\n chore(release): 1.175.0 [skip ci]\n feat: optionally output versions used to generate files (#1040)","shortMessageHtmlLink":"Merge branch 'main' into lalvoeiro/fix-options-with-no-decode-method"}},{"before":"53d67995526770213ecf91c15645b9c74e7e5bd4","after":"23bb2f856436a4f2b94b9f168fccae819c5c94c3","ref":"refs/heads/main","pushedAt":"2024-05-13T22:26:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"chore(release): 1.175.0 [skip ci]\n\n# [1.175.0](https://github.com/stephenh/ts-proto/compare/v1.174.0...v1.175.0) (2024-05-13)\n\n### Features\n\n* optionally output versions used to generate files ([#1040](https://github.com/stephenh/ts-proto/issues/1040)) ([53d6799](https://github.com/stephenh/ts-proto/commit/53d67995526770213ecf91c15645b9c74e7e5bd4))","shortMessageHtmlLink":"chore(release): 1.175.0 [skip ci]"}},{"before":"c179c6f3202a89025996d6d18281b36e2336fdaa","after":null,"ref":"refs/heads/lalvoeiro/remove-versioning-on-generated-files","pushedAt":"2024-05-13T22:19:34.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"}},{"before":"d444507abf10ad1cace2d7befc324a92733a0f43","after":"53d67995526770213ecf91c15645b9c74e7e5bd4","ref":"refs/heads/main","pushedAt":"2024-05-13T22:19:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"feat: optionally output versions used to generate files (#1040)\n\n### Description\r\n\r\n- Add the `annotateFilesWithVersion` option so that changes are\r\ncorrectly captured in CI (eliminating noise on each file)\r\n- Added this option to the README","shortMessageHtmlLink":"feat: optionally output versions used to generate files (#1040)"}},{"before":"684a193ba64a24daf41e883042a47d4f3d61a7bf","after":"c179c6f3202a89025996d6d18281b36e2336fdaa","ref":"refs/heads/lalvoeiro/remove-versioning-on-generated-files","pushedAt":"2024-05-13T21:39:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lukealvoeiro","name":"Luke Alvoeiro","path":"/lukealvoeiro","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28986906?s=80&v=4"},"commit":{"message":"missing files","shortMessageHtmlLink":"missing files"}},{"before":"0245a494dea06b4fc2c3ce406c9ede8b4dc2aa3a","after":"684a193ba64a24daf41e883042a47d4f3d61a7bf","ref":"refs/heads/lalvoeiro/remove-versioning-on-generated-files","pushedAt":"2024-05-13T20:59:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lukealvoeiro","name":"Luke Alvoeiro","path":"/lukealvoeiro","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28986906?s=80&v=4"},"commit":{"message":"chore: readme update","shortMessageHtmlLink":"chore: readme update"}},{"before":null,"after":"0245a494dea06b4fc2c3ce406c9ede8b4dc2aa3a","ref":"refs/heads/lalvoeiro/remove-versioning-on-generated-files","pushedAt":"2024-05-13T20:52:59.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"lukealvoeiro","name":"Luke Alvoeiro","path":"/lukealvoeiro","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28986906?s=80&v=4"},"commit":{"message":"make version optional","shortMessageHtmlLink":"make version optional"}},{"before":null,"after":"46e0c9648623916553fcda1b9bc0fbf8af5e743c","ref":"refs/heads/lalvoeiro/fix-options-with-no-decode-method","pushedAt":"2024-05-09T05:52:41.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"lukealvoeiro","name":"Luke Alvoeiro","path":"/lukealvoeiro","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/28986906?s=80&v=4"},"commit":{"message":"test fix","shortMessageHtmlLink":"test fix"}},{"before":"cdd4a76238e292cb00d6a09d84e6b393ddde8204","after":"d444507abf10ad1cace2d7befc324a92733a0f43","ref":"refs/heads/main","pushedAt":"2024-05-01T04:24:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"chore(release): 1.174.0 [skip ci]\n\n# [1.174.0](https://github.com/stephenh/ts-proto/compare/v1.173.0...v1.174.0) (2024-05-01)\n\n### Features\n\n* add generated code comments ([#1037](https://github.com/stephenh/ts-proto/issues/1037)) ([cdd4a76](https://github.com/stephenh/ts-proto/commit/cdd4a76238e292cb00d6a09d84e6b393ddde8204))","shortMessageHtmlLink":"chore(release): 1.174.0 [skip ci]"}},{"before":"577def474e800b887acd1d813dcc7a705a29e004","after":"cdd4a76238e292cb00d6a09d84e6b393ddde8204","ref":"refs/heads/main","pushedAt":"2024-05-01T04:20:30.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"feat: add generated code comments (#1037)\n\nCloses https://github.com/stephenh/ts-proto/issues/531","shortMessageHtmlLink":"feat: add generated code comments (#1037)"}},{"before":"7da4233715e9279d92288e8990f4bbf913b98b0e","after":"577def474e800b887acd1d813dcc7a705a29e004","ref":"refs/heads/main","pushedAt":"2024-04-30T17:26:46.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"docs: add useJsTypeOverride to README (#1036)","shortMessageHtmlLink":"docs: add useJsTypeOverride to README (#1036)"}},{"before":"0dd951bf4d1a4c48f3d261c85cfa03586d20c13c","after":"7da4233715e9279d92288e8990f4bbf913b98b0e","ref":"refs/heads/main","pushedAt":"2024-04-30T04:01:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"chore(release): 1.173.0 [skip ci]\n\n# [1.173.0](https://github.com/stephenh/ts-proto/compare/v1.172.0...v1.173.0) (2024-04-30)\n\n### Features\n\n* Add js type support ([#1030](https://github.com/stephenh/ts-proto/issues/1030)) ([0dd951b](https://github.com/stephenh/ts-proto/commit/0dd951bf4d1a4c48f3d261c85cfa03586d20c13c)), closes [#958](https://github.com/stephenh/ts-proto/issues/958)","shortMessageHtmlLink":"chore(release): 1.173.0 [skip ci]"}},{"before":"bd56cafbce8fa6894c551c5309874e6af594044c","after":"0dd951bf4d1a4c48f3d261c85cfa03586d20c13c","ref":"refs/heads/main","pushedAt":"2024-04-30T03:56:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"feat: Add js type support (#1030)\n\nCloses #958\r\n\r\n---------\r\n\r\nCo-authored-by: Daniel Santiago ","shortMessageHtmlLink":"feat: Add js type support (#1030)"}},{"before":"7c3ac9f215f05841c9a95e0e197795b985b73900","after":"bd56cafbce8fa6894c551c5309874e6af594044c","ref":"refs/heads/main","pushedAt":"2024-04-20T15:52:32.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"chore(deps): update tsx (#1035)\n\nUpdates tsx to suppress these `ExperimentalWarning` messages when\r\nrunning the integration tests, in order the make the output more concise\r\nand less noisy.\r\n\r\n| before | after |\r\n| -------- | ------- |\r\n|\r\n![image](https://github.com/stephenh/ts-proto/assets/10575019/bc18ca18-7b54-4921-8d30-82b415f4ea3e)\r\n|\r\n![image](https://github.com/stephenh/ts-proto/assets/10575019/872f138f-3bba-44ae-a5da-f22fdbbb4fe9)\r\n|","shortMessageHtmlLink":"chore(deps): update tsx (#1035)"}},{"before":"7f36a59d34fa7ff5d3c5c55092c56370508ff33f","after":"7c3ac9f215f05841c9a95e0e197795b985b73900","ref":"refs/heads/main","pushedAt":"2024-04-19T20:25:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"docs: add OneofValue type helper (#1034)\n\nref: https://github.com/stephenh/ts-proto/pull/1023\r\n\r\nIn previous helper, it is not possible to construct a message with the\r\noneof field passed as a function argument.\r\n\r\nThis helper allows for strict type checking and construct message using\r\noneof fields as an argument.\r\n\r\nExample\r\n\r\n```proto\r\nsyntax = \"proto3\";\r\n\r\npackage logs;\r\n\r\nmessage SignUp {\r\n string name = 1;\r\n}\r\n\r\nmessage Login {\r\n string account_id = 1;\r\n}\r\n\r\nmessage Logout {\r\n string account_id = 1;\r\n string reason = 2;\r\n}\r\n\r\nmessage LogPayload {\r\n string created_at = 1;\r\n oneof payload {\r\n SignUp signup = 2;\r\n Login login = 3;\r\n Logout lougout = 4;\r\n }\r\n}\r\n```\r\n\r\n```typesecript\r\n// pass by argument\r\nfoo

(\r\n payload: OneOfValue\r\n) {\r\n const req: LogPayload = {\r\n createdAt: new Date().toUTCString(),\r\n payload,\r\n };\r\n\r\n send(req);\r\n}\r\n```\r\n\r\n```typescript\r\n// Usage\r\n\r\n// Good\r\nthis.foo( {\r\n $case: 'login',\r\n login: {\r\n accountId: 'accountId',\r\n },\r\n});\r\n\r\n// Build Fail because case and field is not matched\r\n// Argument of type '{ $case: string; login: { accountId: string; }; }' is not assignable to parameter of type 'never'.\r\nthis.foo( {\r\n $case: 'logout',\r\n login: {\r\n accountId: 'accountId',\r\n },\r\n});\r\n```\r\n\r\nSigned-off-by: clucle ","shortMessageHtmlLink":"docs: add OneofValue type helper (#1034)"}},{"before":"bdf25e8d3c6d4dee03615ed659a77d802c391ddc","after":"5c29806133b1000b0d4194199f5571da29f07097","ref":"refs/heads/add-missing-files","pushedAt":"2024-04-17T02:48:34.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"Drop v16/v18.","shortMessageHtmlLink":"Drop v16/v18."}},{"before":"84073e166cb0c928c70d7a697cef7aa94647ce51","after":"bdf25e8d3c6d4dee03615ed659a77d802c391ddc","ref":"refs/heads/add-missing-files","pushedAt":"2024-04-17T02:35:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"Skip the extension-import since it uses esModuleInterop.","shortMessageHtmlLink":"Skip the extension-import since it uses esModuleInterop."}},{"before":"2cd7f379489894f1ae19e7deb30d4009fadcc245","after":"84073e166cb0c928c70d7a697cef7aa94647ce51","ref":"refs/heads/add-missing-files","pushedAt":"2024-04-17T02:22:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"Er, remove the line I guess.","shortMessageHtmlLink":"Er, remove the line I guess."}},{"before":"9fb6943ad310cc0a6b6f880edd3b5684435d5873","after":"2cd7f379489894f1ae19e7deb30d4009fadcc245","ref":"refs/heads/add-missing-files","pushedAt":"2024-04-17T02:15:25.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"Format.","shortMessageHtmlLink":"Format."}},{"before":"6b6115a49faff4223aac140f614c04ad1117da85","after":"7f36a59d34fa7ff5d3c5c55092c56370508ff33f","ref":"refs/heads/main","pushedAt":"2024-04-17T00:25:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"ci: update GitHub actions (#1031)","shortMessageHtmlLink":"ci: update GitHub actions (#1031)"}},{"before":"965258656efaa07cc8b72feb8c6b8e202a000940","after":"6b6115a49faff4223aac140f614c04ad1117da85","ref":"refs/heads/main","pushedAt":"2024-04-13T15:55:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"chore(release): 1.172.0 [skip ci]\n\n# [1.172.0](https://github.com/stephenh/ts-proto/compare/v1.171.0...v1.172.0) (2024-04-13)\n\n### Features\n\n* export options types ([#1027](https://github.com/stephenh/ts-proto/issues/1027)) ([9652586](https://github.com/stephenh/ts-proto/commit/965258656efaa07cc8b72feb8c6b8e202a000940))","shortMessageHtmlLink":"chore(release): 1.172.0 [skip ci]"}},{"before":"763abf8632e5e09f721302d936d7786203ae830a","after":"965258656efaa07cc8b72feb8c6b8e202a000940","ref":"refs/heads/main","pushedAt":"2024-04-13T15:51:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"feat: export options types (#1027)\n\nCloses https://github.com/stephenh/ts-proto/issues/1014\r\n\r\nCo-authored-by: Daniel Santiago ","shortMessageHtmlLink":"feat: export options types (#1027)"}},{"before":"573f63e761beef3981539cfbe29f786374186923","after":"763abf8632e5e09f721302d936d7786203ae830a","ref":"refs/heads/main","pushedAt":"2024-03-30T23:01:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"chore(release): 1.171.0 [skip ci]\n\n# [1.171.0](https://github.com/stephenh/ts-proto/compare/v1.170.0...v1.171.0) (2024-03-30)\n\n### Features\n\n* added useNullAsOptional option ([#1017](https://github.com/stephenh/ts-proto/issues/1017)) ([573f63e](https://github.com/stephenh/ts-proto/commit/573f63e761beef3981539cfbe29f786374186923)), closes [#869](https://github.com/stephenh/ts-proto/issues/869)","shortMessageHtmlLink":"chore(release): 1.171.0 [skip ci]"}},{"before":"9727bbac66713e45ee05c189c42222b5e246d60a","after":"573f63e761beef3981539cfbe29f786374186923","ref":"refs/heads/main","pushedAt":"2024-03-30T22:57:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"feat: added useNullAsOptional option (#1017)\n\nChanges:\r\n- with this flag, undefined types will be replaced with null.\r\n- fields with optional label in proto files, will implicitly accept\r\nundefined too.\r\n\r\nthis feature is needed when we wanna have better type alignment with\r\nORMs ( drizzle, typeorm, prisma ) or other services such as Firestore,\r\nsince they mostly ignore `undefined` in their types.\r\n\r\nNote:\r\n\r\n@stephenh as you wanted I made simple, small changes, this works well\r\nfor my `nestjs` project, I'm not very familiar with other\r\nimplementations and frameworks, please check it out and let me know what\r\nyou think. if any changes are required please let me know, I will work\r\nthem out.\r\n\r\nthanks for this amazing library :pray: \r\n\r\ncloses #869","shortMessageHtmlLink":"feat: added useNullAsOptional option (#1017)"}},{"before":"25b3da0ddf4adeff05d16079f690c2282ca2d8a0","after":"9727bbac66713e45ee05c189c42222b5e246d60a","ref":"refs/heads/main","pushedAt":"2024-03-29T23:31:39.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"Document type helpers for oneOfs (#1023)\n\nAdd a section to the documentation that shows some TypeScript types that\r\ncould be useful in working with union-style oneOfs. I've written these a\r\nfew times in different projects so I could properly type helper\r\nfunctions that operate on generated oneOfs, and I figured it might be\r\nuseful to other users of ts-proto.\r\n\r\nAs an example, given the following:\r\n\r\n```ts\r\ninterface MusicPlayerRequest {\r\n command?:\r\n | { $case: \"start\"; start: StartCommand }\r\n | { $case: \"stop\"; stop: StopCommand }\r\n | { $case: \"next\"; list: NextCommand }\r\n | undefined; \r\n}\r\n```\r\n\r\nThen the helpers can be used like this:\r\n\r\n```ts\r\ntype MusicPlayerCommandNames = OneOfCases; // = \"start\" | \"stop\" | \"next\"\r\n\r\ntype MusicPlayerCommands = OneOfValues; // = StartCommand | StopCommand | NextCommand\r\n\r\ntype NextCommandByName = OneOfCase // = NextCommand\r\n\r\nfunction sendCommand(\r\n commandName: MusicPlayerCommandNames, \r\n command: OneOfCase\r\n) {\r\n ...\r\n}\r\n\r\n// The `command` argument is automatically of type NextCommand because the `commandName` argument is \"next\"\r\nsendCommand(\"next\", { skip: 1 }) \r\n```","shortMessageHtmlLink":"Document type helpers for oneOfs (#1023)"}},{"before":"db230041f69fa6a7ff17db55595e7b8805e655ba","after":"25b3da0ddf4adeff05d16079f690c2282ca2d8a0","ref":"refs/heads/main","pushedAt":"2024-03-26T04:52:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"stephenh","name":"Stephen Haberman","path":"/stephenh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6401?s=80&v=4"},"commit":{"message":"chore(release): 1.170.0 [skip ci]\n\n# [1.170.0](https://github.com/stephenh/ts-proto/compare/v1.169.1...v1.170.0) (2024-03-26)\n\n### Features\n\n* support deprecatedOnly option to make deprecated fields optional ([#1010](https://github.com/stephenh/ts-proto/issues/1010)) ([db23004](https://github.com/stephenh/ts-proto/commit/db230041f69fa6a7ff17db55595e7b8805e655ba))","shortMessageHtmlLink":"chore(release): 1.170.0 [skip ci]"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAESgFYvwA","startCursor":null,"endCursor":null}},"title":"Activity ยท stephenh/ts-proto"}