Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
438 commits
Select commit Hold shift + click to select a range
adb36cd
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
3585d23
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
20f20ee
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
3c1357d
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
af8337a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
73b21b2
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
3ec36d5
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
55c15e4
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
75ce571
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
1ad712c
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
fbda1df
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
759437e
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
b346c79
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
839fb43
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
6a7ae64
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
a7b3fc4
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
fdfc9ee
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
4a09f0a
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
d6a5292
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
067069b
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
8437677
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
4613080
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
4c8cf93
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
57a5b2d
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
573e119
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
2ad8fb9
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
196ac57
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
befec9c
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
5e14f37
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
93a83a2
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
295cc15
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
0cb5db7
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
c3df417
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
6bddffe
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
82cd2a0
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
ff227d1
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
f801bbc
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
67e3e53
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
071fbf2
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
863b0d7
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
b876dc2
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
0fc286f
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
62199ed
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
567cbcd
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
835ace1
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
ac21bf8
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
3e6e476
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
b308b3b
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
a39a08a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
52e9a52
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
1cc31eb
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
d223bf8
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
bee0c09
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
65d0e26
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
1e2475e
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
b7d68e9
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
e8f87dd
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
5e9567d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
fe81d84
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
3e28767
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
6f25129
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
9ac3d2a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
555bc83
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
7c8c92b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
f3e6988
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
5e11d21
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c2a102f
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
52ed2ec
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
e35028b
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
88e0800
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
967e7e4
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
e549f7f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
486bf70
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
4417c38
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
23bcea1
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
43c1823
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
ec4f22a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
e44ca3f
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
bcb6eb7
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
43a27ef
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
a2aff4f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
88642f3
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
503f273
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c4cd3cc
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
e13ccb5
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
f47f86a
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
9929689
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
011108b
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
4721c8d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
6548f34
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
ce5b6a3
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
99f9da1
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
95884bb
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
5ce838f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
09bfb3a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
8090137
Merge branch 'owl-bot-update-lock-312a74489156af12755b58050a7bfaea0c6…
gcf-owl-bot[bot] Aug 13, 2025
6e58d90
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
ae87069
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
6fd59fe
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
137ceb3
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
dfd3a35
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
4deb6f0
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
a4c5919
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
d814d1f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c5701c3
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
9329602
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
b0bb9bf
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
bfc3f13
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
5a72cac
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
af71024
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
079afd6
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
eec794f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
5adeb90
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
a3dfbdc
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
773c131
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
45640c2
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
2ec300d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
0c9da1a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
6586d5c
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
0dba3d4
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
284eb87
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
d47a307
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c8052a4
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
e46506a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
95e660f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
943c42b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
7a088a7
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
9b6429f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
15dc952
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
d207682
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
621fa4d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
281b0e5
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
221a0fa
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
dcc9084
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
f203b03
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
eba4a21
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
0b0020a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
46a1e58
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
0c36f98
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
a601083
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
eda36c6
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
72c7f0d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
a1a7273
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
cfb8368
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
029e559
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
9d5306f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
274f5c4
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
af03eac
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
86326a6
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
21d7b2e
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
92d3b02
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
29b595f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c4e0551
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
19f10da
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
5ab19ae
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
7d011e3
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
b17cbd5
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
1bfce54
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
e0bda7a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
e8043c3
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
5e97e63
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
12e2b63
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
839394b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
3a65e2f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
c19f009
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
2a5a9bf
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
3f97e97
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
eb88fdb
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
9b1ed28
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 13, 2025
f739c46
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
56a7e09
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
d33ab12
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
54639fc
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
1d83683
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
4db42b8
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
3594734
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
386a264
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
68b895f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
9ed5a20
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
4472b3a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
3e6143b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
dbbc164
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
a323795
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
28d62e8
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
8174d3b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
93b8bad
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
7e76a0d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
acfa3c6
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
8bcb232
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
1aa3970
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
dc8ec06
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
25b3696
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
c791754
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
89d79cf
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
9d8de13
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
7907e3e
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
4a2f4e3
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
96f3a07
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
e085ce0
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
404db8f
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
689f802
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
9e28f87
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
27b46d6
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
315f1f0
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
1c1b643
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
7fd70d5
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
edb1500
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
ca2d4f1
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
be2e13e
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
609270d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
299e3e7
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
56b8623
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
47fafcd
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
0d938d6
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
4620419
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
727427b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
63af9c7
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
a6cf476
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
8c6132b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
5d95267
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
60fedf6
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
c9ca831
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
6a2d051
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
af3f662
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
ff3ba6d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
8659e95
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
0216c0d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
90a7f5a
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
5cbe647
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
7f70e12
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
adfc6d7
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
a9b703b
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
a95892e
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
d7a3b9d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
3fc765d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
15bc735
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
d49285d
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
59c954c
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
302a8cf
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
4b4194e
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
0b82762
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
056ca45
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
a287cd6
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
cc1eb13
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
4856c81
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
ee5bd99
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
bdc33d0
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
0dcc478
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
d4928a7
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
729b024
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] Aug 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/.OwlBot.lock.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright 2024 Google LLC
# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-nodejs:latest
digest: sha256:609822e3c09b7a1bd90b99655904609f162cc15acb4704f1edf778284c36f429
# created: 2024-10-01T19:34:30.797530443Z
digest: sha256:312a74489156af12755b58050a7bfaea0c6908698376acc714a589dc7955aba6
# created: 2025-08-13T16:00:29.083454445Z
33 changes: 28 additions & 5 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,30 @@
Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:
- [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/nodejs-logging-winston/issues/new/choose) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea
> Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:

## Description

> Please provide a detailed description for the change.
> As much as possible, please try to keep changes separate by purpose. For example, try not to make a one-line bug fix in a feature request, or add an irrelevant README change to a bug fix.

## Impact

> What's the impact of this change?

## Testing

> Have you added unit and integration tests if necessary?
> Were any tests changed? Are any breaking changes necessary?

## Additional Information

> Any additional details that we should be aware of?

## Checklist

- [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/nodejs-logging-winston/issues/new/choose) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)
- [ ] Code coverage does not decrease
- [ ] Appropriate docs were updated
- [ ] Appropriate comments were added, particularly in complex areas or places that require background
- [ ] No new warnings or issues will be generated from this change

Fixes #<issue_number_goes_here> 🦕
Fixes #issue_number_goes_here 🦕
1 change: 1 addition & 0 deletions .github/release-trigger.yml
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
enabled: true
multiScmName: nodejs-logging-winston
41 changes: 29 additions & 12 deletions .github/scripts/close-invalid-link.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,26 @@
// See the License for the specific language governing permissions and
// limitations under the License.

const fs = require('fs');
const yaml = require('js-yaml');
const path = require('path');
const TEMPLATE_FILE_PATH = path.resolve(__dirname, '../ISSUE_TEMPLATE/bug_report.yml')

async function closeIssue(github, owner, repo, number) {
await github.rest.issues.createComment({
owner: owner,
repo: repo,
issue_number: number,
body: 'Issue was opened with an invalid reproduction link. Please make sure the repository is a valid, publicly-accessible github repository, and make sure the url is complete (example: https://github.com/googleapis/google-cloud-node)'
body: "Issue was opened with an invalid reproduction link. Please make sure the repository is a valid, publicly-accessible github repository, and make sure the url is complete (example: https://github.com/googleapis/google-cloud-node)"
});
await github.rest.issues.update({
owner: owner,
repo: repo,
issue_number: number,
state: 'closed'
state: "closed"
});
}
module.exports = async ({github, context}) => {
module.exports = async ({ github, context }) => {
const owner = context.repo.owner;
const repo = context.repo.repo;
const number = context.issue.number;
Expand All @@ -37,20 +42,32 @@ module.exports = async ({github, context}) => {
issue_number: number,
});

const isBugTemplate = issue.data.body.includes('Link to the code that reproduces this issue');
const yamlData = fs.readFileSync(TEMPLATE_FILE_PATH, 'utf8');
const obj = yaml.load(yamlData);
const linkMatchingText = (obj.body.find(x => {return x.type === 'input' && x.validations.required === true && x.attributes.label.includes('link')})).attributes.label;
const isBugTemplate = issue.data.body.includes(linkMatchingText);

if (isBugTemplate) {
console.log(`Issue ${number} is a bug template`)
try {
const link = issue.data.body.split('\n')[18].match(/(https?:\/\/(gist\.)?github.com\/.*)/)[0];
console.log(`Issue ${number} contains this link: ${link}`)
const isValidLink = (await fetch(link)).ok;
console.log(`Issue ${number} has a ${isValidLink ? 'valid' : 'invalid'} link`)
if (!isValidLink) {
await closeIssue(github, owner, repo, number);
}
const text = issue.data.body;
const match = text.indexOf(linkMatchingText);
if (match !== -1) {
const nextLineIndex = text.indexOf('http', match);
if (nextLineIndex == -1) {
await closeIssue(github, owner, repo, number);
return;
}
const link = text.substring(nextLineIndex, text.indexOf('\n', nextLineIndex));
console.log(`Issue ${number} contains this link: ${link}`);
const isValidLink = (await fetch(link)).ok;
console.log(`Issue ${number} has a ${isValidLink ? "valid" : "invalid"} link`)
if (!isValidLink) {
await closeIssue(github, owner, repo, number);
}
}
} catch (err) {
await closeIssue(github, owner, repo, number);
}
}
};
};
108 changes: 54 additions & 54 deletions .github/scripts/close-unresponsive.cjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2024 Google LLC
/// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand All @@ -13,57 +13,57 @@
// limitations under the License.

function labeledEvent(data) {
return data.event === 'labeled' && data.label.name === 'needs more info';
}

const numberOfDaysLimit = 15;
const close_message = `This has been closed since a request for information has \
not been answered for ${numberOfDaysLimit} days. It can be reopened when the \
requested information is provided.`;

module.exports = async ({github, context}) => {
const owner = context.repo.owner;
const repo = context.repo.repo;

const issues = await github.rest.issues.listForRepo({
owner: owner,
repo: repo,
labels: 'needs more info',
});
const numbers = issues.data.map((e) => e.number);

for (const number of numbers) {
const events = await github.paginate(
github.rest.issues.listEventsForTimeline,
{
owner: owner,
repo: repo,
issue_number: number,
},
(response) => response.data.filter(labeledEvent)
);

const latest_response_label = events[events.length - 1];

const created_at = new Date(latest_response_label.created_at);
const now = new Date();
const diff = now - created_at;
const diffDays = diff / (1000 * 60 * 60 * 24);

if (diffDays > numberOfDaysLimit) {
await github.rest.issues.update({
owner: owner,
repo: repo,
issue_number: number,
state: 'closed',
});

await github.rest.issues.createComment({
owner: owner,
repo: repo,
issue_number: number,
body: close_message,
});
}
return data.event === "labeled" && data.label.name === "needs more info";
}

const numberOfDaysLimit = 15;
const close_message = `This has been closed since a request for information has \
not been answered for ${numberOfDaysLimit} days. It can be reopened when the \
requested information is provided.`;

module.exports = async ({ github, context }) => {
const owner = context.repo.owner;
const repo = context.repo.repo;

const issues = await github.rest.issues.listForRepo({
owner: owner,
repo: repo,
labels: "needs more info",
});
const numbers = issues.data.map((e) => e.number);

for (const number of numbers) {
const events = await github.paginate(
github.rest.issues.listEventsForTimeline,
{
owner: owner,
repo: repo,
issue_number: number,
},
(response) => response.data.filter(labeledEvent)
);

const latest_response_label = events[events.length - 1];

const created_at = new Date(latest_response_label.created_at);
const now = new Date();
const diff = now - created_at;
const diffDays = diff / (1000 * 60 * 60 * 24);

if (diffDays > numberOfDaysLimit) {
await github.rest.issues.update({
owner: owner,
repo: repo,
issue_number: number,
state: "closed",
});

await github.rest.issues.createComment({
owner: owner,
repo: repo,
issue_number: number,
body: close_message,
});
}
};
}
};
50 changes: 50 additions & 0 deletions .github/scripts/fixtures/invalidIssueBody.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
### Please make sure you have searched for information in the following guides.

- [X] Search the issues already opened: https://github.com/GoogleCloudPlatform/google-cloud-node/issues
- [X] Search StackOverflow: http://stackoverflow.com/questions/tagged/google-cloud-platform+node.js
- [X] Check our Troubleshooting guide: https://googlecloudplatform.github.io/google-cloud-node/#/docs/guides/troubleshooting
- [X] Check our FAQ: https://googlecloudplatform.github.io/google-cloud-node/#/docs/guides/faq
- [X] Check our libraries HOW-TO: https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md
- [X] Check out our authentication guide: https://github.com/googleapis/google-auth-library-nodejs
- [X] Check out handwritten samples for many of our APIs: https://github.com/GoogleCloudPlatform/nodejs-docs-samples

### A screenshot that you have tested with "Try this API".


N/A

### Link to the code that reproduces this issue. A link to a **public** Github Repository or gist with a minimal reproduction.

not-a-link

### A step-by-step description of how to reproduce the issue, based on the linked reproduction.


Change MY_PROJECT to your project name, add credentials if needed and run.

### A clear and concise description of what the bug is, and what you expected to happen.

The application crashes with the following exception (which there is no way to catch). It should just emit error, and allow graceful handling.
TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be of type string or an instance of Buffer or Uint8Array. Received an instance of Object
at _write (node:internal/streams/writable:474:13)
at Writable.write (node:internal/streams/writable:502:10)
at Duplexify._write (/project/node_modules/duplexify/index.js:212:22)
at doWrite (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:390:139)
at writeOrBuffer (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:381:5)
at Writable.write (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:302:11)
at Pumpify.<anonymous> (/project/node_modules/@google-cloud/speech/build/src/helpers.js:79:27)
at Object.onceWrapper (node:events:633:26)
at Pumpify.emit (node:events:518:28)
at obj.<computed> [as _write] (/project/node_modules/stubs/index.js:28:22)
at doWrite (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:390:139)
at writeOrBuffer (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:381:5)
at Writable.write (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:302:11)
at PassThrough.ondata (node:internal/streams/readable:1007:22)
at PassThrough.emit (node:events:518:28)
at addChunk (node:internal/streams/readable:559:12) {
code: 'ERR_INVALID_ARG_TYPE'


### A clear and concise description WHY you expect this behavior, i.e., was it a recent change, there is documentation that points to this behavior, etc. **

No library should crash an application this way.
50 changes: 50 additions & 0 deletions .github/scripts/fixtures/validIssueBody.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
### Please make sure you have searched for information in the following guides.

- [X] Search the issues already opened: https://github.com/GoogleCloudPlatform/google-cloud-node/issues
- [X] Search StackOverflow: http://stackoverflow.com/questions/tagged/google-cloud-platform+node.js
- [X] Check our Troubleshooting guide: https://googlecloudplatform.github.io/google-cloud-node/#/docs/guides/troubleshooting
- [X] Check our FAQ: https://googlecloudplatform.github.io/google-cloud-node/#/docs/guides/faq
- [X] Check our libraries HOW-TO: https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md
- [X] Check out our authentication guide: https://github.com/googleapis/google-auth-library-nodejs
- [X] Check out handwritten samples for many of our APIs: https://github.com/GoogleCloudPlatform/nodejs-docs-samples

### A screenshot that you have tested with "Try this API".


N/A

### Link to the code that reproduces this issue. A link to a **public** Github Repository or gist with a minimal reproduction.

https://gist.github.com/orgads/13cbf44c91923da27d8772b5f10489c9

### A step-by-step description of how to reproduce the issue, based on the linked reproduction.


Change MY_PROJECT to your project name, add credentials if needed and run.

### A clear and concise description of what the bug is, and what you expected to happen.

The application crashes with the following exception (which there is no way to catch). It should just emit error, and allow graceful handling.
TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be of type string or an instance of Buffer or Uint8Array. Received an instance of Object
at _write (node:internal/streams/writable:474:13)
at Writable.write (node:internal/streams/writable:502:10)
at Duplexify._write (/project/node_modules/duplexify/index.js:212:22)
at doWrite (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:390:139)
at writeOrBuffer (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:381:5)
at Writable.write (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:302:11)
at Pumpify.<anonymous> (/project/node_modules/@google-cloud/speech/build/src/helpers.js:79:27)
at Object.onceWrapper (node:events:633:26)
at Pumpify.emit (node:events:518:28)
at obj.<computed> [as _write] (/project/node_modules/stubs/index.js:28:22)
at doWrite (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:390:139)
at writeOrBuffer (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:381:5)
at Writable.write (/project/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:302:11)
at PassThrough.ondata (node:internal/streams/readable:1007:22)
at PassThrough.emit (node:events:518:28)
at addChunk (node:internal/streams/readable:559:12) {
code: 'ERR_INVALID_ARG_TYPE'


### A clear and concise description WHY you expect this behavior, i.e., was it a recent change, there is documentation that points to this behavior, etc. **

No library should crash an application this way.
Loading
Loading