{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":19058393,"defaultBranch":"main","name":"upickle","ownerLogin":"com-lihaoyi","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2014-04-23T05:41:08.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/79346799?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1713278583.0","currentOid":""},"activityList":{"items":[{"before":"32dba7871405c550d93f20ef60caabe14ecf2e21","after":null,"ref":"refs/heads/native0.5","pushedAt":"2024-04-16T14:43:03.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"lefou","name":"Tobias Roeser","path":"/lefou","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1321393?s=80&v=4"}},{"before":"d298266a096aea3439d5a1a704c8b3ee9fe1111b","after":"76663b940d3111b139876ca934bd20d3d08a581a","ref":"refs/heads/gh-pages","pushedAt":"2024-04-15T00:40:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":".","shortMessageHtmlLink":"."}},{"before":"844fb602d36f2ffa3b98a674fd7d14c10bd54b23","after":"3845e9ef57851075756b3d32efe3898e2dc13391","ref":"refs/heads/main","pushedAt":"2024-04-15T00:39:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"3.3.0","shortMessageHtmlLink":"3.3.0"}},{"before":"153efbd23aaff5707feb52e162d89e7acc2ff352","after":"844fb602d36f2ffa3b98a674fd7d14c10bd54b23","ref":"refs/heads/main","pushedAt":"2024-04-15T00:35:43.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"Scala Native 0.5.0 Support (#569)","shortMessageHtmlLink":"Scala Native 0.5.0 Support (#569)"}},{"before":"1bfbb0324db0519b00700e6c300b6e0a832486aa","after":"32dba7871405c550d93f20ef60caabe14ecf2e21","ref":"refs/heads/native0.5","pushedAt":"2024-04-14T14:15:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":".","shortMessageHtmlLink":"."}},{"before":"923cec78708651c964c6c94dfa09917524a33cc4","after":"1bfbb0324db0519b00700e6c300b6e0a832486aa","ref":"refs/heads/native0.5","pushedAt":"2024-04-14T14:14:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":".","shortMessageHtmlLink":"."}},{"before":null,"after":"923cec78708651c964c6c94dfa09917524a33cc4","ref":"refs/heads/native0.5","pushedAt":"2024-04-14T14:00:52.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":".","shortMessageHtmlLink":"."}},{"before":"eb6c30d9013a98cfa533ce5bacb5f9d5490b57b6","after":"d72902ef0807cdc218ff9fe3716f3698cd527f64","ref":"refs/heads/unroll","pushedAt":"2024-03-21T05:34:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"unroll-0.1.12","shortMessageHtmlLink":"unroll-0.1.12"}},{"before":"c87823527b90b9e156d0b42ac6a4daa9fbca3b53","after":"d298266a096aea3439d5a1a704c8b3ee9fe1111b","ref":"refs/heads/gh-pages","pushedAt":"2024-02-16T14:00:52.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"3.2.0","shortMessageHtmlLink":"3.2.0"}},{"before":"d298266a096aea3439d5a1a704c8b3ee9fe1111b","after":"c87823527b90b9e156d0b42ac6a4daa9fbca3b53","ref":"refs/heads/gh-pages","pushedAt":"2024-02-16T13:48:48.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":".","shortMessageHtmlLink":"."}},{"before":"c87823527b90b9e156d0b42ac6a4daa9fbca3b53","after":"d298266a096aea3439d5a1a704c8b3ee9fe1111b","ref":"refs/heads/gh-pages","pushedAt":"2024-02-16T13:06:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"3.2.0","shortMessageHtmlLink":"3.2.0"}},{"before":"8c6e991ab5d4523a3548baf1e859b09fc55f0e04","after":"153efbd23aaff5707feb52e162d89e7acc2ff352","ref":"refs/heads/main","pushedAt":"2024-02-16T12:51:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"3.2.0","shortMessageHtmlLink":"3.2.0"}},{"before":"85380c87894a14a2308150c3e9fb55bc5641687f","after":null,"ref":"refs/heads/large-scala-3","pushedAt":"2024-02-16T12:37:39.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"lolgab","name":"Lorenzo Gabriele","path":"/lolgab","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5793054?s=80&v=4"}},{"before":"5867ddbf91f857082c3b81e962f93eb6dcd9d193","after":"8c6e991ab5d4523a3548baf1e859b09fc55f0e04","ref":"refs/heads/main","pushedAt":"2024-02-16T07:53:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"Turn back on Scala 3 tests, enable big-case-class tests (#557)\n\nTurn on tests to verify\r\nhttps://github.com/com-lihaoyi/upickle/issues/386\r\n\r\nScala 3 tests were accidentally disabled in\r\nhttps://github.com/com-lihaoyi/upickle/pull/553, this re-enables them\r\n\r\nThe big-case-class tests do work, with the caveat you need to set\r\n`-Xmax-inlines` to be greater than the width of your case class, and the\r\ncompilation is notably slower on 3.3.1 than in Scala 213.11. However,\r\nthe performance seems to be better in 3.4.0, and `-Xmax-inlines` is no\r\nlonger necessary.\r\n\r\nFor now, I just add `-Xmax-inlines` and accept the compilation slowness,\r\nso as to not break anyone using Scala 3.3.1. Eventually, as people\r\nupgrade to 3.4.0, the problem can be expected to go away","shortMessageHtmlLink":"Turn back on Scala 3 tests, enable big-case-class tests (#557)"}},{"before":"881aa3f47126fbf6c4579a9605a9497a36bf35f9","after":"85380c87894a14a2308150c3e9fb55bc5641687f","ref":"refs/heads/large-scala-3","pushedAt":"2024-02-16T07:44:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"tweak","shortMessageHtmlLink":"tweak"}},{"before":"d1c3d088f9c5486af5aaf911522652a0e4e93b8d","after":"881aa3f47126fbf6c4579a9605a9497a36bf35f9","ref":"refs/heads/large-scala-3","pushedAt":"2024-02-16T07:42:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":".","shortMessageHtmlLink":"."}},{"before":null,"after":"d1c3d088f9c5486af5aaf911522652a0e4e93b8d","ref":"refs/heads/large-scala-3","pushedAt":"2024-02-16T07:40:50.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":".","shortMessageHtmlLink":"."}},{"before":"55532101520656656551406296641733b30e5241","after":"c87823527b90b9e156d0b42ac6a4daa9fbca3b53","ref":"refs/heads/gh-pages","pushedAt":"2024-02-15T10:33:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":".","shortMessageHtmlLink":"."}},{"before":"0b815932fe8bbe2c2c18e8c44f51f347d1a34cdc","after":"5867ddbf91f857082c3b81e962f93eb6dcd9d193","ref":"refs/heads/main","pushedAt":"2024-02-15T10:31:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"Improve sortKeys (#556)\n\nRather than using string-based sorting all the time, instead we try to\r\nfind patterns where the keys are all numbers, and sort using their\r\nnumeric values instead\r\n\r\nCovered by additional unit tests","shortMessageHtmlLink":"Improve sortKeys (#556)"}},{"before":"e8744ed19ee550dcbe48cf5676b5556632b6f526","after":"7a1452c098b4d89b38112fe9eb31a7dc035d7f06","ref":"refs/heads/improve-sorting","pushedAt":"2024-02-15T10:25:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":".","shortMessageHtmlLink":"."}},{"before":"0b815932fe8bbe2c2c18e8c44f51f347d1a34cdc","after":"e8744ed19ee550dcbe48cf5676b5556632b6f526","ref":"refs/heads/improve-sorting","pushedAt":"2024-02-15T10:07:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":".","shortMessageHtmlLink":"."}},{"before":null,"after":"0b815932fe8bbe2c2c18e8c44f51f347d1a34cdc","ref":"refs/heads/improve-sorting","pushedAt":"2024-02-15T10:07:12.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"Add `sortKeys: Boolean` flag to ujson/upickle APIs (#553)\n\nThis PR allows anyone writing JSON to pass in `sortKeys = true` to make\r\nthe object keys get output in sorted order.\r\n\r\n## Major changes:\r\n\r\n1. Introduced a new `upickle.core.BufferedValue` type. This is a sealed\r\ntrait hierarchy that can be used to capture all the method calls\r\nreceived by a `upickle.core.Visitor`, and re-play them later. It\r\nreplaces `IndexedValue`, which has JSON-specific idiosyncracies (e.g.\r\nconverting MsgPack visitor calls to their JSON equivalents) whereas\r\n`BufferedValue` precisely captures the `Visitor` method calls unchanged.\r\n`IndexedValue` is left for binary compatibility but no longer used\r\ninternally, even its ordering use case of buffering up things until a\r\n`$type` tag is found has been replaced by `BufferedValue`\r\n\r\n2. As part of the generalization from `IndexedValue` to `BufferedValue`,\r\nwe now need to handle non-JSON usage patterns such as non-string-keyed\r\nobjects (e.g. found in msgpack). This makes sorting these objects\r\nnon-trivial, as their keys can now be arbitrary `BufferedValue`s.\r\n`BufferedValue.valueToSortKey` is a rough hack to traverse any\r\nstructured keys and make them sortable.\r\n \r\n3. Intercept all `transform` calls in the primary upickle/ujson APIs\r\nwith `BufferedValue.maybeSortKeysTransform`. This checks the new\r\n`sortKeys` boolean flag, and if true it intercepts the visitor calls,\r\ncaptures them in a `BufferedValue`, recursively traverses and sorts the\r\n`BufferedValue`'s object keys, then re-plays it back out\r\n\r\n4. Binary compatibility stubs have been added to all methods who\r\nreceived a new `sortKeys: Boolean = true` parameter. These stubs were\r\nnot marked as `@Deprecated`, because in some cases the Scala compiler\r\nwould preferentially resolve the stub over the\r\nmethod-with-default-value, causing spurious deprecation warnings.\r\n\r\n## Testing\r\n\r\n1. Sorting functionality is covered by new `sortKeys` unit tests in\r\nuJson and uPickle, and has been added to the `TestUtil.scala` round-trip\r\ntests to ensure that all existing tests exercise the a subset of the\r\n`sortKeys = true` codepaths for JSON and MsgPack and verify that the\r\nround-tripping is still successful\r\n\r\n## Notes\r\n\r\n1. It took a surprising amount of code to make this work well, as it\r\ngoes against uPickle's \"streaming-no-intermediate-data-structures\" way\r\nof doing things. `sortKeys = true` *has* to buffer up some kind of\r\nintermediate JSON AST somewhere. I would expect performance to be worse\r\nthan the default zero-intermediate-datastructures visitor approach, and\r\nso optimizing the `sortKeys = true` code paths was not a priority in\r\nthis PR. If anyone wants maximum performance, they can leave it as the\r\ndefault `sortKeys = false`\r\n\r\n2. The whole `Transformer`/`transform` abstraction in the codebase is\r\nkind of half-baked and unsatisfactory, but I left it mostly as is for\r\nnow with only small tweaks to make things work (e.g. allowing the\r\nimplementation of `BufferedValue.maybeSortKeysTransform` to live in\r\n`upickle.core`). Realistically, the whole name `Transformer` and the\r\nconcept it represents probably needs to be overhauled, but that's out of\r\nscope for this PR\r\n\r\n3. `TestUtil.scala` is getting big and messy, and I'm adding to the\r\nmess. It's probably OK to leave for now, but it could definitely use a\r\ncleanup","shortMessageHtmlLink":"Add sortKeys: Boolean flag to ujson/upickle APIs (#553)"}},{"before":"54e3c3d053a144a3aff073722f2a7f17b58c6225","after":"eb6c30d9013a98cfa533ce5bacb5f9d5490b57b6","ref":"refs/heads/unroll","pushedAt":"2024-02-11T00:39:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":".","shortMessageHtmlLink":"."}},{"before":"7958b0c2a4a0198d11bb0c500d57f3c091e311ff","after":"54e3c3d053a144a3aff073722f2a7f17b58c6225","ref":"refs/heads/unroll","pushedAt":"2024-02-10T11:56:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":".","shortMessageHtmlLink":"."}},{"before":"93c41c8936099302458428802b4b6d173870bc76","after":"7958b0c2a4a0198d11bb0c500d57f3c091e311ff","ref":"refs/heads/unroll","pushedAt":"2024-02-10T01:46:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"0.1.7","shortMessageHtmlLink":"0.1.7"}},{"before":null,"after":"93c41c8936099302458428802b4b6d173870bc76","ref":"refs/heads/unroll","pushedAt":"2024-02-10T00:27:16.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":".","shortMessageHtmlLink":"."}},{"before":"25264af350f05da9fc4777d9e88c2a6cc852c8bd","after":null,"ref":"refs/heads/sortkeys","pushedAt":"2024-02-09T17:54:36.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"lefou","name":"Tobias Roeser","path":"/lefou","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1321393?s=80&v=4"}},{"before":"6e551ac735781b2921913108d5377ceccd7bbed5","after":"0b815932fe8bbe2c2c18e8c44f51f347d1a34cdc","ref":"refs/heads/main","pushedAt":"2024-02-09T14:16:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"Add `sortKeys: Boolean` flag to ujson/upickle APIs (#553)\n\nThis PR allows anyone writing JSON to pass in `sortKeys = true` to make\r\nthe object keys get output in sorted order.\r\n\r\n## Major changes:\r\n\r\n1. Introduced a new `upickle.core.BufferedValue` type. This is a sealed\r\ntrait hierarchy that can be used to capture all the method calls\r\nreceived by a `upickle.core.Visitor`, and re-play them later. It\r\nreplaces `IndexedValue`, which has JSON-specific idiosyncracies (e.g.\r\nconverting MsgPack visitor calls to their JSON equivalents) whereas\r\n`BufferedValue` precisely captures the `Visitor` method calls unchanged.\r\n`IndexedValue` is left for binary compatibility but no longer used\r\ninternally, even its ordering use case of buffering up things until a\r\n`$type` tag is found has been replaced by `BufferedValue`\r\n\r\n2. As part of the generalization from `IndexedValue` to `BufferedValue`,\r\nwe now need to handle non-JSON usage patterns such as non-string-keyed\r\nobjects (e.g. found in msgpack). This makes sorting these objects\r\nnon-trivial, as their keys can now be arbitrary `BufferedValue`s.\r\n`BufferedValue.valueToSortKey` is a rough hack to traverse any\r\nstructured keys and make them sortable.\r\n \r\n3. Intercept all `transform` calls in the primary upickle/ujson APIs\r\nwith `BufferedValue.maybeSortKeysTransform`. This checks the new\r\n`sortKeys` boolean flag, and if true it intercepts the visitor calls,\r\ncaptures them in a `BufferedValue`, recursively traverses and sorts the\r\n`BufferedValue`'s object keys, then re-plays it back out\r\n\r\n4. Binary compatibility stubs have been added to all methods who\r\nreceived a new `sortKeys: Boolean = true` parameter. These stubs were\r\nnot marked as `@Deprecated`, because in some cases the Scala compiler\r\nwould preferentially resolve the stub over the\r\nmethod-with-default-value, causing spurious deprecation warnings.\r\n\r\n## Testing\r\n\r\n1. Sorting functionality is covered by new `sortKeys` unit tests in\r\nuJson and uPickle, and has been added to the `TestUtil.scala` round-trip\r\ntests to ensure that all existing tests exercise the a subset of the\r\n`sortKeys = true` codepaths for JSON and MsgPack and verify that the\r\nround-tripping is still successful\r\n\r\n## Notes\r\n\r\n1. It took a surprising amount of code to make this work well, as it\r\ngoes against uPickle's \"streaming-no-intermediate-data-structures\" way\r\nof doing things. `sortKeys = true` *has* to buffer up some kind of\r\nintermediate JSON AST somewhere. I would expect performance to be worse\r\nthan the default zero-intermediate-datastructures visitor approach, and\r\nso optimizing the `sortKeys = true` code paths was not a priority in\r\nthis PR. If anyone wants maximum performance, they can leave it as the\r\ndefault `sortKeys = false`\r\n\r\n2. The whole `Transformer`/`transform` abstraction in the codebase is\r\nkind of half-baked and unsatisfactory, but I left it mostly as is for\r\nnow with only small tweaks to make things work (e.g. allowing the\r\nimplementation of `BufferedValue.maybeSortKeysTransform` to live in\r\n`upickle.core`). Realistically, the whole name `Transformer` and the\r\nconcept it represents probably needs to be overhauled, but that's out of\r\nscope for this PR\r\n\r\n3. `TestUtil.scala` is getting big and messy, and I'm adding to the\r\nmess. It's probably OK to leave for now, but it could definitely use a\r\ncleanup","shortMessageHtmlLink":"Add sortKeys: Boolean flag to ujson/upickle APIs (#553)"}},{"before":"9fc189ef17ab49f0f5a29af1533a2aa3ea60211e","after":"25264af350f05da9fc4777d9e88c2a6cc852c8bd","ref":"refs/heads/sortkeys","pushedAt":"2024-02-06T02:15:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":"update deprecation comments","shortMessageHtmlLink":"update deprecation comments"}},{"before":"a8424dbe4a24b5e7996fcf5f6b4286d3959f4953","after":"9fc189ef17ab49f0f5a29af1533a2aa3ea60211e","ref":"refs/heads/sortkeys","pushedAt":"2024-02-05T01:40:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lihaoyi","name":"Li Haoyi","path":"/lihaoyi","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/934140?s=80&v=4"},"commit":{"message":".","shortMessageHtmlLink":"."}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEMiDXTwA","startCursor":null,"endCursor":null}},"title":"Activity ยท com-lihaoyi/upickle"}