From c553c4d56679f9477407c4f6ec394d0b374513d5 Mon Sep 17 00:00:00 2001 From: Declan Carroll Date: Thu, 30 Oct 2025 17:00:18 +0000 Subject: [PATCH] fix: Update packages for security fixes (#21375) --- package.json | 4 +- packages/cli/package.json | 4 +- .../nodes/Google/Gmail/GenericFunctions.ts | 1 - .../Google/Gmail/test/v1/GmailV1.node.test.ts | 76 +- .../nodes/Google/Gmail/v1/GmailV1.node.ts | 1 + packages/nodes-base/package.json | 4 +- packages/testing/containers/index.ts | 10 + .../containers/n8n-test-container-creation.ts | 28 +- .../containers/n8n-test-container-helpers.ts | 55 + .../containers/n8n-test-container-mailpit.ts | 198 ++++ packages/testing/playwright/fixtures/base.ts | 12 +- .../testing/playwright/playwright-projects.ts | 1 + .../playwright/tests/ui/30-mail-node.spec.ts | 79 ++ .../ui/31-mail-cli-transactional.spec.ts | 14 + pnpm-lock.yaml | 1034 +++++++++++++++-- pnpm-workspace.yaml | 1 + 16 files changed, 1427 insertions(+), 95 deletions(-) create mode 100644 packages/testing/containers/n8n-test-container-mailpit.ts create mode 100644 packages/testing/playwright/tests/ui/30-mail-node.spec.ts create mode 100644 packages/testing/playwright/tests/ui/31-mail-cli-transactional.spec.ts diff --git a/package.json b/package.json index 334556a1f8e..cbf81b6b997 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,9 @@ "date-fns": "2.30.0", "date-fns-tz": "2.0.0", "form-data": "4.0.4", - "tmp": "0.2.4" + "tmp": "0.2.4", + "nodemailer": "7.0.10", + "validator": "13.15.20" }, "patchedDependencies": { "bull@4.16.4": "patches/bull@4.16.4.patch", diff --git a/packages/cli/package.json b/packages/cli/package.json index 75327ebcad3..3f17ef609dd 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -153,7 +153,7 @@ "n8n-nodes-base": "workspace:*", "n8n-workflow": "workspace:*", "nanoid": "catalog:", - "nodemailer": "6.9.9", + "nodemailer": "catalog:", "oauth-1.0a": "2.2.6", "open": "7.4.2", "openid-client": "6.5.0", @@ -180,7 +180,7 @@ "syslog-client": "1.1.1", "undici": "^7.16.0", "uuid": "catalog:", - "validator": "13.7.0", + "validator": "13.15.20", "ws": "8.17.1", "xml2js": "catalog:", "xmllint-wasm": "3.0.1", diff --git a/packages/nodes-base/nodes/Google/Gmail/GenericFunctions.ts b/packages/nodes-base/nodes/Google/Gmail/GenericFunctions.ts index 41dccf21685..aa133f5ca73 100644 --- a/packages/nodes-base/nodes/Google/Gmail/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Google/Gmail/GenericFunctions.ts @@ -245,7 +245,6 @@ export async function encodeEmail(email: IEmail) { // by default the bcc headers are deleted when the mail is built. // So add keepBcc flag to override such behaviour. Only works when // the flag is set after the compilation. - // @ts-expect-error - https://nodemailer.com/extras/mailcomposer/#bcc mail.keepBcc = true; const mailBody = await mail.build(); diff --git a/packages/nodes-base/nodes/Google/Gmail/test/v1/GmailV1.node.test.ts b/packages/nodes-base/nodes/Google/Gmail/test/v1/GmailV1.node.test.ts index 2e7de540222..651783a87f7 100644 --- a/packages/nodes-base/nodes/Google/Gmail/test/v1/GmailV1.node.test.ts +++ b/packages/nodes-base/nodes/Google/Gmail/test/v1/GmailV1.node.test.ts @@ -5,6 +5,33 @@ import nock from 'nock'; import labels from '../fixtures/labels.json'; import messages from '../fixtures/messages.json'; +function normalizeDraftMail(mail: string) { + let normalizedMail = mail.replace(/\r\n/g, '\n'); + normalizedMail = normalizedMail + .replace(/boundary=\".*\"/g, 'boundary="--test-boundary"') + .replace(/----.*/g, '----test-boundary') + .replace(/^From:.*$/gm, '') + .replace(/Message-ID:.*/g, 'Message-ID: test-message-id'); + + const parts = normalizedMail.split(/\n\n/); + if (parts.length > 1) { + const headerBlock = parts[0]; + const bodyBlock = parts.slice(1).join('\n\n'); + const headers = headerBlock.split(/\n/).filter(Boolean); + const map = new Map(); + headers.forEach((line) => { + const idx = line.indexOf(':'); + if (idx > -1) map.set(line.slice(0, idx), line); + }); + const ordered = ['Content-Type', 'Cc', 'Bcc', 'Subject', 'Message-ID', 'Date', 'MIME-Version'] + .map((k) => map.get(k)) + .filter(Boolean) as string[]; + normalizedMail = `${ordered.join('\n')}\n\n${bodyBlock}`; + } + + return normalizedMail; +} + describe('Test Gmail Node v1', () => { beforeAll(() => { jest @@ -128,24 +155,49 @@ describe('Test Gmail Node v1', () => { const parsedBody = jsonParse<{ message: { raw: string; threadId: string } }>(body); const mail = Buffer.from(parsedBody.message.raw, 'base64').toString('utf-8'); - // Remove dynamic fields from mail - parsedBody.message.raw = Buffer.from( - mail - .replace(/boundary=".*"/g, 'boundary="--test-boundary"') - .replace(/----.*/g, '----test-boundary') - .replace(/Message-ID:.*/g, 'Message-ID: test-message-id'), - 'utf-8', - ).toString('base64'); + const normalizedMail = normalizeDraftMail(mail); + parsedBody.message.raw = Buffer.from(normalizedMail, 'utf-8').toString('base64'); return JSON.stringify(parsedBody); } catch (error) { return body; } }) - .post('/v1/users/me/drafts', { - message: { - raw: 'Q29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSItLXRlc3QtYm91bmRhcnkiDQpDYzogdGVzdF9jY0BuOG4uaW8NCkJjYzogdGVzdF9iY2NAbjhuLmlvDQpTdWJqZWN0OiBUZXN0IFN1YmplY3QNCk1lc3NhZ2UtSUQ6IHRlc3QtbWVzc2FnZS1pZA0KRGF0ZTogTW9uLCAxNiBEZWMgMjAyNCAxMjozNDo1NiArMDAwMA0KTUlNRS1WZXJzaW9uOiAxLjANCg0KLS0tLXRlc3QtYm91bmRhcnkNCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOA0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdA0KDQpUZXN0IE1lc3NhZ2UNCi0tLS10ZXN0LWJvdW5kYXJ5DQpDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb247IG5hbWU9ZmlsZS5qc29uDQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQNCkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPWZpbGUuanNvbg0KDQpXM3NpWVhSMFlXTm9iV1Z1ZENJNmRISjFaWDFkDQotLS0tdGVzdC1ib3VuZGFyeQ0K', - }, + .post('/v1/users/me/drafts', (reqBody) => { + try { + const b = typeof reqBody === 'string' ? JSON.parse(reqBody) : reqBody; + const raw = b?.message?.raw as string; + if (typeof raw !== 'string') return false; + const mail = Buffer.from(raw, 'base64').toString('utf-8'); + const normalized = normalizeDraftMail(mail); + const expectedNormalized = [ + 'Content-Type: multipart/mixed; boundary="--test-boundary"', + 'Cc: test_cc@n8n.io', + 'Bcc: test_bcc@n8n.io', + 'Subject: Test Subject', + 'Message-ID: test-message-id', + 'Date: Mon, 16 Dec 2024 12:34:56 +0000', + 'MIME-Version: 1.0', + '', + '----test-boundary', + 'Content-Type: text/plain; charset=utf-8', + 'Content-Transfer-Encoding: 7bit', + '', + 'Test Message', + '----test-boundary', + 'Content-Type: application/json; name=file.json', + 'Content-Transfer-Encoding: base64', + 'Content-Disposition: attachment; filename=file.json', + '', + 'W3siYXR0YWNobWVudCI6dHJ1ZX1d', + '----test-boundary', + ].join('\n'); + // eslint-disable-next-line no-console + console.log('Normalized (v1) actual:', normalized); + return normalized.trimEnd() === expectedNormalized.trimEnd(); + } catch { + return false; + } }) .query({ userId: 'me', uploadType: 'media' }) .reply(200, messages[0]); diff --git a/packages/nodes-base/nodes/Google/Gmail/v1/GmailV1.node.ts b/packages/nodes-base/nodes/Google/Gmail/v1/GmailV1.node.ts index b7054459236..4a65baca62f 100644 --- a/packages/nodes-base/nodes/Google/Gmail/v1/GmailV1.node.ts +++ b/packages/nodes-base/nodes/Google/Gmail/v1/GmailV1.node.ts @@ -642,6 +642,7 @@ export class GmailV1 implements INodeType { } const email: IEmail = { + from: (additionalFields.senderName as string) || '', to: toStr, cc: ccStr, bcc: bccStr, diff --git a/packages/nodes-base/package.json b/packages/nodes-base/package.json index 83d47760c5b..970958f8702 100644 --- a/packages/nodes-base/package.json +++ b/packages/nodes-base/package.json @@ -871,7 +871,7 @@ "@types/mailparser": "^3.4.4", "@types/mime-types": "^2.1.0", "@types/mssql": "^9.1.5", - "@types/nodemailer": "^6.4.14", + "@types/nodemailer": "^7.0.3", "@types/oracledb": "^6.9.1", "@types/promise-ftp": "^1.3.4", "@types/rfc2047": "^2.0.1", @@ -932,7 +932,7 @@ "n8n-workflow": "workspace:*", "node-html-markdown": "1.2.0", "node-ssh": "13.2.0", - "nodemailer": "6.9.9", + "nodemailer": "catalog:", "oracledb": "6.9.0", "otpauth": "9.1.1", "pdfjs-dist": "5.3.31", diff --git a/packages/testing/containers/index.ts b/packages/testing/containers/index.ts index 6922a933f6e..f7d10abbca0 100644 --- a/packages/testing/containers/index.ts +++ b/packages/testing/containers/index.ts @@ -10,3 +10,13 @@ export type { N8NConfig, N8NStack } from './n8n-test-container-creation'; export * from './performance-plans'; export { ContainerTestHelpers } from './n8n-test-container-helpers'; +export { + setupMailpit, + getMailpitEnvironment, + mailpitClear, + mailpitList, + mailpitGet, + mailpitWaitForMessage, + type MailpitMessage, + type MailpitQuery, +} from './n8n-test-container-mailpit'; diff --git a/packages/testing/containers/n8n-test-container-creation.ts b/packages/testing/containers/n8n-test-container-creation.ts index f8f3c9bde00..6453c6a3198 100644 --- a/packages/testing/containers/n8n-test-container-creation.ts +++ b/packages/testing/containers/n8n-test-container-creation.ts @@ -28,6 +28,7 @@ import { setupTaskRunner, } from './n8n-test-container-dependencies'; import { setupGitea } from './n8n-test-container-gitea'; +import { setupMailpit, getMailpitEnvironment } from './n8n-test-container-mailpit'; import { createSilentLogConsumer } from './n8n-test-container-utils'; // --- Constants --- @@ -87,6 +88,7 @@ export interface N8NConfig { proxyServerEnabled?: boolean; sourceControl?: boolean; taskRunner?: boolean; + email?: boolean; } export interface N8NStack { @@ -127,10 +129,12 @@ export async function createN8NStack(config: N8NConfig = {}): Promise resourceQuota, taskRunner = false, sourceControl = false, + email = false, } = config; const queueConfig = normalizeQueueConfig(queueMode); const taskRunnerEnabled = !!taskRunner; const sourceControlEnabled = !!sourceControl; + const emailEnabled = !!email; const usePostgres = postgres || !!queueConfig; const uniqueProjectName = projectName ?? `n8n-stack-${Math.random().toString(36).substring(7)}`; const containers: StartedTestContainer[] = []; @@ -143,7 +147,8 @@ export async function createN8NStack(config: N8NConfig = {}): Promise needsLoadBalancer || proxyServerEnabled || taskRunnerEnabled || - sourceControlEnabled; + sourceControlEnabled || + emailEnabled; let network: StartedNetwork | undefined; if (needsNetwork) { @@ -243,6 +248,27 @@ export async function createN8NStack(config: N8NConfig = {}): Promise }; } + // Set up Mailpit BEFORE creating n8n instances so they have the correct environment + if (emailEnabled && network) { + const hostname = 'mailpit'; + const smtpPort = 1025; + const httpPort = 8025; + + const mailpitContainer = await setupMailpit({ + projectName: uniqueProjectName, + network, + hostname, + smtpPort, + httpPort, + }); + containers.push(mailpitContainer); + + environment = { + ...environment, + ...getMailpitEnvironment(hostname, smtpPort), + }; + } + let baseUrl: string; if (needsLoadBalancer) { diff --git a/packages/testing/containers/n8n-test-container-helpers.ts b/packages/testing/containers/n8n-test-container-helpers.ts index 5d53b4edb86..86241e18811 100644 --- a/packages/testing/containers/n8n-test-container-helpers.ts +++ b/packages/testing/containers/n8n-test-container-helpers.ts @@ -1,6 +1,17 @@ import { setTimeout as wait } from 'node:timers/promises'; import type { StartedTestContainer, StoppedTestContainer } from 'testcontainers'; +import { + getMailpitApiBaseUrl, + mailpitWaitForMessage, + mailpitList, + mailpitClear, + mailpitGet, + type MailpitQuery, + type MailpitMessage, + type MailpitMessageSummary, +} from './n8n-test-container-mailpit'; + export interface LogMatch { container: StartedTestContainer; containerName: string; @@ -30,10 +41,20 @@ export class ContainerTestHelpers { // Containers private containers: StartedTestContainer[]; + private _mailHelper?: MailHelper; + constructor(containers: StartedTestContainer[]) { this.containers = containers; } + /** + * Mail helper facade for Mailpit interactions + */ + get mail(): MailHelper { + this._mailHelper ??= new MailHelper(this.containers); + return this._mailHelper; + } + /** * Read logs from a container */ @@ -374,3 +395,37 @@ export class ContainerTestHelpers { return matches; } } + +class MailHelper { + constructor(private containers: StartedTestContainer[]) {} + + private getMailpitContainer(): StartedTestContainer { + const container = this.containers.find((c) => /mailpit/i.test(c.getName())); + if (!container) throw new Error('Mailpit container not found'); + return container; + } + + private get apiBaseUrl(): string { + const mailpit = this.getMailpitContainer(); + return getMailpitApiBaseUrl(mailpit); + } + + async waitForMessage( + query: MailpitQuery, + options?: { timeoutMs?: number; pollMs?: number }, + ): Promise { + return await mailpitWaitForMessage(this.apiBaseUrl, query, options); + } + + async list(): Promise { + return await mailpitList(this.apiBaseUrl); + } + + async clear(): Promise { + await mailpitClear(this.apiBaseUrl); + } + + async get(id: string): Promise { + return await mailpitGet(this.apiBaseUrl, id); + } +} diff --git a/packages/testing/containers/n8n-test-container-mailpit.ts b/packages/testing/containers/n8n-test-container-mailpit.ts new file mode 100644 index 00000000000..503fffa3da0 --- /dev/null +++ b/packages/testing/containers/n8n-test-container-mailpit.ts @@ -0,0 +1,198 @@ +import type { StartedNetwork, StartedTestContainer } from 'testcontainers'; +import { GenericContainer, Wait } from 'testcontainers'; + +import { createSilentLogConsumer } from './n8n-test-container-utils'; + +type MailpitAddress = { + Address: string; + Name?: string; +}; + +// Message summary as returned in list responses +export type MailpitMessageSummary = { + ID: string; + MessageID: string; + Read: boolean; + From: MailpitAddress; + To: MailpitAddress[]; + Cc: MailpitAddress[] | null; + Bcc: MailpitAddress[] | null; + ReplyTo: MailpitAddress[]; + Subject: string; + Created: string; + Username: string; + Tags: string[]; + Size: number; + Attachments: number; + Snippet: string; +}; + +// Full message as returned by GET /api/v1/message/{id} +export type MailpitMessage = MailpitMessageSummary & { + Text?: string; + HTML?: string; + Inline?: Array<{ + PartID: string; + FileName: string; + ContentType: string; + ContentID: string; + Size: number; + }>; + Attachments?: Array<{ + PartID: string; + FileName: string; + ContentType: string; + ContentID: string; + Size: number; + }>; +}; + +export type MailpitQuery = { + to?: string | RegExp; + subject?: string | RegExp; +}; + +export type MailpitListResponse = { + total: number; + unread: number; + count: number; // Deprecated but kept for backwards compatibility + messages_count: number; + messages_unread: number; + start: number; + tags: string[]; + messages: MailpitMessageSummary[]; +}; + +export function getMailpitEnvironment( + hostname = 'mailpit', + smtpPort = 1025, +): Record { + return { + N8N_EMAIL_MODE: 'smtp', + N8N_SMTP_HOST: hostname, + N8N_SMTP_PORT: String(smtpPort), + N8N_SMTP_SSL: 'false', + N8N_SMTP_SENDER: 'test@n8n.local', + }; +} + +export async function setupMailpit({ + projectName, + network, + hostname = 'mailpit', + smtpPort = 1025, + httpPort = 8025, +}: { + projectName: string; + network: StartedNetwork; + hostname?: string; + smtpPort?: number; + httpPort?: number; +}): Promise { + const { consumer, throwWithLogs } = createSilentLogConsumer(); + + try { + return await new GenericContainer('axllent/mailpit:latest') + .withNetwork(network) + .withNetworkAliases(hostname) + .withExposedPorts(smtpPort, httpPort) + .withEnvironment({ + MP_UI_BIND_ADDR: `0.0.0.0:${httpPort}`, + MP_SMTP_BIND_ADDR: `0.0.0.0:${smtpPort}`, + }) + .withWaitStrategy( + Wait.forAll([ + Wait.forListeningPorts(), + Wait.forHttp('/api/v1/info', httpPort).forStatusCode(200).withStartupTimeout(30000), + ]), + ) + .withLabels({ + 'com.docker.compose.project': projectName, + 'com.docker.compose.service': 'mailpit', + }) + .withName(`${projectName}-mailpit`) + .withReuse() + .withLogConsumer(consumer) + .start(); + } catch (error) { + return throwWithLogs(error); + } +} + +export function getMailpitApiBaseUrl(container: StartedTestContainer): string { + return `http://${container.getHost()}:${container.getMappedPort(8025)}`; +} + +export async function mailpitClear(apiBaseUrl: string): Promise { + const res = await fetch(`${apiBaseUrl}/api/v1/messages`, { method: 'DELETE' }); + if (!res.ok) { + throw new Error(`Mailpit clear failed: ${res.status} ${res.statusText}`); + } +} + +export async function mailpitList(apiBaseUrl: string): Promise { + const res = await fetch(`${apiBaseUrl}/api/v1/messages`); + if (!res.ok) { + throw new Error(`Mailpit list failed: ${res.status} ${res.statusText}`); + } + + const data = (await res.json()) as MailpitListResponse; + return data.messages || []; +} + +export async function mailpitGet(apiBaseUrl: string, id: string): Promise { + const res = await fetch(`${apiBaseUrl}/api/v1/message/${id}`); + if (!res.ok) { + throw new Error(`Mailpit get failed: ${res.status} ${res.statusText}`); + } + + const data = (await res.json()) as MailpitMessage; + return data; +} + +export async function mailpitWaitForMessage( + apiBaseUrl: string, + query: MailpitQuery, + options: { timeoutMs?: number; pollMs?: number } = {}, +): Promise { + const { timeoutMs = 10000, pollMs = 200 } = options; + const deadline = Date.now() + timeoutMs; + + const messageMatches = (message: MailpitMessageSummary): boolean => { + if (query.to) { + const hasMatchingRecipient = message.To.some((recipient) => + typeof query.to === 'string' + ? recipient.Address === query.to + : query.to!.test(recipient.Address), + ); + if (!hasMatchingRecipient) return false; + } + + if (query.subject) { + const subjectMatches = + typeof query.subject === 'string' + ? message.Subject === query.subject + : query.subject.test(message.Subject); + if (!subjectMatches) return false; + } + + return true; + }; + + while (Date.now() < deadline) { + const messages = await mailpitList(apiBaseUrl); + const match = messages.find(messageMatches); + + if (match) { + return match; + } + + await new Promise((resolve) => setTimeout(resolve, pollMs)); + } + + const queryParts = []; + if (query.to) queryParts.push(`to: ${query.to}`); + if (query.subject) queryParts.push(`subject: ${query.subject}`); + + throw new Error(`Mail not received within ${timeoutMs}ms. Query: ${queryParts.join(', ')}`); +} diff --git a/packages/testing/playwright/fixtures/base.ts b/packages/testing/playwright/fixtures/base.ts index b8769b51c55..ea7371552d7 100644 --- a/packages/testing/playwright/fixtures/base.ts +++ b/packages/testing/playwright/fixtures/base.ts @@ -39,6 +39,7 @@ interface ContainerConfig { proxyServerEnabled?: boolean; taskRunner?: boolean; sourceControl?: boolean; + email?: boolean; } /** @@ -65,12 +66,11 @@ export const test = base.extend< // Container configuration from the project use options containerConfig: [ async ({ addContainerCapability }, use, workerInfo) => { - const baseConfig = - (workerInfo.project.use as unknown as { containerConfig?: ContainerConfig }) - ?.containerConfig ?? {}; + const projectConfig = workerInfo.project.use as { containerConfig?: ContainerConfig }; + const baseConfig = projectConfig?.containerConfig ?? {}; - // Merge addContainerCapability with base config - const config: ContainerConfig = { + // Build merged configuration + const merged: ContainerConfig = { ...baseConfig, ...addContainerCapability, env: { @@ -80,7 +80,7 @@ export const test = base.extend< }, }; - await use(config); + await use(merged); }, { scope: 'worker', box: true }, ], diff --git a/packages/testing/playwright/playwright-projects.ts b/packages/testing/playwright/playwright-projects.ts index ecc9b4bfe3c..bb1a9e4f4c5 100644 --- a/packages/testing/playwright/playwright-projects.ts +++ b/packages/testing/playwright/playwright-projects.ts @@ -10,6 +10,7 @@ const CONTAINER_ONLY_TAGS = [ 'multi-main', 'task-runner', 'source-control', + 'email', ]; const CONTAINER_ONLY = new RegExp(`@capability:(${CONTAINER_ONLY_TAGS.join('|')})`); diff --git a/packages/testing/playwright/tests/ui/30-mail-node.spec.ts b/packages/testing/playwright/tests/ui/30-mail-node.spec.ts new file mode 100644 index 00000000000..6ccd601809a --- /dev/null +++ b/packages/testing/playwright/tests/ui/30-mail-node.spec.ts @@ -0,0 +1,79 @@ +import { test, expect } from '../../fixtures/base'; + +test.use({ addContainerCapability: { email: true } }); + +test('EmailSend node sends via SMTP @capability:email', async ({ api, n8n, chaos }) => { + // Sign in to use internal APIs for creating credentials and workflows + + // Create SMTP credential targeting Mailpit + const smtpCredential = await api.credentials.createCredential({ + name: 'SMTP (Test)', + type: 'smtp', + data: { + user: '', + password: '', + host: 'mailpit', + port: 1025, + secure: false, + disableStartTls: true, + }, + }); + + // Define a workflow with Manual Trigger -> EmailSend + const toEmail = 'test@recipient.local'; + const subject = 'Playwright Mailpit SMTP'; + const workflowDefinition = { + name: 'Mailpit EmailSend Workflow', + nodes: [ + { + id: '1', + name: 'Manual Trigger', + type: 'n8n-nodes-base.manualTrigger', + typeVersion: 1, + position: [0, 0], + }, + { + id: '2', + name: 'Email', + type: 'n8n-nodes-base.emailSend', + typeVersion: 2, + position: [300, 0], + parameters: { + fromEmail: 'test@n8n.local', + toEmail, + subject, + emailFormat: 'text', + text: 'Hello from n8n E2E test', + }, + credentials: { + smtp: { + id: smtpCredential.id, + name: smtpCredential.name, + }, + }, + }, + ], + connections: { + 'Manual Trigger': { + main: [[{ node: 'Email', type: 'main', index: 0 }]], + }, + }, + active: false, + } as const; + + const { workflowId } = await api.workflows.createWorkflowFromDefinition( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + workflowDefinition as any, + { makeUnique: true }, + ); + + // Execute the workflow via UI API endpoint by navigating to the canvas and clicking run + await n8n.page.goto(`/workflow/${workflowId}`); + await n8n.workflowComposer.executeWorkflowAndWaitForNotification( + 'Workflow executed successfully', + ); + + const msg = await chaos.mail.waitForMessage({ to: toEmail, subject }); + + expect(msg).toBeTruthy(); +}); diff --git a/packages/testing/playwright/tests/ui/31-mail-cli-transactional.spec.ts b/packages/testing/playwright/tests/ui/31-mail-cli-transactional.spec.ts new file mode 100644 index 00000000000..c7f37e26684 --- /dev/null +++ b/packages/testing/playwright/tests/ui/31-mail-cli-transactional.spec.ts @@ -0,0 +1,14 @@ +import { test, expect } from '../../fixtures/base'; + +test.use({ addContainerCapability: { email: true } }); + +test('Password reset email is delivered @capability:email', async ({ api, chaos }) => { + const ownerEmail = 'nathan@n8n.io'; + const res = await api.request.post('/rest/forgot-password', { + data: { email: ownerEmail }, + }); + expect(res.ok()).toBeTruthy(); + + const msg = await chaos.mail.waitForMessage({ to: ownerEmail, subject: /password reset/i }); + expect(msg).toBeTruthy(); +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7d9fba750bc..1de14fd60b2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -211,6 +211,8 @@ overrides: date-fns-tz: 2.0.0 form-data: 4.0.4 tmp: 0.2.4 + nodemailer: 7.0.10 + validator: 13.15.20 patchedDependencies: '@lezer/highlight': @@ -1076,7 +1078,7 @@ importers: version: 0.3.4(@langchain/core@0.3.68(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@5.12.2(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67)))(encoding@0.1.13) '@langchain/community': specifier: 'catalog:' - version: 0.3.50(a75c8af281af8c64873764a9c6c64007) + version: 0.3.50(b4bbfdc14b35e725ad6f1e65ab8befde) '@langchain/core': specifier: 'catalog:' version: 0.3.68(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@5.12.2(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67)) @@ -1645,8 +1647,8 @@ importers: specifier: 'catalog:' version: 3.3.8 nodemailer: - specifier: 6.9.9 - version: 6.9.9 + specifier: 7.0.10 + version: 7.0.10 oauth-1.0a: specifier: 2.2.6 version: 2.2.6 @@ -1726,8 +1728,8 @@ importers: specifier: 'catalog:' version: 10.0.0 validator: - specifier: 13.7.0 - version: 13.7.0 + specifier: 13.15.20 + version: 13.15.20 ws: specifier: '>=8.17.1' version: 8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -3023,8 +3025,8 @@ importers: specifier: 13.2.0 version: 13.2.0 nodemailer: - specifier: 6.9.9 - version: 6.9.9 + specifier: 7.0.10 + version: 7.0.10 oracledb: specifier: 6.9.0 version: 6.9.0 @@ -3150,8 +3152,8 @@ importers: specifier: ^9.1.5 version: 9.1.5 '@types/nodemailer': - specifier: ^6.4.14 - version: 6.4.14 + specifier: ^7.0.3 + version: 7.0.3 '@types/oracledb': specifier: ^6.9.1 version: 6.9.1 @@ -3448,6 +3450,10 @@ packages: resolution: {integrity: sha512-uEAnM0bXA1KtsI17Fg/8TG4ereiLY0lPqFlYM58MGDNj3mJlBTCokN4VgLBDvxOyx1rEuWH/1LrgsL9d78Kgsw==} engines: {node: '>=18.0.0'} + '@aws-sdk/client-sesv2@3.918.0': + resolution: {integrity: sha512-AFEKd0o32yAJ74F/zJFj+qK9ANovYyKS9gboOXVRu6dWHE+7KNJra/3dq7/FHs44tgn9Mzm1JbTeCEcvNFMkJA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/client-sso-oidc@3.808.0': resolution: {integrity: sha512-rIqhqgzhSZlkxlewCm2Dxtf6BRys+OJ2fV63/9s8uHJj7OCMwciYqENIO5rX0wijuOtxnyWB1JfmGPvzXurQsQ==} engines: {node: '>=18.0.0'} @@ -3456,10 +3462,18 @@ packages: resolution: {integrity: sha512-NxGomD0x9q30LPOXf4x7haOm6l2BJdLEzpiC/bPEXUkf2+4XudMQumMA/hDfErY5hCE19mFAouoO465m3Gl3JQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/client-sso@3.916.0': + resolution: {integrity: sha512-Eu4PtEUL1MyRvboQnoq5YKg0Z9vAni3ccebykJy615xokVZUdA3di2YxHM/hykDQX7lcUC62q9fVIvh0+UNk/w==} + engines: {node: '>=18.0.0'} + '@aws-sdk/core@3.808.0': resolution: {integrity: sha512-+nTmxJVIPtAarGq9Fd/uU2qU/Ngfb9EntT0/kwXdKKMI0wU9fQNWi10xSTVeqOtzWERbQpOJgBAdta+v3W7cng==} engines: {node: '>=18.0.0'} + '@aws-sdk/core@3.916.0': + resolution: {integrity: sha512-1JHE5s6MD5PKGovmx/F1e01hUbds/1y3X8rD+Gvi/gWVfdg5noO7ZCerpRsWgfzgvCMZC9VicopBqNHCKLykZA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-cognito-identity@3.808.0': resolution: {integrity: sha512-AbsD/qHyQmyZ+CqJNOaGlnwZaXu8HfndfEiLsIJU/dIf9Wbt7ZtsHSAI/x78awxGohDneMZ6c5vuaRGYL7Z04g==} engines: {node: '>=18.0.0'} @@ -3468,30 +3482,58 @@ packages: resolution: {integrity: sha512-snPRQnwG9PV4kYHQimo1tenf7P974RcdxkHUThzWSxPEV7HpjxTFYNWGlKbOKBhL4AcgeCVeiZ/j+zveF2lEPA==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-env@3.916.0': + resolution: {integrity: sha512-3gDeqOXcBRXGHScc6xb7358Lyf64NRG2P08g6Bu5mv1Vbg9PKDyCAZvhKLkG7hkdfAM8Yc6UJNhbFxr1ud/tCQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-http@3.808.0': resolution: {integrity: sha512-gNXjlx3BIUeX7QpVqxbjBxG6zm45lC39QvUIo92WzEJd2OTPcR8TU0OTTsgq/lpn2FrKcISj5qXvhWykd41+CA==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-http@3.916.0': + resolution: {integrity: sha512-NmooA5Z4/kPFJdsyoJgDxuqXC1C6oPMmreJjbOPqcwo6E/h2jxaG8utlQFgXe5F9FeJsMx668dtxVxSYnAAqHQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-ini@3.808.0': resolution: {integrity: sha512-Y53CW0pCvFQQEvtVFwExCCMbTg+6NOl8b3YOuZVzPmVmDoW7M1JIn9IScesqoGERXL3VoXny6nYTsZj+vfpp7Q==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-ini@3.918.0': + resolution: {integrity: sha512-oDViX9z4o8jShY0unX9T7MJqyt+/ojhRB2zoLQVr0Mln7GbXwJ0aUtxgb4PFROG27pJpR11oAaZHzI3LI0jm/A==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-node@3.808.0': resolution: {integrity: sha512-lASHlXJ6U5Cpnt9Gs+mWaaSmWcEibr1AFGhp+5UNvfyd+UU2Oiwgbo7rYXygmaVDGkbfXEiTkgYtoNOBSddnWQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-node@3.918.0': + resolution: {integrity: sha512-gl9ECsPB1i8UBPrAJV0HcTn+sgYuD3jYy8ps6KK4c8LznFizwgpah1jd3eF4qq3kPGzrdAE3MKua9OlCCNWAKQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-process@3.808.0': resolution: {integrity: sha512-ZLqp+xsQUatoo8pMozcfLwf/pwfXeIk0w3n0Lo/rWBgT3RcdECmmPCRcnkYBqxHQyE66aS9HiJezZUwMYPqh6w==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-process@3.916.0': + resolution: {integrity: sha512-SXDyDvpJ1+WbotZDLJW1lqP6gYGaXfZJrgFSXIuZjHb75fKeNRgPkQX/wZDdUvCwdrscvxmtyJorp2sVYkMcvA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-sso@3.808.0': resolution: {integrity: sha512-gWZByAokHX+aps1+syIW/hbKUBrjE2RpPRd/RGQvrBbVVgwsJzsHKsW0zy1B6mgARPG6IahmSUMjNkBCVsiAgw==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-sso@3.916.0': + resolution: {integrity: sha512-gu9D+c+U/Dp1AKBcVxYHNNoZF9uD4wjAKYCjgSN37j4tDsazwMEylbbZLuRNuxfbXtizbo4/TiaxBXDbWM7AkQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-web-identity@3.808.0': resolution: {integrity: sha512-SsGa1Gfa05aJM/qYOtHmfg0OKKW6Fl6kyMCcai63jWDVDYy0QSHcesnqRayJolISkdsVK6bqoWoFcPxiopcFcg==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-web-identity@3.918.0': + resolution: {integrity: sha512-qQx5qOhSovVF1EEKTc809WsiKzMqEJrlMSOUycDkE+JMgLPIy2pB2LR1crrIeBGgxFUgFsXHvNHbFjRy+AFBdA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-providers@3.808.0': resolution: {integrity: sha512-JJvY/gcet+tFw7dGifhTMJ2jfLXCJBR2Tu2rY/ePi+HVUrR//TnWmcm8qGvT1nWiCQ7w9NEhMlJgqKEIM/MkVQ==} engines: {node: '>=18.0.0'} @@ -3520,6 +3562,10 @@ packages: resolution: {integrity: sha512-bum1hLVBrn2lJCi423Z2fMUYtsbkGI2s4N+2RI2WSjvbaVyMSv/WcejIrjkqiiMR+2Y7m5exgoKeg4/TODLDPQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-host-header@3.914.0': + resolution: {integrity: sha512-7r9ToySQ15+iIgXMF/h616PcQStByylVkCshmQqcdeynD/lCn2l667ynckxW4+ql0Q+Bo/URljuhJRxVJzydNA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-location-constraint@3.804.0': resolution: {integrity: sha512-AMtKnllIWKgoo7hiJfphLYotEwTERfjVMO2+cKAncz9w1g+bnYhHxiVhJJoR94y047c06X4PU5MsTxvdQ73Znw==} engines: {node: '>=18.0.0'} @@ -3528,14 +3574,26 @@ packages: resolution: {integrity: sha512-w/qLwL3iq0KOPQNat0Kb7sKndl9BtceigINwBU7SpkYWX9L/Lem6f8NPEKrC9Tl4wDBht3Yztub4oRTy/horJA==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-logger@3.914.0': + resolution: {integrity: sha512-/gaW2VENS5vKvJbcE1umV4Ag3NuiVzpsANxtrqISxT3ovyro29o1RezW/Avz/6oJqjnmgz8soe9J1t65jJdiNg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-recursion-detection@3.804.0': resolution: {integrity: sha512-zqHOrvLRdsUdN/ehYfZ9Tf8svhbiLLz5VaWUz22YndFv6m9qaAcijkpAOlKexsv3nLBMJdSdJ6GUTAeIy3BZzw==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-recursion-detection@3.914.0': + resolution: {integrity: sha512-yiAjQKs5S2JKYc+GrkvGMwkUvhepXDigEXpSJqUseR/IrqHhvGNuOxDxq+8LbDhM4ajEW81wkiBbU+Jl9G82yQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-sdk-s3@3.808.0': resolution: {integrity: sha512-qvyJTDf0HIsPpZzBUqhNQm5g8stAn2EOwVsaAolsOHuBsdaBAE/s/NgPzazDlSXwdF0ITvsIouUVDCn4fJGJqQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-sdk-s3@3.916.0': + resolution: {integrity: sha512-pjmzzjkEkpJObzmTthqJPq/P13KoNFuEi/x5PISlzJtHofCNcyXeVAQ90yvY2dQ6UXHf511Rh1/ytiKy2A8M0g==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-ssec@3.804.0': resolution: {integrity: sha512-Tk8jK0gOIUBvEPTz/wwSlP1V70zVQ3QYqsLPAjQRMO6zfOK9ax31dln3MgKvFDJxBydS2tS3wsn53v+brxDxTA==} engines: {node: '>=18.0.0'} @@ -3544,10 +3602,18 @@ packages: resolution: {integrity: sha512-VckV6l5cf/rL3EtgzSHVTTD4mI0gd8UxDDWbKJsxbQ2bpNPDQG2L1wWGLaolTSzjEJ5f3ijDwQrNDbY9l85Mmg==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-user-agent@3.916.0': + resolution: {integrity: sha512-mzF5AdrpQXc2SOmAoaQeHpDFsK2GE6EGcEACeNuoESluPI2uYMpuuNMYrUufdnIAIyqgKlis0NVxiahA5jG42w==} + engines: {node: '>=18.0.0'} + '@aws-sdk/nested-clients@3.808.0': resolution: {integrity: sha512-NparPojwoBul7XPCasy4psFMJbw7Ys4bz8lVB93ljEUD4VV7mM7zwK27Uhz20B8mBFGmFEoAprPsVymJcK9Vcw==} engines: {node: '>=18.0.0'} + '@aws-sdk/nested-clients@3.916.0': + resolution: {integrity: sha512-tgg8e8AnVAer0rcgeWucFJ/uNN67TbTiDHfD+zIOPKep0Z61mrHEoeT/X8WxGIOkEn4W6nMpmS4ii8P42rNtnA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/protocol-http@3.374.0': resolution: {integrity: sha512-9WpRUbINdGroV3HiZZIBoJvL2ndoWk39OfwxWs2otxByppJZNN14bg/lvCx5e8ggHUti7IBk5rb0nqQZ4m05pg==} engines: {node: '>=14.0.0'} @@ -3557,10 +3623,18 @@ packages: resolution: {integrity: sha512-9x2QWfphkARZY5OGkl9dJxZlSlYM2l5inFeo2bKntGuwg4A4YUe5h7d5yJ6sZbam9h43eBrkOdumx03DAkQF9A==} engines: {node: '>=18.0.0'} + '@aws-sdk/region-config-resolver@3.914.0': + resolution: {integrity: sha512-KlmHhRbn1qdwXUdsdrJ7S/MAkkC1jLpQ11n+XvxUUUCGAJd1gjC7AjxPZUM7ieQ2zcb8bfEzIU7al+Q3ZT0u7Q==} + engines: {node: '>=18.0.0'} + '@aws-sdk/signature-v4-multi-region@3.808.0': resolution: {integrity: sha512-lQuEB6JK81eKV7fdiktmRq06Y1KCcJbx9fLf7b19nSfYUbJSn/kfSpHPv/tOkJK2HKnN61JsfG19YU8k4SOU8Q==} engines: {node: '>=18.0.0'} + '@aws-sdk/signature-v4-multi-region@3.916.0': + resolution: {integrity: sha512-fuzUMo6xU7e0NBzBA6TQ4FUf1gqNbg4woBSvYfxRRsIfKmSMn9/elXXn4sAE5UKvlwVQmYnb6p7dpVRPyFvnQA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/signature-v4@3.374.0': resolution: {integrity: sha512-2xLJvSdzcZZAg0lsDLUAuSQuihzK0dcxIK7WmfuJeF7DGKJFmp9czQmz5f3qiDz6IDQzvgK1M9vtJSVCslJbyQ==} engines: {node: '>=14.0.0'} @@ -3570,18 +3644,34 @@ packages: resolution: {integrity: sha512-PsfKanHmnyO7FxowXqxbLQ+QjURCdSGxyhUiSdZbfvlvme/wqaMyIoMV/i4jppndksoSdPbW2kZXjzOqhQF+ew==} engines: {node: '>=18.0.0'} + '@aws-sdk/token-providers@3.916.0': + resolution: {integrity: sha512-13GGOEgq5etbXulFCmYqhWtpcEQ6WI6U53dvXbheW0guut8fDFJZmEv7tKMTJgiybxh7JHd0rWcL9JQND8DwoQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/types@3.804.0': resolution: {integrity: sha512-A9qnsy9zQ8G89vrPPlNG9d1d8QcKRGqJKqwyGgS0dclJpwy6d1EWgQLIolKPl6vcFpLoe6avLOLxr+h8ur5wpg==} engines: {node: '>=18.0.0'} + '@aws-sdk/types@3.914.0': + resolution: {integrity: sha512-kQWPsRDmom4yvAfyG6L1lMmlwnTzm1XwMHOU+G5IFlsP4YEaMtXidDzW/wiivY0QFrhfCz/4TVmu0a2aPU57ug==} + engines: {node: '>=18.0.0'} + '@aws-sdk/util-arn-parser@3.804.0': resolution: {integrity: sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/util-arn-parser@3.893.0': + resolution: {integrity: sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/util-endpoints@3.808.0': resolution: {integrity: sha512-N6Lic98uc4ADB7fLWlzx+1uVnq04VgVjngZvwHoujcRg9YDhIg9dUDiTzD5VZv13g1BrPYmvYP1HhsildpGV6w==} engines: {node: '>=18.0.0'} + '@aws-sdk/util-endpoints@3.916.0': + resolution: {integrity: sha512-bAgUQwvixdsiGNcuZSDAOWbyHlnPtg8G8TyHD6DTfTmKTHUW6tAn+af/ZYJPXEzXhhpwgJqi58vWnsiDhmr7NQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/util-locate-window@3.310.0': resolution: {integrity: sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==} engines: {node: '>=14.0.0'} @@ -3589,6 +3679,9 @@ packages: '@aws-sdk/util-user-agent-browser@3.804.0': resolution: {integrity: sha512-KfW6T6nQHHM/vZBBdGn6fMyG/MgX5lq82TDdX4HRQRRuHKLgBWGpKXqqvBwqIaCdXwWHgDrg2VQups6GqOWW2A==} + '@aws-sdk/util-user-agent-browser@3.914.0': + resolution: {integrity: sha512-rMQUrM1ECH4kmIwlGl9UB0BtbHy6ZuKdWFrIknu8yGTRI/saAucqNTh5EI1vWBxZ0ElhK5+g7zOnUuhSmVQYUA==} + '@aws-sdk/util-user-agent-node@3.808.0': resolution: {integrity: sha512-5UmB6u7RBSinXZAVP2iDgqyeVA/odO2SLEcrXaeTCw8ICXEoqF0K+GL36T4iDbzCBOAIugOZ6OcQX5vH3ck5UA==} engines: {node: '>=18.0.0'} @@ -3598,6 +3691,15 @@ packages: aws-crt: optional: true + '@aws-sdk/util-user-agent-node@3.916.0': + resolution: {integrity: sha512-CwfWV2ch6UdjuSV75ZU99N03seEUb31FIUrXBnwa6oONqj/xqXwrxtlUMLx6WH3OJEE4zI3zt5PjlTdGcVwf4g==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + '@aws-sdk/util-utf8-browser@3.259.0': resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} @@ -3605,6 +3707,14 @@ packages: resolution: {integrity: sha512-JbGWp36IG9dgxtvC6+YXwt5WDZYfuamWFtVfK6fQpnmL96dx+GUPOXPKRWdw67WLKf2comHY28iX2d3z35I53Q==} engines: {node: '>=18.0.0'} + '@aws-sdk/xml-builder@3.914.0': + resolution: {integrity: sha512-k75evsBD5TcIjedycYS7QXQ98AmOtbnxRJOPtCo0IwYRmy7UvqgS/gBL5SmrIqeV6FDSYRQMgdBxSMp6MLmdew==} + engines: {node: '>=18.0.0'} + + '@aws/lambda-invoke-store@0.0.1': + resolution: {integrity: sha512-ORHRQ2tmvnBXc8t/X9Z8IcSbBA4xTLKuN873FopzklHMeqBst7YG0d+AX97inkvDX+NChYtSr+qGfcqGFaI8Zw==} + engines: {node: '>=18.0.0'} + '@azure/abort-controller@1.1.0': resolution: {integrity: sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==} engines: {node: '>=12.0.0'} @@ -7281,6 +7391,10 @@ packages: resolution: {integrity: sha512-Sl/78VDtgqKxN2+1qduaVE140XF+Xg+TafkncspwM4jFP/LHr76ZHmIY/y3V1M0mMLNk+Je6IGbzxy23RSToMw==} engines: {node: '>=18.0.0'} + '@smithy/abort-controller@4.2.3': + resolution: {integrity: sha512-xWL9Mf8b7tIFuAlpjKtRPnHrR8XVrwTj5NPYO/QwZPtc0SDLsPxb56V5tzi5yspSMytISHybifez+4jlrx0vkQ==} + engines: {node: '>=18.0.0'} + '@smithy/chunked-blob-reader-native@4.0.0': resolution: {integrity: sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==} engines: {node: '>=18.0.0'} @@ -7293,6 +7407,14 @@ packages: resolution: {integrity: sha512-7r6mZGwb5LmLJ+zPtkLoznf2EtwEuSWdtid10pjGl/7HefCE4mueOkrfki8JCUm99W6UfP47/r3tbxx9CfBN5A==} engines: {node: '>=18.0.0'} + '@smithy/config-resolver@4.4.0': + resolution: {integrity: sha512-Kkmz3Mup2PGp/HNJxhCWkLNdlajJORLSjwkcfrj0E7nu6STAEdcMR1ir5P9/xOmncx8xXfru0fbUYLlZog/cFg==} + engines: {node: '>=18.0.0'} + + '@smithy/core@3.17.1': + resolution: {integrity: sha512-V4Qc2CIb5McABYfaGiIYLTmo/vwNIK7WXI5aGveBd9UcdhbOMwcvIMxIw/DJj1S9QgOMa/7FBkarMdIC0EOTEQ==} + engines: {node: '>=18.0.0'} + '@smithy/core@3.3.2': resolution: {integrity: sha512-GlLv+syoWolhtjX12XplL9BXBu10cjjD8iQC69fiKTrVNOB3Fjt8CVI9ccm6G3bLbMNe1gzrLD7yyMkYo4hchw==} engines: {node: '>=18.0.0'} @@ -7301,6 +7423,10 @@ packages: resolution: {integrity: sha512-jN6M6zaGVyB8FmNGG+xOPQB4N89M1x97MMdMnm1ESjljLS3Qju/IegQizKujaNcy2vXAvrz0en8bobe6E55FEA==} engines: {node: '>=18.0.0'} + '@smithy/credential-provider-imds@4.2.3': + resolution: {integrity: sha512-hA1MQ/WAHly4SYltJKitEsIDVsNmXcQfYBRv2e+q04fnqtAX5qXaybxy/fhUeAMCnQIdAjaGDb04fMHQefWRhw==} + engines: {node: '>=18.0.0'} + '@smithy/eventstream-codec@1.1.0': resolution: {integrity: sha512-3tEbUb8t8an226jKB6V/Q2XU/J53lCwCzULuBPEaF4JjSh+FlCMp7TmogE/Aij5J9DwlsZ4VAD/IRDuQ/0ZtMw==} @@ -7331,6 +7457,10 @@ packages: resolution: {integrity: sha512-+9Dz8sakS9pe7f2cBocpJXdeVjMopUDLgZs1yWeu7h++WqSbjUYv/JAJwKwXw1HV6gq1jyWjxuyn24E2GhoEcQ==} engines: {node: '>=18.0.0'} + '@smithy/fetch-http-handler@5.3.4': + resolution: {integrity: sha512-bwigPylvivpRLCm+YK9I5wRIYjFESSVwl8JQ1vVx/XhCw0PtCi558NwTnT2DaVCl5pYlImGuQTSwMsZ+pIavRw==} + engines: {node: '>=18.0.0'} + '@smithy/hash-blob-browser@4.0.2': resolution: {integrity: sha512-3g188Z3DyhtzfBRxpZjU8R9PpOQuYsbNnyStc/ZVS+9nVX1f6XeNOa9IrAh35HwwIZg+XWk8bFVtNINVscBP+g==} engines: {node: '>=18.0.0'} @@ -7339,6 +7469,10 @@ packages: resolution: {integrity: sha512-VnTpYPnRUE7yVhWozFdlxcYknv9UN7CeOqSrMH+V877v4oqtVYuoqhIhtSjmGPvYrYnAkaM61sLMKHvxL138yg==} engines: {node: '>=18.0.0'} + '@smithy/hash-node@4.2.3': + resolution: {integrity: sha512-6+NOdZDbfuU6s1ISp3UOk5Rg953RJ2aBLNLLBEcamLjHAg1Po9Ha7QIB5ZWhdRUVuOUrT8BVFR+O2KIPmw027g==} + engines: {node: '>=18.0.0'} + '@smithy/hash-stream-node@4.0.2': resolution: {integrity: sha512-POWDuTznzbIwlEXEvvXoPMS10y0WKXK790soe57tFRfvf4zBHyzE529HpZMqmDdwG9MfFflnyzndUQ8j78ZdSg==} engines: {node: '>=18.0.0'} @@ -7347,6 +7481,10 @@ packages: resolution: {integrity: sha512-GatB4+2DTpgWPday+mnUkoumP54u/MDM/5u44KF9hIu8jF0uafZtQLcdfIKkIcUNuF/fBojpLEHZS/56JqPeXQ==} engines: {node: '>=18.0.0'} + '@smithy/invalid-dependency@4.2.3': + resolution: {integrity: sha512-Cc9W5DwDuebXEDMpOpl4iERo8I0KFjTnomK2RMdhhR87GwrSmUmwMxS4P5JdRf+LsjOdIqumcerwRgYMr/tZ9Q==} + engines: {node: '>=18.0.0'} + '@smithy/is-array-buffer@1.1.0': resolution: {integrity: sha512-twpQ/n+3OWZJ7Z+xu43MJErmhB/WO/mMTnqR6PwWQShvSJ/emx5d1N59LQZk6ZpTAeuRWrc+eHhkzTp9NFjNRQ==} engines: {node: '>=14.0.0'} @@ -7359,6 +7497,10 @@ packages: resolution: {integrity: sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==} engines: {node: '>=18.0.0'} + '@smithy/is-array-buffer@4.2.0': + resolution: {integrity: sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==} + engines: {node: '>=18.0.0'} + '@smithy/md5-js@4.0.2': resolution: {integrity: sha512-Hc0R8EiuVunUewCse2syVgA2AfSRco3LyAv07B/zCOMa+jpXI9ll+Q21Nc6FAlYPcpNcAXqBzMhNs1CD/pP2bA==} engines: {node: '>=18.0.0'} @@ -7367,34 +7509,66 @@ packages: resolution: {integrity: sha512-hAfEXm1zU+ELvucxqQ7I8SszwQ4znWMbNv6PLMndN83JJN41EPuS93AIyh2N+gJ6x8QFhzSO6b7q2e6oClDI8A==} engines: {node: '>=18.0.0'} + '@smithy/middleware-content-length@4.2.3': + resolution: {integrity: sha512-/atXLsT88GwKtfp5Jr0Ks1CSa4+lB+IgRnkNrrYP0h1wL4swHNb0YONEvTceNKNdZGJsye+W2HH8W7olbcPUeA==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-endpoint@4.1.5': resolution: {integrity: sha512-WlpC9KVkajQf7RaGwi3n6lhHZzYTgm2PyX/2JjcwSHG417gFloNmYqN8rzDRXjT527/ZxZuvCsqq1gWZPW8lag==} engines: {node: '>=18.0.0'} + '@smithy/middleware-endpoint@4.3.5': + resolution: {integrity: sha512-SIzKVTvEudFWJbxAaq7f2GvP3jh2FHDpIFI6/VAf4FOWGFZy0vnYMPSRj8PGYI8Hjt29mvmwSRgKuO3bK4ixDw==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-retry@4.1.6': resolution: {integrity: sha512-bl8q95nvCf7d22spxsBfs2giUDFf7prWLAxF5tmfgGBYHbUNW+OfnwMnabC15GMLA2AoE4HOtQR18a59lx6Blw==} engines: {node: '>=18.0.0'} + '@smithy/middleware-retry@4.4.5': + resolution: {integrity: sha512-DCaXbQqcZ4tONMvvdz+zccDE21sLcbwWoNqzPLFlZaxt1lDtOE2tlVpRSwcTOJrjJSUThdgEYn7HrX5oLGlK9A==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-serde@4.0.4': resolution: {integrity: sha512-CaLvBtz+Xgs7eOwoinTXhZ02/9u8b28RT8lQAaDh7Q59nygeYYp1UiJjwl6zsay+lp0qVT/S7qLVI5RgcxjyfQ==} engines: {node: '>=18.0.0'} + '@smithy/middleware-serde@4.2.3': + resolution: {integrity: sha512-8g4NuUINpYccxiCXM5s1/V+uLtts8NcX4+sPEbvYQDZk4XoJfDpq5y2FQxfmUL89syoldpzNzA0R9nhzdtdKnQ==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-stack@4.0.2': resolution: {integrity: sha512-eSPVcuJJGVYrFYu2hEq8g8WWdJav3sdrI4o2c6z/rjnYDd3xH9j9E7deZQCzFn4QvGPouLngH3dQ+QVTxv5bOQ==} engines: {node: '>=18.0.0'} + '@smithy/middleware-stack@4.2.3': + resolution: {integrity: sha512-iGuOJkH71faPNgOj/gWuEGS6xvQashpLwWB1HjHq1lNNiVfbiJLpZVbhddPuDbx9l4Cgl0vPLq5ltRfSaHfspA==} + engines: {node: '>=18.0.0'} + '@smithy/node-config-provider@4.1.1': resolution: {integrity: sha512-1slS5jf5icHETwl5hxEVBj+mh6B+LbVW4yRINsGtUKH+nxM5Pw2H59+qf+JqYFCHp9jssG4vX81f5WKnjMN3Vw==} engines: {node: '>=18.0.0'} + '@smithy/node-config-provider@4.3.3': + resolution: {integrity: sha512-NzI1eBpBSViOav8NVy1fqOlSfkLgkUjUTlohUSgAEhHaFWA3XJiLditvavIP7OpvTjDp5u2LhtlBhkBlEisMwA==} + engines: {node: '>=18.0.0'} + '@smithy/node-http-handler@4.0.4': resolution: {integrity: sha512-/mdqabuAT3o/ihBGjL94PUbTSPSRJ0eeVTdgADzow0wRJ0rN4A27EOrtlK56MYiO1fDvlO3jVTCxQtQmK9dZ1g==} engines: {node: '>=18.0.0'} + '@smithy/node-http-handler@4.4.3': + resolution: {integrity: sha512-MAwltrDB0lZB/H6/2M5PIsISSwdI5yIh6DaBB9r0Flo9nx3y0dzl/qTMJPd7tJvPdsx6Ks/cwVzheGNYzXyNbQ==} + engines: {node: '>=18.0.0'} + '@smithy/property-provider@4.0.2': resolution: {integrity: sha512-wNRoQC1uISOuNc2s4hkOYwYllmiyrvVXWMtq+TysNRVQaHm4yoafYQyjN/goYZS+QbYlPIbb/QRjaUZMuzwQ7A==} engines: {node: '>=18.0.0'} + '@smithy/property-provider@4.2.3': + resolution: {integrity: sha512-+1EZ+Y+njiefCohjlhyOcy1UNYjT+1PwGFHCxA/gYctjg3DQWAU19WigOXAco/Ql8hZokNehpzLd0/+3uCreqQ==} + engines: {node: '>=18.0.0'} + '@smithy/protocol-http@1.2.0': resolution: {integrity: sha512-GfGfruksi3nXdFok5RhgtOnWe5f6BndzYfmEXISD+5gAGdayFGpjWu5pIqIweTudMtse20bGbc+7MFZXT1Tb8Q==} engines: {node: '>=14.0.0'} @@ -7407,22 +7581,42 @@ packages: resolution: {integrity: sha512-KxAOL1nUNw2JTYrtviRRjEnykIDhxc84qMBzxvu1MUfQfHTuBlCG7PA6EdVwqpJjH7glw7FqQoFxUJSyBQgu7g==} engines: {node: '>=18.0.0'} + '@smithy/protocol-http@5.3.3': + resolution: {integrity: sha512-Mn7f/1aN2/jecywDcRDvWWWJF4uwg/A0XjFMJtj72DsgHTByfjRltSqcT9NyE9RTdBSN6X1RSXrhn/YWQl8xlw==} + engines: {node: '>=18.0.0'} + '@smithy/querystring-builder@4.0.2': resolution: {integrity: sha512-NTOs0FwHw1vimmQM4ebh+wFQvOwkEf/kQL6bSM1Lock+Bv4I89B3hGYoUEPkmvYPkDKyp5UdXJYu+PoTQ3T31Q==} engines: {node: '>=18.0.0'} + '@smithy/querystring-builder@4.2.3': + resolution: {integrity: sha512-LOVCGCmwMahYUM/P0YnU/AlDQFjcu+gWbFJooC417QRB/lDJlWSn8qmPSDp+s4YVAHOgtgbNG4sR+SxF/VOcJQ==} + engines: {node: '>=18.0.0'} + '@smithy/querystring-parser@4.0.2': resolution: {integrity: sha512-v6w8wnmZcVXjfVLjxw8qF7OwESD9wnpjp0Dqry/Pod0/5vcEA3qxCr+BhbOHlxS8O+29eLpT3aagxXGwIoEk7Q==} engines: {node: '>=18.0.0'} + '@smithy/querystring-parser@4.2.3': + resolution: {integrity: sha512-cYlSNHcTAX/wc1rpblli3aUlLMGgKZ/Oqn8hhjFASXMCXjIqeuQBei0cnq2JR8t4RtU9FpG6uyl6PxyArTiwKA==} + engines: {node: '>=18.0.0'} + '@smithy/service-error-classification@4.0.3': resolution: {integrity: sha512-FTbcajmltovWMjj3tksDQdD23b2w6gH+A0DYA1Yz3iSpjDj8fmkwy62UnXcWMy4d5YoMoSyLFHMfkEVEzbiN8Q==} engines: {node: '>=18.0.0'} + '@smithy/service-error-classification@4.2.3': + resolution: {integrity: sha512-NkxsAxFWwsPsQiwFG2MzJ/T7uIR6AQNh1SzcxSUnmmIqIQMlLRQDKhc17M7IYjiuBXhrQRjQTo3CxX+DobS93g==} + engines: {node: '>=18.0.0'} + '@smithy/shared-ini-file-loader@4.0.2': resolution: {integrity: sha512-J9/gTWBGVuFZ01oVA6vdb4DAjf1XbDhK6sLsu3OS9qmLrS6KB5ygpeHiM3miIbj1qgSJ96GYszXFWv6ErJ8QEw==} engines: {node: '>=18.0.0'} + '@smithy/shared-ini-file-loader@4.3.3': + resolution: {integrity: sha512-9f9Ixej0hFhroOK2TxZfUUDR13WVa8tQzhSzPDgXe5jGL3KmaM9s8XN7RQwqtEypI82q9KHnKS71CJ+q/1xLtQ==} + engines: {node: '>=18.0.0'} + '@smithy/signature-v4@1.1.0': resolution: {integrity: sha512-fDo3m7YqXBs7neciOePPd/X9LPm5QLlDMdIC4m1H6dgNLnXfLMFNIxEfPyohGA8VW9Wn4X8lygnPSGxDZSmp0Q==} engines: {node: '>=14.0.0'} @@ -7435,10 +7629,18 @@ packages: resolution: {integrity: sha512-4t5WX60sL3zGJF/CtZsUQTs3UrZEDO2P7pEaElrekbLqkWPYkgqNW1oeiNYC6xXifBnT9dVBOnNQRvOE9riU9w==} engines: {node: '>=18.0.0'} + '@smithy/signature-v4@5.3.3': + resolution: {integrity: sha512-CmSlUy+eEYbIEYN5N3vvQTRfqt0lJlQkaQUIf+oizu7BbDut0pozfDjBGecfcfWf7c62Yis4JIEgqQ/TCfodaA==} + engines: {node: '>=18.0.0'} + '@smithy/smithy-client@4.2.5': resolution: {integrity: sha512-T3gA/TShe52Ln0ywWGVoDiqRvaxqvrU0CKRRmzT71/I1rRBD8mY85rvMMME6vw5RpBLJC9ADmXSLmpohF7RRhA==} engines: {node: '>=18.0.0'} + '@smithy/smithy-client@4.9.1': + resolution: {integrity: sha512-Ngb95ryR5A9xqvQFT5mAmYkCwbXvoLavLFwmi7zVg/IowFPCfiqRfkOKnbc/ZRL8ZKJ4f+Tp6kSu6wjDQb8L/g==} + engines: {node: '>=18.0.0'} + '@smithy/types@1.2.0': resolution: {integrity: sha512-z1r00TvBqF3dh4aHhya7nz1HhvCg4TRmw51fjMrh5do3h+ngSstt/yKlNbHeb9QxJmFbmN8KEVSWgb1bRvfEoA==} engines: {node: '>=14.0.0'} @@ -7451,22 +7653,42 @@ packages: resolution: {integrity: sha512-7eMk09zQKCO+E/ivsjQv+fDlOupcFUCSC/L2YUPgwhvowVGWbPQHjEFcmjt7QQ4ra5lyowS92SV53Zc6XD4+fg==} engines: {node: '>=18.0.0'} + '@smithy/types@4.8.0': + resolution: {integrity: sha512-QpELEHLO8SsQVtqP+MkEgCYTFW0pleGozfs3cZ183ZBj9z3VC1CX1/wtFMK64p+5bhtZo41SeLK1rBRtd25nHQ==} + engines: {node: '>=18.0.0'} + '@smithy/url-parser@4.0.2': resolution: {integrity: sha512-Bm8n3j2ScqnT+kJaClSVCMeiSenK6jVAzZCNewsYWuZtnBehEz4r2qP0riZySZVfzB+03XZHJeqfmJDkeeSLiQ==} engines: {node: '>=18.0.0'} + '@smithy/url-parser@4.2.3': + resolution: {integrity: sha512-I066AigYvY3d9VlU3zG9XzZg1yT10aNqvCaBTw9EPgu5GrsEl1aUkcMvhkIXascYH1A8W0LQo3B1Kr1cJNcQEw==} + engines: {node: '>=18.0.0'} + '@smithy/util-base64@4.0.0': resolution: {integrity: sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==} engines: {node: '>=18.0.0'} + '@smithy/util-base64@4.3.0': + resolution: {integrity: sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==} + engines: {node: '>=18.0.0'} + '@smithy/util-body-length-browser@4.0.0': resolution: {integrity: sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==} engines: {node: '>=18.0.0'} + '@smithy/util-body-length-browser@4.2.0': + resolution: {integrity: sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==} + engines: {node: '>=18.0.0'} + '@smithy/util-body-length-node@4.0.0': resolution: {integrity: sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==} engines: {node: '>=18.0.0'} + '@smithy/util-body-length-node@4.2.1': + resolution: {integrity: sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==} + engines: {node: '>=18.0.0'} + '@smithy/util-buffer-from@1.1.0': resolution: {integrity: sha512-9m6NXE0ww+ra5HKHCHig20T+FAwxBAm7DIdwc/767uGWbRcY720ybgPacQNB96JMOI7xVr/CDa3oMzKmW4a+kw==} engines: {node: '>=14.0.0'} @@ -7479,22 +7701,42 @@ packages: resolution: {integrity: sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==} engines: {node: '>=18.0.0'} + '@smithy/util-buffer-from@4.2.0': + resolution: {integrity: sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==} + engines: {node: '>=18.0.0'} + '@smithy/util-config-provider@4.0.0': resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} engines: {node: '>=18.0.0'} + '@smithy/util-config-provider@4.2.0': + resolution: {integrity: sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==} + engines: {node: '>=18.0.0'} + '@smithy/util-defaults-mode-browser@4.0.13': resolution: {integrity: sha512-HCLfXAyTEpVWLuyxDABg8UQukeRwChL1UErpSQ4KJK2ZoadmXuQY68pTL9KcuEtasTkIjnzyLUL9vhLdJ3VFHQ==} engines: {node: '>=18.0.0'} + '@smithy/util-defaults-mode-browser@4.3.4': + resolution: {integrity: sha512-qI5PJSW52rnutos8Bln8nwQZRpyoSRN6k2ajyoUHNMUzmWqHnOJCnDELJuV6m5PML0VkHI+XcXzdB+6awiqYUw==} + engines: {node: '>=18.0.0'} + '@smithy/util-defaults-mode-node@4.0.13': resolution: {integrity: sha512-lu8E2RyzKzzFbNu4ICmY/2HltMZlJxMNg3saJ+r8I9vWbWbwdX7GOWUJdP4fbjEOm6aa52mnnd+uIRrT3dNEyA==} engines: {node: '>=18.0.0'} + '@smithy/util-defaults-mode-node@4.2.6': + resolution: {integrity: sha512-c6M/ceBTm31YdcFpgfgQAJaw3KbaLuRKnAz91iMWFLSrgxRpYm03c3bu5cpYojNMfkV9arCUelelKA7XQT36SQ==} + engines: {node: '>=18.0.0'} + '@smithy/util-endpoints@3.0.4': resolution: {integrity: sha512-VfFATC1bmZLV2858B/O1NpMcL32wYo8DPPhHxYxDCodDl3f3mSZ5oJheW1IF91A0EeAADz2WsakM/hGGPGNKLg==} engines: {node: '>=18.0.0'} + '@smithy/util-endpoints@3.2.3': + resolution: {integrity: sha512-aCfxUOVv0CzBIkU10TubdgKSx5uRvzH064kaiPEWfNIvKOtNpu642P4FP1hgOFkjQIkDObrfIDnKMKkeyrejvQ==} + engines: {node: '>=18.0.0'} + '@smithy/util-hex-encoding@1.1.0': resolution: {integrity: sha512-7UtIE9eH0u41zpB60Jzr0oNCQ3hMJUabMcKRUVjmyHTXiWDE4vjSqN6qlih7rCNeKGbioS7f/y2Jgym4QZcKFg==} engines: {node: '>=14.0.0'} @@ -7507,6 +7749,10 @@ packages: resolution: {integrity: sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==} engines: {node: '>=18.0.0'} + '@smithy/util-hex-encoding@4.2.0': + resolution: {integrity: sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==} + engines: {node: '>=18.0.0'} + '@smithy/util-middleware@1.1.0': resolution: {integrity: sha512-6hhckcBqVgjWAqLy2vqlPZ3rfxLDhFWEmM7oLh2POGvsi7j0tHkbN7w4DFhuBExVJAbJ/qqxqZdRY6Fu7/OezQ==} engines: {node: '>=14.0.0'} @@ -7519,14 +7765,26 @@ packages: resolution: {integrity: sha512-6GDamTGLuBQVAEuQ4yDQ+ti/YINf/MEmIegrEeg7DdB/sld8BX1lqt9RRuIcABOhAGTA50bRbPzErez7SlDtDQ==} engines: {node: '>=18.0.0'} + '@smithy/util-middleware@4.2.3': + resolution: {integrity: sha512-v5ObKlSe8PWUHCqEiX2fy1gNv6goiw6E5I/PN2aXg3Fb/hse0xeaAnSpXDiWl7x6LamVKq7senB+m5LOYHUAHw==} + engines: {node: '>=18.0.0'} + '@smithy/util-retry@4.0.3': resolution: {integrity: sha512-DPuYjZQDXmKr/sNvy9Spu8R/ESa2e22wXZzSAY6NkjOLj6spbIje/Aq8rT97iUMdDj0qHMRIe+bTxvlU74d9Ng==} engines: {node: '>=18.0.0'} + '@smithy/util-retry@4.2.3': + resolution: {integrity: sha512-lLPWnakjC0q9z+OtiXk+9RPQiYPNAovt2IXD3CP4LkOnd9NpUsxOjMx1SnoUVB7Orb7fZp67cQMtTBKMFDvOGg==} + engines: {node: '>=18.0.0'} + '@smithy/util-stream@4.2.0': resolution: {integrity: sha512-Vj1TtwWnuWqdgQI6YTUF5hQ/0jmFiOYsc51CSMgj7QfyO+RF4EnT2HNjoviNlOOmgzgvf3f5yno+EiC4vrnaWQ==} engines: {node: '>=18.0.0'} + '@smithy/util-stream@4.5.4': + resolution: {integrity: sha512-+qDxSkiErejw1BAIXUFBSfM5xh3arbz1MmxlbMCKanDDZtVEQ7PSKW9FQS0Vud1eI/kYn0oCTVKyNzRlq+9MUw==} + engines: {node: '>=18.0.0'} + '@smithy/util-uri-escape@1.1.0': resolution: {integrity: sha512-/jL/V1xdVRt5XppwiaEU8Etp5WHZj609n0xMTuehmCqdoOFbId1M+aEeDWZsQ+8JbEB/BJ6ynY2SlYmOaKtt8w==} engines: {node: '>=14.0.0'} @@ -7539,6 +7797,10 @@ packages: resolution: {integrity: sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==} engines: {node: '>=18.0.0'} + '@smithy/util-uri-escape@4.2.0': + resolution: {integrity: sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==} + engines: {node: '>=18.0.0'} + '@smithy/util-utf8@1.1.0': resolution: {integrity: sha512-p/MYV+JmqmPyjdgyN2UxAeYDj9cBqCjp0C/NsTWnnjoZUVqoeZ6IrW915L9CAKWVECgv9lVQGc4u/yz26/bI1A==} engines: {node: '>=14.0.0'} @@ -7551,10 +7813,18 @@ packages: resolution: {integrity: sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==} engines: {node: '>=18.0.0'} + '@smithy/util-utf8@4.2.0': + resolution: {integrity: sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==} + engines: {node: '>=18.0.0'} + '@smithy/util-waiter@4.0.3': resolution: {integrity: sha512-JtaY3FxmD+te+KSI2FJuEcfNC9T/DGGVf551babM7fAaXhjJUt7oSYurH1Devxd2+BOSUACCgt3buinx4UnmEA==} engines: {node: '>=18.0.0'} + '@smithy/uuid@1.1.0': + resolution: {integrity: sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==} + engines: {node: '>=18.0.0'} + '@sqlite.org/sqlite-wasm@3.50.4-build1': resolution: {integrity: sha512-Qig2Wso7gPkU1PtXwFzndh+CTRzrIFxVGqv6eCetjU7YqxlHItj+GvQYwYTppCRgAPawtRN/4AJcEgB9xDHGug==} hasBin: true @@ -8101,8 +8371,8 @@ packages: '@types/node@20.19.21': resolution: {integrity: sha512-CsGG2P3I5y48RPMfprQGfy4JPRZ6csfC3ltBZSRItG3ngggmNY/qs2uZKp4p9VbrpqNNSMzUZNFZKzgOGnd/VA==} - '@types/nodemailer@6.4.14': - resolution: {integrity: sha512-fUWthHO9k9DSdPCSPRqcu6TWhYyxTBg382vlNIttSe9M7XfsT06y0f24KHXtbnijPGGRIcVvdKHTNikOI6qiHA==} + '@types/nodemailer@7.0.3': + resolution: {integrity: sha512-fC8w49YQ868IuPWRXqPfLf+MuTRex5Z1qxMoG8rr70riqqbOp2F5xgOKE9fODEBPzpnvjkJXFgK6IL2xgMSTnA==} '@types/oracledb@6.9.1': resolution: {integrity: sha512-rXDnApyfaki0dvHuqzQvfirK6yHbtEO5nJ4CXKHrZYdwNAx4PjddqoCXdN1dZaEnZxXFwCy9xEWyIemL8EI/NQ==} @@ -11231,6 +11501,10 @@ packages: resolution: {integrity: sha512-OdCYfRqfpuLUFonTNjvd30rCBZUneHpSQkCqfaeWQ9qrKcl6XlWeDBNVwGb+INAIxRshuN2jF+BE0L6gbBO2mw==} hasBin: true + fast-xml-parser@5.2.5: + resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} + hasBin: true + fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -14089,8 +14363,8 @@ packages: resolution: {integrity: sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw==} engines: {node: '>=10'} - nodemailer@6.9.9: - resolution: {integrity: sha512-dexTll8zqQoVJEZPwQAKzxxtFn0qTnjdQTchoU6Re9BUUGBJiOy3YMn/0ShTW6J5M0dfQ1NeDeRTTl4oIWgQMA==} + nodemailer@7.0.10: + resolution: {integrity: sha512-Us/Se1WtT0ylXgNFfyFSx4LElllVLJXQjWi2Xz17xWw7amDKO2MLtFnVp1WACy7GkVGs+oBlRopVNUzlrGSw1w==} engines: {node: '>=6.0.0'} nodemon@3.0.1: @@ -17100,8 +17374,8 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - validator@13.7.0: - resolution: {integrity: sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==} + validator@13.15.20: + resolution: {integrity: sha512-KxPOq3V2LmfQPP4eqf3Mq/zrT0Dqp2Vmx2Bn285LwVahLc+CsxOM0crBHczm8ijlcjZ0Q5Xd6LW3z3odTPnlrw==} engines: {node: '>= 0.10'} vary@1.1.2: @@ -17907,7 +18181,7 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.804.0 + '@aws-sdk/types': 3.914.0 '@aws-sdk/util-locate-window': 3.310.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -17915,7 +18189,7 @@ snapshots: '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.804.0 + '@aws-sdk/types': 3.914.0 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -18277,6 +18551,51 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-sesv2@3.918.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.916.0 + '@aws-sdk/credential-provider-node': 3.918.0 + '@aws-sdk/middleware-host-header': 3.914.0 + '@aws-sdk/middleware-logger': 3.914.0 + '@aws-sdk/middleware-recursion-detection': 3.914.0 + '@aws-sdk/middleware-user-agent': 3.916.0 + '@aws-sdk/region-config-resolver': 3.914.0 + '@aws-sdk/signature-v4-multi-region': 3.916.0 + '@aws-sdk/types': 3.914.0 + '@aws-sdk/util-endpoints': 3.916.0 + '@aws-sdk/util-user-agent-browser': 3.914.0 + '@aws-sdk/util-user-agent-node': 3.916.0 + '@smithy/config-resolver': 4.4.0 + '@smithy/core': 3.17.1 + '@smithy/fetch-http-handler': 5.3.4 + '@smithy/hash-node': 4.2.3 + '@smithy/invalid-dependency': 4.2.3 + '@smithy/middleware-content-length': 4.2.3 + '@smithy/middleware-endpoint': 4.3.5 + '@smithy/middleware-retry': 4.4.5 + '@smithy/middleware-serde': 4.2.3 + '@smithy/middleware-stack': 4.2.3 + '@smithy/node-config-provider': 4.3.3 + '@smithy/node-http-handler': 4.4.3 + '@smithy/protocol-http': 5.3.3 + '@smithy/smithy-client': 4.9.1 + '@smithy/types': 4.8.0 + '@smithy/url-parser': 4.2.3 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.4 + '@smithy/util-defaults-mode-node': 4.2.6 + '@smithy/util-endpoints': 3.2.3 + '@smithy/util-middleware': 4.2.3 + '@smithy/util-retry': 4.2.3 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/client-sso-oidc@3.808.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -18364,6 +18683,49 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-sso@3.916.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.916.0 + '@aws-sdk/middleware-host-header': 3.914.0 + '@aws-sdk/middleware-logger': 3.914.0 + '@aws-sdk/middleware-recursion-detection': 3.914.0 + '@aws-sdk/middleware-user-agent': 3.916.0 + '@aws-sdk/region-config-resolver': 3.914.0 + '@aws-sdk/types': 3.914.0 + '@aws-sdk/util-endpoints': 3.916.0 + '@aws-sdk/util-user-agent-browser': 3.914.0 + '@aws-sdk/util-user-agent-node': 3.916.0 + '@smithy/config-resolver': 4.4.0 + '@smithy/core': 3.17.1 + '@smithy/fetch-http-handler': 5.3.4 + '@smithy/hash-node': 4.2.3 + '@smithy/invalid-dependency': 4.2.3 + '@smithy/middleware-content-length': 4.2.3 + '@smithy/middleware-endpoint': 4.3.5 + '@smithy/middleware-retry': 4.4.5 + '@smithy/middleware-serde': 4.2.3 + '@smithy/middleware-stack': 4.2.3 + '@smithy/node-config-provider': 4.3.3 + '@smithy/node-http-handler': 4.4.3 + '@smithy/protocol-http': 5.3.3 + '@smithy/smithy-client': 4.9.1 + '@smithy/types': 4.8.0 + '@smithy/url-parser': 4.2.3 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.4 + '@smithy/util-defaults-mode-node': 4.2.6 + '@smithy/util-endpoints': 3.2.3 + '@smithy/util-middleware': 4.2.3 + '@smithy/util-retry': 4.2.3 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/core@3.808.0': dependencies: '@aws-sdk/types': 3.804.0 @@ -18378,6 +18740,22 @@ snapshots: fast-xml-parser: 4.4.1 tslib: 2.8.1 + '@aws-sdk/core@3.916.0': + dependencies: + '@aws-sdk/types': 3.914.0 + '@aws-sdk/xml-builder': 3.914.0 + '@smithy/core': 3.17.1 + '@smithy/node-config-provider': 4.3.3 + '@smithy/property-provider': 4.2.3 + '@smithy/protocol-http': 5.3.3 + '@smithy/signature-v4': 5.3.3 + '@smithy/smithy-client': 4.9.1 + '@smithy/types': 4.8.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-middleware': 4.2.3 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-cognito-identity@3.808.0': dependencies: '@aws-sdk/client-cognito-identity': 3.808.0 @@ -18396,6 +18774,14 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.916.0': + dependencies: + '@aws-sdk/core': 3.916.0 + '@aws-sdk/types': 3.914.0 + '@smithy/property-provider': 4.2.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.808.0': dependencies: '@aws-sdk/core': 3.808.0 @@ -18409,6 +18795,19 @@ snapshots: '@smithy/util-stream': 4.2.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.916.0': + dependencies: + '@aws-sdk/core': 3.916.0 + '@aws-sdk/types': 3.914.0 + '@smithy/fetch-http-handler': 5.3.4 + '@smithy/node-http-handler': 4.4.3 + '@smithy/property-provider': 4.2.3 + '@smithy/protocol-http': 5.3.3 + '@smithy/smithy-client': 4.9.1 + '@smithy/types': 4.8.0 + '@smithy/util-stream': 4.5.4 + tslib: 2.8.1 + '@aws-sdk/credential-provider-ini@3.808.0': dependencies: '@aws-sdk/core': 3.808.0 @@ -18427,6 +18826,24 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-ini@3.918.0': + dependencies: + '@aws-sdk/core': 3.916.0 + '@aws-sdk/credential-provider-env': 3.916.0 + '@aws-sdk/credential-provider-http': 3.916.0 + '@aws-sdk/credential-provider-process': 3.916.0 + '@aws-sdk/credential-provider-sso': 3.916.0 + '@aws-sdk/credential-provider-web-identity': 3.918.0 + '@aws-sdk/nested-clients': 3.916.0 + '@aws-sdk/types': 3.914.0 + '@smithy/credential-provider-imds': 4.2.3 + '@smithy/property-provider': 4.2.3 + '@smithy/shared-ini-file-loader': 4.3.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-node@3.808.0': dependencies: '@aws-sdk/credential-provider-env': 3.808.0 @@ -18444,6 +18861,23 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-node@3.918.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.916.0 + '@aws-sdk/credential-provider-http': 3.916.0 + '@aws-sdk/credential-provider-ini': 3.918.0 + '@aws-sdk/credential-provider-process': 3.916.0 + '@aws-sdk/credential-provider-sso': 3.916.0 + '@aws-sdk/credential-provider-web-identity': 3.918.0 + '@aws-sdk/types': 3.914.0 + '@smithy/credential-provider-imds': 4.2.3 + '@smithy/property-provider': 4.2.3 + '@smithy/shared-ini-file-loader': 4.3.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-process@3.808.0': dependencies: '@aws-sdk/core': 3.808.0 @@ -18453,6 +18887,15 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-process@3.916.0': + dependencies: + '@aws-sdk/core': 3.916.0 + '@aws-sdk/types': 3.914.0 + '@smithy/property-provider': 4.2.3 + '@smithy/shared-ini-file-loader': 4.3.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-sso@3.808.0': dependencies: '@aws-sdk/client-sso': 3.808.0 @@ -18466,6 +18909,19 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-sso@3.916.0': + dependencies: + '@aws-sdk/client-sso': 3.916.0 + '@aws-sdk/core': 3.916.0 + '@aws-sdk/token-providers': 3.916.0 + '@aws-sdk/types': 3.914.0 + '@smithy/property-provider': 4.2.3 + '@smithy/shared-ini-file-loader': 4.3.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-web-identity@3.808.0': dependencies: '@aws-sdk/core': 3.808.0 @@ -18477,6 +18933,18 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-web-identity@3.918.0': + dependencies: + '@aws-sdk/core': 3.916.0 + '@aws-sdk/nested-clients': 3.916.0 + '@aws-sdk/types': 3.914.0 + '@smithy/property-provider': 4.2.3 + '@smithy/shared-ini-file-loader': 4.3.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-providers@3.808.0': dependencies: '@aws-sdk/client-cognito-identity': 3.808.0 @@ -18555,6 +19023,13 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@aws-sdk/middleware-host-header@3.914.0': + dependencies: + '@aws-sdk/types': 3.914.0 + '@smithy/protocol-http': 5.3.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@aws-sdk/middleware-location-constraint@3.804.0': dependencies: '@aws-sdk/types': 3.804.0 @@ -18567,6 +19042,12 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@aws-sdk/middleware-logger@3.914.0': + dependencies: + '@aws-sdk/types': 3.914.0 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@aws-sdk/middleware-recursion-detection@3.804.0': dependencies: '@aws-sdk/types': 3.804.0 @@ -18574,6 +19055,14 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@aws-sdk/middleware-recursion-detection@3.914.0': + dependencies: + '@aws-sdk/types': 3.914.0 + '@aws/lambda-invoke-store': 0.0.1 + '@smithy/protocol-http': 5.3.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@aws-sdk/middleware-sdk-s3@3.808.0': dependencies: '@aws-sdk/core': 3.808.0 @@ -18591,6 +19080,23 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 + '@aws-sdk/middleware-sdk-s3@3.916.0': + dependencies: + '@aws-sdk/core': 3.916.0 + '@aws-sdk/types': 3.914.0 + '@aws-sdk/util-arn-parser': 3.893.0 + '@smithy/core': 3.17.1 + '@smithy/node-config-provider': 4.3.3 + '@smithy/protocol-http': 5.3.3 + '@smithy/signature-v4': 5.3.3 + '@smithy/smithy-client': 4.9.1 + '@smithy/types': 4.8.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-middleware': 4.2.3 + '@smithy/util-stream': 4.5.4 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@aws-sdk/middleware-ssec@3.804.0': dependencies: '@aws-sdk/types': 3.804.0 @@ -18607,6 +19113,16 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@aws-sdk/middleware-user-agent@3.916.0': + dependencies: + '@aws-sdk/core': 3.916.0 + '@aws-sdk/types': 3.914.0 + '@aws-sdk/util-endpoints': 3.916.0 + '@smithy/core': 3.17.1 + '@smithy/protocol-http': 5.3.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@aws-sdk/nested-clients@3.808.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -18650,6 +19166,49 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/nested-clients@3.916.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.916.0 + '@aws-sdk/middleware-host-header': 3.914.0 + '@aws-sdk/middleware-logger': 3.914.0 + '@aws-sdk/middleware-recursion-detection': 3.914.0 + '@aws-sdk/middleware-user-agent': 3.916.0 + '@aws-sdk/region-config-resolver': 3.914.0 + '@aws-sdk/types': 3.914.0 + '@aws-sdk/util-endpoints': 3.916.0 + '@aws-sdk/util-user-agent-browser': 3.914.0 + '@aws-sdk/util-user-agent-node': 3.916.0 + '@smithy/config-resolver': 4.4.0 + '@smithy/core': 3.17.1 + '@smithy/fetch-http-handler': 5.3.4 + '@smithy/hash-node': 4.2.3 + '@smithy/invalid-dependency': 4.2.3 + '@smithy/middleware-content-length': 4.2.3 + '@smithy/middleware-endpoint': 4.3.5 + '@smithy/middleware-retry': 4.4.5 + '@smithy/middleware-serde': 4.2.3 + '@smithy/middleware-stack': 4.2.3 + '@smithy/node-config-provider': 4.3.3 + '@smithy/node-http-handler': 4.4.3 + '@smithy/protocol-http': 5.3.3 + '@smithy/smithy-client': 4.9.1 + '@smithy/types': 4.8.0 + '@smithy/url-parser': 4.2.3 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.4 + '@smithy/util-defaults-mode-node': 4.2.6 + '@smithy/util-endpoints': 3.2.3 + '@smithy/util-middleware': 4.2.3 + '@smithy/util-retry': 4.2.3 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/protocol-http@3.374.0': dependencies: '@smithy/protocol-http': 1.2.0 @@ -18664,6 +19223,13 @@ snapshots: '@smithy/util-middleware': 4.0.2 tslib: 2.8.1 + '@aws-sdk/region-config-resolver@3.914.0': + dependencies: + '@aws-sdk/types': 3.914.0 + '@smithy/config-resolver': 4.4.0 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@aws-sdk/signature-v4-multi-region@3.808.0': dependencies: '@aws-sdk/middleware-sdk-s3': 3.808.0 @@ -18673,6 +19239,15 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@aws-sdk/signature-v4-multi-region@3.916.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.916.0 + '@aws-sdk/types': 3.914.0 + '@smithy/protocol-http': 5.3.3 + '@smithy/signature-v4': 5.3.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@aws-sdk/signature-v4@3.374.0': dependencies: '@smithy/signature-v4': 1.1.0 @@ -18689,15 +19264,36 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/token-providers@3.916.0': + dependencies: + '@aws-sdk/core': 3.916.0 + '@aws-sdk/nested-clients': 3.916.0 + '@aws-sdk/types': 3.914.0 + '@smithy/property-provider': 4.2.3 + '@smithy/shared-ini-file-loader': 4.3.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/types@3.804.0': dependencies: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@aws-sdk/types@3.914.0': + dependencies: + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@aws-sdk/util-arn-parser@3.804.0': dependencies: tslib: 2.8.1 + '@aws-sdk/util-arn-parser@3.893.0': + dependencies: + tslib: 2.8.1 + '@aws-sdk/util-endpoints@3.808.0': dependencies: '@aws-sdk/types': 3.804.0 @@ -18705,6 +19301,14 @@ snapshots: '@smithy/util-endpoints': 3.0.4 tslib: 2.8.1 + '@aws-sdk/util-endpoints@3.916.0': + dependencies: + '@aws-sdk/types': 3.914.0 + '@smithy/types': 4.8.0 + '@smithy/url-parser': 4.2.3 + '@smithy/util-endpoints': 3.2.3 + tslib: 2.8.1 + '@aws-sdk/util-locate-window@3.310.0': dependencies: tslib: 2.8.1 @@ -18716,6 +19320,13 @@ snapshots: bowser: 2.11.0 tslib: 2.8.1 + '@aws-sdk/util-user-agent-browser@3.914.0': + dependencies: + '@aws-sdk/types': 3.914.0 + '@smithy/types': 4.8.0 + bowser: 2.11.0 + tslib: 2.8.1 + '@aws-sdk/util-user-agent-node@3.808.0': dependencies: '@aws-sdk/middleware-user-agent': 3.808.0 @@ -18724,6 +19335,14 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@aws-sdk/util-user-agent-node@3.916.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.916.0 + '@aws-sdk/types': 3.914.0 + '@smithy/node-config-provider': 4.3.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@aws-sdk/util-utf8-browser@3.259.0': dependencies: tslib: 2.8.1 @@ -18733,6 +19352,14 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@aws-sdk/xml-builder@3.914.0': + dependencies: + '@smithy/types': 4.8.0 + fast-xml-parser: 5.2.5 + tslib: 2.8.1 + + '@aws/lambda-invoke-store@0.0.1': {} + '@azure/abort-controller@1.1.0': dependencies: tslib: 2.8.1 @@ -20668,7 +21295,7 @@ snapshots: '@jest/console@29.6.2': dependencies: '@jest/types': 29.6.1 - '@types/node': 20.19.11 + '@types/node': 20.19.21 chalk: 4.1.2 jest-message-util: 29.6.2 jest-util: 29.6.2 @@ -20690,14 +21317,14 @@ snapshots: '@jest/test-result': 29.6.2 '@jest/transform': 29.6.2 '@jest/types': 29.6.1 - '@types/node': 20.19.11 + '@types/node': 20.19.21 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.5.0 - jest-config: 29.6.2(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) + jest-config: 29.6.2(@types/node@20.19.21)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)) jest-haste-map: 29.6.2 jest-message-util: 29.6.2 jest-regex-util: 29.4.3 @@ -20757,7 +21384,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.6.2 '@jest/types': 29.6.1 - '@types/node': 20.19.11 + '@types/node': 20.19.21 jest-mock: 29.6.2 '@jest/environment@29.7.0': @@ -20793,7 +21420,7 @@ snapshots: dependencies: '@jest/types': 29.6.1 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 20.19.11 + '@types/node': 20.19.21 jest-message-util: 29.6.2 jest-mock: 29.6.2 jest-util: 29.6.2 @@ -20833,7 +21460,7 @@ snapshots: '@jest/transform': 29.6.2 '@jest/types': 29.6.1 '@jridgewell/trace-mapping': 0.3.30 - '@types/node': 20.19.11 + '@types/node': 20.19.21 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -20976,7 +21603,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/yargs': 17.0.19 chalk: 4.1.2 @@ -21081,7 +21708,7 @@ snapshots: - aws-crt - encoding - '@langchain/community@0.3.50(a75c8af281af8c64873764a9c6c64007)': + '@langchain/community@0.3.50(b4bbfdc14b35e725ad6f1e65ab8befde)': dependencies: '@browserbasehq/stagehand': 1.9.0(@playwright/test@1.56.0)(bufferutil@4.0.9)(deepmerge@4.3.1)(dotenv@16.6.1)(encoding@0.1.13)(openai@5.12.2(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67))(utf-8-validate@5.0.10)(zod@3.25.67) '@ibm-cloud/watsonx-ai': 1.1.2 @@ -21104,7 +21731,7 @@ snapshots: '@aws-sdk/client-bedrock-runtime': 3.808.0 '@aws-sdk/client-kendra': 3.808.0 '@aws-sdk/client-s3': 3.808.0 - '@aws-sdk/credential-provider-node': 3.808.0 + '@aws-sdk/credential-provider-node': 3.918.0 '@azure/storage-blob': 12.26.0 '@browserbasehq/sdk': 2.6.0(encoding@0.1.13) '@getzep/zep-cloud': 1.0.12(@langchain/core@0.3.68(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(openai@5.12.2(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67)))(encoding@0.1.13)(langchain@0.3.33(5cc28a029307bb3da1dcaf370c8a2b8d)) @@ -21127,7 +21754,7 @@ snapshots: crypto-js: 4.2.0 d3-dsv: 2.0.0 epub2: 3.0.2(ts-toolbelt@9.6.0) - fast-xml-parser: 5.2.3 + fast-xml-parser: 5.2.5 google-auth-library: 10.1.0 html-to-text: 9.0.5 ignore: 5.2.4 @@ -22638,6 +23265,11 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/abort-controller@4.2.3': + dependencies: + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/chunked-blob-reader-native@4.0.0': dependencies: '@smithy/util-base64': 4.0.0 @@ -22655,6 +23287,28 @@ snapshots: '@smithy/util-middleware': 4.0.2 tslib: 2.8.1 + '@smithy/config-resolver@4.4.0': + dependencies: + '@smithy/node-config-provider': 4.3.3 + '@smithy/types': 4.8.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-endpoints': 3.2.3 + '@smithy/util-middleware': 4.2.3 + tslib: 2.8.1 + + '@smithy/core@3.17.1': + dependencies: + '@smithy/middleware-serde': 4.2.3 + '@smithy/protocol-http': 5.3.3 + '@smithy/types': 4.8.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-middleware': 4.2.3 + '@smithy/util-stream': 4.5.4 + '@smithy/util-utf8': 4.2.0 + '@smithy/uuid': 1.1.0 + tslib: 2.8.1 + '@smithy/core@3.3.2': dependencies: '@smithy/middleware-serde': 4.0.4 @@ -22674,6 +23328,14 @@ snapshots: '@smithy/url-parser': 4.0.2 tslib: 2.8.1 + '@smithy/credential-provider-imds@4.2.3': + dependencies: + '@smithy/node-config-provider': 4.3.3 + '@smithy/property-provider': 4.2.3 + '@smithy/types': 4.8.0 + '@smithy/url-parser': 4.2.3 + tslib: 2.8.1 + '@smithy/eventstream-codec@1.1.0': dependencies: '@aws-crypto/crc32': 3.0.0 @@ -22727,6 +23389,14 @@ snapshots: '@smithy/util-base64': 4.0.0 tslib: 2.8.1 + '@smithy/fetch-http-handler@5.3.4': + dependencies: + '@smithy/protocol-http': 5.3.3 + '@smithy/querystring-builder': 4.2.3 + '@smithy/types': 4.8.0 + '@smithy/util-base64': 4.3.0 + tslib: 2.8.1 + '@smithy/hash-blob-browser@4.0.2': dependencies: '@smithy/chunked-blob-reader': 5.0.0 @@ -22741,6 +23411,13 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 + '@smithy/hash-node@4.2.3': + dependencies: + '@smithy/types': 4.8.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@smithy/hash-stream-node@4.0.2': dependencies: '@smithy/types': 4.2.0 @@ -22752,6 +23429,11 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/invalid-dependency@4.2.3': + dependencies: + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/is-array-buffer@1.1.0': dependencies: tslib: 2.8.1 @@ -22764,6 +23446,10 @@ snapshots: dependencies: tslib: 2.8.1 + '@smithy/is-array-buffer@4.2.0': + dependencies: + tslib: 2.8.1 + '@smithy/md5-js@4.0.2': dependencies: '@smithy/types': 4.2.0 @@ -22776,6 +23462,12 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/middleware-content-length@4.2.3': + dependencies: + '@smithy/protocol-http': 5.3.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/middleware-endpoint@4.1.5': dependencies: '@smithy/core': 3.3.2 @@ -22787,6 +23479,17 @@ snapshots: '@smithy/util-middleware': 4.0.2 tslib: 2.8.1 + '@smithy/middleware-endpoint@4.3.5': + dependencies: + '@smithy/core': 3.17.1 + '@smithy/middleware-serde': 4.2.3 + '@smithy/node-config-provider': 4.3.3 + '@smithy/shared-ini-file-loader': 4.3.3 + '@smithy/types': 4.8.0 + '@smithy/url-parser': 4.2.3 + '@smithy/util-middleware': 4.2.3 + tslib: 2.8.1 + '@smithy/middleware-retry@4.1.6': dependencies: '@smithy/node-config-provider': 4.1.1 @@ -22799,17 +23502,40 @@ snapshots: tslib: 2.8.1 uuid: 9.0.1 + '@smithy/middleware-retry@4.4.5': + dependencies: + '@smithy/node-config-provider': 4.3.3 + '@smithy/protocol-http': 5.3.3 + '@smithy/service-error-classification': 4.2.3 + '@smithy/smithy-client': 4.9.1 + '@smithy/types': 4.8.0 + '@smithy/util-middleware': 4.2.3 + '@smithy/util-retry': 4.2.3 + '@smithy/uuid': 1.1.0 + tslib: 2.8.1 + '@smithy/middleware-serde@4.0.4': dependencies: '@smithy/protocol-http': 5.1.0 '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/middleware-serde@4.2.3': + dependencies: + '@smithy/protocol-http': 5.3.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/middleware-stack@4.0.2': dependencies: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/middleware-stack@4.2.3': + dependencies: + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/node-config-provider@4.1.1': dependencies: '@smithy/property-provider': 4.0.2 @@ -22817,6 +23543,13 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/node-config-provider@4.3.3': + dependencies: + '@smithy/property-provider': 4.2.3 + '@smithy/shared-ini-file-loader': 4.3.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/node-http-handler@4.0.4': dependencies: '@smithy/abort-controller': 4.0.2 @@ -22825,11 +23558,24 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/node-http-handler@4.4.3': + dependencies: + '@smithy/abort-controller': 4.2.3 + '@smithy/protocol-http': 5.3.3 + '@smithy/querystring-builder': 4.2.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/property-provider@4.0.2': dependencies: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/property-provider@4.2.3': + dependencies: + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/protocol-http@1.2.0': dependencies: '@smithy/types': 1.2.0 @@ -22846,26 +23592,51 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/protocol-http@5.3.3': + dependencies: + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/querystring-builder@4.0.2': dependencies: '@smithy/types': 4.2.0 '@smithy/util-uri-escape': 4.0.0 tslib: 2.8.1 + '@smithy/querystring-builder@4.2.3': + dependencies: + '@smithy/types': 4.8.0 + '@smithy/util-uri-escape': 4.2.0 + tslib: 2.8.1 + '@smithy/querystring-parser@4.0.2': dependencies: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/querystring-parser@4.2.3': + dependencies: + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/service-error-classification@4.0.3': dependencies: '@smithy/types': 4.2.0 + '@smithy/service-error-classification@4.2.3': + dependencies: + '@smithy/types': 4.8.0 + '@smithy/shared-ini-file-loader@4.0.2': dependencies: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/shared-ini-file-loader@4.3.3': + dependencies: + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/signature-v4@1.1.0': dependencies: '@smithy/eventstream-codec': 1.1.0 @@ -22899,6 +23670,17 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 + '@smithy/signature-v4@5.3.3': + dependencies: + '@smithy/is-array-buffer': 4.2.0 + '@smithy/protocol-http': 5.3.3 + '@smithy/types': 4.8.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-middleware': 4.2.3 + '@smithy/util-uri-escape': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@smithy/smithy-client@4.2.5': dependencies: '@smithy/core': 3.3.2 @@ -22909,6 +23691,16 @@ snapshots: '@smithy/util-stream': 4.2.0 tslib: 2.8.1 + '@smithy/smithy-client@4.9.1': + dependencies: + '@smithy/core': 3.17.1 + '@smithy/middleware-endpoint': 4.3.5 + '@smithy/middleware-stack': 4.2.3 + '@smithy/protocol-http': 5.3.3 + '@smithy/types': 4.8.0 + '@smithy/util-stream': 4.5.4 + tslib: 2.8.1 + '@smithy/types@1.2.0': dependencies: tslib: 2.8.1 @@ -22922,26 +23714,50 @@ snapshots: dependencies: tslib: 2.8.1 + '@smithy/types@4.8.0': + dependencies: + tslib: 2.8.1 + '@smithy/url-parser@4.0.2': dependencies: '@smithy/querystring-parser': 4.0.2 '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/url-parser@4.2.3': + dependencies: + '@smithy/querystring-parser': 4.2.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/util-base64@4.0.0': dependencies: '@smithy/util-buffer-from': 4.0.0 '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 + '@smithy/util-base64@4.3.0': + dependencies: + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@smithy/util-body-length-browser@4.0.0': dependencies: tslib: 2.8.1 + '@smithy/util-body-length-browser@4.2.0': + dependencies: + tslib: 2.8.1 + '@smithy/util-body-length-node@4.0.0': dependencies: tslib: 2.8.1 + '@smithy/util-body-length-node@4.2.1': + dependencies: + tslib: 2.8.1 + '@smithy/util-buffer-from@1.1.0': dependencies: '@smithy/is-array-buffer': 1.1.0 @@ -22957,10 +23773,19 @@ snapshots: '@smithy/is-array-buffer': 4.0.0 tslib: 2.8.1 + '@smithy/util-buffer-from@4.2.0': + dependencies: + '@smithy/is-array-buffer': 4.2.0 + tslib: 2.8.1 + '@smithy/util-config-provider@4.0.0': dependencies: tslib: 2.8.1 + '@smithy/util-config-provider@4.2.0': + dependencies: + tslib: 2.8.1 + '@smithy/util-defaults-mode-browser@4.0.13': dependencies: '@smithy/property-provider': 4.0.2 @@ -22969,6 +23794,13 @@ snapshots: bowser: 2.11.0 tslib: 2.8.1 + '@smithy/util-defaults-mode-browser@4.3.4': + dependencies: + '@smithy/property-provider': 4.2.3 + '@smithy/smithy-client': 4.9.1 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/util-defaults-mode-node@4.0.13': dependencies: '@smithy/config-resolver': 4.1.2 @@ -22979,12 +23811,28 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/util-defaults-mode-node@4.2.6': + dependencies: + '@smithy/config-resolver': 4.4.0 + '@smithy/credential-provider-imds': 4.2.3 + '@smithy/node-config-provider': 4.3.3 + '@smithy/property-provider': 4.2.3 + '@smithy/smithy-client': 4.9.1 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/util-endpoints@3.0.4': dependencies: '@smithy/node-config-provider': 4.1.1 '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/util-endpoints@3.2.3': + dependencies: + '@smithy/node-config-provider': 4.3.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/util-hex-encoding@1.1.0': dependencies: tslib: 2.8.1 @@ -22998,6 +23846,10 @@ snapshots: dependencies: tslib: 2.8.1 + '@smithy/util-hex-encoding@4.2.0': + dependencies: + tslib: 2.8.1 + '@smithy/util-middleware@1.1.0': dependencies: tslib: 2.8.1 @@ -23013,12 +23865,23 @@ snapshots: '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/util-middleware@4.2.3': + dependencies: + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/util-retry@4.0.3': dependencies: '@smithy/service-error-classification': 4.0.3 '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/util-retry@4.2.3': + dependencies: + '@smithy/service-error-classification': 4.2.3 + '@smithy/types': 4.8.0 + tslib: 2.8.1 + '@smithy/util-stream@4.2.0': dependencies: '@smithy/fetch-http-handler': 5.0.2 @@ -23030,6 +23893,17 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 + '@smithy/util-stream@4.5.4': + dependencies: + '@smithy/fetch-http-handler': 5.3.4 + '@smithy/node-http-handler': 4.4.3 + '@smithy/types': 4.8.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@smithy/util-uri-escape@1.1.0': dependencies: tslib: 2.8.1 @@ -23043,6 +23917,10 @@ snapshots: dependencies: tslib: 2.8.1 + '@smithy/util-uri-escape@4.2.0': + dependencies: + tslib: 2.8.1 + '@smithy/util-utf8@1.1.0': dependencies: '@smithy/util-buffer-from': 1.1.0 @@ -23058,12 +23936,21 @@ snapshots: '@smithy/util-buffer-from': 4.0.0 tslib: 2.8.1 + '@smithy/util-utf8@4.2.0': + dependencies: + '@smithy/util-buffer-from': 4.2.0 + tslib: 2.8.1 + '@smithy/util-waiter@4.0.3': dependencies: '@smithy/abort-controller': 4.0.2 '@smithy/types': 4.2.0 tslib: 2.8.1 + '@smithy/uuid@1.1.0': + dependencies: + tslib: 2.8.1 + '@sqlite.org/sqlite-wasm@3.50.4-build1': {} '@storybook/addon-a11y@9.1.7(storybook@9.1.7(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(utf-8-validate@5.0.10)(vite@7.0.0(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.89.2)(terser@5.16.1)(tsx@4.19.3)))': @@ -23376,7 +24263,7 @@ snapshots: '@types/asn1@0.2.0': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/aws4@1.11.2': dependencies: @@ -23457,7 +24344,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/convict@6.1.1': dependencies: @@ -23479,13 +24366,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/ssh2': 1.11.6 '@types/dockerode@3.3.42': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/ssh2': 1.11.6 '@types/eslint@9.6.1': @@ -23526,12 +24413,12 @@ snapshots: '@types/ftp@0.3.33': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/glob@8.0.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/gm@1.25.0': dependencies: @@ -23539,7 +24426,7 @@ snapshots: '@types/graceful-fs@4.1.6': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/graceful-fs@4.1.9': dependencies: @@ -23549,7 +24436,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/humanize-duration@3.27.1': {} @@ -23599,7 +24486,7 @@ snapshots: '@types/jsdom@20.0.1': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/tough-cookie': 4.0.2 parse5: 7.1.2 @@ -23609,7 +24496,7 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 optional: true '@types/jsonpath@0.2.0': {} @@ -23685,11 +24572,11 @@ snapshots: '@types/mysql@2.15.26': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/node-fetch@2.6.13': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 form-data: 4.0.4 '@types/node@20.17.57': @@ -23712,9 +24599,12 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/nodemailer@6.4.14': + '@types/nodemailer@7.0.3': dependencies: - '@types/node': 20.17.57 + '@aws-sdk/client-sesv2': 3.918.0 + '@types/node': 20.19.21 + transitivePeerDependencies: + - aws-crt '@types/oracledb@6.9.1': dependencies: @@ -23732,7 +24622,7 @@ snapshots: '@types/pg@8.6.1': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 pg-protocol: 1.6.1 pg-types: 2.2.0 @@ -23769,7 +24659,7 @@ snapshots: '@types/readable-stream@4.0.10': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 safe-buffer: 5.1.2 '@types/replacestream@4.0.1': {} @@ -23777,7 +24667,7 @@ snapshots: '@types/request@2.48.12': dependencies: '@types/caseless': 0.12.5 - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/tough-cookie': 4.0.5 form-data: 4.0.4 @@ -23796,7 +24686,7 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/serve-static@1.15.0': dependencies: @@ -23818,16 +24708,16 @@ snapshots: '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/ssh2@0.5.52': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.11.6': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/sshpk@1.17.4': dependencies: @@ -23863,11 +24753,11 @@ snapshots: '@types/tedious@4.0.14': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/tedious@4.0.9': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/temp@0.9.4': dependencies: @@ -23875,7 +24765,7 @@ snapshots: '@types/through@0.0.30': dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/tough-cookie@4.0.2': {} @@ -25643,7 +26533,7 @@ snapshots: dependencies: '@types/validator': 13.7.10 libphonenumber-js: 1.10.14 - validator: 13.7.0 + validator: 13.15.20 classnames@2.5.1: {} @@ -27450,7 +28340,7 @@ snapshots: expect@29.6.2: dependencies: '@jest/expect-utils': 29.6.2 - '@types/node': 20.19.11 + '@types/node': 20.19.21 jest-get-type: 29.4.3 jest-matcher-utils: 29.6.2 jest-message-util: 29.6.2 @@ -27594,6 +28484,10 @@ snapshots: dependencies: strnum: 2.1.0 + fast-xml-parser@5.2.5: + dependencies: + strnum: 2.1.0 + fastest-levenshtein@1.0.16: {} fastq@1.15.0: @@ -28191,7 +29085,7 @@ snapshots: groq-sdk@0.19.0(encoding@0.1.13): dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 '@types/node-fetch': 2.6.13 abort-controller: 3.0.0 agentkeepalive: 4.6.0 @@ -28985,7 +29879,7 @@ snapshots: '@jest/expect': 29.6.2 '@jest/test-result': 29.6.2 '@jest/types': 29.6.1 - '@types/node': 20.19.11 + '@types/node': 20.19.21 chalk: 4.1.2 co: 4.6.0 dedent: 1.3.0 @@ -29101,7 +29995,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.6.2(@types/node@20.19.11)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)): + jest-config@29.6.2(@types/node@20.19.21)(ts-node@10.9.2(@types/node@20.17.57)(typescript@5.9.2)): dependencies: '@babel/core': 7.26.10 '@jest/test-sequencer': 29.6.2 @@ -29126,7 +30020,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 ts-node: 10.9.2(@types/node@20.17.57)(typescript@5.9.2) transitivePeerDependencies: - babel-plugin-macros @@ -29221,7 +30115,7 @@ snapshots: '@jest/environment': 29.6.2 '@jest/fake-timers': 29.6.2 '@jest/types': 29.6.1 - '@types/node': 20.19.11 + '@types/node': 20.19.21 jest-mock: 29.6.2 jest-util: 29.6.2 @@ -29244,7 +30138,7 @@ snapshots: dependencies: '@jest/types': 29.6.1 '@types/graceful-fs': 4.1.6 - '@types/node': 20.19.11 + '@types/node': 20.19.21 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -29427,7 +30321,7 @@ snapshots: '@jest/test-result': 29.6.2 '@jest/transform': 29.6.2 '@jest/types': 29.6.1 - '@types/node': 20.19.11 + '@types/node': 20.19.21 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -29481,7 +30375,7 @@ snapshots: '@jest/test-result': 29.6.2 '@jest/transform': 29.6.2 '@jest/types': 29.6.1 - '@types/node': 20.19.11 + '@types/node': 20.19.21 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -29579,7 +30473,7 @@ snapshots: jest-util@29.5.0: dependencies: '@jest/types': 29.6.1 - '@types/node': 20.19.11 + '@types/node': 20.19.21 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -29588,7 +30482,7 @@ snapshots: jest-util@29.6.2: dependencies: '@jest/types': 29.6.1 - '@types/node': 20.19.11 + '@types/node': 20.19.21 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -29625,7 +30519,7 @@ snapshots: dependencies: '@jest/test-result': 29.6.2 '@jest/types': 29.6.1 - '@types/node': 20.19.11 + '@types/node': 20.19.21 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -29645,7 +30539,7 @@ snapshots: jest-worker@29.6.2: dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 jest-util: 29.6.2 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -30350,7 +31244,7 @@ snapshots: libmime: 5.2.1 linkify-it: 5.0.0 mailsplit: 5.4.0 - nodemailer: 6.9.9 + nodemailer: 7.0.10 tlds: 1.248.0 mailsplit@5.4.0: @@ -31288,7 +32182,7 @@ snapshots: util: 0.12.5 vm-browserify: 1.1.2 - nodemailer@6.9.9: {} + nodemailer@7.0.10: {} nodemon@3.0.1: dependencies: @@ -32268,7 +33162,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.19.11 + '@types/node': 20.19.21 long: 5.3.2 proxy-addr@2.0.7: @@ -34435,7 +35329,7 @@ snapshots: ts-type@3.0.1(ts-toolbelt@9.6.0): dependencies: - '@types/node': 20.19.11 + '@types/node': 20.19.21 ts-toolbelt: 9.6.0 tslib: 2.8.1 typedarray-dts: 1.0.0 @@ -34937,7 +35831,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - validator@13.7.0: {} + validator@13.15.20: {} vary@1.1.2: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index a9cefd9d78a..aca22e2ae2e 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -61,6 +61,7 @@ catalog: eslint: 9.29.0 mysql2: 3.15.0 run-script-os: 1.1.6 + nodemailer: 7.0.10 catalogs: frontend: