diff --git a/eslint.config.mjs b/eslint.config.mjs index 61ecab1f24..6b702bd18c 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -145,7 +145,6 @@ export default [ globals: { ...globals.browser, ...globals.commonjs, - ...globals.jest, ...globals.node, globalThis: false, vi: true, diff --git a/packages/crdt/index.ts b/packages/crdt/index.ts index c1cd862ed1..8420b1093f 100644 --- a/packages/crdt/index.ts +++ b/packages/crdt/index.ts @@ -1 +1 @@ -export * from './src/main'; +export * from './src'; diff --git a/packages/crdt/src/main.ts b/packages/crdt/src/index.ts similarity index 100% rename from packages/crdt/src/main.ts rename to packages/crdt/src/index.ts diff --git a/packages/desktop-client/package.json b/packages/desktop-client/package.json index 02eb209470..b5eadf4cb3 100644 --- a/packages/desktop-client/package.json +++ b/packages/desktop-client/package.json @@ -41,6 +41,7 @@ "i18next-parser": "^9.0.2", "i18next-resources-to-backend": "^1.2.1", "inter-ui": "^3.19.3", + "jsdom": "^26.1.0", "lodash": "^4.17.21", "loot-core": "workspace:*", "mdast-util-newline-to-break": "^2.0.0", diff --git a/packages/desktop-client/src/setupTests.js b/packages/desktop-client/src/setupTests.js index 9b7fe37807..8c96ca3efd 100644 --- a/packages/desktop-client/src/setupTests.js +++ b/packages/desktop-client/src/setupTests.js @@ -20,7 +20,7 @@ global.__resetWorld = () => { }; process.on('unhandledRejection', reason => { - console.log('REJECTION', reason); + console.error('REJECTION', reason); }); global.afterEach(() => { diff --git a/packages/loot-core/jest.config.js b/packages/loot-core/jest.config.js deleted file mode 100644 index 88e28918f2..0000000000 --- a/packages/loot-core/jest.config.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = { - moduleFileExtensions: [ - 'electron.js', - 'electron.ts', - 'mjs', - 'js', - 'ts', - 'tsx', - 'json', - ], - setupFilesAfterEnv: ['/src/mocks/setup.ts'], - testEnvironment: 'node', - testPathIgnorePatterns: [ - '/node_modules/', - '/lib/', - '.+/index\\.web\\.test\\.(js|ts|tsx)', - ], - transformIgnorePatterns: ['/node_modules/'], - transform: { - '\\.pegjs$': '/peg-transform.mjs', - '^.+\\.(t|j)sx?$': '@swc/jest', - }, -}; diff --git a/packages/loot-core/jest.web.config.js b/packages/loot-core/jest.web.config.js deleted file mode 100644 index 3893557d6b..0000000000 --- a/packages/loot-core/jest.web.config.js +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = { - moduleFileExtensions: [ - 'web.js', - 'web.ts', - 'web.tsx', - 'mjs', - 'js', - 'ts', - 'tsx', - 'json', - ], - testEnvironment: 'jsdom', - testPathIgnorePatterns: ['/node_modules/', '/lib/'].filter(Boolean), - testMatch: ['**/*.web.test.(js|ts|tsx)'], - transformIgnorePatterns: ['/node_modules/(?!absurd-sql)'], - transform: { - '\\.pegjs$': '/peg-transform.mjs', - '^.+\\.(t|j)sx?$': '@swc/jest', - }, -}; diff --git a/packages/loot-core/package.json b/packages/loot-core/package.json index 3c0dea4e13..4198354d24 100644 --- a/packages/loot-core/package.json +++ b/packages/loot-core/package.json @@ -11,8 +11,8 @@ "watch:browser": "cross-env NODE_ENV=development ./bin/build-browser", "generate:i18n": "i18next", "test": "npm-run-all -cp 'test:*'", - "test:node": "jest -c jest.config.js", - "test:web": "jest -c jest.web.config.js" + "test:node": "ENV=node vitest", + "test:web": "ENV=web vitest -c vitest.web.config.ts" }, "author": "", "license": "ISC", @@ -43,12 +43,8 @@ "@actual-app/api": "workspace:^", "@actual-app/crdt": "workspace:^", "@actual-app/web": "workspace:^", - "@swc/core": "^1.5.3", - "@swc/helpers": "^0.5.11", - "@swc/jest": "^0.2.36", "@types/adm-zip": "^0.5.7", "@types/better-sqlite3": "^7.6.12", - "@types/jest": "^29.5.14", "@types/jlongster__sql.js": "npm:@types/sql.js@latest", "@types/node": "^22.14.0", "@types/pegjs": "^0.10.6", @@ -62,8 +58,6 @@ "fake-indexeddb": "^3.1.8", "fast-check": "3.15.1", "i18next": "^23.11.5", - "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", "jsverify": "^0.8.4", "memfs": "3.5.3", "mockdate": "^3.0.5", @@ -78,6 +72,8 @@ "terser-webpack-plugin": "^5.3.14", "ts-node": "^10.9.2", "typescript": "^5.8.2", + "vite-plugin-peggy-loader": "^2.0.1", + "vitest": "^3.0.2", "webpack": "^5.94.0", "webpack-bundle-analyzer": "^4.10.2", "webpack-cli": "^5.1.4", diff --git a/packages/loot-core/peg-transform.mjs b/packages/loot-core/peg-transform.mjs deleted file mode 100644 index 7f590cc1b1..0000000000 --- a/packages/loot-core/peg-transform.mjs +++ /dev/null @@ -1,27 +0,0 @@ -// A peggy version of the pegjs-jest-transformer -// Transforms .pegjs compliant files to JS code. - -import * as crypto from 'crypto'; - -import peg from 'peggy'; - -const transform = { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - process(sourceText, sourcePath, _options) { - return { - code: `module.exports = ${peg.generate(sourceText, { - output: 'source-with-inline-map', - grammarSource: sourcePath, - })}`, - }; - }, - getCacheKey(sourceText, _sourcePath, options) { - return crypto - .createHash('md5') - .update(sourceText) - .update(options.configString) - .digest('hex'); - }, -}; - -export default transform; diff --git a/packages/loot-core/src/client/query-helpers.test.ts b/packages/loot-core/src/client/query-helpers.test.ts index c37c454ee5..4af5dc231f 100644 --- a/packages/loot-core/src/client/query-helpers.test.ts +++ b/packages/loot-core/src/client/query-helpers.test.ts @@ -272,7 +272,7 @@ describe('query helpers', () => { await tracer.expect('data', ['*']); }); - it(`${queryType} unsubscribes correctly`, async () => { + it(`${queryType} unsubscribes correctly`, () => async done => { initBasicServer(); tracer.start(); @@ -291,10 +291,11 @@ describe('query helpers', () => { // Wait a bit and make sure nothing comes through const p = Promise.race([tracer.expect('server-query'), wait(100)]); expect(await p).toEqual('wait(100)'); + done(); }); }); - it('pagedQuery makes requests in pages', async () => { + it('pagedQuery makes requests in pages', () => async done => { const data = initPagingServer(1502); tracer.start(); @@ -353,6 +354,7 @@ describe('query helpers', () => { // Wait a bit and make sure nothing comes through const p = Promise.race([tracer.expect('server-query'), wait(100)]); expect(await p).toEqual('wait(100)'); + done(); }); it('pagedQuery allows customizing page count', async () => { @@ -372,7 +374,7 @@ describe('query helpers', () => { await tracer.expect('data', selectData(data, ['id']).slice(0, 10)); }); - it('pagedQuery only runs `fetchNext` once at a time', async () => { + it('pagedQuery only runs `fetchNext` once at a time', () => async done => { initPagingServer(1000, { delay: 200 }); tracer.start(); @@ -396,6 +398,7 @@ describe('query helpers', () => { // Wait a bit and make sure nothing comes through const p = Promise.race([tracer.expect('server-query'), wait(200)]); expect(await p).toEqual('wait(200)'); + done(); }); it('pagedQuery refetches all paged data on update', async () => { diff --git a/packages/loot-core/src/mocks/setup.ts b/packages/loot-core/src/mocks/setup.ts index 09ab053b51..0aa30d6e1b 100644 --- a/packages/loot-core/src/mocks/setup.ts +++ b/packages/loot-core/src/mocks/setup.ts @@ -4,6 +4,7 @@ import * as nativeFs from 'fs'; import * as fetchClient from '../platform/client/fetch'; import * as sqlite from '../platform/server/sqlite'; import * as db from '../server/db'; +import * as MigrationsType from '../server/migrate/migrations'; import { enableGlobalMutations, disableGlobalMutations, @@ -15,11 +16,11 @@ import * as rules from '../server/transactions/transaction-rules'; import { updateVersion } from '../server/update'; import { resetTracer, tracer } from '../shared/test-helpers'; -jest.mock('../platform/client/fetch'); -jest.mock('../platform/exceptions'); -jest.mock('../platform/server/asyncStorage'); -jest.mock('../platform/server/connection'); -jest.mock('../server/post'); +vi.mock('../platform/client/fetch'); +vi.mock('../platform/exceptions'); +vi.mock('../platform/server/asyncStorage'); +vi.mock('../platform/server/connection'); +vi.mock('../server/post'); // By default, syncing is disabled setSyncingMode('disabled'); @@ -57,13 +58,15 @@ global.resetRandomId = () => { _id = 1; }; -jest.mock('uuid', () => ({ +vi.mock('uuid', () => ({ v4: () => { return 'id' + _id++; }, })); -jest.mock('../server/migrate/migrations', () => { - const realMigrations = jest.requireActual('../server/migrate/migrations'); +vi.mock('../server/migrate/migrations', async () => { + const realMigrations = await vi.importActual( + '../server/migrate/migrations', + ); return { ...realMigrations, migrate: async db => { @@ -122,7 +125,8 @@ global.getDatabaseDump = async function (tables) { // If you want to test the sql.js backend, you need this so it knows // where to find the webassembly file -// process.env.PUBLIC_URL = __dirname + '/../../../../node_modules/sql.js/dist/'; +// process.env.PUBLIC_URL = +// __dirname + '/../../../../node_modules/@jlongster/sql.js/dist/'; global.emptyDatabase = function (avoidUpdate) { return async () => { diff --git a/packages/loot-core/src/mocks/util.ts b/packages/loot-core/src/mocks/util.ts index f33299118a..12d5db6e18 100644 --- a/packages/loot-core/src/mocks/util.ts +++ b/packages/loot-core/src/mocks/util.ts @@ -1,4 +1,5 @@ // @ts-strict-ignore +import fs from 'fs/promises'; import { join, dirname, basename } from 'path'; import snapshotDiff from 'snapshot-diff'; @@ -52,3 +53,23 @@ export function debugDOM(node) { return debugDOM(node); } + +export function patchFetchForSqlJS(baseURL: string) { + // Patch the global fetch to resolve to a file + // This is a workaround for the fact that initSqlJS uses fetch to load the wasm file + // and we can't use the file protocol directly in tests + vi.spyOn(global, 'fetch').mockImplementation( + async (url: string | URL | Request) => { + if (typeof url === 'string' && url.startsWith(baseURL)) { + return new Response(await fs.readFile(url), { + status: 200, + statusText: 'OK', + headers: { + 'Content-Type': 'application/wasm', + }, + }); + } + return Promise.reject(new Error(`fetch not mocked for ${url}`)); + }, + ); +} diff --git a/packages/loot-core/src/platform/server/fs/index.web.test.ts b/packages/loot-core/src/platform/server/fs/index.web.test.ts index 14960f50dd..5456c76f4e 100644 --- a/packages/loot-core/src/platform/server/fs/index.web.test.ts +++ b/packages/loot-core/src/platform/server/fs/index.web.test.ts @@ -2,14 +2,16 @@ import 'fake-indexeddb/auto'; import FDBFactory from 'fake-indexeddb/lib/FDBFactory'; +import { patchFetchForSqlJS } from '../../../mocks/util'; import * as idb from '../indexeddb'; import * as sqlite from '../sqlite'; import { init, readFile, writeFile, exists, pathToId, join } from './index'; beforeAll(() => { - process.env.PUBLIC_URL = - __dirname + '/../../../../../../node_modules/@jlongster/sql.js/dist/'; + const baseURL = `${__dirname}/../../../../../../node_modules/@jlongster/sql.js/dist/`; + patchFetchForSqlJS(baseURL); + process.env.PUBLIC_URL = baseURL; }); beforeEach(() => { diff --git a/packages/loot-core/src/platform/server/sqlite/index.web.test.ts b/packages/loot-core/src/platform/server/sqlite/index.web.test.ts index de8102cc96..ef3235982d 100644 --- a/packages/loot-core/src/platform/server/sqlite/index.web.test.ts +++ b/packages/loot-core/src/platform/server/sqlite/index.web.test.ts @@ -1,4 +1,6 @@ // @ts-strict-ignore +import { patchFetchForSqlJS } from '../../../mocks/util'; + // eslint-disable-next-line no-restricted-imports import { init, @@ -8,10 +10,11 @@ import { runQuery, } from './index.web'; -beforeAll(() => { - process.env.PUBLIC_URL = - __dirname + '/../../../../../../node_modules/@jlongster/sql.js/dist/'; - return init(); +beforeAll(async () => { + const baseURL = `${__dirname}/../../../../../../node_modules/@jlongster/sql.js/dist/`; + patchFetchForSqlJS(baseURL); + + return init({ baseURL }); }); const initSQL = ` @@ -31,7 +34,7 @@ describe('Web sqlite', () => { // @ts-expect-error Property 'number' does not exist on type 'unknown' expect(rows[0].number).toBe(4); - const consoleSpy = jest.spyOn(console, 'log').mockImplementation(); + const consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => null); expect(() => { transaction(db, () => { runQuery(db, "INSERT INTO numbers (id, number) VALUES ('id2', 5)"); @@ -65,7 +68,9 @@ describe('Web sqlite', () => { runQuery(db, "INSERT INTO numbers (id, number) VALUES ('id3', 6)"); // Only this transaction should fail - const consoleSpy = jest.spyOn(console, 'log').mockImplementation(); + const consoleSpy = vi + .spyOn(console, 'log') + .mockImplementation(() => null); expect(() => { transaction(db, () => { runQuery(db, "INSERT INTO numbers (id, number) VALUES ('id4', 7)"); diff --git a/packages/loot-core/src/platform/server/sqlite/index.web.ts b/packages/loot-core/src/platform/server/sqlite/index.web.ts index 64670e879f..95872ac44a 100644 --- a/packages/loot-core/src/platform/server/sqlite/index.web.ts +++ b/packages/loot-core/src/platform/server/sqlite/index.web.ts @@ -6,12 +6,14 @@ import { unicodeLike } from './unicodeLike'; let SQL: SqlJsStatic | null = null; -export async function init() { +export async function init({ + baseURL = process.env.PUBLIC_URL, +}: { baseURL?: string } = {}) { // `initSqlJS` doesn't actually return a real promise, so make sure // we're returning a real one for correct semantics return new Promise((resolve, reject) => { initSqlJS({ - locateFile: file => process.env.PUBLIC_URL + file, + locateFile: file => baseURL + file, }).then( sql => { SQL = sql; diff --git a/packages/loot-core/src/server/__snapshots__/main.test.ts.snap b/packages/loot-core/src/server/__snapshots__/main.test.ts.snap index 0b139eaeed..7068457b21 100644 --- a/packages/loot-core/src/server/__snapshots__/main.test.ts.snap +++ b/packages/loot-core/src/server/__snapshots__/main.test.ts.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Accounts Transfers are properly updated 1`] = ` +exports[`Accounts > Transfers are properly updated 1`] = ` [ { "acct": "one", @@ -57,7 +57,7 @@ exports[`Accounts Transfers are properly updated 1`] = ` ] `; -exports[`Accounts Transfers are properly updated 2`] = ` +exports[`Accounts > Transfers are properly updated 2`] = ` "Snapshot Diff: - First value + Second value @@ -97,7 +97,7 @@ exports[`Accounts Transfers are properly updated 2`] = ` "imported_description": null," `; -exports[`Accounts Transfers are properly updated 3`] = ` +exports[`Accounts > Transfers are properly updated 3`] = ` "Snapshot Diff: - First value + Second value @@ -131,25 +131,25 @@ exports[`Accounts Transfers are properly updated 3`] = ` ]" `; -exports[`Budget budget updates when changing a category 1`] = ` +exports[`Budget > budget updates when changing a category 1`] = ` [ "budget201702!sum-amount-id2", ] `; -exports[`Budget budget updates when changing a category 2`] = ` +exports[`Budget > budget updates when changing a category 2`] = ` [ "budget201702!sum-amount-id2", ] `; -exports[`Budget budget updates when changing a category 3`] = ` +exports[`Budget > budget updates when changing a category 3`] = ` [ "budget201702!sum-amount-id2", ] `; -exports[`Budget new budgets should be created 1`] = ` +exports[`Budget > new budgets should be created 1`] = ` Set { "2016-10", "2016-11", @@ -170,7 +170,7 @@ Set { } `; -exports[`Budget new budgets should be created 2`] = ` +exports[`Budget > new budgets should be created 2`] = ` Set { "2016-10", "2016-11", diff --git a/packages/loot-core/src/server/__snapshots__/sheet.test.ts.snap b/packages/loot-core/src/server/__snapshots__/sheet.test.ts.snap index 2fbd7fdfec..04ed1db441 100644 --- a/packages/loot-core/src/server/__snapshots__/sheet.test.ts.snap +++ b/packages/loot-core/src/server/__snapshots__/sheet.test.ts.snap @@ -1,9 +1,9 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Spreadsheet transferring a category triggers an update 1`] = `"=from transactions where category = "cat2" calculate { sum(amount) }"`; +exports[`Spreadsheet > transferring a category triggers an update 1`] = `"=from transactions where category = "cat2" calculate { sum(amount) }"`; -exports[`Spreadsheet transferring a category triggers an update 2`] = `"=from transactions where category = "cat2" calculate { sum(amount) }"`; +exports[`Spreadsheet > transferring a category triggers an update 2`] = `"=from transactions where category = "cat2" calculate { sum(amount) }"`; -exports[`Spreadsheet updating still works after transferring categories 1`] = `"=from transactions where category = "cat2" calculate { sum(amount) }"`; +exports[`Spreadsheet > updating still works after transferring categories 1`] = `"=from transactions where category = "cat2" calculate { sum(amount) }"`; -exports[`Spreadsheet updating still works after transferring categories 2`] = `"=from transactions where category = "cat2" calculate { sum(amount) }"`; +exports[`Spreadsheet > updating still works after transferring categories 2`] = `"=from transactions where category = "cat2" calculate { sum(amount) }"`; diff --git a/packages/loot-core/src/server/accounts/__snapshots__/sync.test.ts.snap b/packages/loot-core/src/server/accounts/__snapshots__/sync.test.ts.snap index 1f594aa0a0..723f99bc7c 100644 --- a/packages/loot-core/src/server/accounts/__snapshots__/sync.test.ts.snap +++ b/packages/loot-core/src/server/accounts/__snapshots__/sync.test.ts.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Account sync reconcile does rematch deleted transactions by default 1`] = ` +exports[`Account sync > reconcile does rematch deleted transactions by default 1`] = ` [ { "account": "one", @@ -53,7 +53,7 @@ exports[`Account sync reconcile does rematch deleted transactions by default 1`] ] `; -exports[`Account sync reconcile doesnt rematch deleted transactions if reimport disabled 1`] = ` +exports[`Account sync > reconcile doesnt rematch deleted transactions if reimport disabled 1`] = ` [ { "account": "one", @@ -82,7 +82,7 @@ exports[`Account sync reconcile doesnt rematch deleted transactions if reimport ] `; -exports[`Account sync reconcile handles transactions with undefined fields 1`] = ` +exports[`Account sync > reconcile handles transactions with undefined fields 1`] = ` [ { "account": "one", diff --git a/packages/loot-core/src/server/accounts/sync.test.ts b/packages/loot-core/src/server/accounts/sync.test.ts index 30a30f90bf..e07bba4b94 100644 --- a/packages/loot-core/src/server/accounts/sync.test.ts +++ b/packages/loot-core/src/server/accounts/sync.test.ts @@ -9,16 +9,16 @@ import { loadRules, insertRule } from '../transactions/transaction-rules'; import { reconcileTransactions, addTransactions } from './sync'; -jest.mock('../../shared/months', () => ({ - ...jest.requireActual('../../shared/months'), - currentDay: jest.fn(), - currentMonth: jest.fn(), +vi.mock('../../shared/months', async () => ({ + ...(await vi.importActual('../../shared/months')), + currentDay: vi.fn(), + currentMonth: vi.fn(), })); beforeEach(async () => { - jest.resetAllMocks(); - (monthUtils.currentDay as jest.Mock).mockReturnValue('2017-10-15'); - (monthUtils.currentMonth as jest.Mock).mockReturnValue('2017-10'); + vi.resetAllMocks(); + vi.mocked(monthUtils.currentDay).mockReturnValue('2017-10-15'); + vi.mocked(monthUtils.currentMonth).mockReturnValue('2017-10'); await global.emptyDatabase()(); await loadMappings(); await loadRules(); diff --git a/packages/loot-core/src/server/api.test.ts b/packages/loot-core/src/server/api.test.ts index 674a413727..0163e56c87 100644 --- a/packages/loot-core/src/server/api.test.ts +++ b/packages/loot-core/src/server/api.test.ts @@ -2,8 +2,8 @@ import { getBankSyncError } from '../shared/errors'; import { ServerHandlers } from '../types/server-handlers'; import { installAPI } from './api'; -jest.mock('../shared/errors', () => ({ - getBankSyncError: jest.fn(error => `Bank sync error: ${error}`), +vi.mock('../shared/errors', () => ({ + getBankSyncError: vi.fn(error => `Bank sync error: ${error}`), })); describe('API handlers', () => { @@ -11,7 +11,7 @@ describe('API handlers', () => { describe('api/bank-sync', () => { it('should sync a single account when accountId is provided', async () => { - handlers['accounts-bank-sync'] = jest + handlers['accounts-bank-sync'] = vi .fn() .mockResolvedValue({ errors: [] }); @@ -22,7 +22,7 @@ describe('API handlers', () => { }); it('should handle errors in non batch sync', async () => { - handlers['accounts-bank-sync'] = jest.fn().mockResolvedValue({ + handlers['accounts-bank-sync'] = vi.fn().mockResolvedValue({ errors: ['connection-failed'], }); diff --git a/packages/loot-core/src/server/aql/schema/executors.test.ts b/packages/loot-core/src/server/aql/schema/executors.test.ts index 82c68c2f8b..b05a8db0a3 100644 --- a/packages/loot-core/src/server/aql/schema/executors.test.ts +++ b/packages/loot-core/src/server/aql/schema/executors.test.ts @@ -234,7 +234,7 @@ describe('transaction executors', () => { `); }), ); - }); + }, 20_000); function runTest(makeQuery) { const payeeIds = ['payee1', 'payee2', 'payee3', 'payee4', 'payee5']; @@ -362,7 +362,7 @@ describe('transaction executors', () => { query: happyQuery, }; }); - }); + }, 20_000); it(`queries the correct transactions with a filter`, async () => { return runTest(arr => { @@ -416,5 +416,5 @@ describe('transaction executors', () => { query: unhappyQuery, }; }); - }); + }, 20_000); }); diff --git a/packages/loot-core/src/server/budget/goalsSchedule.test.ts b/packages/loot-core/src/server/budget/goalsSchedule.test.ts index 623480e7a8..cd51008ab4 100644 --- a/packages/loot-core/src/server/budget/goalsSchedule.test.ts +++ b/packages/loot-core/src/server/budget/goalsSchedule.test.ts @@ -1,23 +1,24 @@ import { CategoryEntity } from '../../types/models'; import * as db from '../db'; +import { Rule } from '../rules'; import { getRuleForSchedule } from '../schedules/app'; import { isReflectBudget } from './actions'; import { goalsSchedule } from './goalsSchedule'; -jest.mock('../db'); -jest.mock('./actions'); -jest.mock('../schedules/app', () => { - const actualModule = jest.requireActual('../schedules/app'); +vi.mock('../db'); +vi.mock('./actions'); +vi.mock('../schedules/app', async () => { + const actualModule = await vi.importActual('../schedules/app'); return { ...actualModule, - getRuleForSchedule: jest.fn(), + getRuleForSchedule: vi.fn(), }; }); describe('goalsSchedule', () => { beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); it('should return correct budget when recurring schedule set', async () => { @@ -38,9 +39,12 @@ describe('goalsSchedule', () => { const errors: string[] = []; const category = { id: '1', name: 'Test Category' } as CategoryEntity; - (db.first as jest.Mock).mockResolvedValue({ id: 1, completed: 0 }); - (getRuleForSchedule as jest.Mock).mockResolvedValue({ - serialize: () => ({ + vi.mocked(db.first).mockResolvedValue({ id: 1, completed: 0 }); + vi.mocked(getRuleForSchedule).mockResolvedValue( + new Rule({ + id: 'test', + stage: 'pre', + conditionsOp: 'and', conditions: [ { op: 'is', @@ -65,10 +69,10 @@ describe('goalsSchedule', () => { type: 'number', }, ], + actions: [], }), - execActions: () => ({ amount: -10000, subtransactions: [] }), - }); - (isReflectBudget as jest.Mock).mockReturnValue(false); + ); + vi.mocked(isReflectBudget).mockReturnValue(false); // When const result = await goalsSchedule( @@ -108,9 +112,12 @@ describe('goalsSchedule', () => { const errors: string[] = []; const category = { id: '1', name: 'Test Category' } as CategoryEntity; - (db.first as jest.Mock).mockResolvedValue({ id: 1, completed: 0 }); - (getRuleForSchedule as jest.Mock).mockResolvedValue({ - serialize: () => ({ + vi.mocked(db.first).mockResolvedValue({ id: 1, completed: 0 }); + vi.mocked(getRuleForSchedule).mockResolvedValue( + new Rule({ + id: 'test', + stage: 'pre', + conditionsOp: 'and', conditions: [ { op: 'is', @@ -135,10 +142,10 @@ describe('goalsSchedule', () => { type: 'number', }, ], + actions: [], }), - execActions: () => ({ amount: -12000, subtransactions: [] }), - }); - (isReflectBudget as jest.Mock).mockReturnValue(false); + ); + vi.mocked(isReflectBudget).mockReturnValue(false); // When const result = await goalsSchedule( diff --git a/packages/loot-core/src/server/budget/template-notes.test.ts b/packages/loot-core/src/server/budget/template-notes.test.ts index 81709dc63e..f2b284e6bc 100644 --- a/packages/loot-core/src/server/budget/template-notes.test.ts +++ b/packages/loot-core/src/server/budget/template-notes.test.ts @@ -8,28 +8,26 @@ import { } from './statements'; import { checkTemplates, storeTemplates } from './template-notes'; -jest.mock('../db'); -jest.mock('./statements'); +vi.mock('../db'); +vi.mock('./statements'); function mockGetTemplateNotesForCategories( templateNotes: CategoryWithTemplateNote[], ) { - (getCategoriesWithTemplateNotes as jest.Mock).mockResolvedValue( - templateNotes, - ); + vi.mocked(getCategoriesWithTemplateNotes).mockResolvedValue(templateNotes); } function mockGetActiveSchedules(schedules: db.DbSchedule[]) { - (getActiveSchedules as jest.Mock).mockResolvedValue(schedules); + vi.mocked(getActiveSchedules).mockResolvedValue(schedules); } function mockDbUpdate() { - (db.update as jest.Mock).mockResolvedValue(undefined); + vi.mocked(db.update).mockResolvedValue(undefined); } describe('storeTemplates', () => { beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); const testCases = [ @@ -155,7 +153,7 @@ describe('storeTemplates', () => { describe('checkTemplates', () => { beforeEach(() => { - jest.clearAllMocks(); + vi.clearAllMocks(); }); const testCases = [ diff --git a/packages/loot-core/src/server/budgetfiles/__snapshots__/backups.test.ts.snap b/packages/loot-core/src/server/budgetfiles/__snapshots__/backups.test.ts.snap index 6704823b8b..85bbe2fedf 100644 --- a/packages/loot-core/src/server/budgetfiles/__snapshots__/backups.test.ts.snap +++ b/packages/loot-core/src/server/budgetfiles/__snapshots__/backups.test.ts.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Backups backups work 1`] = ` +exports[`Backups > backups work 1`] = ` [ { "date": "2017-01-01", @@ -17,7 +17,7 @@ exports[`Backups backups work 1`] = ` ] `; -exports[`Backups backups work 2`] = ` +exports[`Backups > backups work 2`] = ` [ { "date": "2017-01-01", @@ -38,7 +38,7 @@ exports[`Backups backups work 2`] = ` ] `; -exports[`Backups backups work 3`] = ` +exports[`Backups > backups work 3`] = ` [ { "date": "2017-01-01", @@ -55,7 +55,7 @@ exports[`Backups backups work 3`] = ` ] `; -exports[`Backups backups work 4`] = ` +exports[`Backups > backups work 4`] = ` [ { "date": "2017-01-01", diff --git a/packages/loot-core/src/server/db/__snapshots__/index.test.ts.snap b/packages/loot-core/src/server/db/__snapshots__/index.test.ts.snap index 3cdd2293e5..e04cc87101 100644 --- a/packages/loot-core/src/server/db/__snapshots__/index.test.ts.snap +++ b/packages/loot-core/src/server/db/__snapshots__/index.test.ts.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Database transactions are sorted by date 1`] = ` +exports[`Database > transactions are sorted by date 1`] = ` [ { "amount": -23, @@ -55,7 +55,7 @@ exports[`Database transactions are sorted by date 1`] = ` ] `; -exports[`Database transactions are sorted by id as a last resort 1`] = ` +exports[`Database > transactions are sorted by id as a last resort 1`] = ` [ { "amount": -23, @@ -100,7 +100,7 @@ exports[`Database transactions are sorted by id as a last resort 1`] = ` ] `; -exports[`Database transactions are sorted by sort order 1`] = ` +exports[`Database > transactions are sorted by sort order 1`] = ` [ { "amount": -23, @@ -155,7 +155,7 @@ exports[`Database transactions are sorted by sort order 1`] = ` ] `; -exports[`Database transactions are sorted by starting balance flag 1`] = ` +exports[`Database > transactions are sorted by starting balance flag 1`] = ` [ { "amount": -23, @@ -200,7 +200,7 @@ exports[`Database transactions are sorted by starting balance flag 1`] = ` ] `; -exports[`Database transactions don’t show orphaned child transactions 1`] = ` +exports[`Database > transactions don’t show orphaned child transactions 1`] = ` [ { "amount": -23, @@ -215,7 +215,7 @@ exports[`Database transactions don’t show orphaned child transactions 1`] = ` ] `; -exports[`Database transactions get child transactions in the right order 1`] = ` +exports[`Database > transactions get child transactions in the right order 1`] = ` [ { "amount": -23, diff --git a/packages/loot-core/src/server/main.test.ts b/packages/loot-core/src/server/main.test.ts index 911e5278d3..830934ebd7 100644 --- a/packages/loot-core/src/server/main.test.ts +++ b/packages/loot-core/src/server/main.test.ts @@ -20,7 +20,7 @@ import { import * as prefs from './prefs'; import * as sheet from './sheet'; -jest.mock('./post'); +vi.mock('./post'); beforeEach(async () => { await global.emptyDatabase()(); @@ -90,7 +90,7 @@ describe('Budgets', () => { await db.openDatabase('test-budget'); await db.runQuery('INSERT INTO __migrations__ (id) VALUES (1000)'); - const spy = jest.spyOn(console, 'warn').mockImplementation(); + const spy = vi.spyOn(console, 'warn').mockImplementation(() => null); const { error } = await runHandler(handlers['load-budget'], { id: 'test-budget', diff --git a/packages/loot-core/src/server/migrate/__snapshots__/migrations.test.ts.snap b/packages/loot-core/src/server/migrate/__snapshots__/migrations.test.ts.snap index 9a651fd236..693b3ee8f2 100644 --- a/packages/loot-core/src/server/migrate/__snapshots__/migrations.test.ts.snap +++ b/packages/loot-core/src/server/migrate/__snapshots__/migrations.test.ts.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Migrations gets the latest migrations 1`] = ` +exports[`Migrations > gets the latest migrations 1`] = ` [ "1508717984291_up_add-poop.sql", "1508718036311_up_modify-poop.sql", @@ -8,7 +8,7 @@ exports[`Migrations gets the latest migrations 1`] = ` ] `; -exports[`Migrations gets the latest migrations 2`] = ` +exports[`Migrations > gets the latest migrations 2`] = ` [ "1508717984291_up_add-poop.sql", "1508718036311_up_modify-poop.sql", diff --git a/packages/loot-core/src/server/rules/index.test.ts b/packages/loot-core/src/server/rules/index.test.ts index e0e5325f6e..81007d0a30 100644 --- a/packages/loot-core/src/server/rules/index.test.ts +++ b/packages/loot-core/src/server/rules/index.test.ts @@ -53,7 +53,7 @@ describe('Condition', () => { }); test('ops handles undefined fields', () => { - const spy = jest.spyOn(console, 'warn').mockImplementation(); + const spy = vi.spyOn(console, 'warn').mockImplementation(() => null); let cond = new Condition('is', 'payee', null, null); // null is strict and won't match undefined @@ -472,7 +472,7 @@ describe('Action', () => { template: '{{debug notes}}', }); const item = { notes: 'Sarah' }; - const spy = jest.spyOn(console, 'log').mockImplementation(); + const spy = vi.spyOn(console, 'log').mockImplementation(() => null); action.exec(item); expect(spy).toHaveBeenCalledWith('Sarah'); spy.mockRestore(); diff --git a/packages/loot-core/src/server/spreadsheet/__snapshots__/spreadsheet.test.ts.snap b/packages/loot-core/src/server/spreadsheet/__snapshots__/spreadsheet.test.ts.snap index 91479bf316..c3c8a1b812 100644 --- a/packages/loot-core/src/server/spreadsheet/__snapshots__/spreadsheet.test.ts.snap +++ b/packages/loot-core/src/server/spreadsheet/__snapshots__/spreadsheet.test.ts.snap @@ -1,5 +1,5 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Spreadsheet querying deep join works 1`] = `"=from transactions where acct.offbudget = 0 and (description.transfer_acct.offbudget = null or description.transfer_acct.offbudget = 1) select { acct.offbudget, description.transfer_acct.offbudget as foo, amount }"`; +exports[`Spreadsheet > querying deep join works 1`] = `"=from transactions where acct.offbudget = 0 and (description.transfer_acct.offbudget = null or description.transfer_acct.offbudget = 1) select { acct.offbudget, description.transfer_acct.offbudget as foo, amount }"`; -exports[`Spreadsheet querying transactions works 1`] = `"=from transactions select { amount, category }"`; +exports[`Spreadsheet > querying transactions works 1`] = `"=from transactions select { amount, category }"`; diff --git a/packages/loot-core/src/server/spreadsheet/spreadsheet.test.ts b/packages/loot-core/src/server/spreadsheet/spreadsheet.test.ts index 095252fde1..ebbb645d5c 100644 --- a/packages/loot-core/src/server/spreadsheet/spreadsheet.test.ts +++ b/packages/loot-core/src/server/spreadsheet/spreadsheet.test.ts @@ -141,7 +141,7 @@ describe('Spreadsheet', () => { }); }); - test('async cells work', done => { + test('async cells work', () => { const spreadsheet = new Spreadsheet(); spreadsheet.createDynamic('foo', 'x', { @@ -154,13 +154,12 @@ describe('Spreadsheet', () => { spreadsheet.onFinish(() => { expect(spreadsheet.getValue('foo!x')).toBe(5); - done(); }); expect(spreadsheet.getValue('foo!x')).toBe(1); }); - test('async cells work2', done => { + test('async cells work2', () => { const spreadsheet = new Spreadsheet(); spreadsheet.transaction(() => { @@ -184,7 +183,6 @@ describe('Spreadsheet', () => { spreadsheet.onFinish(() => { expect(spreadsheet.getValue('foo!x')).toBe(5); expect(spreadsheet.getValue('foo!y')).toBe(15); - done(); }); expect(spreadsheet.getValue('foo!x')).toBe(1); diff --git a/packages/loot-core/src/server/sync/__snapshots__/sync.test.ts.snap b/packages/loot-core/src/server/sync/__snapshots__/sync.test.ts.snap index 7e964dd1bf..9738b49779 100644 --- a/packages/loot-core/src/server/sync/__snapshots__/sync.test.ts.snap +++ b/packages/loot-core/src/server/sync/__snapshots__/sync.test.ts.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Sync should send messages to the server 1`] = ` +exports[`Sync > should send messages to the server 1`] = ` [ { "column": "amount", @@ -21,7 +21,7 @@ exports[`Sync should send messages to the server 1`] = ` ] `; -exports[`Sync should send messages to the server 2`] = ` +exports[`Sync > should send messages to the server 2`] = ` [ { "clock": "{"timestamp":"1970-01-02T10:17:37.789Z-0000-0000000000000id1","merkle":{"2":{"2":{"1":{"1":{"0":{"1":{"2":{"hash":-1992470180},"hash":-1992470180},"hash":-1992470180},"hash":-1992470180},"hash":-1992470180},"hash":-1992470180},"hash":-1992470180},"hash":-1992470180}}", diff --git a/packages/loot-core/src/server/sync/sync.property.test.ts b/packages/loot-core/src/server/sync/sync.property.test.ts index bc0424fb74..a6d8b99550 100644 --- a/packages/loot-core/src/server/sync/sync.property.test.ts +++ b/packages/loot-core/src/server/sync/sync.property.test.ts @@ -311,7 +311,7 @@ async function run(msgs) { } describe('sync property test', () => { - xit('should always sync clients into the same state', async () => { + it.skip('should always sync clients into the same state', async () => { const test = await jsc.check( jsc.forall( jsc.tuple(Array.from(new Array(100)).map(() => jsc.oneof(generators))), @@ -356,7 +356,7 @@ describe('sync property test', () => { } }, 50000); - xit('should run a counterexample that needs to be fixed', async () => { + it.skip('should run a counterexample that needs to be fixed', async () => { function convert(data) { return data.map(x => ({ ...x, diff --git a/packages/loot-core/src/server/transactions/__snapshots__/transaction-rules.test.ts.snap b/packages/loot-core/src/server/transactions/__snapshots__/transaction-rules.test.ts.snap index f149a0dfa6..df4fe71111 100644 --- a/packages/loot-core/src/server/transactions/__snapshots__/transaction-rules.test.ts.snap +++ b/packages/loot-core/src/server/transactions/__snapshots__/transaction-rules.test.ts.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Learning categories updates rules correctly even if multiple rules exist 1`] = ` +exports[`Learning categories > updates rules correctly even if multiple rules exist 1`] = ` [ Rule { "actions": [ @@ -86,7 +86,7 @@ exports[`Learning categories updates rules correctly even if multiple rules exis ] `; -exports[`Learning categories updates rules correctly even if multiple rules exist 2`] = ` +exports[`Learning categories > updates rules correctly even if multiple rules exist 2`] = ` [ Rule { "actions": [ diff --git a/packages/loot-core/src/server/transactions/__snapshots__/transfer.test.ts.snap b/packages/loot-core/src/server/transactions/__snapshots__/transfer.test.ts.snap index abc5dfc6f7..3f24d0ab6a 100644 --- a/packages/loot-core/src/server/transactions/__snapshots__/transfer.test.ts.snap +++ b/packages/loot-core/src/server/transactions/__snapshots__/transfer.test.ts.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Transfer split transfers are retained on child transactions 1`] = ` +exports[`Transfer > split transfers are retained on child transactions 1`] = ` [ { "account": "one", @@ -53,7 +53,7 @@ exports[`Transfer split transfers are retained on child transactions 1`] = ` ] `; -exports[`Transfer split transfers are retained on child transactions 2`] = ` +exports[`Transfer > split transfers are retained on child transactions 2`] = ` "Snapshot Diff: - First value + Second value @@ -73,7 +73,7 @@ exports[`Transfer split transfers are retained on child transactions 2`] = ` "raw_synced_data": null," `; -exports[`Transfer split transfers are retained on child transactions 3`] = ` +exports[`Transfer > split transfers are retained on child transactions 3`] = ` "Snapshot Diff: - First value + Second value @@ -139,7 +139,7 @@ exports[`Transfer split transfers are retained on child transactions 3`] = ` "date": 20170101," `; -exports[`Transfer transfers are properly de-categorized 1`] = ` +exports[`Transfer > transfers are properly de-categorized 1`] = ` [ { "account": "one", @@ -168,7 +168,7 @@ exports[`Transfer transfers are properly de-categorized 1`] = ` ] `; -exports[`Transfer transfers are properly de-categorized 2`] = ` +exports[`Transfer > transfers are properly de-categorized 2`] = ` "Snapshot Diff: - First value + Second value @@ -222,7 +222,7 @@ exports[`Transfer transfers are properly de-categorized 2`] = ` ]" `; -exports[`Transfer transfers are properly de-categorized 3`] = ` +exports[`Transfer > transfers are properly de-categorized 3`] = ` "Snapshot Diff: - First value + Second value @@ -265,7 +265,7 @@ exports[`Transfer transfers are properly de-categorized 3`] = ` "error": null," `; -exports[`Transfer transfers are properly inserted/updated/deleted 1`] = ` +exports[`Transfer > transfers are properly inserted/updated/deleted 1`] = ` [ { "account": "one", @@ -294,7 +294,7 @@ exports[`Transfer transfers are properly inserted/updated/deleted 1`] = ` ] `; -exports[`Transfer transfers are properly inserted/updated/deleted 2`] = ` +exports[`Transfer > transfers are properly inserted/updated/deleted 2`] = ` "Snapshot Diff: - First value + Second value @@ -356,7 +356,7 @@ exports[`Transfer transfers are properly inserted/updated/deleted 2`] = ` ]" `; -exports[`Transfer transfers are properly inserted/updated/deleted 3`] = ` +exports[`Transfer > transfers are properly inserted/updated/deleted 3`] = ` "Snapshot Diff: - First value + Second value @@ -458,7 +458,7 @@ exports[`Transfer transfers are properly inserted/updated/deleted 3`] = ` ]" `; -exports[`Transfer transfers are properly inserted/updated/deleted 4`] = ` +exports[`Transfer > transfers are properly inserted/updated/deleted 4`] = ` "Snapshot Diff: - First value + Second value @@ -490,7 +490,7 @@ exports[`Transfer transfers are properly inserted/updated/deleted 4`] = ` "error": null," `; -exports[`Transfer transfers are properly inserted/updated/deleted 5`] = ` +exports[`Transfer > transfers are properly inserted/updated/deleted 5`] = ` "Snapshot Diff: - First value + Second value @@ -544,7 +544,7 @@ exports[`Transfer transfers are properly inserted/updated/deleted 5`] = ` "category": null," `; -exports[`Transfer transfers are properly inserted/updated/deleted 6`] = ` +exports[`Transfer > transfers are properly inserted/updated/deleted 6`] = ` "Snapshot Diff: - First value + Second value @@ -598,7 +598,7 @@ exports[`Transfer transfers are properly inserted/updated/deleted 6`] = ` "category": null," `; -exports[`Transfer transfers are properly inserted/updated/deleted 7`] = ` +exports[`Transfer > transfers are properly inserted/updated/deleted 7`] = ` "Snapshot Diff: - First value + Second value diff --git a/packages/loot-core/src/server/transactions/import/__snapshots__/parse-file.test.ts.snap b/packages/loot-core/src/server/transactions/import/__snapshots__/parse-file.test.ts.snap index b2a9d70f6c..c5ca6ce3cf 100644 --- a/packages/loot-core/src/server/transactions/import/__snapshots__/parse-file.test.ts.snap +++ b/packages/loot-core/src/server/transactions/import/__snapshots__/parse-file.test.ts.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`File import CAMT.053 import works 1`] = ` +exports[`File import > CAMT.053 import works 1`] = ` [ { "acct": "one", @@ -194,7 +194,7 @@ exports[`File import CAMT.053 import works 1`] = ` ] `; -exports[`File import handles html escaped plaintext 1`] = ` +exports[`File import > handles html escaped plaintext 1`] = ` [ { "acct": "one", @@ -251,7 +251,7 @@ exports[`File import handles html escaped plaintext 1`] = ` ] `; -exports[`File import handles non-ASCII characters 1`] = ` +exports[`File import > handles non-ASCII characters 1`] = ` [ { "acct": "one", @@ -282,7 +282,7 @@ exports[`File import handles non-ASCII characters 1`] = ` ] `; -exports[`File import import notes are respected when importing: transactions with notes 1`] = ` +exports[`File import > import notes are respected when importing > transactions with notes 1`] = ` [ { "acct": "one", @@ -547,7 +547,7 @@ exports[`File import import notes are respected when importing: transactions wit ] `; -exports[`File import ofx import works (credit card) 1`] = ` +exports[`File import > ofx import works (credit card) 1`] = ` [ { "acct": "one", @@ -578,7 +578,7 @@ exports[`File import ofx import works (credit card) 1`] = ` ] `; -exports[`File import ofx import works 1`] = ` +exports[`File import > ofx import works 1`] = ` [ { "acct": "one", @@ -843,7 +843,7 @@ exports[`File import ofx import works 1`] = ` ] `; -exports[`File import qfx import works 1`] = ` +exports[`File import > qfx import works 1`] = ` [ { "acct": "one", @@ -1108,7 +1108,7 @@ exports[`File import qfx import works 1`] = ` ] `; -exports[`File import qif import works 1`] = ` +exports[`File import > qif import works 1`] = ` [ { "acct": "one", diff --git a/packages/loot-core/src/server/transactions/transaction-rules.test.ts b/packages/loot-core/src/server/transactions/transaction-rules.test.ts index 53895eb062..a6827c05bc 100644 --- a/packages/loot-core/src/server/transactions/transaction-rules.test.ts +++ b/packages/loot-core/src/server/transactions/transaction-rules.test.ts @@ -37,7 +37,7 @@ async function getMatchingTransactions(conds) { describe('Transaction rules', () => { test('makeRule validates rule data', () => { - const spy = jest.spyOn(console, 'warn').mockImplementation(); + const spy = vi.spyOn(console, 'warn').mockImplementation(() => null); // Parse errors expect(makeRule({ conditions: '{', actions: '[]' })).toBe(null); @@ -113,7 +113,7 @@ describe('Transaction rules', () => { expect((await db.all('SELECT * FROM rules')).length).toBe(2); expect(getRules().length).toBe(2); - const spy = jest.spyOn(console, 'warn').mockImplementation(); + const spy = vi.spyOn(console, 'warn').mockImplementation(() => null); // Try to insert an invalid rule (don't use `insertRule` because // that will validate the input) diff --git a/packages/loot-core/src/shared/__snapshots__/months.test.ts.snap b/packages/loot-core/src/shared/__snapshots__/months.test.ts.snap index 8ca0a6e6eb..8020234ac1 100644 --- a/packages/loot-core/src/shared/__snapshots__/months.test.ts.snap +++ b/packages/loot-core/src/shared/__snapshots__/months.test.ts.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`range returns a full range 1`] = ` [ diff --git a/packages/loot-core/typings/vite-plugin-peggy-loader.d.ts b/packages/loot-core/typings/vite-plugin-peggy-loader.d.ts new file mode 100644 index 0000000000..1513ca1afe --- /dev/null +++ b/packages/loot-core/typings/vite-plugin-peggy-loader.d.ts @@ -0,0 +1 @@ +declare module 'vite-plugin-peggy-loader'; diff --git a/packages/loot-core/vitest.config.ts b/packages/loot-core/vitest.config.ts new file mode 100644 index 0000000000..4e05477dbe --- /dev/null +++ b/packages/loot-core/vitest.config.ts @@ -0,0 +1,38 @@ +import path from 'path'; + +import peggyLoader from 'vite-plugin-peggy-loader'; +import { defineConfig } from 'vitest/config'; + +const resolveExtensions = [ + '.testing.ts', + '.electron.ts', + '.mjs', + '.js', + '.mts', + '.ts', + '.jsx', + '.tsx', + '.json', +]; + +export default defineConfig({ + test: { + globals: true, + setupFiles: ['./src/mocks/setup.ts'], + exclude: ['src/**/*.web.test.(js|jsx|ts|tsx)'], + onConsoleLog(log: string, type: 'stdout' | 'stderr'): boolean | void { + // print only console.error + return type === 'stderr'; + }, + }, + resolve: { + alias: [ + { + find: /^@actual-app\/crdt(\/.*)?$/, + replacement: path.resolve('../crdt/src$1'), + }, + ], + extensions: resolveExtensions, + }, + plugins: [peggyLoader()], +}); diff --git a/packages/loot-core/vitest.web.config.ts b/packages/loot-core/vitest.web.config.ts new file mode 100644 index 0000000000..1b2a9ee7c7 --- /dev/null +++ b/packages/loot-core/vitest.web.config.ts @@ -0,0 +1,35 @@ +import path from 'path'; + +import peggyLoader from 'vite-plugin-peggy-loader'; +import { defineConfig } from 'vitest/config'; + +const resolveExtensions = [ + '.testing.ts', + '.web.ts', + '.mjs', + '.js', + '.mts', + '.ts', + '.jsx', + '.tsx', + '.json', + '.wasm', +]; + +export default defineConfig({ + test: { + environment: 'jsdom', + globals: true, + include: ['src/**/*.web.test.(js|jsx|ts|tsx)'], + }, + resolve: { + alias: [ + { + find: /^@actual-app\/crdt(\/.*)?$/, + replacement: path.resolve('../../../crdt/src$1'), + }, + ], + extensions: resolveExtensions, + }, + plugins: [peggyLoader()], +}); diff --git a/packages/loot-core/webpack/webpack.desktop.config.js b/packages/loot-core/webpack/webpack.desktop.config.js index 2ce92a6f36..9169955380 100644 --- a/packages/loot-core/webpack/webpack.desktop.config.js +++ b/packages/loot-core/webpack/webpack.desktop.config.js @@ -27,6 +27,9 @@ module.exports = { '.json', 'pegjs', ], + alias: { + handlebars: 'handlebars/dist/handlebars.js', + }, }, externals: ['better-sqlite3'], plugins: [ diff --git a/tsconfig.json b/tsconfig.json index 6daceeecec..2ef647829e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,7 +19,7 @@ "noFallthroughCasesInSwitch": true, "skipLibCheck": true, "jsx": "preserve", - "types": ["vite/client", "jest", "vitest/globals"], + "types": ["vite/client", "vitest/globals"], // Check JS files too "allowJs": true, "checkJs": false, diff --git a/upcoming-release-notes/4859.md b/upcoming-release-notes/4859.md new file mode 100644 index 0000000000..56736f746b --- /dev/null +++ b/upcoming-release-notes/4859.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [jfdoming] +--- + +Move loot-core to vitest diff --git a/yarn.lock b/yarn.lock index 278f59e666..f09bd199e5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -164,6 +164,7 @@ __metadata: i18next-parser: "npm:^9.0.2" i18next-resources-to-backend: "npm:^1.2.1" inter-ui: "npm:^3.19.3" + jsdom: "npm:^26.1.0" lodash: "npm:^4.17.21" loot-core: "workspace:*" mdast-util-newline-to-break: "npm:^2.0.0" @@ -243,6 +244,19 @@ __metadata: languageName: node linkType: hard +"@asamuzakjp/css-color@npm:^3.1.2": + version: 3.1.3 + resolution: "@asamuzakjp/css-color@npm:3.1.3" + dependencies: + "@csstools/css-calc": "npm:^2.1.3" + "@csstools/css-color-parser": "npm:^3.0.9" + "@csstools/css-parser-algorithms": "npm:^3.0.4" + "@csstools/css-tokenizer": "npm:^3.0.3" + lru-cache: "npm:^10.4.3" + checksum: 10/1bf917fda3019637129a1f7d09ad95e2ccee5c7de0a9befe765b8ed2f2d5d9491fcdb970a5950522555c91bf473f4fd97c5a6d9b2e6fd4f9873dba1e11ad7138 + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.26.2": version: 7.26.2 resolution: "@babel/code-frame@npm:7.26.2" @@ -261,7 +275,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.4, @babel/core@npm:^7.26.10": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.21.3, @babel/core@npm:^7.24.4, @babel/core@npm:^7.26.10": version: 7.26.10 resolution: "@babel/core@npm:7.26.10" dependencies: @@ -535,7 +549,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.26.10, @babel/parser@npm:^7.26.9": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.26.10, @babel/parser@npm:^7.26.9": version: 7.26.10 resolution: "@babel/parser@npm:7.26.10" dependencies: @@ -1562,7 +1576,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.22.15, @babel/template@npm:^7.26.9, @babel/template@npm:^7.3.3": +"@babel/template@npm:^7.22.15, @babel/template@npm:^7.26.9": version: 7.26.9 resolution: "@babel/template@npm:7.26.9" dependencies: @@ -1608,13 +1622,6 @@ __metadata: languageName: node linkType: hard -"@bcoe/v8-coverage@npm:^0.2.3": - version: 0.2.3 - resolution: "@bcoe/v8-coverage@npm:0.2.3" - checksum: 10/1a1f0e356a3bb30b5f1ced6f79c413e6ebacf130421f15fac5fcd8be5ddf98aedb4404d7f5624e3285b700e041f9ef938321f3ca4d359d5b716f96afa120d88d - languageName: node - linkType: hard - "@bcoe/v8-coverage@npm:^1.0.2": version: 1.0.2 resolution: "@bcoe/v8-coverage@npm:1.0.2" @@ -1638,6 +1645,52 @@ __metadata: languageName: node linkType: hard +"@csstools/color-helpers@npm:^5.0.2": + version: 5.0.2 + resolution: "@csstools/color-helpers@npm:5.0.2" + checksum: 10/8763079c54578bd2215c68de0795edb9cfa29bffa29625bff89f3c47d9df420d86296ff3a6fa8c29ca037bbaa64dc10a963461233341de0516a3161a3b549e7b + languageName: node + linkType: hard + +"@csstools/css-calc@npm:^2.1.3": + version: 2.1.3 + resolution: "@csstools/css-calc@npm:2.1.3" + peerDependencies: + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10/0c20165f13135bb51ef397c4ea8e185c75ff379378212952af57052de96890a1eda056b2c6a2d573ea69e56c9dae79a906a2e4cac9d731dfbf19defaf943fd55 + languageName: node + linkType: hard + +"@csstools/css-color-parser@npm:^3.0.9": + version: 3.0.9 + resolution: "@csstools/css-color-parser@npm:3.0.9" + dependencies: + "@csstools/color-helpers": "npm:^5.0.2" + "@csstools/css-calc": "npm:^2.1.3" + peerDependencies: + "@csstools/css-parser-algorithms": ^3.0.4 + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10/634ee3c5424e21bda414015d20e906a620d06186fe38957479a5266ded435ae14675e3085a259cec75cd7138df081357aba58a2626592d61335228a451db3eca + languageName: node + linkType: hard + +"@csstools/css-parser-algorithms@npm:^3.0.4": + version: 3.0.4 + resolution: "@csstools/css-parser-algorithms@npm:3.0.4" + peerDependencies: + "@csstools/css-tokenizer": ^3.0.3 + checksum: 10/dfb6926218d9f8ba25d8b43ea46c03863c819481f8c55e4de4925780eaab9e6bcd6bead1d56b4ef82d09fcd9d69a7db2750fa9db08eece9470fd499dc76d0edb + languageName: node + linkType: hard + +"@csstools/css-tokenizer@npm:^3.0.3": + version: 3.0.3 + resolution: "@csstools/css-tokenizer@npm:3.0.3" + checksum: 10/6baa3160e426e1f177b8f10d54ec7a4a596090f65a05f16d7e9e4da049962a404eabc5f885f4867093702c259cd4080ac92a438326e22dea015201b3e71f5bbb + languageName: node + linkType: hard + "@dabh/diagnostics@npm:^2.0.2": version: 2.0.3 resolution: "@dabh/diagnostics@npm:2.0.3" @@ -2517,89 +2570,13 @@ __metadata: languageName: node linkType: hard -"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": +"@istanbuljs/schema@npm:^0.1.2": version: 0.1.3 resolution: "@istanbuljs/schema@npm:0.1.3" checksum: 10/a9b1e49acdf5efc2f5b2359f2df7f90c5c725f2656f16099e8b2cd3a000619ecca9fc48cf693ba789cf0fd989f6e0df6a22bc05574be4223ecdbb7997d04384b languageName: node linkType: hard -"@jest/console@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/console@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - slash: "npm:^3.0.0" - checksum: 10/4a80c750e8a31f344233cb9951dee9b77bf6b89377cb131f8b3cde07ff218f504370133a5963f6a786af4d2ce7f85642db206ff7a15f99fe58df4c38ac04899e - languageName: node - linkType: hard - -"@jest/core@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/core@npm:29.7.0" - dependencies: - "@jest/console": "npm:^29.7.0" - "@jest/reporters": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.9" - jest-changed-files: "npm:^29.7.0" - jest-config: "npm:^29.7.0" - jest-haste-map: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-regex-util: "npm:^29.6.3" - jest-resolve: "npm:^29.7.0" - jest-resolve-dependencies: "npm:^29.7.0" - jest-runner: "npm:^29.7.0" - jest-runtime: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - jest-watcher: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - pretty-format: "npm:^29.7.0" - slash: "npm:^3.0.0" - strip-ansi: "npm:^6.0.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 10/ab6ac2e562d083faac7d8152ec1cc4eccc80f62e9579b69ed40aedf7211a6b2d57024a6cd53c4e35fd051c39a236e86257d1d99ebdb122291969a0a04563b51e - languageName: node - linkType: hard - -"@jest/create-cache-key-function@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/create-cache-key-function@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - checksum: 10/061ef63b13ec8c8e5d08e4456f03b5cf8c7f9c1cab4fed8402e1479153cafce6eea80420e308ef62027abb7e29b825fcfa06551856bd021d98e92e381bf91723 - languageName: node - linkType: hard - -"@jest/environment@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/environment@npm:29.7.0" - dependencies: - "@jest/fake-timers": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - jest-mock: "npm:^29.7.0" - checksum: 10/90b5844a9a9d8097f2cf107b1b5e57007c552f64315da8c1f51217eeb0a9664889d3f145cdf8acf23a84f4d8309a6675e27d5b059659a004db0ea9546d1c81a8 - languageName: node - linkType: hard - "@jest/expect-utils@npm:^29.7.0": version: 29.7.0 resolution: "@jest/expect-utils@npm:29.7.0" @@ -2609,79 +2586,6 @@ __metadata: languageName: node linkType: hard -"@jest/expect@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/expect@npm:29.7.0" - dependencies: - expect: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - checksum: 10/fea6c3317a8da5c840429d90bfe49d928e89c9e89fceee2149b93a11b7e9c73d2f6e4d7cdf647163da938fc4e2169e4490be6bae64952902bc7a701033fd4880 - languageName: node - linkType: hard - -"@jest/fake-timers@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/fake-timers@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@sinonjs/fake-timers": "npm:^10.0.2" - "@types/node": "npm:*" - jest-message-util: "npm:^29.7.0" - jest-mock: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - checksum: 10/9b394e04ffc46f91725ecfdff34c4e043eb7a16e1d78964094c9db3fde0b1c8803e45943a980e8c740d0a3d45661906de1416ca5891a538b0660481a3a828c27 - languageName: node - linkType: hard - -"@jest/globals@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/globals@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/expect": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - jest-mock: "npm:^29.7.0" - checksum: 10/97dbb9459135693ad3a422e65ca1c250f03d82b2a77f6207e7fa0edd2c9d2015fbe4346f3dc9ebff1678b9d8da74754d4d440b7837497f8927059c0642a22123 - languageName: node - linkType: hard - -"@jest/reporters@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/reporters@npm:29.7.0" - dependencies: - "@bcoe/v8-coverage": "npm:^0.2.3" - "@jest/console": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@jridgewell/trace-mapping": "npm:^0.3.18" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - collect-v8-coverage: "npm:^1.0.0" - exit: "npm:^0.1.2" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.9" - istanbul-lib-coverage: "npm:^3.0.0" - istanbul-lib-instrument: "npm:^6.0.0" - istanbul-lib-report: "npm:^3.0.0" - istanbul-lib-source-maps: "npm:^4.0.0" - istanbul-reports: "npm:^3.1.3" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-worker: "npm:^29.7.0" - slash: "npm:^3.0.0" - string-length: "npm:^4.0.1" - strip-ansi: "npm:^6.0.0" - v8-to-istanbul: "npm:^9.0.1" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 10/a17d1644b26dea14445cedd45567f4ba7834f980be2ef74447204e14238f121b50d8b858fde648083d2cd8f305f81ba434ba49e37a5f4237a6f2a61180cc73dc - languageName: node - linkType: hard - "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -2691,41 +2595,6 @@ __metadata: languageName: node linkType: hard -"@jest/source-map@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/source-map@npm:29.6.3" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.18" - callsites: "npm:^3.0.0" - graceful-fs: "npm:^4.2.9" - checksum: 10/bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb - languageName: node - linkType: hard - -"@jest/test-result@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/test-result@npm:29.7.0" - dependencies: - "@jest/console": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - collect-v8-coverage: "npm:^1.0.0" - checksum: 10/c073ab7dfe3c562bff2b8fee6cc724ccc20aa96bcd8ab48ccb2aa309b4c0c1923a9e703cea386bd6ae9b71133e92810475bb9c7c22328fc63f797ad3324ed189 - languageName: node - linkType: hard - -"@jest/test-sequencer@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/test-sequencer@npm:29.7.0" - dependencies: - "@jest/test-result": "npm:^29.7.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - slash: "npm:^3.0.0" - checksum: 10/4420c26a0baa7035c5419b0892ff8ffe9a41b1583ec54a10db3037cd46a7e29dd3d7202f8aa9d376e9e53be5f8b1bc0d16e1de6880a6d319b033b01dc4c8f639 - languageName: node - linkType: hard - "@jest/transform@npm:^29.7.0": version: 29.7.0 resolution: "@jest/transform@npm:29.7.0" @@ -2829,7 +2698,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.9": +"@jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.9": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -5121,24 +4990,6 @@ __metadata: languageName: node linkType: hard -"@sinonjs/commons@npm:^3.0.0": - version: 3.0.1 - resolution: "@sinonjs/commons@npm:3.0.1" - dependencies: - type-detect: "npm:4.0.8" - checksum: 10/a0af217ba7044426c78df52c23cedede6daf377586f3ac58857c565769358ab1f44ebf95ba04bbe38814fba6e316ca6f02870a009328294fc2c555d0f85a7117 - languageName: node - linkType: hard - -"@sinonjs/fake-timers@npm:^10.0.2": - version: 10.3.0 - resolution: "@sinonjs/fake-timers@npm:10.3.0" - dependencies: - "@sinonjs/commons": "npm:^3.0.0" - checksum: 10/78155c7bd866a85df85e22028e046b8d46cf3e840f72260954f5e3ed5bd97d66c595524305a6841ffb3f681a08f6e5cef572a2cce5442a8a232dc29fb409b83e - languageName: node - linkType: hard - "@surma/rollup-plugin-off-main-thread@npm:^2.2.3": version: 2.2.3 resolution: "@surma/rollup-plugin-off-main-thread@npm:2.2.3" @@ -5455,19 +5306,6 @@ __metadata: languageName: node linkType: hard -"@swc/jest@npm:^0.2.36": - version: 0.2.36 - resolution: "@swc/jest@npm:0.2.36" - dependencies: - "@jest/create-cache-key-function": "npm:^29.7.0" - "@swc/counter": "npm:^0.1.3" - jsonc-parser: "npm:^3.2.0" - peerDependencies: - "@swc/core": "*" - checksum: 10/39c5699646f0e90400af106156e5604069e8a7d8216f2421e171837b086839176c16f69925ce6a5c4c48182005eed649bdf9664023708e169aa48814feecc0d8 - languageName: node - linkType: hard - "@swc/plugin-react-remove-properties@npm:^1.5.121": version: 1.5.121 resolution: "@swc/plugin-react-remove-properties@npm:1.5.121" @@ -5605,7 +5443,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7, @types/babel__core@npm:^7.1.14": +"@types/babel__core@npm:^7": version: 7.20.5 resolution: "@types/babel__core@npm:7.20.5" dependencies: @@ -5637,7 +5475,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": +"@types/babel__traverse@npm:*": version: 7.18.5 resolution: "@types/babel__traverse@npm:7.18.5" dependencies: @@ -5962,7 +5800,7 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0": version: 2.0.4 resolution: "@types/istanbul-lib-coverage@npm:2.0.4" checksum: 10/a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 @@ -5987,16 +5825,6 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:^29.5.14": - version: 29.5.14 - resolution: "@types/jest@npm:29.5.14" - dependencies: - expect: "npm:^29.0.0" - pretty-format: "npm:^29.0.0" - checksum: 10/59ec7a9c4688aae8ee529316c43853468b6034f453d08a2e1064b281af9c81234cec986be796288f1bbb29efe943bc950e70c8fa8faae1e460d50e3cf9760f9b - languageName: node - linkType: hard - "@types/jlongster__sql.js@npm:@types/sql.js@latest": version: 1.4.4 resolution: "@types/sql.js@npm:1.4.4" @@ -6007,17 +5835,6 @@ __metadata: languageName: node linkType: hard -"@types/jsdom@npm:^20.0.0": - version: 20.0.1 - resolution: "@types/jsdom@npm:20.0.1" - dependencies: - "@types/node": "npm:*" - "@types/tough-cookie": "npm:*" - parse5: "npm:^7.0.0" - checksum: 10/15fbb9a0bfb4a5845cf6e795f2fd12400aacfca53b8c7e5bca4a3e5e8fa8629f676327964d64258aefb127d2d8a2be86dad46359efbfca0e8c9c2b790e7f8a88 - languageName: node - linkType: hard - "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" @@ -6284,13 +6101,6 @@ __metadata: languageName: node linkType: hard -"@types/tough-cookie@npm:*": - version: 4.0.5 - resolution: "@types/tough-cookie@npm:4.0.5" - checksum: 10/01fd82efc8202670865928629697b62fe9bf0c0dcbc5b1c115831caeb073a2c0abb871ff393d7df1ae94ea41e256cb87d2a5a91fd03cdb1b0b4384e08d4ee482 - languageName: node - linkType: hard - "@types/triple-beam@npm:^1.3.2": version: 1.3.5 resolution: "@types/triple-beam@npm:1.3.5" @@ -6935,13 +6745,6 @@ __metadata: languageName: node linkType: hard -"abab@npm:^2.0.6": - version: 2.0.6 - resolution: "abab@npm:2.0.6" - checksum: 10/ebe95d7278999e605823fc515a3b05d689bc72e7f825536e73c95ebf621636874c6de1b749b3c4bf866b96ccd4b3a2802efa313d0e45ad51a413c8c73247db20 - languageName: node - linkType: hard - "abbrev@npm:1, abbrev@npm:^1.0.0": version: 1.1.1 resolution: "abbrev@npm:1.1.1" @@ -6968,16 +6771,6 @@ __metadata: languageName: node linkType: hard -"acorn-globals@npm:^7.0.0": - version: 7.0.1 - resolution: "acorn-globals@npm:7.0.1" - dependencies: - acorn: "npm:^8.1.0" - acorn-walk: "npm:^8.0.2" - checksum: 10/2a2998a547af6d0db5f0cdb90acaa7c3cbca6709010e02121fb8b8617c0fbd8bab0b869579903fde358ac78454356a14fadcc1a672ecb97b04b1c2ccba955ce8 - languageName: node - linkType: hard - "acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" @@ -6987,7 +6780,7 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": +"acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.1.1": version: 8.3.4 resolution: "acorn-walk@npm:8.3.4" dependencies: @@ -6996,7 +6789,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.4.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2": +"acorn@npm:^8.0.4, acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.4.1, acorn@npm:^8.8.2": version: 8.14.1 resolution: "acorn@npm:8.14.1" bin: @@ -7053,6 +6846,13 @@ __metadata: languageName: node linkType: hard +"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": + version: 7.1.3 + resolution: "agent-base@npm:7.1.3" + checksum: 10/3db6d8d4651f2aa1a9e4af35b96ab11a7607af57a24f3bc721a387eaa3b5f674e901f0a648b0caefd48f3fd117c7761b79a3b55854e2aebaa96c3f32cf76af84 + languageName: node + linkType: hard + "agentkeepalive@npm:^4.2.1": version: 4.3.0 resolution: "agentkeepalive@npm:4.3.0" @@ -7132,15 +6932,6 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^4.2.1": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: "npm:^0.21.3" - checksum: 10/8661034456193ffeda0c15c8c564a9636b0c04094b7f78bd01517929c17c504090a60f7a75f949f5af91289c264d3e1001d91492c1bd58efc8e100500ce04de2 - languageName: node - linkType: hard - "ansi-escapes@npm:^7.0.0": version: 7.0.0 resolution: "ansi-escapes@npm:7.0.0" @@ -7561,23 +7352,6 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.7.0": - version: 29.7.0 - resolution: "babel-jest@npm:29.7.0" - dependencies: - "@jest/transform": "npm:^29.7.0" - "@types/babel__core": "npm:^7.1.14" - babel-plugin-istanbul: "npm:^6.1.1" - babel-preset-jest: "npm:^29.6.3" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - slash: "npm:^3.0.0" - peerDependencies: - "@babel/core": ^7.8.0 - checksum: 10/8a0953bd813b3a8926008f7351611055548869e9a53dd36d6e7e96679001f71e65fd7dbfe253265c3ba6a4e630dc7c845cf3e78b17d758ef1880313ce8fba258 - languageName: node - linkType: hard - "babel-plugin-istanbul@npm:^6.1.1": version: 6.1.1 resolution: "babel-plugin-istanbul@npm:6.1.1" @@ -7591,18 +7365,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^29.6.3": - version: 29.6.3 - resolution: "babel-plugin-jest-hoist@npm:29.6.3" - dependencies: - "@babel/template": "npm:^7.3.3" - "@babel/types": "npm:^7.3.3" - "@types/babel__core": "npm:^7.1.14" - "@types/babel__traverse": "npm:^7.0.6" - checksum: 10/9bfa86ec4170bd805ab8ca5001ae50d8afcb30554d236ba4a7ffc156c1a92452e220e4acbd98daefc12bf0216fccd092d0a2efed49e7e384ec59e0597a926d65 - languageName: node - linkType: hard - "babel-plugin-macros@npm:^3.1.0": version: 3.1.0 resolution: "babel-plugin-macros@npm:3.1.0" @@ -7672,18 +7434,6 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^29.6.3": - version: 29.6.3 - resolution: "babel-preset-jest@npm:29.6.3" - dependencies: - babel-plugin-jest-hoist: "npm:^29.6.3" - babel-preset-current-node-syntax: "npm:^1.0.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb - languageName: node - linkType: hard - "bail@npm:^2.0.0": version: 2.0.2 resolution: "bail@npm:2.0.2" @@ -8276,13 +8026,6 @@ __metadata: languageName: node linkType: hard -"char-regex@npm:^1.0.2": - version: 1.0.2 - resolution: "char-regex@npm:1.0.2" - checksum: 10/1ec5c2906adb9f84e7f6732a40baef05d7c85401b82ffcbc44b85fbd0f7a2b0c2a96f2eb9cf55cae3235dc12d4023003b88f09bcae8be9ae894f52ed746f4d48 - languageName: node - linkType: hard - "character-entities-html4@npm:^2.0.0": version: 2.1.0 resolution: "character-entities-html4@npm:2.1.0" @@ -8412,13 +8155,6 @@ __metadata: languageName: node linkType: hard -"cjs-module-lexer@npm:^1.0.0": - version: 1.2.2 - resolution: "cjs-module-lexer@npm:1.2.2" - checksum: 10/f80f84bfdcc53379cc18e25ea3c0cdb4595c142b8e28df304f5c88f38202e1bccf13e845401593656781f79fb43273e1d402d6187d0eeee8dca5ddecee1dcad4 - languageName: node - linkType: hard - "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" @@ -8555,20 +8291,6 @@ __metadata: languageName: node linkType: hard -"co@npm:^4.6.0": - version: 4.6.0 - resolution: "co@npm:4.6.0" - checksum: 10/a5d9f37091c70398a269e625cedff5622f200ed0aa0cff22ee7b55ed74a123834b58711776eb0f1dc58eb6ebbc1185aa7567b57bd5979a948c6e4f85073e2c05 - languageName: node - linkType: hard - -"collect-v8-coverage@npm:^1.0.0": - version: 1.0.1 - resolution: "collect-v8-coverage@npm:1.0.1" - checksum: 10/85b26945ab9b8e15077f877a4a5bc91d836480c600bac4cd0a0e8be8515583fdfc393ccff049ff3e9f46cac39e5295af049209f3c484f30a028056cc5dd1fe8a - languageName: node - linkType: hard - "color-convert@npm:^1.9.0, color-convert@npm:^1.9.3": version: 1.9.3 resolution: "color-convert@npm:1.9.3" @@ -8941,23 +8663,6 @@ __metadata: languageName: node linkType: hard -"create-jest@npm:^29.7.0": - version: 29.7.0 - resolution: "create-jest@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - chalk: "npm:^4.0.0" - exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.9" - jest-config: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - prompts: "npm:^2.0.1" - bin: - create-jest: bin/create-jest.js - checksum: 10/847b4764451672b4174be4d5c6d7d63442ec3aa5f3de52af924e4d996d87d7801c18e125504f25232fc75840f6625b3ac85860fac6ce799b5efae7bdcaf4a2b7 - languageName: node - linkType: hard - "create-require@npm:^1.1.0": version: 1.1.1 resolution: "create-require@npm:1.1.1" @@ -9075,26 +8780,13 @@ __metadata: languageName: node linkType: hard -"cssom@npm:^0.5.0": - version: 0.5.0 - resolution: "cssom@npm:0.5.0" - checksum: 10/b502a315b1ce020a692036cc38cb36afa44157219b80deadfa040ab800aa9321fcfbecf02fd2e6ec87db169715e27978b4ab3701f916461e9cf7808899f23b54 - languageName: node - linkType: hard - -"cssom@npm:~0.3.6": - version: 0.3.8 - resolution: "cssom@npm:0.3.8" - checksum: 10/49eacc88077555e419646c0ea84ddc73c97e3a346ad7cb95e22f9413a9722d8964b91d781ce21d378bd5ae058af9a745402383fa4e35e9cdfd19654b63f892a9 - languageName: node - linkType: hard - -"cssstyle@npm:^2.3.0": - version: 2.3.0 - resolution: "cssstyle@npm:2.3.0" +"cssstyle@npm:^4.2.1": + version: 4.3.1 + resolution: "cssstyle@npm:4.3.1" dependencies: - cssom: "npm:~0.3.6" - checksum: 10/46f7f05a153446c4018b0454ee1464b50f606cb1803c90d203524834b7438eb52f3b173ba0891c618f380ced34ee12020675dc0052a7f1be755fe4ebc27ee977 + "@asamuzakjp/css-color": "npm:^3.1.2" + rrweb-cssom: "npm:^0.8.0" + checksum: 10/e74b2636067c3fd912a16d8d979a7975e5a5c8b3ce9386298d75a82478bb6c8bc03b261b92575348f471b3eb7534d2594a0c4b47d6fc8c03605b2628dce992ff languageName: node linkType: hard @@ -9233,14 +8925,13 @@ __metadata: languageName: node linkType: hard -"data-urls@npm:^3.0.2": - version: 3.0.2 - resolution: "data-urls@npm:3.0.2" +"data-urls@npm:^5.0.0": + version: 5.0.0 + resolution: "data-urls@npm:5.0.0" dependencies: - abab: "npm:^2.0.6" - whatwg-mimetype: "npm:^3.0.0" - whatwg-url: "npm:^11.0.0" - checksum: 10/033fc3dd0fba6d24bc9a024ddcf9923691dd24f90a3d26f6545d6a2f71ec6956f93462f2cdf2183cc46f10dc01ed3bcb36731a8208456eb1a08147e571fe2a76 + whatwg-mimetype: "npm:^4.0.0" + whatwg-url: "npm:^14.0.0" + checksum: 10/5c40568c31b02641a70204ff233bc4e42d33717485d074244a98661e5f2a1e80e38fe05a5755dfaf2ee549f2ab509d6a3af2a85f4b2ad2c984e5d176695eaf46 languageName: node linkType: hard @@ -9344,7 +9035,7 @@ __metadata: languageName: node linkType: hard -"decimal.js@npm:^10.4.2": +"decimal.js@npm:^10.5.0": version: 10.5.0 resolution: "decimal.js@npm:10.5.0" checksum: 10/714d49cf2f2207b268221795ede330e51452b7c451a0c02a770837d2d4faed47d603a729c2aa1d952eb6c4102d999e91c9b952c1aa016db3c5cba9fc8bf4cda2 @@ -9441,18 +9132,6 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^1.0.0": - version: 1.5.3 - resolution: "dedent@npm:1.5.3" - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - checksum: 10/e5277f6268f288649503125b781a7b7a2c9b22d011139688c0b3619fe40121e600eb1f077c891938d4b2428bdb6326cc3c77a763e4b1cc681bd9666ab1bad2a1 - languageName: node - linkType: hard - "deep-eql@npm:^5.0.1": version: 5.0.2 resolution: "deep-eql@npm:5.0.2" @@ -9622,13 +9301,6 @@ __metadata: languageName: node linkType: hard -"detect-newline@npm:^3.0.0": - version: 3.1.0 - resolution: "detect-newline@npm:3.1.0" - checksum: 10/ae6cd429c41ad01b164c59ea36f264a2c479598e61cba7c99da24175a7ab80ddf066420f2bec9a1c57a6bead411b4655ff15ad7d281c000a89791f48cbe939e7 - languageName: node - linkType: hard - "detect-node@npm:^2.0.4": version: 2.1.0 resolution: "detect-node@npm:2.1.0" @@ -9788,15 +9460,6 @@ __metadata: languageName: node linkType: hard -"domexception@npm:^4.0.0": - version: 4.0.0 - resolution: "domexception@npm:4.0.0" - dependencies: - webidl-conversions: "npm:^7.0.0" - checksum: 10/4ed443227d2871d76c58d852b2e93c68e0443815b2741348f20881bedee8c1ad4f9bfc5d30c7dec433cd026b57da63407c010260b1682fef4c8847e7181ea43f - languageName: node - linkType: hard - "domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": version: 5.0.3 resolution: "domhandler@npm:5.0.3" @@ -10005,13 +9668,6 @@ __metadata: languageName: node linkType: hard -"emittery@npm:^0.13.1": - version: 0.13.1 - resolution: "emittery@npm:0.13.1" - checksum: 10/fbe214171d878b924eedf1757badf58a5dce071cd1fa7f620fa841a0901a80d6da47ff05929d53163105e621ce11a71b9d8acb1148ffe1745e045145f6e69521 - languageName: node - linkType: hard - "emoji-regex@npm:^10.3.0": version: 10.3.0 resolution: "emoji-regex@npm:10.3.0" @@ -10536,24 +10192,6 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^2.0.0": - version: 2.1.0 - resolution: "escodegen@npm:2.1.0" - dependencies: - esprima: "npm:^4.0.1" - estraverse: "npm:^5.2.0" - esutils: "npm:^2.0.2" - source-map: "npm:~0.6.1" - dependenciesMeta: - source-map: - optional: true - bin: - escodegen: bin/escodegen.js - esgenerate: bin/esgenerate.js - checksum: 10/47719a65b2888b4586e3fa93769068b275961c13089e90d5d01a96a6e8e95871b1c3893576814c8fbf08a4a31a496f37e7b2c937cf231270f4d81de012832c7c - languageName: node - linkType: hard - "eslint-config-prettier@npm:^10.1.1": version: 10.1.1 resolution: "eslint-config-prettier@npm:10.1.1" @@ -10890,7 +10528,7 @@ __metadata: languageName: node linkType: hard -"esprima@npm:^4.0.0, esprima@npm:^4.0.1": +"esprima@npm:^4.0.0": version: 4.0.1 resolution: "esprima@npm:4.0.1" bin: @@ -11029,23 +10667,6 @@ __metadata: languageName: node linkType: hard -"execa@npm:^5.0.0": - version: 5.1.1 - resolution: "execa@npm:5.1.1" - dependencies: - cross-spawn: "npm:^7.0.3" - get-stream: "npm:^6.0.0" - human-signals: "npm:^2.1.0" - is-stream: "npm:^2.0.0" - merge-stream: "npm:^2.0.0" - npm-run-path: "npm:^4.0.1" - onetime: "npm:^5.1.2" - signal-exit: "npm:^3.0.3" - strip-final-newline: "npm:^2.0.0" - checksum: 10/8ada91f2d70f7dff702c861c2c64f21dfdc1525628f3c0454fd6f02fce65f7b958616cbd2b99ca7fa4d474e461a3d363824e91b3eb881705231abbf387470597 - languageName: node - linkType: hard - "execa@npm:^8.0.1": version: 8.0.1 resolution: "execa@npm:8.0.1" @@ -11070,13 +10691,6 @@ __metadata: languageName: node linkType: hard -"exit@npm:^0.1.2": - version: 0.1.2 - resolution: "exit@npm:0.1.2" - checksum: 10/387555050c5b3c10e7a9e8df5f43194e95d7737c74532c409910e585d5554eaff34960c166643f5e23d042196529daad059c292dcf1fb61b8ca878d3677f4b87 - languageName: node - linkType: hard - "expand-template@npm:^2.0.3": version: 2.0.3 resolution: "expand-template@npm:2.0.3" @@ -11091,7 +10705,7 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0, expect@npm:^29.7.0": +"expect@npm:^29.7.0": version: 29.7.0 resolution: "expect@npm:29.7.0" dependencies: @@ -11928,13 +11542,6 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^6.0.0": - version: 6.0.1 - resolution: "get-stream@npm:6.0.1" - checksum: 10/781266d29725f35c59f1d214aedc92b0ae855800a980800e2923b3fbc4e56b3cb6e462c42e09a1cf1a00c64e056a78fa407cbe06c7c92b7e5cd49b4b85c2a497 - languageName: node - linkType: hard - "get-stream@npm:^8.0.1": version: 8.0.1 resolution: "get-stream@npm:8.0.1" @@ -12418,12 +12025,12 @@ __metadata: languageName: node linkType: hard -"html-encoding-sniffer@npm:^3.0.0": - version: 3.0.0 - resolution: "html-encoding-sniffer@npm:3.0.0" +"html-encoding-sniffer@npm:^4.0.0": + version: 4.0.0 + resolution: "html-encoding-sniffer@npm:4.0.0" dependencies: - whatwg-encoding: "npm:^2.0.0" - checksum: 10/707a812ec2acaf8bb5614c8618dc81e2fb6b4399d03e95ff18b65679989a072f4e919b9bef472039301a1bbfba64063ba4c79ea6e851c653ac9db80dbefe8fe5 + whatwg-encoding: "npm:^3.1.1" + checksum: 10/e86efd493293a5671b8239bd099d42128433bb3c7b0fdc7819282ef8e118a21f5dead0ad6f358e024a4e5c84f17ebb7a9b36075220fac0a6222b207248bede6f languageName: node linkType: hard @@ -12500,6 +12107,16 @@ __metadata: languageName: node linkType: hard +"http-proxy-agent@npm:^7.0.2": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10/d062acfa0cb82beeb558f1043c6ba770ea892b5fb7b28654dbc70ea2aeea55226dd34c02a294f6c1ca179a5aa483c4ea641846821b182edbd9cc5d89b54c6848 + languageName: node + linkType: hard + "http-proxy-middleware@npm:^3.0.5": version: 3.0.5 resolution: "http-proxy-middleware@npm:3.0.5" @@ -12545,6 +12162,16 @@ __metadata: languageName: node linkType: hard +"https-proxy-agent@npm:^7.0.6": + version: 7.0.6 + resolution: "https-proxy-agent@npm:7.0.6" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:4" + checksum: 10/784b628cbd55b25542a9d85033bdfd03d4eda630fb8b3c9477959367f3be95dc476ed2ecbb9836c359c7c698027fc7b45723a302324433590f45d6c1706e8c13 + languageName: node + linkType: hard + "human-signals@npm:^1.1.1": version: 1.1.1 resolution: "human-signals@npm:1.1.1" @@ -12552,13 +12179,6 @@ __metadata: languageName: node linkType: hard -"human-signals@npm:^2.1.0": - version: 2.1.0 - resolution: "human-signals@npm:2.1.0" - checksum: 10/df59be9e0af479036798a881d1f136c4a29e0b518d4abb863afbd11bf30efa3eeb1d0425fc65942dcc05ab3bf40205ea436b0ff389f2cd20b75b8643d539bf86 - languageName: node - linkType: hard - "human-signals@npm:^5.0.0": version: 5.0.0 resolution: "human-signals@npm:5.0.0" @@ -13067,13 +12687,6 @@ __metadata: languageName: node linkType: hard -"is-generator-fn@npm:^2.0.0": - version: 2.1.0 - resolution: "is-generator-fn@npm:2.1.0" - checksum: 10/a6ad5492cf9d1746f73b6744e0c43c0020510b59d56ddcb78a91cbc173f09b5e6beff53d75c9c5a29feb618bfef2bf458e025ecf3a57ad2268e2fb2569f56215 - languageName: node - linkType: hard - "is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": version: 1.0.10 resolution: "is-generator-function@npm:1.0.10" @@ -13471,19 +13084,6 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-instrument@npm:^6.0.0": - version: 6.0.3 - resolution: "istanbul-lib-instrument@npm:6.0.3" - dependencies: - "@babel/core": "npm:^7.23.9" - "@babel/parser": "npm:^7.23.9" - "@istanbuljs/schema": "npm:^0.1.3" - istanbul-lib-coverage: "npm:^3.2.0" - semver: "npm:^7.5.4" - checksum: 10/aa5271c0008dfa71b6ecc9ba1e801bf77b49dc05524e8c30d58aaf5b9505e0cd12f25f93165464d4266a518c5c75284ecb598fbd89fec081ae77d2c9d3327695 - languageName: node - linkType: hard - "istanbul-lib-report@npm:^3.0.0": version: 3.0.0 resolution: "istanbul-lib-report@npm:3.0.0" @@ -13506,17 +13106,6 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-source-maps@npm:^4.0.0": - version: 4.0.1 - resolution: "istanbul-lib-source-maps@npm:4.0.1" - dependencies: - debug: "npm:^4.1.1" - istanbul-lib-coverage: "npm:^3.0.0" - source-map: "npm:^0.6.1" - checksum: 10/5526983462799aced011d776af166e350191b816821ea7bcf71cab3e5272657b062c47dc30697a22a43656e3ced78893a42de677f9ccf276a28c913190953b82 - languageName: node - linkType: hard - "istanbul-lib-source-maps@npm:^5.0.6": version: 5.0.6 resolution: "istanbul-lib-source-maps@npm:5.0.6" @@ -13528,16 +13117,6 @@ __metadata: languageName: node linkType: hard -"istanbul-reports@npm:^3.1.3": - version: 3.1.5 - resolution: "istanbul-reports@npm:3.1.5" - dependencies: - html-escaper: "npm:^2.0.0" - istanbul-lib-report: "npm:^3.0.0" - checksum: 10/1fc20a133f6dbd846e7bf3dc6d85edf2b3c047c47142cd796c38717aef976195d2c0fb0399dd609c3ffac2ca43244dc15ce4ac34064d21e2d34d387df747dafb - languageName: node - linkType: hard - "istanbul-reports@npm:^3.1.7": version: 3.1.7 resolution: "istanbul-reports@npm:3.1.7" @@ -13612,109 +13191,6 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-changed-files@npm:29.7.0" - dependencies: - execa: "npm:^5.0.0" - jest-util: "npm:^29.7.0" - p-limit: "npm:^3.1.0" - checksum: 10/3d93742e56b1a73a145d55b66e96711fbf87ef89b96c2fab7cfdfba8ec06612591a982111ca2b712bb853dbc16831ec8b43585a2a96b83862d6767de59cbf83d - languageName: node - linkType: hard - -"jest-circus@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-circus@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/expect": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - co: "npm:^4.6.0" - dedent: "npm:^1.0.0" - is-generator-fn: "npm:^2.0.0" - jest-each: "npm:^29.7.0" - jest-matcher-utils: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-runtime: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - p-limit: "npm:^3.1.0" - pretty-format: "npm:^29.7.0" - pure-rand: "npm:^6.0.0" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.3" - checksum: 10/716a8e3f40572fd0213bcfc1da90274bf30d856e5133af58089a6ce45089b63f4d679bd44e6be9d320e8390483ebc3ae9921981993986d21639d9019b523123d - languageName: node - linkType: hard - -"jest-cli@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-cli@npm:29.7.0" - dependencies: - "@jest/core": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - chalk: "npm:^4.0.0" - create-jest: "npm:^29.7.0" - exit: "npm:^0.1.2" - import-local: "npm:^3.0.2" - jest-config: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - yargs: "npm:^17.3.1" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 10/6cc62b34d002c034203065a31e5e9a19e7c76d9e8ef447a6f70f759c0714cb212c6245f75e270ba458620f9c7b26063cd8cf6cd1f7e3afd659a7cc08add17307 - languageName: node - linkType: hard - -"jest-config@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-config@npm:29.7.0" - dependencies: - "@babel/core": "npm:^7.11.6" - "@jest/test-sequencer": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - babel-jest: "npm:^29.7.0" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - deepmerge: "npm:^4.2.2" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.9" - jest-circus: "npm:^29.7.0" - jest-environment-node: "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - jest-regex-util: "npm:^29.6.3" - jest-resolve: "npm:^29.7.0" - jest-runner: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - parse-json: "npm:^5.2.0" - pretty-format: "npm:^29.7.0" - slash: "npm:^3.0.0" - strip-json-comments: "npm:^3.1.1" - peerDependencies: - "@types/node": "*" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - ts-node: - optional: true - checksum: 10/6bdf570e9592e7d7dd5124fc0e21f5fe92bd15033513632431b211797e3ab57eaa312f83cc6481b3094b72324e369e876f163579d60016677c117ec4853cf02b - languageName: node - linkType: hard - "jest-diff@npm:^29.0.0, jest-diff@npm:^29.7.0": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" @@ -13727,63 +13203,6 @@ __metadata: languageName: node linkType: hard -"jest-docblock@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-docblock@npm:29.7.0" - dependencies: - detect-newline: "npm:^3.0.0" - checksum: 10/8d48818055bc96c9e4ec2e217a5a375623c0d0bfae8d22c26e011074940c202aa2534a3362294c81d981046885c05d304376afba9f2874143025981148f3e96d - languageName: node - linkType: hard - -"jest-each@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-each@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - chalk: "npm:^4.0.0" - jest-get-type: "npm:^29.6.3" - jest-util: "npm:^29.7.0" - pretty-format: "npm:^29.7.0" - checksum: 10/bd1a077654bdaa013b590deb5f7e7ade68f2e3289180a8c8f53bc8a49f3b40740c0ec2d3a3c1aee906f682775be2bebbac37491d80b634d15276b0aa0f2e3fda - languageName: node - linkType: hard - -"jest-environment-jsdom@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-environment-jsdom@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/fake-timers": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/jsdom": "npm:^20.0.0" - "@types/node": "npm:*" - jest-mock: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jsdom: "npm:^20.0.0" - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - checksum: 10/23bbfc9bca914baef4b654f7983175a4d49b0f515a5094ebcb8f819f28ec186f53c0ba06af1855eac04bab1457f4ea79dae05f70052cf899863e8096daa6e0f5 - languageName: node - linkType: hard - -"jest-environment-node@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-environment-node@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/fake-timers": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - jest-mock: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - checksum: 10/9cf7045adf2307cc93aed2f8488942e39388bff47ec1df149a997c6f714bfc66b2056768973770d3f8b1bf47396c19aa564877eb10ec978b952c6018ed1bd637 - languageName: node - linkType: hard - "jest-get-type@npm:^29.6.3": version: 29.6.3 resolution: "jest-get-type@npm:29.6.3" @@ -13814,16 +13233,6 @@ __metadata: languageName: node linkType: hard -"jest-leak-detector@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-leak-detector@npm:29.7.0" - dependencies: - jest-get-type: "npm:^29.6.3" - pretty-format: "npm:^29.7.0" - checksum: 10/e3950e3ddd71e1d0c22924c51a300a1c2db6cf69ec1e51f95ccf424bcc070f78664813bef7aed4b16b96dfbdeea53fe358f8aeaaea84346ae15c3735758f1605 - languageName: node - linkType: hard - "jest-matcher-utils@npm:^29.7.0": version: 29.7.0 resolution: "jest-matcher-utils@npm:29.7.0" @@ -13853,29 +13262,6 @@ __metadata: languageName: node linkType: hard -"jest-mock@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-mock@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - jest-util: "npm:^29.7.0" - checksum: 10/ae51d1b4f898724be5e0e52b2268a68fcd876d9b20633c864a6dd6b1994cbc48d62402b0f40f3a1b669b30ebd648821f086c26c08ffde192ced951ff4670d51c - languageName: node - linkType: hard - -"jest-pnp-resolver@npm:^1.2.2": - version: 1.2.3 - resolution: "jest-pnp-resolver@npm:1.2.3" - peerDependencies: - jest-resolve: "*" - peerDependenciesMeta: - jest-resolve: - optional: true - checksum: 10/db1a8ab2cb97ca19c01b1cfa9a9c8c69a143fde833c14df1fab0766f411b1148ff0df878adea09007ac6a2085ec116ba9a996a6ad104b1e58c20adbf88eed9b2 - languageName: node - linkType: hard - "jest-regex-util@npm:^29.6.3": version: 29.6.3 resolution: "jest-regex-util@npm:29.6.3" @@ -13883,93 +13269,7 @@ __metadata: languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-resolve-dependencies@npm:29.7.0" - dependencies: - jest-regex-util: "npm:^29.6.3" - jest-snapshot: "npm:^29.7.0" - checksum: 10/1e206f94a660d81e977bcfb1baae6450cb4a81c92e06fad376cc5ea16b8e8c6ea78c383f39e95591a9eb7f925b6a1021086c38941aa7c1b8a6a813c2f6e93675 - languageName: node - linkType: hard - -"jest-resolve@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-resolve@npm:29.7.0" - dependencies: - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - jest-pnp-resolver: "npm:^1.2.2" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - resolve: "npm:^1.20.0" - resolve.exports: "npm:^2.0.0" - slash: "npm:^3.0.0" - checksum: 10/faa466fd9bc69ea6c37a545a7c6e808e073c66f46ab7d3d8a6ef084f8708f201b85d5fe1799789578b8b47fa1de47b9ee47b414d1863bc117a49e032ba77b7c7 - languageName: node - linkType: hard - -"jest-runner@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-runner@npm:29.7.0" - dependencies: - "@jest/console": "npm:^29.7.0" - "@jest/environment": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - emittery: "npm:^0.13.1" - graceful-fs: "npm:^4.2.9" - jest-docblock: "npm:^29.7.0" - jest-environment-node: "npm:^29.7.0" - jest-haste-map: "npm:^29.7.0" - jest-leak-detector: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-resolve: "npm:^29.7.0" - jest-runtime: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-watcher: "npm:^29.7.0" - jest-worker: "npm:^29.7.0" - p-limit: "npm:^3.1.0" - source-map-support: "npm:0.5.13" - checksum: 10/9d8748a494bd90f5c82acea99be9e99f21358263ce6feae44d3f1b0cd90991b5df5d18d607e73c07be95861ee86d1cbab2a3fc6ca4b21805f07ac29d47c1da1e - languageName: node - linkType: hard - -"jest-runtime@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-runtime@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/fake-timers": "npm:^29.7.0" - "@jest/globals": "npm:^29.7.0" - "@jest/source-map": "npm:^29.6.3" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - cjs-module-lexer: "npm:^1.0.0" - collect-v8-coverage: "npm:^1.0.0" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-mock: "npm:^29.7.0" - jest-regex-util: "npm:^29.6.3" - jest-resolve: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - slash: "npm:^3.0.0" - strip-bom: "npm:^4.0.0" - checksum: 10/59eb58eb7e150e0834a2d0c0d94f2a0b963ae7182cfa6c63f2b49b9c6ef794e5193ef1634e01db41420c36a94cefc512cdd67a055cd3e6fa2f41eaf0f82f5a20 - languageName: node - linkType: hard - -"jest-snapshot@npm:^29.0.0, jest-snapshot@npm:^29.7.0": +"jest-snapshot@npm:^29.0.0": version: 29.7.0 resolution: "jest-snapshot@npm:29.7.0" dependencies: @@ -14011,36 +13311,6 @@ __metadata: languageName: node linkType: hard -"jest-validate@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-validate@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - camelcase: "npm:^6.2.0" - chalk: "npm:^4.0.0" - jest-get-type: "npm:^29.6.3" - leven: "npm:^3.1.0" - pretty-format: "npm:^29.7.0" - checksum: 10/8ee1163666d8eaa16d90a989edba2b4a3c8ab0ffaa95ad91b08ca42b015bfb70e164b247a5b17f9de32d096987cada63ed8491ab82761bfb9a28bc34b27ae161 - languageName: node - linkType: hard - -"jest-watcher@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-watcher@npm:29.7.0" - dependencies: - "@jest/test-result": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.0.0" - emittery: "npm:^0.13.1" - jest-util: "npm:^29.7.0" - string-length: "npm:^4.0.1" - checksum: 10/4f616e0345676631a7034b1d94971aaa719f0cd4a6041be2aa299be437ea047afd4fe05c48873b7963f5687a2f6c7cbf51244be8b14e313b97bfe32b1e127e55 - languageName: node - linkType: hard - "jest-worker@npm:^27.4.5": version: 27.5.1 resolution: "jest-worker@npm:27.5.1" @@ -14064,25 +13334,6 @@ __metadata: languageName: node linkType: hard -"jest@npm:^29.7.0": - version: 29.7.0 - resolution: "jest@npm:29.7.0" - dependencies: - "@jest/core": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - import-local: "npm:^3.0.2" - jest-cli: "npm:^29.7.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: 10/97023d78446098c586faaa467fbf2c6b07ff06e2c85a19e3926adb5b0effe9ac60c4913ae03e2719f9c01ae8ffd8d92f6b262cedb9555ceeb5d19263d8c6362a - languageName: node - linkType: hard - "joi@npm:^17.4.0": version: 17.9.2 resolution: "joi@npm:17.9.2" @@ -14133,42 +13384,36 @@ __metadata: languageName: node linkType: hard -"jsdom@npm:^20.0.0": - version: 20.0.3 - resolution: "jsdom@npm:20.0.3" +"jsdom@npm:^26.1.0": + version: 26.1.0 + resolution: "jsdom@npm:26.1.0" dependencies: - abab: "npm:^2.0.6" - acorn: "npm:^8.8.1" - acorn-globals: "npm:^7.0.0" - cssom: "npm:^0.5.0" - cssstyle: "npm:^2.3.0" - data-urls: "npm:^3.0.2" - decimal.js: "npm:^10.4.2" - domexception: "npm:^4.0.0" - escodegen: "npm:^2.0.0" - form-data: "npm:^4.0.0" - html-encoding-sniffer: "npm:^3.0.0" - http-proxy-agent: "npm:^5.0.0" - https-proxy-agent: "npm:^5.0.1" + cssstyle: "npm:^4.2.1" + data-urls: "npm:^5.0.0" + decimal.js: "npm:^10.5.0" + html-encoding-sniffer: "npm:^4.0.0" + http-proxy-agent: "npm:^7.0.2" + https-proxy-agent: "npm:^7.0.6" is-potential-custom-element-name: "npm:^1.0.1" - nwsapi: "npm:^2.2.2" - parse5: "npm:^7.1.1" + nwsapi: "npm:^2.2.16" + parse5: "npm:^7.2.1" + rrweb-cssom: "npm:^0.8.0" saxes: "npm:^6.0.0" symbol-tree: "npm:^3.2.4" - tough-cookie: "npm:^4.1.2" - w3c-xmlserializer: "npm:^4.0.0" + tough-cookie: "npm:^5.1.1" + w3c-xmlserializer: "npm:^5.0.0" webidl-conversions: "npm:^7.0.0" - whatwg-encoding: "npm:^2.0.0" - whatwg-mimetype: "npm:^3.0.0" - whatwg-url: "npm:^11.0.0" - ws: "npm:^8.11.0" - xml-name-validator: "npm:^4.0.0" + whatwg-encoding: "npm:^3.1.1" + whatwg-mimetype: "npm:^4.0.0" + whatwg-url: "npm:^14.1.1" + ws: "npm:^8.18.0" + xml-name-validator: "npm:^5.0.0" peerDependencies: - canvas: ^2.5.0 + canvas: ^3.0.0 peerDependenciesMeta: canvas: optional: true - checksum: 10/a4cdcff5b07eed87da90b146b82936321533b5efe8124492acf7160ebd5b9cf2b3c2435683592bf1cffb479615245756efb6c173effc1906f845a86ed22af985 + checksum: 10/39d78c4889cac20826393400dce1faed1666e9244fe0c8342a8f08c315375878e6be7fcfe339a33d6ff1a083bfe9e71b16d56ecf4d9a87db2da8c795925ea8c1 languageName: node linkType: hard @@ -14266,13 +13511,6 @@ __metadata: languageName: node linkType: hard -"jsonc-parser@npm:^3.2.0": - version: 3.2.0 - resolution: "jsonc-parser@npm:3.2.0" - checksum: 10/bd68b902e5f9394f01da97921f49c5084b2dc03a0c5b4fdb2a429f8d6f292686c1bf87badaeb0a8148d024192a88f5ad2e57b2918ba43fe25cf15f3371db64d4 - languageName: node - linkType: hard - "jsonfile@npm:^4.0.0": version: 4.0.0 resolution: "jsonfile@npm:4.0.0" @@ -14709,12 +13947,8 @@ __metadata: "@rschedule/core": "npm:^1.5.0" "@rschedule/json-tools": "npm:^1.5.0" "@rschedule/standard-date-adapter": "npm:^1.5.0" - "@swc/core": "npm:^1.5.3" - "@swc/helpers": "npm:^0.5.11" - "@swc/jest": "npm:^0.2.36" "@types/adm-zip": "npm:^0.5.7" "@types/better-sqlite3": "npm:^7.6.12" - "@types/jest": "npm:^29.5.14" "@types/jlongster__sql.js": "npm:@types/sql.js@latest" "@types/node": "npm:^22.14.0" "@types/pegjs": "npm:^0.10.6" @@ -14736,8 +13970,6 @@ __metadata: fast-check: "npm:3.15.1" handlebars: "npm:^4.7.8" i18next: "npm:^23.11.5" - jest: "npm:^29.7.0" - jest-environment-jsdom: "npm:^29.7.0" jsverify: "npm:^0.8.4" lru-cache: "npm:^11.0.2" md5: "npm:^2.3.0" @@ -14760,6 +13992,8 @@ __metadata: typescript: "npm:^5.8.2" ua-parser-js: "npm:^2.0.0" uuid: "npm:^9.0.1" + vite-plugin-peggy-loader: "npm:^2.0.1" + vitest: "npm:^3.0.2" webpack: "npm:^5.94.0" webpack-bundle-analyzer: "npm:^4.10.2" webpack-cli: "npm:^5.1.4" @@ -14797,7 +14031,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.2.0": +"lru-cache@npm:^10.2.0, lru-cache@npm:^10.4.3": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" checksum: 10/e6e90267360476720fa8e83cc168aa2bf0311f3f2eea20a6ba78b90a885ae72071d9db132f40fda4129c803e7dcec3a6b6a6fbb44ca90b081630b810b5d6a41a @@ -16317,7 +15551,7 @@ __metadata: languageName: node linkType: hard -"npm-run-path@npm:^4.0.0, npm-run-path@npm:^4.0.1": +"npm-run-path@npm:^4.0.0": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" dependencies: @@ -16368,10 +15602,10 @@ __metadata: languageName: node linkType: hard -"nwsapi@npm:^2.2.2": - version: 2.2.18 - resolution: "nwsapi@npm:2.2.18" - checksum: 10/ce2233284abe2d5c4507089972035018f79c0a3fd00c672f7c5afad7603561c2a8e53c81bc02dcc40f4bc87414b277d932a8a96f53816ff1083abab1f5092c43 +"nwsapi@npm:^2.2.16": + version: 2.2.20 + resolution: "nwsapi@npm:2.2.20" + checksum: 10/3dbfbd64c10dfd1edaf4992a6e859af306ec22846b86da2b31e69a743a8b4d7ac3b6ca767dbf248dabea8652905e402d6986f8ba491852e8568e334ec22e1882 languageName: node linkType: hard @@ -16514,7 +15748,7 @@ __metadata: languageName: node linkType: hard -"onetime@npm:^5.1.0, onetime@npm:^5.1.2": +"onetime@npm:^5.1.0": version: 5.1.2 resolution: "onetime@npm:5.1.2" dependencies: @@ -16654,7 +15888,7 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": +"p-limit@npm:^3.0.2": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: @@ -16770,7 +16004,7 @@ __metadata: languageName: node linkType: hard -"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": +"parse-json@npm:^5.0.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" dependencies: @@ -16801,7 +16035,7 @@ __metadata: languageName: node linkType: hard -"parse5@npm:^7.0.0, parse5@npm:^7.1.1, parse5@npm:^7.1.2": +"parse5@npm:^7.0.0, parse5@npm:^7.1.2, parse5@npm:^7.2.1": version: 7.2.1 resolution: "parse5@npm:7.2.1" dependencies: @@ -17259,7 +16493,7 @@ __metadata: languageName: node linkType: hard -"prompts@npm:^2.0.1, prompts@npm:^2.4.2": +"prompts@npm:^2.4.2": version: 2.4.2 resolution: "prompts@npm:2.4.2" dependencies: @@ -17327,15 +16561,6 @@ __metadata: languageName: node linkType: hard -"psl@npm:^1.1.33": - version: 1.15.0 - resolution: "psl@npm:1.15.0" - dependencies: - punycode: "npm:^2.3.1" - checksum: 10/5e7467eb5196eb7900d156783d12907d445c0122f76c73203ce96b148a6ccf8c5450cc805887ffada38ff92d634afcf33720c24053cb01d5b6598d1c913c5caf - languageName: node - linkType: hard - "pstree.remy@npm:^1.1.8": version: 1.1.8 resolution: "pstree.remy@npm:1.1.8" @@ -17385,13 +16610,6 @@ __metadata: languageName: node linkType: hard -"querystringify@npm:^2.1.1": - version: 2.2.0 - resolution: "querystringify@npm:2.2.0" - checksum: 10/46ab16f252fd892fc29d6af60966d338cdfeea68a231e9457631ffd22d67cec1e00141e0a5236a2eb16c0d7d74175d9ec1d6f963660c6f2b1c2fc85b194c5680 - languageName: node - linkType: hard - "queue-lit@npm:^1.5.1": version: 1.5.2 resolution: "queue-lit@npm:1.5.2" @@ -18354,13 +17572,6 @@ __metadata: languageName: node linkType: hard -"resolve.exports@npm:^2.0.0": - version: 2.0.3 - resolution: "resolve.exports@npm:2.0.3" - checksum: 10/536efee0f30a10fac8604e6cdc7844dbc3f4313568d09f06db4f7ed8a5b8aeb8585966fe975083d1f2dfbc87cf5f8bc7ab65a5c23385c14acbb535ca79f8398a - languageName: node - linkType: hard - "resolve@npm:^1.10.0, resolve@npm:^1.10.1, resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4": version: 1.22.8 resolution: "resolve@npm:1.22.8" @@ -18572,6 +17783,13 @@ __metadata: languageName: node linkType: hard +"rrweb-cssom@npm:^0.8.0": + version: 0.8.0 + resolution: "rrweb-cssom@npm:0.8.0" + checksum: 10/07521ee36fb6569c17906afad1ac7ff8f099d49ade9249e190693ac36cdf27f88d9acf0cc66978935d5d0a23fca105643d7e9125b9a9d91ed9db9e02d31d7d80 + languageName: node + linkType: hard + "rspack-resolver@npm:^1.2.2": version: 1.2.2 resolution: "rspack-resolver@npm:1.2.2" @@ -19014,7 +18232,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": +"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: 10/a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 @@ -19228,16 +18446,6 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:0.5.13": - version: 0.5.13 - resolution: "source-map-support@npm:0.5.13" - dependencies: - buffer-from: "npm:^1.0.0" - source-map: "npm:^0.6.0" - checksum: 10/d1514a922ac9c7e4786037eeff6c3322f461cd25da34bb9fefb15387b3490531774e6e31d95ab6d5b84a3e139af9c3a570ccaee6b47bd7ea262691ed3a8bc34e - languageName: node - linkType: hard - "source-map-support@npm:^0.5.19, source-map-support@npm:^0.5.21, source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" @@ -19255,7 +18463,7 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": +"source-map@npm:^0.6.0, source-map@npm:^0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" checksum: 10/59ef7462f1c29d502b3057e822cdbdae0b0e565302c4dd1a95e11e793d8d9d62006cdc10e0fd99163ca33ff2071360cf50ee13f90440806e7ed57d81cba2f7ff @@ -19459,16 +18667,6 @@ __metadata: languageName: node linkType: hard -"string-length@npm:^4.0.1": - version: 4.0.2 - resolution: "string-length@npm:4.0.2" - dependencies: - char-regex: "npm:^1.0.2" - strip-ansi: "npm:^6.0.0" - checksum: 10/ce85533ef5113fcb7e522bcf9e62cb33871aa99b3729cec5595f4447f660b0cefd542ca6df4150c97a677d58b0cb727a3fe09ac1de94071d05526c73579bf505 - languageName: node - linkType: hard - "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" @@ -19664,13 +18862,6 @@ __metadata: languageName: node linkType: hard -"strip-bom@npm:^4.0.0": - version: 4.0.0 - resolution: "strip-bom@npm:4.0.0" - checksum: 10/9dbcfbaf503c57c06af15fe2c8176fb1bf3af5ff65003851a102749f875a6dbe0ab3b30115eccf6e805e9d756830d3e40ec508b62b3f1ddf3761a20ebe29d3f3 - languageName: node - linkType: hard - "strip-comments@npm:^2.0.1": version: 2.0.1 resolution: "strip-comments@npm:2.0.1" @@ -20152,6 +19343,24 @@ __metadata: languageName: node linkType: hard +"tldts-core@npm:^6.1.86": + version: 6.1.86 + resolution: "tldts-core@npm:6.1.86" + checksum: 10/cb5dff9cc15661ac773a2099e98c99a5cb3cebc35909c23cc4261ff7992032c7501995ae995de3574dbbf3431e59c47496534d52f5e96abcb231f0e72144c020 + languageName: node + linkType: hard + +"tldts@npm:^6.1.32": + version: 6.1.86 + resolution: "tldts@npm:6.1.86" + dependencies: + tldts-core: "npm:^6.1.86" + bin: + tldts: bin/cli.js + checksum: 10/f7e66824e44479ccdda55ea556af14ce61c4d27708be403e3f90631defde49f82a580e1ca07187cc7e3b349e257a30c2808a22903f3a0548e136ebb609ccc109 + languageName: node + linkType: hard + "tmp-promise@npm:^3.0.2": version: 3.0.3 resolution: "tmp-promise@npm:3.0.3" @@ -20225,15 +19434,12 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^4.1.2": - version: 4.1.4 - resolution: "tough-cookie@npm:4.1.4" +"tough-cookie@npm:^5.1.1": + version: 5.1.2 + resolution: "tough-cookie@npm:5.1.2" dependencies: - psl: "npm:^1.1.33" - punycode: "npm:^2.1.1" - universalify: "npm:^0.2.0" - url-parse: "npm:^1.5.3" - checksum: 10/75663f4e2cd085f16af0b217e4218772adf0617fb3227171102618a54ce0187a164e505d61f773ed7d65988f8ff8a8f935d381f87da981752c1171b076b4afac + tldts: "npm:^6.1.32" + checksum: 10/de430e6e6d34b794137e05b8ac2aa6b74ebbe6cdceb4126f168cf1e76101162a4b2e0e7587c3b70e728bd8654fc39958b2035be7619ee6f08e7257610ba4cd04 languageName: node linkType: hard @@ -20255,12 +19461,12 @@ __metadata: languageName: node linkType: hard -"tr46@npm:^3.0.0": - version: 3.0.0 - resolution: "tr46@npm:3.0.0" +"tr46@npm:^5.1.0": + version: 5.1.1 + resolution: "tr46@npm:5.1.1" dependencies: - punycode: "npm:^2.1.1" - checksum: 10/b09a15886cbfaee419a3469081223489051ce9dca3374dd9500d2378adedbee84a3c73f83bfdd6bb13d53657753fc0d4e20a46bfcd3f1b9057ef528426ad7ce4 + punycode: "npm:^2.3.1" + checksum: 10/833a0e1044574da5790148fd17866d4ddaea89e022de50279967bcd6b28b4ce0d30d59eb3acf9702b60918975b3bad481400337e3a2e6326cffa5c77b874753d languageName: node linkType: hard @@ -20442,13 +19648,6 @@ __metadata: languageName: node linkType: hard -"type-detect@npm:4.0.8": - version: 4.0.8 - resolution: "type-detect@npm:4.0.8" - checksum: 10/5179e3b8ebc51fce1b13efb75fdea4595484433f9683bbc2dca6d99789dba4e602ab7922d2656f2ce8383987467f7770131d4a7f06a26287db0615d2f4c4ce7d - languageName: node - linkType: hard - "type-fest@npm:^0.13.1": version: 0.13.1 resolution: "type-fest@npm:0.13.1" @@ -20463,13 +19662,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: 10/f4254070d9c3d83a6e573bcb95173008d73474ceadbbf620dd32d273940ca18734dff39c2b2480282df9afe5d1675ebed5499a00d791758748ea81f61a38961f - languageName: node - linkType: hard - "type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" @@ -20863,13 +20055,6 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^0.2.0": - version: 0.2.0 - resolution: "universalify@npm:0.2.0" - checksum: 10/e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 - languageName: node - linkType: hard - "universalify@npm:^2.0.0": version: 2.0.0 resolution: "universalify@npm:2.0.0" @@ -20930,16 +20115,6 @@ __metadata: languageName: node linkType: hard -"url-parse@npm:^1.5.3": - version: 1.5.10 - resolution: "url-parse@npm:1.5.10" - dependencies: - querystringify: "npm:^2.1.1" - requires-port: "npm:^1.0.0" - checksum: 10/c9e96bc8c5b34e9f05ddfeffc12f6aadecbb0d971b3cc26015b58d5b44676a99f50d5aeb1e5c9e61fa4d49961ae3ab1ae997369ed44da51b2f5ac010d188e6ad - languageName: node - linkType: hard - "url-to-options@npm:^1.0.1": version: 1.0.1 resolution: "url-to-options@npm:1.0.1" @@ -21026,17 +20201,6 @@ __metadata: languageName: node linkType: hard -"v8-to-istanbul@npm:^9.0.1": - version: 9.3.0 - resolution: "v8-to-istanbul@npm:9.3.0" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.12" - "@types/istanbul-lib-coverage": "npm:^2.0.1" - convert-source-map: "npm:^2.0.0" - checksum: 10/fb1d70f1176cb9dc46cabbb3fd5c52c8f3e8738b61877b6e7266029aed0870b04140e3f9f4550ac32aebcfe1d0f38b0bac57e1e8fb97d68fec82f2b416148166 - languageName: node - linkType: hard - "validate-npm-package-license@npm:^3.0.1": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" @@ -21188,6 +20352,15 @@ __metadata: languageName: node linkType: hard +"vite-plugin-peggy-loader@npm:^2.0.1": + version: 2.0.1 + resolution: "vite-plugin-peggy-loader@npm:2.0.1" + peerDependencies: + peggy: ^1.2.0 || ^3.0.2 || ^4.0.0 + checksum: 10/55460efe15fe84774907a0f46b4351bc3d5e672c32575af3142aca27b99b64c45727e3159bfb191fdc9b890fba4a08eb306e4a8ce4823b1cfcfaa4bf79fa62ff + languageName: node + linkType: hard + "vite-plugin-pwa@npm:^0.20.5": version: 0.20.5 resolution: "vite-plugin-pwa@npm:0.20.5" @@ -21383,12 +20556,12 @@ __metadata: languageName: node linkType: hard -"w3c-xmlserializer@npm:^4.0.0": - version: 4.0.0 - resolution: "w3c-xmlserializer@npm:4.0.0" +"w3c-xmlserializer@npm:^5.0.0": + version: 5.0.0 + resolution: "w3c-xmlserializer@npm:5.0.0" dependencies: - xml-name-validator: "npm:^4.0.0" - checksum: 10/9a00c412b5496f4f040842c9520bc0aaec6e0c015d06412a91a723cd7d84ea605ab903965f546b4ecdb3eae267f5145ba08565222b1d6cb443ee488cda9a0aee + xml-name-validator: "npm:^5.0.0" + checksum: 10/d78f59e6b4f924aa53b6dfc56949959229cae7fe05ea9374eb38d11edcec01398b7f5d7a12576bd5acc57ff446abb5c9115cd83b9d882555015437cf858d42f0 languageName: node linkType: hard @@ -21583,15 +20756,6 @@ __metadata: languageName: node linkType: hard -"whatwg-encoding@npm:^2.0.0": - version: 2.0.0 - resolution: "whatwg-encoding@npm:2.0.0" - dependencies: - iconv-lite: "npm:0.6.3" - checksum: 10/162d712d88fd134a4fe587e53302da812eb4215a1baa4c394dfd86eff31d0a079ff932c05233857997de07481093358d6e7587997358f49b8a580a777be22089 - languageName: node - linkType: hard - "whatwg-encoding@npm:^3.1.1": version: 3.1.1 resolution: "whatwg-encoding@npm:3.1.1" @@ -21601,13 +20765,6 @@ __metadata: languageName: node linkType: hard -"whatwg-mimetype@npm:^3.0.0": - version: 3.0.0 - resolution: "whatwg-mimetype@npm:3.0.0" - checksum: 10/96f9f628c663c2ae05412c185ca81b3df54bcb921ab52fe9ebc0081c1720f25d770665401eb2338ab7f48c71568133845638e18a81ed52ab5d4dcef7d22b40ef - languageName: node - linkType: hard - "whatwg-mimetype@npm:^4.0.0": version: 4.0.0 resolution: "whatwg-mimetype@npm:4.0.0" @@ -21615,13 +20772,13 @@ __metadata: languageName: node linkType: hard -"whatwg-url@npm:^11.0.0": - version: 11.0.0 - resolution: "whatwg-url@npm:11.0.0" +"whatwg-url@npm:^14.0.0, whatwg-url@npm:^14.1.1": + version: 14.2.0 + resolution: "whatwg-url@npm:14.2.0" dependencies: - tr46: "npm:^3.0.0" + tr46: "npm:^5.1.0" webidl-conversions: "npm:^7.0.0" - checksum: 10/dfcd51c6f4bfb54685528fb10927f3fd3d7c809b5671beef4a8cdd7b1408a7abf3343a35bc71dab83a1424f1c1e92cc2700d7930d95d231df0fac361de0c7648 + checksum: 10/f0a95b0601c64f417c471536a2d828b4c16fe37c13662483a32f02f183ed0f441616609b0663fb791e524e8cd56d9a86dd7366b1fc5356048ccb09b576495e7c languageName: node linkType: hard @@ -22060,7 +21217,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.11.0": +"ws@npm:^8.18.0": version: 8.18.1 resolution: "ws@npm:8.18.1" peerDependencies: @@ -22075,10 +21232,10 @@ __metadata: languageName: node linkType: hard -"xml-name-validator@npm:^4.0.0": - version: 4.0.0 - resolution: "xml-name-validator@npm:4.0.0" - checksum: 10/f9582a3f281f790344a471c207516e29e293c6041b2c20d84dd6e58832cd7c19796c47e108fd4fd4b164a5e72ad94f2268f8ace8231cde4a2c6428d6aa220f92 +"xml-name-validator@npm:^5.0.0": + version: 5.0.0 + resolution: "xml-name-validator@npm:5.0.0" + checksum: 10/43f30f3f6786e406dd665acf08cd742d5f8a46486bd72517edb04b27d1bcd1599664c2a4a99fc3f1e56a3194bff588b12f178b7972bc45c8047bdc4c3ac8d4a1 languageName: node linkType: hard @@ -22193,7 +21350,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.0.1, yargs@npm:^17.3.1, yargs@npm:^17.5.1, yargs@npm:^17.6.2, yargs@npm:^17.7.2": +"yargs@npm:^17.0.1, yargs@npm:^17.5.1, yargs@npm:^17.6.2, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: