From bfd58377103d29f8c1b5e24b48d603f6c4d53b47 Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Sat, 24 Feb 2024 23:47:03 +1300 Subject: [PATCH 01/10] Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 26b6e51..1da5240 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ via either HTTPS or `localhost` only) "accept any" mode) - [SMTP relaying](https://mailpit.axllent.org/docs/configuration/smtp-relay/) (message release) - relay messages via a different SMTP server including an optional allowlist of accepted recipients -- Fast SMTP processing & storing - approximately 70-100 emails per second depending on CPU, network speed & email size, +- Fast SMTP processing & storing - ingesting 100-200 emails per second depending on CPU, network speed & email size, easily handling tens of thousands of emails - Optional [POP3 server](https://mailpit.axllent.org/docs/configuration/pop3/) to download captured message directly into your email client - Configurable automatic email pruning (default keeps the most recent 500 emails) From 0353520aeb69fa1ab98ce70d282bce8d0069411d Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Fri, 1 Mar 2024 17:21:21 +1300 Subject: [PATCH 02/10] Feature: Set message tags using plus addressing (#253) --- internal/storage/messages.go | 12 +++----- internal/storage/tags.go | 34 +++++++++++++++++++++ internal/storage/tags_test.go | 21 ++++++++++++- internal/storage/testdata/tags.eml | 49 ++++++++++++++++++++++++++++++ internal/storage/testing.go | 6 ++++ 5 files changed, 113 insertions(+), 9 deletions(-) create mode 100644 internal/storage/testdata/tags.eml diff --git a/internal/storage/messages.go b/internal/storage/messages.go index d69a117..03da204 100644 --- a/internal/storage/messages.go +++ b/internal/storage/messages.go @@ -69,14 +69,10 @@ func Store(body *[]byte) (string, error) { return "", err } - // extract tags from body matches based on --tag - tagStr := findTagsInRawMessage(body) - - // extract tags from X-Tags header - headerTags := strings.TrimSpace(env.Root.Header.Get("X-Tags")) - if headerTags != "" { - tagStr += "," + headerTags - } + // extract tags from body matches based on --tag, plus addresses & X-Tags header + tagStr := findTagsInRawMessage(body) + "," + + obj.tagsFromPlusAddresses() + "," + + strings.TrimSpace(env.Root.Header.Get("X-Tags")) tagData := uniqueTagsFromString(tagStr) diff --git a/internal/storage/tags.go b/internal/storage/tags.go index 7bcffe8..3341e70 100644 --- a/internal/storage/tags.go +++ b/internal/storage/tags.go @@ -2,6 +2,7 @@ package storage import ( "database/sql" + "regexp" "sort" "strings" @@ -11,6 +12,10 @@ import ( "github.com/leporo/sqlf" ) +var ( + addressPlusRe = regexp.MustCompile(`^(.*){1,}\+(.*)@`) +) + // SetMessageTags will set the tags for a given database ID func SetMessageTags(id string, tags []string) error { applyTags := []string{} @@ -236,6 +241,35 @@ func findTagsInRawMessage(message *[]byte) string { return tagStr } +// Returns tags found in email plus addresses (eg: test+tagname@example.com) +func (d DBMailSummary) tagsFromPlusAddresses() string { + tags := []string{} + for _, c := range d.To { + matches := addressPlusRe.FindAllStringSubmatch(c.String(), 1) + if len(matches) == 1 && config.ValidTagRegexp.MatchString(matches[0][2]) { + tags = append(tags, matches[0][2]) + } + } + for _, c := range d.Cc { + matches := addressPlusRe.FindAllStringSubmatch(c.String(), 1) + if len(matches) == 1 && config.ValidTagRegexp.MatchString(matches[0][2]) { + tags = append(tags, matches[0][2]) + } + } + for _, c := range d.Bcc { + matches := addressPlusRe.FindAllStringSubmatch(c.String(), 1) + if len(matches) == 1 && config.ValidTagRegexp.MatchString(matches[0][2]) { + tags = append(tags, matches[0][2]) + } + } + matches := addressPlusRe.FindAllStringSubmatch(d.From.String(), 1) + if len(matches) == 1 && config.ValidTagRegexp.MatchString(matches[0][2]) { + tags = append(tags, matches[0][2]) + } + + return strings.Join(tags, ",") +} + // Get message tags from the database for a given database ID // Used when parsing a raw email. func getMessageTags(id string) []string { diff --git a/internal/storage/tags_test.go b/internal/storage/tags_test.go index d020971..388fe8b 100644 --- a/internal/storage/tags_test.go +++ b/internal/storage/tags_test.go @@ -107,5 +107,24 @@ func TestTags(t *testing.T) { // Check deleted message tags also prune the tags database allTags := GetAllTags() - assertEqual(t, "", strings.Join(allTags, "|"), "Dirty message tag did not clean as expected") + assertEqual(t, "", strings.Join(allTags, "|"), "Tags did not delete as expected") + + if err := DeleteAllMessages(); err != nil { + t.Log("error ", err) + t.Fail() + } + + // test 20 tags + id, err = Store(&testTagEmail) + if err != nil { + t.Log("error ", err) + t.Fail() + } + + returnedTags = getMessageTags(id) + assertEqual(t, "BccTag|CcTag|FromFag|ToTag|X-tag1|X-tag2", strings.Join(returnedTags, "|"), "Tags not detected correctly") + if err := DeleteAllMessageTags(id); err != nil { + t.Log("error ", err) + t.Fail() + } } diff --git a/internal/storage/testdata/tags.eml b/internal/storage/testdata/tags.eml new file mode 100644 index 0000000..b39c816 --- /dev/null +++ b/internal/storage/testdata/tags.eml @@ -0,0 +1,49 @@ +Date: Wed, 27 Jul 2022 15:44:41 +1200 +From: Sender Smith +To: Recipient Ross +Cc: Recipient Ross +Bcc: +Subject: Plain text message +X-Tags: X-tag1, X-tag2 +Message-ID: <20220727034441.7za34h6ljuzfpmj3@localhost.localhost> +MIME-Version: 1.0 +Content-Type: text/plain; charset=us-ascii +Content-Disposition: inline + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non massa lacinia, +fringilla ex vel, ornare nulla. Suspendisse dapibus commodo sapien, non +hendrerit diam feugiat sit amet. Nulla lorem quam, laoreet vitae nisl volutpat, +mollis bibendum felis. In eget ultricies justo. Donec vitae hendrerit tortor, at +posuere libero. Fusce a gravida nibh. Nulla ac odio ex. + +Aliquam sem turpis, cursus vitae condimentum at, scelerisque pulvinar lectus. +Cras tempor nisl ut arcu interdum, et luctus arcu cursus. Maecenas mollis +sagittis commodo. Mauris ac lorem nec ex interdum consequat. Morbi congue +ultrices ullamcorper. Aenean ex tortor, dapibus quis dapibus iaculis, iaculis +eget felis. Vestibulum purus ante, efficitur in turpis ac, tristique laoreet +orci. Nulla facilisi. Praesent mollis orci posuere elementum laoreet. +Pellentesque enim nibh, varius at ante id, consequat posuere ante. + +Cras maximus venenatis nulla nec cursus. Morbi convallis, enim eget viverra +vulputate, ipsum arcu tincidunt tortor, ut cursus dui enim commodo quam. Donec +et vulputate quam. Vivamus non posuere erat. Nam commodo pellentesque +condimentum. Vivamus condimentum eros at odio dictum feugiat. Ut imperdiet +tempor luctus. Aenean varius libero ac faucibus dictum. Aliquam sed finibus +massa. Morbi dolor lorem, feugiat quis neque et, suscipit posuere ex. Sed auctor +et augue at finibus. Vestibulum interdum mi ac justo porta aliquam. Curabitur +nec enim sit amet enim aliquet accumsan. Etiam accumsan tellus tortor, interdum +sodales odio finibus eu. Integer eget ante eu nisi lobortis pulvinar et vel +ipsum. Cras condimentum posuere vulputate. + +Cras nulla felis, blandit vitae egestas quis, fringilla ut dolor. Phasellus est +augue, feugiat eu risus quis, posuere ultrices libero. Phasellus non nunc eget +justo sollicitudin tincidunt. Praesent pretium dui id felis bibendum sodales. +Phasellus eget dictum libero, auctor tempor nibh. Suspendisse posuere libero +venenatis elit imperdiet porttitor. In condimentum dictum luctus. Nullam in +nulla vitae augue blandit posuere. Vestibulum consectetur ultricies tincidunt. +Vivamus dolor quam, pharetra sed eros sed, hendrerit ultrices diam. Vestibulum +vulputate tellus eget tellus lacinia, a pulvinar velit vulputate. Suspendisse +mauris odio, scelerisque eget turpis sed, tincidunt ultrices magna. Nunc arcu +arcu, commodo et porttitor quis, accumsan viverra purus. Fusce id libero iaculis +lorem tristique commodo porttitor id ipsum. Vestibulum odio dui, tincidunt eget +lectus vel, tristique lacinia libero. Aliquam dapibus ac felis vitae cursus. diff --git a/internal/storage/testing.go b/internal/storage/testing.go index 03ce1e3..4b767f0 100644 --- a/internal/storage/testing.go +++ b/internal/storage/testing.go @@ -11,6 +11,7 @@ import ( var ( testTextEmail []byte + testTagEmail []byte testMimeEmail []byte testRuns = 100 ) @@ -31,6 +32,11 @@ func setup() { panic(err) } + testTagEmail, err = os.ReadFile("testdata/tags.eml") + if err != nil { + panic(err) + } + testMimeEmail, err = os.ReadFile("testdata/mime-attachment.eml") if err != nil { panic(err) From 0f725ef1d846b9d3ca883fac4e9a57d241517919 Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Fri, 1 Mar 2024 17:22:13 +1300 Subject: [PATCH 03/10] Feature: Option to enforce TitleCasing for all newly created tags --- cmd/root.go | 11 ++++++++--- internal/tools/tags.go | 11 +++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index e517dee..9411243 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -10,6 +10,7 @@ import ( "github.com/axllent/mailpit/internal/auth" "github.com/axllent/mailpit/internal/logger" "github.com/axllent/mailpit/internal/storage" + "github.com/axllent/mailpit/internal/tools" "github.com/axllent/mailpit/server" "github.com/axllent/mailpit/server/smtpd" "github.com/axllent/mailpit/server/webhook" @@ -122,6 +123,7 @@ func init() { rootCmd.Flags().BoolVar(&config.AllowUntrustedTLS, "allow-untrusted-tls", config.AllowUntrustedTLS, "Do not verify HTTPS certificates (link checker & screenshots)") rootCmd.Flags().StringVarP(&config.SMTPCLITags, "tag", "t", config.SMTPCLITags, "Tag new messages matching filters") + rootCmd.Flags().BoolVar(&tools.TagsTitleCase, "tags-title-case", tools.TagsTitleCase, "Convert new tags automatically to TitleCase") rootCmd.Flags().StringVar(&logger.LogFile, "log-file", logger.LogFile, "Log output to file instead of stdout") rootCmd.Flags().BoolVarP(&logger.QuietLogging, "quiet", "q", logger.QuietLogging, "Quiet logging (errors only)") rootCmd.Flags().BoolVarP(&logger.VerboseLogging, "verbose", "v", logger.VerboseLogging, "Verbose logging") @@ -154,9 +156,6 @@ func initConfigFromEnv() { if len(os.Getenv("MP_MAX_MESSAGES")) > 0 { config.MaxMessages, _ = strconv.Atoi(os.Getenv("MP_MAX_MESSAGES")) } - if len(os.Getenv("MP_TAG")) > 0 { - config.SMTPCLITags = os.Getenv("MP_TAG") - } // UI config.UIAuthFile = os.Getenv("MP_UI_AUTH_FILE") @@ -245,6 +244,12 @@ func initConfigFromEnv() { if getEnabledFromEnv("MP_ALLOW_UNTRUSTED_TLS") { config.AllowUntrustedTLS = true } + if len(os.Getenv("MP_TAG")) > 0 { + config.SMTPCLITags = os.Getenv("MP_TAG") + } + if getEnabledFromEnv("MP_TAGS_TITLE_CASE") { + tools.TagsTitleCase = getEnabledFromEnv("MP_TAGS_TITLE_CASE") + } if len(os.Getenv("MP_LOG_FILE")) > 0 { logger.LogFile = os.Getenv("MP_LOG_FILE") } diff --git a/internal/tools/tags.go b/internal/tools/tags.go index 660501e..27e94f7 100644 --- a/internal/tools/tags.go +++ b/internal/tools/tags.go @@ -3,6 +3,9 @@ package tools import ( "regexp" "strings" + + "golang.org/x/text/cases" + "golang.org/x/text/language" ) var ( @@ -11,6 +14,9 @@ var ( // Regex to catch multiple spaces multiSpaceRe = regexp.MustCompile(`(\s+)`) + + // TagsTitleCase enforces TitleCase on all tags + TagsTitleCase bool ) // CleanTag returns a clean tag, removing whitespace and invalid characters @@ -21,5 +27,10 @@ func CleanTag(s string) string { " ", ), ) + + if TagsTitleCase { + return cases.Title(language.Und, cases.NoLower).String(s) + } + return s } From cf93f99cc23a4e8129314a409193c97ba7162e11 Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Fri, 1 Mar 2024 21:53:15 +1300 Subject: [PATCH 04/10] Chore: Update Go dependencies --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 6849066..7def765 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.20 require ( github.com/GuiaBolso/darwin v0.0.0-20191218124601-fd6d2aa3d244 - github.com/PuerkitoBio/goquery v1.9.0 + github.com/PuerkitoBio/goquery v1.9.1 github.com/axllent/semver v0.0.1 github.com/disintegration/imaging v1.6.2 github.com/gomarkdown/markdown v0.0.0-20231222211730-1d6d20845b47 @@ -25,7 +25,7 @@ require ( golang.org/x/text v0.14.0 golang.org/x/time v0.5.0 gopkg.in/yaml.v3 v3.0.1 - modernc.org/sqlite v1.29.1 + modernc.org/sqlite v1.29.2 ) require ( @@ -53,7 +53,7 @@ require ( github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/vanng822/css v1.0.1 // indirect - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.20.0 // indirect golang.org/x/image v0.15.0 // indirect golang.org/x/sys v0.17.0 // indirect golang.org/x/tools v0.18.0 // indirect diff --git a/go.sum b/go.sum index 27488c6..126e582 100644 --- a/go.sum +++ b/go.sum @@ -5,8 +5,8 @@ github.com/GehirnInc/crypt v0.0.0-20230320061759-8cc1b52080c5/go.mod h1:exZ0C/1e github.com/GuiaBolso/darwin v0.0.0-20191218124601-fd6d2aa3d244 h1:dqzm54OhCqY8RinR/cx+Ppb0y56Ds5I3wwWhx4XybDg= github.com/GuiaBolso/darwin v0.0.0-20191218124601-fd6d2aa3d244/go.mod h1:3sqgkckuISJ5rs1EpOp6vCvwOUKe/z9vPmyuIlq8Q/A= github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= -github.com/PuerkitoBio/goquery v1.9.0 h1:zgjKkdpRY9T97Q5DCtcXwfqkcylSFIVCocZmn2huTp8= -github.com/PuerkitoBio/goquery v1.9.0/go.mod h1:cW1n6TmIMDoORQU5IU/P1T3tGFunOeXEpGP2WHRwkbY= +github.com/PuerkitoBio/goquery v1.9.1 h1:mTL6XjbJTZdpfL+Gwl5U2h1l9yEkJjhmlTeV9VPW7UI= +github.com/PuerkitoBio/goquery v1.9.1/go.mod h1:cW1n6TmIMDoORQU5IU/P1T3tGFunOeXEpGP2WHRwkbY= github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss= github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= @@ -144,8 +144,8 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0 h1:jmAMJJZXr5KiCw05dfYK9QnqaqKLYXijU23lsEdcQqg= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.15.0 h1:kOELfmgrmJlw4Cdb7g/QGuB3CvDrXbqEIww/pNtNBm8= golang.org/x/image v0.15.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE= @@ -215,8 +215,8 @@ modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= modernc.org/memory v1.7.2 h1:Klh90S215mmH8c9gO98QxQFsY+W451E8AnzjoE2ee1E= modernc.org/memory v1.7.2/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E= -modernc.org/sqlite v1.29.1 h1:19GY2qvWB4VPw0HppFlZCPAbmxFU41r+qjKZQdQ1ryA= -modernc.org/sqlite v1.29.1/go.mod h1:hG41jCYxOAOoO6BRK66AdRlmOcDzXf7qnwlwjUIOqa0= +modernc.org/sqlite v1.29.2 h1:xgBSyA3gemwgP31PWFfFjtBorQNYpeypGdoSDjXhrgI= +modernc.org/sqlite v1.29.2/go.mod h1:hG41jCYxOAOoO6BRK66AdRlmOcDzXf7qnwlwjUIOqa0= modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= From f076d52603b2cb25bea6308743ae744157856780 Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Fri, 1 Mar 2024 21:55:25 +1300 Subject: [PATCH 05/10] Chore: Update node dependencies --- package-lock.json | 488 +++++++++++++++++++++++----------------------- 1 file changed, 244 insertions(+), 244 deletions(-) diff --git a/package-lock.json b/package-lock.json index 04e7ed1..e1101ed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,9 +40,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", - "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", + "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -51,9 +51,9 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.23.9.tgz", - "integrity": "sha512-oeOFTrYWdWXCvXGB5orvMTJ6gCZ9I6FBjR+M38iKNXCsPxr4xT0RTdg5uz1H7QP8pp74IzPtwritEr+JscqHXQ==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.0.tgz", + "integrity": "sha512-HxiRMOncx3ly6f3fcZ1GVKf+/EROcI9qwPgmij8Czqy6Okm/0T37T4y2ZIlLUuEUFjtM7NRsfdCO8Y3tAiJZew==", "dependencies": { "core-js-pure": "^3.30.2", "regenerator-runtime": "^0.14.0" @@ -465,12 +465,12 @@ } }, "node_modules/@swagger-api/apidom-ast": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-0.95.0.tgz", - "integrity": "sha512-hYv4gED2aG/4eZXloenPaS2EW9hEewfkm9GCJ+3zchYWNctHgcq5O/LHQfYzvlsldNoNWSFEVtjb9v2rs8qA0g==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-0.96.0.tgz", + "integrity": "sha512-JaXro7IH2yPHomA/t6R1wj551GmKl/qjRkQ1729l7umssmubO2yprAbH8GEF5SqtTEicihXF2DlwgUMs/+YyNg==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-error": "^0.95.0", + "@swagger-api/apidom-error": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.1.1", @@ -478,13 +478,13 @@ } }, "node_modules/@swagger-api/apidom-core": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-0.95.0.tgz", - "integrity": "sha512-SWnFJX8sUP2cAgH1c62bOpQZm2ye0Dbgrgd+NZ8umSWtkz9rFLrSvBgy8QobaDMDvmQo9Kv60srnP3tvu5A9oQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-0.96.0.tgz", + "integrity": "sha512-FOZqbH/2H5f7UiTvN2b7O5r0MCCUiICimhNVi5bbaf3ATWFDpL7AKtGFd3EmW8Er8ajpcxI13iZpoBFPtUtnsQ==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.95.0", - "@swagger-api/apidom-error": "^0.95.0", + "@swagger-api/apidom-ast": "^0.96.0", + "@swagger-api/apidom-error": "^0.96.0", "@types/ramda": "~0.29.6", "minim": "~0.23.8", "ramda": "~0.29.1", @@ -494,36 +494,36 @@ } }, "node_modules/@swagger-api/apidom-error": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-error/-/apidom-error-0.95.0.tgz", - "integrity": "sha512-yh8TZZrtqR60g91ed/lu1KRDF2Z+Vv82dpf859TU1xJL7mhcPQG7aptc129cfUkla/+d9edNJDHNsnWUQPw7+A==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-error/-/apidom-error-0.96.0.tgz", + "integrity": "sha512-dDaGOUVx5pp/mm0c6Y5aBIXVMvVdL3jP6SnnPCGXq20AqkDNDyihJU28VsBrPjl05/tMV4IAHW26qQAMztvahA==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7" } }, "node_modules/@swagger-api/apidom-json-pointer": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-0.95.0.tgz", - "integrity": "sha512-aqszOa4UenYC5B7MlcU0tkL4yQJ0OSJhUS0uBpKJatao9mZZ0yRv8eB2TIMeAN0MkuDfyYphkKdmAVgIxZ9SeQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-0.96.0.tgz", + "integrity": "sha512-AesKhx3PhicgrIbal4X5MLgX5s/Lom50AlYy9r4sFAu8ke3H+IIvGoJ5so2X6UcJJ17CURiEks+oAEM2pMnBUA==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-error": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-error": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-ns-api-design-systems": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-0.95.0.tgz", - "integrity": "sha512-fkLwhp+MSIZXr5Fu1oOGuQDTguLIDv6OOKthXYqWnfh/UVpdZgaClXxxDkXaW6EnIiPujtj5j4i52/y5z+fBew==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-0.96.0.tgz", + "integrity": "sha512-TTZAIiOAZz6NXtGiTQ/XIHE6VuRlqI25ehzM3GDXur+r74/rPmzGH9E0CEzfj+bprd2QXCrus50pqwyGMPJd9Q==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-error": "^0.95.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-error": "^0.96.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.1.1", @@ -531,14 +531,14 @@ } }, "node_modules/@swagger-api/apidom-ns-asyncapi-2": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-0.95.0.tgz", - "integrity": "sha512-WuETyax2c2wRJporR5tdcPgyhwxH/2H2UxydZMuk6cp/ix4784tcourpXdEKDH9X15kE8qnQTWT5KMQmw6R1og==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-0.96.0.tgz", + "integrity": "sha512-I+1Bc+U0U/yaYEBNmEe58tr/ca7HMJiN2DHXFKcuZrub27Anwp389LxrknkeMoeb1PBTcJqRis4fVXiQF06EJQ==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-ns-json-schema-draft-7": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-ns-json-schema-draft-7": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.1.1", @@ -546,13 +546,13 @@ } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-4": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-0.95.0.tgz", - "integrity": "sha512-JtePOEMfyGCyqWuzW+IAoCjaXJfQT/GVqcQSB/tHltU8yFOKygEnguV1eGeu22HvIk1UlE9K55XZ8SVu76pO5w==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-0.96.0.tgz", + "integrity": "sha512-bEQI/u15L6NLF7IW3DHEstJW64f8DSYqDR4vHdgrJ/GyA/c+N4K1St1LhKfA+WuBs7DX3JNKNZ3APAkq5gqWTA==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.95.0", - "@swagger-api/apidom-core": "^0.95.0", + "@swagger-api/apidom-ast": "^0.96.0", + "@swagger-api/apidom-core": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.1.1", @@ -560,15 +560,15 @@ } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-6": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-0.95.0.tgz", - "integrity": "sha512-KPtt6Dp7UOGm/MCYe2s8VsNR9usmk52Wj0FX6hkb4x8Mc6+RFvIM4grZuHuo+kgpaGC5NPC86LMsaB2joy3MfQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-0.96.0.tgz", + "integrity": "sha512-F6AsqMQjQd9NlR8AJd3fpsV1nFPAGgsw9g7DyY8uhbj77wUfoYhQTiTexBnq4GlhbXref4SQjnGZvi6AWwV3vw==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-error": "^0.95.0", - "@swagger-api/apidom-ns-json-schema-draft-4": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-error": "^0.96.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.1.1", @@ -576,15 +576,15 @@ } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-7": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-0.95.0.tgz", - "integrity": "sha512-J7zrSmw308cTkZBjEN2RFyejFVNUEcLZGbo6Pfh3Is4BTBnStAc0/sHumLOPx1r1asJNXFul9AxPnMZxtMKzfQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-0.96.0.tgz", + "integrity": "sha512-9yTNy4zDpoaTuCYsmliHh12ScyXgLyUuegXRVEE0ca0G0MqkVWIN5Si3EYnGIK5THGbz3c+NP1caHI8sl0+QMw==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-error": "^0.95.0", - "@swagger-api/apidom-ns-json-schema-draft-6": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-error": "^0.96.0", + "@swagger-api/apidom-ns-json-schema-draft-6": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.1.1", @@ -592,15 +592,15 @@ } }, "node_modules/@swagger-api/apidom-ns-openapi-2": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-0.95.0.tgz", - "integrity": "sha512-kag5DA32gptTtMd6fl0sKz0G9V7Ys1HA/eGlsPQVIdG2XYNn0DI+9Xek/D2cajuXJkdt907Ja+7ySGIoFvq49w==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-0.96.0.tgz", + "integrity": "sha512-Q85DT8OMkvP9cm8+CmHHZxBS1+uu/GJVZ0ypwW60aDysUkBNcbcEexCRvlGxF5QBr7sx2sQS+86qPusU4oMFmA==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-error": "^0.95.0", - "@swagger-api/apidom-ns-json-schema-draft-4": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-error": "^0.96.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.1.1", @@ -608,14 +608,14 @@ } }, "node_modules/@swagger-api/apidom-ns-openapi-3-0": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-0.95.0.tgz", - "integrity": "sha512-IAsnRx/ViUXVBZqivTG6C91roY48QlnuVejQps/gBzxHNkeb2OBalF+9BCXG0C8mj0fxqouNnz1clfpgOP+sGQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-0.96.0.tgz", + "integrity": "sha512-xiO+u/VtKRNi/KD8rkqcezUXY6JxVcPEpEIiTWkjy6LwamNu01futS/bsn6CnTN5ZbGO+Ikm5GQyYtlruy5fTw==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-error": "^0.95.0", - "@swagger-api/apidom-ns-json-schema-draft-4": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-error": "^0.96.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.1.1", @@ -623,14 +623,14 @@ } }, "node_modules/@swagger-api/apidom-ns-openapi-3-1": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-0.95.0.tgz", - "integrity": "sha512-oPVelaDpHSSZtLXMA13SwZa+3KTeO7qtaqs1XQD3EYYZbyRoNl74xIHeDCKEi94MnzpwnjIW81mFI8u2vmW5dA==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-0.96.0.tgz", + "integrity": "sha512-B9fviQaokRZhds3+rSYMHYI8pen/MAShRbfRlQRLvDEXnOy+Fo7cV8lbBbaG35ldnLPG2rHl0LS0qhyJd8z3Eg==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.95.0", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.95.0", + "@swagger-api/apidom-ast": "^0.96.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.1.1", @@ -638,14 +638,14 @@ } }, "node_modules/@swagger-api/apidom-ns-workflows-1": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-workflows-1/-/apidom-ns-workflows-1-0.95.0.tgz", - "integrity": "sha512-YQZl0Mm2ELjEG6uJtxEbKKRXsZO0ftAWdLwFmIPbIPfesGilOYJFCe8vEcKKwP3lLq8A4pyn3VCsF457JXiL5Q==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-workflows-1/-/apidom-ns-workflows-1-0.96.0.tgz", + "integrity": "sha512-PaVIcCFuZfVcVOsuk2Vk9p1EmMgkx5OYXGG0QlsJI94OiJiLPxJBUYCELYtKFwbjCPKqbe2T7uyyVEEAo8OyJQ==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.1.1", @@ -653,75 +653,75 @@ } }, "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-json": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-0.95.0.tgz", - "integrity": "sha512-rWmtf29bHnRNoE561nE3uPqpxnMqgDBnRq+veYyVRsIhg1AtpDpgl4nYJUzZ2Tg9Zn5Y/WBuZLeBhj06xVCgPg==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-0.96.0.tgz", + "integrity": "sha512-nmOc5f37Jcu8W1KNUnWPEUPHBhlInlxA+gzCcKG/3kyedKm+Oh8x4fDqhaW/MXUiWuI6K0QZ8MTxaYUqez2ztA==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-ns-api-design-systems": "^0.95.0", - "@swagger-api/apidom-parser-adapter-json": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-ns-api-design-systems": "^0.96.0", + "@swagger-api/apidom-parser-adapter-json": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-yaml": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-0.95.0.tgz", - "integrity": "sha512-5GRO2Fc+q5w3iNo0QBsge4n/WNr3IY2SRvrQKDHrXVF+tG6PFoKh+EXAOxzgUrcCy2A9R/bj2V+4xcdtZvxdxw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-0.96.0.tgz", + "integrity": "sha512-2Mv320Cmhs8u79GykuxbwhRUgy1MoOcEmeyLjHPftpEZI7BrsSQn9CbN/J/5tga5Z8Un/KgU9YffN/XSvLhOKg==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-ns-api-design-systems": "^0.95.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-ns-api-design-systems": "^0.96.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-2": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-0.95.0.tgz", - "integrity": "sha512-bd1zc3s50J7o7CYz8TMqco/Vs8HxpbMAYgiCFaKe6kbGjQtjnOFI9qcs+PkwhPrD6ici/B1IXrcPKhHGlTtwFw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-0.96.0.tgz", + "integrity": "sha512-ABfbr8ho6s4Edu6P1kNF8WTIPSlzGQ45T36Vg/AvPpmMoKOjZPeUKqs10Nw7Eoe91LJvdm8PlofNG19o8aRFsA==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.95.0", - "@swagger-api/apidom-parser-adapter-json": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-ns-asyncapi-2": "^0.96.0", + "@swagger-api/apidom-parser-adapter-json": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-0.95.0.tgz", - "integrity": "sha512-zSs9mGSWgufjLfg0P3qCj/wSvSf7rro3a5/wQ/lS4jpKuh1T0B+jHOS4kQZmXL32NJk/uSBGI4YLWodxaaOUCw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-0.96.0.tgz", + "integrity": "sha512-6xJedcLukkO/ZvUZnMPxZ5t/pcIjVOSzzysTNNcDKEsI4oNfoV2YjT315m+fUM/79W6e+aA9IlKygzj0s6ysVg==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.95.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-ns-asyncapi-2": "^0.96.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-json": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-0.95.0.tgz", - "integrity": "sha512-KWFOfSCZNUyIRgU6+3xc2xQu4GlnGnh42LO25DSvbJmlWAaU/9sbW4FBBWF4Z3gIjw32nCj6AoGLdbjQvp8PtQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-0.96.0.tgz", + "integrity": "sha512-k/XdEKP2+LJupwLvKtxkM6Ol7pYei3XinvhTsU+F1u8VQUpYTOHMVQ3vC5p/wtISOq+7Q0zHR0QANHVMbOudQg==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.95.0", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-error": "^0.95.0", + "@swagger-api/apidom-ast": "^0.96.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-error": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.1.1", @@ -731,135 +731,135 @@ } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-2": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-0.95.0.tgz", - "integrity": "sha512-0MFlrN/6VnnSUv2xeRxRYQv72rbO019D1gh4t8QB93LfOfFD/k8HxiSkChJaJEbKq+dZfW9Hw/tWhCMROOHNYQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-0.96.0.tgz", + "integrity": "sha512-bReqp5ncvgxD+nkX8cj7ILE0Xp3Vzocei96CMtwn1OU6FGSIu8IfjfJ0qSDavSJMxxhMXuCW85U+oZ+j9BzMLQ==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-ns-openapi-2": "^0.95.0", - "@swagger-api/apidom-parser-adapter-json": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-ns-openapi-2": "^0.96.0", + "@swagger-api/apidom-parser-adapter-json": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-0": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-0.95.0.tgz", - "integrity": "sha512-i7seQZpAQSHnYmDh7304eZqus/iNq8csw2c/rvhveZAw8vVuJzTVv/euPdPHdMfrdilHsIS0ZIHtZOwNfQD3kw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-0.96.0.tgz", + "integrity": "sha512-T07rPrjUBCCFuh3Xr7CGu+pjphokioMaxuAvQqtn7XgRCBbL76XFONlS1OSl3WATtrW7Sq+yxN5R3/f5C9evgA==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.95.0", - "@swagger-api/apidom-parser-adapter-json": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.96.0", + "@swagger-api/apidom-parser-adapter-json": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-1": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-0.95.0.tgz", - "integrity": "sha512-PapPDHPuyRYidnVZUsHEc36vCuK0FSNE7DFtDfh2QTOKg37taKuPTq5DNG0Az4C2sHey1M3AdeZEJOQUcsmvAw==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-0.96.0.tgz", + "integrity": "sha512-ovbpHrFuN6l2zJdUOmjF5y6wIZB13SanhvQpaOIALW8J9KYxkjhQH+h3lceYKUdTWfrdPkmmV150DAlcOy2alQ==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.95.0", - "@swagger-api/apidom-parser-adapter-json": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.96.0", + "@swagger-api/apidom-parser-adapter-json": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-2": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-0.95.0.tgz", - "integrity": "sha512-ntHZv5L1KiZMw2tVO+FAMzVGuZPKElT4LhS1aEYKlCwCVBIKGHVy1qXgrdo+MtKEK/+VtG8BvO8dE/W5hwO/9Q==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-0.96.0.tgz", + "integrity": "sha512-wJmq0/jQVzjxMqJMGWL8u/HyeVaaa7ImQcGe4z+eOR2vhLji0qbNu3S1WSP+n5OAhotHWAMfhHHZkoi0y+O5kQ==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-ns-openapi-2": "^0.95.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-ns-openapi-2": "^0.96.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-0.95.0.tgz", - "integrity": "sha512-IvP/jLhlUKXhd1bb4qTofyVQkEk9W7Ijg33st+ymNdZ3gmkwrCu/zdxzpHUA/+Z7P45UwjRh0WuYGJnevA4n7Q==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-0.96.0.tgz", + "integrity": "sha512-7Q82o/6XbiX9o+pqDC4iRr8onsx2HZoo6O54FA0YGc2nW9V5vEWXDZxp76psPlQA6oShkOT3ehd/wjz7ERUysA==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.95.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.96.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-0.95.0.tgz", - "integrity": "sha512-vWGB/9rKr/yG6+SLFhI4chT6WMmDqzJ77WICsuj6K1ZIb5cE6Ko1d37Lya8ghUvvh1xrtaF+XXZXprVwlpQx2A==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-0.96.0.tgz", + "integrity": "sha512-T2Z1X8iuxTkx8nhFKaW2RbJlytWqetXTzqMvCfjZsvFI9iyi1fVKeIkPNa06mFvGPWTeNuzd1tJOjZZjS/ljNA==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.95.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.96.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-workflows-json-1": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-workflows-json-1/-/apidom-parser-adapter-workflows-json-1-0.95.0.tgz", - "integrity": "sha512-yyMMB55D+5BqInuFcr1xo8eJtXoA2PxtridCOL9FeAZptPmUSKQuUM2iHYJ4+Jxc3Rg+DjCONDB1WHfGHnWqnQ==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-workflows-json-1/-/apidom-parser-adapter-workflows-json-1-0.96.0.tgz", + "integrity": "sha512-DY2CaEmM0VQ1nbNJAU1HHyHbCSPKRihhVx+5BTd1L4l8/092e0wXbNip0xLxH8jgJaOkAU85I8DXTIanlPsSvg==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-ns-workflows-1": "^0.95.0", - "@swagger-api/apidom-parser-adapter-json": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-ns-workflows-1": "^0.96.0", + "@swagger-api/apidom-parser-adapter-json": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-workflows-yaml-1": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-workflows-yaml-1/-/apidom-parser-adapter-workflows-yaml-1-0.95.0.tgz", - "integrity": "sha512-2/Lmb3vOAoQObwHdQJShjwvuT4i9hIMBHjplSXZLAFYSF65SN1YRCGwbJqKuC3W6mKB/lE3Fua19CFkRbw03Rg==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-workflows-yaml-1/-/apidom-parser-adapter-workflows-yaml-1-0.96.0.tgz", + "integrity": "sha512-Mj55ejT5TncLzANHw9VvopnN+xPjAeBhyw7Vt6FlDnPRJXpFwffhMmHZJo78N3gbwggM9gKPJsJLLjnW57Rt8Q==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-ns-workflows-1": "^0.95.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-ns-workflows-1": "^0.96.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-0.95.0.tgz", - "integrity": "sha512-gy0rsrbuK50InSMLyGVXvtWXb18qlxAUWSSc8kUk8gu9kthAytXyLmM/y9Pk/qKLxg+5O9xCqZVlPcTWc2vz0Q==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-0.96.0.tgz", + "integrity": "sha512-FI8uQEAU191TVz/cartkQO5uu+Psv+YxrCo7d/JrY5JsODIo+PuLfoTuOHM3rnZckWGCIgCIo2LWX4A58nEpiQ==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.95.0", - "@swagger-api/apidom-core": "^0.95.0", - "@swagger-api/apidom-error": "^0.95.0", + "@swagger-api/apidom-ast": "^0.96.0", + "@swagger-api/apidom-core": "^0.96.0", + "@swagger-api/apidom-error": "^0.96.0", "@types/ramda": "~0.29.6", "ramda": "~0.29.1", "ramda-adjunct": "^4.1.1", @@ -869,12 +869,12 @@ } }, "node_modules/@swagger-api/apidom-reference": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-0.95.0.tgz", - "integrity": "sha512-VAgt6t9SMaJ3Svxqlkptxe26mTKxhFdXZuHyFneLu+08Tb7AoE/kdLH3sO1iIVn+aiFTAkPTzWNn36OQqEHV/g==", + "version": "0.96.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-0.96.0.tgz", + "integrity": "sha512-hzEP3yX8ruoqDK3nmhIycdktzlA80vp2NBKmsgbCg3d+pnYjcSBWIkCp4922yxTNnrYbpQgioWIQ0sUJukjjEw==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.95.0", + "@swagger-api/apidom-core": "^0.96.0", "@types/ramda": "~0.29.6", "axios": "^1.4.0", "minimatch": "^7.4.3", @@ -884,27 +884,27 @@ "stampit": "^4.3.2" }, "optionalDependencies": { - "@swagger-api/apidom-error": "^0.95.0", - "@swagger-api/apidom-json-pointer": "^0.95.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.95.0", - "@swagger-api/apidom-ns-openapi-2": "^0.95.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.95.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.95.0", - "@swagger-api/apidom-ns-workflows-1": "^0.95.0", - "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.95.0", - "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.95.0", - "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.95.0", - "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.95.0", - "@swagger-api/apidom-parser-adapter-json": "^0.95.0", - "@swagger-api/apidom-parser-adapter-openapi-json-2": "^0.95.0", - "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.95.0", - "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.95.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-2": "^0.95.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.95.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.95.0", - "@swagger-api/apidom-parser-adapter-workflows-json-1": "^0.95.0", - "@swagger-api/apidom-parser-adapter-workflows-yaml-1": "^0.95.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.95.0" + "@swagger-api/apidom-error": "^0.96.0", + "@swagger-api/apidom-json-pointer": "^0.96.0", + "@swagger-api/apidom-ns-asyncapi-2": "^0.96.0", + "@swagger-api/apidom-ns-openapi-2": "^0.96.0", + "@swagger-api/apidom-ns-openapi-3-0": "^0.96.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.96.0", + "@swagger-api/apidom-ns-workflows-1": "^0.96.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.96.0", + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.96.0", + "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.96.0", + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.96.0", + "@swagger-api/apidom-parser-adapter-json": "^0.96.0", + "@swagger-api/apidom-parser-adapter-openapi-json-2": "^0.96.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.96.0", + "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.96.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-2": "^0.96.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.96.0", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.96.0", + "@swagger-api/apidom-parser-adapter-workflows-json-1": "^0.96.0", + "@swagger-api/apidom-parser-adapter-workflows-yaml-1": "^0.96.0", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.96.0" } }, "node_modules/@types/bootstrap": { @@ -936,49 +936,49 @@ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" }, "node_modules/@vue/compiler-core": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.19.tgz", - "integrity": "sha512-gj81785z0JNzRcU0Mq98E56e4ltO1yf8k5PQ+tV/7YHnbZkrM0fyFyuttnN8ngJZjbpofWE/m4qjKBiLl8Ju4w==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.21.tgz", + "integrity": "sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==", "dependencies": { "@babel/parser": "^7.23.9", - "@vue/shared": "3.4.19", + "@vue/shared": "3.4.21", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-dom": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.19.tgz", - "integrity": "sha512-vm6+cogWrshjqEHTzIDCp72DKtea8Ry/QVpQRYoyTIg9k7QZDX6D8+HGURjtmatfgM8xgCFtJJaOlCaRYRK3QA==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz", + "integrity": "sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==", "dependencies": { - "@vue/compiler-core": "3.4.19", - "@vue/shared": "3.4.19" + "@vue/compiler-core": "3.4.21", + "@vue/shared": "3.4.21" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.19.tgz", - "integrity": "sha512-LQ3U4SN0DlvV0xhr1lUsgLCYlwQfUfetyPxkKYu7dkfvx7g3ojrGAkw0AERLOKYXuAGnqFsEuytkdcComei3Yg==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz", + "integrity": "sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==", "dependencies": { "@babel/parser": "^7.23.9", - "@vue/compiler-core": "3.4.19", - "@vue/compiler-dom": "3.4.19", - "@vue/compiler-ssr": "3.4.19", - "@vue/shared": "3.4.19", + "@vue/compiler-core": "3.4.21", + "@vue/compiler-dom": "3.4.21", + "@vue/compiler-ssr": "3.4.21", + "@vue/shared": "3.4.21", "estree-walker": "^2.0.2", - "magic-string": "^0.30.6", - "postcss": "^8.4.33", + "magic-string": "^0.30.7", + "postcss": "^8.4.35", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.19.tgz", - "integrity": "sha512-P0PLKC4+u4OMJ8sinba/5Z/iDT84uMRRlrWzadgLA69opCpI1gG4N55qDSC+dedwq2fJtzmGald05LWR5TFfLw==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz", + "integrity": "sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==", "dependencies": { - "@vue/compiler-dom": "3.4.19", - "@vue/shared": "3.4.19" + "@vue/compiler-dom": "3.4.21", + "@vue/shared": "3.4.21" } }, "node_modules/@vue/devtools-api": { @@ -987,48 +987,48 @@ "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==" }, "node_modules/@vue/reactivity": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.19.tgz", - "integrity": "sha512-+VcwrQvLZgEclGZRHx4O2XhyEEcKaBi50WbxdVItEezUf4fqRh838Ix6amWTdX0CNb/b6t3Gkz3eOebfcSt+UA==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.21.tgz", + "integrity": "sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==", "dependencies": { - "@vue/shared": "3.4.19" + "@vue/shared": "3.4.21" } }, "node_modules/@vue/runtime-core": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.19.tgz", - "integrity": "sha512-/Z3tFwOrerJB/oyutmJGoYbuoadphDcJAd5jOuJE86THNZji9pYjZroQ2NFsZkTxOq0GJbb+s2kxTYToDiyZzw==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.21.tgz", + "integrity": "sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==", "dependencies": { - "@vue/reactivity": "3.4.19", - "@vue/shared": "3.4.19" + "@vue/reactivity": "3.4.21", + "@vue/shared": "3.4.21" } }, "node_modules/@vue/runtime-dom": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.19.tgz", - "integrity": "sha512-IyZzIDqfNCF0OyZOauL+F4yzjMPN2rPd8nhqPP2N1lBn3kYqJpPHHru+83Rkvo2lHz5mW+rEeIMEF9qY3PB94g==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz", + "integrity": "sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==", "dependencies": { - "@vue/runtime-core": "3.4.19", - "@vue/shared": "3.4.19", + "@vue/runtime-core": "3.4.21", + "@vue/shared": "3.4.21", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.19.tgz", - "integrity": "sha512-eAj2p0c429RZyyhtMRnttjcSToch+kTWxFPHlzGMkR28ZbF1PDlTcmGmlDxccBuqNd9iOQ7xPRPAGgPVj+YpQw==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.21.tgz", + "integrity": "sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==", "dependencies": { - "@vue/compiler-ssr": "3.4.19", - "@vue/shared": "3.4.19" + "@vue/compiler-ssr": "3.4.21", + "@vue/shared": "3.4.21" }, "peerDependencies": { - "vue": "3.4.19" + "vue": "3.4.21" } }, "node_modules/@vue/shared": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.19.tgz", - "integrity": "sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw==" + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.21.tgz", + "integrity": "sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==" }, "node_modules/anymatch": { "version": "3.1.3", @@ -2105,9 +2105,9 @@ } }, "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", "optional": true, "dependencies": { "detect-libc": "^2.0.0", @@ -2720,11 +2720,11 @@ } }, "node_modules/side-channel": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", - "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.4", "object-inspect": "^1.13.1" @@ -3000,15 +3000,15 @@ "peer": true }, "node_modules/vue": { - "version": "3.4.19", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.19.tgz", - "integrity": "sha512-W/7Fc9KUkajFU8dBeDluM4sRGc/aa4YJnOYck8dkjgZoXtVsn3OeTGni66FV1l3+nvPA7VBFYtPioaGKUmEADw==", + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.21.tgz", + "integrity": "sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==", "dependencies": { - "@vue/compiler-dom": "3.4.19", - "@vue/compiler-sfc": "3.4.19", - "@vue/runtime-dom": "3.4.19", - "@vue/server-renderer": "3.4.19", - "@vue/shared": "3.4.19" + "@vue/compiler-dom": "3.4.21", + "@vue/compiler-sfc": "3.4.21", + "@vue/runtime-dom": "3.4.21", + "@vue/server-renderer": "3.4.21", + "@vue/shared": "3.4.21" }, "peerDependencies": { "typescript": "*" From 85473762c5b002396445c10450d234d08a940a88 Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Fri, 1 Mar 2024 21:56:57 +1300 Subject: [PATCH 06/10] Update go-release-action --- .github/workflows/release-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml index 0a0d365..fa15f26 100644 --- a/.github/workflows/release-build.yml +++ b/.github/workflows/release-build.yml @@ -33,7 +33,7 @@ jobs: - run: npm run package # build the binaries - - uses: wangyoucao577/go-release-action@v1.46 + - uses: wangyoucao577/go-release-action@v1.49 with: github_token: ${{ secrets.GITHUB_TOKEN }} goos: ${{ matrix.goos }} From 23b1261cf9e1d497e248725653884e9381853d5c Mon Sep 17 00:00:00 2001 From: Ralph Slooten Date: Sat, 2 Mar 2024 00:13:18 +1300 Subject: [PATCH 07/10] Chore: Tag names now allow `.` and must be a minimum of 1 character --- config/config.go | 2 +- internal/tools/tags.go | 2 +- server/ui-src/components/message/Message.vue | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/config/config.go b/config/config.go index 6e48680..0efc32c 100644 --- a/config/config.go +++ b/config/config.go @@ -85,7 +85,7 @@ var ( SMTPCLITags string // ValidTagRegexp represents a valid tag - ValidTagRegexp = regexp.MustCompile(`^([a-zA-Z0-9\-\ \_]){3,}$`) + ValidTagRegexp = regexp.MustCompile(`^([a-zA-Z0-9\-\ \_\.]){1,}$`) // SMTPTags are expressions to apply tags to new mail SMTPTags []AutoTag diff --git a/internal/tools/tags.go b/internal/tools/tags.go index 27e94f7..8496e06 100644 --- a/internal/tools/tags.go +++ b/internal/tools/tags.go @@ -10,7 +10,7 @@ import ( var ( // Invalid tag characters regex - tagsInvalidChars = regexp.MustCompile(`[^a-zA-Z0-9\-\ \_]`) + tagsInvalidChars = regexp.MustCompile(`[^a-zA-Z0-9\-\ \_\.]`) // Regex to catch multiple spaces multiSpaceRe = regexp.MustCompile(`(\s+)`) diff --git a/server/ui-src/components/message/Message.vue b/server/ui-src/components/message/Message.vue index 2a04ce9..a4fbc3e 100644 --- a/server/ui-src/components/message/Message.vue +++ b/server/ui-src/components/message/Message.vue @@ -301,7 +301,7 @@ export default { Reply-To - + {{ t.Name }} < @@ -337,11 +337,11 @@ export default {
Invalid tag name
@@ -491,7 +491,7 @@ export default {
-