Compare commits

...

15 Commits

Author SHA1 Message Date
Jorge Cabiedes Acosta
c57f30c156 Fix lockfiles 2025-06-11 14:13:40 -07:00
Jorge Cabiedes Acosta
981ee57037 Remove package.lock 2025-06-11 14:12:06 -07:00
Jorge Cabiedes Acosta
50306d8ab8 Switch to using better-sqlite3 and remove the intermediate csv step and just record directly to the DB 2025-06-11 14:09:42 -07:00
Jorge Cabiedes Acosta
7b7f98917f Prompt fixes 2025-06-11 10:50:34 -07:00
Jorge Cabiedes Acosta
c8728f7b81 Prettier 2025-06-11 10:48:29 -07:00
Jorge Cabiedes Acosta
1ee1c83947 Formatting, namin 2025-06-11 10:35:41 -07:00
Jorge Cabiedes Acosta
b3f66b9dd2 Change to use DuckDB instead of data-forge for data analisis 2025-06-11 10:18:53 -07:00
Jorge Cabiedes
3f2b86b5b1 clean artifacts folder and att to gitignore 2025-06-09 14:10:00 -07:00
Jorge Cabiedes
796935b088 Add run script tool to analyze dataFrames 2025-06-09 14:08:21 -07:00
Jorge Cabiedes
1ab948d4a2 Add function to interpret the proccessed react performance data 2025-06-09 11:09:06 -07:00
Jorge Cabiedes
a4b8f17a25 Add tool to prepare perf data for analysis 2025-06-09 10:40:39 -07:00
Jorge Cabiedes
128b267a18 Add logic to prepare perf data for LLM analysis 2025-06-06 14:23:50 -07:00
Jorge Cabiedes
23934b98bc Merge remote-tracking branch 'origin/main' into mcp-custom-track-tool 2025-06-06 09:53:03 -07:00
Jorge Cabiedes
70c17531ef Add tool to start performance recording and tool to get that recorded performance data 2025-06-06 09:48:40 -07:00
Jorge Cabiedes
6a3b4f25bb Initial commit 2025-06-04 14:36:30 -07:00
6 changed files with 763 additions and 91 deletions

2
compiler/.gitignore vendored
View File

@@ -9,6 +9,8 @@ dist
!packages/playground/.vscode
testfilter.txt
packages/react-mcp-server/src/artifacts
# forgive
*.vsix
.vscode-test

View File

@@ -20,6 +20,7 @@
"@babel/preset-typescript": "^7.27.1",
"@modelcontextprotocol/sdk": "^1.9.0",
"algoliasearch": "^5.23.3",
"better-sqlite3": "^11.10.0",
"cheerio": "^1.0.0",
"html-to-text": "^9.0.5",
"prettier": "^3.3.3",
@@ -27,6 +28,7 @@
"zod": "^3.23.8"
},
"devDependencies": {
"@types/better-sqlite3": "^7.6.13",
"@types/html-to-text": "^9.0.4",
"@types/jest": "^29.5.14",
"jest": "^29.7.0",

View File

@@ -22,6 +22,11 @@ import assertExhaustive from './utils/assertExhaustive';
import {convert} from 'html-to-text';
import {measurePerformance} from './tools/runtimePerf';
import {parseReactComponentTree} from './tools/componentTree';
import {
beginPerfRecording,
getPerfData,
interpretData,
} from './tools/recordReactPerf';
function calculateMean(values: number[]): string {
return values.length > 0
@@ -406,6 +411,163 @@ server.tool(
},
);
server.tool(
'start-react-performance-recording',
`
This tool begins captuning data passed to console.timeStamp calls in a browser.
This means it will get the data that creates the 2 custom tracks in the React Performance panel in Chrome DevTools Components track and Scheduler track.
It connects to a browser using puppeteer, patches the console.timeStamp method to capture the data.
This tool will not return the data itself, it will add some simple UI to the react app that notifies the user that the tool is running and allows the user to
stop the recording with a button. After stopping the data will be saved and can be prepared for analysis by calling process-react-performance-data.
<requirements>
- The url should be a full url with the protocol (http:// or https://) and the domain name (e.g. localhost:3000).
- The user should be running a Chrome browser in debug mode on port 9222. If you receive an error message, advise the user to run
the following command in the terminal:
MacOS: "/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome"
Windows: "chrome.exe --remote-debugging-port=9222 --user-data-dir=C:\temp\chrome"
</requirements>
<usage>
- You should use this tool when the user wants to get performance data from their app
- You should ideally not use process-react-performance-data or interpret-react-performance-data tool directly
- Verify the response from this tool is successful and notify the user performance data is being recorded on their app
- Prompt them to interact with the app to gather data and wait for the user to request the data on a follow up prompt using the react-perfarmance-data tool
</usage>
`,
{
url: z.string().optional().default('http://localhost:3000'),
},
async ({url}) => {
try {
const capturedData = await beginPerfRecording(url);
return {
content: [
{
type: 'text' as const,
text: JSON.stringify(capturedData, null, 2),
},
],
};
} catch (err) {
return {
isError: true,
content: [{type: 'text' as const, text: `Error: ${err.stack}`}],
};
}
},
);
server.tool(
'process-react-performance-data',
`
This tool retrieves the performance data recorded by the start-react-performance-recording tool,
converts it to CSV format, and saves it to a file in the artifacts directory.
It processes the data that was captured from console.timeStamp calls in the browser, which includes information from
the React Performance panel in Chrome DevTools (Components track and Scheduler track).
<requirements>
- The url should be a full url with the protocol (http:// or https://) and the domain name (e.g. localhost:3000).
- The user should be running a Chrome browser in debug mode on port 9222. If you receive an error message, advise the user to run
the following command in the terminal:
MacOS: "/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome"
Windows: "chrome.exe --remote-debugging-port=9222 --user-data-dir=C:\temp\chrome"
- You must have previously run the start-react-performance-recording tool to capture performance data.
- The data will be available after the user has interacted with their app while recording was active.
</requirements>
<usage>
- Use this tool after running start-react-performance-recording and having the user interact with their app.
- The tool will save the performance data as a CSV file in the artifacts directory.
- Then you should call the interpret-react-performance-data tool to analyze the data and provide insights and solutions to the user.
</usage>
`,
{
url: z.string().optional().default('http://localhost:3000'),
},
async ({url}) => {
try {
const result = await getPerfData(url);
return {
content: [
{
type: 'text' as const,
text: result.join('\n'),
},
],
};
} catch (err) {
return {
isError: true,
content: [{type: 'text' as const, text: `Error: ${err.stack}`}],
};
}
},
);
server.tool(
'interpret-react-performance-data',
`
<description>
Pass in a SQL query to analyze the performance data captured by the start-react-performance-recording tool.
The query will be executed against a DuckDB database containing the performance data.
Your queries should be focused and specific to extract meaningful insights from the data.
</description>
<requirements>
- On your first iteration your query should just try to understand the structure of the tables
- The query should return a result set that provides meaningful analysis
- Queries should be well-structured and optimized for performance
- Remember to ask yourself 10 questions about the data and then narrow down to the 5 most important about the dataset
</requirements>
Allowed Actions
1. Print Results: Output will be displayed as the query result.
Prohibited Actions
1. Modifying the database schema or data: Queries should be read-only.
2. Creating Charts: Chart generation is not permitted.
When using this tool you are a senior React Performance Engineer tasked with performing exploratory data analysis on a dataset of React performance data. Your goal is to provide insightful analysis while ensuring stability and manageable result sizes.
<usage>
Your SQL query will be executed against a DuckDB database containing the following tables:
- component_track: Contains data from the Components track in React DevTools
- scheduler_track: Contains data from the Scheduler track in React DevTools
Example queries:
- "SELECT * FROM component_track LIMIT 10" - View the first 10 rows of the component track data
- "SELECT name, COUNT(*) as render_count FROM component_track GROUP BY name ORDER BY render_count DESC LIMIT 10" - Find the components with the most renders
- "SELECT name, AVG(endTime - startTime) as avg_duration FROM component_track GROUP BY name ORDER BY avg_duration DESC LIMIT 10" - Find the components with the longest average render time
</usage>
`,
{
script: z.string(),
},
async ({script}) => {
try {
const result = await interpretData(script);
return {
content: [
{
type: 'text' as const,
text: result,
},
],
};
} catch (err) {
return {
isError: true,
content: [{type: 'text' as const, text: `Error: ${err.stack}`}],
};
}
},
);
server.prompt('review-react-code', () => ({
messages: [
{
@@ -446,6 +608,18 @@ Server Components - Shift data-heavy logic to the server whenever possible. Brea
## Available Tools
- 'docs': Look up documentation from react.dev. Returns text as a string.
- 'compile': Run the user's code through React Compiler. Returns optimized JS/TS code with potential diagnostics.
- 'parse-react-component-tree': Get the component tree of a React App. Returns a string representation of the component tree.
## Performance Analysis Tools:
- 'start-react-performance-recording': Starts capturing performance data from the browser.
- 'process-react-performance-data': Processes and loads the captured performance data and saves it to a file.
- 'interpret-react-performance-data': Allows you to access the dataset through scripts which let you obtain and interpret the already loaded dataset.
When using these tools you become a React Performance expert, your goal is to provide insightful analysis while ensuring stability and manageable result sizes.
Follow these steps carefully when analyzing performance:
1. Record the performance with 'start-react-performance-recording'
2. Load the dataset with 'process-react-performance-data'
3. Call 'interpret-react-performance-data' as many times as needed, you should gain more and more information about the dataset by using dataForge and answer questions you come up about the dataset
## Process
1. Analyze the user's code for optimization opportunities:

View File

@@ -0,0 +1,320 @@
import {hookIntoPage} from '../utils/puppeteerUtils';
import fs from 'fs/promises';
import path from 'path';
import Database from 'better-sqlite3';
import type {Database as DatabaseType} from 'better-sqlite3';
/**
* Connects to a browser and patches the console.timeStamp method to capture data
* and send it back to the MCP server.
*
* @param url The URL of the page to connect to
* @returns A promise that resolves to the captured console.timeStamp data
*/
export async function beginPerfRecording(url: string): Promise<string> {
try {
const targetPage = await hookIntoPage(url);
await targetPage.evaluateOnNewDocument(() => {
(window as any).__COMPONENT_TRACK_TIMESTAMP_DATA__ = [];
(window as any).__SCHEDULER_TRACK_TIMESTAMP_DATA__ = [];
(window as any).__MCP_RECORDING_ACTIVE__ = true;
const originalTimestamp = console.timeStamp;
// Monkey-patch console.timeStamp to capture data
console.timeStamp = function (...args: any) {
// Filter out 0 endTimes, this is used in devtools to hide duplicated render blocks but is noise for us
if ((window as any).__MCP_RECORDING_ACTIVE__ && args[2] !== 0) {
if ((args[4] as string)?.includes('Scheduler')) {
const timeStampData = {
name: args[0],
startTime: args[1],
endTime: args[2],
type: args[3],
track: 'Scheduler',
color: args[5],
};
(window as any).__SCHEDULER_TRACK_TIMESTAMP_DATA__.push(
timeStampData,
);
} else if ((args[3] as string)?.includes('Components')) {
const timeStampData = {
name: args[0],
startTime: args[1],
endTime: args[2],
track: 'Components',
color: args[5],
};
(window as any).__COMPONENT_TRACK_TIMESTAMP_DATA__.push(
timeStampData,
);
}
}
if (originalTimestamp) {
return originalTimestamp.apply(console, args as any);
}
};
(window as any).__STOP_MCP_RECORDING__ = function () {
(window as any).__MCP_RECORDING_ACTIVE__ = false;
const mcpStyle = document.getElementById('mcp-style');
const mcpIndicator = document.getElementById('mcp-indicator');
if (mcpStyle) mcpStyle.remove();
if (mcpIndicator) mcpIndicator.remove();
return (window as any).__CAPTURED_TIMESTAMP_DATA__;
};
window.addEventListener('DOMContentLoaded', () => {
if (!document.getElementById('mcp-style')) {
const style = document.createElement('style');
style.id = 'mcp-style';
style.textContent = `
html {
border: 3px solid red !important;
}
#mcp-indicator {
position: fixed;
bottom: 0;
right: 0;
background: red;
color: white;
font-size: 14px;
font-weight: bold;
padding: 4px 8px;
z-index: 999999;
font-family: sans-serif;
display: flex;
align-items: center;
}
#mcp-stop-button {
margin-left: 8px;
background: white;
color: red;
border: none;
border-radius: 4px;
padding: 2px 6px;
cursor: pointer;
font-weight: bold;
}
`;
document.head.appendChild(style);
}
if (!document.getElementById('mcp-indicator')) {
const indicator = document.createElement('div');
indicator.id = 'mcp-indicator';
const recordingText = document.createElement('span');
recordingText.textContent = 'MCP recording';
indicator.appendChild(recordingText);
const stopButton = document.createElement('button');
stopButton.id = 'mcp-stop-button';
stopButton.textContent = 'Stop';
stopButton.onclick = () => {
(window as any).__STOP_MCP_RECORDING__();
};
indicator.appendChild(stopButton);
document.body.appendChild(indicator);
}
});
});
await targetPage.reload({waitUntil: 'domcontentloaded'});
return 'Recording Successfully Started';
} catch (error) {
throw new Error(`Failed to capture console.timeStamp data: ${error}`);
}
}
/**
* Processes track data and loads it directly into the database
*
* @param trackData The track data to process
* @param headers The headers for the track data
* @param tableName The name of the table to create
* @returns A promise that resolves to true if the data was processed successfully, false otherwise
*/
async function processTrackData(
trackData: any[],
headers: string[],
tableName: string,
): Promise<boolean> {
if (!Array.isArray(trackData) || trackData.length === 0) {
return false;
}
const db = getSQLiteDB();
db.exec(`DROP TABLE IF EXISTS ${tableName}`);
const createTableSQL = `CREATE TABLE ${tableName} (
${headers.map(header => `${header.trim()} TEXT`).join(', ')}
)`;
db.exec(createTableSQL);
const placeholders = headers.map(() => '?').join(', ');
const insertSQL = `INSERT INTO ${tableName} (${headers.join(', ')}) VALUES (${placeholders})`;
const insertStmt = db.prepare(insertSQL);
const transaction = db.transaction((rows: any[]) => {
for (const row of rows) {
insertStmt.run(...row);
}
});
const dataRows = trackData.map(item => {
return headers.map(header => {
const value = item[header];
return value === undefined ? null : value;
});
});
transaction(dataRows);
return true;
}
let db: DatabaseType | null = null;
function getSQLiteDB(): DatabaseType {
if (!db) {
const dbPath = path.join(__dirname, '../src/artifacts/perf_data.db');
db = new Database(dbPath);
db.pragma('foreign_keys = ON');
}
return db;
}
export async function getPerfData(url: string): Promise<string[]> {
try {
const page = await hookIntoPage(url);
const [componentTrackData, schedulerTrackData] = await page.evaluate(() => {
return [
(window as any).__COMPONENT_TRACK_TIMESTAMP_DATA__ || [],
(window as any).__SCHEDULER_TRACK_TIMESTAMP_DATA__ || [],
];
});
if (
(!Array.isArray(componentTrackData) || componentTrackData.length === 0) &&
(!Array.isArray(schedulerTrackData) || schedulerTrackData.length === 0)
) {
return [
'No performance data was captured. Make sure to run start-react-performance-recording first.',
];
}
const artifactsDir = path.join(__dirname, '../src/artifacts');
try {
await fs.mkdir(artifactsDir, {recursive: true});
} catch (err) {
throw Error(`Error creating directory: ${err}`);
}
const result = [];
const componentSuccess = await processTrackData(
componentTrackData,
['name', 'startTime', 'endTime', 'track', 'color'],
'component_track',
);
if (componentSuccess) {
result.push(
'Component track data loaded into the database and can now be accessed through the interpret-perf-data tool.',
);
} else {
result.push('No component track data was available to save.');
}
const schedulerSuccess = await processTrackData(
schedulerTrackData,
['name', 'startTime', 'endTime', 'type', 'track', 'color'],
'scheduler_track',
);
if (schedulerSuccess) {
result.push(
'Scheduler track data loaded into the database and can now be accessed through the interpret-perf-data tool.',
);
} else {
result.push('No scheduler track data was available to save.');
}
if (componentSuccess || schedulerSuccess) {
result.push('SQLite database created and data loaded successfully.');
}
return result;
} catch (error) {
throw new Error(`Failed to process performance data: ${error}`);
}
}
/**
* Executes a SQL query against the SQLite database containing performance data.
*
* @param query The SQL query to execute
* @returns A promise that resolves to the result of the query execution
*/
export async function interpretData(query: string): Promise<string> {
try {
const db = getSQLiteDB();
const tablesExist =
db
.prepare(
`
SELECT name FROM sqlite_master
WHERE type='table' AND name IN ('component_track', 'scheduler_track')
`,
)
.all().length > 0;
if (!tablesExist) {
return `No performance data tables found. Please run the process-react-performance-data tool first to capture and load performance data.
Example workflow:
1. Run 'start-react-performance-recording' to begin capturing data
2. Interact with your React application to generate performance data
3. Run 'process-react-performance-data' to process and load the data into SQLite
4. Then run SQL queries using this tool`;
}
let result: any;
try {
result = db.prepare(query).all();
} catch (err) {
db.exec(query);
return 'Query executed successfully.';
}
if (Array.isArray(result)) {
if (result.length === 0) {
return 'Query executed successfully, but returned no results.';
}
const headers = Object.keys(result[0]);
const rows = result.map(row =>
headers.map(h => JSON.stringify(row[h])).join(','),
);
return [headers.join(','), ...rows].join('\n');
} else {
return JSON.stringify(result, null, 2);
}
} catch (error) {
throw new Error(`Error running SQL query: ${error.message}`);
}
}

View File

@@ -0,0 +1,26 @@
import puppeteer, {Page} from 'puppeteer';
export async function hookIntoPage(url: string): Promise<Page> {
const browser = await puppeteer.connect({
browserURL: 'http://127.0.0.1:9222',
defaultViewport: null,
});
const pages = await browser.pages();
let targetPage = null;
for (const page of pages) {
const pageUrl = await page.url();
if (pageUrl.startsWith(url)) {
targetPage = page;
break;
}
}
if (!targetPage) {
throw new Error(
`Could not open the page at ${url}. Is your server running?`,
);
}
return targetPage;
}

View File

@@ -149,7 +149,7 @@
"@babel/code-frame@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be"
resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz"
integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==
dependencies:
"@babel/helper-validator-identifier" "^7.27.1"
@@ -171,7 +171,7 @@
"@babel/compat-data@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.1.tgz#db7cf122745e0a332c44e847ddc4f5e5221a43f6"
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.1.tgz"
integrity sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==
"@babel/core@^7.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.1", "@babel/core@^7.24.4":
@@ -217,7 +217,7 @@
"@babel/core@^7.23.9":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.1.tgz#89de51e86bd12246003e3524704c49541b16c3e6"
resolved "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz"
integrity sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==
dependencies:
"@ampproject/remapping" "^2.2.0"
@@ -281,7 +281,7 @@
"@babel/generator@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.1.tgz#862d4fad858f7208edd487c28b58144036b76230"
resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz"
integrity sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==
dependencies:
"@babel/parser" "^7.27.1"
@@ -299,7 +299,7 @@
"@babel/helper-annotate-as-pure@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz#4345d81a9a46a6486e24d069469f13e60445c05d"
resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz"
integrity sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==
dependencies:
"@babel/types" "^7.27.1"
@@ -317,7 +317,7 @@
"@babel/helper-compilation-targets@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.1.tgz#eac1096c7374f161e4f33fc8ae38f4ddf122087a"
resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.1.tgz"
integrity sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g==
dependencies:
"@babel/compat-data" "^7.27.1"
@@ -341,7 +341,7 @@
"@babel/helper-create-class-features-plugin@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281"
resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz"
integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==
dependencies:
"@babel/helper-annotate-as-pure" "^7.27.1"
@@ -374,14 +374,14 @@
"@babel/helper-environment-visitor@^7.18.9":
version "7.24.7"
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9"
resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz"
integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==
dependencies:
"@babel/types" "^7.24.7"
"@babel/helper-function-name@^7.7.4":
version "7.24.7"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2"
resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz"
integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==
dependencies:
"@babel/template" "^7.24.7"
@@ -397,7 +397,7 @@
"@babel/helper-member-expression-to-functions@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44"
resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz"
integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==
dependencies:
"@babel/traverse" "^7.27.1"
@@ -413,7 +413,7 @@
"@babel/helper-module-imports@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204"
resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz"
integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==
dependencies:
"@babel/traverse" "^7.27.1"
@@ -444,7 +444,7 @@
"@babel/helper-module-transforms@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz#e1663b8b71d2de948da5c4fb2a20ca4f3ec27a6f"
resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz"
integrity sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==
dependencies:
"@babel/helper-module-imports" "^7.27.1"
@@ -460,7 +460,7 @@
"@babel/helper-optimise-call-expression@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200"
resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz"
integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==
dependencies:
"@babel/types" "^7.27.1"
@@ -477,7 +477,7 @@
"@babel/helper-plugin-utils@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c"
resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz"
integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==
"@babel/helper-remap-async-to-generator@^7.25.9":
@@ -500,7 +500,7 @@
"@babel/helper-replace-supers@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0"
resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz"
integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==
dependencies:
"@babel/helper-member-expression-to-functions" "^7.27.1"
@@ -524,7 +524,7 @@
"@babel/helper-skip-transparent-expression-wrappers@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56"
resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz"
integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==
dependencies:
"@babel/traverse" "^7.27.1"
@@ -542,11 +542,6 @@
resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz"
integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
"@babel/helper-string-parser@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
"@babel/helper-validator-identifier@^7.19.1", "@babel/helper-validator-identifier@^7.25.9":
version "7.25.9"
resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz"
@@ -564,7 +559,7 @@
"@babel/helper-validator-identifier@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8"
resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz"
integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==
"@babel/helper-validator-option@^7.22.5":
@@ -579,7 +574,7 @@
"@babel/helper-validator-option@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f"
resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz"
integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==
"@babel/helper-wrap-function@^7.25.9":
@@ -618,7 +613,7 @@
"@babel/helpers@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.1.tgz#ffc27013038607cdba3288e692c3611c06a18aa4"
resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz"
integrity sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==
dependencies:
"@babel/template" "^7.27.1"
@@ -657,7 +652,7 @@
"@babel/parser@^7.23.9", "@babel/parser@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.1.tgz#c55d5bed74449d1223701f1869b9ee345cc94cc9"
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.27.1.tgz"
integrity sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==
dependencies:
"@babel/types" "^7.27.1"
@@ -803,7 +798,7 @@
"@babel/plugin-syntax-jsx@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c"
resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz"
integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
@@ -866,7 +861,7 @@
"@babel/plugin-syntax-typescript@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18"
resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz"
integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
@@ -1091,7 +1086,7 @@
"@babel/plugin-transform-modules-commonjs@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832"
resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz"
integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==
dependencies:
"@babel/helper-module-transforms" "^7.27.1"
@@ -1321,7 +1316,7 @@
"@babel/plugin-transform-typescript@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz#d3bb65598bece03f773111e88cc4e8e5070f1140"
resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz"
integrity sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==
dependencies:
"@babel/helper-annotate-as-pure" "^7.27.1"
@@ -1490,7 +1485,7 @@
"@babel/preset-typescript@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz#190742a6428d282306648a55b0529b561484f912"
resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz"
integrity sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==
dependencies:
"@babel/helper-plugin-utils" "^7.27.1"
@@ -1544,7 +1539,7 @@
"@babel/template@^7.24.7", "@babel/template@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.1.tgz#b9e4f55c17a92312774dfbdde1b3c01c547bbae2"
resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.1.tgz"
integrity sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==
dependencies:
"@babel/code-frame" "^7.27.1"
@@ -1594,7 +1589,7 @@
"@babel/traverse@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.1.tgz#4db772902b133bbddd1c4f7a7ee47761c1b9f291"
resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz"
integrity sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==
dependencies:
"@babel/code-frame" "^7.27.1"
@@ -1605,7 +1600,7 @@
debug "^4.3.1"
globals "^11.1.0"
"@babel/types@^7.0.0", "@babel/types@^7.19.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.21.2", "@babel/types@^7.24.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.3", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.4":
"@babel/types@7.26.3", "@babel/types@^7.0.0", "@babel/types@^7.19.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.21.2", "@babel/types@^7.24.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.10", "@babel/types@^7.26.3", "@babel/types@^7.27.0", "@babel/types@^7.27.1", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.4":
version "7.26.3"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0"
integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==
@@ -1613,14 +1608,6 @@
"@babel/helper-string-parser" "^7.25.9"
"@babel/helper-validator-identifier" "^7.25.9"
"@babel/types@^7.26.10", "@babel/types@^7.27.0", "@babel/types@^7.27.1":
version "7.27.1"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.1.tgz#9defc53c16fc899e46941fc6901a9eea1c9d8560"
integrity sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==
dependencies:
"@babel/helper-string-parser" "^7.27.1"
"@babel/helper-validator-identifier" "^7.27.1"
"@bcoe/v8-coverage@^0.2.3":
version "0.2.3"
resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz"
@@ -2001,7 +1988,7 @@
"@jest/console@^29.7.0":
version "29.7.0"
resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc"
resolved "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz"
integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==
dependencies:
"@jest/types" "^29.6.3"
@@ -2116,7 +2103,7 @@
"@jest/core@^29.7.0":
version "29.7.0"
resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f"
resolved "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz"
integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==
dependencies:
"@jest/console" "^29.7.0"
@@ -2201,7 +2188,7 @@
"@jest/expect-utils@^29.7.0":
version "29.7.0"
resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6"
resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz"
integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==
dependencies:
jest-get-type "^29.6.3"
@@ -2232,7 +2219,7 @@
"@jest/expect@^29.7.0":
version "29.7.0"
resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2"
resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz"
integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==
dependencies:
expect "^29.7.0"
@@ -2305,7 +2292,7 @@
"@jest/globals@^29.7.0":
version "29.7.0"
resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d"
resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz"
integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==
dependencies:
"@jest/environment" "^29.7.0"
@@ -2407,7 +2394,7 @@
"@jest/reporters@^29.7.0":
version "29.7.0"
resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7"
resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz"
integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==
dependencies:
"@bcoe/v8-coverage" "^0.2.3"
@@ -2492,7 +2479,7 @@
"@jest/source-map@^29.6.3":
version "29.6.3"
resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4"
resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz"
integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==
dependencies:
"@jridgewell/trace-mapping" "^0.3.18"
@@ -2531,7 +2518,7 @@
"@jest/test-result@^29.7.0":
version "29.7.0"
resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c"
resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz"
integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==
dependencies:
"@jest/console" "^29.7.0"
@@ -2571,7 +2558,7 @@
"@jest/test-sequencer@^29.7.0":
version "29.7.0"
resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce"
resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz"
integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==
dependencies:
"@jest/test-result" "^29.7.0"
@@ -2644,7 +2631,7 @@
"@jest/transform@^29.7.0":
version "29.7.0"
resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c"
resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz"
integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==
dependencies:
"@babel/core" "^7.11.6"
@@ -3099,6 +3086,13 @@
dependencies:
"@babel/types" "^7.3.0"
"@types/better-sqlite3@^7.6.13":
version "7.6.13"
resolved "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.13.tgz"
integrity sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==
dependencies:
"@types/node" "*"
"@types/eslint@^8.56.12":
version "8.56.12"
resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz"
@@ -3194,7 +3188,7 @@
"@types/jest@^29.5.14":
version "29.5.14"
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5"
resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz"
integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==
dependencies:
expect "^29.0.0"
@@ -3880,7 +3874,7 @@ babel-jest@^29.5.0:
babel-jest@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5"
resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz"
integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==
dependencies:
"@jest/transform" "^29.7.0"
@@ -4086,12 +4080,27 @@ basic-ftp@^5.0.2:
resolved "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz"
integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==
better-sqlite3@^11.10.0:
version "11.10.0"
resolved "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-11.10.0.tgz"
integrity sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==
dependencies:
bindings "^1.5.0"
prebuild-install "^7.1.1"
binary-extensions@^2.0.0:
version "2.3.0"
resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz"
integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
bl@^4.1.0:
bindings@^1.5.0:
version "1.5.0"
resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz"
integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
dependencies:
file-uri-to-path "1.0.0"
bl@^4.0.3, bl@^4.1.0:
version "4.1.0"
resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz"
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
@@ -4364,6 +4373,11 @@ chokidar@^4.0.3:
dependencies:
readdirp "^4.0.1"
chownr@^1.1.1:
version "1.1.4"
resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz"
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
chromium-bidi@4.1.1:
version "4.1.1"
resolved "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-4.1.1.tgz"
@@ -4620,7 +4634,7 @@ cosmiconfig@^9.0.0:
create-jest@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320"
resolved "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz"
integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==
dependencies:
"@jest/types" "^29.6.3"
@@ -4756,6 +4770,13 @@ decimal.js@^10.4.3:
resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz"
integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==
decompress-response@^6.0.0:
version "6.0.0"
resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz"
integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
dependencies:
mimic-response "^3.1.0"
dedent@^0.7.0:
version "0.7.0"
resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz"
@@ -4763,9 +4784,14 @@ dedent@^0.7.0:
dedent@^1.0.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.6.0.tgz#79d52d6389b1ffa67d2bcef59ba51847a9d503b2"
resolved "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz"
integrity sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==
deep-extend@^0.6.0:
version "0.6.0"
resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz"
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
deep-is@^0.1.3:
version "0.1.4"
resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
@@ -4812,6 +4838,11 @@ detect-file@^1.0.0:
resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz"
integrity sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==
detect-libc@^2.0.0:
version "2.0.4"
resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz"
integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==
detect-newline@^3.0.0:
version "3.1.0"
resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz"
@@ -4839,7 +4870,7 @@ diff-sequences@^29.4.3:
diff-sequences@^29.6.3:
version "29.6.3"
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921"
resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz"
integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==
diff@^4.0.1:
@@ -4943,7 +4974,7 @@ ee-first@1.1.1:
ejs@^3.1.10:
version "3.1.10"
resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b"
resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz"
integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==
dependencies:
jake "^10.8.5"
@@ -4996,7 +5027,7 @@ encoding-sniffer@^0.2.0:
iconv-lite "^0.6.3"
whatwg-encoding "^3.1.1"
end-of-stream@^1.1.0:
end-of-stream@^1.1.0, end-of-stream@^1.4.1:
version "1.4.4"
resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz"
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
@@ -5377,6 +5408,11 @@ exit@^0.1.2:
resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz"
integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==
expand-template@^2.0.3:
version "2.0.3"
resolved "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz"
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
expand-tilde@^2.0.0, expand-tilde@^2.0.2:
version "2.0.2"
resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz"
@@ -5419,7 +5455,7 @@ expect@^29.5.0:
expect@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc"
resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz"
integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==
dependencies:
"@jest/expect-utils" "^29.7.0"
@@ -5589,9 +5625,14 @@ file-entry-cache@^8.0.0:
dependencies:
flat-cache "^4.0.0"
file-uri-to-path@1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz"
integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
filelist@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz"
integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==
dependencies:
minimatch "^5.0.1"
@@ -5754,6 +5795,11 @@ fresh@^2.0.0:
resolved "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz"
integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==
fs-constants@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz"
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
fs-extra@^4.0.2:
version "4.0.3"
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz"
@@ -5848,6 +5894,11 @@ get-uri@^6.0.1:
data-uri-to-buffer "^6.0.2"
debug "^4.3.4"
github-from-package@0.0.0:
version "0.0.0"
resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz"
integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==
glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
@@ -6226,7 +6277,7 @@ inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
ini@^1.3.4:
ini@^1.3.4, ini@~1.3.0:
version "1.3.8"
resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
@@ -6392,7 +6443,7 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0:
istanbul-lib-instrument@^6.0.0:
version "6.0.3"
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765"
resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz"
integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==
dependencies:
"@babel/core" "^7.23.9"
@@ -6471,7 +6522,7 @@ jackspeak@^4.0.1:
jake@^10.8.5:
version "10.9.2"
resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f"
resolved "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz"
integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==
dependencies:
async "^3.2.3"
@@ -6505,7 +6556,7 @@ jest-changed-files@^29.5.0:
jest-changed-files@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a"
resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz"
integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==
dependencies:
execa "^5.0.0"
@@ -6590,7 +6641,7 @@ jest-circus@^29.5.0:
jest-circus@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a"
resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz"
integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==
dependencies:
"@jest/environment" "^29.7.0"
@@ -6670,7 +6721,7 @@ jest-cli@^29.5.0:
jest-cli@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995"
resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz"
integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==
dependencies:
"@jest/core" "^29.7.0"
@@ -6771,7 +6822,7 @@ jest-config@^29.5.0:
jest-config@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f"
resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz"
integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==
dependencies:
"@babel/core" "^7.11.6"
@@ -6829,7 +6880,7 @@ jest-diff@^29.5.0:
jest-diff@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a"
resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz"
integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==
dependencies:
chalk "^4.0.0"
@@ -6867,7 +6918,7 @@ jest-docblock@^29.4.3:
jest-docblock@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a"
resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz"
integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==
dependencies:
detect-newline "^3.0.0"
@@ -6907,7 +6958,7 @@ jest-each@^29.5.0:
jest-each@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1"
resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz"
integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==
dependencies:
"@jest/types" "^29.6.3"
@@ -6968,7 +7019,7 @@ jest-environment-node@^29.5.0:
jest-environment-node@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376"
resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz"
integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==
dependencies:
"@jest/environment" "^29.7.0"
@@ -6995,7 +7046,7 @@ jest-get-type@^29.4.3:
jest-get-type@^29.6.3:
version "29.6.3"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1"
resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz"
integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==
jest-haste-map@^28.1.3:
@@ -7057,7 +7108,7 @@ jest-haste-map@^29.5.0:
jest-haste-map@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104"
resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz"
integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==
dependencies:
"@jest/types" "^29.6.3"
@@ -7100,7 +7151,7 @@ jest-leak-detector@^29.5.0:
jest-leak-detector@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728"
resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz"
integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==
dependencies:
jest-get-type "^29.6.3"
@@ -7138,7 +7189,7 @@ jest-matcher-utils@^29.5.0:
jest-matcher-utils@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12"
resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz"
integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==
dependencies:
chalk "^4.0.0"
@@ -7254,7 +7305,7 @@ jest-regex-util@^29.4.3:
jest-regex-util@^29.6.3:
version "29.6.3"
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52"
resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz"
integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==
jest-resolve-dependencies@^28.1.3:
@@ -7283,7 +7334,7 @@ jest-resolve-dependencies@^29.5.0:
jest-resolve-dependencies@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428"
resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz"
integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==
dependencies:
jest-regex-util "^29.6.3"
@@ -7336,7 +7387,7 @@ jest-resolve@^29.5.0:
jest-resolve@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30"
resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz"
integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==
dependencies:
chalk "^4.0.0"
@@ -7432,7 +7483,7 @@ jest-runner@^29.5.0:
jest-runner@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e"
resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz"
integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==
dependencies:
"@jest/console" "^29.7.0"
@@ -7543,7 +7594,7 @@ jest-runtime@^29.5.0:
jest-runtime@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817"
resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz"
integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==
dependencies:
"@jest/environment" "^29.7.0"
@@ -7659,7 +7710,7 @@ jest-snapshot@^29.5.0:
jest-snapshot@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5"
resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz"
integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==
dependencies:
"@babel/core" "^7.11.6"
@@ -7757,7 +7808,7 @@ jest-validate@^29.5.0:
jest-validate@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c"
resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz"
integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==
dependencies:
"@jest/types" "^29.6.3"
@@ -7811,7 +7862,7 @@ jest-watcher@^29.5.0:
jest-watcher@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2"
resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz"
integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==
dependencies:
"@jest/test-result" "^29.7.0"
@@ -7853,7 +7904,7 @@ jest-worker@^29.5.0:
jest-worker@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a"
resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz"
integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==
dependencies:
"@types/node" "*"
@@ -7893,7 +7944,7 @@ jest@^29.5.0:
jest@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613"
resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz"
integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==
dependencies:
"@jest/core" "^29.7.0"
@@ -8364,6 +8415,11 @@ mimic-fn@^2.1.0:
resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
mimic-response@^3.1.0:
version "3.1.0"
resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz"
integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
minimatch@9.0.3, minimatch@^9.0.1:
version "9.0.3"
resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz"
@@ -8399,7 +8455,7 @@ minimatch@^9.0.3, minimatch@^9.0.4:
dependencies:
brace-expansion "^2.0.1"
minimist@^1.2.0, minimist@^1.2.8:
minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.8:
version "1.2.8"
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
@@ -8419,6 +8475,11 @@ mitt@^3.0.1:
resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz"
integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
version "0.5.3"
resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz"
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
mkdirp@3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz"
@@ -8495,6 +8556,11 @@ mz@^2.7.0:
object-assign "^4.0.1"
thenify-all "^1.0.0"
napi-build-utils@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz"
integrity sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==
native-or-another@~2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/native-or-another/-/native-or-another-2.0.0.tgz"
@@ -8522,6 +8588,13 @@ netmask@^2.0.2:
resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz"
integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==
node-abi@^3.3.0:
version "3.75.0"
resolved "https://registry.npmjs.org/node-abi/-/node-abi-3.75.0.tgz"
integrity sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==
dependencies:
semver "^7.3.5"
node-addon-api@^3.2.1:
version "3.2.1"
resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz"
@@ -8956,6 +9029,24 @@ postcss-load-config@^6.0.1:
dependencies:
lilconfig "^3.1.1"
prebuild-install@^7.1.1:
version "7.1.3"
resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz"
integrity sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==
dependencies:
detect-libc "^2.0.0"
expand-template "^2.0.3"
github-from-package "0.0.0"
minimist "^1.2.3"
mkdirp-classic "^0.5.3"
napi-build-utils "^2.0.0"
node-abi "^3.3.0"
pump "^3.0.0"
rc "^1.2.7"
simple-get "^4.0.0"
tar-fs "^2.0.0"
tunnel-agent "^0.6.0"
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
@@ -9180,6 +9271,16 @@ raw-body@^3.0.0:
iconv-lite "0.6.3"
unpipe "1.0.0"
rc@^1.2.7:
version "1.2.8"
resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz"
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
dependencies:
deep-extend "^0.6.0"
ini "~1.3.0"
minimist "^1.2.0"
strip-json-comments "~2.0.1"
react-dom@0.0.0-experimental-4beb1fd8-20241118:
version "0.0.0-experimental-4beb1fd8-20241118"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-0.0.0-experimental-4beb1fd8-20241118.tgz"
@@ -9212,7 +9313,7 @@ react@0.0.0-experimental-4beb1fd8-20241118:
resolved "https://registry.npmjs.org/react/-/react-0.0.0-experimental-4beb1fd8-20241118.tgz"
integrity sha512-SojDx9IQZXRbze+BNoLRiBDblVTMRebpOZyU2QyRk4ptJob78QiROi58uuE7yxrFMDQN4kBl6tqYkSwQaIM2nQ==
readable-stream@^3.4.0, readable-stream@^3.6.2:
readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.2:
version "3.6.2"
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz"
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
@@ -9457,7 +9558,7 @@ rxjs@^7.0.0, rxjs@^7.8.1:
dependencies:
tslib "^2.1.0"
safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
@@ -9660,6 +9761,20 @@ signal-exit@^4.0.1:
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz"
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
simple-concat@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz"
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
simple-get@^4.0.0:
version "4.0.1"
resolved "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz"
integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==
dependencies:
decompress-response "^6.0.0"
once "^1.3.1"
simple-concat "^1.0.0"
simple-swizzle@^0.2.2:
version "0.2.2"
resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz"
@@ -9875,6 +9990,11 @@ strip-json-comments@^3.1.1:
resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz"
integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
sucrase@^3.35.0:
version "3.35.0"
resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz"
@@ -9937,6 +10057,16 @@ tapable@^2.2.0:
resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz"
integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
tar-fs@^2.0.0:
version "2.1.3"
resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz"
integrity sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==
dependencies:
chownr "^1.1.1"
mkdirp-classic "^0.5.2"
pump "^3.0.0"
tar-stream "^2.1.4"
tar-fs@^3.0.8:
version "3.0.8"
resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz"
@@ -9948,6 +10078,17 @@ tar-fs@^3.0.8:
bare-fs "^4.0.1"
bare-path "^3.0.0"
tar-stream@^2.1.4:
version "2.2.0"
resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz"
integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
dependencies:
bl "^4.0.3"
end-of-stream "^1.4.1"
fs-constants "^1.0.0"
inherits "^2.0.3"
readable-stream "^3.1.1"
tar-stream@^3.1.5:
version "3.1.7"
resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz"
@@ -10136,7 +10277,7 @@ ts-jest@^29.1.1:
ts-jest@^29.3.2:
version "29.3.2"
resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.3.2.tgz#0576cdf0a507f811fe73dcd16d135ce89f8156cb"
resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.3.2.tgz"
integrity sha512-bJJkrWc6PjFVz5g2DGCNUo8z7oFEYaz1xP1NpeDU7KNLMWPpEyV8Chbpkn8xjzgRDpQhnGMyvyldoL7h8JXyug==
dependencies:
bs-logger "^0.2.6"
@@ -10196,6 +10337,13 @@ tsup@^8.4.0:
tinyglobby "^0.2.11"
tree-kill "^1.2.2"
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz"
integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
dependencies:
safe-buffer "^5.0.1"
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
@@ -10220,7 +10368,7 @@ type-fest@^0.21.3:
type-fest@^4.39.1:
version "4.40.1"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.40.1.tgz#d78a09f08dd1081a434dd377967650cfd565401d"
resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.40.1.tgz"
integrity sha512-9YvLNnORDpI+vghLU/Nf+zSv0kL47KbVJ1o3sKgoTefl6i+zebxbiDQWoe/oWWqPhIgQdRZRT1KA9sCPL810SA==
type-is@^2.0.0, type-is@^2.0.1: