From 84f4e3a1ba269f70d7f558a3d08c576b4a73fac4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferdinand=20M=C3=BCtsch?= Date: Mon, 3 Nov 2025 20:40:56 +0100 Subject: [PATCH 1/7] chore: upgrade dependencies --- coverage/coverage.out | 992 +++++++++++++++++++++--------------------- go.mod | 6 +- go.sum | 6 + scripts/go.mod | 31 +- scripts/go.sum | 37 ++ 5 files changed, 559 insertions(+), 513 deletions(-) diff --git a/coverage/coverage.out b/coverage/coverage.out index 76dcd8f..4af9cbf 100644 --- a/coverage/coverage.out +++ b/coverage/coverage.out @@ -202,16 +202,16 @@ github.com/muety/wakapi/config/jobqueue.go:73.2,73.16 1 0 github.com/muety/wakapi/config/jobqueue.go:76.20,77.30 1 0 github.com/muety/wakapi/config/jobqueue.go:77.30,79.3 1 0 github.com/muety/wakapi/config/key_utils.go:10.58,14.44 2 1 -github.com/muety/wakapi/config/key_utils.go:14.44,16.17 2 1 +github.com/muety/wakapi/config/key_utils.go:14.44,16.17 2 0 github.com/muety/wakapi/config/key_utils.go:16.17,18.4 1 0 -github.com/muety/wakapi/config/key_utils.go:19.3,22.17 3 1 +github.com/muety/wakapi/config/key_utils.go:19.3,22.17 3 0 github.com/muety/wakapi/config/key_utils.go:22.17,24.4 1 0 -github.com/muety/wakapi/config/key_utils.go:25.3,25.46 1 1 -github.com/muety/wakapi/config/key_utils.go:29.2,30.16 2 0 +github.com/muety/wakapi/config/key_utils.go:25.3,25.46 1 0 +github.com/muety/wakapi/config/key_utils.go:29.2,30.16 2 1 github.com/muety/wakapi/config/key_utils.go:30.16,32.3 1 0 -github.com/muety/wakapi/config/key_utils.go:33.2,36.51 3 0 +github.com/muety/wakapi/config/key_utils.go:33.2,36.51 3 1 github.com/muety/wakapi/config/key_utils.go:36.51,38.3 1 0 -github.com/muety/wakapi/config/key_utils.go:39.2,39.45 1 0 +github.com/muety/wakapi/config/key_utils.go:39.2,39.45 1 1 github.com/muety/wakapi/config/logging.go:8.29,10.11 2 1 github.com/muety/wakapi/config/logging.go:10.11,12.3 1 1 github.com/muety/wakapi/config/logging.go:12.8,14.3 1 0 @@ -558,129 +558,6 @@ github.com/muety/wakapi/middlewares/sentry.go:27.43,29.4 1 0 github.com/muety/wakapi/middlewares/shared_data.go:32.64,33.43 1 0 github.com/muety/wakapi/middlewares/shared_data.go:33.43,35.3 1 0 github.com/muety/wakapi/middlewares/shared_data.go:38.82,42.2 3 0 -github.com/muety/wakapi/mocks/alias_repository.go:13.65,16.2 2 0 -github.com/muety/wakapi/mocks/alias_repository.go:18.76,21.2 2 0 -github.com/muety/wakapi/mocks/alias_repository.go:23.93,26.2 2 0 -github.com/muety/wakapi/mocks/alias_repository.go:28.109,31.2 2 0 -github.com/muety/wakapi/mocks/alias_repository.go:33.109,36.2 2 0 -github.com/muety/wakapi/mocks/alias_repository.go:38.78,41.2 2 0 -github.com/muety/wakapi/mocks/alias_repository.go:43.52,46.2 2 0 -github.com/muety/wakapi/mocks/alias_repository.go:48.59,51.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:12.57,15.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:17.59,20.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:22.92,25.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:27.73,30.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:32.89,35.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:37.106,40.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:42.75,45.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:47.58,50.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:52.65,55.2 2 0 -github.com/muety/wakapi/mocks/base_repository.go:12.52,15.2 2 0 -github.com/muety/wakapi/mocks/base_repository.go:17.73,20.2 2 0 -github.com/muety/wakapi/mocks/base_repository.go:22.74,25.2 2 0 -github.com/muety/wakapi/mocks/base_repository.go:27.71,30.2 2 0 -github.com/muety/wakapi/mocks/base_repository.go:32.50,33.2 0 0 -github.com/muety/wakapi/mocks/duration_repository.go:15.74,18.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:20.71,23.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:25.118,28.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:30.151,33.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:35.91,38.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:40.110,43.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:45.92,48.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:50.124,53.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:55.157,58.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:60.69,63.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:65.88,68.2 2 0 -github.com/muety/wakapi/mocks/duration_service.go:13.158,16.2 2 0 -github.com/muety/wakapi/mocks/duration_service.go:18.66,20.2 1 0 -github.com/muety/wakapi/mocks/duration_service.go:22.48,23.2 0 0 -github.com/muety/wakapi/mocks/duration_service.go:25.66,28.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:15.66,18.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:20.73,23.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:25.61,28.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:30.78,33.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:35.98,38.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:40.126,43.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:45.123,48.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:50.160,53.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:55.160,58.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:60.76,63.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:65.75,68.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:70.82,73.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:75.81,78.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:80.92,83.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:85.94,88.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:90.113,93.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:95.113,98.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:100.91,103.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:105.67,108.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:110.67,113.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:115.86,118.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:120.146,123.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:125.97,128.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:13.83,16.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:18.78,21.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:23.87,26.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:28.73,31.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:33.60,36.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:38.74,41.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:43.62,46.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:48.76,51.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:53.69,56.2 2 0 -github.com/muety/wakapi/mocks/language_mapping_service.go:12.87,15.2 2 0 -github.com/muety/wakapi/mocks/language_mapping_service.go:17.93,20.2 2 0 -github.com/muety/wakapi/mocks/language_mapping_service.go:22.89,25.2 2 0 -github.com/muety/wakapi/mocks/language_mapping_service.go:27.105,30.2 2 0 -github.com/muety/wakapi/mocks/language_mapping_service.go:32.78,35.2 2 0 -github.com/muety/wakapi/mocks/project_label_service.go:12.81,15.2 2 0 -github.com/muety/wakapi/mocks/project_label_service.go:17.87,20.2 2 0 -github.com/muety/wakapi/mocks/project_label_service.go:22.105,25.2 2 0 -github.com/muety/wakapi/mocks/project_label_service.go:27.113,30.2 2 0 -github.com/muety/wakapi/mocks/project_label_service.go:32.96,35.2 2 0 -github.com/muety/wakapi/mocks/project_label_service.go:37.72,40.2 2 0 -github.com/muety/wakapi/mocks/summary_repository.go:14.65,17.2 2 0 -github.com/muety/wakapi/mocks/summary_repository.go:19.69,22.2 2 0 -github.com/muety/wakapi/mocks/summary_repository.go:24.120,27.2 2 0 -github.com/muety/wakapi/mocks/summary_repository.go:29.79,32.2 2 0 -github.com/muety/wakapi/mocks/summary_repository.go:34.62,37.2 2 0 -github.com/muety/wakapi/mocks/summary_repository.go:39.81,42.2 2 0 -github.com/muety/wakapi/mocks/summary_service.go:14.177,17.2 2 0 -github.com/muety/wakapi/mocks/summary_service.go:19.144,22.2 2 0 -github.com/muety/wakapi/mocks/summary_service.go:24.145,27.2 2 0 -github.com/muety/wakapi/mocks/summary_service.go:29.78,32.2 2 0 -github.com/muety/wakapi/mocks/summary_service.go:34.59,37.2 2 0 -github.com/muety/wakapi/mocks/summary_service.go:39.78,42.2 2 0 -github.com/muety/wakapi/mocks/summary_service.go:44.62,47.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:12.71,14.24 2 0 -github.com/muety/wakapi/mocks/user_service.go:14.24,16.3 1 0 -github.com/muety/wakapi/mocks/user_service.go:17.2,17.50 1 0 -github.com/muety/wakapi/mocks/user_service.go:20.72,23.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:25.74,28.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:30.79,33.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:35.85,38.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:40.78,42.24 2 0 -github.com/muety/wakapi/mocks/user_service.go:42.24,44.3 1 0 -github.com/muety/wakapi/mocks/user_service.go:45.2,45.50 1 0 -github.com/muety/wakapi/mocks/user_service.go:48.60,51.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:53.75,56.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:58.71,61.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:63.86,66.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:68.79,70.23 1 0 -github.com/muety/wakapi/mocks/user_service.go:73.75,76.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:78.85,81.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:83.69,86.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:88.50,91.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:93.63,96.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:98.104,101.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:103.75,106.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:108.59,111.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:113.80,116.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:118.109,121.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:123.87,126.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:128.93,131.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:133.92,136.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:138.40,140.2 1 0 -github.com/muety/wakapi/mocks/user_service.go:142.52,144.2 1 0 github.com/muety/wakapi/middlewares/custom/wakatime.go:31.60,40.2 1 0 github.com/muety/wakapi/middlewares/custom/wakatime.go:42.72,43.71 1 0 github.com/muety/wakapi/middlewares/custom/wakatime.go:43.71,45.3 1 0 @@ -1106,6 +983,197 @@ github.com/muety/wakapi/migrations/shared.go:14.64,17.3 2 0 github.com/muety/wakapi/migrations/shared.go:18.2,18.14 1 0 github.com/muety/wakapi/migrations/shared.go:21.42,25.23 1 0 github.com/muety/wakapi/migrations/shared.go:25.23,27.3 1 0 +github.com/muety/wakapi/mocks/alias_repository.go:13.65,16.2 2 0 +github.com/muety/wakapi/mocks/alias_repository.go:18.76,21.2 2 0 +github.com/muety/wakapi/mocks/alias_repository.go:23.93,26.2 2 0 +github.com/muety/wakapi/mocks/alias_repository.go:28.109,31.2 2 0 +github.com/muety/wakapi/mocks/alias_repository.go:33.109,36.2 2 0 +github.com/muety/wakapi/mocks/alias_repository.go:38.78,41.2 2 0 +github.com/muety/wakapi/mocks/alias_repository.go:43.52,46.2 2 0 +github.com/muety/wakapi/mocks/alias_repository.go:48.59,51.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:12.57,15.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:17.59,20.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:22.92,25.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:27.73,30.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:32.89,35.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:37.106,40.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:42.75,45.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:47.58,50.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:52.65,55.2 2 0 +github.com/muety/wakapi/mocks/base_repository.go:12.52,15.2 2 0 +github.com/muety/wakapi/mocks/base_repository.go:17.73,20.2 2 0 +github.com/muety/wakapi/mocks/base_repository.go:22.74,25.2 2 0 +github.com/muety/wakapi/mocks/base_repository.go:27.71,30.2 2 0 +github.com/muety/wakapi/mocks/base_repository.go:32.50,33.2 0 0 +github.com/muety/wakapi/mocks/duration_repository.go:15.74,18.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:20.71,23.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:25.118,28.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:30.151,33.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:35.91,38.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:40.110,43.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:45.92,48.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:50.124,53.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:55.157,58.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:60.69,63.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:65.88,68.2 2 0 +github.com/muety/wakapi/mocks/duration_service.go:13.158,16.2 2 0 +github.com/muety/wakapi/mocks/duration_service.go:18.66,20.2 1 0 +github.com/muety/wakapi/mocks/duration_service.go:22.48,23.2 0 0 +github.com/muety/wakapi/mocks/duration_service.go:25.66,28.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:15.66,18.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:20.73,23.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:25.61,28.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:30.78,33.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:35.98,38.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:40.126,43.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:45.123,48.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:50.160,53.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:55.160,58.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:60.76,63.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:65.75,68.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:70.82,73.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:75.81,78.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:80.92,83.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:85.94,88.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:90.113,93.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:95.113,98.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:100.91,103.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:105.67,108.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:110.67,113.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:115.86,118.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:120.146,123.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:125.97,128.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:13.83,16.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:18.78,21.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:23.87,26.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:28.73,31.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:33.60,36.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:38.74,41.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:43.62,46.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:48.76,51.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:53.69,56.2 2 0 +github.com/muety/wakapi/mocks/language_mapping_service.go:12.87,15.2 2 0 +github.com/muety/wakapi/mocks/language_mapping_service.go:17.93,20.2 2 0 +github.com/muety/wakapi/mocks/language_mapping_service.go:22.89,25.2 2 0 +github.com/muety/wakapi/mocks/language_mapping_service.go:27.105,30.2 2 0 +github.com/muety/wakapi/mocks/language_mapping_service.go:32.78,35.2 2 0 +github.com/muety/wakapi/mocks/project_label_service.go:12.81,15.2 2 0 +github.com/muety/wakapi/mocks/project_label_service.go:17.87,20.2 2 0 +github.com/muety/wakapi/mocks/project_label_service.go:22.105,25.2 2 0 +github.com/muety/wakapi/mocks/project_label_service.go:27.113,30.2 2 0 +github.com/muety/wakapi/mocks/project_label_service.go:32.96,35.2 2 0 +github.com/muety/wakapi/mocks/project_label_service.go:37.72,40.2 2 0 +github.com/muety/wakapi/mocks/summary_repository.go:14.65,17.2 2 0 +github.com/muety/wakapi/mocks/summary_repository.go:19.69,22.2 2 0 +github.com/muety/wakapi/mocks/summary_repository.go:24.120,27.2 2 0 +github.com/muety/wakapi/mocks/summary_repository.go:29.79,32.2 2 0 +github.com/muety/wakapi/mocks/summary_repository.go:34.62,37.2 2 0 +github.com/muety/wakapi/mocks/summary_repository.go:39.81,42.2 2 0 +github.com/muety/wakapi/mocks/summary_service.go:14.177,17.2 2 0 +github.com/muety/wakapi/mocks/summary_service.go:19.144,22.2 2 0 +github.com/muety/wakapi/mocks/summary_service.go:24.145,27.2 2 0 +github.com/muety/wakapi/mocks/summary_service.go:29.78,32.2 2 0 +github.com/muety/wakapi/mocks/summary_service.go:34.59,37.2 2 0 +github.com/muety/wakapi/mocks/summary_service.go:39.78,42.2 2 0 +github.com/muety/wakapi/mocks/summary_service.go:44.62,47.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:12.71,14.24 2 0 +github.com/muety/wakapi/mocks/user_service.go:14.24,16.3 1 0 +github.com/muety/wakapi/mocks/user_service.go:17.2,17.50 1 0 +github.com/muety/wakapi/mocks/user_service.go:20.72,23.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:25.74,28.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:30.79,33.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:35.85,38.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:40.78,42.24 2 0 +github.com/muety/wakapi/mocks/user_service.go:42.24,44.3 1 0 +github.com/muety/wakapi/mocks/user_service.go:45.2,45.50 1 0 +github.com/muety/wakapi/mocks/user_service.go:48.60,51.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:53.75,56.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:58.71,61.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:63.86,66.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:68.79,70.23 1 0 +github.com/muety/wakapi/mocks/user_service.go:73.75,76.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:78.85,81.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:83.69,86.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:88.50,91.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:93.63,96.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:98.104,101.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:103.75,106.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:108.59,111.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:113.80,116.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:118.109,121.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:123.87,126.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:128.93,131.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:133.92,136.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:138.40,140.2 1 0 +github.com/muety/wakapi/mocks/user_service.go:142.52,144.2 1 0 +github.com/muety/wakapi/models/view/common.go:29.77,34.21 2 0 +github.com/muety/wakapi/models/view/common.go:34.21,36.3 1 0 +github.com/muety/wakapi/models/view/common.go:37.2,37.11 1 0 +github.com/muety/wakapi/models/view/common.go:40.45,42.2 1 0 +github.com/muety/wakapi/models/view/common.go:44.47,46.2 1 0 +github.com/muety/wakapi/models/view/common.go:48.50,49.19 1 0 +github.com/muety/wakapi/models/view/common.go:49.19,51.3 1 0 +github.com/muety/wakapi/models/view/common.go:52.2,52.11 1 0 +github.com/muety/wakapi/models/view/home.go:16.62,19.2 2 0 +github.com/muety/wakapi/models/view/home.go:21.60,24.2 2 0 +github.com/muety/wakapi/models/view/imprint.go:8.68,11.2 2 0 +github.com/muety/wakapi/models/view/imprint.go:13.66,16.2 2 0 +github.com/muety/wakapi/models/view/imprint.go:18.69,21.2 2 0 +github.com/muety/wakapi/models/view/leaderboard.go:20.76,23.2 2 0 +github.com/muety/wakapi/models/view/leaderboard.go:25.74,28.2 2 0 +github.com/muety/wakapi/models/view/leaderboard.go:30.113,31.53 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:31.53,33.3 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:34.2,34.20 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:34.20,36.3 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:37.2,37.20 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:37.20,39.3 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:40.2,40.20 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:40.20,42.3 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:43.2,43.18 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:46.61,48.2 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:50.55,52.19 2 0 +github.com/muety/wakapi/models/view/leaderboard.go:52.19,54.3 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:55.2,55.56 1 0 +github.com/muety/wakapi/models/view/login.go:17.67,19.2 1 0 +github.com/muety/wakapi/models/view/login.go:21.64,24.2 2 0 +github.com/muety/wakapi/models/view/login.go:26.62,29.2 2 0 +github.com/muety/wakapi/models/view/projects.go:19.58,21.2 1 0 +github.com/muety/wakapi/models/view/projects.go:23.65,27.2 3 0 +github.com/muety/wakapi/models/view/projects.go:29.70,32.2 2 0 +github.com/muety/wakapi/models/view/projects.go:34.68,37.2 2 0 +github.com/muety/wakapi/models/view/projects.go:39.49,40.21 1 0 +github.com/muety/wakapi/models/view/projects.go:40.21,41.122 1 0 +github.com/muety/wakapi/models/view/projects.go:41.122,43.4 1 0 +github.com/muety/wakapi/models/view/projects.go:45.2,45.36 1 0 +github.com/muety/wakapi/models/view/projects.go:48.75,56.2 3 0 +github.com/muety/wakapi/models/view/settings.go:33.57,35.2 1 0 +github.com/muety/wakapi/models/view/settings.go:37.70,40.2 2 0 +github.com/muety/wakapi/models/view/settings.go:42.68,45.2 2 0 +github.com/muety/wakapi/models/view/summary.go:53.77,55.36 2 0 +github.com/muety/wakapi/models/view/summary.go:55.36,58.100 1 0 +github.com/muety/wakapi/models/view/summary.go:58.100,63.5 1 0 +github.com/muety/wakapi/models/view/summary.go:66.2,66.11 1 0 +github.com/muety/wakapi/models/view/summary.go:69.109,71.78 1 0 +github.com/muety/wakapi/models/view/summary.go:71.78,78.4 1 0 +github.com/muety/wakapi/models/view/summary.go:80.2,80.109 1 0 +github.com/muety/wakapi/models/view/summary.go:80.109,84.3 3 0 +github.com/muety/wakapi/models/view/summary.go:86.2,86.25 1 0 +github.com/muety/wakapi/models/view/summary.go:89.88,90.86 1 0 +github.com/muety/wakapi/models/view/summary.go:90.86,90.109 1 0 +github.com/muety/wakapi/models/view/summary.go:92.2,93.49 2 0 +github.com/muety/wakapi/models/view/summary.go:93.49,98.3 1 0 +github.com/muety/wakapi/models/view/summary.go:100.2,100.124 1 0 +github.com/muety/wakapi/models/view/summary.go:100.124,101.65 1 0 +github.com/muety/wakapi/models/view/summary.go:101.65,103.4 1 0 +github.com/muety/wakapi/models/view/summary.go:104.3,104.14 1 0 +github.com/muety/wakapi/models/view/summary.go:107.2,107.30 1 0 +github.com/muety/wakapi/models/view/summary.go:110.51,117.2 2 0 +github.com/muety/wakapi/models/view/summary.go:119.68,122.2 2 0 +github.com/muety/wakapi/models/view/summary.go:124.66,127.2 2 0 +github.com/muety/wakapi/models/view/utils.go:5.46,33.55 2 0 +github.com/muety/wakapi/models/view/utils.go:33.55,35.3 1 0 +github.com/muety/wakapi/models/view/utils.go:36.2,36.11 1 0 +github.com/muety/wakapi/models/view/utils.go:39.50,51.2 3 0 github.com/muety/wakapi/models/compat/wakatime/v1/all_time.go:30.64,47.2 3 0 github.com/muety/wakapi/models/compat/wakatime/v1/heartbeat.go:27.46,28.76 1 0 github.com/muety/wakapi/models/compat/wakatime/v1/heartbeat.go:28.76,30.3 1 0 @@ -1185,6 +1253,26 @@ github.com/muety/wakapi/models/compat/wakatime/v1/user.go:47.43,49.3 1 0 github.com/muety/wakapi/models/compat/wakatime/v1/user.go:51.2,60.3 1 0 github.com/muety/wakapi/models/compat/wakatime/v1/user.go:63.63,68.2 4 0 github.com/muety/wakapi/models/compat/wakatime/v1/user_agent.go:26.81,34.2 7 0 +github.com/muety/wakapi/models/metrics/counter_metric.go:12.37,14.2 1 0 +github.com/muety/wakapi/models/metrics/counter_metric.go:16.39,18.2 1 0 +github.com/muety/wakapi/models/metrics/counter_metric.go:20.40,22.2 1 0 +github.com/muety/wakapi/models/metrics/gauge_metric.go:12.35,14.2 1 0 +github.com/muety/wakapi/models/metrics/gauge_metric.go:16.37,18.2 1 0 +github.com/muety/wakapi/models/metrics/gauge_metric.go:20.38,22.2 1 0 +github.com/muety/wakapi/models/metrics/label.go:15.32,17.22 2 0 +github.com/muety/wakapi/models/metrics/label.go:17.22,19.3 1 0 +github.com/muety/wakapi/models/metrics/label.go:20.2,20.17 1 0 +github.com/muety/wakapi/models/metrics/label.go:20.17,22.3 1 0 +github.com/muety/wakapi/models/metrics/label.go:23.2,23.62 1 0 +github.com/muety/wakapi/models/metrics/label.go:26.31,28.2 1 0 +github.com/muety/wakapi/models/metrics/metric.go:14.42,16.22 2 0 +github.com/muety/wakapi/models/metrics/metric.go:16.22,17.44 1 0 +github.com/muety/wakapi/models/metrics/metric.go:17.44,20.4 2 0 +github.com/muety/wakapi/models/metrics/metric.go:21.3,21.43 1 0 +github.com/muety/wakapi/models/metrics/metric.go:24.2,24.15 1 0 +github.com/muety/wakapi/models/metrics/metric.go:27.28,29.2 1 0 +github.com/muety/wakapi/models/metrics/metric.go:31.38,33.2 1 0 +github.com/muety/wakapi/models/metrics/metric.go:35.33,37.2 1 0 github.com/muety/wakapi/models/compat/shields/v1/badge.go:22.59,29.2 1 0 github.com/muety/wakapi/repositories/alias.go:13.55,15.2 1 0 github.com/muety/wakapi/repositories/alias.go:17.61,19.50 2 0 @@ -1579,94 +1667,6 @@ github.com/muety/wakapi/repositories/user.go:226.22,229.3 2 0 github.com/muety/wakapi/repositories/user.go:230.2,230.50 1 0 github.com/muety/wakapi/repositories/user.go:230.50,232.3 1 0 github.com/muety/wakapi/repositories/user.go:233.2,233.12 1 0 -github.com/muety/wakapi/models/metrics/counter_metric.go:12.37,14.2 1 0 -github.com/muety/wakapi/models/metrics/counter_metric.go:16.39,18.2 1 0 -github.com/muety/wakapi/models/metrics/counter_metric.go:20.40,22.2 1 0 -github.com/muety/wakapi/models/metrics/gauge_metric.go:12.35,14.2 1 0 -github.com/muety/wakapi/models/metrics/gauge_metric.go:16.37,18.2 1 0 -github.com/muety/wakapi/models/metrics/gauge_metric.go:20.38,22.2 1 0 -github.com/muety/wakapi/models/metrics/label.go:15.32,17.22 2 0 -github.com/muety/wakapi/models/metrics/label.go:17.22,19.3 1 0 -github.com/muety/wakapi/models/metrics/label.go:20.2,20.17 1 0 -github.com/muety/wakapi/models/metrics/label.go:20.17,22.3 1 0 -github.com/muety/wakapi/models/metrics/label.go:23.2,23.62 1 0 -github.com/muety/wakapi/models/metrics/label.go:26.31,28.2 1 0 -github.com/muety/wakapi/models/metrics/metric.go:14.42,16.22 2 0 -github.com/muety/wakapi/models/metrics/metric.go:16.22,17.44 1 0 -github.com/muety/wakapi/models/metrics/metric.go:17.44,20.4 2 0 -github.com/muety/wakapi/models/metrics/metric.go:21.3,21.43 1 0 -github.com/muety/wakapi/models/metrics/metric.go:24.2,24.15 1 0 -github.com/muety/wakapi/models/metrics/metric.go:27.28,29.2 1 0 -github.com/muety/wakapi/models/metrics/metric.go:31.38,33.2 1 0 -github.com/muety/wakapi/models/metrics/metric.go:35.33,37.2 1 0 -github.com/muety/wakapi/models/view/common.go:29.77,34.21 2 0 -github.com/muety/wakapi/models/view/common.go:34.21,36.3 1 0 -github.com/muety/wakapi/models/view/common.go:37.2,37.11 1 0 -github.com/muety/wakapi/models/view/common.go:40.45,42.2 1 0 -github.com/muety/wakapi/models/view/common.go:44.47,46.2 1 0 -github.com/muety/wakapi/models/view/common.go:48.50,49.19 1 0 -github.com/muety/wakapi/models/view/common.go:49.19,51.3 1 0 -github.com/muety/wakapi/models/view/common.go:52.2,52.11 1 0 -github.com/muety/wakapi/models/view/home.go:16.62,19.2 2 0 -github.com/muety/wakapi/models/view/home.go:21.60,24.2 2 0 -github.com/muety/wakapi/models/view/imprint.go:8.68,11.2 2 0 -github.com/muety/wakapi/models/view/imprint.go:13.66,16.2 2 0 -github.com/muety/wakapi/models/view/imprint.go:18.69,21.2 2 0 -github.com/muety/wakapi/models/view/leaderboard.go:20.76,23.2 2 0 -github.com/muety/wakapi/models/view/leaderboard.go:25.74,28.2 2 0 -github.com/muety/wakapi/models/view/leaderboard.go:30.113,31.53 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:31.53,33.3 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:34.2,34.20 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:34.20,36.3 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:37.2,37.20 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:37.20,39.3 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:40.2,40.20 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:40.20,42.3 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:43.2,43.18 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:46.61,48.2 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:50.55,52.19 2 0 -github.com/muety/wakapi/models/view/leaderboard.go:52.19,54.3 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:55.2,55.56 1 0 -github.com/muety/wakapi/models/view/login.go:17.67,19.2 1 0 -github.com/muety/wakapi/models/view/login.go:21.64,24.2 2 0 -github.com/muety/wakapi/models/view/login.go:26.62,29.2 2 0 -github.com/muety/wakapi/models/view/projects.go:19.58,21.2 1 0 -github.com/muety/wakapi/models/view/projects.go:23.65,27.2 3 0 -github.com/muety/wakapi/models/view/projects.go:29.70,32.2 2 0 -github.com/muety/wakapi/models/view/projects.go:34.68,37.2 2 0 -github.com/muety/wakapi/models/view/projects.go:39.49,40.21 1 0 -github.com/muety/wakapi/models/view/projects.go:40.21,41.122 1 0 -github.com/muety/wakapi/models/view/projects.go:41.122,43.4 1 0 -github.com/muety/wakapi/models/view/projects.go:45.2,45.36 1 0 -github.com/muety/wakapi/models/view/projects.go:48.75,56.2 3 0 -github.com/muety/wakapi/models/view/settings.go:33.57,35.2 1 0 -github.com/muety/wakapi/models/view/settings.go:37.70,40.2 2 0 -github.com/muety/wakapi/models/view/settings.go:42.68,45.2 2 0 -github.com/muety/wakapi/models/view/summary.go:53.77,55.36 2 0 -github.com/muety/wakapi/models/view/summary.go:55.36,58.100 1 0 -github.com/muety/wakapi/models/view/summary.go:58.100,63.5 1 0 -github.com/muety/wakapi/models/view/summary.go:66.2,66.11 1 0 -github.com/muety/wakapi/models/view/summary.go:69.109,71.78 1 0 -github.com/muety/wakapi/models/view/summary.go:71.78,78.4 1 0 -github.com/muety/wakapi/models/view/summary.go:80.2,80.109 1 0 -github.com/muety/wakapi/models/view/summary.go:80.109,84.3 3 0 -github.com/muety/wakapi/models/view/summary.go:86.2,86.25 1 0 -github.com/muety/wakapi/models/view/summary.go:89.88,90.86 1 0 -github.com/muety/wakapi/models/view/summary.go:90.86,90.109 1 0 -github.com/muety/wakapi/models/view/summary.go:92.2,93.49 2 0 -github.com/muety/wakapi/models/view/summary.go:93.49,98.3 1 0 -github.com/muety/wakapi/models/view/summary.go:100.2,100.124 1 0 -github.com/muety/wakapi/models/view/summary.go:100.124,101.65 1 0 -github.com/muety/wakapi/models/view/summary.go:101.65,103.4 1 0 -github.com/muety/wakapi/models/view/summary.go:104.3,104.14 1 0 -github.com/muety/wakapi/models/view/summary.go:107.2,107.30 1 0 -github.com/muety/wakapi/models/view/summary.go:110.51,117.2 2 0 -github.com/muety/wakapi/models/view/summary.go:119.68,122.2 2 0 -github.com/muety/wakapi/models/view/summary.go:124.66,127.2 2 0 -github.com/muety/wakapi/models/view/utils.go:5.46,33.55 2 0 -github.com/muety/wakapi/models/view/utils.go:33.55,35.3 1 0 -github.com/muety/wakapi/models/view/utils.go:36.2,36.11 1 0 -github.com/muety/wakapi/models/view/utils.go:39.50,51.2 3 0 github.com/muety/wakapi/models/alias.go:20.32,25.2 1 0 github.com/muety/wakapi/models/alias.go:27.37,28.35 1 0 github.com/muety/wakapi/models/alias.go:28.35,29.18 1 0 @@ -3343,284 +3343,6 @@ github.com/muety/wakapi/routes/summary.go:162.17,164.4 1 0 github.com/muety/wakapi/routes/summary.go:165.3,165.44 1 0 github.com/muety/wakapi/routes/summary.go:167.2,167.23 1 0 github.com/muety/wakapi/routes/test_utils.go:12.69,19.2 6 1 -github.com/muety/wakapi/utils/auth.go:15.79,17.54 2 0 -github.com/muety/wakapi/utils/auth.go:17.54,19.3 1 0 -github.com/muety/wakapi/utils/auth.go:21.2,23.16 3 0 -github.com/muety/wakapi/utils/auth.go:23.16,25.3 1 0 -github.com/muety/wakapi/utils/auth.go:27.2,29.45 3 0 -github.com/muety/wakapi/utils/auth.go:29.45,31.3 1 0 -github.com/muety/wakapi/utils/auth.go:32.2,33.32 2 0 -github.com/muety/wakapi/utils/auth.go:36.65,38.85 2 0 -github.com/muety/wakapi/utils/auth.go:38.85,40.3 1 0 -github.com/muety/wakapi/utils/auth.go:42.2,43.30 2 0 -github.com/muety/wakapi/utils/auth.go:48.57,49.34 1 0 -github.com/muety/wakapi/utils/auth.go:49.34,51.3 1 0 -github.com/muety/wakapi/utils/auth.go:52.2,52.45 1 0 -github.com/muety/wakapi/utils/auth.go:55.57,57.2 1 0 -github.com/muety/wakapi/utils/auth.go:59.55,63.2 3 0 -github.com/muety/wakapi/utils/auth.go:65.55,68.16 3 0 -github.com/muety/wakapi/utils/auth.go:68.16,70.3 1 0 -github.com/muety/wakapi/utils/auth.go:71.2,71.16 1 0 -github.com/muety/wakapi/utils/auth.go:74.57,78.2 3 0 -github.com/muety/wakapi/utils/auth.go:80.57,83.16 3 0 -github.com/muety/wakapi/utils/auth.go:83.16,85.3 1 0 -github.com/muety/wakapi/utils/auth.go:86.2,86.16 1 0 -github.com/muety/wakapi/utils/collection.go:7.52,8.28 1 0 -github.com/muety/wakapi/utils/collection.go:8.28,10.3 1 0 -github.com/muety/wakapi/utils/collection.go:11.2,11.26 1 0 -github.com/muety/wakapi/utils/collection.go:11.26,13.3 1 0 -github.com/muety/wakapi/utils/collection.go:14.2,14.28 1 0 -github.com/muety/wakapi/utils/collection.go:17.78,19.22 2 0 -github.com/muety/wakapi/utils/collection.go:19.22,20.18 1 0 -github.com/muety/wakapi/utils/collection.go:20.18,22.4 1 0 -github.com/muety/wakapi/utils/collection.go:23.3,23.12 1 0 -github.com/muety/wakapi/utils/collection.go:25.2,25.11 1 0 -github.com/muety/wakapi/utils/color.go:8.41,11.16 2 0 -github.com/muety/wakapi/utils/color.go:12.9,13.51 1 0 -github.com/muety/wakapi/utils/color.go:14.9,18.12 4 0 -github.com/muety/wakapi/utils/color.go:20.2,20.8 1 0 -github.com/muety/wakapi/utils/color.go:23.37,25.2 1 0 -github.com/muety/wakapi/utils/color.go:27.70,28.15 1 0 -github.com/muety/wakapi/utils/color.go:28.15,30.3 1 0 -github.com/muety/wakapi/utils/color.go:30.8,30.22 1 0 -github.com/muety/wakapi/utils/color.go:30.22,32.3 1 0 -github.com/muety/wakapi/utils/color.go:34.2,39.43 5 0 -github.com/muety/wakapi/utils/cron.go:5.44,7.21 2 0 -github.com/muety/wakapi/utils/cron.go:7.21,9.3 1 0 -github.com/muety/wakapi/utils/cron.go:10.2,10.20 1 0 -github.com/muety/wakapi/utils/date.go:10.26,12.2 1 0 -github.com/muety/wakapi/utils/date.go:14.52,17.2 2 0 -github.com/muety/wakapi/utils/date.go:19.48,21.2 1 0 -github.com/muety/wakapi/utils/date.go:23.77,25.2 1 0 -github.com/muety/wakapi/utils/date.go:27.52,29.2 1 0 -github.com/muety/wakapi/utils/date.go:31.51,33.2 1 0 -github.com/muety/wakapi/utils/date.go:36.41,38.21 2 0 -github.com/muety/wakapi/utils/date.go:38.21,40.3 1 0 -github.com/muety/wakapi/utils/date.go:41.2,41.33 1 0 -github.com/muety/wakapi/utils/date.go:45.67,48.33 2 1 -github.com/muety/wakapi/utils/date.go:48.33,51.15 2 1 -github.com/muety/wakapi/utils/date.go:51.15,53.12 2 1 -github.com/muety/wakapi/utils/date.go:55.3,55.19 1 1 -github.com/muety/wakapi/utils/date.go:55.19,57.4 1 1 -github.com/muety/wakapi/utils/date.go:58.3,59.10 2 1 -github.com/muety/wakapi/utils/date.go:62.2,62.18 1 1 -github.com/muety/wakapi/utils/date.go:66.36,69.2 2 0 -github.com/muety/wakapi/utils/date.go:72.57,74.2 1 0 -github.com/muety/wakapi/utils/date.go:76.42,77.28 1 0 -github.com/muety/wakapi/utils/date.go:78.52,79.21 1 0 -github.com/muety/wakapi/utils/date.go:80.53,81.22 1 0 -github.com/muety/wakapi/utils/date.go:82.55,83.24 1 0 -github.com/muety/wakapi/utils/date.go:84.54,85.23 1 0 -github.com/muety/wakapi/utils/date.go:86.52,87.21 1 0 -github.com/muety/wakapi/utils/date.go:88.54,89.23 1 0 -github.com/muety/wakapi/utils/date.go:90.52,91.21 1 0 -github.com/muety/wakapi/utils/date.go:93.2,93.20 1 0 -github.com/muety/wakapi/utils/db.go:12.34,13.37 1 0 -github.com/muety/wakapi/utils/db.go:13.37,15.110 2 0 -github.com/muety/wakapi/utils/db.go:15.110,18.4 2 0 -github.com/muety/wakapi/utils/db.go:19.3,19.20 1 0 -github.com/muety/wakapi/utils/db.go:21.2,22.14 2 0 -github.com/muety/wakapi/utils/db.go:25.39,26.37 1 0 -github.com/muety/wakapi/utils/db.go:26.37,28.119 2 0 -github.com/muety/wakapi/utils/db.go:28.119,31.4 2 0 -github.com/muety/wakapi/utils/db.go:32.3,32.20 1 0 -github.com/muety/wakapi/utils/db.go:34.2,35.14 2 0 -github.com/muety/wakapi/utils/db.go:38.66,39.48 1 0 -github.com/muety/wakapi/utils/db.go:39.48,41.3 1 0 -github.com/muety/wakapi/utils/db.go:42.2,42.53 1 0 -github.com/muety/wakapi/utils/db.go:45.59,46.16 1 0 -github.com/muety/wakapi/utils/db.go:46.16,48.3 1 0 -github.com/muety/wakapi/utils/db.go:49.2,49.15 1 0 -github.com/muety/wakapi/utils/db.go:49.15,51.3 1 0 -github.com/muety/wakapi/utils/db.go:52.2,52.14 1 0 -github.com/muety/wakapi/utils/db.go:59.47,61.2 1 0 -github.com/muety/wakapi/utils/db.go:63.60,65.2 1 0 -github.com/muety/wakapi/utils/db.go:68.63,72.2 3 0 -github.com/muety/wakapi/utils/db.go:75.80,77.41 2 0 -github.com/muety/wakapi/utils/db.go:77.41,79.3 1 0 -github.com/muety/wakapi/utils/db.go:80.2,80.57 1 0 -github.com/muety/wakapi/utils/dns.go:9.38,11.21 2 0 -github.com/muety/wakapi/utils/dns.go:11.21,13.3 1 0 -github.com/muety/wakapi/utils/dns.go:14.2,15.39 2 0 -github.com/muety/wakapi/utils/func.go:10.77,11.15 1 0 -github.com/muety/wakapi/utils/func.go:11.15,12.31 1 0 -github.com/muety/wakapi/utils/func.go:12.31,16.4 3 0 -github.com/muety/wakapi/utils/func.go:18.2,19.12 2 0 -github.com/muety/wakapi/utils/func.go:23.57,24.48 1 0 -github.com/muety/wakapi/utils/func.go:24.48,26.3 1 0 -github.com/muety/wakapi/utils/http.go:29.13,32.2 2 1 -github.com/muety/wakapi/utils/http.go:39.34,40.20 1 0 -github.com/muety/wakapi/utils/http.go:40.20,42.3 1 0 -github.com/muety/wakapi/utils/http.go:43.2,43.19 1 0 -github.com/muety/wakapi/utils/http.go:46.35,47.21 1 0 -github.com/muety/wakapi/utils/http.go:47.21,49.3 1 0 -github.com/muety/wakapi/utils/http.go:50.2,50.34 1 0 -github.com/muety/wakapi/utils/http.go:54.62,56.48 2 0 -github.com/muety/wakapi/utils/http.go:56.48,58.3 1 0 -github.com/muety/wakapi/utils/http.go:59.2,59.93 1 0 -github.com/muety/wakapi/utils/http.go:59.93,60.89 1 0 -github.com/muety/wakapi/utils/http.go:60.89,62.4 1 0 -github.com/muety/wakapi/utils/http.go:64.2,64.14 1 0 -github.com/muety/wakapi/utils/http.go:67.51,71.46 4 0 -github.com/muety/wakapi/utils/http.go:71.46,73.3 1 0 -github.com/muety/wakapi/utils/http.go:74.2,74.73 1 0 -github.com/muety/wakapi/utils/http.go:74.73,76.3 1 0 -github.com/muety/wakapi/utils/http.go:77.2,77.19 1 0 -github.com/muety/wakapi/utils/http.go:80.78,82.26 2 0 -github.com/muety/wakapi/utils/http.go:82.26,84.3 1 0 -github.com/muety/wakapi/utils/http.go:85.2,85.30 1 0 -github.com/muety/wakapi/utils/http.go:85.30,87.3 1 0 -github.com/muety/wakapi/utils/http.go:88.2,88.19 1 0 -github.com/muety/wakapi/utils/http.go:91.56,98.97 2 1 -github.com/muety/wakapi/utils/http.go:98.97,101.18 2 1 -github.com/muety/wakapi/utils/http.go:101.18,103.4 1 1 -github.com/muety/wakapi/utils/http.go:104.3,104.21 1 1 -github.com/muety/wakapi/utils/http.go:104.21,106.4 1 0 -github.com/muety/wakapi/utils/http.go:108.3,108.37 1 1 -github.com/muety/wakapi/utils/http.go:108.37,111.4 2 1 -github.com/muety/wakapi/utils/http.go:114.3,115.19 2 1 -github.com/muety/wakapi/utils/http.go:115.19,117.4 1 1 -github.com/muety/wakapi/utils/http.go:119.3,119.30 1 1 -github.com/muety/wakapi/utils/http.go:119.30,121.4 1 1 -github.com/muety/wakapi/utils/http.go:123.3,124.25 2 1 -github.com/muety/wakapi/utils/http.go:128.2,128.61 1 1 -github.com/muety/wakapi/utils/http.go:128.61,129.27 1 1 -github.com/muety/wakapi/utils/http.go:129.27,131.4 1 1 -github.com/muety/wakapi/utils/http.go:131.9,131.62 1 1 -github.com/muety/wakapi/utils/http.go:131.62,133.4 1 1 -github.com/muety/wakapi/utils/http.go:135.2,135.64 1 1 -github.com/muety/wakapi/utils/http.go:138.76,139.16 1 0 -github.com/muety/wakapi/utils/http.go:139.16,141.3 1 0 -github.com/muety/wakapi/utils/http.go:142.2,142.27 1 0 -github.com/muety/wakapi/utils/http.go:142.27,145.100 3 0 -github.com/muety/wakapi/utils/http.go:145.100,150.4 4 0 -github.com/muety/wakapi/utils/http.go:151.3,151.139 1 0 -github.com/muety/wakapi/utils/http.go:153.2,153.17 1 0 -github.com/muety/wakapi/utils/json.go:12.75,18.62 2 0 -github.com/muety/wakapi/utils/json.go:18.62,20.3 1 0 -github.com/muety/wakapi/utils/json.go:22.2,22.29 1 0 -github.com/muety/wakapi/utils/json.go:22.29,24.3 1 0 -github.com/muety/wakapi/utils/json.go:26.2,26.72 1 0 -github.com/muety/wakapi/utils/json.go:26.72,28.3 1 0 -github.com/muety/wakapi/utils/json.go:29.2,29.70 1 0 -github.com/muety/wakapi/utils/json.go:29.70,31.3 1 0 -github.com/muety/wakapi/utils/json.go:33.2,33.20 1 0 -github.com/muety/wakapi/utils/net.go:8.51,10.2 1 0 -github.com/muety/wakapi/utils/net.go:12.69,14.2 1 0 -github.com/muety/wakapi/utils/random.go:11.58,13.54 2 0 -github.com/muety/wakapi/utils/random.go:13.54,15.3 1 0 -github.com/muety/wakapi/utils/random.go:16.2,16.59 1 0 -github.com/muety/wakapi/utils/random.go:19.48,21.16 2 0 -github.com/muety/wakapi/utils/random.go:21.16,23.3 1 0 -github.com/muety/wakapi/utils/random.go:24.2,26.16 3 0 -github.com/muety/wakapi/utils/random.go:26.16,28.3 1 0 -github.com/muety/wakapi/utils/random.go:29.2,29.25 1 0 -github.com/muety/wakapi/utils/strings.go:7.58,8.49 1 0 -github.com/muety/wakapi/utils/strings.go:8.49,9.32 1 0 -github.com/muety/wakapi/utils/strings.go:9.32,10.22 1 0 -github.com/muety/wakapi/utils/strings.go:10.22,12.5 1 0 -github.com/muety/wakapi/utils/strings.go:14.3,14.15 1 0 -github.com/muety/wakapi/utils/strings.go:18.77,19.29 1 0 -github.com/muety/wakapi/utils/strings.go:19.29,20.18 1 0 -github.com/muety/wakapi/utils/strings.go:20.18,22.4 1 0 -github.com/muety/wakapi/utils/strings.go:24.2,24.19 1 0 -github.com/muety/wakapi/utils/sync.go:11.66,13.12 2 0 -github.com/muety/wakapi/utils/sync.go:13.12,16.3 2 0 -github.com/muety/wakapi/utils/sync.go:17.2,17.9 1 0 -github.com/muety/wakapi/utils/sync.go:18.11,19.15 1 0 -github.com/muety/wakapi/utils/sync.go:20.29,21.14 1 0 -github.com/muety/wakapi/utils/system.go:8.20,10.2 1 0 -github.com/muety/wakapi/utils/system.go:12.21,14.2 1 0 -github.com/muety/wakapi/utils/template.go:13.41,15.16 2 0 -github.com/muety/wakapi/utils/template.go:15.16,17.3 1 0 -github.com/muety/wakapi/utils/template.go:18.2,18.23 1 0 -github.com/muety/wakapi/utils/template.go:21.37,22.30 1 0 -github.com/muety/wakapi/utils/template.go:22.30,24.3 1 0 -github.com/muety/wakapi/utils/template.go:25.2,25.10 1 0 -github.com/muety/wakapi/utils/template.go:28.83,33.16 4 0 -github.com/muety/wakapi/utils/template.go:33.16,35.3 1 0 -github.com/muety/wakapi/utils/template.go:37.2,37.29 1 0 -github.com/muety/wakapi/utils/template.go:37.29,39.51 2 0 -github.com/muety/wakapi/utils/template.go:39.51,40.12 1 0 -github.com/muety/wakapi/utils/template.go:43.3,44.17 2 0 -github.com/muety/wakapi/utils/template.go:44.17,46.4 1 0 -github.com/muety/wakapi/utils/template.go:47.3,48.17 2 0 -github.com/muety/wakapi/utils/template.go:48.17,50.4 1 0 -github.com/muety/wakapi/utils/template.go:52.3,55.17 3 0 -github.com/muety/wakapi/utils/template.go:55.17,57.4 1 0 -github.com/muety/wakapi/utils/template.go:59.3,59.27 1 0 -github.com/muety/wakapi/utils/template.go:62.2,62.23 1 0 -github.com/muety/wakapi/services/mail/mail.go:41.45,47.25 4 0 -github.com/muety/wakapi/services/mail/mail.go:47.25,48.52 1 0 -github.com/muety/wakapi/services/mail/mail.go:48.52,50.4 1 0 -github.com/muety/wakapi/services/mail/mail.go:54.2,56.16 3 0 -github.com/muety/wakapi/services/mail/mail.go:56.16,57.13 1 0 -github.com/muety/wakapi/services/mail/mail.go:60.2,60.91 1 0 -github.com/muety/wakapi/services/mail/mail.go:63.89,65.16 2 0 -github.com/muety/wakapi/services/mail/mail.go:65.16,67.3 1 0 -github.com/muety/wakapi/services/mail/mail.go:68.2,74.36 3 0 -github.com/muety/wakapi/services/mail/mail.go:77.102,82.16 2 0 -github.com/muety/wakapi/services/mail/mail.go:82.16,84.3 1 0 -github.com/muety/wakapi/services/mail/mail.go:85.2,91.36 3 0 -github.com/muety/wakapi/services/mail/mail.go:94.119,100.16 2 0 -github.com/muety/wakapi/services/mail/mail.go:100.16,102.3 1 0 -github.com/muety/wakapi/services/mail/mail.go:103.2,109.36 3 0 -github.com/muety/wakapi/services/mail/mail.go:112.87,114.16 2 0 -github.com/muety/wakapi/services/mail/mail.go:114.16,116.3 1 0 -github.com/muety/wakapi/services/mail/mail.go:117.2,124.36 3 0 -github.com/muety/wakapi/services/mail/mail.go:127.99,133.16 2 0 -github.com/muety/wakapi/services/mail/mail.go:133.16,135.3 1 0 -github.com/muety/wakapi/services/mail/mail.go:136.2,142.36 3 0 -github.com/muety/wakapi/services/mail/mail.go:145.98,147.94 2 0 -github.com/muety/wakapi/services/mail/mail.go:147.94,149.3 1 0 -github.com/muety/wakapi/services/mail/mail.go:150.2,150.23 1 0 -github.com/muety/wakapi/services/mail/mail.go:153.138,155.108 2 0 -github.com/muety/wakapi/services/mail/mail.go:155.108,157.3 1 0 -github.com/muety/wakapi/services/mail/mail.go:158.2,158.23 1 0 -github.com/muety/wakapi/services/mail/mail.go:161.108,163.99 2 0 -github.com/muety/wakapi/services/mail/mail.go:163.99,165.3 1 0 -github.com/muety/wakapi/services/mail/mail.go:166.2,166.23 1 0 -github.com/muety/wakapi/services/mail/mail.go:169.84,171.87 2 0 -github.com/muety/wakapi/services/mail/mail.go:171.87,173.3 1 0 -github.com/muety/wakapi/services/mail/mail.go:174.2,174.23 1 0 -github.com/muety/wakapi/services/mail/mail.go:177.120,179.105 2 0 -github.com/muety/wakapi/services/mail/mail.go:179.105,181.3 1 0 -github.com/muety/wakapi/services/mail/mail.go:182.2,182.23 1 0 -github.com/muety/wakapi/services/mail/mail.go:185.51,187.2 1 0 -github.com/muety/wakapi/services/mail/noop.go:10.60,13.2 2 0 -github.com/muety/wakapi/services/mail/smtp.go:18.76,27.2 1 0 -github.com/muety/wakapi/services/mail/smtp.go:29.60,33.18 3 0 -github.com/muety/wakapi/services/mail/smtp.go:33.18,34.50 1 0 -github.com/muety/wakapi/services/mail/smtp.go:34.50,36.4 1 0 -github.com/muety/wakapi/services/mail/smtp.go:39.2,40.16 2 0 -github.com/muety/wakapi/services/mail/smtp.go:40.16,42.3 1 0 -github.com/muety/wakapi/services/mail/smtp.go:43.2,48.42 2 0 -github.com/muety/wakapi/services/mail/smtp.go:48.42,51.17 2 0 -github.com/muety/wakapi/services/mail/smtp.go:51.17,52.48 1 0 -github.com/muety/wakapi/services/mail/smtp.go:52.48,53.28 1 0 -github.com/muety/wakapi/services/mail/smtp.go:53.29,55.6 0 0 -github.com/muety/wakapi/services/mail/smtp.go:56.5,56.15 1 0 -github.com/muety/wakapi/services/mail/smtp.go:57.10,59.5 1 0 -github.com/muety/wakapi/services/mail/smtp.go:63.3,65.18 3 0 -github.com/muety/wakapi/services/mail/smtp.go:69.2,69.55 1 0 -github.com/muety/wakapi/services/mail/smtp.go:69.55,70.65 1 0 -github.com/muety/wakapi/services/mail/smtp.go:70.65,72.4 1 0 -github.com/muety/wakapi/services/mail/smtp.go:74.3,74.39 1 0 -github.com/muety/wakapi/services/mail/smtp.go:74.39,76.4 1 0 -github.com/muety/wakapi/services/mail/smtp.go:79.2,79.52 1 0 -github.com/muety/wakapi/services/mail/smtp.go:79.52,81.3 1 0 -github.com/muety/wakapi/services/mail/smtp.go:83.2,83.44 1 0 -github.com/muety/wakapi/services/mail/smtp.go:83.44,84.42 1 0 -github.com/muety/wakapi/services/mail/smtp.go:84.42,86.4 1 0 -github.com/muety/wakapi/services/mail/smtp.go:89.2,90.16 2 0 -github.com/muety/wakapi/services/mail/smtp.go:90.16,92.3 1 0 -github.com/muety/wakapi/services/mail/smtp.go:94.2,95.16 2 0 -github.com/muety/wakapi/services/mail/smtp.go:95.16,97.3 1 0 -github.com/muety/wakapi/services/mail/smtp.go:99.2,100.16 2 0 -github.com/muety/wakapi/services/mail/smtp.go:100.16,102.3 1 0 -github.com/muety/wakapi/services/mail/smtp.go:104.2,104.33 1 0 -github.com/muety/wakapi/services/mail/smtp.go:104.33,106.3 1 0 -github.com/muety/wakapi/services/mail/smtp.go:108.2,108.12 1 0 github.com/muety/wakapi/services/activity.go:42.74,48.2 1 0 github.com/muety/wakapi/services/activity.go:52.145,54.65 2 0 github.com/muety/wakapi/services/activity.go:54.65,56.3 1 0 @@ -4696,6 +4418,285 @@ github.com/muety/wakapi/services/imports/wakatime_utils.go:106.9,111.4 1 0 github.com/muety/wakapi/services/imports/wakatime_utils.go:114.2,115.15 2 0 github.com/muety/wakapi/services/imports/wakatime_utils.go:115.15,120.3 1 0 github.com/muety/wakapi/services/imports/wakatime_utils.go:122.2,140.13 1 0 +github.com/muety/wakapi/utils/auth.go:15.79,17.54 2 0 +github.com/muety/wakapi/utils/auth.go:17.54,19.3 1 0 +github.com/muety/wakapi/utils/auth.go:21.2,23.16 3 0 +github.com/muety/wakapi/utils/auth.go:23.16,25.3 1 0 +github.com/muety/wakapi/utils/auth.go:27.2,29.45 3 0 +github.com/muety/wakapi/utils/auth.go:29.45,31.3 1 0 +github.com/muety/wakapi/utils/auth.go:32.2,33.32 2 0 +github.com/muety/wakapi/utils/auth.go:36.65,38.85 2 0 +github.com/muety/wakapi/utils/auth.go:38.85,40.3 1 0 +github.com/muety/wakapi/utils/auth.go:42.2,43.30 2 0 +github.com/muety/wakapi/utils/auth.go:48.57,49.34 1 0 +github.com/muety/wakapi/utils/auth.go:49.34,51.3 1 0 +github.com/muety/wakapi/utils/auth.go:52.2,52.45 1 0 +github.com/muety/wakapi/utils/auth.go:55.57,57.2 1 0 +github.com/muety/wakapi/utils/auth.go:59.55,63.2 3 0 +github.com/muety/wakapi/utils/auth.go:65.55,68.16 3 0 +github.com/muety/wakapi/utils/auth.go:68.16,70.3 1 0 +github.com/muety/wakapi/utils/auth.go:71.2,71.16 1 0 +github.com/muety/wakapi/utils/auth.go:74.57,78.2 3 0 +github.com/muety/wakapi/utils/auth.go:80.57,83.16 3 0 +github.com/muety/wakapi/utils/auth.go:83.16,85.3 1 0 +github.com/muety/wakapi/utils/auth.go:86.2,86.16 1 0 +github.com/muety/wakapi/utils/collection.go:7.52,8.28 1 0 +github.com/muety/wakapi/utils/collection.go:8.28,10.3 1 0 +github.com/muety/wakapi/utils/collection.go:11.2,11.26 1 0 +github.com/muety/wakapi/utils/collection.go:11.26,13.3 1 0 +github.com/muety/wakapi/utils/collection.go:14.2,14.28 1 0 +github.com/muety/wakapi/utils/collection.go:17.78,19.22 2 0 +github.com/muety/wakapi/utils/collection.go:19.22,20.18 1 0 +github.com/muety/wakapi/utils/collection.go:20.18,22.4 1 0 +github.com/muety/wakapi/utils/collection.go:23.3,23.12 1 0 +github.com/muety/wakapi/utils/collection.go:25.2,25.11 1 0 +github.com/muety/wakapi/utils/color.go:8.41,11.16 2 0 +github.com/muety/wakapi/utils/color.go:12.9,13.51 1 0 +github.com/muety/wakapi/utils/color.go:14.9,18.12 4 0 +github.com/muety/wakapi/utils/color.go:20.2,20.8 1 0 +github.com/muety/wakapi/utils/color.go:23.37,25.2 1 0 +github.com/muety/wakapi/utils/color.go:27.70,28.15 1 0 +github.com/muety/wakapi/utils/color.go:28.15,30.3 1 0 +github.com/muety/wakapi/utils/color.go:30.8,30.22 1 0 +github.com/muety/wakapi/utils/color.go:30.22,32.3 1 0 +github.com/muety/wakapi/utils/color.go:34.2,39.43 5 0 +github.com/muety/wakapi/utils/cron.go:5.44,7.21 2 0 +github.com/muety/wakapi/utils/cron.go:7.21,9.3 1 0 +github.com/muety/wakapi/utils/cron.go:10.2,10.20 1 0 +github.com/muety/wakapi/utils/date.go:10.26,12.2 1 0 +github.com/muety/wakapi/utils/date.go:14.52,17.2 2 0 +github.com/muety/wakapi/utils/date.go:19.48,21.2 1 0 +github.com/muety/wakapi/utils/date.go:23.77,25.2 1 0 +github.com/muety/wakapi/utils/date.go:27.52,29.2 1 0 +github.com/muety/wakapi/utils/date.go:31.51,33.2 1 0 +github.com/muety/wakapi/utils/date.go:36.41,38.21 2 0 +github.com/muety/wakapi/utils/date.go:38.21,40.3 1 0 +github.com/muety/wakapi/utils/date.go:41.2,41.33 1 0 +github.com/muety/wakapi/utils/date.go:45.67,48.33 2 1 +github.com/muety/wakapi/utils/date.go:48.33,51.15 2 1 +github.com/muety/wakapi/utils/date.go:51.15,53.12 2 1 +github.com/muety/wakapi/utils/date.go:55.3,55.19 1 1 +github.com/muety/wakapi/utils/date.go:55.19,57.4 1 1 +github.com/muety/wakapi/utils/date.go:58.3,59.10 2 1 +github.com/muety/wakapi/utils/date.go:62.2,62.18 1 1 +github.com/muety/wakapi/utils/date.go:66.36,69.2 2 0 +github.com/muety/wakapi/utils/date.go:72.57,74.2 1 0 +github.com/muety/wakapi/utils/date.go:76.42,77.28 1 0 +github.com/muety/wakapi/utils/date.go:78.52,79.21 1 0 +github.com/muety/wakapi/utils/date.go:80.53,81.22 1 0 +github.com/muety/wakapi/utils/date.go:82.55,83.24 1 0 +github.com/muety/wakapi/utils/date.go:84.54,85.23 1 0 +github.com/muety/wakapi/utils/date.go:86.52,87.21 1 0 +github.com/muety/wakapi/utils/date.go:88.54,89.23 1 0 +github.com/muety/wakapi/utils/date.go:90.52,91.21 1 0 +github.com/muety/wakapi/utils/date.go:93.2,93.20 1 0 +github.com/muety/wakapi/utils/db.go:12.34,13.37 1 0 +github.com/muety/wakapi/utils/db.go:13.37,15.110 2 0 +github.com/muety/wakapi/utils/db.go:15.110,18.4 2 0 +github.com/muety/wakapi/utils/db.go:19.3,19.20 1 0 +github.com/muety/wakapi/utils/db.go:21.2,22.14 2 0 +github.com/muety/wakapi/utils/db.go:25.39,26.37 1 0 +github.com/muety/wakapi/utils/db.go:26.37,28.119 2 0 +github.com/muety/wakapi/utils/db.go:28.119,31.4 2 0 +github.com/muety/wakapi/utils/db.go:32.3,32.20 1 0 +github.com/muety/wakapi/utils/db.go:34.2,35.14 2 0 +github.com/muety/wakapi/utils/db.go:38.66,39.48 1 0 +github.com/muety/wakapi/utils/db.go:39.48,41.3 1 0 +github.com/muety/wakapi/utils/db.go:42.2,42.53 1 0 +github.com/muety/wakapi/utils/db.go:45.59,46.16 1 0 +github.com/muety/wakapi/utils/db.go:46.16,48.3 1 0 +github.com/muety/wakapi/utils/db.go:49.2,49.15 1 0 +github.com/muety/wakapi/utils/db.go:49.15,51.3 1 0 +github.com/muety/wakapi/utils/db.go:52.2,52.14 1 0 +github.com/muety/wakapi/utils/db.go:59.47,61.2 1 0 +github.com/muety/wakapi/utils/db.go:63.60,65.2 1 0 +github.com/muety/wakapi/utils/db.go:68.63,72.2 3 0 +github.com/muety/wakapi/utils/db.go:75.80,77.41 2 0 +github.com/muety/wakapi/utils/db.go:77.41,79.3 1 0 +github.com/muety/wakapi/utils/db.go:80.2,80.57 1 0 +github.com/muety/wakapi/utils/dns.go:9.38,11.21 2 0 +github.com/muety/wakapi/utils/dns.go:11.21,13.3 1 0 +github.com/muety/wakapi/utils/dns.go:14.2,15.39 2 0 +github.com/muety/wakapi/utils/func.go:10.77,11.15 1 0 +github.com/muety/wakapi/utils/func.go:11.15,12.31 1 0 +github.com/muety/wakapi/utils/func.go:12.31,16.4 3 0 +github.com/muety/wakapi/utils/func.go:18.2,19.12 2 0 +github.com/muety/wakapi/utils/func.go:23.57,24.48 1 0 +github.com/muety/wakapi/utils/func.go:24.48,26.3 1 0 +github.com/muety/wakapi/utils/http.go:29.13,32.2 2 1 +github.com/muety/wakapi/utils/http.go:39.34,40.20 1 0 +github.com/muety/wakapi/utils/http.go:40.20,42.3 1 0 +github.com/muety/wakapi/utils/http.go:43.2,43.19 1 0 +github.com/muety/wakapi/utils/http.go:46.35,47.21 1 0 +github.com/muety/wakapi/utils/http.go:47.21,49.3 1 0 +github.com/muety/wakapi/utils/http.go:50.2,50.34 1 0 +github.com/muety/wakapi/utils/http.go:54.62,56.48 2 0 +github.com/muety/wakapi/utils/http.go:56.48,58.3 1 0 +github.com/muety/wakapi/utils/http.go:59.2,59.93 1 0 +github.com/muety/wakapi/utils/http.go:59.93,60.89 1 0 +github.com/muety/wakapi/utils/http.go:60.89,62.4 1 0 +github.com/muety/wakapi/utils/http.go:64.2,64.14 1 0 +github.com/muety/wakapi/utils/http.go:67.51,71.46 4 0 +github.com/muety/wakapi/utils/http.go:71.46,73.3 1 0 +github.com/muety/wakapi/utils/http.go:74.2,74.73 1 0 +github.com/muety/wakapi/utils/http.go:74.73,76.3 1 0 +github.com/muety/wakapi/utils/http.go:77.2,77.19 1 0 +github.com/muety/wakapi/utils/http.go:80.78,82.26 2 0 +github.com/muety/wakapi/utils/http.go:82.26,84.3 1 0 +github.com/muety/wakapi/utils/http.go:85.2,85.30 1 0 +github.com/muety/wakapi/utils/http.go:85.30,87.3 1 0 +github.com/muety/wakapi/utils/http.go:88.2,88.19 1 0 +github.com/muety/wakapi/utils/http.go:91.56,98.97 2 1 +github.com/muety/wakapi/utils/http.go:98.97,101.18 2 1 +github.com/muety/wakapi/utils/http.go:101.18,103.4 1 1 +github.com/muety/wakapi/utils/http.go:104.3,104.21 1 1 +github.com/muety/wakapi/utils/http.go:104.21,106.4 1 0 +github.com/muety/wakapi/utils/http.go:108.3,108.37 1 1 +github.com/muety/wakapi/utils/http.go:108.37,111.4 2 1 +github.com/muety/wakapi/utils/http.go:114.3,115.19 2 1 +github.com/muety/wakapi/utils/http.go:115.19,117.4 1 1 +github.com/muety/wakapi/utils/http.go:119.3,119.30 1 1 +github.com/muety/wakapi/utils/http.go:119.30,121.4 1 1 +github.com/muety/wakapi/utils/http.go:123.3,124.25 2 1 +github.com/muety/wakapi/utils/http.go:128.2,128.61 1 1 +github.com/muety/wakapi/utils/http.go:128.61,129.27 1 1 +github.com/muety/wakapi/utils/http.go:129.27,131.4 1 1 +github.com/muety/wakapi/utils/http.go:131.9,131.62 1 1 +github.com/muety/wakapi/utils/http.go:131.62,133.4 1 1 +github.com/muety/wakapi/utils/http.go:135.2,135.64 1 1 +github.com/muety/wakapi/utils/http.go:138.76,139.16 1 0 +github.com/muety/wakapi/utils/http.go:139.16,141.3 1 0 +github.com/muety/wakapi/utils/http.go:142.2,142.27 1 0 +github.com/muety/wakapi/utils/http.go:142.27,145.100 3 0 +github.com/muety/wakapi/utils/http.go:145.100,150.4 4 0 +github.com/muety/wakapi/utils/http.go:151.3,151.139 1 0 +github.com/muety/wakapi/utils/http.go:153.2,153.17 1 0 +github.com/muety/wakapi/utils/json.go:12.75,18.62 2 0 +github.com/muety/wakapi/utils/json.go:18.62,20.3 1 0 +github.com/muety/wakapi/utils/json.go:22.2,22.29 1 0 +github.com/muety/wakapi/utils/json.go:22.29,24.3 1 0 +github.com/muety/wakapi/utils/json.go:26.2,26.72 1 0 +github.com/muety/wakapi/utils/json.go:26.72,28.3 1 0 +github.com/muety/wakapi/utils/json.go:29.2,29.70 1 0 +github.com/muety/wakapi/utils/json.go:29.70,31.3 1 0 +github.com/muety/wakapi/utils/json.go:33.2,33.20 1 0 +github.com/muety/wakapi/utils/net.go:8.51,10.2 1 0 +github.com/muety/wakapi/utils/net.go:12.69,14.2 1 0 +github.com/muety/wakapi/utils/random.go:11.58,13.54 2 0 +github.com/muety/wakapi/utils/random.go:13.54,15.3 1 0 +github.com/muety/wakapi/utils/random.go:16.2,16.59 1 0 +github.com/muety/wakapi/utils/random.go:19.48,21.16 2 0 +github.com/muety/wakapi/utils/random.go:21.16,23.3 1 0 +github.com/muety/wakapi/utils/random.go:24.2,26.16 3 0 +github.com/muety/wakapi/utils/random.go:26.16,28.3 1 0 +github.com/muety/wakapi/utils/random.go:29.2,29.25 1 0 +github.com/muety/wakapi/utils/strings.go:7.58,8.49 1 0 +github.com/muety/wakapi/utils/strings.go:8.49,9.32 1 0 +github.com/muety/wakapi/utils/strings.go:9.32,10.22 1 0 +github.com/muety/wakapi/utils/strings.go:10.22,12.5 1 0 +github.com/muety/wakapi/utils/strings.go:14.3,14.15 1 0 +github.com/muety/wakapi/utils/strings.go:18.77,19.29 1 0 +github.com/muety/wakapi/utils/strings.go:19.29,20.18 1 0 +github.com/muety/wakapi/utils/strings.go:20.18,22.4 1 0 +github.com/muety/wakapi/utils/strings.go:24.2,24.19 1 0 +github.com/muety/wakapi/utils/sync.go:11.66,13.12 2 0 +github.com/muety/wakapi/utils/sync.go:13.12,16.3 2 0 +github.com/muety/wakapi/utils/sync.go:17.2,17.9 1 0 +github.com/muety/wakapi/utils/sync.go:18.11,19.15 1 0 +github.com/muety/wakapi/utils/sync.go:20.29,21.14 1 0 +github.com/muety/wakapi/utils/system.go:8.20,10.2 1 0 +github.com/muety/wakapi/utils/system.go:12.21,14.2 1 0 +github.com/muety/wakapi/utils/template.go:13.41,15.16 2 0 +github.com/muety/wakapi/utils/template.go:15.16,17.3 1 0 +github.com/muety/wakapi/utils/template.go:18.2,18.23 1 0 +github.com/muety/wakapi/utils/template.go:21.37,22.30 1 0 +github.com/muety/wakapi/utils/template.go:22.30,24.3 1 0 +github.com/muety/wakapi/utils/template.go:25.2,25.10 1 0 +github.com/muety/wakapi/utils/template.go:28.83,33.16 4 0 +github.com/muety/wakapi/utils/template.go:33.16,35.3 1 0 +github.com/muety/wakapi/utils/template.go:37.2,37.29 1 0 +github.com/muety/wakapi/utils/template.go:37.29,39.51 2 0 +github.com/muety/wakapi/utils/template.go:39.51,40.12 1 0 +github.com/muety/wakapi/utils/template.go:43.3,44.17 2 0 +github.com/muety/wakapi/utils/template.go:44.17,46.4 1 0 +github.com/muety/wakapi/utils/template.go:47.3,48.17 2 0 +github.com/muety/wakapi/utils/template.go:48.17,50.4 1 0 +github.com/muety/wakapi/utils/template.go:52.3,55.17 3 0 +github.com/muety/wakapi/utils/template.go:55.17,57.4 1 0 +github.com/muety/wakapi/utils/template.go:59.3,59.27 1 0 +github.com/muety/wakapi/utils/template.go:62.2,62.23 1 0 +github.com/muety/wakapi/services/mail/mail.go:41.45,47.25 4 0 +github.com/muety/wakapi/services/mail/mail.go:47.25,48.52 1 0 +github.com/muety/wakapi/services/mail/mail.go:48.52,50.4 1 0 +github.com/muety/wakapi/services/mail/mail.go:54.2,56.16 3 0 +github.com/muety/wakapi/services/mail/mail.go:56.16,57.13 1 0 +github.com/muety/wakapi/services/mail/mail.go:60.2,60.91 1 0 +github.com/muety/wakapi/services/mail/mail.go:63.89,65.16 2 0 +github.com/muety/wakapi/services/mail/mail.go:65.16,67.3 1 0 +github.com/muety/wakapi/services/mail/mail.go:68.2,74.36 3 0 +github.com/muety/wakapi/services/mail/mail.go:77.102,82.16 2 0 +github.com/muety/wakapi/services/mail/mail.go:82.16,84.3 1 0 +github.com/muety/wakapi/services/mail/mail.go:85.2,91.36 3 0 +github.com/muety/wakapi/services/mail/mail.go:94.119,100.16 2 0 +github.com/muety/wakapi/services/mail/mail.go:100.16,102.3 1 0 +github.com/muety/wakapi/services/mail/mail.go:103.2,109.36 3 0 +github.com/muety/wakapi/services/mail/mail.go:112.87,114.16 2 0 +github.com/muety/wakapi/services/mail/mail.go:114.16,116.3 1 0 +github.com/muety/wakapi/services/mail/mail.go:117.2,124.36 3 0 +github.com/muety/wakapi/services/mail/mail.go:127.99,133.16 2 0 +github.com/muety/wakapi/services/mail/mail.go:133.16,135.3 1 0 +github.com/muety/wakapi/services/mail/mail.go:136.2,142.36 3 0 +github.com/muety/wakapi/services/mail/mail.go:145.98,147.94 2 0 +github.com/muety/wakapi/services/mail/mail.go:147.94,149.3 1 0 +github.com/muety/wakapi/services/mail/mail.go:150.2,150.23 1 0 +github.com/muety/wakapi/services/mail/mail.go:153.138,155.108 2 0 +github.com/muety/wakapi/services/mail/mail.go:155.108,157.3 1 0 +github.com/muety/wakapi/services/mail/mail.go:158.2,158.23 1 0 +github.com/muety/wakapi/services/mail/mail.go:161.108,163.99 2 0 +github.com/muety/wakapi/services/mail/mail.go:163.99,165.3 1 0 +github.com/muety/wakapi/services/mail/mail.go:166.2,166.23 1 0 +github.com/muety/wakapi/services/mail/mail.go:169.84,171.87 2 0 +github.com/muety/wakapi/services/mail/mail.go:171.87,173.3 1 0 +github.com/muety/wakapi/services/mail/mail.go:174.2,174.23 1 0 +github.com/muety/wakapi/services/mail/mail.go:177.120,179.105 2 0 +github.com/muety/wakapi/services/mail/mail.go:179.105,181.3 1 0 +github.com/muety/wakapi/services/mail/mail.go:182.2,182.23 1 0 +github.com/muety/wakapi/services/mail/mail.go:185.51,187.2 1 0 +github.com/muety/wakapi/services/mail/noop.go:10.60,13.2 2 0 +github.com/muety/wakapi/services/mail/smtp.go:18.76,27.2 1 0 +github.com/muety/wakapi/services/mail/smtp.go:29.60,33.18 3 0 +github.com/muety/wakapi/services/mail/smtp.go:33.18,34.50 1 0 +github.com/muety/wakapi/services/mail/smtp.go:34.50,36.4 1 0 +github.com/muety/wakapi/services/mail/smtp.go:39.2,40.16 2 0 +github.com/muety/wakapi/services/mail/smtp.go:40.16,42.3 1 0 +github.com/muety/wakapi/services/mail/smtp.go:43.2,48.42 2 0 +github.com/muety/wakapi/services/mail/smtp.go:48.42,51.17 2 0 +github.com/muety/wakapi/services/mail/smtp.go:51.17,52.48 1 0 +github.com/muety/wakapi/services/mail/smtp.go:52.48,53.28 1 0 +github.com/muety/wakapi/services/mail/smtp.go:53.29,55.6 0 0 +github.com/muety/wakapi/services/mail/smtp.go:56.5,56.15 1 0 +github.com/muety/wakapi/services/mail/smtp.go:57.10,59.5 1 0 +github.com/muety/wakapi/services/mail/smtp.go:63.3,65.18 3 0 +github.com/muety/wakapi/services/mail/smtp.go:69.2,69.55 1 0 +github.com/muety/wakapi/services/mail/smtp.go:69.55,70.65 1 0 +github.com/muety/wakapi/services/mail/smtp.go:70.65,72.4 1 0 +github.com/muety/wakapi/services/mail/smtp.go:74.3,74.39 1 0 +github.com/muety/wakapi/services/mail/smtp.go:74.39,76.4 1 0 +github.com/muety/wakapi/services/mail/smtp.go:79.2,79.52 1 0 +github.com/muety/wakapi/services/mail/smtp.go:79.52,81.3 1 0 +github.com/muety/wakapi/services/mail/smtp.go:83.2,83.44 1 0 +github.com/muety/wakapi/services/mail/smtp.go:83.44,84.42 1 0 +github.com/muety/wakapi/services/mail/smtp.go:84.42,86.4 1 0 +github.com/muety/wakapi/services/mail/smtp.go:89.2,90.16 2 0 +github.com/muety/wakapi/services/mail/smtp.go:90.16,92.3 1 0 +github.com/muety/wakapi/services/mail/smtp.go:94.2,95.16 2 0 +github.com/muety/wakapi/services/mail/smtp.go:95.16,97.3 1 0 +github.com/muety/wakapi/services/mail/smtp.go:99.2,100.16 2 0 +github.com/muety/wakapi/services/mail/smtp.go:100.16,102.3 1 0 +github.com/muety/wakapi/services/mail/smtp.go:104.2,104.33 1 0 +github.com/muety/wakapi/services/mail/smtp.go:104.33,106.3 1 0 +github.com/muety/wakapi/services/mail/smtp.go:108.2,108.12 1 0 +github.com/muety/wakapi/static/docs/docs.go:2123.13,2125.2 1 0 github.com/muety/wakapi/utils/fs/exists.go:10.37,12.16 2 0 github.com/muety/wakapi/utils/fs/exists.go:12.16,13.13 1 0 github.com/muety/wakapi/utils/fs/exists.go:16.2,19.3 1 0 @@ -4720,4 +4721,3 @@ github.com/muety/wakapi/utils/fs/neutered.go:23.47,25.23 2 0 github.com/muety/wakapi/utils/fs/neutered.go:25.23,27.5 1 0 github.com/muety/wakapi/utils/fs/neutered.go:29.4,29.19 1 0 github.com/muety/wakapi/utils/fs/neutered.go:33.2,33.15 1 0 -github.com/muety/wakapi/static/docs/docs.go:2123.13,2125.2 1 0 diff --git a/go.mod b/go.mod index 1c53ab0..46c32ae 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 github.com/coreos/go-oidc/v3 v3.16.0 github.com/dchest/captcha v1.1.0 - github.com/duke-git/lancet/v2 v2.3.7 + github.com/duke-git/lancet/v2 v2.3.8 github.com/emersion/go-sasl v0.0.0-20241020182733-b788ff22d5a6 github.com/emersion/go-smtp v0.24.0 github.com/getsentry/sentry-go v0.36.2 @@ -42,7 +42,7 @@ require ( gorm.io/driver/mysql v1.6.0 gorm.io/driver/postgres v1.6.0 gorm.io/driver/sqlserver v1.6.1 - gorm.io/gorm v1.31.0 + gorm.io/gorm v1.31.1 ) require ( @@ -108,7 +108,7 @@ require ( modernc.org/libc v1.66.10 // indirect modernc.org/mathutil v1.7.1 // indirect modernc.org/memory v1.11.0 // indirect - modernc.org/sqlite v1.39.1 // indirect + modernc.org/sqlite v1.40.0 // indirect ) godebug x509negativeserial=1 // https://stackoverflow.com/a/79062183/3112139 diff --git a/go.sum b/go.sum index 9166c54..07b0e6d 100644 --- a/go.sum +++ b/go.sum @@ -56,6 +56,8 @@ github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/ github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/duke-git/lancet/v2 v2.3.7 h1:nnNBA9KyoqwbPm4nFmEFVIbXeAmpqf6IDCH45+HHHNs= github.com/duke-git/lancet/v2 v2.3.7/go.mod h1:zGa2R4xswg6EG9I6WnyubDbFO/+A/RROxIbXcwryTsc= +github.com/duke-git/lancet/v2 v2.3.8 h1:dlkqn6Nj2LRWFuObNxttkMHxrFeaV6T26JR8jbEVbPg= +github.com/duke-git/lancet/v2 v2.3.8/go.mod h1:zGa2R4xswg6EG9I6WnyubDbFO/+A/RROxIbXcwryTsc= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/emersion/go-sasl v0.0.0-20241020182733-b788ff22d5a6 h1:oP4q0fw+fOSWn3DfFi4EXdT+B+gTtzx8GC9xsc26Znk= @@ -442,6 +444,8 @@ gorm.io/driver/sqlserver v1.6.1/go.mod h1:VZeNn7hqX1aXoN5TPAFGWvxWG90xtA8erGn2gQ gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= gorm.io/gorm v1.31.0 h1:0VlycGreVhK7RF/Bwt51Fk8v0xLiiiFdbGDPIZQ7mJY= gorm.io/gorm v1.31.0/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs= +gorm.io/gorm v1.31.1 h1:7CA8FTFz/gRfgqgpeKIBcervUn3xSyPUmr6B2WXJ7kg= +gorm.io/gorm v1.31.1/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= modernc.org/cc/v4 v4.26.5 h1:xM3bX7Mve6G8K8b+T11ReenJOT+BmVqQj0FY5T4+5Y4= modernc.org/cc/v4 v4.26.5/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= @@ -467,6 +471,8 @@ modernc.org/sqlite v1.39.0 h1:6bwu9Ooim0yVYA7IZn9demiQk/Ejp0BtTjBWFLymSeY= modernc.org/sqlite v1.39.0/go.mod h1:cPTJYSlgg3Sfg046yBShXENNtPrWrDX8bsbAQBzgQ5E= modernc.org/sqlite v1.39.1 h1:H+/wGFzuSCIEVCvXYVHX5RQglwhMOvtHSv+VtidL2r4= modernc.org/sqlite v1.39.1/go.mod h1:9fjQZ0mB1LLP0GYrp39oOJXx/I2sxEnZtzCmEQIKvGE= +modernc.org/sqlite v1.40.0 h1:bNWEDlYhNPAUdUdBzjAvn8icAs/2gaKlj4vM+tQ6KdQ= +modernc.org/sqlite v1.40.0/go.mod h1:9fjQZ0mB1LLP0GYrp39oOJXx/I2sxEnZtzCmEQIKvGE= modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0= modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= diff --git a/scripts/go.mod b/scripts/go.mod index 014aee4..dba5bdb 100644 --- a/scripts/go.mod +++ b/scripts/go.mod @@ -7,11 +7,11 @@ replace github.com/muety/wakapi => .. require ( github.com/glebarez/sqlite v1.11.0 github.com/jinzhu/configor v1.2.2 - github.com/muety/wakapi v0.0.0-20250829133329-3a74d4db7f83 + github.com/muety/wakapi v0.0.0-20251102091135-27c26db783a6 github.com/schollz/progressbar/v3 v3.18.0 gorm.io/driver/mysql v1.6.0 gorm.io/driver/postgres v1.6.0 - gorm.io/gorm v1.31.0 + gorm.io/gorm v1.31.1 ) require ( @@ -19,14 +19,16 @@ require ( github.com/BurntSushi/toml v1.5.0 // indirect github.com/alexedwards/argon2id v1.0.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/coreos/go-oidc/v3 v3.16.0 // indirect github.com/dchest/captcha v1.1.0 // indirect - github.com/duke-git/lancet/v2 v2.3.7 // indirect + github.com/duke-git/lancet/v2 v2.3.8 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/getsentry/sentry-go v0.35.3 // indirect + github.com/getsentry/sentry-go v0.36.2 // indirect github.com/glebarez/go-sqlite v1.22.0 // indirect + github.com/go-jose/go-jose/v4 v4.1.3 // indirect github.com/go-sql-driver/mysql v1.9.3 // indirect - github.com/gofrs/uuid/v5 v5.3.2 // indirect - github.com/gohugoio/hashstructure v0.5.0 // indirect + github.com/gofrs/uuid/v5 v5.4.0 // indirect + github.com/gohugoio/hashstructure v0.6.0 // indirect github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect github.com/golang-sql/sqlexp v0.1.0 // indirect github.com/google/uuid v1.6.0 // indirect @@ -44,24 +46,25 @@ require ( github.com/mileusna/useragent v1.3.5 // indirect github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect github.com/muety/artifex/v2 v2.0.1-0.20221201142708-74e7d3f6feaf // indirect - github.com/ncruces/go-strftime v0.1.9 // indirect + github.com/ncruces/go-strftime v1.0.0 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/robfig/cron/v3 v3.0.1 // indirect - github.com/samber/lo v1.51.0 // indirect + github.com/samber/lo v1.52.0 // indirect github.com/samber/slog-common v0.19.0 // indirect github.com/samber/slog-multi v1.5.0 // indirect github.com/samber/slog-sentry/v2 v2.9.3 // indirect - golang.org/x/crypto v0.42.0 // indirect - golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 // indirect + golang.org/x/crypto v0.43.0 // indirect + golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 // indirect + golang.org/x/oauth2 v0.32.0 // indirect golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.36.0 // indirect - golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/sys v0.37.0 // indirect + golang.org/x/term v0.36.0 // indirect + golang.org/x/text v0.30.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gorm.io/driver/sqlserver v1.6.1 // indirect modernc.org/libc v1.66.10 // indirect modernc.org/mathutil v1.7.1 // indirect modernc.org/memory v1.11.0 // indirect - modernc.org/sqlite v1.39.0 // indirect + modernc.org/sqlite v1.40.0 // indirect ) diff --git a/scripts/go.sum b/scripts/go.sum index fdea1a9..d594cc6 100644 --- a/scripts/go.sum +++ b/scripts/go.sum @@ -33,6 +33,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chengxilo/virtualterm v1.0.4 h1:Z6IpERbRVlfB8WkOmtbHiDbBANU7cimRIof7mk9/PwM= github.com/chengxilo/virtualterm v1.0.4/go.mod h1:DyxxBZz/x1iqJjFxTFcr6/x+jSpqN0iwWCOK1q10rlY= +github.com/coreos/go-oidc/v3 v3.16.0 h1:qRQUCFstKpXwmEjDQTIbyY/5jF00+asXzSkmkoa/mow= +github.com/coreos/go-oidc/v3 v3.16.0/go.mod h1:wqPbKFrVnE90vty060SB40FCJ8fTHTxSwyXJqZH+sI8= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -43,23 +45,33 @@ github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/ github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/duke-git/lancet/v2 v2.3.7 h1:nnNBA9KyoqwbPm4nFmEFVIbXeAmpqf6IDCH45+HHHNs= github.com/duke-git/lancet/v2 v2.3.7/go.mod h1:zGa2R4xswg6EG9I6WnyubDbFO/+A/RROxIbXcwryTsc= +github.com/duke-git/lancet/v2 v2.3.8 h1:dlkqn6Nj2LRWFuObNxttkMHxrFeaV6T26JR8jbEVbPg= +github.com/duke-git/lancet/v2 v2.3.8/go.mod h1:zGa2R4xswg6EG9I6WnyubDbFO/+A/RROxIbXcwryTsc= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/getsentry/sentry-go v0.35.1 h1:iopow6UVLE2aXu46xKVIs8Z9D/YZkJrHkgozrxa+tOQ= github.com/getsentry/sentry-go v0.35.1/go.mod h1:C55omcY9ChRQIUcVcGcs+Zdy4ZpQGvNJ7JYHIoSWOtE= github.com/getsentry/sentry-go v0.35.3/go.mod h1:mdL49ixwT2yi57k5eh7mpnDyPybixPzlzEJFu0Z76QA= +github.com/getsentry/sentry-go v0.36.2 h1:uhuxRPTrUy0dnSzTd0LrYXlBYygLkKY0hhlG5LXarzM= +github.com/getsentry/sentry-go v0.36.2/go.mod h1:p5Im24mJBeruET8Q4bbcMfCQ+F+Iadc4L48tB1apo2c= github.com/glebarez/go-sqlite v1.22.0 h1:uAcMJhaA6r3LHMTFgP0SifzgXg46yJkgxqyuyec+ruQ= github.com/glebarez/go-sqlite v1.22.0/go.mod h1:PlBIdHe0+aUEFn+r2/uthrWq4FxbzugL0L8Li6yQJbc= github.com/glebarez/sqlite v1.11.0 h1:wSG0irqzP6VurnMEpFGer5Li19RpIRi2qvQz++w0GMw= github.com/glebarez/sqlite v1.11.0/go.mod h1:h8/o8j5wiAsqSPoWELDUdJXhjAhsVliSn7bWZjOhrgQ= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +github.com/go-jose/go-jose/v4 v4.1.3 h1:CVLmWDhDVRa6Mi/IgCgaopNosCaHz7zrMeF9MlZRkrs= +github.com/go-jose/go-jose/v4 v4.1.3/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= github.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo= github.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= github.com/gofrs/uuid/v5 v5.3.2 h1:2jfO8j3XgSwlz/wHqemAEugfnTlikAYHhnqQ8Xh4fE0= github.com/gofrs/uuid/v5 v5.3.2/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= +github.com/gofrs/uuid/v5 v5.4.0 h1:EfbpCTjqMuGyq5ZJwxqzn3Cbr2d0rUZU7v5ycAk/e/0= +github.com/gofrs/uuid/v5 v5.4.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= github.com/gohugoio/hashstructure v0.5.0 h1:G2fjSBU36RdwEJBWJ+919ERvOVqAg9tfcYp47K9swqg= github.com/gohugoio/hashstructure v0.5.0/go.mod h1:Ser0TniXuu/eauYmrwM4o64EBvySxNzITEOLlm4igec= +github.com/gohugoio/hashstructure v0.6.0 h1:7wMB/2CfXoThFYhdWRGv3u3rUM761Cq29CxUW+NltUg= +github.com/gohugoio/hashstructure v0.6.0/go.mod h1:lapVLk9XidheHG1IQ4ZSbyYrXcaILU1ZEP/+vno5rBQ= github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= @@ -91,6 +103,7 @@ github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7Ulw github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= github.com/jackc/pgx/v5 v5.7.5 h1:JHGfMnQY+IEtGM63d+NGMjoRpysB2JBwDr5fsngwmJs= github.com/jackc/pgx/v5 v5.7.5/go.mod h1:aruU7o91Tc2q2cFp5h4uP3f6ztExVpyVv88Xl/8Vl8M= +github.com/jackc/pgx/v5 v5.7.6 h1:rWQc5FwZSPX58r1OQmkuaNicxdmExaEz5A2DO2hUuTk= github.com/jackc/pgx/v5 v5.7.6/go.mod h1:aruU7o91Tc2q2cFp5h4uP3f6ztExVpyVv88Xl/8Vl8M= github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= @@ -134,6 +147,8 @@ github.com/muety/artifex/v2 v2.0.1-0.20221201142708-74e7d3f6feaf h1:zd7IU9rxVMl2 github.com/muety/artifex/v2 v2.0.1-0.20221201142708-74e7d3f6feaf/go.mod h1:eElbcdMwTDc7Wzl7A46IopgkC6a9nV7jOB6Mw8r0waE= github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= +github.com/ncruces/go-strftime v1.0.0 h1:HMFp8mLCTPp341M/ZnA4qaf7ZlsbTc+miZjCLOFAw7w= +github.com/ncruces/go-strftime v1.0.0/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= @@ -155,10 +170,13 @@ github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/samber/lo v1.51.0 h1:kysRYLbHy/MB7kQZf5DSN50JHmMsNEdeY24VzJFu7wI= github.com/samber/lo v1.51.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0= +github.com/samber/lo v1.52.0 h1:Rvi+3BFHES3A8meP33VPAxiBZX/Aws5RxrschYGjomw= +github.com/samber/lo v1.52.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0= github.com/samber/slog-common v0.19.0 h1:fNcZb8B2uOLooeYwFpAlKjkQTUafdjfqKcwcC89G9YI= github.com/samber/slog-common v0.19.0/go.mod h1:dTz+YOU76aH007YUU0DffsXNsGFQRQllPQh9XyNoA3M= github.com/samber/slog-multi v1.4.1 h1:OVBxOKcorBcGQVKjwlraA41JKWwHQyB/3KfzL3IJAYg= github.com/samber/slog-multi v1.4.1/go.mod h1:im2Zi3mH/ivSY5XDj6LFcKToRIWPw1OcjSVSdXt+2d0= +github.com/samber/slog-multi v1.5.0 h1:UDRJdsdb0R5vFQFy3l26rpX3rL3FEPJTJ2yKVjoiT1I= github.com/samber/slog-multi v1.5.0/go.mod h1:im2Zi3mH/ivSY5XDj6LFcKToRIWPw1OcjSVSdXt+2d0= github.com/samber/slog-sentry/v2 v2.9.3 h1:2/PZa78BFe0FuW/wm6Q3kBcd1phb1dBFHsCWZ4wX8Ko= github.com/samber/slog-sentry/v2 v2.9.3/go.mod h1:HGQRgN11HkZqSw/X493Zr65yIRx9ZpjZ2T5v2Dx/REc= @@ -197,9 +215,13 @@ golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5D golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= +golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= +golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b h1:DXr+pvt3nC887026GRP39Ej11UATqWDmWuS99x26cD0= golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b/go.mod h1:4QTo5u+SEIbbKW1RacMZq1YEfOBqeXa19JeshGi+zc4= golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk= +golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 h1:mgKeJMpvi0yx/sU5GsxQ7p6s2wtOnGAHZWCHUM4KGzY= +golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546/go.mod h1:j/pmGrbnkbPtQfxEe5D0VQhZC6qKbfKifgD0oM7sR70= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= @@ -227,6 +249,8 @@ golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= +golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -236,6 +260,7 @@ golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -260,6 +285,8 @@ golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= +golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -279,6 +306,8 @@ golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= +golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= +golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= @@ -295,6 +324,8 @@ golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= @@ -324,6 +355,8 @@ gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= gorm.io/gorm v1.30.2 h1:f7bevlVoVe4Byu3pmbWPVHnPsLoWaMjEb7/clyr9Ivs= gorm.io/gorm v1.30.2/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= gorm.io/gorm v1.31.0/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs= +gorm.io/gorm v1.31.1 h1:7CA8FTFz/gRfgqgpeKIBcervUn3xSyPUmr6B2WXJ7kg= +gorm.io/gorm v1.31.1/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs= modernc.org/cc/v4 v4.26.4 h1:jPhG8oNjtTYuP2FA4YefTJ/wioNUGALmGuEWt7SUR6s= modernc.org/cc/v4 v4.26.4/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= modernc.org/ccgo/v4 v4.28.1 h1:wPKYn5EC/mYTqBO373jKjvX2n+3+aK7+sICCv4Fjy1A= @@ -336,6 +369,7 @@ modernc.org/goabi0 v0.2.0 h1:HvEowk7LxcPd0eq6mVOAEMai46V+i7Jrj13t4AzuNks= modernc.org/goabi0 v0.2.0/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI= modernc.org/libc v1.66.8 h1:/awsvTnyN/sNjvJm6S3lb7KZw5WV4ly/sBEG7ZUzmIE= modernc.org/libc v1.66.8/go.mod h1:aVdcY7udcawRqauu0HukYYxtBSizV+R80n/6aQe9D5k= +modernc.org/libc v1.66.10 h1:yZkb3YeLx4oynyR+iUsXsybsX4Ubx7MQlSYEw4yj59A= modernc.org/libc v1.66.10/go.mod h1:8vGSEwvoUoltr4dlywvHqjtAqHBaw0j1jI7iFBTAr2I= modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU= modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg= @@ -348,6 +382,9 @@ modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJ modernc.org/sqlite v1.38.2 h1:Aclu7+tgjgcQVShZqim41Bbw9Cho0y/7WzYptXqkEek= modernc.org/sqlite v1.38.2/go.mod h1:cPTJYSlgg3Sfg046yBShXENNtPrWrDX8bsbAQBzgQ5E= modernc.org/sqlite v1.39.0/go.mod h1:cPTJYSlgg3Sfg046yBShXENNtPrWrDX8bsbAQBzgQ5E= +modernc.org/sqlite v1.39.1/go.mod h1:9fjQZ0mB1LLP0GYrp39oOJXx/I2sxEnZtzCmEQIKvGE= +modernc.org/sqlite v1.40.0 h1:bNWEDlYhNPAUdUdBzjAvn8icAs/2gaKlj4vM+tQ6KdQ= +modernc.org/sqlite v1.40.0/go.mod h1:9fjQZ0mB1LLP0GYrp39oOJXx/I2sxEnZtzCmEQIKvGE= modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0= modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= From c2d0a4546104aa5fce84dd11305a4927d78a5b22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferdinand=20M=C3=BCtsch?= Date: Mon, 3 Nov 2025 22:30:43 +0100 Subject: [PATCH 2/7] fix: use lax samesite mode when using insecure cookies (resolve #855) --- config/session.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/session.go b/config/session.go index 0d35aac..a5bbc51 100644 --- a/config/session.go +++ b/config/session.go @@ -17,7 +17,7 @@ func NewSessionStore() *sessions.CookieStore { ) if Get().Security.InsecureCookies { - store.Options.SameSite = http.SameSiteStrictMode + store.Options.SameSite = http.SameSiteLaxMode store.Options.Secure = false } From 7558dd42064199fe6f0b96ed5c3276e25aa538d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferdinand=20M=C3=BCtsch?= Date: Tue, 4 Nov 2025 08:00:42 +0100 Subject: [PATCH 3/7] docs: correct insecure cookies default value in readme [skip ci] --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f38782c..4bf1c42 100644 --- a/README.md +++ b/README.md @@ -186,7 +186,7 @@ You can specify configuration options either via a config file (default: `config | `server.base_path` /
`WAKAPI_BASE_PATH` | `/` | Web base path (change when running behind a proxy under a sub-path) | | `server.public_url` /
`WAKAPI_PUBLIC_URL` | `http://localhost:3000` | URL at which your Wakapi instance can be found publicly | | `security.password_salt` /
`WAKAPI_PASSWORD_SALT` | - | Pepper to use for password hashing | -| `security.insecure_cookies` /
`WAKAPI_INSECURE_COOKIES` | `false` | Whether or not to allow cookies over HTTP | +| `security.insecure_cookies` /
`WAKAPI_INSECURE_COOKIES` | `true` | Whether or not to allow cookies over HTTP. For production, it is **highly recommended** to serve Wakapi via HTTPS and set this to `false`. | | `security.cookie_max_age` /
`WAKAPI_COOKIE_MAX_AGE` | `172800` | Lifetime of authentication cookies in seconds or `0` to use [Session](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#Define_the_lifetime_of_a_cookie) cookies | | `security.allow_signup` /
`WAKAPI_ALLOW_SIGNUP` | `true` | Whether to enable user registration | | `security.signup_captcha` /
`WAKAPI_SIGNUP_CAPTCHA` | `false` | Whether the registration form requires solving a CAPTCHA | From b3924c41191cdbad2fefdd22c8cf3308bb59616a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferdinand=20M=C3=BCtsch?= Date: Fri, 7 Nov 2025 11:08:54 +0100 Subject: [PATCH 4/7] docs: setup instructions page --- config/templates.go | 1 + coverage/coverage.out | 1215 +++++++++++++++-------------- main.go | 2 + models/view/setup.go | 15 + routes/setup.go | 55 ++ scripts/bundle_icons.js | 2 + static/assets/css/app.dist.css | 2 +- static/assets/css/app.dist.css.br | Bin 4163 -> 4212 bytes static/assets/js/icons.dist.js | 2 +- static/assets/js/icons.dist.js.br | Bin 22808 -> 23107 bytes views/index.tpl.html | 2 +- views/login.tpl.html | 4 +- views/menu-main.tpl.html | 6 + views/setup.tpl.html | 82 ++ views/signup.tpl.html | 6 +- 15 files changed, 791 insertions(+), 603 deletions(-) create mode 100644 models/view/setup.go create mode 100644 routes/setup.go create mode 100644 views/setup.tpl.html diff --git a/config/templates.go b/config/templates.go index ff27397..6475e3d 100644 --- a/config/templates.go +++ b/config/templates.go @@ -4,6 +4,7 @@ const ( IndexTemplate = "index.tpl.html" LoginTemplate = "login.tpl.html" ImprintTemplate = "imprint.tpl.html" + SetupTemplate = "setup.tpl.html" SignupTemplate = "signup.tpl.html" SetPasswordTemplate = "set-password.tpl.html" ResetPasswordTemplate = "reset-password.tpl.html" diff --git a/coverage/coverage.out b/coverage/coverage.out index 4af9cbf..ad0a0b6 100644 --- a/coverage/coverage.out +++ b/coverage/coverage.out @@ -1,160 +1,244 @@ mode: set -github.com/muety/wakapi/config/config.go:231.45,233.2 1 0 -github.com/muety/wakapi/config/config.go:235.64,237.2 1 0 -github.com/muety/wakapi/config/config.go:239.59,241.2 1 0 -github.com/muety/wakapi/config/config.go:243.82,244.16 1 0 -github.com/muety/wakapi/config/config.go:244.16,246.3 1 0 -github.com/muety/wakapi/config/config.go:248.2,256.3 1 0 -github.com/muety/wakapi/config/config.go:259.31,261.2 1 1 -github.com/muety/wakapi/config/config.go:263.32,265.2 1 0 -github.com/muety/wakapi/config/config.go:267.60,269.2 1 0 -github.com/muety/wakapi/config/config.go:271.67,272.37 1 0 -github.com/muety/wakapi/config/config.go:272.37,274.3 1 0 -github.com/muety/wakapi/config/config.go:275.2,275.62 1 0 -github.com/muety/wakapi/config/config.go:278.59,280.2 1 0 -github.com/muety/wakapi/config/config.go:282.57,284.2 1 0 -github.com/muety/wakapi/config/config.go:286.53,288.2 1 0 -github.com/muety/wakapi/config/config.go:290.53,291.46 1 1 -github.com/muety/wakapi/config/config.go:291.46,295.17 3 0 -github.com/muety/wakapi/config/config.go:295.17,297.4 1 0 -github.com/muety/wakapi/config/config.go:299.3,300.17 2 0 -github.com/muety/wakapi/config/config.go:300.17,302.4 1 0 -github.com/muety/wakapi/config/config.go:304.3,304.44 1 0 -github.com/muety/wakapi/config/config.go:307.2,307.51 1 1 -github.com/muety/wakapi/config/config.go:310.50,311.47 1 1 -github.com/muety/wakapi/config/config.go:311.47,318.17 5 0 -github.com/muety/wakapi/config/config.go:318.17,320.4 1 0 -github.com/muety/wakapi/config/config.go:322.3,323.17 2 0 +github.com/muety/wakapi/main.go:114.13,119.18 4 0 +github.com/muety/wakapi/main.go:119.18,122.3 2 0 +github.com/muety/wakapi/main.go:123.2,144.16 8 0 +github.com/muety/wakapi/main.go:144.16,146.3 1 0 +github.com/muety/wakapi/main.go:148.2,148.20 1 0 +github.com/muety/wakapi/main.go:148.20,150.3 1 0 +github.com/muety/wakapi/main.go:151.2,152.16 2 0 +github.com/muety/wakapi/main.go:152.16,154.3 1 0 +github.com/muety/wakapi/main.go:155.2,160.28 4 0 +github.com/muety/wakapi/main.go:160.28,162.3 1 0 +github.com/muety/wakapi/main.go:165.2,194.35 27 0 +github.com/muety/wakapi/main.go:194.35,196.3 1 0 +github.com/muety/wakapi/main.go:199.2,205.35 6 0 +github.com/muety/wakapi/main.go:205.35,207.3 1 0 +github.com/muety/wakapi/main.go:209.2,265.29 35 0 +github.com/muety/wakapi/main.go:265.29,267.3 1 0 +github.com/muety/wakapi/main.go:270.2,321.21 41 0 +github.com/muety/wakapi/main.go:321.21,323.3 1 0 +github.com/muety/wakapi/main.go:324.2,331.24 6 0 +github.com/muety/wakapi/main.go:331.24,333.13 2 0 +github.com/muety/wakapi/main.go:333.13,335.4 1 0 +github.com/muety/wakapi/main.go:339.2,339.16 1 0 +github.com/muety/wakapi/main.go:342.35,346.71 2 0 +github.com/muety/wakapi/main.go:346.71,354.3 2 0 +github.com/muety/wakapi/main.go:357.2,357.71 1 0 +github.com/muety/wakapi/main.go:357.71,365.3 2 0 +github.com/muety/wakapi/main.go:368.2,368.75 1 0 +github.com/muety/wakapi/main.go:368.75,370.64 1 0 +github.com/muety/wakapi/main.go:370.64,372.64 2 0 +github.com/muety/wakapi/main.go:372.64,374.5 1 0 +github.com/muety/wakapi/main.go:376.3,380.4 1 0 +github.com/muety/wakapi/main.go:383.2,383.21 1 0 +github.com/muety/wakapi/main.go:383.21,384.61 1 0 +github.com/muety/wakapi/main.go:384.61,386.14 2 0 +github.com/muety/wakapi/main.go:386.14,387.101 1 0 +github.com/muety/wakapi/main.go:387.101,389.19 2 0 +github.com/muety/wakapi/main.go:389.19,391.7 1 0 +github.com/muety/wakapi/main.go:392.6,392.27 1 0 +github.com/muety/wakapi/main.go:396.3,396.16 1 0 +github.com/muety/wakapi/main.go:396.16,398.14 2 0 +github.com/muety/wakapi/main.go:398.14,399.101 1 0 +github.com/muety/wakapi/main.go:399.101,401.6 1 0 +github.com/muety/wakapi/main.go:404.3,404.21 1 0 +github.com/muety/wakapi/main.go:404.21,406.14 2 0 +github.com/muety/wakapi/main.go:406.14,408.19 2 0 +github.com/muety/wakapi/main.go:408.19,410.6 1 0 +github.com/muety/wakapi/main.go:411.5,411.109 1 0 +github.com/muety/wakapi/main.go:411.109,413.6 1 0 +github.com/muety/wakapi/main.go:414.5,414.111 1 0 +github.com/muety/wakapi/main.go:414.111,416.6 1 0 +github.com/muety/wakapi/main.go:419.8,420.61 1 0 +github.com/muety/wakapi/main.go:420.61,422.14 2 0 +github.com/muety/wakapi/main.go:422.14,423.47 1 0 +github.com/muety/wakapi/main.go:423.47,425.19 2 0 +github.com/muety/wakapi/main.go:425.19,427.7 1 0 +github.com/muety/wakapi/main.go:428.6,428.27 1 0 +github.com/muety/wakapi/main.go:432.3,432.16 1 0 +github.com/muety/wakapi/main.go:432.16,434.14 2 0 +github.com/muety/wakapi/main.go:434.14,435.47 1 0 +github.com/muety/wakapi/main.go:435.47,437.6 1 0 +github.com/muety/wakapi/main.go:440.3,440.21 1 0 +github.com/muety/wakapi/main.go:440.21,442.14 2 0 +github.com/muety/wakapi/main.go:442.14,444.19 2 0 +github.com/muety/wakapi/main.go:444.19,446.6 1 0 +github.com/muety/wakapi/main.go:447.5,447.109 1 0 +github.com/muety/wakapi/main.go:447.109,449.6 1 0 +github.com/muety/wakapi/main.go:450.5,450.55 1 0 +github.com/muety/wakapi/main.go:450.55,452.6 1 0 +github.com/muety/wakapi/main.go:457.2,457.29 1 0 +github.com/muety/wakapi/config/config.go:233.46,234.25 1 1 +github.com/muety/wakapi/config/config.go:234.25,236.3 1 1 +github.com/muety/wakapi/config/config.go:237.2,237.35 1 1 +github.com/muety/wakapi/config/config.go:240.47,244.38 3 1 +github.com/muety/wakapi/config/config.go:244.38,246.3 1 1 +github.com/muety/wakapi/config/config.go:247.2,247.22 1 1 +github.com/muety/wakapi/config/config.go:247.22,249.3 1 1 +github.com/muety/wakapi/config/config.go:250.2,250.26 1 1 +github.com/muety/wakapi/config/config.go:250.26,252.3 1 1 +github.com/muety/wakapi/config/config.go:253.2,253.46 1 1 +github.com/muety/wakapi/config/config.go:253.46,255.3 1 1 +github.com/muety/wakapi/config/config.go:256.2,256.12 1 1 +github.com/muety/wakapi/config/config.go:259.45,261.2 1 0 +github.com/muety/wakapi/config/config.go:263.64,265.2 1 0 +github.com/muety/wakapi/config/config.go:267.59,269.2 1 0 +github.com/muety/wakapi/config/config.go:271.82,272.16 1 0 +github.com/muety/wakapi/config/config.go:272.16,274.3 1 0 +github.com/muety/wakapi/config/config.go:276.2,284.3 1 0 +github.com/muety/wakapi/config/config.go:287.31,289.2 1 1 +github.com/muety/wakapi/config/config.go:291.32,293.2 1 0 +github.com/muety/wakapi/config/config.go:295.60,297.2 1 0 +github.com/muety/wakapi/config/config.go:299.67,300.37 1 0 +github.com/muety/wakapi/config/config.go:300.37,302.3 1 0 +github.com/muety/wakapi/config/config.go:303.2,303.62 1 0 +github.com/muety/wakapi/config/config.go:306.59,308.2 1 0 +github.com/muety/wakapi/config/config.go:310.57,312.2 1 0 +github.com/muety/wakapi/config/config.go:314.53,316.2 1 0 +github.com/muety/wakapi/config/config.go:318.53,319.46 1 1 +github.com/muety/wakapi/config/config.go:319.46,323.17 3 0 github.com/muety/wakapi/config/config.go:323.17,325.4 1 0 -github.com/muety/wakapi/config/config.go:327.3,327.54 1 0 -github.com/muety/wakapi/config/config.go:330.2,330.52 1 1 -github.com/muety/wakapi/config/config.go:333.65,338.56 3 1 -github.com/muety/wakapi/config/config.go:338.56,340.33 1 0 -github.com/muety/wakapi/config/config.go:340.33,343.18 3 0 -github.com/muety/wakapi/config/config.go:343.18,345.5 1 0 -github.com/muety/wakapi/config/config.go:347.4,348.18 2 0 -github.com/muety/wakapi/config/config.go:348.18,350.5 1 0 -github.com/muety/wakapi/config/config.go:352.4,352.45 1 0 -github.com/muety/wakapi/config/config.go:354.8,355.33 1 1 -github.com/muety/wakapi/config/config.go:355.33,357.4 1 1 -github.com/muety/wakapi/config/config.go:360.2,360.76 1 1 -github.com/muety/wakapi/config/config.go:360.76,362.3 1 1 -github.com/muety/wakapi/config/config.go:364.2,364.14 1 1 -github.com/muety/wakapi/config/config.go:367.54,370.2 2 0 -github.com/muety/wakapi/config/config.go:372.54,375.64 2 1 -github.com/muety/wakapi/config/config.go:375.64,377.15 1 1 -github.com/muety/wakapi/config/config.go:377.15,378.12 1 1 -github.com/muety/wakapi/config/config.go:382.3,383.17 2 0 -github.com/muety/wakapi/config/config.go:383.17,385.12 2 0 -github.com/muety/wakapi/config/config.go:389.3,390.22 2 0 -github.com/muety/wakapi/config/config.go:390.22,392.29 2 0 -github.com/muety/wakapi/config/config.go:392.29,394.5 1 0 -github.com/muety/wakapi/config/config.go:395.4,397.12 3 0 -github.com/muety/wakapi/config/config.go:400.3,400.55 1 0 -github.com/muety/wakapi/config/config.go:404.61,406.2 1 0 -github.com/muety/wakapi/config/config.go:408.66,410.2 1 0 -github.com/muety/wakapi/config/config.go:412.65,414.2 1 0 -github.com/muety/wakapi/config/config.go:416.73,418.2 1 0 -github.com/muety/wakapi/config/config.go:420.78,422.2 1 0 -github.com/muety/wakapi/config/config.go:424.55,425.112 1 0 -github.com/muety/wakapi/config/config.go:425.112,427.3 1 0 -github.com/muety/wakapi/config/config.go:430.70,433.23 3 0 -github.com/muety/wakapi/config/config.go:433.23,435.3 1 0 -github.com/muety/wakapi/config/config.go:437.2,441.20 4 0 -github.com/muety/wakapi/config/config.go:442.11,443.28 1 0 -github.com/muety/wakapi/config/config.go:444.11,445.28 1 0 -github.com/muety/wakapi/config/config.go:446.11,447.26 1 0 -github.com/muety/wakapi/config/config.go:450.2,450.51 1 0 -github.com/muety/wakapi/config/config.go:453.36,455.2 1 1 -github.com/muety/wakapi/config/config.go:457.35,459.2 1 0 -github.com/muety/wakapi/config/config.go:461.38,463.2 1 0 -github.com/muety/wakapi/config/config.go:465.35,467.2 1 1 -github.com/muety/wakapi/config/config.go:469.46,471.2 1 1 -github.com/muety/wakapi/config/config.go:473.43,475.2 1 0 -github.com/muety/wakapi/config/config.go:477.29,479.2 1 1 -github.com/muety/wakapi/config/config.go:481.48,492.16 2 1 -github.com/muety/wakapi/config/config.go:492.16,493.48 1 1 -github.com/muety/wakapi/config/config.go:493.48,495.4 1 0 -github.com/muety/wakapi/config/config.go:495.9,497.4 1 1 -github.com/muety/wakapi/config/config.go:500.2,501.53 2 1 -github.com/muety/wakapi/config/config.go:501.53,503.3 1 0 -github.com/muety/wakapi/config/config.go:505.2,505.15 1 1 -github.com/muety/wakapi/config/config.go:508.45,509.27 1 1 -github.com/muety/wakapi/config/config.go:509.27,511.3 1 0 -github.com/muety/wakapi/config/config.go:512.2,512.24 1 1 -github.com/muety/wakapi/config/config.go:512.24,514.3 1 0 -github.com/muety/wakapi/config/config.go:515.2,515.25 1 1 -github.com/muety/wakapi/config/config.go:515.25,517.3 1 0 -github.com/muety/wakapi/config/config.go:518.2,518.15 1 1 -github.com/muety/wakapi/config/config.go:521.26,523.2 1 1 -github.com/muety/wakapi/config/config.go:525.20,527.2 1 1 -github.com/muety/wakapi/config/config.go:529.54,533.101 3 1 -github.com/muety/wakapi/config/config.go:533.101,535.3 1 0 -github.com/muety/wakapi/config/config.go:537.2,543.21 5 1 -github.com/muety/wakapi/config/config.go:543.21,545.3 1 0 -github.com/muety/wakapi/config/config.go:547.2,550.35 4 1 -github.com/muety/wakapi/config/config.go:550.35,552.3 1 0 -github.com/muety/wakapi/config/config.go:553.2,553.25 1 1 -github.com/muety/wakapi/config/config.go:553.25,556.3 2 0 -github.com/muety/wakapi/config/config.go:558.2,562.16 4 1 -github.com/muety/wakapi/config/config.go:562.16,566.3 3 1 -github.com/muety/wakapi/config/config.go:567.2,567.37 1 1 -github.com/muety/wakapi/config/config.go:567.37,569.3 1 0 -github.com/muety/wakapi/config/config.go:571.2,577.47 5 1 -github.com/muety/wakapi/config/config.go:577.47,578.14 1 0 -github.com/muety/wakapi/config/config.go:578.14,580.4 1 0 -github.com/muety/wakapi/config/config.go:583.2,583.29 1 1 -github.com/muety/wakapi/config/config.go:583.29,584.38 1 0 -github.com/muety/wakapi/config/config.go:584.38,586.4 1 0 -github.com/muety/wakapi/config/config.go:587.3,588.60 2 0 -github.com/muety/wakapi/config/config.go:591.2,591.41 1 1 -github.com/muety/wakapi/config/config.go:591.41,593.3 1 1 -github.com/muety/wakapi/config/config.go:593.8,595.35 2 0 -github.com/muety/wakapi/config/config.go:595.35,597.4 1 0 -github.com/muety/wakapi/config/config.go:598.3,598.34 1 0 -github.com/muety/wakapi/config/config.go:602.2,602.108 1 1 -github.com/muety/wakapi/config/config.go:602.108,604.3 1 0 -github.com/muety/wakapi/config/config.go:605.2,605.52 1 1 -github.com/muety/wakapi/config/config.go:605.52,607.3 1 0 -github.com/muety/wakapi/config/config.go:608.2,608.51 1 1 -github.com/muety/wakapi/config/config.go:608.51,611.3 2 1 -github.com/muety/wakapi/config/config.go:612.2,612.100 1 1 -github.com/muety/wakapi/config/config.go:612.100,614.3 1 0 -github.com/muety/wakapi/config/config.go:615.2,615.53 1 1 -github.com/muety/wakapi/config/config.go:615.53,617.3 1 0 -github.com/muety/wakapi/config/config.go:618.2,618.74 1 1 -github.com/muety/wakapi/config/config.go:618.74,620.3 1 0 -github.com/muety/wakapi/config/config.go:621.2,621.95 1 1 -github.com/muety/wakapi/config/config.go:621.95,623.3 1 0 -github.com/muety/wakapi/config/config.go:624.2,624.156 1 1 -github.com/muety/wakapi/config/config.go:624.156,626.3 1 0 -github.com/muety/wakapi/config/config.go:627.2,627.165 1 1 -github.com/muety/wakapi/config/config.go:627.165,629.3 1 0 -github.com/muety/wakapi/config/config.go:631.2,633.78 2 1 -github.com/muety/wakapi/config/config.go:633.78,635.3 1 0 -github.com/muety/wakapi/config/config.go:636.2,636.81 1 1 -github.com/muety/wakapi/config/config.go:636.81,638.3 1 0 -github.com/muety/wakapi/config/config.go:639.2,639.66 1 1 -github.com/muety/wakapi/config/config.go:639.66,640.48 1 1 -github.com/muety/wakapi/config/config.go:640.48,642.4 1 0 -github.com/muety/wakapi/config/config.go:646.2,646.76 1 1 -github.com/muety/wakapi/config/config.go:646.76,648.3 1 0 -github.com/muety/wakapi/config/config.go:651.2,651.55 1 1 -github.com/muety/wakapi/config/config.go:651.55,653.3 1 0 -github.com/muety/wakapi/config/config.go:654.2,654.56 1 1 -github.com/muety/wakapi/config/config.go:654.56,656.3 1 0 -github.com/muety/wakapi/config/config.go:657.2,657.65 1 1 -github.com/muety/wakapi/config/config.go:657.65,659.3 1 0 -github.com/muety/wakapi/config/config.go:661.2,666.14 3 1 -github.com/muety/wakapi/config/config.go:669.22,679.2 1 0 -github.com/muety/wakapi/config/config.go:681.38,684.2 2 0 -github.com/muety/wakapi/config/config.go:686.40,688.50 1 1 -github.com/muety/wakapi/config/config.go:688.50,691.3 2 1 -github.com/muety/wakapi/config/config.go:694.22,706.33 2 1 -github.com/muety/wakapi/config/config.go:706.33,711.69 3 1 -github.com/muety/wakapi/config/config.go:711.69,715.135 3 1 -github.com/muety/wakapi/config/config.go:715.135,718.5 2 0 -github.com/muety/wakapi/config/config.go:719.4,719.18 1 1 +github.com/muety/wakapi/config/config.go:327.3,328.17 2 0 +github.com/muety/wakapi/config/config.go:328.17,330.4 1 0 +github.com/muety/wakapi/config/config.go:332.3,332.44 1 0 +github.com/muety/wakapi/config/config.go:335.2,335.51 1 1 +github.com/muety/wakapi/config/config.go:338.50,339.47 1 1 +github.com/muety/wakapi/config/config.go:339.47,346.17 5 0 +github.com/muety/wakapi/config/config.go:346.17,348.4 1 0 +github.com/muety/wakapi/config/config.go:350.3,351.17 2 0 +github.com/muety/wakapi/config/config.go:351.17,353.4 1 0 +github.com/muety/wakapi/config/config.go:355.3,355.54 1 0 +github.com/muety/wakapi/config/config.go:358.2,358.52 1 1 +github.com/muety/wakapi/config/config.go:361.65,366.56 3 1 +github.com/muety/wakapi/config/config.go:366.56,368.33 1 0 +github.com/muety/wakapi/config/config.go:368.33,371.18 3 0 +github.com/muety/wakapi/config/config.go:371.18,373.5 1 0 +github.com/muety/wakapi/config/config.go:375.4,376.18 2 0 +github.com/muety/wakapi/config/config.go:376.18,378.5 1 0 +github.com/muety/wakapi/config/config.go:380.4,380.45 1 0 +github.com/muety/wakapi/config/config.go:382.8,383.33 1 1 +github.com/muety/wakapi/config/config.go:383.33,385.4 1 1 +github.com/muety/wakapi/config/config.go:388.2,388.76 1 1 +github.com/muety/wakapi/config/config.go:388.76,390.3 1 1 +github.com/muety/wakapi/config/config.go:392.2,392.14 1 1 +github.com/muety/wakapi/config/config.go:395.54,398.2 2 0 +github.com/muety/wakapi/config/config.go:400.54,403.64 2 1 +github.com/muety/wakapi/config/config.go:403.64,405.15 1 1 +github.com/muety/wakapi/config/config.go:405.15,406.12 1 1 +github.com/muety/wakapi/config/config.go:410.3,411.17 2 0 +github.com/muety/wakapi/config/config.go:411.17,413.12 2 0 +github.com/muety/wakapi/config/config.go:417.3,418.22 2 0 +github.com/muety/wakapi/config/config.go:418.22,420.29 2 0 +github.com/muety/wakapi/config/config.go:420.29,422.5 1 0 +github.com/muety/wakapi/config/config.go:423.4,425.12 3 0 +github.com/muety/wakapi/config/config.go:428.3,428.55 1 0 +github.com/muety/wakapi/config/config.go:432.61,434.2 1 0 +github.com/muety/wakapi/config/config.go:436.66,438.2 1 0 +github.com/muety/wakapi/config/config.go:440.65,442.2 1 0 +github.com/muety/wakapi/config/config.go:444.73,446.2 1 0 +github.com/muety/wakapi/config/config.go:448.78,450.2 1 0 +github.com/muety/wakapi/config/config.go:452.55,453.112 1 0 +github.com/muety/wakapi/config/config.go:453.112,455.3 1 0 +github.com/muety/wakapi/config/config.go:458.70,461.23 3 0 +github.com/muety/wakapi/config/config.go:461.23,463.3 1 0 +github.com/muety/wakapi/config/config.go:465.2,469.20 4 0 +github.com/muety/wakapi/config/config.go:470.11,471.28 1 0 +github.com/muety/wakapi/config/config.go:472.11,473.28 1 0 +github.com/muety/wakapi/config/config.go:474.11,475.26 1 0 +github.com/muety/wakapi/config/config.go:478.2,478.51 1 0 +github.com/muety/wakapi/config/config.go:481.36,483.2 1 1 +github.com/muety/wakapi/config/config.go:485.35,487.2 1 0 +github.com/muety/wakapi/config/config.go:489.38,491.2 1 0 +github.com/muety/wakapi/config/config.go:493.35,495.2 1 1 +github.com/muety/wakapi/config/config.go:497.46,499.2 1 1 +github.com/muety/wakapi/config/config.go:501.43,503.2 1 0 +github.com/muety/wakapi/config/config.go:505.29,507.2 1 1 +github.com/muety/wakapi/config/config.go:509.48,520.16 2 1 +github.com/muety/wakapi/config/config.go:520.16,521.48 1 1 +github.com/muety/wakapi/config/config.go:521.48,523.4 1 0 +github.com/muety/wakapi/config/config.go:523.9,525.4 1 1 +github.com/muety/wakapi/config/config.go:528.2,529.53 2 1 +github.com/muety/wakapi/config/config.go:529.53,531.3 1 0 +github.com/muety/wakapi/config/config.go:533.2,533.15 1 1 +github.com/muety/wakapi/config/config.go:536.45,537.27 1 1 +github.com/muety/wakapi/config/config.go:537.27,539.3 1 0 +github.com/muety/wakapi/config/config.go:540.2,540.24 1 1 +github.com/muety/wakapi/config/config.go:540.24,542.3 1 0 +github.com/muety/wakapi/config/config.go:543.2,543.25 1 1 +github.com/muety/wakapi/config/config.go:543.25,545.3 1 0 +github.com/muety/wakapi/config/config.go:546.2,546.15 1 1 +github.com/muety/wakapi/config/config.go:549.26,551.2 1 1 +github.com/muety/wakapi/config/config.go:553.20,555.2 1 1 +github.com/muety/wakapi/config/config.go:557.54,561.101 3 1 +github.com/muety/wakapi/config/config.go:561.101,563.3 1 0 +github.com/muety/wakapi/config/config.go:565.2,571.21 5 1 +github.com/muety/wakapi/config/config.go:571.21,573.3 1 0 +github.com/muety/wakapi/config/config.go:575.2,578.35 4 1 +github.com/muety/wakapi/config/config.go:578.35,580.3 1 0 +github.com/muety/wakapi/config/config.go:581.2,581.25 1 1 +github.com/muety/wakapi/config/config.go:581.25,584.3 2 0 +github.com/muety/wakapi/config/config.go:586.2,590.16 4 1 +github.com/muety/wakapi/config/config.go:590.16,594.3 3 1 +github.com/muety/wakapi/config/config.go:595.2,595.37 1 1 +github.com/muety/wakapi/config/config.go:595.37,597.3 1 0 +github.com/muety/wakapi/config/config.go:599.2,605.47 5 1 +github.com/muety/wakapi/config/config.go:605.47,606.14 1 0 +github.com/muety/wakapi/config/config.go:606.14,608.4 1 0 +github.com/muety/wakapi/config/config.go:611.2,611.29 1 1 +github.com/muety/wakapi/config/config.go:611.29,612.38 1 0 +github.com/muety/wakapi/config/config.go:612.38,614.4 1 0 +github.com/muety/wakapi/config/config.go:615.3,616.60 2 0 +github.com/muety/wakapi/config/config.go:619.2,619.41 1 1 +github.com/muety/wakapi/config/config.go:619.41,621.3 1 1 +github.com/muety/wakapi/config/config.go:621.8,623.35 2 0 +github.com/muety/wakapi/config/config.go:623.35,625.4 1 0 +github.com/muety/wakapi/config/config.go:626.3,626.34 1 0 +github.com/muety/wakapi/config/config.go:630.2,630.108 1 1 +github.com/muety/wakapi/config/config.go:630.108,632.3 1 0 +github.com/muety/wakapi/config/config.go:633.2,633.52 1 1 +github.com/muety/wakapi/config/config.go:633.52,635.3 1 0 +github.com/muety/wakapi/config/config.go:636.2,636.51 1 1 +github.com/muety/wakapi/config/config.go:636.51,639.3 2 1 +github.com/muety/wakapi/config/config.go:640.2,640.100 1 1 +github.com/muety/wakapi/config/config.go:640.100,642.3 1 0 +github.com/muety/wakapi/config/config.go:643.2,643.53 1 1 +github.com/muety/wakapi/config/config.go:643.53,645.3 1 0 +github.com/muety/wakapi/config/config.go:646.2,646.74 1 1 +github.com/muety/wakapi/config/config.go:646.74,648.3 1 0 +github.com/muety/wakapi/config/config.go:649.2,649.95 1 1 +github.com/muety/wakapi/config/config.go:649.95,651.3 1 0 +github.com/muety/wakapi/config/config.go:652.2,652.156 1 1 +github.com/muety/wakapi/config/config.go:652.156,654.3 1 0 +github.com/muety/wakapi/config/config.go:655.2,655.165 1 1 +github.com/muety/wakapi/config/config.go:655.165,657.3 1 0 +github.com/muety/wakapi/config/config.go:658.2,658.57 1 1 +github.com/muety/wakapi/config/config.go:658.57,659.45 1 1 +github.com/muety/wakapi/config/config.go:659.45,661.4 1 0 +github.com/muety/wakapi/config/config.go:664.2,666.78 2 1 +github.com/muety/wakapi/config/config.go:666.78,668.3 1 0 +github.com/muety/wakapi/config/config.go:669.2,669.81 1 1 +github.com/muety/wakapi/config/config.go:669.81,671.3 1 0 +github.com/muety/wakapi/config/config.go:672.2,672.66 1 1 +github.com/muety/wakapi/config/config.go:672.66,673.48 1 1 +github.com/muety/wakapi/config/config.go:673.48,675.4 1 0 +github.com/muety/wakapi/config/config.go:679.2,679.76 1 1 +github.com/muety/wakapi/config/config.go:679.76,681.3 1 0 +github.com/muety/wakapi/config/config.go:684.2,684.55 1 1 +github.com/muety/wakapi/config/config.go:684.55,686.3 1 0 +github.com/muety/wakapi/config/config.go:687.2,687.56 1 1 +github.com/muety/wakapi/config/config.go:687.56,689.3 1 0 +github.com/muety/wakapi/config/config.go:690.2,690.65 1 1 +github.com/muety/wakapi/config/config.go:690.65,692.3 1 0 +github.com/muety/wakapi/config/config.go:694.2,699.14 3 1 +github.com/muety/wakapi/config/config.go:702.22,712.2 1 0 +github.com/muety/wakapi/config/config.go:714.38,717.2 2 0 +github.com/muety/wakapi/config/config.go:719.40,721.50 1 1 +github.com/muety/wakapi/config/config.go:721.50,724.3 2 1 +github.com/muety/wakapi/config/config.go:727.22,739.33 2 1 +github.com/muety/wakapi/config/config.go:739.33,744.69 3 1 +github.com/muety/wakapi/config/config.go:744.69,748.135 3 1 +github.com/muety/wakapi/config/config.go:748.135,751.5 2 0 +github.com/muety/wakapi/config/config.go:752.4,752.18 1 1 github.com/muety/wakapi/config/db.go:53.50,54.19 1 0 github.com/muety/wakapi/config/db.go:55.23,59.5 1 0 github.com/muety/wakapi/config/db.go:60.26,63.5 1 0 @@ -202,36 +286,36 @@ github.com/muety/wakapi/config/jobqueue.go:73.2,73.16 1 0 github.com/muety/wakapi/config/jobqueue.go:76.20,77.30 1 0 github.com/muety/wakapi/config/jobqueue.go:77.30,79.3 1 0 github.com/muety/wakapi/config/key_utils.go:10.58,14.44 2 1 -github.com/muety/wakapi/config/key_utils.go:14.44,16.17 2 0 +github.com/muety/wakapi/config/key_utils.go:14.44,16.17 2 1 github.com/muety/wakapi/config/key_utils.go:16.17,18.4 1 0 -github.com/muety/wakapi/config/key_utils.go:19.3,22.17 3 0 +github.com/muety/wakapi/config/key_utils.go:19.3,22.17 3 1 github.com/muety/wakapi/config/key_utils.go:22.17,24.4 1 0 -github.com/muety/wakapi/config/key_utils.go:25.3,25.46 1 0 -github.com/muety/wakapi/config/key_utils.go:29.2,30.16 2 1 +github.com/muety/wakapi/config/key_utils.go:25.3,25.46 1 1 +github.com/muety/wakapi/config/key_utils.go:29.2,30.16 2 0 github.com/muety/wakapi/config/key_utils.go:30.16,32.3 1 0 -github.com/muety/wakapi/config/key_utils.go:33.2,36.51 3 1 +github.com/muety/wakapi/config/key_utils.go:33.2,36.51 3 0 github.com/muety/wakapi/config/key_utils.go:36.51,38.3 1 0 -github.com/muety/wakapi/config/key_utils.go:39.2,39.45 1 1 +github.com/muety/wakapi/config/key_utils.go:39.2,39.45 1 0 github.com/muety/wakapi/config/logging.go:8.29,10.11 2 1 github.com/muety/wakapi/config/logging.go:10.11,12.3 1 1 github.com/muety/wakapi/config/logging.go:12.8,14.3 1 0 github.com/muety/wakapi/config/logging.go:15.2,15.36 1 1 -github.com/muety/wakapi/config/oidc.go:31.46,33.2 1 0 -github.com/muety/wakapi/config/oidc.go:35.45,37.2 1 0 -github.com/muety/wakapi/config/oidc.go:39.48,41.62 1 0 -github.com/muety/wakapi/config/oidc.go:41.62,43.3 1 0 -github.com/muety/wakapi/config/oidc.go:44.2,44.53 1 0 -github.com/muety/wakapi/config/oidc.go:44.53,46.3 1 0 -github.com/muety/wakapi/config/oidc.go:47.2,47.52 1 0 -github.com/muety/wakapi/config/oidc.go:47.52,49.3 1 0 -github.com/muety/wakapi/config/oidc.go:50.2,50.11 1 0 -github.com/muety/wakapi/config/oidc.go:55.60,59.16 3 1 -github.com/muety/wakapi/config/oidc.go:59.16,62.3 2 0 -github.com/muety/wakapi/config/oidc.go:64.2,76.3 2 1 -github.com/muety/wakapi/config/oidc.go:79.58,81.9 2 1 -github.com/muety/wakapi/config/oidc.go:81.9,83.3 1 0 -github.com/muety/wakapi/config/oidc.go:84.2,84.22 1 1 -github.com/muety/wakapi/config/oidc.go:87.53,90.2 2 0 +github.com/muety/wakapi/config/oidc.go:32.46,34.2 1 0 +github.com/muety/wakapi/config/oidc.go:36.45,38.2 1 0 +github.com/muety/wakapi/config/oidc.go:40.48,42.62 1 0 +github.com/muety/wakapi/config/oidc.go:42.62,44.3 1 0 +github.com/muety/wakapi/config/oidc.go:45.2,45.53 1 0 +github.com/muety/wakapi/config/oidc.go:45.53,47.3 1 0 +github.com/muety/wakapi/config/oidc.go:48.2,48.52 1 0 +github.com/muety/wakapi/config/oidc.go:48.52,50.3 1 0 +github.com/muety/wakapi/config/oidc.go:51.2,51.11 1 0 +github.com/muety/wakapi/config/oidc.go:56.60,60.16 3 1 +github.com/muety/wakapi/config/oidc.go:60.16,63.3 2 0 +github.com/muety/wakapi/config/oidc.go:65.2,78.3 2 1 +github.com/muety/wakapi/config/oidc.go:81.58,83.9 2 1 +github.com/muety/wakapi/config/oidc.go:83.9,85.3 1 0 +github.com/muety/wakapi/config/oidc.go:86.2,86.22 1 1 +github.com/muety/wakapi/config/oidc.go:89.53,92.2 2 0 github.com/muety/wakapi/config/sentry.go:27.26,29.16 2 1 github.com/muety/wakapi/config/sentry.go:29.16,31.3 1 1 github.com/muety/wakapi/config/sentry.go:33.2,33.136 1 1 @@ -364,75 +448,6 @@ github.com/muety/wakapi/helpers/summary.go:82.23,85.3 2 0 github.com/muety/wakapi/helpers/summary.go:86.2,87.16 2 0 github.com/muety/wakapi/helpers/summary.go:87.16,89.3 1 0 github.com/muety/wakapi/helpers/summary.go:90.2,90.27 1 0 -github.com/muety/wakapi/main.go:114.13,119.18 4 0 -github.com/muety/wakapi/main.go:119.18,122.3 2 0 -github.com/muety/wakapi/main.go:123.2,144.16 8 0 -github.com/muety/wakapi/main.go:144.16,146.3 1 0 -github.com/muety/wakapi/main.go:148.2,148.20 1 0 -github.com/muety/wakapi/main.go:148.20,150.3 1 0 -github.com/muety/wakapi/main.go:151.2,152.16 2 0 -github.com/muety/wakapi/main.go:152.16,154.3 1 0 -github.com/muety/wakapi/main.go:155.2,160.28 4 0 -github.com/muety/wakapi/main.go:160.28,162.3 1 0 -github.com/muety/wakapi/main.go:165.2,194.35 27 0 -github.com/muety/wakapi/main.go:194.35,196.3 1 0 -github.com/muety/wakapi/main.go:199.2,205.35 6 0 -github.com/muety/wakapi/main.go:205.35,207.3 1 0 -github.com/muety/wakapi/main.go:209.2,264.29 34 0 -github.com/muety/wakapi/main.go:264.29,266.3 1 0 -github.com/muety/wakapi/main.go:269.2,319.21 40 0 -github.com/muety/wakapi/main.go:319.21,321.3 1 0 -github.com/muety/wakapi/main.go:322.2,329.24 6 0 -github.com/muety/wakapi/main.go:329.24,331.13 2 0 -github.com/muety/wakapi/main.go:331.13,333.4 1 0 -github.com/muety/wakapi/main.go:337.2,337.16 1 0 -github.com/muety/wakapi/main.go:340.35,344.71 2 0 -github.com/muety/wakapi/main.go:344.71,352.3 2 0 -github.com/muety/wakapi/main.go:355.2,355.71 1 0 -github.com/muety/wakapi/main.go:355.71,363.3 2 0 -github.com/muety/wakapi/main.go:366.2,366.75 1 0 -github.com/muety/wakapi/main.go:366.75,368.64 1 0 -github.com/muety/wakapi/main.go:368.64,370.64 2 0 -github.com/muety/wakapi/main.go:370.64,372.5 1 0 -github.com/muety/wakapi/main.go:374.3,378.4 1 0 -github.com/muety/wakapi/main.go:381.2,381.21 1 0 -github.com/muety/wakapi/main.go:381.21,382.61 1 0 -github.com/muety/wakapi/main.go:382.61,384.14 2 0 -github.com/muety/wakapi/main.go:384.14,385.101 1 0 -github.com/muety/wakapi/main.go:385.101,387.19 2 0 -github.com/muety/wakapi/main.go:387.19,389.7 1 0 -github.com/muety/wakapi/main.go:390.6,390.27 1 0 -github.com/muety/wakapi/main.go:394.3,394.16 1 0 -github.com/muety/wakapi/main.go:394.16,396.14 2 0 -github.com/muety/wakapi/main.go:396.14,397.101 1 0 -github.com/muety/wakapi/main.go:397.101,399.6 1 0 -github.com/muety/wakapi/main.go:402.3,402.21 1 0 -github.com/muety/wakapi/main.go:402.21,404.14 2 0 -github.com/muety/wakapi/main.go:404.14,406.19 2 0 -github.com/muety/wakapi/main.go:406.19,408.6 1 0 -github.com/muety/wakapi/main.go:409.5,409.109 1 0 -github.com/muety/wakapi/main.go:409.109,411.6 1 0 -github.com/muety/wakapi/main.go:412.5,412.111 1 0 -github.com/muety/wakapi/main.go:412.111,414.6 1 0 -github.com/muety/wakapi/main.go:417.8,418.61 1 0 -github.com/muety/wakapi/main.go:418.61,420.14 2 0 -github.com/muety/wakapi/main.go:420.14,421.47 1 0 -github.com/muety/wakapi/main.go:421.47,423.19 2 0 -github.com/muety/wakapi/main.go:423.19,425.7 1 0 -github.com/muety/wakapi/main.go:426.6,426.27 1 0 -github.com/muety/wakapi/main.go:430.3,430.16 1 0 -github.com/muety/wakapi/main.go:430.16,432.14 2 0 -github.com/muety/wakapi/main.go:432.14,433.47 1 0 -github.com/muety/wakapi/main.go:433.47,435.6 1 0 -github.com/muety/wakapi/main.go:438.3,438.21 1 0 -github.com/muety/wakapi/main.go:438.21,440.14 2 0 -github.com/muety/wakapi/main.go:440.14,442.19 2 0 -github.com/muety/wakapi/main.go:442.19,444.6 1 0 -github.com/muety/wakapi/main.go:445.5,445.109 1 0 -github.com/muety/wakapi/main.go:445.109,447.6 1 0 -github.com/muety/wakapi/main.go:448.5,448.55 1 0 -github.com/muety/wakapi/main.go:448.55,450.6 1 0 -github.com/muety/wakapi/main.go:455.2,455.29 1 0 github.com/muety/wakapi/lib/concurrent_map.go:10.67,14.2 1 0 github.com/muety/wakapi/lib/concurrent_map.go:16.51,20.2 3 0 github.com/muety/wakapi/lib/concurrent_map.go:22.52,27.2 4 0 @@ -603,6 +618,129 @@ github.com/muety/wakapi/middlewares/custom/wakatime.go:183.37,186.3 2 0 github.com/muety/wakapi/middlewares/custom/wakatime.go:188.2,189.62 2 0 github.com/muety/wakapi/middlewares/custom/wakatime.go:189.62,191.3 1 0 github.com/muety/wakapi/middlewares/custom/wakatime.go:192.2,194.12 2 0 +github.com/muety/wakapi/mocks/alias_repository.go:13.65,16.2 2 0 +github.com/muety/wakapi/mocks/alias_repository.go:18.76,21.2 2 0 +github.com/muety/wakapi/mocks/alias_repository.go:23.93,26.2 2 0 +github.com/muety/wakapi/mocks/alias_repository.go:28.109,31.2 2 0 +github.com/muety/wakapi/mocks/alias_repository.go:33.109,36.2 2 0 +github.com/muety/wakapi/mocks/alias_repository.go:38.78,41.2 2 0 +github.com/muety/wakapi/mocks/alias_repository.go:43.52,46.2 2 0 +github.com/muety/wakapi/mocks/alias_repository.go:48.59,51.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:12.57,15.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:17.59,20.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:22.92,25.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:27.73,30.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:32.89,35.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:37.106,40.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:42.75,45.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:47.58,50.2 2 0 +github.com/muety/wakapi/mocks/alias_service.go:52.65,55.2 2 0 +github.com/muety/wakapi/mocks/base_repository.go:12.52,15.2 2 0 +github.com/muety/wakapi/mocks/base_repository.go:17.73,20.2 2 0 +github.com/muety/wakapi/mocks/base_repository.go:22.74,25.2 2 0 +github.com/muety/wakapi/mocks/base_repository.go:27.71,30.2 2 0 +github.com/muety/wakapi/mocks/base_repository.go:32.50,33.2 0 0 +github.com/muety/wakapi/mocks/duration_repository.go:15.74,18.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:20.71,23.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:25.118,28.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:30.151,33.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:35.91,38.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:40.110,43.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:45.92,48.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:50.124,53.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:55.157,58.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:60.69,63.2 2 0 +github.com/muety/wakapi/mocks/duration_repository.go:65.88,68.2 2 0 +github.com/muety/wakapi/mocks/duration_service.go:13.158,16.2 2 0 +github.com/muety/wakapi/mocks/duration_service.go:18.66,20.2 1 0 +github.com/muety/wakapi/mocks/duration_service.go:22.48,23.2 0 0 +github.com/muety/wakapi/mocks/duration_service.go:25.66,28.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:15.66,18.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:20.73,23.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:25.61,28.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:30.78,33.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:35.98,38.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:40.126,43.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:45.123,48.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:50.160,53.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:55.160,58.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:60.76,63.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:65.75,68.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:70.82,73.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:75.81,78.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:80.92,83.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:85.94,88.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:90.113,93.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:95.113,98.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:100.91,103.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:105.67,108.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:110.67,113.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:115.86,118.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:120.146,123.2 2 0 +github.com/muety/wakapi/mocks/heartbeat_service.go:125.97,128.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:13.83,16.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:18.78,21.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:23.87,26.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:28.73,31.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:33.60,36.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:38.74,41.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:43.62,46.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:48.76,51.2 2 0 +github.com/muety/wakapi/mocks/key_value_service.go:53.69,56.2 2 0 +github.com/muety/wakapi/mocks/language_mapping_service.go:12.87,15.2 2 0 +github.com/muety/wakapi/mocks/language_mapping_service.go:17.93,20.2 2 0 +github.com/muety/wakapi/mocks/language_mapping_service.go:22.89,25.2 2 0 +github.com/muety/wakapi/mocks/language_mapping_service.go:27.105,30.2 2 0 +github.com/muety/wakapi/mocks/language_mapping_service.go:32.78,35.2 2 0 +github.com/muety/wakapi/mocks/project_label_service.go:12.81,15.2 2 0 +github.com/muety/wakapi/mocks/project_label_service.go:17.87,20.2 2 0 +github.com/muety/wakapi/mocks/project_label_service.go:22.105,25.2 2 0 +github.com/muety/wakapi/mocks/project_label_service.go:27.113,30.2 2 0 +github.com/muety/wakapi/mocks/project_label_service.go:32.96,35.2 2 0 +github.com/muety/wakapi/mocks/project_label_service.go:37.72,40.2 2 0 +github.com/muety/wakapi/mocks/summary_repository.go:14.65,17.2 2 0 +github.com/muety/wakapi/mocks/summary_repository.go:19.69,22.2 2 0 +github.com/muety/wakapi/mocks/summary_repository.go:24.120,27.2 2 0 +github.com/muety/wakapi/mocks/summary_repository.go:29.79,32.2 2 0 +github.com/muety/wakapi/mocks/summary_repository.go:34.62,37.2 2 0 +github.com/muety/wakapi/mocks/summary_repository.go:39.81,42.2 2 0 +github.com/muety/wakapi/mocks/summary_service.go:14.177,17.2 2 0 +github.com/muety/wakapi/mocks/summary_service.go:19.144,22.2 2 0 +github.com/muety/wakapi/mocks/summary_service.go:24.145,27.2 2 0 +github.com/muety/wakapi/mocks/summary_service.go:29.78,32.2 2 0 +github.com/muety/wakapi/mocks/summary_service.go:34.59,37.2 2 0 +github.com/muety/wakapi/mocks/summary_service.go:39.78,42.2 2 0 +github.com/muety/wakapi/mocks/summary_service.go:44.62,47.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:12.71,14.24 2 0 +github.com/muety/wakapi/mocks/user_service.go:14.24,16.3 1 0 +github.com/muety/wakapi/mocks/user_service.go:17.2,17.50 1 0 +github.com/muety/wakapi/mocks/user_service.go:20.72,23.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:25.74,28.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:30.79,33.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:35.85,38.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:40.78,42.24 2 0 +github.com/muety/wakapi/mocks/user_service.go:42.24,44.3 1 0 +github.com/muety/wakapi/mocks/user_service.go:45.2,45.50 1 0 +github.com/muety/wakapi/mocks/user_service.go:48.60,51.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:53.75,56.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:58.71,61.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:63.86,66.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:68.79,70.23 1 0 +github.com/muety/wakapi/mocks/user_service.go:73.75,76.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:78.85,81.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:83.69,86.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:88.50,91.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:93.63,96.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:98.104,101.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:103.75,106.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:108.59,111.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:113.80,116.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:118.109,121.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:123.87,126.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:128.93,131.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:133.92,136.2 2 0 +github.com/muety/wakapi/mocks/user_service.go:138.40,140.2 1 0 +github.com/muety/wakapi/mocks/user_service.go:142.52,144.2 1 0 github.com/muety/wakapi/migrations/20201103_rename_language_mappings_table.go:10.13,13.50 1 0 github.com/muety/wakapi/migrations/20201103_rename_language_mappings_table.go:13.50,18.39 4 0 github.com/muety/wakapi/migrations/20201103_rename_language_mappings_table.go:18.39,20.89 2 0 @@ -983,197 +1121,27 @@ github.com/muety/wakapi/migrations/shared.go:14.64,17.3 2 0 github.com/muety/wakapi/migrations/shared.go:18.2,18.14 1 0 github.com/muety/wakapi/migrations/shared.go:21.42,25.23 1 0 github.com/muety/wakapi/migrations/shared.go:25.23,27.3 1 0 -github.com/muety/wakapi/mocks/alias_repository.go:13.65,16.2 2 0 -github.com/muety/wakapi/mocks/alias_repository.go:18.76,21.2 2 0 -github.com/muety/wakapi/mocks/alias_repository.go:23.93,26.2 2 0 -github.com/muety/wakapi/mocks/alias_repository.go:28.109,31.2 2 0 -github.com/muety/wakapi/mocks/alias_repository.go:33.109,36.2 2 0 -github.com/muety/wakapi/mocks/alias_repository.go:38.78,41.2 2 0 -github.com/muety/wakapi/mocks/alias_repository.go:43.52,46.2 2 0 -github.com/muety/wakapi/mocks/alias_repository.go:48.59,51.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:12.57,15.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:17.59,20.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:22.92,25.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:27.73,30.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:32.89,35.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:37.106,40.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:42.75,45.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:47.58,50.2 2 0 -github.com/muety/wakapi/mocks/alias_service.go:52.65,55.2 2 0 -github.com/muety/wakapi/mocks/base_repository.go:12.52,15.2 2 0 -github.com/muety/wakapi/mocks/base_repository.go:17.73,20.2 2 0 -github.com/muety/wakapi/mocks/base_repository.go:22.74,25.2 2 0 -github.com/muety/wakapi/mocks/base_repository.go:27.71,30.2 2 0 -github.com/muety/wakapi/mocks/base_repository.go:32.50,33.2 0 0 -github.com/muety/wakapi/mocks/duration_repository.go:15.74,18.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:20.71,23.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:25.118,28.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:30.151,33.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:35.91,38.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:40.110,43.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:45.92,48.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:50.124,53.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:55.157,58.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:60.69,63.2 2 0 -github.com/muety/wakapi/mocks/duration_repository.go:65.88,68.2 2 0 -github.com/muety/wakapi/mocks/duration_service.go:13.158,16.2 2 0 -github.com/muety/wakapi/mocks/duration_service.go:18.66,20.2 1 0 -github.com/muety/wakapi/mocks/duration_service.go:22.48,23.2 0 0 -github.com/muety/wakapi/mocks/duration_service.go:25.66,28.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:15.66,18.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:20.73,23.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:25.61,28.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:30.78,33.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:35.98,38.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:40.126,43.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:45.123,48.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:50.160,53.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:55.160,58.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:60.76,63.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:65.75,68.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:70.82,73.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:75.81,78.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:80.92,83.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:85.94,88.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:90.113,93.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:95.113,98.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:100.91,103.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:105.67,108.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:110.67,113.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:115.86,118.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:120.146,123.2 2 0 -github.com/muety/wakapi/mocks/heartbeat_service.go:125.97,128.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:13.83,16.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:18.78,21.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:23.87,26.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:28.73,31.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:33.60,36.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:38.74,41.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:43.62,46.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:48.76,51.2 2 0 -github.com/muety/wakapi/mocks/key_value_service.go:53.69,56.2 2 0 -github.com/muety/wakapi/mocks/language_mapping_service.go:12.87,15.2 2 0 -github.com/muety/wakapi/mocks/language_mapping_service.go:17.93,20.2 2 0 -github.com/muety/wakapi/mocks/language_mapping_service.go:22.89,25.2 2 0 -github.com/muety/wakapi/mocks/language_mapping_service.go:27.105,30.2 2 0 -github.com/muety/wakapi/mocks/language_mapping_service.go:32.78,35.2 2 0 -github.com/muety/wakapi/mocks/project_label_service.go:12.81,15.2 2 0 -github.com/muety/wakapi/mocks/project_label_service.go:17.87,20.2 2 0 -github.com/muety/wakapi/mocks/project_label_service.go:22.105,25.2 2 0 -github.com/muety/wakapi/mocks/project_label_service.go:27.113,30.2 2 0 -github.com/muety/wakapi/mocks/project_label_service.go:32.96,35.2 2 0 -github.com/muety/wakapi/mocks/project_label_service.go:37.72,40.2 2 0 -github.com/muety/wakapi/mocks/summary_repository.go:14.65,17.2 2 0 -github.com/muety/wakapi/mocks/summary_repository.go:19.69,22.2 2 0 -github.com/muety/wakapi/mocks/summary_repository.go:24.120,27.2 2 0 -github.com/muety/wakapi/mocks/summary_repository.go:29.79,32.2 2 0 -github.com/muety/wakapi/mocks/summary_repository.go:34.62,37.2 2 0 -github.com/muety/wakapi/mocks/summary_repository.go:39.81,42.2 2 0 -github.com/muety/wakapi/mocks/summary_service.go:14.177,17.2 2 0 -github.com/muety/wakapi/mocks/summary_service.go:19.144,22.2 2 0 -github.com/muety/wakapi/mocks/summary_service.go:24.145,27.2 2 0 -github.com/muety/wakapi/mocks/summary_service.go:29.78,32.2 2 0 -github.com/muety/wakapi/mocks/summary_service.go:34.59,37.2 2 0 -github.com/muety/wakapi/mocks/summary_service.go:39.78,42.2 2 0 -github.com/muety/wakapi/mocks/summary_service.go:44.62,47.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:12.71,14.24 2 0 -github.com/muety/wakapi/mocks/user_service.go:14.24,16.3 1 0 -github.com/muety/wakapi/mocks/user_service.go:17.2,17.50 1 0 -github.com/muety/wakapi/mocks/user_service.go:20.72,23.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:25.74,28.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:30.79,33.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:35.85,38.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:40.78,42.24 2 0 -github.com/muety/wakapi/mocks/user_service.go:42.24,44.3 1 0 -github.com/muety/wakapi/mocks/user_service.go:45.2,45.50 1 0 -github.com/muety/wakapi/mocks/user_service.go:48.60,51.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:53.75,56.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:58.71,61.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:63.86,66.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:68.79,70.23 1 0 -github.com/muety/wakapi/mocks/user_service.go:73.75,76.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:78.85,81.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:83.69,86.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:88.50,91.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:93.63,96.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:98.104,101.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:103.75,106.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:108.59,111.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:113.80,116.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:118.109,121.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:123.87,126.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:128.93,131.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:133.92,136.2 2 0 -github.com/muety/wakapi/mocks/user_service.go:138.40,140.2 1 0 -github.com/muety/wakapi/mocks/user_service.go:142.52,144.2 1 0 -github.com/muety/wakapi/models/view/common.go:29.77,34.21 2 0 -github.com/muety/wakapi/models/view/common.go:34.21,36.3 1 0 -github.com/muety/wakapi/models/view/common.go:37.2,37.11 1 0 -github.com/muety/wakapi/models/view/common.go:40.45,42.2 1 0 -github.com/muety/wakapi/models/view/common.go:44.47,46.2 1 0 -github.com/muety/wakapi/models/view/common.go:48.50,49.19 1 0 -github.com/muety/wakapi/models/view/common.go:49.19,51.3 1 0 -github.com/muety/wakapi/models/view/common.go:52.2,52.11 1 0 -github.com/muety/wakapi/models/view/home.go:16.62,19.2 2 0 -github.com/muety/wakapi/models/view/home.go:21.60,24.2 2 0 -github.com/muety/wakapi/models/view/imprint.go:8.68,11.2 2 0 -github.com/muety/wakapi/models/view/imprint.go:13.66,16.2 2 0 -github.com/muety/wakapi/models/view/imprint.go:18.69,21.2 2 0 -github.com/muety/wakapi/models/view/leaderboard.go:20.76,23.2 2 0 -github.com/muety/wakapi/models/view/leaderboard.go:25.74,28.2 2 0 -github.com/muety/wakapi/models/view/leaderboard.go:30.113,31.53 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:31.53,33.3 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:34.2,34.20 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:34.20,36.3 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:37.2,37.20 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:37.20,39.3 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:40.2,40.20 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:40.20,42.3 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:43.2,43.18 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:46.61,48.2 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:50.55,52.19 2 0 -github.com/muety/wakapi/models/view/leaderboard.go:52.19,54.3 1 0 -github.com/muety/wakapi/models/view/leaderboard.go:55.2,55.56 1 0 -github.com/muety/wakapi/models/view/login.go:17.67,19.2 1 0 -github.com/muety/wakapi/models/view/login.go:21.64,24.2 2 0 -github.com/muety/wakapi/models/view/login.go:26.62,29.2 2 0 -github.com/muety/wakapi/models/view/projects.go:19.58,21.2 1 0 -github.com/muety/wakapi/models/view/projects.go:23.65,27.2 3 0 -github.com/muety/wakapi/models/view/projects.go:29.70,32.2 2 0 -github.com/muety/wakapi/models/view/projects.go:34.68,37.2 2 0 -github.com/muety/wakapi/models/view/projects.go:39.49,40.21 1 0 -github.com/muety/wakapi/models/view/projects.go:40.21,41.122 1 0 -github.com/muety/wakapi/models/view/projects.go:41.122,43.4 1 0 -github.com/muety/wakapi/models/view/projects.go:45.2,45.36 1 0 -github.com/muety/wakapi/models/view/projects.go:48.75,56.2 3 0 -github.com/muety/wakapi/models/view/settings.go:33.57,35.2 1 0 -github.com/muety/wakapi/models/view/settings.go:37.70,40.2 2 0 -github.com/muety/wakapi/models/view/settings.go:42.68,45.2 2 0 -github.com/muety/wakapi/models/view/summary.go:53.77,55.36 2 0 -github.com/muety/wakapi/models/view/summary.go:55.36,58.100 1 0 -github.com/muety/wakapi/models/view/summary.go:58.100,63.5 1 0 -github.com/muety/wakapi/models/view/summary.go:66.2,66.11 1 0 -github.com/muety/wakapi/models/view/summary.go:69.109,71.78 1 0 -github.com/muety/wakapi/models/view/summary.go:71.78,78.4 1 0 -github.com/muety/wakapi/models/view/summary.go:80.2,80.109 1 0 -github.com/muety/wakapi/models/view/summary.go:80.109,84.3 3 0 -github.com/muety/wakapi/models/view/summary.go:86.2,86.25 1 0 -github.com/muety/wakapi/models/view/summary.go:89.88,90.86 1 0 -github.com/muety/wakapi/models/view/summary.go:90.86,90.109 1 0 -github.com/muety/wakapi/models/view/summary.go:92.2,93.49 2 0 -github.com/muety/wakapi/models/view/summary.go:93.49,98.3 1 0 -github.com/muety/wakapi/models/view/summary.go:100.2,100.124 1 0 -github.com/muety/wakapi/models/view/summary.go:100.124,101.65 1 0 -github.com/muety/wakapi/models/view/summary.go:101.65,103.4 1 0 -github.com/muety/wakapi/models/view/summary.go:104.3,104.14 1 0 -github.com/muety/wakapi/models/view/summary.go:107.2,107.30 1 0 -github.com/muety/wakapi/models/view/summary.go:110.51,117.2 2 0 -github.com/muety/wakapi/models/view/summary.go:119.68,122.2 2 0 -github.com/muety/wakapi/models/view/summary.go:124.66,127.2 2 0 -github.com/muety/wakapi/models/view/utils.go:5.46,33.55 2 0 -github.com/muety/wakapi/models/view/utils.go:33.55,35.3 1 0 -github.com/muety/wakapi/models/view/utils.go:36.2,36.11 1 0 -github.com/muety/wakapi/models/view/utils.go:39.50,51.2 3 0 +github.com/muety/wakapi/models/metrics/counter_metric.go:12.37,14.2 1 0 +github.com/muety/wakapi/models/metrics/counter_metric.go:16.39,18.2 1 0 +github.com/muety/wakapi/models/metrics/counter_metric.go:20.40,22.2 1 0 +github.com/muety/wakapi/models/metrics/gauge_metric.go:12.35,14.2 1 0 +github.com/muety/wakapi/models/metrics/gauge_metric.go:16.37,18.2 1 0 +github.com/muety/wakapi/models/metrics/gauge_metric.go:20.38,22.2 1 0 +github.com/muety/wakapi/models/metrics/label.go:15.32,17.22 2 0 +github.com/muety/wakapi/models/metrics/label.go:17.22,19.3 1 0 +github.com/muety/wakapi/models/metrics/label.go:20.2,20.17 1 0 +github.com/muety/wakapi/models/metrics/label.go:20.17,22.3 1 0 +github.com/muety/wakapi/models/metrics/label.go:23.2,23.62 1 0 +github.com/muety/wakapi/models/metrics/label.go:26.31,28.2 1 0 +github.com/muety/wakapi/models/metrics/metric.go:14.42,16.22 2 0 +github.com/muety/wakapi/models/metrics/metric.go:16.22,17.44 1 0 +github.com/muety/wakapi/models/metrics/metric.go:17.44,20.4 2 0 +github.com/muety/wakapi/models/metrics/metric.go:21.3,21.43 1 0 +github.com/muety/wakapi/models/metrics/metric.go:24.2,24.15 1 0 +github.com/muety/wakapi/models/metrics/metric.go:27.28,29.2 1 0 +github.com/muety/wakapi/models/metrics/metric.go:31.38,33.2 1 0 +github.com/muety/wakapi/models/metrics/metric.go:35.33,37.2 1 0 +github.com/muety/wakapi/models/compat/shields/v1/badge.go:22.59,29.2 1 0 github.com/muety/wakapi/models/compat/wakatime/v1/all_time.go:30.64,47.2 3 0 github.com/muety/wakapi/models/compat/wakatime/v1/heartbeat.go:27.46,28.76 1 0 github.com/muety/wakapi/models/compat/wakatime/v1/heartbeat.go:28.76,30.3 1 0 @@ -1253,27 +1221,76 @@ github.com/muety/wakapi/models/compat/wakatime/v1/user.go:47.43,49.3 1 0 github.com/muety/wakapi/models/compat/wakatime/v1/user.go:51.2,60.3 1 0 github.com/muety/wakapi/models/compat/wakatime/v1/user.go:63.63,68.2 4 0 github.com/muety/wakapi/models/compat/wakatime/v1/user_agent.go:26.81,34.2 7 0 -github.com/muety/wakapi/models/metrics/counter_metric.go:12.37,14.2 1 0 -github.com/muety/wakapi/models/metrics/counter_metric.go:16.39,18.2 1 0 -github.com/muety/wakapi/models/metrics/counter_metric.go:20.40,22.2 1 0 -github.com/muety/wakapi/models/metrics/gauge_metric.go:12.35,14.2 1 0 -github.com/muety/wakapi/models/metrics/gauge_metric.go:16.37,18.2 1 0 -github.com/muety/wakapi/models/metrics/gauge_metric.go:20.38,22.2 1 0 -github.com/muety/wakapi/models/metrics/label.go:15.32,17.22 2 0 -github.com/muety/wakapi/models/metrics/label.go:17.22,19.3 1 0 -github.com/muety/wakapi/models/metrics/label.go:20.2,20.17 1 0 -github.com/muety/wakapi/models/metrics/label.go:20.17,22.3 1 0 -github.com/muety/wakapi/models/metrics/label.go:23.2,23.62 1 0 -github.com/muety/wakapi/models/metrics/label.go:26.31,28.2 1 0 -github.com/muety/wakapi/models/metrics/metric.go:14.42,16.22 2 0 -github.com/muety/wakapi/models/metrics/metric.go:16.22,17.44 1 0 -github.com/muety/wakapi/models/metrics/metric.go:17.44,20.4 2 0 -github.com/muety/wakapi/models/metrics/metric.go:21.3,21.43 1 0 -github.com/muety/wakapi/models/metrics/metric.go:24.2,24.15 1 0 -github.com/muety/wakapi/models/metrics/metric.go:27.28,29.2 1 0 -github.com/muety/wakapi/models/metrics/metric.go:31.38,33.2 1 0 -github.com/muety/wakapi/models/metrics/metric.go:35.33,37.2 1 0 -github.com/muety/wakapi/models/compat/shields/v1/badge.go:22.59,29.2 1 0 +github.com/muety/wakapi/models/view/common.go:29.77,34.21 2 0 +github.com/muety/wakapi/models/view/common.go:34.21,36.3 1 0 +github.com/muety/wakapi/models/view/common.go:37.2,37.11 1 0 +github.com/muety/wakapi/models/view/common.go:40.45,42.2 1 0 +github.com/muety/wakapi/models/view/common.go:44.47,46.2 1 0 +github.com/muety/wakapi/models/view/common.go:48.50,49.19 1 0 +github.com/muety/wakapi/models/view/common.go:49.19,51.3 1 0 +github.com/muety/wakapi/models/view/common.go:52.2,52.11 1 0 +github.com/muety/wakapi/models/view/home.go:16.62,19.2 2 0 +github.com/muety/wakapi/models/view/home.go:21.60,24.2 2 0 +github.com/muety/wakapi/models/view/imprint.go:8.68,11.2 2 0 +github.com/muety/wakapi/models/view/imprint.go:13.66,16.2 2 0 +github.com/muety/wakapi/models/view/imprint.go:18.69,21.2 2 0 +github.com/muety/wakapi/models/view/leaderboard.go:20.76,23.2 2 0 +github.com/muety/wakapi/models/view/leaderboard.go:25.74,28.2 2 0 +github.com/muety/wakapi/models/view/leaderboard.go:30.113,31.53 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:31.53,33.3 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:34.2,34.20 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:34.20,36.3 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:37.2,37.20 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:37.20,39.3 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:40.2,40.20 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:40.20,42.3 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:43.2,43.18 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:46.61,48.2 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:50.55,52.19 2 0 +github.com/muety/wakapi/models/view/leaderboard.go:52.19,54.3 1 0 +github.com/muety/wakapi/models/view/leaderboard.go:55.2,55.56 1 0 +github.com/muety/wakapi/models/view/login.go:22.67,24.2 1 0 +github.com/muety/wakapi/models/view/login.go:26.64,29.2 2 0 +github.com/muety/wakapi/models/view/login.go:31.62,34.2 2 0 +github.com/muety/wakapi/models/view/projects.go:19.58,21.2 1 0 +github.com/muety/wakapi/models/view/projects.go:23.65,27.2 3 0 +github.com/muety/wakapi/models/view/projects.go:29.70,32.2 2 0 +github.com/muety/wakapi/models/view/projects.go:34.68,37.2 2 0 +github.com/muety/wakapi/models/view/projects.go:39.49,40.21 1 0 +github.com/muety/wakapi/models/view/projects.go:40.21,41.122 1 0 +github.com/muety/wakapi/models/view/projects.go:41.122,43.4 1 0 +github.com/muety/wakapi/models/view/projects.go:45.2,45.36 1 0 +github.com/muety/wakapi/models/view/projects.go:48.75,56.2 3 0 +github.com/muety/wakapi/models/view/settings.go:33.57,35.2 1 0 +github.com/muety/wakapi/models/view/settings.go:37.70,40.2 2 0 +github.com/muety/wakapi/models/view/settings.go:42.68,45.2 2 0 +github.com/muety/wakapi/models/view/setup.go:7.64,10.2 2 0 +github.com/muety/wakapi/models/view/setup.go:12.62,15.2 2 0 +github.com/muety/wakapi/models/view/summary.go:53.77,55.36 2 0 +github.com/muety/wakapi/models/view/summary.go:55.36,58.100 1 0 +github.com/muety/wakapi/models/view/summary.go:58.100,63.5 1 0 +github.com/muety/wakapi/models/view/summary.go:66.2,66.11 1 0 +github.com/muety/wakapi/models/view/summary.go:69.109,71.78 1 0 +github.com/muety/wakapi/models/view/summary.go:71.78,78.4 1 0 +github.com/muety/wakapi/models/view/summary.go:80.2,80.109 1 0 +github.com/muety/wakapi/models/view/summary.go:80.109,84.3 3 0 +github.com/muety/wakapi/models/view/summary.go:86.2,86.25 1 0 +github.com/muety/wakapi/models/view/summary.go:89.88,90.86 1 0 +github.com/muety/wakapi/models/view/summary.go:90.86,90.109 1 0 +github.com/muety/wakapi/models/view/summary.go:92.2,93.49 2 0 +github.com/muety/wakapi/models/view/summary.go:93.49,98.3 1 0 +github.com/muety/wakapi/models/view/summary.go:100.2,100.124 1 0 +github.com/muety/wakapi/models/view/summary.go:100.124,101.65 1 0 +github.com/muety/wakapi/models/view/summary.go:101.65,103.4 1 0 +github.com/muety/wakapi/models/view/summary.go:104.3,104.14 1 0 +github.com/muety/wakapi/models/view/summary.go:107.2,107.30 1 0 +github.com/muety/wakapi/models/view/summary.go:110.51,117.2 2 0 +github.com/muety/wakapi/models/view/summary.go:119.68,122.2 2 0 +github.com/muety/wakapi/models/view/summary.go:124.66,127.2 2 0 +github.com/muety/wakapi/models/view/utils.go:5.46,33.55 2 0 +github.com/muety/wakapi/models/view/utils.go:33.55,35.3 1 0 +github.com/muety/wakapi/models/view/utils.go:36.2,36.11 1 0 +github.com/muety/wakapi/models/view/utils.go:39.50,51.2 3 0 github.com/muety/wakapi/repositories/alias.go:13.55,15.2 1 0 github.com/muety/wakapi/repositories/alias.go:17.61,19.50 2 0 github.com/muety/wakapi/repositories/alias.go:19.50,21.3 1 0 @@ -2728,142 +2745,144 @@ github.com/muety/wakapi/routes/leaderboard.go:130.23,132.6 1 0 github.com/muety/wakapi/routes/leaderboard.go:133.5,134.53 2 0 github.com/muety/wakapi/routes/leaderboard.go:136.9,142.4 1 0 github.com/muety/wakapi/routes/leaderboard.go:145.2,160.49 3 0 -github.com/muety/wakapi/routes/login.go:33.149,40.2 1 1 -github.com/muety/wakapi/routes/login.go:42.58,69.2 15 0 -github.com/muety/wakapi/routes/login.go:71.73,72.22 1 0 -github.com/muety/wakapi/routes/login.go:72.22,74.3 1 0 -github.com/muety/wakapi/routes/login.go:76.2,76.85 1 0 -github.com/muety/wakapi/routes/login.go:76.85,79.3 2 0 -github.com/muety/wakapi/routes/login.go:81.2,81.73 1 0 -github.com/muety/wakapi/routes/login.go:84.74,85.22 1 1 -github.com/muety/wakapi/routes/login.go:85.22,87.3 1 0 -github.com/muety/wakapi/routes/login.go:89.2,89.85 1 1 -github.com/muety/wakapi/routes/login.go:89.85,92.3 2 0 -github.com/muety/wakapi/routes/login.go:94.2,95.38 2 1 -github.com/muety/wakapi/routes/login.go:95.38,99.3 3 0 -github.com/muety/wakapi/routes/login.go:100.2,100.112 1 1 -github.com/muety/wakapi/routes/login.go:100.112,104.3 3 1 -github.com/muety/wakapi/routes/login.go:106.2,107.16 2 1 -github.com/muety/wakapi/routes/login.go:107.16,111.3 3 1 -github.com/muety/wakapi/routes/login.go:113.2,113.91 1 1 -github.com/muety/wakapi/routes/login.go:113.91,117.3 3 1 -github.com/muety/wakapi/routes/login.go:119.2,120.92 2 1 -github.com/muety/wakapi/routes/login.go:123.75,124.22 1 0 -github.com/muety/wakapi/routes/login.go:124.22,126.3 1 0 -github.com/muety/wakapi/routes/login.go:128.2,128.54 1 0 -github.com/muety/wakapi/routes/login.go:128.54,130.3 1 0 -github.com/muety/wakapi/routes/login.go:131.2,133.85 3 0 -github.com/muety/wakapi/routes/login.go:136.74,137.22 1 0 -github.com/muety/wakapi/routes/login.go:137.22,139.3 1 0 -github.com/muety/wakapi/routes/login.go:141.2,141.85 1 0 -github.com/muety/wakapi/routes/login.go:141.85,144.3 2 0 -github.com/muety/wakapi/routes/login.go:146.2,146.100 1 0 -github.com/muety/wakapi/routes/login.go:149.75,150.22 1 1 -github.com/muety/wakapi/routes/login.go:150.22,152.3 1 0 -github.com/muety/wakapi/routes/login.go:154.2,155.38 2 1 -github.com/muety/wakapi/routes/login.go:155.38,159.3 3 0 -github.com/muety/wakapi/routes/login.go:160.2,160.66 1 1 -github.com/muety/wakapi/routes/login.go:160.66,164.3 3 0 -github.com/muety/wakapi/routes/login.go:166.2,166.120 1 1 -github.com/muety/wakapi/routes/login.go:166.120,170.3 3 1 -github.com/muety/wakapi/routes/login.go:172.2,172.85 1 1 -github.com/muety/wakapi/routes/login.go:172.85,175.3 2 0 -github.com/muety/wakapi/routes/login.go:177.2,181.29 4 1 -github.com/muety/wakapi/routes/login.go:181.29,182.84 1 0 -github.com/muety/wakapi/routes/login.go:182.84,183.62 1 0 -github.com/muety/wakapi/routes/login.go:183.62,186.5 2 0 -github.com/muety/wakapi/routes/login.go:188.4,188.69 1 0 -github.com/muety/wakapi/routes/login.go:188.69,190.5 1 0 -github.com/muety/wakapi/routes/login.go:194.2,194.71 1 1 -github.com/muety/wakapi/routes/login.go:194.71,198.3 3 0 -github.com/muety/wakapi/routes/login.go:200.2,202.23 2 1 -github.com/muety/wakapi/routes/login.go:202.23,205.48 3 1 -github.com/muety/wakapi/routes/login.go:205.48,207.4 1 1 -github.com/muety/wakapi/routes/login.go:208.3,209.9 2 1 -github.com/muety/wakapi/routes/login.go:212.2,215.16 3 1 -github.com/muety/wakapi/routes/login.go:215.16,220.3 4 0 -github.com/muety/wakapi/routes/login.go:221.2,221.14 1 1 -github.com/muety/wakapi/routes/login.go:221.14,225.3 3 1 -github.com/muety/wakapi/routes/login.go:227.2,228.65 2 1 -github.com/muety/wakapi/routes/login.go:231.81,232.22 1 0 -github.com/muety/wakapi/routes/login.go:232.22,234.3 1 0 -github.com/muety/wakapi/routes/login.go:235.2,235.81 1 0 -github.com/muety/wakapi/routes/login.go:238.79,239.22 1 0 -github.com/muety/wakapi/routes/login.go:239.22,241.3 1 0 -github.com/muety/wakapi/routes/login.go:243.2,245.17 3 0 -github.com/muety/wakapi/routes/login.go:245.17,249.3 3 0 -github.com/muety/wakapi/routes/login.go:251.2,256.52 2 0 -github.com/muety/wakapi/routes/login.go:259.80,260.22 1 0 -github.com/muety/wakapi/routes/login.go:260.22,262.3 1 0 -github.com/muety/wakapi/routes/login.go:264.2,265.38 2 0 -github.com/muety/wakapi/routes/login.go:265.38,269.3 3 0 -github.com/muety/wakapi/routes/login.go:270.2,270.70 1 0 -github.com/muety/wakapi/routes/login.go:270.70,274.3 3 0 -github.com/muety/wakapi/routes/login.go:276.2,277.16 2 0 -github.com/muety/wakapi/routes/login.go:277.16,281.3 3 0 -github.com/muety/wakapi/routes/login.go:283.2,283.27 1 0 -github.com/muety/wakapi/routes/login.go:283.27,287.3 3 0 -github.com/muety/wakapi/routes/login.go:289.2,291.96 3 0 -github.com/muety/wakapi/routes/login.go:291.96,296.3 4 0 -github.com/muety/wakapi/routes/login.go:296.8,298.3 1 0 -github.com/muety/wakapi/routes/login.go:300.2,300.51 1 0 -github.com/muety/wakapi/routes/login.go:300.51,305.3 4 0 -github.com/muety/wakapi/routes/login.go:307.2,308.90 2 0 -github.com/muety/wakapi/routes/login.go:311.82,312.22 1 0 -github.com/muety/wakapi/routes/login.go:312.22,314.3 1 0 -github.com/muety/wakapi/routes/login.go:316.2,316.28 1 0 -github.com/muety/wakapi/routes/login.go:316.28,320.3 3 0 -github.com/muety/wakapi/routes/login.go:322.2,323.38 2 0 -github.com/muety/wakapi/routes/login.go:323.38,327.3 3 0 -github.com/muety/wakapi/routes/login.go:328.2,328.79 1 0 -github.com/muety/wakapi/routes/login.go:328.79,332.3 3 0 -github.com/muety/wakapi/routes/login.go:334.2,334.91 1 0 -github.com/muety/wakapi/routes/login.go:334.91,335.31 1 0 -github.com/muety/wakapi/routes/login.go:335.31,340.4 4 0 -github.com/muety/wakapi/routes/login.go:342.3,342.64 1 0 -github.com/muety/wakapi/routes/login.go:342.64,347.4 4 0 -github.com/muety/wakapi/routes/login.go:347.9,348.48 1 0 -github.com/muety/wakapi/routes/login.go:348.48,350.68 2 0 -github.com/muety/wakapi/routes/login.go:350.68,352.6 1 0 -github.com/muety/wakapi/routes/login.go:352.11,354.6 1 0 -github.com/muety/wakapi/routes/login.go:357.8,359.3 1 0 -github.com/muety/wakapi/routes/login.go:361.2,362.65 2 0 -github.com/muety/wakapi/routes/login.go:365.77,367.21 2 1 -github.com/muety/wakapi/routes/login.go:367.21,369.3 1 1 -github.com/muety/wakapi/routes/login.go:370.2,371.75 2 1 -github.com/muety/wakapi/routes/login.go:374.80,376.21 2 1 -github.com/muety/wakapi/routes/login.go:376.21,378.3 1 1 -github.com/muety/wakapi/routes/login.go:380.2,388.40 5 1 -github.com/muety/wakapi/routes/login.go:388.40,394.3 5 1 -github.com/muety/wakapi/routes/login.go:395.2,399.16 3 1 -github.com/muety/wakapi/routes/login.go:399.16,405.3 5 1 -github.com/muety/wakapi/routes/login.go:408.2,409.9 2 1 -github.com/muety/wakapi/routes/login.go:409.9,415.3 5 0 -github.com/muety/wakapi/routes/login.go:418.2,419.41 2 1 -github.com/muety/wakapi/routes/login.go:419.41,425.3 5 1 -github.com/muety/wakapi/routes/login.go:427.2,428.16 2 1 -github.com/muety/wakapi/routes/login.go:428.16,430.58 1 1 -github.com/muety/wakapi/routes/login.go:430.58,434.4 3 1 -github.com/muety/wakapi/routes/login.go:436.3,437.24 2 1 -github.com/muety/wakapi/routes/login.go:437.24,441.4 3 0 -github.com/muety/wakapi/routes/login.go:443.3,443.93 1 1 -github.com/muety/wakapi/routes/login.go:443.93,446.4 2 0 -github.com/muety/wakapi/routes/login.go:448.3,456.29 3 1 -github.com/muety/wakapi/routes/login.go:456.29,461.4 4 0 -github.com/muety/wakapi/routes/login.go:462.3,462.17 1 1 -github.com/muety/wakapi/routes/login.go:465.2,467.92 3 1 -github.com/muety/wakapi/routes/login.go:470.118,481.17 3 1 -github.com/muety/wakapi/routes/login.go:481.17,483.3 1 0 -github.com/muety/wakapi/routes/login.go:485.2,485.49 1 1 -github.com/muety/wakapi/routes/login.go:488.99,491.16 3 1 -github.com/muety/wakapi/routes/login.go:491.16,495.3 3 1 -github.com/muety/wakapi/routes/login.go:496.2,496.17 1 1 -github.com/muety/wakapi/routes/login.go:499.99,501.16 2 1 -github.com/muety/wakapi/routes/login.go:501.16,506.3 4 0 -github.com/muety/wakapi/routes/login.go:508.2,511.73 3 1 -github.com/muety/wakapi/routes/login.go:514.69,515.56 1 1 -github.com/muety/wakapi/routes/login.go:515.56,517.3 1 0 -github.com/muety/wakapi/routes/login.go:518.2,518.17 1 1 +github.com/muety/wakapi/routes/login.go:34.149,41.2 1 1 +github.com/muety/wakapi/routes/login.go:43.58,70.2 15 0 +github.com/muety/wakapi/routes/login.go:72.73,73.22 1 0 +github.com/muety/wakapi/routes/login.go:73.22,75.3 1 0 +github.com/muety/wakapi/routes/login.go:77.2,77.85 1 0 +github.com/muety/wakapi/routes/login.go:77.85,80.3 2 0 +github.com/muety/wakapi/routes/login.go:82.2,82.73 1 0 +github.com/muety/wakapi/routes/login.go:85.74,86.22 1 1 +github.com/muety/wakapi/routes/login.go:86.22,88.3 1 0 +github.com/muety/wakapi/routes/login.go:90.2,90.85 1 1 +github.com/muety/wakapi/routes/login.go:90.85,93.3 2 0 +github.com/muety/wakapi/routes/login.go:95.2,96.38 2 1 +github.com/muety/wakapi/routes/login.go:96.38,100.3 3 0 +github.com/muety/wakapi/routes/login.go:101.2,101.112 1 1 +github.com/muety/wakapi/routes/login.go:101.112,105.3 3 1 +github.com/muety/wakapi/routes/login.go:107.2,108.16 2 1 +github.com/muety/wakapi/routes/login.go:108.16,112.3 3 1 +github.com/muety/wakapi/routes/login.go:114.2,114.91 1 1 +github.com/muety/wakapi/routes/login.go:114.91,118.3 3 1 +github.com/muety/wakapi/routes/login.go:120.2,121.92 2 1 +github.com/muety/wakapi/routes/login.go:124.75,125.22 1 0 +github.com/muety/wakapi/routes/login.go:125.22,127.3 1 0 +github.com/muety/wakapi/routes/login.go:129.2,129.54 1 0 +github.com/muety/wakapi/routes/login.go:129.54,131.3 1 0 +github.com/muety/wakapi/routes/login.go:132.2,134.85 3 0 +github.com/muety/wakapi/routes/login.go:137.74,138.22 1 0 +github.com/muety/wakapi/routes/login.go:138.22,140.3 1 0 +github.com/muety/wakapi/routes/login.go:142.2,142.85 1 0 +github.com/muety/wakapi/routes/login.go:142.85,145.3 2 0 +github.com/muety/wakapi/routes/login.go:147.2,147.100 1 0 +github.com/muety/wakapi/routes/login.go:150.75,151.22 1 1 +github.com/muety/wakapi/routes/login.go:151.22,153.3 1 0 +github.com/muety/wakapi/routes/login.go:155.2,156.38 2 1 +github.com/muety/wakapi/routes/login.go:156.38,160.3 3 0 +github.com/muety/wakapi/routes/login.go:161.2,161.66 1 1 +github.com/muety/wakapi/routes/login.go:161.66,165.3 3 0 +github.com/muety/wakapi/routes/login.go:167.2,167.120 1 1 +github.com/muety/wakapi/routes/login.go:167.120,171.3 3 1 +github.com/muety/wakapi/routes/login.go:173.2,173.85 1 1 +github.com/muety/wakapi/routes/login.go:173.85,176.3 2 0 +github.com/muety/wakapi/routes/login.go:178.2,182.29 4 1 +github.com/muety/wakapi/routes/login.go:182.29,183.84 1 0 +github.com/muety/wakapi/routes/login.go:183.84,184.62 1 0 +github.com/muety/wakapi/routes/login.go:184.62,187.5 2 0 +github.com/muety/wakapi/routes/login.go:189.4,189.69 1 0 +github.com/muety/wakapi/routes/login.go:189.69,191.5 1 0 +github.com/muety/wakapi/routes/login.go:195.2,195.71 1 1 +github.com/muety/wakapi/routes/login.go:195.71,199.3 3 0 +github.com/muety/wakapi/routes/login.go:201.2,203.23 2 1 +github.com/muety/wakapi/routes/login.go:203.23,206.48 3 1 +github.com/muety/wakapi/routes/login.go:206.48,208.4 1 1 +github.com/muety/wakapi/routes/login.go:209.3,210.9 2 1 +github.com/muety/wakapi/routes/login.go:213.2,216.16 3 1 +github.com/muety/wakapi/routes/login.go:216.16,221.3 4 0 +github.com/muety/wakapi/routes/login.go:222.2,222.14 1 1 +github.com/muety/wakapi/routes/login.go:222.14,226.3 3 1 +github.com/muety/wakapi/routes/login.go:228.2,229.65 2 1 +github.com/muety/wakapi/routes/login.go:232.81,233.22 1 0 +github.com/muety/wakapi/routes/login.go:233.22,235.3 1 0 +github.com/muety/wakapi/routes/login.go:236.2,236.81 1 0 +github.com/muety/wakapi/routes/login.go:239.79,240.22 1 0 +github.com/muety/wakapi/routes/login.go:240.22,242.3 1 0 +github.com/muety/wakapi/routes/login.go:244.2,246.17 3 0 +github.com/muety/wakapi/routes/login.go:246.17,250.3 3 0 +github.com/muety/wakapi/routes/login.go:252.2,257.52 2 0 +github.com/muety/wakapi/routes/login.go:260.80,261.22 1 0 +github.com/muety/wakapi/routes/login.go:261.22,263.3 1 0 +github.com/muety/wakapi/routes/login.go:265.2,266.38 2 0 +github.com/muety/wakapi/routes/login.go:266.38,270.3 3 0 +github.com/muety/wakapi/routes/login.go:271.2,271.70 1 0 +github.com/muety/wakapi/routes/login.go:271.70,275.3 3 0 +github.com/muety/wakapi/routes/login.go:277.2,278.16 2 0 +github.com/muety/wakapi/routes/login.go:278.16,282.3 3 0 +github.com/muety/wakapi/routes/login.go:284.2,284.27 1 0 +github.com/muety/wakapi/routes/login.go:284.27,288.3 3 0 +github.com/muety/wakapi/routes/login.go:290.2,292.96 3 0 +github.com/muety/wakapi/routes/login.go:292.96,297.3 4 0 +github.com/muety/wakapi/routes/login.go:297.8,299.3 1 0 +github.com/muety/wakapi/routes/login.go:301.2,301.51 1 0 +github.com/muety/wakapi/routes/login.go:301.51,306.3 4 0 +github.com/muety/wakapi/routes/login.go:308.2,309.90 2 0 +github.com/muety/wakapi/routes/login.go:312.82,313.22 1 0 +github.com/muety/wakapi/routes/login.go:313.22,315.3 1 0 +github.com/muety/wakapi/routes/login.go:317.2,317.28 1 0 +github.com/muety/wakapi/routes/login.go:317.28,321.3 3 0 +github.com/muety/wakapi/routes/login.go:323.2,324.38 2 0 +github.com/muety/wakapi/routes/login.go:324.38,328.3 3 0 +github.com/muety/wakapi/routes/login.go:329.2,329.79 1 0 +github.com/muety/wakapi/routes/login.go:329.79,333.3 3 0 +github.com/muety/wakapi/routes/login.go:335.2,335.91 1 0 +github.com/muety/wakapi/routes/login.go:335.91,336.31 1 0 +github.com/muety/wakapi/routes/login.go:336.31,341.4 4 0 +github.com/muety/wakapi/routes/login.go:343.3,343.64 1 0 +github.com/muety/wakapi/routes/login.go:343.64,348.4 4 0 +github.com/muety/wakapi/routes/login.go:348.9,349.48 1 0 +github.com/muety/wakapi/routes/login.go:349.48,351.68 2 0 +github.com/muety/wakapi/routes/login.go:351.68,353.6 1 0 +github.com/muety/wakapi/routes/login.go:353.11,355.6 1 0 +github.com/muety/wakapi/routes/login.go:358.8,360.3 1 0 +github.com/muety/wakapi/routes/login.go:362.2,363.65 2 0 +github.com/muety/wakapi/routes/login.go:366.77,368.21 2 1 +github.com/muety/wakapi/routes/login.go:368.21,370.3 1 1 +github.com/muety/wakapi/routes/login.go:371.2,372.75 2 1 +github.com/muety/wakapi/routes/login.go:375.80,377.21 2 1 +github.com/muety/wakapi/routes/login.go:377.21,379.3 1 1 +github.com/muety/wakapi/routes/login.go:381.2,389.40 5 1 +github.com/muety/wakapi/routes/login.go:389.40,395.3 5 1 +github.com/muety/wakapi/routes/login.go:396.2,400.16 3 1 +github.com/muety/wakapi/routes/login.go:400.16,406.3 5 1 +github.com/muety/wakapi/routes/login.go:409.2,410.9 2 1 +github.com/muety/wakapi/routes/login.go:410.9,416.3 5 0 +github.com/muety/wakapi/routes/login.go:419.2,420.41 2 1 +github.com/muety/wakapi/routes/login.go:420.41,426.3 5 1 +github.com/muety/wakapi/routes/login.go:428.2,429.16 2 1 +github.com/muety/wakapi/routes/login.go:429.16,431.58 1 1 +github.com/muety/wakapi/routes/login.go:431.58,435.4 3 1 +github.com/muety/wakapi/routes/login.go:437.3,438.24 2 1 +github.com/muety/wakapi/routes/login.go:438.24,442.4 3 0 +github.com/muety/wakapi/routes/login.go:444.3,444.93 1 1 +github.com/muety/wakapi/routes/login.go:444.93,447.4 2 0 +github.com/muety/wakapi/routes/login.go:449.3,457.29 3 1 +github.com/muety/wakapi/routes/login.go:457.29,462.4 4 0 +github.com/muety/wakapi/routes/login.go:463.3,463.17 1 1 +github.com/muety/wakapi/routes/login.go:466.2,468.92 3 1 +github.com/muety/wakapi/routes/login.go:471.118,479.132 2 1 +github.com/muety/wakapi/routes/login.go:479.132,485.4 2 1 +github.com/muety/wakapi/routes/login.go:488.2,488.17 1 1 +github.com/muety/wakapi/routes/login.go:488.17,490.3 1 0 +github.com/muety/wakapi/routes/login.go:492.2,492.49 1 1 +github.com/muety/wakapi/routes/login.go:495.99,498.16 3 1 +github.com/muety/wakapi/routes/login.go:498.16,502.3 3 1 +github.com/muety/wakapi/routes/login.go:503.2,503.17 1 1 +github.com/muety/wakapi/routes/login.go:506.99,508.16 2 1 +github.com/muety/wakapi/routes/login.go:508.16,513.3 4 0 +github.com/muety/wakapi/routes/login.go:515.2,518.73 3 1 +github.com/muety/wakapi/routes/login.go:521.69,522.56 1 1 +github.com/muety/wakapi/routes/login.go:522.56,524.3 1 0 +github.com/muety/wakapi/routes/login.go:525.2,525.17 1 1 github.com/muety/wakapi/routes/misc.go:20.69,25.2 1 0 github.com/muety/wakapi/routes/misc.go:27.57,29.2 1 0 github.com/muety/wakapi/routes/misc.go:31.78,33.17 2 0 @@ -3217,6 +3236,12 @@ github.com/muety/wakapi/routes/settings.go:1010.19,1012.3 1 0 github.com/muety/wakapi/routes/settings.go:1013.2,1015.9 3 0 github.com/muety/wakapi/routes/settings.go:1015.9,1017.3 1 0 github.com/muety/wakapi/routes/settings.go:1018.2,1018.16 1 0 +github.com/muety/wakapi/routes/setup.go:19.71,24.2 1 0 +github.com/muety/wakapi/routes/setup.go:26.58,38.2 5 0 +github.com/muety/wakapi/routes/setup.go:40.73,41.22 1 0 +github.com/muety/wakapi/routes/setup.go:41.22,43.3 1 0 +github.com/muety/wakapi/routes/setup.go:45.2,45.66 1 0 +github.com/muety/wakapi/routes/setup.go:48.100,55.2 1 0 github.com/muety/wakapi/routes/subscription.go:52.24,56.34 3 0 github.com/muety/wakapi/routes/subscription.go:56.34,60.17 3 0 github.com/muety/wakapi/routes/subscription.go:60.17,62.4 1 0 @@ -4696,7 +4721,6 @@ github.com/muety/wakapi/services/mail/smtp.go:100.16,102.3 1 0 github.com/muety/wakapi/services/mail/smtp.go:104.2,104.33 1 0 github.com/muety/wakapi/services/mail/smtp.go:104.33,106.3 1 0 github.com/muety/wakapi/services/mail/smtp.go:108.2,108.12 1 0 -github.com/muety/wakapi/static/docs/docs.go:2123.13,2125.2 1 0 github.com/muety/wakapi/utils/fs/exists.go:10.37,12.16 2 0 github.com/muety/wakapi/utils/fs/exists.go:12.16,13.13 1 0 github.com/muety/wakapi/utils/fs/exists.go:16.2,19.3 1 0 @@ -4721,3 +4745,4 @@ github.com/muety/wakapi/utils/fs/neutered.go:23.47,25.23 2 0 github.com/muety/wakapi/utils/fs/neutered.go:25.23,27.5 1 0 github.com/muety/wakapi/utils/fs/neutered.go:29.4,29.19 1 0 github.com/muety/wakapi/utils/fs/neutered.go:33.2,33.15 1 0 +github.com/muety/wakapi/static/docs/docs.go:2123.13,2125.2 1 0 diff --git a/main.go b/main.go index df4e809..0132993 100644 --- a/main.go +++ b/main.go @@ -240,6 +240,7 @@ func main() { homeHandler := routes.NewHomeHandler(userService, keyValueService) loginHandler := routes.NewLoginHandler(userService, mailService, keyValueService) imprintHandler := routes.NewImprintHandler(keyValueService) + setupHandler := routes.NewSetupHandler(userService) leaderboardHandler := condition.Ternary[bool, routes.Handler](config.App.LeaderboardEnabled, routes.NewLeaderboardHandler(userService, leaderboardService), routes.NewNoopHandler()) miscHandler := routes.NewMiscHandler(userService) @@ -279,6 +280,7 @@ func main() { homeHandler.RegisterRoutes(rootRouter) loginHandler.RegisterRoutes(rootRouter) imprintHandler.RegisterRoutes(rootRouter) + setupHandler.RegisterRoutes(rootRouter) summaryHandler.RegisterRoutes(rootRouter) leaderboardHandler.RegisterRoutes(rootRouter) projectsHandler.RegisterRoutes(rootRouter) diff --git a/models/view/setup.go b/models/view/setup.go new file mode 100644 index 0000000..0e5b93e --- /dev/null +++ b/models/view/setup.go @@ -0,0 +1,15 @@ +package view + +type SetupViewModel struct { + SharedLoggedInViewModel +} + +func (s *SetupViewModel) WithSuccess(m string) *SetupViewModel { + s.SetSuccess(m) + return s +} + +func (s *SetupViewModel) WithError(m string) *SetupViewModel { + s.SetError(m) + return s +} diff --git a/routes/setup.go b/routes/setup.go new file mode 100644 index 0000000..f14bf4d --- /dev/null +++ b/routes/setup.go @@ -0,0 +1,55 @@ +package routes + +import ( + "net/http" + + "github.com/go-chi/chi/v5" + conf "github.com/muety/wakapi/config" + "github.com/muety/wakapi/middlewares" + "github.com/muety/wakapi/models/view" + "github.com/muety/wakapi/services" +) + +type SetupHandler struct { + config *conf.Config + userService services.IUserService + leaderboardService services.ILeaderboardService +} + +func NewSetupHandler(userService services.IUserService) *SetupHandler { + return &SetupHandler{ + config: conf.Get(), + userService: userService, + } +} + +func (h *SetupHandler) RegisterRoutes(router chi.Router) { + r := chi.NewRouter() + + authMiddleware := middlewares.NewAuthenticateMiddleware(h.userService). + WithRedirectTarget(defaultErrorRedirectTarget()). + WithRedirectErrorMessage("unauthorized"). + WithOptionalFor("/") + + r.Use(authMiddleware.Handler) + r.Get("/", h.GetIndex) + + router.Mount("/setup", r) +} + +func (h *SetupHandler) GetIndex(w http.ResponseWriter, r *http.Request) { + if h.config.IsDev() { + loadTemplates() + } + + templates[conf.SetupTemplate].Execute(w, h.buildViewModel(r, w)) +} + +func (h *SetupHandler) buildViewModel(r *http.Request, w http.ResponseWriter) *view.SetupViewModel { + return &view.SetupViewModel{ + SharedLoggedInViewModel: view.SharedLoggedInViewModel{ + SharedViewModel: view.NewSharedViewModel(h.config, nil), + User: middlewares.GetPrincipal(r), + }, + } +} diff --git a/scripts/bundle_icons.js b/scripts/bundle_icons.js index 2ee69a0..0730722 100755 --- a/scripts/bundle_icons.js +++ b/scripts/bundle_icons.js @@ -92,6 +92,8 @@ let icons = [ 'devicon-plain:facebook', 'mdi:microsoft', 'twemoji:flag-germany', + 'ic:round-download', + 'ic:outline-integration-instructions', ] const output = path.normalize(path.join(__dirname, '../static/assets/js/icons.dist.js')) diff --git a/static/assets/css/app.dist.css b/static/assets/css/app.dist.css index 2de720a..7a1d9dc 100644 --- a/static/assets/css/app.dist.css +++ b/static/assets/css/app.dist.css @@ -1 +1 @@ -/*! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.absolute{position:absolute}.relative{position:relative}.inset-x-0{left:0;right:0}.bottom-0{bottom:0}.top-0{top:0}.right-0{right:0}.top-1{top:.25rem}.z-10{z-index:10}.col-span-1{grid-column:span 1/span 1}.row-span-1{grid-row:span 1/span 1}.float-right{float:right}.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-8{margin-top:2rem;margin-bottom:2rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mt-16{margin-top:4rem}.mr-1{margin-right:.25rem}.mt-20{margin-top:5rem}.mb-10{margin-bottom:2.5rem}.mt-10{margin-top:2.5rem}.mb-14{margin-bottom:3.5rem}.-mt-4{margin-top:-1rem}.mt-8{margin-top:2rem}.mb-4{margin-bottom:1rem}.mt-4{margin-top:1rem}.ml-1{margin-left:.25rem}.mt-12{margin-top:3rem}.mb-8{margin-bottom:2rem}.mr-4{margin-right:1rem}.mb-2{margin-bottom:.5rem}.mr-8{margin-right:2rem}.mr-px{margin-right:1px}.ml-px{margin-left:1px}.mb-16{margin-bottom:4rem}.ml-4{margin-left:1rem}.-ml-1{margin-left:-.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-3{margin-left:.75rem}.mt-6{margin-top:1.5rem}.mt-1{margin-top:.25rem}.-mb-1{margin-bottom:-.25rem}.ml-2{margin-left:.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.h-min{height:-moz-min-content;height:min-content}.h-4{height:1rem}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-full{width:100%}.w-12{width:3rem}.w-16{width:4rem}.w-1\/2{width:50%}.w-2\/3{width:66.666667%}.w-1\/3{width:33.333333%}.w-4{width:1rem}.\!w-auto{width:auto!important}.w-40{width:10rem}.max-w-lg{max-width:32rem}.max-w-screen-xl{max-width:1280px}.max-w-screen-lg{max-width:1024px}.max-w-4xl{max-width:56rem}.max-w-full{max-width:100%}.max-w-screen-sm{max-width:640px}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.cursor-help{cursor:help}.cursor-move{cursor:move}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.overflow-x-auto{overflow-x:auto}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-sm{border-radius:.125rem}.rounded-md{border-radius:.375rem}.rounded-full{border-radius:9999px}.rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-muted\/50{border-color:rgb(var(--muted)/.5)}.border-accent{--tw-border-opacity:1;border-color:rgb(var(--accent)/var(--tw-border-opacity))}.border-muted{--tw-border-opacity:1;border-color:rgb(var(--muted)/var(--tw-border-opacity))}.border-focused{--tw-border-opacity:1;border-color:rgb(var(--focused)/var(--tw-border-opacity))}.border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.bg-background{--tw-bg-opacity:1;background-color:rgb(var(--background)/var(--tw-bg-opacity))}.bg-card{--tw-bg-opacity:1;background-color:rgb(var(--card)/var(--tw-bg-opacity))}.bg-transparent{background-color:initial}.bg-focused{--tw-bg-opacity:1;background-color:rgb(var(--focused)/var(--tw-bg-opacity))}.p-4{padding:1rem}.p-1{padding:.25rem}.p-px{padding:1px}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.pt-10{padding-top:2.5rem}.pt-8{padding-top:2rem}.pt-2{padding-top:.5rem}.pb-10{padding-bottom:2.5rem}.pb-4{padding-bottom:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.text-8xl{font-size:6rem;line-height:1}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-base{font-size:1rem;line-height:1.5rem}.text-2xl{font-size:1.5rem;line-height:2rem}.font-semibold{font-weight:600}.capitalize{text-transform:capitalize}.leading-snug{line-height:1.375}.leading-none{line-height:1}.leading-6{line-height:1.5rem}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-muted{--tw-text-opacity:1;color:rgb(var(--muted)/var(--tw-text-opacity))}.text-secondary{--tw-text-opacity:1;color:rgb(var(--secondary)/var(--tw-text-opacity))}.text-accent{--tw-text-opacity:1;color:rgb(var(--accent)/var(--tw-text-opacity))}.text-foreground{--tw-text-opacity:1;color:rgb(var(--foreground)/var(--tw-text-opacity))}.text-primary{--tw-text-opacity:1;color:rgb(var(--primary)/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-danger{--tw-text-opacity:1;color:rgb(var(--danger)/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.outline-none{outline:2px solid #0000;outline-offset:2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}body{font-family:Source Sans\ 3,Roboto,Helvetica Neue,Helvetica,Arial,sans-serif;position:relative}main{padding-bottom:86px}[v-cloak]{display:none}:root{--background:17 24 39;--card:36 43 58;--muted:107 114 128;--secondary:156 163 175;--foreground:209 213 219;--focused:31 41 55;--primary:255 255 255;--accent:4 120 87;--danger:220 38 38}.text-xsi{font-size:.75rem!important;line-height:1rem!important}.text-xxs{font-size:.65rem!important}.mt-14{margin-top:3.5rem}.text-7xl{font-size:4.5rem;line-height:1.1}.text-8xl{font-size:5rem;line-height:1.1}.imp\:cursor-not-allowed{cursor:not-allowed!important}.h1{margin:0;font-size:1.875rem;line-height:2.25rem;font-weight:600;--tw-text-opacity:1;color:rgb(var(--primary)/var(--tw-text-opacity))}.h1-subcaption{font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(var(--muted)/var(--tw-text-opacity))}.btn-default{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(var(--focused)/var(--tw-bg-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity:1;color:rgb(var(--primary)/var(--tw-text-opacity))}.btn-default:hover{--tw-bg-opacity:1;background-color:rgb(var(--card)/var(--tw-bg-opacity))}.btn-disabled{background-color:rgb(var(--focused)/var(--tw-bg-opacity));color:rgb(var(--muted)/var(--tw-text-opacity))}.btn-disabled,.btn-primary{border-radius:.25rem;--tw-bg-opacity:1;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity:1}.btn-primary{background-color:rgb(var(--accent)/var(--tw-bg-opacity));color:rgb(var(--primary)/var(--tw-text-opacity))}.btn-primary:hover{background-color:rgb(var(--accent)/.8)}.btn-danger{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(var(--danger)/var(--tw-bg-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity:1;color:rgb(var(--primary)/var(--tw-text-opacity))}.btn-danger:hover{background-color:rgb(var(--danger)/.8)}.btn-small{padding:.25rem .5rem}.input-default{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(var(--card)/var(--tw-bg-opacity));padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(var(--foreground)/var(--tw-text-opacity));outline:2px solid #0000;outline-offset:2px}.input-default:focus{background-color:rgb(var(--focused)/var(--tw-bg-opacity))}.input-default:focus,.select-default{--tw-bg-opacity:1}.select-default{cursor:pointer;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;background-color:rgb(var(--card)/var(--tw-bg-opacity));padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(var(--foreground)/var(--tw-text-opacity));outline:2px solid #0000;outline-offset:2px}.select-default:focus{--tw-bg-opacity:1;background-color:rgb(var(--focused)/var(--tw-bg-opacity))}.menu-item{display:flex;cursor:pointer;align-items:center}.menu-item>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.menu-item{border-radius:.25rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600}.menu-item:hover{--tw-bg-opacity:1;background-color:rgb(var(--card)/var(--tw-bg-opacity))}.submenu-item{border-radius:.25rem;padding:.25rem;text-align:right}.submenu-item:hover{--tw-bg-opacity:1;background-color:rgb(var(--focused)/var(--tw-bg-opacity))}.chip{margin-bottom:.25rem;display:inline-block;border-radius:.25rem;border-radius:9999px;--tw-bg-opacity:1;background-color:rgb(var(--card)/var(--tw-bg-opacity));padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:600}.link{font-weight:600;--tw-text-opacity:1;color:rgb(var(--secondary)/var(--tw-text-opacity))}.link:hover{--tw-text-opacity:1;color:rgb(var(--foreground)/var(--tw-text-opacity))}.newsbox{border-radius:.375rem;border-width:2px;--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(var(--card)/var(--tw-bg-opacity));padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(var(--primary)/var(--tw-text-opacity))}.newsbox,.newsbox-default{border-color:rgb(var(--accent)/var(--tw-border-opacity))}.newsbox-default,.newsbox-warning{--tw-border-opacity:1}.newsbox-warning{border-color:rgb(202 138 4/var(--tw-border-opacity))}.newsbox-danger{--tw-border-opacity:1;border-color:rgb(var(--danger)/var(--tw-border-opacity))}.leaderboard-default{--tw-border-opacity:1;border-color:rgb(var(--muted)/var(--tw-border-opacity))}.leaderboard-self{margin-left:-10px;margin-right:-10px;padding-left:calc(1rem + 10px);padding-right:calc(1rem + 10px);--tw-border-opacity:1;border-color:rgb(var(--accent)/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(var(--focused)/var(--tw-bg-opacity))}.text-gold{color:#daa520}.leaderboard-gold{border-color:#daa520}.leaderboard-silver{border-color:silver}.leaderboard-bronze{border-color:#cd7f32}::-webkit-calendar-picker-indicator{filter:invert(1);cursor:pointer}.max-available{max-width:-moz-available;max-width:-webkit-fill-available;max-width:fill-available}.projects-item a{display:flex;flex-direction:column;border-radius:.375rem;--tw-bg-opacity:1;background-color:rgb(var(--focused)/var(--tw-bg-opacity));padding:.5rem 1rem;vertical-align:middle;--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.projects-item a,.projects-item a:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.projects-item a:hover{--tw-bg-opacity:1;background-color:rgb(var(--card)/var(--tw-bg-opacity));--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.projects-item .color-fading{position:absolute;height:100%;width:100%;border-radius:.375rem;pointer-events:none}.disabled{pointer-events:none;cursor:default;opacity:75%}.entity-filter-control{width:180px;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(var(--foreground)/var(--tw-text-opacity))}.entity-filter-control label{vertical-align:text-bottom;font-weight:600;text-transform:capitalize}.entity-filter-control select{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.375rem .625rem}.wi-min{width:-moz-min-content!important;width:min-content!important}.live-indicator{width:10px;height:10px;border-radius:50%;background-color:#047857;display:inline-block;animation:pulse 2s infinite}@keyframes pulse{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}#time-picker-dropdown kbd{border:1px solid rgb(var(--muted));border-radius:.25rem;padding:0 8px;font-weight:400;font-size:x-small;margin-left:8px}@media print{.no-break{page-break-inside:avoid}.no-print{display:none}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.checked\:text-green-500:checked{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.hover\:bg-focused:hover{--tw-bg-opacity:1;background-color:rgb(var(--focused)/var(--tw-bg-opacity))}.hover\:bg-card:hover{--tw-bg-opacity:1;background-color:rgb(var(--card)/var(--tw-bg-opacity))}.hover\:bg-muted:hover{--tw-bg-opacity:1;background-color:rgb(var(--muted)/var(--tw-bg-opacity))}.hover\:text-foreground:hover{--tw-text-opacity:1;color:rgb(var(--foreground)/var(--tw-text-opacity))}.hover\:text-secondary:hover{--tw-text-opacity:1;color:rgb(var(--secondary)/var(--tw-text-opacity))}.focus\:bg-focused:focus{--tw-bg-opacity:1;background-color:rgb(var(--focused)/var(--tw-bg-opacity))}@media (min-width:640px){.sm\:inline-block{display:inline-block}.sm\:flex{display:flex}.sm\:flex-shrink-0{flex-shrink:0}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-nowrap{flex-wrap:nowrap}}@media (min-width:768px){.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:row-span-2{grid-row:span 2/span 2}.md\:row-span-3{grid-row:span 3/span 3}.md\:mb-0{margin-bottom:0}.md\:mt-16{margin-top:4rem}.md\:flex{display:flex}.md\:w-3\/4{width:75%}.md\:w-1\/3{width:33.333333%}.md\:w-2\/3{width:66.666667%}.md\:w-1\/2{width:50%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-nowrap{flex-wrap:nowrap}.md\:space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2rem*var(--tw-space-x-reverse));margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)))}.md\:px-10{padding-left:2.5rem;padding-right:2.5rem}}@media (min-width:1024px){.lg\:inline-block{display:inline-block}.lg\:w-3\/4{width:75%}.lg\:w-1\/2{width:50%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:px-24{padding-left:6rem;padding-right:6rem}} \ No newline at end of file +/*! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.absolute{position:absolute}.relative{position:relative}.inset-x-0{left:0;right:0}.bottom-0{bottom:0}.top-0{top:0}.right-0{right:0}.top-1{top:.25rem}.z-10{z-index:10}.col-span-1{grid-column:span 1/span 1}.row-span-1{grid-row:span 1/span 1}.float-right{float:right}.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-8{margin-top:2rem;margin-bottom:2rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mt-16{margin-top:4rem}.mr-1{margin-right:.25rem}.mt-20{margin-top:5rem}.mb-10{margin-bottom:2.5rem}.mt-10{margin-top:2.5rem}.mb-14{margin-bottom:3.5rem}.-mt-4{margin-top:-1rem}.mt-8{margin-top:2rem}.mb-4{margin-bottom:1rem}.mt-4{margin-top:1rem}.ml-1{margin-left:.25rem}.mt-12{margin-top:3rem}.mb-8{margin-bottom:2rem}.mr-4{margin-right:1rem}.mb-2{margin-bottom:.5rem}.mr-8{margin-right:2rem}.mr-px{margin-right:1px}.ml-px{margin-left:1px}.mb-16{margin-bottom:4rem}.ml-4{margin-left:1rem}.-ml-1{margin-left:-.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-3{margin-left:.75rem}.mt-6{margin-top:1.5rem}.mb-3{margin-bottom:.75rem}.mt-1{margin-top:.25rem}.-mb-1{margin-bottom:-.25rem}.ml-2{margin-left:.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.h-min{height:-moz-min-content;height:min-content}.h-4{height:1rem}.h-\[50px\]{height:50px}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-full{width:100%}.w-12{width:3rem}.w-16{width:4rem}.w-1\/2{width:50%}.w-2\/3{width:66.666667%}.w-1\/3{width:33.333333%}.w-4{width:1rem}.\!w-auto{width:auto!important}.w-\[50px\]{width:50px}.w-40{width:10rem}.max-w-lg{max-width:32rem}.max-w-screen-xl{max-width:1280px}.max-w-screen-lg{max-width:1024px}.max-w-4xl{max-width:56rem}.max-w-full{max-width:100%}.max-w-screen-sm{max-width:640px}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.cursor-help{cursor:help}.cursor-move{cursor:move}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-12{row-gap:3rem}.gap-y-2{row-gap:.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.self-center{align-self:center}.overflow-x-auto{overflow-x:auto}.truncate{overflow:hidden;white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-sm{border-radius:.125rem}.rounded-md{border-radius:.375rem}.rounded-full{border-radius:9999px}.rounded-l-full{border-top-left-radius:9999px;border-bottom-left-radius:9999px}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-muted\/50{border-color:rgb(var(--muted)/.5)}.border-accent{--tw-border-opacity:1;border-color:rgb(var(--accent)/var(--tw-border-opacity))}.border-muted{--tw-border-opacity:1;border-color:rgb(var(--muted)/var(--tw-border-opacity))}.border-focused{--tw-border-opacity:1;border-color:rgb(var(--focused)/var(--tw-border-opacity))}.border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.bg-background{--tw-bg-opacity:1;background-color:rgb(var(--background)/var(--tw-bg-opacity))}.bg-card{--tw-bg-opacity:1;background-color:rgb(var(--card)/var(--tw-bg-opacity))}.bg-transparent{background-color:initial}.bg-focused{--tw-bg-opacity:1;background-color:rgb(var(--focused)/var(--tw-bg-opacity))}.bg-accent{--tw-bg-opacity:1;background-color:rgb(var(--accent)/var(--tw-bg-opacity))}.p-4{padding:1rem}.p-1{padding:.25rem}.p-px{padding:1px}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-8{padding-left:2rem;padding-right:2rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-10{padding-top:2.5rem}.pt-8{padding-top:2rem}.pt-2{padding-top:.5rem}.pb-10{padding-bottom:2.5rem}.pb-4{padding-bottom:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.text-8xl{font-size:6rem;line-height:1}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-base{font-size:1rem;line-height:1.5rem}.text-2xl{font-size:1.5rem;line-height:2rem}.font-semibold{font-weight:600}.font-normal{font-weight:400}.capitalize{text-transform:capitalize}.leading-snug{line-height:1.375}.leading-none{line-height:1}.leading-6{line-height:1.5rem}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-muted{--tw-text-opacity:1;color:rgb(var(--muted)/var(--tw-text-opacity))}.text-secondary{--tw-text-opacity:1;color:rgb(var(--secondary)/var(--tw-text-opacity))}.text-accent{--tw-text-opacity:1;color:rgb(var(--accent)/var(--tw-text-opacity))}.text-foreground{--tw-text-opacity:1;color:rgb(var(--foreground)/var(--tw-text-opacity))}.text-primary{--tw-text-opacity:1;color:rgb(var(--primary)/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-danger{--tw-text-opacity:1;color:rgb(var(--danger)/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.outline-none{outline:2px solid #0000;outline-offset:2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}body{font-family:Source Sans\ 3,Roboto,Helvetica Neue,Helvetica,Arial,sans-serif;position:relative}main{padding-bottom:86px}[v-cloak]{display:none}:root{--background:17 24 39;--card:36 43 58;--muted:107 114 128;--secondary:156 163 175;--foreground:209 213 219;--focused:31 41 55;--primary:255 255 255;--accent:4 120 87;--danger:220 38 38}.text-xsi{font-size:.75rem!important;line-height:1rem!important}.text-xxs{font-size:.65rem!important}.mt-14{margin-top:3.5rem}.text-7xl{font-size:4.5rem;line-height:1.1}.text-8xl{font-size:5rem;line-height:1.1}.imp\:cursor-not-allowed{cursor:not-allowed!important}.h1{margin:0;font-size:1.875rem;line-height:2.25rem;font-weight:600;--tw-text-opacity:1;color:rgb(var(--primary)/var(--tw-text-opacity))}.h1-subcaption{font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(var(--muted)/var(--tw-text-opacity))}.btn-default{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(var(--focused)/var(--tw-bg-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity:1;color:rgb(var(--primary)/var(--tw-text-opacity))}.btn-default:hover{--tw-bg-opacity:1;background-color:rgb(var(--card)/var(--tw-bg-opacity))}.btn-disabled{background-color:rgb(var(--focused)/var(--tw-bg-opacity));color:rgb(var(--muted)/var(--tw-text-opacity))}.btn-disabled,.btn-primary{border-radius:.25rem;--tw-bg-opacity:1;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity:1}.btn-primary{background-color:rgb(var(--accent)/var(--tw-bg-opacity));color:rgb(var(--primary)/var(--tw-text-opacity))}.btn-primary:hover{background-color:rgb(var(--accent)/.8)}.btn-danger{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(var(--danger)/var(--tw-bg-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity:1;color:rgb(var(--primary)/var(--tw-text-opacity))}.btn-danger:hover{background-color:rgb(var(--danger)/.8)}.btn-small{padding:.25rem .5rem}.input-default{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(var(--card)/var(--tw-bg-opacity));padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(var(--foreground)/var(--tw-text-opacity));outline:2px solid #0000;outline-offset:2px}.input-default:focus{background-color:rgb(var(--focused)/var(--tw-bg-opacity))}.input-default:focus,.select-default{--tw-bg-opacity:1}.select-default{cursor:pointer;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;background-color:rgb(var(--card)/var(--tw-bg-opacity));padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(var(--foreground)/var(--tw-text-opacity));outline:2px solid #0000;outline-offset:2px}.select-default:focus{--tw-bg-opacity:1;background-color:rgb(var(--focused)/var(--tw-bg-opacity))}.menu-item{display:flex;cursor:pointer;align-items:center}.menu-item>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.menu-item{border-radius:.25rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600}.menu-item:hover{--tw-bg-opacity:1;background-color:rgb(var(--card)/var(--tw-bg-opacity))}.submenu-item{border-radius:.25rem;padding:.25rem;text-align:right}.submenu-item:hover{--tw-bg-opacity:1;background-color:rgb(var(--focused)/var(--tw-bg-opacity))}.chip{margin-bottom:.25rem;display:inline-block;border-radius:.25rem;border-radius:9999px;--tw-bg-opacity:1;background-color:rgb(var(--card)/var(--tw-bg-opacity));padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:600}.link{font-weight:600;--tw-text-opacity:1;color:rgb(var(--secondary)/var(--tw-text-opacity))}.link:hover{--tw-text-opacity:1;color:rgb(var(--foreground)/var(--tw-text-opacity))}.newsbox{border-radius:.375rem;border-width:2px;--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(var(--card)/var(--tw-bg-opacity));padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(var(--primary)/var(--tw-text-opacity))}.newsbox,.newsbox-default{border-color:rgb(var(--accent)/var(--tw-border-opacity))}.newsbox-default,.newsbox-warning{--tw-border-opacity:1}.newsbox-warning{border-color:rgb(202 138 4/var(--tw-border-opacity))}.newsbox-danger{--tw-border-opacity:1;border-color:rgb(var(--danger)/var(--tw-border-opacity))}.leaderboard-default{--tw-border-opacity:1;border-color:rgb(var(--muted)/var(--tw-border-opacity))}.leaderboard-self{margin-left:-10px;margin-right:-10px;padding-left:calc(1rem + 10px);padding-right:calc(1rem + 10px);--tw-border-opacity:1;border-color:rgb(var(--accent)/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(var(--focused)/var(--tw-bg-opacity))}.text-gold{color:#daa520}.leaderboard-gold{border-color:#daa520}.leaderboard-silver{border-color:silver}.leaderboard-bronze{border-color:#cd7f32}::-webkit-calendar-picker-indicator{filter:invert(1);cursor:pointer}.max-available{max-width:-moz-available;max-width:-webkit-fill-available;max-width:fill-available}.projects-item a{display:flex;flex-direction:column;border-radius:.375rem;--tw-bg-opacity:1;background-color:rgb(var(--focused)/var(--tw-bg-opacity));padding:.5rem 1rem;vertical-align:middle;--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.projects-item a,.projects-item a:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.projects-item a:hover{--tw-bg-opacity:1;background-color:rgb(var(--card)/var(--tw-bg-opacity));--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.projects-item .color-fading{position:absolute;height:100%;width:100%;border-radius:.375rem;pointer-events:none}.disabled{pointer-events:none;cursor:default;opacity:75%}.entity-filter-control{width:180px;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(var(--foreground)/var(--tw-text-opacity))}.entity-filter-control label{vertical-align:text-bottom;font-weight:600;text-transform:capitalize}.entity-filter-control select{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.375rem .625rem}.wi-min{width:-moz-min-content!important;width:min-content!important}.live-indicator{width:10px;height:10px;border-radius:50%;background-color:#047857;display:inline-block;animation:pulse 2s infinite}@keyframes pulse{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}#time-picker-dropdown kbd{border:1px solid rgb(var(--muted));border-radius:.25rem;padding:0 8px;font-weight:400;font-size:x-small;margin-left:8px}@media print{.no-break{page-break-inside:avoid}.no-print{display:none}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.checked\:text-green-500:checked{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity))}.hover\:bg-focused:hover{--tw-bg-opacity:1;background-color:rgb(var(--focused)/var(--tw-bg-opacity))}.hover\:bg-card:hover{--tw-bg-opacity:1;background-color:rgb(var(--card)/var(--tw-bg-opacity))}.hover\:bg-muted:hover{--tw-bg-opacity:1;background-color:rgb(var(--muted)/var(--tw-bg-opacity))}.hover\:text-foreground:hover{--tw-text-opacity:1;color:rgb(var(--foreground)/var(--tw-text-opacity))}.hover\:text-secondary:hover{--tw-text-opacity:1;color:rgb(var(--secondary)/var(--tw-text-opacity))}.focus\:bg-focused:focus{--tw-bg-opacity:1;background-color:rgb(var(--focused)/var(--tw-bg-opacity))}@media (min-width:640px){.sm\:inline-block{display:inline-block}.sm\:flex{display:flex}.sm\:flex-shrink-0{flex-shrink:0}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-nowrap{flex-wrap:nowrap}}@media (min-width:768px){.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:row-span-2{grid-row:span 2/span 2}.md\:row-span-3{grid-row:span 3/span 3}.md\:mb-0{margin-bottom:0}.md\:mt-16{margin-top:4rem}.md\:flex{display:flex}.md\:w-3\/4{width:75%}.md\:w-1\/3{width:33.333333%}.md\:w-2\/3{width:66.666667%}.md\:w-1\/2{width:50%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-nowrap{flex-wrap:nowrap}.md\:space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2rem*var(--tw-space-x-reverse));margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)))}.md\:px-10{padding-left:2.5rem;padding-right:2.5rem}}@media (min-width:1024px){.lg\:inline-block{display:inline-block}.lg\:w-3\/4{width:75%}.lg\:w-1\/2{width:50%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:px-24{padding-left:6rem;padding-right:6rem}} \ No newline at end of file diff --git a/static/assets/css/app.dist.css.br b/static/assets/css/app.dist.css.br index bb71fafc722b093f30a0451c4f2823c0d0d09c97..59e362cc13b4858609e9a2206cfaa9eeb3f8a7f0 100644 GIT binary patch literal 4212 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 K2fF literal 4163 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"},"stop-button":{"body":""}},"lastModified":1757879922,"width":128,"height":128}); Iconify.addCollection({"prefix":"eva","icons":{"corner-right-down-fill":{"body":""},"checkmark-circle-2-fill":{"body":""}},"lastModified":1754898939,"width":24,"height":24}); Iconify.addCollection({"prefix":"bi","icons":{"heart-fill":{"body":""},"people-fill":{"body":""}},"lastModified":1754898645}); -Iconify.addCollection({"prefix":"ic","icons":{"round-person":{"body":""},"round-dashboard":{"body":""}},"lastModified":1754899579,"width":24,"height":24}); +Iconify.addCollection({"prefix":"ic","icons":{"round-person":{"body":""},"round-dashboard":{"body":""},"round-download":{"body":""},"outline-integration-instructions":{"body":""}},"lastModified":1754899579,"width":24,"height":24}); Iconify.addCollection({"prefix":"bx","icons":{"bxs-bar-chart-alt-2":{"body":"","hidden":true},"code-curly":{"body":""},"bxs-heart":{"body":"","hidden":true}},"aliases":{"bx-code-curly":{"parent":"code-curly"}},"lastModified":1722793014,"width":24,"height":24}); Iconify.addCollection({"prefix":"fluent","icons":{"data-bar-horizontal-24-filled":{"body":""},"key-32-filled":{"body":"","width":32,"height":32},"key-24-filled":{"body":""}},"lastModified":1759033370,"width":24,"height":24}); Iconify.addCollection({"prefix":"ci","icons":{"settings-filled":{"body":"","hidden":true},"dot-03-m":{"body":"","hidden":true}},"lastModified":1722793086,"width":24,"height":24}); diff --git a/static/assets/js/icons.dist.js.br b/static/assets/js/icons.dist.js.br index 8fcdd9f0be7c766c27ad6aa144dcbf073b744691..9cabeca1c6594c8b34dc9c53b5b32f687d408b7c 100644 GIT binary patch literal 23107 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 literal 22808 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 diff --git a/views/index.tpl.html b/views/index.tpl.html index c21f83d..12e9a01 100644 --- a/views/index.tpl.html +++ b/views/index.tpl.html @@ -26,7 +26,7 @@ statistics freaks and anyone else.

- + diff --git a/views/login.tpl.html b/views/login.tpl.html index 657b06b..71ad82d 100644 --- a/views/login.tpl.html +++ b/views/login.tpl.html @@ -13,7 +13,7 @@
@@ -47,7 +47,7 @@ {{ if len .OidcProviders }} +