Skip to content

Commit 0d8189f

Browse files
dunglasclaude
andauthored
chore: bump deps, bump GitHub Actions, widen Go support matrix (#10)
* chore: bump all deps and widen CI to both maintained Go versions - `go get -u all` + `go mod tidy`, bumping: - github.com/nlnwa/whatwg-url v0.5.0 -> v0.6.2 - github.com/bits-and-blooms/bitset v1.14.3 -> v1.24.4 (indirect) - golang.org/x/exp to 2026-04-10 - golang.org/x/net v0.29.0 -> v0.53.0 (indirect, clears two moderate Dependabot alerts — unreachable per govulncheck but bumped for downstream hygiene) - golang.org/x/text v0.18.0 -> v0.36.0 (indirect) - go directive moves to 1.25.0 so the module builds on every currently maintained Go release (1.25 and 1.26) and no older one. - CI matrix now tests `['oldstable', 'stable']` so both maintained versions are exercised automatically as Go rolls forward. govulncheck reports 0 vulnerabilities. `go test -race ./...` passes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * ci: bump actions, pin toolchain, add lint config - actions/checkout v4 -> v6, actions/setup-go v5 -> v6, golangci/golangci-lint-action v6 -> v9. shogo82148/actions-goveralls stays on v1 (still the current major). - Set GOTOOLCHAIN=local so setup-go's requested Go version is actually used; without it the `oldstable` matrix entry can silently upgrade to `stable` via the toolchain directive. - golangci-lint-action v7+ uses golangci-lint v2, whose default lint set is broader than v1's and trips on three pre-existing style rules. Add a minimal .golangci.yml disabling them with the reason inline: - ST1012: exported FooError variables are public API, renaming would break consumers. - ST1020 / ST1021: exported symbols are documented with a link to the corresponding WHATWG spec paragraph, which is more useful than a synthetic "Foo does..." sentence for a spec-conforming impl. Fix the one DefaultPorts godoc (ST1022) in place rather than silencing it. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * ci: pin lint job to stable Go Without go-version, setup-go defaulted to 1.24 in the lint job, which is below the go.mod 1.25.0 floor; with GOTOOLCHAIN=local preventing auto-upgrade, golangci-lint failed to load packages. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: address review feedback on bump-deps - DefaultPorts godoc: spell out that mutating the exported map is only safe during package initialization / before concurrent use, since it is a plain Go map with no locking. - CI env comment: the go.mod here has no toolchain directive, so rephrase GOTOOLCHAIN=local's rationale in terms of Go's automatic toolchain download behavior in general. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 8af4f1e commit 0d8189f

5 files changed

Lines changed: 81 additions & 27 deletions

File tree

.github/workflows/ci.yaml

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,38 @@ on:
44
push:
55
pull_request:
66

7+
env:
8+
# Pin to the toolchain set up by actions/setup-go so Go does not
9+
# download or switch to a newer one automatically — that would defeat
10+
# the oldstable matrix entry.
11+
GOTOOLCHAIN: local
12+
713
jobs:
814
lint:
915
name: Lint
1016
runs-on: ubuntu-latest
1117
steps:
1218
- name: Check out code
13-
uses: actions/checkout@v4
19+
uses: actions/checkout@v6
1420
- name: Set up Go
15-
uses: actions/setup-go@v5
21+
uses: actions/setup-go@v6
22+
with:
23+
go-version: stable
1624
- name: Lint Go Code
17-
uses: golangci/golangci-lint-action@v6
25+
uses: golangci/golangci-lint-action@v9
1826

1927
test:
2028
name: Test
2129
runs-on: ubuntu-latest
2230
strategy:
2331
fail-fast: false
2432
matrix:
25-
go-version: ['stable']
33+
go-version: ['oldstable', 'stable']
2634
steps:
2735
- name: Checkout
28-
uses: actions/checkout@v4
36+
uses: actions/checkout@v6
2937
- name: Set up Go
30-
uses: actions/setup-go@v5
38+
uses: actions/setup-go@v6
3139
with:
3240
go-version: ${{ matrix.go-version }}
3341
- name: Test

.golangci.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
version: "2"
2+
3+
linters:
4+
settings:
5+
staticcheck:
6+
checks:
7+
- "all"
8+
# ST1012: public API exports FooError variables (NoBaseURLError,
9+
# InvalidPortError, ...). Renaming to ErrFoo would break consumers.
10+
- "-ST1012"
11+
# ST1020/ST1021: exported symbols are documented with their
12+
# corresponding WHATWG spec URL, not a "Foo does..." sentence.
13+
# The URL is the most useful pointer for maintainers of a
14+
# spec-conforming implementation.
15+
- "-ST1020"
16+
- "-ST1021"

go.mod

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
module github.com/dunglas/go-urlpattern
22

3-
go 1.22.0
3+
go 1.25.0
44

55
require (
6-
github.com/nlnwa/whatwg-url v0.5.0
7-
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0
6+
github.com/nlnwa/whatwg-url v0.6.2
7+
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f
88
)
99

1010
require (
11-
github.com/bits-and-blooms/bitset v1.14.3 // indirect
12-
golang.org/x/net v0.29.0 // indirect
13-
golang.org/x/text v0.18.0 // indirect
11+
github.com/bits-and-blooms/bitset v1.24.4 // indirect
12+
golang.org/x/net v0.53.0 // indirect
13+
golang.org/x/text v0.36.0 // indirect
1414
)

go.sum

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,76 @@
1-
github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
2-
github.com/bits-and-blooms/bitset v1.14.3 h1:Gd2c8lSNf9pKXom5JtD7AaKO8o7fGQ2LtFj1436qilA=
3-
github.com/bits-and-blooms/bitset v1.14.3/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
4-
github.com/nlnwa/whatwg-url v0.5.0 h1:l71cqfqG44+VCQZQX3wD4bwheFWicPxuwaCimLEfpDo=
5-
github.com/nlnwa/whatwg-url v0.5.0/go.mod h1:X/ejnFFVbaOWdSul+cnlsSHviCzGZJdvPkgc9zD8IY8=
1+
github.com/bits-and-blooms/bitset v1.20.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
2+
github.com/bits-and-blooms/bitset v1.24.4 h1:95H15Og1clikBrKr/DuzMXkQzECs1M6hhoGXLwLQOZE=
3+
github.com/bits-and-blooms/bitset v1.24.4/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
4+
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
5+
github.com/nlnwa/whatwg-url v0.6.2 h1:jU61lU2ig4LANydbEJmA2nPrtCGiKdtgT0rmMd2VZ/Q=
6+
github.com/nlnwa/whatwg-url v0.6.2/go.mod h1:x0FPXJzzOEieQtsBT/AKvbiBbQ46YlL6Xa7m02M1ECk=
67
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
78
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
89
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
10+
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
911
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
1012
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
11-
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk=
12-
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY=
13+
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
14+
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f h1:W3F4c+6OLc6H2lb//N1q4WpJkhzJCK5J6kUi1NTVXfM=
15+
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f/go.mod h1:J1xhfL/vlindoeF/aINzNzt2Bket5bjo9sdOYzOsU80=
1316
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
1417
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
18+
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
19+
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
20+
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
1521
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
1622
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
1723
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
1824
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
1925
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
26+
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
2027
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
2128
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
22-
golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
23-
golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
29+
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
30+
golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA=
31+
golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs=
2432
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
2533
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
2634
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
35+
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
36+
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
37+
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
38+
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
2739
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
2840
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
2941
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
3042
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
3143
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
3244
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
3345
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
46+
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
3447
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
3548
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
49+
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
50+
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
3651
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
3752
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
3853
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
3954
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
55+
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
4056
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
4157
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
58+
golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
4259
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
4360
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
4461
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
4562
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
4663
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
64+
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
4765
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
4866
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
49-
golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
50-
golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
67+
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
68+
golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg=
69+
golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164=
5170
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
5271
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
5372
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
5473
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
74+
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
75+
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
5576
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

parser.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,19 @@ import (
1414
// https://urlpattern.spec.whatwg.org/#full-wildcard-regexp-value
1515
const fullWildcardRegexpValue = ".*"
1616

17-
// Experimental: this symbol is exported to allow users adding new values, but may be removed in the feature.
18-
// TODO: there is nothing in the Go stdlib to find the default port associated with a protocol.
19-
// Let's just replace values for protocols in specialSchemeSet for now.
20-
// This list could be completed using https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
17+
// DefaultPorts maps a protocol scheme to its default port string.
18+
//
19+
// Callers may add entries for additional schemes, but only during program
20+
// initialization and before any concurrent use of this package: as with
21+
// any Go map, concurrent read/write is not safe.
22+
//
23+
// This is an experimental affordance and the symbol may change or be
24+
// removed in a future release.
25+
//
26+
// TODO: there is nothing in the Go stdlib to find the default port
27+
// associated with a protocol. Only the specialSchemeSet entries are
28+
// populated for now; the list can be completed using
29+
// https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers.
2130
var DefaultPorts = map[string]string{
2231
"http": "80",
2332
"https": "443",

0 commit comments

Comments
 (0)