diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml index 314b4fc..9ce5b30 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.37 + - uses: wangyoucao577/go-release-action@v1.38 with: github_token: ${{ secrets.GITHUB_TOKEN }} goos: ${{ matrix.goos }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 59a923b..5290ffe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,26 @@ Notable changes to Mailpit will be documented in this file. +## [v1.6.6] + +### API +- Set Access-Control-Allow-Headers when --api-cors is set +- Include correct start value in search reponse + +### Feature +- Option to ignore duplicate Message-IDs + +### Libs +- Update node modules +- Update Go modules + +### Swagger +- Update swagger field descriptions + +### UI +- Style Undisclosed recipients in message view + + ## [v1.6.5] ### Feature diff --git a/README.md b/README.md index 1e07f58..f9ea46b 100644 --- a/README.md +++ b/README.md @@ -72,20 +72,14 @@ See [Docker instructions](https://github.com/axllent/mailpit/wiki/Docker-images) To build Mailpit from source see [building from source](https://github.com/axllent/mailpit/wiki/Building-from-source). +### Testing Mailpit + +Please refer to [the documentation](https://github.com/axllent/mailpit/wiki/Testing-Mailpit) of how to easily test email delivery to Mailpit. + + ### Configuring sendmail -There are several different options available: - -You can use `mailpit sendmail` as your sendmail configuration in `php.ini`: -``` -sendmail_path = /usr/local/bin/mailpit sendmail -``` - -If Mailpit is found on the same host as sendmail, you can symlink the Mailpit binary to sendmail, eg: `ln -s /usr/local/bin/mailpit /usr/sbin/sendmail` (only if Mailpit is running on default 1025 port). - -You can use your default system `sendmail` binary to route directly to port `1025` (configurable) by calling `/usr/sbin/sendmail -S localhost:1025`. - -You can build a Mailpit-specific sendmail binary from source (see [building from source](https://github.com/axllent/mailpit/wiki/Building-from-source)). +Mailpit's SMTP server (by default on port 1025), so you will likely need to configure your sending application to deliver mail via that port. A common MTA (Mail Transfer Agent) that delivers system emails to a SMTP server is `sendmail`, used by many applications including PHP. Mailpit can also act as substitute for sendmail. For instructions of how to set this up, please refer to the [sendmail documentation](https://github.com/axllent/mailpit/wiki/Configuring-sendmail). ## Why rewrite MailHog? diff --git a/cmd/root.go b/cmd/root.go index c639323..b691f1e 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -87,6 +87,7 @@ func init() { rootCmd.Flags().StringVar(&config.Webroot, "webroot", config.Webroot, "Set the webroot for web UI & API") rootCmd.Flags().StringVar(&server.AccessControlAllowOrigin, "api-cors", server.AccessControlAllowOrigin, "Set API CORS Access-Control-Allow-Origin header") rootCmd.Flags().BoolVar(&config.UseMessageDates, "use-message-dates", config.UseMessageDates, "Use message dates as the received dates") + rootCmd.Flags().BoolVar(&config.IgnoreDuplicateIDs, "ignore-duplicate-ids", config.IgnoreDuplicateIDs, "Ignore duplicate messages (by Message-Id)") rootCmd.Flags().StringVar(&config.UIAuthFile, "ui-auth-file", config.UIAuthFile, "A password file for web UI authentication") rootCmd.Flags().StringVar(&config.UITLSCert, "ui-tls-cert", config.UITLSCert, "TLS certificate for web UI (HTTPS) - requires ui-tls-key") @@ -97,11 +98,11 @@ func init() { rootCmd.Flags().StringVar(&config.SMTPTLSCert, "smtp-tls-cert", config.SMTPTLSCert, "TLS certificate for SMTP (STARTTLS) - requires smtp-tls-key") rootCmd.Flags().StringVar(&config.SMTPTLSKey, "smtp-tls-key", config.SMTPTLSKey, "TLS key for SMTP (STARTTLS) - requires smtp-tls-cert") rootCmd.Flags().BoolVar(&config.SMTPAuthAllowInsecure, "smtp-auth-allow-insecure", config.SMTPAuthAllowInsecure, "Enable insecure PLAIN & LOGIN authentication") - rootCmd.Flags().StringVarP(&config.SMTPCLITags, "tag", "t", config.SMTPCLITags, "Tag new messages matching filters") rootCmd.Flags().StringVar(&config.SMTPRelayConfigFile, "smtp-relay-config", config.SMTPRelayConfigFile, "SMTP configuration file to allow releasing messages") rootCmd.Flags().BoolVar(&config.SMTPRelayAllIncoming, "smtp-relay-all", config.SMTPRelayAllIncoming, "Relay all incoming messages via external SMTP server (caution!)") + rootCmd.Flags().StringVarP(&config.SMTPCLITags, "tag", "t", config.SMTPCLITags, "Tag new messages matching filters") rootCmd.Flags().BoolVarP(&logger.QuietLogging, "quiet", "q", logger.QuietLogging, "Quiet logging (errors only)") rootCmd.Flags().BoolVarP(&logger.VerboseLogging, "verbose", "v", logger.VerboseLogging, "Verbose logging") @@ -201,8 +202,8 @@ func initConfigFromEnv() { if getEnabledFromEnv("MP_USE_MESSAGE_DATES") { config.UseMessageDates = true } - if getEnabledFromEnv("MP_USE_MESSAGE_DATES") { - config.UseMessageDates = true + if getEnabledFromEnv("MP_IGNORE_DUPLICATE_IDS") { + config.IgnoreDuplicateIDs = true } if getEnabledFromEnv("MP_QUIET") { logger.QuietLogging = true diff --git a/config/config.go b/config/config.go index 75aac98..de65bab 100644 --- a/config/config.go +++ b/config/config.go @@ -65,6 +65,9 @@ var ( // SMTPAuthAcceptAny accepts any username/password including none SMTPAuthAcceptAny bool + // IgnoreDuplicateIDs will skip messages with the same ID + IgnoreDuplicateIDs bool + // SMTPCLITags is used to map the CLI args SMTPCLITags string diff --git a/go.mod b/go.mod index c2c12b8..25876fd 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/tg123/go-htpasswd v1.2.1 golang.org/x/text v0.9.0 gopkg.in/yaml.v3 v3.0.1 - modernc.org/sqlite v1.21.2 + modernc.org/sqlite v1.22.1 ) require ( @@ -54,7 +54,7 @@ require ( lukechampine.com/uint128 v1.3.0 // indirect modernc.org/cc/v3 v3.40.0 // indirect modernc.org/ccgo/v3 v3.16.13 // indirect - modernc.org/libc v1.22.4 // indirect + modernc.org/libc v1.22.5 // indirect modernc.org/mathutil v1.5.0 // indirect modernc.org/memory v1.5.0 // indirect modernc.org/opt v0.1.3 // indirect diff --git a/go.sum b/go.sum index ae84e41..ee8797a 100644 --- a/go.sum +++ b/go.sum @@ -196,6 +196,8 @@ modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk= modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM= modernc.org/libc v1.22.4 h1:wymSbZb0AlrjdAVX3cjreCHTPCpPARbQXNz6BHPzdwQ= modernc.org/libc v1.22.4/go.mod h1:jj+Z7dTNX8fBScMVNRAYZ/jF91K8fdT2hYMThc3YjBY= +modernc.org/libc v1.22.5 h1:91BNch/e5B0uPbJFgqbxXuOnxBQjlS//icfQEGmvyjE= +modernc.org/libc v1.22.5/go.mod h1:jj+Z7dTNX8fBScMVNRAYZ/jF91K8fdT2hYMThc3YjBY= modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ= modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds= @@ -204,9 +206,13 @@ modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= modernc.org/sqlite v1.21.2 h1:ixuUG0QS413Vfzyx6FWx6PYTmHaOegTY+hjzhn7L+a0= modernc.org/sqlite v1.21.2/go.mod h1:cxbLkB5WS32DnQqeH4h4o1B0eMr8W/y8/RGuxQ3JsC0= +modernc.org/sqlite v1.22.1 h1:P2+Dhp5FR1RlVRkQ3dDfCiv3Ok8XPxqpe70IjYVA9oE= +modernc.org/sqlite v1.22.1/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk= modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY= modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= modernc.org/tcl v1.15.1 h1:mOQwiEK4p7HruMZcwKTZPw/aqtGM4aY00uzWhlKKYws= +modernc.org/tcl v1.15.2 h1:C4ybAYCGJw968e+Me18oW55kD/FexcHbqH2xak1ROSY= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= modernc.org/z v1.7.0 h1:xkDw/KepgEjeizO2sNco+hqYkU12taxQFqPEmgm1GWE= +modernc.org/z v1.7.3 h1:zDJf6iHjrnB+WRD88stbXokugjyc0/pB91ri1gO6LZY= diff --git a/package-lock.json b/package-lock.json index f6a50d0..93b6e32 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,9 +35,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", - "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", + "version": "7.21.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz", + "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==", "bin": { "parser": "bin/babel-parser.js" }, @@ -46,9 +46,9 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.21.0.tgz", - "integrity": "sha512-TDD4UJzos3JJtM+tHX+w2Uc+KWj7GV+VKKFdMVd2Rx8sdA19hcc3P3AHFYd5LVOw+pYuSd5lICC3gm52B6Rwxw==", + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.21.5.tgz", + "integrity": "sha512-FRqFlFKNazWYykft5zvzuEl1YyTDGsIRrjV9rvxvYkUC7W/ueBng1X68Xd6uRMzAaJ0xMKn08/wem5YS1lpX8w==", "dependencies": { "core-js-pure": "^3.25.1", "regenerator-runtime": "^0.13.11" @@ -58,9 +58,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.17.tgz", - "integrity": "sha512-E6VAZwN7diCa3labs0GYvhEPL2M94WLF8A+czO8hfjREXxba8Ng7nM5VxV+9ihNXIY1iQO1XxUU4P7hbqbICxg==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.18.tgz", + "integrity": "sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==", "cpu": [ "arm" ], @@ -74,9 +74,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.17.tgz", - "integrity": "sha512-jaJ5IlmaDLFPNttv0ofcwy/cfeY4bh/n705Tgh+eLObbGtQBK3EPAu+CzL95JVE4nFAliyrnEu0d32Q5foavqg==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz", + "integrity": "sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==", "cpu": [ "arm64" ], @@ -90,9 +90,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.17.tgz", - "integrity": "sha512-446zpfJ3nioMC7ASvJB1pszHVskkw4u/9Eu8s5yvvsSDTzYh4p4ZIRj0DznSl3FBF0Z/mZfrKXTtt0QCoFmoHA==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.18.tgz", + "integrity": "sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==", "cpu": [ "x64" ], @@ -106,9 +106,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.17.tgz", - "integrity": "sha512-m/gwyiBwH3jqfUabtq3GH31otL/0sE0l34XKpSIqR7NjQ/XHQ3lpmQHLHbG8AHTGCw8Ao059GvV08MS0bhFIJQ==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz", + "integrity": "sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==", "cpu": [ "arm64" ], @@ -122,9 +122,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.17.tgz", - "integrity": "sha512-4utIrsX9IykrqYaXR8ob9Ha2hAY2qLc6ohJ8c0CN1DR8yWeMrTgYFjgdeQ9LIoTOfLetXjuCu5TRPHT9yKYJVg==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz", + "integrity": "sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==", "cpu": [ "x64" ], @@ -138,9 +138,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.17.tgz", - "integrity": "sha512-4PxjQII/9ppOrpEwzQ1b0pXCsFLqy77i0GaHodrmzH9zq2/NEhHMAMJkJ635Ns4fyJPFOlHMz4AsklIyRqFZWA==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz", + "integrity": "sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==", "cpu": [ "arm64" ], @@ -154,9 +154,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.17.tgz", - "integrity": "sha512-lQRS+4sW5S3P1sv0z2Ym807qMDfkmdhUYX30GRBURtLTrJOPDpoU0kI6pVz1hz3U0+YQ0tXGS9YWveQjUewAJw==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz", + "integrity": "sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==", "cpu": [ "x64" ], @@ -170,9 +170,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.17.tgz", - "integrity": "sha512-biDs7bjGdOdcmIk6xU426VgdRUpGg39Yz6sT9Xp23aq+IEHDb/u5cbmu/pAANpDB4rZpY/2USPhCA+w9t3roQg==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz", + "integrity": "sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==", "cpu": [ "arm" ], @@ -186,9 +186,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.17.tgz", - "integrity": "sha512-2+pwLx0whKY1/Vqt8lyzStyda1v0qjJ5INWIe+d8+1onqQxHLLi3yr5bAa4gvbzhZqBztifYEu8hh1La5+7sUw==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz", + "integrity": "sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==", "cpu": [ "arm64" ], @@ -202,9 +202,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.17.tgz", - "integrity": "sha512-IBTTv8X60dYo6P2t23sSUYym8fGfMAiuv7PzJ+0LcdAndZRzvke+wTVxJeCq4WgjppkOpndL04gMZIFvwoU34Q==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz", + "integrity": "sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==", "cpu": [ "ia32" ], @@ -218,9 +218,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.17.tgz", - "integrity": "sha512-WVMBtcDpATjaGfWfp6u9dANIqmU9r37SY8wgAivuKmgKHE+bWSuv0qXEFt/p3qXQYxJIGXQQv6hHcm7iWhWjiw==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz", + "integrity": "sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==", "cpu": [ "loong64" ], @@ -234,9 +234,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.17.tgz", - "integrity": "sha512-2kYCGh8589ZYnY031FgMLy0kmE4VoGdvfJkxLdxP4HJvWNXpyLhjOvxVsYjYZ6awqY4bgLR9tpdYyStgZZhi2A==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz", + "integrity": "sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==", "cpu": [ "mips64el" ], @@ -250,9 +250,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.17.tgz", - "integrity": "sha512-KIdG5jdAEeAKogfyMTcszRxy3OPbZhq0PPsW4iKKcdlbk3YE4miKznxV2YOSmiK/hfOZ+lqHri3v8eecT2ATwQ==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz", + "integrity": "sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==", "cpu": [ "ppc64" ], @@ -266,9 +266,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.17.tgz", - "integrity": "sha512-Cj6uWLBR5LWhcD/2Lkfg2NrkVsNb2sFM5aVEfumKB2vYetkA/9Uyc1jVoxLZ0a38sUhFk4JOVKH0aVdPbjZQeA==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz", + "integrity": "sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==", "cpu": [ "riscv64" ], @@ -282,9 +282,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.17.tgz", - "integrity": "sha512-lK+SffWIr0XsFf7E0srBjhpkdFVJf3HEgXCwzkm69kNbRar8MhezFpkIwpk0qo2IOQL4JE4mJPJI8AbRPLbuOQ==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz", + "integrity": "sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==", "cpu": [ "s390x" ], @@ -298,9 +298,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.17.tgz", - "integrity": "sha512-XcSGTQcWFQS2jx3lZtQi7cQmDYLrpLRyz1Ns1DzZCtn898cWfm5Icx/DEWNcTU+T+tyPV89RQtDnI7qL2PObPg==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz", + "integrity": "sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==", "cpu": [ "x64" ], @@ -314,9 +314,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.17.tgz", - "integrity": "sha512-RNLCDmLP5kCWAJR+ItLM3cHxzXRTe4N00TQyQiimq+lyqVqZWGPAvcyfUBM0isE79eEZhIuGN09rAz8EL5KdLA==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz", + "integrity": "sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==", "cpu": [ "x64" ], @@ -330,9 +330,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.17.tgz", - "integrity": "sha512-PAXswI5+cQq3Pann7FNdcpSUrhrql3wKjj3gVkmuz6OHhqqYxKvi6GgRBoaHjaG22HV/ZZEgF9TlS+9ftHVigA==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz", + "integrity": "sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==", "cpu": [ "x64" ], @@ -346,9 +346,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.17.tgz", - "integrity": "sha512-V63egsWKnx/4V0FMYkr9NXWrKTB5qFftKGKuZKFIrAkO/7EWLFnbBZNM1CvJ6Sis+XBdPws2YQSHF1Gqf1oj/Q==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz", + "integrity": "sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==", "cpu": [ "x64" ], @@ -362,9 +362,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.17.tgz", - "integrity": "sha512-YtUXLdVnd6YBSYlZODjWzH+KzbaubV0YVd6UxSfoFfa5PtNJNaW+1i+Hcmjpg2nEe0YXUCNF5bkKy1NnBv1y7Q==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz", + "integrity": "sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==", "cpu": [ "arm64" ], @@ -378,9 +378,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.17.tgz", - "integrity": "sha512-yczSLRbDdReCO74Yfc5tKG0izzm+lPMYyO1fFTcn0QNwnKmc3K+HdxZWLGKg4pZVte7XVgcFku7TIZNbWEJdeQ==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz", + "integrity": "sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==", "cpu": [ "ia32" ], @@ -394,9 +394,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.17.tgz", - "integrity": "sha512-FNZw7H3aqhF9OyRQbDDnzUApDXfC1N6fgBhkqEO2jvYCJ+DxMTfZVqg3AX0R1khg1wHTBRD5SdcibSJ+XF6bFg==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz", + "integrity": "sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==", "cpu": [ "x64" ], @@ -410,9 +410,9 @@ } }, "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.0.tgz", - "integrity": "sha512-92uQ5ARf7UXYrzaFcAX3T2rTvaS9Z1//ukV+DqjACM4c8s0ZBQd7ayJU5Dh2AFLD/Ayuyz4uMmxQec8q3U4Ong==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.1.tgz", + "integrity": "sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==" }, "node_modules/@lit/reactive-element": { "version": "1.6.1", @@ -432,218 +432,218 @@ } }, "node_modules/@swagger-api/apidom-ast": { - "version": "0.69.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-0.69.0.tgz", - "integrity": "sha512-JsRyi1Ir3VeNSSWmIFqgaFOQCIUvCoKcfmOcU/h4Jz1IOkQij1vj3qEFln4J9sByOWHrhA8zD1Cf+LnXkbGVZg==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-0.69.3.tgz", + "integrity": "sha512-orGw/gihk7RmorxibwalthDS58B7QaEBd31fK+/aFx6QqEO1tEO35F850BiL2B5C8TaK8C2Tey01AZTXCxYmfw==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0", "stampit": "=4.3.2", "unraw": "=2.0.1" } }, "node_modules/@swagger-api/apidom-core": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-0.69.2.tgz", - "integrity": "sha512-av9vS1SbXxGJvCt4QggrIvS8dr3ZfL6jxrNQGr4cq1wFY/n5ruj0RsXix208c3Zp1Kua3QVOUaJvA+7RdT1VJA==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-0.69.3.tgz", + "integrity": "sha512-EIQiJUuT/V9nGkHOYYFP0QNgAW7Y4QwrQzldDzy9ltcHbOKY3TNh/QzYvO0+HvKSv9W7u7WTMH/kaRaSsaZsGw==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.69.0", - "@types/ramda": "=0.28.23", + "@swagger-api/apidom-ast": "^0.69.3", + "@types/ramda": "=0.29.0", "minim": "=0.23.8", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0", "short-unique-id": "=4.4.4", "stampit": "=4.3.2" } }, "node_modules/@swagger-api/apidom-json-pointer": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-0.69.2.tgz", - "integrity": "sha512-ipu94QNw8ZKWC+pfie5IyIzVImR5N0PANXkUSfFon5L4aMAtggKpZn7aUv/2Cxn51JsCvjZwkXT7PaJ8RddpxA==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-0.69.3.tgz", + "integrity": "sha512-VYXqLY8f2fkaS/d+vVQEMEOEZRXAgGm5tCMx4C7uaU+wC+SKPH/zTh+qElbkaXQr4nfLjbphBsHh31doCyBEjw==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0" + "@swagger-api/apidom-core": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0" } }, "node_modules/@swagger-api/apidom-ns-api-design-systems": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-0.69.2.tgz", - "integrity": "sha512-JnOPiDvPfNH/6WWVBqBwK0oIHscHECtL1iZDUE9nB4NSbyoV10oulkuhHNAO9BImqtU4rxtWbXyTL1MEuUdHHQ==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-0.69.3.tgz", + "integrity": "sha512-oTwIG8LyKnU4/m8BtAOc+X572+nH4gjxITYtw0L8f4a8Iv1b8LHS0KRzG7c/LVUGtMijpv3aBKPV6QvWhjrrtg==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@swagger-api/apidom-ns-openapi-3-1": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0", + "@swagger-api/apidom-core": "^0.69.3", + "@swagger-api/apidom-ns-openapi-3-1": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0", "stampit": "=4.3.2" } }, "node_modules/@swagger-api/apidom-ns-asyncapi-2": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-0.69.2.tgz", - "integrity": "sha512-SOg9P4rM5Aj2jabt4njmFbZTRMX8/vRHgiDL9vE+uz7s6j64B9QBSFF42j17cEVq6ToqQ7jtu40f1D7K62puQA==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-0.69.3.tgz", + "integrity": "sha512-98HgNbZWqPHqf+EyXs/GcAnayA08/mfN7YlXIRRIys+rll4M/1b+ap+BkTnJ+le3Kra7DhIQ8ucQuEJ+Ik1Sxg==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@swagger-api/apidom-ns-json-schema-draft-7": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0", + "@swagger-api/apidom-core": "^0.69.3", + "@swagger-api/apidom-ns-json-schema-draft-7": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0", "stampit": "=4.3.2" } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-4": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-0.69.2.tgz", - "integrity": "sha512-8yB4afGBAX+vN5oNRxZMWWS/2G0Q9VUzlL2AOu0Q70FQkscbjQcsb6QX9LbHFMrwi3MgOgE0ewMncpcwskuoXA==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-0.69.3.tgz", + "integrity": "sha512-/tMeoz1IHEblc3OwWC812NQFLITOnexjGVujG5Wvsr9ZnTkRb+0g7CbXuooujwfcEY+++o2+kCUgy4SBQFIIlQ==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0", + "@swagger-api/apidom-core": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0", "stampit": "=4.3.2" } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-6": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-0.69.2.tgz", - "integrity": "sha512-RPazXv7L37vrdqHeFy/ZrKVz+vnVOqEFrHFefaq2L5avnzInVTRsTJm+61q0jqnckozz426Gbg5wJgq+Yvpbqg==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-0.69.3.tgz", + "integrity": "sha512-B/6zPFYW1xE66Uc/jOdZVZMEe0+444heTMlpGJGejTy6pNRxCTOsv+B63QzctJv410dHPxGeMRZMeff9wQPBDA==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@swagger-api/apidom-ns-json-schema-draft-4": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0", + "@swagger-api/apidom-core": "^0.69.3", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0", "stampit": "=4.3.2" } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-7": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-0.69.2.tgz", - "integrity": "sha512-pQQE85xjv+UaObQzkhpOPochQ8GhWETAUuzDxHrgKmw20Ca03QAC7RV3tbSnkIbI5cy9wpb4gRM0T5/PzZnBYA==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-0.69.3.tgz", + "integrity": "sha512-EkgPlKPQZ3XBkbxAFh2lXsLcyIwRikARFD3RlupsKjAHVFbH7cImbPxb+MnjacfwgVreMk34OWuXqjnGZ8lG1Q==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@swagger-api/apidom-ns-json-schema-draft-6": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0", + "@swagger-api/apidom-core": "^0.69.3", + "@swagger-api/apidom-ns-json-schema-draft-6": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0", "stampit": "=4.3.2" } }, "node_modules/@swagger-api/apidom-ns-openapi-3-0": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-0.69.2.tgz", - "integrity": "sha512-OroXRC+Q1btrpuQ3+ZbMi9XGYiab3YQMg/Rx1wpszbW5C5IPtaa2/FtMcBGYWR5IIdxi+bAT8itbMBGSCcz/Ew==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-0.69.3.tgz", + "integrity": "sha512-iScwP+SzX8SJMrgChZbdS60Ode/zXfesNaDA+HkNBLbfSrri4/C5FTB0gfWOG0gCGPq+1K5dHlgLrEgogfAARw==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@swagger-api/apidom-ns-json-schema-draft-4": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0", + "@swagger-api/apidom-core": "^0.69.3", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0", "stampit": "=4.3.2" } }, "node_modules/@swagger-api/apidom-ns-openapi-3-1": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-0.69.2.tgz", - "integrity": "sha512-2yyUmdbvkDnZuOGDduvlp4dtLL/8a1PCR+Ajk9+PR4ZTdbMFtZWcr/knGc33Rtr8eXQwd4NPypFHhTLCEHiGwg==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-0.69.3.tgz", + "integrity": "sha512-J+yIsTBTn7rzfj+vaCXRRdOCrL4kxwnS3P/h4lXb82EZnPU/EbJi+C0LK7O24/vXpeBVRr+OpDfnhpospanMJg==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@swagger-api/apidom-ns-openapi-3-0": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0", + "@swagger-api/apidom-core": "^0.69.3", + "@swagger-api/apidom-ns-openapi-3-0": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0", "stampit": "=4.3.2" } }, "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-json": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-0.69.2.tgz", - "integrity": "sha512-qVL8JrnsjuD3uS1PTNoBTKd5YXPs2SfxRGyKwcmrUXFS+jJmbyYF04xmCgXkwI6TZYjY6KlNb8vmOt4Xr8FqnA==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-0.69.3.tgz", + "integrity": "sha512-y8xOaSaZVphITajH12T1EHLuZB9kw79DTdQRYoMC+BqZQbsPv3/mLWXS1STQU9oR/PZBA9FJcgAFdThaRgi8UA==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@swagger-api/apidom-ns-api-design-systems": "^0.69.2", - "@swagger-api/apidom-parser-adapter-json": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0" + "@swagger-api/apidom-core": "^0.69.3", + "@swagger-api/apidom-ns-api-design-systems": "^0.69.3", + "@swagger-api/apidom-parser-adapter-json": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-yaml": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-0.69.2.tgz", - "integrity": "sha512-vMWfQiXcSeo9XSJJ1Yny4BAUw/3RBbBTsPBbNSsnMtpcDhBbodxdko1CeYkGc8sKM0QyeTFPJuiVhb3kGidbcQ==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-0.69.3.tgz", + "integrity": "sha512-zMc+Dy7zl7cT8YduaUEpvLkRDVfZp8jZ1v13VjueX/VhsSXK0DW+OX/Mc8CU1Qx6Gg6tUMKxqmILdXZwxCrh6Q==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@swagger-api/apidom-ns-api-design-systems": "^0.69.2", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0" + "@swagger-api/apidom-core": "^0.69.3", + "@swagger-api/apidom-ns-api-design-systems": "^0.69.3", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-2": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-0.69.2.tgz", - "integrity": "sha512-/WDVzOcGFxSgBVCiXHVnfiOeYIWtn2RG/Bnn8leUmWRN9oRBiCS3Lh60qWVpvs4BOVntL7SYJnC+buicKD1iJA==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-0.69.3.tgz", + "integrity": "sha512-BbsBxxZxTMX2rKgVKJtqPoAsER0JvCe1pt3NUBLuQssugvpwaqimIsKC65dwspHFGSn0CVdBKA4n/XhZ3aT7tw==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@swagger-api/apidom-ns-asyncapi-2": "^0.69.2", - "@swagger-api/apidom-parser-adapter-json": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0" + "@swagger-api/apidom-core": "^0.69.3", + "@swagger-api/apidom-ns-asyncapi-2": "^0.69.3", + "@swagger-api/apidom-parser-adapter-json": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-0.69.2.tgz", - "integrity": "sha512-qr5epdayokdYyPIJITyqWmUxdknhgPbXhWpSxdEvM8UHgtyutvvvFenFM5pXD1ft8I/uv9oj2WNZxCH2mpsR1g==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-0.69.3.tgz", + "integrity": "sha512-lae39qaKrkls+iVzYuc9CUyCbRl80wNK8iBWriSVETv5IwlVS6wywtTxCqtzcpd5K+m9KqXAlSkd+Z2AS9cWuQ==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@swagger-api/apidom-ns-asyncapi-2": "^0.69.2", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0" + "@swagger-api/apidom-core": "^0.69.3", + "@swagger-api/apidom-ns-asyncapi-2": "^0.69.3", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-json": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-0.69.2.tgz", - "integrity": "sha512-mRXrf9bz2lxf9DY2n2WkB3GlQ8MXRqKBwpXLwjDqqve25Wf6X8QNzfz5ykYORQMuyDIgPq/8aMet7yjHRNtcUQ==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-0.69.3.tgz", + "integrity": "sha512-Z1CqG9OcV4WVESdQ1D0s5JUa2jeF8hpw4RupMDJ4lRoKTVeIDS5Qb7OOhIGeKpK2DgMep9SN2ULYJdgldPtq/A==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.69.0", - "@swagger-api/apidom-core": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0", + "@swagger-api/apidom-ast": "^0.69.3", + "@swagger-api/apidom-core": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0", "stampit": "=4.3.2", "tree-sitter": "=0.20.1", "tree-sitter-json": "=0.20.0", @@ -651,77 +651,77 @@ } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-0": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-0.69.2.tgz", - "integrity": "sha512-NGOX9NcrAy1RX1f+uA2rLZbgVWte6O4HRVk0eVjuR3NKjJzuXFdfaYJUpT8IGJx2cW6HsQtJU+BpR+LMfZnM9A==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-0.69.3.tgz", + "integrity": "sha512-f5Xby5hAGy4VujkV74UA61UkSVRsNzhcBaW0IIapVVepFEclfU7J3dGvfkMIXv5Bg0infGeKddIUZUY61JN88w==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@swagger-api/apidom-ns-openapi-3-0": "^0.69.2", - "@swagger-api/apidom-parser-adapter-json": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0" + "@swagger-api/apidom-core": "^0.69.3", + "@swagger-api/apidom-ns-openapi-3-0": "^0.69.3", + "@swagger-api/apidom-parser-adapter-json": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-1": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-0.69.2.tgz", - "integrity": "sha512-agafo94Uru42/nnydZ2wEt3ENAB6LWAd9l4d8wZL0ifAkjx8fv8rfH601LpFBQq3iD2DlGm0+UpFZXLfBuuQbQ==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-0.69.3.tgz", + "integrity": "sha512-Yq3k/d89Nmf+ePD5EIIkhXNti2Ru5XMqOXDbNQGKHH00e252Q+c+QF2A7Pgdy0xP3oA9OoYTGHLtL0ncmzYB9A==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@swagger-api/apidom-ns-openapi-3-1": "^0.69.2", - "@swagger-api/apidom-parser-adapter-json": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0" + "@swagger-api/apidom-core": "^0.69.3", + "@swagger-api/apidom-ns-openapi-3-1": "^0.69.3", + "@swagger-api/apidom-parser-adapter-json": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-0.69.2.tgz", - "integrity": "sha512-p7Wqk7vCgh9mkXQmk9I/uXri2+1MLCQ14NHfrVowey4ntH4LzBf0NtvxgfCryzzLb2RpdUwIxoh+uf4ibTzyyA==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-0.69.3.tgz", + "integrity": "sha512-X4Qtg/0n0l2leWBBZC8+7Kj6eP3pqB4WCWlacoWuldz8WBDBuffTBmTV/qe6gKdI4DW6mX5ovxDf+tz2tr0ppQ==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@swagger-api/apidom-ns-openapi-3-0": "^0.69.2", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0" + "@swagger-api/apidom-core": "^0.69.3", + "@swagger-api/apidom-ns-openapi-3-0": "^0.69.3", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-0.69.2.tgz", - "integrity": "sha512-Dq914JCnOqmRl6DyxeaP91MlZvIn62hax4RsANeiHIm2ICwwCQLNM9RNUkWq3iimHZpvTz+etM3QkKMakXUnqQ==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-0.69.3.tgz", + "integrity": "sha512-ZW/2T92HZT2RQOPW1VOa78VyDYD5wwR9EGNKXBsfMCnl0zVHwhwwkn/GgsYS0VDk56t43ww5DHM976q4ukF6Ew==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@swagger-api/apidom-ns-openapi-3-1": "^0.69.2", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0" + "@swagger-api/apidom-core": "^0.69.3", + "@swagger-api/apidom-ns-openapi-3-1": "^0.69.3", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-0.69.2.tgz", - "integrity": "sha512-5sWKGF/phSd+kvOD8xfB2W26QeN2U6LOoLy6eYvf8DP5q4doiLoEcVIunpcVjl04IWVet+VFH9XFGEMlKk7qKQ==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-0.69.3.tgz", + "integrity": "sha512-HJ/OiXnVoUshwKrfaHDq4LfKeKxBsa6Bmo8NVdSZiRfeA1Y/fAx9mWW5xSzTADxmc6yA2MevnfIoq7W0NX6SSQ==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.69.0", - "@swagger-api/apidom-core": "^0.69.2", - "@types/ramda": "=0.28.23", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0", + "@swagger-api/apidom-ast": "^0.69.3", + "@swagger-api/apidom-core": "^0.69.3", + "@types/ramda": "=0.29.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0", "stampit": "=4.3.2", "tree-sitter": "=0.20.1", "tree-sitter-yaml": "=0.5.0", @@ -729,41 +729,41 @@ } }, "node_modules/@swagger-api/apidom-reference": { - "version": "0.69.2", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-0.69.2.tgz", - "integrity": "sha512-aJsgtCP71t8a+frS+qn1FW9MqjjK60c3AnB2G3cUXGVwzmEPEkvBFF0LGlPmHftVvzzBvI7AsMC7+HZPM/t7rQ==", + "version": "0.69.3", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-0.69.3.tgz", + "integrity": "sha512-dimoVsW4COR4TUTgOqTnXSZAIdYOepIudWOvca2fGOcXg85eBMS4xJlNHx1095Fm664y5y8DVxIYe1oLu9gjVA==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.69.2", - "@types/ramda": "=0.28.23", - "axios": "=1.3.4", + "@swagger-api/apidom-core": "^0.69.3", + "@types/ramda": "=0.29.0", + "axios": "=1.3.6", "minimatch": "=7.4.3", "process": "=0.11.10", - "ramda": "=0.28.0", - "ramda-adjunct": "=3.4.0", + "ramda": "=0.29.0", + "ramda-adjunct": "=4.0.0", "stampit": "=4.3.2" }, "optionalDependencies": { - "@swagger-api/apidom-json-pointer": "^0.69.2", - "@swagger-api/apidom-ns-asyncapi-2": "^0.69.2", - "@swagger-api/apidom-ns-openapi-3-0": "^0.69.2", - "@swagger-api/apidom-ns-openapi-3-1": "^0.69.2", - "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.69.2", - "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.69.2", - "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.69.2", - "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.69.2", - "@swagger-api/apidom-parser-adapter-json": "^0.69.2", - "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.69.2", - "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.69.2", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.69.2", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.69.2", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.69.2" + "@swagger-api/apidom-json-pointer": "^0.69.3", + "@swagger-api/apidom-ns-asyncapi-2": "^0.69.3", + "@swagger-api/apidom-ns-openapi-3-0": "^0.69.3", + "@swagger-api/apidom-ns-openapi-3-1": "^0.69.3", + "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.69.3", + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.69.3", + "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.69.3", + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.69.3", + "@swagger-api/apidom-parser-adapter-json": "^0.69.3", + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.69.3", + "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.69.3", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.69.3", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.69.3", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.69.3" } }, "node_modules/@swagger-api/apidom-reference/node_modules/axios": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", - "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.6.tgz", + "integrity": "sha512-PEcdkk7JcdPiMDkvM4K6ZBRYq9keuVJsToxm2zQIM70Qqo2WHTdJZMXcG9X+RmRp2VPNUQC8W1RAGbgt6b1yMg==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -771,11 +771,11 @@ } }, "node_modules/@types/ramda": { - "version": "0.28.23", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.28.23.tgz", - "integrity": "sha512-9TYWiwkew+mCMsL7jZ+kkzy6QXn8PL5/SKmBPmjgUlTpkokZWTBr+OhiIUDztpAEbslWyt24NNfEmZUBFmnXig==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.29.0.tgz", + "integrity": "sha512-TY9eKsklU43CmAbFJPKDUyBjleZ4EFAkbJeQRF4e8byGkOw1CjDcwg5EGa0Bgf0Kgs9BE9OU4UzQWnQDHnvMtA==", "dependencies": { - "ts-toolbelt": "^6.15.1" + "types-ramda": "^0.29.1" } }, "node_modules/@types/trusted-types": { @@ -934,9 +934,9 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.6.tgz", - "integrity": "sha512-PEcdkk7JcdPiMDkvM4K6ZBRYq9keuVJsToxm2zQIM70Qqo2WHTdJZMXcG9X+RmRp2VPNUQC8W1RAGbgt6b1yMg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -1052,14 +1052,24 @@ } }, "node_modules/bootstrap-icons": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.10.4.tgz", - "integrity": "sha512-eI3HyIUmpGKRiRv15FCZccV+2sreGE2NnmH8mtxV/nPOzQVu0sPEj8HhF1MwjJ31IhjF0rgMvtYOX5VqIzcb/A==" + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.10.5.tgz", + "integrity": "sha512-oSX26F37V7QV7NCE53PPEL45d7EGXmBgHG3pDpZvcRaKVzWMqIRL9wcqJUyEha1esFtM3NJzvmxFXDxjJYD0jQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ] }, "node_modules/bootstrap5-tags": { - "version": "1.5.17", - "resolved": "https://registry.npmjs.org/bootstrap5-tags/-/bootstrap5-tags-1.5.17.tgz", - "integrity": "sha512-8WUh5F9XPqK+wQZaPscHiC8t+MpQhboLW6ta7w176TyVaMRb+mNeWkKiCr0GbjnZFwkgBsyoQ/PQLVLxeSkFig==" + "version": "1.5.21", + "resolved": "https://registry.npmjs.org/bootstrap5-tags/-/bootstrap5-tags-1.5.21.tgz", + "integrity": "sha512-AubdYdyXx5GR/pFFN6E9Sdl4T5dKeWxeM9nEtXBLfRYcINFUd0an2FvktV+R7+fCwvDs+Vi61wKaPb38ewv5gA==" }, "node_modules/brace-expansion": { "version": "2.0.1", @@ -1283,9 +1293,9 @@ } }, "node_modules/esbuild": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.17.tgz", - "integrity": "sha512-/jUywtAymR8jR4qsa2RujlAF7Krpt5VWi72Q2yuLD4e/hvtNcFQ0I1j8m/bxq238pf3/0KO5yuXNpuLx8BE1KA==", + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.18.tgz", + "integrity": "sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==", "dev": true, "hasInstallScript": true, "bin": { @@ -1295,28 +1305,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.17.17", - "@esbuild/android-arm64": "0.17.17", - "@esbuild/android-x64": "0.17.17", - "@esbuild/darwin-arm64": "0.17.17", - "@esbuild/darwin-x64": "0.17.17", - "@esbuild/freebsd-arm64": "0.17.17", - "@esbuild/freebsd-x64": "0.17.17", - "@esbuild/linux-arm": "0.17.17", - "@esbuild/linux-arm64": "0.17.17", - "@esbuild/linux-ia32": "0.17.17", - "@esbuild/linux-loong64": "0.17.17", - "@esbuild/linux-mips64el": "0.17.17", - "@esbuild/linux-ppc64": "0.17.17", - "@esbuild/linux-riscv64": "0.17.17", - "@esbuild/linux-s390x": "0.17.17", - "@esbuild/linux-x64": "0.17.17", - "@esbuild/netbsd-x64": "0.17.17", - "@esbuild/openbsd-x64": "0.17.17", - "@esbuild/sunos-x64": "0.17.17", - "@esbuild/win32-arm64": "0.17.17", - "@esbuild/win32-ia32": "0.17.17", - "@esbuild/win32-x64": "0.17.17" + "@esbuild/android-arm": "0.17.18", + "@esbuild/android-arm64": "0.17.18", + "@esbuild/android-x64": "0.17.18", + "@esbuild/darwin-arm64": "0.17.18", + "@esbuild/darwin-x64": "0.17.18", + "@esbuild/freebsd-arm64": "0.17.18", + "@esbuild/freebsd-x64": "0.17.18", + "@esbuild/linux-arm": "0.17.18", + "@esbuild/linux-arm64": "0.17.18", + "@esbuild/linux-ia32": "0.17.18", + "@esbuild/linux-loong64": "0.17.18", + "@esbuild/linux-mips64el": "0.17.18", + "@esbuild/linux-ppc64": "0.17.18", + "@esbuild/linux-riscv64": "0.17.18", + "@esbuild/linux-s390x": "0.17.18", + "@esbuild/linux-x64": "0.17.18", + "@esbuild/netbsd-x64": "0.17.18", + "@esbuild/openbsd-x64": "0.17.18", + "@esbuild/sunos-x64": "0.17.18", + "@esbuild/win32-arm64": "0.17.18", + "@esbuild/win32-ia32": "0.17.18", + "@esbuild/win32-x64": "0.17.18" } }, "node_modules/esbuild-plugin-vue-next": { @@ -1660,9 +1670,9 @@ } }, "node_modules/lit": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/lit/-/lit-2.7.2.tgz", - "integrity": "sha512-9QnZmG5mIKPRja96cpndMclLSi0Qrz2BXD6EbqNqCKMMjOWVm/BwAeXufFk2jqFsNmY07HOzU8X+8aTSVt3yrA==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.7.3.tgz", + "integrity": "sha512-0a+u+vVbmgSfPu+fyvqjMPBX0Kwbyj9QOv9MbQFZhWGlV2cyk3lEwgfUQgYN+i/lx++1Z3wZknSIp3QCKxHLyg==", "dependencies": { "@lit/reactive-element": "^1.6.0", "lit-element": "^3.3.0", @@ -1670,9 +1680,9 @@ } }, "node_modules/lit-element": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.1.tgz", - "integrity": "sha512-Gl+2409uXWbf7n6cCl7Kzasm7zjT9xmdwi2BhLNi70sRKAgRkqueDu5mSIH3hPYMM0/vqBCdPXod3NbGkRA2ww==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.2.tgz", + "integrity": "sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ==", "dependencies": { "@lit-labs/ssr-dom-shim": "^1.1.0", "@lit/reactive-element": "^1.3.0", @@ -1680,9 +1690,9 @@ } }, "node_modules/lit-html": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.7.2.tgz", - "integrity": "sha512-ZJCfKlA2XELu5tn7XuzOziGFGvf1SeQm+ngLWoJ8bXtSkRrrR3ms6SWy+gsdxeYwySLij5xAhdd2C3EX0ftxdQ==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.7.3.tgz", + "integrity": "sha512-9DyLzcn/kbRGowz2vFmSANFbRZTxYUgYYFqzie89w6GLpPUiBCDHfcdeRUV/k3Q2ueYxNjfv46yPCtKAEAPOVw==", "dependencies": { "@types/trusted-types": "^2.0.2" } @@ -2064,18 +2074,18 @@ } }, "node_modules/ramda": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.28.0.tgz", - "integrity": "sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz", + "integrity": "sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==", "funding": { "type": "opencollective", "url": "https://opencollective.com/ramda" } }, "node_modules/ramda-adjunct": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-3.4.0.tgz", - "integrity": "sha512-qKRgqwZzJUZmPJfGK8/uLVxQXkiftKhW6FW9NUCUlQrzsBUZBvFAZUxwH7nTRwDMg+ChRU69rVVuS/4EUgtuIg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-4.0.0.tgz", + "integrity": "sha512-W/NiJAlZdwZ/iUkWEQQgRdH5Szqqet1WoVH9cdqDVjFbVaZHuJfJRvsxqHhvq6tZse+yVbFatLDLdVa30wBlGQ==", "engines": { "node": ">=0.10.3" }, @@ -2084,7 +2094,7 @@ "url": "https://opencollective.com/ramda-adjunct" }, "peerDependencies": { - "ramda": ">= 0.28.0 <= 0.28.0" + "ramda": ">= 0.29.0" } }, "node_modules/rapidoc": { @@ -2183,9 +2193,9 @@ "optional": true }, "node_modules/sass": { - "version": "1.62.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.62.0.tgz", - "integrity": "sha512-Q4USplo4pLYgCi+XlipZCWUQz5pkg/ruSSgJ0WRDSb/+3z9tXUOkQ7QPYn4XrhZKYAK4HlpaQecRwKLJX6+DBg==", + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz", + "integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -2357,15 +2367,15 @@ } }, "node_modules/swagger-client": { - "version": "3.19.6", - "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.19.6.tgz", - "integrity": "sha512-fd0XaoKz3lgs6viKkqK+o8QyrOOZULD4tLcUd8wEfsVBjJIAks2Qa1AhGUr87mfCWZw0Z9OXItWF9T477rRXzw==", + "version": "3.19.7", + "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.19.7.tgz", + "integrity": "sha512-5U4+tksrzVODZaLTtivzS9be6u7rX5ZSWFKDIYWsy8HCwt9FH1ANrrGpY1wDHydpOeaySbxMjMaqEM9cGWxOuQ==", "dependencies": { "@babel/runtime-corejs3": "^7.20.13", - "@swagger-api/apidom-core": ">=0.69.2 <1.0.0", - "@swagger-api/apidom-json-pointer": ">=0.69.2 <1.0.0", - "@swagger-api/apidom-ns-openapi-3-1": ">=0.69.2 <1.0.0", - "@swagger-api/apidom-reference": ">=0.69.2 <1.0.0", + "@swagger-api/apidom-core": ">=0.69.3 <1.0.0", + "@swagger-api/apidom-json-pointer": ">=0.69.3 <1.0.0", + "@swagger-api/apidom-ns-openapi-3-1": ">=0.69.3 <1.0.0", + "@swagger-api/apidom-reference": ">=0.69.3 <1.0.0", "cookie": "~0.5.0", "cross-fetch": "^3.1.5", "deepmerge": "~4.3.0", @@ -2484,9 +2494,9 @@ } }, "node_modules/ts-toolbelt": { - "version": "6.15.5", - "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-6.15.5.tgz", - "integrity": "sha512-FZIXf1ksVyLcfr7M317jbB67XFJhOO1YqdTcuGaq9q5jLUoTikukZ+98TPjKiP2jC5CgmYdWWYs0s2nLSU0/1A==" + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz", + "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==" }, "node_modules/tunnel-agent": { "version": "0.6.0", @@ -2500,6 +2510,14 @@ "node": "*" } }, + "node_modules/types-ramda": { + "version": "0.29.2", + "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.29.2.tgz", + "integrity": "sha512-HpLcR0ly2EfXQwG8VSI5ov6ml7PvtT+u+cp+7lZLu7q4nhnPDVW+rUTC1uy/SNs4aAyTUXri5M/LyhgvjEXJDg==", + "dependencies": { + "ts-toolbelt": "^9.6.0" + } + }, "node_modules/unraw": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unraw/-/unraw-2.0.1.tgz", diff --git a/server/apiv1/api.go b/server/apiv1/api.go index c067667..260d6db 100644 --- a/server/apiv1/api.go +++ b/server/apiv1/api.go @@ -34,13 +34,13 @@ func GetMessages(w http.ResponseWriter, r *http.Request) { // Parameters: // + name: start // in: query - // description: pagination offset + // description: Pagination offset // required: false // type: integer // default: 0 // + name: limit // in: query - // description: limit results + // description: Limit results // required: false // type: integer // default: 50 @@ -88,12 +88,12 @@ func Search(w http.ResponseWriter, r *http.Request) { // Parameters: // + name: query // in: query - // description: search query + // description: Search query // required: true // type: string // + name: limit // in: query - // description: limit results + // description: Limit results // required: false // type: integer // default: 50 @@ -119,7 +119,7 @@ func Search(w http.ResponseWriter, r *http.Request) { var res MessagesSummary - res.Start = 0 + res.Start = start res.Messages = messages res.Count = len(messages) res.Total = stats.Total @@ -147,7 +147,7 @@ func GetMessage(w http.ResponseWriter, r *http.Request) { // Parameters: // + name: ID // in: path - // description: message id + // description: Message ID // required: true // type: string // @@ -188,12 +188,12 @@ func DownloadAttachment(w http.ResponseWriter, r *http.Request) { // Parameters: // + name: ID // in: path - // description: message id + // description: Message ID // required: true // type: string // + name: PartID // in: path - // description: attachment part id + // description: Attachment part ID // required: true // type: string // @@ -237,7 +237,7 @@ func GetHeaders(w http.ResponseWriter, r *http.Request) { // Parameters: // + name: ID // in: path - // description: message id + // description: Message ID // required: true // type: string // @@ -284,7 +284,7 @@ func DownloadRaw(w http.ResponseWriter, r *http.Request) { // Parameters: // + name: ID // in: path - // description: message id + // description: Message ID // required: true // type: string // @@ -330,7 +330,7 @@ func DeleteMessages(w http.ResponseWriter, r *http.Request) { // Parameters: // + name: ids // in: body - // description: Message ids to delete + // description: Message IDs to delete // required: false // type: DeleteRequest // @@ -381,7 +381,7 @@ func SetReadStatus(w http.ResponseWriter, r *http.Request) { // Parameters: // + name: ids // in: body - // description: Message ids to update + // description: Message IDs to update // required: false // type: SetReadStatusRequest // @@ -459,7 +459,7 @@ func SetTags(w http.ResponseWriter, r *http.Request) { // Parameters: // + name: ids // in: body - // description: Message ids to update + // description: Message IDs to update // required: true // type: SetTagsRequest // @@ -515,10 +515,10 @@ func ReleaseMessage(w http.ResponseWriter, r *http.Request) { // Parameters: // + name: ID // in: path - // description: message id + // description: Message ID // required: true // type: string - // + name: To + // + name: to // in: body // description: Array of email addresses to release message to // required: true diff --git a/server/server.go b/server/server.go index 4d3fb8f..782d190 100644 --- a/server/server.go +++ b/server/server.go @@ -123,6 +123,7 @@ func middleWareFunc(fn http.HandlerFunc) http.HandlerFunc { if AccessControlAllowOrigin != "" && strings.HasPrefix(r.RequestURI, config.Webroot+"api/") { w.Header().Set("Access-Control-Allow-Origin", AccessControlAllowOrigin) w.Header().Set("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT") + w.Header().Set("Access-Control-Allow-Headers", "*") } if config.UIAuthFile != "" { @@ -161,6 +162,7 @@ func middlewareHandler(h http.Handler) http.Handler { if AccessControlAllowOrigin != "" && strings.HasPrefix(r.RequestURI, config.Webroot+"api/") { w.Header().Set("Access-Control-Allow-Origin", AccessControlAllowOrigin) w.Header().Set("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT") + w.Header().Set("Access-Control-Allow-Headers", "*") } if config.UIAuthFile != "" { diff --git a/server/smtpd/smtpd.go b/server/smtpd/smtpd.go index 0e26373..1c79186 100644 --- a/server/smtpd/smtpd.go +++ b/server/smtpd/smtpd.go @@ -24,12 +24,19 @@ func mailHandler(origin net.Addr, from string, to []string, data []byte) error { return err } + messageID := strings.Trim(msg.Header.Get("Message-Id"), "<>") + // add a message ID if not set - if msg.Header.Get("Message-Id") == "" { + if messageID == "" { // generate unique ID - uid := uuid.NewV4().String() + "@mailpit" + messageID = uuid.NewV4().String() + "@mailpit" // add unique ID - data = append([]byte("Message-Id: <"+uid+">\r\n"), data...) + data = append([]byte("Message-Id: <"+messageID+">\r\n"), data...) + } else if config.IgnoreDuplicateIDs { + if storage.MessageIDExists(messageID) { + logger.Log().Debugf("[smtpd] duplicate message found, ignoring %s", messageID) + return nil + } } // if enabled, this will route the email 1:1 through to the preconfigured smtp server @@ -81,7 +88,8 @@ func mailHandler(origin net.Addr, from string, to []string, data []byte) error { logger.Log().Debugf("[smtpd] added missing addresses to Bcc header: %s", strings.Join(missingAddresses, ", ")) } - if _, err := storage.Store(data); err != nil { + _, err = storage.Store(data) + if err != nil { logger.Log().Errorf("[db] error storing message: %d", err.Error()) return err diff --git a/server/ui-src/templates/Message.vue b/server/ui-src/templates/Message.vue index cdaabe2..a0919d6 100644 --- a/server/ui-src/templates/Message.vue +++ b/server/ui-src/templates/Message.vue @@ -195,7 +195,7 @@ export default { {{ t.Name + " <" + t.Address + ">" }} - Undisclosed recipients + [Undisclosed recipients] @@ -272,28 +272,28 @@ export default { role="tab" aria-controls="nav-html" aria-selected="true" v-if="message.HTML" v-on:click="showMobileBtns = true; resizeIframes()">HTML + :class=" message.HTML == '' ? 'show' : '' " v-on:click=" showMobileBtns = false ">Text + v-on:click=" showMobileBtns = false ">Raw -
-