diff --git a/cypress/e2e/page_tests.cy.ts b/cypress/e2e/page_tests.cy.ts index b01a7a22..df58d7fc 100644 --- a/cypress/e2e/page_tests.cy.ts +++ b/cypress/e2e/page_tests.cy.ts @@ -36,7 +36,7 @@ describe("Testing Each Documentation Page", () => { }, { title: "Sort and Filter", - headlines: ["Sort", "Filter"] + headlines: ["Sort", "Filter", "Advanced Sorting and Filtering", "Multi-Level Sorting", "Complex Filtering"] }, { title: "Alignment", @@ -49,7 +49,11 @@ describe("Testing Each Documentation Page", () => { { title: "Calculated Columns", headlines: [ - "Sometimes you need a new column added automatically whose val is dependent on other fields in the same row" + "Sometimes you need a new column added automatically whose val is dependent on other fields in the same row", + "Using All Parameters", + "Advanced Examples", + "Using Row Index for Ranking", + "Complex Computations with Multiple Subjects" ] }, { diff --git a/cypress/e2e/url_tests.cy.ts b/cypress/e2e/url_tests.cy.ts index 1357e959..9907a329 100644 --- a/cypress/e2e/url_tests.cy.ts +++ b/cypress/e2e/url_tests.cy.ts @@ -45,7 +45,7 @@ describe("Testing Each Documentation Page", () => { { url: "/docs/doc-sort-filter", title: "Sort and Filter", - headlines: ["Sort", "Filter"] + headlines: ["Sort", "Filter", "Advanced Sorting and Filtering", "Multi-Level Sorting", "Complex Filtering"] }, { url: "/docs/doc-alignment", @@ -61,7 +61,11 @@ describe("Testing Each Documentation Page", () => { url: "/docs/doc-computed-function", title: "Calculated Columns", headlines: [ - "Sometimes you need a new column added automatically whose val is dependent on other fields in the same row" + "Sometimes you need a new column added automatically whose val is dependent on other fields in the same row", + "Using All Parameters", + "Advanced Examples", + "Using Row Index for Ranking", + "Complex Computations with Multiple Subjects" ] }, { diff --git a/docs/api/advanced-features.md b/docs/api/advanced-features.md deleted file mode 100644 index 51d216dd..00000000 --- a/docs/api/advanced-features.md +++ /dev/null @@ -1,598 +0,0 @@ ---- -id: advanced-features -title: Advanced Features -sidebar_label: Advanced Features ---- - -# Advanced Features - -This section covers advanced features and techniques for complex table operations. - -## Computed Columns - -Computed columns allow you to create new columns based on calculations or transformations of existing data. - -### Basic Computed Columns - -```javascript -const { Table } = require("console-table-printer"); - -const table = new Table({ - columns: [ - { name: "price", alignment: "right" }, - { name: "quantity", alignment: "right" } - ], - computedColumns: [ - { - name: "total", - function: (row) => row.price * row.quantity - } - ] -}); - -table.addRows([ - { price: 10.50, quantity: 3 }, - { price: 25.00, quantity: 2 }, - { price: 5.75, quantity: 5 } -]); - -table.printTable(); -``` - -### Using Row Index - -```javascript -const table = new Table({ - columns: [ - { name: "name", alignment: "left" }, - { name: "score", alignment: "right" } - ], - computedColumns: [ - { - name: "rank", - function: (row, index) => `#${index + 1}` - }, - { - name: "percentage", - function: (row, index, array) => { - const maxScore = Math.max(...array.map(r => r.score)); - return `${((row.score / maxScore) * 100).toFixed(1)}%`; - } - } - ] -}); - -table.addRows([ - { name: "Alice", score: 85 }, - { name: "Bob", score: 92 }, - { name: "Charlie", score: 78 } -]); - -table.printTable(); -``` - -### Complex Computations - -```javascript -const table = new Table({ - columns: [ - { name: "name", alignment: "left" }, - { name: "math", alignment: "right" }, - { name: "science", alignment: "right" }, - { name: "english", alignment: "right" } - ], - computedColumns: [ - { - name: "average", - function: (row) => { - const scores = [row.math, row.science, row.english]; - return (scores.reduce((a, b) => a + b, 0) / scores.length).toFixed(1); - } - }, - { - name: "grade", - function: (row) => { - const avg = parseFloat(row.average); - if (avg >= 90) return "A"; - if (avg >= 80) return "B"; - if (avg >= 70) return "C"; - if (avg >= 60) return "D"; - return "F"; - } - }, - { - name: "status", - function: (row, index, array) => { - const avg = parseFloat(row.average); - const classAvg = array.reduce((sum, r) => sum + parseFloat(r.average), 0) / array.length; - return avg > classAvg ? "Above Average" : "Below Average"; - } - } - ] -}); - -table.addRows([ - { name: "Alice", math: 85, science: 90, english: 88 }, - { name: "Bob", math: 92, science: 88, english: 85 }, - { name: "Charlie", math: 78, science: 82, english: 80 } -]); - -table.printTable(); -``` - -## Custom Styling - -### Custom Border Styles - -```javascript -const table = new Table({ - style: { - headerTop: { - left: "┌", - mid: "┬", - right: "┐", - other: "─" - }, - headerBottom: { - left: "├", - mid: "┼", - right: "┤", - other: "─" - }, - tableBottom: { - left: "└", - mid: "┴", - right: "┘", - other: "─" - }, - vertical: "│" - }, - columns: [ - { name: "id", alignment: "left" }, - { name: "name", alignment: "center" }, - { name: "age", alignment: "right" } - ] -}); - -table.addRows([ - { id: 1, name: "John", age: 25 }, - { id: 2, name: "Jane", age: 30 } -]); - -table.printTable(); -``` - -### Colored Borders with Chalk - -```javascript -const chalk = require('chalk'); - -const table = new Table({ - style: { - headerTop: { - left: chalk.blue("╔"), - mid: chalk.blue("╦"), - right: chalk.blue("╗"), - other: chalk.blue("═") - }, - headerBottom: { - left: chalk.blue("╟"), - mid: chalk.blue("╬"), - right: chalk.blue("╢"), - other: chalk.blue("═") - }, - tableBottom: { - left: chalk.blue("╚"), - mid: chalk.blue("╩"), - right: chalk.blue("╝"), - other: chalk.blue("═") - }, - vertical: chalk.blue("║") - }, - columns: [ - { name: "id", alignment: "left", color: "cyan" }, - { name: "name", alignment: "center", color: "yellow" }, - { name: "age", alignment: "right", color: "green" } - ] -}); - -table.addRows([ - { id: 1, name: "John", age: 25 }, - { id: 2, name: "Jane", age: 30 } -]); - -table.printTable(); -``` - -## Custom Color Mapping - -### Semantic Colors - -```javascript -const table = new Table({ - colorMap: { - success: '\x1b[32m', // Green - error: '\x1b[31m', // Red - warning: '\x1b[33m', // Yellow - info: '\x1b[36m', // Cyan - highlight: '\x1b[1m', // Bold - dim: '\x1b[2m', // Dim - underline: '\x1b[4m', // Underline - critical: '\x1b[1m\x1b[31m' // Bold Red - }, - columns: [ - { name: "id", alignment: "left" }, - { name: "status", alignment: "center" }, - { name: "message", alignment: "left" } - ] -}); - -table.addRows([ - { id: 1, status: "success", message: "Operation completed" }, - { id: 2, status: "error", message: "Failed to connect" }, - { id: 3, status: "warning", message: "Low disk space" }, - { id: 4, status: "critical", message: "System crash detected" } -]); - -table.printTable(); -``` - -### Conditional Coloring - -```javascript -const table = new Table({ - columns: [ - { name: "name", alignment: "left" }, - { name: "score", alignment: "right" }, - { name: "status", alignment: "center" } - ] -}); - -const data = [ - { name: "Alice", score: 95 }, - { name: "Bob", score: 75 }, - { name: "Charlie", score: 60 }, - { name: "David", score: 45 } -]; - -data.forEach(row => { - let color = "white"; - let status = "Pass"; - - if (row.score >= 90) { - color = "green"; - status = "Excellent"; - } else if (row.score >= 80) { - color = "cyan"; - status = "Good"; - } else if (row.score >= 70) { - color = "yellow"; - status = "Average"; - } else if (row.score >= 60) { - color = "red"; - status = "Poor"; - } else { - color = "magenta"; - status = "Fail"; - } - - table.addRow( - { name: row.name, score: row.score, status: status }, - { color: color } - ); -}); - -table.printTable(); -``` - -## Performance Optimization - -### Large Dataset Handling - -```javascript -const table = new Table({ - // Pre-define columns for better performance - columns: [ - { name: "id", alignment: "left" }, - { name: "name", alignment: "center" }, - { name: "email", alignment: "left" }, - { name: "status", alignment: "center" } - ], - - // Filter data before adding to table - filter: (row) => row.status === "active", - - // Sort efficiently - sort: (row1, row2) => row1.name.localeCompare(row2.name) -}); - -// Process data in chunks for large datasets -async function processLargeDataset(data) { - const chunkSize = 1000; - - for (let i = 0; i < data.length; i += chunkSize) { - const chunk = data.slice(i, i + chunkSize); - - // Process chunk - const processedChunk = chunk.map(row => ({ - ...row, - email: row.email.toLowerCase(), - status: row.active ? "active" : "inactive" - })); - - // Add to table - table.addRows(processedChunk); - - // Optional: Print progress - console.log(`Processed ${Math.min(i + chunkSize, data.length)} of ${data.length} records`); - } - - table.printTable(); -} -``` - -### Memory-Efficient Computed Columns - -```javascript -const table = new Table({ - columns: [ - { name: "id", alignment: "left" }, - { name: "value", alignment: "right" } - ], - computedColumns: [ - { - name: "running_total", - function: (row, index, array) => { - // Calculate running total efficiently - return array - .slice(0, index + 1) - .reduce((sum, r) => sum + r.value, 0); - } - } - ] -}); - -// For very large datasets, consider pre-calculating -function preCalculateRunningTotal(data) { - let runningTotal = 0; - return data.map(row => ({ - ...row, - running_total: runningTotal += row.value - })); -} -``` - -## Advanced Filtering and Sorting - -### Multi-Level Sorting - -```javascript -const table = new Table({ - columns: [ - { name: "department", alignment: "left" }, - { name: "name", alignment: "left" }, - { name: "salary", alignment: "right" } - ], - sort: (row1, row2) => { - // First sort by department - const deptCompare = row1.department.localeCompare(row2.department); - if (deptCompare !== 0) return deptCompare; - - // Then sort by salary (descending) - return row2.salary - row1.salary; - } -}); - -table.addRows([ - { department: "Engineering", name: "Alice", salary: 85000 }, - { department: "Engineering", name: "Bob", salary: 90000 }, - { department: "Marketing", name: "Charlie", salary: 70000 }, - { department: "Marketing", name: "David", salary: 75000 }, - { department: "Sales", name: "Eve", salary: 65000 } -]); - -table.printTable(); -``` - -### Complex Filtering - -```javascript -const table = new Table({ - columns: [ - { name: "id", alignment: "left" }, - { name: "name", alignment: "left" }, - { name: "age", alignment: "right" }, - { name: "department", alignment: "left" }, - { name: "salary", alignment: "right" } - ], - filter: (row) => { - // Multiple conditions - const isAdult = row.age >= 18; - const isHighSalary = row.salary >= 50000; - const isEngineering = row.department === "Engineering"; - - // Complex logic - return isAdult && (isHighSalary || isEngineering); - } -}); - -table.addRows([ - { id: 1, name: "Alice", age: 25, department: "Engineering", salary: 85000 }, - { id: 2, name: "Bob", age: 17, department: "Marketing", salary: 45000 }, - { id: 3, name: "Charlie", age: 30, department: "Sales", salary: 60000 }, - { id: 4, name: "David", age: 22, department: "Engineering", salary: 40000 } -]); - -table.printTable(); -``` - -## Dynamic Table Building - -### API Data Integration - -```javascript -async function buildUserTable() { - const table = new Table({ - title: "User Directory", - style: "fatBorder" - }); - - try { - // Fetch data from API - const response = await fetch('https://api.example.com/users'); - const users = await response.json(); - - // Determine columns dynamically - const sampleUser = users[0]; - const columns = Object.keys(sampleUser).map(key => ({ - name: key, - alignment: typeof sampleUser[key] === 'number' ? 'right' : 'left', - color: key === 'status' ? 'yellow' : 'white' - })); - - // Add columns - table.addColumns(columns); - - // Add rows with conditional styling - users.forEach((user, index) => { - const options = {}; - - // Color based on status - if (user.status === 'active') { - options.color = 'green'; - } else if (user.status === 'inactive') { - options.color = 'red'; - } - - // Add separator every 10 users - if ((index + 1) % 10 === 0) { - options.separator = true; - } - - table.addRow(user, options); - }); - - table.printTable(); - - } catch (error) { - console.error('Failed to build table:', error); - } -} -``` - -### Real-time Data Updates - -```javascript -class LiveTable { - constructor() { - this.table = new Table({ - columns: [ - { name: "timestamp", alignment: "left" }, - { name: "event", alignment: "left" }, - { name: "status", alignment: "center" } - ], - title: "Live Event Log" - }); - } - - addEvent(event, status) { - const timestamp = new Date().toLocaleTimeString(); - - let color = "white"; - if (status === "success") color = "green"; - else if (status === "error") color = "red"; - else if (status === "warning") color = "yellow"; - - this.table.addRow( - { timestamp, event, status }, - { color, separator: status === "error" } - ); - - // Clear console and re-render - console.clear(); - this.table.printTable(); - } -} - -// Usage -const liveTable = new LiveTable(); - -// Simulate real-time events -setInterval(() => { - const events = ["Data processed", "User logged in", "File uploaded"]; - const statuses = ["success", "warning", "error"]; - - const randomEvent = events[Math.floor(Math.random() * events.length)]; - const randomStatus = statuses[Math.floor(Math.random() * statuses.length)]; - - liveTable.addEvent(randomEvent, randomStatus); -}, 2000); -``` - -## Error Handling and Validation - -### Robust Table Creation - -```javascript -function createSafeTable(data, options = {}) { - try { - // Validate data - if (!Array.isArray(data) || data.length === 0) { - throw new Error("Data must be a non-empty array"); - } - - // Validate first row structure - const firstRow = data[0]; - if (typeof firstRow !== 'object' || firstRow === null) { - throw new Error("Each row must be an object"); - } - - // Create table with error handling - const table = new Table({ - ...options, - columns: options.columns || Object.keys(firstRow).map(key => ({ - name: key, - alignment: typeof firstRow[key] === 'number' ? 'right' : 'left' - })) - }); - - // Add rows with validation - data.forEach((row, index) => { - try { - // Validate row structure - if (typeof row !== 'object' || row === null) { - console.warn(`Skipping invalid row at index ${index}`); - return; - } - - table.addRow(row); - } catch (error) { - console.warn(`Error adding row ${index}:`, error.message); - } - }); - - return table; - - } catch (error) { - console.error("Failed to create table:", error.message); - return null; - } -} - -// Usage -const data = [ - { id: 1, name: "John", age: 25 }, - { id: 2, name: "Jane", age: 30 }, - null, // Invalid row - { id: 3, name: "Bob", age: 35 } -]; - -const table = createSafeTable(data, { - title: "User List", - style: "fatBorder" -}); - -if (table) { - table.printTable(); -} -``` \ No newline at end of file diff --git a/docs/doc-computed-function.md b/docs/doc-computed-function.md index 0cde14ed..8302b06e 100644 --- a/docs/doc-computed-function.md +++ b/docs/doc-computed-function.md @@ -122,4 +122,95 @@ This example shows: 2. Using `index` to add student numbers 3. Using `array` to compare scores with class average -The output will show each student's score, their pass/fail status, student number, and how they compare to the class average. \ No newline at end of file +The output will show each student's score, their pass/fail status, student number, and how they compare to the class average. + +## Advanced Examples + +### Using Row Index for Ranking + +```javascript +const { Table } = require("console-table-printer"); + +const table = new Table({ + columns: [ + { name: "name", alignment: "left" }, + { name: "score", alignment: "right" } + ], + computedColumns: [ + { + name: "rank", + function: (row, index) => `#${index + 1}` + }, + { + name: "percentage", + function: (row, index, array) => { + const maxScore = Math.max(...array.map(r => r.score)); + return `${((row.score / maxScore) * 100).toFixed(1)}%`; + } + } + ] +}); + +table.addRows([ + { name: "Alice", score: 85 }, + { name: "Bob", score: 92 }, + { name: "Charlie", score: 78 } +]); + +table.printTable(); +``` + +Screenshot + +### Complex Computations with Multiple Subjects + +```javascript +const { Table } = require("console-table-printer"); + +const table = new Table({ + columns: [ + { name: "name", alignment: "left" }, + { name: "math", alignment: "right" }, + { name: "science", alignment: "right" }, + { name: "english", alignment: "right" } + ], + computedColumns: [ + { + name: "average", + function: (row) => { + const scores = [row.math, row.science, row.english]; + return (scores.reduce((a, b) => a + b, 0) / scores.length).toFixed(1); + } + }, + { + name: "grade", + function: (row) => { + const avg = parseFloat(row.average); + if (avg >= 90) return "A"; + if (avg >= 80) return "B"; + if (avg >= 70) return "C"; + if (avg >= 60) return "D"; + return "F"; + } + }, + { + name: "status", + function: (row, index, array) => { + const avg = parseFloat(row.average); + const classAvg = array.reduce((sum, r) => sum + parseFloat(r.average), 0) / array.length; + return avg > classAvg ? "Above Average" : "Below Average"; + } + } + ] +}); + +table.addRows([ + { name: "Alice", math: 85, science: 90, english: 88 }, + { name: "Bob", math: 92, science: 88, english: 85 }, + { name: "Charlie", math: 78, science: 82, english: 80 } +]); + +table.printTable(); +``` + +Screenshot diff --git a/docs/doc-sort-filter.md b/docs/doc-sort-filter.md index 63466f67..3a795128 100644 --- a/docs/doc-sort-filter.md +++ b/docs/doc-sort-filter.md @@ -55,3 +55,75 @@ p.printTable(); ``` Screenshot + +## Advanced Sorting and Filtering + +### Multi-Level Sorting + +```javascript +const { Table } = require("console-table-printer"); + +const table = new Table({ + columns: [ + { name: "department", alignment: "left" }, + { name: "name", alignment: "left" }, + { name: "salary", alignment: "right" } + ], + sort: (row1, row2) => { + // First sort by department + const deptCompare = row1.department.localeCompare(row2.department); + if (deptCompare !== 0) return deptCompare; + + // Then sort by salary (descending) + return row2.salary - row1.salary; + } +}); + +table.addRows([ + { department: "Engineering", name: "Alice", salary: 85000 }, + { department: "Engineering", name: "Bob", salary: 90000 }, + { department: "Marketing", name: "Charlie", salary: 70000 }, + { department: "Marketing", name: "David", salary: 75000 }, + { department: "Sales", name: "Eve", salary: 65000 } +]); + +table.printTable(); +``` + +Screenshot + +### Complex Filtering + +```javascript +const { Table } = require("console-table-printer"); + +const table = new Table({ + columns: [ + { name: "id", alignment: "left" }, + { name: "name", alignment: "left" }, + { name: "age", alignment: "right" }, + { name: "department", alignment: "left" }, + { name: "salary", alignment: "right" } + ], + filter: (row) => { + // Multiple conditions + const isAdult = row.age >= 18; + const isHighSalary = row.salary >= 50000; + const isEngineering = row.department === "Engineering"; + + // Complex logic + return isAdult && (isHighSalary || isEngineering); + } +}); + +table.addRows([ + { id: 1, name: "Alice", age: 25, department: "Engineering", salary: 85000 }, + { id: 2, name: "Bob", age: 17, department: "Marketing", salary: 45000 }, + { id: 3, name: "Charlie", age: 30, department: "Sales", salary: 60000 }, + { id: 4, name: "David", age: 22, department: "Engineering", salary: 40000 } +]); + +table.printTable(); +``` + +Screenshot diff --git a/examples.ts b/examples.ts index 5e082e7d..533cc5d7 100644 --- a/examples.ts +++ b/examples.ts @@ -1,77 +1,347 @@ import { Table } from "console-table-printer"; +import chalk from "chalk"; -// Example 1: Adding a Single Column -console.log("\n=== Example 1: Adding a Single Column ===\n"); -const table1 = new Table({ - columns: [{ name: "Serial", alignment: "left" }], +console.log("=== ADVANCED EXAMPLES DEMONSTRATION ===\n"); + +// Example 1: Advanced Computed Columns - Using Row Index for Ranking +console.log("1. ADVANCED COMPUTED COLUMNS - Using Row Index for Ranking"); +console.log("=" .repeat(60)); + +const rankingTable = new Table({ + columns: [ + { name: "name", alignment: "left" }, + { name: "score", alignment: "right" } + ], + computedColumns: [ + { + name: "rank", + function: (row, index) => `#${index + 1}` + }, + { + name: "percentage", + function: (row, index, array) => { + const maxScore = Math.max(...array.map(r => r.score)); + return `${((row.score / maxScore) * 100).toFixed(1)}%`; + } + } + ] +}); + +rankingTable.addRows([ + { name: "Alice", score: 85 }, + { name: "Bob", score: 92 }, + { name: "Charlie", score: 78 } +]); + +rankingTable.printTable(); +console.log("\n"); + +// Example 2: Complex Computations with Multiple Subjects +console.log("2. COMPLEX COMPUTATIONS WITH MULTIPLE SUBJECTS"); +console.log("=" .repeat(60)); + +const gradeTable = new Table({ + columns: [ + { name: "name", alignment: "left" }, + { name: "math", alignment: "right" }, + { name: "science", alignment: "right" }, + { name: "english", alignment: "right" } + ], + computedColumns: [ + { + name: "average", + function: (row) => { + const scores = [row.math, row.science, row.english]; + return (scores.reduce((a, b) => a + b, 0) / scores.length).toFixed(1); + } + }, + { + name: "grade", + function: (row) => { + const avg = parseFloat(row.average); + if (avg >= 90) return "A"; + if (avg >= 80) return "B"; + if (avg >= 70) return "C"; + if (avg >= 60) return "D"; + return "F"; + } + }, + { + name: "status", + function: (row, index, array) => { + const avg = parseFloat(row.average); + const classAvg = array.reduce((sum, r) => sum + parseFloat(r.average), 0) / array.length; + return avg > classAvg ? "Above Average" : "Below Average"; + } + } + ] +}); + +gradeTable.addRows([ + { name: "Alice", math: 85, science: 90, english: 88 }, + { name: "Bob", math: 92, science: 88, english: 85 }, + { name: "Charlie", math: 78, science: 82, english: 80 } +]); + +gradeTable.printTable(); +console.log("\n"); + +// Example 3: Memory-Efficient Computed Columns +console.log("3. MEMORY-EFFICIENT COMPUTED COLUMNS"); +console.log("=" .repeat(60)); + +const runningTotalTable = new Table({ + columns: [ + { name: "id", alignment: "left" }, + { name: "value", alignment: "right" } + ], + computedColumns: [ + { + name: "running_total", + function: (row, index, array) => { + return array + .slice(0, index + 1) + .reduce((sum, r) => sum + r.value, 0); + } + } + ] +}); + +runningTotalTable.addRows([ + { id: 1, value: 10 }, + { id: 2, value: 25 }, + { id: 3, value: 15 }, + { id: 4, value: 30 } +]); + +runningTotalTable.printTable(); +console.log("\n"); + +// Example 4: Custom Border Styles +console.log("4. CUSTOM BORDER STYLES"); +console.log("=" .repeat(60)); + +const customBorderTable = new Table({ + style: { + headerTop: { + left: "┌", + mid: "┬", + right: "┐", + other: "─" + }, + headerBottom: { + left: "├", + mid: "┼", + right: "┤", + other: "─" + }, + tableBottom: { + left: "└", + mid: "┴", + right: "┘", + other: "─" + }, + vertical: "│" + }, + columns: [ + { name: "id", alignment: "left" }, + { name: "name", alignment: "center" }, + { name: "age", alignment: "right" } + ] +}); + +customBorderTable.addRows([ + { id: 1, name: "John", age: 25 }, + { id: 2, name: "Jane", age: 30 } +]); + +customBorderTable.printTable(); +console.log("\n"); + +// Example 5: Colored Borders with Chalk +console.log("5. COLORED BORDERS WITH CHALK"); +console.log("=" .repeat(60)); + +const coloredBorderTable = new Table({ + style: { + headerTop: { + left: chalk.blue("╔"), + mid: chalk.blue("╦"), + right: chalk.blue("╗"), + other: chalk.blue("═") + }, + headerBottom: { + left: chalk.blue("╟"), + mid: chalk.blue("╬"), + right: chalk.blue("╢"), + other: chalk.blue("═") + }, + tableBottom: { + left: chalk.blue("╚"), + mid: chalk.blue("╩"), + right: chalk.blue("╝"), + other: chalk.blue("═") + }, + vertical: chalk.blue("║") + }, + columns: [ + { name: "id", alignment: "left", color: "cyan" }, + { name: "name", alignment: "center", color: "yellow" }, + { name: "age", alignment: "right", color: "green" } + ] }); -table1.addColumn({ name: "Name", alignment: "center" }); -table1.addColumn({ name: "Price", alignment: "right" }); -table1.printTable(); +coloredBorderTable.addRows([ + { id: 1, name: "John", age: 25 }, + { id: 2, name: "Jane", age: 30 } +]); + +coloredBorderTable.printTable(); +console.log("\n"); -// Example 2: Adding Multiple Columns -console.log("\n=== Example 2: Adding Multiple Columns ===\n"); -const table2 = new Table(); +// Example 6: Semantic Colors +console.log("6. SEMANTIC COLORS"); +console.log("=" .repeat(60)); -table2.addColumns([ - { name: "Item", alignment: "left" }, - { name: "Description", alignment: "center" }, +const semanticColorTable = new Table({ + colorMap: { + success: '\x1b[32m', // Green + error: '\x1b[31m', // Red + warning: '\x1b[33m', // Yellow + info: '\x1b[36m', // Cyan + highlight: '\x1b[1m', // Bold + dim: '\x1b[2m', // Dim + underline: '\x1b[4m', // Underline + critical: '\x1b[1m\x1b[31m' // Bold Red + }, + columns: [ + { name: "id", alignment: "left" }, + { name: "status", alignment: "center" }, + { name: "message", alignment: "left" } + ] +}); + +semanticColorTable.addRows([ + { id: 1, status: "success", message: "Operation completed" }, + { id: 2, status: "error", message: "Failed to connect" }, + { id: 3, status: "warning", message: "Low disk space" }, + { id: 4, status: "critical", message: "System crash detected" } ]); -table2.printTable(); - -// Example 3: Chained Column Adding -console.log("\n=== Example 3: Chained Column Adding ===\n"); -const table3 = new Table(); - -table3 - .addColumn({ name: "Weight", alignment: "left" }) - .addColumn({ name: "Color", alignment: "center" }) - .addColumn({ name: "Price", alignment: "right" }); -table3.printTable(); - -// Example 4: Basic Row Divider -console.log("\n=== Example 4: Basic Row Divider ===\n"); -const table4 = new Table(); - -table4.addRow({ amount: 1, name: "Apple" }); -table4.addRow({ amount: 2, name: "Pear" }); -table4.addRow({ amount: 3, name: "Banana" }, { separator: true }); -table4.addRow({ amount: 6, name: "Total" }); -table4.printTable(); - -// Example 5: Multiple Sections with Dividers -console.log("\n=== Example 5: Multiple Sections with Dividers ===\n"); -const table5 = new Table(); - -// Fruits section -table5.addRow({ category: "Fruits", item: "Apple", price: 1.0 }); -table5.addRow({ category: "Fruits", item: "Banana", price: 0.5 }); -table5.addRow({ category: "Fruits", item: "Orange", price: 0.75 }, { separator: true }); - -// Vegetables section -table5.addRow({ category: "Vegetables", item: "Carrot", price: 0.3 }); -table5.addRow({ category: "Vegetables", item: "Potato", price: 0.4 }); -table5.addRow({ category: "Vegetables", item: "Tomato", price: 0.6 }, { separator: true }); - -// Summary section -table5.addRow({ category: "Total Items", item: "6", price: 3.55 }); -table5.printTable(); - -// Example 6: Computed Values with Dividers -console.log("\n=== Example 6: Computed Values with Dividers ===\n"); -const table6 = new Table(); - -// Sales data -table6.addRow({ quarter: "Q1", sales: 1000, profit: 200 }); -table6.addRow({ quarter: "Q2", sales: 1500, profit: 350 }); -table6.addRow({ quarter: "Q3", sales: 1200, profit: 280 }); -table6.addRow({ quarter: "Q4", sales: 2000, profit: 500 }, { separator: true }); - -// Yearly summary -table6.addRow({ - quarter: "Total", - sales: 5700, - profit: 1330 + +semanticColorTable.printTable(); +console.log("\n"); + +// Example 7: Conditional Coloring +console.log("7. CONDITIONAL COLORING"); +console.log("=" .repeat(60)); + +const conditionalColorTable = new Table({ + columns: [ + { name: "name", alignment: "left" }, + { name: "score", alignment: "right" }, + { name: "status", alignment: "center" } + ] +}); + +const data = [ + { name: "Alice", score: 95 }, + { name: "Bob", score: 75 }, + { name: "Charlie", score: 60 }, + { name: "David", score: 45 } +]; + +data.forEach(row => { + let color = "white"; + let status = "Pass"; + + if (row.score >= 90) { + color = "green"; + status = "Excellent"; + } else if (row.score >= 80) { + color = "cyan"; + status = "Good"; + } else if (row.score >= 70) { + color = "yellow"; + status = "Average"; + } else if (row.score >= 60) { + color = "red"; + status = "Poor"; + } else { + color = "magenta"; + status = "Fail"; + } + + conditionalColorTable.addRow( + { name: row.name, score: row.score, status: status }, + { color: color } + ); }); -table6.printTable(); \ No newline at end of file + +conditionalColorTable.printTable(); +console.log("\n"); + +// Example 8: Multi-Level Sorting +console.log("8. MULTI-LEVEL SORTING"); +console.log("=" .repeat(60)); + +const multiSortTable = new Table({ + columns: [ + { name: "department", alignment: "left" }, + { name: "name", alignment: "left" }, + { name: "salary", alignment: "right" } + ], + sort: (row1, row2) => { + // First sort by department + const deptCompare = row1.department.localeCompare(row2.department); + if (deptCompare !== 0) return deptCompare; + + // Then sort by salary (descending) + return row2.salary - row1.salary; + } +}); + +multiSortTable.addRows([ + { department: "Engineering", name: "Alice", salary: 85000 }, + { department: "Engineering", name: "Bob", salary: 90000 }, + { department: "Marketing", name: "Charlie", salary: 70000 }, + { department: "Marketing", name: "David", salary: 75000 }, + { department: "Sales", name: "Eve", salary: 65000 } +]); + +multiSortTable.printTable(); +console.log("\n"); + +// Example 9: Complex Filtering +console.log("9. COMPLEX FILTERING"); +console.log("=" .repeat(60)); + +const complexFilterTable = new Table({ + columns: [ + { name: "id", alignment: "left" }, + { name: "name", alignment: "left" }, + { name: "age", alignment: "right" }, + { name: "department", alignment: "left" }, + { name: "salary", alignment: "right" } + ], + filter: (row) => { + // Multiple conditions + const isAdult = row.age >= 18; + const isHighSalary = row.salary >= 50000; + const isEngineering = row.department === "Engineering"; + + // Complex logic + return isAdult && (isHighSalary || isEngineering); + } +}); + +complexFilterTable.addRows([ + { id: 1, name: "Alice", age: 25, department: "Engineering", salary: 85000 }, + { id: 2, name: "Bob", age: 17, department: "Marketing", salary: 45000 }, + { id: 3, name: "Charlie", age: 30, department: "Sales", salary: 60000 }, + { id: 4, name: "David", age: 22, department: "Engineering", salary: 40000 } +]); + +complexFilterTable.printTable(); +console.log("\n"); + +console.log("=== ALL ADVANCED EXAMPLES COMPLETED ==="); \ No newline at end of file diff --git a/package.json b/package.json index 0bdccfee..caccffdb 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,8 @@ "@docusaurus/core": "^3.8.1", "@docusaurus/preset-classic": "^3.8.1", "@docusaurus/remark-plugin-npm2yarn": "3.8.1", + "chalk": "^5.4.1", + "console-table-printer": "^2.14.3", "react": "^19.1.0", "react-dom": "^19.1.0", "styled-components": "^6.1.19" @@ -51,12 +53,12 @@ "@types/react-helmet": "^6.1.11", "@types/react-router-dom": "^5.3.3", "@types/styled-components": "^5.1.34", - "babel-jest": "^30.0.0", + "babel-jest": "^30.0.2", "codecov": "^3.8.3", - "cypress": "^14.4.1", + "cypress": "^14.5.0", "identity-obj-proxy": "^3.0.0", - "jest": "^30.0.0", - "jest-environment-jsdom": "^30.0.0", + "jest": "^30.0.2", + "jest-environment-jsdom": "^30.0.2", "jest-junit": "^16.0.0", "start-server-and-test": "^2.0.12", "typescript": "^5.8.3" diff --git a/sidebars.js b/sidebars.js index f017fa0c..781df063 100644 --- a/sidebars.js +++ b/sidebars.js @@ -28,7 +28,6 @@ module.exports = { "api/core-functions", "api/table-methods", "api/configuration", - "api/advanced-features", ], }, }; diff --git a/static/img/examples/doc-computed-function/Screenshot-multiple-subjects.png b/static/img/examples/doc-computed-function/Screenshot-multiple-subjects.png new file mode 100644 index 00000000..38c680b5 Binary files /dev/null and b/static/img/examples/doc-computed-function/Screenshot-multiple-subjects.png differ diff --git a/static/img/examples/doc-computed-function/ScreenshotRow-Index-for-Ranking.png b/static/img/examples/doc-computed-function/ScreenshotRow-Index-for-Ranking.png new file mode 100644 index 00000000..b22b5ab4 Binary files /dev/null and b/static/img/examples/doc-computed-function/ScreenshotRow-Index-for-Ranking.png differ diff --git a/static/img/examples/doc-sort-filter/complex-filter.png b/static/img/examples/doc-sort-filter/complex-filter.png new file mode 100644 index 00000000..4817f8a7 Binary files /dev/null and b/static/img/examples/doc-sort-filter/complex-filter.png differ diff --git a/static/img/examples/doc-sort-filter/multi-level-sort.png b/static/img/examples/doc-sort-filter/multi-level-sort.png new file mode 100644 index 00000000..738f1f47 Binary files /dev/null and b/static/img/examples/doc-sort-filter/multi-level-sort.png differ diff --git a/yarn.lock b/yarn.lock index b312078b..bb5770c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -34,126 +34,126 @@ resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.9.tgz#5f38868f7cb1d54b014b17a10fc4f7e79d427fa8" integrity sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ== -"@algolia/client-abtesting@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.28.0.tgz#28db5173bfdd5fb07cb58481d243d06fb4b57500" - integrity sha512-oGMaBCIpvz3n+4rCz/73ldo/Dw95YFx6+MAQkNiCfsgolB2tduaiZvNOvdkm86eKqSKDDBGBo54GQXZ5YX6Bjg== - dependencies: - "@algolia/client-common" "5.28.0" - "@algolia/requester-browser-xhr" "5.28.0" - "@algolia/requester-fetch" "5.28.0" - "@algolia/requester-node-http" "5.28.0" - -"@algolia/client-analytics@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.28.0.tgz#06afd7911a0ba150363c57e629f3978b21fe2b1b" - integrity sha512-G+TTdNnuwUSy8evolyNE3I74uSIXPU4LLDnJmB4d6TkLvvzMAjwsMBuHHjwYpw37+c4tH0dT4u+39cyxrZNojg== - dependencies: - "@algolia/client-common" "5.28.0" - "@algolia/requester-browser-xhr" "5.28.0" - "@algolia/requester-fetch" "5.28.0" - "@algolia/requester-node-http" "5.28.0" - -"@algolia/client-common@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.28.0.tgz#c393bea005684573a632150bb802b9374bb96a69" - integrity sha512-lqa0Km1/YWfPplNB8jX9kstaCl2LO6ziQAJEBtHxw2sJp/mlxJIAuudBUbEhoUrKQvI7N4erNYawl6ejic7gfw== - -"@algolia/client-insights@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.28.0.tgz#48db6b9cc36bb922d75e7dead57baea5536075a0" - integrity sha512-pGsDrlnt0UMXDjQuIpKQSfl7PVx+KcqcwVgkgITwQ45akckTwmbpaV4rZF2k3wgIbOECFZGnpArWF5cSrE4T3g== - dependencies: - "@algolia/client-common" "5.28.0" - "@algolia/requester-browser-xhr" "5.28.0" - "@algolia/requester-fetch" "5.28.0" - "@algolia/requester-node-http" "5.28.0" - -"@algolia/client-personalization@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.28.0.tgz#6e9bb322e6199c5b2bb12b3b86cfa0ceb49fbbfb" - integrity sha512-d/Uot/LH8YJeFyqpAmTN/LxueqV5mLD5K4aAKTDVP4CBNNubX4Z+0sveRcxWQZiORVLrs5zR1G5Buxmab2Xb9w== - dependencies: - "@algolia/client-common" "5.28.0" - "@algolia/requester-browser-xhr" "5.28.0" - "@algolia/requester-fetch" "5.28.0" - "@algolia/requester-node-http" "5.28.0" - -"@algolia/client-query-suggestions@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.28.0.tgz#99e543bde0a3a2b0e0e76391079bac2d318351a0" - integrity sha512-XygCxyxJ5IwqsTrzpsAG2O/lr8GsnMA3ih7wzbXtot+ZyAhzDUFwlQSjCCmjACNbrBEaIvtiGbjX/z+HZd902Q== - dependencies: - "@algolia/client-common" "5.28.0" - "@algolia/requester-browser-xhr" "5.28.0" - "@algolia/requester-fetch" "5.28.0" - "@algolia/requester-node-http" "5.28.0" - -"@algolia/client-search@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.28.0.tgz#cb67a7d946fa3314a6f8a5f7489f757f0fd1b573" - integrity sha512-zLEddu9TEwFT/YUJkA3oUwqQYHeGEj64fi0WyVRq+siJVfxt4AYkFfcMBcSr2iR1Wo9Mk10IPOhk3DUr0TSncg== - dependencies: - "@algolia/client-common" "5.28.0" - "@algolia/requester-browser-xhr" "5.28.0" - "@algolia/requester-fetch" "5.28.0" - "@algolia/requester-node-http" "5.28.0" +"@algolia/client-abtesting@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.29.0.tgz#af9928f3b206cc5224e30256ea27d4e4d6023f22" + integrity sha512-AM/6LYMSTnZvAT5IarLEKjYWOdV+Fb+LVs8JRq88jn8HH6bpVUtjWdOZXqX1hJRXuCAY8SdQfb7F8uEiMNXdYQ== + dependencies: + "@algolia/client-common" "5.29.0" + "@algolia/requester-browser-xhr" "5.29.0" + "@algolia/requester-fetch" "5.29.0" + "@algolia/requester-node-http" "5.29.0" + +"@algolia/client-analytics@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.29.0.tgz#d71b2f6e6c77c390343ee0ab73806378adb295eb" + integrity sha512-La34HJh90l0waw3wl5zETO8TuukeUyjcXhmjYZL3CAPLggmKv74mobiGRIb+mmBENybiFDXf/BeKFLhuDYWMMQ== + dependencies: + "@algolia/client-common" "5.29.0" + "@algolia/requester-browser-xhr" "5.29.0" + "@algolia/requester-fetch" "5.29.0" + "@algolia/requester-node-http" "5.29.0" + +"@algolia/client-common@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.29.0.tgz#0908e90c5dc881be08eab4e595bf981e23525474" + integrity sha512-T0lzJH/JiCxQYtCcnWy7Jf1w/qjGDXTi2npyF9B9UsTvXB97GRC6icyfXxe21mhYvhQcaB1EQ/J2575FXxi2rA== + +"@algolia/client-insights@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.29.0.tgz#80ca3c3d16ff2fa78b3a6a091a10ae508977dffa" + integrity sha512-A39F1zmHY9aev0z4Rt3fTLcGN5AG1VsVUkVWy6yQG5BRDScktH+U5m3zXwThwniBTDV1HrPgiGHZeWb67GkR2Q== + dependencies: + "@algolia/client-common" "5.29.0" + "@algolia/requester-browser-xhr" "5.29.0" + "@algolia/requester-fetch" "5.29.0" + "@algolia/requester-node-http" "5.29.0" + +"@algolia/client-personalization@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.29.0.tgz#1bc8882fe889ad25132794b7beecf1cfc0783acc" + integrity sha512-ibxmh2wKKrzu5du02gp8CLpRMeo+b/75e4ORct98CT7mIxuYFXowULwCd6cMMkz/R0LpKXIbTUl15UL5soaiUQ== + dependencies: + "@algolia/client-common" "5.29.0" + "@algolia/requester-browser-xhr" "5.29.0" + "@algolia/requester-fetch" "5.29.0" + "@algolia/requester-node-http" "5.29.0" + +"@algolia/client-query-suggestions@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.29.0.tgz#784001417cee2ffde376f10074a477eef1eb095d" + integrity sha512-VZq4/AukOoJC2WSwF6J5sBtt+kImOoBwQc1nH3tgI+cxJBg7B77UsNC+jT6eP2dQCwGKBBRTmtPLUTDDnHpMgA== + dependencies: + "@algolia/client-common" "5.29.0" + "@algolia/requester-browser-xhr" "5.29.0" + "@algolia/requester-fetch" "5.29.0" + "@algolia/requester-node-http" "5.29.0" + +"@algolia/client-search@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.29.0.tgz#91c9a036b6677d954cd87d9262850f73f145bf81" + integrity sha512-cZ0Iq3OzFUPpgszzDr1G1aJV5UMIZ4VygJ2Az252q4Rdf5cQMhYEIKArWY/oUjMhQmosM8ygOovNq7gvA9CdCg== + dependencies: + "@algolia/client-common" "5.29.0" + "@algolia/requester-browser-xhr" "5.29.0" + "@algolia/requester-fetch" "5.29.0" + "@algolia/requester-node-http" "5.29.0" "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/ingestion@1.28.0": - version "1.28.0" - resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.28.0.tgz#f18d6ffab37512201c8bb946495a9d91bd571d3b" - integrity sha512-dmkoSQ+bzC5ryDu2J4MTRDxuh5rZg6sHNawgBfSC/iNttEzeogCyvdxg+uWMErJuSlZk9oENykhETMkSFurwpQ== +"@algolia/ingestion@1.29.0": + version "1.29.0" + resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.29.0.tgz#9d7f30a7161b1cb612309f8240aa471faac8a21f" + integrity sha512-scBXn0wO5tZCxmO6evfa7A3bGryfyOI3aoXqSQBj5SRvNYXaUlFWQ/iKI70gRe/82ICwE0ICXbHT/wIvxOW7vw== dependencies: - "@algolia/client-common" "5.28.0" - "@algolia/requester-browser-xhr" "5.28.0" - "@algolia/requester-fetch" "5.28.0" - "@algolia/requester-node-http" "5.28.0" + "@algolia/client-common" "5.29.0" + "@algolia/requester-browser-xhr" "5.29.0" + "@algolia/requester-fetch" "5.29.0" + "@algolia/requester-node-http" "5.29.0" -"@algolia/monitoring@1.28.0": - version "1.28.0" - resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.28.0.tgz#294d31ab85764fa05907d709ee2a8dfa1fbef665" - integrity sha512-XwVpkxc2my2rNUWbHo4Dk1Mx/JOrq6CLOAC3dmIrMt2Le2bIPMIDA6Iyjz4F4kXvp7H8q1R26cRMlYmhL31Jlg== +"@algolia/monitoring@1.29.0": + version "1.29.0" + resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.29.0.tgz#919f86b7c53f1ea7c78f4c0ed9bd7917c1ca3a67" + integrity sha512-FGWWG9jLFhsKB7YiDjM2dwQOYnWu//7Oxrb2vT96N7+s+hg1mdHHfHNRyEudWdxd4jkMhBjeqNA21VbTiOIPVg== dependencies: - "@algolia/client-common" "5.28.0" - "@algolia/requester-browser-xhr" "5.28.0" - "@algolia/requester-fetch" "5.28.0" - "@algolia/requester-node-http" "5.28.0" + "@algolia/client-common" "5.29.0" + "@algolia/requester-browser-xhr" "5.29.0" + "@algolia/requester-fetch" "5.29.0" + "@algolia/requester-node-http" "5.29.0" -"@algolia/recommend@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.28.0.tgz#235614e7b589f4945a0a666e322abbb259db5eb7" - integrity sha512-MVqY7zIw0TdQUExefGthydLXccbe5CHH/uOxIG8/QiSD0ZmAmg95UwfmJiJBfuXGGi/cmCrW3JQiDbAM9vx6PA== +"@algolia/recommend@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.29.0.tgz#8f2e5fe2e43e6d1dfa488b4c095404e46d0e1b0c" + integrity sha512-xte5+mpdfEARAu61KXa4ewpjchoZuJlAlvQb8ptK6hgHlBHDnYooy1bmOFpokaAICrq/H9HpoqNUX71n+3249A== dependencies: - "@algolia/client-common" "5.28.0" - "@algolia/requester-browser-xhr" "5.28.0" - "@algolia/requester-fetch" "5.28.0" - "@algolia/requester-node-http" "5.28.0" + "@algolia/client-common" "5.29.0" + "@algolia/requester-browser-xhr" "5.29.0" + "@algolia/requester-fetch" "5.29.0" + "@algolia/requester-node-http" "5.29.0" -"@algolia/requester-browser-xhr@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.28.0.tgz#6e8e174b01d79c421e02fe9eeefa9d24dbc4ba90" - integrity sha512-RfxbCinf+coQgxRkDKmRiB/ovOt3Fz0md84LmogsQIabrJVKoQrFON4Vc9YdK2bTTn6iBHtnezm0puNTk+n3SA== +"@algolia/requester-browser-xhr@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.29.0.tgz#c3cec914716160d3d972ff09b3b35093916cb5bb" + integrity sha512-og+7Em75aPHhahEUScq2HQ3J7ULN63Levtd87BYMpn6Im5d5cNhaC4QAUsXu6LWqxRPgh4G+i+wIb6tVhDhg2A== dependencies: - "@algolia/client-common" "5.28.0" + "@algolia/client-common" "5.29.0" -"@algolia/requester-fetch@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.28.0.tgz#e2e5e72a307cadcd15388bd2aa3797cf4b7b1795" - integrity sha512-85ZBqPTQ5tjiZ925V89ttE/vUJXpJjy2cCF7PAWq9v32JGGF+v+mDm8NiEBRk9AS7+4klb/uR80KBdcg5bO7cA== +"@algolia/requester-fetch@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.29.0.tgz#3d885d73ab116c4c1ae88e7e6fb3b022cba45ce8" + integrity sha512-JCxapz7neAy8hT/nQpCvOrI5JO8VyQ1kPvBiaXWNC1prVq0UMYHEL52o1BsPvtXfdQ7BVq19OIq6TjOI06mV/w== dependencies: - "@algolia/client-common" "5.28.0" + "@algolia/client-common" "5.29.0" -"@algolia/requester-node-http@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.28.0.tgz#f1f48c478a694ed0b1f18676073f4eb712dfce08" - integrity sha512-U3F4WeExiKx1Ig6OxO9dDzzk04HKgtEn47TwjgKmGSDPFM7WZ5KyP1EAZEbfd3/nw6hp0z9RKdTfMql6Sd1/2Q== +"@algolia/requester-node-http@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.29.0.tgz#9e8fb975c392ba1a99b8774856cfc892ed17819e" + integrity sha512-lVBD81RBW5VTdEYgnzCz7Pf9j2H44aymCP+/eHGJu4vhU+1O8aKf3TVBgbQr5UM6xoe8IkR/B112XY6YIG2vtg== dependencies: - "@algolia/client-common" "5.28.0" + "@algolia/client-common" "5.29.0" "@ampproject/remapping@^2.2.0": version "2.3.0" @@ -2117,140 +2117,140 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-30.0.0.tgz#7f8f66adc20ea795cc74afb74280e08947e55c13" - integrity sha512-vfpJap6JZQ3I8sUN8dsFqNAKJYO4KIGxkcB+3Fw7Q/BJiWY5HwtMMiuT1oP0avsiDhjE/TCLaDgbGfHwDdBVeg== +"@jest/console@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-30.0.2.tgz#e2bf6c7703d45f9824d77c7332388c3e1685afd7" + integrity sha512-krGElPU0FipAqpVZ/BRZOy0MZh/ARdJ0Nj+PiH1ykFY1+VpBlYNLjdjVA5CFKxnKR6PFqFutO4Z7cdK9BlGiDA== dependencies: - "@jest/types" "30.0.0" + "@jest/types" "30.0.1" "@types/node" "*" chalk "^4.1.2" - jest-message-util "30.0.0" - jest-util "30.0.0" + jest-message-util "30.0.2" + jest-util "30.0.2" slash "^3.0.0" -"@jest/core@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-30.0.0.tgz#2ea3e63dd193af0b986f70b01c2597efd0e10b27" - integrity sha512-1zU39zFtWSl5ZuDK3Rd6P8S28MmS4F11x6Z4CURrgJ99iaAJg68hmdJ2SAHEEO6ociaNk43UhUYtHxWKEWoNYw== - dependencies: - "@jest/console" "30.0.0" - "@jest/pattern" "30.0.0" - "@jest/reporters" "30.0.0" - "@jest/test-result" "30.0.0" - "@jest/transform" "30.0.0" - "@jest/types" "30.0.0" +"@jest/core@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-30.0.2.tgz#c84c85baac55e6fa85b491edc4280425631951c7" + integrity sha512-mUMFdDtYWu7la63NxlyNIhgnzynszxunXWrtryR7bV24jV9hmi7XCZTzZHaLJjcBU66MeUAPZ81HjwASVpYhYQ== + dependencies: + "@jest/console" "30.0.2" + "@jest/pattern" "30.0.1" + "@jest/reporters" "30.0.2" + "@jest/test-result" "30.0.2" + "@jest/transform" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" ansi-escapes "^4.3.2" chalk "^4.1.2" ci-info "^4.2.0" exit-x "^0.2.2" graceful-fs "^4.2.11" - jest-changed-files "30.0.0" - jest-config "30.0.0" - jest-haste-map "30.0.0" - jest-message-util "30.0.0" - jest-regex-util "30.0.0" - jest-resolve "30.0.0" - jest-resolve-dependencies "30.0.0" - jest-runner "30.0.0" - jest-runtime "30.0.0" - jest-snapshot "30.0.0" - jest-util "30.0.0" - jest-validate "30.0.0" - jest-watcher "30.0.0" + jest-changed-files "30.0.2" + jest-config "30.0.2" + jest-haste-map "30.0.2" + jest-message-util "30.0.2" + jest-regex-util "30.0.1" + jest-resolve "30.0.2" + jest-resolve-dependencies "30.0.2" + jest-runner "30.0.2" + jest-runtime "30.0.2" + jest-snapshot "30.0.2" + jest-util "30.0.2" + jest-validate "30.0.2" + jest-watcher "30.0.2" micromatch "^4.0.8" - pretty-format "30.0.0" + pretty-format "30.0.2" slash "^3.0.0" -"@jest/diff-sequences@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/diff-sequences/-/diff-sequences-30.0.0.tgz#402d27d14e9d5161dedfca98bf181018a8931eb1" - integrity sha512-xMbtoCeKJDto86GW6AiwVv7M4QAuI56R7dVBr1RNGYbOT44M2TIzOiske2RxopBqkumDY+A1H55pGvuribRY9A== +"@jest/diff-sequences@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz#0ededeae4d071f5c8ffe3678d15f3a1be09156be" + integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw== -"@jest/environment-jsdom-abstract@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.0.0.tgz#fec9bbbba3c302ed9a720521d771cda871a8498b" - integrity sha512-Fcn1eZbH1JK+bqwUVkUVprlQL3xWUrhvOe/4L0PfDkaJOiAz3HUI1m4s0bgmXBYyCyTVogBuUFZkRpAKMox5Dw== +"@jest/environment-jsdom-abstract@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.0.2.tgz#3538bcc206704a4a37ee18afcb5b88ce55f02dc4" + integrity sha512-8aMoEzGdUuJeQl71BUACkys1ZEX437AF376VBqdYXsGFd4l3F1SdTjFHmNq8vF0Rp+CYhUyxa0kRAzXbBaVzfQ== dependencies: - "@jest/environment" "30.0.0" - "@jest/fake-timers" "30.0.0" - "@jest/types" "30.0.0" + "@jest/environment" "30.0.2" + "@jest/fake-timers" "30.0.2" + "@jest/types" "30.0.1" "@types/jsdom" "^21.1.7" "@types/node" "*" - jest-mock "30.0.0" - jest-util "30.0.0" + jest-mock "30.0.2" + jest-util "30.0.2" -"@jest/environment@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-30.0.0.tgz#d66484e35d6ee9a551d2ef3adb9e18728f0e4736" - integrity sha512-09sFbMMgS5JxYnvgmmtwIHhvoyzvR5fUPrVl8nOCrC5KdzmmErTcAxfWyAhJ2bv3rvHNQaKiS+COSG+O7oNbXw== +"@jest/environment@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-30.0.2.tgz#1b0d055070e97f697e9edb25059e9435221cbe65" + integrity sha512-hRLhZRJNxBiOhxIKSq2UkrlhMt3/zVFQOAi5lvS8T9I03+kxsbflwHJEF+eXEYXCrRGRhHwECT7CDk6DyngsRA== dependencies: - "@jest/fake-timers" "30.0.0" - "@jest/types" "30.0.0" + "@jest/fake-timers" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" - jest-mock "30.0.0" + jest-mock "30.0.2" -"@jest/expect-utils@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.0.0.tgz#118d41d9df420db61d307308848a9e12f0fc1fad" - integrity sha512-UiWfsqNi/+d7xepfOv8KDcbbzcYtkWBe3a3kVDtg6M1kuN6CJ7b4HzIp5e1YHrSaQaVS8sdCoyCMCZClTLNKFQ== +"@jest/expect-utils@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.0.2.tgz#d065f68c128cec526540193d88f2fc64c3d4f971" + integrity sha512-FHF2YdtFBUQOo0/qdgt+6UdBFcNPF/TkVzcc+4vvf8uaBzUlONytGBeeudufIHHW1khRfM1sBbRT1VCK7n/0dQ== dependencies: - "@jest/get-type" "30.0.0" + "@jest/get-type" "30.0.1" -"@jest/expect@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-30.0.0.tgz#3f6c17a333444aa6d93b507871815c24c6681f21" - integrity sha512-XZ3j6syhMeKiBknmmc8V3mNIb44kxLTbOQtaXA4IFdHy+vEN0cnXRzbRjdGBtrp4k1PWyMWNU3Fjz3iejrhpQg== +"@jest/expect@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-30.0.2.tgz#b3d5adec28f3884d6fd0746c4b5d0d2473e9e212" + integrity sha512-blWRFPjv2cVfh42nLG6L3xIEbw+bnuiZYZDl/BZlsNG/i3wKV6FpPZ2EPHguk7t5QpLaouIu+7JmYO4uBR6AOg== dependencies: - expect "30.0.0" - jest-snapshot "30.0.0" + expect "30.0.2" + jest-snapshot "30.0.2" -"@jest/fake-timers@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-30.0.0.tgz#4d4ae90695609c1b27795ad1210203d73f30dcfd" - integrity sha512-yzBmJcrMHAMcAEbV2w1kbxmx8WFpEz8Cth3wjLMSkq+LO8VeGKRhpr5+BUp7PPK+x4njq/b6mVnDR8e/tPL5ng== +"@jest/fake-timers@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-30.0.2.tgz#ec758b28ae6f63a49eda9e8d6af274d152d37c09" + integrity sha512-jfx0Xg7l0gmphTY9UKm5RtH12BlLYj/2Plj6wXjVW5Era4FZKfXeIvwC67WX+4q8UCFxYS20IgnMcFBcEU0DtA== dependencies: - "@jest/types" "30.0.0" + "@jest/types" "30.0.1" "@sinonjs/fake-timers" "^13.0.0" "@types/node" "*" - jest-message-util "30.0.0" - jest-mock "30.0.0" - jest-util "30.0.0" - -"@jest/get-type@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/get-type/-/get-type-30.0.0.tgz#59dcb5a9cbd9eb0004d3a2ed2fa9c9c3abfbf005" - integrity sha512-VZWMjrBzqfDKngQ7sUctKeLxanAbsBFoZnPxNIG6CmxK7Gv6K44yqd0nzveNIBfuhGZMmk1n5PGbvdSTOu0yTg== - -"@jest/globals@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-30.0.0.tgz#b80a488ec3fc99637455def038e53cfcd562a18f" - integrity sha512-OEzYes5A1xwBJVMPqFRa8NCao8Vr42nsUZuf/SpaJWoLE+4kyl6nCQZ1zqfipmCrIXQVALC5qJwKy/7NQQLPhw== - dependencies: - "@jest/environment" "30.0.0" - "@jest/expect" "30.0.0" - "@jest/types" "30.0.0" - jest-mock "30.0.0" - -"@jest/pattern@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/pattern/-/pattern-30.0.0.tgz#2d1f04c8b64b31f1bfa71ccb60593a4415d0d452" - integrity sha512-k+TpEThzLVXMkbdxf8KHjZ83Wl+G54ytVJoDIGWwS96Ql4xyASRjc6SU1hs5jHVql+hpyK9G8N7WuFhLpGHRpQ== + jest-message-util "30.0.2" + jest-mock "30.0.2" + jest-util "30.0.2" + +"@jest/get-type@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/get-type/-/get-type-30.0.1.tgz#0d32f1bbfba511948ad247ab01b9007724fc9f52" + integrity sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw== + +"@jest/globals@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-30.0.2.tgz#3b401bb7cb8cc0a00476630298747a38e40a6fc1" + integrity sha512-DwTtus9jjbG7b6jUdkcVdptf0wtD1v153A+PVwWB/zFwXhqu6hhtSd+uq88jofMhmYPtkmPmVGUBRNCZEKXn+w== + dependencies: + "@jest/environment" "30.0.2" + "@jest/expect" "30.0.2" + "@jest/types" "30.0.1" + jest-mock "30.0.2" + +"@jest/pattern@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/pattern/-/pattern-30.0.1.tgz#d5304147f49a052900b4b853dedb111d080e199f" + integrity sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA== dependencies: "@types/node" "*" - jest-regex-util "30.0.0" + jest-regex-util "30.0.1" -"@jest/reporters@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-30.0.0.tgz#a384cc5692e3288617f6993c3267314f8f865781" - integrity sha512-5WHNlLO0Ok+/o6ML5IzgVm1qyERtLHBNhwn67PAq92H4hZ+n5uW/BYj1VVwmTdxIcNrZLxdV9qtpdZkXf16HxA== +"@jest/reporters@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-30.0.2.tgz#e804435ab77cd05b7e8732b91006cd00bd822399" + integrity sha512-l4QzS/oKf57F8WtPZK+vvF4Io6ukplc6XgNFu4Hd/QxaLEO9f+8dSFzUua62Oe0HKlCUjKHpltKErAgDiMJKsA== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "30.0.0" - "@jest/test-result" "30.0.0" - "@jest/transform" "30.0.0" - "@jest/types" "30.0.0" + "@jest/console" "30.0.2" + "@jest/test-result" "30.0.2" + "@jest/transform" "30.0.2" + "@jest/types" "30.0.1" "@jridgewell/trace-mapping" "^0.3.25" "@types/node" "*" chalk "^4.1.2" @@ -2263,17 +2263,17 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^5.0.0" istanbul-reports "^3.1.3" - jest-message-util "30.0.0" - jest-util "30.0.0" - jest-worker "30.0.0" + jest-message-util "30.0.2" + jest-util "30.0.2" + jest-worker "30.0.2" slash "^3.0.0" string-length "^4.0.2" v8-to-istanbul "^9.0.1" -"@jest/schemas@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-30.0.0.tgz#427b862696c65ea6f6a138a9221326519877555f" - integrity sha512-NID2VRyaEkevCRz6badhfqYwri/RvMbiHY81rk3AkK/LaiB0LSxi1RdVZ7MpZdTjNugtZeGfpL0mLs9Kp3MrQw== +"@jest/schemas@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-30.0.1.tgz#27c00d707d480ece0c19126af97081a1af3bc46e" + integrity sha512-+g/1TKjFuGrf1Hh0QPCv0gISwBxJ+MQSNXmG9zjHy7BmFhtoJ9fdNhWJp3qUKRi93AOZHXtdxZgJ1vAtz6z65w== dependencies: "@sinclair/typebox" "^0.34.0" @@ -2284,73 +2284,73 @@ dependencies: "@sinclair/typebox" "^0.27.8" -"@jest/snapshot-utils@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/snapshot-utils/-/snapshot-utils-30.0.0.tgz#95c34aa1e59840c53b91695132022bfeeeee650e" - integrity sha512-C/QSFUmvZEYptg2Vin84FggAphwHvj6la39vkw1CNOZQORWZ7O/H0BXmdeeeGnvlXDYY8TlFM5jgFnxLAxpFjA== +"@jest/snapshot-utils@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/snapshot-utils/-/snapshot-utils-30.0.1.tgz#536108aa6b74858d758ae3b5229518c3d818bd68" + integrity sha512-6Dpv7vdtoRiISEFwYF8/c7LIvqXD7xDXtLPNzC2xqAfBznKip0MQM+rkseKwUPUpv2PJ7KW/YsnwWXrIL2xF+A== dependencies: - "@jest/types" "30.0.0" + "@jest/types" "30.0.1" chalk "^4.1.2" graceful-fs "^4.2.11" natural-compare "^1.4.0" -"@jest/source-map@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-30.0.0.tgz#f1318656f6ca2cab188c5860d8d7ccb2f9a0396c" - integrity sha512-oYBJ4d/NF4ZY3/7iq1VaeoERHRvlwKtrGClgescaXMIa1mmb+vfJd0xMgbW9yrI80IUA7qGbxpBWxlITrHkWoA== +"@jest/source-map@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-30.0.1.tgz#305ebec50468f13e658b3d5c26f85107a5620aaa" + integrity sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg== dependencies: "@jridgewell/trace-mapping" "^0.3.25" callsites "^3.1.0" graceful-fs "^4.2.11" -"@jest/test-result@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-30.0.0.tgz#9a06e3b0f2024ace56a2989075c2c8938aae5297" - integrity sha512-685zco9HdgBaaWiB9T4xjLtBuN0Q795wgaQPpmuAeZPHwHZSoKFAUnozUtU+ongfi4l5VCz8AclOE5LAQdyjxQ== +"@jest/test-result@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-30.0.2.tgz#786849e33da6060381c508986fa7309ff855a367" + integrity sha512-KKMuBKkkZYP/GfHMhI+cH2/P3+taMZS3qnqqiPC1UXZTJskkCS+YU/ILCtw5anw1+YsTulDHFpDo70mmCedW8w== dependencies: - "@jest/console" "30.0.0" - "@jest/types" "30.0.0" + "@jest/console" "30.0.2" + "@jest/types" "30.0.1" "@types/istanbul-lib-coverage" "^2.0.6" collect-v8-coverage "^1.0.2" -"@jest/test-sequencer@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-30.0.0.tgz#7052c0c6d56580f9096b6c3d02834220df676340" - integrity sha512-Hmvv5Yg6UmghXIcVZIydkT0nAK7M/hlXx9WMHR5cLVwdmc14/qUQt3mC72T6GN0olPC6DhmKE6Cd/pHsgDbuqQ== +"@jest/test-sequencer@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-30.0.2.tgz#2693692d285b1c929ed353f7f0b7cbea51c57515" + integrity sha512-fbyU5HPka0rkalZ3MXVvq0hwZY8dx3Y6SCqR64zRmh+xXlDeFl0IdL4l9e7vp4gxEXTYHbwLFA1D+WW5CucaSw== dependencies: - "@jest/test-result" "30.0.0" + "@jest/test-result" "30.0.2" graceful-fs "^4.2.11" - jest-haste-map "30.0.0" + jest-haste-map "30.0.2" slash "^3.0.0" -"@jest/transform@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-30.0.0.tgz#62702f0d0030c361255b6d84c16fed9b91a1c331" - integrity sha512-8xhpsCGYJsUjqpJOgLyMkeOSSlhqggFZEWAnZquBsvATtueoEs7CkMRxOUmJliF3E5x+mXmZ7gEEsHank029Og== +"@jest/transform@30.0.2": + version "30.0.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-30.0.2.tgz#62ba84fcc2389ab751e7ec923958c9b1163d90c3" + integrity sha512-kJIuhLMTxRF7sc0gPzPtCDib/V9KwW3I2U25b+lYCYMVqHHSrcZopS8J8H+znx9yixuFv+Iozl8raLt/4MoxrA== dependencies: "@babel/core" "^7.27.4" - "@jest/types" "30.0.0" + "@jest/types" "30.0.1" "@jridgewell/trace-mapping" "^0.3.25" babel-plugin-istanbul "^7.0.0" chalk "^4.1.2" convert-source-map "^2.0.0" fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.11" - jest-haste-map "30.0.0" - jest-regex-util "30.0.0" - jest-util "30.0.0" + jest-haste-map "30.0.2" + jest-regex-util "30.0.1" + jest-util "30.0.2" micromatch "^4.0.8" pirates "^4.0.7" slash "^3.0.0" write-file-atomic "^5.0.1" -"@jest/types@30.0.0": - version "30.0.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.0.0.tgz#7afb1d34937f722f667b621eb9c653f0f8fda07e" - integrity sha512-1Nox8mAL52PKPfEnUQWBvKU/bp8FTT6AiDu76bFDEJj/qsRFSAVSldfCH3XYMqialti2zHXKvD5gN0AaHc0yKA== +"@jest/types@30.0.1": + version "30.0.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.0.1.tgz#a46df6a99a416fa685740ac4264b9f9cd7da1598" + integrity sha512-HGwoYRVF0QSKJu1ZQX0o5ZrUrrhj0aOOFA8hXrumD7SIzjouevhawbTjmXdwOmURdGluU9DM/XvGm3NyFoiQjw== dependencies: - "@jest/pattern" "30.0.0" - "@jest/schemas" "30.0.0" + "@jest/pattern" "30.0.1" + "@jest/schemas" "30.0.1" "@types/istanbul-lib-coverage" "^2.0.6" "@types/istanbul-reports" "^3.0.4" "@types/node" "*" @@ -3190,102 +3190,102 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== -"@unrs/resolver-binding-android-arm-eabi@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.0.tgz#e91317973356eb845c9186db5f9ec43e8d0002eb" - integrity sha512-h1T2c2Di49ekF2TE8ZCoJkb+jwETKUIPDJ/nO3tJBKlLFPu+fyd93f0rGP/BvArKx2k2HlRM4kqkNarj3dvZlg== +"@unrs/resolver-binding-android-arm-eabi@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.1.tgz#6fc1ae6fc252963aa545245f17c67d47164446e6" + integrity sha512-dd7yIp1hfJFX9ZlVLQRrh/Re9WMUHHmF9hrKD1yIvxcyNr2BhQ3xc1upAVhy8NijadnCswAxWQu8MkkSMC1qXQ== -"@unrs/resolver-binding-android-arm64@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.0.tgz#fbdd79b2a8e478e02e1c0751dfbc100017522161" - integrity sha512-sG1NHtgXtX8owEkJ11yn34vt0Xqzi3k9TJ8zppDmyG8GZV4kVWw44FHwKwHeEFl07uKPeC4ZoyuQaGh5ruJYPA== +"@unrs/resolver-binding-android-arm64@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.1.tgz#9498dbfdab375726a2f8474e0d50f5940d0d2b4a" + integrity sha512-EzUPcMFtDVlo5yrbzMqUsGq3HnLXw+3ZOhSd7CUaDmbTtnrzM+RO2ntw2dm2wjbbc5djWj3yX0wzbbg8pLhx8g== -"@unrs/resolver-binding-darwin-arm64@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.0.tgz#24bb42710227ae2f4fea191151f3acc6a75b50d6" - integrity sha512-nJ9z47kfFnCxN1z/oYZS7HSNsFh43y2asePzTEZpEvK7kGyuShSl3RRXnm/1QaqFL+iP+BjMwuB+DYUymOkA5A== +"@unrs/resolver-binding-darwin-arm64@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.1.tgz#e13e7b2a134f88b5e445e4548ee53a7ef33c56fb" + integrity sha512-nB+dna3q4kOleKFcSZJ/wDXIsAd1kpMO9XrVAt8tG3RDWJ6vi+Ic6bpz4cmg5tWNeCfHEY4KuqJCB+pKejPEmQ== -"@unrs/resolver-binding-darwin-x64@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.0.tgz#4a205940ec311ac8396c3f25043644b78cc98a20" - integrity sha512-TK+UA1TTa0qS53rjWn7cVlEKVGz2B6JYe0C++TdQjvWYIyx83ruwh0wd4LRxYBM5HeuAzXcylA9BH2trARXJTw== +"@unrs/resolver-binding-darwin-x64@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.1.tgz#6d2d0c63400852075de84612e51a4d6ee5c01391" + integrity sha512-aKWHCrOGaCGwZcekf3TnczQoBxk5w//W3RZ4EQyhux6rKDwBPgDU9Y2yGigCV1Z+8DWqZgVGQi+hdpnlSy3a1w== -"@unrs/resolver-binding-freebsd-x64@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.0.tgz#ed82e000f7248011696ecc8894f574caa197b0be" - integrity sha512-6uZwzMRFcD7CcCd0vz3Hp+9qIL2jseE/bx3ZjaLwn8t714nYGwiE84WpaMCYjU+IQET8Vu/+BNAGtYD7BG/0yA== +"@unrs/resolver-binding-freebsd-x64@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.1.tgz#71dc0b1e28e6e7c19388b873fd8ca87724e468b0" + integrity sha512-4dIEMXrXt0UqDVgrsUd1I+NoIzVQWXy/CNhgpfS75rOOMK/4Abn0Mx2M2gWH4Mk9+ds/ASAiCmqoUFynmMY5hA== -"@unrs/resolver-binding-linux-arm-gnueabihf@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.0.tgz#534a8b32118590f7fb9edd21c6576243a89a8aad" - integrity sha512-bPUBksQfrgcfv2+mm+AZinaKq8LCFvt5PThYqRotqSuuZK1TVKkhbVMS/jvSRfYl7jr3AoZLYbDkItxgqMKRkg== +"@unrs/resolver-binding-linux-arm-gnueabihf@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.1.tgz#8c0c888f388af853649807712ec181cfb93335e4" + integrity sha512-vtvS13IXPs1eE8DuS/soiosqMBeyh50YLRZ+p7EaIKAPPeevRnA9G/wu/KbVt01ZD5qiGjxS+CGIdVC7I6gTOw== -"@unrs/resolver-binding-linux-arm-musleabihf@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.0.tgz#b31718752e77cecbbcf7ba1e01dea97c1a5ee7e0" - integrity sha512-uT6E7UBIrTdCsFQ+y0tQd3g5oudmrS/hds5pbU3h4s2t/1vsGWbbSKhBSCD9mcqaqkBwoqlECpUrRJCmldl8PA== +"@unrs/resolver-binding-linux-arm-musleabihf@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.1.tgz#a974b25348fe3d329d8ee22f09c6d4a258734ede" + integrity sha512-BfdnN6aZ7NcX8djW8SR6GOJc+K+sFhWRF4vJueVE0vbUu5N1bLnBpxJg1TGlhSyo+ImC4SR0jcNiKN0jdoxt+A== -"@unrs/resolver-binding-linux-arm64-gnu@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.0.tgz#0f11ba195020cfa869533fb74733d68162349d14" - integrity sha512-vdqBh911wc5awE2bX2zx3eflbyv8U9xbE/jVKAm425eRoOVv/VseGZsqi3A3SykckSpF4wSROkbQPvbQFn8EsA== +"@unrs/resolver-binding-linux-arm64-gnu@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.1.tgz#0a52f119510e03f53e39d782a3183a45d4b0332c" + integrity sha512-Jhge7lFtH0QqfRz2PyJjJXWENqywPteITd+nOS0L6AhbZli+UmEyGBd2Sstt1c+l9C+j/YvKTl9wJo9PPmsFNg== -"@unrs/resolver-binding-linux-arm64-musl@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.0.tgz#8b6bc086cf9efaa22e8f2fef381786d6636b8e19" - integrity sha512-/8JFZ/SnuDr1lLEVsxsuVwrsGquTvT51RZGvyDB/dOK3oYK2UqeXzgeyq6Otp8FZXQcEYqJwxb9v+gtdXn03eQ== +"@unrs/resolver-binding-linux-arm64-musl@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.1.tgz#db614df450992b8bc0dc19d17db924e95ebae282" + integrity sha512-ofdK/ow+ZSbSU0pRoB7uBaiRHeaAOYQFU5Spp87LdcPL/P1RhbCTMSIYVb61XWzsVEmYKjHFtoIE0wxP6AFvrA== -"@unrs/resolver-binding-linux-ppc64-gnu@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.0.tgz#5cd15899af31c2bbf90bfca5f798f64a16770e23" - integrity sha512-FkJjybtrl+rajTw4loI3L6YqSOpeZfDls4SstL/5lsP2bka9TiHUjgMBjygeZEis1oC8LfJTS8FSgpKPaQx2tQ== +"@unrs/resolver-binding-linux-ppc64-gnu@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.1.tgz#ea7a53069c612288b6adc96f1b907609bcb5941d" + integrity sha512-eC8SXVn8de67HacqU7PoGdHA+9tGbqfEdD05AEFRAB81ejeQtNi5Fx7lPcxpLH79DW0BnMAHau3hi4RVkHfSCw== -"@unrs/resolver-binding-linux-riscv64-gnu@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.0.tgz#4f2c75af52437eb10b48ea5b72750fb65fb174be" - integrity sha512-w/NZfHNeDusbqSZ8r/hp8iL4S39h4+vQMc9/vvzuIKMWKppyUGKm3IST0Qv0aOZ1rzIbl9SrDeIqK86ZpUK37w== +"@unrs/resolver-binding-linux-riscv64-gnu@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.1.tgz#e6366f3a3e4ef435ee1b87ebe7ca87155fa1d1c9" + integrity sha512-fIkwvAAQ41kfoGWfzeJ33iLGShl0JEDZHrMnwTHMErUcPkaaZRJYjQjsFhMl315NEQ4mmTlC+2nfK/J2IszDOw== -"@unrs/resolver-binding-linux-riscv64-musl@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.0.tgz#6a87e82e0dd39d34ff37ddba6accf73cdb396e86" - integrity sha512-bEPBosut8/8KQbUixPry8zg/fOzVOWyvwzOfz0C0Rw6dp+wIBseyiHKjkcSyZKv/98edrbMknBaMNJfA/UEdqw== +"@unrs/resolver-binding-linux-riscv64-musl@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.1.tgz#198c1e552e2963035e237b2f5dbdb5c81fcde4bd" + integrity sha512-RAAszxImSOFLk44aLwnSqpcOdce8sBcxASledSzuFAd8Q5ZhhVck472SisspnzHdc7THCvGXiUeZ2hOC7NUoBQ== -"@unrs/resolver-binding-linux-s390x-gnu@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.0.tgz#6524cc3c01309022de86c4a7317fe7d9f9fb855c" - integrity sha512-LDtMT7moE3gK753gG4pc31AAqGUC86j3AplaFusc717EUGF9ZFJ356sdQzzZzkBk1XzMdxFyZ4f/i35NKM/lFA== +"@unrs/resolver-binding-linux-s390x-gnu@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.1.tgz#982501b8865f0d36c82b933b9de4e71894a749f5" + integrity sha512-QoP9vkY+THuQdZi05bA6s6XwFd6HIz3qlx82v9bTOgxeqin/3C12Ye7f7EOD00RQ36OtOPWnhEMMm84sv7d1XQ== -"@unrs/resolver-binding-linux-x64-gnu@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.0.tgz#85fb8a45dccf3823cd73ea4b61b2c3f2e8ab6653" - integrity sha512-WmFd5KINHIXj8o1mPaT8QRjA9HgSXhN1gl9Da4IZihARihEnOylu4co7i/yeaIpcfsI6sYs33cNZKyHYDh0lrA== +"@unrs/resolver-binding-linux-x64-gnu@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.1.tgz#f93271025f814506fad97fa749a8ed8a0536e813" + integrity sha512-/p77cGN/h9zbsfCseAP5gY7tK+7+DdM8fkPfr9d1ye1fsF6bmtGbtZN6e/8j4jCZ9NEIBBkT0GhdgixSelTK9g== -"@unrs/resolver-binding-linux-x64-musl@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.0.tgz#235e539da5872df51c03e0e050a1c715e25044ca" - integrity sha512-CYuXbANW+WgzVRIl8/QvZmDaZxrqvOldOwlbUjIM4pQ46FJ0W5cinJ/Ghwa/Ng1ZPMJMk1VFdsD/XwmCGIXBWg== +"@unrs/resolver-binding-linux-x64-musl@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.1.tgz#9c13e0f602527a4bc77852268fa493b1845c5ee2" + integrity sha512-wInTqT3Bu9u50mDStEig1v8uxEL2Ht+K8pir/YhyyrM5ordJtxoqzsL1vR/CQzOJuDunUTrDkMM0apjW/d7/PA== -"@unrs/resolver-binding-wasm32-wasi@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.0.tgz#1bc614ce2ba61330c16bffa1e50f41d95d25c0a6" - integrity sha512-6Rp2WH0OoitMYR57Z6VE8Y6corX8C6QEMWLgOV6qXiJIeZ1F9WGXY/yQ8yDC4iTraotyLOeJ2Asea0urWj2fKQ== +"@unrs/resolver-binding-wasm32-wasi@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.1.tgz#d3c088be1b510cd02822bf0258861a2dd8dac096" + integrity sha512-eNwqO5kUa+1k7yFIircwwiniKWA0UFHo2Cfm8LYgkh9km7uMad+0x7X7oXbQonJXlqfitBTSjhA0un+DsHIrhw== dependencies: "@napi-rs/wasm-runtime" "^0.2.11" -"@unrs/resolver-binding-win32-arm64-msvc@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.0.tgz#0d8704275a9f2634d81b35d8a00a2f4bd8dec7fa" - integrity sha512-rknkrTRuvujprrbPmGeHi8wYWxmNVlBoNW8+4XF2hXUnASOjmuC9FNF1tGbDiRQWn264q9U/oGtixyO3BT8adQ== +"@unrs/resolver-binding-win32-arm64-msvc@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.1.tgz#c2aa3e371d5c53b962b1a7a45503a68e96f710a0" + integrity sha512-Eaz1xMUnoa2mFqh20mPqSdbYl6crnk8HnIXDu6nsla9zpgZJZO8w3c1gvNN/4Eb0RXRq3K9OG6mu8vw14gIqiA== -"@unrs/resolver-binding-win32-ia32-msvc@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.0.tgz#46909cbeb9a38b3f31a64833fe03aa1aebb8da2b" - integrity sha512-Ceymm+iBl+bgAICtgiHyMLz6hjxmLJKqBim8tDzpX61wpZOx2bPK6Gjuor7I2RiUynVjvvkoRIkrPyMwzBzF3A== +"@unrs/resolver-binding-win32-ia32-msvc@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.1.tgz#12f1be2ce8041fdadfef23bf69e104ab8176127a" + integrity sha512-H/+d+5BGlnEQif0gnwWmYbYv7HJj563PUKJfn8PlmzF8UmF+8KxdvXdwCsoOqh4HHnENnoLrav9NYBrv76x1wQ== -"@unrs/resolver-binding-win32-x64-msvc@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.0.tgz#708b957d5d66543c45240b4c6b45ee63ed59b6b7" - integrity sha512-k59o9ZyeyS0hAlcaKFezYSH2agQeRFEB7KoQLXl3Nb3rgkqT1NY9Vwy+SqODiLmYnEjxWJVRE/yq2jFVqdIxZw== +"@unrs/resolver-binding-win32-x64-msvc@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.1.tgz#5f9e5b6ce30c355161527e17734320ddfb1a4561" + integrity sha512-rS86wI4R6cknYM3is3grCb/laE8XBEbpWAMSIPjYfmYp75KL5dT87jXF2orDa4tQYg5aajP5G8Fgh34dRyR+Rw== "@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": version "1.14.1" @@ -3515,23 +3515,23 @@ algoliasearch-helper@^3.22.6: "@algolia/events" "^4.0.1" algoliasearch@^5.14.2, algoliasearch@^5.17.1: - version "5.28.0" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.28.0.tgz#a2b4b5ac0e45b52348edfa9b9f37b569f1ac540c" - integrity sha512-FCRzwW+/TJFQIfo+DxObo2gfn4+0aGa7sVQgCN1/ojKqrhb/7Scnuyi4FBS0zvNCgOZBMms+Ci2hyQwsgAqIzg== - dependencies: - "@algolia/client-abtesting" "5.28.0" - "@algolia/client-analytics" "5.28.0" - "@algolia/client-common" "5.28.0" - "@algolia/client-insights" "5.28.0" - "@algolia/client-personalization" "5.28.0" - "@algolia/client-query-suggestions" "5.28.0" - "@algolia/client-search" "5.28.0" - "@algolia/ingestion" "1.28.0" - "@algolia/monitoring" "1.28.0" - "@algolia/recommend" "5.28.0" - "@algolia/requester-browser-xhr" "5.28.0" - "@algolia/requester-fetch" "5.28.0" - "@algolia/requester-node-http" "5.28.0" + version "5.29.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.29.0.tgz#0feae8e0a71fced857be4e97c434ef9dce89783b" + integrity sha512-E2l6AlTWGznM2e7vEE6T6hzObvEyXukxMOlBmVlMyixZyK1umuO/CiVc6sDBbzVH0oEviCE5IfVY1oZBmccYPQ== + dependencies: + "@algolia/client-abtesting" "5.29.0" + "@algolia/client-analytics" "5.29.0" + "@algolia/client-common" "5.29.0" + "@algolia/client-insights" "5.29.0" + "@algolia/client-personalization" "5.29.0" + "@algolia/client-query-suggestions" "5.29.0" + "@algolia/client-search" "5.29.0" + "@algolia/ingestion" "1.29.0" + "@algolia/monitoring" "1.29.0" + "@algolia/recommend" "5.29.0" + "@algolia/requester-browser-xhr" "5.29.0" + "@algolia/requester-fetch" "5.29.0" + "@algolia/requester-node-http" "5.29.0" ansi-align@^3.0.1: version "3.0.1" @@ -3709,15 +3709,15 @@ axios@^1.8.2: form-data "^4.0.0" proxy-from-env "^1.1.0" -babel-jest@30.0.0, babel-jest@^30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-30.0.0.tgz#485050f0a0dcfc8859ef3ab5092a8c0bcbd6f33f" - integrity sha512-JQ0DhdFjODbSawDf0026uZuwaqfKkQzk+9mwWkq2XkKFIaMhFVOxlVmbFCOnnC76jATdxrff3IiUAvOAJec6tw== +babel-jest@30.0.2, babel-jest@^30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-30.0.2.tgz#f627dc5afc3bd5795fc84735b4f1d74f9d4b8e91" + integrity sha512-A5kqR1/EUTidM2YC2YMEUDP2+19ppgOwK0IAd9Swc3q2KqFb5f9PtRUXVeZcngu0z5mDMyZ9zH2huJZSOMLiTQ== dependencies: - "@jest/transform" "30.0.0" + "@jest/transform" "30.0.2" "@types/babel__core" "^7.20.5" babel-plugin-istanbul "^7.0.0" - babel-preset-jest "30.0.0" + babel-preset-jest "30.0.1" chalk "^4.1.2" graceful-fs "^4.2.11" slash "^3.0.0" @@ -3748,10 +3748,10 @@ babel-plugin-istanbul@^7.0.0: istanbul-lib-instrument "^6.0.2" test-exclude "^6.0.0" -babel-plugin-jest-hoist@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.0.0.tgz#76c9bf58316ebb7026d671d71d26138ae415326b" - integrity sha512-DSRm+US/FCB4xPDD6Rnslb6PAF9Bej1DZ+1u4aTiqJnk7ZX12eHsnDiIOqjGvITCq+u6wLqUhgS+faCNbVY8+g== +babel-plugin-jest-hoist@30.0.1: + version "30.0.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.0.1.tgz#f271b2066d2c1fb26a863adb8e13f85b06247125" + integrity sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ== dependencies: "@babel/template" "^7.27.2" "@babel/types" "^7.27.3" @@ -3802,12 +3802,12 @@ babel-preset-current-node-syntax@^1.1.0: "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" -babel-preset-jest@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-30.0.0.tgz#54b16c96c1b687b9c72baa37a00b01fe9be4c4f3" - integrity sha512-hgEuu/W7gk8QOWUA9+m3Zk+WpGvKc1Egp6rFQEfYxEoM9Fk/q8nuTXNL65OkhwGrTApauEGgakOoWVXj+UfhKw== +babel-preset-jest@30.0.1: + version "30.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-30.0.1.tgz#7d28db9531bce264e846c8483d54236244b8ae88" + integrity sha512-+YHejD5iTWI46cZmcc/YtX4gaKBtdqCHCVfuVinizVpbmyjO3zYmeuyFdfA8duRqQZfgCAMlsfmkVbJ+e2MAJw== dependencies: - babel-plugin-jest-hoist "30.0.0" + babel-plugin-jest-hoist "30.0.1" babel-preset-current-node-syntax "^1.1.0" bail@^2.0.0: @@ -4076,9 +4076,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001718: - version "1.0.30001723" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz#c4f3174f02089720736e1887eab345e09bb10944" - integrity sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw== + version "1.0.30001724" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001724.tgz#312e163553dd70d2c0fb603d74810c85d8ed94a0" + integrity sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA== caseless@~0.12.0: version "0.12.0" @@ -4106,7 +4106,7 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^5.0.1, chalk@^5.2.0: +chalk@^5.0.1, chalk@^5.2.0, chalk@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== @@ -4438,6 +4438,13 @@ consola@^3.2.3: resolved "https://registry.yarnpkg.com/consola/-/consola-3.4.2.tgz#5af110145397bb67afdab77013fdc34cae590ea7" integrity sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA== +console-table-printer@^2.14.3: + version "2.14.3" + resolved "https://registry.yarnpkg.com/console-table-printer/-/console-table-printer-2.14.3.tgz#d679794a3dead5ba739517d52d90dedea426ed07" + integrity sha512-X5OCFnjYlXzRuC8ac5hPA2QflRjJvNKJocMhlnqK/Ap7q3DHXr0NJ0TGzwmEKOiOdJrjsSwEd0m+a32JAYPrKQ== + dependencies: + simple-wcswidth "^1.0.1" + content-disposition@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" @@ -4734,9 +4741,9 @@ csso@^5.0.5: css-tree "~2.2.0" cssstyle@^4.2.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-4.4.0.tgz#a185e81564a6047693586d904d278cbe8565ba07" - integrity sha512-W0Y2HOXlPkb2yaKrCVRjinYKciu/qSLEmK0K9mcfDei3zwlnHFEHAs/Du3cIRwPqY+J4JsiBzUjoHyc8RsJ03A== + version "4.5.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-4.5.0.tgz#b2d6f06884db0de8315443fb75b0a48d60931cac" + integrity sha512-/7gw8TGrvH/0g564EnhgFZogTMVe+lifpB7LWU+PEsiq5o83TUXR3fDbzTRXOJhoJwck5IS9ez3Em5LNMMO2aw== dependencies: "@asamuzakjp/css-color" "^3.2.0" rrweb-cssom "^0.8.0" @@ -4746,10 +4753,10 @@ csstype@3.1.3, csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -cypress@^14.4.1: - version "14.4.1" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-14.4.1.tgz#6e586ba098503b594561d5f8f746a9db6556ed2a" - integrity sha512-YSGvVXtTqSGRTyHbaxHI5dHU/9xc5ymaTIM4BU85GKhj980y6XgA3fShSpj5DatS8knXMsAvYItQxVQFHGpUtw== +cypress@^14.5.0: + version "14.5.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-14.5.0.tgz#5b02b06993a9dcea9b9146fc02840a92f6a40584" + integrity sha512-1HOnKvWep0LkWuFwPeWkZ0TDl7ivi2/Mz+WNU4dfkeLJaFndS3Ow6TXT7YjuTqLFI2peJKzPKljVUFdymI2K5g== dependencies: "@cypress/request" "^3.0.8" "@cypress/xvfb" "^1.2.4" @@ -4777,6 +4784,7 @@ cypress@^14.4.1: figures "^3.2.0" fs-extra "^9.1.0" getos "^3.2.1" + hasha "5.2.2" is-installed-globally "~0.4.0" lazy-ass "^1.6.0" listr2 "^3.8.3" @@ -5094,9 +5102,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.160: - version "1.5.169" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.169.tgz#6afdfd8e701b7ab744e2bb0cfdec3cefc1072cbe" - integrity sha512-q7SQx6mkLy0GTJK9K9OiWeaBMV4XQtBSdf6MJUzDB/H/5tFXfIiX38Lci1Kl6SsgiEhz1SQI1ejEOU5asWEhwQ== + version "1.5.171" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.171.tgz#e552b4fd73d4dd941ee4c70ae288a8a39f818726" + integrity sha512-scWpzXEJEMrGJa4Y6m/tVotb0WuvNmasv3wWVzUAeCgKU0ToFOhUW6Z+xWnRQANMYGxN4ngJXIThgBJOqzVPCQ== emittery@^0.13.1: version "0.13.1" @@ -5454,17 +5462,17 @@ exit-x@^0.2.2: resolved "https://registry.yarnpkg.com/exit-x/-/exit-x-0.2.2.tgz#1f9052de3b8d99a696b10dad5bced9bdd5c3aa64" integrity sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ== -expect@30.0.0, expect@^30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-30.0.0.tgz#460dfda282e0a8de8302aabee951dba7e79a5a53" - integrity sha512-xCdPp6gwiR9q9lsPCHANarIkFTN/IMZso6Kkq03sOm9IIGtzK/UJqml0dkhHibGh8HKOj8BIDIpZ0BZuU7QK6w== +expect@30.0.2, expect@^30.0.0: + version "30.0.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-30.0.2.tgz#d073942c19d54cb7bc42c9b2a434d850433a7def" + integrity sha512-YN9Mgv2mtTWXVmifQq3QT+ixCL/uLuLJw+fdp8MOjKqu8K3XQh3o5aulMM1tn+O2DdrWNxLZTeJsCY/VofUA0A== dependencies: - "@jest/expect-utils" "30.0.0" - "@jest/get-type" "30.0.0" - jest-matcher-utils "30.0.0" - jest-message-util "30.0.0" - jest-mock "30.0.0" - jest-util "30.0.0" + "@jest/expect-utils" "30.0.2" + "@jest/get-type" "30.0.1" + jest-matcher-utils "30.0.2" + jest-message-util "30.0.2" + jest-mock "30.0.2" + jest-util "30.0.2" express@^4.17.3: version "4.21.2" @@ -6014,6 +6022,14 @@ has-yarn@^3.0.0: resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-3.0.0.tgz#c3c21e559730d1d3b57e28af1f30d06fac38147d" integrity sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA== +hasha@5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" + integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== + dependencies: + is-stream "^2.0.0" + type-fest "^0.8.0" + hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" @@ -6747,152 +6763,152 @@ jackspeak@^3.1.2: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -jest-changed-files@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-30.0.0.tgz#2993fc97acdf701b286310bf672a88a797b57e64" - integrity sha512-rzGpvCdPdEV1Ma83c1GbZif0L2KAm3vXSXGRlpx7yCt0vhruwCNouKNRh3SiVcISHP1mb3iJzjb7tAEnNu1laQ== +jest-changed-files@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-30.0.2.tgz#2c275263037f8f291b71cbb0a4f639c519ab7eb8" + integrity sha512-Ius/iRST9FKfJI+I+kpiDh8JuUlAISnRszF9ixZDIqJF17FckH5sOzKC8a0wd0+D+8em5ADRHA5V5MnfeDk2WA== dependencies: execa "^5.1.1" - jest-util "30.0.0" + jest-util "30.0.2" p-limit "^3.1.0" -jest-circus@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-30.0.0.tgz#f5d32ef11dcef9beba7ee78f32dd2c82b5f51097" - integrity sha512-nTwah78qcKVyndBS650hAkaEmwWGaVsMMoWdJwMnH77XArRJow2Ir7hc+8p/mATtxVZuM9OTkA/3hQocRIK5Dw== +jest-circus@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-30.0.2.tgz#a00a408d5d32d2b547f20f9e84a487d236ed8ee1" + integrity sha512-NRozwx4DaFHcCUtwdEd/0jBLL1imyMrCbla3vF//wdsB2g6jIicMbjx9VhqE/BYU4dwsOQld+06ODX0oZ9xOLg== dependencies: - "@jest/environment" "30.0.0" - "@jest/expect" "30.0.0" - "@jest/test-result" "30.0.0" - "@jest/types" "30.0.0" + "@jest/environment" "30.0.2" + "@jest/expect" "30.0.2" + "@jest/test-result" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" chalk "^4.1.2" co "^4.6.0" dedent "^1.6.0" is-generator-fn "^2.1.0" - jest-each "30.0.0" - jest-matcher-utils "30.0.0" - jest-message-util "30.0.0" - jest-runtime "30.0.0" - jest-snapshot "30.0.0" - jest-util "30.0.0" + jest-each "30.0.2" + jest-matcher-utils "30.0.2" + jest-message-util "30.0.2" + jest-runtime "30.0.2" + jest-snapshot "30.0.2" + jest-util "30.0.2" p-limit "^3.1.0" - pretty-format "30.0.0" + pretty-format "30.0.2" pure-rand "^7.0.0" slash "^3.0.0" stack-utils "^2.0.6" -jest-cli@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-30.0.0.tgz#d689f093e6019bd86e76407b431fae2f8beb85fe" - integrity sha512-fWKAgrhlwVVCfeizsmIrPRTBYTzO82WSba3gJniZNR3PKXADgdC0mmCSK+M+t7N8RCXOVfY6kvCkvjUNtzmHYQ== +jest-cli@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-30.0.2.tgz#cf8ad8a1157721c3a1dc3a371565f6b7f5e6b549" + integrity sha512-yQ6Qz747oUbMYLNAqOlEby+hwXx7WEJtCl0iolBRpJhr2uvkBgiVMrvuKirBc8utwQBnkETFlDUkYifbRpmBrQ== dependencies: - "@jest/core" "30.0.0" - "@jest/test-result" "30.0.0" - "@jest/types" "30.0.0" + "@jest/core" "30.0.2" + "@jest/test-result" "30.0.2" + "@jest/types" "30.0.1" chalk "^4.1.2" exit-x "^0.2.2" import-local "^3.2.0" - jest-config "30.0.0" - jest-util "30.0.0" - jest-validate "30.0.0" + jest-config "30.0.2" + jest-util "30.0.2" + jest-validate "30.0.2" yargs "^17.7.2" -jest-config@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-30.0.0.tgz#77387de024f5a1b456be844f80a1390e8ef19699" - integrity sha512-p13a/zun+sbOMrBnTEUdq/5N7bZMOGd1yMfqtAJniPNuzURMay4I+vxZLK1XSDbjvIhmeVdG8h8RznqYyjctyg== +jest-config@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-30.0.2.tgz#a4884ba3b4d31fb0599b0b78e7a0204efb126f9d" + integrity sha512-vo0fVq+uzDcXETFVnCUyr5HaUCM8ES6DEuS9AFpma34BVXMRRNlsqDyiW5RDHaEFoeFlJHoI4Xjh/WSYIAL58g== dependencies: "@babel/core" "^7.27.4" - "@jest/get-type" "30.0.0" - "@jest/pattern" "30.0.0" - "@jest/test-sequencer" "30.0.0" - "@jest/types" "30.0.0" - babel-jest "30.0.0" + "@jest/get-type" "30.0.1" + "@jest/pattern" "30.0.1" + "@jest/test-sequencer" "30.0.2" + "@jest/types" "30.0.1" + babel-jest "30.0.2" chalk "^4.1.2" ci-info "^4.2.0" deepmerge "^4.3.1" glob "^10.3.10" graceful-fs "^4.2.11" - jest-circus "30.0.0" - jest-docblock "30.0.0" - jest-environment-node "30.0.0" - jest-regex-util "30.0.0" - jest-resolve "30.0.0" - jest-runner "30.0.0" - jest-util "30.0.0" - jest-validate "30.0.0" + jest-circus "30.0.2" + jest-docblock "30.0.1" + jest-environment-node "30.0.2" + jest-regex-util "30.0.1" + jest-resolve "30.0.2" + jest-runner "30.0.2" + jest-util "30.0.2" + jest-validate "30.0.2" micromatch "^4.0.8" parse-json "^5.2.0" - pretty-format "30.0.0" + pretty-format "30.0.2" slash "^3.0.0" strip-json-comments "^3.1.1" -jest-diff@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.0.0.tgz#d3d4f75e257e3c2cb8729438fe9cec66098f6176" - integrity sha512-TgT1+KipV8JTLXXeFX0qSvIJR/UXiNNojjxb/awh3vYlBZyChU/NEmyKmq+wijKjWEztyrGJFL790nqMqNjTHA== +jest-diff@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.0.2.tgz#db77e7ca48a964337c0a4259d5e389c0bb124d7e" + integrity sha512-2UjrNvDJDn/oHFpPrUTVmvYYDNeNtw2DlY3er8bI6vJJb9Fb35ycp/jFLd5RdV59tJ8ekVXX3o/nwPcscgXZJQ== dependencies: - "@jest/diff-sequences" "30.0.0" - "@jest/get-type" "30.0.0" + "@jest/diff-sequences" "30.0.1" + "@jest/get-type" "30.0.1" chalk "^4.1.2" - pretty-format "30.0.0" + pretty-format "30.0.2" -jest-docblock@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-30.0.0.tgz#1650e0ded4fa92ff1adeda2050641705b6b300db" - integrity sha512-By/iQ0nvTzghEecGzUMCp1axLtBh+8wB4Hpoi5o+x1stycjEmPcH1mHugL4D9Q+YKV++vKeX/3ZTW90QC8ICPg== +jest-docblock@30.0.1: + version "30.0.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-30.0.1.tgz#545ff59f2fa88996bd470dba7d3798a8421180b1" + integrity sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA== dependencies: detect-newline "^3.1.0" -jest-each@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-30.0.0.tgz#f3760fba22074c4e82b440f4a0557467f464f718" - integrity sha512-qkFEW3cfytEjG2KtrhwtldZfXYnWSanO8xUMXLe4A6yaiHMHJUalk0Yyv4MQH6aeaxgi4sGVrukvF0lPMM7U1w== +jest-each@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-30.0.2.tgz#402e189784715f5c76f1bb97c29842e79abe99a1" + integrity sha512-ZFRsTpe5FUWFQ9cWTMguCaiA6kkW5whccPy9JjD1ezxh+mJeqmz8naL8Fl/oSbNJv3rgB0x87WBIkA5CObIUZQ== dependencies: - "@jest/get-type" "30.0.0" - "@jest/types" "30.0.0" + "@jest/get-type" "30.0.1" + "@jest/types" "30.0.1" chalk "^4.1.2" - jest-util "30.0.0" - pretty-format "30.0.0" + jest-util "30.0.2" + pretty-format "30.0.2" -jest-environment-jsdom@^30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-30.0.0.tgz#972cbf0cbf8f7191bb5f9d0ea17a2886a081d389" - integrity sha512-IjDRABkSx+HpO7+WGVKPZL5XZajWRsMo2iQIudyiG4BhCi9Uah9HrFluqLUXdjPkIOoox+utUEUl8TDR2kc/Og== +jest-environment-jsdom@^30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-30.0.2.tgz#8f0eb3544ba5abb8de71a2be42b5a95f04485e91" + integrity sha512-lwMpe7hZ81e2PpHj+4nowAzSkC0p8ftRfzC+qEjav9p5ElCs6LAce3y46iLwMS27oL9+/KQe55gUvUDwrlDeJQ== dependencies: - "@jest/environment" "30.0.0" - "@jest/environment-jsdom-abstract" "30.0.0" + "@jest/environment" "30.0.2" + "@jest/environment-jsdom-abstract" "30.0.2" "@types/jsdom" "^21.1.7" "@types/node" "*" jsdom "^26.1.0" -jest-environment-node@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-30.0.0.tgz#0d16b29f5720c796d8eadd9c22ada1c1c43d3ba2" - integrity sha512-sF6lxyA25dIURyDk4voYmGU9Uwz2rQKMfjxKnDd19yk+qxKGrimFqS5YsPHWTlAVBo+YhWzXsqZoaMzrTFvqfg== +jest-environment-node@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-30.0.2.tgz#3c24d6becb505f344f52cddb15ea506cf3288543" + integrity sha512-XsGtZ0H+a70RsxAQkKuIh0D3ZlASXdZdhpOSBq9WRPq6lhe0IoQHGW0w9ZUaPiZQ/CpkIdprvlfV1QcXcvIQLQ== dependencies: - "@jest/environment" "30.0.0" - "@jest/fake-timers" "30.0.0" - "@jest/types" "30.0.0" + "@jest/environment" "30.0.2" + "@jest/fake-timers" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" - jest-mock "30.0.0" - jest-util "30.0.0" - jest-validate "30.0.0" + jest-mock "30.0.2" + jest-util "30.0.2" + jest-validate "30.0.2" -jest-haste-map@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-30.0.0.tgz#7e8597a8931eef090aa011bedba7a1173775acb8" - integrity sha512-p4bXAhXTawTsADgQgTpbymdLaTyPW1xWNu1oIGG7/N3LIAbZVkH2JMJqS8/IUcnGR8Kc7WFE+vWbJvsqGCWZXw== +jest-haste-map@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-30.0.2.tgz#83826e7e352fa139dc95100337aff4de58c99453" + integrity sha512-telJBKpNLeCb4MaX+I5k496556Y2FiKR/QLZc0+MGBYl4k3OO0472drlV2LUe7c1Glng5HuAu+5GLYp//GpdOQ== dependencies: - "@jest/types" "30.0.0" + "@jest/types" "30.0.1" "@types/node" "*" anymatch "^3.1.3" fb-watchman "^2.0.2" graceful-fs "^4.2.11" - jest-regex-util "30.0.0" - jest-util "30.0.0" - jest-worker "30.0.0" + jest-regex-util "30.0.1" + jest-util "30.0.2" + jest-worker "30.0.2" micromatch "^4.0.8" walker "^1.0.8" optionalDependencies: @@ -6908,169 +6924,169 @@ jest-junit@^16.0.0: uuid "^8.3.2" xml "^1.0.1" -jest-leak-detector@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-30.0.0.tgz#056d168e6f308262b40ad05843723a52cdb58b91" - integrity sha512-E/ly1azdVVbZrS0T6FIpyYHvsdek4FNaThJTtggjV/8IpKxh3p9NLndeUZy2+sjAI3ncS+aM0uLLon/dBg8htA== +jest-leak-detector@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-30.0.2.tgz#da4df660615d170136d2b468af3bf1c9bff0137e" + integrity sha512-U66sRrAYdALq+2qtKffBLDWsQ/XoNNs2Lcr83sc9lvE/hEpNafJlq2lXCPUBMNqamMECNxSIekLfe69qg4KMIQ== dependencies: - "@jest/get-type" "30.0.0" - pretty-format "30.0.0" + "@jest/get-type" "30.0.1" + pretty-format "30.0.2" -jest-matcher-utils@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.0.0.tgz#f72a65e248c0462795f7e14386682bfee6ad4386" - integrity sha512-m5mrunqopkrqwG1mMdJxe1J4uGmS9AHHKYUmoxeQOxBcLjEvirIrIDwuKmUYrecPHVB/PUBpXs2gPoeA2FSSLQ== +jest-matcher-utils@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.0.2.tgz#2dbb5f9aacfdd9c013fa72ed6132ca4e1b41f8db" + integrity sha512-1FKwgJYECR8IT93KMKmjKHSLyru0DqguThov/aWpFccC0wbiXGOxYEu7SScderBD7ruDOpl7lc5NG6w3oxKfaA== dependencies: - "@jest/get-type" "30.0.0" + "@jest/get-type" "30.0.1" chalk "^4.1.2" - jest-diff "30.0.0" - pretty-format "30.0.0" + jest-diff "30.0.2" + pretty-format "30.0.2" -jest-message-util@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.0.0.tgz#b115d408cd877a6e3e711485a3bd240c7a27503c" - integrity sha512-pV3qcrb4utEsa/U7UI2VayNzSDQcmCllBZLSoIucrESRu0geKThFZOjjh0kACDJFJRAQwsK7GVsmS6SpEceD8w== +jest-message-util@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.0.2.tgz#9dfdc37570d172f0ffdc42a0318036ff4008837f" + integrity sha512-vXywcxmr0SsKXF/bAD7t7nMamRvPuJkras00gqYeB1V0WllxZrbZ0paRr3XqpFU2sYYjD0qAaG2fRyn/CGZ0aw== dependencies: "@babel/code-frame" "^7.27.1" - "@jest/types" "30.0.0" + "@jest/types" "30.0.1" "@types/stack-utils" "^2.0.3" chalk "^4.1.2" graceful-fs "^4.2.11" micromatch "^4.0.8" - pretty-format "30.0.0" + pretty-format "30.0.2" slash "^3.0.0" stack-utils "^2.0.6" -jest-mock@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.0.0.tgz#f3b3115cd80c3eec7df93809430ab1feaeeb7229" - integrity sha512-W2sRA4ALXILrEetEOh2ooZG6fZ01iwVs0OWMKSSWRcUlaLr4ESHuiKXDNTg+ZVgOq8Ei5445i/Yxrv59VT+XkA== +jest-mock@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.0.2.tgz#5e4245f25f6f9532714906cab10a2b9e39eb2183" + integrity sha512-PnZOHmqup/9cT/y+pXIVbbi8ID6U1XHRmbvR7MvUy4SLqhCbwpkmXhLbsWbGewHrV5x/1bF7YDjs+x24/QSvFA== dependencies: - "@jest/types" "30.0.0" + "@jest/types" "30.0.1" "@types/node" "*" - jest-util "30.0.0" + jest-util "30.0.2" jest-pnp-resolver@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== -jest-regex-util@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-30.0.0.tgz#031f385ebb947e770e409ede703d200b3405413e" - integrity sha512-rT84010qRu/5OOU7a9TeidC2Tp3Qgt9Sty4pOZ/VSDuEmRupIjKZAb53gU3jr4ooMlhwScrgC9UixJxWzVu9oQ== +jest-regex-util@30.0.1: + version "30.0.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-30.0.1.tgz#f17c1de3958b67dfe485354f5a10093298f2a49b" + integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA== -jest-resolve-dependencies@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.0.tgz#caf6829daa9ad6579a6da7c2723346761102ef83" - integrity sha512-Yhh7odCAUNXhluK1bCpwIlHrN1wycYaTlZwq1GdfNBEESNNI/z1j1a7dUEWHbmB9LGgv0sanxw3JPmWU8NeebQ== +jest-resolve-dependencies@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.2.tgz#0c5da8dc5f791f3de10c1d5df294503cd612e5a6" + integrity sha512-Lp1iIXpsF5fGM4vyP8xHiIy2H5L5yO67/nXoYJzH4kz+fQmO+ZMKxzYLyWxYy4EeCLeNQ6a9OozL+uHZV2iuEA== dependencies: - jest-regex-util "30.0.0" - jest-snapshot "30.0.0" + jest-regex-util "30.0.1" + jest-snapshot "30.0.2" -jest-resolve@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-30.0.0.tgz#8aaf8f85c8a14579fa34e651af406e57d2675092" - integrity sha512-zwWl1P15CcAfuQCEuxszjiKdsValhnWcj/aXg/R3aMHs8HVoCWHC4B/+5+1BirMoOud8NnN85GSP2LEZCbj3OA== +jest-resolve@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-30.0.2.tgz#4b7c826a35e9657189568e4dafc0ba5f05868cf2" + integrity sha512-q/XT0XQvRemykZsvRopbG6FQUT6/ra+XV6rPijyjT6D0msOyCvR2A5PlWZLd+fH0U8XWKZfDiAgrUNDNX2BkCw== dependencies: chalk "^4.1.2" graceful-fs "^4.2.11" - jest-haste-map "30.0.0" + jest-haste-map "30.0.2" jest-pnp-resolver "^1.2.3" - jest-util "30.0.0" - jest-validate "30.0.0" + jest-util "30.0.2" + jest-validate "30.0.2" slash "^3.0.0" unrs-resolver "^1.7.11" -jest-runner@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-30.0.0.tgz#d4667945181e3aecb025802a3f81ff30a523f877" - integrity sha512-xbhmvWIc8X1IQ8G7xTv0AQJXKjBVyxoVJEJgy7A4RXsSaO+k/1ZSBbHwjnUhvYqMvwQPomWssDkUx6EoidEhlw== - dependencies: - "@jest/console" "30.0.0" - "@jest/environment" "30.0.0" - "@jest/test-result" "30.0.0" - "@jest/transform" "30.0.0" - "@jest/types" "30.0.0" +jest-runner@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-30.0.2.tgz#28022ea290e2759864ae97cb5307bcae98e68f2d" + integrity sha512-6H+CIFiDLVt1Ix6jLzASXz3IoIiDukpEIxL9FHtDQ2BD/k5eFtDF5e5N9uItzRE3V1kp7VoSRyrGBytXKra4xA== + dependencies: + "@jest/console" "30.0.2" + "@jest/environment" "30.0.2" + "@jest/test-result" "30.0.2" + "@jest/transform" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" chalk "^4.1.2" emittery "^0.13.1" exit-x "^0.2.2" graceful-fs "^4.2.11" - jest-docblock "30.0.0" - jest-environment-node "30.0.0" - jest-haste-map "30.0.0" - jest-leak-detector "30.0.0" - jest-message-util "30.0.0" - jest-resolve "30.0.0" - jest-runtime "30.0.0" - jest-util "30.0.0" - jest-watcher "30.0.0" - jest-worker "30.0.0" + jest-docblock "30.0.1" + jest-environment-node "30.0.2" + jest-haste-map "30.0.2" + jest-leak-detector "30.0.2" + jest-message-util "30.0.2" + jest-resolve "30.0.2" + jest-runtime "30.0.2" + jest-util "30.0.2" + jest-watcher "30.0.2" + jest-worker "30.0.2" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-30.0.0.tgz#7aad9359da4054d4ae1ec8d94f83d3c07d6ce1c7" - integrity sha512-/O07qVgFrFAOGKGigojmdR3jUGz/y3+a/v9S/Yi2MHxsD+v6WcPppglZJw0gNJkRBArRDK8CFAwpM/VuEiiRjA== - dependencies: - "@jest/environment" "30.0.0" - "@jest/fake-timers" "30.0.0" - "@jest/globals" "30.0.0" - "@jest/source-map" "30.0.0" - "@jest/test-result" "30.0.0" - "@jest/transform" "30.0.0" - "@jest/types" "30.0.0" +jest-runtime@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-30.0.2.tgz#db5b4723ebdb8c2158779c055976cb6cc22ce1df" + integrity sha512-H1a51/soNOeAjoggu6PZKTH7DFt8JEGN4mesTSwyqD2jU9PXD04Bp6DKbt2YVtQvh2JcvH2vjbkEerCZ3lRn7A== + dependencies: + "@jest/environment" "30.0.2" + "@jest/fake-timers" "30.0.2" + "@jest/globals" "30.0.2" + "@jest/source-map" "30.0.1" + "@jest/test-result" "30.0.2" + "@jest/transform" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" chalk "^4.1.2" cjs-module-lexer "^2.1.0" collect-v8-coverage "^1.0.2" glob "^10.3.10" graceful-fs "^4.2.11" - jest-haste-map "30.0.0" - jest-message-util "30.0.0" - jest-mock "30.0.0" - jest-regex-util "30.0.0" - jest-resolve "30.0.0" - jest-snapshot "30.0.0" - jest-util "30.0.0" + jest-haste-map "30.0.2" + jest-message-util "30.0.2" + jest-mock "30.0.2" + jest-regex-util "30.0.1" + jest-resolve "30.0.2" + jest-snapshot "30.0.2" + jest-util "30.0.2" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-30.0.0.tgz#44217201c3f935e7cc5b413c8dda05341c80b0d7" - integrity sha512-6oCnzjpvfj/UIOMTqKZ6gedWAUgaycMdV8Y8h2dRJPvc2wSjckN03pzeoonw8y33uVngfx7WMo1ygdRGEKOT7w== +jest-snapshot@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-30.0.2.tgz#0f9f2c59c2070874a2db96d30c8543dfef657701" + integrity sha512-KeoHikoKGln3OlN7NS7raJ244nIVr2K46fBTNdfuxqYv2/g4TVyWDSO4fmk08YBJQMjs3HNfG1rlLfL/KA+nUw== dependencies: "@babel/core" "^7.27.4" "@babel/generator" "^7.27.5" "@babel/plugin-syntax-jsx" "^7.27.1" "@babel/plugin-syntax-typescript" "^7.27.1" "@babel/types" "^7.27.3" - "@jest/expect-utils" "30.0.0" - "@jest/get-type" "30.0.0" - "@jest/snapshot-utils" "30.0.0" - "@jest/transform" "30.0.0" - "@jest/types" "30.0.0" + "@jest/expect-utils" "30.0.2" + "@jest/get-type" "30.0.1" + "@jest/snapshot-utils" "30.0.1" + "@jest/transform" "30.0.2" + "@jest/types" "30.0.1" babel-preset-current-node-syntax "^1.1.0" chalk "^4.1.2" - expect "30.0.0" + expect "30.0.2" graceful-fs "^4.2.11" - jest-diff "30.0.0" - jest-matcher-utils "30.0.0" - jest-message-util "30.0.0" - jest-util "30.0.0" - pretty-format "30.0.0" + jest-diff "30.0.2" + jest-matcher-utils "30.0.2" + jest-message-util "30.0.2" + jest-util "30.0.2" + pretty-format "30.0.2" semver "^7.7.2" synckit "^0.11.8" -jest-util@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.0.0.tgz#d4f20f59e1fd72c7143143f4aa961bb71aeddad0" - integrity sha512-fhNBBM9uSUbd4Lzsf8l/kcAdaHD/4SgoI48en3HXcBEMwKwoleKFMZ6cYEYs21SB779PRuRCyNLmymApAm8tZw== +jest-util@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.0.2.tgz#1bd8411f81e6f5e2ca8b31bb2534ebcd7cbac065" + integrity sha512-8IyqfKS4MqprBuUpZNlFB5l+WFehc8bfCe1HSZFHzft2mOuND8Cvi9r1musli+u6F3TqanCZ/Ik4H4pXUolZIg== dependencies: - "@jest/types" "30.0.0" + "@jest/types" "30.0.1" "@types/node" "*" chalk "^4.1.2" ci-info "^4.2.0" @@ -7089,40 +7105,40 @@ jest-util@^29.7.0: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-30.0.0.tgz#0e961bcf6ec9922edb10860039529797f02eb821" - integrity sha512-d6OkzsdlWItHAikUDs1hlLmpOIRhsZoXTCliV2XXalVQ3ZOeb9dy0CQ6AKulJu/XOZqpOEr/FiMH+FeOBVV+nw== +jest-validate@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-30.0.2.tgz#f62a2f0e014dac94747509ba8c2bcd5d48215b7f" + integrity sha512-noOvul+SFER4RIvNAwGn6nmV2fXqBq67j+hKGHKGFCmK4ks/Iy1FSrqQNBLGKlu4ZZIRL6Kg1U72N1nxuRCrGQ== dependencies: - "@jest/get-type" "30.0.0" - "@jest/types" "30.0.0" + "@jest/get-type" "30.0.1" + "@jest/types" "30.0.1" camelcase "^6.3.0" chalk "^4.1.2" leven "^3.1.0" - pretty-format "30.0.0" + pretty-format "30.0.2" -jest-watcher@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-30.0.0.tgz#d444ad4950e20e1cca60e470c448cc15f3f858ce" - integrity sha512-fbAkojcyS53bOL/B7XYhahORq9cIaPwOgd/p9qW/hybbC8l6CzxfWJJxjlPBAIVN8dRipLR0zdhpGQdam+YBtw== +jest-watcher@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-30.0.2.tgz#ec93ed25183679f549a47f6197267d50ec83ea51" + integrity sha512-vYO5+E7jJuF+XmONr6CrbXdlYrgvZqtkn6pdkgjt/dU64UAdc0v1cAVaAeWtAfUUMScxNmnUjKPUMdCpNVASwg== dependencies: - "@jest/test-result" "30.0.0" - "@jest/types" "30.0.0" + "@jest/test-result" "30.0.2" + "@jest/types" "30.0.1" "@types/node" "*" ansi-escapes "^4.3.2" chalk "^4.1.2" emittery "^0.13.1" - jest-util "30.0.0" + jest-util "30.0.2" string-length "^4.0.2" -jest-worker@30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-30.0.0.tgz#63f15145e2b2b36db0be2d2d4413d197d0460912" - integrity sha512-VZvxfWIybIvwK8N/Bsfe43LfQgd/rD0c4h5nLUx78CAqPxIQcW2qDjsVAC53iUR8yxzFIeCFFvWOh8en8hGzdg== +jest-worker@30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-30.0.2.tgz#e67bd7debbc9d8445907a17067a89359acedc8c5" + integrity sha512-RN1eQmx7qSLFA+o9pfJKlqViwL5wt+OL3Vff/A+/cPsmuw7NPwfgl33AP+/agRmHzPOFgXviRycR9kYwlcRQXg== dependencies: "@types/node" "*" "@ungap/structured-clone" "^1.3.0" - jest-util "30.0.0" + jest-util "30.0.2" merge-stream "^2.0.0" supports-color "^8.1.1" @@ -7145,15 +7161,15 @@ jest-worker@^29.4.3: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-30.0.0.tgz#d1d69adb09045053762a40217238c76b19d1db6d" - integrity sha512-/3G2iFwsUY95vkflmlDn/IdLyLWqpQXcftptooaPH4qkyU52V7qVYf1BjmdSPlp1+0fs6BmNtrGaSFwOfV07ew== +jest@^30.0.2: + version "30.0.2" + resolved "https://registry.yarnpkg.com/jest/-/jest-30.0.2.tgz#0b3af654548d706bdde6f1bba93099ec343b8772" + integrity sha512-HlSEiHRcmTuGwNyeawLTEzpQUMFn+f741FfoNg7RXG2h0WLJKozVCpcQLT0GW17H6kNCqRwGf+Ii/I1YVNvEGQ== dependencies: - "@jest/core" "30.0.0" - "@jest/types" "30.0.0" + "@jest/core" "30.0.2" + "@jest/types" "30.0.1" import-local "^3.2.0" - jest-cli "30.0.0" + jest-cli "30.0.2" jiti@^1.20.0: version "1.21.7" @@ -9368,12 +9384,12 @@ pretty-error@^4.0.0: lodash "^4.17.20" renderkid "^3.0.0" -pretty-format@30.0.0, pretty-format@^30.0.0: - version "30.0.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.0.0.tgz#a3137bed442af87eadea2c427a1b201189e590a4" - integrity sha512-18NAOUr4ZOQiIR+BgI5NhQE7uREdx4ZyV0dyay5izh4yfQ+1T7BSvggxvRGoXocrRyevqW5OhScUjbi9GB8R8Q== +pretty-format@30.0.2, pretty-format@^30.0.0: + version "30.0.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.0.2.tgz#54717b6aa2b4357a2e6d83868e10a2ea8dd647c7" + integrity sha512-yC5/EBSOrTtqhCKfLHqoUIAXVRZnukHPwWBJWR7h84Q3Be1DRQZLncwcfLoPA5RPQ65qfiCMqgYwdUuQ//eVpg== dependencies: - "@jest/schemas" "30.0.0" + "@jest/schemas" "30.0.1" ansi-styles "^5.2.0" react-is "^18.3.1" @@ -10292,6 +10308,11 @@ signal-exit@^4.0.1: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== +simple-wcswidth@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/simple-wcswidth/-/simple-wcswidth-1.1.1.tgz#a96ff1b5cff660262ea33850e19a0e7249caed50" + integrity sha512-R3q3/eoeNBp24CNTASEUrffXi0j9TwPIEvSStlvSrsFimM17sV5EHcMOc86j3K+UWZyLYvH0hRmYGCpCoaJ4vw== + sirv@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" @@ -10757,9 +10778,9 @@ terser-webpack-plugin@^5.3.11, terser-webpack-plugin@^5.3.9: terser "^5.31.1" terser@^5.10.0, terser@^5.15.1, terser@^5.31.1: - version "5.43.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.43.0.tgz#f9cac3cc347020d6ffafdbaa3698a5257b7cb690" - integrity sha512-CqNNxKSGKSZCunSvwKLTs8u8sGGlp27sxNZ4quGh0QeNuyHM0JSEM/clM9Mf4zUp6J+tO2gUXhgXT2YMMkwfKQ== + version "5.43.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.43.1.tgz#88387f4f9794ff1a29e7ad61fb2932e25b4fdb6d" + integrity sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.14.0" @@ -10910,6 +10931,11 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +type-fest@^0.8.0: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-fest@^1.0.1: version "1.4.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" @@ -11049,31 +11075,31 @@ unpipe@1.0.0, unpipe@~1.0.0: integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== unrs-resolver@^1.7.11: - version "1.9.0" - resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.9.0.tgz#22877e2e0f1ba3f848f75f7be5ecb81b634066dc" - integrity sha512-wqaRu4UnzBD2ABTC1kLfBjAqIDZ5YUTr/MLGa7By47JV1bJDSW7jq/ZSLigB7enLe7ubNaJhtnBXgrc/50cEhg== + version "1.9.1" + resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.9.1.tgz#c3579abf32e48dbb1b429f4812196611afb021cf" + integrity sha512-4AZVxP05JGN6DwqIkSP4VKLOcwQa5l37SWHF/ahcuqBMbfxbpN1L1QKafEhWCziHhzKex9H/AR09H0OuVyU+9g== dependencies: napi-postinstall "^0.2.2" optionalDependencies: - "@unrs/resolver-binding-android-arm-eabi" "1.9.0" - "@unrs/resolver-binding-android-arm64" "1.9.0" - "@unrs/resolver-binding-darwin-arm64" "1.9.0" - "@unrs/resolver-binding-darwin-x64" "1.9.0" - "@unrs/resolver-binding-freebsd-x64" "1.9.0" - "@unrs/resolver-binding-linux-arm-gnueabihf" "1.9.0" - "@unrs/resolver-binding-linux-arm-musleabihf" "1.9.0" - "@unrs/resolver-binding-linux-arm64-gnu" "1.9.0" - "@unrs/resolver-binding-linux-arm64-musl" "1.9.0" - "@unrs/resolver-binding-linux-ppc64-gnu" "1.9.0" - "@unrs/resolver-binding-linux-riscv64-gnu" "1.9.0" - "@unrs/resolver-binding-linux-riscv64-musl" "1.9.0" - "@unrs/resolver-binding-linux-s390x-gnu" "1.9.0" - "@unrs/resolver-binding-linux-x64-gnu" "1.9.0" - "@unrs/resolver-binding-linux-x64-musl" "1.9.0" - "@unrs/resolver-binding-wasm32-wasi" "1.9.0" - "@unrs/resolver-binding-win32-arm64-msvc" "1.9.0" - "@unrs/resolver-binding-win32-ia32-msvc" "1.9.0" - "@unrs/resolver-binding-win32-x64-msvc" "1.9.0" + "@unrs/resolver-binding-android-arm-eabi" "1.9.1" + "@unrs/resolver-binding-android-arm64" "1.9.1" + "@unrs/resolver-binding-darwin-arm64" "1.9.1" + "@unrs/resolver-binding-darwin-x64" "1.9.1" + "@unrs/resolver-binding-freebsd-x64" "1.9.1" + "@unrs/resolver-binding-linux-arm-gnueabihf" "1.9.1" + "@unrs/resolver-binding-linux-arm-musleabihf" "1.9.1" + "@unrs/resolver-binding-linux-arm64-gnu" "1.9.1" + "@unrs/resolver-binding-linux-arm64-musl" "1.9.1" + "@unrs/resolver-binding-linux-ppc64-gnu" "1.9.1" + "@unrs/resolver-binding-linux-riscv64-gnu" "1.9.1" + "@unrs/resolver-binding-linux-riscv64-musl" "1.9.1" + "@unrs/resolver-binding-linux-s390x-gnu" "1.9.1" + "@unrs/resolver-binding-linux-x64-gnu" "1.9.1" + "@unrs/resolver-binding-linux-x64-musl" "1.9.1" + "@unrs/resolver-binding-wasm32-wasi" "1.9.1" + "@unrs/resolver-binding-win32-arm64-msvc" "1.9.1" + "@unrs/resolver-binding-win32-ia32-msvc" "1.9.1" + "@unrs/resolver-binding-win32-x64-msvc" "1.9.1" untildify@^4.0.0: version "4.0.0"