diff --git a/.env.example b/.env.example index da20ebe..b8e1c1f 100644 --- a/.env.example +++ b/.env.example @@ -3,5 +3,5 @@ DEV_MODE=false APP_LISTEN_ADDRESS=127.0.0.1 APP_LISTEN_PORT=3000 APP_BEHIND_PROXY=false -DATABASE_LOCATION=./people.db +DATABASE_DSN="host=localhost user=camarades password=camarades dbname=camarades port=5432 sslmode=disable TimeZone=Europe/Zurich" SESSIONS_LOCATION=./sessions.db diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..b1e57b0 --- /dev/null +++ b/compose.yml @@ -0,0 +1,14 @@ +services: + postgres: + image: postgres:latest + container_name: camarades-postgres + ports: + - "127.0.0.1:5432:5432" + environment: + POSTGRES_USER: camarades + POSTGRES_PASSWORD: camarades + POSTGRES_DB: camarades + volumes: + - postgres_data:/var/lib/postgresql/data +volumes: + postgres_data: diff --git a/controllers/contacts.go b/controllers/contacts.go index a7d104c..aa15e61 100644 --- a/controllers/contacts.go +++ b/controllers/contacts.go @@ -68,8 +68,11 @@ func Contacts(c *fiber.Ctx) error { params.PageSize = 50 params.PersonType = "contacts" + params.OrderColumn = c.Query("c") + params.OrderDirection = c.Query("o") + var sections []models.Section - db.Order("name collate nocase asc").Find(§ions, "contains_contacts = ? AND id IN ?", true, allowedSections) + db.Order("name asc").Find(§ions, "contains_contacts = ? AND id IN ?", true, allowedSections) params.AllowedSections = allowedSections // Security for active contacts @@ -100,6 +103,8 @@ func Contacts(c *fiber.Ctx) error { "SearchJSON": searchJSON, "Sections": sections, "Fields": fields, + "OrderCol": params.OrderColumn, + "OrderDir": params.OrderDirection, }) } @@ -156,7 +161,7 @@ func ContactsExport(c *fiber.Ctx) error { params.PersonType = "contacts" var sections []models.Section - db.Order("name collate nocase asc").Find(§ions, "contains_members = ? AND id IN ?", true, allowedSections) + db.Order("name asc").Find(§ions, "contains_members = ? AND id IN ?", true, allowedSections) params.AllowedSections = allowedSections // Security for active contacts @@ -280,7 +285,7 @@ func ContactsExport(c *fiber.Ctx) error { } else if field.FieldType == "list" { - if field.List.Multi { + if field.List != nil && field.List.Multi { if countMulti == 0 { c.Writef("\"") @@ -323,7 +328,7 @@ func ContactShow(c *fiber.Ctx) error { var person models.Person result := db.Unscoped().Preload("Section").Find( - &person, "id = ? AND is_contact", id, true, + &person, "id = ? AND is_contact = ?", id, true, ) if result.Error != nil { @@ -416,7 +421,7 @@ func ContactAdd(c *fiber.Ctx) error { } var sections []models.Section - db.Order("name collate nocase asc").Find( + db.Order("name asc").Find( §ions, "contains_contacts = ?", true, @@ -511,7 +516,7 @@ func ContactAdd(c *fiber.Ctx) error { } for _, field := range fields { - if field.List.Multi { + if field.List != nil && field.List.Multi { for _, listItem := range field.List.ListItems { key := fmt.Sprintf("field-%d-%d", field.ID, listItem.ID) value := c.FormValue(key) @@ -520,7 +525,7 @@ func ContactAdd(c *fiber.Ctx) error { var fieldValue models.FieldValue fieldValue.FieldID = field.ID fieldValue.PersonID = person.ID - fieldValue.ListItemID = listItem.ID + fieldValue.ListItemID = &listItem.ID db.Create(&fieldValue) } } @@ -594,7 +599,8 @@ func ContactAdd(c *fiber.Ctx) error { var fieldValue models.FieldValue fieldValue.FieldID = field.ID fieldValue.PersonID = person.ID - fieldValue.ListItemID = uint(valueInt) + valueUint := uint(valueInt) + fieldValue.ListItemID = &valueUint db.Create(&fieldValue) } } @@ -659,7 +665,7 @@ func ContactEdit(c *fiber.Ctx) error { } var sections []models.Section - db.Order("name collate nocase asc").Find( + db.Order("name asc").Find( §ions, "contains_contacts = ?", true, @@ -760,7 +766,7 @@ func ContactEdit(c *fiber.Ctx) error { field.ID, ) - if field.List.Multi { + if field.List != nil && field.List.Multi { for _, listItem := range field.List.ListItems { key := fmt.Sprintf("field-%d-%d", field.ID, listItem.ID) value := c.FormValue(key) @@ -769,7 +775,7 @@ func ContactEdit(c *fiber.Ctx) error { var fieldValue models.FieldValue fieldValue.FieldID = field.ID fieldValue.PersonID = person.ID - fieldValue.ListItemID = listItem.ID + fieldValue.ListItemID = &listItem.ID db.Create(&fieldValue) } } @@ -843,7 +849,8 @@ func ContactEdit(c *fiber.Ctx) error { var fieldValue models.FieldValue fieldValue.FieldID = field.ID fieldValue.PersonID = person.ID - fieldValue.ListItemID = uint(valueInt) + valueUint := uint(valueInt) + fieldValue.ListItemID = &valueUint db.Create(&fieldValue) } } diff --git a/controllers/debug.go b/controllers/debug.go index 30a0624..1a4d93e 100644 --- a/controllers/debug.go +++ b/controllers/debug.go @@ -110,7 +110,7 @@ func DebugFixFieldsOrder(c *fiber.Ctx) error { var memberFields []models.Field result := db.Order( - "name collate nocase asc", + "name asc", ).Find( &memberFields, "person_type = ?", "member", ) @@ -130,7 +130,7 @@ func DebugFixFieldsOrder(c *fiber.Ctx) error { var contactFields []models.Field result2 := db.Order( - "name collate nocase asc", + "name asc", ).Find( &contactFields, "person_type = ?", "contact", ) diff --git a/controllers/fields.go b/controllers/fields.go index 22f3d43..17c5a8a 100644 --- a/controllers/fields.go +++ b/controllers/fields.go @@ -74,7 +74,7 @@ func FieldAdd(c *fiber.Ctx) error { } var lists []models.List - db.Order("name collate nocase asc").Find(&lists) + db.Order("name asc").Find(&lists) if c.Method() == "POST" { field.Name = c.FormValue("name") @@ -107,7 +107,8 @@ func FieldAdd(c *fiber.Ctx) error { if err != nil || listID < 1 { errors = append(errors, "Liste incorrecte") } else { - field.ListID = uint(listID) + listID2 := uint(listID) + field.ListID = &listID2 } } diff --git a/controllers/home.go b/controllers/home.go index 733e973..22472a5 100644 --- a/controllers/home.go +++ b/controllers/home.go @@ -1,15 +1,82 @@ package controllers -import "github.com/gofiber/fiber/v2" +import ( + "git.readonly.ch/bouzoure/pop-camarades/helpers" + "git.readonly.ch/bouzoure/pop-camarades/models" + "github.com/gofiber/fiber/v2" +) func Homepage(c *fiber.Ctx) error { + userid, err := helpers.GetSessionUserId(c) + if err != nil { + return err + } + + allowedSectionsMembers, err := helpers.PermissionsGetSections( + userid, "show_member", + ) + if err != nil { + return err + } + + allowedSectionsContacts, err := helpers.PermissionsGetSections( + userid, "show_contact", + ) + if err != nil { + return err + } + + db, err := helpers.GetDatabase() + if err != nil { + return err + } + + var membersCount int64 + var contactsCount int64 + + db.Find( + &models.Person{}, + "is_member = ? AND section_id IN ?", + true, allowedSectionsMembers, + ).Count(&membersCount) + + db.Find( + &models.Person{}, + "is_contact = ? AND section_id IN ?", + true, allowedSectionsContacts, + ).Count(&contactsCount) + return c.Render("index", fiber.Map{ - "PageTitle": "Accueil", + "PageTitle": "Accueil", + "MembersCount": membersCount, + "ContactsCount": contactsCount, }) } func Admin(c *fiber.Ctx) error { + db, err := helpers.GetDatabase() + if err != nil { + return err + } + + var sectionsCount int64 + var listsCount int64 + var fieldsCount int64 + var usersCount int64 + var rolesCount int64 + + db.Find(&models.Section{}).Count(§ionsCount) + db.Find(&models.List{}).Count(&listsCount) + db.Find(&models.Field{}).Count(&fieldsCount) + db.Find(&models.User{}).Count(&usersCount) + db.Find(&models.Role{}).Count(&rolesCount) + return c.Render("admin", fiber.Map{ - "PageTitle": "Administration", + "PageTitle": "Administration", + "SectionsCount": sectionsCount, + "ListsCount": listsCount, + "FieldsCount": fieldsCount, + "UsersCount": usersCount, + "RolesCount": rolesCount, }) } diff --git a/controllers/lists.go b/controllers/lists.go index a947723..36b1b14 100644 --- a/controllers/lists.go +++ b/controllers/lists.go @@ -17,7 +17,7 @@ func Lists(c *fiber.Ctx) error { } var lists []models.List - result := db.Order("name collate nocase asc").Find(&lists) + result := db.Order("name asc").Find(&lists) if result.Error != nil && !errors.Is(result.Error, gorm.ErrRecordNotFound) { return err @@ -54,7 +54,7 @@ func ListShow(c *fiber.Ctx) error { ) var listItems []models.ListItem - db.Order("value collate nocase asc").Find(&listItems, "list_id = ?", id) + db.Order("value asc").Find(&listItems, "list_id = ?", id) return c.Render("list", fiber.Map{ "PageTitle": title, diff --git a/controllers/members.go b/controllers/members.go index f263fec..e1c0405 100644 --- a/controllers/members.go +++ b/controllers/members.go @@ -83,8 +83,11 @@ func Members(c *fiber.Ctx) error { params.PageSize = 50 params.PersonType = "members" + params.OrderColumn = c.Query("c") + params.OrderDirection = c.Query("o") + var sections []models.Section - db.Order("name collate nocase asc").Find(§ions, "contains_members = ? AND id IN ?", true, allowedSections) + db.Order("name asc").Find(§ions, "contains_members = ? AND id IN ?", true, allowedSections) params.AllowedSections = allowedSections // Security for active contacts @@ -115,6 +118,8 @@ func Members(c *fiber.Ctx) error { "SearchJSON": searchJSON, "Sections": sections, "Fields": fields, + "OrderCol": params.OrderColumn, + "OrderDir": params.OrderDirection, }) } @@ -171,7 +176,7 @@ func MembersExport(c *fiber.Ctx) error { params.PersonType = "members" var sections []models.Section - db.Order("name collate nocase asc").Find(§ions, "contains_members = ? AND id IN ?", true, allowedSections) + db.Order("name asc").Find(§ions, "contains_members = ? AND id IN ?", true, allowedSections) params.AllowedSections = allowedSections // Security for active contacts @@ -338,7 +343,7 @@ func MemberShow(c *fiber.Ctx) error { var person models.Person result := db.Unscoped().Preload("Section").Find( - &person, "id = ? AND is_member", id, true, + &person, "id = ? AND is_member = ?", id, true, ) if result.Error != nil { @@ -431,7 +436,7 @@ func MemberAdd(c *fiber.Ctx) error { } var sections []models.Section - db.Order("name collate nocase asc").Find( + db.Order("name asc").Find( §ions, "contains_members = ?", true, @@ -526,7 +531,7 @@ func MemberAdd(c *fiber.Ctx) error { } for _, field := range fields { - if field.List.Multi { + if field.List != nil && field.List.Multi { for _, listItem := range field.List.ListItems { key := fmt.Sprintf("field-%d-%d", field.ID, listItem.ID) value := c.FormValue(key) @@ -535,7 +540,7 @@ func MemberAdd(c *fiber.Ctx) error { var fieldValue models.FieldValue fieldValue.FieldID = field.ID fieldValue.PersonID = person.ID - fieldValue.ListItemID = listItem.ID + fieldValue.ListItemID = &listItem.ID db.Create(&fieldValue) } } @@ -609,7 +614,8 @@ func MemberAdd(c *fiber.Ctx) error { var fieldValue models.FieldValue fieldValue.FieldID = field.ID fieldValue.PersonID = person.ID - fieldValue.ListItemID = uint(valueInt) + valueUint := uint(valueInt) + fieldValue.ListItemID = &valueUint db.Create(&fieldValue) } } @@ -674,7 +680,7 @@ func MemberEdit(c *fiber.Ctx) error { } var sections []models.Section - db.Order("name collate nocase asc").Find( + db.Order("name asc").Find( §ions, "contains_members = ?", true, @@ -775,7 +781,7 @@ func MemberEdit(c *fiber.Ctx) error { field.ID, ) - if field.List.Multi { + if field.List != nil && field.List.Multi { for _, listItem := range field.List.ListItems { key := fmt.Sprintf("field-%d-%d", field.ID, listItem.ID) value := c.FormValue(key) @@ -784,7 +790,7 @@ func MemberEdit(c *fiber.Ctx) error { var fieldValue models.FieldValue fieldValue.FieldID = field.ID fieldValue.PersonID = person.ID - fieldValue.ListItemID = listItem.ID + fieldValue.ListItemID = &listItem.ID db.Create(&fieldValue) } } @@ -858,7 +864,8 @@ func MemberEdit(c *fiber.Ctx) error { var fieldValue models.FieldValue fieldValue.FieldID = field.ID fieldValue.PersonID = person.ID - fieldValue.ListItemID = uint(valueInt) + valueUint := uint(valueInt) + fieldValue.ListItemID = &valueUint db.Create(&fieldValue) } } diff --git a/controllers/roles.go b/controllers/roles.go index 575675a..21a0bba 100644 --- a/controllers/roles.go +++ b/controllers/roles.go @@ -17,7 +17,7 @@ func Roles(c *fiber.Ctx) error { } var roles []models.Role - result := db.Order("name collate nocase asc").Find(&roles) + result := db.Order("name asc").Find(&roles) if result.Error != nil && !errors.Is(result.Error, gorm.ErrRecordNotFound) { return err diff --git a/controllers/sections.go b/controllers/sections.go index 4c13af9..1632c54 100644 --- a/controllers/sections.go +++ b/controllers/sections.go @@ -18,7 +18,7 @@ func Sections(c *fiber.Ctx) error { } var sections []models.Section - result := db.Order("name collate nocase asc").Preload("ParentSection").Find(§ions) + result := db.Order("name asc").Preload("ParentSection").Find(§ions) if result.Error != nil && !errors.Is(result.Error, gorm.ErrRecordNotFound) { return err @@ -70,8 +70,8 @@ func SectionAdd(c *fiber.Ctx) error { } var sections []models.Section - db.Order("name collate nocase asc").Find( - §ions, "id <> ? AND parent_section_id = 0", section.ID, + db.Order("name asc").Find( + §ions, "id <> ? AND parent_section_id IS NULL", section.ID, ) if c.Method() == "POST" { @@ -106,12 +106,12 @@ func SectionAdd(c *fiber.Ctx) error { section.Name = name section.ShortName = shortName - section.ParentSectionID = 0 parentSectionID, err := strconv.ParseUint(parentSection, 10, 0) if err == nil { for _, parentSection := range sections { - if parentSection.ID == uint(parentSectionID) { - section.ParentSectionID = uint(parentSectionID) + parentSectionID2 := uint(parentSectionID) + if parentSection.ID == parentSectionID2 { + section.ParentSectionID = &parentSectionID2 break } } @@ -177,8 +177,8 @@ func SectionEdit(c *fiber.Ctx) error { ) var sections []models.Section - db.Order("name collate nocase asc").Find( - §ions, "id <> ? AND parent_section_id = 0", section.ID, + db.Order("name asc").Find( + §ions, "id <> ? AND parent_section_id IS NULL", section.ID, ) var errors []string @@ -200,12 +200,12 @@ func SectionEdit(c *fiber.Ctx) error { section.Name = name section.ShortName = shortName - section.ParentSectionID = 0 parentSectionID, err := strconv.ParseUint(parentSection, 10, 0) if err == nil { for _, parentSection := range sections { - if parentSection.ID == uint(parentSectionID) { - section.ParentSectionID = uint(parentSectionID) + parentSectionID2 := uint(parentSectionID) + if parentSection.ID == parentSectionID2 { + section.ParentSectionID = &parentSectionID2 break } } diff --git a/controllers/users.go b/controllers/users.go index 126a779..4c15889 100644 --- a/controllers/users.go +++ b/controllers/users.go @@ -25,7 +25,7 @@ func Users(c *fiber.Ctx) error { } var users []models.User - result := db.Order("name collate nocase asc").Find(&users) + result := db.Order("name asc").Find(&users) if result.Error != nil && !errors.Is(result.Error, gorm.ErrRecordNotFound) { return err @@ -62,7 +62,7 @@ func UserShow(c *fiber.Ctx) error { ) var userRoles []models.UserRole - db.Joins("Role").Joins("Section").Order("Section__name collate nocase asc").Find( + db.Joins("Role").Joins("Section").Order("\"Section\".\"name\" asc").Find( &userRoles, "user_id = ?", id, ) @@ -284,10 +284,10 @@ func UserPermissions(c *fiber.Ctx) error { ) var roles []models.Role - db.Order("name collate nocase asc").Find(&roles) + db.Order("name asc").Find(&roles) var sections []models.Section - db.Order("name collate nocase asc").Find(§ions) + db.Order("name asc").Find(§ions) var errors []string if c.Method() == "POST" { diff --git a/frontend/bootstrap.scss b/frontend/bootstrap.scss new file mode 100644 index 0000000..45d1cf3 --- /dev/null +++ b/frontend/bootstrap.scss @@ -0,0 +1,6 @@ +$red: #cb0000; + +@use "npm:bootstrap/scss/bootstrap.scss" with ( + $enable-rounded: false, + $danger: $red +); diff --git a/frontend/index.css b/frontend/index.css index d60456d..32acece 100644 --- a/frontend/index.css +++ b/frontend/index.css @@ -1,4 +1,4 @@ -@import "npm:bootstrap/dist/css/bootstrap.css"; +@import "bootstrap.scss"; @import "npm:bootstrap-icons/font/bootstrap-icons.css"; img#header-logo { @@ -53,3 +53,17 @@ a { #licenses p { margin: 0; } + +.fs-7 { + font-size: .75rem !important; +} + +.mw-600 { + max-width: 600px; +} +.mw-900 { + max-width: 900px; +} +.mw-1200 { + max-width: 1200px; +} \ No newline at end of file diff --git a/go.mod b/go.mod index 90d626e..43925f7 100644 --- a/go.mod +++ b/go.mod @@ -3,32 +3,32 @@ module git.readonly.ch/bouzoure/pop-camarades go 1.23.4 require ( - github.com/brianvoe/gofakeit/v7 v7.2.1 - github.com/charmbracelet/log v0.4.1 + github.com/brianvoe/gofakeit/v7 v7.3.0 + github.com/charmbracelet/log v0.4.2 github.com/flosch/pongo2/v6 v6.0.0 - github.com/glebarez/sqlite v1.11.0 - github.com/go-playground/validator/v10 v10.26.0 - github.com/gofiber/fiber/v2 v2.52.6 + github.com/go-playground/validator/v10 v10.27.0 + github.com/gofiber/fiber/v2 v2.52.8 github.com/gofiber/helmet/v2 v2.2.26 github.com/gofiber/storage/badger/v2 v2.0.1 - github.com/gofiber/template/django/v3 v3.1.13 + github.com/gofiber/template/django/v3 v3.1.14 github.com/golobby/dotenv v1.3.2 github.com/google/uuid v1.6.0 - github.com/pquerna/otp v1.4.0 - github.com/yuin/goldmark v1.7.11 - golang.org/x/crypto v0.38.0 - gorm.io/gorm v1.26.1 + github.com/pquerna/otp v1.5.0 + github.com/yuin/goldmark v1.7.12 + golang.org/x/crypto v0.40.0 + gorm.io/driver/postgres v1.6.0 + gorm.io/gorm v1.30.0 ) require ( - github.com/andybalholm/brotli v1.1.1 // indirect + github.com/andybalholm/brotli v1.2.0 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/boombuler/barcode v1.0.2 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charmbracelet/colorprofile v0.3.1 // indirect github.com/charmbracelet/lipgloss v1.1.0 // indirect - github.com/charmbracelet/x/ansi v0.9.2 // indirect + github.com/charmbracelet/x/ansi v0.9.3 // indirect github.com/charmbracelet/x/cellbuf v0.0.13 // indirect github.com/charmbracelet/x/term v0.2.1 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -36,19 +36,22 @@ require ( github.com/dgraph-io/ristretto v0.2.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/gabriel-vasile/mimetype v1.4.9 // indirect - github.com/glebarez/go-sqlite v1.22.0 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/gofiber/template v1.8.3 // indirect github.com/gofiber/utils v1.1.0 // indirect - github.com/gofiber/utils/v2 v2.0.0-beta.8 // indirect + github.com/gofiber/utils/v2 v2.0.0-beta.10 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v1.0.0 // indirect github.com/golobby/cast v1.3.3 // indirect github.com/google/flatbuffers v25.2.10+incompatible // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect + github.com/jackc/pgx/v5 v5.7.5 // indirect + github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect github.com/klauspost/compress v1.18.0 // indirect @@ -58,22 +61,17 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/muesli/termenv v0.16.0 // indirect - github.com/ncruces/go-strftime v0.1.9 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect - github.com/valyala/fasthttp v1.62.0 // indirect + github.com/valyala/fasthttp v1.63.0 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 // indirect - golang.org/x/net v0.40.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.25.0 // indirect + golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect + golang.org/x/net v0.42.0 // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/sys v0.34.0 // indirect + golang.org/x/text v0.27.0 // indirect google.golang.org/protobuf v1.36.6 // indirect - modernc.org/libc v1.65.4 // indirect - modernc.org/mathutil v1.7.1 // indirect - modernc.org/memory v1.10.0 // indirect - modernc.org/sqlite v1.37.0 // indirect ) diff --git a/go.sum b/go.sum index c5aad78..3f587d5 100644 --- a/go.sum +++ b/go.sum @@ -2,16 +2,16 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= -github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= +github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ= +github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.2 h1:79yrbttoZrLGkL/oOI8hBrUKucwOL0oOjUgEguGMcJ4= github.com/boombuler/barcode v1.0.2/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/brianvoe/gofakeit/v7 v7.2.1 h1:AGojgaaCdgq4Adzrd2uWdbGNDyX6MWNhHdQBraNfOHI= -github.com/brianvoe/gofakeit/v7 v7.2.1/go.mod h1:QXuPeBw164PJCzCUZVmgpgHJ3Llj49jSLVkKPMtxtxA= +github.com/brianvoe/gofakeit/v7 v7.3.0 h1:TWStf7/lLpAjKw+bqwzeORo9jvrxToWEwp9b1J2vApQ= +github.com/brianvoe/gofakeit/v7 v7.3.0/go.mod h1:QXuPeBw164PJCzCUZVmgpgHJ3Llj49jSLVkKPMtxtxA= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -22,10 +22,10 @@ github.com/charmbracelet/colorprofile v0.3.1 h1:k8dTHMd7fgw4bnFd7jXTLZrSU/CQrKnL github.com/charmbracelet/colorprofile v0.3.1/go.mod h1:/GkGusxNs8VB/RSOh3fu0TJmQ4ICMMPApIIVn0KszZ0= github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY= github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30= -github.com/charmbracelet/log v0.4.1 h1:6AYnoHKADkghm/vt4neaNEXkxcXLSV2g1rdyFDOpTyk= -github.com/charmbracelet/log v0.4.1/go.mod h1:pXgyTsqsVu4N9hGdHmQ0xEA4RsXof402LX9ZgiITn2I= -github.com/charmbracelet/x/ansi v0.9.2 h1:92AGsQmNTRMzuzHEYfCdjQeUzTrgE1vfO5/7fEVoXdY= -github.com/charmbracelet/x/ansi v0.9.2/go.mod h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE= +github.com/charmbracelet/log v0.4.2 h1:hYt8Qj6a8yLnvR+h7MwsJv/XvmBJXiueUcI3cIxsyig= +github.com/charmbracelet/log v0.4.2/go.mod h1:qifHGX/tc7eluv2R6pWIpyHDDrrb/AG71Pf2ysQu5nw= +github.com/charmbracelet/x/ansi v0.9.3 h1:BXt5DHS/MKF+LjuK4huWrC6NCvHtexww7dMayh6GXd0= +github.com/charmbracelet/x/ansi v0.9.3/go.mod h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE= github.com/charmbracelet/x/cellbuf v0.0.13 h1:/KBBKHuVRbq1lYx5BzEHBAFBP8VcQzJejZ/IA3iR28k= github.com/charmbracelet/x/cellbuf v0.0.13/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs= github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ= @@ -63,10 +63,6 @@ github.com/fxamacker/cbor/v2 v2.8.0 h1:fFtUGXUzXPHTIUdne5+zzMPTfffl3RD5qYnkY40vt github.com/fxamacker/cbor/v2 v2.8.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/gabriel-vasile/mimetype v1.4.9 h1:5k+WDwEsD9eTLL8Tz3L0VnmVh9QxGjRmjBvAG7U/oYY= github.com/gabriel-vasile/mimetype v1.4.9/go.mod h1:WnSQhFKJuBlRyLiKohA/2DtIlPFAbguNaG7QCHcyGok= -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-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= @@ -75,22 +71,22 @@ github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/o github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.26.0 h1:SP05Nqhjcvz81uJaRfEV0YBSSSGMc/iMaVtFbr3Sw2k= -github.com/go-playground/validator/v10 v10.26.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo= -github.com/gofiber/fiber/v2 v2.52.6 h1:Rfp+ILPiYSvvVuIPvxrBns+HJp8qGLDnLJawAu27XVI= -github.com/gofiber/fiber/v2 v2.52.6/go.mod h1:YEcBbO/FB+5M1IZNBP9FO3J9281zgPAreiI1oqg8nDw= +github.com/go-playground/validator/v10 v10.27.0 h1:w8+XrWVMhGkxOaaowyKH35gFydVHOvC0/uWoy2Fzwn4= +github.com/go-playground/validator/v10 v10.27.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo= +github.com/gofiber/fiber/v2 v2.52.8 h1:xl4jJQ0BV5EJTA2aWiKw/VddRpHrKeZLF0QPUxqn0x4= +github.com/gofiber/fiber/v2 v2.52.8/go.mod h1:YEcBbO/FB+5M1IZNBP9FO3J9281zgPAreiI1oqg8nDw= github.com/gofiber/helmet/v2 v2.2.26 h1:KreQVUpCIGppPQ6Yt8qQMaIR4fVXMnvBdsda0dJSsO8= github.com/gofiber/helmet/v2 v2.2.26/go.mod h1:XE0DF4cgf0M5xIt7qyAK5zOi8jJblhxfSDv9DAmEEQo= github.com/gofiber/storage/badger/v2 v2.0.1 h1:iIB5Dh2dypJjdEruYgBf7H4l5a98R5pVKVLk5wbY5bo= github.com/gofiber/storage/badger/v2 v2.0.1/go.mod h1:2LA5uR3q4xFVd0oXIZWK+7yzlO2vzLa/D062R7fowFI= github.com/gofiber/template v1.8.3 h1:hzHdvMwMo/T2kouz2pPCA0zGiLCeMnoGsQZBTSYgZxc= github.com/gofiber/template v1.8.3/go.mod h1:bs/2n0pSNPOkRa5VJ8zTIvedcI/lEYxzV3+YPXdBvq8= -github.com/gofiber/template/django/v3 v3.1.13 h1:9b5VOFUoetOV3axFE7BsLmnZ442Q+h7o9LZPwQ29WEc= -github.com/gofiber/template/django/v3 v3.1.13/go.mod h1:orkcSnqCO0HGTczIBj9rz77i+EneUMebCqA7bsIWaVA= +github.com/gofiber/template/django/v3 v3.1.14 h1:SvTvs+u5vTZuu1Y2pMUD2NhaGIjBj9FmDA3XD50QBvw= +github.com/gofiber/template/django/v3 v3.1.14/go.mod h1:gP4vH+T1ajZw7yaejqG1dZVdHQkMC/jPoQbmlG812I0= github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM= github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0= -github.com/gofiber/utils/v2 v2.0.0-beta.8 h1:ZifwbHZqZO3YJsx1ZhDsWnPjaQ7C0YD20LHt+DQeXOU= -github.com/gofiber/utils/v2 v2.0.0-beta.8/go.mod h1:1lCBo9vEF4RFEtTgWntipnaScJZQiM8rrsYycLZ4n9c= +github.com/gofiber/utils/v2 v2.0.0-beta.10 h1:yDQgcBKTnZiZ4S0YY+hpTnf5iJYwVaFA2HsOgOesAyY= +github.com/gofiber/utils/v2 v2.0.0-beta.10/go.mod h1:qEZ175nSOkl5xciHmqxwNDsWzwiB39gB8RgU1d3U4mQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -130,13 +126,19 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs= -github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= +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/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= +github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= @@ -169,8 +171,6 @@ github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc= github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk= -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/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -178,17 +178,17 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pquerna/otp v1.4.0 h1:wZvl1TIVxKRThZIBiwOOHOGP/1+nZyWBil9Y2XNEDzg= -github.com/pquerna/otp v1.4.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= +github.com/pquerna/otp v1.5.0 h1:NMMR+WrmaqXU4EzdGJEE1aUUI0AMRzsp96fFFWNPwxs= +github.com/pquerna/otp v1.5.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= -github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/shamaton/msgpack/v2 v2.2.3 h1:uDOHmxQySlvlUYfQwdjxyybAOzjlQsD1Vjy+4jmO9NM= +github.com/shamaton/msgpack/v2 v2.2.3/go.mod h1:6khjYnkx73f7VQU7wjcFS9DFjs+59naVWJv1TB7qdOI= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -204,6 +204,7 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= @@ -212,8 +213,8 @@ github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.62.0 h1:8dKRBX/y2rCzyc6903Zu1+3qN0H/d2MsxPPmVNamiH0= -github.com/valyala/fasthttp v1.62.0/go.mod h1:FCINgr4GKdKqV8Q0xv8b+UxPV+H/O5nNFo3D+r54Htg= +github.com/valyala/fasthttp v1.63.0 h1:DisIL8OjB7ul2d7cBaMRcKTQDYnrGy56R4FCiuDP0Ns= +github.com/valyala/fasthttp v1.63.0/go.mod h1:REc4IeW+cAEyLrRPa5A81MIjvz0QE1laoTX2EaPHKJM= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= @@ -223,8 +224,8 @@ github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZ github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.7.11 h1:ZCxLyDMtz0nT2HFfsYG8WZ47Trip2+JyLysKcMYE5bo= -github.com/yuin/goldmark v1.7.11/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= +github.com/yuin/goldmark v1.7.12 h1:YwGP/rrea2/CnCtUHgjuolG/PnMxdQtPMO5PvaE2/nY= +github.com/yuin/goldmark v1.7.12/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= @@ -232,18 +233,16 @@ golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= -golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 h1:y5zboxd6LQAqYIhHnB48p0ByQ/GnQx2BE33L8BOHQkI= -golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6/go.mod h1:U6Lno4MTRCDY+Ba7aCcauB9T60gsv5s4ralQzP72ZoQ= +golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= +golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= -golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -253,8 +252,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -262,8 +261,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= -golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -272,12 +271,12 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= 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.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= -golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -286,8 +285,6 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -323,31 +320,9 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gorm.io/gorm v1.26.1 h1:ghB2gUI9FkS46luZtn6DLZ0f6ooBJ5IbVej2ENFDjRw= -gorm.io/gorm v1.26.1/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= +gorm.io/driver/postgres v1.6.0 h1:2dxzU8xJ+ivvqTRph34QX+WrRaJlmfyPqXmoGVjMBa4= +gorm.io/driver/postgres v1.6.0/go.mod h1:vUw0mrGgrTK+uPHEhAdV4sfFELrByKVGnaVRkXDhtWo= +gorm.io/gorm v1.30.0 h1:qbT5aPv1UH8gI99OsRlvDToLxW5zR7FzS9acZDOZcgs= +gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -modernc.org/cc/v4 v4.26.1 h1:+X5NtzVBn0KgsBCBe+xkDC7twLb/jNVj9FPgiwSQO3s= -modernc.org/cc/v4 v4.26.1/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= -modernc.org/ccgo/v4 v4.28.0 h1:rjznn6WWehKq7dG4JtLRKxb52Ecv8OUGah8+Z/SfpNU= -modernc.org/ccgo/v4 v4.28.0/go.mod h1:JygV3+9AV6SmPhDasu4JgquwU81XAKLd3OKTUDNOiKE= -modernc.org/fileutil v1.3.1 h1:8vq5fe7jdtEvoCf3Zf9Nm0Q05sH6kGx0Op2CPx1wTC8= -modernc.org/fileutil v1.3.1/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc= -modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI= -modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito= -modernc.org/libc v1.65.4 h1:8oVL/29p3e+ZvMv4nE1pryq5p8grHiFsU8bN8Eah/rs= -modernc.org/libc v1.65.4/go.mod h1:MOiGAM9lrMBT9L8xT1nO41qYl5eg9gCp9/kWhz5L7WA= -modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU= -modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg= -modernc.org/memory v1.10.0 h1:fzumd51yQ1DxcOxSO+S6X7+QTuVU+n8/Aj7swYjFfC4= -modernc.org/memory v1.10.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw= -modernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8= -modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns= -modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w= -modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE= -modernc.org/sqlite v1.37.0 h1:s1TMe7T3Q3ovQiK2Ouz4Jwh7dw4ZDqbebSDTlSJdfjI= -modernc.org/sqlite v1.37.0/go.mod h1:5YiWv+YviqGMuGw4V+PNplcyaJ5v+vQd7TQOgkACoJM= -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= -modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= diff --git a/helpers/config.go b/helpers/config.go index 7e1b931..e87443d 100644 --- a/helpers/config.go +++ b/helpers/config.go @@ -15,7 +15,7 @@ type Config struct { BehindProxy bool `env:"APP_BEHIND_PROXY"` } Database struct { - Location string `env:"DATABASE_LOCATION"` + DSN string `env:"DATABASE_DSN"` } Sessions struct { Location string `env:"SESSIONS_LOCATION"` diff --git a/helpers/database.go b/helpers/database.go index 5e9d0c7..00ed2f8 100644 --- a/helpers/database.go +++ b/helpers/database.go @@ -2,7 +2,7 @@ package helpers import ( "git.readonly.ch/bouzoure/pop-camarades/models" - "github.com/glebarez/sqlite" + "gorm.io/driver/postgres" "gorm.io/gorm" gormLogger "gorm.io/gorm/logger" ) @@ -30,7 +30,7 @@ func GetDatabase() (*gorm.DB, error) { } database, err = gorm.Open( - sqlite.Open(config.Database.Location), + postgres.Open(config.Database.DSN), &gormConfig, ) if err != nil { @@ -42,7 +42,8 @@ func GetDatabase() (*gorm.DB, error) { return database, err } - db.SetMaxOpenConns(1) + db.SetMaxIdleConns(10) + db.SetMaxOpenConns(50) err = database.AutoMigrate( &models.User{}, diff --git a/helpers/database/people.go b/helpers/database/people.go index e22677e..e9a3f9d 100644 --- a/helpers/database/people.go +++ b/helpers/database/people.go @@ -27,6 +27,8 @@ type PeopleSearchParams struct { PageSize int `json:"-"` PageNumber int `json:"-"` AllowedSections []uint `json:"-"` + OrderColumn string `json:"-"` + OrderDirection string `json:"-"` } type PeopleSearchResults struct { @@ -43,16 +45,35 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { return results, nil } + if strings.EqualFold(params.OrderDirection, "DESC") { + params.OrderDirection = "DESC" + } else { + params.OrderDirection = "ASC" + } + + switch strings.ToLower(params.OrderColumn) { + case "address": + params.OrderColumn = "people.address1" + case "npa": + params.OrderColumn = "people.postal_code" + case "section": + params.OrderColumn = "people.section_id" + case "created": + params.OrderColumn = "people.created_at" + case "updated": + params.OrderColumn = "people.updated_at" + default: + params.OrderColumn = "CONCAT(people.last_name, people.first_name)" + } + // SQL qeury for results - sqlQuery := `--sql - SELECT people.*, - sections.name AS Section__name + sqlQuery := ` + SELECT people.* FROM people - INNER JOIN sections - ON people.section_id = sections.id` + ` // SQL query to count results - sqlQueryCount := `--sql + sqlQueryCount := ` SELECT people.id FROM people ` @@ -62,7 +83,7 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { var sqlFilters string // Filter: member or contact - sqlFilters = `--sql + sqlFilters = ` WHERE is_member = @is_member AND is_contact = @is_contact ` @@ -78,11 +99,11 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { // Filter: name -> first_name + last_name if len(params.Name) > 0 { - nameFilter := `--sql - people.first_name LIKE @name - OR people.last_name LIKE @name - OR CONCAT(people.first_name, ' ', people.last_name) LIKE @name - OR CONCAT(people.last_name, ' ', people.first_name) LIKE @name + nameFilter := ` + LOWER(people.first_name) LIKE LOWER(@name) + OR LOWER(people.last_name) LIKE LOWER(@name) + OR LOWER(CONCAT(people.first_name, ' ', people.last_name)) LIKE LOWER(@name) + OR LOWER(CONCAT(people.last_name, ' ', people.first_name)) LIKE LOWER(@name) ` sqlParams = append(sqlParams, sql.Named( "name", @@ -92,10 +113,10 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { if strings.Contains(params.Name, " ") { names := strings.Split(params.Name, " ") for index, name := range names { - nameFilter = fmt.Sprintf(`--sql + nameFilter = fmt.Sprintf(` %s - OR people.first_name LIKE @name_%d - OR people.last_name LIKE @name_%d + OR LOWER(people.first_name) LIKE LOWER(@name_%d) + OR LOWER(people.last_name) LIKE LOWER(@name_%d) `, nameFilter, index, index) sqlParams = append(sqlParams, sql.Named( @@ -105,7 +126,7 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { } } - sqlFilters = fmt.Sprintf(`--sql + sqlFilters = fmt.Sprintf(` %s AND (%s) `, sqlFilters, nameFilter) @@ -113,7 +134,7 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { // Filter: section if params.Section > 0 { - sqlFilters = fmt.Sprintf(`--sql + sqlFilters = fmt.Sprintf(` %s AND people.section_id = @section `, sqlFilters) @@ -122,7 +143,7 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { // Filter: active (only apply if archived is false) if params.Active && !params.Archive { - sqlFilters = fmt.Sprintf(`--sql + sqlFilters = fmt.Sprintf(` %s AND people.deleted_at IS NULL `, sqlFilters) @@ -130,7 +151,7 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { // Filter: archived (only apply if active is false) if params.Archive && !params.Active { - sqlFilters = fmt.Sprintf(`--sql + sqlFilters = fmt.Sprintf(` %s AND people.deleted_at IS NOT NULL `, sqlFilters) @@ -138,7 +159,7 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { // Filter: if both active and archived are turned off, return nothing if !params.Archive && !params.Active { - sqlFilters = fmt.Sprintf(`--sql + sqlFilters = fmt.Sprintf(` %s AND 0=1 `, sqlFilters) @@ -146,9 +167,9 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { // Filters: email if len(params.Email) > 0 { - sqlFilters = fmt.Sprintf(`--sql + sqlFilters = fmt.Sprintf(` %s - AND people.email LIKE @email + AND LOWER(people.email) LIKE LOWER(@email) `, sqlFilters) sqlParams = append(sqlParams, sql.Named( "email", @@ -158,35 +179,29 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { // Filters: phone if len(params.Phone) > 0 { - params.Phone = strings.ReplaceAll(params.Phone, " ", "") - params.Phone = strings.ReplaceAll(params.Phone, "-", "") - params.Phone = strings.ReplaceAll(params.Phone, ".", "") - params.Phone = strings.ReplaceAll(params.Phone, "/", "") - params.Phone = strings.ReplaceAll(params.Phone, "+", "") + var phoneWithoutZeroFilter string + if string(params.Phone[0]) == "0" { + phoneWithoutZeroFilter = ` + OR + TRANSLATE(people.phone, ' ,-,.,/,+', '') LIKE TRANSLATE(@phone2, ' ,-,.,/,+', '') OR + TRANSLATE(people.mobile, ' ,-,.,/,+', '') LIKE TRANSLATE(@phone2, ' ,-,.,/,+', '') + ` - sqlFilters = fmt.Sprintf(`--sql + phone2 := params.Phone[1:] + sqlParams = append(sqlParams, sql.Named( + "phone2", + fmt.Sprintf("%%%s%%", phone2), + )) + } + + sqlFilters = fmt.Sprintf(` %s AND ( - REPLACE( - REPLACE( - REPLACE( - REPLACE( - REPLACE(people.phone, ' ', '') - , '-', '') - , '.', '') - , '/', '') - , '+', '') LIKE @phone - OR REPLACE( - REPLACE( - REPLACE( - REPLACE( - REPLACE(people.mobile, ' ', '') - , '-', '') - , '.', '') - , '/', '') - , '+', '') LIKE @phone + TRANSLATE(people.phone, ' ,-,.,/,+', '') LIKE TRANSLATE(@phone, ' ,-,.,/,+', '') OR + TRANSLATE(people.mobile, ' ,-,.,/,+', '') LIKE TRANSLATE(@phone, ' ,-,.,/,+', '') + %s ) - `, sqlFilters) + `, sqlFilters, phoneWithoutZeroFilter) sqlParams = append(sqlParams, sql.Named( "phone", fmt.Sprintf("%%%s%%", params.Phone), @@ -195,7 +210,7 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { // Filters: address if len(params.Address) > 0 { - sqlFilters = fmt.Sprintf(`--sql + sqlFilters = fmt.Sprintf(` %s AND ( people.address1 LIKE @address @@ -210,7 +225,7 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { // Filters: postal code if len(params.PostalCode) > 0 { - sqlFilters = fmt.Sprintf(`--sql + sqlFilters = fmt.Sprintf(` %s AND people.postal_code = @postal_code `, sqlFilters) @@ -222,7 +237,7 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { // Filters: city if len(params.City) > 0 { - sqlFilters = fmt.Sprintf(`--sql + sqlFilters = fmt.Sprintf(` %s AND people.city LIKE @city `, sqlFilters) @@ -233,7 +248,7 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { } // Security filter: only show results in allowed secitons - sqlFilters = fmt.Sprintf(`--sql + sqlFilters = fmt.Sprintf(` %s AND people.section_id IN @allowed_sections `, sqlFilters) @@ -250,7 +265,7 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { continue } - sqlFieldJoins = fmt.Sprintf(`--sql + sqlFieldJoins = fmt.Sprintf(` %s LEFT JOIN field_values AS field_%d @@ -271,36 +286,53 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { } switch v := value.(type) { - default: - fmt.Println(v) - continue case string: - filter = fmt.Sprintf(`--sql - %s - field_%d.value_string LIKE @field_%d_%d - OR field_%d.value_date LIKE @field_%d_%d - `, filter, field.ID, field.ID, index, field.ID, field.ID, index) - sqlParams = append(sqlParams, sql.Named( - fmt.Sprintf("field_%d_%d", field.ID, index), - fmt.Sprintf("%%%s%%", v), - )) + if field.FieldType == "date" { + filter = fmt.Sprintf(` + %s + TO_CHAR(field_%d.value_date, 'YYYY-MM-DD') = @field_%d_%d + `, filter, field.ID, field.ID, index) + sqlParams = append(sqlParams, sql.Named( + fmt.Sprintf("field_%d_%d", field.ID, index), + v, + )) + } else { + filter = fmt.Sprintf(` + %s + LOWER(field_%d.value_string) LIKE LOWER(@field_%d_%d) + `, filter, field.ID, field.ID, index) + sqlParams = append(sqlParams, sql.Named( + fmt.Sprintf("field_%d_%d", field.ID, index), + fmt.Sprintf("%%%s%%", v), + )) + } case float64: - filter = fmt.Sprintf(`--sql - %s - field_%d.value_int = @field_%d_%d - OR field_%d.list_item_id = @field_%d_%d - `, filter, field.ID, field.ID, index, field.ID, field.ID, index) - sqlParams = append(sqlParams, sql.Named( - fmt.Sprintf("field_%d_%d", field.ID, index), - v, - )) + if field.FieldType == "list" { + filter = fmt.Sprintf(` + %s + field_%d.list_item_id = @field_%d_%d + `, filter, field.ID, field.ID, index) + sqlParams = append(sqlParams, sql.Named( + fmt.Sprintf("field_%d_%d", field.ID, index), + v, + )) + } else { + filter = fmt.Sprintf(` + %s + field_%d.value_int = @field_%d_%d + `, filter, field.ID, field.ID, index) + sqlParams = append(sqlParams, sql.Named( + fmt.Sprintf("field_%d_%d", field.ID, index), + v, + )) + } } fieldFilter = fmt.Sprintf("%s %s", fieldFilter, filter) } if fieldFilter != "" { - sqlFilters = fmt.Sprintf(`--sql + sqlFilters = fmt.Sprintf(` %s AND (%s) `, sqlFilters, fieldFilter) @@ -308,7 +340,7 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { } // Build and run count query - sqlQueryCount = fmt.Sprintf(`--sql + sqlQueryCount = fmt.Sprintf(` %s %s %s @@ -330,7 +362,7 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { var sqlPagination string if params.PageSize > 0 { - sqlPagination = `--sql + sqlPagination = ` LIMIT @pagination_limit OFFSET @pagination_offset ` @@ -339,16 +371,16 @@ func PeopleSearch(params PeopleSearchParams) (PeopleSearchResults, error) { } // Build and run paginated result query - sqlQuery = fmt.Sprintf(`--sql + sqlQuery = fmt.Sprintf(` %s %s %s GROUP BY people.id - ORDER BY CONCAT(people.last_name, people.first_name) COLLATE NOCASE ASC + ORDER BY %s %s %s - `, sqlQuery, sqlFieldJoins, sqlFilters, sqlPagination) + `, sqlQuery, sqlFieldJoins, sqlFilters, params.OrderColumn, params.OrderDirection, sqlPagination) - sqlResult := db.Raw(sqlQuery, sqlParams...).Scan(&results.Results) + sqlResult := db.Raw(sqlQuery, sqlParams...).Preload("Section").Find(&results.Results) if sqlResult.Error != nil { return results, sqlResult.Error } diff --git a/helpers/users.go b/helpers/users.go index 9ebcb6d..35625f0 100644 --- a/helpers/users.go +++ b/helpers/users.go @@ -16,7 +16,7 @@ func FirstAccountCheck() (bool, error) { } var user models.User - result := db.First(&user, "is_admin = 1") + result := db.First(&user, "is_admin = ?", true) if errors.Is(result.Error, gorm.ErrRecordNotFound) { return false, nil diff --git a/models/fields.go b/models/fields.go index 0df335a..6c18471 100644 --- a/models/fields.go +++ b/models/fields.go @@ -11,8 +11,8 @@ type Field struct { Name string PersonType string FieldType string - ListID uint - List List + ListID *uint + List *List Position int } @@ -25,8 +25,8 @@ type FieldValue struct { ValueString sql.NullString ValueInt sql.NullInt64 ValueDate sql.NullTime - ListItemID uint - ListItem ListItem + ListItemID *uint + ListItem *ListItem } var PersonTypes = map[string]string{ diff --git a/models/sections.go b/models/sections.go index a1ea7e2..18537a4 100644 --- a/models/sections.go +++ b/models/sections.go @@ -6,7 +6,7 @@ type Section struct { gorm.Model Name string ShortName string - ParentSectionID uint + ParentSectionID *uint ParentSection *Section ContainsMembers bool ContainsContacts bool diff --git a/package.json b/package.json index 1771197..6a737f0 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,9 @@ "url": "https://git.readonly.ch/bouzoure/pop-camarades" }, "devDependencies": { - "parcel": "^2.15.0", - "prettier": "^3.5.3", + "@parcel/transformer-sass": "2.15.4", + "parcel": "^2.15.4", + "prettier": "^3.6.2", "prettier-plugin-jinja-template": "^2.1.0" }, "source": "frontend/index.js", @@ -31,7 +32,7 @@ "build": "go build" }, "dependencies": { - "bootstrap": "^5.3.6", + "bootstrap": "^5.3.7", "bootstrap-icons": "^1.13.1", "jquery": "^3.7.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 233a827..f72a68d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: bootstrap: - specifier: ^5.3.6 - version: 5.3.6(@popperjs/core@2.11.8) + specifier: ^5.3.7 + version: 5.3.7(@popperjs/core@2.11.8) bootstrap-icons: specifier: ^1.13.1 version: 1.13.1 @@ -18,15 +18,18 @@ importers: specifier: ^3.7.1 version: 3.7.1 devDependencies: + '@parcel/transformer-sass': + specifier: 2.15.4 + version: 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) parcel: - specifier: ^2.15.0 - version: 2.15.0(@swc/helpers@0.5.17) + specifier: ^2.15.4 + version: 2.15.4(@swc/helpers@0.5.17) prettier: - specifier: ^3.5.3 - version: 3.5.3 + specifier: ^3.6.2 + version: 3.6.2 prettier-plugin-jinja-template: specifier: ^2.1.0 - version: 2.1.0(prettier@3.5.3) + version: 2.1.0(prettier@3.6.2) packages: @@ -100,217 +103,217 @@ packages: cpu: [x64] os: [win32] - '@parcel/bundler-default@2.15.0': - resolution: {integrity: sha512-ILPLWsRdt8GceQSPUGWDg6FpELpHJbIEu5B2+72zx2zgsXHYmkT/d35HKIFHq4NoN2ZGwRFJI0bQ+DJcFAt+Tw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/bundler-default@2.15.4': + resolution: {integrity: sha512-4vkaZuwGqL8L7NqEgjRznz9/QoeVKk0Z6z2nzfpdnSWA4xX3moUj+JeoqGUbyFGuPzfCma4SA4+txnQbKu0edQ==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/cache@2.15.0': - resolution: {integrity: sha512-UKCf/mUJ1Kn+PXvDDTzXHu5eafUQPMQ+JIb1cHsFGGJETpCZskKhexnN21yJVrdRPM0JkIjxv1viTRTk2tt6Gw==} + '@parcel/cache@2.15.4': + resolution: {integrity: sha512-x/QgMuVvXQV6uNhIF+6kz6SzhVVkwf6WPSVG/xQvGMEiBabForDVYIhIEuN3RzUXCU352CGM6d8TtLLg61W1fw==} engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.15.0 + '@parcel/core': ^2.15.4 - '@parcel/codeframe@2.15.0': - resolution: {integrity: sha512-zpZCf5W+npiSkdCUC7izjdUUoWM2M++XWRwbqgwWBUCKrXC4vVJoOYMzLbyfaF/zkVo5iQenSGlsD0olBd7V1w==} + '@parcel/codeframe@2.15.4': + resolution: {integrity: sha512-ErAPEQaJIpB+ocNZ3rl8AEK6piA7JBInwZLNU0eHMthm01Ssb10JkpAadyn1w9IVfCey+kqQcEeWv47Yh6mL1Q==} engines: {node: '>= 16.0.0'} - '@parcel/compressor-raw@2.15.0': - resolution: {integrity: sha512-AoShbbqNCkzTkNMygmcCazV6iFj9nLVwBPZZCAyJ57ooRlxPszMtLO1RIw/cVU9PJg/NlYGg0uEGVt/N56SzWA==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/compressor-raw@2.15.4': + resolution: {integrity: sha512-gECePZxVXBwyo0DYbAq4V4SimVzHaJ3p8QOgFIfOqNmlEBbhLf3QSjArFPJNKiHZaJuclh4a+IShFBN+u6tXXw==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/config-default@2.15.0': - resolution: {integrity: sha512-vWwDvM4t0Osm2u6PI8pG7Z/J6kDMpJ+zEdIdhj9Au9lJWYA4SS3BF7mj4jhWlr69ClK9rsLujwfh3AUJr6oYpA==} + '@parcel/config-default@2.15.4': + resolution: {integrity: sha512-chUE4NpcSXpMfTcSmgl4Q78zH+ZFe0qdgZLBtF4EH2QQakW7wAXAYRxS2/P3xFkUj0/51sExhbCFWgulrlGDPw==} peerDependencies: - '@parcel/core': ^2.15.0 + '@parcel/core': ^2.15.4 - '@parcel/core@2.15.0': - resolution: {integrity: sha512-HJvgxG18f6geGkp50y3Ta2ZcEBXtpraZxnERy/BMuXYxIB3DPGXN53Jsy6huELDNpSIXJJXOfXeDMSs+XonTCg==} + '@parcel/core@2.15.4': + resolution: {integrity: sha512-+TXxTm58lFwXXObFAEclwKX1p1AdixcD+M7T4NeFIQzQ4F20Vr+6oybCSqW1exNA3uHqVDDFLx7TT78seVjvkg==} engines: {node: '>= 16.0.0'} - '@parcel/diagnostic@2.15.0': - resolution: {integrity: sha512-Bzg7AJu10muQ793p2MPlZnYvbqZXOJw/YBIOCFjbwRKiYUb06+sZyfntU7e7YecV6im0IGqkIfMD0F4MT+v7Rg==} + '@parcel/diagnostic@2.15.4': + resolution: {integrity: sha512-8MAqefwzBKceNN3364OLm+p4HRD7AfimfFW3MntLxPB6bnelc9UBg5c9zEm34zYEctbmky8gqYgAUSDjqYC5Hw==} engines: {node: '>= 16.0.0'} - '@parcel/error-overlay@2.15.0': - resolution: {integrity: sha512-Tsq0q4Lv3aDn/nXWuzH1x/pgzYQYCt17qOejAANfNYIBIrLs7BRsGyT63vP39i7IXI+MvulMl5nDXQDAqDwujw==} + '@parcel/error-overlay@2.15.4': + resolution: {integrity: sha512-xxeaWm8fV8Z4uGy/c09mOvmFSHBOgF1gCMQwLCwZvfMLqIWkdZaUQ2cRhWZIS6pOXaRVC7YpcXzk2DOiSUNSbQ==} engines: {node: '>= 16.0.0'} - '@parcel/events@2.15.0': - resolution: {integrity: sha512-iCoFGsZTAlh3ewp6KYseUC16OHbZi2n6vAl4Rr8Uw7yxvwCC3iHT9acLwhO7bP/YKkdGri3d78+UwPl8LmbIwA==} + '@parcel/events@2.15.4': + resolution: {integrity: sha512-SBq4zstaFr7XQaXNaQmUuVh1swCUHrhtPCOSofvkJoQGhjsuhQlh4t0NmUikyKNdj7C1j40xCS1kGHuUO29b0g==} engines: {node: '>= 16.0.0'} - '@parcel/feature-flags@2.15.0': - resolution: {integrity: sha512-gtAC30G2QlIwTlLM2tI7AB0JBKEiX4nNOL/qh+or9wD9fuk53O4QHJwPtiy49YGSPYrYnIR2EXWOOV+3Br9CCw==} + '@parcel/feature-flags@2.15.4': + resolution: {integrity: sha512-DJqZVtbfjWJseM0gk7yyDkAuOhP7/FVwZ/YVqjozIqXBhmQm07xctiqNQyZX2vBbQsxmVbjpqyq+DOj45WPEzQ==} engines: {node: '>= 16.0.0'} - '@parcel/fs@2.15.0': - resolution: {integrity: sha512-ecWIbIhwdnvJc/PY+l3TFOcRtr8W3X6M1yfhNQLmYs/3kETIxDK8s+vTva/qPBFEiW0amMBhbkhKZEXFrxL1GQ==} + '@parcel/fs@2.15.4': + resolution: {integrity: sha512-5cahD2ByQaSi+YN0aDvrMWXZvs3mP7C5ey8zcDTDn7JxJa51sMqOQcdU3VUTzQFtAPeRM2KxUkxLhBBXgQqHZA==} engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.15.0 + '@parcel/core': ^2.15.4 - '@parcel/graph@3.5.0': - resolution: {integrity: sha512-CLQMSPq1TTwGqt741UIwuzXSXRX4G4skNrZ7OZnUcUNfKfHKjJq5T/tqhpCsfTXzW8KASOt7EJGPD64HYA8nRQ==} + '@parcel/graph@3.5.4': + resolution: {integrity: sha512-uF7kyQXWK2fQZvG5eE0N3avYGLQE5Q0vyJsyypNcFW3kXNnrkZCUtbG7urmdae9mmZ2jXIVN4q4Bhd9pefGj9A==} engines: {node: '>= 16.0.0'} - '@parcel/logger@2.15.0': - resolution: {integrity: sha512-WCYtSweM7Iol/lE7HhU5cLsSNuGQ1T4xTIYvG16tGHCsjybWF1H9yqkL90WU2JHjhSsvNGjvwrVxWjfO304fqQ==} + '@parcel/logger@2.15.4': + resolution: {integrity: sha512-rQ7F5+FMQ7t+w5NGFRT8CWHhym0aunduufCjlafvRzUSKEN/5/nwTfCe9I5QsthGlXJWs+ZTy4zQ+wLtZQRBKQ==} engines: {node: '>= 16.0.0'} - '@parcel/markdown-ansi@2.15.0': - resolution: {integrity: sha512-TJOSg/y2P1Rp199+osSFd4jtt8M4iyBQwgC4gdAARcraIwLa/wYRt6RVnOIsN3nz1r1CPLvHHPfuIwwFjRNw9A==} + '@parcel/markdown-ansi@2.15.4': + resolution: {integrity: sha512-u5Lwcr4ZVBSLFbKYht+mJqJ3ZMXvJdmDMU5eDtrIEKPpu9LrIDdPpDEXBoyO6pDsoV/2AqyXUUMzBRyCatkkoQ==} engines: {node: '>= 16.0.0'} - '@parcel/namer-default@2.15.0': - resolution: {integrity: sha512-JkfrvBcMmZ4DvI9VGUWSir3Nwlh224MsKUMqfXs9zc9Xq484v+p+bSaEoAwZIyfUwXXDz1sXk9NffNuLSa5ivA==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/namer-default@2.15.4': + resolution: {integrity: sha512-EXsoQ1S+5ZIfy8431E7F0vVS7bfH5JpZ+vFVcUpArJDkhmMG7T/eP6Kp9CXHLJmn7ki1x7iIVytrja0XXRQWBQ==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/node-resolver-core@3.6.0': - resolution: {integrity: sha512-5WxRlrFkHrUrCa3zq1Umo/k3Da7F1Bib31yEZp3pmAgjbX/wi+ESiMllAamW6IP2SLP80jAB2D/mbuHAqPH3kg==} + '@parcel/node-resolver-core@3.6.4': + resolution: {integrity: sha512-g3+usMnr7pfRqbMAksOpNA7GJk7HUNW1Wxx7Shhp4w0K9JUdVrd2LRKwZxbqL7H9NqWtVvUOT9cZbMlDR6bO1w==} engines: {node: '>= 16.0.0'} - '@parcel/optimizer-css@2.15.0': - resolution: {integrity: sha512-MPazyyIZuQgdWdjkVNq8/JyaM3Z2IalChJV+7j2EjdAU6fGblkp7HsroRYCdoWP+88ULsOblHUUkpqDGtHr2WQ==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/optimizer-css@2.15.4': + resolution: {integrity: sha512-KQLuqwcvVFTNFtM+bzfvQivwunmhVAngmR4NiI8zQaykidYH28V8YkVAQmpbLbgoGad/UgG7grb0UshvnrQHpw==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/optimizer-html@2.15.0': - resolution: {integrity: sha512-sJBqAOFAFrT1fuF4bcGKy3bNsSvdWEP8TP27bOQZ7VoIEH4j+Uycxhy2OU+l8PC5FSnTQEGQlBZ5YNEsputzYw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/optimizer-html@2.15.4': + resolution: {integrity: sha512-gBvt6RdDVMyO1Flvdtc8DxpxLgIXhaKuVXEjHdAP7sEW0SMdSd6r/tl6Plmcszig7sDwhDf6IsQOIvbzGHYZZg==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/optimizer-image@2.15.0': - resolution: {integrity: sha512-LJjP2OeE+85zNL0jQfCPZ6mG2voG6FplgcQ2poQQi1HJ4WdVgMiF8K34j5X7jqrQZn9V2duQGEXt1dGlG/5wyQ==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/optimizer-image@2.15.4': + resolution: {integrity: sha512-M8fo7eEL6JRcmLhSX9pUUGU4MPrPrE9cMNcwIt3DQLnSvQ+sshhUDa6t9hKWeHHhs16BHvxrvksN2TIbkgHODQ==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} peerDependencies: - '@parcel/core': ^2.15.0 + '@parcel/core': ^2.15.4 - '@parcel/optimizer-svg@2.15.0': - resolution: {integrity: sha512-oIzgi2VfbsEs6R3e17Dps2lVN1mX6GpHMuCRYDXghJWhoMR0f8OodsG3mCpFqDldhQTDqHPkH+Rr8JqS1EMBHQ==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/optimizer-svg@2.15.4': + resolution: {integrity: sha512-pPdjRaLPqjAEROXIHLc6JWLLki56alhuUNbalhLqBCgktZrrq2dGCjBEVgxqRczc9D+ePCX/e/xci4tC0Tkcbg==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/optimizer-swc@2.15.0': - resolution: {integrity: sha512-CLcgEnmNQ98bFBcY/0n7yRKU/Vyq5FPGJh5tCosCGgZ1Ob6sHIb8zLbKl6aqKYqfbDHouHHtirjLwBf0nRfSUg==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/optimizer-swc@2.15.4': + resolution: {integrity: sha512-2m5cYESVCq6AGx252eSTArZ1Oc1Ve4GBGL7NhvgbNqOthyXlc2qAed6rCkARrBd8pfEl5+2XHeK1ijDAZdIZ/A==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/package-manager@2.15.0': - resolution: {integrity: sha512-CYJss7ouWCAanv+E/6Ndo6TtFo3981k2lSi5pWRwaSEGe/adY6YaFTcfV4gwKmMWcpqAnymtUxDiCxrZBIR6AA==} + '@parcel/package-manager@2.15.4': + resolution: {integrity: sha512-KZONBcEJ24moQdrpU0zJh9CYk3KKbpB5RUM70utAORem1yQKms+0Y4YED3njq6nZzbgwUN/Csc+powUHLZStvg==} engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.15.0 + '@parcel/core': ^2.15.4 - '@parcel/packager-css@2.15.0': - resolution: {integrity: sha512-NIO3/wBbdBpajCwBon+wrdRHZl4ei+5JoZU3uW4Np8ECaoRdBmseyGoyYqiHCO7dxhu+iAa5WrRFOAjQGtNOOw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/packager-css@2.15.4': + resolution: {integrity: sha512-bzSaNf+I5lmJFu95wSG2k7pGwjCDesZsV6Y9sozIL2LoSxqvkGhm/ABXAa3Ed7dLe3tSAEBzJcyqShQgLzSzuw==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/packager-html@2.15.0': - resolution: {integrity: sha512-1oA+bgqTny7yTXPgRUbBwi4TLy0ywPtpFJZcxwI6GONORVHDC/178PpjCbkD4q9O61J2e1Ms793aZam7zeBkjg==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/packager-html@2.15.4': + resolution: {integrity: sha512-Uayux6A2Anm66Kmq22QhD0TuVp9LiRCMuPUzBd6n4ekNlG0Lzm6K3/okMkPG65nKbNjq5qcPscFWlDxggvjt2g==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/packager-js@2.15.0': - resolution: {integrity: sha512-vAqBujbE/nJ47a7Gdo2p0dhipPuOQV8gy0cfJAuEz50BlCMwn1IRY2fGtE2zMW1KCcvLwGmEFyYVQh/C71wqAQ==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/packager-js@2.15.4': + resolution: {integrity: sha512-96bqhs1jyd28CfWQD+Yn8rSsd1ar7voHWyBtMLimsK+bDJIzL26Z7jWyRDwXRuLErYC01EoXRIRctxtmeRVJ2Q==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/packager-raw@2.15.0': - resolution: {integrity: sha512-zbl4z2EyNPFfBGekQp8F9+LorKq5uV5zhkLcyGZY3kFqyar1HLwbr/Qm6Di1X3OE5IR0+kccqjtF7im9VY8v9A==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/packager-raw@2.15.4': + resolution: {integrity: sha512-CaSpDt5jjcO0SYCtsDhw6yfTDQuDFQ875H42W/ftvSQL7RfLRljPthnbdcy9chvKBbvRBQF+0z8Sxwehrd5hsA==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/packager-svg@2.15.0': - resolution: {integrity: sha512-rtdqnxNTlVi7HI/mHvmKBjv9d7AT2vveqw9QELAHosEKLl5+ZUBtUvwv5NcaQ8Z2Z4Vjyq3EHuPD+LsYCLalhQ==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/packager-svg@2.15.4': + resolution: {integrity: sha512-qHsyOgnzoA2XGMLIYUnX79XAaV327VTWQvIzju/OmOjcff4o3uiEcNL8w9k3p2w2oPXOLoQ0THMiivoUQSM8GQ==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/packager-wasm@2.15.0': - resolution: {integrity: sha512-fKG2sNC3OIx5XKJ9RQ8fzDXujNopGGjSK+uYbUVrGpG8AlyUJt5ETVjk1712KaDAJxE8u0oUcupXfrrRNbW/Fw==} - engines: {node: '>=16.0.0', parcel: ^2.15.0} + '@parcel/packager-wasm@2.15.4': + resolution: {integrity: sha512-YPVij7zrBchtXr/y29P4uh3C/+19PMhhLibYF/8oMJKkFkeU3Uv00/XLm915vdBPrIPjgw0YuIfLzUKip1uGtg==} + engines: {node: '>=16.0.0', parcel: ^2.15.4} - '@parcel/plugin@2.15.0': - resolution: {integrity: sha512-OT+W5t70+VZbcg2P30QahF4YjRu+9ywG5NSMj0SYvS6PCZa+IAYB9589KuavcAp+Tq2FV7MgYtrBKPh9b0VAtg==} + '@parcel/plugin@2.15.4': + resolution: {integrity: sha512-XVehjmzk8ZDOFf/BXo26L76ZqCGNKIQcN2ngxAnq0KRY/WFanL8yLaL0qQq+c9whlu09hkGz1CuhFBLAIjJMYQ==} engines: {node: '>= 16.0.0'} - '@parcel/profiler@2.15.0': - resolution: {integrity: sha512-/Bw10pCISHbSzpdmuxg1GjSh+GuvqmUYA9bAmb69dkzWLIEk3uU05ba4xoju2mwoSeNb50LRcYPcirLB0Z61wA==} + '@parcel/profiler@2.15.4': + resolution: {integrity: sha512-ezVZlttUmQ1MQD5e8yVb07vSGYEFOB59Y/jaxL9mGSLZkVhMIIHe/7SuA+4qVAH8dlg6bslXRqlsunLMPEgPsg==} engines: {node: '>= 16.0.0'} - '@parcel/reporter-cli@2.15.0': - resolution: {integrity: sha512-p8nNpX53A7OLFpqZravxzanExPyk0/zNFTYJO/rdGToOqe/m3V/uK8XWb45fVf9OKNZmB13sr/DRdeYHMbXyYg==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/reporter-cli@2.15.4': + resolution: {integrity: sha512-us0HIwuJqpSguf+yi4n8foabVs26JGvRB/eSOf0KkRldxFciYLn4NJ8rt3Xm1zvxlDiSkD4v2n77u+ouIZ+AEQ==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/reporter-dev-server@2.15.0': - resolution: {integrity: sha512-WILv04oGD3yGAI17w1+MkJZKQumndpGHVzRVZIgLc5WWDffGWvCGYJseUWYQc34/CYY19v/hI/BaEQqJX6CABQ==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/reporter-dev-server@2.15.4': + resolution: {integrity: sha512-uCNeDyArNNXI9YThlxyTx7+5ZSxlewyUdyrLdDZCqvn8s1xNB9W8sUNVps7mJZQSc+2ZRk3wyDemURD67uJk/A==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/reporter-tracer@2.15.0': - resolution: {integrity: sha512-ICVLXcwaXAbk9uLBczPgAaAG5esaIBUn8soaX+TXylQfUCIExbU9Q321hreLIRZK6j6UrWQ/m55EQGFKLWf0Lg==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/reporter-tracer@2.15.4': + resolution: {integrity: sha512-9W1xsb/FtobCQ4z847nI6hFDaTZHLeThv/z05EF77R30RX2k+unG9ac5NQB1v4KLx09Bhfre32+sjYNReWxWlg==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/resolver-default@2.15.0': - resolution: {integrity: sha512-Olnm/eY70keKg0oyG0c5Qkhx0R/6fyj0S8w4E4OVgpAMIuRKt8nDNfHBLgbchYgCJlPb8YwzbHluJLfxZlHLeA==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/resolver-default@2.15.4': + resolution: {integrity: sha512-4uKo3FFnubtIc4rM9jZiQQXpa1slawyRy5btJEfTFvbcnz0dm3WThLrsPDMfmPwNr9F/n5x8yzDLI6/fZ/elgA==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/runtime-browser-hmr@2.15.0': - resolution: {integrity: sha512-HZQpEbunNino2SF5Ilt7EHFGeHhBCk05s1o69Y5bNrIGy3meu287maWcjK1zzpquw0IskgsnGaafKSOcaVbHXw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/runtime-browser-hmr@2.15.4': + resolution: {integrity: sha512-KRGzbxDUOQUkrJKxxY0WyU7oVaa9TvWTRlpuGJXzQJs/hw8vkAAoAm8+ptpypvBC8LnxFHzGbSyHPfL8C8MQOw==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/runtime-js@2.15.0': - resolution: {integrity: sha512-fmHWzTr1WjHk/rrRyvt5e932rrDUyMZfzWMn1JLOXK7NFmndoc0PUrjH+8OFAlvGopFX+0gHWOe4/VeC8Vujuw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/runtime-js@2.15.4': + resolution: {integrity: sha512-zNRK+693CMkYiA0ckjPOmz+JVHD9bVzp27itcMyuDH6l/Or8m09RgCC4DIdIxBqiplsDSe39DwEc5X7b0vvcjw==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/runtime-rsc@2.15.0': - resolution: {integrity: sha512-bs0miqQ/fqQU+6iAjXBG65/t5/r/JTYAg3YEo7WPPA9cbgSE8aL2rk+6d5HnRkUstzXKJEgzAQJLObOAb3s/HA==} - engines: {node: '>= 12.0.0', parcel: ^2.15.0} + '@parcel/runtime-rsc@2.15.4': + resolution: {integrity: sha512-yHc4HEwzCQYLqa6Q1WtZ8xJeaDAk0p2i0b3ABq2I+izmRjer4jertlsEwh9mf9Z1eUGtJobdGYzl8Ai1VfhC3g==} + engines: {node: '>= 12.0.0', parcel: ^2.15.4} - '@parcel/runtime-service-worker@2.15.0': - resolution: {integrity: sha512-5JGqWuBriviDG6A1KSuBmQG408Ngx7iix3l/hG3IcUPv2jDUoN4tmLTqOMfmXsOZF+FUJNZ30EP6y3GTv2PIdg==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/runtime-service-worker@2.15.4': + resolution: {integrity: sha512-NGq/wS34GIVzo2ZURBjCqgHV+PU7eTcngCzmmk/wrCEeWnr13ld+CAIxVZoqyNJwYsF6VQanrjSM2/LhCXEdyA==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/rust-darwin-arm64@2.15.0': - resolution: {integrity: sha512-bdlLA/l7h7TPGc6lnHNrLW6uwUMJ7bqyHa4StYFViwXffDnEeA+hdpixDfc9qTlMJlKgQyYj7BNP1NO6OxJiRg==} + '@parcel/rust-darwin-arm64@2.15.4': + resolution: {integrity: sha512-cEpNDeEtvM5Nhj0QLN95QbcZ9yY6Z5W3+2OeHvnojEAP8Rp1XGzqVTTZdlyKyN1KTiyfzIOiQJCiEcr+kMc5Nw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@parcel/rust-darwin-x64@2.15.0': - resolution: {integrity: sha512-l6tD0nNvmtpwuNSCP9Q5jPpPeY45NwmRNiuDoYMzfNT3iFKs/i48/3JM1vZvYO3HiW6V0xGfWa1b+HQsSKQRYg==} + '@parcel/rust-darwin-x64@2.15.4': + resolution: {integrity: sha512-jL9i13sXKeBXXz8Z3BNYoScPOi+ljBA0ubAE3PN5DCoAA6wS4/FsAiRSIUw+3uxqASBD7+JvaT5sDUga1Xft5g==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@parcel/rust-linux-arm-gnueabihf@2.15.0': - resolution: {integrity: sha512-MZNL/UV20kBaTYMos/IcJPZvzYzlYWjuBZh2EI3OHYBGMR9QdpeJuwgTAy2WUYbevXm7nemdGHGccGcdiNf/Xg==} + '@parcel/rust-linux-arm-gnueabihf@2.15.4': + resolution: {integrity: sha512-c8HpVdDugCutlMILoOlkTioih9HGJpQrzS2G3cg/O1a5ZTacooGf3eGJGoh6dUBEv9WEaEb6zsTRwFv2BgtZcA==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@parcel/rust-linux-arm64-gnu@2.15.0': - resolution: {integrity: sha512-u/rndCWjmQgFJi/2NFVWV1snlF/souO8UYZR+ZG6goo/sik5WgrACtCucgOrskogE50WU1+JGmP0TBNqOX27Uw==} + '@parcel/rust-linux-arm64-gnu@2.15.4': + resolution: {integrity: sha512-Wcfs/JY4FnuLxQaU+VX2rI4j376Qo2LkZmq4zp9frnsajaAqmloVQfnbUkdnQPEL4I38eHXerzBX3LoXSxnZKA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@parcel/rust-linux-arm64-musl@2.15.0': - resolution: {integrity: sha512-uTSOZJkZKh/x/IfaGkbmqqdUaK1S61Kw3ZW8yj+EtteHvfZgk1SQMgI51Gg5hwaZ5wuZx0nOJGLuOxPMGx7z6w==} + '@parcel/rust-linux-arm64-musl@2.15.4': + resolution: {integrity: sha512-xf9HxosEn3dU5M0zDSXqBaG8rEjLThRdTYqpkxHW/qQGzy0Se+/ntg8PeDHsSG5E9OK8xrcKH46Lhaw0QBF/Zw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@parcel/rust-linux-x64-gnu@2.15.0': - resolution: {integrity: sha512-8SIwgM+bpiodJemNaEuUgZQk4hV/3pgJnPBRjGse1F7SHeTp9UoABLSF3V5Sc79Hi8fzECoRimk44krzSCaynw==} + '@parcel/rust-linux-x64-gnu@2.15.4': + resolution: {integrity: sha512-RigXVCFj6h0AXmkuxU61rfgYuW+PXBR6qSkR2I20yKnAXoMfxLaZy9YJ3sAPMEjT9zXgzGAX+3syItMF+bRjaw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@parcel/rust-linux-x64-musl@2.15.0': - resolution: {integrity: sha512-pMFQ7bdaBeFY+qfHE8Oor8yZLkXDl5PmnKICuFiGETnbClV9xfWmZdTnqjEw2XU9gGQ49DkWJcGW975d3IlksA==} + '@parcel/rust-linux-x64-musl@2.15.4': + resolution: {integrity: sha512-tHlRgonSr5ca8OvhbGzZUggCgCOirRz5dHhPSCm4ajMxeDMamwprq6lKy0sCNTXht4TXIEyugBcfEuRKEeVIBw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@parcel/rust-win32-x64-msvc@2.15.0': - resolution: {integrity: sha512-UXjPkWbavwGIHi/R1uPd4CZDhAUUfOGpvIMRdq0ImihoRUnUxyTCIsqRhwh8flOO2RCuU6rteeGOeT9undSX7Q==} + '@parcel/rust-win32-x64-msvc@2.15.4': + resolution: {integrity: sha512-YsX6vMl/bfyxqZSN7yiaZQKLoJKELSZYcvg8gIv4CF1xkaTdmfr6gvq2iCyoV+bwrodNohN4Xfl8r7Wniu1/UA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@parcel/rust@2.15.0': - resolution: {integrity: sha512-ERRO4q14g6nD5mr1S/kEDSsmis/mll9JLxzyub0vTgobywrUq/azJ6Un7XwhCXCaU7lO7ihD+HJvjmNLVULCXg==} + '@parcel/rust@2.15.4': + resolution: {integrity: sha512-OxOux8z8YEYg23+15uMmYaloFp3x1RwcliBay6HqxUW7RTmtI1/z+xd8AtienCckACD60gvDGy04LjgbEGdJVg==} engines: {node: '>= 16.0.0'} peerDependencies: napi-wasm: ^1.1.2 @@ -322,66 +325,70 @@ packages: resolution: {integrity: sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==} engines: {node: ^12.18.3 || >=14} - '@parcel/transformer-babel@2.15.0': - resolution: {integrity: sha512-mJNrV4254gJ9o2pjZvyK88RXCbDmlBdZqlAqg/HXEHTqzae/iOoSGpvxy+NisqXgpMwpIf8wlxmyFna8FL4Yfg==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/transformer-babel@2.15.4': + resolution: {integrity: sha512-rb4nqZcTLkLD3nvuYJ9wwNb8x6cajBK2l6csdYMLEI4516SkIzkO/gs2cZ9M5q+CMhxAqpdEnrwektbOtQQasg==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/transformer-css@2.15.0': - resolution: {integrity: sha512-GOC/ZFi6lxVfseGCb2kJdYBiliHrQq9dxcFayHGb7zrIRWVf9F9ihzsLkDaZ7a4WBu+gIib7JLGnO0Jy3leWOg==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/transformer-css@2.15.4': + resolution: {integrity: sha512-6tVwSJsOssXgcB5XMAQGsexAffoBEi8GVql3YQqzI1EwVYs9zr+B5mfbesb4aWcegR02w99NHJYFP9CrOr3SWw==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/transformer-html@2.15.0': - resolution: {integrity: sha512-4qFvAZICCYbKgPaX48yzxMHrSXgm4fIISHYN+W9fu7S6ohr2cOYM6FE4sk3PYxDS5aWeU7j6zU0C4I/sLlO8KA==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/transformer-html@2.15.4': + resolution: {integrity: sha512-gzYPbbyEuV8nzPojw86eD5Kf93AYUWcY8lu33gu0XHROJH7mq5MAwPwtb/U+EfpeCd0/oKbLzA2mkQksM1NncQ==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/transformer-image@2.15.0': - resolution: {integrity: sha512-5arJrqpxHsGchqBZb2tVUIJUuzQLZIeleXq+kVnI0Tq+XFE5h3fvIrgg/viAN1lDi4eFf7fq5gWX2ImQNvkKyw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/transformer-image@2.15.4': + resolution: {integrity: sha512-KOVwj2gKjUybuzHwarC/YVqRf3r2BD4/2ysckozj6DIji/bq3fd2rE9yqxWXO+zt918PsOSTzMKwRnaseaXLKQ==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} peerDependencies: - '@parcel/core': ^2.15.0 + '@parcel/core': ^2.15.4 - '@parcel/transformer-js@2.15.0': - resolution: {integrity: sha512-tVa97+fHO0hROVpN+lmCR6H26NaQ2eq8uc2zrdsaW7XkTOyiCPSIb1oRkWP4jBBkAs73oHBhP+KvpumRhnzodw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/transformer-js@2.15.4': + resolution: {integrity: sha512-HX76PalPjqCLmXJnuSeMr2km8WlnUsW8oaRZ6FuZtSo9QD8BqIcwKGxSbIy9JHkObBgmrMOVpGtYrJM4/BlYbg==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} peerDependencies: - '@parcel/core': ^2.15.0 + '@parcel/core': ^2.15.4 - '@parcel/transformer-json@2.15.0': - resolution: {integrity: sha512-TPv3xz8JmYpzEAeeDrJCxQ1cqO8dSjeI4MDjdrr5KAHNCZZhb1s2iFH7lXMFAkUZlR1BbUfMLUvCQsu4RFwAdw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/transformer-json@2.15.4': + resolution: {integrity: sha512-1ASeOSH3gPeaXyy/TZ7ce2TOfJ3ZeK5SBnDs+MM8LFcQsTwdRJKjX/4Qq9RgtMRryYAGHgMa09Gvp9FuFRyd+w==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/transformer-node@2.15.0': - resolution: {integrity: sha512-Nu8rBn4SkP2cMJ+iZYQQGW+OmgFPQs4eaAWf0x0ejosjsS32ZVL70WhsnqCDa2DLq3Oeo2Zyeugd0Hz7DvvsDw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/transformer-node@2.15.4': + resolution: {integrity: sha512-zV5jvZA971eQMcFtaWZkW1UfAH/G6XVM/87oJ2B4ip9o9aKUWIl296rrfg2xWxUQyPhy11B17CJ6b8NgieqqrQ==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/transformer-postcss@2.15.0': - resolution: {integrity: sha512-N6DrPK34RfYoYQEah9Gp6SdzTxzBuOK2/ZjkjcAoyEBT2Ong1JtQUIW75Rw3Wdktd8Yez21Ez+fLseAHuXZMDw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/transformer-postcss@2.15.4': + resolution: {integrity: sha512-cNueSpOj3ulmMX85xr9clh/t0+mzVE+Q3H7Cf/OammqUkG/xjmilq4q7ZTgQFyUtUdWpE9LWWHojbJuz6k2Ulw==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/transformer-posthtml@2.15.0': - resolution: {integrity: sha512-7941lzoIa4XOzORCJ9vDjfkhgz92PaE6MS/eCgHYTaFYUMWZ2KQw0U3ow8lt0p2kqDqFWOXB4P8qA+QirNdAnw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/transformer-posthtml@2.15.4': + resolution: {integrity: sha512-dETI+CeKMwu5Dpvu8BrQtex6nwzbNWKQkXseiM5x6+Wf3j9RD2NVpAMBRMjLkw1XlC9Whz1egxLSgKlMKbjg0w==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/transformer-raw@2.15.0': - resolution: {integrity: sha512-06xJEXDF9YX5ffm+MKvQJIXpFqx2G6RND6L091L/BmLl+FH2SNYKO3RZ4rIx8TbkjyuBnE+awRh9xl7AiLIjaA==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/transformer-raw@2.15.4': + resolution: {integrity: sha512-pY2j09UCW2v1fwQtVLlCztSdPOxhq0YcWmTHCk/mRp8zuUR+eyHgsz48FrUxRF7cr/EBjc0zlFcregRMRcaTMg==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/transformer-react-refresh-wrap@2.15.0': - resolution: {integrity: sha512-I108zq+ZwQrGXgkbdIXLW3VbUQhW0gjACiHVEXM380wWm/44bbrGLbD6VMupq5svP2Y5sKkopI9zzjuYUHplHw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/transformer-react-refresh-wrap@2.15.4': + resolution: {integrity: sha512-MgoQrV8+BVjrczAns5ZZbTERGB3/U4MaCBmbg3CuiTiIyS8IJQnGi+OhYRdKAB4NlsgpMZ5T2JrRbQUIm9MM8Q==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/transformer-svg@2.15.0': - resolution: {integrity: sha512-pbhbkxM4mWjH4kpg8F+0xmHbXNCTavJ4DzrCoYgLZszZKYMhOYQZZ/uHkx4wOZ+b3n4iPe4QDlByYkh0QACxbw==} - engines: {node: '>= 16.0.0', parcel: ^2.15.0} + '@parcel/transformer-sass@2.15.4': + resolution: {integrity: sha512-o7rPDdId5tpx/riTzu0O3zpyt24ORrVdAxW6k2YN2xGrvStfnQHxKjrSiEFDUMMzuikcW7Ed+uqPk046DK3m8w==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/types-internal@2.15.0': - resolution: {integrity: sha512-N0p622dZx84OPoxSoz5YfnVJMXAoQfcHI+qp535J/Uv6UAbcsimKl9NPKefrLOHgSKlTTJPiDbWSMOVrPvyr6w==} + '@parcel/transformer-svg@2.15.4': + resolution: {integrity: sha512-Q22e0VRbx62VXFlvJWIlc8ihlLaPQgtnAZz5E1/+ojiNb+k0PmIRjNJclVWPF6IdCsLO5tnGfUOaXe2OnZz28Q==} + engines: {node: '>= 16.0.0', parcel: ^2.15.4} - '@parcel/types@2.15.0': - resolution: {integrity: sha512-BtAeK/mTQMjbgyo8r1jM1d+dcnEowErHH/Eb/95Agxi7YHpfnNP2oR8cC2yZbevU9FCXnSJ2f6vZc4NGT+nqlA==} + '@parcel/types-internal@2.15.4': + resolution: {integrity: sha512-kl5QEZ8PTWRvMkwmk7IG3VpP/5/MSGwt9Nrj9ctXLdZkDdXZpK7IbXAthLQ4zrByMaqZULL2IyDuBqBgfuAqlQ==} - '@parcel/utils@2.15.0': - resolution: {integrity: sha512-Xir0/9UvUvMF8iRnARDdzzlEokDAcrsxj6aQUbYP3ZXV/l6/6eMRuSXZ32x6lUzOTHxukKMJA42imWUg6x38qg==} + '@parcel/types@2.15.4': + resolution: {integrity: sha512-fS3UMMinLtzn/NTSx/qx38saBgRniylldh0XZEUcGeME4D2Llu/QlLv+YZ/LJqrFci3fPRM+YAn2K+JT/u+/0w==} + + '@parcel/utils@2.15.4': + resolution: {integrity: sha512-29m09sfPx0GHnmy1kkZ5XezprepdFGKKKUEJkyiYA4ERf55jjdnU2/GP4sWlZXxjh2Y+JFoCAFlCamEClq/8eA==} engines: {node: '>= 16.0.0'} '@parcel/watcher-android-arm64@2.5.1': @@ -466,77 +473,77 @@ packages: resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} - '@parcel/workers@2.15.0': - resolution: {integrity: sha512-OAtL9bvDzvIS+9uNMjnf0b6Ri2m2r8Wa3Bxr8SVnjX6J5SWdOPdVR1MqwCsFF+ZeOngaSEFFbe/czHLfgc0Vnw==} + '@parcel/workers@2.15.4': + resolution: {integrity: sha512-wZ/5/mfjs5aeqhXY0c6fwuaBFeNpOXoOq2CKPSMDXt+GX2u/9/1bpVxN9XeGTAJO+ZD++CLq0hyzTnIHy58nyw==} engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.15.0 + '@parcel/core': ^2.15.4 '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@swc/core-darwin-arm64@1.11.24': - resolution: {integrity: sha512-dhtVj0PC1APOF4fl5qT2neGjRLgHAAYfiVP8poJelhzhB/318bO+QCFWAiimcDoyMgpCXOhTp757gnoJJrheWA==} + '@swc/core-darwin-arm64@1.12.11': + resolution: {integrity: sha512-J19Jj9Y5x/N0loExH7W0OI9OwwoVyxutDdkyq1o/kgXyBqmmzV7Y/Q9QekI2Fm/qc5mNeAdP7aj4boY4AY/JPw==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.11.24': - resolution: {integrity: sha512-H/3cPs8uxcj2Fe3SoLlofN5JG6Ny5bl8DuZ6Yc2wr7gQFBmyBkbZEz+sPVgsID7IXuz7vTP95kMm1VL74SO5AQ==} + '@swc/core-darwin-x64@1.12.11': + resolution: {integrity: sha512-PTuUQrfStQ6cjW+uprGO2lpQHy84/l0v+GqRqq8s/jdK55rFRjMfCeyf6FAR0l6saO5oNOQl+zWR1aNpj8pMQw==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.11.24': - resolution: {integrity: sha512-PHJgWEpCsLo/NGj+A2lXZ2mgGjsr96ULNW3+T3Bj2KTc8XtMUkE8tmY2Da20ItZOvPNC/69KroU7edyo1Flfbw==} + '@swc/core-linux-arm-gnueabihf@1.12.11': + resolution: {integrity: sha512-poxBq152HsupOtnZilenvHmxZ9a8SRj4LtfxUnkMDNOGrZR9oxbQNwEzNKfi3RXEcXz+P8c0Rai1ubBazXv8oQ==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.11.24': - resolution: {integrity: sha512-C2FJb08+n5SD4CYWCTZx1uR88BN41ZieoHvI8A55hfVf2woT8+6ZiBzt74qW2g+ntZ535Jts5VwXAKdu41HpBg==} + '@swc/core-linux-arm64-gnu@1.12.11': + resolution: {integrity: sha512-y1HNamR/D0Hc8xIE910ysyLe269UYiGaQPoLjQS0phzWFfWdMj9bHM++oydVXZ4RSWycO7KyJ3uvw4NilvyMKQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.11.24': - resolution: {integrity: sha512-ypXLIdszRo0re7PNNaXN0+2lD454G8l9LPK/rbfRXnhLWDBPURxzKlLlU/YGd2zP98wPcVooMmegRSNOKfvErw==} + '@swc/core-linux-arm64-musl@1.12.11': + resolution: {integrity: sha512-LlBxPh/32pyQsu2emMEOFRm7poEFLsw12Y1mPY7FWZiZeptomKSOSHRzKDz9EolMiV4qhK1caP1lvW4vminYgQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.11.24': - resolution: {integrity: sha512-IM7d+STVZD48zxcgo69L0yYptfhaaE9cMZ+9OoMxirNafhKKXwoZuufol1+alEFKc+Wbwp+aUPe/DeWC/Lh3dg==} + '@swc/core-linux-x64-gnu@1.12.11': + resolution: {integrity: sha512-bOjiZB8O/1AzHkzjge1jqX62HGRIpOHqFUrGPfAln/NC6NR+Z2A78u3ixV7k5KesWZFhCV0YVGJL+qToL27myA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.11.24': - resolution: {integrity: sha512-DZByJaMVzSfjQKKQn3cqSeqwy6lpMaQDQQ4HPlch9FWtDx/dLcpdIhxssqZXcR2rhaQVIaRQsCqwV6orSDGAGw==} + '@swc/core-linux-x64-musl@1.12.11': + resolution: {integrity: sha512-4dzAtbT/m3/UjF045+33gLiHd8aSXJDoqof7gTtu4q0ZyAf7XJ3HHspz+/AvOJLVo4FHHdFcdXhmo/zi1nFn8A==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.11.24': - resolution: {integrity: sha512-Q64Ytn23y9aVDKN5iryFi8mRgyHw3/kyjTjT4qFCa8AEb5sGUuSj//AUZ6c0J7hQKMHlg9do5Etvoe61V98/JQ==} + '@swc/core-win32-arm64-msvc@1.12.11': + resolution: {integrity: sha512-h8HiwBZErKvCAmjW92JvQp0iOqm6bncU4ac5jxBGkRApabpUenNJcj3h2g5O6GL5K6T9/WhnXE5gyq/s1fhPQg==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.11.24': - resolution: {integrity: sha512-9pKLIisE/Hh2vJhGIPvSoTK4uBSPxNVyXHmOrtdDot4E1FUUI74Vi8tFdlwNbaj8/vusVnb8xPXsxF1uB0VgiQ==} + '@swc/core-win32-ia32-msvc@1.12.11': + resolution: {integrity: sha512-1pwr325mXRNUhxTtXmx1IokV5SiRL+6iDvnt3FRXj+X5UvXXKtg2zeyftk+03u8v8v8WUr5I32hIypVJPTNxNg==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.11.24': - resolution: {integrity: sha512-sybnXtOsdB+XvzVFlBVGgRHLqp3yRpHK7CrmpuDKszhj/QhmsaZzY/GHSeALlMtLup13M0gqbcQvsTNlAHTg3w==} + '@swc/core-win32-x64-msvc@1.12.11': + resolution: {integrity: sha512-5gggWo690Gvs7XiPxAmb5tHwzB9RTVXUV7AWoGb6bmyUd1OXYaebQF0HAOtade5jIoNhfQMQJ7QReRgt/d2jAA==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.11.24': - resolution: {integrity: sha512-MaQEIpfcEMzx3VWWopbofKJvaraqmL6HbLlw2bFZ7qYqYw3rkhM0cQVEgyzbHtTWwCwPMFZSC2DUbhlZgrMfLg==} + '@swc/core@1.12.11': + resolution: {integrity: sha512-P3GM+0lqjFctcp5HhR9mOcvLSX3SptI9L1aux0Fuvgt8oH4f92rCUrkodAa0U2ktmdjcyIiG37xg2mb/dSCYSA==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -550,8 +557,8 @@ packages: '@swc/helpers@0.5.17': resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} - '@swc/types@0.1.21': - resolution: {integrity: sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==} + '@swc/types@0.1.23': + resolution: {integrity: sha512-u1iIVZV9Q0jxY+yM2vw/hZGDNudsN85bBpTqzAQ9rzkxW9D+e3aEM4Han+ow518gSewkXgjmEK0BD79ZcNVgPw==} ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -563,8 +570,8 @@ packages: bootstrap-icons@1.13.1: resolution: {integrity: sha512-ijombt4v6bv5CLeXvRWKy7CuM3TRTuPEuGaGKvTV5cz65rQSY8RQ2JcHt6b90cBBAC7s8fsf2EkQDldzCoXUjw==} - bootstrap@5.3.6: - resolution: {integrity: sha512-jX0GAcRzvdwISuvArXn3m7KZscWWFAf1MKBcnzaN02qWMb3jpMoUX4/qgeiGzqyIb4ojulRzs89UCUmGcFSzTA==} + bootstrap@5.3.7: + resolution: {integrity: sha512-7KgiD8UHjfcPBHEpDNg+zGz8L3LqR3GVwqZiBRFX04a1BCArZOz1r2kjly2HQ0WokqTO0v1nF+QAt8dsW4lKlw==} peerDependencies: '@popperjs/core': ^2.11.8 @@ -572,18 +579,22 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.24.5: - resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} + browserslist@4.25.1: + resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - caniuse-lite@1.0.30001717: - resolution: {integrity: sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==} + caniuse-lite@1.0.30001727: + resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} @@ -616,12 +627,12 @@ packages: resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} engines: {node: '>=12'} - dotenv@16.5.0: - resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} - electron-to-chromium@1.5.151: - resolution: {integrity: sha512-Rl6uugut2l9sLojjS4H4SAr3A4IgACMLgpuEMPYCVcKydzfyPrn5absNRju38IhQOf/NwjJY8OGWjlteqYeBCA==} + electron-to-chromium@1.5.182: + resolution: {integrity: sha512-Lv65Btwv9W4J9pyODI6EWpdnhfvrve/us5h1WspW8B2Fb0366REPtY3hX7ounk1CkV/TBjWCEvCBBbYbmV0qCA==} escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} @@ -643,6 +654,9 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + immutable@5.1.3: + resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -663,68 +677,68 @@ packages: engines: {node: '>=6'} hasBin: true - lightningcss-darwin-arm64@1.30.0: - resolution: {integrity: sha512-L9lhvW4rTHL6vaG1WU3Itj0ivtdBuwu7ufrKEbijRCPhS1pt1haXEXI8h9g73qCQsOaYs1GCc9chvSgxPmhpRA==} + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.30.0: - resolution: {integrity: sha512-+qNst+L3GGwG5LypEFTmDUOtNarQVh717Enk4AfmKfwlTrKCSe9kAiPyK7ces269a+f0jNSa8Uww8WwGFXzt8w==} + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.30.0: - resolution: {integrity: sha512-/sfAWALScgggjjk5ZlmGdpFELwGPIwzAdfcBJcT6UTgQoDHzQ4aP41XTq3N4LL01U9dsJp6uAvCvmHX7snqTdg==} + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.30.0: - resolution: {integrity: sha512-3B5val/f61unLgfZHEfkZGzunlyyL76l8xRoxFx+G0uwxK7rvaFcnkyf6k4Zto2STVj05FsLs+aTZoTqslPaug==} + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.30.0: - resolution: {integrity: sha512-Q45+fvm7eAAmorsEzc1ZBwajGnXDocB/nRaSldpHQa36QbP93GrzmBqfSdi2pEks2yXMxST4yznio24Q6en7Sg==} + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.30.0: - resolution: {integrity: sha512-RNZNW/AyKax8wWR4xMKoyAb40dqhzOtnAw4knjbyxJUUEL0wzBEXO3k44AS3UFRjxTyd/s46adVQXxE/vOaSgg==} + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-x64-gnu@1.30.0: - resolution: {integrity: sha512-ExVnSepsAyQb547i7SvPhS0SrgIDUjA1dYTT0DNFt/YsqfKhkxg405VDtMoV2MQGAyoEQIub+YK5NQo9Lw7IzQ==} + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.30.0: - resolution: {integrity: sha512-e/nHeX5SAEcfAzyLob5H1Jhm8uHLKwpOIHzcURKnXTMFdBqIDOsETMhmcB5AGDqsr6Q5D9u0QVswDdRo+btSgg==} + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-win32-arm64-msvc@1.30.0: - resolution: {integrity: sha512-Fd9XejM6GPHx5rv7I8aqsc8mBHs+TpHEVDalP5PVP986tF6rmiVfwQzM2Ic4Cn0rXbS3z95Ru8x50hnzfR2GDA==} + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.30.0: - resolution: {integrity: sha512-2BhpVDbNa+HpXPu63EYfcsL2TCBKLeuMckx4d6UZCzaj1KVuSRXi6r7H3rUeaADuX5NB/BT2smP4HI3s6I1/Ag==} + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.30.0: - resolution: {integrity: sha512-uuurN2onfoNwQtaWnX9UYLz6DlZHnUd88SceOXDAQzQ5+FJ+ELPgcC/EVtRJoFOveXe44zRE+foh2KMD/vQxqQ==} + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} engines: {node: '>= 12.0.0'} lmdb@2.8.5: @@ -739,8 +753,8 @@ packages: resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} hasBin: true - msgpackr@1.11.2: - resolution: {integrity: sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==} + msgpackr@1.11.4: + resolution: {integrity: sha512-uaff7RG9VIC4jacFW9xzL3jc0iM32DNHe4jYVycBcjUePT/Klnfj7pqtWJt9khvDFizmjN2TlYniYmSS2LIaZg==} node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} @@ -762,11 +776,11 @@ packages: nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - ordered-binary@1.5.3: - resolution: {integrity: sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==} + ordered-binary@1.6.0: + resolution: {integrity: sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ==} - parcel@2.15.0: - resolution: {integrity: sha512-CYAykhWLvCsYoTfB21azLmQjKzrPV3xUX4FgmOicbzXDz7cPxlsdQs9R8S5510fVsW7OLPG6ZN4cTzRbhjj8Tw==} + parcel@2.15.4: + resolution: {integrity: sha512-eZHQ/omuQ7yBYB9XezyzSqhc826oy/uhloCNiej1CTZ+twAqJVtp4MRvTGMcivKhE+WE8QkYD5XkJHLLQsJQcg==} engines: {node: '>= 16.0.0'} hasBin: true @@ -785,8 +799,8 @@ packages: peerDependencies: prettier: ^3.0.0 - prettier@3.5.3: - resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + prettier@3.6.2: + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} engines: {node: '>=14'} hasBin: true @@ -794,17 +808,30 @@ packages: resolution: {integrity: sha512-FPvF2XxTSikpJxcr+bHut2H4gJ17+18Uy20D5/F+SKzFap62R3cM5wH6b8WN3LyGSYeQilLEcJcR1fjBSI2S1A==} engines: {node: '>=0.10.0'} + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + sass@1.89.2: + resolution: {integrity: sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==} + engines: {node: '>=14.0.0'} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} hasBin: true + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -887,576 +914,585 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true - '@parcel/bundler-default@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/bundler-default@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/diagnostic': 2.15.0 - '@parcel/graph': 3.5.0 - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.0 - '@parcel/utils': 2.15.0 + '@parcel/diagnostic': 2.15.4 + '@parcel/graph': 3.5.4 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.4 + '@parcel/utils': 2.15.4 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/cache@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/cache@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/core': 2.15.0(@swc/helpers@0.5.17) - '@parcel/fs': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/logger': 2.15.0 - '@parcel/utils': 2.15.0 + '@parcel/core': 2.15.4(@swc/helpers@0.5.17) + '@parcel/fs': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/logger': 2.15.4 + '@parcel/utils': 2.15.4 lmdb: 2.8.5 transitivePeerDependencies: - napi-wasm - '@parcel/codeframe@2.15.0': + '@parcel/codeframe@2.15.4': dependencies: chalk: 4.1.2 - '@parcel/compressor-raw@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/compressor-raw@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/config-default@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)': + '@parcel/config-default@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)': dependencies: - '@parcel/bundler-default': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/compressor-raw': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/core': 2.15.0(@swc/helpers@0.5.17) - '@parcel/namer-default': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/optimizer-css': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/optimizer-html': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/optimizer-image': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/optimizer-svg': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/optimizer-swc': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) - '@parcel/packager-css': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/packager-html': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/packager-js': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/packager-raw': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/packager-svg': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/packager-wasm': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/reporter-dev-server': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/resolver-default': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/runtime-browser-hmr': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/runtime-js': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/runtime-rsc': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/runtime-service-worker': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/transformer-babel': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/transformer-css': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/transformer-html': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/transformer-image': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/transformer-js': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/transformer-json': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/transformer-node': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/transformer-postcss': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/transformer-posthtml': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/transformer-raw': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/transformer-react-refresh-wrap': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/transformer-svg': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/bundler-default': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/compressor-raw': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/core': 2.15.4(@swc/helpers@0.5.17) + '@parcel/namer-default': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/optimizer-css': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/optimizer-html': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/optimizer-image': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/optimizer-svg': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/optimizer-swc': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) + '@parcel/packager-css': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/packager-html': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/packager-js': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/packager-raw': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/packager-svg': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/packager-wasm': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/reporter-dev-server': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/resolver-default': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/runtime-browser-hmr': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/runtime-js': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/runtime-rsc': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/runtime-service-worker': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/transformer-babel': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/transformer-css': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/transformer-html': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/transformer-image': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/transformer-js': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/transformer-json': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/transformer-node': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/transformer-postcss': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/transformer-posthtml': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/transformer-raw': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/transformer-react-refresh-wrap': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/transformer-svg': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@swc/helpers' - napi-wasm - '@parcel/core@2.15.0(@swc/helpers@0.5.17)': + '@parcel/core@2.15.4(@swc/helpers@0.5.17)': dependencies: '@mischnic/json-sourcemap': 0.1.1 - '@parcel/cache': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/diagnostic': 2.15.0 - '@parcel/events': 2.15.0 - '@parcel/feature-flags': 2.15.0 - '@parcel/fs': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/graph': 3.5.0 - '@parcel/logger': 2.15.0 - '@parcel/package-manager': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/profiler': 2.15.0 - '@parcel/rust': 2.15.0 + '@parcel/cache': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/diagnostic': 2.15.4 + '@parcel/events': 2.15.4 + '@parcel/feature-flags': 2.15.4 + '@parcel/fs': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/graph': 3.5.4 + '@parcel/logger': 2.15.4 + '@parcel/package-manager': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/profiler': 2.15.4 + '@parcel/rust': 2.15.4 '@parcel/source-map': 2.1.1 - '@parcel/types': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.0 - '@parcel/workers': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/types': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.4 + '@parcel/workers': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) base-x: 3.0.11 - browserslist: 4.24.5 + browserslist: 4.25.1 clone: 2.1.2 - dotenv: 16.5.0 + dotenv: 16.6.1 dotenv-expand: 11.0.7 json5: 2.2.3 - msgpackr: 1.11.2 + msgpackr: 1.11.4 nullthrows: 1.1.1 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - '@swc/helpers' - napi-wasm - '@parcel/diagnostic@2.15.0': + '@parcel/diagnostic@2.15.4': dependencies: '@mischnic/json-sourcemap': 0.1.1 nullthrows: 1.1.1 - '@parcel/error-overlay@2.15.0': {} + '@parcel/error-overlay@2.15.4': {} - '@parcel/events@2.15.0': {} + '@parcel/events@2.15.4': {} - '@parcel/feature-flags@2.15.0': {} + '@parcel/feature-flags@2.15.4': {} - '@parcel/fs@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/fs@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/core': 2.15.0(@swc/helpers@0.5.17) - '@parcel/feature-flags': 2.15.0 - '@parcel/rust': 2.15.0 - '@parcel/types-internal': 2.15.0 - '@parcel/utils': 2.15.0 + '@parcel/core': 2.15.4(@swc/helpers@0.5.17) + '@parcel/feature-flags': 2.15.4 + '@parcel/rust': 2.15.4 + '@parcel/types-internal': 2.15.4 + '@parcel/utils': 2.15.4 '@parcel/watcher': 2.5.1 - '@parcel/workers': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/workers': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) transitivePeerDependencies: - napi-wasm - '@parcel/graph@3.5.0': + '@parcel/graph@3.5.4': dependencies: - '@parcel/feature-flags': 2.15.0 + '@parcel/feature-flags': 2.15.4 nullthrows: 1.1.1 - '@parcel/logger@2.15.0': + '@parcel/logger@2.15.4': dependencies: - '@parcel/diagnostic': 2.15.0 - '@parcel/events': 2.15.0 + '@parcel/diagnostic': 2.15.4 + '@parcel/events': 2.15.4 - '@parcel/markdown-ansi@2.15.0': + '@parcel/markdown-ansi@2.15.4': dependencies: chalk: 4.1.2 - '@parcel/namer-default@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/namer-default@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/diagnostic': 2.15.0 - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/diagnostic': 2.15.4 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/node-resolver-core@3.6.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/node-resolver-core@3.6.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: '@mischnic/json-sourcemap': 0.1.1 - '@parcel/diagnostic': 2.15.0 - '@parcel/fs': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.0 - '@parcel/utils': 2.15.0 + '@parcel/diagnostic': 2.15.4 + '@parcel/fs': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.4 + '@parcel/utils': 2.15.4 nullthrows: 1.1.1 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/optimizer-css@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/optimizer-css@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/diagnostic': 2.15.0 - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/diagnostic': 2.15.4 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.15.0 - browserslist: 4.24.5 - lightningcss: 1.30.0 + '@parcel/utils': 2.15.4 + browserslist: 4.25.1 + lightningcss: 1.30.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/optimizer-html@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/optimizer-html@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.0 - '@parcel/utils': 2.15.0 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.4 + '@parcel/utils': 2.15.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/optimizer-image@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/optimizer-image@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/core': 2.15.0(@swc/helpers@0.5.17) - '@parcel/diagnostic': 2.15.0 - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.0 - '@parcel/utils': 2.15.0 - '@parcel/workers': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/core': 2.15.4(@swc/helpers@0.5.17) + '@parcel/diagnostic': 2.15.4 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.4 + '@parcel/utils': 2.15.4 + '@parcel/workers': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) transitivePeerDependencies: - napi-wasm - '@parcel/optimizer-svg@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/optimizer-svg@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.0 - '@parcel/utils': 2.15.0 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.4 + '@parcel/utils': 2.15.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/optimizer-swc@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)': + '@parcel/optimizer-swc@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)': dependencies: - '@parcel/diagnostic': 2.15.0 - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/diagnostic': 2.15.4 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.15.0 - '@swc/core': 1.11.24(@swc/helpers@0.5.17) + '@parcel/utils': 2.15.4 + '@swc/core': 1.12.11(@swc/helpers@0.5.17) nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - '@swc/helpers' - napi-wasm - '@parcel/package-manager@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)': + '@parcel/package-manager@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)': dependencies: - '@parcel/core': 2.15.0(@swc/helpers@0.5.17) - '@parcel/diagnostic': 2.15.0 - '@parcel/fs': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/logger': 2.15.0 - '@parcel/node-resolver-core': 3.6.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/types': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.0 - '@parcel/workers': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@swc/core': 1.11.24(@swc/helpers@0.5.17) - semver: 7.7.1 + '@parcel/core': 2.15.4(@swc/helpers@0.5.17) + '@parcel/diagnostic': 2.15.4 + '@parcel/fs': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/logger': 2.15.4 + '@parcel/node-resolver-core': 3.6.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/types': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.4 + '@parcel/workers': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@swc/core': 1.12.11(@swc/helpers@0.5.17) + semver: 7.7.2 transitivePeerDependencies: - '@swc/helpers' - napi-wasm - '@parcel/packager-css@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/packager-css@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/diagnostic': 2.15.0 - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/diagnostic': 2.15.4 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.15.0 - lightningcss: 1.30.0 + '@parcel/utils': 2.15.4 + lightningcss: 1.30.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/packager-html@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/packager-html@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.0 - '@parcel/types': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.0 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.4 + '@parcel/types': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/packager-js@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/packager-js@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/diagnostic': 2.15.0 - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.0 + '@parcel/diagnostic': 2.15.4 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.4 '@parcel/source-map': 2.1.1 - '@parcel/types': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.0 + '@parcel/types': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.4 globals: 13.24.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/packager-raw@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/packager-raw@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/packager-svg@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/packager-svg@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.0 - '@parcel/types': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.0 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.4 + '@parcel/types': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/packager-wasm@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/packager-wasm@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/plugin@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/plugin@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/types': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/types': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/profiler@2.15.0': + '@parcel/profiler@2.15.4': dependencies: - '@parcel/diagnostic': 2.15.0 - '@parcel/events': 2.15.0 - '@parcel/types-internal': 2.15.0 + '@parcel/diagnostic': 2.15.4 + '@parcel/events': 2.15.4 + '@parcel/types-internal': 2.15.4 chrome-trace-event: 1.0.4 - '@parcel/reporter-cli@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/reporter-cli@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/types': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.0 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/types': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.4 chalk: 4.1.2 term-size: 2.2.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/reporter-dev-server@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/reporter-dev-server@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/codeframe': 2.15.0 - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/codeframe': 2.15.4 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.15.0 + '@parcel/utils': 2.15.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/reporter-tracer@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/reporter-tracer@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.0 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.4 chrome-trace-event: 1.0.4 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/resolver-default@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/resolver-default@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/node-resolver-core': 3.6.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/node-resolver-core': 3.6.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/runtime-browser-hmr@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/runtime-browser-hmr@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.0 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/runtime-js@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/runtime-js@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/diagnostic': 2.15.0 - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.0 + '@parcel/diagnostic': 2.15.4 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.4 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/runtime-rsc@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/runtime-rsc@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.0 - '@parcel/utils': 2.15.0 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.4 + '@parcel/utils': 2.15.4 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/runtime-service-worker@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/runtime-service-worker@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.0 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.4 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/rust-darwin-arm64@2.15.0': + '@parcel/rust-darwin-arm64@2.15.4': optional: true - '@parcel/rust-darwin-x64@2.15.0': + '@parcel/rust-darwin-x64@2.15.4': optional: true - '@parcel/rust-linux-arm-gnueabihf@2.15.0': + '@parcel/rust-linux-arm-gnueabihf@2.15.4': optional: true - '@parcel/rust-linux-arm64-gnu@2.15.0': + '@parcel/rust-linux-arm64-gnu@2.15.4': optional: true - '@parcel/rust-linux-arm64-musl@2.15.0': + '@parcel/rust-linux-arm64-musl@2.15.4': optional: true - '@parcel/rust-linux-x64-gnu@2.15.0': + '@parcel/rust-linux-x64-gnu@2.15.4': optional: true - '@parcel/rust-linux-x64-musl@2.15.0': + '@parcel/rust-linux-x64-musl@2.15.4': optional: true - '@parcel/rust-win32-x64-msvc@2.15.0': + '@parcel/rust-win32-x64-msvc@2.15.4': optional: true - '@parcel/rust@2.15.0': + '@parcel/rust@2.15.4': optionalDependencies: - '@parcel/rust-darwin-arm64': 2.15.0 - '@parcel/rust-darwin-x64': 2.15.0 - '@parcel/rust-linux-arm-gnueabihf': 2.15.0 - '@parcel/rust-linux-arm64-gnu': 2.15.0 - '@parcel/rust-linux-arm64-musl': 2.15.0 - '@parcel/rust-linux-x64-gnu': 2.15.0 - '@parcel/rust-linux-x64-musl': 2.15.0 - '@parcel/rust-win32-x64-msvc': 2.15.0 + '@parcel/rust-darwin-arm64': 2.15.4 + '@parcel/rust-darwin-x64': 2.15.4 + '@parcel/rust-linux-arm-gnueabihf': 2.15.4 + '@parcel/rust-linux-arm64-gnu': 2.15.4 + '@parcel/rust-linux-arm64-musl': 2.15.4 + '@parcel/rust-linux-x64-gnu': 2.15.4 + '@parcel/rust-linux-x64-musl': 2.15.4 + '@parcel/rust-win32-x64-msvc': 2.15.4 '@parcel/source-map@2.1.1': dependencies: detect-libc: 1.0.3 - '@parcel/transformer-babel@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/transformer-babel@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/diagnostic': 2.15.0 - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/diagnostic': 2.15.4 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.15.0 - browserslist: 4.24.5 + '@parcel/utils': 2.15.4 + browserslist: 4.25.1 json5: 2.2.3 nullthrows: 1.1.1 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-css@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/transformer-css@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/diagnostic': 2.15.0 - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/diagnostic': 2.15.4 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.15.0 - browserslist: 4.24.5 - lightningcss: 1.30.0 + '@parcel/utils': 2.15.4 + browserslist: 4.25.1 + lightningcss: 1.30.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-html@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/transformer-html@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/diagnostic': 2.15.0 - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.0 + '@parcel/diagnostic': 2.15.4 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-image@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/transformer-image@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/core': 2.15.0(@swc/helpers@0.5.17) - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.0 - '@parcel/workers': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/core': 2.15.4(@swc/helpers@0.5.17) + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.4 + '@parcel/workers': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) nullthrows: 1.1.1 transitivePeerDependencies: - napi-wasm - '@parcel/transformer-js@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/transformer-js@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/core': 2.15.0(@swc/helpers@0.5.17) - '@parcel/diagnostic': 2.15.0 - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.0 + '@parcel/core': 2.15.4(@swc/helpers@0.5.17) + '@parcel/diagnostic': 2.15.4 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.4 '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.15.0 - '@parcel/workers': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.4 + '@parcel/workers': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) '@swc/helpers': 0.5.17 - browserslist: 4.24.5 + browserslist: 4.25.1 nullthrows: 1.1.1 regenerator-runtime: 0.14.1 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - napi-wasm - '@parcel/transformer-json@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/transformer-json@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) json5: 2.2.3 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-node@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/transformer-node@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-postcss@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/transformer-postcss@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/diagnostic': 2.15.0 - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.0 - '@parcel/utils': 2.15.0 + '@parcel/diagnostic': 2.15.4 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.4 + '@parcel/utils': 2.15.4 clone: 2.1.2 nullthrows: 1.1.1 postcss-value-parser: 4.2.0 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-posthtml@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/transformer-posthtml@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.0 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.4 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-raw@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/transformer-raw@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-react-refresh-wrap@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/transformer-react-refresh-wrap@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/error-overlay': 2.15.0 - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.0 + '@parcel/error-overlay': 2.15.4 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.4 react-refresh: 0.16.0 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/transformer-svg@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/transformer-sass@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/diagnostic': 2.15.0 - '@parcel/plugin': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/rust': 2.15.0 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/source-map': 2.1.1 + sass: 1.89.2 transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/types-internal@2.15.0': + '@parcel/transformer-svg@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/diagnostic': 2.15.0 - '@parcel/feature-flags': 2.15.0 + '@parcel/diagnostic': 2.15.4 + '@parcel/plugin': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/rust': 2.15.4 + transitivePeerDependencies: + - '@parcel/core' + - napi-wasm + + '@parcel/types-internal@2.15.4': + dependencies: + '@parcel/diagnostic': 2.15.4 + '@parcel/feature-flags': 2.15.4 '@parcel/source-map': 2.1.1 utility-types: 3.11.0 - '@parcel/types@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/types@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/types-internal': 2.15.0 - '@parcel/workers': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) + '@parcel/types-internal': 2.15.4 + '@parcel/workers': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) transitivePeerDependencies: - '@parcel/core' - napi-wasm - '@parcel/utils@2.15.0': + '@parcel/utils@2.15.4': dependencies: - '@parcel/codeframe': 2.15.0 - '@parcel/diagnostic': 2.15.0 - '@parcel/logger': 2.15.0 - '@parcel/markdown-ansi': 2.15.0 - '@parcel/rust': 2.15.0 + '@parcel/codeframe': 2.15.4 + '@parcel/diagnostic': 2.15.4 + '@parcel/logger': 2.15.4 + '@parcel/markdown-ansi': 2.15.4 + '@parcel/rust': 2.15.4 '@parcel/source-map': 2.1.1 chalk: 4.1.2 nullthrows: 1.1.1 @@ -1523,65 +1559,65 @@ snapshots: '@parcel/watcher-win32-ia32': 2.5.1 '@parcel/watcher-win32-x64': 2.5.1 - '@parcel/workers@2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))': + '@parcel/workers@2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))': dependencies: - '@parcel/core': 2.15.0(@swc/helpers@0.5.17) - '@parcel/diagnostic': 2.15.0 - '@parcel/logger': 2.15.0 - '@parcel/profiler': 2.15.0 - '@parcel/types-internal': 2.15.0 - '@parcel/utils': 2.15.0 + '@parcel/core': 2.15.4(@swc/helpers@0.5.17) + '@parcel/diagnostic': 2.15.4 + '@parcel/logger': 2.15.4 + '@parcel/profiler': 2.15.4 + '@parcel/types-internal': 2.15.4 + '@parcel/utils': 2.15.4 nullthrows: 1.1.1 transitivePeerDependencies: - napi-wasm '@popperjs/core@2.11.8': {} - '@swc/core-darwin-arm64@1.11.24': + '@swc/core-darwin-arm64@1.12.11': optional: true - '@swc/core-darwin-x64@1.11.24': + '@swc/core-darwin-x64@1.12.11': optional: true - '@swc/core-linux-arm-gnueabihf@1.11.24': + '@swc/core-linux-arm-gnueabihf@1.12.11': optional: true - '@swc/core-linux-arm64-gnu@1.11.24': + '@swc/core-linux-arm64-gnu@1.12.11': optional: true - '@swc/core-linux-arm64-musl@1.11.24': + '@swc/core-linux-arm64-musl@1.12.11': optional: true - '@swc/core-linux-x64-gnu@1.11.24': + '@swc/core-linux-x64-gnu@1.12.11': optional: true - '@swc/core-linux-x64-musl@1.11.24': + '@swc/core-linux-x64-musl@1.12.11': optional: true - '@swc/core-win32-arm64-msvc@1.11.24': + '@swc/core-win32-arm64-msvc@1.12.11': optional: true - '@swc/core-win32-ia32-msvc@1.11.24': + '@swc/core-win32-ia32-msvc@1.12.11': optional: true - '@swc/core-win32-x64-msvc@1.11.24': + '@swc/core-win32-x64-msvc@1.12.11': optional: true - '@swc/core@1.11.24(@swc/helpers@0.5.17)': + '@swc/core@1.12.11(@swc/helpers@0.5.17)': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.21 + '@swc/types': 0.1.23 optionalDependencies: - '@swc/core-darwin-arm64': 1.11.24 - '@swc/core-darwin-x64': 1.11.24 - '@swc/core-linux-arm-gnueabihf': 1.11.24 - '@swc/core-linux-arm64-gnu': 1.11.24 - '@swc/core-linux-arm64-musl': 1.11.24 - '@swc/core-linux-x64-gnu': 1.11.24 - '@swc/core-linux-x64-musl': 1.11.24 - '@swc/core-win32-arm64-msvc': 1.11.24 - '@swc/core-win32-ia32-msvc': 1.11.24 - '@swc/core-win32-x64-msvc': 1.11.24 + '@swc/core-darwin-arm64': 1.12.11 + '@swc/core-darwin-x64': 1.12.11 + '@swc/core-linux-arm-gnueabihf': 1.12.11 + '@swc/core-linux-arm64-gnu': 1.12.11 + '@swc/core-linux-arm64-musl': 1.12.11 + '@swc/core-linux-x64-gnu': 1.12.11 + '@swc/core-linux-x64-musl': 1.12.11 + '@swc/core-win32-arm64-msvc': 1.12.11 + '@swc/core-win32-ia32-msvc': 1.12.11 + '@swc/core-win32-x64-msvc': 1.12.11 '@swc/helpers': 0.5.17 '@swc/counter@0.1.3': {} @@ -1590,7 +1626,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@swc/types@0.1.21': + '@swc/types@0.1.23': dependencies: '@swc/counter': 0.1.3 @@ -1604,7 +1640,7 @@ snapshots: bootstrap-icons@1.13.1: {} - bootstrap@5.3.6(@popperjs/core@2.11.8): + bootstrap@5.3.7(@popperjs/core@2.11.8): dependencies: '@popperjs/core': 2.11.8 @@ -1612,20 +1648,24 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.24.5: + browserslist@4.25.1: dependencies: - caniuse-lite: 1.0.30001717 - electron-to-chromium: 1.5.151 + caniuse-lite: 1.0.30001727 + electron-to-chromium: 1.5.182 node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.24.5) + update-browserslist-db: 1.1.3(browserslist@4.25.1) - caniuse-lite@1.0.30001717: {} + caniuse-lite@1.0.30001727: {} chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + chrome-trace-event@1.0.4: {} clone@2.1.2: {} @@ -1644,11 +1684,11 @@ snapshots: dotenv-expand@11.0.7: dependencies: - dotenv: 16.5.0 + dotenv: 16.6.1 - dotenv@16.5.0: {} + dotenv@16.6.1: {} - electron-to-chromium@1.5.151: {} + electron-to-chromium@1.5.182: {} escalade@3.2.0: {} @@ -1664,6 +1704,8 @@ snapshots: has-flag@4.0.0: {} + immutable@5.1.3: {} + is-extglob@2.1.1: {} is-glob@4.0.3: @@ -1676,57 +1718,57 @@ snapshots: json5@2.2.3: {} - lightningcss-darwin-arm64@1.30.0: + lightningcss-darwin-arm64@1.30.1: optional: true - lightningcss-darwin-x64@1.30.0: + lightningcss-darwin-x64@1.30.1: optional: true - lightningcss-freebsd-x64@1.30.0: + lightningcss-freebsd-x64@1.30.1: optional: true - lightningcss-linux-arm-gnueabihf@1.30.0: + lightningcss-linux-arm-gnueabihf@1.30.1: optional: true - lightningcss-linux-arm64-gnu@1.30.0: + lightningcss-linux-arm64-gnu@1.30.1: optional: true - lightningcss-linux-arm64-musl@1.30.0: + lightningcss-linux-arm64-musl@1.30.1: optional: true - lightningcss-linux-x64-gnu@1.30.0: + lightningcss-linux-x64-gnu@1.30.1: optional: true - lightningcss-linux-x64-musl@1.30.0: + lightningcss-linux-x64-musl@1.30.1: optional: true - lightningcss-win32-arm64-msvc@1.30.0: + lightningcss-win32-arm64-msvc@1.30.1: optional: true - lightningcss-win32-x64-msvc@1.30.0: + lightningcss-win32-x64-msvc@1.30.1: optional: true - lightningcss@1.30.0: + lightningcss@1.30.1: dependencies: detect-libc: 2.0.4 optionalDependencies: - lightningcss-darwin-arm64: 1.30.0 - lightningcss-darwin-x64: 1.30.0 - lightningcss-freebsd-x64: 1.30.0 - lightningcss-linux-arm-gnueabihf: 1.30.0 - lightningcss-linux-arm64-gnu: 1.30.0 - lightningcss-linux-arm64-musl: 1.30.0 - lightningcss-linux-x64-gnu: 1.30.0 - lightningcss-linux-x64-musl: 1.30.0 - lightningcss-win32-arm64-msvc: 1.30.0 - lightningcss-win32-x64-msvc: 1.30.0 + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 lmdb@2.8.5: dependencies: - msgpackr: 1.11.2 + msgpackr: 1.11.4 node-addon-api: 6.1.0 node-gyp-build-optional-packages: 5.1.1 - ordered-binary: 1.5.3 + ordered-binary: 1.6.0 weak-lru-cache: 1.2.2 optionalDependencies: '@lmdb/lmdb-darwin-arm64': 2.8.5 @@ -1753,7 +1795,7 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 optional: true - msgpackr@1.11.2: + msgpackr@1.11.4: optionalDependencies: msgpackr-extract: 3.0.3 @@ -1774,22 +1816,22 @@ snapshots: nullthrows@1.1.1: {} - ordered-binary@1.5.3: {} + ordered-binary@1.6.0: {} - parcel@2.15.0(@swc/helpers@0.5.17): + parcel@2.15.4(@swc/helpers@0.5.17): dependencies: - '@parcel/config-default': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) - '@parcel/core': 2.15.0(@swc/helpers@0.5.17) - '@parcel/diagnostic': 2.15.0 - '@parcel/events': 2.15.0 - '@parcel/feature-flags': 2.15.0 - '@parcel/fs': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/logger': 2.15.0 - '@parcel/package-manager': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) - '@parcel/reporter-cli': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/reporter-dev-server': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/reporter-tracer': 2.15.0(@parcel/core@2.15.0(@swc/helpers@0.5.17)) - '@parcel/utils': 2.15.0 + '@parcel/config-default': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) + '@parcel/core': 2.15.4(@swc/helpers@0.5.17) + '@parcel/diagnostic': 2.15.4 + '@parcel/events': 2.15.4 + '@parcel/feature-flags': 2.15.4 + '@parcel/fs': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/logger': 2.15.4 + '@parcel/package-manager': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17))(@swc/helpers@0.5.17) + '@parcel/reporter-cli': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/reporter-dev-server': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/reporter-tracer': 2.15.4(@parcel/core@2.15.4(@swc/helpers@0.5.17)) + '@parcel/utils': 2.15.4 chalk: 4.1.2 commander: 12.1.0 get-port: 4.2.0 @@ -1803,19 +1845,31 @@ snapshots: postcss-value-parser@4.2.0: {} - prettier-plugin-jinja-template@2.1.0(prettier@3.5.3): + prettier-plugin-jinja-template@2.1.0(prettier@3.6.2): dependencies: - prettier: 3.5.3 + prettier: 3.6.2 - prettier@3.5.3: {} + prettier@3.6.2: {} react-refresh@0.16.0: {} + readdirp@4.1.2: {} + regenerator-runtime@0.14.1: {} safe-buffer@5.2.1: {} - semver@7.7.1: {} + sass@1.89.2: + dependencies: + chokidar: 4.0.3 + immutable: 5.1.3 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.1 + + semver@7.7.2: {} + + source-map-js@1.2.1: {} supports-color@7.2.0: dependencies: @@ -1831,9 +1885,9 @@ snapshots: type-fest@0.20.2: {} - update-browserslist-db@1.1.3(browserslist@4.24.5): + update-browserslist-db@1.1.3(browserslist@4.25.1): dependencies: - browserslist: 4.24.5 + browserslist: 4.25.1 escalade: 3.2.0 picocolors: 1.1.1 diff --git a/static/licenses.md b/static/licenses.md index e7effcf..68728f8 100644 --- a/static/licenses.md +++ b/static/licenses.md @@ -688,9 +688,9 @@ Public License instead of this License. But first, please read ## github.com/andybalholm/brotli * Name: github.com/andybalholm/brotli -* Version: v1.1.1 +* Version: v1.2.0 -* License: [MIT](https://github.com/andybalholm/brotli/blob/v1.1.1/LICENSE) +* License: [MIT](https://github.com/andybalholm/brotli/blob/v1.2.0/LICENSE) ``` @@ -785,9 +785,9 @@ SOFTWARE. ## github.com/brianvoe/gofakeit/v7 * Name: github.com/brianvoe/gofakeit/v7 -* Version: v7.2.1 +* Version: v7.3.0 -* License: [MIT](https://github.com/brianvoe/gofakeit/blob/v7.2.1/LICENSE.txt) +* License: [MIT](https://github.com/brianvoe/gofakeit/blob/v7.3.0/LICENSE.txt) ``` @@ -950,9 +950,9 @@ SOFTWARE. ## github.com/charmbracelet/log * Name: github.com/charmbracelet/log -* Version: v0.4.1 +* Version: v0.4.2 -* License: [MIT](https://github.com/charmbracelet/log/blob/v0.4.1/LICENSE) +* License: [MIT](https://github.com/charmbracelet/log/blob/v0.4.2/LICENSE) ``` @@ -983,9 +983,9 @@ SOFTWARE. ## github.com/charmbracelet/x/ansi * Name: github.com/charmbracelet/x/ansi -* Version: v0.9.2 +* Version: v0.9.3 -* License: [MIT](https://github.com/charmbracelet/x/blob/ansi/v0.9.2/ansi/LICENSE) +* License: [MIT](https://github.com/charmbracelet/x/blob/ansi/v0.9.3/ansi/LICENSE) ``` @@ -1629,77 +1629,6 @@ SOFTWARE. ``` -## github.com/glebarez/go-sqlite - -* Name: github.com/glebarez/go-sqlite -* Version: v1.22.0 - -* License: [BSD-3-Clause](https://github.com/glebarez/go-sqlite/blob/v1.22.0/LICENSE) - - -``` -Copyright (c) 2017 The Sqlite Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors -may be used to endorse or promote products derived from this software without -specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -``` - -## github.com/glebarez/sqlite - -* Name: github.com/glebarez/sqlite -* Version: v1.11.0 - -* License: [MIT](https://github.com/glebarez/sqlite/blob/v1.11.0/License) - - -``` -The MIT License (MIT) - -Copyright (c) 2013-NOW Jinzhu - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -``` - ## github.com/go-logfmt/logfmt * Name: github.com/go-logfmt/logfmt @@ -1802,9 +1731,9 @@ SOFTWARE. ## github.com/go-playground/validator/v10 * Name: github.com/go-playground/validator/v10 -* Version: v10.26.0 +* Version: v10.27.0 -* License: [MIT](https://github.com/go-playground/validator/blob/v10.26.0/LICENSE) +* License: [MIT](https://github.com/go-playground/validator/blob/v10.27.0/LICENSE) ``` @@ -1836,9 +1765,9 @@ SOFTWARE. ## github.com/gofiber/fiber/v2 * Name: github.com/gofiber/fiber/v2 -* Version: v2.52.6 +* Version: v2.52.8 -* License: [MIT](https://github.com/gofiber/fiber/blob/v2.52.6/LICENSE) +* License: [MIT](https://github.com/gofiber/fiber/blob/v2.52.8/LICENSE) ``` @@ -1869,9 +1798,9 @@ SOFTWARE. ## github.com/gofiber/fiber/v2/internal/schema * Name: github.com/gofiber/fiber/v2/internal/schema -* Version: v2.52.6 +* Version: v2.52.8 -* License: [BSD-3-Clause](https://github.com/gofiber/fiber/blob/v2.52.6/internal/schema/LICENSE) +* License: [BSD-3-Clause](https://github.com/gofiber/fiber/blob/v2.52.8/internal/schema/LICENSE) ``` @@ -2007,9 +1936,9 @@ SOFTWARE. ## github.com/gofiber/template/django/v3 * Name: github.com/gofiber/template/django/v3 -* Version: v3.1.13 +* Version: v3.1.14 -* License: [MIT](https://github.com/gofiber/template/blob/django/v3.1.13/django/LICENSE) +* License: [MIT](https://github.com/gofiber/template/blob/django/v3.1.14/django/LICENSE) ``` @@ -2073,9 +2002,9 @@ SOFTWARE. ## github.com/gofiber/utils/v2 * Name: github.com/gofiber/utils/v2 -* Version: v2.0.0-beta.8 +* Version: v2.0.0-beta.10 -* License: [MIT](https://github.com/gofiber/utils/blob/v2.0.0-beta.8/LICENSE) +* License: [MIT](https://github.com/gofiber/utils/blob/v2.0.0-beta.10/LICENSE) ``` @@ -2751,6 +2680,142 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ``` +## github.com/jackc/pgpassfile + +* Name: github.com/jackc/pgpassfile +* Version: v1.0.0 + +* License: [MIT](https://github.com/jackc/pgpassfile/blob/v1.0.0/LICENSE) + + +``` +Copyright (c) 2019 Jack Christensen + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +``` + +## github.com/jackc/pgservicefile + +* Name: github.com/jackc/pgservicefile +* Version: v0.0.0-20240606120523-5a60cdf6a761 + +* License: [MIT](https://github.com/jackc/pgservicefile/blob/5a60cdf6a761/LICENSE) + + +``` +Copyright (c) 2020 Jack Christensen + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +``` + +## github.com/jackc/pgx/v5 + +* Name: github.com/jackc/pgx/v5 +* Version: v5.7.5 + +* License: [MIT](https://github.com/jackc/pgx/blob/v5.7.5/LICENSE) + + +``` +Copyright (c) 2013-2021 Jack Christensen + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +``` + +## github.com/jackc/puddle/v2 + +* Name: github.com/jackc/puddle/v2 +* Version: v2.2.2 + +* License: [MIT](https://github.com/jackc/puddle/blob/v2.2.2/LICENSE) + + +``` +Copyright (c) 2018 Jack Christensen + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +``` + ## github.com/jinzhu/inflection * Name: github.com/jinzhu/inflection @@ -3416,9 +3481,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## github.com/pquerna/otp * Name: github.com/pquerna/otp -* Version: v1.4.0 +* Version: v1.5.0 -* License: [Apache-2.0](https://github.com/pquerna/otp/blob/v1.4.0/LICENSE) +* License: [Apache-2.0](https://github.com/pquerna/otp/blob/v1.5.0/LICENSE) ``` @@ -3627,45 +3692,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ``` -## github.com/remyoudompheng/bigfft - -* Name: github.com/remyoudompheng/bigfft -* Version: v0.0.0-20230129092748-24d4a6f8daec - -* License: [BSD-3-Clause](https://github.com/remyoudompheng/bigfft/blob/24d4a6f8daec/LICENSE) - - -``` -Copyright (c) 2012 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -``` - ## github.com/rivo/uniseg * Name: github.com/rivo/uniseg @@ -3736,9 +3762,9 @@ SOFTWARE. ## github.com/valyala/fasthttp * Name: github.com/valyala/fasthttp -* Version: v1.62.0 +* Version: v1.63.0 -* License: [MIT](https://github.com/valyala/fasthttp/blob/v1.62.0/LICENSE) +* License: [MIT](https://github.com/valyala/fasthttp/blob/v1.63.0/LICENSE) ``` @@ -3757,9 +3783,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ## github.com/valyala/fasthttp/reuseport * Name: github.com/valyala/fasthttp/reuseport -* Version: v1.62.0 +* Version: v1.63.0 -* License: [MIT](https://github.com/valyala/fasthttp/blob/v1.62.0/reuseport/LICENSE) +* License: [MIT](https://github.com/valyala/fasthttp/blob/v1.63.0/reuseport/LICENSE) ``` @@ -3822,9 +3848,9 @@ SOFTWARE. ## github.com/yuin/goldmark * Name: github.com/yuin/goldmark -* Version: v1.7.11 +* Version: v1.7.12 -* License: [MIT](https://github.com/yuin/goldmark/blob/v1.7.11/LICENSE) +* License: [MIT](https://github.com/yuin/goldmark/blob/v1.7.12/LICENSE) ``` @@ -4068,48 +4094,9 @@ SOFTWARE. ## golang.org/x/crypto * Name: golang.org/x/crypto -* Version: v0.38.0 +* Version: v0.40.0 -* License: [BSD-3-Clause](https://cs.opensource.google/go/x/crypto/+/v0.38.0:LICENSE) - - -``` -Copyright 2009 The Go Authors. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google LLC nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -``` - -## golang.org/x/exp/constraints - -* Name: golang.org/x/exp/constraints -* Version: v0.0.0-20250506013437-ce4c2cf36ca6 - -* License: [BSD-3-Clause](https://cs.opensource.google/go/x/exp/+/ce4c2cf3:LICENSE) +* License: [BSD-3-Clause](https://cs.opensource.google/go/x/crypto/+/v0.40.0:LICENSE) ``` @@ -4146,9 +4133,48 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## golang.org/x/net * Name: golang.org/x/net -* Version: v0.40.0 +* Version: v0.42.0 -* License: [BSD-3-Clause](https://cs.opensource.google/go/x/net/+/v0.40.0:LICENSE) +* License: [BSD-3-Clause](https://cs.opensource.google/go/x/net/+/v0.42.0:LICENSE) + + +``` +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +``` + +## golang.org/x/sync/semaphore + +* Name: golang.org/x/sync/semaphore +* Version: v0.16.0 + +* License: [BSD-3-Clause](https://cs.opensource.google/go/x/sync/+/v0.16.0:LICENSE) ``` @@ -4185,9 +4211,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## golang.org/x/sys * Name: golang.org/x/sys -* Version: v0.33.0 +* Version: v0.34.0 -* License: [BSD-3-Clause](https://cs.opensource.google/go/x/sys/+/v0.33.0:LICENSE) +* License: [BSD-3-Clause](https://cs.opensource.google/go/x/sys/+/v0.34.0:LICENSE) ``` @@ -4224,9 +4250,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## golang.org/x/text * Name: golang.org/x/text -* Version: v0.25.0 +* Version: v0.27.0 -* License: [BSD-3-Clause](https://cs.opensource.google/go/x/text/+/v0.25.0:LICENSE) +* License: [BSD-3-Clause](https://cs.opensource.google/go/x/text/+/v0.27.0:LICENSE) ``` @@ -4299,12 +4325,45 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ``` +## gorm.io/driver/postgres + +* Name: gorm.io/driver/postgres +* Version: v1.6.0 + +* License: [MIT](https://github.com/go-gorm/postgres/blob/v1.6.0/License) + + +``` +The MIT License (MIT) + +Copyright (c) 2013-NOW Jinzhu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +``` + ## gorm.io/gorm * Name: gorm.io/gorm -* Version: v1.26.1 +* Version: v1.30.0 -* License: [MIT](https://github.com/go-gorm/gorm/blob/v1.26.1/LICENSE) +* License: [MIT](https://github.com/go-gorm/gorm/blob/v1.30.0/LICENSE) ``` @@ -4332,131 +4391,3 @@ THE SOFTWARE. ``` -## modernc.org/libc - -* Name: modernc.org/libc -* Version: v1.65.4 - -* License: [BSD-3-Clause](https://gitlab.com/cznic/libc/blob/v1.65.4/LICENSE-GO) - - -``` -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -``` - -## modernc.org/mathutil - -* Name: modernc.org/mathutil -* Version: v1.7.1 - -* License: Unknown - - -``` - -``` - -## modernc.org/memory - -* Name: modernc.org/memory -* Version: v1.10.0 - -* License: [BSD-3-Clause](https://gitlab.com/cznic/memory/blob/v1.10.0/LICENSE-GO) - - -``` -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -``` - -## modernc.org/sqlite/lib - -* Name: modernc.org/sqlite/lib -* Version: v1.37.0 - -* License: [BSD-3-Clause](https://gitlab.com/cznic/sqlite/blob/v1.37.0/LICENSE) - - -``` -Copyright (c) 2017 The Sqlite Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors -may be used to endorse or promote products derived from this software without -specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -``` - diff --git a/views/account_manage.html b/views/account_manage.html index d7c4d9a..0aa9049 100644 --- a/views/account_manage.html +++ b/views/account_manage.html @@ -1,7 +1,7 @@ {% extends "layouts/main.html" %} {% block main %} -
+
- {% if Errors %} -
-
    - {% for Error in Errors %} -
  • {{ Error }}
  • - {% endfor %} -
-
- {% endif %} +
+ {% if Errors %} +
+
    + {% for Error in Errors %} +
  • {{ Error }}
  • + {% endfor %} +
+
+ {% endif %} -
- -
+ +
- -
+ +
- -
+ +
-