From 58c6205e983e78020c1235332398398bfbb1bf16 Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 14:32:38 -0300 Subject: [PATCH 01/20] fix: recurring localStorage error --- .../components/QuickAccountConnect/QuickAccountConnect.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/app/src/systems/Account/components/QuickAccountConnect/QuickAccountConnect.tsx b/packages/app/src/systems/Account/components/QuickAccountConnect/QuickAccountConnect.tsx index 89747d9dc..2c120d2d2 100644 --- a/packages/app/src/systems/Account/components/QuickAccountConnect/QuickAccountConnect.tsx +++ b/packages/app/src/systems/Account/components/QuickAccountConnect/QuickAccountConnect.tsx @@ -1,3 +1,5 @@ +'use client'; + import { cssObj } from '@fuel-ui/css'; import { Alert, @@ -61,7 +63,9 @@ export const QuickAccountConnect = () => { const onDismiss = () => { if (!origin || !account) return; setDismissed(true); - localStorage.setItem(getDismissKey(account.address, origin.full), 'true'); + if (typeof localStorage !== 'undefined') { + localStorage.setItem(getDismissKey(account.address, origin.full), 'true'); + } }; useEffect(() => { From 9134c03bdb3ec6ba99b513aea1518f3a95ca8db0 Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 14:48:27 -0300 Subject: [PATCH 02/20] feat: move captureException to a method --- .../src/systems/Error/services/ReportErrorService.tsx | 6 ++---- packages/app/src/systems/Error/utils/captureException.ts | 9 +++++++++ 2 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 packages/app/src/systems/Error/utils/captureException.ts diff --git a/packages/app/src/systems/Error/services/ReportErrorService.tsx b/packages/app/src/systems/Error/services/ReportErrorService.tsx index 4225ad8e4..0ca659ccc 100644 --- a/packages/app/src/systems/Error/services/ReportErrorService.tsx +++ b/packages/app/src/systems/Error/services/ReportErrorService.tsx @@ -1,6 +1,7 @@ import type { StoredFuelWalletError } from '@fuel-wallet/types'; import * as Sentry from '@sentry/react'; import { db } from '~/systems/Core/utils/database'; +import { captureException } from '~/systems/Error/utils/captureException'; import { parseFuelError } from '../utils'; export class ReportErrorService { @@ -12,10 +13,7 @@ export class ReportErrorService { if (typeof window !== 'undefined' && (window as any).playwright) { return; } - Sentry.captureException(e.error, { - extra: e.extra, - tags: { id: e.id, manual: true }, - }); + captureException(e.error, e.extra); } } diff --git a/packages/app/src/systems/Error/utils/captureException.ts b/packages/app/src/systems/Error/utils/captureException.ts new file mode 100644 index 000000000..8dbb5b450 --- /dev/null +++ b/packages/app/src/systems/Error/utils/captureException.ts @@ -0,0 +1,9 @@ +import type { SentryExtraErrorData } from '@fuel-wallet/types'; +import * as Sentry from '@sentry/react'; + +export function captureException(error: Error, extra: SentryExtraErrorData) { + Sentry.captureException(error, { + extra, + tags: { manual: true }, + }); +} From 2d7cd8310dc87c6a5596d6490e40d3cee5b67ac7 Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 14:49:25 -0300 Subject: [PATCH 03/20] feat: ignore or directly send errors to sentry --- .../Error/services/ReportErrorService.tsx | 36 +++++---- .../systems/Error/utils/getErrorIgnoreData.ts | 77 +++++++++++++++++++ 2 files changed, 98 insertions(+), 15 deletions(-) create mode 100644 packages/app/src/systems/Error/utils/getErrorIgnoreData.ts diff --git a/packages/app/src/systems/Error/services/ReportErrorService.tsx b/packages/app/src/systems/Error/services/ReportErrorService.tsx index 0ca659ccc..b842540d9 100644 --- a/packages/app/src/systems/Error/services/ReportErrorService.tsx +++ b/packages/app/src/systems/Error/services/ReportErrorService.tsx @@ -1,7 +1,7 @@ import type { StoredFuelWalletError } from '@fuel-wallet/types'; -import * as Sentry from '@sentry/react'; import { db } from '~/systems/Core/utils/database'; import { captureException } from '~/systems/Error/utils/captureException'; +import { getErrorIgnoreData } from '~/systems/Error/utils/getErrorIgnoreData'; import { parseFuelError } from '../utils'; export class ReportErrorService { @@ -18,21 +18,27 @@ export class ReportErrorService { } static async saveError(error: Error) { - const parsedError = parseFuelError(error); - if (!parsedError) { - console.warn(`Can't save error without a message`); - return; - } - if (!('id' in parsedError)) { - console.warn(`Can't save error without an id`); - return; - } - if (!db.isOpen() || db.hasBeenClosed()) { - console.warn('Error saving error: db is closed'); - return; - } - try { + const parsedError = parseFuelError(error); + const ignoreData = getErrorIgnoreData(parsedError?.error); + if (!parsedError) { + console.warn(`Can't save error without a message`); + return; + } + if (!('id' in parsedError)) { + console.warn(`Can't save error without an id`); + return; + } + if (ignoreData?.action === 'ignore') return; + if (ignoreData?.action === 'hide') { + // Directly report to Sentry and exit + captureException(parsedError.error, parsedError.extra); + return; + } + if (!db.isOpen() || db.hasBeenClosed()) { + console.warn('Error saving error: db is closed'); + return; + } return await db.errors.add(parsedError); } catch (e) { console.warn('Failed to save error', e); diff --git a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts new file mode 100644 index 000000000..8494bb490 --- /dev/null +++ b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts @@ -0,0 +1,77 @@ +type IgnoredError = { + value: string; + field: 'message' | 'stack' | 'name'; + comparison: 'exact' | 'partial' | 'startsWith'; + /** + * @description Whether to ignore the error or hide it from Report Error screen. Avoid ignoring errors that might contain sensitive information. + */ + action: 'ignore' | 'hide'; +}; + +export function getErrorIgnoreData( + error: Error | undefined +): IgnoredError | undefined { + return IGNORED_ERRORS.find((filter) => { + const errorValue = error?.[filter.field] as string | undefined; + + switch (filter.comparison) { + case 'exact': + return filter.value === errorValue; + case 'startsWith': + return errorValue?.startsWith(filter.value); + case 'partial': + return errorValue?.includes(filter.value); + } + }); +} + +const IGNORED_ERRORS: IgnoredError[] = [ + { + value: 'Out of sync', + field: 'message', + comparison: 'exact', + action: 'hide', + }, + { + value: 'Failed to fetch', + field: 'message', + comparison: 'exact', + action: 'hide', + }, + { + value: 'TypeError:', + field: 'stack', + comparison: 'startsWith', + action: 'ignore', + }, + { + value: 'NotFoundError', + field: 'name', + comparison: 'exact', + action: 'hide', + }, + { + value: 'The browser is shutting down.', + field: 'message', + comparison: 'partial', + action: 'hide', + }, + { + value: 'Error fetching asset from db', + field: 'message', + comparison: 'partial', + action: 'hide', + }, + { + value: 'Cannot read properties of undefined', + field: 'message', + comparison: 'partial', + action: 'hide', + }, + { + value: 'Params are required', + field: 'message', + comparison: 'partial', + action: 'hide', + }, +]; From 5a88f5467c94b96e91d20c96fb88b4d814ecc9f2 Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 14:51:48 -0300 Subject: [PATCH 04/20] feat: hide already stored errors that should be ignored --- .../app/src/systems/Error/services/ReportErrorService.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/app/src/systems/Error/services/ReportErrorService.tsx b/packages/app/src/systems/Error/services/ReportErrorService.tsx index b842540d9..12dd55684 100644 --- a/packages/app/src/systems/Error/services/ReportErrorService.tsx +++ b/packages/app/src/systems/Error/services/ReportErrorService.tsx @@ -51,7 +51,9 @@ export class ReportErrorService { } async getErrors(): Promise { - return db.errors.toArray(); + return (await db.errors.toArray()).filter( + (e) => !getErrorIgnoreData(e?.error)?.action + ); } async clearErrors() { From 42823708f4a8db8907462eb4e2561003be307eeb Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 15:54:23 -0300 Subject: [PATCH 05/20] chore: add more ignored errors --- .../systems/Error/utils/getErrorIgnoreData.ts | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts index 8494bb490..6f01750da 100644 --- a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts +++ b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts @@ -74,4 +74,34 @@ const IGNORED_ERRORS: IgnoredError[] = [ comparison: 'partial', action: 'hide', }, + { + value: 'Provider URL', + field: 'message', + comparison: 'partial', + action: 'hide', + }, + { + value: 'The above error occurred in the', + field: 'message', + comparison: 'partial', + action: 'hide', + }, + { + value: '[vite]', + field: 'message', + comparison: 'partial', + action: 'ignore', + }, + { + value: 'Function components cannot be given refs.', + field: 'message', + comparison: 'partial', + action: 'hide', + }, + { + value: 'Encountered two children with the same key', + field: 'message', + comparison: 'partial', + action: 'hide', + }, ]; From 949c5a5b5c43d43753860672420300bfffa58bfa Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 15:54:42 -0300 Subject: [PATCH 06/20] feat: send and hide already stored ignored errors --- .../Error/machines/reportErrorMachine.tsx | 7 ++++++- .../Error/services/ReportErrorService.tsx | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/app/src/systems/Error/machines/reportErrorMachine.tsx b/packages/app/src/systems/Error/machines/reportErrorMachine.tsx index aa0975463..6f2000836 100644 --- a/packages/app/src/systems/Error/machines/reportErrorMachine.tsx +++ b/packages/app/src/systems/Error/machines/reportErrorMachine.tsx @@ -4,6 +4,7 @@ import { assign, createMachine } from 'xstate'; import { db } from '~/systems/Core/utils/database'; import { ErrorProcessorService } from '~/systems/Error/services/ErrorProcessorService'; +import { getErrorIgnoreData } from '~/systems/Error/utils/getErrorIgnoreData'; import { ReportErrorService } from '../services'; export type ErrorMachineContext = { @@ -175,7 +176,11 @@ export const reportErrorMachine = createMachine( checkForErrors: async (context) => { await context.errorProcessorService.processErrors(); const hasErrors = await context.reportErrorService.checkForErrors(); - const errors = await context.reportErrorService.getErrors(); + const errors = (await context.reportErrorService.getErrors()).filter( + (e) => !getErrorIgnoreData(e?.error)?.action + ); + context.reportErrorService.handleAndRemoveOldIgnoredErrors(errors); + return { hasErrors, errors, diff --git a/packages/app/src/systems/Error/services/ReportErrorService.tsx b/packages/app/src/systems/Error/services/ReportErrorService.tsx index 12dd55684..54d676c78 100644 --- a/packages/app/src/systems/Error/services/ReportErrorService.tsx +++ b/packages/app/src/systems/Error/services/ReportErrorService.tsx @@ -60,6 +60,25 @@ export class ReportErrorService { await db.errors.clear(); } + async handleAndRemoveOldIgnoredErrors(errors: StoredFuelWalletError[]) { + const errorsBeingRemoved: Array> = []; + // Convert to for of + for (const e of errors) { + const errorIgnoreData = getErrorIgnoreData(e?.error); + if (!errorIgnoreData?.action) { + errorsBeingRemoved.push( + new Promise((resolve) => { + if (errorIgnoreData?.action === 'hide') { + captureException(e.error, e.extra); + } + this.dismissError(e.id).finally(() => resolve(true)); + }) + ); + } + } + await Promise.all(errorsBeingRemoved); + } + async dismissError(key: string) { if (!key) return; db.errors.delete(key); From fadbad38dad3126e9fc00cff5307300d50381388 Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 15:57:06 -0300 Subject: [PATCH 07/20] chore: add more ignored errors --- .../src/systems/Error/utils/getErrorIgnoreData.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts index 6f01750da..49c3d345c 100644 --- a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts +++ b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts @@ -104,4 +104,16 @@ const IGNORED_ERRORS: IgnoredError[] = [ comparison: 'partial', action: 'hide', }, + { + value: 'Error fetching asset from db', + field: 'message', + comparison: 'partial', + action: 'hide', + }, + { + value: 'React Error', + field: 'message', + comparison: 'partial', + action: 'hide', + }, ]; From db5a2cf8cfcdef014b10379dbfc97603928b728b Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 16:00:28 -0300 Subject: [PATCH 08/20] chore: add more ignored errors --- .../systems/Error/utils/getErrorIgnoreData.ts | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts index 49c3d345c..bef580c7f 100644 --- a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts +++ b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts @@ -56,6 +56,24 @@ const IGNORED_ERRORS: IgnoredError[] = [ comparison: 'partial', action: 'hide', }, + { + value: 'Browser is shutting down.', + field: 'message', + comparison: 'partial', + action: 'hide', + }, + { + value: 'is not a function', + field: 'message', + comparison: 'partial', + action: 'hide', + }, + { + value: 'Asset ID already exists', + field: 'message', + comparison: 'partial', + action: 'ignore', + }, { value: 'Error fetching asset from db', field: 'message', @@ -116,4 +134,10 @@ const IGNORED_ERRORS: IgnoredError[] = [ comparison: 'partial', action: 'hide', }, + { + value: 'PopUp timed out waiting for event', + field: 'message', + comparison: 'partial', + action: 'hide', + }, ]; From 18c8ad9c09ef07b2b27645f251216edd30c19036 Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 18:14:00 -0300 Subject: [PATCH 09/20] fix: some e2e tests --- .../app/playwright/e2e/ReportError.test.ts | 58 +++++++++++++++---- .../Error/machines/reportErrorMachine.tsx | 4 +- .../Error/services/ReportErrorService.tsx | 6 +- .../systems/Error/utils/getErrorIgnoreData.ts | 4 +- 4 files changed, 54 insertions(+), 18 deletions(-) diff --git a/packages/app/playwright/e2e/ReportError.test.ts b/packages/app/playwright/e2e/ReportError.test.ts index 8fe2a04f9..29673d87b 100644 --- a/packages/app/playwright/e2e/ReportError.test.ts +++ b/packages/app/playwright/e2e/ReportError.test.ts @@ -59,7 +59,7 @@ test.describe('ReportError', () => { await window.fuelDB.errors.add({ id: '12345', error: { - name: 'React error', + name: 'React$ error', message: 'Test Error', stack: 'Line error 1', }, @@ -85,8 +85,8 @@ test.describe('ReportError', () => { await window.fuelDB.errors.add({ id: '12345', error: { - name: 'React error', - message: 'Test Error', + name: 'React$ error', + message: 'Test$ Error', stack: 'Line error 1', }, extra: { @@ -103,12 +103,13 @@ test.describe('ReportError', () => { page.locator(`[data-key="hasErrors"]`).click(); await hasText(page, /Unexpected error/i); + expect((await getPageErrors(page)).length).toBe(1); // report error await getByAriaLabel(page, 'Ignore error(s)').click(); await expect(page.getByText(/Unexpected error/i)).toHaveCount(0); - const errorsAfterReporting = await getPageErrors(page); - expect(errorsAfterReporting.length).toBe(1); + await page.pause(); + expect((await getPageErrors(page)).length).toBe(0); }); test('should be able to dismiss all errors', async () => { await visit(page, '/'); @@ -116,7 +117,7 @@ test.describe('ReportError', () => { await window.fuelDB.errors.add({ id: '12345', error: { - name: 'React error', + name: 'React$ error', message: 'Test Error', stack: 'Line error 1', }, @@ -150,7 +151,7 @@ test.describe('ReportError', () => { await window.fuelDB.errors.add({ id: '12345', error: { - name: 'React error', + name: 'React$ error', message: 'Test Error', stack: 'Line error 1', }, @@ -176,10 +177,10 @@ test.describe('ReportError', () => { expect(errorsAfterReporting.length).toBe(0); }); test('should detect and capture global errors', async () => { - await visit(page, '/'); await page.evaluate(async () => { - console.error(new Error('Test Error')); + console.error(new Error('New Error')); }); + await visit(page, '/'); await reload(page); await getByAriaLabel(page, 'Menu').click(); page.locator(`[data-key="hasErrors"]`).click(); @@ -195,7 +196,7 @@ test.describe('ReportError', () => { await window.fuelDB.errors.add({ id: '12345', error: { - name: 'React error', + name: 'React$ error', message: 'Test Error', stack: 'Line error 1', }, @@ -210,7 +211,7 @@ test.describe('ReportError', () => { await window.fuelDB.errors.add({ id: '123456', error: { - name: 'React error', + name: 'React$ error', message: 'Test Error', stack: 'Line error 1', }, @@ -231,4 +232,39 @@ test.describe('ReportError', () => { const errorsAfterReporting = await getPageErrors(page); expect(errorsAfterReporting.length).toBe(1); }); + test('should not show ignored errors', async () => { + await visit(page, '/'); + await page.evaluate(async () => { + await window.fuelDB.errors.add({ + id: '12345', + error: { + name: 'React error', + message: 'React error', + stack: 'Line error 1', + }, + extra: { + timestamp: Date.now(), + location: 'http://localhost:3000', + pathname: '/', + hash: '#', + counts: 0, + }, + }); + }); + await reload(page); + await getByAriaLabel(page, 'Menu').click(); + // hasErrors should not be visible + expect + .poll(() => page.locator(`[data-key="hasErrors"]`).isVisible(), { + timeout: 1000, + }) + .toBeFalsy(); + await reload(page); + const errorsAfterReporting = await getPageErrors(page); + expect + .poll(() => errorsAfterReporting.length, { + timeout: 1000, + }) + .toBe(0); + }); }); diff --git a/packages/app/src/systems/Error/machines/reportErrorMachine.tsx b/packages/app/src/systems/Error/machines/reportErrorMachine.tsx index 6f2000836..0bfc14a76 100644 --- a/packages/app/src/systems/Error/machines/reportErrorMachine.tsx +++ b/packages/app/src/systems/Error/machines/reportErrorMachine.tsx @@ -179,7 +179,9 @@ export const reportErrorMachine = createMachine( const errors = (await context.reportErrorService.getErrors()).filter( (e) => !getErrorIgnoreData(e?.error)?.action ); - context.reportErrorService.handleAndRemoveOldIgnoredErrors(errors); + await context.reportErrorService.handleAndRemoveOldIgnoredErrors( + errors + ); return { hasErrors, diff --git a/packages/app/src/systems/Error/services/ReportErrorService.tsx b/packages/app/src/systems/Error/services/ReportErrorService.tsx index 54d676c78..41cf8e30a 100644 --- a/packages/app/src/systems/Error/services/ReportErrorService.tsx +++ b/packages/app/src/systems/Error/services/ReportErrorService.tsx @@ -51,9 +51,7 @@ export class ReportErrorService { } async getErrors(): Promise { - return (await db.errors.toArray()).filter( - (e) => !getErrorIgnoreData(e?.error)?.action - ); + return await db.errors.toArray(); } async clearErrors() { @@ -65,7 +63,7 @@ export class ReportErrorService { // Convert to for of for (const e of errors) { const errorIgnoreData = getErrorIgnoreData(e?.error); - if (!errorIgnoreData?.action) { + if (errorIgnoreData?.action) { errorsBeingRemoved.push( new Promise((resolve) => { if (errorIgnoreData?.action === 'hide') { diff --git a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts index bef580c7f..97ec52e11 100644 --- a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts +++ b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts @@ -124,13 +124,13 @@ const IGNORED_ERRORS: IgnoredError[] = [ }, { value: 'Error fetching asset from db', - field: 'message', + field: 'name', comparison: 'partial', action: 'hide', }, { value: 'React Error', - field: 'message', + field: 'name', comparison: 'partial', action: 'hide', }, From ecd8524a09ec142d349f2046d535a4e3ad01ae55 Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 18:59:30 -0300 Subject: [PATCH 10/20] fix: some e2e tests --- .../app/playwright/e2e/ReportError.test.ts | 61 +++++++++++-------- .../Error/machines/reportErrorMachine.tsx | 3 + .../systems/Error/utils/getErrorIgnoreData.ts | 6 ++ 3 files changed, 44 insertions(+), 26 deletions(-) diff --git a/packages/app/playwright/e2e/ReportError.test.ts b/packages/app/playwright/e2e/ReportError.test.ts index 29673d87b..96a9b1ab5 100644 --- a/packages/app/playwright/e2e/ReportError.test.ts +++ b/packages/app/playwright/e2e/ReportError.test.ts @@ -48,9 +48,11 @@ test.describe('ReportError', () => { await getByAriaLabel(page, 'Send error reports').click(); await expect(page.getByText(/Unexpected error/)).toHaveCount(0); - await page.waitForTimeout(2000); - const errorsAfterReporting = await getPageErrors(page); - expect(errorsAfterReporting.length).toBe(0); + await expect + .poll(async () => (await getPageErrors(page)).length, { + timeout: 10000, + }) + .toBe(0); }); test('should show Review Error in menu when there is a error in the database', async () => { @@ -108,8 +110,11 @@ test.describe('ReportError', () => { await getByAriaLabel(page, 'Ignore error(s)').click(); await expect(page.getByText(/Unexpected error/i)).toHaveCount(0); - await page.pause(); - expect((await getPageErrors(page)).length).toBe(0); + await expect + .poll(async () => (await getPageErrors(page)).length, { + timeout: 10000, + }) + .toBe(1); }); test('should be able to dismiss all errors', async () => { await visit(page, '/'); @@ -142,8 +147,11 @@ test.describe('ReportError', () => { ).click(); await expect(page.getByText(/Unexpected error/i)).toHaveCount(0); - const errorsAfterReporting = await getPageErrors(page); - expect(errorsAfterReporting.length).toBe(0); + await expect + .poll(async () => (await getPageErrors(page)).length, { + timeout: 10000, + }) + .toBe(0); }); test('should hide when the single error is dismissed', async () => { await visit(page, '/'); @@ -173,8 +181,11 @@ test.describe('ReportError', () => { await getByAriaLabel(page, 'Dismiss error').click(); await expect(page.getByText(/Unexpected error/i)).toHaveCount(0); - const errorsAfterReporting = await getPageErrors(page); - expect(errorsAfterReporting.length).toBe(0); + await expect + .poll(async () => (await getPageErrors(page)).length, { + timeout: 10000, + }) + .toBe(0); }); test('should detect and capture global errors', async () => { await page.evaluate(async () => { @@ -234,12 +245,13 @@ test.describe('ReportError', () => { }); test('should not show ignored errors', async () => { await visit(page, '/'); + await page.evaluate(async () => { await window.fuelDB.errors.add({ id: '12345', error: { - name: 'React error', - message: 'React error', + name: 'React Error', + message: 'React Error', stack: 'Line error 1', }, extra: { @@ -251,20 +263,17 @@ test.describe('ReportError', () => { }, }); }); - await reload(page); - await getByAriaLabel(page, 'Menu').click(); - // hasErrors should not be visible - expect - .poll(() => page.locator(`[data-key="hasErrors"]`).isVisible(), { - timeout: 1000, - }) - .toBeFalsy(); - await reload(page); - const errorsAfterReporting = await getPageErrors(page); - expect - .poll(() => errorsAfterReporting.length, { - timeout: 1000, - }) - .toBe(0); + await expect + .poll( + async () => { + return (await getPageErrors(page)).find( + (e) => e.error.name === 'React Error' + ); + }, + { + timeout: 10000, + } + ) + .toBeUndefined(); }); }); diff --git a/packages/app/src/systems/Error/machines/reportErrorMachine.tsx b/packages/app/src/systems/Error/machines/reportErrorMachine.tsx index 0bfc14a76..6dfc35282 100644 --- a/packages/app/src/systems/Error/machines/reportErrorMachine.tsx +++ b/packages/app/src/systems/Error/machines/reportErrorMachine.tsx @@ -125,6 +125,9 @@ export const reportErrorMachine = createMachine( target: 'idle', }, ], + onError: { + target: 'idle', + }, }, }, reporting: { diff --git a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts index 97ec52e11..3788f2322 100644 --- a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts +++ b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts @@ -131,6 +131,12 @@ const IGNORED_ERRORS: IgnoredError[] = [ { value: 'React Error', field: 'name', + comparison: 'exact', + action: 'hide', + }, + { + value: 'React Error', + field: 'message', comparison: 'partial', action: 'hide', }, From 6ab1ca5eea3bee6c9f0b538d26f32fbfc3b95b70 Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 19:54:40 -0300 Subject: [PATCH 11/20] chore: changeset --- .changeset/selfish-days-repeat.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/selfish-days-repeat.md diff --git a/.changeset/selfish-days-repeat.md b/.changeset/selfish-days-repeat.md new file mode 100644 index 000000000..e1d8277ff --- /dev/null +++ b/.changeset/selfish-days-repeat.md @@ -0,0 +1,5 @@ +--- +"fuels-wallet": patch +--- + +feat: ignore common errors From c60b2526ea67493e4a012714e91b9f9d56ed89c7 Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 19:58:16 -0300 Subject: [PATCH 12/20] fix: e2e --- packages/app/playwright/e2e/ReportError.test.ts | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/packages/app/playwright/e2e/ReportError.test.ts b/packages/app/playwright/e2e/ReportError.test.ts index 96a9b1ab5..3463520f8 100644 --- a/packages/app/playwright/e2e/ReportError.test.ts +++ b/packages/app/playwright/e2e/ReportError.test.ts @@ -263,17 +263,9 @@ test.describe('ReportError', () => { }, }); }); - await expect - .poll( - async () => { - return (await getPageErrors(page)).find( - (e) => e.error.name === 'React Error' - ); - }, - { - timeout: 10000, - } - ) - .toBeUndefined(); + await getByAriaLabel(page, 'Menu').click(); + expect( + await page.locator(`[data-key="hasErrors"]`).isVisible() + ).toBeFalsy(); }); }); From 9de0762c731a801acceff09ef83a5279400cc853 Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 19:59:44 -0300 Subject: [PATCH 13/20] pfix: audit --- examples/cra-dapp/package.json | 2 +- package.json | 3 +- packages/app/package.json | 2 +- pnpm-lock.yaml | 367 ++++++++++++++++++++++++++++----- 4 files changed, 317 insertions(+), 57 deletions(-) diff --git a/examples/cra-dapp/package.json b/examples/cra-dapp/package.json index adfaecf44..d307b1630 100644 --- a/examples/cra-dapp/package.json +++ b/examples/cra-dapp/package.json @@ -20,6 +20,6 @@ "@types/react-dom": "18.3.0", "@vitejs/plugin-react": "4.2.1", "typescript": "5.2.2", - "vite": "6.0.3" + "vite": "6.0.11" } } diff --git a/package.json b/package.json index 8837d61a5..64f89444c 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,8 @@ "secp256k1@=5.0.0": ">=5.0.1", "elliptic@<6.6.0": ">=6.6.0", "cross-spawn@<7.0.5": ">=7.0.5", - "nanoid@<3.3.8": "3.3.8" + "nanoid@<3.3.8": "3.3.8", + "store2@<2.14.4": ">=2.14.4" } } } diff --git a/packages/app/package.json b/packages/app/package.json index b8e9e7af3..457557b2b 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -102,7 +102,7 @@ "ts-jest-mock-import-meta": "1.1.0", "tsconfig-paths-webpack-plugin": "4.1.0", "typescript": "5.2.2", - "vite": "6.0.3", + "vite": "6.0.11", "vite-plugin-clean": "1.0.0", "vite-plugin-static-copy": "2.2.0", "vite-tsconfig-paths": "5.1.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8d6ef73dc..246f1ecdb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,6 +35,7 @@ overrides: elliptic@<6.6.0: '>=6.6.0' cross-spawn@<7.0.5: '>=7.0.5' nanoid@<3.3.8: 3.3.8 + store2@<2.14.4: '>=2.14.4' importers: @@ -161,13 +162,13 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: 4.2.1 - version: 4.2.1(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + version: 4.2.1(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) typescript: specifier: 5.2.2 version: 5.2.2 vite: - specifier: 6.0.3 - version: 6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + specifier: 6.0.11 + version: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) packages/app: dependencies: @@ -281,7 +282,7 @@ importers: version: 1.0.0 vite-plugin-markdown: specifier: 2.2.0 - version: 2.2.0(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + version: 2.2.0(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) xstate: specifier: 4.38.2 version: 4.38.2 @@ -342,7 +343,7 @@ importers: version: 7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) '@storybook/react-vite': specifier: 7.4.6 - version: 7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + version: 7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) '@storybook/react-webpack5': specifier: 7.4.6 version: 7.4.6(@babel/core@7.24.0)(@swc/core@1.3.92(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)(@types/react-dom@18.3.0)(@types/react@18.3.3)(esbuild@0.18.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(type-fest@2.19.0)(typescript@5.2.2)(webpack-hot-middleware@2.25.4) @@ -378,7 +379,7 @@ importers: version: 6.1.7 '@vitejs/plugin-react': specifier: 4.1.0 - version: 4.1.0(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + version: 4.1.0(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) '@xstate/inspect': specifier: 0.8.0 version: 0.8.0(@types/ws@8.5.12)(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(xstate@4.38.2) @@ -410,17 +411,17 @@ importers: specifier: 5.2.2 version: 5.2.2 vite: - specifier: 6.0.3 - version: 6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + specifier: 6.0.11 + version: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) vite-plugin-clean: specifier: 1.0.0 version: 1.0.0 vite-plugin-static-copy: specifier: 2.2.0 - version: 2.2.0(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + version: 2.2.0(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) vite-tsconfig-paths: specifier: 5.1.4 - version: 5.1.4(typescript@5.2.2)(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + version: 5.1.4(typescript@5.2.2)(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) whatwg-fetch: specifier: 3.6.20 version: 3.6.20 @@ -2165,6 +2166,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.24.2': + resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.18.20': resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -2177,6 +2184,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.24.2': + resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.18.20': resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -2189,6 +2202,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.24.2': + resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.18.20': resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -2201,6 +2220,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.24.2': + resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.18.20': resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -2213,6 +2238,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.24.2': + resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.18.20': resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -2225,6 +2256,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.24.2': + resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.18.20': resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -2237,6 +2274,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.24.2': + resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.18.20': resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -2249,6 +2292,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.24.2': + resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.18.20': resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -2261,6 +2310,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.24.2': + resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.18.20': resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -2273,6 +2328,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.24.2': + resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.18.20': resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -2285,6 +2346,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.24.2': + resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.14.54': resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} engines: {node: '>=12'} @@ -2303,6 +2370,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.24.2': + resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.18.20': resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -2315,6 +2388,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.24.2': + resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.18.20': resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -2327,6 +2406,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.24.2': + resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.18.20': resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -2339,6 +2424,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.24.2': + resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.18.20': resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -2351,6 +2442,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.24.2': + resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.18.20': resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -2363,6 +2460,18 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.24.2': + resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.24.2': + resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.18.20': resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -2375,12 +2484,24 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.24.2': + resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.24.0': resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.24.2': + resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.18.20': resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -2393,6 +2514,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.24.2': + resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.18.20': resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -2405,6 +2532,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.24.2': + resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.18.20': resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -2417,6 +2550,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.24.2': + resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.18.20': resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -2429,6 +2568,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.24.2': + resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.18.20': resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -2441,6 +2586,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.24.2': + resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -8118,6 +8269,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.24.2: + resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + engines: {node: '>=18'} + hasBin: true + escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -12078,8 +12234,8 @@ packages: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} - store2@2.14.2: - resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} + store2@2.14.4: + resolution: {integrity: sha512-srTItn1GOvyvOycgxjAnPA63FZNwy0PTyUBFMHRM+hVFltAeoh0LmNBz9SZqUS9mMqGk8rfyWyXn3GH5ReJ8Zw==} storybook-addon-react-router-v6@2.0.7: resolution: {integrity: sha512-vky9WXG84fQjwx55KKFQdhyUC5AnfsGJSoYx/yaJi2q/oTDcCTkcwpxlcrSKpTpNtVjsFNnaS3cuWXX+Sfc8Vw==} @@ -13205,8 +13361,8 @@ packages: terser: optional: true - vite@6.0.3: - resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} + vite@6.0.11: + resolution: {integrity: sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -17246,66 +17402,99 @@ snapshots: '@esbuild/aix-ppc64@0.24.0': optional: true + '@esbuild/aix-ppc64@0.24.2': + optional: true + '@esbuild/android-arm64@0.18.20': optional: true '@esbuild/android-arm64@0.24.0': optional: true + '@esbuild/android-arm64@0.24.2': + optional: true + '@esbuild/android-arm@0.18.20': optional: true '@esbuild/android-arm@0.24.0': optional: true + '@esbuild/android-arm@0.24.2': + optional: true + '@esbuild/android-x64@0.18.20': optional: true '@esbuild/android-x64@0.24.0': optional: true + '@esbuild/android-x64@0.24.2': + optional: true + '@esbuild/darwin-arm64@0.18.20': optional: true '@esbuild/darwin-arm64@0.24.0': optional: true + '@esbuild/darwin-arm64@0.24.2': + optional: true + '@esbuild/darwin-x64@0.18.20': optional: true '@esbuild/darwin-x64@0.24.0': optional: true + '@esbuild/darwin-x64@0.24.2': + optional: true + '@esbuild/freebsd-arm64@0.18.20': optional: true '@esbuild/freebsd-arm64@0.24.0': optional: true + '@esbuild/freebsd-arm64@0.24.2': + optional: true + '@esbuild/freebsd-x64@0.18.20': optional: true '@esbuild/freebsd-x64@0.24.0': optional: true + '@esbuild/freebsd-x64@0.24.2': + optional: true + '@esbuild/linux-arm64@0.18.20': optional: true '@esbuild/linux-arm64@0.24.0': optional: true + '@esbuild/linux-arm64@0.24.2': + optional: true + '@esbuild/linux-arm@0.18.20': optional: true '@esbuild/linux-arm@0.24.0': optional: true + '@esbuild/linux-arm@0.24.2': + optional: true + '@esbuild/linux-ia32@0.18.20': optional: true '@esbuild/linux-ia32@0.24.0': optional: true + '@esbuild/linux-ia32@0.24.2': + optional: true + '@esbuild/linux-loong64@0.14.54': optional: true @@ -17315,75 +17504,117 @@ snapshots: '@esbuild/linux-loong64@0.24.0': optional: true + '@esbuild/linux-loong64@0.24.2': + optional: true + '@esbuild/linux-mips64el@0.18.20': optional: true '@esbuild/linux-mips64el@0.24.0': optional: true + '@esbuild/linux-mips64el@0.24.2': + optional: true + '@esbuild/linux-ppc64@0.18.20': optional: true '@esbuild/linux-ppc64@0.24.0': optional: true + '@esbuild/linux-ppc64@0.24.2': + optional: true + '@esbuild/linux-riscv64@0.18.20': optional: true '@esbuild/linux-riscv64@0.24.0': optional: true + '@esbuild/linux-riscv64@0.24.2': + optional: true + '@esbuild/linux-s390x@0.18.20': optional: true '@esbuild/linux-s390x@0.24.0': optional: true + '@esbuild/linux-s390x@0.24.2': + optional: true + '@esbuild/linux-x64@0.18.20': optional: true '@esbuild/linux-x64@0.24.0': optional: true + '@esbuild/linux-x64@0.24.2': + optional: true + + '@esbuild/netbsd-arm64@0.24.2': + optional: true + '@esbuild/netbsd-x64@0.18.20': optional: true '@esbuild/netbsd-x64@0.24.0': optional: true + '@esbuild/netbsd-x64@0.24.2': + optional: true + '@esbuild/openbsd-arm64@0.24.0': optional: true + '@esbuild/openbsd-arm64@0.24.2': + optional: true + '@esbuild/openbsd-x64@0.18.20': optional: true '@esbuild/openbsd-x64@0.24.0': optional: true + '@esbuild/openbsd-x64@0.24.2': + optional: true + '@esbuild/sunos-x64@0.18.20': optional: true '@esbuild/sunos-x64@0.24.0': optional: true + '@esbuild/sunos-x64@0.24.2': + optional: true + '@esbuild/win32-arm64@0.18.20': optional: true '@esbuild/win32-arm64@0.24.0': optional: true + '@esbuild/win32-arm64@0.24.2': + optional: true + '@esbuild/win32-ia32@0.18.20': optional: true '@esbuild/win32-ia32@0.24.0': optional: true + '@esbuild/win32-ia32@0.24.2': + optional: true + '@esbuild/win32-x64@0.18.20': optional: true '@esbuild/win32-x64@0.24.0': optional: true + '@esbuild/win32-x64@0.24.2': + optional: true + '@eslint-community/eslint-utils@4.4.0(eslint@8.51.0)': dependencies: eslint: 8.51.0 @@ -18338,13 +18569,13 @@ snapshots: - ioredis - utf-8-validate - '@joshwooding/vite-plugin-react-docgen-typescript@0.2.1(typescript@5.2.2)(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.2.1(typescript@5.2.2)(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': dependencies: glob: 7.2.3 glob-promise: 4.2.2(glob@7.2.3) magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.2.2) - vite: 6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) optionalDependencies: typescript: 5.2.2 @@ -21814,7 +22045,7 @@ snapshots: - encoding - supports-color - '@storybook/builder-vite@7.4.6(typescript@5.2.2)(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': + '@storybook/builder-vite@7.4.6(typescript@5.2.2)(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': dependencies: '@storybook/channels': 7.4.6 '@storybook/client-logger': 7.4.6 @@ -21835,7 +22066,7 @@ snapshots: remark-external-links: 8.0.0 remark-slug: 6.1.0 rollup: 3.29.5 - vite: 6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) optionalDependencies: typescript: 5.2.2 transitivePeerDependencies: @@ -22184,7 +22415,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) semver: 7.5.4 - store2: 2.14.2 + store2: 2.14.4 telejson: 7.2.0 ts-dedent: 2.2.0 @@ -22271,19 +22502,19 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/react-vite@7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': + '@storybook/react-vite@7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.2.1(typescript@5.2.2)(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.2.1(typescript@5.2.2)(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) '@rollup/pluginutils': 5.0.2 - '@storybook/builder-vite': 7.4.6(typescript@5.2.2)(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + '@storybook/builder-vite': 7.4.6(typescript@5.2.2)(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) '@storybook/react': 7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@vitejs/plugin-react': 3.1.0(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + '@vitejs/plugin-react': 3.1.0(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) ast-types: 0.14.2 magic-string: 0.30.2 react: 18.3.1 react-docgen: 6.0.0-alpha.3 react-dom: 18.3.1(react@18.3.1) - vite: 6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) transitivePeerDependencies: - '@preact/preset-vite' - encoding @@ -22655,7 +22886,7 @@ snapshots: '@types/acorn@4.0.6': dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/adm-zip@0.5.5': dependencies: @@ -22731,7 +22962,7 @@ snapshots: '@types/eslint-scope@3.7.4': dependencies: '@types/eslint': 8.44.1 - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/eslint-scope@3.7.7': dependencies: @@ -22740,7 +22971,7 @@ snapshots: '@types/eslint@8.44.1': dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/json-schema': 7.0.12 '@types/eslint@9.6.1': @@ -22750,7 +22981,7 @@ snapshots: '@types/estree-jsx@1.0.0': dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/estree@0.0.51': {} @@ -23099,14 +23330,14 @@ snapshots: '@typescript-eslint/types': 6.7.5 eslint-visitor-keys: 3.4.3 - '@vitejs/plugin-react@3.1.0(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': + '@vitejs/plugin-react@3.1.0(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': dependencies: '@babel/core': 7.24.0 '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.24.0) magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) transitivePeerDependencies: - supports-color @@ -23121,25 +23352,25 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.1.0(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': + '@vitejs/plugin-react@4.1.0(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': dependencies: '@babel/core': 7.24.0 '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.24.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.2.1(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': + '@vitejs/plugin-react@4.2.1(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': dependencies: '@babel/core': 7.24.0 '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.24.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) transitivePeerDependencies: - supports-color @@ -26813,6 +27044,34 @@ snapshots: '@esbuild/win32-ia32': 0.24.0 '@esbuild/win32-x64': 0.24.0 + esbuild@0.24.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.2 + '@esbuild/android-arm': 0.24.2 + '@esbuild/android-arm64': 0.24.2 + '@esbuild/android-x64': 0.24.2 + '@esbuild/darwin-arm64': 0.24.2 + '@esbuild/darwin-x64': 0.24.2 + '@esbuild/freebsd-arm64': 0.24.2 + '@esbuild/freebsd-x64': 0.24.2 + '@esbuild/linux-arm': 0.24.2 + '@esbuild/linux-arm64': 0.24.2 + '@esbuild/linux-ia32': 0.24.2 + '@esbuild/linux-loong64': 0.24.2 + '@esbuild/linux-mips64el': 0.24.2 + '@esbuild/linux-ppc64': 0.24.2 + '@esbuild/linux-riscv64': 0.24.2 + '@esbuild/linux-s390x': 0.24.2 + '@esbuild/linux-x64': 0.24.2 + '@esbuild/netbsd-arm64': 0.24.2 + '@esbuild/netbsd-x64': 0.24.2 + '@esbuild/openbsd-arm64': 0.24.2 + '@esbuild/openbsd-x64': 0.24.2 + '@esbuild/sunos-x64': 0.24.2 + '@esbuild/win32-arm64': 0.24.2 + '@esbuild/win32-ia32': 0.24.2 + '@esbuild/win32-x64': 0.24.2 + escalade@3.1.1: {} escalade@3.2.0: {} @@ -26927,7 +27186,7 @@ snapshots: estree-util-attach-comments@2.1.1: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 estree-util-build-jsx@2.2.2: dependencies: @@ -26952,7 +27211,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 esutils@2.0.3: {} @@ -27765,7 +28024,7 @@ snapshots: hast-util-to-estree@2.3.3: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/estree-jsx': 1.0.0 '@types/hast': 2.3.5 '@types/unist': 2.0.7 @@ -28195,7 +28454,7 @@ snapshots: is-reference@3.0.1: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 is-regex@1.1.4: dependencies: @@ -29874,7 +30133,7 @@ snapshots: micromark-extension-mdx-expression@1.0.8: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 micromark-factory-mdx-expression: 1.0.9 micromark-factory-space: 1.1.0 micromark-util-character: 1.2.0 @@ -29886,7 +30145,7 @@ snapshots: micromark-extension-mdx-jsx@1.0.5: dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 estree-util-is-identifier-name: 2.1.0 micromark-factory-mdx-expression: 1.0.9 micromark-factory-space: 1.1.0 @@ -29902,7 +30161,7 @@ snapshots: micromark-extension-mdxjs-esm@1.0.5: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 micromark-core-commonmark: 1.1.0 micromark-util-character: 1.2.0 micromark-util-events-to-acorn: 1.2.3 @@ -29938,7 +30197,7 @@ snapshots: micromark-factory-mdx-expression@1.0.9: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 micromark-util-character: 1.2.0 micromark-util-events-to-acorn: 1.2.3 micromark-util-symbol: 1.1.0 @@ -30002,7 +30261,7 @@ snapshots: micromark-util-events-to-acorn@1.2.3: dependencies: '@types/acorn': 4.0.6 - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@types/unist': 2.0.7 estree-util-visit: 1.2.1 micromark-util-symbol: 1.1.0 @@ -30653,7 +30912,7 @@ snapshots: periscopic@3.1.0: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 estree-walker: 3.0.3 is-reference: 3.0.1 @@ -32272,7 +32531,7 @@ snapshots: dependencies: internal-slot: 1.0.5 - store2@2.14.2: {} + store2@2.14.4: {} storybook-addon-react-router-v6@2.0.7(@storybook/blocks@7.4.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@storybook/channels@7.4.6)(@storybook/components@7.4.6(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@storybook/core-events@7.4.6)(@storybook/manager-api@7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@storybook/preview-api@7.4.6)(@storybook/theming@7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-router-dom@6.26.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): dependencies: @@ -33365,29 +33624,29 @@ snapshots: - sass - stylus - vite-plugin-markdown@2.2.0(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)): + vite-plugin-markdown@2.2.0(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)): dependencies: domhandler: 4.3.1 front-matter: 4.0.2 htmlparser2: 6.1.0 markdown-it: 12.3.2 - vite: 6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) - vite-plugin-static-copy@2.2.0(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)): + vite-plugin-static-copy@2.2.0(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)): dependencies: chokidar: 3.6.0 fast-glob: 3.3.2 fs-extra: 11.1.1 picocolors: 1.1.1 - vite: 6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) - vite-tsconfig-paths@5.1.4(typescript@5.2.2)(vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)): + vite-tsconfig-paths@5.1.4(typescript@5.2.2)(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)): dependencies: debug: 4.4.0 globrex: 0.1.2 tsconfck: 3.1.4(typescript@5.2.2) optionalDependencies: - vite: 6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) transitivePeerDependencies: - supports-color - typescript @@ -33411,9 +33670,9 @@ snapshots: fsevents: 2.3.3 terser: 5.37.0 - vite@6.0.3(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1): + vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1): dependencies: - esbuild: 0.24.0 + esbuild: 0.24.2 postcss: 8.4.49 rollup: 4.28.1 optionalDependencies: @@ -33498,7 +33757,7 @@ snapshots: webpack@5.88.2(@swc/core@1.3.92(@swc/helpers@0.5.11))(esbuild@0.18.20): dependencies: '@types/eslint-scope': 3.7.4 - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/wasm-edit': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 From e1ac30a664c4778f95bf319fc273ec6a03ba13f4 Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 20:23:57 -0300 Subject: [PATCH 14/20] chore: add try catch --- .../systems/Error/utils/getErrorIgnoreData.ts | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts index 3788f2322..4ba59bf91 100644 --- a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts +++ b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts @@ -11,18 +11,23 @@ type IgnoredError = { export function getErrorIgnoreData( error: Error | undefined ): IgnoredError | undefined { - return IGNORED_ERRORS.find((filter) => { - const errorValue = error?.[filter.field] as string | undefined; + try { + return IGNORED_ERRORS.find((filter) => { + const errorValue = error?.[filter.field] as string | undefined; - switch (filter.comparison) { - case 'exact': - return filter.value === errorValue; - case 'startsWith': - return errorValue?.startsWith(filter.value); - case 'partial': - return errorValue?.includes(filter.value); - } - }); + switch (filter.comparison) { + case 'exact': + return filter.value === errorValue; + case 'startsWith': + return errorValue?.startsWith(filter.value); + case 'partial': + return errorValue?.includes(filter.value); + } + }); + } catch (error) { + console.warn(error); + return undefined; + } } const IGNORED_ERRORS: IgnoredError[] = [ From 092a313b70799bc2d84a2889a41c0c8f76c4a3fd Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 20:31:49 -0300 Subject: [PATCH 15/20] fix: not awaiting for dismiss --- .../app/src/systems/Error/services/ReportErrorService.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/app/src/systems/Error/services/ReportErrorService.tsx b/packages/app/src/systems/Error/services/ReportErrorService.tsx index 41cf8e30a..13541af39 100644 --- a/packages/app/src/systems/Error/services/ReportErrorService.tsx +++ b/packages/app/src/systems/Error/services/ReportErrorService.tsx @@ -69,7 +69,9 @@ export class ReportErrorService { if (errorIgnoreData?.action === 'hide') { captureException(e.error, e.extra); } - this.dismissError(e.id).finally(() => resolve(true)); + return resolve( + this.dismissError(e.id).finally(() => resolve(true)) + ); }) ); } From 4e47689ee8b82ab2b02a5f13ded439189d372bef Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 20:54:51 -0300 Subject: [PATCH 16/20] fix: vite version version over >6.0.8 causes a reload loop --- examples/cra-dapp/package.json | 2 +- packages/app/package.json | 2 +- pnpm-lock.yaml | 70 +++++++++++++++++----------------- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/examples/cra-dapp/package.json b/examples/cra-dapp/package.json index d307b1630..6550e16cd 100644 --- a/examples/cra-dapp/package.json +++ b/examples/cra-dapp/package.json @@ -20,6 +20,6 @@ "@types/react-dom": "18.3.0", "@vitejs/plugin-react": "4.2.1", "typescript": "5.2.2", - "vite": "6.0.11" + "vite": "6.0.8" } } diff --git a/packages/app/package.json b/packages/app/package.json index 457557b2b..fe43b516e 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -102,7 +102,7 @@ "ts-jest-mock-import-meta": "1.1.0", "tsconfig-paths-webpack-plugin": "4.1.0", "typescript": "5.2.2", - "vite": "6.0.11", + "vite": "6.0.8", "vite-plugin-clean": "1.0.0", "vite-plugin-static-copy": "2.2.0", "vite-tsconfig-paths": "5.1.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 246f1ecdb..417ba1f25 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -162,13 +162,13 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: 4.2.1 - version: 4.2.1(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + version: 4.2.1(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) typescript: specifier: 5.2.2 version: 5.2.2 vite: - specifier: 6.0.11 - version: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + specifier: 6.0.8 + version: 6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) packages/app: dependencies: @@ -282,7 +282,7 @@ importers: version: 1.0.0 vite-plugin-markdown: specifier: 2.2.0 - version: 2.2.0(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + version: 2.2.0(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) xstate: specifier: 4.38.2 version: 4.38.2 @@ -343,7 +343,7 @@ importers: version: 7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) '@storybook/react-vite': specifier: 7.4.6 - version: 7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + version: 7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) '@storybook/react-webpack5': specifier: 7.4.6 version: 7.4.6(@babel/core@7.24.0)(@swc/core@1.3.92(@swc/helpers@0.5.11))(@swc/helpers@0.5.11)(@types/react-dom@18.3.0)(@types/react@18.3.3)(esbuild@0.18.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(type-fest@2.19.0)(typescript@5.2.2)(webpack-hot-middleware@2.25.4) @@ -379,7 +379,7 @@ importers: version: 6.1.7 '@vitejs/plugin-react': specifier: 4.1.0 - version: 4.1.0(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + version: 4.1.0(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) '@xstate/inspect': specifier: 0.8.0 version: 0.8.0(@types/ws@8.5.12)(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(xstate@4.38.2) @@ -411,17 +411,17 @@ importers: specifier: 5.2.2 version: 5.2.2 vite: - specifier: 6.0.11 - version: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + specifier: 6.0.8 + version: 6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) vite-plugin-clean: specifier: 1.0.0 version: 1.0.0 vite-plugin-static-copy: specifier: 2.2.0 - version: 2.2.0(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + version: 2.2.0(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) vite-tsconfig-paths: specifier: 5.1.4 - version: 5.1.4(typescript@5.2.2)(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + version: 5.1.4(typescript@5.2.2)(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) whatwg-fetch: specifier: 3.6.20 version: 3.6.20 @@ -13361,8 +13361,8 @@ packages: terser: optional: true - vite@6.0.11: - resolution: {integrity: sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==} + vite@6.0.8: + resolution: {integrity: sha512-rJmB+6m3Qmo5nssFmm6hbSvaCS+5tH/iuTJYeHEOHMwqu/DPrjjBs1rlecCo4D0qy5xq506hMpkKx6pKaudUxA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -18569,13 +18569,13 @@ snapshots: - ioredis - utf-8-validate - '@joshwooding/vite-plugin-react-docgen-typescript@0.2.1(typescript@5.2.2)(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.2.1(typescript@5.2.2)(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': dependencies: glob: 7.2.3 glob-promise: 4.2.2(glob@7.2.3) magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.2.2) - vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) optionalDependencies: typescript: 5.2.2 @@ -22045,7 +22045,7 @@ snapshots: - encoding - supports-color - '@storybook/builder-vite@7.4.6(typescript@5.2.2)(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': + '@storybook/builder-vite@7.4.6(typescript@5.2.2)(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': dependencies: '@storybook/channels': 7.4.6 '@storybook/client-logger': 7.4.6 @@ -22066,7 +22066,7 @@ snapshots: remark-external-links: 8.0.0 remark-slug: 6.1.0 rollup: 3.29.5 - vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) optionalDependencies: typescript: 5.2.2 transitivePeerDependencies: @@ -22502,19 +22502,19 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/react-vite@7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': + '@storybook/react-vite@7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2)(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.2.1(typescript@5.2.2)(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.2.1(typescript@5.2.2)(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) '@rollup/pluginutils': 5.0.2 - '@storybook/builder-vite': 7.4.6(typescript@5.2.2)(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + '@storybook/builder-vite': 7.4.6(typescript@5.2.2)(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) '@storybook/react': 7.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.2.2) - '@vitejs/plugin-react': 3.1.0(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) + '@vitejs/plugin-react': 3.1.0(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)) ast-types: 0.14.2 magic-string: 0.30.2 react: 18.3.1 react-docgen: 6.0.0-alpha.3 react-dom: 18.3.1(react@18.3.1) - vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) transitivePeerDependencies: - '@preact/preset-vite' - encoding @@ -23330,14 +23330,14 @@ snapshots: '@typescript-eslint/types': 6.7.5 eslint-visitor-keys: 3.4.3 - '@vitejs/plugin-react@3.1.0(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': + '@vitejs/plugin-react@3.1.0(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': dependencies: '@babel/core': 7.24.0 '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.24.0) magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) transitivePeerDependencies: - supports-color @@ -23352,25 +23352,25 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.1.0(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': + '@vitejs/plugin-react@4.1.0(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': dependencies: '@babel/core': 7.24.0 '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.24.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.2.1(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': + '@vitejs/plugin-react@4.2.1(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1))': dependencies: '@babel/core': 7.24.0 '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.24.0) '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.24.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) transitivePeerDependencies: - supports-color @@ -33624,29 +33624,29 @@ snapshots: - sass - stylus - vite-plugin-markdown@2.2.0(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)): + vite-plugin-markdown@2.2.0(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)): dependencies: domhandler: 4.3.1 front-matter: 4.0.2 htmlparser2: 6.1.0 markdown-it: 12.3.2 - vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) - vite-plugin-static-copy@2.2.0(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)): + vite-plugin-static-copy@2.2.0(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)): dependencies: chokidar: 3.6.0 fast-glob: 3.3.2 fs-extra: 11.1.1 picocolors: 1.1.1 - vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) - vite-tsconfig-paths@5.1.4(typescript@5.2.2)(vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)): + vite-tsconfig-paths@5.1.4(typescript@5.2.2)(vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1)): dependencies: debug: 4.4.0 globrex: 0.1.2 tsconfck: 3.1.4(typescript@5.2.2) optionalDependencies: - vite: 6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) + vite: 6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1) transitivePeerDependencies: - supports-color - typescript @@ -33654,7 +33654,7 @@ snapshots: vite@2.9.18: dependencies: esbuild: 0.14.54 - postcss: 8.4.41 + postcss: 8.4.49 resolve: 1.22.8 rollup: 2.77.3 optionalDependencies: @@ -33670,7 +33670,7 @@ snapshots: fsevents: 2.3.3 terser: 5.37.0 - vite@6.0.11(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1): + vite@6.0.8(@types/node@22.10.1)(jiti@2.3.3)(terser@5.37.0)(yaml@2.6.1): dependencies: esbuild: 0.24.2 postcss: 8.4.49 From 40191513f439588738230b1e8acb4f936879b17b Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 27 Jan 2025 21:00:23 -0300 Subject: [PATCH 17/20] fix: ignore vite vulnerability --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index 64f89444c..146081a67 100644 --- a/package.json +++ b/package.json @@ -98,6 +98,9 @@ "allowAny": ["react", "react-dom"], "ignoreMissing": ["react", "react-dom"] }, + "auditConfig": { + "ignoreGhsas": ["GHSA-vg6x-rcgg-rjx6"] + }, "overrides": { "follow-redirects": ">=1.15.6", "glob-parent@<5.1.2": ">=5.1.2", From d42f155721339f08ae46a6e3145a5177991db017 Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 3 Feb 2025 22:07:13 -0300 Subject: [PATCH 18/20] chore: remove ghsas ignore --- package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/package.json b/package.json index 146081a67..64f89444c 100644 --- a/package.json +++ b/package.json @@ -98,9 +98,6 @@ "allowAny": ["react", "react-dom"], "ignoreMissing": ["react", "react-dom"] }, - "auditConfig": { - "ignoreGhsas": ["GHSA-vg6x-rcgg-rjx6"] - }, "overrides": { "follow-redirects": ">=1.15.6", "glob-parent@<5.1.2": ">=5.1.2", From e7b562103d477ba9cbab72775c0d32f32bfd4802 Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 3 Feb 2025 22:13:16 -0300 Subject: [PATCH 19/20] fix: showing badge for ignored errors --- .../app/src/systems/Error/services/ReportErrorService.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/app/src/systems/Error/services/ReportErrorService.tsx b/packages/app/src/systems/Error/services/ReportErrorService.tsx index 13541af39..530f725c7 100644 --- a/packages/app/src/systems/Error/services/ReportErrorService.tsx +++ b/packages/app/src/systems/Error/services/ReportErrorService.tsx @@ -47,7 +47,9 @@ export class ReportErrorService { async checkForErrors(): Promise { const errors = await this.getErrors(); - return errors.length > 0; + return ( + errors.filter((e) => !getErrorIgnoreData(e?.error)?.action).length > 0 + ); } async getErrors(): Promise { From 6b1f264eb39f3bb60fdf51d5f9d8a03f0347ee67 Mon Sep 17 00:00:00 2001 From: Arthur Geron <3487334+arthurgeron@users.noreply.github.com> Date: Mon, 3 Feb 2025 22:13:58 -0300 Subject: [PATCH 20/20] feat: add more errors to ignore list --- .../systems/Error/utils/getErrorIgnoreData.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts index 4ba59bf91..d93352703 100644 --- a/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts +++ b/packages/app/src/systems/Error/utils/getErrorIgnoreData.ts @@ -151,4 +151,22 @@ const IGNORED_ERRORS: IgnoredError[] = [ comparison: 'partial', action: 'hide', }, + { + value: 'type is invalid', + field: 'message', + comparison: 'partial', + action: 'hide', + }, + { + value: 'Param name is required', + field: 'message', + comparison: 'partial', + action: 'hide', + }, + { + value: `Cannot access 'store' before initialization`, + field: 'message', + comparison: 'partial', + action: 'hide', + }, ];