1
0
mirror of https://github.com/axllent/mailpit.git synced 2025-08-13 20:04:49 +02:00

Merge branch 'release/v1.25.1'

This commit is contained in:
Ralph Slooten
2025-05-25 10:12:06 +12:00
21 changed files with 353 additions and 326 deletions

View File

@@ -2,6 +2,20 @@
Notable changes to Mailpit will be documented in this file.
## [v1.25.1]
### Chore
- Switch from unnecessary float64 to uint64 API values for App Information, message & attachment sizes
- Extend latest version cache expiration from 5 to 15 minutes
- Lighten outline-secondary buttons in dark mode
- Add note to swagger docs about API date formats
- Update Go dependencies
- Update node dependencies
### Fix
- Update bootstrap5-tags to fix text pasting in message release modal ([#498](https://github.com/axllent/mailpit/issues/498))
## [v1.25.0]
### Feature

6
go.mod
View File

@@ -30,7 +30,7 @@ require (
golang.org/x/net v0.40.0
golang.org/x/text v0.25.0
golang.org/x/time v0.11.0
modernc.org/sqlite v1.37.0
modernc.org/sqlite v1.37.1
)
require (
@@ -46,7 +46,7 @@ require (
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-runewidth v0.0.16 // indirect
github.com/ncruces/go-strftime v0.1.9 // indirect
github.com/olekukonko/tablewriter v1.0.5 // indirect
github.com/olekukonko/tablewriter v1.0.6 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/reiver/go-oi v1.0.0 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
@@ -58,7 +58,7 @@ require (
golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 // indirect
golang.org/x/image v0.27.0 // indirect
golang.org/x/sys v0.33.0 // indirect
modernc.org/libc v1.65.7 // indirect
modernc.org/libc v1.65.8 // indirect
modernc.org/mathutil v1.7.1 // indirect
modernc.org/memory v1.11.0 // indirect
)

8
go.sum
View File

@@ -202,8 +202,8 @@ 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.7 h1:Ia9Z4yzZtWNtUIuiPuQ7Qf7kxYrxP1/jeHZzG8bFu00=
modernc.org/libc v1.65.7/go.mod h1:011EQibzzio/VX3ygj1qGFt5kMjP0lHb0qCW5/D/pQU=
modernc.org/libc v1.65.8 h1:7PXRJai0TXZ8uNA3srsmYzmTyrLoHImV5QxHeni108Q=
modernc.org/libc v1.65.8/go.mod h1:011EQibzzio/VX3ygj1qGFt5kMjP0lHb0qCW5/D/pQU=
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.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI=
@@ -212,8 +212,8 @@ 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/sqlite v1.37.1 h1:EgHJK/FPoqC+q2YBXg7fUmES37pCHFc97sI7zSayBEs=
modernc.org/sqlite v1.37.1/go.mod h1:XwdRtsE1MpiBcL54+MbKcaDvcuej+IYSMfLN6gSKV8g=
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=

View File

@@ -80,7 +80,7 @@ func Run() {
type message struct {
ID string
Size float64
Size uint64
}
func handleClient(conn net.Conn) {
@@ -211,13 +211,13 @@ func handleClient(conn net.Conn) {
func handleTransactionCommand(conn net.Conn, cmd string, args []string, messages []message, toDelete *[]string) {
switch cmd {
case "STAT":
totalSize := float64(0)
totalSize := uint64(0)
for _, m := range messages {
totalSize += m.Size
}
sendResponse(conn, fmt.Sprintf("+OK %d %d", len(messages), int64(totalSize)))
case "LIST":
totalSize := float64(0)
totalSize := uint64(0)
for _, m := range messages {
totalSize += m.Size
}

View File

@@ -20,10 +20,10 @@ var (
mu sync.RWMutex
smtpAccepted float64
smtpAcceptedSize float64
smtpRejected float64
smtpIgnored float64
smtpAccepted uint64
smtpAcceptedSize uint64
smtpRejected uint64
smtpIgnored uint64
)
// AppInformation struct
@@ -36,29 +36,29 @@ type AppInformation struct {
// Database path
Database string
// Database size in bytes
DatabaseSize float64
DatabaseSize uint64
// Total number of messages in the database
Messages float64
Messages uint64
// Total number of messages in the database
Unread float64
Unread uint64
// Tags and message totals per tag
Tags map[string]int64
// Runtime statistics
RuntimeStats struct {
// Mailpit server uptime in seconds
Uptime float64
Uptime uint64
// Current memory usage in bytes
Memory uint64
// Database runtime messages deleted
MessagesDeleted float64
MessagesDeleted uint64
// Accepted runtime SMTP messages
SMTPAccepted float64
SMTPAccepted uint64
// Total runtime accepted messages size in bytes
SMTPAcceptedSize float64
SMTPAcceptedSize uint64
// Rejected runtime SMTP messages
SMTPRejected float64
SMTPRejected uint64
// Ignored runtime SMTP messages (when using --ignore-duplicate-ids)
SMTPIgnored float64
SMTPIgnored uint64
}
}
@@ -71,7 +71,7 @@ func Load() AppInformation {
runtime.ReadMemStats(&m)
info.RuntimeStats.Memory = m.Sys - m.HeapReleased
info.RuntimeStats.Uptime = time.Since(startedAt).Seconds()
info.RuntimeStats.Uptime = uint64(time.Since(startedAt).Seconds())
info.RuntimeStats.MessagesDeleted = storage.StatsDeleted
info.RuntimeStats.SMTPAccepted = smtpAccepted
info.RuntimeStats.SMTPAcceptedSize = smtpAcceptedSize
@@ -88,7 +88,7 @@ func Load() AppInformation {
// clear latest version cache after 5 minutes
go func() {
time.Sleep(5 * time.Minute)
time.Sleep(15 * time.Minute)
latestVersionCache = ""
}()
}
@@ -112,7 +112,7 @@ func Track() {
func LogSMTPAccepted(size int) {
mu.Lock()
smtpAccepted = smtpAccepted + 1
smtpAcceptedSize = smtpAcceptedSize + float64(size)
smtpAcceptedSize = smtpAcceptedSize + uint64(size)
mu.Unlock()
}

View File

@@ -32,7 +32,7 @@ func dbCron() {
if total == 0 {
deletedPercent = 100
} else {
deletedPercent = deletedSize * 100 / total
deletedPercent = float64(deletedSize * 100 / total)
}
// only vacuum the DB if at least 1% of mail storage size has been deleted
if deletedPercent >= 1 {
@@ -56,13 +56,13 @@ func pruneMessages() {
start := time.Now()
ids := []string{}
var prunedSize int64
var size float64
var prunedSize uint64
var size uint64
// prune using `--max` if set
if config.MaxMessages > 0 {
total := CountTotal()
if total > float64(config.MaxAgeInHours) {
if total > uint64(config.MaxAgeInHours) {
offset := config.MaxMessages
if config.DemoMode {
offset = 500
@@ -81,7 +81,7 @@ func pruneMessages() {
return
}
ids = append(ids, id)
prunedSize = prunedSize + int64(size)
prunedSize = prunedSize + size
}); err != nil {
logger.Log().Errorf("[db] %s", err.Error())
@@ -110,7 +110,7 @@ func pruneMessages() {
if !tools.InArray(id, ids) {
ids = append(ids, id)
prunedSize = prunedSize + int64(size)
prunedSize = prunedSize + size
}
}); err != nil {

View File

@@ -210,8 +210,8 @@ func StatsGet() MailboxStats {
}
// CountTotal returns the number of emails in the database
func CountTotal() float64 {
var total float64
func CountTotal() uint64 {
var total uint64
_ = sqlf.From(tenant("mailbox")).
Select("COUNT(*)").To(&total).
@@ -221,8 +221,8 @@ func CountTotal() float64 {
}
// CountUnread returns the number of emails in the database that are unread.
func CountUnread() float64 {
var total float64
func CountUnread() uint64 {
var total uint64
_ = sqlf.From(tenant("mailbox")).
Select("COUNT(*)").To(&total).
@@ -233,8 +233,8 @@ func CountUnread() float64 {
}
// CountRead returns the number of emails in the database that are read.
func CountRead() float64 {
var total float64
func CountRead() uint64 {
var total uint64
_ = sqlf.From(tenant("mailbox")).
Select("COUNT(*)").To(&total).
@@ -245,17 +245,17 @@ func CountRead() float64 {
}
// DbSize returns the size of the SQLite database.
func DbSize() float64 {
var total sql.NullFloat64
func DbSize() uint64 {
var total sql.NullInt64
err := db.QueryRow("SELECT page_count * page_size AS size FROM pragma_page_count(), pragma_page_size()").Scan(&total)
if err != nil {
logger.Log().Errorf("[db] %s", err.Error())
return total.Float64
return uint64(total.Int64)
}
return total.Float64
return uint64(total.Int64)
}
// MessageIDExists checks whether a Message-ID exists in the DB

View File

@@ -85,7 +85,7 @@ func Store(body *[]byte) (string, error) {
defer tx.Rollback()
subject := env.GetHeader("Subject")
size := float64(len(*body))
size := uint64(len(*body))
inline := len(env.Inlines)
attachments := len(env.Attachments)
snippet := tools.CreateSnippet(env.Text, env.HTML)
@@ -201,12 +201,12 @@ func List(start int, beforeTS int64, limit int) ([]MessageSummary, error) {
}
if err := q.QueryAndClose(context.TODO(), db, func(row *sql.Rows) {
var created float64
var created uint64
var id string
var messageID string
var subject string
var metadata string
var size float64
var size uint64
var attachments int
var read int
var snippet string
@@ -294,7 +294,7 @@ func GetMessage(id string) (*Message, error) {
Where(`ID = ?`, id)
if err := q.QueryAndClose(context.TODO(), db, func(row *sql.Rows) {
var created float64
var created uint64
if err := row.Scan(&created); err != nil {
logger.Log().Errorf("[db] %s", err.Error())
@@ -321,7 +321,7 @@ func GetMessage(id string) (*Message, error) {
ReturnPath: returnPath,
Subject: env.GetHeader("Subject"),
Tags: getMessageTags(id),
Size: float64(len(raw)),
Size: uint64(len(raw)),
Text: env.Text,
}
@@ -462,7 +462,7 @@ func AttachmentSummary(a *enmime.Part) Attachment {
}
o.ContentType = a.ContentType
o.ContentID = a.ContentID
o.Size = float64(len(a.Content))
o.Size = uint64(len(a.Content))
return o
}
@@ -617,11 +617,11 @@ func DeleteMessages(ids []string) error {
defer rows.Close()
toDelete := []string{}
var totalSize float64
var totalSize uint64
for rows.Next() {
var id string
var size float64
var size uint64
if err := rows.Scan(&id, &size); err != nil {
return err
}
@@ -663,7 +663,7 @@ func DeleteMessages(ids []string) error {
}
dbLastAction = time.Now()
addDeletedSize(int64(totalSize))
addDeletedSize(totalSize)
logMessagesDeleted(len(toDelete))

View File

@@ -22,7 +22,7 @@ func TestTextEmailInserts(t *testing.T) {
}
}
assertEqual(t, CountTotal(), float64(testRuns), "Incorrect number of text emails stored")
assertEqual(t, CountTotal(), uint64(testRuns), "Incorrect number of text emails stored")
t.Logf("Inserted %d text emails in %s", testRuns, time.Since(start))
@@ -32,7 +32,7 @@ func TestTextEmailInserts(t *testing.T) {
t.Fail()
}
assertEqual(t, CountTotal(), float64(0), "incorrect number of text emails deleted")
assertEqual(t, CountTotal(), uint64(0), "incorrect number of text emails deleted")
t.Logf("deleted %d text emails in %s", testRuns, time.Since(delStart))
@@ -60,7 +60,7 @@ func TestMimeEmailInserts(t *testing.T) {
}
}
assertEqual(t, CountTotal(), float64(testRuns), "Incorrect number of mime emails stored")
assertEqual(t, CountTotal(), uint64(testRuns), "Incorrect number of mime emails stored")
t.Logf("Inserted %d text emails in %s", testRuns, time.Since(start))
@@ -70,7 +70,7 @@ func TestMimeEmailInserts(t *testing.T) {
t.Fail()
}
assertEqual(t, CountTotal(), float64(0), "incorrect number of mime emails deleted")
assertEqual(t, CountTotal(), uint64(0), "incorrect number of mime emails deleted")
t.Logf("Deleted %d mime emails in %s", testRuns, time.Since(delStart))
@@ -122,14 +122,14 @@ func TestRetrieveMimeEmail(t *testing.T) {
t.Log("error ", err)
t.Fail()
}
assertEqual(t, float64(len(attachmentData.Content)), msg.Attachments[0].Size, "attachment size does not match")
assertEqual(t, uint64(len(attachmentData.Content)), msg.Attachments[0].Size, "attachment size does not match")
inlineData, err := GetAttachmentPart(id, msg.Inline[0].PartID)
if err != nil {
t.Log("error ", err)
t.Fail()
}
assertEqual(t, float64(len(inlineData.Content)), msg.Inline[0].Size, "inline attachment size does not match")
assertEqual(t, uint64(len(inlineData.Content)), msg.Inline[0].Size, "inline attachment size does not match")
Close()
}

View File

@@ -24,8 +24,8 @@ func BroadcastMailboxStats() {
time.Sleep(250 * time.Millisecond)
bcStatsDelay = false
b := struct {
Total float64
Unread float64
Total uint64
Unread uint64
Version string
}{
Total: CountTotal(),

View File

@@ -39,12 +39,12 @@ func Search(search, timezone string, start int, beforeTS int64, limit int) ([]Me
var err error
if err := q.QueryAndClose(context.TODO(), db, func(row *sql.Rows) {
var created float64
var created uint64
var id string
var messageID string
var subject string
var metadata string
var size float64
var size uint64
var attachments int
var snippet string
var read int
@@ -141,15 +141,15 @@ func DeleteSearch(search, timezone string) error {
q := searchQueryBuilder(search, timezone)
ids := []string{}
deleteSize := float64(0)
deleteSize := uint64(0)
if err := q.QueryAndClose(context.TODO(), db, func(row *sql.Rows) {
var created float64
var created uint64
var id string
var messageID string
var subject string
var metadata string
var size float64
var size uint64
var attachments int
var read int
var snippet string
@@ -247,7 +247,7 @@ func DeleteSearch(search, timezone string) error {
}
}
addDeletedSize(int64(deleteSize))
addDeletedSize(deleteSize)
logMessagesDeleted(total)
@@ -264,12 +264,12 @@ func SetSearchReadStatus(search, timezone string, read bool) error {
ids := []string{}
if err := q.QueryAndClose(context.TODO(), db, func(row *sql.Rows) {
var created float64
var created uint64
var id string
var messageID string
var subject string
var metadata string
var size float64
var size uint64
var attachments int
var read int
var snippet string
@@ -519,7 +519,7 @@ func searchQueryBuilder(searchString, timezone string) *sqlf.Stmt {
//
// K, k, Kb, KB, kB and kb are treated as Kilobytes.
// M, m, Mb, MB and mb are treated as Megabytes.
func sizeToBytes(v string) int64 {
func sizeToBytes(v string) uint64 {
v = strings.ToLower(v)
re := regexp.MustCompile(`^(\d+)(\.\d+)?\s?([a-z]{1,2})?$`)
@@ -537,15 +537,15 @@ func sizeToBytes(v string) int64 {
}
if unit == "" {
return int64(i)
return uint64(i)
}
if unit == "k" || unit == "kb" {
return int64(i * 1024)
return uint64(i * 1024)
}
if unit == "m" || unit == "mb" {
return int64(i * 1024 * 1024)
return uint64(i * 1024 * 1024)
}
return 0

View File

@@ -203,7 +203,7 @@ func TestEscPercentChar(t *testing.T) {
}
func TestSizeToBytes(t *testing.T) {
tests := map[string]int64{}
tests := map[string]uint64{}
tests["1m"] = 1048576
tests["1mb"] = 1048576
tests["1 M"] = 1048576

View File

@@ -35,8 +35,8 @@ func SettingPut(k, v string) error {
}
// The total deleted message size as an int64 value
func getDeletedSize() float64 {
var result sql.NullFloat64
func getDeletedSize() uint64 {
var result sql.NullInt64
err := sqlf.From(tenant("settings")).
Select("Value").To(&result).
Where("Key = ?", "DeletedSize").
@@ -47,12 +47,12 @@ func getDeletedSize() float64 {
return 0
}
return result.Float64
return uint64(result.Int64)
}
// The total raw non-compressed messages size in bytes of all messages in the database
func totalMessagesSize() float64 {
var result sql.NullFloat64
func totalMessagesSize() uint64 {
var result sql.NullInt64
err := sqlf.From(tenant("mailbox")).
Select("SUM(Size)").To(&result).
QueryAndClose(context.TODO(), db, func(row *sql.Rows) {})
@@ -61,11 +61,11 @@ func totalMessagesSize() float64 {
return 0
}
return result.Float64
return uint64(result.Int64)
}
// AddDeletedSize will add the value to the DeletedSize setting
func addDeletedSize(v int64) {
func addDeletedSize(v uint64) {
if _, err := db.Exec(`INSERT OR IGNORE INTO `+tenant("settings")+` (Key, Value) VALUES(?, ?)`, "DeletedSize", 0); err != nil {
logger.Log().Errorf("[db] %s", err.Error())
}

View File

@@ -29,7 +29,8 @@ type Message struct {
Subject string
// List-Unsubscribe header information
ListUnsubscribe ListUnsubscribe
// Message date if set, else date received
// Message RFC3339Nano date & time (if set), else date & time received
// ([extended RFC3339](https://tools.ietf.org/html/rfc3339#section-5.6) format with optional nano seconds)
Date time.Time
// Message tags
Tags []string
@@ -38,7 +39,7 @@ type Message struct {
// Message body HTML
HTML string
// Message size in bytes
Size float64
Size uint64
// Inline message attachments
Inline []Attachment
// Message attachments
@@ -58,7 +59,7 @@ type Attachment struct {
// Content ID
ContentID string
// Size in bytes
Size float64
Size uint64
}
// MessageSummary struct for frontend messages
@@ -83,12 +84,12 @@ type MessageSummary struct {
ReplyTo []*mail.Address
// Email subject
Subject string
// Created time
// Received RFC3339Nano date & time ([extended RFC3339](https://tools.ietf.org/html/rfc3339#section-5.6) format with optional nano seconds)
Created time.Time
// Message tags
Tags []string
// Message size in bytes (total)
Size float64
Size uint64
// Whether the message has any attachments
Attachments int
// Message snippet includes up to 250 characters
@@ -97,8 +98,8 @@ type MessageSummary struct {
// MailboxStats struct for quick mailbox total/read lookups
type MailboxStats struct {
Total float64
Unread float64
Total uint64
Unread uint64
Tags []string
}

View File

@@ -59,11 +59,11 @@ func assertEqual(t *testing.T, a interface{}, b interface{}, message string) {
func assertEqualStats(t *testing.T, total int, unread int) {
s := StatsGet()
if float64(total) != s.Total {
if uint64(total) != s.Total {
t.Fatalf("Incorrect total mailbox stats: \"%v\" != \"%v\"", total, s.Total)
}
if float64(unread) != s.Unread {
if uint64(unread) != s.Unread {
t.Fatalf("Incorrect unread mailbox stats: \"%v\" != \"%v\"", unread, s.Unread)
}
}

View File

@@ -16,7 +16,7 @@ var (
// for stats to prevent import cycle
mu sync.RWMutex
// StatsDeleted for counting the number of messages deleted
StatsDeleted float64
StatsDeleted uint64
)
// AddTempFile adds a file to the slice of files to delete on exit
@@ -88,7 +88,7 @@ func cleanString(str string) string {
// LogMessagesDeleted logs the number of messages deleted
func logMessagesDeleted(n int) {
mu.Lock()
StatsDeleted = StatsDeleted + float64(n)
StatsDeleted = StatsDeleted + uint64(n)
mu.Unlock()
}

378
package-lock.json generated
View File

@@ -103,9 +103,9 @@
}
},
"node_modules/@bufbuild/protobuf": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.4.0.tgz",
"integrity": "sha512-RN9M76x7N11QRihKovEglEjjVCQEA9PRBVnDgk9xw8JHLrcUrp4FpAVSPSH91cNbcTft3u2vpLN4GMbiKY9PJw==",
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.5.0.tgz",
"integrity": "sha512-nniMblXT+dNyubek2OLKAYJnG/in4tmfS2c5CDnIvqfF9kFlERSG3FCBvmdqerpkWuPv0qhdGKReQ2OqKPG20w==",
"dev": true,
"license": "(Apache-2.0 AND BSD-3-Clause)",
"peer": true
@@ -884,13 +884,13 @@
"license": "Apache-2.0"
},
"node_modules/@swagger-api/apidom-ast": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-1.0.0-beta.38.tgz",
"integrity": "sha512-sqzXna89mDYHPb2ocshflIixuYIisuwes4DG39LXiFGrTQ1ZjKWiWPwjJfJVN3AB2ZMycEPNxTOKpJ7uvcAoeg==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-1.0.0-beta.39.tgz",
"integrity": "sha512-EWeSOtvI8XpbYMRkDyu4qAIlivhcplrskpau2cbrWfXGBjrqEtmHqWlbJ9xoXJbNshbIcZ0Z77QdxicimGjs0w==",
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-error": "^1.0.0-beta.38",
"@swagger-api/apidom-error": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0",
@@ -898,14 +898,14 @@
}
},
"node_modules/@swagger-api/apidom-core": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-1.0.0-beta.38.tgz",
"integrity": "sha512-VG+AJ142ZoVl9rOwx/6cu+NPPHFICxNvntkRTboAw5dxKSZqX05mMsS+IYy+Z44r4VgEQyp5oLQWM0WzAKor4g==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-1.0.0-beta.39.tgz",
"integrity": "sha512-tYZSVA+uDFvBJmnP104d8Qb/mye8B6ykNviohHAngHsy8ElcOPzSi5GKwwmJgf3taWzipMqWNM0ch5KytbXTqw==",
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-ast": "^1.0.0-beta.38",
"@swagger-api/apidom-error": "^1.0.0-beta.38",
"@swagger-api/apidom-ast": "^1.0.0-beta.39",
"@swagger-api/apidom-error": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"minim": "~0.23.8",
"ramda": "~0.30.0",
@@ -915,37 +915,37 @@
}
},
"node_modules/@swagger-api/apidom-error": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-error/-/apidom-error-1.0.0-beta.38.tgz",
"integrity": "sha512-F2gj3SEQl6Tw5+Il+GyRedHxwsbAqffeMaInRAiXtCiKma1zd8wjpFF8Ixjr82ntFzPItUonGMCRm9SgDV5XOQ==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-error/-/apidom-error-1.0.0-beta.39.tgz",
"integrity": "sha512-vQ3xQaRQGP9kNNBEDcFCmUd2PT9rCtYdkCyqYWZMxHBm5dXSBC/dQaC5VN1DbqQygE16fSQC+c5sqOrwg5d5WQ==",
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime-corejs3": "^7.20.7"
}
},
"node_modules/@swagger-api/apidom-json-pointer": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-1.0.0-beta.38.tgz",
"integrity": "sha512-ZJF1dSrDTOvfAT0NUk56wj7G2qnwBiq4uty7KvGWrbXAXGSXs1hPbKOeB+hHe71XDgIMVwIAJqb2MCA+J6fo8w==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-1.0.0-beta.39.tgz",
"integrity": "sha512-gPDNT+MCs/B1XYuNpmnz0rOHQ0ssN9YjVDqeGkX61v03BLJUF/JZKMo3J3FA2mgKb6ap+kRHzpzw5PpHLwRKAw==",
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-error": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-error": "^1.0.0-beta.39",
"@swaggerexpert/json-pointer": "^2.10.1"
}
},
"node_modules/@swagger-api/apidom-ns-api-design-systems": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-1.0.0-beta.38.tgz",
"integrity": "sha512-F5fCGWlGIkavYKGruKHK2X8jdXo8CVtGZJUZeJoYlTqM2onaxySiGH7skV7IV+HVteGMsi18GXCrlg1sjyXHag==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-1.0.0-beta.39.tgz",
"integrity": "sha512-MpdCb8KS3Tz1mGTrU0XC0Q2OcsrUWKB+buFPzLFOv0dU36ArARERX+Mz6aCJQ1CqnkFVM49uMe2NECO93ZR52w==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-error": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-error": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0",
@@ -953,15 +953,15 @@
}
},
"node_modules/@swagger-api/apidom-ns-arazzo-1": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-arazzo-1/-/apidom-ns-arazzo-1-1.0.0-beta.38.tgz",
"integrity": "sha512-h/kEjUVF0ESQ66YbOxzz9E5teo54qbVGR9R5PwP0LE8vLyJt2QFPf6qpdbyih0CGM2tTJiJkBEvG5disQUaq6Q==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-arazzo-1/-/apidom-ns-arazzo-1-1.0.0-beta.39.tgz",
"integrity": "sha512-gIiZhlt51JxEZBAZ5PfHV1c73SMQJiwJX5DnazGehMO+ojR4HyLPFh1lc6mChMxPyPlRFOfqnmx/hmNcJ/XRiA==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-json-schema-2020-12": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-json-schema-2020-12": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0",
@@ -969,15 +969,15 @@
}
},
"node_modules/@swagger-api/apidom-ns-asyncapi-2": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-1.0.0-beta.38.tgz",
"integrity": "sha512-cCuzq0qqLvyofVU8QQJNxKTpV54NFgy7XB5qcuZ0kIiF+7BZTxx08crURhnwDfQM4Qyaz6xdeSkecV7JZbrqBA==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-1.0.0-beta.39.tgz",
"integrity": "sha512-Jtdo+6MgVhf8HynjRo5pIj+aYYICAQGwRkd0n0YtOhvvKoI0gWEMpcRkDbJrNcNYOHaSxMlQfotGlTCaMl7QJQ==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-json-schema-draft-7": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-json-schema-draft-7": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0",
@@ -985,15 +985,15 @@
}
},
"node_modules/@swagger-api/apidom-ns-json-schema-2019-09": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-2019-09/-/apidom-ns-json-schema-2019-09-1.0.0-beta.38.tgz",
"integrity": "sha512-Bb93qs8dJ5ck6/sLdzv5M0WADWRm7W54Oov5hz18iCCUCRvaIlnCRzyGIgdL9UdKYqmeEpUOSk9U1t6J1gRrdA==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-2019-09/-/apidom-ns-json-schema-2019-09-1.0.0-beta.39.tgz",
"integrity": "sha512-I/XP4zbrWAmnq2KWPtbb9DKLWgzYFovIiSQOyh47bJqbYgz64/IhoZb/uGihZojVVHSqeeJH9o6JOahqHQzKOw==",
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-error": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-json-schema-draft-7": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-error": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-json-schema-draft-7": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0",
@@ -1001,15 +1001,15 @@
}
},
"node_modules/@swagger-api/apidom-ns-json-schema-2020-12": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-2020-12/-/apidom-ns-json-schema-2020-12-1.0.0-beta.38.tgz",
"integrity": "sha512-rlgl0wGCVll11+yzz3pwlZwN5g/CDYpu277MtY+tDRimgy+FfC6aGL5MQewYxVRWn79yUSrTiG7LhOO6eXCYtQ==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-2020-12/-/apidom-ns-json-schema-2020-12-1.0.0-beta.39.tgz",
"integrity": "sha512-9bpMp96fb76lOqeggtyCU457K/XBLyw3O9fxdVS3Tevhf8P3SJ6QpabmweRb6kFt4vI3+DiBschJGn0iqmlcXw==",
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-error": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-json-schema-2019-09": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-error": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-json-schema-2019-09": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0",
@@ -1017,14 +1017,14 @@
}
},
"node_modules/@swagger-api/apidom-ns-json-schema-draft-4": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-1.0.0-beta.38.tgz",
"integrity": "sha512-KswOYv3tZoFRIsGI6hHHuEyLgz8IaHygXHwjeF8dTjCuDGgr57gp+/XzsVF48UUl75PmhGJxoOPwTBg1/5FAtQ==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-1.0.0-beta.39.tgz",
"integrity": "sha512-F25tm/nwPl1rRnUHzaVw4SAeASodO60oAtWX+GF3K61WEx/Aao4Maldv3CQtAoUk8L0Ml0l1KZL00sgfikwqlw==",
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-ast": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-ast": "^1.0.0-beta.39",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0",
@@ -1032,15 +1032,15 @@
}
},
"node_modules/@swagger-api/apidom-ns-json-schema-draft-6": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-1.0.0-beta.38.tgz",
"integrity": "sha512-+6+fs6YEIaeyCabXG0YxIHYofVN7e4mnwc8CGSOK/O88mrnJPpRACLHnq9z/s98vTVmfBzjL/h6yjcOugHpzzw==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-1.0.0-beta.39.tgz",
"integrity": "sha512-E2fQQHWIRtbM5C1m1EL95MQNDPL98mlgYomPQDDUEFbYrH3u9BQGAgpIu4KuYasKquyuhx9YXqS/jLRhMCRfAQ==",
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-error": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-error": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0",
@@ -1048,15 +1048,15 @@
}
},
"node_modules/@swagger-api/apidom-ns-json-schema-draft-7": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-1.0.0-beta.38.tgz",
"integrity": "sha512-jDc4RUbKn3WGsTbTM1rMlEoSuud7T2X1xdl7x9jAvn4wH2Qvx8iUOIiSYDLKcK13qcg46UP1RmOFb/KZrfu4Mw==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-1.0.0-beta.39.tgz",
"integrity": "sha512-mhzb7n3pm0yfYuM9bZowYMp6L61Cz+HrbjBowUIt5iOMMAATQd6x209pj81hnSmgHmEJCgv+8IO9dvweme698A==",
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-error": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-json-schema-draft-6": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-error": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-json-schema-draft-6": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0",
@@ -1064,16 +1064,16 @@
}
},
"node_modules/@swagger-api/apidom-ns-openapi-2": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-1.0.0-beta.38.tgz",
"integrity": "sha512-h2HYtUnrFa0az8ZbilJVemQtxZI2YU2NwrWA1cv1IjNYd3D2tq/C94SPUnVfs42AJCyW1I6ACfcaNtMvbyPq8A==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-1.0.0-beta.39.tgz",
"integrity": "sha512-/Cjggp0eAM1GfKeLu53sLjCV9lFVUMucFruXJnD1TWdCKv5S5JAKsGBASbchw8hvwrfx6sPHslzZFV+tZKbn2Q==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-error": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-error": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0",
@@ -1081,15 +1081,15 @@
}
},
"node_modules/@swagger-api/apidom-ns-openapi-3-0": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-1.0.0-beta.38.tgz",
"integrity": "sha512-OUYkbFt1vgRB/l5ZqGG4AIRXHubcZul50eMh5icuwsDmtnc/ZxupDzebACpxKbyHjkvtLK8Qq8E7T4tFHZYDbA==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-1.0.0-beta.39.tgz",
"integrity": "sha512-lvNlUtCmyHH8+52qOhgXXdzy4HEYA+t7xnFNvDb6dtP+epXCexux3uRs8+xEYBHo/WqUGzjdwd0qKFRgyP7Lrw==",
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-error": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-error": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-json-schema-draft-4": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0",
@@ -1097,17 +1097,17 @@
}
},
"node_modules/@swagger-api/apidom-ns-openapi-3-1": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-1.0.0-beta.38.tgz",
"integrity": "sha512-nVwFkxGWJXBOvSiOfyStdaTdRQvMyL3LyICBbUCrnt+lGJ6o9qStbHDoiJgywWqQdM/j+8roHtxYejlqx/uueQ==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-1.0.0-beta.39.tgz",
"integrity": "sha512-sXMJxTGL2F36Uyv9iqvPwvzsD5NJM/dJ52tUuiJP8h4RqXwjrOC86hqf1/Xk/rxgpZShhW4PNEqifvPq/Mto3w==",
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-ast": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-json-pointer": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-json-schema-2020-12": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-beta.38",
"@swagger-api/apidom-ast": "^1.0.0-beta.39",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-json-pointer": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-json-schema-2020-12": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0",
@@ -1115,112 +1115,112 @@
}
},
"node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-json": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-1.0.0-beta.38.tgz",
"integrity": "sha512-B4sRtmdarivTNGYOPvM74ZtSRhRksr1tQrWY3XRKDQXp05rQr6CrbZaVQIu37aIWSP9TzxQDwM+QJn8OlYG4ow==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-1.0.0-beta.39.tgz",
"integrity": "sha512-jrPxZMvE6I2X8FUx4ri7VTMy2wTNOLLz+qXSx9sSXWULImqwdscvEwSVug8zdBQYMy8HXwt0wHpxlGLXBEmL8Q==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-api-design-systems": "^1.0.0-beta.38",
"@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-api-design-systems": "^1.0.0-beta.39",
"@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0"
}
},
"node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-yaml": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-1.0.0-beta.38.tgz",
"integrity": "sha512-EIe/AQ5D57tFQpC0lND1JjPRk+CSuSCvE/PBtZ/rEN9PUBrmD0nrOIPg55Mzu6AwnKTby+mW5XrYRVyqLEWkfA==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-1.0.0-beta.39.tgz",
"integrity": "sha512-JKyRYc4cBajPkIpO0YTJnxI+p8ubXfA+/1L8Fpq5kDPAI5Wh744iZ/scVHTgpgY8g+GbPqIoWB0ilQbEdlF5Sg==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-api-design-systems": "^1.0.0-beta.38",
"@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-api-design-systems": "^1.0.0-beta.39",
"@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0"
}
},
"node_modules/@swagger-api/apidom-parser-adapter-arazzo-json-1": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-arazzo-json-1/-/apidom-parser-adapter-arazzo-json-1-1.0.0-beta.38.tgz",
"integrity": "sha512-9IIYRInVOlCbVf40aUKO3zRyxdYNoFmu2JyUhrHeRb9oJCWdRv+xBrfG61aGRelPzAA/Ail9GBFYnCFgjzyRLg==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-arazzo-json-1/-/apidom-parser-adapter-arazzo-json-1-1.0.0-beta.39.tgz",
"integrity": "sha512-qlQuj4jsEPpLRH4wpkMjbR3Id3qb4n/oerv4cKCi1TYJJphC7DG7QRS90tYjaAF7n2YA8HxUcEIu2+Y5QZKyMw==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-arazzo-1": "^1.0.0-beta.38",
"@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-arazzo-1": "^1.0.0-beta.39",
"@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0"
}
},
"node_modules/@swagger-api/apidom-parser-adapter-arazzo-yaml-1": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-arazzo-yaml-1/-/apidom-parser-adapter-arazzo-yaml-1-1.0.0-beta.38.tgz",
"integrity": "sha512-HVBTEkLluBM2eMl2QnxrUm5caIfWMzPfXkxfHPPlL/PA4Qzxts3IDs/6GtKxEoGfeYy1kFcsdkoku9oeF+27Xg==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-arazzo-yaml-1/-/apidom-parser-adapter-arazzo-yaml-1-1.0.0-beta.39.tgz",
"integrity": "sha512-MUChnj6dJZRGDtIIVItIojzDNBEdan8KkuV+3U1l8bBA4eJQIq7yzHYk7fq6bl4Yd17HG0HT+1xckbUnj5Ay4A==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-arazzo-1": "^1.0.0-beta.38",
"@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-arazzo-1": "^1.0.0-beta.39",
"@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0"
}
},
"node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-2": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-1.0.0-beta.38.tgz",
"integrity": "sha512-VXX2xLwMSMSRsDNtdx85evfh2JbuDw1+LjqqVHRUFt0zwA/CowqzPJ/zgURKnSSJ3JKmr+20mpYE9hSC5iTa3Q==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-1.0.0-beta.39.tgz",
"integrity": "sha512-G+xIeYGetnCM3ylsWSwSyqCntpT6gt2Bv3f6hu/IonZxxCy2HqUl9JS41XF/cJHCoBchJU3G+bjOZXN22W3Xzw==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-beta.38",
"@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-beta.39",
"@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0"
}
},
"node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-1.0.0-beta.38.tgz",
"integrity": "sha512-+K15mDRtyGH4nMWHKZJtjG9IWR0Zm2eYedvm3eS9dhLYlPX9MDC8rYyf6+GPx3KfzgOen7SpEJv9QM66HZWepw==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-1.0.0-beta.39.tgz",
"integrity": "sha512-VPwlMRwtMQtPmEv6JXNefBBjAK/IxPsq9XWP/7kJZQ6CDp6ljHrMJDPAHZNundSL09xu7Wbz6KVGcpruUPiWmA==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-beta.38",
"@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-asyncapi-2": "^1.0.0-beta.39",
"@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0"
}
},
"node_modules/@swagger-api/apidom-parser-adapter-json": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-1.0.0-beta.38.tgz",
"integrity": "sha512-S3EmtMyX8YBAwH7uQovsPiBm1jDjCp3qVbri3QGbhL6e7O4rNxd27TA2KGqEDs1e3QEH72SkKjsxHQG/XeFGLQ==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-1.0.0-beta.39.tgz",
"integrity": "sha512-Rg2SgI06CDTdm3qs3A5pNvhonVxa2jOcwypxyhKngelIHaTuOPgaFA6qyCIvX0oIhwTcKcvV+5tPlGIR3vshpA==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-ast": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-error": "^1.0.0-beta.38",
"@swagger-api/apidom-ast": "^1.0.0-beta.39",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-error": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0",
@@ -1252,112 +1252,112 @@
}
},
"node_modules/@swagger-api/apidom-parser-adapter-openapi-json-2": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-1.0.0-beta.38.tgz",
"integrity": "sha512-QqOw0/oNeHEU57bpViIaMTWibeBwjYTAVOy+advY+UvqceUriUoHH33D8yeEvwLZUKECbCxgmiPECNbbbRuADg==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-1.0.0-beta.39.tgz",
"integrity": "sha512-DYB3jGcSnTu1ykbAKkMo550QW0BjnHlGxi1NaBbVYzdMfPYbBSQnDB3zYAwgakpoQx89OztFSlrNQ+3P8wuuSw==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-openapi-2": "^1.0.0-beta.38",
"@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-openapi-2": "^1.0.0-beta.39",
"@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0"
}
},
"node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-0": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-1.0.0-beta.38.tgz",
"integrity": "sha512-HQEW3cTZ9Wl5VQcqCvWiI5quolNdK997xhhpI72Y4+ZGkxdrntCVal2PB0Hnd2CYn6zIYn0Ijif5fZK49eL7ww==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-1.0.0-beta.39.tgz",
"integrity": "sha512-4ueWFNc3N4YZb7fTwsgrhWzdCo3TnZ7HgK5fPW3m0+Hm2wko2WYIUCIxU33Ef4DB+0Hd8y4Abjv8Mz0CCxRaeg==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-beta.38",
"@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-beta.39",
"@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0"
}
},
"node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-1": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-1.0.0-beta.38.tgz",
"integrity": "sha512-HgIXoMd/T7XbVwO4R1Ty64/5fD8nVSipAZ3pKZHoRTZ86jXC4Bh5NU8wXNWVr0cco5w3gtzNAVwNOFmK6ljEpA==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-1.0.0-beta.39.tgz",
"integrity": "sha512-8K/9J1CnQAwVqN+pvP9PH607WKA7WimNmZiyczgfnOgq93PUozNavrK97lwUUOQcZUmQra8pG2XrOrZZwd/M5w==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-beta.38",
"@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-beta.39",
"@swagger-api/apidom-parser-adapter-json": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0"
}
},
"node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-2": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-1.0.0-beta.38.tgz",
"integrity": "sha512-OlVn9MyXR3q5W8siwnI4iVDmf7KXm3klgR1YDZIC8Dpwt2jAh9Hd0sJo3axLijf2PnFA1rvtQNlgsLAmK2J8CQ==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-1.0.0-beta.39.tgz",
"integrity": "sha512-EfzVZrYTnwNGXUXIOrZkigQxdze+VdXxJWp55t3CWTy0CA7w9eM+PDpzHu7iqJgXqTOixMGy02Gzyv6N6sDj8A==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-openapi-2": "^1.0.0-beta.38",
"@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-openapi-2": "^1.0.0-beta.39",
"@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0"
}
},
"node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-1.0.0-beta.38.tgz",
"integrity": "sha512-/fF47bW0j679vdhkwukvSv8SweHjkbWMGV3o5wA4oP8COyWpNegMUhs6KXjcCuDSseHi+1nzeKKODeI9+um47g==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-1.0.0-beta.39.tgz",
"integrity": "sha512-ElHueuGdwB35VeZaJnmhZE3ILGE8F74ThJqgTbY+F2JcNo4O8cBkoCq9syw1pJ+l2JoAUErmxaTOR+zNA/wK+g==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-beta.38",
"@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-openapi-3-0": "^1.0.0-beta.39",
"@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0"
}
},
"node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-1.0.0-beta.38.tgz",
"integrity": "sha512-6vCl8ESRaYo/KB1FihgmEU9bxlpZcfeEx19PZH2a0MMt3t+RnE0yTVVYjrwuPd9cqMpnqOjDcFwQAwpmB3TAeA==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-1.0.0-beta.39.tgz",
"integrity": "sha512-lNSXp+vGcsA/d/3ukXJeovAnO5oxcTJ5OvFBL84grJvK1C6E2v0AOfsMlUEipIRNhIHq3zYKpUnhFJyE13VqXA==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-beta.38",
"@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-ns-openapi-3-1": "^1.0.0-beta.39",
"@swagger-api/apidom-parser-adapter-yaml-1-2": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
"ramda-adjunct": "^5.0.0"
}
},
"node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-1.0.0-beta.38.tgz",
"integrity": "sha512-ZycCtLALSob7ZiviVZ2pp/HBaDFV0WxcjTUzGPpKqqlhZnMEhNbX0veTUCQkhXjF7cCcUDhU+FTVmi+FQOfg3Q==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-1.0.0-beta.39.tgz",
"integrity": "sha512-30Lhgkg2ZrHY7tQ5h9umjWWhy0Fqcoi28SXJ9vtdj1cLSnFvclaLe5ZGbXP3wdW4sXZO0As3+msL9tMwrUJ/7w==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-ast": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-error": "^1.0.0-beta.38",
"@swagger-api/apidom-ast": "^1.0.0-beta.39",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-error": "^1.0.0-beta.39",
"@tree-sitter-grammars/tree-sitter-yaml": "=0.7.0",
"@types/ramda": "~0.30.0",
"ramda": "~0.30.0",
@@ -1409,16 +1409,16 @@
}
},
"node_modules/@swagger-api/apidom-reference": {
"version": "1.0.0-beta.38",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-1.0.0-beta.38.tgz",
"integrity": "sha512-8T3mtcP4C23NRMlElErI8ZOnEkZptaO3o1/LN1ipUo92QQU5od0rdtLr2GLhDs5Zl+SjW3YNKwQHU5SdJQum/A==",
"version": "1.0.0-beta.39",
"resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-1.0.0-beta.39.tgz",
"integrity": "sha512-PrV2/3Z6XGJPj4fv1JazY1dKjlnAg/BN22UQdUOzA5/A0TkfbImt8uVQuVzQSL2P8RA6G9TDsdpOalj80N47rw==",
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime-corejs3": "^7.26.10",
"@swagger-api/apidom-core": "^1.0.0-beta.38",
"@swagger-api/apidom-error": "^1.0.0-beta.38",
"@swagger-api/apidom-core": "^1.0.0-beta.39",
"@swagger-api/apidom-error": "^1.0.0-beta.39",
"@types/ramda": "~0.30.0",
"axios": "^1.8.2",
"axios": "^1.9.0",
"minimatch": "^7.4.3",
"process": "^0.11.10",
"ramda": "~0.30.0",
@@ -1709,9 +1709,9 @@
"license": "MIT"
},
"node_modules/bootstrap5-tags": {
"version": "1.7.14",
"resolved": "https://registry.npmjs.org/bootstrap5-tags/-/bootstrap5-tags-1.7.14.tgz",
"integrity": "sha512-xN00X4eekFIVHDt8jo1y6jQwhWlTuVC9TOzOXi9FEFal/VzEtt78mToEgM+nPx6OV1xVNwgl5AX2s90ZHFsnYA==",
"version": "1.7.15",
"resolved": "https://registry.npmjs.org/bootstrap5-tags/-/bootstrap5-tags-1.7.15.tgz",
"integrity": "sha512-UnHmJC9p0ei5rZG1/5qOFBoKFJ+ZyXiVTi1+fJnN/+6d/htZZ9M4cALxsjxQR53K2PrOSApMBOR2QZDbIkdK+g==",
"license": "MIT"
},
"node_modules/brace-expansion": {
@@ -1887,9 +1887,9 @@
}
},
"node_modules/dompurify": {
"version": "3.2.5",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.5.tgz",
"integrity": "sha512-mLPd29uoRe9HpvwP2TxClGQBzGXeEC/we/q+bFlmPPmj2p2Ugl3r6ATu/UU1v77DXNcehiBg9zsr1dREyA/dJQ==",
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz",
"integrity": "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==",
"license": "(MPL-2.0 OR Apache-2.0)",
"optionalDependencies": {
"@types/trusted-types": "^2.0.7"
@@ -3269,18 +3269,18 @@
}
},
"node_modules/swagger-client": {
"version": "3.35.1",
"resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.35.1.tgz",
"integrity": "sha512-FEMFQGPu/Vt3UA2rrIvR00PT6SfnFCXLb+E4tGI0BSwVkwwu3bZ/c78QBXo/H/PtEvPJhQwBfF7af80jgjc7Bg==",
"version": "3.35.3",
"resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.35.3.tgz",
"integrity": "sha512-4bO+dhBbasP485Ak67o46cWNVUnV0/92ypb2997bhvxTO2M+IuQZM1ilkN/7nSaiGuxDKJhkuL54I35PVI3AAw==",
"license": "Apache-2.0",
"dependencies": {
"@babel/runtime-corejs3": "^7.22.15",
"@scarf/scarf": "=1.4.0",
"@swagger-api/apidom-core": ">=1.0.0-beta.37 <1.0.0-rc.0",
"@swagger-api/apidom-error": ">=1.0.0-beta.37 <1.0.0-rc.0",
"@swagger-api/apidom-json-pointer": ">=1.0.0-beta.37 <1.0.0-rc.0",
"@swagger-api/apidom-ns-openapi-3-1": ">=1.0.0-beta.37 <1.0.0-rc.0",
"@swagger-api/apidom-reference": ">=1.0.0-beta.37 <1.0.0-rc.0",
"@swagger-api/apidom-core": ">=1.0.0-beta.39 <1.0.0-rc.0",
"@swagger-api/apidom-error": ">=1.0.0-beta.39 <1.0.0-rc.0",
"@swagger-api/apidom-json-pointer": ">=1.0.0-beta.39 <1.0.0-rc.0",
"@swagger-api/apidom-ns-openapi-3-1": ">=1.0.0-beta.39 <1.0.0-rc.0",
"@swagger-api/apidom-reference": ">=1.0.0-beta.39 <1.0.0-rc.0",
"@swaggerexpert/cookie": "^2.0.2",
"deepmerge": "~4.3.0",
"fast-json-patch": "^3.0.0-1",

View File

@@ -40,21 +40,21 @@ type messagesSummaryResponse struct {
// MessagesSummary is a summary of a list of messages
type MessagesSummary struct {
// Total number of messages in mailbox
Total float64 `json:"total"`
Total uint64 `json:"total"`
// Total number of unread messages in mailbox
Unread float64 `json:"unread"`
Unread uint64 `json:"unread"`
// Legacy - now undocumented in API specs but left for backwards compatibility.
// Removed from API documentation 2023-07-12
// swagger:ignore
Count float64 `json:"count"`
Count uint64 `json:"count"`
// Total number of messages matching current query
MessagesCount float64 `json:"messages_count"`
MessagesCount uint64 `json:"messages_count"`
// Total number of unread messages matching current query
MessagesUnreadCount float64 `json:"messages_unread"`
MessagesUnreadCount uint64 `json:"messages_unread"`
// Pagination offset
Start int `json:"start"`
@@ -98,7 +98,7 @@ func GetMessages(w http.ResponseWriter, r *http.Request) {
res.Start = start
res.Messages = messages
res.Count = float64(len(messages)) // legacy - now undocumented in API specs
res.Count = uint64(len(messages)) // legacy - now undocumented in API specs
res.Total = stats.Total
res.Unread = stats.Unread
res.Tags = stats.Tags
@@ -349,9 +349,9 @@ func Search(w http.ResponseWriter, r *http.Request) {
res.Start = start
res.Messages = messages
res.Count = float64(len(messages)) // legacy - now undocumented in API specs
res.Count = uint64(len(messages)) // legacy - now undocumented in API specs
res.Total = stats.Total // total messages in mailbox
res.MessagesCount = float64(results)
res.MessagesCount = uint64(results)
res.Unread = stats.Unread
res.Tags = stats.Tags
@@ -361,7 +361,7 @@ func Search(w http.ResponseWriter, r *http.Request) {
return
}
res.MessagesUnreadCount = float64(unread)
res.MessagesUnreadCount = uint64(unread)
w.Header().Add("Content-Type", "application/json")
if err := json.NewEncoder(w).Encode(res); err != nil {

View File

@@ -340,8 +340,8 @@ func assertStatsEqual(t *testing.T, uri string, unread, total int) {
return
}
assertEqual(t, float64(unread), m.Unread, "wrong unread count")
assertEqual(t, float64(total), m.Total, "wrong total count")
assertEqual(t, uint64(unread), m.Unread, "wrong unread count")
assertEqual(t, uint64(total), m.Total, "wrong total count")
}
func assertSearchEqual(t *testing.T, uri, query string, count int) {
@@ -361,7 +361,7 @@ func assertSearchEqual(t *testing.T, uri, query string, count int) {
return
}
assertEqual(t, float64(count), m.MessagesCount, "wrong search results count")
assertEqual(t, uint64(count), m.MessagesCount, "wrong search results count")
}
func insertEmailData(t *testing.T) {

View File

@@ -89,6 +89,14 @@
.token.property {
color: #ee6969;
}
.btn-outline-secondary {
color: #9c9c9c;
&:hover {
color: $body-color-dark;
}
}
}
.text-spaces-nowrap {

View File

@@ -1102,8 +1102,8 @@
},
"DatabaseSize": {
"description": "Database size in bytes",
"type": "number",
"format": "double"
"type": "integer",
"format": "uint64"
},
"LatestVersion": {
"description": "Latest Mailpit version",
@@ -1111,8 +1111,8 @@
},
"Messages": {
"description": "Total number of messages in the database",
"type": "number",
"format": "double"
"type": "integer",
"format": "uint64"
},
"RuntimeStats": {
"description": "Runtime statistics",
@@ -1125,33 +1125,33 @@
},
"MessagesDeleted": {
"description": "Database runtime messages deleted",
"type": "number",
"format": "double"
"type": "integer",
"format": "uint64"
},
"SMTPAccepted": {
"description": "Accepted runtime SMTP messages",
"type": "number",
"format": "double"
"type": "integer",
"format": "uint64"
},
"SMTPAcceptedSize": {
"description": "Total runtime accepted messages size in bytes",
"type": "number",
"format": "double"
"type": "integer",
"format": "uint64"
},
"SMTPIgnored": {
"description": "Ignored runtime SMTP messages (when using --ignore-duplicate-ids)",
"type": "number",
"format": "double"
"type": "integer",
"format": "uint64"
},
"SMTPRejected": {
"description": "Rejected runtime SMTP messages",
"type": "number",
"format": "double"
"type": "integer",
"format": "uint64"
},
"Uptime": {
"description": "Mailpit server uptime in seconds",
"type": "number",
"format": "double"
"type": "integer",
"format": "uint64"
}
}
},
@@ -1165,8 +1165,8 @@
},
"Unread": {
"description": "Total number of messages in the database",
"type": "number",
"format": "double"
"type": "integer",
"format": "uint64"
},
"Version": {
"description": "Current Mailpit version",
@@ -1197,8 +1197,8 @@
},
"Size": {
"description": "Size in bytes",
"type": "number",
"format": "double"
"type": "integer",
"format": "uint64"
}
},
"x-go-package": "github.com/axllent/mailpit/internal/storage"
@@ -1488,7 +1488,7 @@
}
},
"Date": {
"description": "Message date if set, else date received",
"description": "Message RFC3339Nano date \u0026 time (if set), else date \u0026 time received\n([extended RFC3339](https://tools.ietf.org/html/rfc3339#section-5.6) format with optional nano seconds)",
"type": "string",
"format": "date-time"
},
@@ -1530,8 +1530,8 @@
},
"Size": {
"description": "Message size in bytes",
"type": "number",
"format": "double"
"type": "integer",
"format": "uint64"
},
"Subject": {
"description": "Message subject",
@@ -1594,7 +1594,7 @@
}
},
"Created": {
"description": "Created time",
"description": "Received RFC3339Nano date \u0026 time ([extended RFC3339](https://tools.ietf.org/html/rfc3339#section-5.6) format with optional nano seconds)",
"type": "string",
"format": "date-time"
},
@@ -1622,8 +1622,8 @@
},
"Size": {
"description": "Message size in bytes (total)",
"type": "number",
"format": "double"
"type": "integer",
"format": "uint64"
},
"Snippet": {
"description": "Message snippet includes up to 250 characters",
@@ -1664,14 +1664,14 @@
},
"messages_count": {
"description": "Total number of messages matching current query",
"type": "number",
"format": "double",
"type": "integer",
"format": "uint64",
"x-go-name": "MessagesCount"
},
"messages_unread": {
"description": "Total number of unread messages matching current query",
"type": "number",
"format": "double",
"type": "integer",
"format": "uint64",
"x-go-name": "MessagesUnreadCount"
},
"start": {
@@ -1690,14 +1690,14 @@
},
"total": {
"description": "Total number of messages in mailbox",
"type": "number",
"format": "double",
"type": "integer",
"format": "uint64",
"x-go-name": "Total"
},
"unread": {
"description": "Total number of unread messages in mailbox",
"type": "number",
"format": "double",
"type": "integer",
"format": "uint64",
"x-go-name": "Unread"
}
},
@@ -1988,6 +1988,10 @@
"description": "Whether messages with duplicate IDs are ignored",
"type": "boolean"
},
"HideDeleteAllButton": {
"description": "Whether the delete button should be hidden",
"type": "boolean"
},
"Label": {
"description": "Optional label to identify this Mailpit instance",
"type": "string"