From 2b22472f9e05509502e09f94008a246245becf5c Mon Sep 17 00:00:00 2001 From: David May Date: Mon, 30 Mar 2026 15:46:57 +0200 Subject: [PATCH 1/6] feat: RU mail account --- src/config/config.ts | 22 ++- .../notification/entities/mail/base/mail.ts | 28 ++-- .../entities/mail/personal-mail.ts | 9 +- .../entities/mail/user-mail-v2.ts | 7 +- .../notification/entities/mail/user-mail.ts | 53 ------- .../supporting/notification/enums/index.ts | 1 - .../notification/factories/mail.factory.ts | 58 ++----- .../notification/interfaces/index.ts | 2 - .../notification/notification.module.ts | 4 +- .../notification/services/mail.service.ts | 67 +++++++-- .../notification/templates/user.hbs | 141 ------------------ 11 files changed, 123 insertions(+), 269 deletions(-) delete mode 100644 src/subdomains/supporting/notification/entities/mail/user-mail.ts delete mode 100644 src/subdomains/supporting/notification/templates/user.hbs diff --git a/src/config/config.ts b/src/config/config.ts index 9e0947c97f..cf2165e001 100644 --- a/src/config/config.ts +++ b/src/config/config.ts @@ -20,7 +20,7 @@ import { AccountType } from 'src/subdomains/generic/user/models/user-data/accoun import { KycIdentificationType } from 'src/subdomains/generic/user/models/user-data/kyc-identification-type.enum'; import { UserData } from 'src/subdomains/generic/user/models/user-data/user-data.entity'; import { LegalEntity } from 'src/subdomains/generic/user/models/user-data/user-data.enum'; -import { MailOptions } from 'src/subdomains/supporting/notification/services/mail.service'; +import { MailOptions, WalletMailConfig } from 'src/subdomains/supporting/notification/services/mail.service'; import { LoggerOptions } from 'typeorm'; import { EVM_CHAINS } from './chains.config'; @@ -622,6 +622,26 @@ export class Configuration { }, }; + // Wallet-specific mail configurations + walletMail: Record> = { + onchainlabs: { + template: 'onChainLabs', + }, + ...(process.env.REALUNIT_MAIL_USER && + process.env.REALUNIT_MAIL_PASS && { + RealUnit: { + host: 'mail.infomaniak.com', + port: 587, + secure: false, + user: process.env.REALUNIT_MAIL_USER, + pass: process.env.REALUNIT_MAIL_PASS, + fromAddress: process.env.REALUNIT_MAIL_USER, + displayName: 'RealUnit', + template: 'user-v2', + }, + }), + }; + coinGecko = { apiKey: process.env.COIN_GECKO_API_KEY, }; diff --git a/src/subdomains/supporting/notification/entities/mail/base/mail.ts b/src/subdomains/supporting/notification/entities/mail/base/mail.ts index 77067bf690..337d545a66 100644 --- a/src/subdomains/supporting/notification/entities/mail/base/mail.ts +++ b/src/subdomains/supporting/notification/entities/mail/base/mail.ts @@ -8,7 +8,8 @@ export interface MailParamBase { displayName?: string; cc?: string; bcc?: string; - template?: string; + template?: string; // Base template for this mail type, can be overridden by wallet config + walletName?: string; options?: NotificationOptions; correlationId?: string; } @@ -31,29 +32,30 @@ export interface MailParamsNew extends MailParamBase { } export class Mail extends Notification { - readonly #from: { name: string; address: string } = { - name: 'DFX.swiss', - address: GetConfig().mail.contact.noReplyMail, - }; + readonly #from: { name: string; address: string }; readonly #to: string | string[]; readonly #cc: string; readonly #bcc: string; readonly #subject: string; - readonly #template: string = GetConfig().mail.defaultMailTemplate; + readonly #template: string; readonly #templateParams: { [name: string]: any }; + readonly #walletName?: string; constructor(params: MailParams | MailParamsNew) { super(); + const walletMailConfig = params.walletName ? GetConfig().walletMail[params.walletName] : undefined; + + this.#walletName = params.walletName; this.#to = params.to; this.#subject = params.subject; this.#from = { - name: params.displayName ?? 'DFX.swiss', - address: params.from ?? GetConfig().mail.contact.noReplyMail, + name: params.displayName ?? walletMailConfig?.displayName ?? 'DFX.swiss', + address: params.from ?? walletMailConfig?.fromAddress ?? GetConfig().mail.contact.noReplyMail, }; - this.#cc = params.cc ?? this.#cc; - this.#bcc = params.bcc ?? this.#bcc; - this.#template = params.template ?? this.#template; + this.#cc = params.cc; + this.#bcc = params.bcc; + this.#template = params.template ?? GetConfig().mail.defaultMailTemplate; this.#templateParams = params.templateParams; } @@ -85,4 +87,8 @@ export class Mail extends Notification { get subject(): string { return this.#subject; } + + get walletName(): string | undefined { + return this.#walletName; + } } diff --git a/src/subdomains/supporting/notification/entities/mail/personal-mail.ts b/src/subdomains/supporting/notification/entities/mail/personal-mail.ts index d207ddbaf8..c5683038f8 100644 --- a/src/subdomains/supporting/notification/entities/mail/personal-mail.ts +++ b/src/subdomains/supporting/notification/entities/mail/personal-mail.ts @@ -29,7 +29,12 @@ export interface PersonalMailParams { } export class PersonalMail extends Mail { - constructor(params: PersonalMailParams) { - super({ ...params, template: 'personal', templateParams: params }); + constructor(params: PersonalMailParams, wallet?: Wallet) { + super({ + ...params, + walletName: wallet?.name, + template: 'personal', + templateParams: params, + }); } } diff --git a/src/subdomains/supporting/notification/entities/mail/user-mail-v2.ts b/src/subdomains/supporting/notification/entities/mail/user-mail-v2.ts index 61f3d92554..ed5a0f823e 100644 --- a/src/subdomains/supporting/notification/entities/mail/user-mail-v2.ts +++ b/src/subdomains/supporting/notification/entities/mail/user-mail-v2.ts @@ -1,4 +1,4 @@ -import { Config } from 'src/config/config'; +import { Config, GetConfig } from 'src/config/config'; import { UserData } from 'src/subdomains/generic/user/models/user-data/user-data.entity'; import { Wallet } from 'src/subdomains/generic/user/models/wallet/wallet.entity'; import { MailAffix, TranslationItem } from '../../interfaces'; @@ -35,9 +35,12 @@ export class UserMailV2 extends Mail { instagramUrl: Config.social.instagram, }; + const walletMailConfig = wallet?.name ? GetConfig().walletMail[wallet.name] : undefined; + super({ ...params, - template: wallet?.name === 'onchainlabs' ? 'onChainLabs' : 'user-v2', + walletName: wallet?.name, + template: walletMailConfig?.template ?? 'user-v2', templateParams: { ...defaultParams, ...params }, }); } diff --git a/src/subdomains/supporting/notification/entities/mail/user-mail.ts b/src/subdomains/supporting/notification/entities/mail/user-mail.ts deleted file mode 100644 index b56298b984..0000000000 --- a/src/subdomains/supporting/notification/entities/mail/user-mail.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Config } from 'src/config/config'; -import { UserData } from 'src/subdomains/generic/user/models/user-data/user-data.entity'; -import { Wallet } from 'src/subdomains/generic/user/models/wallet/wallet.entity'; -import { MailAffix, TranslationItem } from '../../interfaces'; -import { NotificationOptions } from '../notification.entity'; -import { Mail } from './base/mail'; - -export interface MailRequestUserInput { - userData: UserData; - wallet: Wallet; - title: string; - salutation?: TranslationItem; - prefix?: TranslationItem[]; - table?: Record; - suffix?: TranslationItem[]; -} - -export interface UserMailTable { - text: string; - value: string; -} - -export interface UserMailParams { - to: string; - subject: string; - salutation: string; - prefix: MailAffix[]; - table: UserMailTable[]; - suffix: MailAffix[]; - telegramUrl?: string; - twitterUrl?: string; - linkedinUrl?: string; - instagramUrl?: string; - correlationId?: string; - options?: NotificationOptions; -} - -export class UserMail extends Mail { - constructor(params: UserMailParams, wallet: Wallet) { - const defaultParams: Partial = { - twitterUrl: Config.social.twitter, - telegramUrl: Config.social.telegram, - linkedinUrl: Config.social.linkedin, - instagramUrl: Config.social.instagram, - }; - - super({ - ...params, - template: wallet?.name === 'onchainlabs' ? 'onChainLabs' : 'user', - templateParams: { ...defaultParams, ...params }, - }); - } -} diff --git a/src/subdomains/supporting/notification/enums/index.ts b/src/subdomains/supporting/notification/enums/index.ts index 4f8c9d0d79..dc0dfdc499 100644 --- a/src/subdomains/supporting/notification/enums/index.ts +++ b/src/subdomains/supporting/notification/enums/index.ts @@ -5,7 +5,6 @@ export enum NotificationType { export enum MailType { GENERIC = 'Generic', ERROR_MONITORING = 'ErrorMonitoring', - USER_DEPRECATED = 'UserDeprecated', USER_V2 = 'UserV2', PERSONAL = 'Personal', INTERNAL = 'Internal', diff --git a/src/subdomains/supporting/notification/factories/mail.factory.ts b/src/subdomains/supporting/notification/factories/mail.factory.ts index 259ec82e53..09d9577bee 100644 --- a/src/subdomains/supporting/notification/factories/mail.factory.ts +++ b/src/subdomains/supporting/notification/factories/mail.factory.ts @@ -7,7 +7,6 @@ import { Mail, MailParams } from '../entities/mail/base/mail'; import { ErrorMonitoringMail, ErrorMonitoringMailInput } from '../entities/mail/error-monitoring-mail'; import { InternalMail, MailRequestInternalInput } from '../entities/mail/internal-mail'; import { MailRequestPersonalInput, PersonalMail } from '../entities/mail/personal-mail'; -import { MailRequestUserInput, UserMail, UserMailTable } from '../entities/mail/user-mail'; import { MailRequestUserInputV2, UserMailV2 } from '../entities/mail/user-mail-v2'; import { MailContext, MailContextType, MailContextTypeMapper, MailType } from '../enums'; import { MailAffix, MailRequest, MailRequestGenericInput, TranslationItem, TranslationParams } from '../interfaces'; @@ -82,10 +81,6 @@ export class MailFactory { return this.createErrorMonitoringMail(request); } - case MailType.USER_DEPRECATED: { - return this.createUserMail(request); - } - case MailType.USER_V2: { return this.createUserV2Mail(request); } @@ -146,27 +141,6 @@ export class MailFactory { return new ErrorMonitoringMail({ subject, errors, correlationId, options }); } - private createUserMail(request: MailRequest): UserMail { - const { correlationId, options } = request; - const { userData, wallet, title, salutation, prefix, suffix, table } = request.input as MailRequestUserInput; - - const lang = userData.language.symbol; - - return new UserMail( - { - to: userData.mail, - subject: this.translate(title, lang), - salutation: salutation && this.translate(salutation.key, lang, salutation.params), - prefix: prefix && this.getMailAffix(prefix, lang), - table: table && this.getTable(table, lang), - suffix: suffix && this.getMailAffix(suffix, lang), - correlationId, - options, - }, - wallet, - ); - } - private createUserV2Mail(request: MailRequest): UserMailV2 { const { correlationId, options, context } = request; const { userData, wallet, title, salutation, texts } = request.input as MailRequestUserInputV2; @@ -197,17 +171,20 @@ export class MailFactory { const lang = userData.language.symbol; - return new PersonalMail({ - to: userData.mail, - bcc, - subject: this.translate(title, lang), - prefix: prefix && this.getMailAffix(prefix, lang), - banner, - from, - displayName, - correlationId, - options, - }); + return new PersonalMail( + { + to: userData.mail, + bcc, + subject: this.translate(title, lang), + prefix: prefix && this.getMailAffix(prefix, lang), + banner, + from, + displayName, + correlationId, + options, + }, + wallet, + ); } //*** TRANSLATION METHODS ***// @@ -227,13 +204,6 @@ export class MailFactory { ); } - private getTable(table: Record, lang: string): UserMailTable[] { - return Object.entries(Util.removeNullFields(table)).map(([key, value]) => ({ - text: this.translate(key, lang), - value: value, - })); - } - private getMailAffix(affix: TranslationItem[], lang = 'en'): MailAffix[] { return affix .filter((i) => i) diff --git a/src/subdomains/supporting/notification/interfaces/index.ts b/src/subdomains/supporting/notification/interfaces/index.ts index 1ca1ce38c2..b6bb31db84 100644 --- a/src/subdomains/supporting/notification/interfaces/index.ts +++ b/src/subdomains/supporting/notification/interfaces/index.ts @@ -1,7 +1,6 @@ import { ErrorMonitoringMailInput } from '../entities/mail/error-monitoring-mail'; import { MailRequestInternalInput } from '../entities/mail/internal-mail'; import { MailRequestPersonalInput } from '../entities/mail/personal-mail'; -import { MailRequestUserInput } from '../entities/mail/user-mail'; import { MailRequestUserInputV2 } from '../entities/mail/user-mail-v2'; import { NotificationOptions } from '../entities/notification.entity'; import { MailContext, MailType } from '../enums'; @@ -12,7 +11,6 @@ export interface MailRequest { input: | MailRequestGenericInput | ErrorMonitoringMailInput - | MailRequestUserInput | MailRequestUserInputV2 | MailRequestPersonalInput | MailRequestInternalInput; diff --git a/src/subdomains/supporting/notification/notification.module.ts b/src/subdomains/supporting/notification/notification.module.ts index 19ea824a5a..2c426da70b 100644 --- a/src/subdomains/supporting/notification/notification.module.ts +++ b/src/subdomains/supporting/notification/notification.module.ts @@ -1,7 +1,5 @@ -import { MailerModule } from '@nestjs-modules/mailer'; import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { GetConfig } from 'src/config/config'; import { SharedModule } from 'src/shared/shared.module'; import { Notification } from './entities/notification.entity'; import { MailFactory } from './factories/mail.factory'; @@ -12,7 +10,7 @@ import { NotificationJobService } from './services/notification-job.service'; import { NotificationService } from './services/notification.service'; @Module({ - imports: [TypeOrmModule.forFeature([Notification]), MailerModule.forRoot(GetConfig().mail.options), SharedModule], + imports: [TypeOrmModule.forFeature([Notification]), SharedModule], providers: [NotificationRepository, MailService, NotificationService, MailFactory, NotificationJobService], controllers: [NotificationController], exports: [NotificationService, MailFactory], diff --git a/src/subdomains/supporting/notification/services/mail.service.ts b/src/subdomains/supporting/notification/services/mail.service.ts index 46c2818bf2..6ee1ae0648 100644 --- a/src/subdomains/supporting/notification/services/mail.service.ts +++ b/src/subdomains/supporting/notification/services/mail.service.ts @@ -1,9 +1,24 @@ -import { MailerOptions, MailerService } from '@nestjs-modules/mailer'; +import { MailerOptions } from '@nestjs-modules/mailer'; import { Injectable } from '@nestjs/common'; -import { Config, Environment } from 'src/config/config'; +import * as fs from 'fs'; +import * as handlebars from 'handlebars'; +import * as nodemailer from 'nodemailer'; +import { join } from 'path'; +import { Config, Environment, GetConfig } from 'src/config/config'; import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Mail } from '../entities/mail/base/mail'; +export interface WalletMailConfig { + host: string; + port: number; + secure: boolean; // true for 465, false for STARTTLS on 587 + user: string; + pass: string; + fromAddress: string; + displayName: string; + template: string; // user-v2 template +} + export interface MailOptions { options: MailerOptions; defaultMailTemplate: string; @@ -18,25 +33,25 @@ export interface MailOptions { @Injectable() export class MailService { private readonly logger = new DfxLogger(MailService); - - constructor(private readonly mailerService: MailerService) {} + private readonly transports = new Map(); async send(mail: Mail): Promise { - // Skip mail sending in local environment if (Config.environment === Environment.LOC) { this.logger.info(`[LOCAL DEV] Mail skipped - to: ${mail.to}, subject: ${mail.subject}`); return; } try { - await this.mailerService.sendMail({ - from: mail.from, + const transport = this.getTransport(mail.walletName); + const html = this.compileTemplate(mail.template, mail.templateParams); + + await transport.sendMail({ + from: { name: mail.from.name, address: mail.from.address }, to: mail.to, cc: mail.cc, bcc: mail.bcc, subject: mail.subject, - template: mail.template, - context: mail.templateParams, + html, }); } catch (e) { this.logger.error( @@ -46,4 +61,38 @@ export class MailService { throw e; } } + + private getTransport(walletName?: string): nodemailer.Transporter { + const walletConfig = walletName ? GetConfig().walletMail[walletName] : undefined; + const key = walletConfig?.host ? walletName : 'default'; + + let transport = this.transports.get(key); + if (!transport) { + transport = this.createTransport(walletConfig); + this.transports.set(key, transport); + this.logger.info(`Created mail transport: ${key}`); + } + + return transport; + } + + private createTransport(walletConfig?: Partial): nodemailer.Transporter { + if (walletConfig?.host) { + return nodemailer.createTransport({ + host: walletConfig.host, + port: walletConfig.port, + secure: walletConfig.secure, + auth: { user: walletConfig.user, pass: walletConfig.pass }, + tls: { rejectUnauthorized: false }, + }); + } + + return nodemailer.createTransport(GetConfig().mail.options.transport as nodemailer.TransportOptions); + } + + private compileTemplate(template: string, params: Record): string { + const templatePath = join(process.cwd(), 'src/subdomains/supporting/notification/templates', `${template}.hbs`); + const templateContent = fs.readFileSync(templatePath, 'utf-8'); + return handlebars.compile(templateContent)(params); + } } diff --git a/src/subdomains/supporting/notification/templates/user.hbs b/src/subdomains/supporting/notification/templates/user.hbs deleted file mode 100644 index a744a8e602..0000000000 --- a/src/subdomains/supporting/notification/templates/user.hbs +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - -
- -
{{salutation}}
- - {{#each prefix}} - - - - {{/each}} - - {{#each table}} - - - - - - - - {{/each}} - - {{#each suffix}} - - - - {{/each}} -
- - {{{this.text}}} - {{#if this.url}}{{this.url.text}} - {{#if this.url.textSuffix}}{{this.url.textSuffix}}{{/if}} - {{/if}} - {{#if this.mail}}{{this.mail.address}} - {{#if this.mail.textSuffix}}{{this.mail.textSuffix}}{{/if}} - {{/if}} -
- {{this.text}} - - - - {{this.value}} -
- - {{{this.text}}} - {{#if this.url}}{{this.url.text}} - {{#if this.url.textSuffix}}{{this.url.textSuffix}}{{/if}} - {{/if}} - {{#if this.mail}}{{this.mail.address}} - {{#if this.mail.textSuffix}}{{this.mail.textSuffix}}{{/if}} - {{/if}} -
-
- - - - - - - - - - - - - -
- - - - - - - -
-
- - - \ No newline at end of file From d6bd73d9086bd3995949ec13a55fd994533cbaa7 Mon Sep 17 00:00:00 2001 From: David May Date: Mon, 30 Mar 2026 16:44:02 +0200 Subject: [PATCH 2/6] fix: vulnerability --- package-lock.json | 1030 ++++++++++++++++++++++++++++----------------- 1 file changed, 647 insertions(+), 383 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2602a55b3f..f372b3a84c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1112,14 +1112,14 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.972.4", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.4.tgz", - "integrity": "sha512-0zJ05ANfYqI6+rGqj8samZBFod0dPPousBjLEqg8WdxSgbMAkRgLyn81lP215Do0rFJ/17LIXwr7q0yK24mP6Q==", + "version": "3.972.16", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.16.tgz", + "integrity": "sha512-iu2pyvaqmeatIJLURLqx9D+4jKAdTH20ntzB6BFwjyN7V960r4jK32mx0Zf7YbtOYAbmbtQfDNuL60ONinyw7A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.12.0", - "fast-xml-parser": "5.3.4", + "@smithy/types": "^4.13.1", + "fast-xml-parser": "5.5.8", "tslib": "^2.6.2" }, "engines": { @@ -1993,9 +1993,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -2285,9 +2285,9 @@ } }, "node_modules/@blockfrost/openapi/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -2300,6 +2300,27 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@blockfrost/openapi/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@blockfrost/openapi/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/@blockfrost/openapi/node_modules/glob": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", @@ -2348,15 +2369,15 @@ } }, "node_modules/@blockfrost/openapi/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -2398,9 +2419,9 @@ } }, "node_modules/@blockfrost/openapi/node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", "license": "ISC", "bin": { "yaml": "bin.mjs" @@ -3199,9 +3220,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -5112,27 +5133,6 @@ "asn1js": "^3.0.5" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", - "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -7002,28 +7002,28 @@ "peer": true }, "node_modules/@nomicfoundation/edr": { - "version": "0.12.0-next.22", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.12.0-next.22.tgz", - "integrity": "sha512-JigYWf2stjpDxSndBsxRoobQHK8kz4SAVaHtTIKQLIHbsBwymE8i120Ejne6Jk+Ndc5CsNINXB8/bK6vLPe9jA==", + "version": "0.12.0-next.23", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.12.0-next.23.tgz", + "integrity": "sha512-F2/6HZh8Q9RsgkOIkRrckldbhPjIZY7d4mT9LYuW68miwGQ5l7CkAgcz9fRRiurA0+YJhtsbx/EyrD9DmX9BOw==", "license": "MIT", "peer": true, "dependencies": { - "@nomicfoundation/edr-darwin-arm64": "0.12.0-next.22", - "@nomicfoundation/edr-darwin-x64": "0.12.0-next.22", - "@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.22", - "@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.22", - "@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.22", - "@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.22", - "@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.22" + "@nomicfoundation/edr-darwin-arm64": "0.12.0-next.23", + "@nomicfoundation/edr-darwin-x64": "0.12.0-next.23", + "@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.23", + "@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.23", + "@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.23", + "@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.23", + "@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.23" }, "engines": { "node": ">= 20" } }, "node_modules/@nomicfoundation/edr-darwin-arm64": { - "version": "0.12.0-next.22", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.12.0-next.22.tgz", - "integrity": "sha512-TpEBSKyMZJEPvYwBPYclC2b+qobKjn1YhVa7aJ1R7RMPy5dJ/PqsrUK5UuUFFybBqoIorru5NTcsyCMWP5T/Fg==", + "version": "0.12.0-next.23", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.12.0-next.23.tgz", + "integrity": "sha512-Amh7mRoDzZyJJ4efqoePqdoZOzharmSOttZuJDlVE5yy07BoE8hL6ZRpa5fNYn0LCqn/KoWs8OHANWxhKDGhvQ==", "license": "MIT", "peer": true, "engines": { @@ -7031,9 +7031,9 @@ } }, "node_modules/@nomicfoundation/edr-darwin-x64": { - "version": "0.12.0-next.22", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.12.0-next.22.tgz", - "integrity": "sha512-aK/+m8xUkR4u+czTVGU06nSFVH43AY6XCBoR2YjO8SglAAjCSTWK3WAfVb6FcsriMmKv4PrvoyHLMbMP+fXcGA==", + "version": "0.12.0-next.23", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.12.0-next.23.tgz", + "integrity": "sha512-9wn489FIQm7m0UCD+HhktjWx6vskZzeZD9oDc2k9ZvbBzdXwPp5tiDqUBJ+eQpByAzCDfteAJwRn2lQCE0U+Iw==", "license": "MIT", "peer": true, "engines": { @@ -7041,9 +7041,9 @@ } }, "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { - "version": "0.12.0-next.22", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.12.0-next.22.tgz", - "integrity": "sha512-W5vXMleG14hVzRYGPEwlHLJ6iiQE8Qh63Uj538nAz4YUI6wWSgUOZE7K2Gt1EdujZGnrt7kfDslgJ96n4nKQZw==", + "version": "0.12.0-next.23", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.12.0-next.23.tgz", + "integrity": "sha512-nlk5EejSzEUfEngv0Jkhqq3/wINIfF2ED9wAofc22w/V1DV99ASh9l3/e/MIHOQFecIZ9MDqt0Em9/oDyB1Uew==", "license": "MIT", "peer": true, "engines": { @@ -7051,9 +7051,9 @@ } }, "node_modules/@nomicfoundation/edr-linux-arm64-musl": { - "version": "0.12.0-next.22", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.12.0-next.22.tgz", - "integrity": "sha512-VDp7EB3iY8MH/fFVcgEzLDGYmtS6j2honNc0RNUCFECKPrdsngGrTG8p+YFxyVjq2m5GEsdyKo4e+BKhaUNPdg==", + "version": "0.12.0-next.23", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.12.0-next.23.tgz", + "integrity": "sha512-SJuPBp3Rc6vM92UtVTUxZQ/QlLhLfwTftt2XUiYohmGKB3RjGzpgduEFMCA0LEnucUckU6UHrJNFHiDm77C4PQ==", "license": "MIT", "peer": true, "engines": { @@ -7061,9 +7061,9 @@ } }, "node_modules/@nomicfoundation/edr-linux-x64-gnu": { - "version": "0.12.0-next.22", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.12.0-next.22.tgz", - "integrity": "sha512-XL6oA3ymRSQYyvg6hF1KIax6V/9vlWr5gJ8GPHVVODk1a/YfuEEY1osN5Zmo6aztUkSGKwSuac/3Ax7rfDDiSg==", + "version": "0.12.0-next.23", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.12.0-next.23.tgz", + "integrity": "sha512-NU+Qs3u7Qt6t3bJFdmmjd5CsvgI2bPPzO31KifM2Ez96/jsXYho5debtTQnimlb5NAqiHTSlxjh/F8ROcptmeQ==", "license": "MIT", "peer": true, "engines": { @@ -7071,9 +7071,9 @@ } }, "node_modules/@nomicfoundation/edr-linux-x64-musl": { - "version": "0.12.0-next.22", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.12.0-next.22.tgz", - "integrity": "sha512-hmkRIXxWa9P0PwfXOAO6WUw11GyV5gpxcMunqWBTkwZ4QW/hi/CkXmlLo6VHd6ceCwpUNLhCGndBtrOPrNRi4A==", + "version": "0.12.0-next.23", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.12.0-next.23.tgz", + "integrity": "sha512-F78fZA2h6/ssiCSZOovlgIu0dUeI7ItKPsDDF3UUlIibef052GCXmliMinC90jVPbrjUADMd1BUwjfI0Z8OllQ==", "license": "MIT", "peer": true, "engines": { @@ -7081,9 +7081,9 @@ } }, "node_modules/@nomicfoundation/edr-win32-x64-msvc": { - "version": "0.12.0-next.22", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.12.0-next.22.tgz", - "integrity": "sha512-X7f+7KUMm00trsXAHCHJa+x1fc3QAbk2sBctyOgpET+GLrfCXbxqrccKi7op8f0zTweAVGg1Hsc8SjjC7kwFLw==", + "version": "0.12.0-next.23", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.12.0-next.23.tgz", + "integrity": "sha512-IfJZQJn7d/YyqhmguBIGoCKjE9dKjbu6V6iNEPApfwf5JyyjHYyyfkLU4rf7hygj57bfH4sl1jtQ6r8HnT62lw==", "license": "MIT", "peer": true, "engines": { @@ -7699,9 +7699,9 @@ "license": "MIT" }, "node_modules/@railgun-community/engine": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/@railgun-community/engine/-/engine-9.5.1.tgz", - "integrity": "sha512-tLX0WSHABzRC1VB7vhdwSBDFUYCFqRYHD2ek5/GT9+AZaKZJ6fU+UrAJYKxyEaGJ066l3M70fChc0Q6qM21scQ==", + "version": "9.5.3", + "resolved": "https://registry.npmjs.org/@railgun-community/engine/-/engine-9.5.3.tgz", + "integrity": "sha512-0oHXj2PR+1PaOaCM29pKHGoBqaNjNAiNKSRyrMbqXLWDSNvuyCunhk4yjQdgHTzdZheL4TwOSzHN8TidSF+x5Q==", "license": "MIT", "dependencies": { "@noble/ciphers": "^0.4.0", @@ -7717,7 +7717,7 @@ "chai-as-promised": "^7.1.1", "encoding-down": "^7.1.0", "ethereum-cryptography": "^2.0.0", - "ethers": "6.13.1", + "ethers": "6.14.3", "fast-text-encoding": "^1.0.6", "levelup": "^5.1.1", "msgpack-lite": "^0.1.26" @@ -7754,10 +7754,13 @@ } }, "node_modules/@railgun-community/engine/node_modules/@types/node": { - "version": "18.15.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", - "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", - "license": "MIT" + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } }, "node_modules/@railgun-community/engine/node_modules/aes-js": { "version": "4.0.0-beta.5", @@ -7766,9 +7769,9 @@ "license": "MIT" }, "node_modules/@railgun-community/engine/node_modules/ethers": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.1.tgz", - "integrity": "sha512-hdJ2HOxg/xx97Lm9HdCWk949BfYqYWpyw4//78SiwOLgASyfrNszfMUNB2joKjvGUdwhHfaiMMFFwacVVoLR9A==", + "version": "6.14.3", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.14.3.tgz", + "integrity": "sha512-qq7ft/oCJohoTcsNPFaXSQUm457MA5iWqkf1Mb11ujONdg7jBI6sAOrHaTi3j0CBqIGFSCeR/RMc+qwRRub7IA==", "funding": [ { "type": "individual", @@ -7784,9 +7787,9 @@ "@adraffy/ens-normalize": "1.10.1", "@noble/curves": "1.2.0", "@noble/hashes": "1.3.2", - "@types/node": "18.15.13", + "@types/node": "22.7.5", "aes-js": "4.0.0-beta.5", - "tslib": "2.4.0", + "tslib": "2.7.0", "ws": "8.17.1" }, "engines": { @@ -7794,11 +7797,17 @@ } }, "node_modules/@railgun-community/engine/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "license": "0BSD" }, + "node_modules/@railgun-community/engine/node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "license": "MIT" + }, "node_modules/@railgun-community/engine/node_modules/ws": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", @@ -8509,9 +8518,9 @@ } }, "node_modules/@smithy/types": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", - "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.13.1.tgz", + "integrity": "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -9241,30 +9250,102 @@ "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", "license": "MIT" }, + "node_modules/@tatumio/tron-wallet-provider/node_modules/@ethersproject/abi": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.9.tgz", + "integrity": "sha512-ily2OufA2DTrxkiHQw5GqbkMSnNKuwZBqKsajtT0ERhZy1r9w2CpW1bmtRMIGzaqQxCdn/GEoFogexk72cBBZQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.0.4", + "@ethersproject/bignumber": "^5.0.7", + "@ethersproject/bytes": "^5.0.4", + "@ethersproject/constants": "^5.0.4", + "@ethersproject/hash": "^5.0.4", + "@ethersproject/keccak256": "^5.0.3", + "@ethersproject/logger": "^5.0.5", + "@ethersproject/properties": "^5.0.3", + "@ethersproject/strings": "^5.0.4" + } + }, "node_modules/@tatumio/tron-wallet-provider/node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.0.0.tgz", + "integrity": "sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "license": "MIT", "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "@noble/hashes": "1.3.0" } }, "node_modules/@tatumio/tron-wallet-provider/node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", + "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/@tatumio/tron-wallet-provider/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", "license": "MIT", - "engines": { - "node": ">= 16" - }, "funding": { "url": "https://paulmillr.com/funding/" } }, + "node_modules/@tatumio/tron-wallet-provider/node_modules/@scure/bip32": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.0.tgz", + "integrity": "sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.0.0", + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@tatumio/tron-wallet-provider/node_modules/@scure/bip39": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.0.tgz", + "integrity": "sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + } + }, "node_modules/@tatumio/tron-wallet-provider/node_modules/@types/node": { "version": "22.7.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", @@ -9280,10 +9361,42 @@ "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", "license": "MIT" }, + "node_modules/@tatumio/tron-wallet-provider/node_modules/axios": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz", + "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@tatumio/tron-wallet-provider/node_modules/bignumber.js": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/@tatumio/tron-wallet-provider/node_modules/ethereum-cryptography": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.0.0.tgz", + "integrity": "sha512-g25m4EtfQGjstWgVE1aIz7XYYjf3kH5kG17ULWVB5dH6uLahsoltOhACzSxyDV+fhn4gbR4xRrOXGe6r2uh4Bg==", + "license": "MIT", + "dependencies": { + "@noble/curves": "1.0.0", + "@noble/hashes": "1.3.0", + "@scure/bip32": "1.3.0", + "@scure/bip39": "1.2.0" + } + }, "node_modules/@tatumio/tron-wallet-provider/node_modules/ethers": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.15.0.tgz", - "integrity": "sha512-Kf/3ZW54L4UT0pZtsY/rf+EkBU7Qi5nnhonjUb8yTXcxH3cdcWrV2cRyk0Xk/4jK6OoHhxxZHriyhje20If2hQ==", + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.16.0.tgz", + "integrity": "sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A==", "funding": [ { "type": "individual", @@ -9308,31 +9421,61 @@ "node": ">=14.0.0" } }, + "node_modules/@tatumio/tron-wallet-provider/node_modules/ethers/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@tatumio/tron-wallet-provider/node_modules/ethers/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@tatumio/tron-wallet-provider/node_modules/eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", + "license": "MIT" + }, + "node_modules/@tatumio/tron-wallet-provider/node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "license": "MIT" }, "node_modules/@tatumio/tron-wallet-provider/node_modules/tronweb": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/tronweb/-/tronweb-5.3.4.tgz", - "integrity": "sha512-79HEnwSAqyCKrT7QB8dkxad0RqYx3dSulEg4dfBQQVwzhRr+AqdE1yz+nfTUpftu54RejqaHjqz40ZzWNy077w==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.0.0", - "@ethersproject/abi": "^5.7.0", - "@tronweb3/google-protobuf": "^3.21.2", - "axios": "^1.8.4", - "bignumber.js": "^9.0.1", - "ethereum-cryptography": "^2.0.0", - "ethers": "^6.6.0", - "eventemitter3": "^3.1.0", - "injectpromise": "^1.0.0", - "lodash": "^4.17.21", - "querystring-es3": "^0.2.1", - "semver": "^5.6.0", - "validator": "^13.7.0" + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/tronweb/-/tronweb-5.3.5.tgz", + "integrity": "sha512-F1dbhctXPc3aWH0O3WTYVJ7+e9kl59//bz8xAuMEY0k/VAOzVfKPqZH9zqZWLjmq2X4uExh3zcJUm77096hdxg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "7.28.6", + "@ethersproject/abi": "5.0.9", + "@tronweb3/google-protobuf": "3.21.2", + "axios": "1.13.6", + "bignumber.js": "9.0.1", + "ethereum-cryptography": "2.0.0", + "ethers": "6.16.0", + "eventemitter3": "3.1.0", + "injectpromise": "1.0.0", + "lodash": "4.17.23", + "querystring-es3": "0.2.1", + "semver": "5.7.2", + "validator": "13.15.26" } }, "node_modules/@tatumio/tron-wallet-provider/node_modules/tslib": { @@ -9347,6 +9490,15 @@ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", "license": "MIT" }, + "node_modules/@tatumio/tron-wallet-provider/node_modules/validator": { + "version": "13.15.26", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.26.tgz", + "integrity": "sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/@tatumio/tron-wallet-provider/node_modules/ws": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", @@ -9375,9 +9527,9 @@ "license": "MIT" }, "node_modules/@tronweb3/google-protobuf": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/@tronweb3/google-protobuf/-/google-protobuf-3.21.4.tgz", - "integrity": "sha512-joxgV4esCdyZ921AprMIG1T7HjkypquhbJ5qJti/priCBJhRE1z9GOxIEMvayxSVSRbMGIoJNE0Knrg3vpwM1w==", + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/@tronweb3/google-protobuf/-/google-protobuf-3.21.2.tgz", + "integrity": "sha512-IVcT2GfWX3K6tHUVhs14NP5uzKhQt4KeDya1g9ACxuZsUzsaoGUIGzceK2Ltu7xp1YV94AaHOf4yxLAivlvEkQ==", "deprecated": "This package is deprecated. Please use the official package google-protobuf instead.", "license": "(BSD-3-Clause AND Apache-2.0)" }, @@ -10148,9 +10300,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "dev": true, "license": "MIT", "dependencies": { @@ -10171,13 +10323,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -10226,26 +10378,56 @@ } }, "node_modules/@uniswap/router-sdk": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@uniswap/router-sdk/-/router-sdk-2.4.0.tgz", - "integrity": "sha512-dfMJ/zRnZ+RqanKTUrKR129Z8It8MPFM2Fhtaop6+Vk7BURY8kiyPi/GIUnPmk7H0WSWhdaB+R7zJZR8wuhqlg==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@uniswap/router-sdk/-/router-sdk-2.9.0.tgz", + "integrity": "sha512-fHQelLzFADkyNxytmXU89Z7wL2+Dln5kh7NTsJGtS63S/Y9SKTdHna1XQsooOH8bMhPvsVuVaqu/nF8ZYoAZZA==", "license": "MIT", "dependencies": { "@ethersproject/abi": "^5.5.0", - "@uniswap/sdk-core": "^7.10.1", + "@ethersproject/solidity": "^5.0.9", + "@uniswap/sdk-core": "^7.13.0", "@uniswap/swap-router-contracts": "^1.3.0", - "@uniswap/v2-sdk": "^4.17.0", - "@uniswap/v3-sdk": "^3.27.0", - "@uniswap/v4-sdk": "^1.27.0" + "@uniswap/v2-sdk": "^4.20.0", + "@uniswap/v3-sdk": "^3.30.0", + "@uniswap/v4-sdk": "^2.0.0", + "jsbi": "^3.1.4", + "tiny-invariant": "^1.1.0", + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@uniswap/router-sdk/node_modules/@uniswap/v4-sdk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@uniswap/v4-sdk/-/v4-sdk-2.0.0.tgz", + "integrity": "sha512-9zo4903aoimL9R+nNULdkBKQaSdWAsv2inq4TLeum88xNBkfIpgjRz/ihPtrvYVsxcGFPHsZOLRE/L+CregYqw==", + "license": "MIT", + "dependencies": { + "@ethersproject/abi": "^5.5.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/solidity": "^5.0.9", + "@uniswap/sdk-core": "^7.13.0", + "@uniswap/v3-periphery": "^1.1.1", + "@uniswap/v3-sdk": "^3.30.0", + "ethers": "^5.7.0", + "jsbi": "^3.1.4", + "tiny-invariant": "^1.1.0", + "tiny-warning": "^1.0.3", + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=18" } }, "node_modules/@uniswap/sdk-core": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@uniswap/sdk-core/-/sdk-core-7.10.1.tgz", - "integrity": "sha512-MOhGAjGMqrd95p+te6tBK8pHgHCVMRTs5imqZk2aTqLoKgu6KzEGllifHb70ME6I4Q2p9eIPpX3xjfh4MKFT2w==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@uniswap/sdk-core/-/sdk-core-7.13.0.tgz", + "integrity": "sha512-rfRruH0vu4hdG1iV8E7XbpqXB4ffMWAfjQ1zEUExirSnOaxe3DtGlBjoiD/uufb3ZbYcKdfKrqcheqK/OhxMpQ==", "license": "MIT", "dependencies": { "@ethersproject/address": "^5.0.2", + "@ethersproject/bignumber": "^5.5.0", "@ethersproject/bytes": "^5.7.0", "@ethersproject/keccak256": "5.7.0", "@ethersproject/strings": "5.7.0", @@ -10253,10 +10435,11 @@ "decimal.js-light": "^2.5.0", "jsbi": "^3.1.4", "tiny-invariant": "^1.1.0", - "toformat": "^2.0.0" + "toformat": "^2.0.0", + "tslib": "^2.3.0" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/@uniswap/sdk-core/node_modules/@ethersproject/keccak256": { @@ -10460,26 +10643,31 @@ } }, "node_modules/@uniswap/universal-router-sdk": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@uniswap/universal-router-sdk/-/universal-router-sdk-4.30.0.tgz", - "integrity": "sha512-yO34+VMtqGScCxym0x9C3nTCk5sLef/dkOj5dvnLEs21fXp7k3Y54ih6zCWh2BqJnWcD8/tQdME1jTTy9RsZYA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/@uniswap/universal-router-sdk/-/universal-router-sdk-4.35.0.tgz", + "integrity": "sha512-Rt6BUh/7Nu29F637iq4VLcjZUZRXY6wGbZCvOCNJQjKjm88CrF6dJc3rlR/HDdA/wFW/rQQjelo15NGUwZslhw==", "license": "MIT", "dependencies": { + "@ethersproject/abi": "^5.5.0", + "@ethersproject/abstract-signer": "^5.7.0", "@openzeppelin/contracts": "4.7.0", - "@uniswap/permit2-sdk": "^1.3.0", - "@uniswap/router-sdk": "^2.4.0", - "@uniswap/sdk-core": "^7.10.0", + "@uniswap/permit2-sdk": "^1.4.0", + "@uniswap/router-sdk": "^2.8.0", + "@uniswap/sdk-core": "^7.13.0", "@uniswap/universal-router": "2.1.0", "@uniswap/v2-core": "^1.0.1", - "@uniswap/v2-sdk": "^4.17.0", + "@uniswap/v2-sdk": "^4.20.0", "@uniswap/v3-core": "1.0.0", - "@uniswap/v3-sdk": "^3.27.0", - "@uniswap/v4-sdk": "^1.27.0", + "@uniswap/v3-sdk": "^3.30.0", + "@uniswap/v4-sdk": "^1.30.0", "bignumber.js": "^9.0.2", - "ethers": "^5.7.0" + "ethers": "^5.7.0", + "jsbi": "^3.1.4", + "tiny-invariant": "^1.1.0", + "tslib": "^2.3.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/@uniswap/universal-router-sdk/node_modules/@openzeppelin/contracts": { @@ -10542,19 +10730,22 @@ } }, "node_modules/@uniswap/v2-sdk": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/@uniswap/v2-sdk/-/v2-sdk-4.17.0.tgz", - "integrity": "sha512-JyXFOB4tyk9qk2kps9VA1VgXB9DBK6jbmElTsaMpDThVutDbEzE7nJMas6/TaBREBkitBk0EhAfs0aG1z2egPA==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@uniswap/v2-sdk/-/v2-sdk-4.20.0.tgz", + "integrity": "sha512-D1avDCMg4reMqkDQqb6PRo8EKHaQvxyA9dImtdF7CDsxfgrRjswcENPJ0zvTPOko2831Y5hlpnm1tS2KEkLIIg==", "license": "MIT", "dependencies": { "@ethersproject/address": "^5.0.2", + "@ethersproject/bignumber": "^5.5.0", "@ethersproject/solidity": "^5.0.9", - "@uniswap/sdk-core": "^7.10.0", + "@uniswap/sdk-core": "^7.13.0", + "jsbi": "^3.1.4", "tiny-invariant": "^1.1.0", - "tiny-warning": "^1.0.3" + "tiny-warning": "^1.0.3", + "tslib": "^2.3.0" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/@uniswap/v3-core": { @@ -10583,22 +10774,26 @@ } }, "node_modules/@uniswap/v3-sdk": { - "version": "3.27.0", - "resolved": "https://registry.npmjs.org/@uniswap/v3-sdk/-/v3-sdk-3.27.0.tgz", - "integrity": "sha512-BRgb9nWuxptXJmuQrax9XyqcuOMEuWsUjDSyus0UvOavzijbOu8jh3DWptg/15D7oL67Xmz5zvQaSPbLIL1cpA==", + "version": "3.30.0", + "resolved": "https://registry.npmjs.org/@uniswap/v3-sdk/-/v3-sdk-3.30.0.tgz", + "integrity": "sha512-3AMxJigAiUVguYupzaVLTN9Myx8sbWOqOtod8JBtrbYQ9PImqpMmscpMSbeICoEfeUa0QiY9Me0r9CYcNjBwIA==", "license": "MIT", "dependencies": { "@ethersproject/abi": "^5.5.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.0.2", "@ethersproject/solidity": "^5.0.9", - "@uniswap/sdk-core": "^7.10.0", + "@uniswap/sdk-core": "^7.13.0", "@uniswap/swap-router-contracts": "^1.3.0", "@uniswap/v3-periphery": "^1.1.1", "@uniswap/v3-staker": "1.0.0", + "jsbi": "^3.1.4", "tiny-invariant": "^1.1.0", - "tiny-warning": "^1.0.3" + "tiny-warning": "^1.0.3", + "tslib": "^2.3.0" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/@uniswap/v3-staker": { @@ -10632,19 +10827,25 @@ } }, "node_modules/@uniswap/v4-sdk": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@uniswap/v4-sdk/-/v4-sdk-1.27.0.tgz", - "integrity": "sha512-htQFiON12RR4BipyVdzr4XklYjy756bqruBLA8b4n9Wn7QAWemYrDGbnCvmk1xvzvtc4t9WggDlbRjZ5ON34+g==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@uniswap/v4-sdk/-/v4-sdk-1.30.0.tgz", + "integrity": "sha512-ckGLQl8QcjrNtZE2oL6hEUacoBtz6ApPK9lwiG6JMsQajLy2Ml2lwt4ckk1Y27+bhdvBbvtzUsA5j7ru1SLbtw==", "license": "MIT", "dependencies": { + "@ethersproject/abi": "^5.5.0", + "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/solidity": "^5.0.9", - "@uniswap/sdk-core": "^7.10.1", - "@uniswap/v3-sdk": "3.27.0", + "@uniswap/sdk-core": "^7.13.0", + "@uniswap/v3-periphery": "^1.1.1", + "@uniswap/v3-sdk": "^3.30.0", + "ethers": "^5.7.0", + "jsbi": "^3.1.4", "tiny-invariant": "^1.1.0", - "tiny-warning": "^1.0.3" + "tiny-warning": "^1.0.3", + "tslib": "^2.3.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/@webassemblyjs/ast": { @@ -11545,9 +11746,9 @@ } }, "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", "license": "MIT" }, "node_modules/asn1js": { @@ -11727,14 +11928,23 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.1.tgz", - "integrity": "sha512-hU4EGxxt+j7TQijx1oYdAjw4xuIp1wRQSsbMFwSthCWeBQur1eF+qJ5iQ5sN3Tw8YRzQNKb8jszgBdMDVqwJcw==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.14.0.tgz", + "integrity": "sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^2.1.0" + } + }, + "node_modules/axios/node_modules/proxy-from-env": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" } }, "node_modules/b4a": { @@ -12415,9 +12625,9 @@ "license": "MIT" }, "node_modules/bitcoinjs-message/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", "license": "MIT" }, "node_modules/bitcoinjs-message/node_modules/bs58check": { @@ -12567,9 +12777,9 @@ "license": "MIT" }, "node_modules/bn.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", - "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.3.tgz", + "integrity": "sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==", "license": "MIT" }, "node_modules/body-parser": { @@ -12634,9 +12844,9 @@ "license": "MIT" }, "node_modules/bolt11/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", "license": "MIT" }, "node_modules/bolt11/node_modules/secp256k1": { @@ -12708,9 +12918,9 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -13283,9 +13493,9 @@ } }, "node_modules/checkout-sdk-node/node_modules/axios": { - "version": "0.30.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.30.2.tgz", - "integrity": "sha512-0pE4RQ4UQi1jKY6p7u6i1Tkzqmu+d+/tHS7Q7rKunWLB9WyilBTpHHpXzPNMDj5hTbK0B0PTLSz07yqMBiF6xg==", + "version": "0.30.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.30.3.tgz", + "integrity": "sha512-5/tmEb6TmE/ax3mdXBc/Mi6YdPGxQsv+0p5YlciXWt3PHIn0VamqCXhRMtScnwY3lbgSXLneOuXAKUhgmSRpwg==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.4", @@ -14831,14 +15041,14 @@ } }, "node_modules/editorconfig": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz", - "integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.7.tgz", + "integrity": "sha512-e0GOtq/aTQhVdNyDU9e02+wz9oDDM+SIOQxWME2QRjzRX5yyLAuHDE+0aE8vHb9XRC8XD37eO2u57+F09JqFhw==", "license": "MIT", "dependencies": { "@one-ini/wasm": "0.1.1", "commander": "^10.0.0", - "minimatch": "9.0.1", + "minimatch": "^9.0.1", "semver": "^7.5.3" }, "bin": { @@ -14849,9 +15059,9 @@ } }, "node_modules/editorconfig/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -14867,12 +15077,12 @@ } }, "node_modules/editorconfig/node_modules/minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -14926,9 +15136,9 @@ } }, "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", "license": "MIT" }, "node_modules/emitter-listener": { @@ -15502,9 +15712,9 @@ } }, "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -15742,9 +15952,9 @@ } }, "node_modules/eth-lib/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", "license": "MIT" }, "node_modules/eth-lib/node_modules/ws": { @@ -16156,9 +16366,9 @@ } }, "node_modules/express-handlebars/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -16185,9 +16395,9 @@ } }, "node_modules/express-handlebars/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -16445,10 +16655,25 @@ ], "license": "BSD-3-Clause" }, + "node_modules/fast-xml-builder": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", + "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "path-expression-matcher": "^1.1.3" + } + }, "node_modules/fast-xml-parser": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.7.tgz", - "integrity": "sha512-JzVLro9NQv92pOM/jTCR6mHlJh2FGwtomH8ZQjhFj/R29P2Fnj38OgPJVtcvYw6SuKClhgYuwUZf5b3rd8u2mA==", + "version": "5.5.9", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.9.tgz", + "integrity": "sha512-jldvxr1MC6rtiZKgrFnDSvT8xuH+eJqxqOBThUVjYrxssYTo1avZLGql5l0a0BAERR01CadYzZ83kVEkbyDg+g==", "funding": [ { "type": "github", @@ -16457,7 +16682,9 @@ ], "license": "MIT", "dependencies": { - "strnum": "^2.1.2" + "fast-xml-builder": "^1.1.4", + "path-expression-matcher": "^1.2.0", + "strnum": "^2.2.2" }, "bin": { "fxparser": "src/cli/cli.js" @@ -16548,9 +16775,9 @@ } }, "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "license": "MIT", "optional": true, "dependencies": { @@ -16558,9 +16785,9 @@ } }, "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "license": "ISC", "optional": true, "dependencies": { @@ -16709,9 +16936,9 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, @@ -16822,9 +17049,9 @@ } }, "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -17077,6 +17304,27 @@ "node": ">=10.3.0" } }, + "node_modules/geoip-lite2/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/geoip-lite2/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/geoip-lite2/node_modules/glob": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", @@ -17141,15 +17389,15 @@ } }, "node_modules/geoip-lite2/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -17347,21 +17595,21 @@ "license": "BSD-2-Clause" }, "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -17493,9 +17741,9 @@ } }, "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", + "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", "license": "MIT", "dependencies": { "minimist": "^1.2.5", @@ -17568,15 +17816,15 @@ "license": "MIT" }, "node_modules/hardhat": { - "version": "2.28.4", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.28.4.tgz", - "integrity": "sha512-iQC4WNWjWMz7cVVFqzEBNisUQ/EEEJrWysJ2hRAMTnfXJx6Y11UXdmtz4dHIzvGL0z27XCCaJrcApDPH0KaZEg==", + "version": "2.28.6", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.28.6.tgz", + "integrity": "sha512-zQze7qe+8ltwHvhX5NQ8sN1N37WWZGw8L63y+2XcPxGwAjc/SMF829z3NS6o1krX0sryhAsVBK/xrwUqlsot4Q==", "license": "MIT", "peer": true, "dependencies": { "@ethereumjs/util": "^9.1.0", "@ethersproject/abi": "^5.1.2", - "@nomicfoundation/edr": "0.12.0-next.22", + "@nomicfoundation/edr": "0.12.0-next.23", "@nomicfoundation/solidity-analyzer": "^0.1.0", "@sentry/node": "^5.18.1", "adm-zip": "^0.4.16", @@ -18315,9 +18563,9 @@ "license": "MIT" }, "node_modules/immutable": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", - "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.8.tgz", + "integrity": "sha512-d/Ld9aLbKpNwyl0KiM2CT1WYvkitQ1TSvmRtkcV8FKStiDoA7Slzgjmb/1G2yhKM1p0XeNOieaTbFZmU1d3Xuw==", "license": "MIT", "peer": true }, @@ -20170,9 +20418,9 @@ } }, "node_modules/js-beautify/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -20214,12 +20462,12 @@ } }, "node_modules/js-beautify/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -21461,27 +21709,27 @@ } }, "node_modules/mailparser": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/mailparser/-/mailparser-3.9.1.tgz", - "integrity": "sha512-6vHZcco3fWsDMkf4Vz9iAfxvwrKNGbHx0dV1RKVphQ/zaNY34Buc7D37LSa09jeSeybWzYcTPjhiZFxzVRJedA==", + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/mailparser/-/mailparser-3.9.6.tgz", + "integrity": "sha512-EJYTDWMrOS1kddK1mTsRkrx2Ngh2nYsg54SRMWVVWGVEGbHH4tod8tqqU9hIRPgGQVboSjFubDn9cboSitbM3Q==", "license": "MIT", "dependencies": { "@zone-eu/mailsplit": "5.4.8", "encoding-japanese": "2.2.0", "he": "1.2.0", "html-to-text": "9.0.5", - "iconv-lite": "0.7.0", + "iconv-lite": "0.7.2", "libmime": "5.3.7", "linkify-it": "5.0.0", - "nodemailer": "7.0.11", + "nodemailer": "8.0.4", "punycode.js": "2.3.1", "tlds": "1.261.0" } }, "node_modules/mailparser/node_modules/iconv-lite": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", - "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -21495,9 +21743,9 @@ } }, "node_modules/mailparser/node_modules/nodemailer": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-7.0.11.tgz", - "integrity": "sha512-gnXhNRE0FNhD7wPSCGhdNh46Hs6nm+uTyg+Kq0cZukNQiYdnCsoQjodNP9BQVG9XrcK/v6/MgpAPBUFyzh9pvw==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-8.0.4.tgz", + "integrity": "sha512-k+jf6N8PfQJ0Fe8ZhJlgqU5qJU44Lpvp2yvidH3vp1lPnVQMgi4yEEMPXg5eJS1gFIJTVq1NHBk7Ia9ARdSBdQ==", "license": "MIT-0", "engines": { "node": ">=6.0.0" @@ -21809,9 +22057,9 @@ "license": "MIT" }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -21948,9 +22196,9 @@ } }, "node_modules/mjml-cli/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -21971,12 +22219,12 @@ } }, "node_modules/mjml-cli/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -22447,9 +22695,9 @@ } }, "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "license": "MIT", "peer": true, "dependencies": { @@ -22478,9 +22726,9 @@ } }, "node_modules/mocha/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "license": "ISC", "peer": true, "dependencies": { @@ -22632,21 +22880,22 @@ } }, "node_modules/multer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.2.tgz", - "integrity": "sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz", + "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", "license": "MIT", "dependencies": { "append-field": "^1.0.0", "busboy": "^1.6.0", "concat-stream": "^2.0.0", - "mkdirp": "^0.5.6", - "object-assign": "^4.1.1", - "type-is": "^1.6.18", - "xtend": "^4.0.2" + "type-is": "^1.6.18" }, "engines": { "node": ">= 10.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/multibase": { @@ -23181,9 +23430,9 @@ } }, "node_modules/node-forge": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.2.tgz", - "integrity": "sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", + "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" @@ -23975,6 +24224,21 @@ "node": ">=8" } }, + "node_modules/path-expression-matcher": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.2.0.tgz", + "integrity": "sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -24131,9 +24395,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "license": "MIT", "engines": { "node": ">=8.6" @@ -24866,9 +25130,9 @@ } }, "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -25431,9 +25695,9 @@ } }, "node_modules/rimraf/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -25458,9 +25722,9 @@ } }, "node_modules/rimraf/node_modules/minimatch": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", - "integrity": "sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==", + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.7.tgz", + "integrity": "sha512-V+1uQNdzybxa14e/p00HZnQNNcTjnRJjDxg2V8wtkjFctq4M7hXFws4oekyTP0Jebeq7QYtpFyOeBAjc88zvYg==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -25540,9 +25804,9 @@ "peer": true }, "node_modules/router/node_modules/path-to-regexp": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", - "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.0.tgz", + "integrity": "sha512-PuseHIvAnz3bjrM2rGJtSgo1zjgxapTLZ7x2pjhzWwlp4SJQgK3f3iZIQwkpEnBaKz6seKBADpM4B4ySkuYypg==", "license": "MIT", "peer": true, "funding": { @@ -25851,9 +26115,9 @@ } }, "node_modules/schema-utils/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -25982,6 +26246,7 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "license": "BSD-3-Clause", + "peer": true, "dependencies": { "randombytes": "^2.1.0" } @@ -26285,9 +26550,9 @@ } }, "node_modules/servify/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", "license": "MIT" }, "node_modules/servify/node_modules/raw-body": { @@ -26887,9 +27152,9 @@ } }, "node_modules/solhint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -26903,9 +27168,9 @@ } }, "node_modules/solhint/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -26987,9 +27252,9 @@ "license": "MIT" }, "node_modules/solhint/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -27483,9 +27748,9 @@ } }, "node_modules/strnum": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz", - "integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.2.tgz", + "integrity": "sha512-DnR90I+jtXNSTXWdwrEy9FakW7UX+qUZg28gj5fk2vxxl7uS/3bpI4fjFYVmdK9etptYBPNkpahuQnEwhwECqA==", "funding": [ { "type": "github", @@ -28146,16 +28411,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.16", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", - "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "engines": { @@ -28371,9 +28635,9 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", "engines": { "node": ">=12" @@ -28570,13 +28834,13 @@ } }, "node_modules/tronweb": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/tronweb/-/tronweb-6.1.1.tgz", - "integrity": "sha512-9i2N+cTkRY7Y1B/V0+ZVwCYZFhdFDalh8sbI8Tpj5O65hMURvjFnaP1u/dTwVnVw07d9M143/19KarxeAzK6pg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/tronweb/-/tronweb-6.2.2.tgz", + "integrity": "sha512-jRBf4+7fJ0HUVzveBi0tE21r3EygCNtbYE92T38Sxlwr/x320W2vz+dvGLOIpp4kW/CvJ4HLvtnb6U30A0V2eA==", "license": "MIT", "dependencies": { "@babel/runtime": "7.26.10", - "axios": "1.12.2", + "axios": "1.13.5", "bignumber.js": "9.1.2", "ethereum-cryptography": "2.2.1", "ethers": "6.13.5", @@ -28644,13 +28908,13 @@ "license": "MIT" }, "node_modules/tronweb/node_modules/axios": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", - "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", + "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", "proxy-from-env": "^1.1.0" } }, @@ -29280,9 +29544,9 @@ } }, "node_modules/typeorm/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -29350,12 +29614,12 @@ } }, "node_modules/typeorm/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -29590,9 +29854,9 @@ } }, "node_modules/typescript-eslint/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "dev": true, "license": "MIT", "dependencies": { @@ -29623,13 +29887,13 @@ } }, "node_modules/typescript-eslint/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -30615,9 +30879,9 @@ } }, "node_modules/web3-eth-accounts/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", "license": "MIT" }, "node_modules/web3-eth-accounts/node_modules/eth-lib": { @@ -31536,9 +31800,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", "dev": true, "license": "ISC", "engines": { From a75670e4c18ecf2eafac6a2b098cf19694341dc9 Mon Sep 17 00:00:00 2001 From: David May Date: Mon, 30 Mar 2026 17:25:44 +0200 Subject: [PATCH 3/6] fix: improved comments --- .../supporting/notification/entities/mail/base/mail.ts | 2 +- src/subdomains/supporting/notification/services/mail.service.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/subdomains/supporting/notification/entities/mail/base/mail.ts b/src/subdomains/supporting/notification/entities/mail/base/mail.ts index 337d545a66..c6716a52a6 100644 --- a/src/subdomains/supporting/notification/entities/mail/base/mail.ts +++ b/src/subdomains/supporting/notification/entities/mail/base/mail.ts @@ -8,7 +8,7 @@ export interface MailParamBase { displayName?: string; cc?: string; bcc?: string; - template?: string; // Base template for this mail type, can be overridden by wallet config + template?: string; walletName?: string; options?: NotificationOptions; correlationId?: string; diff --git a/src/subdomains/supporting/notification/services/mail.service.ts b/src/subdomains/supporting/notification/services/mail.service.ts index 6ee1ae0648..c25ba574bc 100644 --- a/src/subdomains/supporting/notification/services/mail.service.ts +++ b/src/subdomains/supporting/notification/services/mail.service.ts @@ -16,7 +16,7 @@ export interface WalletMailConfig { pass: string; fromAddress: string; displayName: string; - template: string; // user-v2 template + template: string; // template for UserMailV2 } export interface MailOptions { From e7ced486aa0b7e5ffe521fd9c632ab93d325b608 Mon Sep 17 00:00:00 2001 From: David May Date: Tue, 31 Mar 2026 11:01:01 +0200 Subject: [PATCH 4/6] feat: custom mail account only for user mails --- src/config/config.ts | 40 +++++++++---------- .../notification/entities/mail/base/mail.ts | 2 +- .../entities/mail/personal-mail.ts | 3 +- .../entities/mail/user-mail-v2.ts | 2 +- .../notification/factories/mail.factory.ts | 25 +++++------- .../notification/services/mail.service.ts | 6 ++- 6 files changed, 37 insertions(+), 41 deletions(-) diff --git a/src/config/config.ts b/src/config/config.ts index cf2165e001..da27103328 100644 --- a/src/config/config.ts +++ b/src/config/config.ts @@ -20,7 +20,7 @@ import { AccountType } from 'src/subdomains/generic/user/models/user-data/accoun import { KycIdentificationType } from 'src/subdomains/generic/user/models/user-data/kyc-identification-type.enum'; import { UserData } from 'src/subdomains/generic/user/models/user-data/user-data.entity'; import { LegalEntity } from 'src/subdomains/generic/user/models/user-data/user-data.enum'; -import { MailOptions, WalletMailConfig } from 'src/subdomains/supporting/notification/services/mail.service'; +import { MailOptions } from 'src/subdomains/supporting/notification/services/mail.service'; import { LoggerOptions } from 'typeorm'; import { EVM_CHAINS } from './chains.config'; @@ -620,26 +620,24 @@ export class Configuration { liqMail: process.env.LIQ_MAIL || 'liq@dfx.swiss', noReplyMail: process.env.NOREPLY_MAIL || 'noreply@dfx.swiss', }, - }; - - // Wallet-specific mail configurations - walletMail: Record> = { - onchainlabs: { - template: 'onChainLabs', - }, - ...(process.env.REALUNIT_MAIL_USER && - process.env.REALUNIT_MAIL_PASS && { - RealUnit: { - host: 'mail.infomaniak.com', - port: 587, - secure: false, - user: process.env.REALUNIT_MAIL_USER, - pass: process.env.REALUNIT_MAIL_PASS, - fromAddress: process.env.REALUNIT_MAIL_USER, - displayName: 'RealUnit', - template: 'user-v2', - }, - }), + wallet: { + onchainlabs: { + template: 'onChainLabs', + }, + ...(process.env.REALUNIT_MAIL_USER && + process.env.REALUNIT_MAIL_PASS && { + RealUnit: { + host: 'mail.infomaniak.com', + port: 587, + secure: false, + user: process.env.REALUNIT_MAIL_USER, + pass: process.env.REALUNIT_MAIL_PASS, + fromAddress: process.env.REALUNIT_MAIL_USER, + displayName: 'RealUnit', + template: 'user-v2', + }, + }), + }, }; coinGecko = { diff --git a/src/subdomains/supporting/notification/entities/mail/base/mail.ts b/src/subdomains/supporting/notification/entities/mail/base/mail.ts index c6716a52a6..df81b97e96 100644 --- a/src/subdomains/supporting/notification/entities/mail/base/mail.ts +++ b/src/subdomains/supporting/notification/entities/mail/base/mail.ts @@ -44,7 +44,7 @@ export class Mail extends Notification { constructor(params: MailParams | MailParamsNew) { super(); - const walletMailConfig = params.walletName ? GetConfig().walletMail[params.walletName] : undefined; + const walletMailConfig = params.walletName ? GetConfig().mail.wallet[params.walletName] : undefined; this.#walletName = params.walletName; this.#to = params.to; diff --git a/src/subdomains/supporting/notification/entities/mail/personal-mail.ts b/src/subdomains/supporting/notification/entities/mail/personal-mail.ts index c5683038f8..1101597cd9 100644 --- a/src/subdomains/supporting/notification/entities/mail/personal-mail.ts +++ b/src/subdomains/supporting/notification/entities/mail/personal-mail.ts @@ -29,10 +29,9 @@ export interface PersonalMailParams { } export class PersonalMail extends Mail { - constructor(params: PersonalMailParams, wallet?: Wallet) { + constructor(params: PersonalMailParams) { super({ ...params, - walletName: wallet?.name, template: 'personal', templateParams: params, }); diff --git a/src/subdomains/supporting/notification/entities/mail/user-mail-v2.ts b/src/subdomains/supporting/notification/entities/mail/user-mail-v2.ts index ed5a0f823e..5e11108dbe 100644 --- a/src/subdomains/supporting/notification/entities/mail/user-mail-v2.ts +++ b/src/subdomains/supporting/notification/entities/mail/user-mail-v2.ts @@ -35,7 +35,7 @@ export class UserMailV2 extends Mail { instagramUrl: Config.social.instagram, }; - const walletMailConfig = wallet?.name ? GetConfig().walletMail[wallet.name] : undefined; + const walletMailConfig = wallet?.name ? GetConfig().mail.wallet[wallet.name] : undefined; super({ ...params, diff --git a/src/subdomains/supporting/notification/factories/mail.factory.ts b/src/subdomains/supporting/notification/factories/mail.factory.ts index 09d9577bee..817e2782cd 100644 --- a/src/subdomains/supporting/notification/factories/mail.factory.ts +++ b/src/subdomains/supporting/notification/factories/mail.factory.ts @@ -171,20 +171,17 @@ export class MailFactory { const lang = userData.language.symbol; - return new PersonalMail( - { - to: userData.mail, - bcc, - subject: this.translate(title, lang), - prefix: prefix && this.getMailAffix(prefix, lang), - banner, - from, - displayName, - correlationId, - options, - }, - wallet, - ); + return new PersonalMail({ + to: userData.mail, + bcc, + subject: this.translate(title, lang), + prefix: prefix && this.getMailAffix(prefix, lang), + banner, + from, + displayName, + correlationId, + options, + }); } //*** TRANSLATION METHODS ***// diff --git a/src/subdomains/supporting/notification/services/mail.service.ts b/src/subdomains/supporting/notification/services/mail.service.ts index c25ba574bc..20cba43c0f 100644 --- a/src/subdomains/supporting/notification/services/mail.service.ts +++ b/src/subdomains/supporting/notification/services/mail.service.ts @@ -8,6 +8,7 @@ import { Config, Environment, GetConfig } from 'src/config/config'; import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Mail } from '../entities/mail/base/mail'; +// custom wallet config for UserMailV2 export interface WalletMailConfig { host: string; port: number; @@ -16,7 +17,7 @@ export interface WalletMailConfig { pass: string; fromAddress: string; displayName: string; - template: string; // template for UserMailV2 + template: string; } export interface MailOptions { @@ -28,6 +29,7 @@ export interface MailOptions { liqMail: string; noReplyMail: string; }; + wallet: Record>; } @Injectable() @@ -63,7 +65,7 @@ export class MailService { } private getTransport(walletName?: string): nodemailer.Transporter { - const walletConfig = walletName ? GetConfig().walletMail[walletName] : undefined; + const walletConfig = walletName ? GetConfig().mail.wallet[walletName] : undefined; const key = walletConfig?.host ? walletName : 'default'; let transport = this.transports.get(key); From 08111b6345e32545c3a84d4f9e8c9c2f0fba2eab Mon Sep 17 00:00:00 2001 From: David May Date: Tue, 31 Mar 2026 11:34:27 +0200 Subject: [PATCH 5/6] chore: cleanup --- src/config/config.ts | 25 +++++++++---------- .../notification/entities/mail/base/mail.ts | 8 +++--- .../entities/mail/personal-mail.ts | 6 +---- .../entities/mail/user-mail-v2.ts | 4 +-- .../notification/services/mail.service.ts | 8 +++--- 5 files changed, 23 insertions(+), 28 deletions(-) diff --git a/src/config/config.ts b/src/config/config.ts index da27103328..ee826ed680 100644 --- a/src/config/config.ts +++ b/src/config/config.ts @@ -624,19 +624,18 @@ export class Configuration { onchainlabs: { template: 'onChainLabs', }, - ...(process.env.REALUNIT_MAIL_USER && - process.env.REALUNIT_MAIL_PASS && { - RealUnit: { - host: 'mail.infomaniak.com', - port: 587, - secure: false, - user: process.env.REALUNIT_MAIL_USER, - pass: process.env.REALUNIT_MAIL_PASS, - fromAddress: process.env.REALUNIT_MAIL_USER, - displayName: 'RealUnit', - template: 'user-v2', - }, - }), + ...(process.env.REALUNIT_MAIL_USER && { + RealUnit: { + host: 'mail.infomaniak.com', + port: 587, + secure: false, + user: process.env.REALUNIT_MAIL_USER, + pass: process.env.REALUNIT_MAIL_PASS, + fromAddress: process.env.REALUNIT_MAIL_USER, + displayName: 'RealUnit', + template: 'user-v2', + }, + }), }, }; diff --git a/src/subdomains/supporting/notification/entities/mail/base/mail.ts b/src/subdomains/supporting/notification/entities/mail/base/mail.ts index df81b97e96..ce7e9df057 100644 --- a/src/subdomains/supporting/notification/entities/mail/base/mail.ts +++ b/src/subdomains/supporting/notification/entities/mail/base/mail.ts @@ -1,4 +1,4 @@ -import { GetConfig } from 'src/config/config'; +import { Config } from 'src/config/config'; import { Notification, NotificationOptions } from '../../notification.entity'; export interface MailParamBase { @@ -44,18 +44,18 @@ export class Mail extends Notification { constructor(params: MailParams | MailParamsNew) { super(); - const walletMailConfig = params.walletName ? GetConfig().mail.wallet[params.walletName] : undefined; + const walletMailConfig = params.walletName ? Config.mail.wallet[params.walletName] : undefined; this.#walletName = params.walletName; this.#to = params.to; this.#subject = params.subject; this.#from = { name: params.displayName ?? walletMailConfig?.displayName ?? 'DFX.swiss', - address: params.from ?? walletMailConfig?.fromAddress ?? GetConfig().mail.contact.noReplyMail, + address: params.from ?? walletMailConfig?.fromAddress ?? Config.mail.contact.noReplyMail, }; this.#cc = params.cc; this.#bcc = params.bcc; - this.#template = params.template ?? GetConfig().mail.defaultMailTemplate; + this.#template = params.template ?? Config.mail.defaultMailTemplate; this.#templateParams = params.templateParams; } diff --git a/src/subdomains/supporting/notification/entities/mail/personal-mail.ts b/src/subdomains/supporting/notification/entities/mail/personal-mail.ts index 1101597cd9..d207ddbaf8 100644 --- a/src/subdomains/supporting/notification/entities/mail/personal-mail.ts +++ b/src/subdomains/supporting/notification/entities/mail/personal-mail.ts @@ -30,10 +30,6 @@ export interface PersonalMailParams { export class PersonalMail extends Mail { constructor(params: PersonalMailParams) { - super({ - ...params, - template: 'personal', - templateParams: params, - }); + super({ ...params, template: 'personal', templateParams: params }); } } diff --git a/src/subdomains/supporting/notification/entities/mail/user-mail-v2.ts b/src/subdomains/supporting/notification/entities/mail/user-mail-v2.ts index 5e11108dbe..7ad321ef90 100644 --- a/src/subdomains/supporting/notification/entities/mail/user-mail-v2.ts +++ b/src/subdomains/supporting/notification/entities/mail/user-mail-v2.ts @@ -1,4 +1,4 @@ -import { Config, GetConfig } from 'src/config/config'; +import { Config } from 'src/config/config'; import { UserData } from 'src/subdomains/generic/user/models/user-data/user-data.entity'; import { Wallet } from 'src/subdomains/generic/user/models/wallet/wallet.entity'; import { MailAffix, TranslationItem } from '../../interfaces'; @@ -35,7 +35,7 @@ export class UserMailV2 extends Mail { instagramUrl: Config.social.instagram, }; - const walletMailConfig = wallet?.name ? GetConfig().mail.wallet[wallet.name] : undefined; + const walletMailConfig = wallet?.name ? Config.mail.wallet[wallet.name] : undefined; super({ ...params, diff --git a/src/subdomains/supporting/notification/services/mail.service.ts b/src/subdomains/supporting/notification/services/mail.service.ts index 20cba43c0f..842d5f526c 100644 --- a/src/subdomains/supporting/notification/services/mail.service.ts +++ b/src/subdomains/supporting/notification/services/mail.service.ts @@ -4,7 +4,7 @@ import * as fs from 'fs'; import * as handlebars from 'handlebars'; import * as nodemailer from 'nodemailer'; import { join } from 'path'; -import { Config, Environment, GetConfig } from 'src/config/config'; +import { Config, Environment } from 'src/config/config'; import { DfxLogger } from 'src/shared/services/dfx-logger'; import { Mail } from '../entities/mail/base/mail'; @@ -65,7 +65,7 @@ export class MailService { } private getTransport(walletName?: string): nodemailer.Transporter { - const walletConfig = walletName ? GetConfig().mail.wallet[walletName] : undefined; + const walletConfig = walletName ? Config.mail.wallet[walletName] : undefined; const key = walletConfig?.host ? walletName : 'default'; let transport = this.transports.get(key); @@ -89,11 +89,11 @@ export class MailService { }); } - return nodemailer.createTransport(GetConfig().mail.options.transport as nodemailer.TransportOptions); + return nodemailer.createTransport(Config.mail.options.transport as nodemailer.TransportOptions); } private compileTemplate(template: string, params: Record): string { - const templatePath = join(process.cwd(), 'src/subdomains/supporting/notification/templates', `${template}.hbs`); + const templatePath = join(Config.mail.options.template.dir, `${template}.hbs`); const templateContent = fs.readFileSync(templatePath, 'utf-8'); return handlebars.compile(templateContent)(params); } From 1d4c3bd7b6d484ca659c6ff071d3ff0bcfe477d2 Mon Sep 17 00:00:00 2001 From: David May Date: Tue, 31 Mar 2026 11:58:46 +0200 Subject: [PATCH 6/6] chore: removed log --- src/subdomains/supporting/notification/services/mail.service.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/subdomains/supporting/notification/services/mail.service.ts b/src/subdomains/supporting/notification/services/mail.service.ts index 842d5f526c..ae369bdd6f 100644 --- a/src/subdomains/supporting/notification/services/mail.service.ts +++ b/src/subdomains/supporting/notification/services/mail.service.ts @@ -72,7 +72,6 @@ export class MailService { if (!transport) { transport = this.createTransport(walletConfig); this.transports.set(key, transport); - this.logger.info(`Created mail transport: ${key}`); } return transport;