{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":110981081,"defaultBranch":"master","name":"packageurl-go","ownerLogin":"package-url","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2017-11-16T14:26:14.000Z","ownerAvatar":"https://github.com/avatars/u/33497028?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1715874624.0","currentOid":""},"activityList":{"items":[{"before":"a8ae11954a004a6033288702c7f8ea3b56cf428d","after":"7cb81af9593b9512bb946c55c85609948c48aab9","ref":"refs/heads/master","pushedAt":"2024-03-04T07:06:41.000Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"sschuberth","name":"Sebastian Schuberth","path":"/sschuberth","primaryAvatarUrl":"https://github.com/avatars/u/349154?s=80&v=4"},"commit":{"message":"Merge pull request #68 from ridhoq/dot-slash-valid-subpath-prefix\n\nAdds `./` and `../` as valid subpath prefix","shortMessageHtmlLink":"Merge pull request #68 from ridhoq/dot-slash-valid-subpath-prefix"}},{"before":"fe183c1943ec36f257fae7143e160978217104b6","after":"a8ae11954a004a6033288702c7f8ea3b56cf428d","ref":"refs/heads/master","pushedAt":"2024-03-04T07:02:36.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"sschuberth","name":"Sebastian Schuberth","path":"/sschuberth","primaryAvatarUrl":"https://github.com/avatars/u/349154?s=80&v=4"},"commit":{"message":"Merge pull request #69 from shibumi/fix-ci\n\nFix Github Actions","shortMessageHtmlLink":"Merge pull request #69 from shibumi/fix-ci"}},{"before":"936a4ac9a57852dc4ebe8651aae58b410988d6f1","after":"fe183c1943ec36f257fae7143e160978217104b6","ref":"refs/heads/master","pushedAt":"2023-10-11T04:55:41.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"shibumi","name":"Christian Rebischke","path":"/shibumi","primaryAvatarUrl":"https://github.com/avatars/u/3833685?s=80&v=4"},"commit":{"message":"Merge pull request #66 from magnusbaeck/go-mod-version\n\ngo.mod: Bump required Go version to 1.18","shortMessageHtmlLink":"Merge pull request #66 from magnusbaeck/go-mod-version"}},{"before":"a82223dd263df4d959c961368e727d0d86d266de","after":"936a4ac9a57852dc4ebe8651aae58b410988d6f1","ref":"refs/heads/master","pushedAt":"2023-09-29T10:21:27.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"shibumi","name":"Christian Rebischke","path":"/shibumi","primaryAvatarUrl":"https://github.com/avatars/u/3833685?s=80&v=4"},"commit":{"message":"Add PackageURL.Normalize\n\nFor many integrations external systems use their own structured\nrepresentation of package identifiers rather than Package URLs. In\nthese cases it would be ideal to construct a Package URL with with\nNewPackageURL a then normalize the resulting struct. It avoids the\nneed to render a temporary, non-canon Package URL and parse that to\nachieve normalization.","shortMessageHtmlLink":"Add PackageURL.Normalize"}},{"before":"f8bb31c1f10b5f6013a040d46d207a69e93b5918","after":"a82223dd263df4d959c961368e727d0d86d266de","ref":"refs/heads/master","pushedAt":"2023-08-14T16:31:05.000Z","pushType":"pr_merge","commitsCount":6,"pusher":{"login":"shibumi","name":"Christian Rebischke","path":"/shibumi","primaryAvatarUrl":"https://github.com/avatars/u/3833685?s=80&v=4"},"commit":{"message":"Merge pull request #61 from antgamdia/59-add-knowntypes\n\nAdd known types and candidate types","shortMessageHtmlLink":"Merge pull request #61 from antgamdia/59-add-knowntypes"}},{"before":"dd78cab389a6a50e15118ac42da8340b401788fb","after":"f8bb31c1f10b5f6013a040d46d207a69e93b5918","ref":"refs/heads/master","pushedAt":"2023-08-12T22:38:28.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"shibumi","name":"Christian Rebischke","path":"/shibumi","primaryAvatarUrl":"https://github.com/avatars/u/3833685?s=80&v=4"},"commit":{"message":"Add new purl types\n`pub` and `bitnami`\n\nSigned-off-by: Antonio Gamez Diaz ","shortMessageHtmlLink":"Add new purl types"}},{"before":"3587d8c2829e6fafdfad342e65a3f465a56080fe","after":"dd78cab389a6a50e15118ac42da8340b401788fb","ref":"refs/heads/master","pushedAt":"2023-08-12T22:33:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"shibumi","name":"Christian Rebischke","path":"/shibumi","primaryAvatarUrl":"https://github.com/avatars/u/3833685?s=80&v=4"},"commit":{"message":"fix: escape everything with modified QueryEscape\n\nThis commit switches to using `QueryEscape` for escaping all components.\nHowever, because `QueryEscape` escapes ` ` (space) to `+`, we actually\nchange that to a `%20`, that is the percent-encoded equivalent.\n\n`QueryEscape` was built for HTTP Query parameters, and although there is\n[some discussion](https://stackoverflow.com/questions/2678551/when-should-space-be-encoded-to-plus-or-20)\naround it, escaping ` ` to a `+` is completely valid.\nSadly, other languages like Javascript don't handle that properly, so if\nwe simply used `QueryEscape`, the purl couldn't be parsed by other\nimplementations.\nBy using the universally supported `%20` instead, we restore\ncompatibility.","shortMessageHtmlLink":"fix: escape everything with modified QueryEscape"}},{"before":"564b6fc1cff67081fc32f41eaedbd2fa16789c27","after":"3587d8c2829e6fafdfad342e65a3f465a56080fe","ref":"refs/heads/master","pushedAt":"2023-07-17T21:11:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"shibumi","name":"Christian Rebischke","path":"/shibumi","primaryAvatarUrl":"https://github.com/avatars/u/3833685?s=80&v=4"},"commit":{"message":"fix: escape and unescape name\n\nThis commit adds a small fix that starts path-(un)escaping the `name`\ncomponent of the purl.\n\nThis is required in case of the `name` containing a `/`, which would so\nfar have created a non-roundtrippable purl...","shortMessageHtmlLink":"fix: escape and unescape name"}},{"before":"d72928793f577536a8dc919640794314148a2ca3","after":"564b6fc1cff67081fc32f41eaedbd2fa16789c27","ref":"refs/heads/master","pushedAt":"2023-07-01T22:07:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"shibumi","name":"Christian Rebischke","path":"/shibumi","primaryAvatarUrl":"https://github.com/avatars/u/3833685?s=80&v=4"},"commit":{"message":"fix: use url.URL to encode and decode PURLs\n\nThis commit refactors the `ToString` and `FromString` functions /\nmethods to use the `url.URL` type, instead of trying to parse URLs\ndirectly.\n\nThe [PURL Spec](https://github.com/package-url/purl-spec/blob/master/PURL-SPECIFICATION.rst#a-purl-is-a-url)\nexplicitly says:\n\n> A purl is a URL:\n> A purl is a valid URL and URI that conforms to the URL definitions or\n> specifications ...\n\nSo why not actually use Go's URL type to do operations on it?\n\nThis commit does exactly that, and removes a lot of the previously dense\nparsing-logic with simpler checks based on the URL's fields. Especially\n`ToString()` has gotten a lot simpler through that.\n\nAdditionaly, by switching to the URL package, this commit fixes a couple\nof outstanding bugs:\n- When a qualifier contained `+` signs, which are valid in URL paths,\n but not in URL queries, the sign did not get escaped. The previous\n code relied on `url.PathUnescape` to unescape keys and values, which\n should have used `url.QueryUnescape` instead. Further, encoding\n Qualifiers used `url.PathEscape` instead of `url.QueryEscape`. This\n could have led to pURLs losing `+` signs if they were properly\n encoded.\n- Fixes #51, where spaces in names have not gotten encoded correctly.\n- Fixes most test-cases from #22 that are round-trip-save (e.g. all\n cases where input == output), except the \"pre-encoded qualifier value\n is unchanged\" testcase that is wrong - a qualifier shouldn't be\n encoded with `%20` for a space, but with a plus-sign (query encoding).\n- Fixes most cases from #41 as well, except:\n - where the query encoding in the test-cases are wrong (\" \" -> \"+\",\n \"+\" -> \"%20\") (test-cases `pre-encoded_qualifier_value_is_unchanged`\n and `unencoded_qualifier_value_is_encoded`),\n - `characters_are_unencoded_where_allowed`: `<` should be encoded, as\n far as I can tell. The Go stdlib also encodes it, so this should be\n fine.\n - `explicit_characters_are_encoded`: `@` does not need to be encoded.\n\nWhen reading through that list and all the nuances, it makes it clear\nthat we shouldn't do this ourselves! And this commit doesn't, it simply\nrelies on the Go standard library to handle all of these cases\ncorrectly.\n\nAll of the aforementioned issues should have test-cases, presumably\nadded to the test-suite-data.","shortMessageHtmlLink":"fix: use url.URL to encode and decode PURLs"}},{"before":"584b53a1c9c22b9c2127401c0df206989b6a96a4","after":"d72928793f577536a8dc919640794314148a2ca3","ref":"refs/heads/master","pushedAt":"2023-06-29T10:49:04.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"sschuberth","name":"Sebastian Schuberth","path":"/sschuberth","primaryAvatarUrl":"https://github.com/avatars/u/349154?s=80&v=4"},"commit":{"message":"Merge pull request #40 from noqcks/benji.visser/remove-deprecated-ioutil-usage\n\nRemove deprecated usage of ioutil","shortMessageHtmlLink":"Merge pull request #40 from noqcks/benji.visser/remove-deprecated-iou…"}},{"before":"bdcb431231b00a5ca4587907a6143996661d8e60","after":"584b53a1c9c22b9c2127401c0df206989b6a96a4","ref":"refs/heads/master","pushedAt":"2023-06-28T15:01:21.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"sschuberth","name":"Sebastian Schuberth","path":"/sschuberth","primaryAvatarUrl":"https://github.com/avatars/u/349154?s=80&v=4"},"commit":{"message":"Merge pull request #50 from imjasonh/patch-1\n\nTest using supported Go versions","shortMessageHtmlLink":"Merge pull request #50 from imjasonh/patch-1"}},{"before":"805e3f9b4c4432e77b843baaa950cc36818ab08d","after":"bdcb431231b00a5ca4587907a6143996661d8e60","ref":"refs/heads/master","pushedAt":"2023-06-22T16:37:50.201Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"shibumi","name":"Christian Rebischke","path":"/shibumi","primaryAvatarUrl":"https://github.com/avatars/u/3833685?s=80&v=4"},"commit":{"message":"Add simple fuzz test (#34)\n\n* Add simple fuzz test\r\n\r\nSigned-off-by: Jason Hall \r\n\r\n* Fix fuzz finding, add fuzz tests to GitHub Actions CI\r\n\r\n---------\r\n\r\nSigned-off-by: Jason Hall ","shortMessageHtmlLink":"Add simple fuzz test (#34)"}},{"before":"b2db328f9d5ccd6b12d74932e9dce2d1d3d7a16a","after":"805e3f9b4c4432e77b843baaa950cc36818ab08d","ref":"refs/heads/master","pushedAt":"2023-06-22T16:32:59.095Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"shibumi","name":"Christian Rebischke","path":"/shibumi","primaryAvatarUrl":"https://github.com/avatars/u/3833685?s=80&v=4"},"commit":{"message":"Pull test data from upstream instead of maintaining a local copy\n\nCommit 1f567e34d43b2727fe73403ef0cc246c866f5b85 stopped doing this in\nerror. This commit once again pulls the test data from the upstream so\nthat this repository will stay in sync with the spec. However, now that\nfile is ignored so that this repository doesn't maintain a copy of that\ndata to avoid confusion.\n\nI also needed to fix a test which had an undefined qualifier order, and\nso was failing.\n\nCommit b2db328f9d5ccd6b12d74932e9dce2d1d3d7a16a added new test data,\nbut as that file is being removed, the test data will need to be\nadded to the upstream repo.\n\nCloses #48.","shortMessageHtmlLink":"Pull test data from upstream instead of maintaining a local copy"}},{"before":"f357540a5a5dc29302762058f916e3cc633f98e2","after":"b2db328f9d5ccd6b12d74932e9dce2d1d3d7a16a","ref":"refs/heads/master","pushedAt":"2023-06-22T05:42:48.158Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"shibumi","name":"Christian Rebischke","path":"/shibumi","primaryAvatarUrl":"https://github.com/avatars/u/3833685?s=80&v=4"},"commit":{"message":"feat: add additional purl types\n\nAdded purl types alpm, apk, huggingface and qpkg.\n\nSigned-off-by: Maximilian Combüchen ","shortMessageHtmlLink":"feat: add additional purl types"}},{"before":"358f10025d4a923f7f9babc766f0968720e82240","after":"f357540a5a5dc29302762058f916e3cc633f98e2","ref":"refs/heads/master","pushedAt":"2023-06-20T06:16:04.851Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"sschuberth","name":"Sebastian Schuberth","path":"/sschuberth","primaryAvatarUrl":"https://github.com/avatars/u/349154?s=80&v=4"},"commit":{"message":"Merge pull request #44 from Octogonapus/julia\n\nAdd Julia","shortMessageHtmlLink":"Merge pull request #44 from Octogonapus/julia"}},{"before":"89078438f1709503264de381344c07acebbbf901","after":"358f10025d4a923f7f9babc766f0968720e82240","ref":"refs/heads/master","pushedAt":"2023-06-19T06:37:44.336Z","pushType":"pr_merge","commitsCount":5,"pusher":{"login":"sschuberth","name":"Sebastian Schuberth","path":"/sschuberth","primaryAvatarUrl":"https://github.com/avatars/u/349154?s=80&v=4"},"commit":{"message":"Merge pull request #46 from Octogonapus/fix_tests\n\nFix parsing of some purl types. Fix tests.","shortMessageHtmlLink":"Merge pull request #46 from Octogonapus/fix_tests"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wMy0wNFQwNzowNjo0MS4wMDAwMDBazwAAAAQLbpj8","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wMy0wNFQwNzowNjo0MS4wMDAwMDBazwAAAAQLbpj8","endCursor":"Y3Vyc29yOnYyOpK7MjAyMy0wNi0xOVQwNjozNzo0NC4zMzYyNjZazwAAAANEKIgy"}},"title":"Activity · package-url/packageurl-go"}